Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/claude-copilot-cli-channel-port.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
7 changes: 3 additions & 4 deletions docs/openai-copilot-cli-notifications.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down Expand Up @@ -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 | — | ✅ |
Expand Down Expand Up @@ -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

Expand Down
Loading