From 8238d3e9818a3efd060a3d60aed557be9b9d4c3b Mon Sep 17 00:00:00 2001 From: William Valentin Date: Fri, 6 Feb 2026 15:13:14 -0800 Subject: [PATCH] docs: update state.json with P2 phase entries and test counts --- docs/plans/state.json | 79 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 77 insertions(+), 2 deletions(-) diff --git a/docs/plans/state.json b/docs/plans/state.json index b2457f8..3afcb9a 100644 --- a/docs/plans/state.json +++ b/docs/plans/state.json @@ -198,6 +198,80 @@ } } }, + "p2-implementation": { + "status": "completed", + "date": "2026-02-06", + "summary": "4 P2 features: tech debt cleanup, retry policy, system prompt templating, usage tracking & cost estimation", + "phases": { + "tech_debt_cleanup": { + "priority": "P2", + "status": "completed", + "description": "Extract shared splitMessage() from 4 adapters into channels/utils.ts; fix Slack senderName with users.info API + caching", + "files_created": [ + "src/channels/utils.ts", + "src/channels/utils.test.ts" + ], + "files_modified": [ + "src/channels/telegram/adapter.ts", + "src/channels/discord/adapter.ts", + "src/channels/slack/adapter.ts", + "src/channels/whatsapp/adapter.ts", + "src/channels/index.ts" + ], + "test_status": "10/10 passing" + }, + "retry_policy": { + "priority": "P2", + "status": "completed", + "description": "withRetry() with exponential backoff + jitter, isRetryable() filter, wired into ModelRouter.chat() (non-streaming)", + "files_created": [ + "src/models/retry.ts", + "src/models/retry.test.ts" + ], + "files_modified": [ + "src/config/schema.ts", + "src/models/router.ts", + "src/models/index.ts", + "src/daemon/index.ts" + ], + "test_status": "18/18 passing" + }, + "system_prompt_templating": { + "priority": "P2", + "status": "completed", + "description": "assembleSystemPrompt() multi-file template system (SOUL/AGENTS/IDENTITY/USER/TOOLS.md) with configurable search dirs and extra sections", + "files_created": [ + "src/prompt/template.ts", + "src/prompt/template.test.ts", + "src/prompt/index.ts" + ], + "files_modified": [ + "src/config/schema.ts", + "src/daemon/index.ts" + ], + "test_status": "12/12 passing" + }, + "usage_tracking": { + "priority": "P2", + "status": "completed", + "description": "Usage accumulators in NativeAgent + AgentOrchestrator, estimateCost() with model pricing, /usage TUI command", + "files_created": [ + "src/models/costs.ts", + "src/models/costs.test.ts" + ], + "files_modified": [ + "src/backends/native/agent.ts", + "src/backends/native/orchestrator.ts", + "src/backends/native/index.ts", + "src/backends/index.ts", + "src/frontends/tui/commands.ts", + "src/frontends/tui/commands.test.ts", + "src/daemon/index.ts" + ], + "test_status": "11/11 passing (9 costs + 2 commands)" + } + } + }, "earlier_plans": { "status": "completed", "summary": "Original design and implementation phases from 2026-02-02 to 2026-02-05", @@ -223,10 +297,11 @@ }, "overall_progress": { - "total_test_count": 519, + "total_test_count": 569, "all_tests_passing": true, "p0_completion": "3/3 (100%)", "p1_completion": "4/4 (100%)", - "next_up": "all_p0_p1_complete" + "p2_completion": "4/4 (100%)", + "next_up": "p2_p3_remaining (docker sandboxing, multi-agent routing, tool profiles, group chat, gateway auth, gemini provider)" } }