Schwitzz
a1b5587fcb
server: reconcile ai_sessions persistence to Chunk 9 AISession shape
...
Reshape the ai_sessions table (migration 003) and mapping/routes to the
full AISession contract: title, kind, notes, created_at, last_message_at;
drop legacy role/model/settings. toAISession now maps the new columns and
routes create/patch/messages handlers use the new shape.
2026-10-29 15:03:32 -05:00
Schwitzz
1e16b0d5d2
CHUNK #9 : AI session storage layer (AgentController, AIStore, builders)
...
- Add packages/ai: AgentController (streaming + budget), SuggestionBuilder,
NoteBuilder, AIStore (Dexie/IndexedDB), SuggestionMutation
- Fix createUlid to use monotonicFactory for reliable listSessions sort tiebreaker
- Extend outline system prompt with setting + characters context
- Add dexie dependency to packages/ai
- 188 tests passing (core 47, ui 5, editor 30, ai 71, exporters 22, web 13)
2026-10-29 07:31:25 -05:00
Schwitzz
4c4b83bb68
feat(ai): add packages/ai provider layer (Chunk #8 )
...
Self-contained SSE-based provider layer for OpenAI-compatible endpoints
(Ollama/llama.cpp/LM Studio/vLLM), Anthropic, Gemini, and OpenRouter.
- budget.ts: re-export core token-budget engine (countTokens,
allocateBudget, DEFAULT_BUDGET)
- client.ts: streamCompletion/collectStream/complete with budget
enforcement via enforceBudget + measureBudget
- discover.ts: auto-detect local providers by probing common /v1/models
- adapters.ts: per-provider param mapping + streaming adapters + factory
- thinking.ts: thinking/reasoning-param normalization per provider
- http.ts: SSE parsing + 429 retry
- errors.ts: BudgetExceededError
35 unit/integration tests pass; typecheck and lint clean.
2026-10-28 18:59:54 -05:00