diff --git a/docs/claude-copilot-cli-channel-port.md b/docs/claude-copilot-cli-channel-port.md index eebf00a..e74adc9 100644 --- a/docs/claude-copilot-cli-channel-port.md +++ b/docs/claude-copilot-cli-channel-port.md @@ -231,7 +231,7 @@ Total: ~410 lines, no dependencies added. Two days of work including the body-pr - **Q4. Body prompt: do we add the Copilot CLI clause to a new file (`prompts/anatomy/copilot-cli.md`) or extend `channel-discipline.md`?** **Recommended default: extend `channel-discipline.md`.** The behavior IS channel discipline — same vocabulary, same audit rules, same place a body-rule reader expects to find it. A separate file fragments the rule by host and would have to be `@include`d conditionally, which the loader doesn't support today (`_expand_includes` is unconditional, [`mcp_server.py:53`](../src/entrabot/mcp_server.py)). -- **Q5. Should `wait_for_inbound_message` also forward Bot Gateway inbound (`_background_poll_bot`)?** **Recommended default: yes.** Same fan-out pattern — `_push_channel_notification` is already the unified entry point for bot inbound ([`mcp_server.py:846`](../src/entrabot/mcp_server.py)), so the enqueue line lives in one place and bot mode gets long-poll for free. +- **Q5. ~~Should `wait_for_inbound_message` also forward Bot Gateway inbound (`_background_poll_bot`)?~~** **Obsolete — Bot Gateway mode was removed (ADR-006).** The fan-out insight still holds: `_push_channel_notification` is the unified entry point for inbound, so `wait_for_inbound_message` enqueues from one place regardless of source (Teams Graph poll, email poll). - **Q6. Channel-push backwards compatibility — do we remove the experimental_capabilities declaration when we detect Copilot CLI?** **Recommended default: no, leave it.** The capability is advertised in `mcp._mcp_server.create_initialization_options(experimental_capabilities={"claude/channel": {}})` ([`mcp_server.py:2780`](../src/entrabot/mcp_server.py)) and Copilot CLI ignores capabilities it doesn't understand, per MCP spec. Branching the init options on host adds complexity for zero benefit. diff --git a/docs/openai-copilot-cli-notifications.md b/docs/openai-copilot-cli-notifications.md index 61218ad..645fadd 100644 --- a/docs/openai-copilot-cli-notifications.md +++ b/docs/openai-copilot-cli-notifications.md @@ -87,8 +87,7 @@ What `--dangerously-load-development-channels server:entrabot` plus "quoted_messages"}}` and calls `write_stream.send(...)`. Failure is swallowed (Learning #29). - Background loops that fire it: `_background_poll` (5 s Teams DM - poll, line ~965), `_background_poll_email` (60 s, line ~1063), - `_background_poll_bot` (Bot Gateway, line ~820). + poll), `_background_poll_email` (60 s). - Every push is **observed first** to the interaction log. The log is the durable record; the channel push is "best effort" (Learning #29 / #38). @@ -124,7 +123,7 @@ observation — is portable. | `--dangerously-load-development-channels` launch flag | ✅ | — | | Turn-injection UX | ✅ | — | | Three-hop Agent User token flow | — | ✅ | -| Graph polling (`_background_poll`, email, bot) | — | ✅ | +| Graph polling (`_background_poll`, email) | — | ✅ | | Interaction log + dedup + cursors | — | ✅ | | HTML sanitization (`_summarize_content`) | — | ✅ | | FastMCP stdio + tool surface | — | ✅ | @@ -477,7 +476,7 @@ in `last_seen_consumer` so: - `entrabot watch` advances a third cursor for terminal display. Dedup at the inbox layer is by `id` (Graph `message_id` for Teams, -`internetMessageId` for email, synthetic UUID for Bot Gateway). +`internetMessageId` for email). ### 7.4 Notification surfaces