@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,236 @@
1
+ /**
2
+ * MCPsmith Server Generator
3
+ *
4
+ * Generates complete MCP servers from analyzer results.
5
+ *
6
+ * @architecture @.aiwg/architecture/mcpsmith-architecture.md - Section 5.5
7
+ * @implements @.aiwg/architecture/decisions/ADR-014-mcpsmith-mcp-server-generator.md
8
+ */
9
+ import fs from 'fs/promises';
10
+ import path from 'path';
11
+ import { fileURLToPath } from 'url';
12
+ import crypto from 'crypto';
13
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
+ /**
15
+ * Generate MCP server from analyzer result
16
+ */
17
+ export async function generateServer(options) {
18
+ const { serverId, serverName, description, analyzerResult, config, outputDir } = options;
19
+ // Create server directory
20
+ const serverPath = path.join(outputDir, serverId);
21
+ await fs.mkdir(serverPath, { recursive: true });
22
+ await fs.mkdir(path.join(serverPath, 'tools'), { recursive: true });
23
+ // Generate config
24
+ const serverConfig = createConfig(serverId, serverName, description, analyzerResult, config);
25
+ const configPath = path.join(serverPath, 'config.json');
26
+ await fs.writeFile(configPath, JSON.stringify(serverConfig, null, 2), 'utf-8');
27
+ // Generate tool definition files
28
+ const toolPaths = [];
29
+ for (const tool of analyzerResult.tools) {
30
+ const toolPath = path.join(serverPath, 'tools', `${tool.name}.json`);
31
+ await fs.writeFile(toolPath, JSON.stringify(tool, null, 2), 'utf-8');
32
+ toolPaths.push(toolPath);
33
+ }
34
+ // Generate server.mjs from template
35
+ const serverCode = await generateServerCode(serverId, serverName, analyzerResult);
36
+ const serverCodePath = path.join(serverPath, 'server.mjs');
37
+ await fs.writeFile(serverCodePath, serverCode, 'utf-8');
38
+ await fs.chmod(serverCodePath, 0o755); // Make executable
39
+ // Generate manifest
40
+ const manifest = createManifest(serverId, serverName, analyzerResult, serverConfig);
41
+ const manifestPath = path.join(serverPath, 'manifest.json');
42
+ await fs.writeFile(manifestPath, JSON.stringify(manifest, null, 2), 'utf-8');
43
+ // Create .mcpsmith marker file
44
+ await fs.writeFile(path.join(serverPath, '.mcpsmith'), JSON.stringify({
45
+ generated_at: new Date().toISOString(),
46
+ mcpsmith_version: '1.0.0'
47
+ }, null, 2), 'utf-8');
48
+ return {
49
+ id: serverId,
50
+ path: serverPath,
51
+ files: {
52
+ server: serverCodePath,
53
+ manifest: manifestPath,
54
+ config: configPath,
55
+ tools: toolPaths
56
+ }
57
+ };
58
+ }
59
+ /**
60
+ * Create server configuration
61
+ */
62
+ function createConfig(serverId, serverName, description, analyzerResult, userConfig) {
63
+ const sourceCommand = analyzerResult.metadata.sourceName;
64
+ return {
65
+ $schema: 'https://aiwg.io/schemas/mcpsmith-server-config.json',
66
+ server: {
67
+ name: serverName,
68
+ version: userConfig.server?.version || '1.0.0',
69
+ description
70
+ },
71
+ transport: userConfig.transport || {
72
+ type: 'stdio',
73
+ options: {}
74
+ },
75
+ source: {
76
+ type: analyzerResult.metadata.sourceType,
77
+ command: sourceCommand,
78
+ workingDirectory: userConfig.source?.workingDirectory || process.cwd(),
79
+ environment: userConfig.source?.environment || {},
80
+ timeout: userConfig.source?.timeout || 30000
81
+ },
82
+ tools: {
83
+ prefix: userConfig.tools?.prefix || `${serverId}-`,
84
+ allowlist: userConfig.tools?.allowlist || analyzerResult.tools.map((t) => t.name),
85
+ denylist: userConfig.tools?.denylist || [],
86
+ dangerousCommands: {
87
+ require_confirmation: userConfig.tools?.dangerousCommands?.require_confirmation ||
88
+ analyzerResult.tools.filter((t) => t.metadata.requiresConfirmation).map((t) => t.name),
89
+ blocked: userConfig.tools?.dangerousCommands?.blocked || []
90
+ }
91
+ },
92
+ resources: {
93
+ enabled: userConfig.resources?.enabled ?? false,
94
+ patterns: userConfig.resources?.patterns || []
95
+ },
96
+ prompts: {
97
+ enabled: userConfig.prompts?.enabled ?? false
98
+ },
99
+ security: {
100
+ sandboxed: userConfig.security?.sandboxed ?? true,
101
+ maxExecutionTime: userConfig.security?.maxExecutionTime || 60000,
102
+ allowedPaths: userConfig.security?.allowedPaths || [process.cwd()],
103
+ blockedCommands: userConfig.security?.blockedCommands || [],
104
+ requireConfirmation: userConfig.security?.requireConfirmation ||
105
+ analyzerResult.tools.filter((t) => t.metadata.requiresConfirmation).map((t) => t.name)
106
+ },
107
+ logging: {
108
+ enabled: userConfig.logging?.enabled ?? true,
109
+ level: userConfig.logging?.level || 'info',
110
+ maxFiles: userConfig.logging?.maxFiles || 10,
111
+ maxSize: userConfig.logging?.maxSize || '10mb'
112
+ }
113
+ };
114
+ }
115
+ /**
116
+ * Create server manifest
117
+ */
118
+ function createManifest(serverId, serverName, analyzerResult, config) {
119
+ const tools = analyzerResult.tools.map((t) => ({
120
+ name: t.name,
121
+ description: t.description,
122
+ inputSchema: t.inputSchema,
123
+ outputSchema: t.outputSchema,
124
+ dangerous: t.metadata.dangerous,
125
+ requiresConfirmation: t.metadata.requiresConfirmation
126
+ }));
127
+ const files = [
128
+ 'server.mjs',
129
+ 'config.json',
130
+ 'manifest.json',
131
+ '.mcpsmith',
132
+ ...analyzerResult.tools.map((t) => `tools/${t.name}.json`)
133
+ ];
134
+ const checksum = crypto.createHash('sha256')
135
+ .update(JSON.stringify({ serverId, config, tools }))
136
+ .digest('hex');
137
+ return {
138
+ $schema: 'https://aiwg.io/schemas/mcpsmith-manifest.json',
139
+ id: serverId,
140
+ name: serverName,
141
+ version: config.server.version,
142
+ mcpVersion: '2025-11-25',
143
+ generated: {
144
+ at: new Date().toISOString(),
145
+ by: 'mcpsmith/1.0.0',
146
+ from: {
147
+ type: analyzerResult.metadata.sourceType,
148
+ source: analyzerResult.metadata.sourceName,
149
+ version: analyzerResult.metadata.sourceVersion
150
+ }
151
+ },
152
+ capabilities: {
153
+ tools: true,
154
+ resources: config.resources.enabled,
155
+ prompts: config.prompts.enabled,
156
+ sampling: false,
157
+ logging: config.logging.enabled
158
+ },
159
+ tools,
160
+ resources: [],
161
+ prompts: [],
162
+ dependencies: {
163
+ runtime: ['node >= 18.0.0'],
164
+ external: [
165
+ `${analyzerResult.metadata.sourceName}${analyzerResult.metadata.sourceVersion ? ' >= ' + analyzerResult.metadata.sourceVersion : ''}`
166
+ ]
167
+ },
168
+ files,
169
+ checksum
170
+ };
171
+ }
172
+ /**
173
+ * Generate server code from template
174
+ */
175
+ async function generateServerCode(serverId, serverName, analyzerResult) {
176
+ // Load template
177
+ const templatePath = path.join(path.dirname(__dirname), '..', '..', '.aiwg', 'smiths', 'mcpsmith', 'templates', 'server-template.mjs');
178
+ let template = await fs.readFile(templatePath, 'utf-8');
179
+ // Replace template variables
180
+ const now = new Date().toISOString();
181
+ const replacements = {
182
+ '{{SERVER_ID}}': serverId,
183
+ '{{SERVER_NAME}}': serverName,
184
+ '{{GENERATED_AT}}': now,
185
+ '{{SOURCE_TYPE}}': analyzerResult.metadata.sourceType,
186
+ '{{SOURCE_COMMAND}}': analyzerResult.metadata.sourceName,
187
+ '{{MCPSMITH_VERSION}}': '1.0.0'
188
+ };
189
+ for (const [key, value] of Object.entries(replacements)) {
190
+ template = template.replace(new RegExp(key, 'g'), value);
191
+ }
192
+ return template;
193
+ }
194
+ /**
195
+ * Update registry with new server
196
+ */
197
+ export async function updateRegistry(registryPath, serverId, serverInfo) {
198
+ let registry;
199
+ try {
200
+ const content = await fs.readFile(registryPath, 'utf-8');
201
+ registry = JSON.parse(content);
202
+ }
203
+ catch {
204
+ // Create new registry
205
+ registry = {
206
+ $schema: 'https://aiwg.io/schemas/mcpsmith-registry.json',
207
+ version: '1.0',
208
+ servers: [],
209
+ integration: {
210
+ aiwgMcp: {
211
+ enabled: true,
212
+ autoRegister: true,
213
+ resourcePrefix: 'mcpsmith://'
214
+ },
215
+ platforms: {
216
+ claude: false,
217
+ factory: false,
218
+ codex: false,
219
+ cursor: false
220
+ }
221
+ },
222
+ defaults: {
223
+ transport: 'stdio',
224
+ sandbox: true,
225
+ timeout: 30000
226
+ }
227
+ };
228
+ }
229
+ // Remove existing entry if present
230
+ registry.servers = registry.servers.filter((s) => s.id !== serverId);
231
+ // Add new entry
232
+ registry.servers.push(serverInfo);
233
+ // Write back
234
+ await fs.writeFile(registryPath, JSON.stringify(registry, null, 2), 'utf-8');
235
+ }
236
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1,17 @@
1
+ /**
2
+ * MCPsmith - MCP Server Generator
3
+ *
4
+ * Generates MCP (Model Context Protocol) servers from:
5
+ * - CLI tools (--help parsing)
6
+ * - REST APIs (OpenAPI specs)
7
+ * - Tool catalogs (YAML/JSON)
8
+ * - Natural language descriptions
9
+ *
10
+ * @module smiths/mcpsmith
11
+ * @architecture @.aiwg/architecture/mcpsmith-architecture.md
12
+ * @implements @.aiwg/architecture/decisions/ADR-014-mcpsmith-mcp-server-generator.md
13
+ */
14
+ export * from './types.js';
15
+ export * from './analyzers/cli-analyzer.js';
16
+ export * from './generator.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,10 @@
1
+ /**
2
+ * MCPsmith Type Definitions
3
+ *
4
+ * Types for MCP server generation from various sources.
5
+ *
6
+ * @architecture @.aiwg/architecture/mcpsmith-architecture.md
7
+ * @implements @.aiwg/architecture/decisions/ADR-014-mcpsmith-mcp-server-generator.md
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Shared platform directory path utilities
3
+ *
4
+ * Provides consistent path resolution for agents, commands, and skills across all platforms.
5
+ */
6
+ import { join } from 'path';
7
+ import { getProviderDefinition, resolveProviderPathValue } from '../providers/provider-definitions.js';
8
+ function getSmithPaths(platform) {
9
+ const definition = getProviderDefinition(platform);
10
+ if (!definition)
11
+ throw new Error(`Missing provider definition for ${platform}`);
12
+ return definition.smithPaths;
13
+ }
14
+ /**
15
+ * Get the commands directory for a given platform
16
+ *
17
+ * @param platform - Target platform
18
+ * @param projectPath - Project root directory
19
+ * @returns Full path to commands directory
20
+ */
21
+ export function getCommandsDirectory(platform, projectPath) {
22
+ return resolveProviderPathValue(getSmithPaths(platform).commands, projectPath);
23
+ }
24
+ /**
25
+ * Get the agents directory for a given platform
26
+ *
27
+ * @param platform - Target platform
28
+ * @param projectPath - Project root directory
29
+ * @returns Full path to agents directory
30
+ */
31
+ export function getAgentsDirectory(platform, projectPath) {
32
+ return resolveProviderPathValue(getSmithPaths(platform).agents, projectPath);
33
+ }
34
+ /**
35
+ * Get the skills directory for a given platform
36
+ *
37
+ * Skills are mainly a Claude concept; other platforms map to commands/agents.
38
+ *
39
+ * @param platform - Target platform
40
+ * @param projectPath - Project root directory
41
+ * @returns Full path to skills directory
42
+ */
43
+ export function getSkillsDirectory(platform, projectPath) {
44
+ return resolveProviderPathValue(getSmithPaths(platform).skills, projectPath);
45
+ }
46
+ /**
47
+ * Get the file extension for artifacts on a given platform
48
+ *
49
+ * @param platform - Target platform
50
+ * @returns File extension (with dot)
51
+ */
52
+ export function getFileExtension(platform) {
53
+ return getSmithPaths(platform).fileExtension;
54
+ }
55
+ /**
56
+ * Get the rules/config directory for a given platform
57
+ *
58
+ * @param platform - Target platform
59
+ * @param projectPath - Project root directory
60
+ * @returns Full path to rules/config directory
61
+ */
62
+ export function getRulesDirectory(platform, projectPath) {
63
+ return resolveProviderPathValue(getSmithPaths(platform).rules, projectPath);
64
+ }
65
+ /**
66
+ * Check if platform uses aggregated files (vs individual files)
67
+ *
68
+ * @param platform - Target platform
69
+ * @returns True if platform uses aggregated agent/command files
70
+ */
71
+ export function usesAggregatedFiles(platform) {
72
+ return getSmithPaths(platform).aggregated;
73
+ }
74
+ /**
75
+ * Get the main config file name for a platform
76
+ *
77
+ * @param platform - Target platform
78
+ * @returns Config file name
79
+ */
80
+ export function getConfigFileName(platform) {
81
+ return getSmithPaths(platform).configFile ?? '';
82
+ }
83
+ /**
84
+ * Get all platform directories for a project
85
+ *
86
+ * @param platform - Target platform
87
+ * @param projectPath - Project root directory
88
+ * @returns Object with all platform-specific directories
89
+ */
90
+ export function getPlatformDirectories(platform, projectPath) {
91
+ return {
92
+ agents: getAgentsDirectory(platform, projectPath),
93
+ commands: getCommandsDirectory(platform, projectPath),
94
+ skills: getSkillsDirectory(platform, projectPath),
95
+ rules: getRulesDirectory(platform, projectPath),
96
+ extension: getFileExtension(platform),
97
+ config: join(projectPath, getConfigFileName(platform)),
98
+ aggregated: usesAggregatedFiles(platform),
99
+ };
100
+ }
101
+ //# sourceMappingURL=platform-paths.js.map
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Codex `agents/openai.yaml` UI sidecar emission.
3
+ *
4
+ * Per ADR-1 sign-off (2026-05-05) and #1129 PUW-028: when AIWG deploys a skill
5
+ * to a Codex skills directory, also emit `agents/openai.yaml` inside the skill
6
+ * folder so Codex's skill-picker UI surfaces display name, icon, brand color,
7
+ * and default prompt.
8
+ *
9
+ * Sidecar is purely additive — its absence is graceful (Codex falls back to
10
+ * SKILL.md frontmatter for picker metadata). Sidecar emission must not block
11
+ * the skill deploy path on failure; the deploy succeeds even when the sidecar
12
+ * write errors out.
13
+ *
14
+ * Per ADR-1 sign-off: AIWG-wide brand defaults for icon and brand color
15
+ * (single brand identity). Per-category mapping is a follow-up if demand
16
+ * surfaces. Sidecar contents are sanitized through the AGENTS.md sanitizer
17
+ * to keep the same prompt-injection defense surface.
18
+ */
19
+ import { promises as fs } from 'node:fs';
20
+ import * as path from 'node:path';
21
+ import * as yaml from 'js-yaml';
22
+ import { sanitizeDescription } from '../context-pipeline/sanitizer.js';
23
+ import { AIWG_BRAND_DEFAULTS } from '../context-pipeline/types.js';
24
+ /**
25
+ * Build the sidecar payload from skill metadata.
26
+ *
27
+ * Returns null when the skill has no usable name AND no description — there
28
+ * is nothing meaningful to emit. Caller skips sidecar in that case.
29
+ */
30
+ export function buildSidecarPayload(metadata, folderName) {
31
+ const name = (metadata.name && metadata.name.trim()) || folderName;
32
+ if (!name)
33
+ return null;
34
+ // default_prompt is sanitized through the same surface as AGENTS.md fields
35
+ // because the sidecar payload reaches the model context once Codex loads
36
+ // the skill picker. Same prompt-injection blast radius applies.
37
+ const desc = metadata.description ? sanitizeDescription(metadata.description) : null;
38
+ const default_prompt = desc?.ok ? desc.value : `Run the ${name} skill.`;
39
+ return {
40
+ display_name: name,
41
+ icon: AIWG_BRAND_DEFAULTS.icon,
42
+ brand_color: AIWG_BRAND_DEFAULTS.brandColor,
43
+ default_prompt,
44
+ };
45
+ }
46
+ /**
47
+ * Render a sidecar payload as YAML.
48
+ *
49
+ * Wraps js-yaml.dump with a stable formatting set (no anchor refs, sorted
50
+ * keys, double-quoted scalars where needed).
51
+ */
52
+ export function renderSidecarYaml(payload) {
53
+ return yaml.dump(payload, {
54
+ sortKeys: true,
55
+ noRefs: true,
56
+ quotingType: '"',
57
+ forceQuotes: false,
58
+ });
59
+ }
60
+ /**
61
+ * Emit `agents/openai.yaml` inside a deployed skill folder.
62
+ *
63
+ * - skillFolder: absolute path to the deployed skill folder (e.g.
64
+ * `~/.codex/skills/address-issues/` or `.codex/skills/address-issues/`).
65
+ * - metadata: SkillMetadata extracted from the skill's SKILL.md frontmatter.
66
+ *
67
+ * Returns the absolute sidecar path on successful write, or null when there
68
+ * was nothing to emit. Throws on filesystem error so the caller can decide
69
+ * whether to surface the failure as a deploy warning (recommended) or
70
+ * abort. The PUW-028 contract requires sidecar absence to be graceful, so
71
+ * callers should treat throws as warnings, not errors.
72
+ */
73
+ export async function emitCodexSidecar(skillFolder, metadata) {
74
+ const folderName = path.basename(skillFolder);
75
+ const payload = buildSidecarPayload(metadata, folderName);
76
+ if (!payload)
77
+ return null;
78
+ const sidecarDir = path.join(skillFolder, 'agents');
79
+ await fs.mkdir(sidecarDir, { recursive: true });
80
+ const sidecarPath = path.join(sidecarDir, 'openai.yaml');
81
+ const content = renderSidecarYaml(payload);
82
+ await fs.writeFile(sidecarPath, content, 'utf8');
83
+ return sidecarPath;
84
+ }
85
+ //# sourceMappingURL=codex-sidecar.js.map