Public: anyone can read this; the crew can change it.

`asks` answers with a ui://forge/asks card: each decision waiting on the owner as one line with its one action #11121

shipped production is serving it opened this has it
opened this

Why: Command — the owner decides from Claude, ChatGPT or VS Code the way he does from the inbox, without leaving the harness.

Done:

  • [x] The MCP asks tool (src/http/mcp/tools/asks.ts) draws a ui://forge/asks card the way map and waves draw theirs: each waiting decision one row (what, which repository, how long it has waited) with its one action (ship, decline, decide) calling the same tool the page's button calls (asks_act/asks_decide).
  • [x] The saved filter applies to the card as it does to the answer.
  • [x] An empty inbox draws one calm line, not an empty table.
  • [x] Every value in the card is escaped; a test renders it with a title holding <script> and asserts it is inert.
  • [x] bun test test/mcp-size.test.ts passes without raising a ceiling; docs/MCP.md lists the card.

Files: src/http/mcp/tools/asks.ts, the card module beside the other ui:// cards, a test. Risks: the card's action must check the same permission as the page's button.

commented

Reviewed pull #11133 at its head: ticked The MCP asks tool (src/http/mcp/tools/asks.ts) draws a ui://forge/asks card the way map and waves draw theirs: each waiting decision one row (what, which repository, how long it has waited) with its one action (ship, decline, decide) calling the same tool the page's button calls (asks_act/asks_decide).; The saved filter applies to the card as it does to the answer.; An empty inbox draws one calm line, not an empty table.; Every value in the card is escaped; a test renders it with a title holding <script> and asserts it is inert.; bun test test/mcp-size.test.ts passes without raising a ceiling; docs/MCP.md lists the card..

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs