@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,296 @@
1
+ /**
2
+ * Command templates for different command types
3
+ */
4
+ /**
5
+ * Generate frontmatter for a command
6
+ */
7
+ export function generateFrontmatter(name, description, args = [], options = [], modelRole = 'efficiency', modelTier = 'economy') {
8
+ // Build args string
9
+ const argParts = [];
10
+ // Required args
11
+ args.filter(a => a.required).forEach(arg => {
12
+ argParts.push(`<${arg.name}>`);
13
+ });
14
+ // Optional args
15
+ args.filter(a => !a.required).forEach(arg => {
16
+ argParts.push(`[${arg.name}]`);
17
+ });
18
+ // Options
19
+ options.forEach(opt => {
20
+ if (opt.type === 'boolean') {
21
+ argParts.push(`[--${opt.name}]`);
22
+ }
23
+ else {
24
+ argParts.push(`[--${opt.name} <value>]`);
25
+ }
26
+ });
27
+ // Always add standard options
28
+ argParts.push('[--interactive]');
29
+ argParts.push('[--guidance "text"]');
30
+ const argsString = argParts.join(' ');
31
+ return `---
32
+ name: ${name}
33
+ description: ${description}
34
+ args: ${argsString}
35
+ commandHint:
36
+ modelRole: ${modelRole}
37
+ modelTier: ${modelTier}
38
+ ---`;
39
+ }
40
+ /**
41
+ * Generate Arguments section
42
+ */
43
+ export function generateArgumentsSection(args) {
44
+ if (args.length === 0) {
45
+ return '';
46
+ }
47
+ let section = '\n## Arguments\n\n';
48
+ section += '| Argument | Required | Description |\n';
49
+ section += '|----------|----------|-------------|\n';
50
+ args.forEach(arg => {
51
+ const defaultStr = arg.default ? ` (default: ${arg.default})` : '';
52
+ section += `| ${arg.name} | ${arg.required ? 'Yes' : 'No'} | ${arg.description}${defaultStr} |\n`;
53
+ });
54
+ return section;
55
+ }
56
+ /**
57
+ * Generate Options section
58
+ */
59
+ export function generateOptionsSection(options) {
60
+ if (options.length === 0) {
61
+ return '';
62
+ }
63
+ let section = '\n## Options\n\n';
64
+ section += '| Option | Type | Description |\n';
65
+ section += '|--------|------|-------------|\n';
66
+ options.forEach(opt => {
67
+ const defaultStr = opt.default !== undefined ? ` (default: ${opt.default})` : '';
68
+ section += `| --${opt.name} | ${opt.type} | ${opt.description}${defaultStr} |\n`;
69
+ });
70
+ // Add standard options
71
+ section += '| --interactive | boolean | Enable interactive mode with guided questions |\n';
72
+ section += '| --guidance | string | Provide strategic guidance for execution |\n';
73
+ return section;
74
+ }
75
+ /**
76
+ * Utility template - simple operation, single action
77
+ */
78
+ export function generateUtilityTemplate(name, description, args = [], options = [], guidance, modelRole = 'efficiency', modelTier = 'economy') {
79
+ const frontmatter = generateFrontmatter(name, description, args, options, modelRole, modelTier);
80
+ const argsSection = generateArgumentsSection(args);
81
+ const optionsSection = generateOptionsSection(options);
82
+ const titleCase = name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
83
+ return `${frontmatter}
84
+
85
+ # ${titleCase}
86
+
87
+ ${description}
88
+
89
+ ## Usage
90
+
91
+ \`\`\`
92
+ /${name}${args.length > 0 ? ' ' + args.map(a => a.required ? `<${a.name}>` : `[${a.name}]`).join(' ') : ''}${options.length > 0 ? ' [options]' : ''}
93
+ \`\`\`
94
+ ${argsSection}${optionsSection}
95
+
96
+ ## Execution
97
+
98
+ 1. **Validate inputs**: Verify all required arguments are provided
99
+ 2. **Process request**: Execute the primary operation
100
+ 3. **Generate output**: Return results in appropriate format
101
+ 4. **Report status**: Indicate success or failure with clear messaging
102
+
103
+ ${guidance ? `## Guidance\n\n${guidance}\n` : ''}
104
+ ## Output
105
+
106
+ The command returns:
107
+ - Success message with operation details
108
+ - Any generated artifacts or file paths
109
+ - Relevant metrics or status information
110
+
111
+ ## Examples
112
+
113
+ \`\`\`bash
114
+ # Basic usage
115
+ /${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''}
116
+
117
+ # With options
118
+ /${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''}${options.length > 0 ? ` --${options[0].name} value` : ''}
119
+
120
+ # Interactive mode
121
+ /${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''} --interactive
122
+ \`\`\`
123
+
124
+ ## Related Commands
125
+
126
+ - See other commands in the same domain for related functionality
127
+ `;
128
+ }
129
+ /**
130
+ * Transformation template - input/output pipeline
131
+ */
132
+ export function generateTransformationTemplate(name, description, args = [], options = [], guidance, modelRole = 'efficiency', modelTier = 'economy') {
133
+ const frontmatter = generateFrontmatter(name, description, args, options, modelRole, modelTier);
134
+ const argsSection = generateArgumentsSection(args);
135
+ const optionsSection = generateOptionsSection(options);
136
+ const titleCase = name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
137
+ return `${frontmatter}
138
+
139
+ # ${titleCase}
140
+
141
+ ${description}
142
+
143
+ ## Usage
144
+
145
+ \`\`\`
146
+ /${name}${args.length > 0 ? ' ' + args.map(a => a.required ? `<${a.name}>` : `[${a.name}]`).join(' ') : ''}${options.length > 0 ? ' [options]' : ''}
147
+ \`\`\`
148
+ ${argsSection}${optionsSection}
149
+
150
+ ## Transformation Pipeline
151
+
152
+ 1. **Input validation**: Verify input format and content
153
+ 2. **Pre-processing**: Prepare input for transformation
154
+ 3. **Core transformation**: Apply main transformation logic
155
+ 4. **Post-processing**: Format and validate output
156
+ 5. **Output generation**: Write transformed content to target
157
+
158
+ ${guidance ? `## Guidance\n\n${guidance}\n` : ''}
159
+ ## Input Requirements
160
+
161
+ Describe expected input format, structure, or constraints.
162
+
163
+ ## Output Format
164
+
165
+ Describe output format, structure, and location.
166
+
167
+ ## Examples
168
+
169
+ \`\`\`bash
170
+ # Basic transformation
171
+ /${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''}
172
+
173
+ # With custom options
174
+ /${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''}${options.length > 0 ? ` --${options[0].name} value` : ''}
175
+
176
+ # Interactive mode
177
+ /${name} --interactive
178
+ \`\`\`
179
+
180
+ ## Validation
181
+
182
+ - Input validation criteria
183
+ - Output validation criteria
184
+ - Error handling and recovery
185
+
186
+ ## Related Commands
187
+
188
+ - See other transformation commands for similar pipelines
189
+ `;
190
+ }
191
+ /**
192
+ * Orchestration template - multi-agent workflow
193
+ */
194
+ export function generateOrchestrationTemplate(name, description, args = [], options = [], guidance, modelRole = 'coding', modelTier = 'standard') {
195
+ const frontmatter = generateFrontmatter(name, description, args, options, modelRole, modelTier);
196
+ const argsSection = generateArgumentsSection(args);
197
+ const optionsSection = generateOptionsSection(options);
198
+ const titleCase = name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
199
+ return `${frontmatter}
200
+
201
+ # ${titleCase}
202
+
203
+ ${description}
204
+
205
+ ## Usage
206
+
207
+ \`\`\`
208
+ /${name}${args.length > 0 ? ' ' + args.map(a => a.required ? `<${a.name}>` : `[${a.name}]`).join(' ') : ''}${options.length > 0 ? ' [options]' : ''}
209
+ \`\`\`
210
+ ${argsSection}${optionsSection}
211
+
212
+ ## Workflow Phases
213
+
214
+ ### Phase 1: Initialization
215
+ - Validate prerequisites
216
+ - Gather required inputs
217
+ - Set up working context
218
+
219
+ ### Phase 2: Primary Execution
220
+ - Coordinate agent assignments
221
+ - Execute parallel tasks
222
+ - Monitor progress
223
+
224
+ ### Phase 3: Review & Synthesis
225
+ - Collect agent outputs
226
+ - Synthesize results
227
+ - Validate completeness
228
+
229
+ ### Phase 4: Finalization
230
+ - Archive artifacts
231
+ - Generate reports
232
+ - Update project state
233
+
234
+ ${guidance ? `## Guidance\n\n${guidance}\n` : ''}
235
+ ## Agent Coordination
236
+
237
+ ### Primary Author
238
+ - Responsible agent for main deliverable
239
+ - Draft initial version
240
+
241
+ ### Parallel Reviewers
242
+ Launch in single message for concurrent review:
243
+ - Domain expert reviews
244
+ - Quality validation
245
+ - Technical validation
246
+
247
+ ### Synthesizer
248
+ - Merge review feedback
249
+ - Resolve conflicts
250
+ - Generate final version
251
+
252
+ ## Artifacts Generated
253
+
254
+ List expected artifacts, their locations, and purposes.
255
+
256
+ ## Success Criteria
257
+
258
+ Define what constitutes successful completion:
259
+ - Required deliverables present
260
+ - Quality gates passed
261
+ - All reviews completed
262
+
263
+ ## Examples
264
+
265
+ \`\`\`bash
266
+ # Standard execution
267
+ /${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''}
268
+
269
+ # With strategic guidance
270
+ /${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''} --guidance "Focus on security and performance"
271
+
272
+ # Interactive mode
273
+ /${name} --interactive
274
+ \`\`\`
275
+
276
+ ## Related Workflows
277
+
278
+ - See other orchestration commands for similar multi-agent patterns
279
+ `;
280
+ }
281
+ /**
282
+ * Generate command content based on template type
283
+ */
284
+ export function generateCommandContent(template, name, description, args = [], options = [], guidance, modelRole, modelTier) {
285
+ switch (template) {
286
+ case 'utility':
287
+ return generateUtilityTemplate(name, description, args, options, guidance, modelRole, modelTier);
288
+ case 'transformation':
289
+ return generateTransformationTemplate(name, description, args, options, guidance, modelRole, modelTier);
290
+ case 'orchestration':
291
+ return generateOrchestrationTemplate(name, description, args, options, guidance, modelRole, modelTier);
292
+ default:
293
+ throw new Error(`Unknown template type: ${template}`);
294
+ }
295
+ }
296
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Type definitions for CommandSmith feature
3
+ *
4
+ * CommandSmith generates platform-aware slash commands for agent orchestration.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,104 @@
1
+ /**
2
+ * AIWG.md generator — content-rich CLAUDE.md companion for non-Claude providers.
3
+ *
4
+ * Per ADR-1 §0.5: AIWG.md at project root has the same content shape as
5
+ * CLAUDE.md. Both files `@`-reference the project's `.aiwg/AIWG.md` (the
6
+ * source of truth). Non-Claude providers reach AIWG.md transitively via the
7
+ * provider startup adapters. WORKSPACE.md and AIWG.md contain
8
+ * identical framework prose; they exist as two named files because Claude
9
+ * Code looks for `CLAUDE.md` and the seven AGENTS.md providers reach
10
+ * AIWG.md via the AGENTS.md hook-up.
11
+ *
12
+ * Generation strategy: read the project's CLAUDE.md (which already exists in
13
+ * a properly-configured repo) and emit AIWG.md as the same content with the
14
+ * AIWG signature comment in place. If CLAUDE.md is absent (early-init repos),
15
+ * fall back to a minimal stub that points readers at `.aiwg/AIWG.md`.
16
+ */
17
+ import { promises as fs } from 'node:fs';
18
+ import * as path from 'node:path';
19
+ import { buildParallelismSection, replaceOrAppendParallelismBlock } from './parallelism-section.js';
20
+ import { buildContextFinalizationBlock, replaceOrAppendFinalizationBlock } from './finalization.js';
21
+ import { buildExternalLinksSection, replaceOrAppendExternalLinksBlock, } from './external-links-section.js';
22
+ const AIWG_SIGNATURE_COMMENT = '<!-- aiwg-managed -->';
23
+ /**
24
+ * Build the AIWG.md content for emission at project root.
25
+ *
26
+ * - When CLAUDE.md exists at project root: copy its content with the AIWG
27
+ * signature comment inserted in the second line so future runs of the
28
+ * generator know the file is AIWG-managed.
29
+ * - When CLAUDE.md does not exist: emit a minimal stub directing readers to
30
+ * the project's `.aiwg/AIWG.md` source.
31
+ *
32
+ * Returns the rendered content as a string. Caller is responsible for the
33
+ * atomic-write emission and the operator-claimed-file detection.
34
+ */
35
+ export async function buildAiwgMdContent(projectPath, stagedClaudeMdContent) {
36
+ let claudeMdContent = stagedClaudeMdContent;
37
+ if (stagedClaudeMdContent === undefined) {
38
+ const claudeMdPath = path.join(projectPath, 'CLAUDE.md');
39
+ try {
40
+ claudeMdContent = await fs.readFile(claudeMdPath, 'utf8');
41
+ }
42
+ catch (err) {
43
+ if (err.code !== 'ENOENT') {
44
+ throw err;
45
+ }
46
+ claudeMdContent = null;
47
+ }
48
+ }
49
+ // #1362: parallelism cap section, injected after generation so it surfaces
50
+ // in regenerated context files regardless of CLAUDE.md content.
51
+ const parallelismSection = await buildParallelismSection(projectPath);
52
+ const finalizationBlock = await buildContextFinalizationBlock(projectPath);
53
+ const externalLinksSection = await buildExternalLinksSection(projectPath);
54
+ if (claudeMdContent) {
55
+ // Insert the AIWG signature comment as the second line.
56
+ // Top line is typically `# AIWG` or `# Project` heading; preserve it.
57
+ const lines = claudeMdContent.split('\n');
58
+ // #1268: strip `@AIWG.md` self-include directives. CLAUDE.md uses
59
+ // `@AIWG.md` to pull in the framework context; AIWG.md IS that framework
60
+ // context, so the directive becomes a self-reference when copied through.
61
+ // Match the directive when it appears on its own line (possibly indented).
62
+ const SELF_INCLUDE_PATTERN = /^\s*@AIWG\.md\s*$/;
63
+ const filtered = lines.filter((line) => !SELF_INCLUDE_PATTERN.test(line));
64
+ const firstLine = filtered[0] ?? '';
65
+ const rest = filtered.slice(1);
66
+ // If the file already carries the signature elsewhere, don't double-insert.
67
+ const alreadySigned = filtered.slice(0, 4).some((l) => l.includes(AIWG_SIGNATURE_COMMENT));
68
+ const baseContent = alreadySigned
69
+ ? filtered.join('\n')
70
+ : [
71
+ firstLine,
72
+ AIWG_SIGNATURE_COMMENT,
73
+ '<!-- AIWG.md is the CLAUDE.md companion for non-Claude providers; same content. -->',
74
+ ...rest,
75
+ ].join('\n');
76
+ const withParallelism = replaceOrAppendParallelismBlock(baseContent, parallelismSection);
77
+ const withFinalization = replaceOrAppendFinalizationBlock(withParallelism, finalizationBlock);
78
+ return replaceOrAppendExternalLinksBlock(withFinalization, externalLinksSection);
79
+ }
80
+ // Fallback stub.
81
+ const stub = [
82
+ '# AIWG.md',
83
+ AIWG_SIGNATURE_COMMENT,
84
+ '<!-- CLAUDE.md companion for non-Claude providers. -->',
85
+ '',
86
+ 'CLAUDE.md was not found at project root. AIWG.md normally mirrors that content.',
87
+ 'See [.aiwg/AIWG.md](./.aiwg/AIWG.md) for the project framework context.',
88
+ '',
89
+ ].join('\n');
90
+ const withParallelism = replaceOrAppendParallelismBlock(stub, parallelismSection);
91
+ const withFinalization = replaceOrAppendFinalizationBlock(withParallelism, finalizationBlock);
92
+ return replaceOrAppendExternalLinksBlock(withFinalization, externalLinksSection);
93
+ }
94
+ /**
95
+ * Public API: build AIWG.md content for a given project.
96
+ *
97
+ * The wrapper exists so future variants (per-provider AIWG.md customization,
98
+ * AIWG.local.md operator overrides, etc.) have a single entry point in the
99
+ * surface API without callers reaching into the implementation.
100
+ */
101
+ export async function generateAiwgMd(projectPath) {
102
+ return buildAiwgMdContent(projectPath);
103
+ }
104
+ //# sourceMappingURL=aiwg-md.js.map
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Path-emission allowlist for AGENTS.md link-index entries.
3
+ *
4
+ * Per ADR-1 §2 (security mitigation R2): the generator MUST only emit `Path:` values
5
+ * that match a path produced by the AIWG-owned ProviderDefinition registry plus
6
+ * the canonical `~/.agents/skills/` cross-provider user-scope target. Files
7
+ * deployed by project-local manifests at non-AIWG paths are not indexed. This
8
+ * closes the link-redirect attack surface where a malicious project-local
9
+ * artifact could cite a shadow file outside AIWG's path-map domain.
10
+ */
11
+ import { homedir } from 'node:os';
12
+ import * as path from 'node:path';
13
+ /**
14
+ * The AIWG-owned path prefixes that may appear in an AGENTS.md link entry.
15
+ *
16
+ * Mirrors the per-provider directory list from `ProviderDefinition.paths.artifacts`,
17
+ * generalized to prefixes (so per-artifact subpaths under each prefix are accepted).
18
+ *
19
+ * Sources kept in sync:
20
+ * - `src/providers/provider-definitions.ts`
21
+ * - `src/smiths/platform-paths.ts` (TypeScript path resolvers)
22
+ * - `src/config/aiwg-config.ts`
23
+ *
24
+ * If a new platform path is added there, add it here.
25
+ */
26
+ const AIWG_PATH_PREFIXES_RELATIVE = [
27
+ // Claude Code
28
+ '.claude/agents/',
29
+ '.claude/skills/',
30
+ '.claude/commands/',
31
+ '.claude/rules/',
32
+ '.claude/hooks/',
33
+ // Factory AI
34
+ '.factory/droids/',
35
+ '.factory/skills/',
36
+ '.factory/commands/',
37
+ '.factory/rules/',
38
+ // OpenAI Codex (project scope; user scope handled below via homedir)
39
+ '.codex/agents/',
40
+ '.codex/skills/',
41
+ '.codex/commands/',
42
+ '.codex/rules/',
43
+ // OpenCode
44
+ '.opencode/agent/',
45
+ '.opencode/skill/',
46
+ '.opencode/rule/',
47
+ // Copilot
48
+ '.github/agents/',
49
+ '.github/skills/',
50
+ '.github/copilot-rules/',
51
+ '.github/prompts/',
52
+ '.github/instructions/',
53
+ // Cursor
54
+ '.cursor/agents/',
55
+ '.cursor/skills/',
56
+ '.cursor/commands/',
57
+ '.cursor/rules/',
58
+ // Warp
59
+ '.warp/agents/',
60
+ '.warp/skills/',
61
+ '.warp/commands/',
62
+ '.warp/rules/',
63
+ // Windsurf
64
+ '.windsurf/agents/',
65
+ '.windsurf/skills/',
66
+ '.windsurf/workflows/',
67
+ '.windsurf/rules/',
68
+ // Cross-agent canonical project-scope path (#766 + ADR-1)
69
+ '.agents/agents/',
70
+ '.agents/skills/',
71
+ '.agents/rules/',
72
+ '.agents/behaviors/',
73
+ ];
74
+ /**
75
+ * User-scope path prefixes (resolved with homedir() at check time).
76
+ *
77
+ * Per ADR-4 §2 user-global path map.
78
+ */
79
+ const AIWG_PATH_PREFIXES_USER = [
80
+ // Cross-agent canonical user-scope path (ADR-4)
81
+ '.agents/skills/',
82
+ // Per-provider user-scope paths
83
+ '.claude/agents/',
84
+ '.claude/skills/',
85
+ '.claude/commands/',
86
+ '.claude/rules/',
87
+ '.claude/hooks/',
88
+ '.codex/skills/',
89
+ '.codex/prompts/',
90
+ '.codex/agents/',
91
+ '.codex/rules/',
92
+ '.cursor/agents/',
93
+ '.cursor/skills/',
94
+ '.cursor/commands/',
95
+ '.cursor/rules/',
96
+ '.warp/agents/',
97
+ '.warp/skills/',
98
+ '.warp/commands/',
99
+ '.warp/rules/',
100
+ '.windsurf/agents/',
101
+ '.windsurf/skills/',
102
+ '.windsurf/workflows/',
103
+ '.windsurf/rules/',
104
+ '.opencode/agent/',
105
+ '.opencode/skill/',
106
+ '.opencode/rule/',
107
+ '.openclaw/agents/',
108
+ '.openclaw/skills/',
109
+ '.openclaw/commands/',
110
+ '.openclaw/rules/',
111
+ '.openclaw/behaviors/',
112
+ '.openclaw/hooks/',
113
+ '.factory/droids/',
114
+ '.factory/skills/',
115
+ '.factory/commands/',
116
+ '.factory/rules/',
117
+ '.config/github-copilot/agents/',
118
+ '.config/github-copilot/prompts/',
119
+ '.config/github-copilot/instructions/',
120
+ '.hermes/skills/',
121
+ ];
122
+ /**
123
+ * Check whether a path is allowed in an AGENTS.md link-index entry.
124
+ *
125
+ * Accepts both relative project-scope paths and absolute user-scope paths
126
+ * (rooted in homedir()). Rejects all other paths.
127
+ *
128
+ * Path normalization:
129
+ * - Backslashes are converted to forward slashes for cross-platform compatibility.
130
+ * - Leading `./` is stripped.
131
+ * - `..` segments anywhere in the path cause rejection (prevents escaping the project root).
132
+ */
133
+ export function checkPathAllowed(inputPath) {
134
+ if (typeof inputPath !== 'string' || inputPath.length === 0) {
135
+ return { ok: false, rejectedFor: 'empty or non-string path', isUserScope: false };
136
+ }
137
+ // Reject any path with a parent-dir traversal segment.
138
+ const segments = inputPath.split(/[/\\]/);
139
+ if (segments.includes('..')) {
140
+ return { ok: false, rejectedFor: 'parent-dir traversal (..) not allowed', isUserScope: false };
141
+ }
142
+ // Normalize to forward slashes; strip leading ./
143
+ let normalized = inputPath.replace(/\\/g, '/');
144
+ if (normalized.startsWith('./')) {
145
+ normalized = normalized.slice(2);
146
+ }
147
+ // User-scope: starts with ~/ (or absolute home directory)
148
+ const home = homedir();
149
+ const homeNormalized = home.replace(/\\/g, '/');
150
+ let isUserScope = false;
151
+ let userScopeRelative = '';
152
+ if (normalized.startsWith('~/')) {
153
+ isUserScope = true;
154
+ userScopeRelative = normalized.slice(2);
155
+ }
156
+ else if (normalized.startsWith(homeNormalized + '/')) {
157
+ isUserScope = true;
158
+ userScopeRelative = normalized.slice(homeNormalized.length + 1);
159
+ }
160
+ else if (path.isAbsolute(inputPath)) {
161
+ return {
162
+ ok: false,
163
+ rejectedFor: 'absolute path outside home directory',
164
+ isUserScope: false,
165
+ };
166
+ }
167
+ if (isUserScope) {
168
+ for (const prefix of AIWG_PATH_PREFIXES_USER) {
169
+ if (userScopeRelative === prefix.replace(/\/$/, '') || userScopeRelative.startsWith(prefix)) {
170
+ return { ok: true, rejectedFor: '', isUserScope: true };
171
+ }
172
+ }
173
+ return {
174
+ ok: false,
175
+ rejectedFor: 'user-scope path not in AIWG-owned prefix list',
176
+ isUserScope: true,
177
+ };
178
+ }
179
+ // Project-scope: must start with one of AIWG_PATH_PREFIXES_RELATIVE.
180
+ for (const prefix of AIWG_PATH_PREFIXES_RELATIVE) {
181
+ if (normalized === prefix.replace(/\/$/, '') || normalized.startsWith(prefix)) {
182
+ return { ok: true, rejectedFor: '', isUserScope: false };
183
+ }
184
+ }
185
+ return {
186
+ ok: false,
187
+ rejectedFor: 'project-scope path not in AIWG-owned prefix list',
188
+ isUserScope: false,
189
+ };
190
+ }
191
+ export const ALLOWLIST_INTERNALS = {
192
+ AIWG_PATH_PREFIXES_RELATIVE,
193
+ AIWG_PATH_PREFIXES_USER,
194
+ };
195
+ //# sourceMappingURL=allowlist.js.map