@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,149 @@
1
+ /**
2
+ * MCP elicitation helpers.
3
+ *
4
+ * Emit structured single/multi-select forms when the connected client supports
5
+ * MCP form elicitation, with a graceful markdown fallback otherwise. This is the
6
+ * stable path for agent-initiated structured questions on Codex, whose native
7
+ * `request_user_input` tool is mode-gated and off by default (see #1668, #1676
8
+ * and the native-ux-tools rule).
9
+ *
10
+ * @implements #1676
11
+ * @see agentic/code/addons/aiwg-utils/rules/native-ux-tools.md
12
+ */
13
+
14
+ /**
15
+ * Normalize loosely-typed options into `{ value, label }` pairs.
16
+ * Accepts plain strings or `{ label, value? }` objects.
17
+ * @param {Array<string | { value?: string, label: string }>} options
18
+ * @returns {Array<{ value: string, label: string }>}
19
+ */
20
+ export function normalizeOptions(options) {
21
+ return (options || []).map((o, i) => {
22
+ if (typeof o === 'string') return { value: o, label: o };
23
+ const label = o.label ?? o.value ?? String(i);
24
+ const value = o.value ?? o.label ?? String(i);
25
+ return { value, label };
26
+ });
27
+ }
28
+
29
+ /**
30
+ * True when the connected client advertises MCP form elicitation support.
31
+ * @param {{ server?: { getClientCapabilities?: () => any } }} mcpServer
32
+ * @returns {boolean}
33
+ */
34
+ export function clientSupportsFormElicitation(mcpServer) {
35
+ try {
36
+ const caps = mcpServer?.server?.getClientCapabilities?.();
37
+ return Boolean(caps?.elicitation?.form);
38
+ } catch {
39
+ return false;
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Build a restricted JSON-schema (MCP elicitation `requestedSchema`) for a
45
+ * single- or multi-select choice over the given options.
46
+ * @param {object} params
47
+ * @returns {{ requestedSchema: object, key: string, options: Array<{value:string,label:string}> }}
48
+ */
49
+ export function buildChoiceSchema({
50
+ key = 'choice',
51
+ title,
52
+ description,
53
+ options,
54
+ multiSelect = false,
55
+ minItems,
56
+ maxItems,
57
+ }) {
58
+ const opts = normalizeOptions(options);
59
+ let prop;
60
+ if (multiSelect) {
61
+ prop = {
62
+ type: 'array',
63
+ ...(title ? { title } : {}),
64
+ ...(description ? { description } : {}),
65
+ items: { anyOf: opts.map((o) => ({ const: o.value, title: o.label })) },
66
+ ...(minItems != null ? { minItems } : {}),
67
+ ...(maxItems != null ? { maxItems } : {}),
68
+ };
69
+ } else {
70
+ prop = {
71
+ type: 'string',
72
+ ...(title ? { title } : {}),
73
+ ...(description ? { description } : {}),
74
+ oneOf: opts.map((o) => ({ const: o.value, title: o.label })),
75
+ };
76
+ }
77
+ return {
78
+ requestedSchema: {
79
+ type: 'object',
80
+ properties: { [key]: prop },
81
+ required: [key],
82
+ },
83
+ key,
84
+ options: opts,
85
+ };
86
+ }
87
+
88
+ /**
89
+ * Ask the user a single- or multi-select question via MCP elicitation.
90
+ *
91
+ * Returns `{ supported: false }` when the client has no form-elicitation support
92
+ * (caller should fall back to a markdown prompt). When supported, returns the
93
+ * outcome with `action` of `accept` (plus `value`), `decline`, or `cancel`.
94
+ * Never throws — any transport/capability error degrades to `{ supported: false }`.
95
+ *
96
+ * @param {{ server: { elicitInput: Function, getClientCapabilities?: Function } }} mcpServer
97
+ * @param {object} params
98
+ * @returns {Promise<{ supported: boolean, action?: string, value?: any, options: Array<{value:string,label:string}> }>}
99
+ */
100
+ export async function elicitChoice(
101
+ mcpServer,
102
+ { question, options, multiSelect = false, key = 'choice', title, description, minItems, maxItems },
103
+ ) {
104
+ const { requestedSchema, options: opts } = buildChoiceSchema({
105
+ key,
106
+ title: title ?? question,
107
+ description,
108
+ options,
109
+ multiSelect,
110
+ minItems,
111
+ maxItems,
112
+ });
113
+
114
+ if (!clientSupportsFormElicitation(mcpServer)) {
115
+ return { supported: false, options: opts };
116
+ }
117
+
118
+ try {
119
+ const result = await mcpServer.server.elicitInput({
120
+ message: question,
121
+ requestedSchema,
122
+ mode: 'form',
123
+ });
124
+ const action = result?.action;
125
+ if (action === 'accept') {
126
+ return { supported: true, action, value: result?.content?.[key], options: opts };
127
+ }
128
+ return { supported: true, action: action === 'decline' ? 'decline' : 'cancel', options: opts };
129
+ } catch {
130
+ // Capability mismatch or transport error — degrade to markdown fallback.
131
+ return { supported: false, options: opts };
132
+ }
133
+ }
134
+
135
+ /**
136
+ * Render a clear markdown prompt for clients without native elicitation.
137
+ * @param {object} params
138
+ * @returns {string}
139
+ */
140
+ export function renderMarkdownPrompt({ question, options, multiSelect = false }) {
141
+ const opts = normalizeOptions(options);
142
+ const lines = [`**${question}**`, ''];
143
+ for (const o of opts) {
144
+ lines.push(o.label === o.value ? `- \`${o.value}\`` : `- ${o.label} (\`${o.value}\`)`);
145
+ }
146
+ lines.push('');
147
+ lines.push(multiSelect ? '_Select one or more and reply with your choices._' : '_Reply with your choice._');
148
+ return lines.join('\n');
149
+ }
@@ -0,0 +1,287 @@
1
+ /**
2
+ * AIWG MCP Server — Shared Helpers
3
+ *
4
+ * @architecture @.aiwg/architecture/sketch-hermes-mcp-parity.md
5
+ * @issues #1311 (scope split), #1312 (command-run), #1313 (discover + pairs)
6
+ */
7
+
8
+ import { spawn } from 'node:child_process';
9
+ import fs from 'node:fs/promises';
10
+ import path from 'node:path';
11
+
12
+ /**
13
+ * Resolve AIWG_ROOT, with safe fallback to known install locations.
14
+ */
15
+ export const AIWG_ROOT = process.env.AIWG_ROOT ||
16
+ path.join(process.env.HOME || '', '.local/share/ai-writing-guide');
17
+
18
+ const PROJECT_AIWG_LOCATION_FILE = '.aiwg-location';
19
+ const ARTIFACT_PATH_ENV_ALIASES = [
20
+ 'AIWG_ARTIFACTS_PATH',
21
+ 'AIWG_PROJECT_ARTIFACTS_PATH',
22
+ 'AIWG_PROJECT_AIWG_DIR',
23
+ ];
24
+
25
+ function expandProjectArtifactPath(pathValue, projectDir) {
26
+ const trimmed = pathValue.trim();
27
+ if (trimmed === '~') return process.env.HOME || trimmed;
28
+ if (trimmed.startsWith('~/')) return path.resolve(process.env.HOME || '', trimmed.slice(2));
29
+ if (path.isAbsolute(trimmed)) return trimmed;
30
+ return path.resolve(projectDir, trimmed);
31
+ }
32
+
33
+ function parseProjectArtifactLocation(contents) {
34
+ for (const rawLine of contents.split(/\r?\n/)) {
35
+ let line = rawLine.trim();
36
+ if (!line || line.startsWith('#')) continue;
37
+ if (line.startsWith('export ')) line = line.slice('export '.length).trim();
38
+ const assignment = line.match(/^AIWG_ARTIFACTS_PATH\s*=\s*(.+)$/);
39
+ if (assignment) line = assignment[1].trim();
40
+ if (
41
+ (line.startsWith('"') && line.endsWith('"')) ||
42
+ (line.startsWith("'") && line.endsWith("'"))
43
+ ) {
44
+ line = line.slice(1, -1);
45
+ }
46
+ return line || null;
47
+ }
48
+ return null;
49
+ }
50
+
51
+ export async function resolveProjectAiwgDir(projectDir) {
52
+ for (const key of ARTIFACT_PATH_ENV_ALIASES) {
53
+ const value = process.env[key];
54
+ if (typeof value === 'string' && value.trim()) return expandProjectArtifactPath(value, projectDir);
55
+ }
56
+ try {
57
+ const pointer = await fs.readFile(path.join(projectDir, PROJECT_AIWG_LOCATION_FILE), 'utf-8');
58
+ const configured = parseProjectArtifactLocation(pointer);
59
+ if (configured) return expandProjectArtifactPath(configured, projectDir);
60
+ } catch {
61
+ // no pointer
62
+ }
63
+ return path.resolve(projectDir, '.aiwg');
64
+ }
65
+
66
+ /**
67
+ * Walk up the directory tree looking for `.aiwg/` or `.aiwg-location`.
68
+ *
69
+ * @param {string} startDir
70
+ * @returns {Promise<string>}
71
+ * @throws {Error} when no .aiwg directory or .aiwg-location pointer is found
72
+ */
73
+ export async function findProjectRoot(startDir = process.cwd()) {
74
+ let currentDir = startDir;
75
+ while (currentDir !== path.dirname(currentDir)) {
76
+ const aiwgPath = path.join(currentDir, '.aiwg');
77
+ const pointerPath = path.join(currentDir, PROJECT_AIWG_LOCATION_FILE);
78
+ try {
79
+ const stat = await fs.stat(aiwgPath);
80
+ if (stat.isDirectory()) return currentDir;
81
+ } catch {
82
+ // continue to pointer check
83
+ }
84
+ try {
85
+ const stat = await fs.stat(pointerPath);
86
+ if (stat.isFile()) return currentDir;
87
+ } catch {
88
+ // continue up
89
+ }
90
+ currentDir = path.dirname(currentDir);
91
+ }
92
+ throw new Error('No .aiwg directory or .aiwg-location pointer found. Run from an AIWG project or `aiwg new` first.');
93
+ }
94
+
95
+ /**
96
+ * Resolve project root with optional global fallback (#1311).
97
+ *
98
+ * Tools that operate on global registries (discover, *-show against the
99
+ * canonical corpus) accept a missing project root and fall back to AIWG_ROOT.
100
+ * Tools that operate on `.aiwg/` artifacts (artifact-read, memory-*) reject
101
+ * with a structured remediation message.
102
+ *
103
+ * @param {string|undefined} explicitDir
104
+ * @param {{ allowGlobal?: boolean, toolName?: string }} [options]
105
+ * @returns {Promise<{ root: string, isGlobal: boolean }>}
106
+ */
107
+ export async function resolveProjectRoot(explicitDir, { allowGlobal = false, toolName = 'tool' } = {}) {
108
+ if (explicitDir && explicitDir !== '.') {
109
+ return { root: path.resolve(explicitDir), isGlobal: false };
110
+ }
111
+ try {
112
+ const root = await findProjectRoot();
113
+ return { root, isGlobal: false };
114
+ } catch (err) {
115
+ if (allowGlobal) {
116
+ return { root: AIWG_ROOT, isGlobal: true };
117
+ }
118
+ throw new Error(
119
+ `Tool "${toolName}" requires a project root. ${err.message} ` +
120
+ `Remediation: Run from an AIWG project directory or pass project_dir explicitly.`
121
+ );
122
+ }
123
+ }
124
+
125
+ /**
126
+ * The set of MCP tools that are allowed to operate without a project root
127
+ * (they fall back to AIWG_ROOT). Maintained here so tool registrations
128
+ * stay in sync (#1311).
129
+ */
130
+ export const GLOBAL_ALLOWED_TOOLS = new Set([
131
+ 'discover',
132
+ 'skill-list',
133
+ 'skill-show',
134
+ 'command-list',
135
+ 'command-show',
136
+ 'rule-list',
137
+ 'rule-show',
138
+ 'agent-list', // existing; canonical corpus enumeration
139
+ 'agent-show',
140
+ 'template-list',
141
+ 'template-show',
142
+ 'template-render', // existing; uses corpus templates
143
+ ]);
144
+
145
+ export function isGlobalAllowed(toolName) {
146
+ return GLOBAL_ALLOWED_TOOLS.has(toolName);
147
+ }
148
+
149
+ /**
150
+ * Spawn the `aiwg` CLI as a subprocess with safe argv handling (#1312).
151
+ *
152
+ * NEVER use `shell: true` — args must pass as an array so user-provided
153
+ * strings are never interpreted as shell metacharacters. Token security
154
+ * (RULES: token-security) — command path is logged, args content is not.
155
+ *
156
+ * @param {string[]} args
157
+ * @param {{ cwd?: string, env?: object, timeoutMs?: number, input?: string }} [options]
158
+ * @returns {Promise<{ stdout: string, stderr: string, code: number }>}
159
+ */
160
+ export function runAiwgCli(args, { cwd, env, timeoutMs = 120_000, input } = {}) {
161
+ return new Promise((resolve, reject) => {
162
+ const proc = spawn('aiwg', args, {
163
+ shell: false,
164
+ cwd: cwd || process.cwd(),
165
+ env: { ...process.env, ...(env || {}) },
166
+ stdio: ['pipe', 'pipe', 'pipe'],
167
+ });
168
+ let stdout = '';
169
+ let stderr = '';
170
+ let timedOut = false;
171
+ const timer = setTimeout(() => {
172
+ timedOut = true;
173
+ proc.kill('SIGTERM');
174
+ }, timeoutMs);
175
+
176
+ proc.stdout.on('data', (chunk) => { stdout += chunk; });
177
+ proc.stderr.on('data', (chunk) => { stderr += chunk; });
178
+
179
+ proc.on('close', (code) => {
180
+ clearTimeout(timer);
181
+ if (timedOut) {
182
+ reject(new Error(`aiwg ${args[0] || ''} timed out after ${timeoutMs}ms`));
183
+ return;
184
+ }
185
+ resolve({ stdout, stderr, code: code ?? -1 });
186
+ });
187
+ proc.on('error', (err) => {
188
+ clearTimeout(timer);
189
+ reject(err);
190
+ });
191
+
192
+ if (input !== undefined) {
193
+ proc.stdin.write(input);
194
+ proc.stdin.end();
195
+ } else {
196
+ proc.stdin.end();
197
+ }
198
+ });
199
+ }
200
+
201
+ /**
202
+ * Structured MCP error response.
203
+ */
204
+ export function mcpError(message, { remediation, requiresConfirmation } = {}) {
205
+ const body = { error: message };
206
+ if (remediation) body.remediation = remediation;
207
+ if (requiresConfirmation) body.requires_confirmation = true;
208
+ return {
209
+ content: [{ type: 'text', text: JSON.stringify(body, null, 2) }],
210
+ isError: true,
211
+ };
212
+ }
213
+
214
+ /**
215
+ * Structured MCP success response wrapping a JSON or text payload.
216
+ */
217
+ export function mcpJson(data) {
218
+ const text = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
219
+ return { content: [{ type: 'text', text }] };
220
+ }
221
+
222
+ /**
223
+ * Read AIWG CLI command registry to build the command-run allow-list.
224
+ *
225
+ * Lazily loaded from `src/extensions/commands/definitions.ts` — extracts
226
+ * `id:` fields. Cached after first read.
227
+ */
228
+ let _commandIds = null;
229
+ export async function loadCommandAllowList() {
230
+ if (_commandIds) return _commandIds;
231
+ const defPath = path.join(AIWG_ROOT, 'src/extensions/commands/definitions.ts');
232
+ // Fall back to source-checkout location if AIWG_ROOT points to the project itself
233
+ const candidates = [
234
+ defPath,
235
+ path.resolve(process.cwd(), 'src/extensions/commands/definitions.ts'),
236
+ ];
237
+ let text = '';
238
+ for (const c of candidates) {
239
+ try {
240
+ text = await fs.readFile(c, 'utf-8');
241
+ break;
242
+ } catch {
243
+ // try next
244
+ }
245
+ }
246
+ if (!text) {
247
+ // Last-resort fallback: spawn `aiwg help` and parse — slower but always works
248
+ try {
249
+ const { stdout } = await runAiwgCli(['help'], { timeoutMs: 30_000 });
250
+ _commandIds = new Set(
251
+ Array.from(stdout.matchAll(/^\s{4}([a-z][a-z0-9-]+)\s/gm))
252
+ .map(m => m[1])
253
+ );
254
+ return _commandIds;
255
+ } catch (e) {
256
+ _commandIds = new Set();
257
+ return _commandIds;
258
+ }
259
+ }
260
+ const ids = new Set();
261
+ for (const m of text.matchAll(/^ id: '([^']+)'/gm)) {
262
+ ids.add(m[1]);
263
+ }
264
+ _commandIds = ids;
265
+ return _commandIds;
266
+ }
267
+
268
+ /**
269
+ * Commands that mutate fleet/project state and require explicit `confirmed: true`
270
+ * before `command-run` will execute them. Defensive default.
271
+ */
272
+ export const DESTRUCTIVE_COMMANDS = new Set([
273
+ 'remove',
274
+ 'rollback-workspace',
275
+ 'promote',
276
+ 'uninstall-plugin',
277
+ 'cleanup-audit',
278
+ 'doc-sync',
279
+ 'sandbox', // local executor sandbox
280
+ 'ralph', // long-running loop
281
+ 'agent-loop-ext',
282
+ 'ralph-abort',
283
+ ]);
284
+
285
+ export function isDestructive(command) {
286
+ return DESTRUCTIVE_COMMANDS.has(command);
287
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * AIWG MCP Module
3
+ *
4
+ * Exports for the AIWG MCP server implementation.
5
+ *
6
+ * @module src/mcp
7
+ * @version 1.0.0
8
+ */
9
+
10
+ export { createServer, startServer } from './server.mjs';
11
+ export { main as cli } from './cli.mjs';