@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/README.md +21 -1
  2. package/bin/aiwg.mjs +349 -0
  3. package/dist/src/a2a/agent-card.js +145 -0
  4. package/dist/src/a2a/client.js +411 -0
  5. package/dist/src/a2a/hitl-cli.js +171 -0
  6. package/dist/src/a2a/hitl-driver.js +370 -0
  7. package/dist/src/a2a/hitl.js +181 -0
  8. package/dist/src/a2a/http.js +193 -0
  9. package/dist/src/a2a/jcs.js +128 -0
  10. package/dist/src/a2a/jws.js +187 -0
  11. package/dist/src/a2a/types.js +24 -0
  12. package/dist/src/a2a/webhook.js +240 -0
  13. package/dist/src/activity-log/cli.js +348 -0
  14. package/dist/src/activity-log/parser.js +81 -0
  15. package/dist/src/activity-log/types.js +50 -0
  16. package/dist/src/agents/agent-deployer.js +367 -0
  17. package/dist/src/agents/agent-packager.js +271 -0
  18. package/dist/src/agents/agent-validator.js +271 -0
  19. package/dist/src/agents/grounding/knowledge-base.js +161 -0
  20. package/dist/src/agents/grounding/types.js +12 -0
  21. package/dist/src/agents/index.js +10 -0
  22. package/dist/src/agents/packaged-agent-inventory.js +75 -0
  23. package/dist/src/agents/types.js +7 -0
  24. package/dist/src/api/index.d.ts +10 -0
  25. package/dist/src/api/index.js +10 -0
  26. package/dist/src/artifacts/address-parser.js +73 -0
  27. package/dist/src/artifacts/audit/cli.js +183 -0
  28. package/dist/src/artifacts/audit/drift.js +122 -0
  29. package/dist/src/artifacts/audit/types.js +12 -0
  30. package/dist/src/artifacts/backends/graphology-backend.js +160 -0
  31. package/dist/src/artifacts/backends/json-backend.js +129 -0
  32. package/dist/src/artifacts/backends/sqlite-backend.js +199 -0
  33. package/dist/src/artifacts/browser-export.js +622 -0
  34. package/dist/src/artifacts/capability-resolver.js +94 -0
  35. package/dist/src/artifacts/checksum-manifest.js +91 -0
  36. package/dist/src/artifacts/citation-parser.js +162 -0
  37. package/dist/src/artifacts/cli.js +1462 -0
  38. package/dist/src/artifacts/corpus-tools/citation-densify.js +311 -0
  39. package/dist/src/artifacts/corpus-tools/cli.js +393 -0
  40. package/dist/src/artifacts/corpus-tools/corpus-graph.js +225 -0
  41. package/dist/src/artifacts/corpus-tools/curator.js +186 -0
  42. package/dist/src/artifacts/corpus-tools/discovery-log.js +70 -0
  43. package/dist/src/artifacts/corpus-tools/funder-network.js +141 -0
  44. package/dist/src/artifacts/corpus-tools/induction-audit.js +233 -0
  45. package/dist/src/artifacts/corpus-tools/integrity-scan.js +202 -0
  46. package/dist/src/artifacts/corpus-tools/profile-communities.js +166 -0
  47. package/dist/src/artifacts/corpus-tools/profile-edges.js +72 -0
  48. package/dist/src/artifacts/corpus-tools/profile-embed.js +113 -0
  49. package/dist/src/artifacts/corpus-tools/profile-generate-fm.js +167 -0
  50. package/dist/src/artifacts/corpus-tools/profile-generate.js +181 -0
  51. package/dist/src/artifacts/corpus-tools/profile-metrics.js +98 -0
  52. package/dist/src/artifacts/corpus-tools/profile-status.js +86 -0
  53. package/dist/src/artifacts/corpus-tools/profile-temporal.js +139 -0
  54. package/dist/src/artifacts/corpus-tools/radar-init.js +93 -0
  55. package/dist/src/artifacts/corpus-tools/radar-report.js +118 -0
  56. package/dist/src/artifacts/corpus-tools/radar-shared.js +189 -0
  57. package/dist/src/artifacts/corpus-tools/radar-status.js +68 -0
  58. package/dist/src/artifacts/corpus-tools/sidecar-lint.js +233 -0
  59. package/dist/src/artifacts/corpus-tools/sidecar-repair.js +277 -0
  60. package/dist/src/artifacts/corpus-tools/snapshot.js +591 -0
  61. package/dist/src/artifacts/corpus-tools/source-types.js +164 -0
  62. package/dist/src/artifacts/corpus-tools/vision-extract.js +243 -0
  63. package/dist/src/artifacts/corpus-views/build.js +126 -0
  64. package/dist/src/artifacts/corpus-views/corpus-config.js +124 -0
  65. package/dist/src/artifacts/corpus-views/ref-parser.js +437 -0
  66. package/dist/src/artifacts/corpus-views/renderers.js +353 -0
  67. package/dist/src/artifacts/corpus-views/taxonomies.js +131 -0
  68. package/dist/src/artifacts/dep-graph.js +173 -0
  69. package/dist/src/artifacts/discover-facets.js +375 -0
  70. package/dist/src/artifacts/embedding-index.js +354 -0
  71. package/dist/src/artifacts/enrichment/cli.js +240 -0
  72. package/dist/src/artifacts/enrichment/prompt.js +47 -0
  73. package/dist/src/artifacts/enrichment/store.js +90 -0
  74. package/dist/src/artifacts/enrichment/types.js +12 -0
  75. package/dist/src/artifacts/fortemi-core-query-adapter.js +475 -0
  76. package/dist/src/artifacts/fortemi-core-sync.js +251 -0
  77. package/dist/src/artifacts/fortemi-shard-export.js +44 -0
  78. package/dist/src/artifacts/fulltext.js +108 -0
  79. package/dist/src/artifacts/graph-backend.js +51 -0
  80. package/dist/src/artifacts/graph-query.js +247 -0
  81. package/dist/src/artifacts/hybrid-query.js +225 -0
  82. package/dist/src/artifacts/index-builder.js +1089 -0
  83. package/dist/src/artifacts/index-reader.js +112 -0
  84. package/dist/src/artifacts/index-status.js +193 -0
  85. package/dist/src/artifacts/legacy-index-migration.js +169 -0
  86. package/dist/src/artifacts/move.js +154 -0
  87. package/dist/src/artifacts/operational-state.js +239 -0
  88. package/dist/src/artifacts/prebuilt-build-lock.js +49 -0
  89. package/dist/src/artifacts/query-engine.js +1955 -0
  90. package/dist/src/artifacts/source-graph.js +529 -0
  91. package/dist/src/artifacts/stats.js +169 -0
  92. package/dist/src/artifacts/types.js +606 -0
  93. package/dist/src/artifacts/views/cli.js +293 -0
  94. package/dist/src/artifacts/views/definition.js +170 -0
  95. package/dist/src/artifacts/views/store.js +149 -0
  96. package/dist/src/artifacts/views/types.js +8 -0
  97. package/dist/src/artifacts/watcher.js +255 -0
  98. package/dist/src/catalog/builtin-models.json +636 -0
  99. package/dist/src/catalog/cli.js +228 -0
  100. package/dist/src/catalog/cli.mjs +289 -0
  101. package/dist/src/catalog/index.js +15 -0
  102. package/dist/src/catalog/loader.js +217 -0
  103. package/dist/src/catalog/loader.mjs +251 -0
  104. package/dist/src/catalog/sources.json +41 -0
  105. package/dist/src/catalog/types.js +8 -0
  106. package/dist/src/channel/manager.mjs +504 -0
  107. package/dist/src/cli/agent-spawn.js +178 -0
  108. package/dist/src/cli/cli-extension-loader.js +245 -0
  109. package/dist/src/cli/command-log.js +275 -0
  110. package/dist/src/cli/config-loader.js +232 -0
  111. package/dist/src/cli/env.js +82 -0
  112. package/dist/src/cli/errors.js +150 -0
  113. package/dist/src/cli/find-package-root.js +40 -0
  114. package/dist/src/cli/git-hooks.js +250 -0
  115. package/dist/src/cli/handlers/agentcard.js +206 -0
  116. package/dist/src/cli/handlers/artifacts.js +76 -0
  117. package/dist/src/cli/handlers/best-practices-audit.js +280 -0
  118. package/dist/src/cli/handlers/cockpit.js +137 -0
  119. package/dist/src/cli/handlers/command-log.js +37 -0
  120. package/dist/src/cli/handlers/daemon.js +59 -0
  121. package/dist/src/cli/handlers/diagnose.js +300 -0
  122. package/dist/src/cli/handlers/execution-mode.js +105 -0
  123. package/dist/src/cli/handlers/feedback.js +341 -0
  124. package/dist/src/cli/handlers/help.js +147 -0
  125. package/dist/src/cli/handlers/index.js +302 -0
  126. package/dist/src/cli/handlers/init.js +179 -0
  127. package/dist/src/cli/handlers/install.js +129 -0
  128. package/dist/src/cli/handlers/issues.js +46 -0
  129. package/dist/src/cli/handlers/lint.js +42 -0
  130. package/dist/src/cli/handlers/local-executor.js +315 -0
  131. package/dist/src/cli/handlers/marketplace.js +168 -0
  132. package/dist/src/cli/handlers/mc.js +1010 -0
  133. package/dist/src/cli/handlers/models.js +352 -0
  134. package/dist/src/cli/handlers/packages.js +155 -0
  135. package/dist/src/cli/handlers/ralph-launcher.js +717 -0
  136. package/dist/src/cli/handlers/ralph.js +575 -0
  137. package/dist/src/cli/handlers/refresh.js +432 -0
  138. package/dist/src/cli/handlers/regenerate.js +336 -0
  139. package/dist/src/cli/handlers/repo-access.js +109 -0
  140. package/dist/src/cli/handlers/run.js +165 -0
  141. package/dist/src/cli/handlers/runtime-info.js +301 -0
  142. package/dist/src/cli/handlers/sandbox.js +197 -0
  143. package/dist/src/cli/handlers/scaffolding.js +149 -0
  144. package/dist/src/cli/handlers/script-runner.js +121 -0
  145. package/dist/src/cli/handlers/sdlc-accelerate.js +148 -0
  146. package/dist/src/cli/handlers/serve.js +1835 -0
  147. package/dist/src/cli/handlers/session.js +348 -0
  148. package/dist/src/cli/handlers/setup.js +440 -0
  149. package/dist/src/cli/handlers/skill-lint.js +367 -0
  150. package/dist/src/cli/handlers/skill-usage.js +74 -0
  151. package/dist/src/cli/handlers/steward.js +567 -0
  152. package/dist/src/cli/handlers/subcommands.js +1702 -0
  153. package/dist/src/cli/handlers/team.js +337 -0
  154. package/dist/src/cli/handlers/types.js +11 -0
  155. package/dist/src/cli/handlers/use.js +2772 -0
  156. package/dist/src/cli/handlers/utilities.js +703 -0
  157. package/dist/src/cli/handlers/version.js +134 -0
  158. package/dist/src/cli/handlers/workspace-context.js +93 -0
  159. package/dist/src/cli/handlers/workspace.js +126 -0
  160. package/dist/src/cli/help-generator.js +178 -0
  161. package/dist/src/cli/hooks/builtin/activity-log-hook.js +126 -0
  162. package/dist/src/cli/hooks/executor.js +96 -0
  163. package/dist/src/cli/hooks/index.js +15 -0
  164. package/dist/src/cli/hooks/registry.js +143 -0
  165. package/dist/src/cli/hooks/types.js +13 -0
  166. package/dist/src/cli/log.js +492 -0
  167. package/dist/src/cli/project-isolation/detect.js +70 -0
  168. package/dist/src/cli/project-isolation/index.js +7 -0
  169. package/dist/src/cli/project-isolation/signals.js +17 -0
  170. package/dist/src/cli/project-isolation/warning.js +102 -0
  171. package/dist/src/cli/prompt-utils.js +155 -0
  172. package/dist/src/cli/provider-deployment-plan.js +126 -0
  173. package/dist/src/cli/provider-resolution.js +119 -0
  174. package/dist/src/cli/router.js +305 -0
  175. package/dist/src/cli/scope-resolver.js +392 -0
  176. package/dist/src/cli/skill-usage.js +616 -0
  177. package/dist/src/cli/ui.js +224 -0
  178. package/dist/src/cli/watch-service.js +203 -0
  179. package/dist/src/cli/workflow-orchestrator.js +478 -0
  180. package/dist/src/cli/workspace-signals.js +321 -0
  181. package/dist/src/community/footer.js +14 -0
  182. package/dist/src/community/links.js +123 -0
  183. package/dist/src/community/milestones.js +46 -0
  184. package/dist/src/community/nudge-policy.js +93 -0
  185. package/dist/src/config/aiwg-config.js +883 -0
  186. package/dist/src/config/cli.js +703 -0
  187. package/dist/src/config/gitignore.js +156 -0
  188. package/dist/src/config/project-artifacts.js +76 -0
  189. package/dist/src/config/user-config.js +428 -0
  190. package/dist/src/config/user-registry.js +127 -0
  191. package/dist/src/config/workspace.js +276 -0
  192. package/dist/src/contributors/detect.js +39 -0
  193. package/dist/src/contributors/discover.js +172 -0
  194. package/dist/src/contributors/heuristic.js +186 -0
  195. package/dist/src/contributors/index.js +11 -0
  196. package/dist/src/contributors/types.js +13 -0
  197. package/dist/src/contributors/validation.js +116 -0
  198. package/dist/src/data/community.schema.json +43 -0
  199. package/dist/src/data/community.yaml +16 -0
  200. package/dist/src/extensions/capability-index.js +270 -0
  201. package/dist/src/extensions/claude-hooks-installer.js +268 -0
  202. package/dist/src/extensions/commands/definitions.js +3485 -0
  203. package/dist/src/extensions/deployment-registration.js +463 -0
  204. package/dist/src/extensions/index.js +22 -0
  205. package/dist/src/extensions/loader.js +132 -0
  206. package/dist/src/extensions/managed-marker.js +100 -0
  207. package/dist/src/extensions/manifest.js +196 -0
  208. package/dist/src/extensions/project-local-activity.js +114 -0
  209. package/dist/src/extensions/project-local-discovery.js +261 -0
  210. package/dist/src/extensions/project-local-doctor.js +281 -0
  211. package/dist/src/extensions/project-local-gitignore.js +176 -0
  212. package/dist/src/extensions/project-local-paths.js +121 -0
  213. package/dist/src/extensions/project-local-promote.js +218 -0
  214. package/dist/src/extensions/project-local-remove.js +373 -0
  215. package/dist/src/extensions/project-local-scaffold.js +252 -0
  216. package/dist/src/extensions/project-quickref.js +291 -0
  217. package/dist/src/extensions/registry.js +368 -0
  218. package/dist/src/extensions/shadow-resolver.js +271 -0
  219. package/dist/src/extensions/types.js +86 -0
  220. package/dist/src/extensions/upstream-registry.js +195 -0
  221. package/dist/src/extensions/validation.js +631 -0
  222. package/dist/src/features/catalog.js +88 -0
  223. package/dist/src/features/cli.js +197 -0
  224. package/dist/src/features/installer.js +57 -0
  225. package/dist/src/features/paths.js +14 -0
  226. package/dist/src/features/runtime.js +21 -0
  227. package/dist/src/features/status.js +134 -0
  228. package/dist/src/hooks/laziness-detection.js +532 -0
  229. package/dist/src/intake/git-history-analyzer.js +486 -0
  230. package/dist/src/intake/index.js +9 -0
  231. package/dist/src/issues/cli.js +327 -0
  232. package/dist/src/issues/index.js +5 -0
  233. package/dist/src/issues/live.js +154 -0
  234. package/dist/src/issues/local.js +666 -0
  235. package/dist/src/issues/sync.js +143 -0
  236. package/dist/src/issues/types.js +2 -0
  237. package/dist/src/issues/workflows.js +164 -0
  238. package/dist/src/kb/cli.js +173 -0
  239. package/dist/src/lint/cli.js +171 -0
  240. package/dist/src/lint/loader.js +225 -0
  241. package/dist/src/lint/reporters.js +141 -0
  242. package/dist/src/lint/runner.js +364 -0
  243. package/dist/src/lint/types.js +10 -0
  244. package/dist/src/marketplace/cache.js +110 -0
  245. package/dist/src/marketplace/identifier.js +63 -0
  246. package/dist/src/marketplace/registry.js +36 -0
  247. package/dist/src/marketplace/sources/clawhub.js +53 -0
  248. package/dist/src/marketplace/sources/git.js +45 -0
  249. package/dist/src/marketplace/types.js +9 -0
  250. package/dist/src/mcp/adapters/codex-runtime.js +224 -0
  251. package/dist/src/mcp/cli.mjs +1197 -0
  252. package/dist/src/mcp/elicitation.mjs +149 -0
  253. package/dist/src/mcp/helpers.mjs +287 -0
  254. package/dist/src/mcp/index.mjs +11 -0
  255. package/dist/src/mcp/profiles.js +263 -0
  256. package/dist/src/mcp/profiles.mjs +360 -0
  257. package/dist/src/mcp/registry.js +376 -0
  258. package/dist/src/mcp/registry.mjs +387 -0
  259. package/dist/src/mcp/server.mjs +633 -0
  260. package/dist/src/mcp/test-simple.mjs +271 -0
  261. package/dist/src/mcp/tools/command-run.mjs +101 -0
  262. package/dist/src/mcp/tools/discovery.mjs +291 -0
  263. package/dist/src/mcp/tools/interaction.mjs +87 -0
  264. package/dist/src/mcp/tools/orchestration.mjs +320 -0
  265. package/dist/src/mcp/tools/subsystems.mjs +640 -0
  266. package/dist/src/memory/cli.js +166 -0
  267. package/dist/src/memory/project-registry.js +282 -0
  268. package/dist/src/metrics/artifact-metrics.js +184 -0
  269. package/dist/src/metrics/context-budget.js +174 -0
  270. package/dist/src/metrics/token-counter.js +133 -0
  271. package/dist/src/models/config-loader.js +228 -0
  272. package/dist/src/models/index.js +22 -0
  273. package/dist/src/models/model-capabilities.v1.json +120 -0
  274. package/dist/src/models/model-catalog.v1.json +96 -0
  275. package/dist/src/models/model-discovery.js +521 -0
  276. package/dist/src/models/provider-models.js +73 -0
  277. package/dist/src/models/provider-policy.js +273 -0
  278. package/dist/src/models/resolver.js +245 -0
  279. package/dist/src/models/router.js +70 -0
  280. package/dist/src/models/types.js +8 -0
  281. package/dist/src/models/wrapper-deployment.js +178 -0
  282. package/dist/src/models/wrapper-route.js +54 -0
  283. package/dist/src/ops/cli.js +268 -0
  284. package/dist/src/ops/registry.js +623 -0
  285. package/dist/src/packages/adapters/clawhub.js +113 -0
  286. package/dist/src/packages/adapters/git.js +153 -0
  287. package/dist/src/packages/adapters/gitea.js +93 -0
  288. package/dist/src/packages/adapters/github.js +69 -0
  289. package/dist/src/packages/adapters/local-cache.js +89 -0
  290. package/dist/src/packages/package-registry.js +143 -0
  291. package/dist/src/packages/registry.js +238 -0
  292. package/dist/src/packages/types.js +11 -0
  293. package/dist/src/plugin/cross-framework-ops.js +475 -0
  294. package/dist/src/plugin/framework-config-loader.js +235 -0
  295. package/dist/src/plugin/framework-detector.js +186 -0
  296. package/dist/src/plugin/framework-isolator.js +341 -0
  297. package/dist/src/plugin/framework-migration.js +371 -0
  298. package/dist/src/plugin/metadata-validator.js +906 -0
  299. package/dist/src/plugin/plugin-installer.js +436 -0
  300. package/dist/src/plugin/plugin-status.js +369 -0
  301. package/dist/src/plugin/plugin-uninstaller.js +473 -0
  302. package/dist/src/plugin/registry-validator.js +344 -0
  303. package/dist/src/plugin/skill-command-translator.js +415 -0
  304. package/dist/src/plugin/workspace-creator.js +189 -0
  305. package/dist/src/plugin/workspace-migrator.js +821 -0
  306. package/dist/src/policy/authorization.js +390 -0
  307. package/dist/src/policy/repo-access.js +215 -0
  308. package/dist/src/provenance/cli.js +16 -0
  309. package/dist/src/providers/capability-matrix.js +300 -0
  310. package/dist/src/providers/capability-matrix.yaml +514 -0
  311. package/dist/src/providers/provider-definitions.js +977 -0
  312. package/dist/src/providers/provider-definitions.mjs +159 -0
  313. package/dist/src/providers/provider-inventory.js +169 -0
  314. package/dist/src/quality/feedback-ab.js +174 -0
  315. package/dist/src/quality/feedback-collector.js +176 -0
  316. package/dist/src/quality/feedback-tracker.js +123 -0
  317. package/dist/src/quality/patterns/adr.json +24 -0
  318. package/dist/src/quality/patterns/sad.json +24 -0
  319. package/dist/src/quality/patterns/test-plan.json +24 -0
  320. package/dist/src/quality/patterns/use-case.json +24 -0
  321. package/dist/src/quality/scoring.js +157 -0
  322. package/dist/src/reflections/cli.js +15 -0
  323. package/dist/src/release/plan.js +139 -0
  324. package/dist/src/research/cache/manager.js +227 -0
  325. package/dist/src/research/clients/arxiv.js +156 -0
  326. package/dist/src/research/clients/base.js +197 -0
  327. package/dist/src/research/clients/crossref.js +112 -0
  328. package/dist/src/research/clients/semantic-scholar.js +126 -0
  329. package/dist/src/research/clients/unpaywall.js +87 -0
  330. package/dist/src/research/index.js +14 -0
  331. package/dist/src/research/query-cli.js +336 -0
  332. package/dist/src/research/services/acquisition.js +313 -0
  333. package/dist/src/research/services/archival.js +225 -0
  334. package/dist/src/research/services/citation.js +279 -0
  335. package/dist/src/research/services/discovery.js +243 -0
  336. package/dist/src/research/services/documentation.js +269 -0
  337. package/dist/src/research/services/index.js +14 -0
  338. package/dist/src/research/services/provenance.js +279 -0
  339. package/dist/src/research/services/quality.js +370 -0
  340. package/dist/src/research/services/types.js +7 -0
  341. package/dist/src/research/storage-cli.js +20 -0
  342. package/dist/src/research/types.js +47 -0
  343. package/dist/src/resources/index.d.ts +2 -0
  344. package/dist/src/resources/index.js +2 -0
  345. package/dist/src/resources/web-release.d.ts +89 -0
  346. package/dist/src/resources/web-release.js +882 -0
  347. package/dist/src/rlm/cache/cli.js +162 -0
  348. package/dist/src/rlm/cache/hash.js +35 -0
  349. package/dist/src/rlm/cache/store.js +170 -0
  350. package/dist/src/rlm/cache/types.js +8 -0
  351. package/dist/src/rlm/cli.js +650 -0
  352. package/dist/src/serve/a2a-terminal-observer.js +120 -0
  353. package/dist/src/serve/agent-router.js +205 -0
  354. package/dist/src/serve/dispatch-router.js +171 -0
  355. package/dist/src/serve/executor-registry.js +715 -0
  356. package/dist/src/serve/mission-conductor.js +177 -0
  357. package/dist/src/serve/orchestrator-adapter.js +113 -0
  358. package/dist/src/serve/orchestrator-override.js +94 -0
  359. package/dist/src/serve/orchestrator-pty.js +133 -0
  360. package/dist/src/serve/pty-bridge.js +799 -0
  361. package/dist/src/serve/sandbox-registry.js +832 -0
  362. package/dist/src/serve/screen-reader.js +228 -0
  363. package/dist/src/serve/stack-adapters.js +68 -0
  364. package/dist/src/serve/telemetry.js +143 -0
  365. package/dist/src/skills/adapters/clawhub.js +250 -0
  366. package/dist/src/skills/adapters/local.js +335 -0
  367. package/dist/src/skills/adapters/openclaw.js +316 -0
  368. package/dist/src/skills/cli.js +334 -0
  369. package/dist/src/skills/registry.js +117 -0
  370. package/dist/src/skills/run.js +259 -0
  371. package/dist/src/skills/runtime.js +94 -0
  372. package/dist/src/skills/types.js +10 -0
  373. package/dist/src/smiths/agentsmith/demo.js +116 -0
  374. package/dist/src/smiths/agentsmith/examples.js +300 -0
  375. package/dist/src/smiths/agentsmith/generator.js +503 -0
  376. package/dist/src/smiths/agentsmith/index.js +11 -0
  377. package/dist/src/smiths/agentsmith/types.js +8 -0
  378. package/dist/src/smiths/commandsmith/example.js +220 -0
  379. package/dist/src/smiths/commandsmith/generator.js +288 -0
  380. package/dist/src/smiths/commandsmith/index.js +41 -0
  381. package/dist/src/smiths/commandsmith/templates.js +296 -0
  382. package/dist/src/smiths/commandsmith/types.js +7 -0
  383. package/dist/src/smiths/context-pipeline/aiwg-md.js +104 -0
  384. package/dist/src/smiths/context-pipeline/allowlist.js +195 -0
  385. package/dist/src/smiths/context-pipeline/claude-hook.js +127 -0
  386. package/dist/src/smiths/context-pipeline/discovery.js +187 -0
  387. package/dist/src/smiths/context-pipeline/external-links-section.js +49 -0
  388. package/dist/src/smiths/context-pipeline/finalization.js +147 -0
  389. package/dist/src/smiths/context-pipeline/generator.js +477 -0
  390. package/dist/src/smiths/context-pipeline/index.js +30 -0
  391. package/dist/src/smiths/context-pipeline/legacy-inject.js +103 -0
  392. package/dist/src/smiths/context-pipeline/managed-hook.js +95 -0
  393. package/dist/src/smiths/context-pipeline/overflow.js +212 -0
  394. package/dist/src/smiths/context-pipeline/parallelism-section.js +94 -0
  395. package/dist/src/smiths/context-pipeline/provider-policy.js +64 -0
  396. package/dist/src/smiths/context-pipeline/sanitizer.js +93 -0
  397. package/dist/src/smiths/context-pipeline/types.js +23 -0
  398. package/dist/src/smiths/context-pipeline/workspace-context.js +988 -0
  399. package/dist/src/smiths/hook-bridge/codex-translator.js +129 -0
  400. package/dist/src/smiths/hook-bridge/copilot-translator.js +64 -0
  401. package/dist/src/smiths/hook-bridge/factory-translator.js +43 -0
  402. package/dist/src/smiths/hook-bridge/hermes-translator.js +88 -0
  403. package/dist/src/smiths/hook-bridge/index.js +79 -0
  404. package/dist/src/smiths/hook-bridge/loader.js +116 -0
  405. package/dist/src/smiths/hook-bridge/shim.js +89 -0
  406. package/dist/src/smiths/hook-bridge/types.js +31 -0
  407. package/dist/src/smiths/index.js +39 -0
  408. package/dist/src/smiths/mcpsmith/analyzers/cli-analyzer.js +390 -0
  409. package/dist/src/smiths/mcpsmith/example.js +119 -0
  410. package/dist/src/smiths/mcpsmith/generator.js +236 -0
  411. package/dist/src/smiths/mcpsmith/index.js +17 -0
  412. package/dist/src/smiths/mcpsmith/types.js +10 -0
  413. package/dist/src/smiths/platform-paths.js +101 -0
  414. package/dist/src/smiths/skillsmith/codex-sidecar.js +85 -0
  415. package/dist/src/smiths/skillsmith/collision-detector.js +249 -0
  416. package/dist/src/smiths/skillsmith/demo.js +83 -0
  417. package/dist/src/smiths/skillsmith/examples.js +161 -0
  418. package/dist/src/smiths/skillsmith/generator.js +316 -0
  419. package/dist/src/smiths/skillsmith/index.js +12 -0
  420. package/dist/src/smiths/skillsmith/namespace-adapter.js +180 -0
  421. package/dist/src/smiths/skillsmith/platform-resolver.js +157 -0
  422. package/dist/src/smiths/skillsmith/types.js +9 -0
  423. package/dist/src/smiths/toolsmith/index.js +10 -0
  424. package/dist/src/smiths/toolsmith/runtime-discovery.mjs +710 -0
  425. package/dist/src/smiths/toolsmith/types.js +8 -0
  426. package/dist/src/storage/backends/fortemi.js +227 -0
  427. package/dist/src/storage/backends/fs.js +134 -0
  428. package/dist/src/storage/backends/logseq.js +309 -0
  429. package/dist/src/storage/backends/obsidian.js +233 -0
  430. package/dist/src/storage/cli.js +468 -0
  431. package/dist/src/storage/config.js +272 -0
  432. package/dist/src/storage/index.js +108 -0
  433. package/dist/src/storage/subsystem-cli.js +201 -0
  434. package/dist/src/storage/types.js +33 -0
  435. package/dist/src/testing/corpus/corpus-builder.js +383 -0
  436. package/dist/src/testing/corpus/ground-truth-manager.js +460 -0
  437. package/dist/src/testing/corpus/index.js +10 -0
  438. package/dist/src/testing/fixtures/index.js +9 -0
  439. package/dist/src/testing/fixtures/test-data-factory.js +472 -0
  440. package/dist/src/testing/generators/index.js +11 -0
  441. package/dist/src/testing/generators/test-case-generator.js +393 -0
  442. package/dist/src/testing/generators/test-code-generator.js +384 -0
  443. package/dist/src/testing/generators/use-case-parser.js +325 -0
  444. package/dist/src/testing/index.js +11 -0
  445. package/dist/src/tracker/capability-protocol.js +118 -0
  446. package/dist/src/update/checker.mjs +396 -0
  447. package/dist/src/update/notifier.mjs +235 -0
  448. package/dist/src/writing/content-diversifier.js +804 -0
  449. package/dist/src/writing/example-generator.js +959 -0
  450. package/dist/src/writing/example-templates.js +99 -0
  451. package/dist/src/writing/pattern-library.js +486 -0
  452. package/dist/src/writing/patterns/banned-phrases.json +4413 -0
  453. package/dist/src/writing/patterns/formulaic-structures.json +1300 -0
  454. package/dist/src/writing/patterns/generic-adjectives.json +1510 -0
  455. package/dist/src/writing/patterns/hedging-language.json +2096 -0
  456. package/dist/src/writing/patterns/transition-words.json +1285 -0
  457. package/dist/src/writing/patterns/weak-verbs.json +1112 -0
  458. package/dist/src/writing/prompt-optimizer.js +660 -0
  459. package/dist/src/writing/prompt-templates.js +583 -0
  460. package/dist/src/writing/scoring-config-loader.js +168 -0
  461. package/dist/src/writing/validation-engine.js +595 -0
  462. package/dist/src/writing/validation-rules.js +380 -0
  463. package/dist/src/writing/voice-analyzer.js +439 -0
  464. package/dist/src/writing/voice-calibration.js +661 -0
  465. package/dist/src/writing/voice-profiles.json +588 -0
  466. package/package.json +64 -9
