vgxness 1.2.1 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +20 -19
  2. package/dist/cli/cli-help.js +4 -7
  3. package/dist/cli/commands/index.js +1 -1
  4. package/dist/cli/commands/interactive-entrypoint-dispatcher.js +150 -0
  5. package/dist/cli/commands/setup-dispatcher.js +11 -8
  6. package/dist/cli/dispatcher.js +1 -8
  7. package/dist/cli/doctor-renderer.js +1 -1
  8. package/dist/cli/index.js +0 -0
  9. package/dist/cli/sdd-renderer.js +7 -7
  10. package/dist/cli/setup-status-renderer.js +1 -0
  11. package/dist/cli/tui/main-menu/index.js +0 -1
  12. package/dist/cli/tui/main-menu/main-menu-controller.js +0 -2
  13. package/dist/cli/tui/main-menu/main-menu-read-model.js +10 -8
  14. package/dist/cli/tui/main-menu/main-menu-render-shape.js +19 -2
  15. package/dist/cli/tui/main-menu/main-menu-state.js +1 -1
  16. package/dist/cli/tui/opentui/code/index.js +210 -0
  17. package/dist/cli/tui/opentui/code/screen.js +107 -0
  18. package/dist/cli/tui/opentui/code/smoke.js +32 -0
  19. package/dist/cli/tui/opentui/main-menu/index.js +3 -0
  20. package/dist/cli/tui/opentui/main-menu/renderer.js +68 -0
  21. package/dist/cli/tui/opentui/main-menu/screen.js +68 -0
  22. package/dist/cli/tui/opentui/main-menu/smoke.js +17 -0
  23. package/dist/cli/tui/opentui/main-menu/view.js +8 -0
  24. package/dist/cli/tui/opentui/setup/index.js +3 -0
  25. package/dist/cli/tui/opentui/setup/renderer.js +87 -0
  26. package/dist/cli/tui/opentui/setup/screen.js +170 -0
  27. package/dist/cli/tui/opentui/setup/smoke.js +42 -0
  28. package/dist/cli/tui/opentui/setup/view.js +12 -0
  29. package/dist/cli/tui/setup/setup-tui-input.js +43 -0
  30. package/dist/cli/tui/setup/setup-tui-read-model.js +4 -4
  31. package/dist/cli/tui/setup/setup-tui-render-shape.js +9 -10
  32. package/dist/cli/tui/setup/setup-tui-state.js +1 -1
  33. package/dist/cli/tui/setup/setup-tui-view-helpers.js +46 -0
  34. package/dist/cli/tui/visual/index.js +0 -2
  35. package/dist/code/runtime/sdd-context.js +2 -2
  36. package/dist/code/tui/approval-actions.js +33 -0
  37. package/dist/code/tui/prompt-mode.js +11 -0
  38. package/dist/code/tui/runtime-events.js +320 -0
  39. package/dist/mcp/validation.js +6 -2
  40. package/dist/orchestrator/natural-language-planner.js +1 -1
  41. package/dist/sdd/sdd-workflow-service.js +1 -25
  42. package/dist/setup/backup-rollback-service.js +2 -2
  43. package/dist/setup/providers/antigravity-setup-adapter.js +1 -1
  44. package/dist/setup/providers/claude-setup-adapter.js +2 -2
  45. package/dist/setup/providers/custom-setup-adapter.js +1 -1
  46. package/dist/setup/providers/opencode-setup-adapter.js +3 -3
  47. package/dist/setup/setup-lifecycle-service.js +6 -6
  48. package/dist/setup/setup-plan.js +3 -3
  49. package/dist/verification/verification-plan-service.js +1 -1
  50. package/docs/architecture.md +43 -42
  51. package/docs/cli.md +141 -133
  52. package/docs/funcionamiento-del-sistema.md +22 -23
  53. package/docs/harness-gap-analysis.md +15 -1
  54. package/docs/prd.md +14 -14
  55. package/docs/vgxcode.md +87 -0
  56. package/docs/vgxness-code.md +6 -4
  57. package/package.json +5 -6
  58. package/dist/cli/commands/dashboard-dispatcher.js +0 -560
  59. package/dist/cli/dashboard-operational-read-models.js +0 -428
  60. package/dist/cli/dashboard-renderer.js +0 -158
  61. package/dist/cli/dashboard-screen-renderers.js +0 -256
  62. package/dist/cli/dashboard-tui-read-model.js +0 -73
  63. package/dist/cli/dashboard-tui-state.js +0 -314
  64. package/dist/cli/guided-main-menu.js +0 -470
  65. package/dist/cli/interactive-dashboard.js +0 -34
  66. package/dist/cli/setup-wizard-read-model.js +0 -72
  67. package/dist/cli/setup-wizard-renderer.js +0 -155
  68. package/dist/cli/setup-wizard-state.js +0 -82
  69. package/dist/cli/tui/dashboard/dashboard-adapter.js +0 -4
  70. package/dist/cli/tui/main-menu/main-menu-app.js +0 -28
  71. package/dist/cli/tui/render-ink-app.js +0 -10
  72. package/dist/cli/tui/setup/screens/applying-screen.js +0 -6
  73. package/dist/cli/tui/setup/screens/cancellation-screen.js +0 -6
  74. package/dist/cli/tui/setup/screens/error-recovery-screen.js +0 -6
  75. package/dist/cli/tui/setup/screens/final-confirmation-screen.js +0 -6
  76. package/dist/cli/tui/setup/screens/opencode-details-screen.js +0 -10
  77. package/dist/cli/tui/setup/screens/plan-review-screen.js +0 -6
  78. package/dist/cli/tui/setup/screens/project-database-screen.js +0 -6
  79. package/dist/cli/tui/setup/screens/provider-screen.js +0 -7
  80. package/dist/cli/tui/setup/screens/result-screen.js +0 -16
  81. package/dist/cli/tui/setup/screens/screen-components.js +0 -103
  82. package/dist/cli/tui/setup/screens/welcome-screen.js +0 -6
  83. package/dist/cli/tui/setup/setup-tui-app.js +0 -113
  84. package/dist/cli/tui/visual/choice-list.js +0 -10
  85. package/dist/cli/tui/visual/layout.js +0 -10
package/docs/cli.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # Use the local CLI
2
2
 
3
- Run `vgxness` commands from the repo with `bun run cli -- ...`. The CLI is intentionally thin: it parses flags, opens the local SQLite store, and calls the existing domain services for memory, agents, runs, and permissions. `npm run cli -- ...` remains available for Node development tooling compatibility when dependencies are already installed, but installed `vgxness`/`vgx` bins require Bun.
3
+ Run `vgxness` commands from the repo with `bun run cli:bun -- ...` when you need the same Bun runtime path used by installed `vgxness`/`vgx` bins. The CLI is intentionally thin: it parses flags, opens the local SQLite store, and calls the existing domain services for memory, agents, runs, and permissions. `npm run cli -- ...` remains available for Node development tooling compatibility when dependencies are already installed, but installed `vgxness`/`vgx` bins require Bun.
4
4
 
5
5
  ## Local tarball install and dogfood
6
6
 
7
- Use the Bun package evidence workflow to dogfood the installable package without publishing. It builds package artifacts, validates package contents, installs into an isolated Bun environment, and checks both CLI bins.
7
+ Use the Bun package evidence workflow to dogfood the installable package without publishing. It builds package artifacts, validates package contents, installs into an isolated Bun environment, checks both CLI bins, and runs an installed MCP read-only smoke.
8
8
 
