add the team chat inbox over the broker

Renders broker traffic as a chat timeline and makes the user a first-class
participant. The broker grows a Stream<TeamMessage> and a recipient field,
auto-registers a virtual `user` member, and gains sendAsUser. A Flutter-free
TeamChatModel (owned by the orchestrator) accumulates the feed and exposes
postAsUser with @-routing (a new at_commands helper mirroring slash) and an
optional interrupt that cancels the target's turn before delivery. One model
backs two surfaces: a compact cockpit widget that pops out into a full
workspace chat pane. CLI parity via clide.team-chat.open / .post.

T-180.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-05-31 10:49:04 +02:00
co-authored by Claude
parent e3c0b0146b
commit a0636c2e5a
17 changed files with 1656 additions and 31 deletions
+4
View File
@@ -75,6 +75,10 @@ heading, and (b) bumping `pubspec.yaml` `version:` in the same commit.
- Fork a Claude conversation into a new pane — `/fork` (or a roster Fork
button / `clide.agent.fork`) branches a session via `--resume … --fork-session`,
opening an independent continuation that leaves the original untouched. (T-172, D-77)
- Team chat inbox — broker traffic renders as a chat timeline (colour-coded
sender chips), in a compact cockpit widget that pops out to a full pane. The
user is a first-class participant: post with `@name` routing (or broadcast),
with an interrupt tickbox that cancels the target's turn before delivery. (T-180, D-77)
- Team coordination broker (T-170, D-77) — clide hosts an in-process MCP
server (`clide-team`) for managed sessions over the stream-json control
channel, giving agents tools to message each other, broadcast, see the