docs: update state.json and gap analysis — file.patch + Gmail (87/116 = 75%)
This commit is contained in:
@@ -66,7 +66,7 @@ Flynn has **6 of ~15 channels** (Telegram, WhatsApp, Discord, Slack, WebChat, TU
|
||||
| `read` / file read | Full (line ranges) | Full (line offset/limit) | **MATCH** |
|
||||
| `write` / file write | Full | Full (auto-mkdir) | **MATCH** |
|
||||
| `edit` / file edit | Full | Full (exact match, replace_all) | **MATCH** |
|
||||
| `apply_patch` | Multi-hunk structured patches | -- | **MISSING** |
|
||||
| `apply_patch` | Multi-hunk structured patches | Full (`file.patch` — multi-file, multi-hunk, bottom-up) | **MATCH** |
|
||||
| `file.list` / glob | -- | Full (glob filtering) | **MATCH** |
|
||||
| `web_fetch` | Full (markdown/text extract, caching) | Full (HTML-to-markdown, readability, caching) | **MATCH** |
|
||||
| `web.search` | Brave Search API | Full (Brave + SearXNG providers) | **MATCH** |
|
||||
@@ -156,7 +156,7 @@ Flynn actually has MCP support that OpenClaw doesn't emphasise — OpenClaw reli
|
||||
|---------|----------|-------|--------|
|
||||
| Cron jobs | Full (runtime + config) | Full (YAML config + runtime trigger via tools) | **MATCH** |
|
||||
| Webhooks | Full (inbound triggers) | Full (HTTP POST /webhooks/:name, HMAC auth, template rendering) | **MATCH** |
|
||||
| Gmail Pub/Sub | Full | -- | **MISSING** |
|
||||
| Gmail Pub/Sub | Full | Full (OAuth2, Pub/Sub push + polling fallback, template rendering) | **MATCH** |
|
||||
| Heartbeat | Full | Full (5 checks, configurable interval, failure threshold, notifications) | **MATCH** |
|
||||
|
||||
---
|
||||
@@ -241,19 +241,19 @@ Flynn actually has MCP support that OpenClaw doesn't emphasise — OpenClaw reli
|
||||
|----------|:-----:|:-----:|:-------:|:-------:|
|
||||
| Channels | 13 | 6 | 0 | 7 |
|
||||
| Model Providers | 14 | 10 | 0 | 4 |
|
||||
| Agent & Tools | 17 | 16 | 0 | 1 |
|
||||
| Agent & Tools | 17 | 17 | 0 | 0 |
|
||||
| Sessions | 7 | 7 | 0 | 0 |
|
||||
| Context/Compaction | 4 | 4 | 0 | 0 |
|
||||
| Memory | 7 | 6 | 0 | 1 |
|
||||
| MCP | 3 | 3 | 0 | 0 |
|
||||
| Security | 8 | 6 | 0 | 2 |
|
||||
| Automation | 4 | 3 | 0 | 1 |
|
||||
| Automation | 4 | 4 | 0 | 0 |
|
||||
| Companion Apps | 6 | 0 | 0 | 6 |
|
||||
| Skills/Plugins | 5 | 4 | 0 | 1 |
|
||||
| Gateway/Infra | 11 | 4 | 1 | 6 |
|
||||
| Chat Commands | 8 | 7 | 0 | 0 |
|
||||
| Misc | 9 | 9 | 0 | 0 |
|
||||
| **TOTAL** | **116** | **85 (73%)** | **1 (1%)** | **29 (25%)** |
|
||||
| **TOTAL** | **116** | **87 (75%)** | **1 (1%)** | **27 (23%)** |
|
||||
|
||||
---
|
||||
|
||||
|
||||
+42
-5
@@ -655,9 +655,46 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"earlier_plans": {
|
||||
"tier3-file-patch-and-gmail": {
|
||||
"status": "completed",
|
||||
"summary": "Original design and implementation phases from 2026-02-02 to 2026-02-05",
|
||||
"date": "2026-02-07",
|
||||
"summary": "2 features from Tier 3 gap analysis: file.patch multi-hunk tool and Gmail Pub/Sub watcher",
|
||||
"phases": {
|
||||
"file_patch_tool": {
|
||||
"priority": "Tier3",
|
||||
"status": "completed",
|
||||
"description": "file.patch tool for multi-hunk structured patches — apply multiple line-based edits (replacements, insertions, deletions) across one or more files in a single tool call. Hunks applied bottom-up to preserve line numbers.",
|
||||
"files_created": [
|
||||
"src/tools/builtin/file-patch.ts",
|
||||
"src/tools/builtin/file-patch.test.ts"
|
||||
],
|
||||
"files_modified": [
|
||||
"src/tools/builtin/index.ts",
|
||||
"src/tools/policy.ts"
|
||||
],
|
||||
"test_status": "10/10 passing"
|
||||
},
|
||||
"gmail_pubsub_watcher": {
|
||||
"priority": "Tier3",
|
||||
"status": "completed",
|
||||
"description": "Gmail Pub/Sub watcher ChannelAdapter — monitors Gmail via Google Cloud Pub/Sub push notifications with polling fallback. OAuth2 auth, configurable watch labels, template rendering with email metadata placeholders. Wired into daemon lifecycle and gateway (POST /gmail/push endpoint).",
|
||||
"files_created": [
|
||||
"src/automation/gmail.ts",
|
||||
"src/automation/gmail.test.ts"
|
||||
],
|
||||
"files_modified": [
|
||||
"src/automation/index.ts",
|
||||
"src/config/schema.ts",
|
||||
"src/gateway/server.ts",
|
||||
"src/daemon/index.ts",
|
||||
"package.json"
|
||||
],
|
||||
"new_dependencies": ["googleapis"],
|
||||
"test_status": "16/16 passing"
|
||||
}
|
||||
}
|
||||
},
|
||||
"earlier_plans": {
|
||||
"plans": [
|
||||
{ "file": "2026-02-02-flynn-design.md", "status": "completed" },
|
||||
{ "file": "2026-02-02-flynn-phase1-implementation.md", "status": "completed" },
|
||||
@@ -680,7 +717,7 @@
|
||||
},
|
||||
|
||||
"overall_progress": {
|
||||
"total_test_count": 950,
|
||||
"total_test_count": 976,
|
||||
"all_tests_passing": true,
|
||||
"p0_completion": "3/3 (100%)",
|
||||
"p1_completion": "4/4 (100%)",
|
||||
@@ -693,7 +730,7 @@
|
||||
"p8_completion": "8/8 (100%) — agent tools (sessions.list/history/create/delete, agents.list, message.send, cron.list/trigger) + gap analysis audit",
|
||||
"tier1_completion": "5/5 (100%) — !!think prefix, /verbose command, typing indicators (Discord/WhatsApp), session pruning (TTL), tool groups",
|
||||
"tier2_completion": "4/4 (100%) — inbound webhooks, vector memory search, Dockerfile, heartbeat monitor",
|
||||
"feature_gap_scorecard": "85/116 match (73%), 1 partial (1%), 29 missing (25%)",
|
||||
"next_up": "All phases P0-P8 and Tiers 1-2 complete. Remaining gaps: Tier 3 channels (Signal, Matrix, Teams, Google Chat), Tier 4 deferred/niche items"
|
||||
"feature_gap_scorecard": "87/116 match (75%), 1 partial (1%), 27 missing (23%)",
|
||||
"next_up": "All phases P0-P8 and Tiers 1-2 complete. Tier 3 in progress (file.patch + Gmail done). Remaining gaps: Tier 3 channels (Signal, Matrix, Teams, Google Chat), Tier 4 deferred/niche items"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user