@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,977 @@
1
+ import { z } from 'zod';
2
+ import { homedir } from 'os';
3
+ import { join } from 'path';
4
+ import { getProviderCapabilities, } from './capability-matrix.js';
5
+ const ArtifactPathsSchema = z.object({
6
+ agents: z.string().nullable(),
7
+ commands: z.string().nullable(),
8
+ skills: z.string().nullable(),
9
+ rules: z.string().nullable(),
10
+ behaviors: z.string().nullable(),
11
+ });
12
+ const ProviderDefinitionSchema = z.object({
13
+ id: z.enum([
14
+ 'claude',
15
+ 'codex',
16
+ 'copilot',
17
+ 'cursor',
18
+ 'factory',
19
+ 'hermes',
20
+ 'opencode',
21
+ 'openclaw',
22
+ 'openhuman',
23
+ 'warp',
24
+ 'windsurf',
25
+ 'generic',
26
+ ]),
27
+ displayName: z.string().min(1),
28
+ aliases: z.array(z.string().min(1)),
29
+ status: z.enum(['stable', 'experimental', 'deprecated']),
30
+ builtIn: z.boolean(),
31
+ surfaces: z.object({
32
+ primary: z.string().min(1),
33
+ compatibility: z.array(z.string().min(1)),
34
+ precedence: z.array(z.string().min(1)),
35
+ related: z.array(z.object({
36
+ id: z.string().min(1),
37
+ displayName: z.string().min(1),
38
+ relationship: z.enum(['same-provider', 'shared-adapter', 'future-provider', 'companion-standard']),
39
+ deployable: z.boolean(),
40
+ aliases: z.array(z.string().min(1)),
41
+ paths: z.object({
42
+ rules: z.array(z.string().min(1)),
43
+ skills: z.array(z.string().min(1)),
44
+ agentsMd: z.array(z.string().min(1)),
45
+ legacy: z.array(z.string().min(1)),
46
+ }),
47
+ notes: z.array(z.string().min(1)),
48
+ })),
49
+ }),
50
+ detection: z.object({
51
+ env: z.array(z.string().min(1)),
52
+ process: z.array(z.string().min(1)),
53
+ capabilityId: z.string().min(1),
54
+ runtimeEnvPriority: z.number().int().positive().optional(),
55
+ }),
56
+ paths: z.object({
57
+ deployTarget: z.enum(['project', 'home', 'mixed']),
58
+ artifacts: ArtifactPathsSchema,
59
+ kernelSkills: z.string().nullable(),
60
+ contextDiscovery: z.object({
61
+ agents: z.string().nullable(),
62
+ skills: z.string().nullable(),
63
+ rules: z.string().nullable(),
64
+ behaviors: z.string().nullable(),
65
+ }),
66
+ configFile: z.string().nullable(),
67
+ contextFiles: z.object({
68
+ aiwgMd: z.boolean(),
69
+ agentsMd: z.boolean(),
70
+ claudeMdHook: z.boolean(),
71
+ hookFile: z.string().nullable(),
72
+ contextFile: z.string().nullable(),
73
+ }),
74
+ }),
75
+ context: z.object({
76
+ startupFiles: z.array(z.string().min(1)),
77
+ precedence: z.array(z.string().min(1)),
78
+ loadMode: z.enum(['native-include', 'prose-directive', 'config-registration', 'unsupported']),
79
+ includeSyntax: z.string().nullable(),
80
+ configRegistration: z.object({ file: z.string().min(1), key: z.string().min(1) }).nullable(),
81
+ bootstrapTargets: z.array(z.string().min(1)),
82
+ maxContextBytes: z.number().int().positive().nullable(),
83
+ recommendedMaxLines: z.number().int().positive().nullable(),
84
+ nestedContext: z.boolean(),
85
+ support: z.enum(['supported', 'degraded', 'unsupported']),
86
+ verification: z.object({
87
+ method: z.string().min(1),
88
+ source: z.string().min(1),
89
+ lastVerified: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
90
+ }),
91
+ }),
92
+ smithPaths: z.object({
93
+ agents: z.string().nullable(),
94
+ commands: z.string().nullable(),
95
+ skills: z.string().nullable(),
96
+ rules: z.string().nullable(),
97
+ fileExtension: z.enum(['.md', '.json']),
98
+ configFile: z.string().nullable(),
99
+ aggregated: z.boolean(),
100
+ }),
101
+ skillNamespace: z.object({
102
+ deploymentGroup: z.enum(['deep-recursion', 'one-level', 'mcp-skip']),
103
+ pathType: z.enum(['project', 'home-dir']),
104
+ skillsBaseDir: z.string().min(1),
105
+ subdirLayout: z.boolean(),
106
+ maxNameLength: z.number().int().positive().optional(),
107
+ maxDescriptionLength: z.number().int().positive().optional(),
108
+ appendToDescription: z.string().min(1).optional(),
109
+ }),
110
+ adapters: z.object({
111
+ agentFormat: z.string().min(1),
112
+ hookBridge: z.string().nullable(),
113
+ mcpInjection: z.string().nullable(),
114
+ contextAggregation: z.string().nullable(),
115
+ ruleFormat: z.string().nullable(),
116
+ }),
117
+ capabilities: z.object({
118
+ matrixRef: z.string().nullable(),
119
+ nativeFeatures: z.record(z.boolean()),
120
+ emulation: z.record(z.string().nullable()),
121
+ }),
122
+ });
123
+ export const PROVIDER_IDS = [
124
+ 'claude',
125
+ 'codex',
126
+ 'copilot',
127
+ 'cursor',
128
+ 'factory',
129
+ 'hermes',
130
+ 'opencode',
131
+ 'openclaw',
132
+ 'openhuman',
133
+ 'warp',
134
+ 'windsurf',
135
+ 'generic',
136
+ ];
137
+ const VERIFIED_ON = '2026-07-21';
138
+ const CONTEXT_CONTRACTS = {
139
+ claude: {
140
+ startupFiles: ['CLAUDE.md', '.claude/CLAUDE.md'], precedence: ['provider/system', 'nested CLAUDE.md', 'root CLAUDE.md'],
141
+ loadMode: 'native-include', includeSyntax: '@WORKSPACE.md\n@AIWG.md', configRegistration: null,
142
+ bootstrapTargets: ['CLAUDE.md'], maxContextBytes: null, recommendedMaxLines: 200, nestedContext: true, support: 'supported',
143
+ verification: { method: 'official documentation: CLAUDE.md imports and InstructionsLoaded hook', source: 'https://code.claude.com/docs/en/memory', lastVerified: VERIFIED_ON },
144
+ },
145
+ codex: {
146
+ startupFiles: ['AGENTS.override.md', 'AGENTS.md'], precedence: ['provider/system', 'root-to-cwd AGENTS chain', 'nearest file'],
147
+ loadMode: 'prose-directive', includeSyntax: null, configRegistration: null,
148
+ bootstrapTargets: ['AGENTS.md'], maxContextBytes: 32 * 1024, recommendedMaxLines: null, nestedContext: true, support: 'supported',
149
+ verification: { method: 'official AGENTS.md discovery chain; no Markdown include claimed', source: 'https://developers.openai.com/codex/guides/agents-md', lastVerified: VERIFIED_ON },
150
+ },
151
+ copilot: {
152
+ startupFiles: ['.github/copilot-instructions.md', 'AGENTS.md', 'CLAUDE.md'], precedence: ['personal', 'repository', 'organization; CLI combines applicable files'],
153
+ loadMode: 'native-include', includeSyntax: '@WORKSPACE.md\n@AIWG.md', configRegistration: null,
154
+ bootstrapTargets: ['.github/copilot-instructions.md', 'AGENTS.md'], maxContextBytes: null, recommendedMaxLines: null, nestedContext: true, support: 'supported',
155
+ verification: { method: 'official Copilot CLI custom-instruction imports', source: 'https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/add-custom-instructions', lastVerified: VERIFIED_ON },
156
+ },
157
+ cursor: {
158
+ startupFiles: ['AGENTS.md', 'CLAUDE.md', '.cursor/rules/*.mdc'], precedence: ['provider/system', 'project rules', 'root AGENTS.md'],
159
+ loadMode: 'prose-directive', includeSyntax: null, configRegistration: null,
160
+ bootstrapTargets: ['AGENTS.md'], maxContextBytes: null, recommendedMaxLines: 500, nestedContext: false, support: 'supported',
161
+ verification: { method: 'official Cursor rules and CLI documentation', source: 'https://docs.cursor.com/context/rules-for-ai', lastVerified: VERIFIED_ON },
162
+ },
163
+ factory: {
164
+ startupFiles: ['AGENTS.md', '~/.factory/AGENTS.md'], precedence: ['provider/system', 'nearest AGENTS.md', 'root AGENTS.md', 'personal override'],
165
+ loadMode: 'prose-directive', includeSyntax: null, configRegistration: null,
166
+ bootstrapTargets: ['AGENTS.md'], maxContextBytes: null, recommendedMaxLines: 150, nestedContext: true, support: 'supported',
167
+ verification: { method: 'official Factory AGENTS.md discovery hierarchy', source: 'https://docs.factory.ai/cli/configuration/agents-md', lastVerified: VERIFIED_ON },
168
+ },
169
+ hermes: {
170
+ startupFiles: ['.hermes.md', 'AGENTS.md'], precedence: ['provider/system', '.hermes.md', 'AGENTS.md'],
171
+ loadMode: 'prose-directive', includeSyntax: null, configRegistration: null,
172
+ bootstrapTargets: ['.hermes.md', 'AGENTS.md'], maxContextBytes: null, recommendedMaxLines: 30, nestedContext: false, support: 'degraded',
173
+ verification: { method: 'AIWG Hermes adapter contract; on-demand artifact-read required', source: 'agentic/code/providers/capability-matrix.yaml', lastVerified: VERIFIED_ON },
174
+ },
175
+ opencode: {
176
+ startupFiles: ['AGENTS.md', 'CLAUDE.md', 'opencode.json#instructions'], precedence: ['provider/system', 'nearest AGENTS.md', 'CLAUDE compatibility', 'registered instructions'],
177
+ loadMode: 'config-registration', includeSyntax: null, configRegistration: { file: 'opencode.json', key: 'instructions' },
178
+ bootstrapTargets: ['AGENTS.md'], maxContextBytes: null, recommendedMaxLines: null, nestedContext: true, support: 'supported',
179
+ verification: { method: 'official OpenCode rules documentation and instructions array', source: 'https://opencode.ai/docs/rules/', lastVerified: VERIFIED_ON },
180
+ },
181
+ openclaw: {
182
+ startupFiles: ['~/.openclaw/config.yaml'], precedence: ['provider/system', 'home configuration'],
183
+ loadMode: 'unsupported', includeSyntax: null, configRegistration: null,
184
+ bootstrapTargets: [], maxContextBytes: null, recommendedMaxLines: null, nestedContext: false, support: 'degraded',
185
+ verification: { method: 'AIWG home-scope adapter contract; no verified project startup file', source: 'agentic/code/providers/capability-matrix.yaml', lastVerified: VERIFIED_ON },
186
+ },
187
+ openhuman: {
188
+ startupFiles: ['AGENTS.md'], precedence: ['provider/system', 'project AGENTS.md when host exposes it'],
189
+ loadMode: 'prose-directive', includeSyntax: null, configRegistration: null,
190
+ bootstrapTargets: ['AGENTS.md'], maxContextBytes: null, recommendedMaxLines: null, nestedContext: false, support: 'degraded',
191
+ verification: { method: 'AIWG mixed-scope adapter contract; host loading remains capability-dependent', source: 'agentic/code/providers/capability-matrix.yaml', lastVerified: VERIFIED_ON },
192
+ },
193
+ warp: {
194
+ startupFiles: ['WARP.md', 'AGENTS.md'], precedence: ['provider/system', 'subdirectory rule', 'root rule', 'global rule'],
195
+ loadMode: 'prose-directive', includeSyntax: null, configRegistration: null,
196
+ bootstrapTargets: ['WARP.md', 'AGENTS.md'], maxContextBytes: null, recommendedMaxLines: null, nestedContext: true, support: 'supported',
197
+ verification: { method: 'official Warp project rules documentation', source: 'https://docs.warp.dev/agent-platform/capabilities/rules/', lastVerified: VERIFIED_ON },
198
+ },
199
+ windsurf: {
200
+ startupFiles: ['AGENTS.md', '.windsurf/rules/*.md', '.devin/rules/*.md'], precedence: ['provider/system', 'Devin rules', 'Windsurf rules', 'AGENTS.md'],
201
+ loadMode: 'prose-directive', includeSyntax: null, configRegistration: null,
202
+ bootstrapTargets: ['AGENTS.md'], maxContextBytes: null, recommendedMaxLines: null, nestedContext: true, support: 'degraded',
203
+ verification: { method: 'AIWG Windsurf/Devin topology contract; provider-native rules retained', source: 'src/providers/provider-definitions.ts', lastVerified: VERIFIED_ON },
204
+ },
205
+ generic: {
206
+ startupFiles: [], precedence: ['host policy'], loadMode: 'unsupported', includeSyntax: null, configRegistration: null,
207
+ bootstrapTargets: [], maxContextBytes: null, recommendedMaxLines: null, nestedContext: false, support: 'unsupported',
208
+ verification: { method: 'No provider selected; no startup-file claim', source: 'src/providers/provider-definitions.ts', lastVerified: VERIFIED_ON },
209
+ },
210
+ };
211
+ const BUILT_IN_SEEDS = [
212
+ {
213
+ id: 'claude',
214
+ displayName: 'Claude Code',
215
+ aliases: ['claude-code'],
216
+ builtIn: true,
217
+ surfaces: { primary: 'claude-code', compatibility: ['claude'], precedence: ['.claude/', 'CLAUDE.md'], related: [] },
218
+ detection: {
219
+ env: ['CLAUDE_CODE_VERSION', 'ANTHROPIC_API_KEY'],
220
+ process: ['claude-code', 'claude'],
221
+ capabilityId: 'claude-code',
222
+ runtimeEnvPriority: 100,
223
+ },
224
+ paths: {
225
+ artifacts: {
226
+ agents: '.claude/agents',
227
+ commands: '.claude/commands',
228
+ skills: '.claude/.aiwg/skills',
229
+ rules: '.claude/rules',
230
+ behaviors: '.claude/hooks',
231
+ },
232
+ kernelSkills: '.claude/skills',
233
+ configFile: 'CLAUDE.md',
234
+ contextFiles: { aiwgMd: true, agentsMd: false, claudeMdHook: true, hookFile: null, contextFile: 'CLAUDE.md' },
235
+ },
236
+ smithPaths: {
237
+ agents: '.claude/agents',
238
+ commands: '.claude/commands',
239
+ skills: '.claude/skills',
240
+ rules: '.claude/rules',
241
+ fileExtension: '.md',
242
+ configFile: 'CLAUDE.md',
243
+ aggregated: false,
244
+ },
245
+ skillNamespace: {
246
+ deploymentGroup: 'deep-recursion',
247
+ pathType: 'project',
248
+ skillsBaseDir: '.claude/skills',
249
+ subdirLayout: true,
250
+ },
251
+ adapters: {
252
+ agentFormat: 'claude-markdown',
253
+ hookBridge: null,
254
+ mcpInjection: 'claude-code',
255
+ contextAggregation: 'claude-hook',
256
+ ruleFormat: 'markdown',
257
+ },
258
+ matrixRef: 'claude-code',
259
+ },
260
+ {
261
+ id: 'codex',
262
+ aliases: ['openai'],
263
+ builtIn: true,
264
+ surfaces: { primary: 'codex', compatibility: ['openai'], precedence: ['.agents/skills/', '.codex/'], related: [] },
265
+ detection: {
266
+ env: ['CODEX_SANDBOX', 'CODEX_HOME', 'CODEX_API_KEY', 'OPENAI_API_KEY'],
267
+ process: ['@openai/codex', 'codex'],
268
+ capabilityId: 'codex',
269
+ runtimeEnvPriority: 10,
270
+ },
271
+ paths: {
272
+ artifacts: {
273
+ agents: '.codex/agents',
274
+ commands: '.codex/commands',
275
+ skills: '.codex/.aiwg/skills',
276
+ rules: '.codex/rules',
277
+ behaviors: '.codex/rules',
278
+ },
279
+ kernelSkills: '.agents/skills',
280
+ contextDiscovery: {
281
+ agents: '.codex/agents',
282
+ skills: '.agents/skills',
283
+ rules: '.codex/rules',
284
+ behaviors: null,
285
+ },
286
+ configFile: 'AGENTS.md',
287
+ contextFiles: { aiwgMd: true, agentsMd: true, claudeMdHook: false, hookFile: null, contextFile: 'AGENTS.md' },
288
+ },
289
+ smithPaths: {
290
+ agents: '.codex/agents',
291
+ commands: '.codex/commands',
292
+ skills: '.codex/skills',
293
+ rules: '.codex/rules',
294
+ fileExtension: '.md',
295
+ configFile: 'AGENTS.md',
296
+ aggregated: false,
297
+ },
298
+ skillNamespace: {
299
+ deploymentGroup: 'deep-recursion',
300
+ pathType: 'home-dir',
301
+ skillsBaseDir: '.codex/skills',
302
+ maxNameLength: 100,
303
+ maxDescriptionLength: 500,
304
+ subdirLayout: true,
305
+ },
306
+ adapters: {
307
+ agentFormat: 'codex-markdown',
308
+ hookBridge: 'codex',
309
+ mcpInjection: 'codex',
310
+ contextAggregation: 'agents-md',
311
+ ruleFormat: 'markdown',
312
+ },
313
+ matrixRef: 'codex',
314
+ },
315
+ {
316
+ id: 'copilot',
317
+ aliases: ['github-copilot'],
318
+ builtIn: true,
319
+ surfaces: { primary: 'copilot', compatibility: ['github-copilot'], precedence: ['.github/'], related: [] },
320
+ detection: {
321
+ env: ['COPILOT_AGENT', 'GITHUB_COPILOT_TOKEN'],
322
+ process: ['copilot'],
323
+ capabilityId: 'copilot',
324
+ runtimeEnvPriority: 50,
325
+ },
326
+ paths: {
327
+ artifacts: {
328
+ agents: '.github/agents',
329
+ commands: '.github/commands',
330
+ skills: '.github/.aiwg/skills',
331
+ rules: '.github/copilot-rules',
332
+ behaviors: '.github/copilot-rules',
333
+ },
334
+ kernelSkills: '.github/skills',
335
+ contextDiscovery: {
336
+ agents: '.github/agents',
337
+ skills: '.github/.aiwg/skills',
338
+ rules: '.github/instructions',
339
+ behaviors: null,
340
+ },
341
+ configFile: 'copilot-instructions.md',
342
+ contextFiles: { aiwgMd: true, agentsMd: true, claudeMdHook: false, hookFile: null, contextFile: 'AGENTS.md' },
343
+ },
344
+ smithPaths: {
345
+ agents: '.github/agents',
346
+ commands: '.github/agents',
347
+ skills: '.github/skills',
348
+ rules: '.github/copilot-rules',
349
+ fileExtension: '.md',
350
+ configFile: 'copilot-instructions.md',
351
+ aggregated: false,
352
+ },
353
+ skillNamespace: {
354
+ deploymentGroup: 'deep-recursion',
355
+ pathType: 'project',
356
+ skillsBaseDir: '.github/skills',
357
+ subdirLayout: true,
358
+ },
359
+ adapters: {
360
+ agentFormat: 'copilot-markdown',
361
+ hookBridge: 'copilot',
362
+ mcpInjection: null,
363
+ contextAggregation: 'agents-md',
364
+ ruleFormat: 'markdown',
365
+ },
366
+ matrixRef: 'copilot',
367
+ },
368
+ {
369
+ id: 'cursor',
370
+ aliases: [],
371
+ builtIn: true,
372
+ surfaces: { primary: 'cursor', compatibility: [], precedence: ['AGENTS.md', '.cursor/rules/'], related: [] },
373
+ detection: {
374
+ env: ['CURSOR_TRACE_ID', 'CURSOR_VERSION'],
375
+ process: ['cursor'],
376
+ capabilityId: 'cursor',
377
+ runtimeEnvPriority: 20,
378
+ },
379
+ paths: {
380
+ artifacts: {
381
+ agents: '.cursor/agents',
382
+ commands: '.cursor/commands',
383
+ skills: '.cursor/.aiwg/skills',
384
+ rules: '.cursor/rules',
385
+ behaviors: '.cursor/rules',
386
+ },
387
+ kernelSkills: '.cursor/skills',
388
+ configFile: 'AGENTS.md',
389
+ contextFiles: { aiwgMd: true, agentsMd: true, claudeMdHook: false, hookFile: null, contextFile: 'AGENTS.md' },
390
+ },
391
+ smithPaths: {
392
+ agents: '.cursor/agents',
393
+ commands: '.cursor/commands',
394
+ skills: '.cursor/skills',
395
+ rules: '.cursor/rules',
396
+ fileExtension: '.json',
397
+ configFile: 'AGENTS.md',
398
+ aggregated: false,
399
+ },
400
+ skillNamespace: {
401
+ deploymentGroup: 'deep-recursion',
402
+ pathType: 'project',
403
+ skillsBaseDir: '.cursor/skills',
404
+ subdirLayout: true,
405
+ },
406
+ adapters: {
407
+ agentFormat: 'cursor-json',
408
+ hookBridge: null,
409
+ mcpInjection: 'cursor',
410
+ contextAggregation: 'agents-md',
411
+ ruleFormat: 'mdc',
412
+ },
413
+ matrixRef: 'cursor',
414
+ },
415
+ {
416
+ id: 'factory',
417
+ aliases: ['factory-ai'],
418
+ builtIn: true,
419
+ surfaces: { primary: 'factory', compatibility: ['factory-ai'], precedence: ['.factory/', 'AGENTS.md'], related: [] },
420
+ detection: {
421
+ env: ['FACTORY_AGENT_ID'],
422
+ process: ['factory'],
423
+ capabilityId: 'factory',
424
+ runtimeEnvPriority: 80,
425
+ },
426
+ paths: {
427
+ artifacts: {
428
+ agents: '.factory/droids',
429
+ commands: '.factory/commands',
430
+ skills: '.factory/.aiwg/skills',
431
+ rules: '.factory/rules',
432
+ behaviors: '.factory/rules',
433
+ },
434
+ kernelSkills: '.factory/skills',
435
+ configFile: 'AGENTS.md',
436
+ contextFiles: { aiwgMd: true, agentsMd: true, claudeMdHook: false, hookFile: null, contextFile: 'AGENTS.md' },
437
+ },
438
+ smithPaths: {
439
+ agents: '.factory/droids',
440
+ commands: '.factory/commands',
441
+ skills: '.factory/skills',
442
+ rules: '.factory/rules',
443
+ fileExtension: '.md',
444
+ configFile: 'AGENTS.md',
445
+ aggregated: false,
446
+ },
447
+ skillNamespace: {
448
+ deploymentGroup: 'deep-recursion',
449
+ pathType: 'project',
450
+ skillsBaseDir: '.factory/skills',
451
+ appendToDescription: 'Use when relevant to the task.',
452
+ subdirLayout: true,
453
+ },
454
+ adapters: {
455
+ agentFormat: 'factory-droid',
456
+ hookBridge: 'factory',
457
+ mcpInjection: 'factory',
458
+ contextAggregation: 'agents-md',
459
+ ruleFormat: 'markdown',
460
+ },
461
+ matrixRef: 'factory',
462
+ },
463
+ {
464
+ id: 'hermes',
465
+ aliases: [],
466
+ builtIn: true,
467
+ surfaces: { primary: 'hermes', compatibility: [], precedence: ['AGENTS.md', '.hermes.md', '~/.hermes/skills/'], related: [] },
468
+ detection: {
469
+ env: [],
470
+ process: ['hermes'],
471
+ capabilityId: 'hermes',
472
+ },
473
+ paths: {
474
+ artifacts: {
475
+ agents: null,
476
+ commands: null,
477
+ skills: '~/.hermes/.aiwg/skills',
478
+ rules: null,
479
+ behaviors: null,
480
+ },
481
+ kernelSkills: '~/.hermes/skills',
482
+ configFile: 'AGENTS.md',
483
+ contextFiles: { aiwgMd: true, agentsMd: true, claudeMdHook: false, hookFile: '.hermes.md', contextFile: 'AGENTS.md' },
484
+ },
485
+ smithPaths: {
486
+ agents: null,
487
+ commands: null,
488
+ skills: '~/.hermes/skills',
489
+ rules: null,
490
+ fileExtension: '.md',
491
+ configFile: 'AGENTS.md',
492
+ aggregated: false,
493
+ },
494
+ skillNamespace: {
495
+ deploymentGroup: 'mcp-skip',
496
+ pathType: 'home-dir',
497
+ skillsBaseDir: '.hermes/skills',
498
+ subdirLayout: false,
499
+ },
500
+ adapters: {
501
+ agentFormat: 'agents-md',
502
+ hookBridge: 'hermes',
503
+ mcpInjection: null,
504
+ contextAggregation: 'agents-md',
505
+ ruleFormat: 'agents-md-section',
506
+ },
507
+ matrixRef: 'hermes',
508
+ },
509
+ {
510
+ id: 'opencode',
511
+ aliases: [],
512
+ builtIn: true,
513
+ surfaces: { primary: 'opencode', compatibility: [], precedence: ['.opencode/', 'AGENTS.md'], related: [] },
514
+ detection: {
515
+ env: ['OPENCODE_VERSION'],
516
+ process: ['opencode'],
517
+ capabilityId: 'opencode',
518
+ runtimeEnvPriority: 90,
519
+ },
520
+ paths: {
521
+ artifacts: {
522
+ agents: '.opencode/agent',
523
+ commands: '.opencode/command',
524
+ skills: '.opencode/.aiwg/skill',
525
+ rules: '.opencode/rule',
526
+ behaviors: '.opencode/rule',
527
+ },
528
+ kernelSkills: '.opencode/skill',
529
+ configFile: 'AGENTS.md',
530
+ contextFiles: { aiwgMd: true, agentsMd: true, claudeMdHook: false, hookFile: null, contextFile: 'AGENTS.md' },
531
+ },
532
+ smithPaths: {
533
+ agents: null,
534
+ commands: '.opencode/command',
535
+ skills: '.opencode/skill',
536
+ rules: '.opencode/rule',
537
+ fileExtension: '.md',
538
+ configFile: 'AGENTS.md',
539
+ aggregated: false,
540
+ },
541
+ skillNamespace: {
542
+ deploymentGroup: 'deep-recursion',
543
+ pathType: 'project',
544
+ skillsBaseDir: '.opencode/skill',
545
+ subdirLayout: true,
546
+ },
547
+ adapters: {
548
+ agentFormat: 'opencode-markdown',
549
+ hookBridge: null,
550
+ mcpInjection: 'opencode',
551
+ contextAggregation: 'agents-md',
552
+ ruleFormat: 'markdown',
553
+ },
554
+ matrixRef: 'opencode',
555
+ },
556
+ {
557
+ id: 'openclaw',
558
+ aliases: [],
559
+ builtIn: true,
560
+ surfaces: { primary: 'openclaw', compatibility: [], precedence: ['~/.openclaw/'], related: [] },
561
+ detection: {
562
+ env: ['OPENCLAW_VERSION'],
563
+ process: ['openclaw'],
564
+ capabilityId: 'openclaw',
565
+ runtimeEnvPriority: 60,
566
+ },
567
+ paths: {
568
+ deployTarget: 'home',
569
+ artifacts: {
570
+ agents: '~/.openclaw/agents',
571
+ commands: '~/.openclaw/commands',
572
+ skills: '~/.openclaw/.aiwg/skills',
573
+ rules: '~/.openclaw/rules',
574
+ behaviors: '~/.openclaw/behaviors',
575
+ },
576
+ kernelSkills: '~/.openclaw/skills/aiwg',
577
+ configFile: 'AGENTS.md',
578
+ contextFiles: { aiwgMd: false, agentsMd: false, claudeMdHook: false, hookFile: null, contextFile: '~/.openclaw/config.yaml' },
579
+ },
580
+ smithPaths: {
581
+ agents: '~/.openclaw/agents',
582
+ commands: '~/.openclaw/commands',
583
+ skills: '~/.openclaw/skills',
584
+ rules: '~/.openclaw/rules',
585
+ fileExtension: '.md',
586
+ configFile: 'AGENTS.md',
587
+ aggregated: false,
588
+ },
589
+ skillNamespace: {
590
+ deploymentGroup: 'deep-recursion',
591
+ pathType: 'home-dir',
592
+ skillsBaseDir: '.openclaw/skills',
593
+ subdirLayout: true,
594
+ },
595
+ adapters: {
596
+ agentFormat: 'openclaw-markdown',
597
+ hookBridge: null,
598
+ mcpInjection: null,
599
+ contextAggregation: null,
600
+ ruleFormat: 'markdown',
601
+ },
602
+ matrixRef: 'openclaw',
603
+ },
604
+ {
605
+ id: 'openhuman',
606
+ aliases: ['tinyhumansai'],
607
+ builtIn: true,
608
+ surfaces: { primary: 'openhuman', compatibility: ['tinyhumansai'], precedence: ['~/.openhuman/skills/', 'AGENTS.md'], related: [] },
609
+ detection: {
610
+ env: ['OPENHUMAN_HOME', 'OPENHUMAN_CORE_TOKEN'],
611
+ process: ['openhuman'],
612
+ capabilityId: 'openhuman',
613
+ runtimeEnvPriority: 70,
614
+ },
615
+ paths: {
616
+ deployTarget: 'mixed',
617
+ artifacts: {
618
+ agents: null,
619
+ commands: null,
620
+ skills: '~/.openhuman/.aiwg/skills',
621
+ rules: '~/.openhuman/.aiwg/rules',
622
+ behaviors: null,
623
+ },
624
+ kernelSkills: '~/.openhuman/skills',
625
+ contextDiscovery: {
626
+ agents: '.agents/agents',
627
+ skills: '~/.openhuman/.aiwg/skills',
628
+ rules: '~/.openhuman/.aiwg/rules',
629
+ behaviors: null,
630
+ },
631
+ configFile: null,
632
+ contextFiles: { aiwgMd: false, agentsMd: false, claudeMdHook: false, hookFile: null, contextFile: 'AGENTS.md' },
633
+ },
634
+ smithPaths: {
635
+ agents: null,
636
+ commands: null,
637
+ skills: '~/.openhuman/skills',
638
+ rules: '~/.openhuman/.aiwg/rules',
639
+ fileExtension: '.md',
640
+ configFile: null,
641
+ aggregated: false,
642
+ },
643
+ skillNamespace: {
644
+ deploymentGroup: 'deep-recursion',
645
+ pathType: 'home-dir',
646
+ skillsBaseDir: '.openhuman/skills',
647
+ subdirLayout: true,
648
+ },
649
+ adapters: {
650
+ agentFormat: 'openhuman-agents-md',
651
+ hookBridge: null,
652
+ mcpInjection: null,
653
+ contextAggregation: 'agents-md',
654
+ ruleFormat: 'agents-md-section',
655
+ },
656
+ matrixRef: 'openhuman',
657
+ },
658
+ {
659
+ id: 'warp',
660
+ aliases: [],
661
+ builtIn: true,
662
+ surfaces: { primary: 'warp', compatibility: [], precedence: ['WARP.md', '.warp/'], related: [] },
663
+ detection: {
664
+ env: ['WARP_SESSION_ID', 'WARP_TERMINAL'],
665
+ process: ['warp'],
666
+ capabilityId: 'warp',
667
+ runtimeEnvPriority: 40,
668
+ },
669
+ paths: {
670
+ artifacts: {
671
+ agents: '.warp/agents',
672
+ commands: '.warp/commands',
673
+ skills: '.warp/.aiwg/skills',
674
+ rules: '.warp/rules',
675
+ behaviors: null,
676
+ },
677
+ kernelSkills: '.warp/skills',
678
+ configFile: 'WARP.md',
679
+ contextFiles: { aiwgMd: true, agentsMd: true, claudeMdHook: false, hookFile: 'AIWG-warp.md', contextFile: 'WARP.md' },
680
+ },
681
+ smithPaths: {
682
+ agents: '.warp/agents',
683
+ commands: '.warp/commands',
684
+ skills: '.warp/skills',
685
+ rules: '.warp/rules',
686
+ fileExtension: '.md',
687
+ configFile: 'WARP.md',
688
+ aggregated: true,
689
+ },
690
+ skillNamespace: {
691
+ deploymentGroup: 'deep-recursion',
692
+ pathType: 'project',
693
+ skillsBaseDir: '.warp/skills',
694
+ subdirLayout: true,
695
+ },
696
+ adapters: {
697
+ agentFormat: 'warp-markdown',
698
+ hookBridge: null,
699
+ mcpInjection: 'warp',
700
+ contextAggregation: 'warp-md',
701
+ ruleFormat: 'markdown',
702
+ },
703
+ matrixRef: 'warp',
704
+ },
705
+ {
706
+ id: 'windsurf',
707
+ aliases: ['devin-desktop', 'devin-local', 'cascade'],
708
+ builtIn: true,
709
+ surfaces: {
710
+ primary: 'windsurf',
711
+ compatibility: ['devin-desktop', 'devin-local', 'cascade'],
712
+ precedence: ['.devin/rules/', '.windsurf/rules/', 'AGENTS.md', '.windsurfrules'],
713
+ related: [
714
+ {
715
+ id: 'devin-desktop',
716
+ displayName: 'Devin Desktop',
717
+ relationship: 'same-provider',
718
+ deployable: true,
719
+ aliases: ['windsurf', 'cascade'],
720
+ paths: {
721
+ rules: ['.devin/rules/*.md', '.windsurf/rules/*.md'],
722
+ skills: [],
723
+ agentsMd: ['AGENTS.md', 'agents.md'],
724
+ legacy: ['.windsurfrules'],
725
+ },
726
+ notes: [
727
+ 'Devin Desktop is the renamed Windsurf local IDE surface; --provider windsurf remains the deployable compatibility id.',
728
+ '.devin/rules is preferred by Devin Desktop, but AIWG keeps .devin/ as ignored local provider output and currently emits the compatibility surface through .windsurf/ plus AGENTS.md.',
729
+ ],
730
+ },
731
+ {
732
+ id: 'devin-cli',
733
+ displayName: 'Devin CLI',
734
+ relationship: 'future-provider',
735
+ deployable: false,
736
+ aliases: [],
737
+ paths: {
738
+ rules: ['AGENTS.md', 'AGENTS.local.md', 'AGENT.md', '.windsurfrules', 'CLAUDE.md'],
739
+ skills: ['.devin/skills/<skill-name>/SKILL.md', '.windsurf/skills/<skill-name>/SKILL.md'],
740
+ agentsMd: ['AGENTS.md'],
741
+ legacy: ['.windsurfrules'],
742
+ },
743
+ notes: [
744
+ 'Devin CLI has distinct rules and skills surfaces and should not normalize to windsurf until a dedicated provider behavior issue adds writer support.',
745
+ ],
746
+ },
747
+ {
748
+ id: 'devin-product-skills',
749
+ displayName: 'Devin Product Skills',
750
+ relationship: 'companion-standard',
751
+ deployable: false,
752
+ aliases: [],
753
+ paths: {
754
+ rules: [],
755
+ skills: ['.agents/skills/<skill-name>/SKILL.md'],
756
+ agentsMd: [],
757
+ legacy: [],
758
+ },
759
+ notes: [
760
+ 'Devin product skills use the Agent Skills layout and are recorded here as a readable surface, not as current AIWG windsurf deploy output.',
761
+ ],
762
+ },
763
+ ],
764
+ },
765
+ detection: {
766
+ env: ['WINDSURF_VERSION'],
767
+ process: ['windsurf'],
768
+ capabilityId: 'windsurf',
769
+ runtimeEnvPriority: 30,
770
+ },
771
+ paths: {
772
+ artifacts: {
773
+ agents: '.windsurf/agents',
774
+ commands: '.windsurf/workflows',
775
+ skills: '.windsurf/.aiwg/skills',
776
+ rules: '.windsurf/rules',
777
+ behaviors: '.windsurf/rules',
778
+ },
779
+ kernelSkills: '.windsurf/skills',
780
+ configFile: '.windsurfrules',
781
+ contextFiles: { aiwgMd: true, agentsMd: true, claudeMdHook: false, hookFile: 'AIWG-windsurf.md', contextFile: 'AGENTS.md' },
782
+ },
783
+ smithPaths: {
784
+ agents: '.windsurf/agents',
785
+ commands: '.windsurf/workflows',
786
+ skills: '.windsurf/skills',
787
+ rules: '.windsurf/rules',
788
+ fileExtension: '.md',
789
+ configFile: '.windsurfrules',
790
+ aggregated: true,
791
+ },
792
+ skillNamespace: {
793
+ deploymentGroup: 'one-level',
794
+ pathType: 'project',
795
+ skillsBaseDir: '.windsurf/skills',
796
+ subdirLayout: false,
797
+ },
798
+ adapters: {
799
+ agentFormat: 'windsurf-markdown',
800
+ hookBridge: null,
801
+ mcpInjection: 'windsurf',
802
+ contextAggregation: 'agents-md',
803
+ ruleFormat: 'windsurf-rule',
804
+ },
805
+ matrixRef: 'windsurf',
806
+ },
807
+ {
808
+ id: 'generic',
809
+ displayName: 'Generic',
810
+ status: 'stable',
811
+ aliases: [],
812
+ builtIn: true,
813
+ surfaces: { primary: 'generic', compatibility: [], precedence: ['agents/', 'skills/', 'rules/'], related: [] },
814
+ detection: {
815
+ env: [],
816
+ process: [],
817
+ capabilityId: 'generic',
818
+ },
819
+ paths: {
820
+ deployTarget: 'project',
821
+ artifacts: {
822
+ agents: 'agents',
823
+ commands: 'commands',
824
+ skills: 'skills',
825
+ rules: 'rules',
826
+ behaviors: null,
827
+ },
828
+ kernelSkills: null,
829
+ configFile: 'README.md',
830
+ contextFiles: { aiwgMd: false, agentsMd: false, claudeMdHook: false, hookFile: null, contextFile: 'README.md' },
831
+ },
832
+ smithPaths: {
833
+ agents: 'agents',
834
+ commands: 'commands',
835
+ skills: 'skills',
836
+ rules: 'rules',
837
+ fileExtension: '.md',
838
+ configFile: 'README.md',
839
+ aggregated: false,
840
+ },
841
+ skillNamespace: {
842
+ deploymentGroup: 'deep-recursion',
843
+ pathType: 'project',
844
+ skillsBaseDir: 'skills',
845
+ subdirLayout: true,
846
+ },
847
+ adapters: {
848
+ agentFormat: 'generic-markdown',
849
+ hookBridge: null,
850
+ mcpInjection: null,
851
+ contextAggregation: null,
852
+ ruleFormat: 'markdown',
853
+ },
854
+ matrixRef: null,
855
+ },
856
+ ];
857
+ let cachedRegistry = null;
858
+ function buildDefinition(seed) {
859
+ const capabilities = seed.matrixRef ? getProviderCapabilities(seed.matrixRef) : undefined;
860
+ const contextDiscovery = seed.paths.contextDiscovery ?? {
861
+ agents: seed.paths.artifacts.agents,
862
+ skills: seed.paths.artifacts.skills,
863
+ rules: seed.paths.artifacts.rules,
864
+ behaviors: null,
865
+ };
866
+ const definition = {
867
+ ...seed,
868
+ displayName: seed.displayName ?? capabilities?.display_name ?? seed.id,
869
+ status: seed.status ?? capabilities?.status ?? 'experimental',
870
+ paths: {
871
+ ...seed.paths,
872
+ deployTarget: seed.paths.deployTarget ?? capabilities?.deploy_target ?? 'project',
873
+ contextDiscovery,
874
+ },
875
+ context: CONTEXT_CONTRACTS[seed.id],
876
+ capabilities: {
877
+ matrixRef: seed.matrixRef,
878
+ nativeFeatures: capabilities?.native_features ?? {},
879
+ emulation: capabilities?.emulation ?? {},
880
+ },
881
+ };
882
+ return ProviderDefinitionSchema.parse(definition);
883
+ }
884
+ function assertNoDuplicateAliases(definitions) {
885
+ const seen = new Map();
886
+ for (const definition of definitions) {
887
+ for (const candidate of [definition.id, ...definition.aliases]) {
888
+ const normalized = candidate.toLowerCase();
889
+ const existing = seen.get(normalized);
890
+ if (existing && existing !== definition.id) {
891
+ throw new Error(`Provider alias "${candidate}" is declared by both ${existing} and ${definition.id}`);
892
+ }
893
+ seen.set(normalized, definition.id);
894
+ }
895
+ }
896
+ }
897
+ export function listProviderDefinitions() {
898
+ if (!cachedRegistry) {
899
+ const definitions = BUILT_IN_SEEDS.map(buildDefinition);
900
+ assertNoDuplicateAliases(definitions);
901
+ cachedRegistry = new Map(definitions.map((definition) => [definition.id, definition]));
902
+ }
903
+ return PROVIDER_IDS.map((id) => {
904
+ const definition = cachedRegistry?.get(id);
905
+ if (!definition)
906
+ throw new Error(`Missing provider definition for ${id}`);
907
+ return definition;
908
+ });
909
+ }
910
+ export function loadProviderDefinitionRegistry() {
911
+ listProviderDefinitions();
912
+ return cachedRegistry;
913
+ }
914
+ export function getProviderDefinition(provider) {
915
+ const normalized = normalizeProviderDefinitionId(provider);
916
+ if (!normalized)
917
+ return undefined;
918
+ return loadProviderDefinitionRegistry().get(normalized);
919
+ }
920
+ export function expandProviderHomePath(providerPath) {
921
+ if (!providerPath)
922
+ return '';
923
+ if (providerPath === '~')
924
+ return homedir();
925
+ if (providerPath.startsWith('~/'))
926
+ return join(homedir(), providerPath.slice(2));
927
+ return providerPath;
928
+ }
929
+ export function getProviderArtifactPathStrings(provider) {
930
+ const definition = getProviderDefinition(provider);
931
+ if (!definition)
932
+ return undefined;
933
+ return {
934
+ agents: expandProviderHomePath(definition.paths.artifacts.agents),
935
+ commands: expandProviderHomePath(definition.paths.artifacts.commands),
936
+ skills: expandProviderHomePath(definition.paths.artifacts.skills),
937
+ rules: expandProviderHomePath(definition.paths.artifacts.rules),
938
+ behaviors: expandProviderHomePath(definition.paths.artifacts.behaviors),
939
+ };
940
+ }
941
+ export function getProviderContextDiscoveryPathStrings(provider) {
942
+ const definition = getProviderDefinition(provider);
943
+ if (!definition)
944
+ return undefined;
945
+ return {
946
+ agents: expandProviderHomePath(definition.paths.contextDiscovery.agents),
947
+ skills: expandProviderHomePath(definition.paths.contextDiscovery.skills),
948
+ rules: expandProviderHomePath(definition.paths.contextDiscovery.rules),
949
+ behaviors: expandProviderHomePath(definition.paths.contextDiscovery.behaviors),
950
+ };
951
+ }
952
+ export function getProviderKernelSkillPath(provider) {
953
+ const definition = getProviderDefinition(provider);
954
+ return expandProviderHomePath(definition?.paths.kernelSkills ?? null);
955
+ }
956
+ export function resolveProviderPathValue(providerPath, projectPath) {
957
+ const expandedPath = expandProviderHomePath(providerPath);
958
+ if (!expandedPath)
959
+ return '';
960
+ if (expandedPath.startsWith('/'))
961
+ return expandedPath;
962
+ return join(projectPath, expandedPath);
963
+ }
964
+ export function normalizeProviderDefinitionId(provider) {
965
+ const normalized = provider?.trim().toLowerCase();
966
+ if (!normalized)
967
+ return null;
968
+ for (const definition of listProviderDefinitions()) {
969
+ if (definition.id === normalized || definition.aliases.includes(normalized))
970
+ return definition.id;
971
+ }
972
+ return null;
973
+ }
974
+ export function validateProviderDefinitionRegistry() {
975
+ return listProviderDefinitions();
976
+ }
977
+ //# sourceMappingURL=provider-definitions.js.map