@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.17

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 (466) hide show
  1. package/README.md +21 -1
  2. package/bin/aiwg.mjs +349 -0
  3. package/dist/src/a2a/agent-card.js +145 -0
  4. package/dist/src/a2a/client.js +411 -0
  5. package/dist/src/a2a/hitl-cli.js +171 -0
  6. package/dist/src/a2a/hitl-driver.js +370 -0
  7. package/dist/src/a2a/hitl.js +181 -0
  8. package/dist/src/a2a/http.js +193 -0
  9. package/dist/src/a2a/jcs.js +128 -0
  10. package/dist/src/a2a/jws.js +187 -0
  11. package/dist/src/a2a/types.js +24 -0
  12. package/dist/src/a2a/webhook.js +240 -0
  13. package/dist/src/activity-log/cli.js +348 -0
  14. package/dist/src/activity-log/parser.js +81 -0
  15. package/dist/src/activity-log/types.js +50 -0
  16. package/dist/src/agents/agent-deployer.js +367 -0
  17. package/dist/src/agents/agent-packager.js +271 -0
  18. package/dist/src/agents/agent-validator.js +271 -0
  19. package/dist/src/agents/grounding/knowledge-base.js +161 -0
  20. package/dist/src/agents/grounding/types.js +12 -0
  21. package/dist/src/agents/index.js +10 -0
  22. package/dist/src/agents/packaged-agent-inventory.js +75 -0
  23. package/dist/src/agents/types.js +7 -0
  24. package/dist/src/api/index.d.ts +10 -0
  25. package/dist/src/api/index.js +10 -0
  26. package/dist/src/artifacts/address-parser.js +73 -0
  27. package/dist/src/artifacts/audit/cli.js +183 -0
  28. package/dist/src/artifacts/audit/drift.js +122 -0
  29. package/dist/src/artifacts/audit/types.js +12 -0
  30. package/dist/src/artifacts/backends/graphology-backend.js +160 -0
  31. package/dist/src/artifacts/backends/json-backend.js +129 -0
  32. package/dist/src/artifacts/backends/sqlite-backend.js +199 -0
  33. package/dist/src/artifacts/browser-export.js +622 -0
  34. package/dist/src/artifacts/capability-resolver.js +94 -0
  35. package/dist/src/artifacts/checksum-manifest.js +91 -0
  36. package/dist/src/artifacts/citation-parser.js +162 -0
  37. package/dist/src/artifacts/cli.js +1462 -0
  38. package/dist/src/artifacts/corpus-tools/citation-densify.js +311 -0
  39. package/dist/src/artifacts/corpus-tools/cli.js +393 -0
  40. package/dist/src/artifacts/corpus-tools/corpus-graph.js +225 -0
  41. package/dist/src/artifacts/corpus-tools/curator.js +186 -0
  42. package/dist/src/artifacts/corpus-tools/discovery-log.js +70 -0
  43. package/dist/src/artifacts/corpus-tools/funder-network.js +141 -0
  44. package/dist/src/artifacts/corpus-tools/induction-audit.js +233 -0
  45. package/dist/src/artifacts/corpus-tools/integrity-scan.js +202 -0
  46. package/dist/src/artifacts/corpus-tools/profile-communities.js +166 -0
  47. package/dist/src/artifacts/corpus-tools/profile-edges.js +72 -0
  48. package/dist/src/artifacts/corpus-tools/profile-embed.js +113 -0
  49. package/dist/src/artifacts/corpus-tools/profile-generate-fm.js +167 -0
  50. package/dist/src/artifacts/corpus-tools/profile-generate.js +181 -0
  51. package/dist/src/artifacts/corpus-tools/profile-metrics.js +98 -0
  52. package/dist/src/artifacts/corpus-tools/profile-status.js +86 -0
  53. package/dist/src/artifacts/corpus-tools/profile-temporal.js +139 -0
  54. package/dist/src/artifacts/corpus-tools/radar-init.js +93 -0
  55. package/dist/src/artifacts/corpus-tools/radar-report.js +118 -0
  56. package/dist/src/artifacts/corpus-tools/radar-shared.js +189 -0
  57. package/dist/src/artifacts/corpus-tools/radar-status.js +68 -0
  58. package/dist/src/artifacts/corpus-tools/sidecar-lint.js +233 -0
  59. package/dist/src/artifacts/corpus-tools/sidecar-repair.js +277 -0
  60. package/dist/src/artifacts/corpus-tools/snapshot.js +591 -0
  61. package/dist/src/artifacts/corpus-tools/source-types.js +164 -0
  62. package/dist/src/artifacts/corpus-tools/vision-extract.js +243 -0
  63. package/dist/src/artifacts/corpus-views/build.js +126 -0
  64. package/dist/src/artifacts/corpus-views/corpus-config.js +124 -0
  65. package/dist/src/artifacts/corpus-views/ref-parser.js +437 -0
  66. package/dist/src/artifacts/corpus-views/renderers.js +353 -0
  67. package/dist/src/artifacts/corpus-views/taxonomies.js +131 -0
  68. package/dist/src/artifacts/dep-graph.js +173 -0
  69. package/dist/src/artifacts/discover-facets.js +375 -0
  70. package/dist/src/artifacts/embedding-index.js +354 -0
  71. package/dist/src/artifacts/enrichment/cli.js +240 -0
  72. package/dist/src/artifacts/enrichment/prompt.js +47 -0
  73. package/dist/src/artifacts/enrichment/store.js +90 -0
  74. package/dist/src/artifacts/enrichment/types.js +12 -0
  75. package/dist/src/artifacts/fortemi-core-query-adapter.js +475 -0
  76. package/dist/src/artifacts/fortemi-core-sync.js +251 -0
  77. package/dist/src/artifacts/fortemi-shard-export.js +44 -0
  78. package/dist/src/artifacts/fulltext.js +108 -0
  79. package/dist/src/artifacts/graph-backend.js +51 -0
  80. package/dist/src/artifacts/graph-query.js +247 -0
  81. package/dist/src/artifacts/hybrid-query.js +225 -0
  82. package/dist/src/artifacts/index-builder.js +1089 -0
  83. package/dist/src/artifacts/index-reader.js +112 -0
  84. package/dist/src/artifacts/index-status.js +193 -0
  85. package/dist/src/artifacts/legacy-index-migration.js +169 -0
  86. package/dist/src/artifacts/move.js +154 -0
  87. package/dist/src/artifacts/operational-state.js +239 -0
  88. package/dist/src/artifacts/prebuilt-build-lock.js +49 -0
  89. package/dist/src/artifacts/query-engine.js +1955 -0
  90. package/dist/src/artifacts/source-graph.js +529 -0
  91. package/dist/src/artifacts/stats.js +169 -0
  92. package/dist/src/artifacts/types.js +606 -0
  93. package/dist/src/artifacts/views/cli.js +293 -0
  94. package/dist/src/artifacts/views/definition.js +170 -0
  95. package/dist/src/artifacts/views/store.js +149 -0
  96. package/dist/src/artifacts/views/types.js +8 -0
  97. package/dist/src/artifacts/watcher.js +255 -0
  98. package/dist/src/catalog/builtin-models.json +636 -0
  99. package/dist/src/catalog/cli.js +228 -0
  100. package/dist/src/catalog/cli.mjs +289 -0
  101. package/dist/src/catalog/index.js +15 -0
  102. package/dist/src/catalog/loader.js +217 -0
  103. package/dist/src/catalog/loader.mjs +251 -0
  104. package/dist/src/catalog/sources.json +41 -0
  105. package/dist/src/catalog/types.js +8 -0
  106. package/dist/src/channel/manager.mjs +504 -0
  107. package/dist/src/cli/agent-spawn.js +178 -0
  108. package/dist/src/cli/cli-extension-loader.js +245 -0
  109. package/dist/src/cli/command-log.js +275 -0
  110. package/dist/src/cli/config-loader.js +232 -0
  111. package/dist/src/cli/env.js +82 -0
  112. package/dist/src/cli/errors.js +150 -0
  113. package/dist/src/cli/find-package-root.js +40 -0
  114. package/dist/src/cli/git-hooks.js +250 -0
  115. package/dist/src/cli/handlers/agentcard.js +206 -0
  116. package/dist/src/cli/handlers/artifacts.js +76 -0
  117. package/dist/src/cli/handlers/best-practices-audit.js +280 -0
  118. package/dist/src/cli/handlers/cockpit.js +137 -0
  119. package/dist/src/cli/handlers/command-log.js +37 -0
  120. package/dist/src/cli/handlers/daemon.js +59 -0
  121. package/dist/src/cli/handlers/diagnose.js +300 -0
  122. package/dist/src/cli/handlers/execution-mode.js +105 -0
  123. package/dist/src/cli/handlers/feedback.js +341 -0
  124. package/dist/src/cli/handlers/help.js +147 -0
  125. package/dist/src/cli/handlers/index.js +302 -0
  126. package/dist/src/cli/handlers/init.js +179 -0
  127. package/dist/src/cli/handlers/install.js +129 -0
  128. package/dist/src/cli/handlers/issues.js +46 -0
  129. package/dist/src/cli/handlers/lint.js +42 -0
  130. package/dist/src/cli/handlers/local-executor.js +315 -0
  131. package/dist/src/cli/handlers/marketplace.js +168 -0
  132. package/dist/src/cli/handlers/mc.js +1010 -0
  133. package/dist/src/cli/handlers/models.js +352 -0
  134. package/dist/src/cli/handlers/packages.js +155 -0
  135. package/dist/src/cli/handlers/ralph-launcher.js +717 -0
  136. package/dist/src/cli/handlers/ralph.js +575 -0
  137. package/dist/src/cli/handlers/refresh.js +432 -0
  138. package/dist/src/cli/handlers/regenerate.js +336 -0
  139. package/dist/src/cli/handlers/repo-access.js +109 -0
  140. package/dist/src/cli/handlers/run.js +165 -0
  141. package/dist/src/cli/handlers/runtime-info.js +301 -0
  142. package/dist/src/cli/handlers/sandbox.js +197 -0
  143. package/dist/src/cli/handlers/scaffolding.js +149 -0
  144. package/dist/src/cli/handlers/script-runner.js +121 -0
  145. package/dist/src/cli/handlers/sdlc-accelerate.js +148 -0
  146. package/dist/src/cli/handlers/serve.js +1835 -0
  147. package/dist/src/cli/handlers/session.js +348 -0
  148. package/dist/src/cli/handlers/setup.js +440 -0
  149. package/dist/src/cli/handlers/skill-lint.js +367 -0
  150. package/dist/src/cli/handlers/skill-usage.js +74 -0
  151. package/dist/src/cli/handlers/steward.js +567 -0
  152. package/dist/src/cli/handlers/subcommands.js +1702 -0
  153. package/dist/src/cli/handlers/team.js +337 -0
  154. package/dist/src/cli/handlers/types.js +11 -0
  155. package/dist/src/cli/handlers/use.js +2772 -0
  156. package/dist/src/cli/handlers/utilities.js +703 -0
  157. package/dist/src/cli/handlers/version.js +134 -0
  158. package/dist/src/cli/handlers/workspace-context.js +93 -0
  159. package/dist/src/cli/handlers/workspace.js +126 -0
  160. package/dist/src/cli/help-generator.js +178 -0
  161. package/dist/src/cli/hooks/builtin/activity-log-hook.js +126 -0
  162. package/dist/src/cli/hooks/executor.js +96 -0
  163. package/dist/src/cli/hooks/index.js +15 -0
  164. package/dist/src/cli/hooks/registry.js +143 -0
  165. package/dist/src/cli/hooks/types.js +13 -0
  166. package/dist/src/cli/log.js +492 -0
  167. package/dist/src/cli/project-isolation/detect.js +70 -0
  168. package/dist/src/cli/project-isolation/index.js +7 -0
  169. package/dist/src/cli/project-isolation/signals.js +17 -0
  170. package/dist/src/cli/project-isolation/warning.js +102 -0
  171. package/dist/src/cli/prompt-utils.js +155 -0
  172. package/dist/src/cli/provider-deployment-plan.js +126 -0
  173. package/dist/src/cli/provider-resolution.js +119 -0
  174. package/dist/src/cli/router.js +305 -0
  175. package/dist/src/cli/scope-resolver.js +392 -0
  176. package/dist/src/cli/skill-usage.js +616 -0
  177. package/dist/src/cli/ui.js +224 -0
  178. package/dist/src/cli/watch-service.js +203 -0
  179. package/dist/src/cli/workflow-orchestrator.js +478 -0
  180. package/dist/src/cli/workspace-signals.js +321 -0
  181. package/dist/src/community/footer.js +14 -0
  182. package/dist/src/community/links.js +123 -0
  183. package/dist/src/community/milestones.js +46 -0
  184. package/dist/src/community/nudge-policy.js +93 -0
  185. package/dist/src/config/aiwg-config.js +883 -0
  186. package/dist/src/config/cli.js +703 -0
  187. package/dist/src/config/gitignore.js +156 -0
  188. package/dist/src/config/project-artifacts.js +76 -0
  189. package/dist/src/config/user-config.js +428 -0
  190. package/dist/src/config/user-registry.js +127 -0
  191. package/dist/src/config/workspace.js +276 -0
  192. package/dist/src/contributors/detect.js +39 -0
  193. package/dist/src/contributors/discover.js +172 -0
  194. package/dist/src/contributors/heuristic.js +186 -0
  195. package/dist/src/contributors/index.js +11 -0
  196. package/dist/src/contributors/types.js +13 -0
  197. package/dist/src/contributors/validation.js +116 -0
  198. package/dist/src/data/community.schema.json +43 -0
  199. package/dist/src/data/community.yaml +16 -0
  200. package/dist/src/extensions/capability-index.js +270 -0
  201. package/dist/src/extensions/claude-hooks-installer.js +268 -0
  202. package/dist/src/extensions/commands/definitions.js +3485 -0
  203. package/dist/src/extensions/deployment-registration.js +463 -0
  204. package/dist/src/extensions/index.js +22 -0
  205. package/dist/src/extensions/loader.js +132 -0
  206. package/dist/src/extensions/managed-marker.js +100 -0
  207. package/dist/src/extensions/manifest.js +196 -0
  208. package/dist/src/extensions/project-local-activity.js +114 -0
  209. package/dist/src/extensions/project-local-discovery.js +261 -0
  210. package/dist/src/extensions/project-local-doctor.js +281 -0
  211. package/dist/src/extensions/project-local-gitignore.js +176 -0
  212. package/dist/src/extensions/project-local-paths.js +121 -0
  213. package/dist/src/extensions/project-local-promote.js +218 -0
  214. package/dist/src/extensions/project-local-remove.js +373 -0
  215. package/dist/src/extensions/project-local-scaffold.js +252 -0
  216. package/dist/src/extensions/project-quickref.js +291 -0
  217. package/dist/src/extensions/registry.js +368 -0
  218. package/dist/src/extensions/shadow-resolver.js +271 -0
  219. package/dist/src/extensions/types.js +86 -0
  220. package/dist/src/extensions/upstream-registry.js +195 -0
  221. package/dist/src/extensions/validation.js +631 -0
  222. package/dist/src/features/catalog.js +88 -0
  223. package/dist/src/features/cli.js +197 -0
  224. package/dist/src/features/installer.js +57 -0
  225. package/dist/src/features/paths.js +14 -0
  226. package/dist/src/features/runtime.js +21 -0
  227. package/dist/src/features/status.js +134 -0
  228. package/dist/src/hooks/laziness-detection.js +532 -0
  229. package/dist/src/intake/git-history-analyzer.js +486 -0
  230. package/dist/src/intake/index.js +9 -0
  231. package/dist/src/issues/cli.js +327 -0
  232. package/dist/src/issues/index.js +5 -0
  233. package/dist/src/issues/live.js +154 -0
  234. package/dist/src/issues/local.js +666 -0
  235. package/dist/src/issues/sync.js +143 -0
  236. package/dist/src/issues/types.js +2 -0
  237. package/dist/src/issues/workflows.js +164 -0
  238. package/dist/src/kb/cli.js +173 -0
  239. package/dist/src/lint/cli.js +171 -0
  240. package/dist/src/lint/loader.js +225 -0
  241. package/dist/src/lint/reporters.js +141 -0
  242. package/dist/src/lint/runner.js +364 -0
  243. package/dist/src/lint/types.js +10 -0
  244. package/dist/src/marketplace/cache.js +110 -0
  245. package/dist/src/marketplace/identifier.js +63 -0
  246. package/dist/src/marketplace/registry.js +36 -0
  247. package/dist/src/marketplace/sources/clawhub.js +53 -0
  248. package/dist/src/marketplace/sources/git.js +45 -0
  249. package/dist/src/marketplace/types.js +9 -0
  250. package/dist/src/mcp/adapters/codex-runtime.js +224 -0
  251. package/dist/src/mcp/cli.mjs +1197 -0
  252. package/dist/src/mcp/elicitation.mjs +149 -0
  253. package/dist/src/mcp/helpers.mjs +287 -0
  254. package/dist/src/mcp/index.mjs +11 -0
  255. package/dist/src/mcp/profiles.js +263 -0
  256. package/dist/src/mcp/profiles.mjs +360 -0
  257. package/dist/src/mcp/registry.js +376 -0
  258. package/dist/src/mcp/registry.mjs +387 -0
  259. package/dist/src/mcp/server.mjs +633 -0
  260. package/dist/src/mcp/test-simple.mjs +271 -0
  261. package/dist/src/mcp/tools/command-run.mjs +101 -0
  262. package/dist/src/mcp/tools/discovery.mjs +291 -0
  263. package/dist/src/mcp/tools/interaction.mjs +87 -0
  264. package/dist/src/mcp/tools/orchestration.mjs +320 -0
  265. package/dist/src/mcp/tools/subsystems.mjs +640 -0
  266. package/dist/src/memory/cli.js +166 -0
  267. package/dist/src/memory/project-registry.js +282 -0
  268. package/dist/src/metrics/artifact-metrics.js +184 -0
  269. package/dist/src/metrics/context-budget.js +174 -0
  270. package/dist/src/metrics/token-counter.js +133 -0
  271. package/dist/src/models/config-loader.js +228 -0
  272. package/dist/src/models/index.js +22 -0
  273. package/dist/src/models/model-capabilities.v1.json +120 -0
  274. package/dist/src/models/model-catalog.v1.json +96 -0
  275. package/dist/src/models/model-discovery.js +521 -0
  276. package/dist/src/models/provider-models.js +73 -0
  277. package/dist/src/models/provider-policy.js +273 -0
  278. package/dist/src/models/resolver.js +245 -0
  279. package/dist/src/models/router.js +70 -0
  280. package/dist/src/models/types.js +8 -0
  281. package/dist/src/models/wrapper-deployment.js +178 -0
  282. package/dist/src/models/wrapper-route.js +54 -0
  283. package/dist/src/ops/cli.js +268 -0
  284. package/dist/src/ops/registry.js +623 -0
  285. package/dist/src/packages/adapters/clawhub.js +113 -0
  286. package/dist/src/packages/adapters/git.js +153 -0
  287. package/dist/src/packages/adapters/gitea.js +93 -0
  288. package/dist/src/packages/adapters/github.js +69 -0
  289. package/dist/src/packages/adapters/local-cache.js +89 -0
  290. package/dist/src/packages/package-registry.js +143 -0
  291. package/dist/src/packages/registry.js +238 -0
  292. package/dist/src/packages/types.js +11 -0
  293. package/dist/src/plugin/cross-framework-ops.js +475 -0
  294. package/dist/src/plugin/framework-config-loader.js +235 -0
  295. package/dist/src/plugin/framework-detector.js +186 -0
  296. package/dist/src/plugin/framework-isolator.js +341 -0
  297. package/dist/src/plugin/framework-migration.js +371 -0
  298. package/dist/src/plugin/metadata-validator.js +906 -0
  299. package/dist/src/plugin/plugin-installer.js +436 -0
  300. package/dist/src/plugin/plugin-status.js +369 -0
  301. package/dist/src/plugin/plugin-uninstaller.js +473 -0
  302. package/dist/src/plugin/registry-validator.js +344 -0
  303. package/dist/src/plugin/skill-command-translator.js +415 -0
  304. package/dist/src/plugin/workspace-creator.js +189 -0
  305. package/dist/src/plugin/workspace-migrator.js +821 -0
  306. package/dist/src/policy/authorization.js +390 -0
  307. package/dist/src/policy/repo-access.js +215 -0
  308. package/dist/src/provenance/cli.js +16 -0
  309. package/dist/src/providers/capability-matrix.js +300 -0
  310. package/dist/src/providers/capability-matrix.yaml +514 -0
  311. package/dist/src/providers/provider-definitions.js +977 -0
  312. package/dist/src/providers/provider-definitions.mjs +159 -0
  313. package/dist/src/providers/provider-inventory.js +169 -0
  314. package/dist/src/quality/feedback-ab.js +174 -0
  315. package/dist/src/quality/feedback-collector.js +176 -0
  316. package/dist/src/quality/feedback-tracker.js +123 -0
  317. package/dist/src/quality/patterns/adr.json +24 -0
  318. package/dist/src/quality/patterns/sad.json +24 -0
  319. package/dist/src/quality/patterns/test-plan.json +24 -0
  320. package/dist/src/quality/patterns/use-case.json +24 -0
  321. package/dist/src/quality/scoring.js +157 -0
  322. package/dist/src/reflections/cli.js +15 -0
  323. package/dist/src/release/plan.js +139 -0
  324. package/dist/src/research/cache/manager.js +227 -0
  325. package/dist/src/research/clients/arxiv.js +156 -0
  326. package/dist/src/research/clients/base.js +197 -0
  327. package/dist/src/research/clients/crossref.js +112 -0
  328. package/dist/src/research/clients/semantic-scholar.js +126 -0
  329. package/dist/src/research/clients/unpaywall.js +87 -0
  330. package/dist/src/research/index.js +14 -0
  331. package/dist/src/research/query-cli.js +336 -0
  332. package/dist/src/research/services/acquisition.js +313 -0
  333. package/dist/src/research/services/archival.js +225 -0
  334. package/dist/src/research/services/citation.js +279 -0
  335. package/dist/src/research/services/discovery.js +243 -0
  336. package/dist/src/research/services/documentation.js +269 -0
  337. package/dist/src/research/services/index.js +14 -0
  338. package/dist/src/research/services/provenance.js +279 -0
  339. package/dist/src/research/services/quality.js +370 -0
  340. package/dist/src/research/services/types.js +7 -0
  341. package/dist/src/research/storage-cli.js +20 -0
  342. package/dist/src/research/types.js +47 -0
  343. package/dist/src/resources/index.d.ts +2 -0
  344. package/dist/src/resources/index.js +2 -0
  345. package/dist/src/resources/web-release.d.ts +89 -0
  346. package/dist/src/resources/web-release.js +882 -0
  347. package/dist/src/rlm/cache/cli.js +162 -0
  348. package/dist/src/rlm/cache/hash.js +35 -0
  349. package/dist/src/rlm/cache/store.js +170 -0
  350. package/dist/src/rlm/cache/types.js +8 -0
  351. package/dist/src/rlm/cli.js +650 -0
  352. package/dist/src/serve/a2a-terminal-observer.js +120 -0
  353. package/dist/src/serve/agent-router.js +205 -0
  354. package/dist/src/serve/dispatch-router.js +171 -0
  355. package/dist/src/serve/executor-registry.js +715 -0
  356. package/dist/src/serve/mission-conductor.js +177 -0
  357. package/dist/src/serve/orchestrator-adapter.js +113 -0
  358. package/dist/src/serve/orchestrator-override.js +94 -0
  359. package/dist/src/serve/orchestrator-pty.js +133 -0
  360. package/dist/src/serve/pty-bridge.js +799 -0
  361. package/dist/src/serve/sandbox-registry.js +832 -0
  362. package/dist/src/serve/screen-reader.js +228 -0
  363. package/dist/src/serve/stack-adapters.js +68 -0
  364. package/dist/src/serve/telemetry.js +143 -0
  365. package/dist/src/skills/adapters/clawhub.js +250 -0
  366. package/dist/src/skills/adapters/local.js +335 -0
  367. package/dist/src/skills/adapters/openclaw.js +316 -0
  368. package/dist/src/skills/cli.js +334 -0
  369. package/dist/src/skills/registry.js +117 -0
  370. package/dist/src/skills/run.js +259 -0
  371. package/dist/src/skills/runtime.js +94 -0
  372. package/dist/src/skills/types.js +10 -0
  373. package/dist/src/smiths/agentsmith/demo.js +116 -0
  374. package/dist/src/smiths/agentsmith/examples.js +300 -0
  375. package/dist/src/smiths/agentsmith/generator.js +503 -0
  376. package/dist/src/smiths/agentsmith/index.js +11 -0
  377. package/dist/src/smiths/agentsmith/types.js +8 -0
  378. package/dist/src/smiths/commandsmith/example.js +220 -0
  379. package/dist/src/smiths/commandsmith/generator.js +288 -0
  380. package/dist/src/smiths/commandsmith/index.js +41 -0
  381. package/dist/src/smiths/commandsmith/templates.js +296 -0
  382. package/dist/src/smiths/commandsmith/types.js +7 -0
  383. package/dist/src/smiths/context-pipeline/aiwg-md.js +104 -0
  384. package/dist/src/smiths/context-pipeline/allowlist.js +195 -0
  385. package/dist/src/smiths/context-pipeline/claude-hook.js +127 -0
  386. package/dist/src/smiths/context-pipeline/discovery.js +187 -0
  387. package/dist/src/smiths/context-pipeline/external-links-section.js +49 -0
  388. package/dist/src/smiths/context-pipeline/finalization.js +147 -0
  389. package/dist/src/smiths/context-pipeline/generator.js +477 -0
  390. package/dist/src/smiths/context-pipeline/index.js +30 -0
  391. package/dist/src/smiths/context-pipeline/legacy-inject.js +103 -0
  392. package/dist/src/smiths/context-pipeline/managed-hook.js +95 -0
  393. package/dist/src/smiths/context-pipeline/overflow.js +212 -0
  394. package/dist/src/smiths/context-pipeline/parallelism-section.js +94 -0
  395. package/dist/src/smiths/context-pipeline/provider-policy.js +64 -0
  396. package/dist/src/smiths/context-pipeline/sanitizer.js +93 -0
  397. package/dist/src/smiths/context-pipeline/types.js +23 -0
  398. package/dist/src/smiths/context-pipeline/workspace-context.js +988 -0
  399. package/dist/src/smiths/hook-bridge/codex-translator.js +129 -0
  400. package/dist/src/smiths/hook-bridge/copilot-translator.js +64 -0
  401. package/dist/src/smiths/hook-bridge/factory-translator.js +43 -0
  402. package/dist/src/smiths/hook-bridge/hermes-translator.js +88 -0
  403. package/dist/src/smiths/hook-bridge/index.js +79 -0
  404. package/dist/src/smiths/hook-bridge/loader.js +116 -0
  405. package/dist/src/smiths/hook-bridge/shim.js +89 -0
  406. package/dist/src/smiths/hook-bridge/types.js +31 -0
  407. package/dist/src/smiths/index.js +39 -0
  408. package/dist/src/smiths/mcpsmith/analyzers/cli-analyzer.js +390 -0
  409. package/dist/src/smiths/mcpsmith/example.js +119 -0
  410. package/dist/src/smiths/mcpsmith/generator.js +236 -0
  411. package/dist/src/smiths/mcpsmith/index.js +17 -0
  412. package/dist/src/smiths/mcpsmith/types.js +10 -0
  413. package/dist/src/smiths/platform-paths.js +101 -0
  414. package/dist/src/smiths/skillsmith/codex-sidecar.js +85 -0
  415. package/dist/src/smiths/skillsmith/collision-detector.js +249 -0
  416. package/dist/src/smiths/skillsmith/demo.js +83 -0
  417. package/dist/src/smiths/skillsmith/examples.js +161 -0
  418. package/dist/src/smiths/skillsmith/generator.js +316 -0
  419. package/dist/src/smiths/skillsmith/index.js +12 -0
  420. package/dist/src/smiths/skillsmith/namespace-adapter.js +180 -0
  421. package/dist/src/smiths/skillsmith/platform-resolver.js +157 -0
  422. package/dist/src/smiths/skillsmith/types.js +9 -0
  423. package/dist/src/smiths/toolsmith/index.js +10 -0
  424. package/dist/src/smiths/toolsmith/runtime-discovery.mjs +710 -0
  425. package/dist/src/smiths/toolsmith/types.js +8 -0
  426. package/dist/src/storage/backends/fortemi.js +227 -0
  427. package/dist/src/storage/backends/fs.js +134 -0
  428. package/dist/src/storage/backends/logseq.js +309 -0
  429. package/dist/src/storage/backends/obsidian.js +233 -0
  430. package/dist/src/storage/cli.js +468 -0
  431. package/dist/src/storage/config.js +272 -0
  432. package/dist/src/storage/index.js +108 -0
  433. package/dist/src/storage/subsystem-cli.js +201 -0
  434. package/dist/src/storage/types.js +33 -0
  435. package/dist/src/testing/corpus/corpus-builder.js +383 -0
  436. package/dist/src/testing/corpus/ground-truth-manager.js +460 -0
  437. package/dist/src/testing/corpus/index.js +10 -0
  438. package/dist/src/testing/fixtures/index.js +9 -0
  439. package/dist/src/testing/fixtures/test-data-factory.js +472 -0
  440. package/dist/src/testing/generators/index.js +11 -0
  441. package/dist/src/testing/generators/test-case-generator.js +393 -0
  442. package/dist/src/testing/generators/test-code-generator.js +384 -0
  443. package/dist/src/testing/generators/use-case-parser.js +325 -0
  444. package/dist/src/testing/index.js +11 -0
  445. package/dist/src/tracker/capability-protocol.js +118 -0
  446. package/dist/src/update/checker.mjs +396 -0
  447. package/dist/src/update/notifier.mjs +235 -0
  448. package/dist/src/writing/content-diversifier.js +804 -0
  449. package/dist/src/writing/example-generator.js +959 -0
  450. package/dist/src/writing/example-templates.js +99 -0
  451. package/dist/src/writing/pattern-library.js +486 -0
  452. package/dist/src/writing/patterns/banned-phrases.json +4413 -0
  453. package/dist/src/writing/patterns/formulaic-structures.json +1300 -0
  454. package/dist/src/writing/patterns/generic-adjectives.json +1510 -0
  455. package/dist/src/writing/patterns/hedging-language.json +2096 -0
  456. package/dist/src/writing/patterns/transition-words.json +1285 -0
  457. package/dist/src/writing/patterns/weak-verbs.json +1112 -0
  458. package/dist/src/writing/prompt-optimizer.js +660 -0
  459. package/dist/src/writing/prompt-templates.js +583 -0
  460. package/dist/src/writing/scoring-config-loader.js +168 -0
  461. package/dist/src/writing/validation-engine.js +595 -0
  462. package/dist/src/writing/validation-rules.js +380 -0
  463. package/dist/src/writing/voice-analyzer.js +439 -0
  464. package/dist/src/writing/voice-calibration.js +661 -0
  465. package/dist/src/writing/voice-profiles.json +588 -0
  466. package/package.json +64 -9
