DeepSeek API: - @ai-sdk/deepseek provider replaces openai-compatible for deepseek-* models - Token tracking: cache_hit/reasoning tokens flow API → DB → WS frames → UI - thinking effort levels (off/low/medium/high/xhigh/max) via AGENTS.md frontmatter - V4 models: deepseek-v4-flash, deepseek-v4-pro - Wired for both chat and coder panes Whale lifts: - Tool input repair (schema-based type coercion, markdown link unwrapping) - Hooks system (6 lifecycle events, shell exec, JSON stdin/stdout contract) - Per-MCP-server permissions (allow/ask/deny) - token tracking UI (cache N, think N in message stats line) Infra: - New DB columns: messages.cache_tokens, messages.reasoning_tokens - New WS frame fields: cache_tokens, reasoning_tokens on message_complete - coder provider snapshot merges DeepSeek models alongside llama-swap
19 lines
1.0 KiB
TypeScript
19 lines
1.0 KiB
TypeScript
// Shared column projections for queries against the messages_with_parts view.
|
|
// All sites that read the full Message wire shape for route responses use
|
|
// MESSAGE_COLUMNS. The inference load path uses INFERENCE_MESSAGE_COLUMNS —
|
|
// it adds reasoning_parts and model (per-turn attribution, used to label prior
|
|
// turns when a chat mixes models) but omits the compaction-display fields
|
|
// (summary, tail_start_id, compacted_at) that only the UI needs.
|
|
|
|
export const MESSAGE_COLUMNS =
|
|
'id, session_id, chat_id, role, content, kind, tool_calls, tool_results, status, last_seq, ' +
|
|
'tokens_used, ctx_used, ctx_max, cache_tokens, reasoning_tokens, ' +
|
|
'started_at, finished_at, created_at, metadata, ' +
|
|
'summary, tail_start_id, compacted_at, model';
|
|
|
|
export const INFERENCE_MESSAGE_COLUMNS =
|
|
'id, session_id, chat_id, role, content, kind, tool_calls, tool_results, status, last_seq, ' +
|
|
'tokens_used, ctx_used, ctx_max, cache_tokens, reasoning_tokens, ' +
|
|
'started_at, finished_at, created_at, metadata, ' +
|
|
'reasoning_parts, model';
|