vgxness 1.20.4 → 1.20.6

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 (375) hide show
  1. package/dist/adapters/claude/agent-renderer.js +82 -0
  2. package/dist/{mcp → adapters/claude/install}/claude-code-agent-config.js +64 -9
  3. package/dist/{mcp → adapters/claude/install}/claude-code-config.js +28 -6
  4. package/dist/{mcp → adapters/claude/install}/claude-code-project-memory.js +35 -5
  5. package/dist/{mcp → adapters/claude/install}/claude-code-scope.js +12 -3
  6. package/dist/{mcp → adapters/claude/install}/claude-code-user-config.js +26 -5
  7. package/dist/{mcp → adapters/claude/install}/claude-code-user-memory.js +47 -7
  8. package/dist/{mcp → adapters/claude/install}/client-install-claude-code-contract.js +45 -8
  9. package/dist/{mcp → adapters/claude/install}/client-install-claude-code.js +98 -14
  10. package/dist/adapters/json/agent-renderer.js +104 -0
  11. package/dist/adapters/opencode/agent-renderer.js +113 -0
  12. package/dist/{mcp → adapters/opencode/install}/client-install-opencode-contract.js +2 -2
  13. package/dist/{mcp → adapters/opencode/install}/client-install-opencode.js +1 -1
  14. package/dist/{mcp → adapters/opencode/install}/opencode-default-agent-config.js +2 -2
  15. package/dist/{mcp → adapters/opencode/install}/opencode-handoff-preview.js +60 -7
  16. package/dist/{mcp → adapters/opencode/install}/opencode-visibility.js +1 -1
  17. package/dist/adapters/provider-renderer.js +6 -0
  18. package/dist/agents/agent-activation-service.js +1 -263
  19. package/dist/agents/agent-lookup-contexts.js +1 -28
  20. package/dist/agents/agent-registry-service.js +1 -81
  21. package/dist/agents/agent-resolver.js +1 -287
  22. package/dist/agents/agent-seed-service.js +1 -157
  23. package/dist/agents/agent-seed-upgrade-service.js +1 -231
  24. package/dist/agents/agent-selector-resolver.js +1 -28
  25. package/dist/agents/boot-upgrade.js +1 -59
  26. package/dist/agents/canonical-agent-manifest.js +1 -245
  27. package/dist/agents/canonical-agent-projection.js +1 -236
  28. package/dist/agents/manager-profile-overlay-service.js +1 -60
  29. package/dist/agents/profile-model-routing.js +1 -30
  30. package/dist/agents/renderers/claude-renderer.js +1 -82
  31. package/dist/agents/renderers/index.js +1 -14
  32. package/dist/agents/renderers/json-renderer.js +1 -104
  33. package/dist/agents/renderers/opencode-renderer.js +1 -113
  34. package/dist/agents/renderers/provider-adapter.js +1 -6
  35. package/dist/agents/repositories/agent-seed-history.js +1 -128
  36. package/dist/agents/repositories/agents.js +1 -200
  37. package/dist/agents/repositories/manager-profile-overlays.js +1 -90
  38. package/dist/agents/schema.js +1 -1
  39. package/dist/application/agents/agent-activation-service.js +261 -0
  40. package/dist/application/agents/agent-lookup-contexts.js +28 -0
  41. package/dist/application/agents/agent-registry-service.js +81 -0
  42. package/dist/application/agents/agent-resolver.js +287 -0
  43. package/dist/application/agents/agent-seed-service.js +157 -0
  44. package/dist/application/agents/agent-seed-upgrade-service.js +231 -0
  45. package/dist/application/agents/agent-selector-resolver.js +28 -0
  46. package/dist/application/agents/boot-upgrade.js +59 -0
  47. package/dist/application/agents/canonical-agent-projection.js +236 -0
  48. package/dist/application/agents/manager-profile-overlay-service.js +68 -0
  49. package/dist/application/agents/profile-model-routing.js +30 -0
  50. package/dist/application/agents/renderers/claude-renderer.js +1 -0
  51. package/dist/application/agents/renderers/index.js +14 -0
  52. package/dist/application/agents/renderers/json-renderer.js +1 -0
  53. package/dist/application/agents/renderers/opencode-renderer.js +1 -0
  54. package/dist/application/agents/renderers/provider-adapter.js +1 -0
  55. package/dist/application/memory/active-work-preview.js +75 -0
  56. package/dist/application/memory/agent-memory-capture-service.js +498 -0
  57. package/dist/application/memory/import/dry-run-planner.js +58 -0
  58. package/dist/application/memory/import/index.js +3 -0
  59. package/dist/application/memory/import/observation-writer.js +226 -0
  60. package/dist/application/memory/import/package.js +179 -0
  61. package/dist/application/memory/memory-service.js +202 -0
  62. package/dist/application/memory/search.js +11 -0
  63. package/dist/{mcp → application/provider-setup}/provider-change-plan.js +74 -13
  64. package/dist/{mcp → application/provider-setup}/provider-doctor.js +201 -31
  65. package/dist/{mcp → application/provider-setup}/provider-health-types.js +1 -1
  66. package/dist/{mcp → application/provider-setup}/provider-status.js +170 -33
  67. package/dist/application/runs/execution-planning.js +180 -0
  68. package/dist/application/runs/operation-execution.js +1 -0
  69. package/dist/application/runs/operation-retry.js +129 -0
  70. package/dist/application/runs/resume-after-approval-result.js +88 -0
  71. package/dist/application/runs/run-insights.js +270 -0
  72. package/dist/application/runs/run-service.js +1480 -0
  73. package/dist/application/runs/run-snapshot-export-service.js +31 -0
  74. package/dist/application/runs/sandbox-process-execution.js +244 -0
  75. package/dist/application/runs/sandbox-worktree-planning.js +59 -0
  76. package/dist/application/runs/task-scoped-command-grant-service.js +224 -0
  77. package/dist/application/sdd/artifact-portability-service.js +137 -0
  78. package/dist/application/sdd/cockpit-read-model.js +195 -0
  79. package/dist/application/sdd/sdd-continuation-plan.js +265 -0
  80. package/dist/application/sdd/sdd-workflow-service.js +892 -0
  81. package/dist/application/skills/boot-seed.js +42 -0
  82. package/dist/application/skills/personal-skills.js +41 -0
  83. package/dist/application/skills/skill-export-service.js +34 -0
  84. package/dist/application/skills/skill-index-service.js +126 -0
  85. package/dist/application/skills/skill-payload.js +186 -0
  86. package/dist/application/skills/skill-registry-service.js +648 -0
  87. package/dist/application/skills/skill-resolver.js +368 -0
  88. package/dist/application/skills/skill-seed-service.js +242 -0
  89. package/dist/application/skills/skill-status-service.js +147 -0
  90. package/dist/cli/bun-bin.js +0 -0
  91. package/dist/cli/cli-flags.js +1 -387
  92. package/dist/cli/cli-help.js +1 -173
  93. package/dist/cli/cli-helpers.js +1 -77
  94. package/dist/cli/cli-types.js +1 -1
  95. package/dist/cli/commands/agent-skill-dispatcher.js +1 -700
  96. package/dist/cli/commands/index.js +1 -9
  97. package/dist/cli/commands/interactive-entrypoint-dispatcher.js +1 -14
  98. package/dist/cli/commands/mcp-dispatcher.js +1 -232
  99. package/dist/cli/commands/memory-sdd-dispatcher.js +1 -367
  100. package/dist/cli/commands/run-permission-dispatcher.js +1 -455
  101. package/dist/cli/commands/setup-dispatcher.js +1 -496
  102. package/dist/cli/commands/status-dispatcher.js +1 -130
  103. package/dist/cli/commands/verification-dispatcher.js +1 -47
  104. package/dist/cli/commands/workflow-dispatcher.js +1 -566
  105. package/dist/cli/dispatcher.js +1 -247
  106. package/dist/cli/doctor-renderer.js +1 -26
  107. package/dist/cli/home-tui-app.js +1 -411
  108. package/dist/cli/home-tui-controller.js +1 -314
  109. package/dist/cli/mcp-start-path.js +1 -21
  110. package/dist/cli/product-resume-renderer.js +1 -32
  111. package/dist/cli/product-status-renderer.js +1 -81
  112. package/dist/cli/sdd-renderer.js +1 -247
  113. package/dist/cli/setup-plan-renderer.js +1 -79
  114. package/dist/cli/setup-status-renderer.js +1 -50
  115. package/dist/cli/setup-tui-app.js +1 -130
  116. package/dist/cli/setup-tui-controller.js +1 -89
  117. package/dist/cli/tui/focus-reducer.js +1 -0
  118. package/dist/cli/tui/focus-types.js +1 -0
  119. package/dist/cli/tui/ink/app-shell.js +1 -0
  120. package/dist/cli/tui/ink/components.js +1 -38
  121. package/dist/cli/tui/ink/help-overlay.js +1 -0
  122. package/dist/cli/tui/ink/state-components.js +1 -0
  123. package/dist/cli/tui/ink/theme.js +1 -36
  124. package/dist/cli/tui/key-intents.js +1 -0
  125. package/dist/cli/tui/keymap.js +1 -20
  126. package/dist/cli/tui/navigation.js +1 -10
  127. package/dist/cli/tui/screen-registry.js +1 -0
  128. package/dist/cli/tui/terminal-capabilities.js +1 -12
  129. package/dist/cli/tui/tui-types.js +1 -1
  130. package/dist/cli/tui/visual/badges.js +1 -19
  131. package/dist/cli/tui/visual/footer.js +1 -27
  132. package/dist/cli/tui/visual/index.js +1 -3
  133. package/dist/cli/tui/visual/viewport.js +1 -11
  134. package/dist/cli/tui-render-helpers.js +1 -200
  135. package/dist/cli/verification-plan-renderer.js +1 -25
  136. package/dist/cli/verification-report-renderer.js +1 -19
  137. package/dist/domain/agents/canonical-agent-manifest.js +355 -0
  138. package/dist/domain/agents/schema.js +1 -0
  139. package/dist/domain/memory/active-work-topics.js +64 -0
  140. package/dist/domain/memory/memory-capture-schema.js +1 -0
  141. package/dist/domain/memory/schema.js +1 -0
  142. package/dist/domain/runs/schema.js +5 -0
  143. package/dist/domain/sdd/cockpit-types.js +1 -0
  144. package/dist/domain/sdd/schema.js +111 -0
  145. package/dist/domain/skills/schema.js +1 -0
  146. package/dist/governance/risk-classifier.js +2 -0
  147. package/dist/interfaces/cli/bun-bin.js +46 -0
  148. package/dist/interfaces/cli/cli-flags.js +391 -0
  149. package/dist/interfaces/cli/cli-help.js +173 -0
  150. package/dist/interfaces/cli/cli-helpers.js +77 -0
  151. package/dist/interfaces/cli/cli-types.js +1 -0
  152. package/dist/interfaces/cli/commands/agent-skill-dispatcher.js +700 -0
  153. package/dist/interfaces/cli/commands/index.js +9 -0
  154. package/dist/interfaces/cli/commands/interactive-entrypoint-dispatcher.js +14 -0
  155. package/dist/interfaces/cli/commands/mcp-dispatcher.js +252 -0
  156. package/dist/interfaces/cli/commands/memory-sdd-dispatcher.js +367 -0
  157. package/dist/interfaces/cli/commands/run-permission-dispatcher.js +460 -0
  158. package/dist/interfaces/cli/commands/setup-dispatcher.js +496 -0
  159. package/dist/interfaces/cli/commands/status-dispatcher.js +130 -0
  160. package/dist/interfaces/cli/commands/verification-dispatcher.js +47 -0
  161. package/dist/interfaces/cli/commands/workflow-dispatcher.js +566 -0
  162. package/dist/interfaces/cli/dispatcher.js +247 -0
  163. package/dist/interfaces/cli/doctor-renderer.js +26 -0
  164. package/dist/interfaces/cli/home-tui-app.js +462 -0
  165. package/dist/interfaces/cli/home-tui-controller.js +341 -0
  166. package/dist/interfaces/cli/index.js +27 -0
  167. package/dist/interfaces/cli/mcp-start-path.js +21 -0
  168. package/dist/interfaces/cli/product-resume-renderer.js +32 -0
  169. package/dist/interfaces/cli/product-status-renderer.js +81 -0
  170. package/dist/interfaces/cli/sdd-renderer.js +247 -0
  171. package/dist/interfaces/cli/setup-plan-renderer.js +79 -0
  172. package/dist/interfaces/cli/setup-status-renderer.js +50 -0
  173. package/dist/interfaces/cli/setup-tui-app.js +135 -0
  174. package/dist/interfaces/cli/setup-tui-controller.js +89 -0
  175. package/dist/interfaces/cli/tui/focus-reducer.js +60 -0
  176. package/dist/interfaces/cli/tui/focus-types.js +10 -0
  177. package/dist/interfaces/cli/tui/ink/app-shell.js +16 -0
  178. package/dist/interfaces/cli/tui/ink/components.js +38 -0
  179. package/dist/interfaces/cli/tui/ink/help-overlay.js +6 -0
  180. package/dist/interfaces/cli/tui/ink/state-components.js +22 -0
  181. package/dist/interfaces/cli/tui/ink/theme.js +36 -0
  182. package/dist/interfaces/cli/tui/key-intents.js +33 -0
  183. package/dist/interfaces/cli/tui/keymap.js +20 -0
  184. package/dist/interfaces/cli/tui/navigation.js +10 -0
  185. package/dist/interfaces/cli/tui/screen-registry.js +43 -0
  186. package/dist/interfaces/cli/tui/terminal-capabilities.js +12 -0
  187. package/dist/interfaces/cli/tui/tui-types.js +1 -0
  188. package/dist/interfaces/cli/tui/visual/badges.js +19 -0
  189. package/dist/interfaces/cli/tui/visual/footer.js +27 -0
  190. package/dist/interfaces/cli/tui/visual/index.js +3 -0
  191. package/dist/interfaces/cli/tui/visual/viewport.js +11 -0
  192. package/dist/interfaces/cli/tui-render-helpers.js +200 -0
  193. package/dist/interfaces/cli/verification-plan-renderer.js +25 -0
  194. package/dist/interfaces/cli/verification-report-renderer.js +19 -0
  195. package/dist/interfaces/mcp/contracts/agents.js +1 -0
  196. package/dist/interfaces/mcp/contracts/context.js +1 -0
  197. package/dist/interfaces/mcp/contracts/governance.js +1 -0
  198. package/dist/interfaces/mcp/contracts/index.js +1 -0
  199. package/dist/interfaces/mcp/contracts/memory.js +1 -0
  200. package/dist/interfaces/mcp/contracts/providers.js +1 -0
  201. package/dist/interfaces/mcp/contracts/runs.js +1 -0
  202. package/dist/interfaces/mcp/contracts/sdd.js +1 -0
  203. package/dist/interfaces/mcp/contracts/sessions.js +1 -0
  204. package/dist/interfaces/mcp/contracts/skills.js +1 -0
  205. package/dist/interfaces/mcp/contracts/verification.js +1 -0
  206. package/dist/interfaces/mcp/control-plane/handlers/agents.js +38 -0
  207. package/dist/interfaces/mcp/control-plane/handlers/context.js +12 -0
  208. package/dist/interfaces/mcp/control-plane/handlers/memory.js +95 -0
  209. package/dist/interfaces/mcp/control-plane/handlers/providers.js +19 -0
  210. package/dist/interfaces/mcp/control-plane/handlers/runs.js +134 -0
  211. package/dist/interfaces/mcp/control-plane/handlers/sdd.js +225 -0
  212. package/dist/interfaces/mcp/control-plane/handlers/sessions.js +39 -0
  213. package/dist/interfaces/mcp/control-plane/handlers/skills.js +82 -0
  214. package/dist/interfaces/mcp/control-plane/handlers/verification.js +11 -0
  215. package/dist/interfaces/mcp/control-plane/types.js +1 -0
  216. package/dist/interfaces/mcp/control-plane.js +235 -0
  217. package/dist/interfaces/mcp/schema.js +174 -0
  218. package/dist/interfaces/mcp/schemas/common.js +121 -0
  219. package/dist/interfaces/mcp/schemas/inputs/agents.js +69 -0
  220. package/dist/interfaces/mcp/schemas/inputs/context.js +32 -0
  221. package/dist/interfaces/mcp/schemas/inputs/governance.js +23 -0
  222. package/dist/interfaces/mcp/schemas/inputs/index.js +10 -0
  223. package/dist/interfaces/mcp/schemas/inputs/memory.js +50 -0
  224. package/dist/interfaces/mcp/schemas/inputs/providers.js +35 -0
  225. package/dist/interfaces/mcp/schemas/inputs/runs.js +146 -0
  226. package/dist/interfaces/mcp/schemas/inputs/sdd.js +102 -0
  227. package/dist/interfaces/mcp/schemas/inputs/sessions.js +32 -0
  228. package/dist/interfaces/mcp/schemas/inputs/skills.js +231 -0
  229. package/dist/interfaces/mcp/schemas/inputs/verification.js +9 -0
  230. package/dist/interfaces/mcp/schemas/outputs/index.js +2 -0
  231. package/dist/interfaces/mcp/schemas/outputs/providers.js +28 -0
  232. package/dist/interfaces/mcp/schemas/outputs/sdd.js +166 -0
  233. package/dist/interfaces/mcp/stdio-server.js +116 -0
  234. package/dist/interfaces/mcp/validation/agents.js +189 -0
  235. package/dist/interfaces/mcp/validation/common.js +415 -0
  236. package/dist/interfaces/mcp/validation/governance.js +50 -0
  237. package/dist/interfaces/mcp/validation/memory.js +133 -0
  238. package/dist/interfaces/mcp/validation/providers.js +94 -0
  239. package/dist/interfaces/mcp/validation/runs.js +514 -0
  240. package/dist/interfaces/mcp/validation/sdd.js +247 -0
  241. package/dist/interfaces/mcp/validation/sessions.js +51 -0
  242. package/dist/interfaces/mcp/validation/skills.js +685 -0
  243. package/dist/interfaces/mcp/validation/verification.js +24 -0
  244. package/dist/interfaces/mcp/validation.js +149 -0
  245. package/dist/mcp/control-plane-snapshot-service.js +65 -2
  246. package/dist/mcp/control-plane.js +1 -646
  247. package/dist/mcp/doctor.js +1 -1
  248. package/dist/mcp/index.js +17 -17
  249. package/dist/mcp/schema.js +1 -1072
  250. package/dist/mcp/stdio-server.js +1 -116
  251. package/dist/mcp/validation.js +1 -2239
  252. package/dist/memory/active-work-preview.js +1 -75
  253. package/dist/memory/active-work-topics.js +1 -64
  254. package/dist/memory/agent-memory-capture-service.js +1 -497
  255. package/dist/memory/import/dry-run-planner.js +1 -58
  256. package/dist/memory/import/index.js +1 -3
  257. package/dist/memory/import/observation-writer.js +1 -226
  258. package/dist/memory/import/package.js +1 -179
  259. package/dist/memory/memory-capture-schema.js +1 -1
  260. package/dist/memory/memory-service.js +1 -201
  261. package/dist/memory/repositories/artifacts.js +1 -67
  262. package/dist/memory/repositories/observations.js +1 -217
  263. package/dist/memory/repositories/sessions.js +1 -125
  264. package/dist/memory/repositories/traces.js +1 -78
  265. package/dist/memory/schema.js +1 -1
  266. package/dist/memory/search.js +1 -11
  267. package/dist/memory/sqlite/database.js +1 -228
  268. package/dist/memory/storage-paths.js +1 -72
  269. package/dist/payload/context-budget-policy.js +10 -0
  270. package/dist/payload/context-budget-service.js +26 -0
  271. package/dist/payload/payload-diagnostics.js +50 -0
  272. package/dist/permissions/explicit-request-authorization.js +126 -0
  273. package/dist/permissions/policy-evaluator.js +54 -14
  274. package/dist/runs/execution-planning.js +1 -178
  275. package/dist/runs/operation-execution.js +1 -1
  276. package/dist/runs/operation-retry.js +1 -129
  277. package/dist/runs/repositories/runs.js +1 -676
  278. package/dist/runs/repositories/task-scoped-command-grants.js +1 -462
  279. package/dist/runs/resume-after-approval-result.js +1 -84
  280. package/dist/runs/run-insights.js +1 -270
  281. package/dist/runs/run-service.js +1 -1439
  282. package/dist/runs/run-snapshot-export-service.js +1 -31
  283. package/dist/runs/sandbox-process-execution.js +1 -240
  284. package/dist/runs/sandbox-worktree-planning.js +1 -59
  285. package/dist/runs/schema.js +1 -5
  286. package/dist/runs/task-scoped-command-grant-service.js +1 -216
  287. package/dist/sdd/artifact-portability-service.js +1 -137
  288. package/dist/sdd/cockpit-read-model.js +1 -195
  289. package/dist/sdd/cockpit-types.js +1 -1
  290. package/dist/sdd/schema.js +1 -111
  291. package/dist/sdd/sdd-continuation-plan.js +1 -265
  292. package/dist/sdd/sdd-workflow-service.js +1 -822
  293. package/dist/setup/providers/claude-setup-adapter.js +11 -4
  294. package/dist/setup/providers/opencode-setup-adapter.js +10 -7
  295. package/dist/setup/setup-plan.js +20 -7
  296. package/dist/skills/boot-seed.js +1 -42
  297. package/dist/skills/personal-skills.js +1 -41
  298. package/dist/skills/repositories/skill-evaluation-requests.js +1 -190
  299. package/dist/skills/repositories/skill-evaluation-scenarios.js +1 -305
  300. package/dist/skills/repositories/skill-improvement-proposals.js +1 -355
  301. package/dist/skills/repositories/skills.js +1 -1077
  302. package/dist/skills/schema.js +1 -1
  303. package/dist/skills/skill-export-service.js +1 -34
  304. package/dist/skills/skill-index-service.js +1 -126
  305. package/dist/skills/skill-payload.js +1 -186
  306. package/dist/skills/skill-registry-service.js +1 -644
  307. package/dist/skills/skill-resolver.js +1 -368
  308. package/dist/skills/skill-seed-service.js +1 -242
  309. package/dist/skills/skill-status-service.js +1 -147
  310. package/dist/storage/agents/repositories/agent-seed-history.js +128 -0
  311. package/dist/storage/agents/repositories/agents.js +200 -0
  312. package/dist/storage/agents/repositories/manager-profile-overlays.js +90 -0
  313. package/dist/storage/memory/repositories/artifacts.js +67 -0
  314. package/dist/storage/memory/repositories/observations.js +217 -0
  315. package/dist/storage/memory/repositories/sessions.js +125 -0
  316. package/dist/storage/memory/repositories/traces.js +78 -0
  317. package/dist/storage/memory/sqlite/database.js +228 -0
  318. package/dist/storage/memory/storage-paths.js +72 -0
  319. package/dist/storage/runs/repositories/runs.js +676 -0
  320. package/dist/storage/runs/repositories/task-scoped-command-grants.js +464 -0
  321. package/dist/storage/skills/repositories/skill-evaluation-requests.js +190 -0
  322. package/dist/storage/skills/repositories/skill-evaluation-scenarios.js +305 -0
  323. package/dist/storage/skills/repositories/skill-improvement-proposals.js +355 -0
  324. package/dist/storage/skills/repositories/skills.js +1084 -0
  325. package/docs/architecture.md +2 -2
  326. package/docs/glossary.md +1 -1
  327. package/docs/mcp.md +1 -1
  328. package/docs/module-boundaries.md +114 -0
  329. package/docs/prd.md +1 -1
  330. package/docs/project-health-audit-v1.10.x.md +1 -1
  331. package/docs/providers.md +2 -2
  332. package/docs/safety.md +3 -3
  333. package/docs/sdd/archive/2026-06-26-ambitious-structure-reorganization/apply-progress.md +122 -0
  334. package/docs/sdd/archive/2026-06-26-ambitious-structure-reorganization/archive-report.md +61 -0
  335. package/docs/sdd/archive/2026-06-26-ambitious-structure-reorganization/design.md +66 -0
  336. package/docs/sdd/archive/2026-06-26-ambitious-structure-reorganization/proposal.md +79 -0
  337. package/docs/sdd/archive/2026-06-26-ambitious-structure-reorganization/spec.md +67 -0
  338. package/docs/sdd/archive/2026-06-26-ambitious-structure-reorganization/tasks.md +63 -0
  339. package/docs/sdd/archive/2026-06-26-ambitious-structure-reorganization/verify-report.md +71 -0
  340. package/docs/sdd/archive/2026-06-26-legacy-facade-cleanup/apply-progress.md +68 -0
  341. package/docs/sdd/archive/2026-06-26-legacy-facade-cleanup/archive-report.md +61 -0
  342. package/docs/sdd/archive/2026-06-26-legacy-facade-cleanup/design.md +43 -0
  343. package/docs/sdd/archive/2026-06-26-legacy-facade-cleanup/proposal.md +61 -0
  344. package/docs/sdd/archive/2026-06-26-legacy-facade-cleanup/spec.md +31 -0
  345. package/docs/sdd/archive/2026-06-26-legacy-facade-cleanup/tasks.md +27 -0
  346. package/docs/sdd/archive/2026-06-26-legacy-facade-cleanup/verify-report.md +58 -0
  347. package/docs/sdd/archive/2026-06-26-provider-install-adapter-boundary/apply-progress.md +65 -0
  348. package/docs/sdd/archive/2026-06-26-provider-install-adapter-boundary/archive-report.md +53 -0
  349. package/docs/sdd/archive/2026-06-26-provider-install-adapter-boundary/design.md +64 -0
  350. package/docs/sdd/archive/2026-06-26-provider-install-adapter-boundary/proposal.md +62 -0
  351. package/docs/sdd/archive/2026-06-26-provider-install-adapter-boundary/spec.md +51 -0
  352. package/docs/sdd/archive/2026-06-26-provider-install-adapter-boundary/tasks.md +50 -0
  353. package/docs/sdd/archive/2026-06-26-provider-install-adapter-boundary/verify-report.md +66 -0
  354. package/docs/storage.md +2 -2
  355. package/package.json +2 -2
  356. /package/dist/{mcp → adapters/claude/install}/claude-code-cli.js +0 -0
  357. /package/dist/{memory → storage/memory}/sqlite/migrations/001_initial.sql +0 -0
  358. /package/dist/{memory → storage/memory}/sqlite/migrations/002_observation_revisions.sql +0 -0
  359. /package/dist/{memory → storage/memory}/sqlite/migrations/003_agent_registry.sql +0 -0
  360. /package/dist/{memory → storage/memory}/sqlite/migrations/004_run_runtime.sql +0 -0
  361. /package/dist/{memory → storage/memory}/sqlite/migrations/005_run_approvals.sql +0 -0
  362. /package/dist/{memory → storage/memory}/sqlite/migrations/006_run_operation_attempts.sql +0 -0
  363. /package/dist/{memory → storage/memory}/sqlite/migrations/007_abandoned_operation_attempts.sql +0 -0
  364. /package/dist/{memory → storage/memory}/sqlite/migrations/008_run_execution_plan_events.sql +0 -0
  365. /package/dist/{memory → storage/memory}/sqlite/migrations/009_multiple_operation_attempts.sql +0 -0
  366. /package/dist/{memory → storage/memory}/sqlite/migrations/010_skill_registry.sql +0 -0
  367. /package/dist/{memory → storage/memory}/sqlite/migrations/011_skill_usage_resolution_outcomes.sql +0 -0
  368. /package/dist/{memory → storage/memory}/sqlite/migrations/012_skill_improvement_proposals.sql +0 -0
  369. /package/dist/{memory → storage/memory}/sqlite/migrations/013_skill_evaluation_scenarios.sql +0 -0
  370. /package/dist/{memory → storage/memory}/sqlite/migrations/014_manager_profile_overlays.sql +0 -0
  371. /package/dist/{memory → storage/memory}/sqlite/migrations/015_artifact_metadata.sql +0 -0
  372. /package/dist/{memory → storage/memory}/sqlite/migrations/016_agent_seed_history.sql +0 -0
  373. /package/dist/{memory → storage/memory}/sqlite/migrations/017_intent_signal_skill_targets.sql +0 -0
  374. /package/dist/{memory → storage/memory}/sqlite/migrations/018_skill_system_v2.sql +0 -0
  375. /package/dist/{memory → storage/memory}/sqlite/migrations/019_task_scoped_command_grants.sql +0 -0
@@ -0,0 +1,391 @@
1
+ import { resolveMemoryDatabasePath } from '../../memory/storage-paths.js';
2
+ import { permissionCategories } from '../../permissions/policy-evaluator.js';
3
+ import { parseOperationRetryPolicy } from '../../runs/operation-retry.js';
4
+ import { vgxnessSetupDefaults } from '../../setup/setup-defaults.js';
5
+ import { validationFailure } from './cli-help.js';
6
+ function parseArgs(argv) {
7
+ const positionals = [];
8
+ const flags = {};
9
+ for (let index = 0; index < argv.length; index += 1) {
10
+ const current = argv[index];
11
+ if (current === undefined)
12
+ continue;
13
+ if (!current.startsWith('--')) {
14
+ positionals.push(current);
15
+ continue;
16
+ }
17
+ const [rawKey, inlineValue] = current.slice(2).split('=', 2);
18
+ if (!rawKey)
19
+ continue;
20
+ if (inlineValue !== undefined) {
21
+ flags[rawKey] = inlineValue;
22
+ continue;
23
+ }
24
+ const next = argv[index + 1];
25
+ if (next !== undefined && !next.startsWith('--')) {
26
+ flags[rawKey] = next;
27
+ index += 1;
28
+ }
29
+ else {
30
+ flags[rawKey] = true;
31
+ }
32
+ }
33
+ return { positionals, flags };
34
+ }
35
+ function databasePathFor(flags, environment) {
36
+ const resolved = databasePathSelectionFor(flags, environment);
37
+ return resolved.ok ? { ok: true, value: resolved.value.path } : resolved;
38
+ }
39
+ function databasePathSelectionFor(flags, environment) {
40
+ const flagPath = flags.db !== undefined ? requiredFlag(flags, 'db') : { ok: true, value: undefined };
41
+ if (!flagPath.ok)
42
+ return flagPath;
43
+ return resolveMemoryDatabasePath({ cwd: environment.cwd, env: environment.env, explicitPath: flagPath.value });
44
+ }
45
+ function requiredFlag(flags, name) {
46
+ const value = flags[name];
47
+ return typeof value === 'string' && value.trim() ? { ok: true, value } : validationFailure(`Missing required --${name}`);
48
+ }
49
+ function requiredTrimmedFlag(flags, name) {
50
+ const value = requiredFlag(flags, name);
51
+ return value.ok ? { ok: true, value: value.value.trim() } : value;
52
+ }
53
+ function optionalStringFlag(flags, name) {
54
+ const value = flags[name];
55
+ return typeof value === 'string' && value.trim() ? value : undefined;
56
+ }
57
+ function optionalTrimmedFlag(flags, name) {
58
+ const value = flags[name];
59
+ if (value === undefined)
60
+ return { ok: true, value: undefined };
61
+ if (typeof value !== 'string' || value.trim().length === 0)
62
+ return validationFailure(`--${name} must not be empty`);
63
+ return { ok: true, value: value.trim() };
64
+ }
65
+ function acceptedAtFlag(flags) {
66
+ const value = optionalTrimmedFlag(flags, 'accepted-at');
67
+ if (!value.ok)
68
+ return value;
69
+ if (value.value === undefined)
70
+ return { ok: true, value: new Date().toISOString() };
71
+ const isoDateTimeWithTimezone = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:?\d{2})$/;
72
+ if (!isoDateTimeWithTimezone.test(value.value))
73
+ return validationFailure('--accepted-at must be an ISO date-time with explicit timezone');
74
+ const parsed = new Date(value.value);
75
+ if (!Number.isFinite(parsed.getTime()))
76
+ return validationFailure('--accepted-at must be a valid ISO date-time');
77
+ return { ok: true, value: parsed.toISOString() };
78
+ }
79
+ function codeApprovalPolicyFlag(flags) {
80
+ const value = optionalStringFlag(flags, 'approval-policy');
81
+ if (value === undefined)
82
+ return { ok: true, value: undefined };
83
+ return value === 'ask' || value === 'allow' || value === 'deny' ? { ok: true, value } : validationFailure('--approval-policy must be ask, allow, or deny');
84
+ }
85
+ function codeVerificationModeFlag(flags) {
86
+ const value = optionalStringFlag(flags, 'verification');
87
+ if (value === undefined)
88
+ return { ok: true, value: undefined };
89
+ return value === 'none' || value === 'suggest' || value === 'run' || value === 'repair'
90
+ ? { ok: true, value }
91
+ : validationFailure('--verification must be none, suggest, run, or repair');
92
+ }
93
+ function codeTranscriptModeFlag(flags) {
94
+ const value = optionalStringFlag(flags, 'transcript');
95
+ if (value === undefined)
96
+ return { ok: true, value: undefined };
97
+ return value === 'off' || value === 'summary' || value === 'full' ? { ok: true, value } : validationFailure('--transcript must be off, summary, or full');
98
+ }
99
+ function codeMemoryPolicyFlag(flags) {
100
+ const value = optionalStringFlag(flags, 'memory');
101
+ if (value === undefined)
102
+ return { ok: true, value: undefined };
103
+ return value === 'off' || value === 'ask' || value === 'auto' ? { ok: true, value } : validationFailure('--memory must be off, ask, or auto');
104
+ }
105
+ function scopeFlag(flags, name, fallback) {
106
+ const value = optionalStringFlag(flags, name) ?? fallback;
107
+ return value === 'project' || value === 'personal' ? { ok: true, value } : validationFailure(`--${name} must be project or personal`);
108
+ }
109
+ function optionalScopeFlag(flags, name) {
110
+ const value = optionalStringFlag(flags, name);
111
+ if (value === undefined)
112
+ return { ok: true, value: undefined };
113
+ return value === 'project' || value === 'personal' ? { ok: true, value } : validationFailure(`--${name} must be project or personal`);
114
+ }
115
+ const providerUserGlobalOnlyMigrationMessage = 'VGX-managed provider configuration is user-global only for OpenCode and Claude. Project/local provider files are treated as external/manual diagnostics and will not be written by VGXNESS. Re-run without the project/local install scope.';
116
+ function opencodeInstallScopeFlag(flags, name) {
117
+ const value = optionalStringFlag(flags, name) ?? vgxnessSetupDefaults.defaultOpenCodeScope;
118
+ if (value === 'user' || value === 'global' || value === 'personal')
119
+ return { ok: true, value: 'user' };
120
+ if (value === 'project' || value === 'local')
121
+ return validationFailure(providerUserGlobalOnlyMigrationMessage);
122
+ return validationFailure(`--${name} must be user, global, or personal`);
123
+ }
124
+ function opencodeDiagnosticScopeFlag(flags, name) {
125
+ const value = optionalStringFlag(flags, name) ?? vgxnessSetupDefaults.defaultOpenCodeScope;
126
+ if (value === 'user' || value === 'global' || value === 'personal')
127
+ return { ok: true, value: 'user' };
128
+ if (value === 'project')
129
+ return { ok: true, value };
130
+ return validationFailure(`--${name} must be user, global, personal, or project`);
131
+ }
132
+ function optionalModeFlag(flags, name) {
133
+ const value = optionalStringFlag(flags, name);
134
+ if (value === undefined)
135
+ return { ok: true, value: undefined };
136
+ return value === 'agent' || value === 'subagent' ? { ok: true, value } : validationFailure(`--${name} must be agent or subagent`);
137
+ }
138
+ function permissionCategoryFlag(flags, name) {
139
+ const value = requiredFlag(flags, name);
140
+ if (!value.ok)
141
+ return value;
142
+ return permissionCategories.includes(value.value)
143
+ ? { ok: true, value: value.value }
144
+ : validationFailure(`--${name} must be one of ${permissionCategories.join(', ')}`);
145
+ }
146
+ function skillSourceFromFlags(flags) {
147
+ const kind = skillSourceKindFlag(flags, 'source-kind');
148
+ if (!kind.ok)
149
+ return kind;
150
+ if (kind.value === 'path') {
151
+ const path = requiredFlag(flags, 'source-path');
152
+ return path.ok ? { ok: true, value: { kind: 'path', path: path.value } } : path;
153
+ }
154
+ if (kind.value === 'url') {
155
+ const url = requiredFlag(flags, 'source-url');
156
+ return url.ok ? { ok: true, value: { kind: 'url', url: url.value } } : url;
157
+ }
158
+ const inlineMetadata = jsonFlag(flags, 'inline-metadata', {});
159
+ return inlineMetadata.ok ? { ok: true, value: { kind: 'inline', inlineMetadata: inlineMetadata.value } } : inlineMetadata;
160
+ }
161
+ function skillSourceKindFlag(flags, name) {
162
+ const value = requiredFlag(flags, name);
163
+ if (!value.ok)
164
+ return value;
165
+ return value.value === 'path' || value.value === 'url' || value.value === 'inline'
166
+ ? { ok: true, value: value.value }
167
+ : validationFailure(`--${name} must be path, url, or inline`);
168
+ }
169
+ function optionalSkillVersionStatusFlag(flags, name) {
170
+ const value = optionalStringFlag(flags, name);
171
+ if (value === undefined)
172
+ return { ok: true, value: undefined };
173
+ return value === 'draft' || value === 'active' || value === 'deprecated' || value === 'archived'
174
+ ? { ok: true, value }
175
+ : validationFailure(`--${name} must be draft, active, deprecated, or archived`);
176
+ }
177
+ function skillTargetTypeFlag(flags, name) {
178
+ const value = requiredFlag(flags, name);
179
+ if (!value.ok)
180
+ return value;
181
+ return isSkillTargetType(value.value)
182
+ ? { ok: true, value: value.value }
183
+ : validationFailure(`--${name} must be agent, subagent, workflow-phase, provider-adapter, or intent-signal`);
184
+ }
185
+ function optionalSkillTargetTypeFlag(flags, name) {
186
+ const value = optionalStringFlag(flags, name);
187
+ if (value === undefined)
188
+ return { ok: true, value: undefined };
189
+ return isSkillTargetType(value)
190
+ ? { ok: true, value }
191
+ : validationFailure(`--${name} must be agent, subagent, workflow-phase, provider-adapter, or intent-signal`);
192
+ }
193
+ function skillUsageOutcomeFlag(flags, name) {
194
+ const value = requiredFlag(flags, name);
195
+ if (!value.ok)
196
+ return value;
197
+ return value.value === 'selected' || value.value === 'injected' || value.value === 'helped' || value.value === 'failed' || value.value === 'neutral'
198
+ ? { ok: true, value: value.value }
199
+ : validationFailure(`--${name} must be selected, injected, helped, failed, or neutral`);
200
+ }
201
+ function optionalSkillResolutionUsageFlag(flags, name) {
202
+ const value = optionalStringFlag(flags, name);
203
+ if (value === undefined)
204
+ return { ok: true, value: undefined };
205
+ return value === 'selected' || value === 'injected' ? { ok: true, value } : validationFailure(`--${name} must be selected or injected`);
206
+ }
207
+ function optionalSkillImprovementProposalStatusFlag(flags, name) {
208
+ const value = optionalStringFlag(flags, name);
209
+ if (value === undefined)
210
+ return { ok: true, value: undefined };
211
+ return value === 'draft' || value === 'pending-approval' || value === 'approved' || value === 'rejected' || value === 'cancelled' || value === 'applied'
212
+ ? { ok: true, value }
213
+ : validationFailure(`--${name} must be draft, pending-approval, approved, rejected, cancelled, or applied`);
214
+ }
215
+ function skillEvaluationResultStatusFlag(flags, name) {
216
+ const value = requiredFlag(flags, name);
217
+ if (!value.ok)
218
+ return value;
219
+ return isSkillEvaluationResultStatus(value.value)
220
+ ? { ok: true, value: value.value }
221
+ : validationFailure(`--${name} must be passed, failed, needs-review, or not-applicable`);
222
+ }
223
+ function optionalSkillEvaluationResultStatusFlag(flags, name) {
224
+ const value = optionalStringFlag(flags, name);
225
+ if (value === undefined)
226
+ return { ok: true, value: undefined };
227
+ return isSkillEvaluationResultStatus(value) ? { ok: true, value } : validationFailure(`--${name} must be passed, failed, needs-review, or not-applicable`);
228
+ }
229
+ function isSkillEvaluationResultStatus(value) {
230
+ return value === 'passed' || value === 'failed' || value === 'needs-review' || value === 'not-applicable';
231
+ }
232
+ function isSkillTargetType(value) {
233
+ return value === 'agent' || value === 'subagent' || value === 'workflow-phase' || value === 'provider-adapter' || value === 'intent-signal';
234
+ }
235
+ function instructionKindFlag(flags) {
236
+ const value = optionalStringFlag(flags, 'instructions-kind') ?? 'inline';
237
+ return value === 'inline' || value === 'path' ? { ok: true, value } : validationFailure('--instructions-kind must be inline or path');
238
+ }
239
+ function optionalNumberFlag(flags, name) {
240
+ const value = optionalStringFlag(flags, name);
241
+ if (value === undefined)
242
+ return { ok: true, value: undefined };
243
+ const parsed = Number(value);
244
+ return Number.isInteger(parsed) && parsed > 0 ? { ok: true, value: parsed } : validationFailure(`--${name} must be a positive integer`);
245
+ }
246
+ function requiredPositiveIntegerFlag(flags, name) {
247
+ const value = requiredFlag(flags, name);
248
+ if (!value.ok)
249
+ return value;
250
+ const parsed = Number(value.value);
251
+ return Number.isSafeInteger(parsed) && parsed > 0 ? { ok: true, value: parsed } : validationFailure(`--${name} must be a positive integer`);
252
+ }
253
+ function taskGrantCategoryFlag(flags, name) {
254
+ const value = requiredFlag(flags, name);
255
+ if (!value.ok)
256
+ return value;
257
+ return value.value === 'shell' || value.value === 'test-run' || value.value === 'git'
258
+ ? { ok: true, value: value.value }
259
+ : validationFailure(`--${name} must be shell, test-run, or git`);
260
+ }
261
+ function optionalTaskGrantStatusFlag(flags, name) {
262
+ const value = optionalStringFlag(flags, name);
263
+ if (value === undefined)
264
+ return { ok: true, value: undefined };
265
+ return value === 'active' || value === 'revoked' || value === 'expired' || value === 'exhausted'
266
+ ? { ok: true, value }
267
+ : validationFailure(`--${name} must be active, revoked, expired, or exhausted`);
268
+ }
269
+ function taskGrantExpirationFlag(flags) {
270
+ const expiresAt = optionalStringFlag(flags, 'expires-at');
271
+ const ttl = optionalStringFlag(flags, 'ttl');
272
+ if ((expiresAt === undefined) === (ttl === undefined))
273
+ return validationFailure('Pass exactly one of --expires-at or --ttl');
274
+ if (expiresAt !== undefined) {
275
+ const timestamp = Date.parse(expiresAt);
276
+ if (!Number.isFinite(timestamp) || new Date(timestamp).toISOString() !== expiresAt)
277
+ return validationFailure('--expires-at must be a valid ISO date-time');
278
+ return timestamp > Date.now() ? { ok: true, value: expiresAt } : validationFailure('--expires-at must be in the future');
279
+ }
280
+ if (ttl === undefined)
281
+ return validationFailure('Pass exactly one of --expires-at or --ttl');
282
+ const match = /^(\d+)(ms|s|m|h|d)$/.exec(ttl);
283
+ if (match === null)
284
+ return validationFailure('--ttl must be a positive duration like 30s, 15m, 2h, or 1d');
285
+ const amount = Number(match[1]);
286
+ if (!Number.isSafeInteger(amount) || amount <= 0)
287
+ return validationFailure('--ttl must be a positive duration like 30s, 15m, 2h, or 1d');
288
+ const unit = match[2];
289
+ const multiplier = unit === 'ms' ? 1 : unit === 's' ? 1_000 : unit === 'm' ? 60_000 : unit === 'h' ? 3_600_000 : 86_400_000;
290
+ return { ok: true, value: new Date(Date.now() + amount * multiplier).toISOString() };
291
+ }
292
+ function optionalRunStatusFlag(flags, name) {
293
+ const value = optionalStringFlag(flags, name);
294
+ if (value === undefined)
295
+ return { ok: true, value: undefined };
296
+ return isRunStatus(value) ? { ok: true, value } : validationFailure(`--${name} must be a valid run status`);
297
+ }
298
+ function finalRunStatusFlag(flags, name) {
299
+ const value = requiredFlag(flags, name);
300
+ if (!value.ok)
301
+ return value;
302
+ return value.value === 'completed' || value.value === 'failed' || value.value === 'blocked' || value.value === 'cancelled'
303
+ ? { ok: true, value: value.value }
304
+ : validationFailure(`--${name} must be completed, failed, blocked, or cancelled`);
305
+ }
306
+ function runOutcomeFlag(flags, name) {
307
+ const value = requiredFlag(flags, name);
308
+ if (!value.ok)
309
+ return value;
310
+ return value.value === 'success' || value.value === 'partial' || value.value === 'failure' || value.value === 'blocked' || value.value === 'cancelled'
311
+ ? { ok: true, value: value.value }
312
+ : validationFailure(`--${name} must be success, partial, failure, blocked, or cancelled`);
313
+ }
314
+ function jsonFlag(flags, name, fallback) {
315
+ const value = optionalStringFlag(flags, name);
316
+ if (value === undefined)
317
+ return { ok: true, value: fallback };
318
+ try {
319
+ return { ok: true, value: JSON.parse(value) };
320
+ }
321
+ catch (cause) {
322
+ return { ok: false, error: { code: 'validation_failed', message: `--${name} must be valid JSON`, cause } };
323
+ }
324
+ }
325
+ function optionalJsonFlag(flags, name) {
326
+ const value = optionalStringFlag(flags, name);
327
+ if (value === undefined)
328
+ return { ok: true, value: undefined };
329
+ try {
330
+ return { ok: true, value: JSON.parse(value) };
331
+ }
332
+ catch (cause) {
333
+ return { ok: false, error: { code: 'validation_failed', message: `--${name} must be valid JSON`, cause } };
334
+ }
335
+ }
336
+ function retryPolicyFlag(flags) {
337
+ const value = optionalStringFlag(flags, 'policy');
338
+ if (value === undefined)
339
+ return { ok: true, value: undefined };
340
+ let parsed;
341
+ try {
342
+ parsed = JSON.parse(value);
343
+ }
344
+ catch (cause) {
345
+ return { ok: false, error: { code: 'validation_failed', message: '--policy must be valid JSON', cause } };
346
+ }
347
+ const policy = parseOperationRetryPolicy(parsed);
348
+ return policy.ok ? { ok: true, value: policy.policy } : validationFailure(`Invalid --policy: ${policy.errors.join('; ')}`);
349
+ }
350
+ function isRunStatus(value) {
351
+ return (value === 'created' ||
352
+ value === 'planned' ||
353
+ value === 'running' ||
354
+ value === 'needs-human' ||
355
+ value === 'completed' ||
356
+ value === 'failed' ||
357
+ value === 'blocked' ||
358
+ value === 'cancelled');
359
+ }
360
+ function csvFlag(flags, name) {
361
+ return (optionalStringFlag(flags, name)
362
+ ?.split(',')
363
+ .map((value) => value.trim())
364
+ .filter(Boolean) ?? []);
365
+ }
366
+ function setupDatabaseFlags(flags) {
367
+ const dbValue = optionalStringFlag(flags, 'db');
368
+ const dbPath = optionalStringFlag(flags, 'db-path');
369
+ if (dbValue === undefined)
370
+ return { ok: true, value: { mode: vgxnessSetupDefaults.defaultDatabaseMode } };
371
+ if (dbValue === 'global' || dbValue === 'project-local')
372
+ return { ok: true, value: { mode: dbValue } };
373
+ if (dbValue === 'custom')
374
+ return dbPath === undefined ? validationFailure('--db custom requires --db-path <path>') : { ok: true, value: { mode: 'custom', path: dbPath } };
375
+ return { ok: true, value: { mode: 'custom', path: dbValue } };
376
+ }
377
+ function setupProviderFlag(flags) {
378
+ const value = optionalStringFlag(flags, 'provider') ?? vgxnessSetupDefaults.defaultProvider;
379
+ return value === 'opencode' || value === 'claude' || value === 'none'
380
+ ? { ok: true, value }
381
+ : validationFailure('--provider must be opencode, claude, or none');
382
+ }
383
+ function setupInstallModeFlag(flags) {
384
+ const value = optionalStringFlag(flags, 'mode');
385
+ if (value !== undefined)
386
+ return value === 'mcp-only' || value === 'mcp-plus-agents' ? { ok: true, value } : validationFailure('--mode must be mcp-only or mcp-plus-agents');
387
+ if (flags['mcp-only'] === true || flags['no-agents'] === true)
388
+ return { ok: true, value: 'mcp-only' };
389
+ return { ok: true, value: vgxnessSetupDefaults.defaultInstallMode };
390
+ }
391
+ export { acceptedAtFlag, codeApprovalPolicyFlag, codeMemoryPolicyFlag, codeTranscriptModeFlag, codeVerificationModeFlag, csvFlag, databasePathFor, databasePathSelectionFor, finalRunStatusFlag, instructionKindFlag, isRunStatus, isSkillEvaluationResultStatus, isSkillTargetType, jsonFlag, opencodeDiagnosticScopeFlag, opencodeInstallScopeFlag, optionalJsonFlag, optionalModeFlag, optionalNumberFlag, optionalRunStatusFlag, optionalScopeFlag, optionalSkillEvaluationResultStatusFlag, optionalSkillImprovementProposalStatusFlag, optionalSkillResolutionUsageFlag, optionalSkillTargetTypeFlag, optionalSkillVersionStatusFlag, optionalStringFlag, optionalTaskGrantStatusFlag, optionalTrimmedFlag, parseArgs, permissionCategoryFlag, providerUserGlobalOnlyMigrationMessage, requiredFlag, requiredPositiveIntegerFlag, requiredTrimmedFlag, retryPolicyFlag, runOutcomeFlag, scopeFlag, setupDatabaseFlags, setupInstallModeFlag, setupProviderFlag, skillEvaluationResultStatusFlag, skillSourceFromFlags, skillSourceKindFlag, skillTargetTypeFlag, skillUsageOutcomeFlag, taskGrantCategoryFlag, taskGrantExpirationFlag, };
@@ -0,0 +1,173 @@
1
+ export function helpText() {
2
+ return `Usage: vgxness <area> <command> [flags]
3
+
4
+ Global flags:
5
+ --help, -h Show this help.
6
+ --version, -v Print the installed package version.
7
+
8
+ Areas:
9
+ status [--project <name>] [--change <id>] [--db <path>] [--json]
10
+ next [--project <name>] [--change <id>] [--db <path>] [--json]
11
+ resume [--project <name>] [--run-id <id>] [--db <path>] [--json]
12
+ init [--project <name>] [--provider opencode|claude|none] [--scope user|global|personal] [--db global|project-local|custom|<path>] [--db-path <path>] [--mode mcp-only|mcp-plus-agents] [--json]
13
+ setup plan [--project <name>] [--provider opencode|claude|none] [--scope user|global|personal] [--db global|project-local|custom|<path>] [--db-path <path>] [--mode mcp-only|mcp-plus-agents] [--json]
14
+ setup apply --yes [--project <name>] [--provider opencode|claude|none] [--scope user|global|personal] [--db global|project-local|custom|<path>] [--db-path <path>] [--mode mcp-only|mcp-plus-agents]
15
+ setup reinstall [--yes] [--project <name>] [--scope user|global|personal] [--db global|project-local|custom|<path>] [--db-path <path>] [--mode mcp-only|mcp-plus-agents] [--json]
16
+ setup backup list --provider opencode [--scope project|user|global] [--target <path>] [--json]
17
+ setup rollback --backup <path> [--preview|--yes] [--json]
18
+ setup status [--project <name>] [--scope project|personal] [--db <path>] [--json]
19
+ doctor [--db <path>] [--project <name>] [--change <id>] [--timeout-ms <ms>] [--json]
20
+ verification plan --type docs-only|test-only|cli|mcp|sdd-storage|provider-setup|package-release|workflow-runs [--json]
21
+ verification report save --project <name> --change <id> --file <report.json> [--db <path>] [--json]
22
+ verification report get --project <name> --change <id> [--db <path>] [--json]
23
+ Status answers "where am I?" with the human front-door cockpit.
24
+ Next answers "what should I do now?" with a shorter next-action view.
25
+ Resume answers "how do I continue interrupted work?" with run inspection guidance.
26
+ Without --change or --run-id they stay orientation-only and do not open local memory; with --change or --run-id they read SQLite read-only. Pass --json for automation.
27
+ Setup plan/init default to human-readable read-only output; pass --json for automation. VGX-managed provider configuration is user-global only for OpenCode and Claude; setup apply writes provider config only with --yes and uses the global user DB plus mcp-plus-agents by default. setup reinstall is the explicit safe overwrite path: it replaces only VGXNESS-managed OpenCode entries, preserves unrelated config, and still requires --yes to write.
28
+ Setup status defaults to human-readable read-only output; pass --json for automation. It never writes provider config or executes providers.
29
+ Doctor defaults to human-readable output; pass --json for automation.
30
+ Verification plans are read-only recommendations only; they never execute commands, write provider config, persist results, mutate SDD artifacts, or infer acceptance.
31
+ Verification reports are manual file-only SDD verify draft artifacts; save/get never execute commands, contact providers, write provider config, or auto-accept verification.
32
+
33
+ agents register --project <name> --name <name> --description <text> --instructions <text>
34
+ agents register --file <agent.json>
35
+ agents seed load --file <seed.json>
36
+ agents list [--project <name>] [--scope project|personal]
37
+ agents get --id <id> | --project <name> --name <name> [--scope project|personal]
38
+ agents render --provider json|opencode|claude (--id <id> | --project <name> --name <name> [--scope project|personal])
39
+ agents manager-profile get [--project <name>] [--scope project|personal] [--manager <name>]
40
+ agents manager-profile set --instructions <text> [--project <name>] [--scope project|personal] [--manager <name>]
41
+ Seed loading writes only to the local registry; it does not install or write .opencode/, .claude/, or provider config.
42
+
43
+ opencode preview --provider opencode (--agent <name> | --agent-id <id>) --project <name> --change <id> --phase <phase> [--scope project|personal]
44
+ OpenCode CLI preview prints the legacy injection preview JSON for inspection; MCP opencode_handoff_preview is the read-only conversation handoff preview and can be paired with opencode_manager_payload for verbose manager payload details.
45
+
46
+ Interactive Home TUI opens from \`vgxness\` in a real terminal; non-TTY use prints safe guidance. Daily SDD progression should happen inside OpenCode through conversation, VGXNESS MCP, and hidden SDD subagents; use status/next/sdd continue for read-only CLI guidance.
47
+
48
+ orchestrator preview --project <name> --intent <text> [--change <id>] [--db <path>]
49
+ Orchestrator preview classifies natural-language requests only; it never executes providers, edits files, records runs, or writes provider config.
50
+
51
+ explore|quickfix|plan|build|debug|sdd preview [--project <name>] [--intent <text>]
52
+ Workflow previews return registry and planner JSON only; they never execute code, edit files, record runs, or write provider config.
53
+ explore|quickfix|plan|build|debug|sdd run [--project <name>] --intent <text> [--phase <name>] [--agent-id <id>] [--db <path>]
54
+ Workflow runs record intent plus a safety checkpoint only; they do not call providers, edit files, write provider config, create subagents, or mutate SDD artifacts.
55
+ explore|quickfix|plan|build|debug|sdd execute --run-id <id> --confirm [--override-escalation] [--workspace <path>] [--executor safe-non-dispatching|provider|command] [--command typecheck|node-version] [--command-cwd <path>] [--command-targets <paths>] [--db <path>]
56
+ Workflow execute is an explicit safety-gated request; default executor records preflight/ready-to-dispatch state. --executor provider remains guarded and refuses dispatch unless enforceable sandbox/preflight/adapter gates are present. --executor command runs only hardcoded allowlisted argv through bounded-process; no shell strings or provider config targets are allowed.
57
+
58
+ approvals list [--run-id <id>] [--db <path>]
59
+ approvals approve --id <approval-id> [--db <path>]
60
+ approvals reject --id <approval-id> [--reason <text>] [--db <path>]
61
+ Approval commands resolve explicit run/preflight approval records; they do not change agent seed permissions or globally allow shell/provider access.
62
+
63
+ mcp setup --preview --provider opencode|claude [--db <path>]
64
+ mcp install opencode --plan [--scope user|global|personal] [--db <path>] [--mcp-only|--no-agents] [--overwrite-vgxness|--reinstall]
65
+ mcp install opencode --yes [--scope user|global|personal] [--db <path>] [--mcp-only|--no-agents] [--overwrite-vgxness|--reinstall]
66
+ mcp install claude --plan [--scope user|global|personal] [--db <path>] [--overwrite-vgxness|--reinstall]
67
+ mcp install claude --yes --run-id <id> [--scope user|global|personal] [--db <path>] [--phase <phase>] [--agent-id <id>] [--overwrite-vgxness|--reinstall]
68
+ mcp doctor opencode [--scope user|project] [--project-root <path>]
69
+ mcp doctor [--db <path>] [--project <name>] [--change <id>] [--timeout-ms <ms>]
70
+ MCP setup preview is read-only; it does not install or write .opencode/, .claude/, or provider config.
71
+ Without --db, MCP install and setup commands use the vgxness global default database; pass --db .vgx/memory.sqlite for project-local compatibility.
72
+ OpenCode install defaults to user-global scope and installs mcp.vgxness plus top-level permission.bash=ask, vgxness-manager with bash=deny and native repo tools disabled, and hidden vgxness-sdd-* agents with explicit permissions; use --mcp-only for legacy MCP-only config.
73
+ Use --overwrite-vgxness (alias --reinstall) to reinstall only VGXNESS-managed OpenCode entries while preserving unrelated config; --yes is still required to write.
74
+ It writes only after --yes. VGX-managed provider configuration is user-global only for OpenCode and Claude; the OpenCode target is $HOME/.config/opencode/opencode.json.
75
+ Project/local provider files are external/manual diagnostics and will not be written by VGXNESS. Plans are read-only; applies refuse unsafe existing user-global config and create backups before merge.
76
+ Claude support is first-class for guarded MCP setup. Claude user/global/personal scopes all target user-global managed config. Confirmed Claude writes narrowly merge mcpServers.vgxness in ~/.claude.json, write ~/.claude/agents/*.md, and manage only the VGXNESS block in ~/.claude/CLAUDE.md. Confirmed Claude writes/CLI execution require VGXNESS run preflight metadata (--run-id, with optional --phase/--agent-id). Status/doctor/change-plan are read-only and do not execute Claude Code.
77
+
78
+ skills register --project <name> --name <name> --description <text>
79
+ skills list [--project <name>] [--scope project|personal]
80
+ skills get --id <id> | --project <name> --name <name> [--scope project|personal]
81
+ skills add-version (--id <id> | --project <name> --name <name>) --version <version> --source-kind path|url|inline [--source-path <path>] [--source-url <url>] [--inline-metadata <json>] [--activate]
82
+ skills attach (--id <id> | --project <name> --name <name>) --target-type agent|subagent|workflow-phase|provider-adapter|intent-signal --target-key <key>
83
+ skills detach (--id <id> | --project <name> --name <name>) --target-type agent|subagent|workflow-phase|provider-adapter|intent-signal --target-key <key>
84
+ skills record-usage (--id <id> | --project <name> --name <name>) --outcome selected|injected|helped|failed|neutral [--run-id <id>]
85
+ skills resolve [--agent <name> | --agent-id <id>] [--project <name>] [--workflow <name>] [--phase <name>] [--intent-signals a,b] [--provider <name>] [--run <id>] [--record-usage selected|injected]
86
+ skills index --project <name> --scope project|personal
87
+ skills export --project <name> --scope project|personal
88
+ skills status --project <name> [--scope project|personal] [--provider opencode] [--mode agent|subagent] [--agent <name-or-id>]
89
+ skills payload [--agent <name> | --agent-id <id>] [--project <name>] [--workflow <name>] [--phase <name>] [--intent-signals a,b] [--provider <name>]
90
+ skills propose (--id <id> | --project <name> --name <name>) --proposed-version <version> --source-kind path|url|inline --rationale <text>
91
+ skills proposals [--skill-id <id>] [--status draft|pending-approval|approved|rejected|cancelled|applied]
92
+ skills create-scenario (--id <id> --name <scenario> | --project <name> --name <skill> --scenario-name <scenario>) --criteria <json> --created-by <actor> [--proposal <id>] [--version-id <id>]
93
+ skills list-scenarios (--id <id> | --project <name> --name <name>) [--proposal <id>] [--version-id <id>]
94
+ skills record-evaluation-result --scenario <id> --status passed|failed|needs-review|not-applicable --result <json> --observed-behavior <text> --evaluator <actor> [--proposal <id>] [--version-id <id>] [--notes <text>]
95
+ skills list-evaluation-results [--scenario <id>] [--skill-id <id>] [--proposal <id>] [--version-id <id>] [--evaluator <actor>] [--status passed|failed|needs-review|not-applicable]
96
+ skills get-proposal --proposal <id>
97
+ skills submit-proposal|approve-proposal|reject-proposal|cancel-proposal|apply-proposal --proposal <id> --actor <name> [--reason <text>]
98
+ Skills export returns a read-only registry manifest for inspection/automation only; it is not backup, restore, import, or provider/native skill installation.
99
+
100
+ subagents register --parent-agent-id <id> --project <name> --name <name> --description <text> --instructions <text>
101
+ subagents register --file <subagent.json>
102
+ subagents list --parent-agent-id <id>
103
+ subagents get --id <id> | --project <name> --name <name> [--scope project|personal]
104
+
105
+ No args opens the read-only Home TUI in an interactive terminal; non-TTY prints safe guidance and exits 0 without writing provider config.
106
+ Setup can run as an interactive TUI or as CLI commands: use setup plan/status for read-only guidance, setup apply --yes for first install, and setup reinstall --yes only after reviewing the VGXNESS-managed overwrite warning.
107
+ Provider setup support: OpenCode first-class supported default guided install; Claude first-class supported guarded user-global install; project/local provider files are diagnostics only; Antigravity placeholder; Custom/future extension point.
108
+ Provider config writes/install/apply are external-only and require explicit confirmation.
109
+
110
+ sdd status --project <name> --change <id> [--json]
111
+ sdd next --project <name> --change <id> [--json]
112
+ sdd continue --project <name> --change <id> [--db <path>] [--json]
113
+ sdd cockpit --project <name> --change <id> [--json]
114
+ sdd ready --project <name> --change <id> --phase <phase>
115
+ sdd save-artifact --project <name> --change <id> --phase <phase> --content <text>
116
+ sdd accept-artifact --project <name> --change <id> --phase <phase> --actor <human-id> [--display-name <name>] [--note <text>] [--accepted-at <iso>] [--json] [--db <path>]
117
+ sdd reopen-artifact --project <name> --change <id> --phase <phase> --actor <human-id> [--display-name <name>] [--note <text>] [--json] [--db <path>]
118
+ sdd get-artifact --project <name> --change <id> --phase <phase> [--json] [--db <path>]
119
+ sdd list-artifacts --project <name> --change <id> [--json] [--db <path>]
120
+ SDD artifact reads use the selected local SQLite memory store via --db, VGXNESS_DB_PATH, or the global default.
121
+ SDD status, next, continue, get-artifact, and list-artifacts default to human-readable output; pass --json for existing automation shapes.
122
+ SDD continue is a read-only continuation planner; it never executes providers, mutates artifacts, creates runs, writes provider config, or creates openspec/.
123
+ SDD cockpit defaults to human-readable read-only output; pass --json for metadata-only artifact summaries.
124
+ SDD accept-artifact records explicit human-only acceptance; save-artifact remains draft-only and never implies acceptance. --accepted-at requires a timezone and is normalized to UTC ISO. Human output is default; pass --json for content-free success output.
125
+ SDD reopen-artifact records explicit human-only reopening of rejected artifacts only, moving them back to draft so they can be edited and accepted again.
126
+ sdd export --project <name> --change <id> [--file <package.json>]
127
+ sdd import --project <name> --change <id> --file <package.json> [--write] [--overwrite]
128
+
129
+ memory save --project <name> --type <type> --title <title> --content <text>
130
+ memory search [--query <text>] [--project <name>] [--type <type>]
131
+ memory import --file <package.json> --dry-run [--db <path>]
132
+ memory import --file <package.json> --write (--skip-existing | --overwrite) [--db <path>]
133
+
134
+ runs create --project <name> --intent <text> --workflow <name> --phase <name> --agent-id <id> --provider-adapter <name> --model <name>
135
+ runs list [--project <name>] [--status <status>]
136
+ runs get --id <id>
137
+ runs timeline --id <id>
138
+ runs debug --id <id>
139
+ runs resume-plan --id <id>
140
+ runs resume-inspect --id <id>
141
+ resume-inspect is read-only: it prints checkpoint context, blockers, safety flags, and manual next commands without executing providers, preflight, retry, sandbox, or worktree steps.
142
+ runs export-snapshot --run-id <id> --project <name> [--file <snapshot.json>]
143
+ runs checkpoint --run-id <id> --label <text> [--state <json>]
144
+ runs finish --run-id <id> --status completed|failed|blocked|cancelled --outcome <outcome> [--reason <text>]
145
+ runs permission-check --run-id <id> --category <category> --operation <name> [--path <path>] [--agent-id <id>] [--destructive] [--external] [--privileged] [--ambiguous]
146
+ runs preflight --run-id <id> --category <category> --operation <name> [--workspace <path>] [--path <path>] [--provider-tool <name>] [--agent-id <id>] [--destructive] [--external] [--privileged] [--ambiguous]
147
+ runs preflight output includes workspaceStrategy recommendation JSON and does not create branches, worktrees, or PRs.
148
+ runs approvals --run <run-id>
149
+ runs approve|reject|cancel-approval --approval <id> --actor <name> [--reason <text>]
150
+ runs retry-check --approval <id> [--policy <json>]
151
+ runs resume-gate --approval <id> [--policy <json>]
152
+ resume-gate is read-only and plan-only: it prints service planner JSON without preflight, retry admission, executors, provider config writes, sandbox creation, or worktree creation.
153
+
154
+ permissions check --category <category> --operation <name> [--path <path>] [--agent-id <id>] [--external] [--privileged]
155
+
156
+ Storage:
157
+ Default: global user data vgxness/memory.sqlite (macOS ~/Library/Application Support/vgxness/memory.sqlite; Linux \${XDG_DATA_HOME:-~/.local/share}/vgxness/memory.sqlite; Windows %LOCALAPPDATA%\\vgxness\\memory.sqlite, falling back to %APPDATA%\\vgxness\\memory.sqlite).
158
+ Precedence: --db <path> (source: flag) > VGXNESS_DB_PATH (source: environment) > global default (source: global-default).
159
+ Compatibility: pass --db .vgx/memory.sqlite to use the old project-local database explicitly.
160
+ `;
161
+ }
162
+ export function visibleHelpText() {
163
+ return helpText().replace(' skills register --project <name> --name <name> --description <text>', ' agents resolve [--project <name>] [--scope project|personal] [--workflow <name>] [--phase <name>] [--provider <name>] [--capabilities <csv>] [--task <text>]\n skills register --project <name> --name <name> --description <text>');
164
+ }
165
+ export function okText(stdout) {
166
+ return { exitCode: 0, stdout, stderr: '' };
167
+ }
168
+ export function usageFailure(message) {
169
+ return { exitCode: 1, stdout: '', stderr: `${message}\n\n${visibleHelpText()}` };
170
+ }
171
+ export function validationFailure(message) {
172
+ return { ok: false, error: { code: 'validation_failed', message } };
173
+ }
@@ -0,0 +1,77 @@
1
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { openMemoryDatabase } from '../../memory/sqlite/database.js';
4
+ import { prepareMemoryDatabasePath } from '../../memory/storage-paths.js';
5
+ import { validationFailure } from './cli-help.js';
6
+ function openCliDatabase(path) {
7
+ const prepared = prepareMemoryDatabasePath(path);
8
+ if (!prepared.ok)
9
+ return prepared;
10
+ return openMemoryDatabase({ path });
11
+ }
12
+ function readJsonFile(path, environment) {
13
+ try {
14
+ const parsed = JSON.parse(readFileSync(resolve(environment.cwd, path), 'utf8'));
15
+ return isRecord(parsed) ? { ok: true, value: parsed } : validationFailure(`Invalid JSON package shape in --file ${path}: expected a JSON object`);
16
+ }
17
+ catch (cause) {
18
+ const message = cause instanceof SyntaxError ? `Invalid JSON in --file ${path}` : `Unable to read --file ${path}`;
19
+ return { ok: false, error: { code: 'validation_failed', message, cause } };
20
+ }
21
+ }
22
+ function writeJsonFile(path, value, environment) {
23
+ try {
24
+ const outputPath = resolve(environment.cwd, path);
25
+ mkdirSync(dirname(outputPath), { recursive: true });
26
+ writeFileSync(outputPath, `${JSON.stringify(value, null, 2)}\n`);
27
+ return { ok: true, value: undefined };
28
+ }
29
+ catch (cause) {
30
+ return { ok: false, error: { code: 'validation_failed', message: `Unable to write --file ${path}`, cause } };
31
+ }
32
+ }
33
+ function isRecord(value) {
34
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
35
+ }
36
+ function jsonResult(operation) {
37
+ if (!operation.ok)
38
+ return resultFailure(operation);
39
+ return { exitCode: 0, stdout: `${JSON.stringify(operation.value, null, 2)}\n`, stderr: '' };
40
+ }
41
+ function resultFailure(result) {
42
+ if (result.ok)
43
+ return { exitCode: 0, stdout: '', stderr: '' };
44
+ return { exitCode: 1, stdout: '', stderr: `${result.error.code}: ${result.error.message}\n` };
45
+ }
46
+ function toJsonValue(value) {
47
+ return JSON.parse(JSON.stringify(value));
48
+ }
49
+ function isJsonObject(value) {
50
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
51
+ }
52
+ function formatMemoryImportValidationErrors(errors) {
53
+ return errors.map((error) => `${error.path}: ${error.message}`).join('; ');
54
+ }
55
+ function validateMemoryImportMode(flags) {
56
+ if (flags.database !== undefined)
57
+ return validationFailure('Use --db <path>; --database is not supported');
58
+ const dryRun = flags['dry-run'] === true;
59
+ const write = flags.write === true;
60
+ const skipExisting = flags['skip-existing'] === true;
61
+ const overwrite = flags.overwrite === true;
62
+ if (dryRun && write)
63
+ return validationFailure('Choose exactly one mode: --dry-run or --write');
64
+ if (!dryRun && !write)
65
+ return validationFailure('Missing import mode: pass --dry-run or --write');
66
+ if (skipExisting && overwrite)
67
+ return validationFailure('Choose exactly one duplicate policy: --skip-existing or --overwrite');
68
+ if (dryRun && (skipExisting || overwrite))
69
+ return validationFailure('--skip-existing and --overwrite are write-mode duplicate policies and cannot be used with --dry-run');
70
+ if (write) {
71
+ if (skipExisting === overwrite)
72
+ return validationFailure('--write requires exactly one duplicate policy: --skip-existing or --overwrite');
73
+ return { ok: true, value: skipExisting ? 'skip-existing' : 'overwrite' };
74
+ }
75
+ return { ok: true, value: 'dry-run' };
76
+ }
77
+ export { formatMemoryImportValidationErrors, isJsonObject, isRecord, jsonResult, openCliDatabase, readJsonFile, resultFailure, toJsonValue, validateMemoryImportMode, writeJsonFile, };
@@ -0,0 +1 @@
1
+ export {};