vgxness 1.3.0 → 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.
- package/README.md +16 -16
- package/dist/cli/commands/interactive-entrypoint-dispatcher.js +4 -4
- package/dist/cli/commands/setup-dispatcher.js +4 -4
- package/dist/cli/doctor-renderer.js +1 -1
- package/dist/cli/sdd-renderer.js +7 -7
- package/dist/cli/setup-status-renderer.js +1 -0
- package/dist/cli/tui/main-menu/main-menu-read-model.js +8 -0
- package/dist/cli/tui/main-menu/main-menu-render-shape.js +14 -1
- package/dist/cli/tui/opentui/code/index.js +4 -4
- package/dist/cli/tui/opentui/main-menu/screen.js +6 -0
- package/dist/cli/tui/opentui/setup/screen.js +1 -1
- package/dist/cli/tui/opentui/setup/smoke.js +1 -1
- package/dist/cli/tui/setup/setup-tui-read-model.js +3 -3
- package/dist/cli/tui/setup/setup-tui-render-shape.js +8 -9
- package/dist/cli/tui/setup/setup-tui-state.js +1 -1
- package/dist/code/runtime/sdd-context.js +2 -2
- package/dist/mcp/validation.js +6 -2
- package/dist/orchestrator/natural-language-planner.js +1 -1
- package/dist/sdd/sdd-workflow-service.js +1 -1
- package/dist/setup/backup-rollback-service.js +2 -2
- package/dist/setup/setup-lifecycle-service.js +6 -6
- package/dist/setup/setup-plan.js +3 -3
- package/dist/verification/verification-plan-service.js +1 -1
- package/docs/architecture.md +39 -38
- package/docs/cli.md +134 -127
- package/docs/funcionamiento-del-sistema.md +16 -16
- package/docs/harness-gap-analysis.md +15 -1
- package/docs/prd.md +10 -10
- package/docs/vgxcode.md +20 -9
- package/docs/vgxness-code.md +6 -4
- package/package.json +1 -1
- package/dist/cli/guided-main-menu.js +0 -470
- package/dist/cli/setup-wizard-read-model.js +0 -72
- package/dist/cli/setup-wizard-renderer.js +0 -155
- package/dist/cli/setup-wizard-state.js +0 -82
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 --
|
|
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,
|
|
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
|
-
`
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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 `
|
|
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
|
-
`
|
|
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,20 +186,24 @@ 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
|
-
##
|
|
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
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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.
|
|
@@ -207,10 +212,10 @@ npm run cli -- sdd status --project vgxness --change my-change
|
|
|
207
212
|
|
|
208
213
|
## OpenTUI main menu
|
|
209
214
|
|
|
210
|
-
Use no arguments in a TTY to open the main menu:
|
|
215
|
+
Use no arguments in a TTY to open the main menu from a checkout:
|
|
211
216
|
|
|
212
217
|
```bash
|
|
213
|
-
|
|
218
|
+
bun run cli:bun --
|
|
214
219
|
```
|
|
215
220
|
|
|
216
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.
|
|
@@ -220,8 +225,8 @@ The top-level menu is: **Installation, Doctor / recovery, SDD / workflow guidanc
|
|
|
220
225
|
For scriptable status, use explicit read-only commands:
|
|
221
226
|
|
|
222
227
|
```bash
|
|
223
|
-
|
|
224
|
-
|
|
228
|
+
bun run cli:bun -- setup status --project vgxness
|
|
229
|
+
bun run cli:bun -- sdd status --project vgxness --change my-change
|
|
225
230
|
```
|
|
226
231
|
|
|
227
232
|
Provider support shown in the Installation surface is:
|
|
@@ -238,7 +243,7 @@ Setup and main-menu TUI surfaces do **not** silently write OpenCode or other pro
|
|
|
238
243
|
Use `orchestrator preview` when you want `vgxness` to classify a request before deciding whether to answer directly, plan manually, diagnose, or enter SDD:
|
|
239
244
|
|
|
240
245
|
```bash
|
|
241
|
-
|
|
246
|
+
bun run cli:bun -- orchestrator preview \
|
|
242
247
|
--project vgxness \
|
|
243
248
|
--intent "Build a new persistent checkout workflow" \
|
|
244
249
|
--change checkout-workflow \
|
|
@@ -263,9 +268,9 @@ Use workflow commands when you want an explicit operator-controlled path from in
|
|
|
263
268
|
Each workflow has three modes:
|
|
264
269
|
|
|
265
270
|
```bash
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
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]
|
|
269
274
|
```
|
|
270
275
|
|
|
271
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.
|
|
@@ -278,25 +283,25 @@ Examples:
|
|
|
278
283
|
|
|
279
284
|
```bash
|
|
280
285
|
# Preview a small docs/help fix.
|
|
281
|
-
|
|
286
|
+
bun run cli:bun -- quickfix preview \
|
|
282
287
|
--project vgxness \
|
|
283
288
|
--intent "Fix the CLI help copy for workflow execute"
|
|
284
289
|
|
|
285
290
|
# Record a debug workflow run, then inspect the run id in the JSON output.
|
|
286
|
-
|
|
291
|
+
bun run cli:bun -- debug run \
|
|
287
292
|
--project vgxness \
|
|
288
293
|
--intent "Investigate why workflow execute is blocked" \
|
|
289
294
|
--db /tmp/vgxness-debug.sqlite
|
|
290
295
|
|
|
291
296
|
# Record formal SDD work at a canonical phase.
|
|
292
|
-
|
|
297
|
+
bun run cli:bun -- sdd run \
|
|
293
298
|
--project vgxness \
|
|
294
299
|
--intent "Implement the workflow CLI documentation" \
|
|
295
300
|
--phase apply-progress \
|
|
296
301
|
--db /tmp/vgxness-sdd.sqlite
|
|
297
302
|
|
|
298
303
|
# Execute a previously recorded run with the default non-dispatching gate.
|
|
299
|
-
|
|
304
|
+
bun run cli:bun -- quickfix execute \
|
|
300
305
|
--run-id <run-id> \
|
|
301
306
|
--confirm \
|
|
302
307
|
--db /tmp/vgxness-debug.sqlite
|
|
@@ -312,7 +317,7 @@ Use `--executor command` only for the built-in bounded-process checks. It never
|
|
|
312
317
|
| `node-version` | `node --version` | 5s | 8 KiB | Harmless local runtime smoke check. |
|
|
313
318
|
|
|
314
319
|
```bash
|
|
315
|
-
|
|
320
|
+
bun run cli:bun -- quickfix execute \
|
|
316
321
|
--run-id <run-id> \
|
|
317
322
|
--confirm \
|
|
318
323
|
--executor command \
|
|
@@ -329,9 +334,9 @@ Command execution is bounded to the workspace: `--command-cwd` must resolve insi
|
|
|
329
334
|
Use approval commands to resolve per-operation human approval requests without loosening global permissions:
|
|
330
335
|
|
|
331
336
|
```bash
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
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>]
|
|
335
340
|
```
|
|
336
341
|
|
|
337
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.
|
|
@@ -340,13 +345,13 @@ Command executor approval flow:
|
|
|
340
345
|
|
|
341
346
|
```bash
|
|
342
347
|
# 1. Record the workflow run and keep the returned run id.
|
|
343
|
-
|
|
348
|
+
bun run cli:bun -- quickfix run \
|
|
344
349
|
--project vgxness \
|
|
345
350
|
--intent "Check the local Node runtime" \
|
|
346
351
|
--db /tmp/vgxness-workflow.sqlite
|
|
347
352
|
|
|
348
353
|
# 2. Request an allowlisted command dispatch. With shell ask, this stops at approval.
|
|
349
|
-
|
|
354
|
+
bun run cli:bun -- quickfix execute \
|
|
350
355
|
--run-id <run-id> \
|
|
351
356
|
--confirm \
|
|
352
357
|
--executor command \
|
|
@@ -354,17 +359,17 @@ npm run cli -- quickfix execute \
|
|
|
354
359
|
--db /tmp/vgxness-workflow.sqlite
|
|
355
360
|
|
|
356
361
|
# 3. Inspect the pending approval for that run.
|
|
357
|
-
|
|
362
|
+
bun run cli:bun -- approvals list \
|
|
358
363
|
--run-id <run-id> \
|
|
359
364
|
--db /tmp/vgxness-workflow.sqlite
|
|
360
365
|
|
|
361
366
|
# 4. Approve the exact recorded operation.
|
|
362
|
-
|
|
367
|
+
bun run cli:bun -- approvals approve \
|
|
363
368
|
--id <approval-id> \
|
|
364
369
|
--db /tmp/vgxness-workflow.sqlite
|
|
365
370
|
|
|
366
371
|
# 5. Re-run the same execute command; the command now dispatches.
|
|
367
|
-
|
|
372
|
+
bun run cli:bun -- quickfix execute \
|
|
368
373
|
--run-id <run-id> \
|
|
369
374
|
--confirm \
|
|
370
375
|
--executor command \
|
|
@@ -379,7 +384,7 @@ Approval reuse is intentionally narrow. A resolved approval must match the run i
|
|
|
379
384
|
To deny an operation, reject the approval instead of approving it:
|
|
380
385
|
|
|
381
386
|
```bash
|
|
382
|
-
|
|
387
|
+
bun run cli:bun -- approvals reject \
|
|
383
388
|
--id <approval-id> \
|
|
384
389
|
--reason "not appropriate for this run" \
|
|
385
390
|
--db /tmp/vgxness-workflow.sqlite
|
|
@@ -396,21 +401,21 @@ A rejected approval is recorded in the run audit trail and prevents the matching
|
|
|
396
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.
|
|
397
402
|
|
|
398
403
|
```bash
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
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
|
|
402
407
|
```
|
|
403
408
|
|
|
404
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`.
|
|
405
410
|
|
|
406
|
-
The top-level `
|
|
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.
|
|
407
412
|
|
|
408
413
|
## OpenCode MCP visibility
|
|
409
414
|
|
|
410
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:
|
|
411
416
|
|
|
412
417
|
```bash
|
|
413
|
-
|
|
418
|
+
bun run cli:bun -- mcp doctor opencode
|
|
414
419
|
opencode mcp list
|
|
415
420
|
```
|
|
416
421
|
|
|
@@ -425,11 +430,11 @@ From a parent directory or another path outside the worktree, the project-local
|
|
|
425
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:
|
|
426
431
|
|
|
427
432
|
```bash
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
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>
|
|
433
438
|
```
|
|
434
439
|
|
|
435
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.
|
|
@@ -451,12 +456,12 @@ Rollback is file-based:
|
|
|
451
456
|
|
|
452
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).
|
|
453
458
|
- If install modified an existing config, restore the reported backup over `targetPath`.
|
|
454
|
-
- Run `
|
|
459
|
+
- Run `bun run cli:bun -- mcp doctor --db <path> --project vgxness --change manual-smoke` again after rollback.
|
|
455
460
|
|
|
456
461
|
Manual OpenCode verification checklist:
|
|
457
462
|
|
|
458
463
|
1. Run doctor before install and note any failed checks.
|
|
459
|
-
2. Run `
|
|
464
|
+
2. Run `bun run cli:bun -- mcp install opencode --yes --db <path>`.
|
|
460
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`.
|
|
461
466
|
4. Restart OpenCode so it reloads config.
|
|
462
467
|
5. In OpenCode, confirm the `vgxness` MCP tools are available.
|
|
@@ -467,14 +472,14 @@ Manual OpenCode verification checklist:
|
|
|
467
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.
|
|
468
473
|
|
|
469
474
|
```bash
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
VGXNESS_DB_PATH=/tmp/vgxness-memory.sqlite
|
|
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
|
|
478
483
|
```
|
|
479
484
|
|
|
480
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.
|
|
@@ -488,8 +493,8 @@ The SDD CLI is status/persistence only. It does **not** execute providers, conti
|
|
|
488
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.
|
|
489
494
|
|
|
490
495
|
```bash
|
|
491
|
-
|
|
492
|
-
|
|
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
|
|
493
498
|
```
|
|
494
499
|
|
|
495
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.
|
|
@@ -498,12 +503,14 @@ Resolution v1 uses only current registry metadata: capabilities, workflows/phase
|
|
|
498
503
|
|
|
499
504
|
## Agent seed loading
|
|
500
505
|
|
|
501
|
-
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:
|
|
502
507
|
|
|
503
508
|
```bash
|
|
504
|
-
|
|
509
|
+
bun run cli:bun -- agents seed load --file seeds/agents/agent-seed-v1.json
|
|
505
510
|
```
|
|
506
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
|
+
|
|
507
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.
|
|
508
515
|
|
|
509
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.
|
|
@@ -513,8 +520,8 @@ Seed loading preserves user-created agents that are absent from the manifest. It
|
|
|
513
520
|
After loading, you can inspect or preview the seed manager through normal registry commands:
|
|
514
521
|
|
|
515
522
|
```bash
|
|
516
|
-
|
|
517
|
-
|
|
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
|
|
518
525
|
```
|
|
519
526
|
|
|
520
527
|
The render command returns preview artifacts only and keeps provider config untouched.
|
|
@@ -524,17 +531,17 @@ The render command returns preview artifacts only and keeps provider config unto
|
|
|
524
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:
|
|
525
532
|
|
|
526
533
|
```bash
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
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
|
|
531
538
|
```
|
|
532
539
|
|
|
533
540
|
Resolve the skills that would be available to a runtime context:
|
|
534
541
|
|
|
535
542
|
```bash
|
|
536
|
-
|
|
537
|
-
|
|
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
|
|
538
545
|
```
|
|
539
546
|
|
|
540
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.
|
|
@@ -542,8 +549,8 @@ npm run cli -- skills resolve --agent apply-agent --project vgxness --phase appl
|
|
|
542
549
|
Inspect skill registry and agent/subagent linkage status without mutating provider config:
|
|
543
550
|
|
|
544
551
|
```bash
|
|
545
|
-
|
|
546
|
-
|
|
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
|
|
547
554
|
```
|
|
548
555
|
|
|
549
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.
|
|
@@ -551,17 +558,17 @@ npm run cli -- skills status --project vgxness --scope project --provider openco
|
|
|
551
558
|
Create and review a skill improvement proposal without activating it:
|
|
552
559
|
|
|
553
560
|
```bash
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
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>
|
|
557
564
|
```
|
|
558
565
|
|
|
559
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:
|
|
560
567
|
|
|
561
568
|
```bash
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
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"
|
|
565
572
|
```
|
|
566
573
|
|
|
567
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.
|
|
@@ -569,7 +576,7 @@ Rejected or cancelled proposals cannot be applied. These commands store reviewab
|
|
|
569
576
|
Build an injection-ready payload without mutating provider config:
|
|
570
577
|
|
|
571
578
|
```bash
|
|
572
|
-
|
|
579
|
+
bun run cli:bun -- skills payload --agent apply-agent --project vgxness --workflow sdd --phase apply --provider opencode
|
|
573
580
|
```
|
|
574
581
|
|
|
575
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.
|
|
@@ -577,8 +584,8 @@ npm run cli -- skills payload --agent apply-agent --project vgxness --workflow s
|
|
|
577
584
|
`skills get` returns the current version, all versions, attachments, and usage records:
|
|
578
585
|
|
|
579
586
|
```bash
|
|
580
|
-
|
|
581
|
-
|
|
587
|
+
bun run cli:bun -- skills get --project vgxness --name sdd-apply
|
|
588
|
+
bun run cli:bun -- skills list --project vgxness
|
|
582
589
|
```
|
|
583
590
|
|
|
584
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.
|
|
@@ -586,9 +593,9 @@ Skill registry/resolution v1 is descriptive and controlled. It stores source met
|
|
|
586
593
|
## Subagent examples
|
|
587
594
|
|
|
588
595
|
```bash
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
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
|
|
592
599
|
```
|
|
593
600
|
|
|
594
601
|
## JSON definitions
|
|
@@ -611,8 +618,8 @@ Use `--file` when a definition has permissions, memory, workflows, skills, or ad
|
|
|
611
618
|
```
|
|
612
619
|
|
|
613
620
|
```bash
|
|
614
|
-
|
|
615
|
-
|
|
621
|
+
bun run cli:bun -- agents register --file ./agent.json
|
|
622
|
+
bun run cli:bun -- subagents register --file ./subagent.json
|
|
616
623
|
```
|
|
617
624
|
|
|
618
625
|
For subagents, include `parentAgentId` in the JSON file.
|
|
@@ -622,8 +629,8 @@ For subagents, include `parentAgentId` in the JSON file.
|
|
|
622
629
|
Render uses the provider-agnostic registry as input and returns generated content only:
|
|
623
630
|
|
|
624
631
|
```bash
|
|
625
|
-
|
|
626
|
-
|
|
632
|
+
bun run cli:bun -- agents render --provider json --id <agent-id>
|
|
633
|
+
bun run cli:bun -- agents render --provider opencode --id <agent-id>
|
|
627
634
|
```
|
|
628
635
|
|
|
629
636
|
Example response shape:
|
|
@@ -666,7 +673,7 @@ The preview `opencode.json` includes `$schema` and an `agent` object. Top-level
|
|
|
666
673
|
Use `opencode preview` when you want to inspect the full SDD context that could later be handed to an OpenCode integration:
|
|
667
674
|
|
|
668
675
|
```bash
|
|
669
|
-
|
|
676
|
+
bun run cli:bun -- opencode preview \
|
|
670
677
|
--provider opencode \
|
|
671
678
|
--agent apply-agent \
|
|
672
679
|
--project vgxness \
|
|
@@ -714,8 +721,8 @@ The boundary is intentionally strict: the preview composes the existing OpenCode
|
|
|
714
721
|
## Memory examples
|
|
715
722
|
|
|
716
723
|
```bash
|
|
717
|
-
|
|
718
|
-
|
|
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
|
|
719
726
|
```
|
|
720
727
|
|
|
721
728
|
## Run examples
|
|
@@ -723,16 +730,16 @@ npm run cli -- memory search --project vgxness --query SQLite
|
|
|
723
730
|
Create an auditable local run record, add a checkpoint, inspect it, and finish it:
|
|
724
731
|
|
|
725
732
|
```bash
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
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
|
|
736
743
|
```
|
|
737
744
|
|
|
738
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.
|
|
@@ -742,9 +749,9 @@ Runs are runtime state, not long-term memory. Use event and checkpoint payloads
|
|
|
742
749
|
Resolving an approval appends an `approval` audit event and updates the approval status:
|
|
743
750
|
|
|
744
751
|
```bash
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
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"
|
|
748
755
|
```
|
|
749
756
|
|
|
750
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.
|
|
@@ -752,8 +759,8 @@ Approval resolution is persistence-only: approving records human consent but doe
|
|
|
752
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`.
|
|
753
760
|
|
|
754
761
|
```bash
|
|
755
|
-
|
|
756
|
-
|
|
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"]}'
|
|
757
764
|
```
|
|
758
765
|
|
|
759
766
|
Example blocked response:
|
|
@@ -781,7 +788,7 @@ Policy input is strict JSON. Current policy modes are `never`, `after-abandoned`
|
|
|
781
788
|
Use `runs resume-inspect --id <run-id>` when an operator needs checkpoint and blocker context before deciding what to do manually:
|
|
782
789
|
|
|
783
790
|
```bash
|
|
784
|
-
|
|
791
|
+
bun run cli:bun -- runs resume-inspect --id <run-id>
|
|
785
792
|
```
|
|
786
793
|
|
|
787
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:
|
|
@@ -808,17 +815,17 @@ This flow is inspection only. It does **not** execute provider work, run preflig
|
|
|
808
815
|
Use `runs resume-gate --approval <approval-id>` after `resume-inspect` identifies a pending approval and you want one approval-scoped planner response:
|
|
809
816
|
|
|
810
817
|
```bash
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
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"]}'
|
|
814
821
|
```
|
|
815
822
|
|
|
816
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.
|
|
817
824
|
|
|
818
825
|
Manual next-step examples:
|
|
819
826
|
|
|
820
|
-
- `
|
|
821
|
-
- `
|
|
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.
|
|
822
829
|
- Inspect the returned operation and continue manually outside the CLI if policy and human review allow it.
|
|
823
830
|
|
|
824
831
|
There is still no executable `runs resume` CLI surface. The gate only explains the next safe manual step.
|
|
@@ -834,9 +841,9 @@ The runtime service has an enforcement gate for operation attempts, but there is
|
|
|
834
841
|
Preview the current core policy without executing the operation:
|
|
835
842
|
|
|
836
843
|
```bash
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
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
|
|
840
847
|
```
|
|
841
848
|
|
|
842
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.
|
|
@@ -856,12 +863,12 @@ Selection precedence is `--db <path>` (selected source: `flag`) > `VGXNESS_DB_PA
|
|
|
856
863
|
Override the path when you need an isolated store:
|
|
857
864
|
|
|
858
865
|
```bash
|
|
859
|
-
|
|
860
|
-
VGXNESS_DB_PATH=/tmp/vgxness.sqlite
|
|
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
|
|
861
868
|
```
|
|
862
869
|
|
|
863
870
|
Existing project-local stores remain compatible; opt in explicitly when needed:
|
|
864
871
|
|
|
865
872
|
```bash
|
|
866
|
-
|
|
873
|
+
bun run cli:bun -- memory search --project vgxness --db .vgx/memory.sqlite
|
|
867
874
|
```
|