@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,325 @@
1
+ /**
2
+ * UseCaseParser - Parse use case documents to extract testable scenarios
3
+ *
4
+ * Parses use case markdown documents following the standard template format
5
+ * and extracts structured test scenarios for test generation.
6
+ *
7
+ * @module src/testing/generators/use-case-parser
8
+ */
9
+ import * as fs from 'fs/promises';
10
+ import * as path from 'path';
11
+ // ===========================
12
+ // UseCaseParser Class
13
+ // ===========================
14
+ export class UseCaseParser {
15
+ MAIN_SCENARIO_PATTERN = /^#+\s*(Main\s+)?Success\s+Scenario/im;
16
+ EXTENSION_PATTERN = /^#+\s*Extensions?/im;
17
+ EXCEPTION_PATTERN = /^#+\s*Exception(s|\s+Scenario)/im;
18
+ STEP_PATTERN = /^\s*(\d+)\.\s+(?:\*\*(\w+)\*\*:?\s+)?(.+)/;
19
+ PRECONDITION_PATTERN = /^#+\s*Pre-?conditions?/im;
20
+ POSTCONDITION_PATTERN = /^#+\s*Post-?conditions?/im;
21
+ NFR_REF_PATTERN = /NFR-[A-Z]+-\d+/g;
22
+ UC_REF_PATTERN = /UC-\d+/g;
23
+ /**
24
+ * Parse a use case document from file
25
+ *
26
+ * @param filePath - Path to use case markdown file
27
+ * @returns Parse result with structured document
28
+ */
29
+ async parseFile(filePath) {
30
+ try {
31
+ const content = await fs.readFile(filePath, 'utf-8');
32
+ return this.parseContent(content, path.basename(filePath));
33
+ }
34
+ catch (error) {
35
+ return {
36
+ success: false,
37
+ errors: [`Failed to read file: ${error.message}`],
38
+ warnings: []
39
+ };
40
+ }
41
+ }
42
+ /**
43
+ * Parse use case content from string
44
+ *
45
+ * @param content - Markdown content
46
+ * @param sourceName - Source identifier for error messages
47
+ * @returns Parse result with structured document
48
+ */
49
+ parseContent(content, sourceName = 'input') {
50
+ const errors = [];
51
+ const warnings = [];
52
+ // Extract use case ID from content
53
+ const idMatch = content.match(/UC-(\d+)/);
54
+ const id = idMatch ? `UC-${idMatch[1]}` : this.extractIdFromFilename(sourceName);
55
+ if (!id) {
56
+ errors.push('Could not determine use case ID');
57
+ }
58
+ // Extract title from first heading
59
+ const titleMatch = content.match(/^#\s+(.+)/m);
60
+ const title = titleMatch ? titleMatch[1].trim() : 'Unknown Use Case';
61
+ // Extract actor
62
+ const actorMatch = content.match(/\*\*(?:Primary\s+)?Actor\*\*:\s*(.+)/i) ||
63
+ content.match(/Actor:\s*(.+)/i);
64
+ const actor = actorMatch ? actorMatch[1].trim() : 'User';
65
+ // Extract description
66
+ const descMatch = content.match(/\*\*Description\*\*:\s*(.+)/i) ||
67
+ content.match(/^>\s*(.+)/m);
68
+ const description = descMatch ? descMatch[1].trim() : '';
69
+ // Extract priority
70
+ const priorityMatch = content.match(/\*\*Priority\*\*:\s*(\w+)/i);
71
+ const priority = this.normalizePriority(priorityMatch?.[1] || 'medium');
72
+ // Parse preconditions
73
+ const preconditions = this.parseBulletList(content, this.PRECONDITION_PATTERN);
74
+ // Parse postconditions
75
+ const postconditions = this.parseBulletList(content, this.POSTCONDITION_PATTERN);
76
+ // Parse main scenario
77
+ const mainScenario = this.parseMainScenario(content, id || 'UC-000');
78
+ if (!mainScenario) {
79
+ warnings.push('No main success scenario found');
80
+ }
81
+ // Parse extensions
82
+ const extensions = this.parseExtensions(content, id || 'UC-000');
83
+ // Parse exceptions
84
+ const exceptions = this.parseExceptions(content, id || 'UC-000');
85
+ // Extract NFR references
86
+ const nfrs = this.extractReferences(content, this.NFR_REF_PATTERN);
87
+ // Extract related use cases
88
+ const relatedUseCases = this.extractReferences(content, this.UC_REF_PATTERN)
89
+ .filter(ref => ref !== id);
90
+ if (errors.length > 0) {
91
+ return { success: false, errors, warnings };
92
+ }
93
+ return {
94
+ success: true,
95
+ document: {
96
+ id: id,
97
+ title,
98
+ actor,
99
+ description,
100
+ preconditions,
101
+ postconditions,
102
+ mainScenario: mainScenario || this.createEmptyScenario(id, 'main'),
103
+ extensions,
104
+ exceptions,
105
+ nfrs,
106
+ relatedUseCases,
107
+ priority
108
+ },
109
+ errors: [],
110
+ warnings
111
+ };
112
+ }
113
+ /**
114
+ * Parse multiple use case files from a directory
115
+ *
116
+ * @param dirPath - Directory containing use case files
117
+ * @returns Array of parse results
118
+ */
119
+ async parseDirectory(dirPath) {
120
+ const results = new Map();
121
+ try {
122
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
123
+ for (const entry of entries) {
124
+ if (entry.isFile() && entry.name.match(/UC-\d+.*\.md$/i)) {
125
+ const filePath = path.join(dirPath, entry.name);
126
+ const result = await this.parseFile(filePath);
127
+ results.set(entry.name, result);
128
+ }
129
+ }
130
+ }
131
+ catch (error) {
132
+ // Return empty map if directory doesn't exist
133
+ }
134
+ return results;
135
+ }
136
+ /**
137
+ * Extract testable scenarios from a use case document
138
+ *
139
+ * @param document - Parsed use case document
140
+ * @returns Array of all testable scenarios
141
+ */
142
+ extractTestableScenarios(document) {
143
+ const scenarios = [];
144
+ // Add main scenario
145
+ scenarios.push(document.mainScenario);
146
+ // Add extensions
147
+ scenarios.push(...document.extensions);
148
+ // Add exceptions
149
+ scenarios.push(...document.exceptions);
150
+ return scenarios;
151
+ }
152
+ // ===========================
153
+ // Private Parsing Methods
154
+ // ===========================
155
+ parseMainScenario(content, useCaseId) {
156
+ const match = content.match(this.MAIN_SCENARIO_PATTERN);
157
+ if (!match)
158
+ return null;
159
+ const sectionStart = match.index + match[0].length;
160
+ const sectionContent = this.extractSectionContent(content, sectionStart);
161
+ const steps = this.parseSteps(sectionContent);
162
+ return {
163
+ id: `${useCaseId}-MSS`,
164
+ name: 'Main Success Scenario',
165
+ type: 'main',
166
+ preconditions: [],
167
+ steps,
168
+ postconditions: []
169
+ };
170
+ }
171
+ parseExtensions(content, useCaseId) {
172
+ const extensions = [];
173
+ const match = content.match(this.EXTENSION_PATTERN);
174
+ if (!match)
175
+ return extensions;
176
+ const sectionStart = match.index + match[0].length;
177
+ const sectionContent = this.extractSectionContent(content, sectionStart);
178
+ // Parse extension scenarios (e.g., "2a. User cancels...")
179
+ const extensionPattern = /(\d+)([a-z])\.\s+(.+?)(?=\n\d+[a-z]\.|\n#+|\n\n\n|$)/gs;
180
+ let extMatch;
181
+ while ((extMatch = extensionPattern.exec(sectionContent)) !== null) {
182
+ const stepNum = parseInt(extMatch[1]);
183
+ const extId = extMatch[2];
184
+ const extContent = extMatch[3].trim();
185
+ // Parse extension steps
186
+ const extSteps = this.parseExtensionSteps(extContent);
187
+ extensions.push({
188
+ id: `${useCaseId}-EXT-${stepNum}${extId.toUpperCase()}`,
189
+ name: `Extension at step ${stepNum}`,
190
+ type: 'extension',
191
+ preconditions: [],
192
+ steps: extSteps,
193
+ postconditions: [],
194
+ extensionOf: `${useCaseId}-MSS`,
195
+ triggeredAt: stepNum
196
+ });
197
+ }
198
+ return extensions;
199
+ }
200
+ parseExceptions(content, useCaseId) {
201
+ const exceptions = [];
202
+ const match = content.match(this.EXCEPTION_PATTERN);
203
+ if (!match)
204
+ return exceptions;
205
+ const sectionStart = match.index + match[0].length;
206
+ const sectionContent = this.extractSectionContent(content, sectionStart);
207
+ // Parse exception scenarios
208
+ const exceptionPattern = /\*\*([^*]+)\*\*:\s*(.+?)(?=\n\*\*|\n#+|\n\n\n|$)/gs;
209
+ let exMatch;
210
+ let counter = 1;
211
+ while ((exMatch = exceptionPattern.exec(sectionContent)) !== null) {
212
+ const name = exMatch[1].trim();
213
+ const description = exMatch[2].trim();
214
+ exceptions.push({
215
+ id: `${useCaseId}-EXC-${String(counter).padStart(2, '0')}`,
216
+ name,
217
+ type: 'exception',
218
+ preconditions: [],
219
+ steps: [{
220
+ number: 1,
221
+ actor: 'system',
222
+ action: description
223
+ }],
224
+ postconditions: []
225
+ });
226
+ counter++;
227
+ }
228
+ return exceptions;
229
+ }
230
+ parseSteps(content) {
231
+ const steps = [];
232
+ const lines = content.split('\n');
233
+ for (const line of lines) {
234
+ const match = line.match(this.STEP_PATTERN);
235
+ if (match) {
236
+ const number = parseInt(match[1]);
237
+ const actorHint = match[2]?.toLowerCase() || '';
238
+ const action = match[3].trim();
239
+ let actor = 'system';
240
+ if (actorHint.includes('user') || action.toLowerCase().startsWith('user')) {
241
+ actor = 'user';
242
+ }
243
+ else if (actorHint.includes('external') || action.toLowerCase().includes('external')) {
244
+ actor = 'external';
245
+ }
246
+ steps.push({ number, actor, action });
247
+ }
248
+ }
249
+ return steps;
250
+ }
251
+ parseExtensionSteps(content) {
252
+ const steps = [];
253
+ const lines = content.split('\n');
254
+ let stepNum = 1;
255
+ for (const line of lines) {
256
+ const trimmed = line.trim();
257
+ if (trimmed && !trimmed.startsWith('#')) {
258
+ // Determine actor from content
259
+ let actor = 'system';
260
+ if (trimmed.toLowerCase().includes('user')) {
261
+ actor = 'user';
262
+ }
263
+ steps.push({
264
+ number: stepNum++,
265
+ actor,
266
+ action: trimmed
267
+ });
268
+ }
269
+ }
270
+ return steps;
271
+ }
272
+ parseBulletList(content, sectionPattern) {
273
+ const items = [];
274
+ const match = content.match(sectionPattern);
275
+ if (!match)
276
+ return items;
277
+ const sectionStart = match.index + match[0].length;
278
+ const sectionContent = this.extractSectionContent(content, sectionStart);
279
+ // Parse bullet points
280
+ const bulletPattern = /^\s*[-*]\s+(.+)/gm;
281
+ let bulletMatch;
282
+ while ((bulletMatch = bulletPattern.exec(sectionContent)) !== null) {
283
+ items.push(bulletMatch[1].trim());
284
+ }
285
+ return items;
286
+ }
287
+ extractSectionContent(content, startIndex) {
288
+ // Find next heading or end of content
289
+ const remaining = content.substring(startIndex);
290
+ const nextHeading = remaining.search(/\n#+\s/);
291
+ if (nextHeading === -1) {
292
+ return remaining;
293
+ }
294
+ return remaining.substring(0, nextHeading);
295
+ }
296
+ extractReferences(content, pattern) {
297
+ const matches = content.match(pattern) || [];
298
+ return [...new Set(matches)]; // Deduplicate
299
+ }
300
+ extractIdFromFilename(filename) {
301
+ const match = filename.match(/UC-(\d+)/i);
302
+ return match ? `UC-${match[1]}` : null;
303
+ }
304
+ normalizePriority(priority) {
305
+ const lower = priority.toLowerCase();
306
+ if (lower.includes('critical') || lower === 'p0')
307
+ return 'critical';
308
+ if (lower.includes('high') || lower === 'p1')
309
+ return 'high';
310
+ if (lower.includes('low') || lower === 'p3')
311
+ return 'low';
312
+ return 'medium';
313
+ }
314
+ createEmptyScenario(useCaseId, type) {
315
+ return {
316
+ id: `${useCaseId}-${type.toUpperCase()}`,
317
+ name: `Empty ${type} scenario`,
318
+ type,
319
+ preconditions: [],
320
+ steps: [],
321
+ postconditions: []
322
+ };
323
+ }
324
+ }
325
+ //# sourceMappingURL=use-case-parser.js.map
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Testing Module
3
+ *
4
+ * Comprehensive test infrastructure including generators, fixtures, and corpus management.
5
+ *
6
+ * @module src/testing
7
+ */
8
+ export * from './generators/index.js';
9
+ export * from './fixtures/index.js';
10
+ export * from './corpus/index.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Canonical tracker authority and access-path selection.
3
+ *
4
+ * Tracker-sensitive work must resolve authority from `.aiwg/aiwg.config`
5
+ * before considering whichever CLI happens to be authenticated. This module is
6
+ * deliberately pure so skills, context generation, and tests can all share the
7
+ * same authority model.
8
+ *
9
+ * @implements #1734
10
+ * @implements #1735
11
+ */
12
+ import { resolveRemoteProvider, resolveRemotes, } from '../config/aiwg-config.js';
13
+ function providerFromIssueStorage(issueStorage) {
14
+ const value = issueStorage?.toLowerCase() ?? '';
15
+ if (!value)
16
+ return 'unknown';
17
+ if (value.includes('local'))
18
+ return 'local';
19
+ if (value.includes('gitea'))
20
+ return 'gitea';
21
+ if (value.includes('github'))
22
+ return 'github';
23
+ if (value.includes('gitlab'))
24
+ return 'gitlab';
25
+ return 'unknown';
26
+ }
27
+ function normalizeProvider(provider) {
28
+ return provider === 'gitea' || provider === 'github' || provider === 'gitlab'
29
+ ? provider
30
+ : 'unknown';
31
+ }
32
+ function providerMatches(probe, authority) {
33
+ if (authority.provider === 'unknown') {
34
+ return probe.remoteName === authority.issueTrackerRemote || probe.provider === undefined;
35
+ }
36
+ return probe.provider === authority.provider || probe.remoteName === authority.issueTrackerRemote;
37
+ }
38
+ function probeIsUsable(probe, authority) {
39
+ return probe.available === true && probe.authenticated !== false && providerMatches(probe, authority);
40
+ }
41
+ function accessLabel(probe) {
42
+ if (probe.label)
43
+ return probe.label;
44
+ if (probe.kind === 'cli' && probe.cli)
45
+ return `${probe.cli} CLI`;
46
+ if (probe.kind === 'http-api')
47
+ return 'tracker HTTP API';
48
+ return 'MCP/app tools';
49
+ }
50
+ export function resolveTrackerAuthority(config, remoteUrls = {}, configPath = '.aiwg/aiwg.config') {
51
+ const remotes = resolveRemotes(config?.remotes);
52
+ const issueStorage = config?.delivery?.issue_storage;
53
+ const issueTrackerUrl = remoteUrls[remotes.issue_tracker];
54
+ const storageProvider = providerFromIssueStorage(issueStorage);
55
+ const urlProvider = issueTrackerUrl ? normalizeProvider(resolveRemoteProvider(issueTrackerUrl)) : 'unknown';
56
+ return {
57
+ configPath,
58
+ primaryRemote: remotes.primary,
59
+ issueTrackerRemote: remotes.issue_tracker,
60
+ ciRemote: remotes.ci,
61
+ issueTrackerUrl,
62
+ issueStorage,
63
+ provider: storageProvider !== 'unknown' ? storageProvider : urlProvider,
64
+ secondaryRemotes: remotes.secondary,
65
+ };
66
+ }
67
+ export function chooseTrackerAccess(authority, probes) {
68
+ const mcp = probes.find((probe) => probe.kind === 'mcp-app' && probeIsUsable(probe, authority));
69
+ if (mcp)
70
+ return { kind: 'mcp-app', provider: authority.provider, label: accessLabel(mcp) };
71
+ const api = probes.find((probe) => probe.kind === 'http-api' && probeIsUsable(probe, authority));
72
+ if (api)
73
+ return { kind: 'http-api', provider: authority.provider, label: accessLabel(api) };
74
+ const cli = probes.find((probe) => probe.kind === 'cli' && probeIsUsable(probe, authority));
75
+ if (cli)
76
+ return { kind: 'cli', provider: authority.provider, label: accessLabel(cli) };
77
+ return {
78
+ kind: 'blocker',
79
+ provider: authority.provider,
80
+ label: 'stop/report blocker',
81
+ blocker: [
82
+ `No usable issue-tracker write path for configured tracker '${authority.issueTrackerRemote}'`,
83
+ `(provider: ${authority.provider}, url: ${authority.issueTrackerUrl ?? 'unresolved'}).`,
84
+ 'Git SSH remote access only proves repository sync, not issue API access.',
85
+ 'Do not file on mirror or secondary remotes unless the user explicitly requests it.',
86
+ ].join(' '),
87
+ };
88
+ }
89
+ export function renderTrackerProtocol(authority) {
90
+ const secondary = authority.secondaryRemotes.length > 0
91
+ ? authority.secondaryRemotes
92
+ .map((remote) => `${remote.name}${remote.purpose ? ` (${remote.purpose})` : ''}`)
93
+ .join(', ')
94
+ : 'none configured';
95
+ const issueStorage = authority.issueStorage ?? 'not configured';
96
+ const trackerUrl = authority.issueTrackerUrl ?? 'remote URL unavailable';
97
+ return [
98
+ '### Tracker Authority Protocol',
99
+ '',
100
+ `- Source of truth: [${authority.configPath}](./${authority.configPath})`,
101
+ `- Canonical tracker: \`${authority.issueTrackerRemote}\` (${authority.provider}; ${trackerUrl})`,
102
+ `- Primary repo remote: \`${authority.primaryRemote}\`; CI remote: \`${authority.ciRemote}\``,
103
+ `- Secondary/mirror remotes: ${secondary}`,
104
+ `- Issue storage mode: ${issueStorage}`,
105
+ '',
106
+ 'Tracker access order for issue, PR, release, and CI-sensitive tracker operations:',
107
+ '1. MCP/app tools for the configured tracker.',
108
+ '2. Tracker HTTP API with configured credentials.',
109
+ '3. Tracker CLI for the configured tracker, after confirming authentication.',
110
+ '4. Stop and report a blocker.',
111
+ '',
112
+ '- Project config decides tracker authority; installed/authenticated CLIs do not.',
113
+ '- Git SSH remote access is repository sync, not issue-tracker API access.',
114
+ '- Do not file on mirror or secondary remotes just because their CLI is authenticated.',
115
+ '- Treat an unauthenticated tracker CLI as one failed access path, then continue probing MCP/app/API before blocking.',
116
+ ].join('\n');
117
+ }
118
+ //# sourceMappingURL=capability-protocol.js.map