@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,250 @@
1
+ /**
2
+ * Git Hook Installer
3
+ *
4
+ * Installs and manages git pre-commit and pre-push hooks for AIWG validation.
5
+ */
6
+ import { readFile, writeFile, chmod, access, mkdir } from 'fs/promises';
7
+ import { existsSync } from 'fs';
8
+ import { resolve } from 'path';
9
+ import { constants } from 'fs';
10
+ /**
11
+ * Git Hook Installer
12
+ */
13
+ export class GitHookInstaller {
14
+ projectRoot;
15
+ hooksDir;
16
+ constructor(projectRoot) {
17
+ this.projectRoot = projectRoot;
18
+ this.hooksDir = resolve(projectRoot, '.git', 'hooks');
19
+ }
20
+ /**
21
+ * Install pre-commit hook
22
+ */
23
+ async installPreCommitHook(options = {}) {
24
+ const hookContent = this.generatePreCommitHook(options.configPath);
25
+ await this.installHook('pre-commit', hookContent, options);
26
+ }
27
+ /**
28
+ * Install pre-push hook
29
+ */
30
+ async installPrePushHook(options = {}) {
31
+ const hookContent = this.generatePrePushHook(options.configPath);
32
+ await this.installHook('pre-push', hookContent, options);
33
+ }
34
+ /**
35
+ * Uninstall hooks
36
+ */
37
+ async uninstallHooks(projectRoot) {
38
+ const hooksToRemove = ['pre-commit', 'pre-push'];
39
+ for (const hookType of hooksToRemove) {
40
+ const hookPath = resolve(projectRoot, '.git', 'hooks', hookType);
41
+ if (existsSync(hookPath)) {
42
+ const content = await readFile(hookPath, 'utf-8');
43
+ // Only remove if it's our hook
44
+ if (content.includes('# AIWG')) {
45
+ // Check if there's other content
46
+ const lines = content.split('\n');
47
+ const aiwgStart = lines.findIndex(l => l.includes('# AIWG'));
48
+ const aiwgEnd = lines.findIndex((l, i) => i > aiwgStart && l.includes('# END AIWG'));
49
+ if (aiwgStart >= 0 && aiwgEnd >= 0) {
50
+ // Remove only AIWG section
51
+ const beforeAiwg = lines.slice(0, aiwgStart);
52
+ const afterAiwg = lines.slice(aiwgEnd + 1);
53
+ // Check if the content before AIWG is just shebang (part of our hook)
54
+ const beforeContent = beforeAiwg.filter(l => l.trim().length > 0);
55
+ const isOnlyShebang = beforeContent.length <= 1 && beforeContent.every(l => l.startsWith('#!'));
56
+ // Check if after AIWG is meaningful content
57
+ const afterContent = afterAiwg.filter(l => l.trim().length > 0);
58
+ if (isOnlyShebang && afterContent.length === 0) {
59
+ // File only contains our hook (shebang + AIWG), remove entirely
60
+ await this.removeFile(hookPath);
61
+ }
62
+ else {
63
+ // There's other content, keep it
64
+ const newContent = [...beforeAiwg, ...afterAiwg].join('\n');
65
+ if (newContent.trim().length > 0) {
66
+ await writeFile(hookPath, newContent, 'utf-8');
67
+ }
68
+ else {
69
+ // File would be empty, remove it
70
+ await this.removeFile(hookPath);
71
+ }
72
+ }
73
+ }
74
+ else {
75
+ // Entire file is AIWG hook, remove it
76
+ await this.removeFile(hookPath);
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ /**
83
+ * Check if hook is installed
84
+ */
85
+ isInstalled(hookType) {
86
+ const hookPath = resolve(this.hooksDir, hookType);
87
+ if (!existsSync(hookPath)) {
88
+ return false;
89
+ }
90
+ try {
91
+ const content = require('fs').readFileSync(hookPath, 'utf-8');
92
+ return content.includes('# AIWG');
93
+ }
94
+ catch {
95
+ return false;
96
+ }
97
+ }
98
+ /**
99
+ * Get hook content
100
+ */
101
+ async getHookContent(hookType) {
102
+ const hookPath = resolve(this.hooksDir, hookType);
103
+ if (!existsSync(hookPath)) {
104
+ return null;
105
+ }
106
+ return await readFile(hookPath, 'utf-8');
107
+ }
108
+ /**
109
+ * Verify git repository
110
+ */
111
+ isGitRepository() {
112
+ return existsSync(resolve(this.projectRoot, '.git'));
113
+ }
114
+ // Private methods
115
+ async installHook(hookType, content, options) {
116
+ // Verify git repository
117
+ if (!this.isGitRepository()) {
118
+ throw new Error('Not a git repository');
119
+ }
120
+ // Ensure hooks directory exists
121
+ if (!existsSync(this.hooksDir)) {
122
+ await mkdir(this.hooksDir, { recursive: true });
123
+ }
124
+ const hookPath = resolve(this.hooksDir, hookType);
125
+ // Check if hook already exists
126
+ if (existsSync(hookPath) && !options.force && !options.append) {
127
+ throw new Error(`Hook ${hookType} already exists. Use --force to overwrite or --append to add to existing hook.`);
128
+ }
129
+ let finalContent = content;
130
+ if (options.append && existsSync(hookPath)) {
131
+ // Append to existing hook
132
+ const existing = await readFile(hookPath, 'utf-8');
133
+ // Check if AIWG section already exists
134
+ if (existing.includes('# AIWG')) {
135
+ throw new Error(`AIWG hook already exists in ${hookType}. Use --force to overwrite.`);
136
+ }
137
+ finalContent = `${existing}\n\n${content}`;
138
+ }
139
+ // Write hook file
140
+ await writeFile(hookPath, finalContent, 'utf-8');
141
+ // Make executable
142
+ await chmod(hookPath, 0o755);
143
+ }
144
+ generatePreCommitHook(configPath) {
145
+ const configArg = configPath ? ` --config ${configPath}` : '';
146
+ return `#!/bin/sh
147
+ # AIWG pre-commit hook
148
+ # Validates staged markdown and text files before commit
149
+
150
+ echo "Running AIWG validation..."
151
+
152
+ # Get staged files
153
+ STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\\.(md|txt)$' || true)
154
+
155
+ if [ -z "$STAGED_FILES" ]; then
156
+ echo "No markdown or text files to validate"
157
+ exit 0
158
+ fi
159
+
160
+ # Run AIWG workflow
161
+ node tools/cli/aiwg.mjs workflow $STAGED_FILES${configArg}
162
+ RESULT=$?
163
+
164
+ if [ $RESULT -ne 0 ]; then
165
+ echo ""
166
+ echo "AIWG validation failed. Please fix issues before committing."
167
+ echo "To bypass this check, use: git commit --no-verify"
168
+ exit 1
169
+ fi
170
+
171
+ echo "AIWG validation passed"
172
+ exit 0
173
+
174
+ # END AIWG
175
+ `;
176
+ }
177
+ generatePrePushHook(configPath) {
178
+ const configArg = configPath ? ` --config ${configPath}` : '';
179
+ return `#!/bin/sh
180
+ # AIWG pre-push hook
181
+ # Validates all markdown and text files before push
182
+
183
+ echo "Running AIWG validation before push..."
184
+
185
+ # Find all markdown and text files
186
+ FILES=$(find . -type f \\( -name "*.md" -o -name "*.txt" \\) -not -path "*/node_modules/*" -not -path "*/.git/*" || true)
187
+
188
+ if [ -z "$FILES" ]; then
189
+ echo "No markdown or text files to validate"
190
+ exit 0
191
+ fi
192
+
193
+ # Run AIWG workflow
194
+ node tools/cli/aiwg.mjs workflow $FILES${configArg}
195
+ RESULT=$?
196
+
197
+ if [ $RESULT -ne 0 ]; then
198
+ echo ""
199
+ echo "AIWG validation failed. Please fix issues before pushing."
200
+ echo "To bypass this check, use: git push --no-verify"
201
+ exit 1
202
+ fi
203
+
204
+ echo "AIWG validation passed"
205
+ exit 0
206
+
207
+ # END AIWG
208
+ `;
209
+ }
210
+ async removeFile(path) {
211
+ const fs = await import('fs/promises');
212
+ await fs.unlink(path);
213
+ }
214
+ /**
215
+ * List all installed hooks
216
+ */
217
+ async listInstalledHooks() {
218
+ const installed = [];
219
+ const hookTypes = ['pre-commit', 'pre-push'];
220
+ for (const hookType of hookTypes) {
221
+ if (this.isInstalled(hookType)) {
222
+ installed.push(hookType);
223
+ }
224
+ }
225
+ return installed;
226
+ }
227
+ /**
228
+ * Validate hook installation
229
+ */
230
+ async validateHook(hookType) {
231
+ const hookPath = resolve(this.hooksDir, hookType);
232
+ if (!existsSync(hookPath)) {
233
+ return { valid: false, error: 'Hook file does not exist' };
234
+ }
235
+ try {
236
+ // Check if executable
237
+ await access(hookPath, constants.X_OK);
238
+ }
239
+ catch {
240
+ return { valid: false, error: 'Hook file is not executable' };
241
+ }
242
+ // Check if contains AIWG marker
243
+ const content = await readFile(hookPath, 'utf-8');
244
+ if (!content.includes('# AIWG')) {
245
+ return { valid: false, error: 'Hook does not contain AIWG marker' };
246
+ }
247
+ return { valid: true };
248
+ }
249
+ }
250
+ //# sourceMappingURL=git-hooks.js.map
@@ -0,0 +1,206 @@
1
+ /**
2
+ * AgentCard CLI handler — `aiwg agentcard <verb> ...`.
3
+ *
4
+ * Verbs:
5
+ * verify Fetch an agentic-sandbox AgentCard from the well-known route,
6
+ * /v1/extendedAgentCard, or legacy /v1/card, then verify its
7
+ * Ed25519 JWS signature against a supplied JWKS.
8
+ *
9
+ * @implements @src/a2a/agent-card.ts
10
+ * @issue #1253
11
+ */
12
+ import { fetchAgentCard } from '../../a2a/agent-card.js';
13
+ import { loadJwkSet } from '../../a2a/jws.js';
14
+ import { AiwgError, EXIT_CODES, handlerResultFromError } from '../errors.js';
15
+ function parseVerifyArgs(args) {
16
+ const get = (name) => {
17
+ const idx = args.indexOf(name);
18
+ if (idx >= 0 && idx + 1 < args.length)
19
+ return args[idx + 1];
20
+ return undefined;
21
+ };
22
+ const host = get('--host');
23
+ const instance = get('--instance');
24
+ if (!host) {
25
+ throw new AiwgError({
26
+ code: 'ERR_AGENTCARD_MISSING_HOST',
27
+ message: 'Missing --host',
28
+ exitCode: EXIT_CODES.USAGE,
29
+ hint: 'Example: aiwg agentcard verify --host https://exec.test --instance inst-1 --jwks /path/to/jwks.json',
30
+ });
31
+ }
32
+ if (!instance) {
33
+ throw new AiwgError({
34
+ code: 'ERR_AGENTCARD_MISSING_INSTANCE',
35
+ message: 'Missing --instance',
36
+ exitCode: EXIT_CODES.USAGE,
37
+ hint: 'Example: aiwg agentcard verify --host https://exec.test --instance inst-1 --jwks /path/to/jwks.json',
38
+ });
39
+ }
40
+ const jwks = get('--jwks');
41
+ const bearer = get('--bearer');
42
+ const skipVerify = args.includes('--skip-verify');
43
+ const json = args.includes('--json');
44
+ if (!jwks && !skipVerify) {
45
+ throw new AiwgError({
46
+ code: 'ERR_AGENTCARD_MISSING_JWKS',
47
+ message: '--jwks is required unless --skip-verify is set',
48
+ exitCode: EXIT_CODES.USAGE,
49
+ hint: 'Provide a JWKS file path or URL; or pass --skip-verify to bypass signature verification.',
50
+ });
51
+ }
52
+ const result = { host, instance, skipVerify, json };
53
+ if (jwks !== undefined)
54
+ result.jwks = jwks;
55
+ if (bearer !== undefined)
56
+ result.bearer = bearer;
57
+ return result;
58
+ }
59
+ async function loadJwksFromSource(source) {
60
+ if (/^https?:\/\//i.test(source)) {
61
+ const resp = await fetch(source);
62
+ if (resp.status !== 200) {
63
+ throw new AiwgError({
64
+ code: 'ERR_AGENTCARD_JWKS_FETCH',
65
+ message: `JWKS fetch failed: ${source} returned ${resp.status}`,
66
+ exitCode: EXIT_CODES.GENERAL,
67
+ });
68
+ }
69
+ return loadJwkSet(await resp.text());
70
+ }
71
+ const { readFile } = await import('node:fs/promises');
72
+ return loadJwkSet(await readFile(source, 'utf8'));
73
+ }
74
+ async function handleVerify(args) {
75
+ const parsed = parseVerifyArgs(args);
76
+ const opts = {
77
+ skipVerify: parsed.skipVerify,
78
+ };
79
+ if (parsed.bearer !== undefined)
80
+ opts.bearer = parsed.bearer;
81
+ if (parsed.jwks !== undefined && !parsed.skipVerify) {
82
+ opts.jwks = await loadJwksFromSource(parsed.jwks);
83
+ }
84
+ let verified;
85
+ try {
86
+ verified = await fetchAgentCard(parsed.host, parsed.instance, opts);
87
+ }
88
+ catch (err) {
89
+ const message = err.message;
90
+ if (parsed.json) {
91
+ console.log(JSON.stringify({
92
+ ok: false,
93
+ host: parsed.host,
94
+ instance: parsed.instance,
95
+ error: message,
96
+ }, null, 2));
97
+ }
98
+ else {
99
+ console.error(`AgentCard verification FAILED for ${parsed.host}/${parsed.instance}`);
100
+ console.error(` ${message}`);
101
+ }
102
+ return { exitCode: EXIT_CODES.GENERAL };
103
+ }
104
+ if (parsed.json) {
105
+ console.log(JSON.stringify({
106
+ ok: true,
107
+ host: parsed.host,
108
+ instance: parsed.instance,
109
+ verifiedAt: verified.verifiedAt,
110
+ kid: verified.kid,
111
+ skipVerify: parsed.skipVerify,
112
+ card: {
113
+ name: verified.card.name,
114
+ protocolVersion: verified.card.protocolVersion,
115
+ url: verified.card.url,
116
+ version: verified.card.version,
117
+ preferredTransport: verified.card.preferredTransport,
118
+ capabilities: verified.card.capabilities,
119
+ skills: verified.card.skills,
120
+ },
121
+ }, null, 2));
122
+ }
123
+ else {
124
+ const banner = parsed.skipVerify ? '(verification SKIPPED)' : 'VERIFIED';
125
+ console.log(`AgentCard ${banner} for ${parsed.host}/${parsed.instance}`);
126
+ console.log(` name: ${verified.card.name}`);
127
+ console.log(` protocolVersion: ${verified.card.protocolVersion}`);
128
+ console.log(` url: ${verified.card.url}`);
129
+ console.log(` version: ${verified.card.version}`);
130
+ if (verified.card.preferredTransport) {
131
+ console.log(` preferredTransport: ${verified.card.preferredTransport}`);
132
+ }
133
+ if (verified.kid) {
134
+ console.log(` signing kid: ${verified.kid}`);
135
+ }
136
+ console.log(` verifiedAt: ${verified.verifiedAt}`);
137
+ const exts = verified.card.capabilities?.extensions ?? [];
138
+ if (exts.length > 0) {
139
+ console.log(` extensions:`);
140
+ for (const e of exts) {
141
+ const tag = e.required ? '[required]' : '[optional]';
142
+ console.log(` ${tag} ${e.uri}`);
143
+ }
144
+ }
145
+ const skills = verified.card.skills ?? [];
146
+ if (skills.length > 0) {
147
+ console.log(` skills (${skills.length}):`);
148
+ for (const s of skills.slice(0, 5)) {
149
+ console.log(` - ${s.id}${s.name ? ' (' + s.name + ')' : ''}`);
150
+ }
151
+ if (skills.length > 5)
152
+ console.log(` ... and ${skills.length - 5} more`);
153
+ }
154
+ }
155
+ return { exitCode: 0 };
156
+ }
157
+ function printUsage() {
158
+ console.log('Usage: aiwg agentcard <verb> [options]');
159
+ console.log('');
160
+ console.log('Verbs:');
161
+ console.log(' verify Fetch and verify an AgentCard JWS signature');
162
+ console.log('');
163
+ console.log('verify options:');
164
+ console.log(' --host <url> Executor host (e.g. https://exec.test)');
165
+ console.log(' --instance <id> Instance id (UUIDv7)');
166
+ console.log(' --jwks <path|url> JWKS file path or URL (required unless --skip-verify)');
167
+ console.log(' --bearer <token> Optional bearer token for the card endpoint');
168
+ console.log(' --skip-verify Skip JWS verification (NOT recommended)');
169
+ console.log(' --json Emit JSON output');
170
+ }
171
+ /**
172
+ * agentcard command handler — dispatches on the first positional arg.
173
+ */
174
+ export const agentcardHandler = {
175
+ id: 'agentcard',
176
+ name: 'AgentCard',
177
+ description: 'Fetch and verify an agentic-sandbox AgentCard',
178
+ category: 'toolsmith',
179
+ aliases: [],
180
+ async execute(ctx) {
181
+ try {
182
+ const args = ctx.args;
183
+ const verb = args[0];
184
+ if (!verb || verb === '--help' || verb === '-h') {
185
+ printUsage();
186
+ return { exitCode: verb ? 0 : EXIT_CODES.USAGE };
187
+ }
188
+ const rest = args.slice(1);
189
+ switch (verb) {
190
+ case 'verify':
191
+ return await handleVerify(rest);
192
+ default:
193
+ throw new AiwgError({
194
+ code: 'ERR_AGENTCARD_UNKNOWN_VERB',
195
+ message: `Unknown verb: ${verb}`,
196
+ exitCode: EXIT_CODES.USAGE,
197
+ hint: "Run 'aiwg agentcard --help' for usage.",
198
+ });
199
+ }
200
+ }
201
+ catch (err) {
202
+ return handlerResultFromError(err);
203
+ }
204
+ },
205
+ };
206
+ //# sourceMappingURL=agentcard.js.map
@@ -0,0 +1,76 @@
1
+ import { getProjectDir } from '../../config/aiwg-config.js';
2
+ import { moveProjectArtifacts } from '../../artifacts/move.js';
3
+ function usage() {
4
+ return [
5
+ 'aiwg artifacts — Manage the project AIWG artifact root',
6
+ '',
7
+ 'Usage:',
8
+ ' aiwg artifacts move --to <path> [--from <path>] [--dry-run] [--force] [--no-reindex] [--no-sync]',
9
+ '',
10
+ 'Notes:',
11
+ ' --to points at the artifact directory itself, not its parent.',
12
+ ' AIWG_ARTIFACTS_PATH overrides the generated .aiwg-location pointer.',
13
+ ].join('\n');
14
+ }
15
+ function valueAfter(args, flag) {
16
+ const index = args.indexOf(flag);
17
+ if (index < 0)
18
+ return undefined;
19
+ const value = args[index + 1];
20
+ return value && !value.startsWith('-') ? value : undefined;
21
+ }
22
+ export const artifactsHandler = {
23
+ id: 'artifacts',
24
+ name: 'Project Artifacts',
25
+ description: 'Move or inspect the configured project AIWG artifact root',
26
+ category: 'index',
27
+ aliases: ['artifact'],
28
+ async execute(ctx) {
29
+ const action = ctx.args.find(arg => !arg.startsWith('-')) ?? 'help';
30
+ if (action === 'help' || ctx.args.includes('--help') || ctx.args.includes('-h')) {
31
+ return { exitCode: 0, message: usage() };
32
+ }
33
+ if (action !== 'move') {
34
+ return { exitCode: 1, message: `Unknown artifacts action: ${action}\n\n${usage()}` };
35
+ }
36
+ const to = valueAfter(ctx.args, '--to');
37
+ if (!to) {
38
+ return { exitCode: 1, message: `Error: --to <path> is required.\n\n${usage()}` };
39
+ }
40
+ try {
41
+ const result = await moveProjectArtifacts({
42
+ projectDir: getProjectDir(ctx, ctx.args),
43
+ from: valueAfter(ctx.args, '--from'),
44
+ to,
45
+ dryRun: ctx.dryRun || ctx.args.includes('--dry-run'),
46
+ force: ctx.args.includes('--force'),
47
+ reindex: !ctx.args.includes('--no-reindex'),
48
+ syncFortemi: !ctx.args.includes('--no-sync'),
49
+ });
50
+ const verb = result.dryRun ? 'Would move' : 'Moved';
51
+ return {
52
+ exitCode: 0,
53
+ message: [
54
+ `${verb} AIWG artifacts`,
55
+ ` From: ${result.from}`,
56
+ ` To: ${result.to}`,
57
+ ` Pointer: ${result.pointerPath} -> ${result.pointerValue}`,
58
+ ` Gitignore: ${result.gitignoreUpdated ? (result.dryRun ? 'would update' : 'updated') : 'already configured'}`,
59
+ ` Reindex: ${result.reindexed ? 'rebuilt project graph' : result.dryRun ? 'would rebuild project graph' : 'skipped'}`,
60
+ ` Fortemi sync: ${result.fortemiSynced ? 'updated' : result.dryRun ? 'would update' : 'skipped'}`,
61
+ '',
62
+ 'If AIWG_ARTIFACTS_PATH is set in the shell, update it to the new path or unset it so .aiwg-location is used.',
63
+ ].join('\n'),
64
+ };
65
+ }
66
+ catch (error) {
67
+ return {
68
+ exitCode: 1,
69
+ error: error instanceof Error ? error : new Error(String(error)),
70
+ message: `Artifact move failed: ${error instanceof Error ? error.message : String(error)}`,
71
+ };
72
+ }
73
+ },
74
+ };
75
+ export const artifactsHandlers = [artifactsHandler];
76
+ //# sourceMappingURL=artifacts.js.map