9
9
  ```bash
10
10
  bun run package:bun:evidence
@@ -21,9 +21,10 @@ The evidence includes these smoke checks from the isolated install location:
21
21
  ```bash
22
22
  vgxness --help
23
23
  vgx --help
24
+ vgxness mcp start --db <temp-memory.sqlite> # then call verification_plan with { changeType: 'mcp' }
24
25
  ```
25
26
 
26
- `vgx setup plan` and `vgx setup status` are human-readable and read-only by default; pass `--json` when you need parseable automation output. The MCP plan is read-only. Installed-package setup plans should use `vgxness mcp start` and must not mention `npm run cli`, `tsx`, or repository-relative source paths.
27
+ `vgxness setup plan` and `vgxness setup status` are human-readable and read-only by default; pass `--json` when you need parseable automation output. The MCP plan is read-only. Installed-package setup plans should use `vgxness mcp start` and must not mention `npm run cli`, `tsx`, or repository-relative source paths.
27
28
 
28
29
  Only apply the OpenCode user/global config after reviewing the plan (use `--scope project` only when you intentionally want project config):
29
30
 
@@ -51,20 +52,20 @@ Release defaults used by the guided setup are:
51
52
  Recommended user flow after `npm install -g vgxness`:
52
53
 
53
54
  ```bash
54
- vgx --help
55
- vgx # operational dashboard in a TTY; static safe guidance in CI/non-TTY
56
- vgx init # setup wizard in a TTY; read-only plan in CI/non-TTY
57
- vgx setup plan # human-readable, read-only plan
58
- vgx setup status # human-readable, read-only setup status
59
- vgx setup apply --yes # writes OpenCode config only after explicit consent
60
- vgx doctor # human-readable readiness checks
61
- vgx sdd next --project <project> --change <change>
62
- vgx setup rollback --backup <path>
55
+ vgxness --help
56
+ vgxness # OpenTUI main menu in a TTY; static safe setup guidance in CI/non-TTY
57
+ vgxness init # setup wizard in a TTY; read-only plan in CI/non-TTY
58
+ vgxness setup plan # human-readable, read-only plan
59
+ vgxness setup status # human-readable, read-only setup status
60
+ vgxness setup apply --yes # writes OpenCode config only after explicit consent
61
+ vgxness doctor # human-readable readiness checks
62
+ vgxness sdd next --project <project> --change <change>
63
+ vgxness setup rollback --backup <path>
63
64
  ```
64
65
 
65
- `setup plan`, `setup status`, and non-TTY `init` planning are read-only and do not write provider config. They are human-readable by default; pass `--json` when you need parseable automation output. With the default global database, the OpenCode MCP command is `vgxness mcp start`; for custom/project-local DBs it includes `--db <path>`. The default OpenCode target is `$HOME/.config/opencode/opencode.json`; pass `--scope project` to opt into `<workspace>/.opencode/opencode.json`. `setup apply --yes` is the explicit OpenCode provider-config write path. `setup rollback --backup <path>` validates a VGXNESS/OpenCode backup such as `opencode.json.backup-<timestamp>`, creates a pre-rollback backup of the current target when present, restores the selected backup byte-for-byte, and recommends `vgx doctor`.
66
+ `setup plan`, `setup status`, and non-TTY `init` planning are read-only and do not write provider config. They are human-readable by default; pass `--json` when you need parseable automation output. With the default global database, the OpenCode MCP command is `vgxness mcp start`; for custom/project-local DBs it includes `--db <path>`. The default OpenCode target is `$HOME/.config/opencode/opencode.json`; pass `--scope project` to opt into `<workspace>/.opencode/opencode.json`. `setup apply --yes` is the explicit OpenCode provider-config write path. `setup rollback --backup <path>` validates a VGXNESS/OpenCode backup such as `opencode.json.backup-<timestamp>`, creates a pre-rollback backup of the current target when present, restores the selected backup byte-for-byte, and recommends `vgxness doctor`.
66
67
 
67
- `vgx init` prompts in English when stdin/stdout are TTYs: project name, DB location, provider, OpenCode scope, install mode, then shows the plan and asks `Apply this setup? Type "yes" to continue:`. Any answer other than `yes` exits successfully without writes. In CI/non-TTY without `--yes`, `init` returns the read-only plan and never waits for input. `vgx doctor`, `vgx sdd status`, `vgx sdd next`, `vgx sdd get-artifact`, and `vgx sdd list-artifacts` are also human-readable by default; use `--json` for scripts.
68
+ `vgxness init` prompts in English when stdin/stdout are TTYs: project name, DB location, provider, OpenCode scope, install mode, then shows the plan and asks `Apply this setup? Type "yes" to continue:`. Any answer other than `yes` exits successfully without writes. In CI/non-TTY without `--yes`, `init` returns the read-only plan and never waits for input. `vgxness doctor`, `vgxness sdd status`, `vgxness sdd next`, `vgxness sdd get-artifact`, and `vgxness sdd list-artifacts` are also human-readable by default; use `--json` for scripts.
68
69
 
69
70
  ## Bun-first repository verification
70
71
 
@@ -105,7 +106,7 @@ This default mode is diagnostic: it may emit `status: incompatible` and exit `0`
105
106
  bun run package:bun:evidence -- --require-pass
106
107
  ```
107
108
 
108
- It validates package metadata, artifact contents, forbidden workspace-only files, isolated Bun global install behavior, both `vgxness --help` and `vgx --help`, Bun runtime identity evidence for the installed wrapper, retired bridge invariants, no `package-lock.json`, and `publicationAttempted: false`. It must not invoke registry publication commands.
109
+ It validates package metadata, artifact contents, forbidden workspace-only files, isolated Bun global install behavior, both `vgxness --help` and `vgx --help`, installed MCP `verification_plan` read-only behavior, Bun runtime identity evidence for the installed wrapper, retired bridge invariants, no `package-lock.json`, and `publicationAttempted: false`. It must not invoke registry publication commands or write provider config.
109
110
 
110
111
  Release-candidate checklist, without publishing:
111
112
 
@@ -185,43 +186,48 @@ bun run package:bun:evidence
185
186
 
186
187
  When reporting a Bun failure, include the Bun version, OS/CPU, Node version, whether `bun install --frozen-lockfile` completed, which `bun run verify:*` command failed, and whether the error points to `bun:sqlite`, migration application, package evidence, or another install step.
187
188
 
188
- ## Quick path
189
+ ## Repository quick path
190
+
191
+ These examples are for a source checkout. They use repo-local seeds and `bun run cli:bun -- ...`; they are not installed-package quick-start commands.
189
192
 
