@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,633 @@
1
+ /**
2
+ * AIWG MCP Server
3
+ *
4
+ * Model Context Protocol server exposing AIWG capabilities.
5
+ * Follows MCP 2025-11-25 specification.
6
+ *
7
+ * @see https://modelcontextprotocol.io/specification/2025-11-25
8
+ * @architecture @.aiwg/architecture/software-architecture-doc.md - Section 2.1 CLI Layer
9
+ * @reference @docs/references/REF-066-mcp-specification-2025.md
10
+ * @cli @docs/CLI_USAGE.md - mcp serve command
11
+ * @frameworks @agentic/code/frameworks/sdlc-complete/
12
+ * @frameworks @agentic/code/frameworks/media-marketing-kit/
13
+ */
14
+
15
+ import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
16
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
17
+ import { z } from 'zod';
18
+ import fs from 'fs/promises';
19
+ import path from 'path';
20
+ import { fileURLToPath } from 'url';
21
+ import { registerDiscoveryTools } from './tools/discovery.mjs';
22
+ import { registerCommandRunTool } from './tools/command-run.mjs';
23
+ import { registerInteractionTools } from './tools/interaction.mjs';
24
+ import { parseToolsets, registerOptInToolsets, KNOWN_TOOLSETS } from './tools/subsystems.mjs';
25
+ import { AIWG_ROOT, findProjectRoot, resolveProjectAiwgDir } from './helpers.mjs';
26
+
27
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
28
+
29
+ // Framework paths
30
+ const FRAMEWORKS = {
31
+ 'sdlc-complete': path.join(AIWG_ROOT, 'agentic/code/frameworks/sdlc-complete'),
32
+ 'media-marketing-kit': path.join(AIWG_ROOT, 'agentic/code/frameworks/media-marketing-kit')
33
+ };
34
+
35
+ /**
36
+ * Create and configure the AIWG MCP Server
37
+ */
38
+ export function createServer() {
39
+ const server = new McpServer({
40
+ name: 'aiwg',
41
+ version: '1.0.0'
42
+ });
43
+
44
+ // ============================================
45
+ // TOOLS
46
+ // ============================================
47
+
48
+ // ============================================
49
+ // Discovery toolset (#1311 #1313 #1320) — registers:
50
+ // discover, skill-list, skill-show, command-list, command-show,
51
+ // rule-list, rule-show, agent-show, template-list, template-show
52
+ // ============================================
53
+ registerDiscoveryTools(server);
54
+
55
+ // ============================================
56
+ // Command-run dispatch (#1312) — registers:
57
+ // command-run (allow-listed CLI dispatch)
58
+ // ============================================
59
+ registerCommandRunTool(server);
60
+
61
+ // ============================================
62
+ // Interaction toolset (#1676) — registers:
63
+ // ask-user (structured question via MCP elicitation, markdown fallback)
64
+ // ============================================
65
+ registerInteractionTools(server);
66
+
67
+ // ============================================
68
+ // Opt-in subsystem toolsets (#1322-#1332)
69
+ //
70
+ // Enabled via AIWG_MCP_TOOLSETS env or `aiwg mcp serve --toolsets=`.
71
+ // Known: flows, missions, memory, kb, research, activity-log, index, ralph, mc, ops, all
72
+ // Default: none (core only — discovery + command-run)
73
+ // ============================================
74
+ const requested = parseToolsets(process.env.AIWG_MCP_TOOLSETS || '');
75
+ registerOptInToolsets(server, requested);
76
+
77
+ // Tool: artifact-read
78
+ server.registerTool('artifact-read', {
79
+ title: 'Read AIWG Artifact',
80
+ description: 'Read artifact from .aiwg/ directory',
81
+ inputSchema: {
82
+ path: z.string().describe('Path relative to .aiwg/ (e.g., "requirements/UC-001.md")'),
83
+ project_dir: z.string().optional().describe('Project directory path (defaults to auto-detected project root)')
84
+ }
85
+ }, async ({ path: artifactPath, project_dir }) => {
86
+ try {
87
+ // Auto-find project root if not specified
88
+ const projectRoot = project_dir || await findProjectRoot();
89
+ const fullPath = path.join(await resolveProjectAiwgDir(projectRoot), artifactPath);
90
+ const content = await fs.readFile(fullPath, 'utf-8');
91
+ return {
92
+ content: [{
93
+ type: 'text',
94
+ text: content
95
+ }]
96
+ };
97
+ } catch (error) {
98
+ return {
99
+ content: [{
100
+ type: 'text',
101
+ text: `Error reading artifact: ${error.message}`
102
+ }],
103
+ isError: true
104
+ };
105
+ }
106
+ });
107
+
108
+ // Tool: artifact-write
109
+ server.registerTool('artifact-write', {
110
+ title: 'Write AIWG Artifact',
111
+ description: 'Write artifact to .aiwg/ directory',
112
+ inputSchema: {
113
+ path: z.string().describe('Path relative to .aiwg/'),
114
+ content: z.string().describe('Artifact content'),
115
+ project_dir: z.string().optional().describe('Project directory path (defaults to auto-detected project root)')
116
+ }
117
+ }, async ({ path: artifactPath, content, project_dir }) => {
118
+ try {
119
+ // Auto-find project root if not specified
120
+ const projectRoot = project_dir || await findProjectRoot();
121
+ const fullPath = path.join(await resolveProjectAiwgDir(projectRoot), artifactPath);
122
+ const dir = path.dirname(fullPath);
123
+
124
+ // Ensure directory exists
125
+ await fs.mkdir(dir, { recursive: true });
126
+
127
+ // Write file
128
+ await fs.writeFile(fullPath, content, 'utf-8');
129
+
130
+ return {
131
+ content: [{
132
+ type: 'text',
133
+ text: JSON.stringify({
134
+ status: 'success',
135
+ path: fullPath,
136
+ message: 'Artifact written successfully'
137
+ }, null, 2)
138
+ }]
139
+ };
140
+ } catch (error) {
141
+ return {
142
+ content: [{
143
+ type: 'text',
144
+ text: `Error writing artifact: ${error.message}`
145
+ }],
146
+ isError: true
147
+ };
148
+ }
149
+ });
150
+
151
+ // Tool: template-render
152
+ server.registerTool('template-render', {
153
+ title: 'Render AIWG Template',
154
+ description: 'Render AIWG template with provided variables',
155
+ inputSchema: {
156
+ template: z.string().describe('Template path (e.g., "sdlc/intake/project-intake-template.md")'),
157
+ variables: z.record(z.string()).optional().describe('Template variable substitutions')
158
+ }
159
+ }, async ({ template, variables = {} }) => {
160
+ try {
161
+ // Determine framework and template path
162
+ const [framework, ...pathParts] = template.split('/');
163
+ const frameworkPath = FRAMEWORKS[framework] || FRAMEWORKS['sdlc-complete'];
164
+ const templatePath = path.join(frameworkPath, 'templates', ...pathParts);
165
+
166
+ // Read template
167
+ let content = await fs.readFile(templatePath, 'utf-8');
168
+
169
+ // Simple variable substitution
170
+ for (const [key, value] of Object.entries(variables)) {
171
+ content = content.replace(new RegExp(`\\{\\{${key}\\}\\}`, 'g'), value);
172
+ content = content.replace(new RegExp(`\\$\\{${key}\\}`, 'g'), value);
173
+ }
174
+
175
+ return {
176
+ content: [{
177
+ type: 'text',
178
+ text: content
179
+ }]
180
+ };
181
+ } catch (error) {
182
+ return {
183
+ content: [{
184
+ type: 'text',
185
+ text: `Error rendering template: ${error.message}`
186
+ }],
187
+ isError: true
188
+ };
189
+ }
190
+ });
191
+
192
+ // Tool: agent-list
193
+ server.registerTool('agent-list', {
194
+ title: 'List AIWG Agents',
195
+ description: 'List available AIWG agents',
196
+ inputSchema: {
197
+ framework: z.enum(['sdlc-complete', 'media-marketing-kit', 'all']).default('all')
198
+ .describe('Framework to list agents from'),
199
+ category: z.string().optional().describe('Filter by category (e.g., "security", "testing")')
200
+ }
201
+ }, async ({ framework, category }) => {
202
+ try {
203
+ const agents = [];
204
+
205
+ const frameworksToSearch = framework === 'all'
206
+ ? Object.keys(FRAMEWORKS)
207
+ : [framework];
208
+
209
+ for (const fw of frameworksToSearch) {
210
+ const agentDir = path.join(FRAMEWORKS[fw], 'agents');
211
+ try {
212
+ const files = await fs.readdir(agentDir);
213
+ for (const file of files) {
214
+ if (file.endsWith('.md') && !file.startsWith('README')) {
215
+ const agentName = file.replace('.md', '');
216
+ if (!category || agentName.includes(category)) {
217
+ agents.push({
218
+ name: agentName,
219
+ framework: fw,
220
+ path: `aiwg://agents/${fw}/${agentName}`
221
+ });
222
+ }
223
+ }
224
+ }
225
+ } catch {
226
+ // Framework directory might not exist
227
+ }
228
+ }
229
+
230
+ return {
231
+ content: [{
232
+ type: 'text',
233
+ text: JSON.stringify({
234
+ count: agents.length,
235
+ agents
236
+ }, null, 2)
237
+ }]
238
+ };
239
+ } catch (error) {
240
+ return {
241
+ content: [{
242
+ type: 'text',
243
+ text: `Error listing agents: ${error.message}`
244
+ }],
245
+ isError: true
246
+ };
247
+ }
248
+ });
249
+
250
+ // ============================================
251
+ // RESOURCES
252
+ // ============================================
253
+
254
+ // Resource: prompts catalog
255
+ server.registerResource(
256
+ 'prompts-catalog',
257
+ 'aiwg://prompts/catalog',
258
+ {
259
+ title: 'AIWG Prompts Catalog',
260
+ description: 'List of all available AIWG prompt templates',
261
+ mimeType: 'application/json'
262
+ },
263
+ async () => {
264
+ const promptsDir = path.join(AIWG_ROOT, 'agentic/code/addons/aiwg-utils/prompts');
265
+ const catalog = await scanDirectory(promptsDir, 'prompts');
266
+ return {
267
+ contents: [{
268
+ uri: 'aiwg://prompts/catalog',
269
+ text: JSON.stringify(catalog, null, 2)
270
+ }]
271
+ };
272
+ }
273
+ );
274
+
275
+ // Resource: templates catalog
276
+ server.registerResource(
277
+ 'templates-catalog',
278
+ 'aiwg://templates/catalog',
279
+ {
280
+ title: 'AIWG Templates Catalog',
281
+ description: 'List of all available AIWG document templates',
282
+ mimeType: 'application/json'
283
+ },
284
+ async () => {
285
+ const catalogs = {};
286
+ for (const [fw, fwPath] of Object.entries(FRAMEWORKS)) {
287
+ const templatesDir = path.join(fwPath, 'templates');
288
+ try {
289
+ catalogs[fw] = await scanDirectory(templatesDir, 'templates');
290
+ } catch {
291
+ catalogs[fw] = [];
292
+ }
293
+ }
294
+ return {
295
+ contents: [{
296
+ uri: 'aiwg://templates/catalog',
297
+ text: JSON.stringify(catalogs, null, 2)
298
+ }]
299
+ };
300
+ }
301
+ );
302
+
303
+ // Resource: agents catalog
304
+ server.registerResource(
305
+ 'agents-catalog',
306
+ 'aiwg://agents/catalog',
307
+ {
308
+ title: 'AIWG Agents Catalog',
309
+ description: 'List of all available AIWG agents',
310
+ mimeType: 'application/json'
311
+ },
312
+ async () => {
313
+ const catalogs = {};
314
+ for (const [fw, fwPath] of Object.entries(FRAMEWORKS)) {
315
+ const agentsDir = path.join(fwPath, 'agents');
316
+ try {
317
+ catalogs[fw] = await scanDirectory(agentsDir, 'agents');
318
+ } catch {
319
+ catalogs[fw] = [];
320
+ }
321
+ }
322
+ return {
323
+ contents: [{
324
+ uri: 'aiwg://agents/catalog',
325
+ text: JSON.stringify(catalogs, null, 2)
326
+ }]
327
+ };
328
+ }
329
+ );
330
+
331
+ // Dynamic resource: specific prompt
332
+ server.registerResource(
333
+ 'prompt',
334
+ new ResourceTemplate('aiwg://prompts/{category}/{name}', { list: undefined }),
335
+ {
336
+ title: 'AIWG Prompt',
337
+ description: 'Retrieve specific AIWG prompt template'
338
+ },
339
+ async (uri, { category, name }) => {
340
+ const promptPath = path.join(
341
+ AIWG_ROOT,
342
+ 'agentic/code/addons/aiwg-utils/prompts',
343
+ category,
344
+ `${name}.md`
345
+ );
346
+ try {
347
+ const content = await fs.readFile(promptPath, 'utf-8');
348
+ return {
349
+ contents: [{
350
+ uri: uri.href,
351
+ text: content
352
+ }]
353
+ };
354
+ } catch {
355
+ return {
356
+ contents: [{
357
+ uri: uri.href,
358
+ text: `Prompt not found: ${category}/${name}`
359
+ }]
360
+ };
361
+ }
362
+ }
363
+ );
364
+
365
+ // Dynamic resource: specific template
366
+ server.registerResource(
367
+ 'template',
368
+ new ResourceTemplate('aiwg://templates/{framework}/{category}/{name}', { list: undefined }),
369
+ {
370
+ title: 'AIWG Template',
371
+ description: 'Retrieve specific AIWG template'
372
+ },
373
+ async (uri, { framework, category, name }) => {
374
+ const templatePath = path.join(
375
+ FRAMEWORKS[framework] || FRAMEWORKS['sdlc-complete'],
376
+ 'templates',
377
+ category,
378
+ `${name}.md`
379
+ );
380
+ try {
381
+ const content = await fs.readFile(templatePath, 'utf-8');
382
+ return {
383
+ contents: [{
384
+ uri: uri.href,
385
+ text: content
386
+ }]
387
+ };
388
+ } catch {
389
+ return {
390
+ contents: [{
391
+ uri: uri.href,
392
+ text: `Template not found: ${framework}/${category}/${name}`
393
+ }]
394
+ };
395
+ }
396
+ }
397
+ );
398
+
399
+ // Dynamic resource: specific agent
400
+ server.registerResource(
401
+ 'agent',
402
+ new ResourceTemplate('aiwg://agents/{framework}/{name}', { list: undefined }),
403
+ {
404
+ title: 'AIWG Agent',
405
+ description: 'Retrieve specific AIWG agent definition'
406
+ },
407
+ async (uri, { framework, name }) => {
408
+ const agentPath = path.join(
409
+ FRAMEWORKS[framework] || FRAMEWORKS['sdlc-complete'],
410
+ 'agents',
411
+ `${name}.md`
412
+ );
413
+ try {
414
+ const content = await fs.readFile(agentPath, 'utf-8');
415
+ return {
416
+ contents: [{
417
+ uri: uri.href,
418
+ text: content
419
+ }]
420
+ };
421
+ } catch {
422
+ return {
423
+ contents: [{
424
+ uri: uri.href,
425
+ text: `Agent not found: ${framework}/${name}`
426
+ }]
427
+ };
428
+ }
429
+ }
430
+ );
431
+
432
+ // ============================================
433
+ // PROMPTS (MCP Prompt Templates)
434
+ // ============================================
435
+
436
+ // Prompt: decompose-task
437
+ server.registerPrompt(
438
+ 'decompose-task',
439
+ {
440
+ title: 'Task Decomposition',
441
+ description: 'Break down complex task into manageable subtasks (≤7 for cognitive limit)',
442
+ argsSchema: {
443
+ task: z.string().describe('Complex task to decompose'),
444
+ max_subtasks: z.string().default('7').describe('Maximum subtasks (cognitive limit)')
445
+ }
446
+ },
447
+ ({ task, max_subtasks }) => ({
448
+ messages: [{
449
+ role: 'user',
450
+ content: {
451
+ type: 'text',
452
+ text: `## Task Decomposition Request
453
+
454
+ Break down the following task into ${max_subtasks} or fewer concrete, actionable subtasks.
455
+
456
+ **Task**: ${task}
457
+
458
+ **Guidelines**:
459
+ 1. Each subtask should be independently executable
460
+ 2. Subtasks should have clear completion criteria
461
+ 3. Order by logical dependency (prerequisites first)
462
+ 4. Identify which subtasks can run in parallel
463
+ 5. Flag any subtasks that require user input
464
+
465
+ **Output Format**:
466
+ For each subtask, provide:
467
+ - ID: Sequential identifier
468
+ - Description: Clear action statement
469
+ - Dependencies: List of prerequisite subtask IDs
470
+ - Parallelizable: Yes/No
471
+ - Requires Input: Yes/No (if Yes, specify what)`
472
+ }
473
+ }]
474
+ })
475
+ );
476
+
477
+ // Prompt: parallel-execution
478
+ server.registerPrompt(
479
+ 'parallel-execution',
480
+ {
481
+ title: 'Parallel Execution Guide',
482
+ description: 'Identify and coordinate parallelizable work items',
483
+ argsSchema: {
484
+ tasks: z.string().describe('List of tasks to analyze for parallelization')
485
+ }
486
+ },
487
+ ({ tasks }) => ({
488
+ messages: [{
489
+ role: 'user',
490
+ content: {
491
+ type: 'text',
492
+ text: `## Parallel Execution Analysis
493
+
494
+ Analyze the following tasks and identify which can be executed in parallel.
495
+
496
+ **Tasks**:
497
+ ${tasks}
498
+
499
+ **Analysis Required**:
500
+ 1. **Dependency Graph**: Map task dependencies
501
+ 2. **Parallel Groups**: Group tasks that can run simultaneously
502
+ 3. **Critical Path**: Identify the longest sequential chain
503
+ 4. **Resource Conflicts**: Flag tasks that compete for same resources
504
+ 5. **Coordination Points**: Where parallel streams must synchronize
505
+
506
+ **Output**: Provide an execution plan with parallel lanes and sync points.`
507
+ }
508
+ }]
509
+ })
510
+ );
511
+
512
+ // Prompt: recovery-protocol
513
+ server.registerPrompt(
514
+ 'recovery-protocol',
515
+ {
516
+ title: 'Recovery Protocol',
517
+ description: 'Structured error recovery using PAUSE→DIAGNOSE→ADAPT→RETRY→ESCALATE',
518
+ argsSchema: {
519
+ error: z.string().describe('Error message or description'),
520
+ context: z.string().optional().describe('Additional context about what was being attempted')
521
+ }
522
+ },
523
+ ({ error, context }) => ({
524
+ messages: [{
525
+ role: 'user',
526
+ content: {
527
+ type: 'text',
528
+ text: `## Recovery Protocol
529
+
530
+ An error has occurred. Follow the structured recovery protocol.
531
+
532
+ **Error**: ${error}
533
+ ${context ? `**Context**: ${context}` : ''}
534
+
535
+ **Protocol**:
536
+
537
+ ### 1. PAUSE
538
+ Stop execution and preserve current state.
539
+ - What was the exact operation being performed?
540
+ - What state needs to be preserved?
541
+
542
+ ### 2. DIAGNOSE
543
+ Analyze the error and classify it:
544
+ - **Syntax Error**: Fix formatting/structure
545
+ - **Schema Mismatch**: Re-inspect target (Rule 4: Grounding)
546
+ - **Logic Error**: Decompose further
547
+ - **Loop Detected**: Change approach entirely
548
+ - **External Failure**: Network, API, or resource issue
549
+
550
+ ### 3. ADAPT
551
+ Choose a recovery strategy:
552
+ - Simple retry (transient failures)
553
+ - Modified approach (logic issues)
554
+ - Alternative path (blocked resources)
555
+ - Partial completion (scope reduction)
556
+
557
+ ### 4. RETRY
558
+ Execute adapted approach (max 3 attempts).
559
+ Track what was tried and outcomes.
560
+
561
+ ### 5. ESCALATE
562
+ If retry fails, prepare structured escalation:
563
+ - What was attempted
564
+ - What failed
565
+ - Current state
566
+ - Recommended next steps
567
+ - Human decision required`
568
+ }
569
+ }]
570
+ })
571
+ );
572
+
573
+ return server;
574
+ }
575
+
576
+ // ============================================
577
+ // HELPER FUNCTIONS
578
+ // ============================================
579
+
580
+ /**
581
+ * Scan directory for files
582
+ */
583
+ async function scanDirectory(dir, type) {
584
+ const results = [];
585
+ try {
586
+ const entries = await fs.readdir(dir, { withFileTypes: true });
587
+ for (const entry of entries) {
588
+ if (entry.isDirectory()) {
589
+ const subResults = await scanDirectory(path.join(dir, entry.name), type);
590
+ results.push(...subResults.map(r => ({
591
+ ...r,
592
+ category: entry.name
593
+ })));
594
+ } else if (entry.isFile() && entry.name.endsWith('.md')) {
595
+ results.push({
596
+ name: entry.name.replace('.md', ''),
597
+ path: path.join(dir, entry.name),
598
+ uri: `aiwg://${type}/${entry.name.replace('.md', '')}`
599
+ });
600
+ }
601
+ }
602
+ } catch {
603
+ // Directory doesn't exist
604
+ }
605
+ return results;
606
+ }
607
+
608
+ /**
609
+ * Start the MCP server with stdio transport
610
+ */
611
+ export async function startServer() {
612
+ const server = createServer();
613
+ const transport = new StdioServerTransport();
614
+
615
+ console.error('[AIWG MCP] Starting server...');
616
+ await server.connect(transport);
617
+ console.error('[AIWG MCP] Server connected via stdio transport');
618
+
619
+ // Handle graceful shutdown
620
+ process.on('SIGINT', async () => {
621
+ console.error('[AIWG MCP] Shutting down...');
622
+ await server.close();
623
+ process.exit(0);
624
+ });
625
+ }
626
+
627
+ // Run if executed directly
628
+ if (process.argv[1] === fileURLToPath(import.meta.url)) {
629
+ startServer().catch(error => {
630
+ console.error('[AIWG MCP] Fatal error:', error);
631
+ process.exit(1);
632
+ });
633
+ }