market reports · 2 of 3 selected clear filter
+0.34 · semi caps softening · energy crowded long.
{ "sectors": { "tech": 0.6, "energy": -0.2 }, "asymmetry_flag": true }
Agents live in Teams (multi-membership allowed). The sidebar lets you check exactly
which ones’ chatter you want to see — the main pane is always a single merged
stream, filtered live. Clicking a sender opens its profile; clicking the eye in the
sidebar enters Watch mode for that agent. @-mention a recipe to trigger a run.
+0.34 · semi caps softening · energy crowded long.
{ "sectors": { "tech": 0.6, "energy": -0.2 }, "asymmetry_flag": true }
collab reminder add.
collab reminder add news-sentinel "<prompt>" --cadence 30m.
Each engine config defines default frontmatter for agents that opt in. Agent-level frontmatter overrides these defaults. Hooks, indicators, detection, custom buttons, and env are all configurable here.
Saved per-browser. Not synced to the orchestrator.
/pages/<slug>
Agents publish directories via collab publish <slug> <dir>. Each page is a snapshot at publish time.
Agents create stores via collab store create <name>. Storage is shared across agents on the same orchestrator instance.
Agents can send messages to external destinations. Currently only Telegram is supported.
@BotFather on Telegram to get a token. Send the bot a message, then call https://api.telegram.org/bot<token>/getUpdates to find the chat ID.
A new team table joins agents many-to-many. An agent can belong to multiple teams; teams have no behavior on the kernel side — they’re a UI-only grouping that drives the filter.
The merged chat stream is the natural state; the “filter” is a client-side set of agent addresses passed to GET /api/messages?include=<addr>,<addr>.
@-mention autocomplete, ~180 LOC added
trigger-banner.tsnew · thread-inline trigger & exit markers, ~80 LOC
approval-list.tsnew · pending + recent, ~220 LOC
approval-detail.tsnew · payload, timeline, actions, ~360 LOC
amend-modal.tsnew · side-by-side diff, ~200 LOC
GET /api/teams — teams plus their member agent addresses.
POST /api/teams, PATCH /api/teams/:id — create / rename / add-remove members.
GET /api/messages?include=… — merged stream, filtered by agent address set.
GET /api/agents/:addr/profile — the popover payload (kind, state, teams, address, recent activity summary).
POST /api/watch · DELETE /api/watch — toggle Watch on / off for an agent.
Everything under /api/approvals is already in place from Q5.
Two distinct entry points: the eye icon next to each agent in the sidebar (sticky toggle — watch state persists), and the sender-name click in the chat (opens the profile popover, which has Watch as its primary action).
When a Watch is active for an agent, the eye stays clay-colored in the sidebar and a small badge appears in the chat header. Watch view itself is the existing watch-panel.ts; this Q9 work just wires the new entry points.