190
193
  ```bash
191
- npm run cli -- agents register --project vgxness --name apply-agent --description "Applies focused slices" --instructions "Follow SDD apply rules."
192
- npm run cli -- agents seed load --file seeds/agents/agent-seed-v1.json
193
- npm run cli -- agents list --project vgxness
194
- npm run cli -- agents get --project vgxness --name apply-agent
195
- npm run cli -- agents resolve --project vgxness --capabilities implementation,typescript --workflow sdd --phase apply --provider opencode --task "Implement a focused slice"
196
- npm run cli -- agents render --provider json --project vgxness --name apply-agent
197
- npm run cli -- agents render --provider opencode --project vgxness --name apply-agent
198
- npm run cli -- opencode preview --provider opencode --agent apply-agent --project vgxness --change my-change --phase apply-progress
199
- npm run cli -- sdd status --project vgxness --change my-change
194
+ bun run cli:bun -- agents register --project vgxness --name apply-agent --description "Applies focused slices" --instructions "Follow SDD apply rules."
195
+ bun run cli:bun -- agents seed load --file seeds/agents/agent-seed-v1.json
196
+ bun run cli:bun -- agents list --project vgxness
197
+ bun run cli:bun -- agents get --project vgxness --name apply-agent
198
+ bun run cli:bun -- agents resolve --project vgxness --capabilities implementation,typescript --workflow sdd --phase apply --provider opencode --task "Implement a focused slice"
199
+ bun run cli:bun -- agents render --provider json --project vgxness --name apply-agent
200
+ bun run cli:bun -- agents render --provider opencode --project vgxness --name apply-agent
201
+ bun run cli:bun -- opencode preview --provider opencode --agent apply-agent --project vgxness --change my-change --phase apply-progress
202
+ bun run cli:bun -- sdd status --project vgxness --change my-change
200
203
  ```
201
204
 
205
+ The checked-in agent seed is currently a repository development asset. It is not part of the published package whitelist; installed users should rely on setup-generated manager/agent config unless a release explicitly ships `seeds/agents/agent-seed-v1.json`.
206
+
202
207
  `agents render` returns generated artifacts in JSON. It does **not** install them or write `.opencode/`, `.claude/`, or any user/global provider config.
203
208
 
204
209
  `agents seed load` reads a project-local JSON manifest and upserts those agents into the local SQLite registry. It does **not** install OpenCode, create `.opencode/` or `.claude/`, or write provider/user/global config.
205
210
 
206
211
  `opencode preview` returns a combined, preview-only injection envelope for future OpenCode/MCP/hook callers. It does **not** execute OpenCode, install hooks or MCP servers, create runs, record skill usage, or write provider config.
207
212
 
208
- ## Operational dashboard
213
+ ## OpenTUI main menu
209
214
 
210
- Use the interactive dashboard for a read-only operational view:
215
+ Use no arguments in a TTY to open the main menu from a checkout:
211
216
 
212
217
  ```bash
213
- npm run cli --
214
- npm run cli -- dashboard interactive [--project vgxness] [--change my-change]
215
- npm run cli -- dashboard status --project vgxness [--change my-change]
218
+ bun run cli:bun --
216
219
  ```
217
220
 
218
- The installed `vgxness`/`vgx` binary opens the same operational dashboard as `dashboard interactive` when run with no arguments in a TTY. With no TTY, no-args prints deterministic safe guidance, exits 0, and does not read dashboard status, infer a project, open project state, toggle raw mode, or write provider/config artifacts. Use `vgxness --help` or `vgxness -h` to print command help without starting the dashboard; explicit subcommands keep their normal behavior.
221
+ The installed `vgxness`/`vgx` binary opens the OpenTUI main menu when run with no arguments in a TTY. With no TTY, no-args prints deterministic safe setup guidance, exits 0, and does not infer a project, open project state, toggle raw mode, or write provider/config artifacts. Use `vgxness --help` or `vgxness -h` to print command help without starting the main menu; explicit subcommands keep their normal behavior.
219
222
 
220
- The top-level menu is: **Installation, Status, Agents, Skills, Memory, SDD, Runs, Approvals, Permissions, Settings**. Terminal controls are `1-9`/`0` to switch screens, `r` to refresh, `?` for help, and `q` to quit. `Enter` shows details only; operational actions remain copy-only and must be run outside the TUI.
223
+ The top-level menu is: **Installation, Doctor / recovery, SDD / workflow guidance, Advanced CLI, Exit**. Terminal controls are `↑/↓` or `j/k` to move, `Enter` to open the focused item, `?` for help, and `q` to quit.
221
224
 
222
- `dashboard interactive` can launch without `--project`; it opens Installation/status-oriented guidance while project-scoped checks are deferred rather than failed. Project-scoped screens render recoverable `project-required` states until you relaunch or refresh with a project.
225
+ For scriptable status, use explicit read-only commands:
223
226
 
224
- `dashboard status --project <name>` is the scriptable/read-only renderer. It intentionally remains separate from no-args behavior and validates required project/limit flags.
227
+ ```bash
228
+ bun run cli:bun -- setup status --project vgxness
229
+ bun run cli:bun -- sdd status --project vgxness --change my-change
230
+ ```
225
231
 
226
232
  Provider support shown in the Installation surface is:
227
233
 
@@ -230,14 +236,14 @@ Provider support shown in the Installation surface is:
230
236
  - **Antigravity** — placeholder/coming-soon guidance only.
231
237
  - **Custom/future** — extension point with safe manual/default unsupported behavior.
232
238
 
233
- The dashboard displays preview/status data, workflow registry entries, run traces, and approvals/preflights as read-only/copy-only data. It does **not** silently write OpenCode or other provider config, does **not** call provider executables, does **not** run install/apply/doctor/workflow commands, and does **not** approve/reject preflights. Any operational next action is copied for explicit execution outside the TUI.
239
+ Setup and main-menu TUI surfaces do **not** silently write OpenCode or other provider config, do **not** call provider executables, and do **not** approve/reject preflights. Any operational next action is copied for explicit execution outside the TUI.
234
240
 
235
241
  ## Natural-language orchestrator preview
236
242
 
237
243
  Use `orchestrator preview` when you want `vgxness` to classify a request before deciding whether to answer directly, plan manually, diagnose, or enter SDD:
238
244
 
239
245
  ```bash
240
- npm run cli -- orchestrator preview \
246
+ bun run cli:bun -- orchestrator preview \
241
247
  --project vgxness \
242
248
  --intent "Build a new persistent checkout workflow" \
243
249
  --change checkout-workflow \
@@ -262,9 +268,9 @@ Use workflow commands when you want an explicit operator-controlled path from in
262
268
  Each workflow has three modes:
263
269
 
264
270
  ```bash
265
- npm run cli -- <workflow> preview --project <name> --intent <text>
266
- npm run cli -- <workflow> run --project <name> --intent <text> [--phase <name>] [--agent-id <id>] [--db <path>]
267
- npm run cli -- <workflow> execute --run-id <id> --confirm [--override-escalation] [--workspace <path>] [--db <path>] [--executor safe-non-dispatching|provider|command]
271
+ bun run cli:bun -- <workflow> preview --project <name> --intent <text>
272
+ bun run cli:bun -- <workflow> run --project <name> --intent <text> [--phase <name>] [--agent-id <id>] [--db <path>]
273
+ bun run cli:bun -- <workflow> execute --run-id <id> --confirm [--override-escalation] [--workspace <path>] [--db <path>] [--executor safe-non-dispatching|provider|command]
268
274
  ```
269
275
 
270
276
  `preview` is read-only: it returns the workflow registry plus optional planner output, does not open or write the database, does not create runs, does not call providers, does not edit files, and does not write provider config. Use it to choose between `quickfix`, `debug`, `sdd`, or another workflow before recording state.
@@ -277,25 +283,25 @@ Examples:
277
283
 
278
284
  ```bash
279
285
  # Preview a small docs/help fix.
280
- npm run cli -- quickfix preview \
286
+ bun run cli:bun -- quickfix preview \
281
287
  --project vgxness \
282
288
  --intent "Fix the CLI help copy for workflow execute"