@@ -0,0 +1,392 @@
1
+ /**
2
+ * Scope resolver — `--scope user|project` per ADR-4.
3
+ *
4
+ * The CLI flag `--scope user` redirects deploys to home-rooted paths
5
+ * (`~/.<provider>/...`) instead of project-relative paths. This module
6
+ * holds the per-provider user-scope path map and the helper to detect
7
+ * the flag in command-line args.
8
+ *
9
+ * Per ADR-4 §2 path map. Per ADR-4 §1: `--scope user` and `--scope
10
+ * project` are mutually exclusive; default is `project`.
11
+ */
12
+ import { homedir } from 'node:os';
13
+ import * as path from 'node:path';
14
+ /**
15
+ * User-scope deploy paths per provider per ADR-4 §2. Each path is absolute
16
+ * (rooted in os.homedir()) so the orchestrator's existing path-join logic
17
+ * (which calls `path.join(target, relativePath)`) treats them as authoritative
18
+ * and bypasses the project-relative join.
19
+ *
20
+ * `.agents/skills/` and `~/.agents/skills/` deliberately appear for multiple
21
+ * providers — that's the cross-provider canonical user-scope target. Per
22
+ * ADR-4 §5 reference counting prevents one provider's removal from breaking
23
+ * another's deploy at the shared path.
24
+ */
25
+ export const USER_SCOPE_PATHS = {
26
+ claude: {
27
+ agents: path.join(homedir(), '.claude', 'agents'),
28
+ skills: path.join(homedir(), '.claude', 'skills'),
29
+ commands: path.join(homedir(), '.claude', 'commands'),
30
+ rules: path.join(homedir(), '.claude', 'rules'),
31
+ behaviors: path.join(homedir(), '.claude', 'hooks'),
32
+ },
33
+ codex: {
34
+ // #1158 — Verified against `codex-rs/core-skills/src/loader.rs` and
35
+ // `docs/providers/skills-paths.md`. Skills primary path is
36
+ // `~/.agents/skills/` (the cross-provider canonical). Commands deploy at
37
+ // `~/.codex/prompts/` for operator visibility per ADR-1; codex-rs ships a
38
+ // static built-in command enum so this directory is not auto-scanned, but
39
+ // it is the documented location and is where Codex would look if it ever
40
+ // scanned. Agents/rules at user scope route through AGENTS.md, not a
41
+ // discrete directory — left empty here.
42
+ agents: '',
43
+ skills: path.join(homedir(), '.agents', 'skills'),
44
+ commands: path.join(homedir(), '.codex', 'prompts'),
45
+ rules: '',
46
+ behaviors: '',
47
+ },
48
+ copilot: {
49
+ // #1160 — Non-applicable for filesystem user-scope discovery.
50
+ //
51
+ // VS Code GitHub Copilot's user-scope customization mechanism is the
52
+ // VS Code settings UI (`settings.json` → `github.copilot.chat.*` keys
53
+ // and `chat.modeFiles`/`chat.promptFiles` discovery), NOT a home-dir
54
+ // filesystem scan. `~/.config/github-copilot/` exists on Linux but
55
+ // stores auth state, not customization markdown files. Workspace
56
+ // customization is `.github/{copilot-instructions.md,prompts/,agents/,
57
+ // instructions/}` — see the Copilot `ProviderDefinition.paths.artifacts`
58
+ // entry for the project-scope deploy that IS verified.
59
+ //
60
+ // The paths below remain populated as a "harmless mirror" — deploying
61
+ // there does not break Copilot, but the runtime won't pick them up.
62
+ // Operators wanting cross-project Copilot customization should use
63
+ // VS Code's Settings Sync (settings.json), not AIWG `--scope user`.
64
+ //
65
+ // Skills route through ~/.agents/skills/ which IS a documented
66
+ // cross-provider canonical (Codex/OpenCode scan it; Copilot does
67
+ // not auto-scan but doesn't refuse either).
68
+ agents: path.join(homedir(), '.config', 'github-copilot', 'agents'),
69
+ skills: path.join(homedir(), '.agents', 'skills'),
70
+ commands: path.join(homedir(), '.config', 'github-copilot', 'prompts'),
71
+ rules: path.join(homedir(), '.config', 'github-copilot', 'instructions'),
72
+ behaviors: '',
73
+ },
74
+ cursor: {
75
+ // #1159 — Cursor is closed-source; user-scope behavior is unverified.
76
+ // Cursor's documented "User Rules" feature lives in the app's settings
77
+ // UI (preference data under platform-specific config dirs), not as
78
+ // markdown files in `~/.cursor/`. Project Rules at `.cursor/rules/*.mdc`
79
+ // are confirmed (per #1138 PUW-037), but user-scope filesystem
80
+ // discovery is not documented anywhere AIWG can verify.
81
+ //
82
+ // The paths below are the natural home-dir mirrors of the project-scope
83
+ // layout. Deploying there is harmless (Cursor will ignore the files if
84
+ // it doesn't scan them) but may also be invisible to the runtime. Until
85
+ // Cursor publishes user-scope discovery rules, treat this row as
86
+ // "unverified" — see docs/customization/user-scope-deployment.md.
87
+ agents: path.join(homedir(), '.cursor', 'agents'),
88
+ skills: path.join(homedir(), '.cursor', 'skills'),
89
+ commands: path.join(homedir(), '.cursor', 'commands'),
90
+ rules: path.join(homedir(), '.cursor', 'rules'),
91
+ behaviors: path.join(homedir(), '.cursor', 'rules'),
92
+ },
93
+ opencode: {
94
+ // #1161 — Verified against OpenCode docs (opencode.ai/docs/skills,
95
+ // opencode.ai/docs/rules, deepwiki.com/sst/opencode/5.7-skills-system).
96
+ // User-scope discovery roots at ~/.config/opencode/, NOT ~/.opencode/.
97
+ // Subdirectories use the plural forms per the OpenCode docs convention
98
+ // (agents/, commands/, skills/, etc.) — though the project-scope loader
99
+ // accepts both singular and plural via globs (#773, #1107). At user
100
+ // scope we use the plural form per the documented preference.
101
+ //
102
+ // Skills are also scanned by OpenCode at ~/.agents/skills/ (the
103
+ // cross-provider canonical) and ~/.claude/skills/ — we deploy to
104
+ // .agents/skills/ to keep one user-scope skills dir shared across
105
+ // Codex/Copilot/Warp/Factory/OpenCode rather than duplicating into
106
+ // ~/.config/opencode/skills/ as well.
107
+ //
108
+ // Rules at user scope route through ~/.config/opencode/AGENTS.md per
109
+ // the docs — there is no discrete user-scope rules dir.
110
+ agents: path.join(homedir(), '.config', 'opencode', 'agents'),
111
+ skills: path.join(homedir(), '.agents', 'skills'),
112
+ commands: path.join(homedir(), '.config', 'opencode', 'commands'),
113
+ rules: '',
114
+ behaviors: '',
115
+ },
116
+ warp: {
117
+ // #1162 — Non-applicable for filesystem user-scope discovery.
118
+ //
119
+ // Warp's user-scope mechanism is **Warp Drive** (cloud-synced agents,
120
+ // workflows, notebooks, and rules tied to the operator's Warp account),
121
+ // not a filesystem scan under `~/.warp/`. The project-scope AIWG
122
+ // surface for Warp is `WARP.md` aggregation at the project root via
123
+ // `aiwg-regenerate-warp` — that's the verified discovery path.
124
+ //
125
+ // The paths below remain populated as a "harmless mirror" — deploying
126
+ // there does not break Warp, but the runtime won't pick them up.
127
+ // Operators wanting cross-project Warp customization should publish
128
+ // to Warp Drive via the Warp app, not AIWG `--scope user`.
129
+ //
130
+ // Skills route through ~/.agents/skills/ as a courtesy (Warp does not
131
+ // auto-scan it but doesn't refuse either; aligns with the cross-
132
+ // provider canonical used by Codex/OpenCode).
133
+ agents: path.join(homedir(), '.warp', 'agents'),
134
+ skills: path.join(homedir(), '.agents', 'skills'),
135
+ commands: path.join(homedir(), '.warp', 'commands'),
136
+ rules: path.join(homedir(), '.warp', 'rules'),
137
+ behaviors: '',
138
+ },
139
+ windsurf: {
140
+ // #1163 — Non-applicable for filesystem user-scope discovery.
141
+ //
142
+ // Windsurf's user-scope mechanism is **Cascade Memories** (in-app,
143
+ // managed by the Cascade agent itself, not file-discovered) and
144
+ // global rules in the Windsurf settings UI. Project-scope discovery
145
+ // is `.windsurf/{rules,workflows}/` and AGENTS.md aggregation. There
146
+ // is no documented filesystem scan of `~/.windsurf/` for user-scope
147
+ // content.
148
+ //
149
+ // The paths below remain populated as a "harmless mirror" — deploying
150
+ // there does not break Windsurf, but the runtime won't pick them up.
151
+ // Operators wanting cross-project Windsurf customization should use
152
+ // Cascade Memories (commit a memory via the agent UI) or the
153
+ // Windsurf settings UI, not AIWG `--scope user`.
154
+ agents: path.join(homedir(), '.windsurf', 'agents'),
155
+ skills: path.join(homedir(), '.windsurf', 'skills'),
156
+ commands: path.join(homedir(), '.windsurf', 'workflows'),
157
+ rules: path.join(homedir(), '.windsurf', 'rules'),
158
+ behaviors: '',
159
+ },
160
+ hermes: {
161
+ agents: '',
162
+ skills: path.join(homedir(), '.hermes', 'skills'),
163
+ commands: '',
164
+ rules: '',
165
+ behaviors: '',
166
+ },
167
+ openclaw: {
168
+ agents: path.join(homedir(), '.openclaw', 'agents'),
169
+ skills: path.join(homedir(), '.openclaw', 'skills'),
170
+ commands: path.join(homedir(), '.openclaw', 'commands'),
171
+ rules: path.join(homedir(), '.openclaw', 'rules'),
172
+ behaviors: path.join(homedir(), '.openclaw', 'behaviors'),
173
+ },
174
+ openhuman: {
175
+ // OpenHuman is a home-dir app provider for AIWG installs. The app's native
176
+ // skills registry installs to ~/.openhuman/skills, and custom agents are
177
+ // TOML-only under ~/.openhuman/agents. AIWG does not invent a project-level
178
+ // markdown-agent install for OpenHuman.
179
+ agents: '',
180
+ skills: path.join(homedir(), '.openhuman', 'skills'),
181
+ commands: '',
182
+ rules: path.join(homedir(), '.openhuman', '.aiwg', 'rules'),
183
+ behaviors: '',
184
+ },
185
+ factory: {
186
+ // #1164 — Verified against Factory docs (docs.factory.ai/cli/configuration/skills).
187
+ // Skills primary user-scope path is ~/.factory/skills/, NOT the
188
+ // cross-provider .agents/skills/ canonical. Factory's docs explicitly say
189
+ // "for personal use across all projects, you can copy skills to
190
+ // ~/.factory/skills/skill-name" — there's no public statement that
191
+ // Factory scans ~/.agents/skills/, so we deploy to the documented path.
192
+ //
193
+ // Droids and commands at user scope mirror the project-scope layout
194
+ // (.factory/droids/ and .factory/commands/). These paths aren't called
195
+ // out explicitly in the Factory docs as user-scope discovery roots; they
196
+ // follow the same convention as the skills path. If Factory adds dedicated
197
+ // user-scope discovery for these, this entry should be revisited.
198
+ //
199
+ // Rules at user scope route through AGENTS.md per Factory's
200
+ // multi-platform AGENTS.md convention — no discrete user-scope rules dir.
201
+ agents: path.join(homedir(), '.factory', 'droids'),
202
+ skills: path.join(homedir(), '.factory', 'skills'),
203
+ commands: path.join(homedir(), '.factory', 'commands'),
204
+ rules: '',
205
+ behaviors: '',
206
+ },
207
+ };
208
+ /**
209
+ * Detect the `--scope` flag in a command-line arg list. Returns the resolved
210
+ * scope; defaults to 'project'. Throws when both `--scope user` and `--scope
211
+ * project` appear (mutually exclusive per ADR-4 §1).
212
+ */
213
+ export function detectScope(args) {
214
+ const idx = args.findIndex((a) => a === '--scope');
215
+ if (idx === -1)
216
+ return 'project';
217
+ const value = args[idx + 1];
218
+ if (value !== 'user' && value !== 'project') {
219
+ throw new Error(`--scope expected 'user' or 'project', got '${value ?? '(missing)'}'`);
220
+ }
221
+ // Check for duplicate --scope flags.
222
+ const dupIdx = args.findIndex((a, i) => i > idx && a === '--scope');
223
+ if (dupIdx !== -1) {
224
+ throw new Error('--scope appears more than once');
225
+ }
226
+ return value;
227
+ }
228
+ /**
229
+ * The path to the user-scope aiwg.config per ADR-4 §4. Each operator has
230
+ * one of these per-machine; it tracks user-global deployments.
231
+ */
232
+ export function userScopeConfigPath() {
233
+ return path.join(homedir(), '.aiwg', 'aiwg.config');
234
+ }
235
+ /**
236
+ * Resolve the deploy paths for a (provider, scope) pair. For project scope,
237
+ * returns ProviderDefinition-backed project-relative paths (the caller
238
+ * resolves them against the project dir). For user scope, returns the
239
+ * absolute home-rooted paths from USER_SCOPE_PATHS.
240
+ */
241
+ export function resolveScopePaths(provider, scope, projectScopePaths) {
242
+ if (scope === 'project')
243
+ return projectScopePaths;
244
+ const userPaths = USER_SCOPE_PATHS[provider];
245
+ if (!userPaths) {
246
+ // Unknown provider — fall back to project paths so the caller doesn't crash.
247
+ return projectScopePaths;
248
+ }
249
+ return userPaths;
250
+ }
251
+ /**
252
+ * Mirror skills deployed under the project-scope skills directory to the
253
+ * user-scope target. Per ADR-4 §2 the cross-agent canonical user-scope
254
+ * skills target is `~/.agents/skills/` for codex/copilot/warp/opencode/
255
+ * factory; for other providers the user-scope skills dir is per-provider.
256
+ *
257
+ * This is an additive copy — the project-scope deploy stays in place; the
258
+ * user-scope copy is created alongside. Operators get the skills available
259
+ * across all their projects without re-running aiwg use per project.
260
+ *
261
+ * Returns the count of skills mirrored, or 0 when nothing was found.
262
+ */
263
+ export async function mirrorSkillsToUserScope(provider, projectSkillsDir) {
264
+ const userPaths = USER_SCOPE_PATHS[provider];
265
+ if (!userPaths || !userPaths.skills) {
266
+ return { count: 0, targetDir: '' };
267
+ }
268
+ return mirrorArtifactDir(projectSkillsDir, userPaths.skills);
269
+ }
270
+ /**
271
+ * #1156 Phase 1 — Mirror the full per-provider artifact set (agents, commands,
272
+ * skills, rules) from project scope to the user-scope target. Additive: the
273
+ * project-scope deploy stays in place; user-scope copies are created alongside
274
+ * so the framework is available across every project on the machine.
275
+ *
276
+ * `projectPaths` are the relative or absolute paths the caller already resolved
277
+ * for project-scope deployment. Each one whose user-scope counterpart is
278
+ * non-empty gets mirrored. Returns per-artifact-type counts, the resolved
279
+ * user-scope target directories, and the list of entry names that were copied
280
+ * (so callers can record them in a per-framework manifest for precise remove).
281
+ */
282
+ export async function mirrorToUserScope(provider, projectPaths) {
283
+ const userPaths = USER_SCOPE_PATHS[provider];
284
+ const empty = { count: 0, targetDir: '', entries: [] };
285
+ if (!userPaths) {
286
+ return { agents: empty, skills: empty, commands: empty, rules: empty, behaviors: empty };
287
+ }
288
+ const [agents, skills, commands, rules, behaviors] = await Promise.all([
289
+ userPaths.agents ? mirrorArtifactDir(projectPaths.agents, userPaths.agents) : Promise.resolve(empty),
290
+ userPaths.skills
291
+ ? mirrorSkillDirsToUserScope([projectPaths.skills, projectPaths.kernelSkills ?? ''], userPaths.skills)
292
+ : Promise.resolve(empty),
293
+ userPaths.commands ? mirrorArtifactDir(projectPaths.commands, userPaths.commands) : Promise.resolve(empty),
294
+ userPaths.rules ? mirrorArtifactDir(projectPaths.rules, userPaths.rules) : Promise.resolve(empty),
295
+ userPaths.behaviors ? mirrorArtifactDir(projectPaths.behaviors, userPaths.behaviors) : Promise.resolve(empty),
296
+ ]);
297
+ return { agents, skills, commands, rules, behaviors };
298
+ }
299
+ /**
300
+ * Merge standard and kernel skill directories into one user-discoverable
301
+ * target. Provider deployments intentionally keep those source surfaces
302
+ * separate, while user scope exposes one native skill root. Duplicate skill
303
+ * names are overwritten by the later source and counted once.
304
+ */
305
+ export async function mirrorSkillDirsToUserScope(sourceDirs, targetDir) {
306
+ const entries = new Set();
307
+ for (const sourceDir of sourceDirs) {
308
+ const result = await mirrorArtifactDir(sourceDir, targetDir);
309
+ for (const entry of result.entries)
310
+ entries.add(entry);
311
+ }
312
+ return {
313
+ count: entries.size,
314
+ targetDir,
315
+ entries: [...entries],
316
+ };
317
+ }
318
+ /**
319
+ * Copy every directory or file under `src` into `dst` (creating `dst` if
320
+ * needed). Returns the count of top-level entries successfully copied and
321
+ * the entry names themselves — the names are needed by callers that record
322
+ * a per-framework manifest at user scope so `aiwg remove --scope user` can
323
+ * delete only what this deploy created.
324
+ *
325
+ * Used by the user-scope mirror to cover both directory-style artifacts
326
+ * (skills, agents) and file-style artifacts (commands, rules in some
327
+ * providers). Failures on individual entries are swallowed so a single bad
328
+ * entry doesn't fail the whole mirror.
329
+ */
330
+ async function mirrorArtifactDir(src, dst) {
331
+ if (!src || !dst)
332
+ return { count: 0, targetDir: dst, entries: [] };
333
+ const fs = await import('node:fs/promises');
334
+ let dirents;
335
+ try {
336
+ dirents = await fs.readdir(src, { withFileTypes: true });
337
+ }
338
+ catch {
339
+ return { count: 0, targetDir: dst, entries: [] };
340
+ }
341
+ // Some providers already deploy kernel skills to an absolute user-level
342
+ // path. Inventory that source for registry accounting instead of trying to
343
+ // recursively copy each entry onto itself.
344
+ if (path.resolve(src) === path.resolve(dst)) {
345
+ const entries = dirents
346
+ .filter((entry) => entry.isDirectory() || entry.isFile())
347
+ .map((entry) => entry.name);
348
+ return { count: entries.length, targetDir: dst, entries };
349
+ }
350
+ await fs.mkdir(dst, { recursive: true });
351
+ let count = 0;
352
+ const entries = [];
353
+ for (const entry of dirents) {
354
+ const s = path.join(src, entry.name);
355
+ const d = path.join(dst, entry.name);
356
+ try {
357
+ if (entry.isDirectory()) {
358
+ await fs.cp(s, d, { recursive: true, force: true });
359
+ }
360
+ else if (entry.isFile()) {
361
+ await fs.copyFile(s, d);
362
+ }
363
+ else {
364
+ continue;
365
+ }
366
+ count++;
367
+ entries.push(entry.name);
368
+ }
369
+ catch {
370
+ // ignore individual failures
371
+ }
372
+ }
373
+ return { count, targetDir: dst, entries };
374
+ }
375
+ /**
376
+ * #1156 Phase 1 — some app providers are exclusively user-scope. `--scope
377
+ * project` against them is meaningless because their paths are home-rooted;
378
+ * silently accepting it would create the false impression that project-scope
379
+ * deploys are tracked. This helper is called by the use/list/remove handlers
380
+ * to fail fast with a clear message on explicit project scope.
381
+ *
382
+ * `--scope user` is a no-op for these providers: that's already what they do
383
+ * without the flag.
384
+ */
385
+ export function rejectOpenClawProjectScope(provider, scope) {
386
+ if ((provider === 'openclaw' || provider === 'openhuman') && scope === 'project') {
387
+ const label = provider === 'openhuman' ? 'OpenHuman' : 'OpenClaw';
388
+ const home = provider === 'openhuman' ? '~/.openhuman/' : '~/.openclaw/';
389
+ throw new Error(`${label} is exclusively user-scope (${home}). '--scope project' is not supported for this provider; omit the flag or pass '--scope user'.`);
390
+ }
391
+ }
392
+ //# sourceMappingURL=scope-resolver.js.map