@@ -0,0 +1,280 @@
1
+ /**
2
+ * Best-Practices Audit Handler
3
+ *
4
+ * Launches `/best-practices-audit` — a research-grounded validation of a
5
+ * target (file, directory, or topic) against current external best practices
6
+ * with citation guardrails. The actual research is performed by the agent
7
+ * following the slash command skill in research-complete; this handler is
8
+ * a thin shim that parses flags, validates the target, computes the output
9
+ * path, and either spawns the configured provider or prints guidance for
10
+ * IDE-integrated providers.
11
+ *
12
+ * Pattern matches src/cli/handlers/sdlc-accelerate.ts — same agent-spawn
13
+ * conventions, same provider gating, same --params / --dangerous handling.
14
+ *
15
+ * @architecture @.aiwg/architecture/decisions/ADR-023-contributor-discovery-convention.md
16
+ * @issue #943
17
+ */
18
+ import { spawn } from 'child_process';
19
+ import { existsSync } from 'fs';
20
+ import path from 'path';
21
+ import { projectAiwgPath } from '../../config/project-artifacts.js';
22
+ import { parseAgentSpawnFlags, buildAgentArgs, getProviderConfig, isSpawnableProvider, dangerousWarning, spawnableProviders, } from '../agent-spawn.js';
23
+ /**
24
+ * Best-practices audit positional + flag parser. Distinct from
25
+ * `parseAgentSpawnFlags` because most of the flags are forwarded to the
26
+ * skill. We extract only the ones we need to validate locally; the rest
27
+ * survive in `remaining` and get appended to the slash-command prompt.
28
+ */
29
+ function parseAuditFlags(args) {
30
+ const audit = {};
31
+ const rest = [];
32
+ for (let i = 0; i < args.length; i++) {
33
+ const a = args[i];
34
+ const next = () => args[++i];
35
+ switch (a) {
36
+ case '--focus':
37
+ audit.focus = next();
38
+ rest.push(a, audit.focus ?? '');
39
+ break;
40
+ case '--framework':
41
+ audit.framework = next();
42
+ rest.push(a, audit.framework ?? '');
43
+ break;
44
+ case '--standard':
45
+ audit.standard = next();
46
+ rest.push(a, audit.standard ?? '');
47
+ break;
48
+ case '--recency':
49
+ audit.recency = next();
50
+ rest.push(a, audit.recency ?? '');
51
+ break;
52
+ case '--depth': {
53
+ const v = next();
54
+ if (v && (v === 'quick' || v === 'standard' || v === 'deep')) {
55
+ audit.depth = v;
56
+ }
57
+ rest.push(a, v ?? '');
58
+ break;
59
+ }
60
+ case '--sources':
61
+ audit.sources = next();
62
+ rest.push(a, audit.sources ?? '');
63
+ break;
64
+ case '--exclude':
65
+ audit.exclude = next();
66
+ rest.push(a, audit.exclude ?? '');
67
+ break;
68
+ case '--cite-threshold': {
69
+ const v = next();
70
+ const n = v ? Number(v) : NaN;
71
+ if (Number.isInteger(n) && n > 0)
72
+ audit.citeThreshold = n;
73
+ rest.push(a, v ?? '');
74
+ break;
75
+ }
76
+ case '--dissent':
77
+ audit.dissent = true;
78
+ rest.push(a);
79
+ break;
80
+ case '--validate':
81
+ audit.validateMode = true;
82
+ rest.push(a);
83
+ break;
84
+ case '--output':
85
+ audit.output = next();
86
+ // Don't forward --output to the slash command; the handler
87
+ // computes/normalizes the absolute output path separately.
88
+ break;
89
+ default:
90
+ rest.push(a);
91
+ }
92
+ }
93
+ return { audit, rest };
94
+ }
95
+ /**
96
+ * Compute the default output path. Naming convention from #929 §5:
97
+ *
98
+ * .aiwg/reports/best-practices-audit-<target-slug>-<YYYY-MM-DD>.md
99
+ *
100
+ * The slug is derived from a path basename, freeform topic words, or 'audit'
101
+ * if neither produces something usable.
102
+ */
103
+ function computeOutputPath(target, override, projectRoot) {
104
+ if (override) {
105
+ return path.isAbsolute(override) ? override : path.resolve(projectRoot, override);
106
+ }
107
+ const date = new Date().toISOString().slice(0, 10);
108
+ const slugSource = existsSync(target) ? path.basename(target).replace(/\.[^.]+$/, '') : target;
109
+ const slug = slugSource
110
+ .toLowerCase()
111
+ .replace(/[^a-z0-9]+/g, '-')
112
+ .replace(/^-+|-+$/g, '')
113
+ .slice(0, 60) || 'audit';
114
+ return projectAiwgPath(projectRoot, 'reports', `best-practices-audit-${slug}-${date}.md`);
115
+ }
116
+ export class BestPracticesAuditHandler {
117
+ id = 'best-practices-audit';
118
+ name = 'Best-Practices Audit';
119
+ description = 'Research-grounded validation of a target against current external best practices';
120
+ category = 'orchestration';
121
+ aliases = ['best-practices-audit'];
122
+ async execute(ctx) {
123
+ if (ctx.args.includes('--help') || ctx.args.includes('-h')) {
124
+ return { exitCode: 0, message: this.getHelpText() };
125
+ }
126
+ // Spawn flags peeled first (--provider, --dangerous, --params).
127
+ const { opts: spawnOpts, remaining } = parseAgentSpawnFlags(ctx.args);
128
+ // Audit-specific flags peeled next; the rest carries the target +
129
+ // forwarded flags into the slash-command prompt.
130
+ const { audit, rest } = parseAuditFlags(remaining);
131
+ // Target must be the first positional argument. Without one, this is
132
+ // a usage error — the audit command requires a target.
133
+ const positionals = rest.filter(a => !a.startsWith('-'));
134
+ if (positionals.length === 0) {
135
+ return {
136
+ exitCode: 1,
137
+ message: 'best-practices-audit: missing <target>. Pass a file path, directory, or freeform topic.\n' +
138
+ 'Run: aiwg best-practices-audit --help',
139
+ };
140
+ }
141
+ const target = positionals[0];
142
+ const outputPath = computeOutputPath(target, audit.output, ctx.cwd ?? process.cwd());
143
+ const provider = spawnOpts.provider ?? 'claude';
144
+ const config = getProviderConfig(provider);
145
+ const prompt = this.buildPrompt(target, rest, outputPath);
146
+ if (!isSpawnableProvider(provider)) {
147
+ return {
148
+ exitCode: 0,
149
+ message: [
150
+ `Provider '${config.name}' is not spawnable from the CLI.`,
151
+ config.guidanceMessage ?? '',
152
+ '',
153
+ `Run this in your IDE or agent panel:`,
154
+ ` ${prompt}`,
155
+ '',
156
+ `Output will be written to: ${outputPath}`,
157
+ ].join('\n'),
158
+ };
159
+ }
160
+ const warn = dangerousWarning(provider);
161
+ if (spawnOpts.dangerous && warn) {
162
+ console.warn(`Warning: ${warn}`);
163
+ }
164
+ const agentArgs = buildAgentArgs(prompt, spawnOpts);
165
+ return this.spawnAgent(config.binary, agentArgs, prompt, outputPath);
166
+ }
167
+ /**
168
+ * Compose the slash-command invocation. The agent skill receives the
169
+ * target and forwarded flags verbatim, plus an explicit `--output`
170
+ * pointing at the absolute output path so the skill writes to the
171
+ * handler-computed location regardless of how it interprets cwd.
172
+ */
173
+ buildPrompt(target, rest, outputPath) {
174
+ const flagsAfterTarget = rest.slice(rest.indexOf(target) + 1).join(' ');
175
+ const targetStr = target.includes(' ') ? `"${target}"` : target;
176
+ const flagsPart = flagsAfterTarget ? ` ${flagsAfterTarget}` : '';
177
+ return `/best-practices-audit ${targetStr}${flagsPart} --output "${outputPath}"`;
178
+ }
179
+ spawnAgent(binary, args, prompt, outputPath) {
180
+ return new Promise(resolve => {
181
+ try {
182
+ const child = spawn(binary, args, { stdio: 'inherit', env: process.env });
183
+ child.on('close', code => resolve({ exitCode: code ?? 0 }));
184
+ child.on('error', err => {
185
+ if (err.code === 'ENOENT') {
186
+ resolve({
187
+ exitCode: 1,
188
+ message: this.getNotFoundMessage(binary, prompt, outputPath),
189
+ });
190
+ }
191
+ else {
192
+ resolve({
193
+ exitCode: 1,
194
+ message: `Failed to launch ${binary}: ${err.message}\n\n${this.getNotFoundMessage(binary, prompt, outputPath)}`,
195
+ error: err,
196
+ });
197
+ }
198
+ });
199
+ }
200
+ catch (err) {
201
+ resolve({
202
+ exitCode: 1,
203
+ message: `Failed to start best-practices-audit: ${err instanceof Error ? err.message : String(err)}\n\n${this.getNotFoundMessage(binary, prompt, outputPath)}`,
204
+ error: err instanceof Error ? err : new Error(String(err)),
205
+ });
206
+ }
207
+ });
208
+ }
209
+ getNotFoundMessage(binary, prompt, outputPath) {
210
+ return [
211
+ `'${binary}' not found. Install the provider CLI and try again.`,
212
+ `To run manually, open the agent and run:`,
213
+ ` ${prompt}`,
214
+ ``,
215
+ `Output will be written to: ${outputPath}`,
216
+ ].join('\n');
217
+ }
218
+ getHelpText() {
219
+ const spawnable = spawnableProviders().join(', ');
220
+ return `
221
+ Best-Practices Audit — Research-grounded validation against current practice
222
+
223
+ USAGE:
224
+ aiwg best-practices-audit <target> [options]
225
+ aiwg best-practices-audit ".aiwg/architecture/SAD.md" --focus security
226
+ aiwg best-practices-audit "FastAPI dependency injection" --depth deep
227
+
228
+ ARGUMENTS:
229
+ <target> File path, directory, freeform topic, or issue ref
230
+
231
+ FOCUS / SCOPE:
232
+ --focus <area> security, performance, accessibility, licensing,
233
+ api-design, testing, docs, ops, compliance, ...
234
+ --framework <name> Bias toward a named stack (React, Kubernetes, ...)
235
+ --standard <name> Align to a standard (OWASP, SOC2, WCAG 2.2, ...)
236
+
237
+ RESEARCH BUDGET:
238
+ --recency <window> Default 18m. Tighten for fast-moving domains.
239
+ --depth quick|standard|deep Research effort budget (default: standard)
240
+ --sources <list> Restrict to: vendor-docs, standards-bodies,
241
+ practitioner-blogs, conference-talks, academic,
242
+ github-discussions
243
+ --exclude <list> e.g. exclude SEO-spam domains
244
+ --cite-threshold <N> Minimum distinct sources before a finding is reported (default: 2)
245
+
246
+ REPORTING:
247
+ --dissent Surface practitioner disagreement, not just consensus
248
+ --validate Re-validate existing claims in the target rather than
249
+ generating new ones
250
+ --output <path> Default: .aiwg/reports/best-practices-audit-<slug>-<date>.md
251
+
252
+ AGENT OPTIONS:
253
+ --provider <name> Agent system to use (default: claude)
254
+ Spawnable: ${spawnable}
255
+ IDE-integrated (guidance only): copilot, cursor, factory, warp, windsurf
256
+ --dangerous Enable unrestricted mode (passes provider's native flag).
257
+ --params "<args>" Pass arbitrary args verbatim to the agent binary.
258
+
259
+ ANTI-HALLUCINATION GUARDRAILS:
260
+ - No fabricated citations, DOIs, URLs, or quotes (Citation Policy enforced).
261
+ - Findings need >= --cite-threshold distinct, retrievable sources or are
262
+ downgraded.
263
+ - Conflicting sources surface as labeled disagreements, not silent picks.
264
+ - Sparse-signal honesty: confidence is downgraded rather than filled with priors.
265
+
266
+ EXAMPLES:
267
+ aiwg best-practices-audit ".aiwg/architecture/SAD.md"
268
+ aiwg best-practices-audit ".aiwg/architecture/SAD.md" --focus security --standard OWASP
269
+ aiwg best-practices-audit "src/auth/" --focus security --depth deep --dissent
270
+ aiwg best-practices-audit "FastAPI request validation patterns" --recency 6m
271
+ aiwg best-practices-audit ".aiwg/architecture/" --validate
272
+ `;
273
+ }
274
+ }
275
+ export const bestPracticesAuditHandler = new BestPracticesAuditHandler();
276
+ /**
277
+ * Internal exports for testing only. Not part of the public CLI surface.
278
+ */
279
+ export const __test__ = { parseAuditFlags, computeOutputPath };
280
+ //# sourceMappingURL=best-practices-audit.js.map
@@ -0,0 +1,137 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { existsSync } from 'node:fs';
3
+ import { mkdir, readFile } from 'node:fs/promises';
4
+ import { homedir } from 'node:os';
5
+ import path from 'node:path';
6
+ export const COCKPIT_PACKAGE_NAME = '@aiwg/cockpit';
7
+ export function cockpitHome() {
8
+ return process.env.AIWG_COCKPIT_HOME || path.join(homedir(), '.aiwg', 'cockpit', 'package');
9
+ }
10
+ async function readJson(file) {
11
+ try {
12
+ return JSON.parse(await readFile(file, 'utf8'));
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ }
18
+ async function coreVersion(frameworkRoot) {
19
+ const pkg = await readJson(path.join(frameworkRoot, 'package.json'));
20
+ return typeof pkg?.version === 'string' && pkg.version.length > 0 ? pkg.version : 'latest';
21
+ }
22
+ function packageRoot(home = cockpitHome()) {
23
+ return path.join(home, 'node_modules', '@aiwg', 'cockpit');
24
+ }
25
+ export async function resolveCockpitInstall(home = cockpitHome()) {
26
+ const root = packageRoot(home);
27
+ const pkg = await readJson(path.join(root, 'package.json'));
28
+ if (!pkg)
29
+ return { installed: false, packageRoot: root };
30
+ const bin = typeof pkg.bin === 'string'
31
+ ? pkg.bin
32
+ : typeof pkg.bin?.['aiwg-cockpit'] === 'string'
33
+ ? pkg.bin['aiwg-cockpit']
34
+ : 'bridge/src/server.mjs';
35
+ const entrypoint = path.join(root, bin);
36
+ return {
37
+ installed: existsSync(entrypoint),
38
+ version: typeof pkg.version === 'string' ? pkg.version : undefined,
39
+ packageRoot: root,
40
+ entrypoint,
41
+ };
42
+ }
43
+ function runProcess(cmd, args, options = {}) {
44
+ return new Promise((resolve, reject) => {
45
+ const child = spawn(cmd, args, {
46
+ cwd: options.cwd,
47
+ env: options.env,
48
+ stdio: 'inherit',
49
+ });
50
+ child.once('error', reject);
51
+ child.once('close', (code) => resolve(code ?? 1));
52
+ });
53
+ }
54
+ export async function installCockpit(ctx, args = ctx.args) {
55
+ const version = await coreVersion(ctx.frameworkRoot);
56
+ const home = cockpitHome();
57
+ const spec = version === 'latest' ? COCKPIT_PACKAGE_NAME : `${COCKPIT_PACKAGE_NAME}@${version}`;
58
+ const dryRun = args.includes('--dry-run');
59
+ if (dryRun) {
60
+ return {
61
+ exitCode: 0,
62
+ message: [
63
+ `Would install ${spec}`,
64
+ `Target: ${home}`,
65
+ 'Run without --dry-run to acquire the opt-in Cockpit package.',
66
+ ].join('\n'),
67
+ };
68
+ }
69
+ await mkdir(home, { recursive: true });
70
+ const code = await runProcess('npm', ['install', '--prefix', home, '--no-audit', '--fund=false', spec], {
71
+ cwd: ctx.cwd,
72
+ });
73
+ if (code !== 0) {
74
+ return { exitCode: code, message: `Failed to install ${spec}` };
75
+ }
76
+ const install = await resolveCockpitInstall(home);
77
+ if (!install.installed) {
78
+ return { exitCode: 1, message: `${COCKPIT_PACKAGE_NAME} installed, but no aiwg-cockpit entrypoint was found.` };
79
+ }
80
+ if (version !== 'latest' && install.version !== version) {
81
+ return {
82
+ exitCode: 1,
83
+ message: `Installed ${COCKPIT_PACKAGE_NAME}@${install.version ?? 'unknown'}, expected ${version}.`,
84
+ };
85
+ }
86
+ return { exitCode: 0, message: `Installed ${COCKPIT_PACKAGE_NAME}@${install.version} in ${home}` };
87
+ }
88
+ export const cockpitHandler = {
89
+ id: 'cockpit',
90
+ name: 'Cockpit',
91
+ description: 'Launch the opt-in AIWG Cockpit control plane',
92
+ category: 'utility',
93
+ aliases: [],
94
+ async execute(ctx) {
95
+ const install = await resolveCockpitInstall();
96
+ const version = await coreVersion(ctx.frameworkRoot);
97
+ const autoInstall = ctx.args.includes('--install') || ctx.args.includes('--yes') || ctx.args.includes('-y');
98
+ if (ctx.args.includes('--status')) {
99
+ return {
100
+ exitCode: 0,
101
+ message: install.installed
102
+ ? `${COCKPIT_PACKAGE_NAME}@${install.version ?? 'unknown'} installed at ${install.packageRoot}`
103
+ : `${COCKPIT_PACKAGE_NAME} not installed. Run: aiwg use cockpit`,
104
+ };
105
+ }
106
+ if (!install.installed) {
107
+ if (autoInstall) {
108
+ const result = await installCockpit(ctx, ctx.args);
109
+ if (result.exitCode !== 0)
110
+ return result;
111
+ return this.execute({ ...ctx, args: ctx.args.filter((arg) => arg !== '--install' && arg !== '--yes' && arg !== '-y') });
112
+ }
113
+ return {
114
+ exitCode: 1,
115
+ message: [
116
+ 'AIWG Cockpit is not installed.',
117
+ `Install the opt-in package with: aiwg use cockpit`,
118
+ `Expected package: ${COCKPIT_PACKAGE_NAME}@${version}`,
119
+ 'No Cockpit dependency is required for the base aiwg CLI.',
120
+ ].join('\n'),
121
+ };
122
+ }
123
+ if (version !== 'latest' && install.version !== version) {
124
+ return {
125
+ exitCode: 1,
126
+ message: [
127
+ `AIWG Cockpit version mismatch: installed ${install.version ?? 'unknown'}, core ${version}.`,
128
+ 'Refresh the opt-in package with: aiwg use cockpit',
129
+ ].join('\n'),
130
+ };
131
+ }
132
+ const passthrough = ctx.args.filter((arg) => arg !== '--status');
133
+ const code = await runProcess(process.execPath, [install.entrypoint, ...passthrough], { cwd: ctx.cwd });
134
+ return { exitCode: code };
135
+ },
136
+ };
137
+ //# sourceMappingURL=cockpit.js.map
@@ -0,0 +1,37 @@
1
+ import { printCommandLogReport } from '../command-log.js';
2
+ export const commandLogHandler = {
3
+ id: 'command-log',
4
+ name: 'Command Log',
5
+ description: 'Report opt-in local CLI command invocation logs',
6
+ category: 'utility',
7
+ aliases: [],
8
+ async execute(ctx) {
9
+ const json = ctx.args.includes('--json');
10
+ const limit = readNumberFlag(ctx.args, '--limit') ?? 20;
11
+ const scope = readScopeFlag(ctx.args);
12
+ await printCommandLogReport({
13
+ cwd: ctx.cwd,
14
+ frameworkRoot: ctx.frameworkRoot,
15
+ json,
16
+ limit,
17
+ scope,
18
+ });
19
+ return { exitCode: 0 };
20
+ },
21
+ };
22
+ function readNumberFlag(args, flag) {
23
+ const idx = args.indexOf(flag);
24
+ if (idx === -1)
25
+ return undefined;
26
+ const raw = args[idx + 1];
27
+ const n = Number(raw);
28
+ return Number.isInteger(n) && n >= 0 ? n : undefined;
29
+ }
30
+ function readScopeFlag(args) {
31
+ const idx = args.indexOf('--scope');
32
+ const raw = idx === -1 ? 'all' : args[idx + 1];
33
+ if (raw === 'project' || raw === 'global' || raw === 'all')
34
+ return raw;
35
+ return 'all';
36
+ }
37
+ //# sourceMappingURL=command-log.js.map
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Daemon Command Handlers
3
+ *
4
+ * Handlers for daemon-related CLI commands (behavior management, daemon init).
5
+ * Each handler delegates to existing scripts in tools/.
6
+ *
7
+ * @tests @test/unit/cli/handlers/coverage.test.ts
8
+ */
9
+ import { createScriptRunner } from './script-runner.js';
10
+ import { getFrameworkRoot } from '../../channel/manager.mjs';
11
+ /**
12
+ * Base class for daemon handlers that delegate to scripts
13
+ */
14
+ class DaemonHandler {
15
+ category = 'daemon';
16
+ get aliases() {
17
+ return [this.id];
18
+ }
19
+ async execute(ctx) {
20
+ const frameworkRoot = await getFrameworkRoot();
21
+ const runner = createScriptRunner(frameworkRoot);
22
+ return runner.run(this.scriptPath, ctx.args);
23
+ }
24
+ }
25
+ /**
26
+ * Behavior Handler
27
+ *
28
+ * Manages behavior YAML bundles that bind directives and toolsets to agent types.
29
+ */
30
+ class BehaviorHandler extends DaemonHandler {
31
+ id = 'behavior';
32
+ name = 'Behavior';
33
+ description = 'Manage behavior YAML bundles that bind directives and toolsets to agent types';
34
+ scriptPath = 'tools/daemon/behavior.mjs';
35
+ }
36
+ /**
37
+ * Daemon Init Handler
38
+ *
39
+ * Initialize daemon config from a profile template.
40
+ */
41
+ class DaemonInitHandler extends DaemonHandler {
42
+ id = 'daemon-init';
43
+ name = 'Daemon Init';
44
+ description = 'Initialize daemon config from a profile template (default: manager)';
45
+ scriptPath = 'tools/daemon/init-profile.mjs';
46
+ }
47
+ /**
48
+ * Exported handler instances
49
+ */
50
+ export const behaviorHandler = new BehaviorHandler();
51
+ export const daemonInitHandler = new DaemonInitHandler();
52
+ /**
53
+ * All daemon handlers for registration
54
+ */
55
+ export const daemonHandlers = [
56
+ behaviorHandler,
57
+ daemonInitHandler,
58
+ ];
59
+ //# sourceMappingURL=daemon.js.map