From be3363fdc8238aad69c74ba00fbd79422259cb92 Mon Sep 17 00:00:00 2001 From: William Valentin Date: Sat, 7 Feb 2026 15:40:45 -0800 Subject: [PATCH] =?UTF-8?q?docs:=20update=20state.json=20and=20gap=20analy?= =?UTF-8?q?sis=20=E2=80=94=20file.patch=20+=20Gmail=20(87/116=20=3D=2075%)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...026-02-06-openclaw-feature-gap-analysis.md | 10 ++-- docs/plans/state.json | 47 +++++++++++++++++-- 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/docs/plans/2026-02-06-openclaw-feature-gap-analysis.md b/docs/plans/2026-02-06-openclaw-feature-gap-analysis.md index 6b2e445..d21e686 100644 --- a/docs/plans/2026-02-06-openclaw-feature-gap-analysis.md +++ b/docs/plans/2026-02-06-openclaw-feature-gap-analysis.md @@ -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%)** | --- diff --git a/docs/plans/state.json b/docs/plans/state.json index 6776dfa..9cc06ae 100644 --- a/docs/plans/state.json +++ b/docs/plans/state.json @@ -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" } }