283
289
 
284
290
  # Record a debug workflow run, then inspect the run id in the JSON output.
285
- npm run cli -- debug run \
291
+ bun run cli:bun -- debug run \
286
292
  --project vgxness \
287
293
  --intent "Investigate why workflow execute is blocked" \
288
294
  --db /tmp/vgxness-debug.sqlite
289
295
 
290
296
  # Record formal SDD work at a canonical phase.
291
- npm run cli -- sdd run \
297
+ bun run cli:bun -- sdd run \
292
298
  --project vgxness \
293
299
  --intent "Implement the workflow CLI documentation" \
294
300
  --phase apply-progress \
295
301
  --db /tmp/vgxness-sdd.sqlite
296
302
 
297
303
  # Execute a previously recorded run with the default non-dispatching gate.
298
- npm run cli -- quickfix execute \
304
+ bun run cli:bun -- quickfix execute \
299
305
  --run-id <run-id> \
300
306
  --confirm \
301
307
  --db /tmp/vgxness-debug.sqlite
@@ -311,7 +317,7 @@ Use `--executor command` only for the built-in bounded-process checks. It never
311
317
  | `node-version` | `node --version` | 5s | 8 KiB | Harmless local runtime smoke check. |
312
318
 
313
319
  ```bash
314
- npm run cli -- quickfix execute \
320
+ bun run cli:bun -- quickfix execute \
315
321
  --run-id <run-id> \
316
322
  --confirm \
317
323
  --executor command \
@@ -328,9 +334,9 @@ Command execution is bounded to the workspace: `--command-cwd` must resolve insi
328
334
  Use approval commands to resolve per-operation human approval requests without loosening global permissions:
329
335
 
330
336
  ```bash
331
- npm run cli -- approvals list [--run-id <id>] [--db <path>]
332
- npm run cli -- approvals approve --id <approval-id> [--db <path>]
333
- npm run cli -- approvals reject --id <approval-id> [--reason <text>] [--db <path>]
337
+ bun run cli:bun -- approvals list [--run-id <id>] [--db <path>]
338
+ bun run cli:bun -- approvals approve --id <approval-id> [--db <path>]
339
+ bun run cli:bun -- approvals reject --id <approval-id> [--reason <text>] [--db <path>]
334
340
  ```
335
341
 
336
342
  The safer default is unchanged: shell operations use `shell: ask` unless explicitly configured otherwise. Approval records let an operator authorize one exact pending operation, instead of changing provider or global permissions to make future shell operations pass automatically.
@@ -339,13 +345,13 @@ Command executor approval flow:
339
345
 
340
346
  ```bash
341
347
  # 1. Record the workflow run and keep the returned run id.
342
- npm run cli -- quickfix run \
348
+ bun run cli:bun -- quickfix run \
343
349
  --project vgxness \
344
350
  --intent "Check the local Node runtime" \
345
351
  --db /tmp/vgxness-workflow.sqlite
346
352
 
347
353
  # 2. Request an allowlisted command dispatch. With shell ask, this stops at approval.
348
- npm run cli -- quickfix execute \
354
+ bun run cli:bun -- quickfix execute \
349
355
  --run-id <run-id> \
350
356
  --confirm \
351
357
  --executor command \
@@ -353,17 +359,17 @@ npm run cli -- quickfix execute \
353
359
  --db /tmp/vgxness-workflow.sqlite
354
360
 
355
361
  # 3. Inspect the pending approval for that run.
356
- npm run cli -- approvals list \
362
+ bun run cli:bun -- approvals list \
357
363
  --run-id <run-id> \
358
364
  --db /tmp/vgxness-workflow.sqlite
359
365
 
360
366
  # 4. Approve the exact recorded operation.
361
- npm run cli -- approvals approve \
367
+ bun run cli:bun -- approvals approve \
362
368
  --id <approval-id> \
363
369
  --db /tmp/vgxness-workflow.sqlite
364
370
 
365
371
  # 5. Re-run the same execute command; the command now dispatches.
366
- npm run cli -- quickfix execute \
372
+ bun run cli:bun -- quickfix execute \
367
373
  --run-id <run-id> \
368
374
  --confirm \
369
375
  --executor command \
@@ -378,7 +384,7 @@ Approval reuse is intentionally narrow. A resolved approval must match the run i
378
384
  To deny an operation, reject the approval instead of approving it:
379
385
 
380
386
  ```bash
381
- npm run cli -- approvals reject \
387
+ bun run cli:bun -- approvals reject \
382
388
  --id <approval-id> \
383
389
  --reason "not appropriate for this run" \
384
390
  --db /tmp/vgxness-workflow.sqlite
@@ -395,21 +401,21 @@ A rejected approval is recorded in the run audit trail and prevents the matching
395
401
  Use this flow to manually verify MCP readiness after implementation. Setup preview is read-only: it does **not** install anything, create `.opencode/` or `.claude/`, or write provider/user/global config.
396
402
 
397
403
  ```bash
398
- npm run cli -- mcp setup --preview --provider opencode --db <path>
399
- npm run cli -- mcp setup --preview --provider claude --db <path>
400
- npm run cli -- mcp doctor --db <path> --project vgxness --change manual-smoke
404
+ bun run cli:bun -- mcp setup --preview --provider opencode --db <path>
405
+ bun run cli:bun -- mcp setup --preview --provider claude --db <path>
406
+ bun run cli:bun -- mcp doctor --db <path> --project vgxness --change manual-smoke
401
407
  ```
402
408
 
403
409
  The setup preview JSON includes `installable:false`, `readOnly:true`, `writesProviderConfig:false`, plus a copyable MCP server command. Without `--db`, preview snippets omit `--db` and rely on the global default database; with `--db <path>` or `VGXNESS_DB_PATH`, snippets keep the explicit database argument. If needed, copy the `server.command` and `server.args` from the preview into your client manually; the preview itself never writes that config. For OpenCode config automation, inspect `mcp install opencode --plan` before applying with `--yes`; the default target is `$HOME/.config/opencode/opencode.json`.
404
410
 
405
- The top-level `vgx doctor` command prints human-readable readiness checks by default and accepts `--json` for scriptable output. Lower-level `mcp doctor` remains useful for MCP-specific checks and manual diagnostics; use `--json` where parseable output is needed. `ready:true` means required checks passed. `ready:false` means at least one required check failed; read the failed check `id`, `detail`, and optional `remediation` to fix the local setup, then run doctor again.
411
+ The top-level `vgxness doctor` command prints human-readable readiness checks by default and accepts `--json` for scriptable output. Lower-level `mcp doctor` remains useful for MCP-specific checks and manual diagnostics; use `--json` where parseable output is needed. `ready:true` means required checks passed. `ready:false` means at least one required check failed; read the failed check `id`, `detail`, and optional `remediation` to fix the local setup, then run doctor again.
406
412
 
407
413
  ## OpenCode MCP visibility
408
414
 
409
415
  Use this read-only diagnostic when you need to confirm why OpenCode sees the project-local `vgxness` server from the repo but not from outside the worktree:
410
416
 
411
417
  ```bash
412
- npm run cli -- mcp doctor opencode
418
+ bun run cli:bun -- mcp doctor opencode
413
419
  opencode mcp list
