Skip to content

feat: workspace-wide console inbox — GET /inbox?all=1 + CLI inbox --all/--peek#190

Open
ivanmkc wants to merge 1 commit into
masterfrom
feat/global-inbox
Open

feat: workspace-wide console inbox — GET /inbox?all=1 + CLI inbox --all/--peek#190
ivanmkc wants to merge 1 commit into
masterfrom
feat/global-inbox

Conversation

@ivanmkc

@ivanmkc ivanmkc commented Jun 18, 2026

Copy link
Copy Markdown
Owner

Watching the human→agent console for a whole workspace meant enumerating every scope and polling each one — N+1 calls per cycle. This adds one aggregated read and exposes non-consuming scans in the CLI.

Viewer

  • GET /inbox?all=1 — unread across every scope in the workspace, each with its unread events. Peek-only: never advances an ack (you can't sensibly consume many scopes in one read), so the agent does a normal per-scope read to consume + act. Backed by InboxStore.unreadByScope().

CLI

  • inbox --all — print the aggregate (no --project/--agent needed).
  • inbox --peek — read a single scope without advancing the ack.

TestsunreadByScope (peek semantics, ack isolation, partial-read), GET /inbox?all=1 (aggregate + empty), CLI --all/--peek/--json. Full suite green; also verified end-to-end against a live viewer.

…ll/--peek

Watching the human->agent console for a whole workspace required enumerating
every scope and polling each one (N+1 calls per cycle). Add one aggregated read
and expose non-consuming scans in the CLI:

- viewer: GET /inbox?all=1 returns unread across every scope in the workspace,
  each with its unread events. Peek-only — never advances an ack (you can't
  sensibly consume many scopes at once); the agent then does a normal per-scope
  read to consume + act. InboxStore.unreadByScope() backs it.
- cli: inbox --all (no --project/--agent) prints the aggregate; inbox --peek
  reads a single scope without advancing the ack.

Tests: unreadByScope (peek semantics, ack isolation), GET /inbox?all=1
(aggregate + empty), CLI --all/--peek/--json. Full suite green; verified
end-to-end against a live viewer.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants