308 lines
12 KiB
JSON
308 lines
12 KiB
JSON
{
|
|
"version": "1.0",
|
|
"updated_at": "2026-02-06",
|
|
"description": "Tracks the status of all Flynn plans and implementation phases",
|
|
|
|
"plans": {
|
|
"openclaw-feature-gap-analysis": {
|
|
"file": "2026-02-06-openclaw-feature-gap-analysis.md",
|
|
"status": "completed",
|
|
"date": "2026-02-06",
|
|
"summary": "Comprehensive comparison of Flynn vs OpenClaw. 118 features compared: 29 match, 11 partial, 78 missing."
|
|
},
|
|
"p0-p1-implementation-plan": {
|
|
"file": "2026-02-06-p0-p1-implementation-plan.md",
|
|
"status": "completed",
|
|
"date": "2026-02-06",
|
|
"summary": "7 features across 7 phases (0-6). Estimated 15-22 days total.",
|
|
"phases": {
|
|
"phase_0_multi_model_delegation": {
|
|
"priority": "P0",
|
|
"status": "completed",
|
|
"description": "AgentOrchestrator with sub-agent delegation to different model tiers",
|
|
"files_created": [
|
|
"src/backends/native/orchestrator.ts",
|
|
"src/backends/native/orchestrator.test.ts",
|
|
"src/backends/native/prompts.ts"
|
|
],
|
|
"files_modified": [
|
|
"src/daemon/index.ts",
|
|
"src/config/schema.ts"
|
|
],
|
|
"test_status": "20/20 passing"
|
|
},
|
|
"phase_1_context_compaction": {
|
|
"priority": "P0",
|
|
"status": "completed",
|
|
"description": "Token estimation, auto-compaction, /compact command, SQLite history replacement",
|
|
"files_created": [
|
|
"src/context/tokens.ts",
|
|
"src/context/tokens.test.ts",
|
|
"src/context/compaction.ts",
|
|
"src/context/compaction.test.ts",
|
|
"src/context/index.ts"
|
|
],
|
|
"files_modified": [
|
|
"src/backends/native/orchestrator.ts",
|
|
"src/session/manager.ts",
|
|
"src/session/store.ts",
|
|
"src/config/schema.ts",
|
|
"src/daemon/index.ts",
|
|
"src/frontends/tui/commands.ts"
|
|
],
|
|
"test_status": "21/21 passing"
|
|
},
|
|
"phase_2_memory_system": {
|
|
"priority": "P0",
|
|
"status": "completed",
|
|
"description": "Persistent memory with file-based storage, memory tools, auto-extraction after compaction",
|
|
"depends_on": ["phase_0", "phase_1"],
|
|
"files_created": [
|
|
"src/memory/store.ts",
|
|
"src/memory/store.test.ts",
|
|
"src/memory/index.ts",
|
|
"src/tools/builtin/memory-read.ts",
|
|
"src/tools/builtin/memory-write.ts",
|
|
"src/tools/builtin/memory-search.ts"
|
|
],
|
|
"files_modified": [
|
|
"src/tools/builtin/index.ts",
|
|
"src/config/schema.ts",
|
|
"src/backends/native/agent.ts",
|
|
"src/backends/native/orchestrator.ts",
|
|
"src/context/compaction.ts",
|
|
"src/daemon/index.ts"
|
|
],
|
|
"test_status": "17/17 passing"
|
|
},
|
|
"phase_3_messaging_channels": {
|
|
"priority": "P1",
|
|
"status": "completed",
|
|
"description": "Discord, Slack, WhatsApp channel adapters",
|
|
"sub_phases": {
|
|
"3a_discord": {
|
|
"status": "completed",
|
|
"effort": "1-2 days",
|
|
"files_created": [
|
|
"src/channels/discord/adapter.ts",
|
|
"src/channels/discord/adapter.test.ts",
|
|
"src/channels/discord/index.ts"
|
|
],
|
|
"files_modified": [
|
|
"src/config/schema.ts",
|
|
"src/channels/index.ts",
|
|
"src/daemon/index.ts"
|
|
],
|
|
"test_status": "22/22 passing"
|
|
},
|
|
"3b_slack": {
|
|
"status": "completed",
|
|
"effort": "1 day",
|
|
"files_created": [
|
|
"src/channels/slack/adapter.ts",
|
|
"src/channels/slack/adapter.test.ts",
|
|
"src/channels/slack/index.ts"
|
|
],
|
|
"files_modified": [
|
|
"src/config/schema.ts",
|
|
"src/channels/index.ts",
|
|
"src/daemon/index.ts",
|
|
"package.json"
|
|
],
|
|
"new_dependencies": ["@slack/bolt"],
|
|
"test_status": "22/22 passing",
|
|
"notes": "Socket Mode only (HTTP fallback deferred). Slash commands deferred. User ID used as senderName (display name resolution is a follow-up)."
|
|
},
|
|
"3c_whatsapp": {
|
|
"status": "completed",
|
|
"effort": "2-3 days",
|
|
"files_created": [
|
|
"src/channels/whatsapp/adapter.ts",
|
|
"src/channels/whatsapp/adapter.test.ts",
|
|
"src/channels/whatsapp/index.ts"
|
|
],
|
|
"files_modified": [
|
|
"src/config/schema.ts",
|
|
"src/channels/index.ts",
|
|
"src/daemon/index.ts",
|
|
"package.json"
|
|
],
|
|
"new_dependencies": ["whatsapp-web.js"],
|
|
"test_status": "25/25 passing",
|
|
"notes": "QR code auth via LocalAuth. Session persistence via data_dir. Group messages filtered (DM only). Phone number allowlist. Headless Chrome with Puppeteer."
|
|
}
|
|
},
|
|
"planned_files": [
|
|
"src/channels/discord/adapter.ts",
|
|
"src/channels/discord/index.ts",
|
|
"src/channels/slack/adapter.ts",
|
|
"src/channels/slack/index.ts",
|
|
"src/channels/whatsapp/adapter.ts",
|
|
"src/channels/whatsapp/index.ts",
|
|
"src/channels/utils/chunking.ts",
|
|
"src/channels/utils/auth.ts",
|
|
"src/channels/utils/markdown.ts"
|
|
]
|
|
},
|
|
"phase_4_web_search": {
|
|
"priority": "P1",
|
|
"status": "completed",
|
|
"description": "Web search tool (Brave Search API + SearXNG fallback)",
|
|
"effort": "0.5 day",
|
|
"files_created": [
|
|
"src/tools/builtin/web-search.ts",
|
|
"src/tools/builtin/web-search.test.ts"
|
|
],
|
|
"files_modified": [
|
|
"src/config/schema.ts",
|
|
"src/tools/builtin/index.ts",
|
|
"src/tools/index.ts",
|
|
"src/daemon/index.ts"
|
|
],
|
|
"test_status": "14/14 passing"
|
|
},
|
|
"phase_5_background_exec": {
|
|
"priority": "P1",
|
|
"status": "completed",
|
|
"description": "Background process management tools (start, status, output, kill, list)",
|
|
"effort": "1-2 days",
|
|
"files_created": [
|
|
"src/tools/builtin/process/manager.ts",
|
|
"src/tools/builtin/process/start.ts",
|
|
"src/tools/builtin/process/status.ts",
|
|
"src/tools/builtin/process/output.ts",
|
|
"src/tools/builtin/process/kill.ts",
|
|
"src/tools/builtin/process/list.ts",
|
|
"src/tools/builtin/process/index.ts",
|
|
"src/tools/builtin/process/manager.test.ts"
|
|
],
|
|
"files_modified": [
|
|
"src/config/schema.ts",
|
|
"src/tools/builtin/index.ts",
|
|
"src/tools/index.ts",
|
|
"src/daemon/index.ts"
|
|
],
|
|
"test_status": "28/28 passing"
|
|
},
|
|
"phase_6_enhanced_web_fetch": {
|
|
"priority": "P1",
|
|
"status": "completed",
|
|
"description": "HTML-to-markdown extraction, format parameter, response caching",
|
|
"effort": "1 day",
|
|
"files_modified": [
|
|
"src/tools/builtin/web-fetch.ts",
|
|
"src/tools/builtin/web-fetch.test.ts"
|
|
],
|
|
"new_dependencies": ["turndown", "linkedom", "@mozilla/readability", "@types/turndown"],
|
|
"test_status": "10/10 passing"
|
|
}
|
|
}
|
|
},
|
|
"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",
|
|
"plans": [
|
|
{ "file": "2026-02-02-flynn-design.md", "status": "completed" },
|
|
{ "file": "2026-02-02-flynn-phase1-implementation.md", "status": "completed" },
|
|
{ "file": "2026-02-02-flynn-phase2-implementation.md", "status": "completed" },
|
|
{ "file": "2026-02-05-flynn-phase3-implementation.md", "status": "completed" },
|
|
{ "file": "2026-02-05-tui-redesign.md", "status": "completed" },
|
|
{ "file": "2026-02-05-tui-redesign-implementation.md", "status": "completed" },
|
|
{ "file": "2026-02-05-llamacpp-integration-design.md", "status": "completed" },
|
|
{ "file": "2026-02-05-llamacpp-implementation.md", "status": "completed" },
|
|
{ "file": "2026-02-05-backend-switch-design.md", "status": "completed" },
|
|
{ "file": "2026-02-05-backend-switch-implementation.md", "status": "completed" },
|
|
{ "file": "2026-02-05-openclaw-parity-design.md", "status": "completed" },
|
|
{ "file": "2026-02-05-phase1-tool-framework.md", "status": "completed" },
|
|
{ "file": "2026-02-05-phase2-websocket-gateway.md", "status": "completed" },
|
|
{ "file": "2026-02-05-phase3-channel-adapters.md", "status": "completed" },
|
|
{ "file": "2026-02-05-phase5-cli-cron-doctor-design.md", "status": "completed" },
|
|
{ "file": "2026-02-05-phase5a-implementation.md", "status": "completed" }
|
|
]
|
|
}
|
|
},
|
|
|
|
"overall_progress": {
|
|
"total_test_count": 569,
|
|
"all_tests_passing": true,
|
|
"p0_completion": "3/3 (100%)",
|
|
"p1_completion": "4/4 (100%)",
|
|
"p2_completion": "4/4 (100%)",
|
|
"next_up": "p2_p3_remaining (docker sandboxing, multi-agent routing, tool profiles, group chat, gateway auth, gemini provider)"
|
|
}
|
|
}
|