414
420
  ```
415
421
 
@@ -424,11 +430,11 @@ From a parent directory or another path outside the worktree, the project-local
424
430
  Use the installer when you want `vgxness` registered in OpenCode instead of copying the setup preview by hand. User/global scope is the default; project scope is opt-in:
425
431
 
426
432
  ```bash
427
- npm run cli -- mcp doctor --db <path> --project vgxness --change manual-smoke
428
- npm run cli -- mcp install opencode --plan
429
- npm run cli -- mcp install opencode --yes
430
- npm run cli -- mcp install opencode --plan --scope project --db <path>
431
- npm run cli -- mcp install opencode --yes --scope project --db <path>
433
+ bun run cli:bun -- mcp doctor --db <path> --project vgxness --change manual-smoke
434
+ bun run cli:bun -- mcp install opencode --plan
435
+ bun run cli:bun -- mcp install opencode --yes
436
+ bun run cli:bun -- mcp install opencode --plan --scope project --db <path>
437
+ bun run cli:bun -- mcp install opencode --yes --scope project --db <path>
432
438
  ```
433
439
 
434
440
  Use `--plan` first when you want concrete target analysis without mutation. It prints the same OpenCode install contract the apply path uses, including `scope`, `targetPath`, `safety`, backup requirement, merge policy, verification hints, and any refusal reason. It does not create `.opencode/`, write user config, touch `$HOME/.config/opencode`, or create backups. User/global scope plans target `$HOME/.config/opencode/opencode.json` by default; project scope requires explicit `--scope project` and targets only the project config path.
@@ -450,12 +456,12 @@ Rollback is file-based:
450
456
 
451
457
  - If install created a new config, delete the reported `targetPath` (`.opencode/opencode.json` for project scope or `$HOME/.config/opencode/opencode.json` for user scope).
452
458
  - If install modified an existing config, restore the reported backup over `targetPath`.
453
- - Run `npm run cli -- mcp doctor --db <path> --project vgxness --change manual-smoke` again after rollback.
459
+ - Run `bun run cli:bun -- mcp doctor --db <path> --project vgxness --change manual-smoke` again after rollback.
454
460
 
455
461
  Manual OpenCode verification checklist:
456
462
 
457
463
  1. Run doctor before install and note any failed checks.
458
- 2. Run `npm run cli -- mcp install opencode --yes --db <path>`.
464
+ 2. Run `bun run cli:bun -- mcp install opencode --yes --db <path>`.
459
465
  3. Inspect the reported target path (default `$HOME/.config/opencode/opencode.json`) and confirm `mcp.vgxness` has `type:"local"`, a `command` array, and `enabled:true`.
460
466
  4. Restart OpenCode so it reloads config.
461
467
  5. In OpenCode, confirm the `vgxness` MCP tools are available.
@@ -466,14 +472,14 @@ Manual OpenCode verification checklist:
466
472
  Use `sdd` commands to inspect local SDD artifact state and save, read, or list phase artifacts. These commands read and write only the selected `vgxness` local SQLite memory store: `--db <path>` when passed, `VGXNESS_DB_PATH` when set, or the global default database when neither override is present.
467
473
 
468
474
  ```bash
469
- npm run cli -- sdd status --project vgxness --change sdd-workflow-engine --db /tmp/vgxness-memory.sqlite
470
- npm run cli -- sdd ready --project vgxness --change sdd-workflow-engine --phase spec --db /tmp/vgxness-memory.sqlite
471
- npm run cli -- sdd save-artifact --project vgxness --change sdd-workflow-engine --phase proposal --content "# Proposal" --db /tmp/vgxness-memory.sqlite
472
- npm run cli -- sdd accept-artifact --project vgxness --change sdd-workflow-engine --phase proposal --actor user --note "Approved for spec" --db /tmp/vgxness-memory.sqlite
473
- npm run cli -- sdd get-artifact --project vgxness --change sdd-workflow-engine --phase proposal --db /tmp/vgxness-memory.sqlite
474
- npm run cli -- sdd list-artifacts --project vgxness --change sdd-workflow-engine --db /tmp/vgxness-memory.sqlite
475
- npm run cli -- sdd next --project vgxness --change sdd-workflow-engine --db /tmp/vgxness-memory.sqlite
476
- VGXNESS_DB_PATH=/tmp/vgxness-memory.sqlite npm run cli -- sdd list-artifacts --project vgxness --change sdd-workflow-engine
475
+ bun run cli:bun -- sdd status --project vgxness --change sdd-workflow-engine --db /tmp/vgxness-memory.sqlite
476
+ bun run cli:bun -- sdd ready --project vgxness --change sdd-workflow-engine --phase spec --db /tmp/vgxness-memory.sqlite
477
+ bun run cli:bun -- sdd save-artifact --project vgxness --change sdd-workflow-engine --phase proposal --content "# Proposal" --db /tmp/vgxness-memory.sqlite
478
+ bun run cli:bun -- sdd accept-artifact --project vgxness --change sdd-workflow-engine --phase proposal --actor user --note "Approved for spec" --db /tmp/vgxness-memory.sqlite
479
+ bun run cli:bun -- sdd get-artifact --project vgxness --change sdd-workflow-engine --phase proposal --db /tmp/vgxness-memory.sqlite
480
+ bun run cli:bun -- sdd list-artifacts --project vgxness --change sdd-workflow-engine --db /tmp/vgxness-memory.sqlite
481
+ bun run cli:bun -- sdd next --project vgxness --change sdd-workflow-engine --db /tmp/vgxness-memory.sqlite
482
+ VGXNESS_DB_PATH=/tmp/vgxness-memory.sqlite bun run cli:bun -- sdd list-artifacts --project vgxness --change sdd-workflow-engine
477
483
  ```
478
484
 
479
485
  Current phases are `explore`, `proposal`, `spec`, `design`, `tasks`, `apply-progress`, `verify`, and `archive`. Each artifact is stored under `sdd/{change}/{phase}` in the local SQLite memory store. `sdd status` reports which phase artifacts are present and the next ready missing phase. `sdd next` reports the next SDD action for a project/change. `sdd status`, `sdd next`, `sdd get-artifact`, and `sdd list-artifacts` are human-readable by default; pass `--json` for automation/stable structured output. `sdd ready` reports satisfied prerequisites and missing artifact topic keys for one phase. `sdd get-artifact` shows artifact metadata and then full content after `--- Content ---`; `sdd list-artifacts` shows one compact row for every canonical SDD phase in phase order and does not print full artifact content.
@@ -487,8 +493,8 @@ The SDD CLI is status/persistence only. It does **not** execute providers, conti
487
493
  `agents resolve` ranks registered agents/subagents for a task using transparent metadata rules. It is read-only and does not execute agents, call a model, or mutate provider configuration.
488
494
 
489
495
  ```bash
490
- npm run cli -- agents resolve --project vgxness --capabilities implementation,typescript --workflow sdd --phase apply --provider opencode --task "Implement the next PRD slice"
491
- npm run cli -- agents resolve --project vgxness --mode subagent --capabilities review --workflow sdd --phase verify
496
+ bun run cli:bun -- agents resolve --project vgxness --capabilities implementation,typescript --workflow sdd --phase apply --provider opencode --task "Implement the next PRD slice"
497
+ bun run cli:bun -- agents resolve --project vgxness --mode subagent --capabilities review --workflow sdd --phase verify
492
498
  ```
493
499
 
494
500
  The response includes ranked `candidates` with `score` and `reasons`, plus `skipped` definitions with reasons such as provider, workflow, capability, scope, or mode mismatch. Exact workflow/phase matches are reported as `workflow phase matched: sdd:<phase>`, and SDD planning or verification task semantics are reported as `phase semantics matched: sdd-planning` or `phase semantics matched: sdd-verification`. Empty adapter maps are treated as provider-neutral; explicit adapter maps must include the requested provider.
@@ -497,12 +503,14 @@ Resolution v1 uses only current registry metadata: capabilities, workflows/phase
497
503
 
498
504
  ## Agent seed loading
499
505
 
500
- Load the checked-in v1 seed when a local registry should contain the project manager and seed subagents:
506
+ Load the checked-in v1 seed from a source checkout when a local registry should contain the project manager and seed subagents:
501
507
 
502
508
  ```bash
503
- npm run cli -- agents seed load --file seeds/agents/agent-seed-v1.json
509
+ bun run cli:bun -- agents seed load --file seeds/agents/agent-seed-v1.json
504
510
  ```
505
511
 
512
+ This seed file is repo-only in v1.3.0 package contents. If installed-package workflows need it, first make an explicit package-contract change by adding it to `package.json.files` and the package evidence expectations.
513
+
506
514
  The command prints an `AgentSeedLoadSummary` JSON payload with `created`, `updated`, `agents`, `subagents`, and `warnings`. Re-running the same seed is safe: records are upserted by the current project, scope, and name, so existing seed records are updated in place instead of duplicated.
507
515
 
508
516
  The checked-in `vgxness-manager` and SDD subagents are self-contained: their seed instructions describe the MCP-first orchestration contract inline and do not require installing `~/.config/opencode/skills/sdd-*`. SDD skills can still be registered and attached as optional registry assets when a project wants extra reusable guidance.
@@ -512,8 +520,8 @@ Seed loading preserves user-created agents that are absent from the manifest. It
512
520
  After loading, you can inspect or preview the seed manager through normal registry commands:
513
521
 
514
522
  ```bash
515
- npm run cli -- agents get --project vgxness --name vgxness-manager
516
- npm run cli -- agents render --provider opencode --project vgxness --name vgxness-manager
523
+ bun run cli:bun -- agents get --project vgxness --name vgxness-manager
524
+ bun run cli:bun -- agents render --provider opencode --project vgxness --name vgxness-manager
517
525
  ```
518
526
 
519
527
  The render command returns preview artifacts only and keeps provider config untouched.
@@ -523,17 +531,17 @@ The render command returns preview artifacts only and keeps provider config unto
523
531
  Register an optional provider-agnostic skill, add an active version, attach it to a workflow phase, and record a simple run outcome. These examples are registry-managed enhancements, not requirements for the checked-in OpenCode manager/subagents:
524
532
 
525
533
  ```bash
526
- npm run cli -- skills register --project vgxness --name sdd-apply --description "Applies focused SDD slices"
527
- npm run cli -- skills add-version --project vgxness --name sdd-apply --version 1.0.0 --source-kind path --source-path .config/opencode/skills/sdd-apply/SKILL.md --activate
528
- npm run cli -- skills attach --project vgxness --name sdd-apply --target-type workflow-phase --target-key sdd:apply
529
- npm run cli -- skills record-usage --project vgxness --name sdd-apply --outcome helped --run-id <run-id> --target-type workflow-phase --target-key sdd:apply
534
+ bun run cli:bun -- skills register --project vgxness --name sdd-apply --description "Applies focused SDD slices"
535
+ bun run cli:bun -- skills add-version --project vgxness --name sdd-apply --version 1.0.0 --source-kind path --source-path .config/opencode/skills/sdd-apply/SKILL.md --activate
536
+ bun run cli:bun -- skills attach --project vgxness --name sdd-apply --target-type workflow-phase --target-key sdd:apply
537
+ bun run cli:bun -- skills record-usage --project vgxness --name sdd-apply --outcome helped --run-id <run-id> --target-type workflow-phase --target-key sdd:apply
530
538
  ```
531
539
 
532
540
  Resolve the skills that would be available to a runtime context:
533
541
 
534
542
  ```bash
535
- npm run cli -- skills resolve --agent apply-agent --project vgxness --workflow sdd --phase apply --provider opencode
536
- npm run cli -- skills resolve --agent apply-agent --project vgxness --phase apply --run <run-id> --record-usage selected
543
+ bun run cli:bun -- skills resolve --agent apply-agent --project vgxness --workflow sdd --phase apply --provider opencode
544
+ bun run cli:bun -- skills resolve --agent apply-agent --project vgxness --phase apply --run <run-id> --record-usage selected
537
545
  ```
538
546
 
539
547
  `skills resolve` is read-only by default. It combines matching skill attachments plus the agent definition `skills` field, returns active/current versions only, and includes source metadata plus inline `summary`/`content` when available. It records `selected` or `injected` usage only when both `--run` and `--record-usage` are explicit.
@@ -541,8 +549,8 @@ npm run cli -- skills resolve --agent apply-agent --project vgxness --phase appl
541
549
  Inspect skill registry and agent/subagent linkage status without mutating provider config:
542
550
 
543
551
  ```bash
544
- npm run cli -- skills status --project vgxness
545
- npm run cli -- skills status --project vgxness --scope project --provider opencode --mode agent --agent apply-agent
552
+ bun run cli:bun -- skills status --project vgxness
553
+ bun run cli:bun -- skills status --project vgxness --scope project --provider opencode --mode agent --agent apply-agent
546
554
  ```
547
555
 
548
556
  `skills status` prints deterministic JSON with `kind: "skills-status"` and `version: 1`. It includes project/scope/provider context, registry skill counts and current-version status, declared/resolved/missing skills for matching agents or subagents, resolver diagnostics, and safety markers. The command is read-only: it does not repair, install, or write provider configuration and does not record skill usage. A missing `--agent` match returns valid JSON with a warning diagnostic instead of crashing.
@@ -550,17 +558,17 @@ npm run cli -- skills status --project vgxness --scope project --provider openco
550
558
  Create and review a skill improvement proposal without activating it:
551
559
 
552
560
  ```bash
553
- npm run cli -- skills propose --project vgxness --name sdd-apply --proposed-version 1.1.0 --source-kind inline --inline-metadata '{"content":"Updated skill body"}' --rationale "Repeated correction from trace" --source-signal '{"kind":"trace-failure"}'
554
- npm run cli -- skills proposals --status draft
555
- npm run cli -- skills get-proposal --proposal <proposal-id>
561
+ bun run cli:bun -- skills propose --project vgxness --name sdd-apply --proposed-version 1.1.0 --source-kind inline --inline-metadata '{"content":"Updated skill body"}' --rationale "Repeated correction from trace" --source-signal '{"kind":"trace-failure"}'
562
+ bun run cli:bun -- skills proposals --status draft
563
+ bun run cli:bun -- skills get-proposal --proposal <proposal-id>
556
564
  ```
557
565
 
558
566
  Activation is gated. Submitting and approving a proposal still does **not** change the active skill; only explicit apply creates the new active/current skill version:
559
567
 
560
568
  ```bash
