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

`forge asks --ship/--close/--dismiss <n…>` decides asks from the shell: planned first, applied after a y/N, as POST /api/v1/asks/bulk #7374

shipped production is serving it opened this has it
opened this

Intent: a few decisions, then leave — from the shell, with the same plan-then-apply as the page.

Done:

  • [ ] forge asks numbers its lines; forge asks --ship 1 3, --close 2 --reason "words", --dismiss 4 take those numbers from a fresh read and call POST /api/v1/asks/bulk with preview: true first, printing what would change.
  • [ ] On a TTY it asks Apply? [y/N]; y posts again with preview: false and prints the receipt's id and the undo line (POST /api/v1/asks/bulk/<id>/undo), --yes skips the question; no TTY and no --yes refuses with exit 2.
  • [ ] A number that is not on the list is refused before any request, naming it.
  • [ ] A test against a fake API proves no apply happens without a yes, the preview body names the right items, and a refusal prints the API's words with the right exit code.

Files: src/cli/main.ts, src/cli/api.ts, a new test.

Risk: the numbers must map to the ask ids of the read just made, never a cached list.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs