@aiwg/cli 2026.10.1 → 2026.10.4

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 (361) hide show
  1. package/README.md +2 -2
  2. package/agentic/code/providers/capability-matrix.yaml +270 -0
  3. package/agentic/code/providers/model-capabilities.v1.json +3183 -24
  4. package/bin/aiwg.mjs +135 -47
  5. package/dist/src/a2a/codecs.js +9 -0
  6. package/dist/src/agents/grounding/knowledge-base.js +54 -6
  7. package/dist/src/artifacts/browser-export.js +6 -0
  8. package/dist/src/artifacts/checksum-manifest.js +1 -0
  9. package/dist/src/artifacts/citation-parser.js +173 -92
  10. package/dist/src/artifacts/citation-table-schema.js +59 -0
  11. package/dist/src/artifacts/cli.js +57 -18
  12. package/dist/src/artifacts/corpus-tools/snapshot.js +1 -1
  13. package/dist/src/artifacts/corpus-tools/vision-extract.js +107 -15
  14. package/dist/src/artifacts/corpus-views/ref-parser.js +3 -1
  15. package/dist/src/artifacts/corpus-views/renderers.js +3 -3
  16. package/dist/src/artifacts/discovery-eval.js +6 -4
  17. package/dist/src/artifacts/fortemi-core-query-adapter.js +36 -3
  18. package/dist/src/artifacts/fortemi-core-sync.js +166 -40
  19. package/dist/src/artifacts/framework-capabilities.js +171 -0
  20. package/dist/src/artifacts/framework-index-paths.js +73 -0
  21. package/dist/src/artifacts/framework-source-digest.js +75 -0
  22. package/dist/src/artifacts/index-builder.js +285 -131
  23. package/dist/src/artifacts/index-files.js +132 -18
  24. package/dist/src/artifacts/index-preparation.js +65 -0
  25. package/dist/src/artifacts/index-refresh.js +576 -0
  26. package/dist/src/artifacts/index-worker.mjs +9 -0
  27. package/dist/src/artifacts/prebuilt-build-lock.js +47 -4
  28. package/dist/src/artifacts/prebuilt-deployment.js +46 -0
  29. package/dist/src/artifacts/prebuilt-relations.js +80 -0
  30. package/dist/src/artifacts/query-engine.js +410 -88
  31. package/dist/src/artifacts/relations-builder.js +168 -0
  32. package/dist/src/artifacts/relations.js +148 -0
  33. package/dist/src/artifacts/repair.js +9 -4
  34. package/dist/src/artifacts/stats.js +5 -2
  35. package/dist/src/artifacts/types.js +30 -10
  36. package/dist/src/artifacts/watcher.js +1 -1
  37. package/dist/src/auth/credential-store.js +2 -1
  38. package/dist/src/catalog/cli.d.mts +5 -0
  39. package/dist/src/channel/manager.d.mts +20 -0
  40. package/dist/src/channel/manager.mjs +78 -12
  41. package/dist/src/cli/child-process-result.js +40 -0
  42. package/dist/src/cli/command-log.js +2 -3
  43. package/dist/src/cli/env.js +38 -16
  44. package/dist/src/cli/flag-parsing.js +236 -0
  45. package/dist/src/cli/handlers/artifacts.js +3 -0
  46. package/dist/src/cli/handlers/auth.js +3 -0
  47. package/dist/src/cli/handlers/decision.js +218 -5
  48. package/dist/src/cli/handlers/diagnose.js +13 -5
  49. package/dist/src/cli/handlers/effect.js +4 -2
  50. package/dist/src/cli/handlers/evidence.js +3 -0
  51. package/dist/src/cli/handlers/feedback.js +14 -5
  52. package/dist/src/cli/handlers/help.js +1 -0
  53. package/dist/src/cli/handlers/index.js +3 -1
  54. package/dist/src/cli/handlers/init.js +248 -30
  55. package/dist/src/cli/handlers/lint.js +5 -0
  56. package/dist/src/cli/handlers/mc.js +23 -0
  57. package/dist/src/cli/handlers/models.js +169 -10
  58. package/dist/src/cli/handlers/ralph-launcher.js +2 -0
  59. package/dist/src/cli/handlers/ralph.js +3 -0
  60. package/dist/src/cli/handlers/refresh.js +28 -0
  61. package/dist/src/cli/handlers/regenerate.js +14 -0
  62. package/dist/src/cli/handlers/resource-versions.js +3 -0
  63. package/dist/src/cli/handlers/rules.js +195 -0
  64. package/dist/src/cli/handlers/run.js +4 -0
  65. package/dist/src/cli/handlers/runtime-info.js +25 -11
  66. package/dist/src/cli/handlers/script-runner.js +19 -8
  67. package/dist/src/cli/handlers/session.js +406 -62
  68. package/dist/src/cli/handlers/sessions.js +243 -76
  69. package/dist/src/cli/handlers/setup-manifest.js +474 -79
  70. package/dist/src/cli/handlers/setup.js +180 -39
  71. package/dist/src/cli/handlers/steward.js +11 -0
  72. package/dist/src/cli/handlers/subcommands.js +60 -3
  73. package/dist/src/cli/handlers/team.js +18 -8
  74. package/dist/src/cli/handlers/uhp.js +3 -0
  75. package/dist/src/cli/handlers/use.js +307 -55
  76. package/dist/src/cli/handlers/utilities.js +125 -26
  77. package/dist/src/cli/handlers/version.js +8 -0
  78. package/dist/src/cli/prompt-utils.js +72 -0
  79. package/dist/src/cli/provider-resolution.js +11 -0
  80. package/dist/src/cli/router.js +15 -1
  81. package/dist/src/cli/services/deployment-verification.js +19 -9
  82. package/dist/src/cli/services/provider-prepare-coordinator.js +24 -0
  83. package/dist/src/cli/skill-usage.js +2 -3
  84. package/dist/src/config/aiwg-config.js +349 -35
  85. package/dist/src/config/cli.js +256 -23
  86. package/dist/src/config/decision-config.js +106 -0
  87. package/dist/src/config/dispatch-thresholds-runtime.d.mts +8 -0
  88. package/dist/src/config/dispatch-thresholds-runtime.mjs +38 -0
  89. package/dist/src/config/gitignore.js +50 -0
  90. package/dist/src/config/index-graph-overrides.js +36 -0
  91. package/dist/src/config/project-artifacts-health.d.mts +37 -0
  92. package/dist/src/config/project-artifacts-health.mjs +14 -3
  93. package/dist/src/config/project-artifacts-runtime.d.mts +16 -0
  94. package/dist/src/config/user-config-dir.d.mts +9 -0
  95. package/dist/src/config/user-config.js +38 -11
  96. package/dist/src/config/user-registry.js +23 -15
  97. package/dist/src/config/user-state.js +7 -0
  98. package/dist/src/decision/adapters/jev.js +75 -27
  99. package/dist/src/decision/ask.js +203 -43
  100. package/dist/src/decision/context-live-qualification.js +2 -2
  101. package/dist/src/decision/driver.js +14 -7
  102. package/dist/src/decision/ensemble/aggregate.js +23 -10
  103. package/dist/src/decision/ensemble-study/multifact-study.js +6 -2
  104. package/dist/src/decision/entry.js +25 -6
  105. package/dist/src/decision/graph-live-qualification.js +1 -1
  106. package/dist/src/decision/graph-run.js +9 -0
  107. package/dist/src/decision/heldout/collector.js +15 -14
  108. package/dist/src/decision/heldout/contract.js +30 -7
  109. package/dist/src/decision/index.js +1 -0
  110. package/dist/src/decision/interop.js +60 -8
  111. package/dist/src/decision/jev-credentials.js +15 -1
  112. package/dist/src/decision/ledger.js +942 -0
  113. package/dist/src/decision/offload-activation.js +137 -0
  114. package/dist/src/decision/offload.js +550 -0
  115. package/dist/src/decision/qualification/load.js +4 -6
  116. package/dist/src/decision/savings.js +28 -0
  117. package/dist/src/decision/validate.js +6 -3
  118. package/dist/src/effects/dispatch-verifier.js +252 -0
  119. package/dist/src/effects/index.js +1 -0
  120. package/dist/src/effects/types.js +5 -1
  121. package/dist/src/effects/verifiers/git.js +2 -1
  122. package/dist/src/effects/verifiers/tracker.js +26 -14
  123. package/dist/src/extensions/commands/definitions.js +19 -0
  124. package/dist/src/extensions/project-local-remove.js +36 -1
  125. package/dist/src/features/installer.js +2 -2
  126. package/dist/src/flow/graph-metadata.js +5 -0
  127. package/dist/src/gates/providers/loader.js +64 -18
  128. package/dist/src/installation/manager-command.d.mts +18 -0
  129. package/dist/src/installation/manager-command.mjs +15 -3
  130. package/dist/src/installation/manager.d.mts +49 -0
  131. package/dist/src/installation/manager.mjs +95 -5
  132. package/dist/src/issues/cli.js +4 -4
  133. package/dist/src/issues/local.js +24 -5
  134. package/dist/src/jobs/runner.js +1 -1
  135. package/dist/src/lint/cli.js +27 -1
  136. package/dist/src/lint/loader.js +2 -1
  137. package/dist/src/lint/reporters.js +25 -1
  138. package/dist/src/lint/rule-activation.js +43 -0
  139. package/dist/src/lint/runner.js +137 -62
  140. package/dist/src/mcp/adapters/codex-runtime.js +366 -56
  141. package/dist/src/mcp/claude-install.d.mts +4 -0
  142. package/dist/src/mcp/claude-install.mjs +41 -0
  143. package/dist/src/mcp/cli.d.mts +1 -0
  144. package/dist/src/mcp/cli.mjs +620 -85
  145. package/dist/src/mcp/config-file.d.mts +28 -0
  146. package/dist/src/mcp/config-file.mjs +279 -0
  147. package/dist/src/mcp/config-layers.d.mts +36 -0
  148. package/dist/src/mcp/config-layers.mjs +348 -0
  149. package/dist/src/mcp/credentials.d.mts +51 -0
  150. package/dist/src/mcp/credentials.mjs +484 -0
  151. package/dist/src/mcp/grok-build-config.d.mts +6 -0
  152. package/dist/src/mcp/grok-build-config.mjs +17 -27
  153. package/dist/src/mcp/helpers.mjs +109 -4
  154. package/dist/src/mcp/muse-native-config.d.mts +13 -0
  155. package/dist/src/mcp/muse-native-config.mjs +1 -0
  156. package/dist/src/mcp/omp-config.d.mts +4 -0
  157. package/dist/src/mcp/omp-config.mjs +50 -29
  158. package/dist/src/mcp/profiles.js +97 -23
  159. package/dist/src/mcp/profiles.mjs +99 -27
  160. package/dist/src/mcp/registry.js +248 -131
  161. package/dist/src/mcp/registry.mjs +169 -100
  162. package/dist/src/mcp/server-config.d.mts +3 -0
  163. package/dist/src/mcp/server-config.mjs +89 -0
  164. package/dist/src/mcp/server.mjs +127 -82
  165. package/dist/src/mcp/test-simple.mjs +2 -1
  166. package/dist/src/mcp/toml-editor.d.mts +4 -0
  167. package/dist/src/mcp/toml-string.d.mts +1 -0
  168. package/dist/src/mcp/toml-string.mjs +9 -0
  169. package/dist/src/mcp/toml-strip-mcp.d.mts +1 -0
  170. package/dist/src/mcp/toml-strip-mcp.mjs +135 -0
  171. package/dist/src/mcp/tool-filters.d.mts +46 -0
  172. package/dist/src/mcp/tool-filters.mjs +357 -0
  173. package/dist/src/mcp/tools/agentic-sandbox.mjs +3 -1
  174. package/dist/src/mcp/tools/decision.mjs +22 -3
  175. package/dist/src/mcp/tools/discovery.mjs +62 -55
  176. package/dist/src/mcp/tools/orchestration.mjs +50 -2
  177. package/dist/src/mcp/tools/subsystems.mjs +39 -8
  178. package/dist/src/mcp/tools/worker-invoke.mjs +2856 -0
  179. package/dist/src/mcp/tools/worker-shell-control.mjs +289 -0
  180. package/dist/src/mcp/tools/worker-stdin-runtime.mjs +79 -0
  181. package/dist/src/memory/project-registry.js +2 -2
  182. package/dist/src/mission-protocol/codecs.js +647 -1
  183. package/dist/src/mission-protocol/types.js +110 -0
  184. package/dist/src/mission-protocol/worker-status.js +2 -0
  185. package/dist/src/models/config-loader.js +76 -14
  186. package/dist/src/models/grok-build-models.js +93 -41
  187. package/dist/src/models/model-capabilities.v1.json +3183 -24
  188. package/dist/src/models/model-discovery.js +931 -67
  189. package/dist/src/models/provider-policy.js +719 -11
  190. package/dist/src/models/qualification-digest.d.mts +2 -0
  191. package/dist/src/models/qualification-digest.mjs +17 -0
  192. package/dist/src/models/resolver.js +261 -0
  193. package/dist/src/models/worker-direct-readiness.js +550 -0
  194. package/dist/src/models/worker-dispatch-offer.js +169 -0
  195. package/dist/src/models/worker-health-readiness.js +144 -0
  196. package/dist/src/models/worker-installation.d.mts +39 -0
  197. package/dist/src/models/worker-installation.mjs +986 -0
  198. package/dist/src/models/wrapper-route.js +18 -0
  199. package/dist/src/ops/registry.js +9 -14
  200. package/dist/src/plugins/standalone-packager.js +4 -3
  201. package/dist/src/process/bounded-child-process.d.mts +84 -0
  202. package/dist/src/process/bounded-child-process.mjs +430 -0
  203. package/dist/src/process/cli-command.d.mts +16 -0
  204. package/dist/src/process/cli-command.mjs +75 -0
  205. package/dist/src/process/signal-child.d.mts +6 -0
  206. package/dist/src/process/signal-child.mjs +7 -0
  207. package/dist/src/providers/capability-matrix.js +8 -0
  208. package/dist/src/providers/capability-matrix.yaml +270 -0
  209. package/dist/src/providers/deployed-skill-roots.js +20 -0
  210. package/dist/src/providers/grok-build-acp.js +3 -2
  211. package/dist/src/providers/grok-build-headless.js +53 -23
  212. package/dist/src/providers/grok-build-inspect.js +1 -0
  213. package/dist/src/providers/omp-agent.d.mts +8 -0
  214. package/dist/src/providers/omp-diagnostics.d.mts +1 -0
  215. package/dist/src/providers/omp-paths.d.mts +13 -0
  216. package/dist/src/providers/provider-definitions.js +9 -1
  217. package/dist/src/providers/provider-definitions.mjs +9 -2
  218. package/dist/src/providers/skill-ownership.d.mts +9 -0
  219. package/dist/src/providers/skill-ownership.mjs +88 -0
  220. package/dist/src/rules/activation.d.mts +21 -0
  221. package/dist/src/rules/activation.mjs +62 -0
  222. package/dist/src/rules/inline-budget.d.mts +26 -0
  223. package/dist/src/rules/inline-budget.mjs +66 -0
  224. package/dist/src/rules/inventory.js +129 -0
  225. package/dist/src/rules/pin-state.js +73 -0
  226. package/dist/src/rules/pins.d.mts +14 -0
  227. package/dist/src/rules/pins.mjs +112 -0
  228. package/dist/src/rules/rule-frontmatter.schema.json +197 -0
  229. package/dist/src/serve/executor-registry.js +16 -24
  230. package/dist/src/serve/fleet-mission-conductor.js +9 -0
  231. package/dist/src/serve/mission-conductor.js +47 -12
  232. package/dist/src/serve/shared-host-scheduler.js +2 -0
  233. package/dist/src/serve/worker-invocation.js +558 -0
  234. package/dist/src/serve/worker-stdin-frame.d.mts +10 -0
  235. package/dist/src/serve/worker-stdin-frame.mjs +107 -0
  236. package/dist/src/sessions/adapter-registry.js +49 -0
  237. package/dist/src/sessions/adapters/claude.js +39 -54
  238. package/dist/src/sessions/adapters/codex.js +82 -67
  239. package/dist/src/sessions/adapters/copilot.js +4 -4
  240. package/dist/src/sessions/adapters/cursor.js +40 -57
  241. package/dist/src/sessions/adapters/deepseek-harness.js +15 -12
  242. package/dist/src/sessions/adapters/factory.js +31 -27
  243. package/dist/src/sessions/adapters/generic.js +43 -9
  244. package/dist/src/sessions/adapters/grok-build.js +11 -11
  245. package/dist/src/sessions/adapters/grokbot-locator.js +111 -0
  246. package/dist/src/sessions/adapters/grokbot.js +434 -24
  247. package/dist/src/sessions/adapters/hermes.js +27 -29
  248. package/dist/src/sessions/adapters/muse-workspace-scan.js +128 -0
  249. package/dist/src/sessions/adapters/muse.js +200 -104
  250. package/dist/src/sessions/adapters/omp.js +28 -14
  251. package/dist/src/sessions/adapters/openclaw.js +89 -79
  252. package/dist/src/sessions/adapters/opencode.js +27 -24
  253. package/dist/src/sessions/adapters/openhuman.js +18 -60
  254. package/dist/src/sessions/adapters/pi.js +30 -14
  255. package/dist/src/sessions/adapters/warp.js +3 -3
  256. package/dist/src/sessions/adapters/windsurf.js +19 -48
  257. package/dist/src/sessions/batch-contracts.js +25 -5
  258. package/dist/src/sessions/batch-import.js +72 -51
  259. package/dist/src/sessions/candidates.js +47 -11
  260. package/dist/src/sessions/contracts.js +75 -2
  261. package/dist/src/sessions/coverage-preflight.js +134 -0
  262. package/dist/src/sessions/discovery.js +3 -0
  263. package/dist/src/sessions/export-plan.js +4 -3
  264. package/dist/src/sessions/grok-build-cli.js +67 -5
  265. package/dist/src/sessions/import-exclusions.js +72 -0
  266. package/dist/src/sessions/import-lease.js +34 -18
  267. package/dist/src/sessions/import-limits.js +37 -0
  268. package/dist/src/sessions/importer.js +84 -46
  269. package/dist/src/sessions/index.js +2 -0
  270. package/dist/src/sessions/lifecycle.js +45 -0
  271. package/dist/src/sessions/policy.js +133 -25
  272. package/dist/src/sessions/readers.js +106 -53
  273. package/dist/src/sessions/refresh.js +106 -0
  274. package/dist/src/sessions/repository.js +199 -63
  275. package/dist/src/sessions/workspace-discovery.js +315 -88
  276. package/dist/src/sessions/workspace-matching.js +107 -0
  277. package/dist/src/skills/adapters/clawhub.js +10 -8
  278. package/dist/src/skills/adapters/openclaw.js +10 -7
  279. package/dist/src/skills/importer.js +1 -0
  280. package/dist/src/smiths/context-pipeline/aiwg-md.js +11 -0
  281. package/dist/src/smiths/context-pipeline/claude-hook.js +3 -26
  282. package/dist/src/smiths/context-pipeline/finalization.js +6 -5
  283. package/dist/src/smiths/context-pipeline/generator.js +21 -4
  284. package/dist/src/smiths/context-pipeline/parallelism-section.js +195 -14
  285. package/dist/src/smiths/context-pipeline/workspace-context.js +116 -9
  286. package/dist/src/smiths/hook-bridge/codex-translator.js +6 -5
  287. package/dist/src/smiths/mcpsmith/example.js +1 -1
  288. package/dist/src/smiths/mcpsmith/generator.js +1 -1
  289. package/dist/src/smiths/toolsmith/runtime-discovery.d.mts +10 -0
  290. package/dist/src/smiths/toolsmith/runtime-discovery.mjs +85 -31
  291. package/dist/src/storage/backends/fs.js +18 -76
  292. package/dist/src/storage/backends/logseq.js +68 -7
  293. package/dist/src/storage/backends/obsidian.js +1 -0
  294. package/dist/src/storage/fortemi-qualification-receipt.js +2 -2
  295. package/dist/src/testing/generators/test-code-generator.js +57 -30
  296. package/dist/src/tracker/forge-http.js +2 -1
  297. package/dist/src/uhp/client.js +11 -1
  298. package/dist/src/uhp/mission.js +5 -0
  299. package/dist/src/update/checker.d.mts +2 -0
  300. package/dist/src/update/checker.mjs +5 -5
  301. package/dist/src/update/notifier.mjs +54 -2
  302. package/dist/src/update/service.d.mts +22 -0
  303. package/dist/src/utils/contained-filesystem.d.mts +37 -0
  304. package/dist/src/utils/contained-filesystem.mjs +683 -0
  305. package/dist/src/utils/temporary-directory.js +36 -0
  306. package/dist/src/writing/example-generator.js +1 -1
  307. package/dist/src/writing/fidelity.js +18 -1
  308. package/package.json +32 -2
  309. package/schemas/mission-v1.schema.json +2429 -0
  310. package/schemas/models/model-catalog.v1.schema.json +301 -0
  311. package/schemas/models/model-config-compatibility.v1.schema.json +281 -0
  312. package/schemas/models/model-policy.v1.schema.json +14 -0
  313. package/schemas/models/provider-model-capabilities.v1.schema.json +1072 -0
  314. package/tools/_resolve-impl.mjs +39 -2
  315. package/tools/agents/deploy-agents.mjs +64 -23
  316. package/tools/agents/providers/base.mjs +153 -166
  317. package/tools/agents/providers/claude.mjs +8 -24
  318. package/tools/agents/providers/codex.mjs +18 -11
  319. package/tools/agents/providers/cursor.mjs +19 -18
  320. package/tools/agents/providers/grok-build.mjs +3 -1
  321. package/tools/agents/providers/grokbot.mjs +11 -12
  322. package/tools/agents/providers/hermes.mjs +62 -49
  323. package/tools/agents/providers/omp.mjs +5 -2
  324. package/tools/agents/providers/openclaw-translator.mjs +19 -5
  325. package/tools/agents/providers/openclaw.mjs +9 -4
  326. package/tools/agents/providers/pi.mjs +5 -0
  327. package/tools/agents/providers/provider-prepare-channel.mjs +5 -0
  328. package/tools/agents/providers/provider-prepare-coordinator.mjs +247 -0
  329. package/tools/agents/providers/provider-prepare-worker.mjs +84 -0
  330. package/tools/agents/providers/rule-delivery.mjs +1270 -0
  331. package/tools/agents/providers/warp.mjs +20 -26
  332. package/tools/cli/decision-offload-report.mjs +40 -0
  333. package/tools/cli/workspace-status.mjs +862 -0
  334. package/tools/plugin/package-plugins.mjs +186 -8
  335. package/tools/plugin/plugin-links.mjs +114 -0
  336. package/tools/providers/antigravity-transport.mjs +3 -1
  337. package/tools/providers/deepseek-harness-transport.mjs +360 -0
  338. package/tools/providers/omp-transport.mjs +194 -0
  339. package/tools/ralph-external/lib/claude-adapter.mjs +389 -0
  340. package/tools/ralph-external/lib/codex-adapter.mjs +432 -0
  341. package/tools/ralph-external/lib/consecutive-failure-circuit-breaker.mjs +1748 -0
  342. package/tools/ralph-external/lib/deepseek-harness-adapter.mjs +397 -0
  343. package/tools/ralph-external/lib/factory-adapter.mjs +503 -0
  344. package/tools/ralph-external/lib/launcher-recovery-evidence.mjs +55 -0
  345. package/tools/ralph-external/lib/muse-adapter.mjs +364 -0
  346. package/tools/ralph-external/lib/omp-adapter.mjs +315 -0
  347. package/tools/ralph-external/lib/opencode-adapter.mjs +575 -0
  348. package/tools/ralph-external/lib/openhuman-adapter.mjs +75 -0
  349. package/tools/ralph-external/lib/pi-adapter.mjs +329 -0
  350. package/tools/ralph-external/lib/provider-adapter.mjs +748 -0
  351. package/tools/ralph-external/lib/recovery-probe.mjs +72 -0
  352. package/tools/ralph-external/lib/session-environment.mjs +28 -0
  353. package/tools/ralph-external/lib/systemd-client.mjs +49 -0
  354. package/tools/ralph-external/lib/worker-health.mjs +439 -0
  355. package/tools/ralph-external/lib/worker-isolation.mjs +717 -0
  356. package/tools/ralph-external/lib/worker-overflow.mjs +50 -0
  357. package/tools/ralph-external/process-monitor.mjs +1017 -0
  358. package/tools/ralph-external/session-launcher.mjs +5057 -0
  359. package/tools/scripts/resource-preflight.mjs +541 -0
  360. package/tools/skills/deploy-skills-codex.mjs +2 -1
  361. package/vscode-extension/schemas/aiwg.config.v1.json +2916 -0
@@ -20,7 +20,7 @@ function findPackageRoot(callerUrl) {
20
20
  dir = parent;
21
21
  }
22
22
 
23
- throw new Error(`Could not locate AIWG package root from ${callerUrl}`);
23
+ throw Object.assign(new Error(`Could not locate AIWG package root from ${callerUrl}`), { code: 'AIWG_PACKAGE_ROOT_MISSING' });
24
24
  }
25
25
 
26
26
  function candidatesFor(root, relativeFromSrc, base) {
@@ -46,6 +46,43 @@ function resolveCandidate(root, relativeFromSrc, base) {
46
46
  *
47
47
  * Prefers dist/src/ when present. Set AIWG_RESOLVE_IMPL_FROM=dist or src to
48
48
  * force a side during CI/package-layout checks.
49
+ *
50
+ * ## Why a tools/ script that imports src/ needs this (#3062)
51
+ *
52
+ * The npm package ships the `tools/` tree (with maintainer-only exceptions
53
+ * below) and `dist/src/`; it does not ship `src/` itself (see `files` in
54
+ * package.json). A script under `tools/` that imports `../../src/<module>`
55
+ * directly by relative path works from a git checkout (`src/` exists
56
+ * there) but throws `ERR_MODULE_NOT_FOUND` once installed from npm, where
57
+ * only `dist/src/<module>` exists. Any shipped `.mjs` file under `tools/`
58
+ * or `bin/` that needs something under `src/` must resolve it through
59
+ * `importImpl(import.meta.url, '<module-path-relative-to-src>')` instead of
60
+ * a literal relative import, so it finds `dist/src/` when installed and
61
+ * `src/` in a checkout. `test/integration/tools-packed-relative-imports.test.ts`
62
+ * guards this for every shipped relative import without exceptions.
63
+ *
64
+ * Directories `package.json`'s `files` excludes from the npm package
65
+ * (`tools/benchmarks/`, `tools/ci/`, `tools/contrib/`,
66
+ * `tools/eval/`, `tools/lint/` other than its listed exceptions,
67
+ * `tools/manifest/` other than its listed exception, `tools/qualification/`,
68
+ * and `tools/release/`) are maintainer/CI-only: they never run from an
69
+ * installed package, so a literal `../../src/<module>` import there is
70
+ * fine and does not need `importImpl`. Keep that distinction explicit at
71
+ * each such import site rather than silently mixing styles within one
72
+ * shipped-vs-not-shipped directory. `tools/benchmarks/` and
73
+ * `tools/qualification/` were excluded specifically because nothing
74
+ * shipped ever referenced them (#3062 B/C finding 2) — removing them
75
+ * also trims install size (#3075).
76
+ *
77
+ * Decision study/replay scripts, experiments, OMP conformance probes, the
78
+ * desktop issuer qualification, and repository testing scripts are also
79
+ * excluded: they require checkout fixtures, development dependencies, or
80
+ * unshipped application code and have no installed CLI callers. Keep those
81
+ * scripts in the repository rather than adapting them for installation.
82
+ *
83
+ * `tools/docker/container-manager.mjs` and `Dockerfile.daemon` are shipped
84
+ * exceptions to the Docker directory exclusion: `aiwg daemon start --docker`
85
+ * needs both. The manager uses this resolver for its implementation import.
49
86
  */
50
87
  export function resolveImpl(callerUrl, relativeFromSrc) {
51
88
  const root = findPackageRoot(callerUrl);
@@ -65,7 +102,7 @@ export function resolveImpl(callerUrl, relativeFromSrc) {
65
102
  const attempted = order
66
103
  .flatMap((base) => candidatesFor(root, relativeFromSrc, base))
67
104
  .join(', ');
68
- throw new Error(`Could not resolve ${relativeFromSrc}; attempted: ${attempted}`);
105
+ throw Object.assign(new Error(`Could not resolve ${relativeFromSrc}; attempted: ${attempted}`), { code: 'AIWG_IMPLEMENTATION_MISSING' });
69
106
  }
70
107
 
71
108
  export async function importImpl(callerUrl, relativeFromSrc) {
@@ -11,13 +11,17 @@
11
11
  * Options:
12
12
  * --source <path> Source directory (defaults to repo root)
13
13
  * --target <path> Target directory (defaults to cwd)
14
+ * --scope <user|project> Deployment scope (default: project)
15
+ * --user Shorthand for --scope user
14
16
  * --mode <type> Deployment mode: general, sdlc, marketing (alias: mmk), media-curator, research, both, or all (default)
15
17
  * --deploy-commands Deploy commands in addition to agents
16
18
  * --deploy-skills Deploy skills in addition to agents
17
19
  * --deploy-rules Deploy rules in addition to agents
18
20
  * --commands-only Deploy only commands (skip agents)
19
21
  * --skills-only Deploy only skills (skip agents)
20
- * --rules-only Deploy only rules (skip agents)
22
+ * --strict Fail startup budget overruns before deployment promotion
23
+ --report-only Warn on startup budget overruns (migration default; CI remains strict)
24
+ --rules-only Deploy only rules (skip agents)
21
25
  * --dry-run Show what would be deployed without writing
22
26
  * --force Overwrite existing files
23
27
  * --provider <name> Target provider: antigravity (agy), claude (default), openai, codex, cursor, opencode, copilot, factory, grokbot, grok-build, muse, pi, omp, deepseek-harness (dsh), warp, devin, hermes, openhuman, or openclaw
@@ -187,7 +191,7 @@ function uniquePaths(paths) {
187
191
  return [...new Set(paths.filter(Boolean))];
188
192
  }
189
193
 
190
- function collectMirrorSkillDirs(srcRoot, mode) {
194
+ export function collectMirrorSkillDirs(srcRoot, mode, providerName) {
191
195
  const dirs = [];
192
196
 
193
197
  const directSkillsDir = path.join(srcRoot, 'skills');
@@ -206,7 +210,14 @@ function collectMirrorSkillDirs(srcRoot, mode) {
206
210
  });
207
211
  dirs.push(...artifacts.skills);
208
212
 
209
- if (mode === 'all') {
213
+ // Pi's provider collector already deploys all eligible addon skills for
214
+ // every root framework mode. Mirror the command-shaped addon skills in
215
+ // that same root pass so `aiwg use` does not need to repeat the entire
216
+ // deployment once per addon merely to produce these wrappers. Keep addon
217
+ // skills after framework skills: this preserves the existing per-addon
218
+ // winner when a framework and addon expose the same command name.
219
+ if (mode === 'all'
220
+ || (providerName === 'pi' && ['general', 'sdlc', 'both'].includes(mode))) {
210
221
  dirs.push(...getAddonSkillDirs(srcRoot));
211
222
  }
212
223
  }
@@ -292,7 +303,7 @@ function mirrorSkillsAsCommands(provider, target, srcRoot, opts) {
292
303
  const targetDir = resolveCommandMirrorDir(provider, target);
293
304
  if (!targetDir) return 0;
294
305
 
295
- const skillDirs = collectMirrorSkillDirs(srcRoot, opts.mode)
306
+ const skillDirs = collectMirrorSkillDirs(srcRoot, opts.mode, provider.name)
296
307
  .filter((dir) => shouldMirrorCommandSkill(provider.name, path.basename(dir)));
297
308
 
298
309
  if (skillDirs.length === 0) return 0;
@@ -472,10 +483,10 @@ function pruneStaleAiwgArtifacts(provider, target, srcRoot, opts, explicitSource
472
483
  // Argument Parsing
473
484
  // ============================================================================
474
485
 
475
- function parseArgs() {
476
- const args = process.argv.slice(2);
486
+ export function parseArgs(args = process.argv.slice(2)) {
477
487
  const cfg = {
478
488
  source: null,
489
+ userScope: false,
479
490
  target: process.cwd(),
480
491
  mode: 'all', // 'general', 'sdlc', 'marketing', 'media-curator', 'research', 'both' (legacy), or 'all'
481
492
  dryRun: false,
@@ -495,6 +506,8 @@ function parseArgs() {
495
506
  commandsOnly: false,
496
507
  skillsOnly: false,
497
508
  rulesOnly: false,
509
+ strict: false,
510
+ reportOnly: true,
498
511
  kernelOnly: false,
499
512
  filter: null, // Glob pattern for agent names
500
513
  filterRole: null, // Filter by role: reasoning|coding|efficiency
@@ -521,6 +534,14 @@ function parseArgs() {
521
534
  if (a === '--source' && args[i + 1]) cfg.source = path.resolve(args[++i]);
522
535
  else if (a === '--target' && args[i + 1]) cfg.target = path.resolve(args[++i]);
523
536
  else if (a === '--mode' && args[i + 1]) cfg.mode = String(args[++i]).toLowerCase();
537
+ else if (a === '--scope') {
538
+ const scope = args[++i];
539
+ if (scope !== 'user' && scope !== 'project') {
540
+ throw new Error(`--scope expected 'user' or 'project', got '${scope ?? '(missing)'}'`);
541
+ }
542
+ cfg.userScope = scope === 'user';
543
+ }
544
+ else if (a === '--user') cfg.userScope = true;
524
545
  else if (a === '--dry-run') cfg.dryRun = true;
525
546
  else if (a === '--force') cfg.force = true;
526
547
  else if ((a === '--provider' || a === '--platform') && args[i + 1]) cfg.provider = String(args[++i]).toLowerCase();
@@ -538,6 +559,9 @@ function parseArgs() {
538
559
  else if (a === '--commands-only') cfg.commandsOnly = true;
539
560
  else if (a === '--skills-only') cfg.skillsOnly = true;
540
561
  else if (a === '--rules-only') cfg.rulesOnly = true;
562
+ else if (a === '--strict') { cfg.strict = true; cfg.reportOnly = false; }
563
+ else if (a === '--allow-over-budget') cfg.allowOverBudget = true;
564
+ else if (a === '--report-only') cfg.reportOnly = true;
541
565
  else if (a === '--kernel-only') cfg.kernelOnly = true;
542
566
  else if (a === '--deploy-behaviors') cfg.deployBehaviors = true;
543
567
  else if (a === '--filter' && args[i + 1]) cfg.filter = args[++i];
@@ -577,6 +601,8 @@ Usage:
577
601
  Options:
578
602
  --source <path> Source directory (defaults to repo root)
579
603
  --target <path> Target directory (defaults to cwd)
604
+ --scope <user|project> Deployment scope (default: project)
605
+ --user Shorthand for --scope user
580
606
  --mode <type> Deployment mode: general, sdlc, marketing (alias: mmk), media-curator, research, both, or all (default)
581
607
  --deploy-commands Deploy commands in addition to agents
582
608
  --deploy-skills Deploy skills in addition to agents
@@ -920,8 +946,8 @@ async function promptCommandsMigration(cfg, provider, targetDir) {
920
946
  // Main Entry Point
921
947
  // ============================================================================
922
948
 
923
- export async function main() {
924
- const cfg = parseArgs();
949
+ export async function main(args = process.argv.slice(2), internal = {}) {
950
+ const cfg = parseArgs(args);
925
951
 
926
952
  // Resolve source directory (default to repo root relative to this script)
927
953
  const __filename = fileURLToPath(import.meta.url);
@@ -1000,6 +1026,7 @@ export async function main() {
1000
1026
  const opts = {
1001
1027
  srcRoot,
1002
1028
  target: cfg.target,
1029
+ ...(cfg.userScope ? { userScope: true } : {}),
1003
1030
  mode: cfg.mode,
1004
1031
  // Provider aliases are selectors, not artifact identities. Passing the
1005
1032
  // canonical id keeps generated frontmatter byte-identical for devin,
@@ -1020,6 +1047,9 @@ export async function main() {
1020
1047
  commandsOnly: cfg.commandsOnly,
1021
1048
  skillsOnly: cfg.skillsOnly || cfg.kernelOnly,
1022
1049
  rulesOnly: cfg.rulesOnly,
1050
+ strict: cfg.strict,
1051
+ reportOnly: cfg.reportOnly,
1052
+ allowOverBudget: cfg.allowOverBudget === true,
1023
1053
  kernelOnly: cfg.kernelOnly,
1024
1054
  filter: cfg.filter,
1025
1055
  filterRole: cfg.filterRole,
@@ -1043,31 +1073,41 @@ export async function main() {
1043
1073
  deployVersion: cfg.deployVersion || getDeployVersion(srcRoot),
1044
1074
  deploySource: cfg.deploySource || 'bundled',
1045
1075
  };
1076
+ const { isRuleDeploymentPreparationActive } = await import('./providers/rule-delivery.mjs');
1077
+ const preparationActive = isRuleDeploymentPreparationActive();
1046
1078
 
1047
1079
  // Commands → Skills migration: prompt then delete the commands directory
1048
1080
  // so stale command files don't create duplicates in the provider TUI.
1049
- if (!cfg.dryRun && !cfg.skipCommandsMigration) {
1050
- const doMigrate = await promptCommandsMigration(cfg, provider, cfg.target);
1051
- if (doMigrate) {
1081
+ if (!preparationActive && !internal.finalizeOnly) {
1082
+ if (!cfg.dryRun && !cfg.skipCommandsMigration) {
1083
+ const doMigrate = await promptCommandsMigration(cfg, provider, cfg.target);
1084
+ if (doMigrate) {
1085
+ const commandsRelPath = provider.paths?.commands;
1086
+ if (commandsRelPath) {
1087
+ migrateCommandsDirectory(path.join(cfg.target, commandsRelPath), opts);
1088
+ }
1089
+ } else {
1090
+ // User said no — flip the flag so the provider knows to emit the duplicate warning
1091
+ opts.skipCommandsMigration = true;
1092
+ }
1093
+ } else if (cfg.skipCommandsMigration) {
1094
+ // Flag was passed explicitly — emit the duplicate warning now via a dry migration call
1052
1095
  const commandsRelPath = provider.paths?.commands;
1053
- if (commandsRelPath) {
1096
+ if (commandsRelPath && !provider.capabilities?.homeDirectoryDeploy) {
1054
1097
  migrateCommandsDirectory(path.join(cfg.target, commandsRelPath), opts);
1055
1098
  }
1056
- } else {
1057
- // User said no — flip the flag so the provider knows to emit the duplicate warning
1058
- opts.skipCommandsMigration = true;
1059
- }
1060
- } else if (cfg.skipCommandsMigration) {
1061
- // Flag was passed explicitly — emit the duplicate warning now via a dry migration call
1062
- const commandsRelPath = provider.paths?.commands;
1063
- if (commandsRelPath && !provider.capabilities?.homeDirectoryDeploy) {
1064
- migrateCommandsDirectory(path.join(cfg.target, commandsRelPath), opts);
1065
1099
  }
1066
1100
  }
1067
1101
 
1102
+ // Concurrent deployment runs this parent-owned preflight before any child
1103
+ // snapshots its inputs. Migration can remove a provider command tree, so it
1104
+ // must remain on the same side of the transaction boundary as serial deploy.
1105
+ if (internal.preflightOnly) return;
1106
+
1068
1107
  // Delegate to provider
1069
1108
  try {
1070
- await provider.deploy(opts);
1109
+ if (!internal.finalizeOnly) await provider.deploy(opts);
1110
+ if (preparationActive) return;
1071
1111
 
1072
1112
  const mirroredCommandCount = mirrorSkillsAsCommands(provider, cfg.target, srcRoot, opts);
1073
1113
  if (mirroredCommandCount > 0 && !cfg.quiet) {
@@ -1078,7 +1118,7 @@ export async function main() {
1078
1118
  // or removed (the flat-file analogue of the skills holistic prune). #1627.
1079
1119
  pruneStaleAiwgArtifacts(provider, cfg.target, srcRoot, opts, cfg.source);
1080
1120
 
1081
- if (!opts.commandsOnly && !opts.skillsOnly && !opts.rulesOnly) {
1121
+ if (!['claude', 'codex', 'cursor', 'hermes', 'warp', 'openclaw'].includes(provider.name) && !opts.commandsOnly && !opts.skillsOnly && !opts.rulesOnly) {
1082
1122
  const behaviorDirs = collectBehaviorDirs(srcRoot);
1083
1123
  const behaviorCount = deployEmulatedBehaviors(behaviorDirs, provider.name, cfg.target, opts);
1084
1124
  if (behaviorCount > 0 && !cfg.quiet) {
@@ -1093,6 +1133,7 @@ export async function main() {
1093
1133
 
1094
1134
  if (!cfg.quiet) console.log(`\n=== Deployment complete ===\n`);
1095
1135
  } catch (err) {
1136
+ if (preparationActive || internal.finalizeOnly) throw err;
1096
1137
  console.error(`\nDeployment failed:`, err.message);
1097
1138
  if (cfg.dryRun) {
1098
1139
  console.error('(dry-run mode - no files were modified)');