561
- npm run cli -- skills submit-proposal --proposal <proposal-id> --actor uziel --reason "Ready for review"
562
- npm run cli -- skills approve-proposal --proposal <proposal-id> --actor uziel --reason "Reviewed diff"
563
- npm run cli -- skills apply-proposal --proposal <proposal-id> --actor uziel --reason "Activate approved proposal"
569
+ bun run cli:bun -- skills submit-proposal --proposal <proposal-id> --actor uziel --reason "Ready for review"
570
+ bun run cli:bun -- skills approve-proposal --proposal <proposal-id> --actor uziel --reason "Reviewed diff"
571
+ bun run cli:bun -- skills apply-proposal --proposal <proposal-id> --actor uziel --reason "Activate approved proposal"
564
572
  ```
565
573
 
566
574
  Rejected or cancelled proposals cannot be applied. These commands store reviewable diffs and audit metadata in SQLite only; they do not rewrite external skill files or provider configs.
@@ -568,7 +576,7 @@ Rejected or cancelled proposals cannot be applied. These commands store reviewab
568
576
  Build an injection-ready payload without mutating provider config:
569
577
 
570
578
  ```bash
571
- npm run cli -- skills payload --agent apply-agent --project vgxness --workflow sdd --phase apply --provider opencode
579
+ bun run cli:bun -- skills payload --agent apply-agent --project vgxness --workflow sdd --phase apply --provider opencode
572
580
  ```
573
581
 
574
582
  `skills payload` resolves the same active skills and returns payload v1 JSON: skill identity/version, source kind, available content or an unavailable reason, attachment reasons, and ordering metadata. Inline `content` is included directly. Local `path` sources are loaded read-only only when they resolve inside the current workspace root. URL sources are never fetched in v1 and return `url_fetch_disabled`. The command does **not** write `.opencode/`, `.claude/`, provider prompts, or external skill files.
@@ -576,8 +584,8 @@ npm run cli -- skills payload --agent apply-agent --project vgxness --workflow s
576
584
  `skills get` returns the current version, all versions, attachments, and usage records:
577
585
 
578
586
  ```bash
579
- npm run cli -- skills get --project vgxness --name sdd-apply
580
- npm run cli -- skills list --project vgxness
587
+ bun run cli:bun -- skills get --project vgxness --name sdd-apply
588
+ bun run cli:bun -- skills list --project vgxness
581
589
  ```
582
590
 
583
591
  Skill registry/resolution v1 is descriptive and controlled. It stores source metadata, compatibility hints, attachments, usage outcomes, and reviewable improvement proposals. Payload v1 can load inline content and safe workspace-local path content. It does **not** fetch URLs, mutate provider config, rewrite external skill files, generate unapproved diffs, or activate autonomous updates.
@@ -585,9 +593,9 @@ Skill registry/resolution v1 is descriptive and controlled. It stores source met
585
593
  ## Subagent examples
586
594
 
587
595
  ```bash
588
- npm run cli -- subagents register --parent-agent-id <agent-id> --project vgxness --name review-subagent --description "Reviews focused slices" --instructions "Review the current slice."
589
- npm run cli -- subagents list --parent-agent-id <agent-id>
590
- npm run cli -- subagents get --project vgxness --name review-subagent
596
+ bun run cli:bun -- subagents register --parent-agent-id <agent-id> --project vgxness --name review-subagent --description "Reviews focused slices" --instructions "Review the current slice."
597
+ bun run cli:bun -- subagents list --parent-agent-id <agent-id>
598
+ bun run cli:bun -- subagents get --project vgxness --name review-subagent
591
599
  ```
592
600
 
593
601
  ## JSON definitions
@@ -610,8 +618,8 @@ Use `--file` when a definition has permissions, memory, workflows, skills, or ad
610
618
  ```
611
619
 
612
620
  ```bash
613
- npm run cli -- agents register --file ./agent.json
614
- npm run cli -- subagents register --file ./subagent.json
621
+ bun run cli:bun -- agents register --file ./agent.json
622
+ bun run cli:bun -- subagents register --file ./subagent.json
615
623
  ```
616
624
 
617
625
  For subagents, include `parentAgentId` in the JSON file.
@@ -621,8 +629,8 @@ For subagents, include `parentAgentId` in the JSON file.
621
629
  Render uses the provider-agnostic registry as input and returns generated content only:
622
630
 
623
631
  ```bash
624
- npm run cli -- agents render --provider json --id <agent-id>
625
- npm run cli -- agents render --provider opencode --id <agent-id>
632
+ bun run cli:bun -- agents render --provider json --id <agent-id>
633
+ bun run cli:bun -- agents render --provider opencode --id <agent-id>
626
634
  ```
627
635
 
628
636
  Example response shape:
@@ -665,7 +673,7 @@ The preview `opencode.json` includes `$schema` and an `agent` object. Top-level
665
673
  Use `opencode preview` when you want to inspect the full SDD context that could later be handed to an OpenCode integration:
666
674
 
667
675
  ```bash
668
- npm run cli -- opencode preview \
676
+ bun run cli:bun -- opencode preview \
669
677
  --provider opencode \
670
678
  --agent apply-agent \
671
679
  --project vgxness \
@@ -713,8 +721,8 @@ The boundary is intentionally strict: the preview composes the existing OpenCode
713
721
  ## Memory examples
714
722
 
715
723
  ```bash
716
- npm run cli -- memory save --project vgxness --type decision --title "CLI path" --content "Use local SQLite by default."
717
- npm run cli -- memory search --project vgxness --query SQLite
724
+ bun run cli:bun -- memory save --project vgxness --type decision --title "CLI path" --content "Use local SQLite by default."
725
+ bun run cli:bun -- memory search --project vgxness --query SQLite
718
726
  ```
719
727
 
720
728
  ## Run examples
@@ -722,16 +730,16 @@ npm run cli -- memory search --project vgxness --query SQLite
722
730
  Create an auditable local run record, add a checkpoint, inspect it, and finish it:
723
731
 
724
732
  ```bash
725
- npm run cli -- runs create --project vgxness --intent "Build runtime foundation" --workflow sdd --phase apply --agent-id apply-agent --provider-adapter opencode --model openai/gpt-5.5
726
- npm run cli -- runs permission-check --run-id <run-id> --category shell --operation npm-test
727
- npm run cli -- runs approvals --run <run-id>
728
- npm run cli -- runs approve --approval <approval-id> --actor uziel --reason "Approved for local verification"
729
- npm run cli -- runs checkpoint --run-id <run-id> --label after-plan --state '{"next":"tests"}'
730
- npm run cli -- runs get --id <run-id>
731
- npm run cli -- runs resume-inspect --id <run-id>
732
- npm run cli -- runs resume-gate --approval <approval-id>
733
- npm run cli -- runs list --project vgxness
734
- npm run cli -- runs finish --run-id <run-id> --status completed --outcome success
733
+ bun run cli:bun -- runs create --project vgxness --intent "Build runtime foundation" --workflow sdd --phase apply --agent-id apply-agent --provider-adapter opencode --model openai/gpt-5.5
734
+ bun run cli:bun -- runs permission-check --run-id <run-id> --category shell --operation npm-test
735
+ bun run cli:bun -- runs approvals --run <run-id>
736
+ bun run cli:bun -- runs approve --approval <approval-id> --actor uziel --reason "Approved for local verification"
737
+ bun run cli:bun -- runs checkpoint --run-id <run-id> --label after-plan --state '{"next":"tests"}'
738
+ bun run cli:bun -- runs get --id <run-id>
739
+ bun run cli:bun -- runs resume-inspect --id <run-id>
740
+ bun run cli:bun -- runs resume-gate --approval <approval-id>
741
+ bun run cli:bun -- runs list --project vgxness
742
+ bun run cli:bun -- runs finish --run-id <run-id> --status completed --outcome success
735
743
  ```
736
744
 
737
745
  Runs are runtime state, not long-term memory. Use event and checkpoint payloads to reference memory observation IDs or artifact IDs when needed; do not duplicate durable observations into run state.
@@ -741,9 +749,9 @@ Runs are runtime state, not long-term memory. Use event and checkpoint payloads
741
749
  Resolving an approval appends an `approval` audit event and updates the approval status:
742
750
 
743
751
  ```bash
