@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.18

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 (467) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +22 -1
  3. package/bin/aiwg.mjs +349 -0
  4. package/dist/src/a2a/agent-card.js +145 -0
  5. package/dist/src/a2a/client.js +411 -0
  6. package/dist/src/a2a/hitl-cli.js +171 -0
  7. package/dist/src/a2a/hitl-driver.js +370 -0
  8. package/dist/src/a2a/hitl.js +181 -0
  9. package/dist/src/a2a/http.js +193 -0
  10. package/dist/src/a2a/jcs.js +128 -0
  11. package/dist/src/a2a/jws.js +187 -0
  12. package/dist/src/a2a/types.js +24 -0
  13. package/dist/src/a2a/webhook.js +240 -0
  14. package/dist/src/activity-log/cli.js +348 -0
  15. package/dist/src/activity-log/parser.js +81 -0
  16. package/dist/src/activity-log/types.js +50 -0
  17. package/dist/src/agents/agent-deployer.js +367 -0
  18. package/dist/src/agents/agent-packager.js +271 -0
  19. package/dist/src/agents/agent-validator.js +271 -0
  20. package/dist/src/agents/grounding/knowledge-base.js +161 -0
  21. package/dist/src/agents/grounding/types.js +12 -0
  22. package/dist/src/agents/index.js +10 -0
  23. package/dist/src/agents/packaged-agent-inventory.js +75 -0
  24. package/dist/src/agents/types.js +7 -0
  25. package/dist/src/api/index.d.ts +10 -0
  26. package/dist/src/api/index.js +10 -0
  27. package/dist/src/artifacts/address-parser.js +73 -0
  28. package/dist/src/artifacts/audit/cli.js +183 -0
  29. package/dist/src/artifacts/audit/drift.js +122 -0
  30. package/dist/src/artifacts/audit/types.js +12 -0
  31. package/dist/src/artifacts/backends/graphology-backend.js +160 -0
  32. package/dist/src/artifacts/backends/json-backend.js +129 -0
  33. package/dist/src/artifacts/backends/sqlite-backend.js +199 -0
  34. package/dist/src/artifacts/browser-export.js +622 -0
  35. package/dist/src/artifacts/capability-resolver.js +94 -0
  36. package/dist/src/artifacts/checksum-manifest.js +91 -0
  37. package/dist/src/artifacts/citation-parser.js +162 -0
  38. package/dist/src/artifacts/cli.js +1486 -0
  39. package/dist/src/artifacts/corpus-tools/citation-densify.js +311 -0
  40. package/dist/src/artifacts/corpus-tools/cli.js +393 -0
  41. package/dist/src/artifacts/corpus-tools/corpus-graph.js +225 -0
  42. package/dist/src/artifacts/corpus-tools/curator.js +186 -0
  43. package/dist/src/artifacts/corpus-tools/discovery-log.js +70 -0
  44. package/dist/src/artifacts/corpus-tools/funder-network.js +141 -0
  45. package/dist/src/artifacts/corpus-tools/induction-audit.js +233 -0
  46. package/dist/src/artifacts/corpus-tools/integrity-scan.js +202 -0
  47. package/dist/src/artifacts/corpus-tools/profile-communities.js +166 -0
  48. package/dist/src/artifacts/corpus-tools/profile-edges.js +72 -0
  49. package/dist/src/artifacts/corpus-tools/profile-embed.js +113 -0
  50. package/dist/src/artifacts/corpus-tools/profile-generate-fm.js +167 -0
  51. package/dist/src/artifacts/corpus-tools/profile-generate.js +181 -0
  52. package/dist/src/artifacts/corpus-tools/profile-metrics.js +98 -0
  53. package/dist/src/artifacts/corpus-tools/profile-status.js +86 -0
  54. package/dist/src/artifacts/corpus-tools/profile-temporal.js +139 -0
  55. package/dist/src/artifacts/corpus-tools/radar-init.js +93 -0
  56. package/dist/src/artifacts/corpus-tools/radar-report.js +118 -0
  57. package/dist/src/artifacts/corpus-tools/radar-shared.js +189 -0
  58. package/dist/src/artifacts/corpus-tools/radar-status.js +68 -0
  59. package/dist/src/artifacts/corpus-tools/sidecar-lint.js +233 -0
  60. package/dist/src/artifacts/corpus-tools/sidecar-repair.js +277 -0
  61. package/dist/src/artifacts/corpus-tools/snapshot.js +591 -0
  62. package/dist/src/artifacts/corpus-tools/source-types.js +164 -0
  63. package/dist/src/artifacts/corpus-tools/vision-extract.js +243 -0
  64. package/dist/src/artifacts/corpus-views/build.js +126 -0
  65. package/dist/src/artifacts/corpus-views/corpus-config.js +124 -0
  66. package/dist/src/artifacts/corpus-views/ref-parser.js +437 -0
  67. package/dist/src/artifacts/corpus-views/renderers.js +353 -0
  68. package/dist/src/artifacts/corpus-views/taxonomies.js +131 -0
  69. package/dist/src/artifacts/dep-graph.js +173 -0
  70. package/dist/src/artifacts/discover-facets.js +375 -0
  71. package/dist/src/artifacts/embedding-index.js +354 -0
  72. package/dist/src/artifacts/enrichment/cli.js +240 -0
  73. package/dist/src/artifacts/enrichment/prompt.js +47 -0
  74. package/dist/src/artifacts/enrichment/store.js +90 -0
  75. package/dist/src/artifacts/enrichment/types.js +12 -0
  76. package/dist/src/artifacts/fortemi-core-query-adapter.js +475 -0
  77. package/dist/src/artifacts/fortemi-core-sync.js +251 -0
  78. package/dist/src/artifacts/fortemi-shard-export.js +44 -0
  79. package/dist/src/artifacts/fulltext.js +108 -0
  80. package/dist/src/artifacts/graph-backend.js +51 -0
  81. package/dist/src/artifacts/graph-query.js +247 -0
  82. package/dist/src/artifacts/hybrid-query.js +225 -0
  83. package/dist/src/artifacts/index-builder.js +1089 -0
  84. package/dist/src/artifacts/index-reader.js +112 -0
  85. package/dist/src/artifacts/index-status.js +193 -0
  86. package/dist/src/artifacts/legacy-index-migration.js +169 -0
  87. package/dist/src/artifacts/move.js +154 -0
  88. package/dist/src/artifacts/operational-state.js +239 -0
  89. package/dist/src/artifacts/prebuilt-build-lock.js +49 -0
  90. package/dist/src/artifacts/query-engine.js +1955 -0
  91. package/dist/src/artifacts/source-graph.js +529 -0
  92. package/dist/src/artifacts/stats.js +169 -0
  93. package/dist/src/artifacts/types.js +606 -0
  94. package/dist/src/artifacts/views/cli.js +293 -0
  95. package/dist/src/artifacts/views/definition.js +170 -0
  96. package/dist/src/artifacts/views/store.js +149 -0
  97. package/dist/src/artifacts/views/types.js +8 -0
  98. package/dist/src/artifacts/watcher.js +255 -0
  99. package/dist/src/catalog/builtin-models.json +636 -0
  100. package/dist/src/catalog/cli.js +228 -0
  101. package/dist/src/catalog/cli.mjs +289 -0
  102. package/dist/src/catalog/index.js +15 -0
  103. package/dist/src/catalog/loader.js +217 -0
  104. package/dist/src/catalog/loader.mjs +251 -0
  105. package/dist/src/catalog/sources.json +41 -0
  106. package/dist/src/catalog/types.js +8 -0
  107. package/dist/src/channel/manager.mjs +504 -0
  108. package/dist/src/cli/agent-spawn.js +178 -0
  109. package/dist/src/cli/cli-extension-loader.js +245 -0
  110. package/dist/src/cli/command-log.js +275 -0
  111. package/dist/src/cli/config-loader.js +232 -0
  112. package/dist/src/cli/env.js +82 -0
  113. package/dist/src/cli/errors.js +150 -0
  114. package/dist/src/cli/find-package-root.js +40 -0
  115. package/dist/src/cli/git-hooks.js +250 -0
  116. package/dist/src/cli/handlers/agentcard.js +206 -0
  117. package/dist/src/cli/handlers/artifacts.js +76 -0
  118. package/dist/src/cli/handlers/best-practices-audit.js +280 -0
  119. package/dist/src/cli/handlers/cockpit.js +137 -0
  120. package/dist/src/cli/handlers/command-log.js +37 -0
  121. package/dist/src/cli/handlers/daemon.js +59 -0
  122. package/dist/src/cli/handlers/diagnose.js +300 -0
  123. package/dist/src/cli/handlers/execution-mode.js +105 -0
  124. package/dist/src/cli/handlers/feedback.js +341 -0
  125. package/dist/src/cli/handlers/help.js +147 -0
  126. package/dist/src/cli/handlers/index.js +302 -0
  127. package/dist/src/cli/handlers/init.js +179 -0
  128. package/dist/src/cli/handlers/install.js +129 -0
  129. package/dist/src/cli/handlers/issues.js +46 -0
  130. package/dist/src/cli/handlers/lint.js +42 -0
  131. package/dist/src/cli/handlers/local-executor.js +315 -0
  132. package/dist/src/cli/handlers/marketplace.js +168 -0
  133. package/dist/src/cli/handlers/mc.js +1010 -0
  134. package/dist/src/cli/handlers/models.js +352 -0
  135. package/dist/src/cli/handlers/packages.js +155 -0
  136. package/dist/src/cli/handlers/ralph-launcher.js +717 -0
  137. package/dist/src/cli/handlers/ralph.js +575 -0
  138. package/dist/src/cli/handlers/refresh.js +432 -0
  139. package/dist/src/cli/handlers/regenerate.js +336 -0
  140. package/dist/src/cli/handlers/repo-access.js +109 -0
  141. package/dist/src/cli/handlers/run.js +165 -0
  142. package/dist/src/cli/handlers/runtime-info.js +301 -0
  143. package/dist/src/cli/handlers/sandbox.js +197 -0
  144. package/dist/src/cli/handlers/scaffolding.js +149 -0
  145. package/dist/src/cli/handlers/script-runner.js +121 -0
  146. package/dist/src/cli/handlers/sdlc-accelerate.js +148 -0
  147. package/dist/src/cli/handlers/serve.js +1835 -0
  148. package/dist/src/cli/handlers/session.js +348 -0
  149. package/dist/src/cli/handlers/setup.js +440 -0
  150. package/dist/src/cli/handlers/skill-lint.js +367 -0
  151. package/dist/src/cli/handlers/skill-usage.js +74 -0
  152. package/dist/src/cli/handlers/steward.js +567 -0
  153. package/dist/src/cli/handlers/subcommands.js +1702 -0
  154. package/dist/src/cli/handlers/team.js +337 -0
  155. package/dist/src/cli/handlers/types.js +11 -0
  156. package/dist/src/cli/handlers/use.js +2772 -0
  157. package/dist/src/cli/handlers/utilities.js +703 -0
  158. package/dist/src/cli/handlers/version.js +134 -0
  159. package/dist/src/cli/handlers/workspace-context.js +93 -0
  160. package/dist/src/cli/handlers/workspace.js +126 -0
  161. package/dist/src/cli/help-generator.js +178 -0
  162. package/dist/src/cli/hooks/builtin/activity-log-hook.js +126 -0
  163. package/dist/src/cli/hooks/executor.js +96 -0
  164. package/dist/src/cli/hooks/index.js +15 -0
  165. package/dist/src/cli/hooks/registry.js +143 -0
  166. package/dist/src/cli/hooks/types.js +13 -0
  167. package/dist/src/cli/log.js +492 -0
  168. package/dist/src/cli/project-isolation/detect.js +70 -0
  169. package/dist/src/cli/project-isolation/index.js +7 -0
  170. package/dist/src/cli/project-isolation/signals.js +17 -0
  171. package/dist/src/cli/project-isolation/warning.js +102 -0
  172. package/dist/src/cli/prompt-utils.js +155 -0
  173. package/dist/src/cli/provider-deployment-plan.js +126 -0
  174. package/dist/src/cli/provider-resolution.js +119 -0
  175. package/dist/src/cli/router.js +305 -0
  176. package/dist/src/cli/scope-resolver.js +392 -0
  177. package/dist/src/cli/skill-usage.js +616 -0
  178. package/dist/src/cli/ui.js +224 -0
  179. package/dist/src/cli/watch-service.js +203 -0
  180. package/dist/src/cli/workflow-orchestrator.js +478 -0
  181. package/dist/src/cli/workspace-signals.js +321 -0
  182. package/dist/src/community/footer.js +14 -0
  183. package/dist/src/community/links.js +123 -0
  184. package/dist/src/community/milestones.js +46 -0
  185. package/dist/src/community/nudge-policy.js +93 -0
  186. package/dist/src/config/aiwg-config.js +883 -0
  187. package/dist/src/config/cli.js +703 -0
  188. package/dist/src/config/gitignore.js +156 -0
  189. package/dist/src/config/project-artifacts.js +76 -0
  190. package/dist/src/config/user-config.js +428 -0
  191. package/dist/src/config/user-registry.js +127 -0
  192. package/dist/src/config/workspace.js +276 -0
  193. package/dist/src/contributors/detect.js +39 -0
  194. package/dist/src/contributors/discover.js +172 -0
  195. package/dist/src/contributors/heuristic.js +186 -0
  196. package/dist/src/contributors/index.js +11 -0
  197. package/dist/src/contributors/types.js +13 -0
  198. package/dist/src/contributors/validation.js +116 -0
  199. package/dist/src/data/community.schema.json +43 -0
  200. package/dist/src/data/community.yaml +16 -0
  201. package/dist/src/extensions/capability-index.js +270 -0
  202. package/dist/src/extensions/claude-hooks-installer.js +268 -0
  203. package/dist/src/extensions/commands/definitions.js +3485 -0
  204. package/dist/src/extensions/deployment-registration.js +463 -0
  205. package/dist/src/extensions/index.js +22 -0
  206. package/dist/src/extensions/loader.js +132 -0
  207. package/dist/src/extensions/managed-marker.js +100 -0
  208. package/dist/src/extensions/manifest.js +196 -0
  209. package/dist/src/extensions/project-local-activity.js +114 -0
  210. package/dist/src/extensions/project-local-discovery.js +261 -0
  211. package/dist/src/extensions/project-local-doctor.js +281 -0
  212. package/dist/src/extensions/project-local-gitignore.js +176 -0
  213. package/dist/src/extensions/project-local-paths.js +121 -0
  214. package/dist/src/extensions/project-local-promote.js +218 -0
  215. package/dist/src/extensions/project-local-remove.js +373 -0
  216. package/dist/src/extensions/project-local-scaffold.js +252 -0
  217. package/dist/src/extensions/project-quickref.js +291 -0
  218. package/dist/src/extensions/registry.js +368 -0
  219. package/dist/src/extensions/shadow-resolver.js +271 -0
  220. package/dist/src/extensions/types.js +86 -0
  221. package/dist/src/extensions/upstream-registry.js +195 -0
  222. package/dist/src/extensions/validation.js +631 -0
  223. package/dist/src/features/catalog.js +88 -0
  224. package/dist/src/features/cli.js +197 -0
  225. package/dist/src/features/installer.js +57 -0
  226. package/dist/src/features/paths.js +14 -0
  227. package/dist/src/features/runtime.js +21 -0
  228. package/dist/src/features/status.js +134 -0
  229. package/dist/src/hooks/laziness-detection.js +532 -0
  230. package/dist/src/intake/git-history-analyzer.js +486 -0
  231. package/dist/src/intake/index.js +9 -0
  232. package/dist/src/issues/cli.js +327 -0
  233. package/dist/src/issues/index.js +5 -0
  234. package/dist/src/issues/live.js +154 -0
  235. package/dist/src/issues/local.js +666 -0
  236. package/dist/src/issues/sync.js +143 -0
  237. package/dist/src/issues/types.js +2 -0
  238. package/dist/src/issues/workflows.js +164 -0
  239. package/dist/src/kb/cli.js +173 -0
  240. package/dist/src/lint/cli.js +171 -0
  241. package/dist/src/lint/loader.js +225 -0
  242. package/dist/src/lint/reporters.js +141 -0
  243. package/dist/src/lint/runner.js +364 -0
  244. package/dist/src/lint/types.js +10 -0
  245. package/dist/src/marketplace/cache.js +110 -0
  246. package/dist/src/marketplace/identifier.js +63 -0
  247. package/dist/src/marketplace/registry.js +36 -0
  248. package/dist/src/marketplace/sources/clawhub.js +53 -0
  249. package/dist/src/marketplace/sources/git.js +45 -0
  250. package/dist/src/marketplace/types.js +9 -0
  251. package/dist/src/mcp/adapters/codex-runtime.js +224 -0
  252. package/dist/src/mcp/cli.mjs +1197 -0
  253. package/dist/src/mcp/elicitation.mjs +149 -0
  254. package/dist/src/mcp/helpers.mjs +287 -0
  255. package/dist/src/mcp/index.mjs +11 -0
  256. package/dist/src/mcp/profiles.js +263 -0
  257. package/dist/src/mcp/profiles.mjs +360 -0
  258. package/dist/src/mcp/registry.js +376 -0
  259. package/dist/src/mcp/registry.mjs +387 -0
  260. package/dist/src/mcp/server.mjs +633 -0
  261. package/dist/src/mcp/test-simple.mjs +271 -0
  262. package/dist/src/mcp/tools/command-run.mjs +101 -0
  263. package/dist/src/mcp/tools/discovery.mjs +291 -0
  264. package/dist/src/mcp/tools/interaction.mjs +87 -0
  265. package/dist/src/mcp/tools/orchestration.mjs +320 -0
  266. package/dist/src/mcp/tools/subsystems.mjs +640 -0
  267. package/dist/src/memory/cli.js +166 -0
  268. package/dist/src/memory/project-registry.js +282 -0
  269. package/dist/src/metrics/artifact-metrics.js +184 -0
  270. package/dist/src/metrics/context-budget.js +174 -0
  271. package/dist/src/metrics/token-counter.js +133 -0
  272. package/dist/src/models/config-loader.js +228 -0
  273. package/dist/src/models/index.js +22 -0
  274. package/dist/src/models/model-capabilities.v1.json +120 -0
  275. package/dist/src/models/model-catalog.v1.json +96 -0
  276. package/dist/src/models/model-discovery.js +521 -0
  277. package/dist/src/models/provider-models.js +73 -0
  278. package/dist/src/models/provider-policy.js +273 -0
  279. package/dist/src/models/resolver.js +245 -0
  280. package/dist/src/models/router.js +70 -0
  281. package/dist/src/models/types.js +8 -0
  282. package/dist/src/models/wrapper-deployment.js +178 -0
  283. package/dist/src/models/wrapper-route.js +54 -0
  284. package/dist/src/ops/cli.js +268 -0
  285. package/dist/src/ops/registry.js +623 -0
  286. package/dist/src/packages/adapters/clawhub.js +113 -0
  287. package/dist/src/packages/adapters/git.js +153 -0
  288. package/dist/src/packages/adapters/gitea.js +93 -0
  289. package/dist/src/packages/adapters/github.js +69 -0
  290. package/dist/src/packages/adapters/local-cache.js +89 -0
  291. package/dist/src/packages/package-registry.js +143 -0
  292. package/dist/src/packages/registry.js +238 -0
  293. package/dist/src/packages/types.js +11 -0
  294. package/dist/src/plugin/cross-framework-ops.js +475 -0
  295. package/dist/src/plugin/framework-config-loader.js +235 -0
  296. package/dist/src/plugin/framework-detector.js +186 -0
  297. package/dist/src/plugin/framework-isolator.js +341 -0
  298. package/dist/src/plugin/framework-migration.js +371 -0
  299. package/dist/src/plugin/metadata-validator.js +906 -0
  300. package/dist/src/plugin/plugin-installer.js +436 -0
  301. package/dist/src/plugin/plugin-status.js +369 -0
  302. package/dist/src/plugin/plugin-uninstaller.js +473 -0
  303. package/dist/src/plugin/registry-validator.js +344 -0
  304. package/dist/src/plugin/skill-command-translator.js +415 -0
  305. package/dist/src/plugin/workspace-creator.js +189 -0
  306. package/dist/src/plugin/workspace-migrator.js +821 -0
  307. package/dist/src/policy/authorization.js +390 -0
  308. package/dist/src/policy/repo-access.js +215 -0
  309. package/dist/src/provenance/cli.js +16 -0
  310. package/dist/src/providers/capability-matrix.js +300 -0
  311. package/dist/src/providers/capability-matrix.yaml +514 -0
  312. package/dist/src/providers/provider-definitions.js +977 -0
  313. package/dist/src/providers/provider-definitions.mjs +159 -0
  314. package/dist/src/providers/provider-inventory.js +169 -0
  315. package/dist/src/quality/feedback-ab.js +174 -0
  316. package/dist/src/quality/feedback-collector.js +176 -0
  317. package/dist/src/quality/feedback-tracker.js +123 -0
  318. package/dist/src/quality/patterns/adr.json +24 -0
  319. package/dist/src/quality/patterns/sad.json +24 -0
  320. package/dist/src/quality/patterns/test-plan.json +24 -0
  321. package/dist/src/quality/patterns/use-case.json +24 -0
  322. package/dist/src/quality/scoring.js +157 -0
  323. package/dist/src/reflections/cli.js +15 -0
  324. package/dist/src/release/plan.js +139 -0
  325. package/dist/src/research/cache/manager.js +227 -0
  326. package/dist/src/research/clients/arxiv.js +156 -0
  327. package/dist/src/research/clients/base.js +197 -0
  328. package/dist/src/research/clients/crossref.js +112 -0
  329. package/dist/src/research/clients/semantic-scholar.js +126 -0
  330. package/dist/src/research/clients/unpaywall.js +87 -0
  331. package/dist/src/research/index.js +14 -0
  332. package/dist/src/research/query-cli.js +336 -0
  333. package/dist/src/research/services/acquisition.js +313 -0
  334. package/dist/src/research/services/archival.js +225 -0
  335. package/dist/src/research/services/citation.js +279 -0
  336. package/dist/src/research/services/discovery.js +243 -0
  337. package/dist/src/research/services/documentation.js +269 -0
  338. package/dist/src/research/services/index.js +14 -0
  339. package/dist/src/research/services/provenance.js +279 -0
  340. package/dist/src/research/services/quality.js +370 -0
  341. package/dist/src/research/services/types.js +7 -0
  342. package/dist/src/research/storage-cli.js +20 -0
  343. package/dist/src/research/types.js +47 -0
  344. package/dist/src/resources/index.d.ts +2 -0
  345. package/dist/src/resources/index.js +2 -0
  346. package/dist/src/resources/web-release.d.ts +89 -0
  347. package/dist/src/resources/web-release.js +886 -0
  348. package/dist/src/rlm/cache/cli.js +162 -0
  349. package/dist/src/rlm/cache/hash.js +35 -0
  350. package/dist/src/rlm/cache/store.js +170 -0
  351. package/dist/src/rlm/cache/types.js +8 -0
  352. package/dist/src/rlm/cli.js +650 -0
  353. package/dist/src/serve/a2a-terminal-observer.js +120 -0
  354. package/dist/src/serve/agent-router.js +205 -0
  355. package/dist/src/serve/dispatch-router.js +171 -0
  356. package/dist/src/serve/executor-registry.js +715 -0
  357. package/dist/src/serve/mission-conductor.js +177 -0
  358. package/dist/src/serve/orchestrator-adapter.js +113 -0
  359. package/dist/src/serve/orchestrator-override.js +94 -0
  360. package/dist/src/serve/orchestrator-pty.js +133 -0
  361. package/dist/src/serve/pty-bridge.js +799 -0
  362. package/dist/src/serve/sandbox-registry.js +832 -0
  363. package/dist/src/serve/screen-reader.js +228 -0
  364. package/dist/src/serve/stack-adapters.js +68 -0
  365. package/dist/src/serve/telemetry.js +143 -0
  366. package/dist/src/skills/adapters/clawhub.js +250 -0
  367. package/dist/src/skills/adapters/local.js +335 -0
  368. package/dist/src/skills/adapters/openclaw.js +316 -0
  369. package/dist/src/skills/cli.js +334 -0
  370. package/dist/src/skills/registry.js +117 -0
  371. package/dist/src/skills/run.js +259 -0
  372. package/dist/src/skills/runtime.js +94 -0
  373. package/dist/src/skills/types.js +10 -0
  374. package/dist/src/smiths/agentsmith/demo.js +116 -0
  375. package/dist/src/smiths/agentsmith/examples.js +300 -0
  376. package/dist/src/smiths/agentsmith/generator.js +503 -0
  377. package/dist/src/smiths/agentsmith/index.js +11 -0
  378. package/dist/src/smiths/agentsmith/types.js +8 -0
  379. package/dist/src/smiths/commandsmith/example.js +220 -0
  380. package/dist/src/smiths/commandsmith/generator.js +288 -0
  381. package/dist/src/smiths/commandsmith/index.js +41 -0
  382. package/dist/src/smiths/commandsmith/templates.js +296 -0
  383. package/dist/src/smiths/commandsmith/types.js +7 -0
  384. package/dist/src/smiths/context-pipeline/aiwg-md.js +104 -0
  385. package/dist/src/smiths/context-pipeline/allowlist.js +195 -0
  386. package/dist/src/smiths/context-pipeline/claude-hook.js +127 -0
  387. package/dist/src/smiths/context-pipeline/discovery.js +187 -0
  388. package/dist/src/smiths/context-pipeline/external-links-section.js +49 -0
  389. package/dist/src/smiths/context-pipeline/finalization.js +147 -0
  390. package/dist/src/smiths/context-pipeline/generator.js +477 -0
  391. package/dist/src/smiths/context-pipeline/index.js +30 -0
  392. package/dist/src/smiths/context-pipeline/legacy-inject.js +103 -0
  393. package/dist/src/smiths/context-pipeline/managed-hook.js +95 -0
  394. package/dist/src/smiths/context-pipeline/overflow.js +212 -0
  395. package/dist/src/smiths/context-pipeline/parallelism-section.js +94 -0
  396. package/dist/src/smiths/context-pipeline/provider-policy.js +64 -0
  397. package/dist/src/smiths/context-pipeline/sanitizer.js +93 -0
  398. package/dist/src/smiths/context-pipeline/types.js +23 -0
  399. package/dist/src/smiths/context-pipeline/workspace-context.js +988 -0
  400. package/dist/src/smiths/hook-bridge/codex-translator.js +129 -0
  401. package/dist/src/smiths/hook-bridge/copilot-translator.js +64 -0
  402. package/dist/src/smiths/hook-bridge/factory-translator.js +43 -0
  403. package/dist/src/smiths/hook-bridge/hermes-translator.js +88 -0
  404. package/dist/src/smiths/hook-bridge/index.js +79 -0
  405. package/dist/src/smiths/hook-bridge/loader.js +116 -0
  406. package/dist/src/smiths/hook-bridge/shim.js +89 -0
  407. package/dist/src/smiths/hook-bridge/types.js +31 -0
  408. package/dist/src/smiths/index.js +39 -0
  409. package/dist/src/smiths/mcpsmith/analyzers/cli-analyzer.js +390 -0
  410. package/dist/src/smiths/mcpsmith/example.js +119 -0
  411. package/dist/src/smiths/mcpsmith/generator.js +236 -0
  412. package/dist/src/smiths/mcpsmith/index.js +17 -0
  413. package/dist/src/smiths/mcpsmith/types.js +10 -0
  414. package/dist/src/smiths/platform-paths.js +101 -0
  415. package/dist/src/smiths/skillsmith/codex-sidecar.js +85 -0
  416. package/dist/src/smiths/skillsmith/collision-detector.js +249 -0
  417. package/dist/src/smiths/skillsmith/demo.js +83 -0
  418. package/dist/src/smiths/skillsmith/examples.js +161 -0
  419. package/dist/src/smiths/skillsmith/generator.js +316 -0
  420. package/dist/src/smiths/skillsmith/index.js +12 -0
  421. package/dist/src/smiths/skillsmith/namespace-adapter.js +180 -0
  422. package/dist/src/smiths/skillsmith/platform-resolver.js +157 -0
  423. package/dist/src/smiths/skillsmith/types.js +9 -0
  424. package/dist/src/smiths/toolsmith/index.js +10 -0
  425. package/dist/src/smiths/toolsmith/runtime-discovery.mjs +710 -0
  426. package/dist/src/smiths/toolsmith/types.js +8 -0
  427. package/dist/src/storage/backends/fortemi.js +227 -0
  428. package/dist/src/storage/backends/fs.js +134 -0
  429. package/dist/src/storage/backends/logseq.js +309 -0
  430. package/dist/src/storage/backends/obsidian.js +233 -0
  431. package/dist/src/storage/cli.js +468 -0
  432. package/dist/src/storage/config.js +272 -0
  433. package/dist/src/storage/index.js +108 -0
  434. package/dist/src/storage/subsystem-cli.js +201 -0
  435. package/dist/src/storage/types.js +33 -0
  436. package/dist/src/testing/corpus/corpus-builder.js +383 -0
  437. package/dist/src/testing/corpus/ground-truth-manager.js +460 -0
  438. package/dist/src/testing/corpus/index.js +10 -0
  439. package/dist/src/testing/fixtures/index.js +9 -0
  440. package/dist/src/testing/fixtures/test-data-factory.js +472 -0
  441. package/dist/src/testing/generators/index.js +11 -0
  442. package/dist/src/testing/generators/test-case-generator.js +393 -0
  443. package/dist/src/testing/generators/test-code-generator.js +384 -0
  444. package/dist/src/testing/generators/use-case-parser.js +325 -0
  445. package/dist/src/testing/index.js +11 -0
  446. package/dist/src/tracker/capability-protocol.js +118 -0
  447. package/dist/src/update/checker.mjs +396 -0
  448. package/dist/src/update/notifier.mjs +235 -0
  449. package/dist/src/writing/content-diversifier.js +804 -0
  450. package/dist/src/writing/example-generator.js +959 -0
  451. package/dist/src/writing/example-templates.js +99 -0
  452. package/dist/src/writing/pattern-library.js +486 -0
  453. package/dist/src/writing/patterns/banned-phrases.json +4413 -0
  454. package/dist/src/writing/patterns/formulaic-structures.json +1300 -0
  455. package/dist/src/writing/patterns/generic-adjectives.json +1510 -0
  456. package/dist/src/writing/patterns/hedging-language.json +2096 -0
  457. package/dist/src/writing/patterns/transition-words.json +1285 -0
  458. package/dist/src/writing/patterns/weak-verbs.json +1112 -0
  459. package/dist/src/writing/prompt-optimizer.js +660 -0
  460. package/dist/src/writing/prompt-templates.js +583 -0
  461. package/dist/src/writing/scoring-config-loader.js +168 -0
  462. package/dist/src/writing/validation-engine.js +595 -0
  463. package/dist/src/writing/validation-rules.js +380 -0
  464. package/dist/src/writing/voice-analyzer.js +439 -0
  465. package/dist/src/writing/voice-calibration.js +661 -0
  466. package/dist/src/writing/voice-profiles.json +588 -0
  467. package/package.json +65 -9
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Activity Log Types
3
+ *
4
+ * Type definitions for `.aiwg/activity.log` entries. The wire format is
5
+ * frozen by the activity-log rule (`agentic/code/addons/aiwg-utils/rules/activity-log.md`):
6
+ *
7
+ * ## [YYYY-MM-DD HH:MM] <operation> | <summary>
8
+ *
9
+ * @issue #934
10
+ * @issue #964
11
+ */
12
+ /**
13
+ * Valid operation tokens. The activity-log rule freezes this set;
14
+ * additions require updating the rule too.
15
+ */
16
+ export const ACTIVITY_OPERATIONS = [
17
+ 'ingest',
18
+ 'create',
19
+ 'update',
20
+ 'delete',
21
+ 'query',
22
+ 'lint',
23
+ 'deploy',
24
+ 'archive',
25
+ 'promote',
26
+ ];
27
+ export function isActivityOperation(s) {
28
+ return ACTIVITY_OPERATIONS.includes(s);
29
+ }
30
+ /**
31
+ * Format an entry as the canonical wire line (no trailing newline).
32
+ *
33
+ * Wire format: `## [YYYY-MM-DD HH:MM] <operation> | <summary>`
34
+ */
35
+ export function formatEntry(entry) {
36
+ const ts = formatUtcTimestamp(entry.timestamp);
37
+ return `## [${ts}] ${entry.operation} | ${entry.summary}`;
38
+ }
39
+ /**
40
+ * Format a Date as the canonical "YYYY-MM-DD HH:MM" UTC timestamp.
41
+ */
42
+ export function formatUtcTimestamp(d) {
43
+ const yyyy = d.getUTCFullYear();
44
+ const mm = String(d.getUTCMonth() + 1).padStart(2, '0');
45
+ const dd = String(d.getUTCDate()).padStart(2, '0');
46
+ const HH = String(d.getUTCHours()).padStart(2, '0');
47
+ const MM = String(d.getUTCMinutes()).padStart(2, '0');
48
+ return `${yyyy}-${mm}-${dd} ${HH}:${MM}`;
49
+ }
50
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,367 @@
1
+ /**
2
+ * Agent Deployer
3
+ *
4
+ * Core deployment engine for multi-platform agent deployment.
5
+ *
6
+ * @implements @.aiwg/requirements/use-cases/UC-002-deploy-sdlc-framework.md
7
+ * @architecture @.aiwg/architecture/software-architecture-doc.md - Section 2.1 CLI Entry Point
8
+ * @nfr @.aiwg/requirements/nfr-modules/performance.md - NFR-PERF-002 (<10s deployment)
9
+ * @tests @test/unit/agents/agent-deployer.test.ts
10
+ * @depends @src/agents/agent-validator.ts
11
+ * @depends @src/agents/agent-packager.ts
12
+ * @agent-catalog @agentic/code/frameworks/sdlc-complete/agents/
13
+ */
14
+ import * as fs from 'fs/promises';
15
+ import * as path from 'path';
16
+ import { existsSync } from 'fs';
17
+ import { AgentValidator } from './agent-validator.js';
18
+ import { AgentPackager } from './agent-packager.js';
19
+ import { getProviderDefinition } from '../providers/provider-definitions.js';
20
+ export class AgentDeployer {
21
+ validator;
22
+ packager;
23
+ constructor() {
24
+ this.validator = new AgentValidator();
25
+ this.packager = new AgentPackager();
26
+ }
27
+ /**
28
+ * Deploy agents to target platform
29
+ */
30
+ async deploy(target, options = {}) {
31
+ const result = {
32
+ platform: target.platform,
33
+ projectPath: target.projectPath,
34
+ deployed: [],
35
+ skipped: [],
36
+ failed: [],
37
+ totalAgents: 0,
38
+ deployedCount: 0,
39
+ skippedCount: 0,
40
+ failedCount: 0,
41
+ };
42
+ try {
43
+ // Load agents from default locations
44
+ const agents = await this.loadAgents();
45
+ result.totalAgents = agents.length;
46
+ if (options.verbose) {
47
+ console.log(`Loaded ${agents.length} agents`);
48
+ }
49
+ // Filter agents by options
50
+ const filteredAgents = this.filterAgents(agents, options);
51
+ if (options.verbose) {
52
+ console.log(`Deploying ${filteredAgents.length} agents after filtering`);
53
+ }
54
+ // Validate agents
55
+ const validationResults = await this.validator.validateBatch(filteredAgents);
56
+ const validAgents = validationResults
57
+ .filter((r) => r.valid)
58
+ .map((r) => r.agent);
59
+ // Report validation failures
60
+ const invalidAgents = validationResults.filter((r) => !r.valid);
61
+ for (const invalid of invalidAgents) {
62
+ result.failed.push({
63
+ agent: invalid.agent,
64
+ error: `Validation failed: ${invalid.issues
65
+ .filter((i) => i.type === 'error')
66
+ .map((i) => i.message)
67
+ .join(', ')}`,
68
+ });
69
+ result.failedCount++;
70
+ }
71
+ // Create backup if requested
72
+ if (options.backup && !options.dryRun) {
73
+ result.backupPath = await this.createBackup(target);
74
+ if (options.verbose) {
75
+ console.log(`Backup created: ${result.backupPath}`);
76
+ }
77
+ }
78
+ // Deploy each valid agent
79
+ for (const agent of validAgents) {
80
+ try {
81
+ const deployResult = await this.deployAgent(agent, target, options);
82
+ if (deployResult.success) {
83
+ result.deployed.push(deployResult);
84
+ result.deployedCount++;
85
+ }
86
+ else {
87
+ result.skipped.push(agent);
88
+ result.skippedCount++;
89
+ }
90
+ }
91
+ catch (error) {
92
+ result.failed.push({
93
+ agent,
94
+ error: error instanceof Error ? error.message : String(error),
95
+ });
96
+ result.failedCount++;
97
+ }
98
+ }
99
+ }
100
+ catch (error) {
101
+ throw new Error(`Deployment failed: ${error instanceof Error ? error.message : String(error)}`);
102
+ }
103
+ return result;
104
+ }
105
+ /**
106
+ * Deploy agents to multiple targets
107
+ */
108
+ async deployBatch(targets, options = {}) {
109
+ const results = new Map();
110
+ for (const target of targets) {
111
+ const key = `${target.platform}:${target.projectPath}`;
112
+ const result = await this.deploy(target, options);
113
+ results.set(key, result);
114
+ }
115
+ return results;
116
+ }
117
+ /**
118
+ * Load agents from source directories
119
+ */
120
+ async loadAgents(sourcePath) {
121
+ const agents = [];
122
+ const searchPaths = [];
123
+ if (sourcePath) {
124
+ searchPaths.push(sourcePath);
125
+ }
126
+ else {
127
+ // Default search paths
128
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '';
129
+ const aiwgPath = path.join(homeDir, '.local/share/ai-writing-guide/agents');
130
+ const localAgents = path.join(process.cwd(), 'agents');
131
+ const sdlcAgents = path.join(homeDir, '.local/share/ai-writing-guide/agentic/code/frameworks/sdlc-complete/agents');
132
+ if (existsSync(aiwgPath))
133
+ searchPaths.push(aiwgPath);
134
+ if (existsSync(sdlcAgents))
135
+ searchPaths.push(sdlcAgents);
136
+ if (existsSync(localAgents))
137
+ searchPaths.push(localAgents);
138
+ }
139
+ // Load agents from all search paths
140
+ for (const searchPath of searchPaths) {
141
+ const pathAgents = await this.loadAgentsFromPath(searchPath);
142
+ agents.push(...pathAgents);
143
+ }
144
+ // Remove duplicates by name (prefer earlier paths)
145
+ const uniqueAgents = new Map();
146
+ for (const agent of agents) {
147
+ if (!uniqueAgents.has(agent.metadata.name)) {
148
+ uniqueAgents.set(agent.metadata.name, agent);
149
+ }
150
+ }
151
+ return Array.from(uniqueAgents.values());
152
+ }
153
+ /**
154
+ * Load agents from a specific path
155
+ */
156
+ async loadAgentsFromPath(dirPath) {
157
+ const agents = [];
158
+ if (!existsSync(dirPath)) {
159
+ return agents;
160
+ }
161
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
162
+ for (const entry of entries) {
163
+ if (entry.isFile() && entry.name.endsWith('.md')) {
164
+ // Skip template and README files
165
+ if (entry.name === 'agent-template.md' ||
166
+ entry.name === 'README.md' ||
167
+ entry.name === 'manifest.md') {
168
+ continue;
169
+ }
170
+ const filePath = path.join(dirPath, entry.name);
171
+ try {
172
+ const agent = await this.parseAgentFile(filePath);
173
+ if (agent) {
174
+ agents.push(agent);
175
+ }
176
+ }
177
+ catch (error) {
178
+ // Skip files that fail to parse
179
+ console.warn(`Warning: Failed to parse ${filePath}: ${error}`);
180
+ }
181
+ }
182
+ }
183
+ return agents;
184
+ }
185
+ /**
186
+ * Parse agent file
187
+ */
188
+ async parseAgentFile(filePath) {
189
+ const content = await fs.readFile(filePath, 'utf-8');
190
+ const metadata = this.parseFrontmatter(content);
191
+ if (!metadata.name) {
192
+ // Use filename as fallback
193
+ metadata.name = path.basename(filePath, '.md');
194
+ }
195
+ // Load agent even if description is missing - validation will catch it
196
+ // Extract content (remove frontmatter)
197
+ const contentWithoutFrontmatter = this.removeFrontmatter(content);
198
+ return {
199
+ metadata,
200
+ content: contentWithoutFrontmatter,
201
+ filePath,
202
+ fileName: path.basename(filePath),
203
+ };
204
+ }
205
+ /**
206
+ * Parse YAML frontmatter
207
+ */
208
+ parseFrontmatter(content) {
209
+ const metadata = {};
210
+ // Match frontmatter between --- delimiters
211
+ const frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
212
+ if (!frontmatterMatch) {
213
+ return metadata;
214
+ }
215
+ const frontmatter = frontmatterMatch[1];
216
+ const lines = frontmatter.split('\n');
217
+ for (const line of lines) {
218
+ const match = line.match(/^(\w+):\s*(.+)$/);
219
+ if (match) {
220
+ const key = match[1].trim();
221
+ const value = match[2].trim();
222
+ switch (key) {
223
+ case 'name':
224
+ metadata.name = value;
225
+ break;
226
+ case 'description':
227
+ metadata.description = value;
228
+ break;
229
+ case 'category':
230
+ metadata.category = value;
231
+ break;
232
+ case 'model':
233
+ metadata.model = value;
234
+ break;
235
+ case 'version':
236
+ metadata.version = value;
237
+ break;
238
+ case 'tools':
239
+ metadata.tools = value.split(',').map((t) => t.trim());
240
+ break;
241
+ case 'dependencies':
242
+ metadata.dependencies = value.split(',').map((d) => d.trim());
243
+ break;
244
+ }
245
+ }
246
+ }
247
+ return metadata;
248
+ }
249
+ /**
250
+ * Remove frontmatter from content
251
+ */
252
+ removeFrontmatter(content) {
253
+ const match = content.match(/^---\s*\n[\s\S]*?\n---\s*\n([\s\S]*)$/);
254
+ return match ? match[1].trim() : content;
255
+ }
256
+ /**
257
+ * Filter agents by options
258
+ */
259
+ filterAgents(agents, options) {
260
+ let filtered = agents;
261
+ // Filter by category
262
+ if (options.categories && options.categories.length > 0) {
263
+ filtered = filtered.filter((agent) => agent.metadata.category &&
264
+ options.categories.includes(agent.metadata.category));
265
+ }
266
+ // Filter by name
267
+ if (options.agentNames && options.agentNames.length > 0) {
268
+ filtered = filtered.filter((agent) => options.agentNames.includes(agent.metadata.name));
269
+ }
270
+ return filtered;
271
+ }
272
+ /**
273
+ * Deploy a single agent
274
+ */
275
+ async deployAgent(agent, target, options) {
276
+ const agentsDir = this.getAgentsDirectory(target);
277
+ const fileName = this.packager.getFileName(agent, target.platform);
278
+ const targetPath = path.join(agentsDir, fileName);
279
+ // Check if file exists and force is not set
280
+ if (existsSync(targetPath) && !options.force) {
281
+ return {
282
+ agent,
283
+ success: false,
284
+ targetPath,
285
+ error: 'File exists (use --force to overwrite)',
286
+ };
287
+ }
288
+ // Dry run: don't write files
289
+ if (options.dryRun) {
290
+ return {
291
+ agent,
292
+ success: true,
293
+ targetPath,
294
+ };
295
+ }
296
+ // Package agent for platform
297
+ const packaged = await this.packager.package(agent, target.platform);
298
+ // Create directory if needed
299
+ await fs.mkdir(agentsDir, { recursive: true });
300
+ // Write file
301
+ await fs.writeFile(targetPath, packaged.content, 'utf-8');
302
+ return {
303
+ agent,
304
+ success: true,
305
+ targetPath,
306
+ };
307
+ }
308
+ /**
309
+ * Get agents directory for platform
310
+ */
311
+ getAgentsDirectory(target) {
312
+ if (target.agentsPath) {
313
+ return path.resolve(target.projectPath, target.agentsPath);
314
+ }
315
+ const definition = getProviderDefinition(target.platform);
316
+ const agentsPath = definition?.paths.artifacts.agents ?? '';
317
+ return path.resolve(target.projectPath, agentsPath);
318
+ }
319
+ /**
320
+ * Create backup of existing agents
321
+ */
322
+ async createBackup(target) {
323
+ const agentsDir = this.getAgentsDirectory(target);
324
+ if (!existsSync(agentsDir)) {
325
+ return ''; // Nothing to backup
326
+ }
327
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
328
+ const backupPath = path.join(target.projectPath, `.agents-backup-${timestamp}`);
329
+ await fs.cp(agentsDir, backupPath, { recursive: true });
330
+ return backupPath;
331
+ }
332
+ /**
333
+ * Rollback to previous backup
334
+ */
335
+ async rollback(backupPath, target) {
336
+ if (!existsSync(backupPath)) {
337
+ throw new Error(`Backup not found: ${backupPath}`);
338
+ }
339
+ const agentsDir = this.getAgentsDirectory(target);
340
+ // Remove current agents directory
341
+ if (existsSync(agentsDir)) {
342
+ await fs.rm(agentsDir, { recursive: true, force: true });
343
+ }
344
+ // Restore from backup
345
+ await fs.cp(backupPath, agentsDir, { recursive: true });
346
+ }
347
+ /**
348
+ * Get installed version of an agent
349
+ */
350
+ async getInstalledVersion(agentName, target) {
351
+ const agentsDir = this.getAgentsDirectory(target);
352
+ const fileName = `${agentName}${this.packager.getFileExtension(target.platform)}`;
353
+ const filePath = path.join(agentsDir, fileName);
354
+ if (!existsSync(filePath)) {
355
+ return null;
356
+ }
357
+ try {
358
+ const content = await fs.readFile(filePath, 'utf-8');
359
+ const metadata = this.parseFrontmatter(content);
360
+ return metadata.version || null;
361
+ }
362
+ catch {
363
+ return null;
364
+ }
365
+ }
366
+ }
367
+ //# sourceMappingURL=agent-deployer.js.map
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Agent Packager
3
+ *
4
+ * Converts agents to platform-specific formats.
5
+ */
6
+ import { getProviderDefinition } from '../providers/provider-definitions.js';
7
+ export class AgentPackager {
8
+ getAgentFormatAdapters() {
9
+ return {
10
+ 'claude-markdown': (agent) => this.convertToClaudeFormat(agent),
11
+ 'cursor-json': (agent) => this.convertToCursorFormat(agent),
12
+ 'codex-markdown': (agent) => this.convertToCodexFormat(agent),
13
+ 'copilot-markdown': (agent) => this.convertToGenericFormat(agent),
14
+ 'factory-droid': (agent) => this.convertToClaudeFormat(agent),
15
+ 'generic-markdown': (agent) => this.convertToGenericFormat(agent),
16
+ 'windsurf-markdown': (agent) => this.convertToWindsurfFormat(agent),
17
+ };
18
+ }
19
+ /**
20
+ * Package agent for target platform
21
+ */
22
+ async package(agent, platform) {
23
+ const definition = getProviderDefinition(platform);
24
+ if (!definition) {
25
+ throw new Error(`Unknown platform: ${platform}`);
26
+ }
27
+ const adapterKey = definition.adapters.agentFormat;
28
+ const adapter = this.getAgentFormatAdapters()[adapterKey];
29
+ if (!adapter) {
30
+ throw new Error(`Unknown agent format adapter '${adapterKey}' for platform: ${platform}`);
31
+ }
32
+ return {
33
+ agent,
34
+ content: adapter(agent),
35
+ format: definition.id,
36
+ };
37
+ }
38
+ /**
39
+ * Convert to Claude Code format (.md with YAML frontmatter)
40
+ */
41
+ convertToClaudeFormat(agent) {
42
+ const { metadata, content } = agent;
43
+ const lines = [];
44
+ // Add frontmatter
45
+ lines.push('---');
46
+ lines.push(`name: ${metadata.name}`);
47
+ lines.push(`description: ${metadata.description}`);
48
+ if (metadata.model) {
49
+ lines.push(`model: ${metadata.model}`);
50
+ }
51
+ if (metadata.modelRole) {
52
+ lines.push(`model-role: ${metadata.modelRole}`);
53
+ }
54
+ if (metadata.modelTier) {
55
+ lines.push(`model-tier: ${metadata.modelTier}`);
56
+ }
57
+ if (metadata.tools && metadata.tools.length > 0) {
58
+ lines.push(`tools: ${metadata.tools.join(', ')}`);
59
+ }
60
+ if (metadata.category) {
61
+ lines.push(`category: ${metadata.category}`);
62
+ }
63
+ if (metadata.version) {
64
+ lines.push(`version: ${metadata.version}`);
65
+ }
66
+ if (metadata.dependencies && metadata.dependencies.length > 0) {
67
+ lines.push(`dependencies: ${metadata.dependencies.join(', ')}`);
68
+ }
69
+ lines.push('---');
70
+ lines.push('');
71
+ // Add content
72
+ lines.push(content);
73
+ return lines.join('\n');
74
+ }
75
+ /**
76
+ * Convert to Cursor format (JSON-based)
77
+ */
78
+ convertToCursorFormat(agent) {
79
+ const { metadata, content } = agent;
80
+ // Cursor uses JSON format with lowercase tool names
81
+ const tools = metadata.tools?.map((t) => t.toLowerCase()) || [];
82
+ const cursorAgent = {
83
+ name: metadata.name,
84
+ description: metadata.description,
85
+ prompt: content,
86
+ tools,
87
+ ...(metadata.model && { model: metadata.model }),
88
+ ...(metadata.modelRole && { modelRole: metadata.modelRole }),
89
+ ...(metadata.modelTier && { modelTier: metadata.modelTier }),
90
+ ...(metadata.category && { category: metadata.category }),
91
+ ...(metadata.version && { version: metadata.version }),
92
+ ...(metadata.dependencies && { dependencies: metadata.dependencies }),
93
+ };
94
+ return JSON.stringify(cursorAgent, null, 2);
95
+ }
96
+ /**
97
+ * Convert to OpenAI Codex format (YAML-based with specific structure)
98
+ */
99
+ convertToCodexFormat(agent) {
100
+ const { metadata, content } = agent;
101
+ const lines = [];
102
+ // Codex uses YAML frontmatter similar to Claude
103
+ lines.push('---');
104
+ lines.push(`agent_name: ${metadata.name}`);
105
+ lines.push(`description: ${metadata.description}`);
106
+ if (metadata.tools && metadata.tools.length > 0) {
107
+ lines.push('capabilities:');
108
+ for (const tool of metadata.tools) {
109
+ lines.push(` - ${tool.toLowerCase()}`);
110
+ }
111
+ }
112
+ if (metadata.model) {
113
+ lines.push(`preferred_model: ${metadata.model}`);
114
+ }
115
+ if (metadata.modelRole) {
116
+ lines.push(`model-role: ${metadata.modelRole}`);
117
+ }
118
+ if (metadata.modelTier) {
119
+ lines.push(`model-tier: ${metadata.modelTier}`);
120
+ }
121
+ if (metadata.category) {
122
+ lines.push(`category: ${metadata.category}`);
123
+ }
124
+ if (metadata.version) {
125
+ lines.push(`version: ${metadata.version}`);
126
+ }
127
+ lines.push('---');
128
+ lines.push('');
129
+ // Add system prompt header
130
+ lines.push('# System Instructions');
131
+ lines.push('');
132
+ lines.push(content);
133
+ return lines.join('\n');
134
+ }
135
+ /**
136
+ * Convert to generic format (plain markdown with minimal frontmatter)
137
+ */
138
+ convertToGenericFormat(agent) {
139
+ const { metadata, content } = agent;
140
+ const lines = [];
141
+ // Minimal YAML frontmatter
142
+ lines.push('---');
143
+ lines.push(`name: ${metadata.name}`);
144
+ lines.push(`description: ${metadata.description}`);
145
+ if (metadata.version) {
146
+ lines.push(`version: ${metadata.version}`);
147
+ }
148
+ lines.push('---');
149
+ lines.push('');
150
+ // Add metadata as comments
151
+ lines.push('<!--');
152
+ if (metadata.category) {
153
+ lines.push(`Category: ${metadata.category}`);
154
+ }
155
+ if (metadata.model) {
156
+ lines.push(`Preferred Model: ${metadata.model}`);
157
+ }
158
+ if (metadata.modelRole) {
159
+ lines.push(`Model Role: ${metadata.modelRole}`);
160
+ }
161
+ if (metadata.modelTier) {
162
+ lines.push(`Model Tier: ${metadata.modelTier}`);
163
+ }
164
+ if (metadata.tools && metadata.tools.length > 0) {
165
+ lines.push(`Tools: ${metadata.tools.join(', ')}`);
166
+ }
167
+ if (metadata.dependencies && metadata.dependencies.length > 0) {
168
+ lines.push(`Dependencies: ${metadata.dependencies.join(', ')}`);
169
+ }
170
+ lines.push('-->');
171
+ lines.push('');
172
+ // Add content
173
+ lines.push(content);
174
+ return lines.join('\n');
175
+ }
176
+ /**
177
+ * Convert to Windsurf format (plain markdown, no YAML frontmatter)
178
+ *
179
+ * Windsurf uses AGENTS.md for directory-scoped instructions.
180
+ * Individual agent definitions use clean markdown sections.
181
+ */
182
+ convertToWindsurfFormat(agent) {
183
+ const { metadata, content } = agent;
184
+ const lines = [];
185
+ // Windsurf prefers clean markdown without YAML frontmatter
186
+ lines.push(`### ${metadata.name}`);
187
+ lines.push('');
188
+ // Only add description if present
189
+ if (metadata.description) {
190
+ lines.push(`> ${metadata.description}`);
191
+ lines.push('');
192
+ }
193
+ // Include capabilities in a structured way
194
+ if (metadata.tools && metadata.tools.length > 0) {
195
+ lines.push('<capabilities>');
196
+ for (const tool of metadata.tools) {
197
+ lines.push(`- ${tool}`);
198
+ }
199
+ lines.push('</capabilities>');
200
+ lines.push('');
201
+ }
202
+ // Add model info if present
203
+ if (metadata.model) {
204
+ lines.push(`**Model**: ${metadata.model}`);
205
+ lines.push('');
206
+ }
207
+ if (metadata.modelRole || metadata.modelTier) {
208
+ lines.push(`**Model Policy**: ${metadata.modelRole ?? 'coding'}/${metadata.modelTier ?? 'standard'}`);
209
+ lines.push('');
210
+ }
211
+ // Add the agent's system instructions
212
+ lines.push(content);
213
+ return lines.join('\n');
214
+ }
215
+ /**
216
+ * Get file extension for platform
217
+ */
218
+ getFileExtension(platform) {
219
+ return getProviderDefinition(platform)?.smithPaths.fileExtension ?? '.md';
220
+ }
221
+ /**
222
+ * Get filename for agent
223
+ */
224
+ getFileName(agent, platform) {
225
+ const ext = this.getFileExtension(platform);
226
+ return `${agent.metadata.name}${ext}`;
227
+ }
228
+ /**
229
+ * Package multiple agents
230
+ */
231
+ async packageBatch(agents, platform) {
232
+ const packaged = [];
233
+ for (const agent of agents) {
234
+ packaged.push(await this.package(agent, platform));
235
+ }
236
+ return packaged;
237
+ }
238
+ /**
239
+ * Create combined AGENTS.md file (for platforms that support it)
240
+ */
241
+ async createCombinedFile(agents, platform) {
242
+ const lines = [];
243
+ lines.push('# Available Agents');
244
+ lines.push('');
245
+ lines.push(`Platform: ${platform}`);
246
+ lines.push(`Total Agents: ${agents.length}`);
247
+ lines.push('');
248
+ // Table of contents
249
+ lines.push('## Table of Contents');
250
+ lines.push('');
251
+ for (const agent of agents) {
252
+ lines.push(`- [${agent.metadata.name}](#${agent.metadata.name.replace(/-/g, '')})`);
253
+ }
254
+ lines.push('');
255
+ // Individual agents
256
+ for (let i = 0; i < agents.length; i++) {
257
+ const agent = agents[i];
258
+ const packaged = await this.package(agent, platform);
259
+ if (i > 0) {
260
+ lines.push('');
261
+ lines.push('---');
262
+ lines.push('');
263
+ }
264
+ lines.push(`## ${agent.metadata.name}`);
265
+ lines.push('');
266
+ lines.push(packaged.content);
267
+ }
268
+ return lines.join('\n');
269
+ }
270
+ }
271
+ //# sourceMappingURL=agent-packager.js.map