@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,375 @@
1
+ /**
2
+ * Discover facets — curated feature→capability fusion layer (#1623).
3
+ *
4
+ * The capability index (hybrid BM25 + dense) is near-optimal for a ~400-item
5
+ * corpus, but bare domain words ("persona", "expansion") and feature-intent
6
+ * phrases ("author an expansion", "scaffold a project") have weak lexical
7
+ * scent: generic artifacts that merely contain the word out-rank the artifacts
8
+ * that actually OWN the feature. This module adds a small, curated set of
9
+ * **facets** that map feature intents to their owning capabilities and fuses
10
+ * that signal into the single-pass `aiwg discover` ranking (reciprocal-rank
11
+ * spirit: a second ranker combined by max-floor + injection).
12
+ *
13
+ * This is the *single-pass fused* form the ADR ships for #1623. The parallel
14
+ * multi-vector fan-out over these same facets is the deferred #1626 work — the
15
+ * facet table here is the shared contract both consume, so #1626 reuses
16
+ * `DISCOVER_FACETS` rather than redefining domains.
17
+ *
18
+ * Design notes:
19
+ * - Facets are *curated*, not learned — appropriate at this corpus size and
20
+ * portable across all 10 providers (no embedding store, no fine-tuned
21
+ * router). See `.aiwg/architecture/adr-steward-feature-discoverability.md`.
22
+ * - Mapped capabilities are matched against an entry's canonical `name`
23
+ * (falling back to the path basename / parent-dir slug), so the table lists
24
+ * names — not paths — and survives bundle moves.
25
+ * - Activation strength tiers the score floor so an exact domain-word query
26
+ * ("persona") sorts the owning domain to the very top (above generic
27
+ * capped-at-1.0 substring matches, mirroring the exact-name 1.001 floor in
28
+ * query-engine), while looser token-overlap activations apply a gentler
29
+ * floor that lifts the domain into the top-K without dominating.
30
+ *
31
+ * @implements #1623 (U3)
32
+ */
33
+ /**
34
+ * The curated facet table. Kept deliberately small and legible — it is a
35
+ * routing index, not a knowledge base. Guarded by the discover acceptance
36
+ * test (canonical phrases must rank their targets top-3) and the
37
+ * metadata-completeness lint (empty triggers cannot recur).
38
+ */
39
+ export const DISCOVER_FACETS = [
40
+ {
41
+ facet: 'authoring-surface',
42
+ label: 'Expansion authoring (extension / addon / framework)',
43
+ intents: [
44
+ 'expansion',
45
+ 'author an expansion',
46
+ 'build an expansion',
47
+ 'create an expansion',
48
+ 'new expansion',
49
+ 'build an extension',
50
+ 'create an extension',
51
+ 'author an extension',
52
+ 'create an addon',
53
+ 'author an addon',
54
+ 'build an addon',
55
+ 'scaffold a framework',
56
+ 'author a framework',
57
+ 'create a framework',
58
+ 'extension authoring',
59
+ 'addon authoring',
60
+ 'framework authoring',
61
+ ],
62
+ capabilities: ['scaffold-extension', 'scaffold-addon', 'scaffold-framework'],
63
+ },
64
+ {
65
+ facet: 'persona-identity',
66
+ label: 'Persona / SOUL identity (author and select)',
67
+ intents: [
68
+ 'persona',
69
+ 'soul',
70
+ 'identity',
71
+ 'create a persona',
72
+ 'author a soul',
73
+ 'make an identity profile',
74
+ 'new persona',
75
+ 'generate soul',
76
+ 'select a persona',
77
+ 'choose a persona',
78
+ 'switch persona',
79
+ 'pick an identity',
80
+ 'character sheet',
81
+ 'persona authoring',
82
+ ],
83
+ capabilities: [
84
+ 'soul-create',
85
+ 'soul-apply',
86
+ 'soul-enable',
87
+ 'aiwg-writer',
88
+ 'aiwg-orchestrator',
89
+ 'aiwg-reviewer',
90
+ 'aiwg-security',
91
+ 'aiwg-finder',
92
+ 'aiwg-steward',
93
+ 'mc-conductor',
94
+ ],
95
+ },
96
+ {
97
+ facet: 'feature-domain',
98
+ label: 'Project creation (aiwg new + project-local bundles)',
99
+ intents: [
100
+ 'scaffold a project',
101
+ 'create a project',
102
+ 'new project',
103
+ 'aiwg new',
104
+ 'project scaffolding',
105
+ 'project-local bundle',
106
+ 'start a project',
107
+ 'bootstrap a project',
108
+ ],
109
+ capabilities: ['new-project', 'new-bundle'],
110
+ },
111
+ {
112
+ facet: 'provider-capability',
113
+ label: 'Provider capability routing (native vs emulated)',
114
+ intents: [
115
+ 'provider support',
116
+ 'does my provider support',
117
+ 'native support',
118
+ 'provider capability',
119
+ 'what does my provider support',
120
+ 'emulation fallback',
121
+ 'is this supported natively',
122
+ ],
123
+ capabilities: ['steward', 'aiwg-steward'],
124
+ },
125
+ ];
126
+ /** Normalize a phrase/name for comparison (lowercase, collapse separators). */
127
+ function norm(s) {
128
+ return s.toLowerCase().replace(/[\s_-]+/g, ' ').trim();
129
+ }
130
+ const PERSONA_MARKETING_CONTEXT = new Set([
131
+ 'audience',
132
+ 'brand',
133
+ 'brief',
134
+ 'buyer',
135
+ 'campaign',
136
+ 'content',
137
+ 'copy',
138
+ 'customer',
139
+ 'email',
140
+ 'execution',
141
+ 'landing',
142
+ 'market',
143
+ 'marketing',
144
+ 'product',
145
+ 'sales',
146
+ 'social',
147
+ ]);
148
+ function suppressPersonaIdentityFacet(phrase) {
149
+ const p = norm(phrase);
150
+ if (!/\bpersona(s)?\b/.test(p))
151
+ return null;
152
+ const explicitIdentityIntent = /\b(soul|identity)\b/.test(p) ||
153
+ /\b(select|choose|switch|pick|apply|enable|author|generate)\s+(?:an?\s+)?(?:aiwg\s+)?persona\b/.test(p);
154
+ if (explicitIdentityIntent)
155
+ return null;
156
+ const contextTerms = new Set(p.split(' ').filter((token) => PERSONA_MARKETING_CONTEXT.has(token)));
157
+ if (contextTerms.size < 2)
158
+ return null;
159
+ return 'persona-identity facet suppressed because persona is used as marketing audience context, not AIWG persona/SOUL identity intent';
160
+ }
161
+ /** The score floor a facet activation guarantees for its capabilities. */
162
+ const FLOOR_EXACT = 1.0005; // above generic capped-1.0, below exact-name 1.001
163
+ const FLOOR_STRONG = 0.9; // substring either direction
164
+ const FLOOR_OVERLAP = 0.6; // majority token overlap on a multi-word intent
165
+ /**
166
+ * Compute the strongest activation floor for `phrase` against a facet entry.
167
+ * Returns null when the entry does not activate.
168
+ */
169
+ function facetActivation(phrase, entry) {
170
+ const p = norm(phrase);
171
+ if (!p)
172
+ return null;
173
+ if (entry.facet === 'persona-identity') {
174
+ const reason = suppressPersonaIdentityFacet(p);
175
+ if (reason) {
176
+ return {
177
+ facet: entry.facet,
178
+ label: entry.label,
179
+ status: 'suppressed',
180
+ floor: 0,
181
+ reason,
182
+ };
183
+ }
184
+ }
185
+ const pTokens = p.split(' ').filter(Boolean);
186
+ let best = 0;
187
+ let matchedIntent;
188
+ for (const raw of entry.intents) {
189
+ const intent = norm(raw);
190
+ if (!intent)
191
+ continue;
192
+ if (p === intent) {
193
+ return {
194
+ facet: entry.facet,
195
+ label: entry.label,
196
+ status: 'active',
197
+ floor: FLOOR_EXACT,
198
+ matchedIntent: raw,
199
+ };
200
+ }
201
+ if (p.includes(intent) || intent.includes(p)) {
202
+ if (FLOOR_STRONG > best) {
203
+ best = FLOOR_STRONG;
204
+ matchedIntent = raw;
205
+ }
206
+ continue;
207
+ }
208
+ const iTokens = intent.split(' ').filter(Boolean);
209
+ if (iTokens.length > 1 && pTokens.length > 0) {
210
+ const hits = iTokens.filter((t) => pTokens.includes(t)).length;
211
+ if (hits >= Math.ceil(iTokens.length / 2) && FLOOR_OVERLAP > best) {
212
+ best = FLOOR_OVERLAP;
213
+ matchedIntent = raw;
214
+ }
215
+ }
216
+ }
217
+ if (best <= 0)
218
+ return null;
219
+ return {
220
+ facet: entry.facet,
221
+ label: entry.label,
222
+ status: 'active',
223
+ floor: best,
224
+ matchedIntent,
225
+ };
226
+ }
227
+ export function diagnoseFacetActivations(phrase) {
228
+ return DISCOVER_FACETS
229
+ .map((entry) => facetActivation(phrase, entry))
230
+ .filter((item) => item !== null);
231
+ }
232
+ /** Does a candidate entry correspond to a mapped capability name? */
233
+ function entryMatchesCapability(entry, capability) {
234
+ const cap = norm(capability);
235
+ if (entry.name && norm(entry.name) === cap)
236
+ return true;
237
+ // Fall back to path-derived identity (skills: <name>/SKILL.md; agents: <name>.md).
238
+ const path = entry.path || '';
239
+ const base = path.replace(/\\/g, '/').split('/').filter(Boolean);
240
+ if (base.length === 0)
241
+ return false;
242
+ const file = base[base.length - 1];
243
+ const parent = base.length >= 2 ? base[base.length - 2] : '';
244
+ if (file === 'SKILL.md')
245
+ return norm(parent) === cap;
246
+ return norm(file.replace(/\.[^.]+$/, '')) === cap;
247
+ }
248
+ export const DEFAULT_FACET_WEIGHTS = {
249
+ base: 1.0,
250
+ facets: {
251
+ 'feature-domain': 1.0,
252
+ 'persona-identity': 1.0,
253
+ 'authoring-surface': 1.0,
254
+ // Provider-capability is a narrower router target — weight it slightly
255
+ // lower so it informs ties without dominating feature/persona queries.
256
+ 'provider-capability': 0.75,
257
+ },
258
+ };
259
+ /** Standard reciprocal-rank-fusion damping constant. */
260
+ const RRF_K = 60;
261
+ /**
262
+ * Scale that maps an RRF consensus value (~0..0.05) into a sub-display
263
+ * tiebreaker (~0..5e-7). It reorders entries WITHIN an activation-floor tier
264
+ * by cross-vector consensus without perturbing the 2-decimal `score` the CLI
265
+ * emits — so the #1623 score contract (and discover value-assertions) hold.
266
+ */
267
+ const RRF_TIEBREAK_SCALE = 1e-5;
268
+ const keyOf = (e) => e.path || e.name || e.title;
269
+ /**
270
+ * Rank one facet's mapped, present capabilities for `phrase` — a single
271
+ * "vector" in the multi-vector fan-out (#1626). Returns null when the facet
272
+ * does not activate. Async so the caller can fan out across vectors in
273
+ * parallel via Promise.all; the work itself is CPU-bound and deterministic.
274
+ */
275
+ async function rankFacetVector(facet, phrase, candidates, baseScoreOf) {
276
+ const activation = facetActivation(phrase, facet);
277
+ if (!activation || activation.status !== 'active' || activation.floor <= 0)
278
+ return null;
279
+ const matched = [];
280
+ const seen = new Set();
281
+ for (const cap of facet.capabilities) {
282
+ const m = candidates.find((c) => entryMatchesCapability(c, cap));
283
+ if (!m)
284
+ continue;
285
+ const k = keyOf(m);
286
+ if (seen.has(k))
287
+ continue;
288
+ seen.add(k);
289
+ matched.push(m);
290
+ }
291
+ // Within the vector, the most lexically-relevant owning capability leads —
292
+ // this is the per-vector ranking RRF consumes.
293
+ matched.sort((a, b) => baseScoreOf(b) - baseScoreOf(a));
294
+ return { facet, activation, ranked: matched };
295
+ }
296
+ /**
297
+ * Multi-vector facet fan-out + reciprocal-rank fusion (#1623 single-pass →
298
+ * #1626 parallel fan-out). Fans out across the curated facet vectors in
299
+ * parallel, fuses them with the base lexical ranker via RRF, and lifts each
300
+ * facet-matched capability to its activation floor so it out-ranks generic
301
+ * artifacts that merely mention the domain word.
302
+ *
303
+ * The fused result is a SUPERSET of the #1623 single-pass behavior (ADR
304
+ * contract): facet-matched entries are guaranteed a place at no less than the
305
+ * activation floor (injected if the lexical pass missed them), base-only
306
+ * entries keep their lexical score, and RRF consensus orders entries within a
307
+ * floor tier (so multi-facet / more-relevant capabilities sort first) without
308
+ * changing the emitted 2-decimal score. Per-facet weighting is configurable.
309
+ *
310
+ * The returned list is re-sorted but NOT truncated — the caller applies limit.
311
+ * Pure/deterministic: no IO, no mutation of inputs.
312
+ */
313
+ export async function applyFacetFusion(scored, candidates, phrase, weights = DEFAULT_FACET_WEIGHTS) {
314
+ const baseScore = new Map();
315
+ for (const r of scored)
316
+ baseScore.set(keyOf(r.entry), r.score);
317
+ const baseScoreOf = (e) => baseScore.get(keyOf(e)) ?? 0;
318
+ // Fan out across the facet vectors in parallel.
319
+ const vectors = (await Promise.all(DISCOVER_FACETS.map((f) => rankFacetVector(f, phrase, candidates, baseScoreOf)))).filter((v) => v !== null);
320
+ // RRF: combine the base ranker (the already-ordered `scored` list) with each
321
+ // facet vector by reciprocal rank. `rrf` drives intra-tier ordering; the
322
+ // floor lift preserves the #1623 contract.
323
+ const rrf = new Map();
324
+ const bestFloor = new Map();
325
+ const matchedEntry = new Map();
326
+ const activationsByEntry = new Map();
327
+ scored.forEach((r, i) => {
328
+ const k = keyOf(r.entry);
329
+ rrf.set(k, (rrf.get(k) ?? 0) + weights.base / (RRF_K + i + 1));
330
+ });
331
+ for (const v of vectors) {
332
+ const w = weights.facets[v.facet.facet] ?? 1.0;
333
+ v.ranked.forEach((e, i) => {
334
+ const k = keyOf(e);
335
+ rrf.set(k, (rrf.get(k) ?? 0) + w / (RRF_K + i + 1));
336
+ bestFloor.set(k, Math.max(bestFloor.get(k) ?? 0, v.activation.floor));
337
+ matchedEntry.set(k, e);
338
+ const activations = activationsByEntry.get(k) ?? [];
339
+ activations.push(v.activation);
340
+ activationsByEntry.set(k, activations);
341
+ });
342
+ }
343
+ const out = new Map();
344
+ for (const r of scored)
345
+ out.set(keyOf(r.entry), { entry: r.entry, score: r.score });
346
+ for (const [k, floor] of bestFloor) {
347
+ const entry = matchedEntry.get(k);
348
+ const base = baseScoreOf(entry);
349
+ const floorApplied = floor > base;
350
+ // RRF only orders entries inside a floor-lifted tier. Applying it when the
351
+ // lexical score already exceeds the floor silently boosts a generic facet
352
+ // match above an equally-scored exact project trigger (#1828).
353
+ const tiebreak = floorApplied ? (rrf.get(k) ?? 0) * RRF_TIEBREAK_SCALE : 0;
354
+ const lifted = floorApplied ? floor + tiebreak : base;
355
+ const facetDiagnostics = (activationsByEntry.get(k) ?? []).map((activation) => ({
356
+ facet: activation.facet,
357
+ label: activation.label,
358
+ matched_intent: activation.matchedIntent,
359
+ activation_floor: activation.floor,
360
+ base_score: base,
361
+ floor_applied: activation.floor > base,
362
+ rrf_tiebreak: activation.floor === floor ? tiebreak : 0,
363
+ }));
364
+ const existing = out.get(k);
365
+ if (existing) {
366
+ existing.score = Math.max(existing.score, lifted);
367
+ existing.facetDiagnostics = facetDiagnostics;
368
+ }
369
+ else {
370
+ out.set(k, { entry, score: lifted, facetDiagnostics });
371
+ }
372
+ }
373
+ return Array.from(out.values()).sort((a, b) => b.score - a.score);
374
+ }
375
+ //# sourceMappingURL=discover-facets.js.map