William Valentin
4316dbd3be
feat: add P2 features — retry policy, prompt templating, usage tracking, tech debt cleanup
...
- Extract shared splitMessage() into channels/utils.ts (dedup 4 adapters)
- Add Slack user name resolution with caching (users.info API)
- Add withRetry() with exponential backoff + jitter, isRetryable() filter
- Wire retry config into ModelRouter.chat() (non-streaming only)
- Add assembleSystemPrompt() multi-file template system (SOUL/AGENTS/IDENTITY/USER/TOOLS.md)
- Add usage tracking accumulators in NativeAgent + AgentOrchestrator
- Add estimateCost() with per-model pricing table
- Add /usage TUI command with full usage report formatting
- Add retrySchema and promptSchema to config schema
Tests: 569 passing, typecheck clean
2026-02-06 15:12:35 -08:00
William Valentin
306e11bd2e
feat: add multi-model delegation (Phase 0) and context compaction (Phase 1)
...
Phase 0 — Multi-Model Delegation:
- AgentOrchestrator wraps NativeAgent with delegate() for stateless
single-turn calls to any model tier (fast/default/complex/local)
- DelegationConfig maps task types (compaction, classification, etc.)
to model tiers
- Delegation prompts for compaction, memory extraction, classification,
and tool summarisation
- Per-tier usage tracking for cost visibility
- Config schema: agents.delegation and agents.primary_tier
Phase 1 — Context Compaction:
- Token estimation (char/4 heuristic) with context window lookup
- shouldCompact() threshold check against context window percentage
- compactHistory() splits old/recent messages, delegates summary to
fast tier, returns CompactionResult
- Automatic compaction in AgentOrchestrator.process() when configured
- Force-compact via orchestrator.compact() with session persistence
- Session.replaceHistory() with atomic SQLite transaction
- /compact TUI command with feedback on compacted token counts
- Config schema: compaction.enabled, threshold_pct, keep_turns,
summary_max_tokens
Tests: 385 passing across 50 files (22 new tests in 2 new test files)
2026-02-06 13:17:02 -08:00
William Valentin
f7cc87a4bb
fix: sync agent tier when /model command switches model
...
The /model command was only updating the router's currentTier but not
the agent's currentTier. Since NativeAgent.chatWithRouter() passes its
own tier to router.chat(), switching to 'local' still sent requests
through the default (Anthropic) client first.
2026-02-06 10:05:32 -08:00
William Valentin
e4b7f96d33
fix: provider-aware model routing with fallback visibility
...
- Extract createClientFromConfig() to dispatch on provider field instead
of hardcoding all tiers as AnthropicClient
- Add fallback/fallbackReason metadata to ChatResponse and ChatStreamEvent
so callers know when a fallback model was used
- Enhance doctor check to report full model stack and warn on missing
API keys for cloud providers
- Log fallback warnings in NativeAgent and display them in TUI
- Support tier names and local_providers entries in fallback_chain
- Add 8 tests for createClientFromConfig covering all provider types
2026-02-06 09:58:56 -08:00
William Valentin
5088f7a6be
feat(tui): display tool execution status in minimal TUI
...
TUI now creates a NativeAgent with tool registry/executor and uses
agent.process() for message handling. Tool calls display status lines
showing tool name, args, and success/error result. Falls back to
direct model client when agent is not configured.
2026-02-05 17:53:00 -08:00
William Valentin
c1f64d6ded
feat: enhance TUI with colors, command hints, and improved rendering
2026-02-05 15:51:29 -08:00
William Valentin
f722cf2bf0
feat: add /backend command handler to MinimalTui
2026-02-05 13:36:36 -08:00
William Valentin
465b4a0c3c
feat: add /backend command parsing
...
Add support for /backend command to show or switch local backend providers. Follows the same pattern as /model command with optional argument support.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:35:10 -08:00
William Valentin
747a7f44a2
feat(tui): add streaming, scroll, and model switching to fullscreen App
2026-02-05 10:56:27 -08:00
William Valentin
0490d2fe39
feat(tui): add markdown rendering and scroll support to MessageList
2026-02-05 10:56:23 -08:00
William Valentin
7391b50d6d
feat(tui): enhance StatusBar with token usage and streaming indicator
2026-02-05 10:56:19 -08:00
William Valentin
83a750f484
feat(tui): update fullscreen config for model router
2026-02-05 10:56:16 -08:00
William Valentin
f115407af3
feat(tui): add streaming and model switching to minimal mode
2026-02-05 10:53:41 -08:00
William Valentin
435146344e
feat(tui): add unified command parser with model switching
2026-02-05 10:52:49 -08:00
William Valentin
da2bb57488
feat(tui): add markdown rendering utility
2026-02-05 10:52:00 -08:00
William Valentin
f671ea5ab5
feat: add fullscreen TUI mode with Ink React components
2026-02-05 00:41:17 -08:00
William Valentin
53a8bd97eb
feat: add Ink-based fullscreen TUI components
2026-02-05 00:39:53 -08:00
William Valentin
f792f8407a
feat: add minimal TUI with readline interface
2026-02-05 00:36:16 -08:00