744
- npm run cli -- runs approve --approval <approval-id> --actor uziel --reason "Looks safe"
745
- npm run cli -- runs reject --approval <approval-id> --actor uziel --reason "Too broad"
746
- npm run cli -- runs cancel-approval --approval <approval-id> --actor uziel --reason "No longer needed"
752
+ bun run cli:bun -- runs approve --approval <approval-id> --actor uziel --reason "Looks safe"
753
+ bun run cli:bun -- runs reject --approval <approval-id> --actor uziel --reason "Too broad"
754
+ bun run cli:bun -- runs cancel-approval --approval <approval-id> --actor uziel --reason "No longer needed"
747
755
  ```
748
756
 
749
757
  Approval resolution is persistence-only: approving records human consent but does **not** execute by itself. Resume-after-approval currently exists only in the runtime service through `RunService.resumeApprovedOperation({ approvalId, executor })`, and it requires an injected fake/test/sandbox executor supplied by code. Before that injected executor is called, the service writes a durable operation attempt reservation with an ordered attempt sequence. Storage supports multiple attempts per approval for future retries, but active `reserved` attempts still block another reservation. The default retry policy is `never`: repeated resume calls for the same approval fail before executor invocation after `reserved`, `succeeded`, `failed`, or `abandoned` attempts, even if the final runtime event was not recorded.
@@ -751,8 +759,8 @@ Approval resolution is persistence-only: approving records human consent but doe
751
759
  `runs retry-check` evaluates whether an approval is eligible for another attempt. It is read-only: it does **not** retry, reserve an attempt, invoke an executor, append events, or mutate retry state. Without `--policy`, it uses the safe default policy, `never`.
752
760
 
753
761
  ```bash
754
- npm run cli -- runs retry-check --approval <approval-id>
755
- npm run cli -- runs retry-check --approval <approval-id> --policy '{"mode":"after-failure","retryableStatuses":["failed"]}'
762
+ bun run cli:bun -- runs retry-check --approval <approval-id>
763
+ bun run cli:bun -- runs retry-check --approval <approval-id> --policy '{"mode":"after-failure","retryableStatuses":["failed"]}'
756
764
  ```
757
765
 
758
766
  Example blocked response:
@@ -780,7 +788,7 @@ Policy input is strict JSON. Current policy modes are `never`, `after-abandoned`
780
788
  Use `runs resume-inspect --id <run-id>` when an operator needs checkpoint and blocker context before deciding what to do manually:
781
789
 
782
790
  ```bash
783
- npm run cli -- runs resume-inspect --id <run-id>
791
+ bun run cli:bun -- runs resume-inspect --id <run-id>
784
792
  ```
785
793
 
786
794
  The JSON output includes the run identity and status, latest checkpoint or `null`, blockers, pending approvals, active and failed attempts, debug evidence references, conservative `manualNextCommands`, and safety flags:
@@ -807,17 +815,17 @@ This flow is inspection only. It does **not** execute provider work, run preflig
807
815
  Use `runs resume-gate --approval <approval-id>` after `resume-inspect` identifies a pending approval and you want one approval-scoped planner response:
808
816
 
809
817
  ```bash
810
- npm run cli -- runs resume-inspect --id <run-id>
811
- npm run cli -- runs resume-gate --approval <approval-id>
812
- npm run cli -- runs resume-gate --approval <approval-id> --policy '{"mode":"after-failure","retryableStatuses":["failed"]}'
818
+ bun run cli:bun -- runs resume-inspect --id <run-id>
819
+ bun run cli:bun -- runs resume-gate --approval <approval-id>
820
+ bun run cli:bun -- runs resume-gate --approval <approval-id> --policy '{"mode":"after-failure","retryableStatuses":["failed"]}'
813
821
  ```
814
822
 
815
823
  resume-gate is plan-only. It returns the `RunService.getRunResumeOrchestrationPlan` JSON with run and approval status, reconstructed pending operation context, retry-check guidance, blockers, manual next commands, and read-only safety flags. It does **not** run preflight, admit retry, invoke executors, execute operations, write provider config, create sandboxes, create worktrees, or append audit mutation records.
816
824
 
817
825
  Manual next-step examples:
818
826
 
819
- - `npm run cli -- runs approve --approval <approval-id> --actor <name> --reason "Reviewed"` when the approval is still pending.
820
- - `npm run cli -- runs retry-check --approval <approval-id>` to inspect retry eligibility separately.
827
+ - `bun run cli:bun -- runs approve --approval <approval-id> --actor <name> --reason "Reviewed"` when the approval is still pending.
828
+ - `bun run cli:bun -- runs retry-check --approval <approval-id>` to inspect retry eligibility separately.
821
829
  - Inspect the returned operation and continue manually outside the CLI if policy and human review allow it.
822
830
 
823
831
  There is still no executable `runs resume` CLI surface. The gate only explains the next safe manual step.
@@ -833,9 +841,9 @@ The runtime service has an enforcement gate for operation attempts, but there is
833
841
  Preview the current core policy without executing the operation:
834
842
 
835
843
  ```bash
836
- npm run cli -- permissions check --category read --operation read-file --path src/index.ts
837
- npm run cli -- permissions check --category edit --operation write-file --path ../outside.txt
838
- npm run cli -- permissions check --category provider-tool --operation call-tool --provider-tool vendor.tool
844
+ bun run cli:bun -- permissions check --category read --operation read-file --path src/index.ts
845
+ bun run cli:bun -- permissions check --category edit --operation write-file --path ../outside.txt
846
+ bun run cli:bun -- permissions check --category provider-tool --operation call-tool --provider-tool vendor.tool
839
847
  ```
840
848
 
841
849
  The response is a decision object with `decision`, `reason`, and `message`. This is a policy decision service only; use `runs permission-check` when you also want an auditable run event and approval record for `ask`. Real provider/tool execution, CLI resume wiring, and isolated sandbox execution remain follow-up work.
@@ -855,12 +863,12 @@ Selection precedence is `--db <path>` (selected source: `flag`) > `VGXNESS_DB_PA
855
863
  Override the path when you need an isolated store:
856
864
 
857
865
  ```bash
858
- npm run cli -- agents list --db /tmp/vgxness.sqlite
859
- VGXNESS_DB_PATH=/tmp/vgxness.sqlite npm run cli -- memory search --project vgxness
866
+ bun run cli:bun -- agents list --db /tmp/vgxness.sqlite
867
+ VGXNESS_DB_PATH=/tmp/vgxness.sqlite bun run cli:bun -- memory search --project vgxness
860
868
  ```
861
869
 
862
870
  Existing project-local stores remain compatible; opt in explicitly when needed:
863
871
 
864
872
  ```bash
865
- npm run cli -- memory search --project vgxness --db .vgx/memory.sqlite
873
+ bun run cli:bun -- memory search --project vgxness --db .vgx/memory.sqlite
866
874
  ```