@deftai/directive-core 0.55.0

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 (861) hide show
  1. package/dist/architecture/sor-preflight.d.ts +66 -0
  2. package/dist/architecture/sor-preflight.js +903 -0
  3. package/dist/branch/evaluate.d.ts +23 -0
  4. package/dist/branch/evaluate.js +136 -0
  5. package/dist/branch/git.d.ts +15 -0
  6. package/dist/branch/git.js +42 -0
  7. package/dist/branch/index.d.ts +3 -0
  8. package/dist/branch/index.js +3 -0
  9. package/dist/cache/cli.d.ts +3 -0
  10. package/dist/cache/cli.js +8 -0
  11. package/dist/cache/constants.d.ts +12 -0
  12. package/dist/cache/constants.js +14 -0
  13. package/dist/cache/errors.d.ts +34 -0
  14. package/dist/cache/errors.js +52 -0
  15. package/dist/cache/fetch.d.ts +101 -0
  16. package/dist/cache/fetch.js +413 -0
  17. package/dist/cache/index.d.ts +14 -0
  18. package/dist/cache/index.js +14 -0
  19. package/dist/cache/io.d.ts +15 -0
  20. package/dist/cache/io.js +53 -0
  21. package/dist/cache/json.d.ts +11 -0
  22. package/dist/cache/json.js +32 -0
  23. package/dist/cache/main.d.ts +3 -0
  24. package/dist/cache/main.js +319 -0
  25. package/dist/cache/operations.d.ts +34 -0
  26. package/dist/cache/operations.js +348 -0
  27. package/dist/cache/paths.d.ts +7 -0
  28. package/dist/cache/paths.js +27 -0
  29. package/dist/cache/quota.d.ts +56 -0
  30. package/dist/cache/quota.js +191 -0
  31. package/dist/cache/scanner.d.ts +28 -0
  32. package/dist/cache/scanner.js +362 -0
  33. package/dist/cache/test-helpers.d.ts +10 -0
  34. package/dist/cache/test-helpers.js +17 -0
  35. package/dist/cache/time.d.ts +9 -0
  36. package/dist/cache/time.js +20 -0
  37. package/dist/cache/types.d.ts +50 -0
  38. package/dist/cache/types.js +2 -0
  39. package/dist/cache/validate.d.ts +3 -0
  40. package/dist/cache/validate.js +118 -0
  41. package/dist/capacity/backfill.d.ts +52 -0
  42. package/dist/capacity/backfill.js +429 -0
  43. package/dist/capacity/index.d.ts +3 -0
  44. package/dist/capacity/index.js +3 -0
  45. package/dist/capacity/show.d.ts +73 -0
  46. package/dist/capacity/show.js +387 -0
  47. package/dist/check/index.d.ts +3 -0
  48. package/dist/check/index.js +2 -0
  49. package/dist/check/orchestrator.d.ts +51 -0
  50. package/dist/check/orchestrator.js +71 -0
  51. package/dist/codebase/constants.d.ts +2 -0
  52. package/dist/codebase/constants.js +2 -0
  53. package/dist/codebase/default-extractor.d.ts +28 -0
  54. package/dist/codebase/default-extractor.js +713 -0
  55. package/dist/codebase/index.d.ts +8 -0
  56. package/dist/codebase/index.js +8 -0
  57. package/dist/codebase/json.d.ts +14 -0
  58. package/dist/codebase/json.js +45 -0
  59. package/dist/codebase/map-fresh.d.ts +11 -0
  60. package/dist/codebase/map-fresh.js +125 -0
  61. package/dist/codebase/map.d.ts +19 -0
  62. package/dist/codebase/map.js +345 -0
  63. package/dist/codebase/projection-registry.d.ts +25 -0
  64. package/dist/codebase/projection-registry.js +93 -0
  65. package/dist/codebase/provider.d.ts +30 -0
  66. package/dist/codebase/provider.js +696 -0
  67. package/dist/content-contracts/skills/greptile-detector.d.ts +56 -0
  68. package/dist/content-contracts/skills/greptile-detector.js +368 -0
  69. package/dist/content-contracts/skills/helpers.d.ts +24 -0
  70. package/dist/content-contracts/skills/helpers.js +73 -0
  71. package/dist/content-contracts/skills/skill-frontmatter.d.ts +7 -0
  72. package/dist/content-contracts/skills/skill-frontmatter.js +65 -0
  73. package/dist/content-contracts/standards/_helpers.d.ts +49 -0
  74. package/dist/content-contracts/standards/_helpers.js +227 -0
  75. package/dist/content-contracts/standards/_shapes.d.ts +12 -0
  76. package/dist/content-contracts/standards/_shapes.js +45 -0
  77. package/dist/content-contracts/standards/_taskfile-helpers.d.ts +12 -0
  78. package/dist/content-contracts/standards/_taskfile-helpers.js +61 -0
  79. package/dist/content-root.d.ts +47 -0
  80. package/dist/content-root.js +89 -0
  81. package/dist/doctor/agents-md.d.ts +14 -0
  82. package/dist/doctor/agents-md.js +263 -0
  83. package/dist/doctor/checks.d.ts +16 -0
  84. package/dist/doctor/checks.js +351 -0
  85. package/dist/doctor/cli.d.ts +2 -0
  86. package/dist/doctor/cli.js +7 -0
  87. package/dist/doctor/constants.d.ts +15 -0
  88. package/dist/doctor/constants.js +40 -0
  89. package/dist/doctor/doctor-state.d.ts +16 -0
  90. package/dist/doctor/doctor-state.js +117 -0
  91. package/dist/doctor/flags.d.ts +5 -0
  92. package/dist/doctor/flags.js +63 -0
  93. package/dist/doctor/index.d.ts +14 -0
  94. package/dist/doctor/index.js +14 -0
  95. package/dist/doctor/json.d.ts +3 -0
  96. package/dist/doctor/json.js +21 -0
  97. package/dist/doctor/main.d.ts +3 -0
  98. package/dist/doctor/main.js +387 -0
  99. package/dist/doctor/manifest.d.ts +11 -0
  100. package/dist/doctor/manifest.js +114 -0
  101. package/dist/doctor/output.d.ts +19 -0
  102. package/dist/doctor/output.js +49 -0
  103. package/dist/doctor/paths.d.ts +16 -0
  104. package/dist/doctor/paths.js +106 -0
  105. package/dist/doctor/payload-staleness.d.ts +13 -0
  106. package/dist/doctor/payload-staleness.js +165 -0
  107. package/dist/doctor/taskfile.d.ts +6 -0
  108. package/dist/doctor/taskfile.js +65 -0
  109. package/dist/doctor/types.d.ts +76 -0
  110. package/dist/doctor/types.js +4 -0
  111. package/dist/doctor/which.d.ts +3 -0
  112. package/dist/doctor/which.js +17 -0
  113. package/dist/encoding/evaluate.d.ts +19 -0
  114. package/dist/encoding/evaluate.js +155 -0
  115. package/dist/encoding/git.d.ts +11 -0
  116. package/dist/encoding/git.js +36 -0
  117. package/dist/encoding/index.d.ts +6 -0
  118. package/dist/encoding/index.js +6 -0
  119. package/dist/encoding/patterns.d.ts +29 -0
  120. package/dist/encoding/patterns.js +109 -0
  121. package/dist/encoding/scan.d.ts +24 -0
  122. package/dist/encoding/scan.js +182 -0
  123. package/dist/encoding/text.d.ts +21 -0
  124. package/dist/encoding/text.js +111 -0
  125. package/dist/index.d.ts +54 -0
  126. package/dist/index.js +55 -0
  127. package/dist/intake/candidates-log.d.ts +20 -0
  128. package/dist/intake/candidates-log.js +224 -0
  129. package/dist/intake/github-auth-modes-cli.d.ts +3 -0
  130. package/dist/intake/github-auth-modes-cli.js +23 -0
  131. package/dist/intake/github-auth-modes.d.ts +54 -0
  132. package/dist/intake/github-auth-modes.js +275 -0
  133. package/dist/intake/github-body-cli.d.ts +3 -0
  134. package/dist/intake/github-body-cli.js +30 -0
  135. package/dist/intake/github-body.d.ts +48 -0
  136. package/dist/intake/github-body.js +151 -0
  137. package/dist/intake/index.d.ts +15 -0
  138. package/dist/intake/index.js +15 -0
  139. package/dist/intake/issue-emit-cli.d.ts +3 -0
  140. package/dist/intake/issue-emit-cli.js +34 -0
  141. package/dist/intake/issue-emit.d.ts +63 -0
  142. package/dist/intake/issue-emit.js +351 -0
  143. package/dist/intake/issue-ingest-cli.d.ts +3 -0
  144. package/dist/intake/issue-ingest-cli.js +33 -0
  145. package/dist/intake/issue-ingest.d.ts +53 -0
  146. package/dist/intake/issue-ingest.js +477 -0
  147. package/dist/intake/markdown-scanners.d.ts +23 -0
  148. package/dist/intake/markdown-scanners.js +247 -0
  149. package/dist/intake/parity-scenarios.d.ts +22 -0
  150. package/dist/intake/parity-scenarios.js +32 -0
  151. package/dist/intake/platform-capabilities.d.ts +11 -0
  152. package/dist/intake/platform-capabilities.js +34 -0
  153. package/dist/intake/reconcile-issues-cli.d.ts +3 -0
  154. package/dist/intake/reconcile-issues-cli.js +31 -0
  155. package/dist/intake/reconcile-issues.d.ts +60 -0
  156. package/dist/intake/reconcile-issues.js +756 -0
  157. package/dist/integration-e2e/bootstrap-cache-module.d.ts +5 -0
  158. package/dist/integration-e2e/bootstrap-cache-module.js +21 -0
  159. package/dist/integration-e2e/helpers.d.ts +28 -0
  160. package/dist/integration-e2e/helpers.js +157 -0
  161. package/dist/lifecycle/event-detect.d.ts +32 -0
  162. package/dist/lifecycle/event-detect.js +172 -0
  163. package/dist/lifecycle/events.d.ts +45 -0
  164. package/dist/lifecycle/events.js +340 -0
  165. package/dist/lifecycle/index.d.ts +4 -0
  166. package/dist/lifecycle/index.js +4 -0
  167. package/dist/lifecycle/lifecycle-hygiene.d.ts +59 -0
  168. package/dist/lifecycle/lifecycle-hygiene.js +388 -0
  169. package/dist/orchestration/index.d.ts +7 -0
  170. package/dist/orchestration/index.js +7 -0
  171. package/dist/orchestration/judgment-policy.d.ts +23 -0
  172. package/dist/orchestration/judgment-policy.js +228 -0
  173. package/dist/orchestration/pathspec.d.ts +11 -0
  174. package/dist/orchestration/pathspec.js +95 -0
  175. package/dist/orchestration/probe-session.d.ts +74 -0
  176. package/dist/orchestration/probe-session.js +478 -0
  177. package/dist/orchestration/subagent-monitor.d.ts +64 -0
  178. package/dist/orchestration/subagent-monitor.js +405 -0
  179. package/dist/orchestration/verify-investigation.d.ts +27 -0
  180. package/dist/orchestration/verify-investigation.js +314 -0
  181. package/dist/orchestration/verify-judgment-gates.d.ts +66 -0
  182. package/dist/orchestration/verify-judgment-gates.js +710 -0
  183. package/dist/packs/index.d.ts +4 -0
  184. package/dist/packs/index.js +4 -0
  185. package/dist/packs/pack-render.d.ts +31 -0
  186. package/dist/packs/pack-render.js +357 -0
  187. package/dist/packs/packs-slice.d.ts +58 -0
  188. package/dist/packs/packs-slice.js +649 -0
  189. package/dist/packs/quarantine-ext.d.ts +7 -0
  190. package/dist/packs/quarantine-ext.js +164 -0
  191. package/dist/platform/agents-md.d.ts +31 -0
  192. package/dist/platform/agents-md.js +320 -0
  193. package/dist/platform/changelog-cli.d.ts +3 -0
  194. package/dist/platform/changelog-cli.js +64 -0
  195. package/dist/platform/constants.d.ts +20 -0
  196. package/dist/platform/constants.js +27 -0
  197. package/dist/platform/index.d.ts +9 -0
  198. package/dist/platform/index.js +9 -0
  199. package/dist/platform/ip-risk.d.ts +10 -0
  200. package/dist/platform/ip-risk.js +235 -0
  201. package/dist/platform/linear-scan.d.ts +36 -0
  202. package/dist/platform/linear-scan.js +174 -0
  203. package/dist/platform/platform-capabilities.d.ts +45 -0
  204. package/dist/platform/platform-capabilities.js +190 -0
  205. package/dist/platform/resolve-changelog-unreleased.d.ts +24 -0
  206. package/dist/platform/resolve-changelog-unreleased.js +364 -0
  207. package/dist/platform/resolve-version.d.ts +22 -0
  208. package/dist/platform/resolve-version.js +303 -0
  209. package/dist/platform/slug-normalize.d.ts +9 -0
  210. package/dist/platform/slug-normalize.js +110 -0
  211. package/dist/policy/autonomy.d.ts +43 -0
  212. package/dist/policy/autonomy.js +220 -0
  213. package/dist/policy/capacity.d.ts +45 -0
  214. package/dist/policy/capacity.js +251 -0
  215. package/dist/policy/decisions.d.ts +26 -0
  216. package/dist/policy/decisions.js +114 -0
  217. package/dist/policy/disclosure.d.ts +4 -0
  218. package/dist/policy/disclosure.js +19 -0
  219. package/dist/policy/index.d.ts +43 -0
  220. package/dist/policy/index.js +298 -0
  221. package/dist/policy/resolve.d.ts +38 -0
  222. package/dist/policy/resolve.js +228 -0
  223. package/dist/policy/wip.d.ts +15 -0
  224. package/dist/policy/wip.js +81 -0
  225. package/dist/pr-closing-keywords/constants.d.ts +6 -0
  226. package/dist/pr-closing-keywords/constants.js +6 -0
  227. package/dist/pr-closing-keywords/detect.d.ts +5 -0
  228. package/dist/pr-closing-keywords/detect.js +113 -0
  229. package/dist/pr-closing-keywords/gh.d.ts +6 -0
  230. package/dist/pr-closing-keywords/gh.js +129 -0
  231. package/dist/pr-closing-keywords/index.d.ts +7 -0
  232. package/dist/pr-closing-keywords/index.js +6 -0
  233. package/dist/pr-closing-keywords/io.d.ts +3 -0
  234. package/dist/pr-closing-keywords/io.js +22 -0
  235. package/dist/pr-closing-keywords/main.d.ts +9 -0
  236. package/dist/pr-closing-keywords/main.js +246 -0
  237. package/dist/pr-closing-keywords/types.d.ts +23 -0
  238. package/dist/pr-closing-keywords/types.js +2 -0
  239. package/dist/pr-merge-readiness/compute.d.ts +7 -0
  240. package/dist/pr-merge-readiness/compute.js +210 -0
  241. package/dist/pr-merge-readiness/constants.d.ts +20 -0
  242. package/dist/pr-merge-readiness/constants.js +32 -0
  243. package/dist/pr-merge-readiness/evaluate.d.ts +5 -0
  244. package/dist/pr-merge-readiness/evaluate.js +48 -0
  245. package/dist/pr-merge-readiness/gh.d.ts +22 -0
  246. package/dist/pr-merge-readiness/gh.js +281 -0
  247. package/dist/pr-merge-readiness/index.d.ts +9 -0
  248. package/dist/pr-merge-readiness/index.js +8 -0
  249. package/dist/pr-merge-readiness/main.d.ts +14 -0
  250. package/dist/pr-merge-readiness/main.js +67 -0
  251. package/dist/pr-merge-readiness/output.d.ts +7 -0
  252. package/dist/pr-merge-readiness/output.js +98 -0
  253. package/dist/pr-merge-readiness/parse.d.ts +6 -0
  254. package/dist/pr-merge-readiness/parse.js +83 -0
  255. package/dist/pr-merge-readiness/types.d.ts +29 -0
  256. package/dist/pr-merge-readiness/types.js +2 -0
  257. package/dist/pr-monitor/cadence.d.ts +3 -0
  258. package/dist/pr-monitor/cadence.js +12 -0
  259. package/dist/pr-monitor/constants.d.ts +8 -0
  260. package/dist/pr-monitor/constants.js +12 -0
  261. package/dist/pr-monitor/index.d.ts +7 -0
  262. package/dist/pr-monitor/index.js +6 -0
  263. package/dist/pr-monitor/main.d.ts +17 -0
  264. package/dist/pr-monitor/main.js +169 -0
  265. package/dist/pr-monitor/monitor.d.ts +9 -0
  266. package/dist/pr-monitor/monitor.js +106 -0
  267. package/dist/pr-monitor/readiness.d.ts +6 -0
  268. package/dist/pr-monitor/readiness.js +64 -0
  269. package/dist/pr-monitor/types.d.ts +30 -0
  270. package/dist/pr-monitor/types.js +2 -0
  271. package/dist/pr-protected-issues/constants.d.ts +7 -0
  272. package/dist/pr-protected-issues/constants.js +7 -0
  273. package/dist/pr-protected-issues/gh.d.ts +9 -0
  274. package/dist/pr-protected-issues/gh.js +96 -0
  275. package/dist/pr-protected-issues/index.d.ts +6 -0
  276. package/dist/pr-protected-issues/index.js +5 -0
  277. package/dist/pr-protected-issues/main.d.ts +14 -0
  278. package/dist/pr-protected-issues/main.js +128 -0
  279. package/dist/pr-protected-issues/parse.d.ts +6 -0
  280. package/dist/pr-protected-issues/parse.js +21 -0
  281. package/dist/pr-protected-issues/types.d.ts +8 -0
  282. package/dist/pr-protected-issues/types.js +2 -0
  283. package/dist/pr-wait-mergeable/cascade.d.ts +12 -0
  284. package/dist/pr-wait-mergeable/cascade.js +107 -0
  285. package/dist/pr-wait-mergeable/classify.d.ts +5 -0
  286. package/dist/pr-wait-mergeable/classify.js +47 -0
  287. package/dist/pr-wait-mergeable/constants.d.ts +5 -0
  288. package/dist/pr-wait-mergeable/constants.js +5 -0
  289. package/dist/pr-wait-mergeable/index.d.ts +8 -0
  290. package/dist/pr-wait-mergeable/index.js +7 -0
  291. package/dist/pr-wait-mergeable/main.d.ts +18 -0
  292. package/dist/pr-wait-mergeable/main.js +213 -0
  293. package/dist/pr-wait-mergeable/result.d.ts +9 -0
  294. package/dist/pr-wait-mergeable/result.js +38 -0
  295. package/dist/pr-wait-mergeable/types.d.ts +16 -0
  296. package/dist/pr-wait-mergeable/types.js +2 -0
  297. package/dist/pr-wait-mergeable/wrappers.d.ts +26 -0
  298. package/dist/pr-wait-mergeable/wrappers.js +103 -0
  299. package/dist/preflight/evaluate.d.ts +22 -0
  300. package/dist/preflight/evaluate.js +137 -0
  301. package/dist/preflight/index.d.ts +3 -0
  302. package/dist/preflight/index.js +2 -0
  303. package/dist/preflight-cache/evaluate.d.ts +40 -0
  304. package/dist/preflight-cache/evaluate.js +481 -0
  305. package/dist/preflight-cache/index.d.ts +3 -0
  306. package/dist/preflight-cache/index.js +2 -0
  307. package/dist/preflight-gh/classifier.d.ts +56 -0
  308. package/dist/preflight-gh/classifier.js +415 -0
  309. package/dist/preflight-gh/index.d.ts +3 -0
  310. package/dist/preflight-gh/index.js +2 -0
  311. package/dist/release/changelog.d.ts +9 -0
  312. package/dist/release/changelog.js +105 -0
  313. package/dist/release/cli.d.ts +2 -0
  314. package/dist/release/cli.js +7 -0
  315. package/dist/release/constants.d.ts +22 -0
  316. package/dist/release/constants.js +85 -0
  317. package/dist/release/flags.d.ts +4 -0
  318. package/dist/release/flags.js +131 -0
  319. package/dist/release/gh.d.ts +16 -0
  320. package/dist/release/gh.js +210 -0
  321. package/dist/release/git.d.ts +11 -0
  322. package/dist/release/git.js +84 -0
  323. package/dist/release/index.d.ts +14 -0
  324. package/dist/release/index.js +15 -0
  325. package/dist/release/main.d.ts +3 -0
  326. package/dist/release/main.js +47 -0
  327. package/dist/release/paths.d.ts +6 -0
  328. package/dist/release/paths.js +39 -0
  329. package/dist/release/pipeline.d.ts +6 -0
  330. package/dist/release/pipeline.js +314 -0
  331. package/dist/release/pyproject-sync.d.ts +6 -0
  332. package/dist/release/pyproject-sync.js +52 -0
  333. package/dist/release/pyproject.d.ts +3 -0
  334. package/dist/release/pyproject.js +33 -0
  335. package/dist/release/python-bridge.d.ts +7 -0
  336. package/dist/release/python-bridge.js +144 -0
  337. package/dist/release/spawn.d.ts +8 -0
  338. package/dist/release/spawn.js +44 -0
  339. package/dist/release/types.d.ts +58 -0
  340. package/dist/release/types.js +2 -0
  341. package/dist/release/version.d.ts +11 -0
  342. package/dist/release/version.js +74 -0
  343. package/dist/release-e2e/constants.d.ts +22 -0
  344. package/dist/release-e2e/constants.js +43 -0
  345. package/dist/release-e2e/entrypoint-worker-thread.d.ts +2 -0
  346. package/dist/release-e2e/entrypoint-worker-thread.js +22 -0
  347. package/dist/release-e2e/entrypoint-worker.d.ts +13 -0
  348. package/dist/release-e2e/entrypoint-worker.js +50 -0
  349. package/dist/release-e2e/entrypoint.d.ts +40 -0
  350. package/dist/release-e2e/entrypoint.js +257 -0
  351. package/dist/release-e2e/flags.d.ts +5 -0
  352. package/dist/release-e2e/flags.js +80 -0
  353. package/dist/release-e2e/gh-ops.d.ts +5 -0
  354. package/dist/release-e2e/gh-ops.js +72 -0
  355. package/dist/release-e2e/git-ops.d.ts +6 -0
  356. package/dist/release-e2e/git-ops.js +47 -0
  357. package/dist/release-e2e/index.d.ts +10 -0
  358. package/dist/release-e2e/index.js +10 -0
  359. package/dist/release-e2e/main.d.ts +4 -0
  360. package/dist/release-e2e/main.js +78 -0
  361. package/dist/release-e2e/npm-ops.d.ts +29 -0
  362. package/dist/release-e2e/npm-ops.js +149 -0
  363. package/dist/release-e2e/rehearsal.d.ts +3 -0
  364. package/dist/release-e2e/rehearsal.js +51 -0
  365. package/dist/release-e2e/rollback-bridge.d.ts +3 -0
  366. package/dist/release-e2e/rollback-bridge.js +20 -0
  367. package/dist/release-e2e/types.d.ts +40 -0
  368. package/dist/release-e2e/types.js +2 -0
  369. package/dist/release-publish/cli.d.ts +2 -0
  370. package/dist/release-publish/cli.js +7 -0
  371. package/dist/release-publish/constants.d.ts +4 -0
  372. package/dist/release-publish/constants.js +24 -0
  373. package/dist/release-publish/flags.d.ts +5 -0
  374. package/dist/release-publish/flags.js +67 -0
  375. package/dist/release-publish/gh-api.d.ts +6 -0
  376. package/dist/release-publish/gh-api.js +102 -0
  377. package/dist/release-publish/index.d.ts +7 -0
  378. package/dist/release-publish/index.js +8 -0
  379. package/dist/release-publish/main.d.ts +3 -0
  380. package/dist/release-publish/main.js +38 -0
  381. package/dist/release-publish/pipeline.d.ts +4 -0
  382. package/dist/release-publish/pipeline.js +46 -0
  383. package/dist/release-publish/types.d.ts +25 -0
  384. package/dist/release-publish/types.js +2 -0
  385. package/dist/release-rollback/constants.d.ts +18 -0
  386. package/dist/release-rollback/constants.js +55 -0
  387. package/dist/release-rollback/flags.d.ts +4 -0
  388. package/dist/release-rollback/flags.js +136 -0
  389. package/dist/release-rollback/gh.d.ts +5 -0
  390. package/dist/release-rollback/gh.js +71 -0
  391. package/dist/release-rollback/git.d.ts +9 -0
  392. package/dist/release-rollback/git.js +87 -0
  393. package/dist/release-rollback/guard.d.ts +12 -0
  394. package/dist/release-rollback/guard.js +97 -0
  395. package/dist/release-rollback/index.d.ts +9 -0
  396. package/dist/release-rollback/index.js +10 -0
  397. package/dist/release-rollback/main.d.ts +3 -0
  398. package/dist/release-rollback/main.js +51 -0
  399. package/dist/release-rollback/pipeline.d.ts +7 -0
  400. package/dist/release-rollback/pipeline.js +221 -0
  401. package/dist/release-rollback/types.d.ts +41 -0
  402. package/dist/release-rollback/types.js +2 -0
  403. package/dist/render/constants.d.ts +16 -0
  404. package/dist/render/constants.js +78 -0
  405. package/dist/render/framework-commands.d.ts +41 -0
  406. package/dist/render/framework-commands.js +416 -0
  407. package/dist/render/index.d.ts +15 -0
  408. package/dist/render/index.js +15 -0
  409. package/dist/render/prd-render.d.ts +14 -0
  410. package/dist/render/prd-render.js +79 -0
  411. package/dist/render/project-render.d.ts +20 -0
  412. package/dist/render/project-render.js +169 -0
  413. package/dist/render/roadmap-render.d.ts +8 -0
  414. package/dist/render/roadmap-render.js +387 -0
  415. package/dist/render/spec-render.d.ts +13 -0
  416. package/dist/render/spec-render.js +362 -0
  417. package/dist/render/spec-validate.d.ts +6 -0
  418. package/dist/render/spec-validate.js +157 -0
  419. package/dist/render/text-utils.d.ts +8 -0
  420. package/dist/render/text-utils.js +72 -0
  421. package/dist/scm/argv.d.ts +7 -0
  422. package/dist/scm/argv.js +54 -0
  423. package/dist/scm/binary.d.ts +11 -0
  424. package/dist/scm/binary.js +35 -0
  425. package/dist/scm/build-command.d.ts +11 -0
  426. package/dist/scm/build-command.js +23 -0
  427. package/dist/scm/call.d.ts +25 -0
  428. package/dist/scm/call.js +38 -0
  429. package/dist/scm/cli.d.ts +3 -0
  430. package/dist/scm/cli.js +7 -0
  431. package/dist/scm/constants.d.ts +11 -0
  432. package/dist/scm/constants.js +11 -0
  433. package/dist/scm/errors.d.ts +5 -0
  434. package/dist/scm/errors.js +8 -0
  435. package/dist/scm/gh-rest.d.ts +74 -0
  436. package/dist/scm/gh-rest.js +326 -0
  437. package/dist/scm/index.d.ts +11 -0
  438. package/dist/scm/index.js +11 -0
  439. package/dist/scm/main.d.ts +12 -0
  440. package/dist/scm/main.js +65 -0
  441. package/dist/scm/py-format.d.ts +9 -0
  442. package/dist/scm/py-format.js +31 -0
  443. package/dist/scm/rest-dispatch.d.ts +14 -0
  444. package/dist/scm/rest-dispatch.js +175 -0
  445. package/dist/scope/audit-log.d.ts +14 -0
  446. package/dist/scope/audit-log.js +186 -0
  447. package/dist/scope/capacity-stamp.d.ts +3 -0
  448. package/dist/scope/capacity-stamp.js +45 -0
  449. package/dist/scope/cli.d.ts +4 -0
  450. package/dist/scope/cli.js +11 -0
  451. package/dist/scope/constants.d.ts +19 -0
  452. package/dist/scope/constants.js +44 -0
  453. package/dist/scope/decompose.d.ts +42 -0
  454. package/dist/scope/decompose.js +1016 -0
  455. package/dist/scope/decomposed-refs.d.ts +6 -0
  456. package/dist/scope/decomposed-refs.js +173 -0
  457. package/dist/scope/demote.d.ts +24 -0
  458. package/dist/scope/demote.js +209 -0
  459. package/dist/scope/index.d.ts +12 -0
  460. package/dist/scope/index.js +12 -0
  461. package/dist/scope/main.d.ts +30 -0
  462. package/dist/scope/main.js +365 -0
  463. package/dist/scope/project-context.d.ts +6 -0
  464. package/dist/scope/project-context.js +55 -0
  465. package/dist/scope/project-definition-sync.d.ts +3 -0
  466. package/dist/scope/project-definition-sync.js +157 -0
  467. package/dist/scope/transition.d.ts +10 -0
  468. package/dist/scope/transition.js +133 -0
  469. package/dist/scope/undo.d.ts +25 -0
  470. package/dist/scope/undo.js +334 -0
  471. package/dist/scope/vbrief-json.d.ts +4 -0
  472. package/dist/scope/vbrief-json.js +8 -0
  473. package/dist/scope/vbrief-ref.d.ts +11 -0
  474. package/dist/scope/vbrief-ref.js +100 -0
  475. package/dist/scope/wip-cap-check.d.ts +11 -0
  476. package/dist/scope/wip-cap-check.js +23 -0
  477. package/dist/session/git.d.ts +14 -0
  478. package/dist/session/git.js +49 -0
  479. package/dist/session/index.d.ts +9 -0
  480. package/dist/session/index.js +9 -0
  481. package/dist/session/json.d.ts +7 -0
  482. package/dist/session/json.js +29 -0
  483. package/dist/session/resume-conditions.d.ts +56 -0
  484. package/dist/session/resume-conditions.js +486 -0
  485. package/dist/session/ritual-entrypoint.d.ts +20 -0
  486. package/dist/session/ritual-entrypoint.js +86 -0
  487. package/dist/session/ritual-sentinel.d.ts +58 -0
  488. package/dist/session/ritual-sentinel.js +338 -0
  489. package/dist/session/session-start-hook.d.ts +14 -0
  490. package/dist/session/session-start-hook.js +53 -0
  491. package/dist/session/session-start.d.ts +41 -0
  492. package/dist/session/session-start.js +290 -0
  493. package/dist/session/staleness.d.ts +8 -0
  494. package/dist/session/staleness.js +91 -0
  495. package/dist/session/time.d.ts +5 -0
  496. package/dist/session/time.js +19 -0
  497. package/dist/session/verify-session-ritual.d.ts +29 -0
  498. package/dist/session/verify-session-ritual.js +222 -0
  499. package/dist/slice/cli.d.ts +21 -0
  500. package/dist/slice/cli.js +248 -0
  501. package/dist/slice/constants.d.ts +18 -0
  502. package/dist/slice/constants.js +30 -0
  503. package/dist/slice/errors.d.ts +9 -0
  504. package/dist/slice/errors.js +15 -0
  505. package/dist/slice/existing.d.ts +53 -0
  506. package/dist/slice/existing.js +344 -0
  507. package/dist/slice/index.d.ts +10 -0
  508. package/dist/slice/index.js +10 -0
  509. package/dist/slice/json.d.ts +7 -0
  510. package/dist/slice/json.js +25 -0
  511. package/dist/slice/lock.d.ts +9 -0
  512. package/dist/slice/lock.js +59 -0
  513. package/dist/slice/project-context.d.ts +15 -0
  514. package/dist/slice/project-context.js +87 -0
  515. package/dist/slice/record.d.ts +50 -0
  516. package/dist/slice/record.js +139 -0
  517. package/dist/slice/validate.d.ts +3 -0
  518. package/dist/slice/validate.js +86 -0
  519. package/dist/story-ready/allocation.d.ts +14 -0
  520. package/dist/story-ready/allocation.js +61 -0
  521. package/dist/story-ready/evaluate.d.ts +23 -0
  522. package/dist/story-ready/evaluate.js +161 -0
  523. package/dist/story-ready/git.d.ts +6 -0
  524. package/dist/story-ready/git.js +26 -0
  525. package/dist/story-ready/index.d.ts +4 -0
  526. package/dist/story-ready/index.js +4 -0
  527. package/dist/subprocess/max-buffer.d.ts +18 -0
  528. package/dist/subprocess/max-buffer.js +18 -0
  529. package/dist/swarm/complete-cohort-cli.d.ts +3 -0
  530. package/dist/swarm/complete-cohort-cli.js +42 -0
  531. package/dist/swarm/complete-cohort.d.ts +34 -0
  532. package/dist/swarm/complete-cohort.js +407 -0
  533. package/dist/swarm/constants.d.ts +18 -0
  534. package/dist/swarm/constants.js +24 -0
  535. package/dist/swarm/index.d.ts +18 -0
  536. package/dist/swarm/index.js +18 -0
  537. package/dist/swarm/launch-cli.d.ts +5 -0
  538. package/dist/swarm/launch-cli.js +111 -0
  539. package/dist/swarm/launch.d.ts +78 -0
  540. package/dist/swarm/launch.js +587 -0
  541. package/dist/swarm/readiness-cli.d.ts +3 -0
  542. package/dist/swarm/readiness-cli.js +25 -0
  543. package/dist/swarm/readiness.d.ts +24 -0
  544. package/dist/swarm/readiness.js +606 -0
  545. package/dist/swarm/routing-set-cli.d.ts +3 -0
  546. package/dist/swarm/routing-set-cli.js +82 -0
  547. package/dist/swarm/routing-verify-cli.d.ts +3 -0
  548. package/dist/swarm/routing-verify-cli.js +51 -0
  549. package/dist/swarm/routing-verify.d.ts +20 -0
  550. package/dist/swarm/routing-verify.js +104 -0
  551. package/dist/swarm/routing.d.ts +57 -0
  552. package/dist/swarm/routing.js +173 -0
  553. package/dist/swarm/subagent-backend.d.ts +22 -0
  554. package/dist/swarm/subagent-backend.js +162 -0
  555. package/dist/swarm/subprocess.d.ts +10 -0
  556. package/dist/swarm/subprocess.js +34 -0
  557. package/dist/swarm/verify-review-clean-cli.d.ts +3 -0
  558. package/dist/swarm/verify-review-clean-cli.js +38 -0
  559. package/dist/swarm/verify-review-clean.d.ts +40 -0
  560. package/dist/swarm/verify-review-clean.js +240 -0
  561. package/dist/swarm/worktrees-cli.d.ts +9 -0
  562. package/dist/swarm/worktrees-cli.js +57 -0
  563. package/dist/swarm/worktrees.d.ts +39 -0
  564. package/dist/swarm/worktrees.js +178 -0
  565. package/dist/text/redos-safe.d.ts +29 -0
  566. package/dist/text/redos-safe.js +338 -0
  567. package/dist/triage/actions/candidates-log.d.ts +8 -0
  568. package/dist/triage/actions/candidates-log.js +195 -0
  569. package/dist/triage/actions/errors.d.ts +17 -0
  570. package/dist/triage/actions/errors.js +29 -0
  571. package/dist/triage/actions/index.d.ts +19 -0
  572. package/dist/triage/actions/index.js +305 -0
  573. package/dist/triage/actions/resume-on.d.ts +3 -0
  574. package/dist/triage/actions/resume-on.js +65 -0
  575. package/dist/triage/actions/types.d.ts +57 -0
  576. package/dist/triage/actions/types.js +2 -0
  577. package/dist/triage/bootstrap/gitignore.d.ts +16 -0
  578. package/dist/triage/bootstrap/gitignore.js +414 -0
  579. package/dist/triage/bootstrap/index.d.ts +44 -0
  580. package/dist/triage/bootstrap/index.js +572 -0
  581. package/dist/triage/bootstrap/types.d.ts +60 -0
  582. package/dist/triage/bootstrap/types.js +2 -0
  583. package/dist/triage/bulk/index.d.ts +99 -0
  584. package/dist/triage/bulk/index.js +454 -0
  585. package/dist/triage/classify/index.d.ts +88 -0
  586. package/dist/triage/classify/index.js +738 -0
  587. package/dist/triage/help/index.d.ts +25 -0
  588. package/dist/triage/help/index.js +212 -0
  589. package/dist/triage/help/registry-data.d.ts +555 -0
  590. package/dist/triage/help/registry-data.js +841 -0
  591. package/dist/triage/index.d.ts +23 -0
  592. package/dist/triage/index.js +23 -0
  593. package/dist/triage/queue/audit.d.ts +12 -0
  594. package/dist/triage/queue/audit.js +47 -0
  595. package/dist/triage/queue/build-queue.d.ts +9 -0
  596. package/dist/triage/queue/build-queue.js +133 -0
  597. package/dist/triage/queue/cache.d.ts +20 -0
  598. package/dist/triage/queue/cache.js +169 -0
  599. package/dist/triage/queue/constants.d.ts +22 -0
  600. package/dist/triage/queue/constants.js +28 -0
  601. package/dist/triage/queue/derive-group.d.ts +7 -0
  602. package/dist/triage/queue/derive-group.js +20 -0
  603. package/dist/triage/queue/index.d.ts +12 -0
  604. package/dist/triage/queue/index.js +12 -0
  605. package/dist/triage/queue/project.d.ts +6 -0
  606. package/dist/triage/queue/project.js +18 -0
  607. package/dist/triage/queue/ranking-labels.d.ts +10 -0
  608. package/dist/triage/queue/ranking-labels.js +54 -0
  609. package/dist/triage/queue/render.d.ts +9 -0
  610. package/dist/triage/queue/render.js +35 -0
  611. package/dist/triage/queue/repo.d.ts +5 -0
  612. package/dist/triage/queue/repo.js +36 -0
  613. package/dist/triage/queue/scope-walk.d.ts +13 -0
  614. package/dist/triage/queue/scope-walk.js +170 -0
  615. package/dist/triage/queue/selection.d.ts +28 -0
  616. package/dist/triage/queue/selection.js +109 -0
  617. package/dist/triage/queue/types.d.ts +58 -0
  618. package/dist/triage/queue/types.js +2 -0
  619. package/dist/triage/reconcile/audit.d.ts +4 -0
  620. package/dist/triage/reconcile/audit.js +62 -0
  621. package/dist/triage/reconcile/index.d.ts +5 -0
  622. package/dist/triage/reconcile/index.js +5 -0
  623. package/dist/triage/reconcile/parse-uri.d.ts +4 -0
  624. package/dist/triage/reconcile/parse-uri.js +43 -0
  625. package/dist/triage/reconcile/reconcile.d.ts +17 -0
  626. package/dist/triage/reconcile/reconcile.js +163 -0
  627. package/dist/triage/reconcile/types.d.ts +23 -0
  628. package/dist/triage/reconcile/types.js +70 -0
  629. package/dist/triage/refresh/drift.d.ts +15 -0
  630. package/dist/triage/refresh/drift.js +72 -0
  631. package/dist/triage/refresh/extract.d.ts +3 -0
  632. package/dist/triage/refresh/extract.js +43 -0
  633. package/dist/triage/refresh/index.d.ts +5 -0
  634. package/dist/triage/refresh/index.js +5 -0
  635. package/dist/triage/refresh/refresh.d.ts +16 -0
  636. package/dist/triage/refresh/refresh.js +95 -0
  637. package/dist/triage/refresh/types.d.ts +18 -0
  638. package/dist/triage/refresh/types.js +7 -0
  639. package/dist/triage/scope/cli.d.ts +23 -0
  640. package/dist/triage/scope/cli.js +257 -0
  641. package/dist/triage/scope/constants.d.ts +16 -0
  642. package/dist/triage/scope/constants.js +25 -0
  643. package/dist/triage/scope/coverage.d.ts +24 -0
  644. package/dist/triage/scope/coverage.js +96 -0
  645. package/dist/triage/scope/duration.d.ts +6 -0
  646. package/dist/triage/scope/duration.js +44 -0
  647. package/dist/triage/scope/evaluate.d.ts +18 -0
  648. package/dist/triage/scope/evaluate.js +161 -0
  649. package/dist/triage/scope/index.d.ts +14 -0
  650. package/dist/triage/scope/index.js +14 -0
  651. package/dist/triage/scope/milestone.d.ts +13 -0
  652. package/dist/triage/scope/milestone.js +178 -0
  653. package/dist/triage/scope/mutations-core.d.ts +24 -0
  654. package/dist/triage/scope/mutations-core.js +216 -0
  655. package/dist/triage/scope/mutations.d.ts +21 -0
  656. package/dist/triage/scope/mutations.js +203 -0
  657. package/dist/triage/scope/normalize.d.ts +5 -0
  658. package/dist/triage/scope/normalize.js +45 -0
  659. package/dist/triage/scope/python-repr.d.ts +7 -0
  660. package/dist/triage/scope/python-repr.js +25 -0
  661. package/dist/triage/scope/renderers.d.ts +9 -0
  662. package/dist/triage/scope/renderers.js +177 -0
  663. package/dist/triage/scope/resolve.d.ts +15 -0
  664. package/dist/triage/scope/resolve.js +122 -0
  665. package/dist/triage/scope/time.d.ts +6 -0
  666. package/dist/triage/scope/time.js +18 -0
  667. package/dist/triage/scope/validate.d.ts +11 -0
  668. package/dist/triage/scope/validate.js +272 -0
  669. package/dist/triage/scope-drift/add-ignore.d.ts +10 -0
  670. package/dist/triage/scope-drift/add-ignore.js +78 -0
  671. package/dist/triage/scope-drift/cache-walker.d.ts +8 -0
  672. package/dist/triage/scope-drift/cache-walker.js +103 -0
  673. package/dist/triage/scope-drift/compute.d.ts +9 -0
  674. package/dist/triage/scope-drift/compute.js +92 -0
  675. package/dist/triage/scope-drift/index.d.ts +6 -0
  676. package/dist/triage/scope-drift/index.js +6 -0
  677. package/dist/triage/scope-drift/render.d.ts +4 -0
  678. package/dist/triage/scope-drift/render.js +45 -0
  679. package/dist/triage/scope-drift/scope-rules.d.ts +16 -0
  680. package/dist/triage/scope-drift/scope-rules.js +149 -0
  681. package/dist/triage/scope-drift/types.d.ts +13 -0
  682. package/dist/triage/scope-drift/types.js +8 -0
  683. package/dist/triage/smoketest/index.d.ts +81 -0
  684. package/dist/triage/smoketest/index.js +335 -0
  685. package/dist/triage/subscribe/index.d.ts +38 -0
  686. package/dist/triage/subscribe/index.js +303 -0
  687. package/dist/triage/summary/index.d.ts +70 -0
  688. package/dist/triage/summary/index.js +431 -0
  689. package/dist/triage/summary/reconcilable.d.ts +12 -0
  690. package/dist/triage/summary/reconcilable.js +150 -0
  691. package/dist/triage/summary/scope-drift.d.ts +5 -0
  692. package/dist/triage/summary/scope-drift.js +219 -0
  693. package/dist/triage/welcome/constants.d.ts +24 -0
  694. package/dist/triage/welcome/constants.js +34 -0
  695. package/dist/triage/welcome/default-mode.d.ts +21 -0
  696. package/dist/triage/welcome/default-mode.js +48 -0
  697. package/dist/triage/welcome/index.d.ts +6 -0
  698. package/dist/triage/welcome/index.js +6 -0
  699. package/dist/triage/welcome/prior-state.d.ts +17 -0
  700. package/dist/triage/welcome/prior-state.js +170 -0
  701. package/dist/triage/welcome/summary.d.ts +23 -0
  702. package/dist/triage/welcome/summary.js +303 -0
  703. package/dist/triage/welcome/writers.d.ts +17 -0
  704. package/dist/triage/welcome/writers.js +157 -0
  705. package/dist/ts-check-lane/index.d.ts +3 -0
  706. package/dist/ts-check-lane/index.js +2 -0
  707. package/dist/ts-check-lane/run-lane.d.ts +53 -0
  708. package/dist/ts-check-lane/run-lane.js +98 -0
  709. package/dist/validate-content/capacity-policy.d.ts +82 -0
  710. package/dist/validate-content/capacity-policy.js +399 -0
  711. package/dist/validate-content/capacity-show.d.ts +60 -0
  712. package/dist/validate-content/capacity-show.js +336 -0
  713. package/dist/validate-content/filename.d.ts +3 -0
  714. package/dist/validate-content/filename.js +54 -0
  715. package/dist/validate-content/index.d.ts +9 -0
  716. package/dist/validate-content/index.js +9 -0
  717. package/dist/validate-content/link-parser.d.ts +5 -0
  718. package/dist/validate-content/link-parser.js +42 -0
  719. package/dist/validate-content/types.d.ts +8 -0
  720. package/dist/validate-content/types.js +2 -0
  721. package/dist/validate-content/validate-links.d.ts +17 -0
  722. package/dist/validate-content/validate-links.js +114 -0
  723. package/dist/validate-content/validate-strategy-output.d.ts +11 -0
  724. package/dist/validate-content/validate-strategy-output.js +120 -0
  725. package/dist/validate-content/verify-capacity.d.ts +14 -0
  726. package/dist/validate-content/verify-capacity.js +96 -0
  727. package/dist/vbrief-activate/activate.d.ts +13 -0
  728. package/dist/vbrief-activate/activate.js +184 -0
  729. package/dist/vbrief-activate/constants.d.ts +9 -0
  730. package/dist/vbrief-activate/constants.js +11 -0
  731. package/dist/vbrief-activate/index.d.ts +6 -0
  732. package/dist/vbrief-activate/index.js +4 -0
  733. package/dist/vbrief-activate/main.d.ts +14 -0
  734. package/dist/vbrief-activate/main.js +33 -0
  735. package/dist/vbrief-build/build.d.ts +13 -0
  736. package/dist/vbrief-build/build.js +123 -0
  737. package/dist/vbrief-build/constants.d.ts +13 -0
  738. package/dist/vbrief-build/constants.js +34 -0
  739. package/dist/vbrief-build/index.d.ts +12 -0
  740. package/dist/vbrief-build/index.js +11 -0
  741. package/dist/vbrief-build/json.d.ts +3 -0
  742. package/dist/vbrief-build/json.js +5 -0
  743. package/dist/vbrief-build/main.d.ts +5 -0
  744. package/dist/vbrief-build/main.js +65 -0
  745. package/dist/vbrief-build/parity-scenarios.d.ts +19 -0
  746. package/dist/vbrief-build/parity-scenarios.js +321 -0
  747. package/dist/vbrief-build/project-definition-io.d.ts +13 -0
  748. package/dist/vbrief-build/project-definition-io.js +117 -0
  749. package/dist/vbrief-build/routing.d.ts +13 -0
  750. package/dist/vbrief-build/routing.js +110 -0
  751. package/dist/vbrief-build/sources.d.ts +16 -0
  752. package/dist/vbrief-build/sources.js +294 -0
  753. package/dist/vbrief-build/speckit.d.ts +23 -0
  754. package/dist/vbrief-build/speckit.js +212 -0
  755. package/dist/vbrief-build/types.d.ts +18 -0
  756. package/dist/vbrief-build/types.js +7 -0
  757. package/dist/vbrief-reconcile/graph.d.ts +11 -0
  758. package/dist/vbrief-reconcile/graph.js +171 -0
  759. package/dist/vbrief-reconcile/index.d.ts +10 -0
  760. package/dist/vbrief-reconcile/index.js +9 -0
  761. package/dist/vbrief-reconcile/labels.d.ts +22 -0
  762. package/dist/vbrief-reconcile/labels.js +252 -0
  763. package/dist/vbrief-reconcile/main.d.ts +18 -0
  764. package/dist/vbrief-reconcile/main.js +149 -0
  765. package/dist/vbrief-reconcile/parity-scenarios.d.ts +16 -0
  766. package/dist/vbrief-reconcile/parity-scenarios.js +385 -0
  767. package/dist/vbrief-reconcile/py-repr.d.ts +3 -0
  768. package/dist/vbrief-reconcile/py-repr.js +5 -0
  769. package/dist/vbrief-reconcile/reconciliation.d.ts +20 -0
  770. package/dist/vbrief-reconcile/reconciliation.js +542 -0
  771. package/dist/vbrief-reconcile/swarm-deps.d.ts +8 -0
  772. package/dist/vbrief-reconcile/swarm-deps.js +142 -0
  773. package/dist/vbrief-reconcile/types.d.ts +128 -0
  774. package/dist/vbrief-reconcile/types.js +2 -0
  775. package/dist/vbrief-reconcile/umbrellas.d.ts +48 -0
  776. package/dist/vbrief-reconcile/umbrellas.js +462 -0
  777. package/dist/vbrief-validate/conformance.d.ts +26 -0
  778. package/dist/vbrief-validate/conformance.js +273 -0
  779. package/dist/vbrief-validate/constants.d.ts +13 -0
  780. package/dist/vbrief-validate/constants.js +36 -0
  781. package/dist/vbrief-validate/decomposition.d.ts +3 -0
  782. package/dist/vbrief-validate/decomposition.js +38 -0
  783. package/dist/vbrief-validate/epic-links.d.ts +4 -0
  784. package/dist/vbrief-validate/epic-links.js +152 -0
  785. package/dist/vbrief-validate/filename.d.ts +5 -0
  786. package/dist/vbrief-validate/filename.js +62 -0
  787. package/dist/vbrief-validate/folder-status.d.ts +4 -0
  788. package/dist/vbrief-validate/folder-status.js +30 -0
  789. package/dist/vbrief-validate/index.d.ts +14 -0
  790. package/dist/vbrief-validate/index.js +11 -0
  791. package/dist/vbrief-validate/main.d.ts +17 -0
  792. package/dist/vbrief-validate/main.js +127 -0
  793. package/dist/vbrief-validate/origin.d.ts +4 -0
  794. package/dist/vbrief-validate/origin.js +76 -0
  795. package/dist/vbrief-validate/paths.d.ts +11 -0
  796. package/dist/vbrief-validate/paths.js +83 -0
  797. package/dist/vbrief-validate/placeholders.d.ts +3 -0
  798. package/dist/vbrief-validate/placeholders.js +33 -0
  799. package/dist/vbrief-validate/plan-hooks.d.ts +9 -0
  800. package/dist/vbrief-validate/plan-hooks.js +145 -0
  801. package/dist/vbrief-validate/precutover.d.ts +7 -0
  802. package/dist/vbrief-validate/precutover.js +30 -0
  803. package/dist/vbrief-validate/project-definition.d.ts +4 -0
  804. package/dist/vbrief-validate/project-definition.js +166 -0
  805. package/dist/vbrief-validate/schema.d.ts +8 -0
  806. package/dist/vbrief-validate/schema.js +150 -0
  807. package/dist/vbrief-validate/staleness.d.ts +3 -0
  808. package/dist/vbrief-validate/staleness.js +106 -0
  809. package/dist/vbrief-validate/validate-all.d.ts +17 -0
  810. package/dist/vbrief-validate/validate-all.js +119 -0
  811. package/dist/vbrief-validation/fidelity.d.ts +22 -0
  812. package/dist/vbrief-validation/fidelity.js +508 -0
  813. package/dist/vbrief-validation/index.d.ts +11 -0
  814. package/dist/vbrief-validation/index.js +8 -0
  815. package/dist/vbrief-validation/legacy-sections.d.ts +13 -0
  816. package/dist/vbrief-validation/legacy-sections.js +124 -0
  817. package/dist/vbrief-validation/main.d.ts +5 -0
  818. package/dist/vbrief-validation/main.js +65 -0
  819. package/dist/vbrief-validation/normalize.d.ts +22 -0
  820. package/dist/vbrief-validation/normalize.js +126 -0
  821. package/dist/vbrief-validation/parity-scenarios.d.ts +14 -0
  822. package/dist/vbrief-validation/parity-scenarios.js +523 -0
  823. package/dist/vbrief-validation/safety.d.ts +38 -0
  824. package/dist/vbrief-validation/safety.js +422 -0
  825. package/dist/vbrief-validation/story-quality.d.ts +29 -0
  826. package/dist/vbrief-validation/story-quality.js +452 -0
  827. package/dist/vbrief-validation/types.d.ts +58 -0
  828. package/dist/vbrief-validation/types.js +2 -0
  829. package/dist/vbrief-validation/validation.d.ts +15 -0
  830. package/dist/vbrief-validation/validation.js +123 -0
  831. package/dist/verify-env/index.d.ts +6 -0
  832. package/dist/verify-env/index.js +6 -0
  833. package/dist/verify-env/node-runtime.d.ts +6 -0
  834. package/dist/verify-env/node-runtime.js +11 -0
  835. package/dist/verify-env/toolchain-check.d.ts +28 -0
  836. package/dist/verify-env/toolchain-check.js +68 -0
  837. package/dist/verify-env/verify-hooks-installed.d.ts +21 -0
  838. package/dist/verify-env/verify-hooks-installed.js +162 -0
  839. package/dist/verify-env/verify-no-task-runtime.d.ts +20 -0
  840. package/dist/verify-env/verify-no-task-runtime.js +383 -0
  841. package/dist/verify-env/verify-tools.d.ts +59 -0
  842. package/dist/verify-env/verify-tools.js +354 -0
  843. package/dist/verify-source/code-structure-validate.d.ts +48 -0
  844. package/dist/verify-source/code-structure-validate.js +678 -0
  845. package/dist/verify-source/content-manifest.d.ts +102 -0
  846. package/dist/verify-source/content-manifest.js +282 -0
  847. package/dist/verify-source/index.d.ts +7 -0
  848. package/dist/verify-source/index.js +7 -0
  849. package/dist/verify-source/python-call-scan.d.ts +14 -0
  850. package/dist/verify-source/python-call-scan.js +137 -0
  851. package/dist/verify-source/rule-ownership-lint.d.ts +33 -0
  852. package/dist/verify-source/rule-ownership-lint.js +179 -0
  853. package/dist/verify-source/scm-boundary.d.ts +26 -0
  854. package/dist/verify-source/scm-boundary.js +170 -0
  855. package/dist/verify-source/verify-stubs.d.ts +19 -0
  856. package/dist/verify-source/verify-stubs.js +185 -0
  857. package/dist/wip-cap/evaluate.d.ts +17 -0
  858. package/dist/wip-cap/evaluate.js +62 -0
  859. package/dist/wip-cap/index.d.ts +2 -0
  860. package/dist/wip-cap/index.js +2 -0
  861. package/package.json +206 -0
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env node
2
+ import { fileURLToPath } from "node:url";
3
+ import { EXIT_CONFIG_ERROR } from "./constants.js";
4
+ import { SWARM_WORKER_ROLES } from "./routing.js";
5
+ import { verifyRouting } from "./routing-verify.js";
6
+ export function routingVerifyMain(argv = process.argv.slice(2)) {
7
+ let projectRoot = ".";
8
+ let advise = false;
9
+ let provider = null;
10
+ const roles = [];
11
+ for (let i = 0; i < argv.length; i += 1) {
12
+ const arg = argv[i];
13
+ if (arg === "--project-root" && argv[i + 1] !== undefined) {
14
+ projectRoot = argv[i + 1] ?? ".";
15
+ i += 1;
16
+ }
17
+ else if (arg === "--advise") {
18
+ advise = true;
19
+ }
20
+ else if (arg === "--provider" && argv[i + 1] !== undefined) {
21
+ provider = argv[i + 1] ?? null;
22
+ i += 1;
23
+ }
24
+ else if (arg === "--roles" && argv[i + 1] !== undefined) {
25
+ for (const role of (argv[i + 1] ?? "").split(",")) {
26
+ if (role.trim().length > 0) {
27
+ roles.push(role.trim());
28
+ }
29
+ }
30
+ i += 1;
31
+ }
32
+ }
33
+ for (const role of roles) {
34
+ if (!SWARM_WORKER_ROLES.includes(role)) {
35
+ process.stderr.write(`Error: unknown role '${role}' (one of: ${SWARM_WORKER_ROLES.join(", ")}).\n`);
36
+ return EXIT_CONFIG_ERROR;
37
+ }
38
+ }
39
+ const result = verifyRouting({
40
+ projectRoot,
41
+ advise,
42
+ provider,
43
+ roles: roles.length > 0 ? roles : undefined,
44
+ });
45
+ process.stdout.write(`${result.report}\n`);
46
+ return result.exitCode;
47
+ }
48
+ if (process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1]) {
49
+ process.exit(routingVerifyMain());
50
+ }
51
+ //# sourceMappingURL=routing-verify-cli.js.map
@@ -0,0 +1,20 @@
1
+ export declare const ROUTING_SET_CMD = "task swarm:routing-set -- --role <role> --model <slug> (or --harness-default)";
2
+ /** Roles the pre-dispatch gate checks by default: the actual model lever. */
3
+ export declare const DEFAULT_GATED_ROLES: readonly ["leaf-implementation"];
4
+ export interface VerifyRoutingOptions {
5
+ projectRoot: string;
6
+ environ?: NodeJS.ProcessEnv;
7
+ roles?: readonly string[];
8
+ /** Session-start posture: surface, never block. */
9
+ advise?: boolean;
10
+ /** Override the resolved provider (else derived from the runtime). */
11
+ provider?: string | null;
12
+ /** Inject the runtime descriptor (else getPlatformCapabilities().runtimeMode). */
13
+ runtimeProbe?: () => string;
14
+ }
15
+ export interface VerifyRoutingResult {
16
+ exitCode: number;
17
+ report: string;
18
+ }
19
+ export declare function verifyRouting(options: VerifyRoutingOptions): VerifyRoutingResult;
20
+ //# sourceMappingURL=routing-verify.d.ts.map
@@ -0,0 +1,104 @@
1
+ /**
2
+ * verify:routing gate (#1739). Two postures over the same route file:
3
+ * - advise (session-start): surface unset routing as a disclosure line,
4
+ * never blocks (always exit 0).
5
+ * - enforce (pre-dispatch): a hard gate in the pre-`start_agent` /
6
+ * `swarm:launch` gate stack. Three-state exit:
7
+ * 0 = every in-scope role is decided (pinned or explicit harness-default)
8
+ * 1 = at least one in-scope role is undecided / not dispatchable
9
+ * 2 = config error (unreadable / malformed route file)
10
+ */
11
+ import { getPlatformCapabilities } from "../intake/platform-capabilities.js";
12
+ import { EXIT_CONFIG_ERROR, EXIT_GATE_FAILED, EXIT_OK } from "./constants.js";
13
+ import { dispatchProviderFromRuntime, HARNESS_BOUND_PROVIDERS, loadRoutingFile, ROUTING_MODE_HARNESS_DEFAULT, resolveModelRoute, resolveRoutingPath, } from "./routing.js";
14
+ export const ROUTING_SET_CMD = "task swarm:routing-set -- --role <role> --model <slug> (or --harness-default)";
15
+ /** Roles the pre-dispatch gate checks by default: the actual model lever. */
16
+ export const DEFAULT_GATED_ROLES = ["leaf-implementation"];
17
+ function resolveProvider(options) {
18
+ if (options.provider !== undefined && options.provider !== null && options.provider.length > 0) {
19
+ return options.provider;
20
+ }
21
+ const probe = options.runtimeProbe ?? (() => getPlatformCapabilities().runtimeMode);
22
+ let runtimeMode = "";
23
+ try {
24
+ runtimeMode = probe();
25
+ }
26
+ catch {
27
+ runtimeMode = "";
28
+ }
29
+ return dispatchProviderFromRuntime(runtimeMode);
30
+ }
31
+ export function verifyRouting(options) {
32
+ const roles = options.roles && options.roles.length > 0 ? options.roles : DEFAULT_GATED_ROLES;
33
+ const provider = resolveProvider(options);
34
+ const routingPath = resolveRoutingPath(options.projectRoot, options.environ);
35
+ const { data, error } = loadRoutingFile(routingPath);
36
+ if (error !== null) {
37
+ if (options.advise) {
38
+ return {
39
+ exitCode: EXIT_OK,
40
+ report: `[deft routing] route file unreadable (${error}); pre-dispatch gate will block until fixed.`,
41
+ };
42
+ }
43
+ return { exitCode: EXIT_CONFIG_ERROR, report: `routing gate misconfigured: ${error}` };
44
+ }
45
+ const undecided = [];
46
+ const invalid = [];
47
+ const resolvedLines = [];
48
+ const harnessBound = HARNESS_BOUND_PROVIDERS.has(provider);
49
+ for (const role of roles) {
50
+ const resolution = resolveModelRoute(data, provider, role);
51
+ if (!resolution.decided) {
52
+ undecided.push(role);
53
+ continue;
54
+ }
55
+ if (resolution.source === "invalid") {
56
+ invalid.push(`${role}: ${resolution.error ?? "invalid decision"}`);
57
+ continue;
58
+ }
59
+ if (harnessBound && resolution.mode !== ROUTING_MODE_HARNESS_DEFAULT) {
60
+ invalid.push(`${role}: provider '${provider}' is harness-bound -- only mode=harness-default is recordable (cannot pin model '${resolution.model ?? ""}').`);
61
+ continue;
62
+ }
63
+ const modelText = resolution.model ?? "<runtime default>";
64
+ resolvedLines.push(` ${role}: model ${modelText} (resolved-via ${resolution.source})`);
65
+ }
66
+ if (invalid.length > 0 && !options.advise) {
67
+ return {
68
+ exitCode: EXIT_CONFIG_ERROR,
69
+ report: `routing gate misconfigured for provider '${provider}':\n${invalid.map((l) => ` - ${l}`).join("\n")}`,
70
+ };
71
+ }
72
+ if (options.advise) {
73
+ if (undecided.length === 0 && invalid.length === 0) {
74
+ return {
75
+ exitCode: EXIT_OK,
76
+ report: `[deft routing] provider '${provider}': all ${roles.length} gated role(s) decided.`,
77
+ };
78
+ }
79
+ const parts = [];
80
+ if (undecided.length > 0) {
81
+ parts.push(`undecided role(s): ${undecided.join(", ")}`);
82
+ }
83
+ if (invalid.length > 0) {
84
+ parts.push(`invalid: ${invalid.length}`);
85
+ }
86
+ return {
87
+ exitCode: EXIT_OK,
88
+ report: `[deft routing] provider '${provider}' -- ${parts.join("; ")}. Decide before swarm dispatch: ${ROUTING_SET_CMD}`,
89
+ };
90
+ }
91
+ if (undecided.length > 0) {
92
+ return {
93
+ exitCode: EXIT_GATE_FAILED,
94
+ report: `routing gate: provider '${provider}' has undecided role(s): ${undecided.join(", ")}.\n` +
95
+ "Every dispatched role needs an explicit decision (pin a model or choose the harness default).\n" +
96
+ `Decide: ${ROUTING_SET_CMD}`,
97
+ };
98
+ }
99
+ return {
100
+ exitCode: EXIT_OK,
101
+ report: `routing gate: provider '${provider}' -- all gated role(s) decided.\n${resolvedLines.join("\n")}`,
102
+ };
103
+ }
104
+ //# sourceMappingURL=routing-verify.js.map
@@ -0,0 +1,57 @@
1
+ /**
2
+ * The fixed worker-role vocabulary (reused from #1531). No separate tier
3
+ * vocabulary to start; decisions are strictly per-role.
4
+ */
5
+ export declare const SWARM_WORKER_ROLES: readonly ["leaf-implementation", "orchestrator", "review-monitor", "merge-release"];
6
+ export type SwarmWorkerRole = (typeof SWARM_WORKER_ROLES)[number];
7
+ export declare const ROUTING_MODE_PINNED = "pinned";
8
+ export declare const ROUTING_MODE_HARNESS_DEFAULT = "harness-default";
9
+ export declare const ROUTING_FILENAME = "routing.local.json";
10
+ /** Providers whose model is harness-bound -- deft cannot pin or verify a slug. */
11
+ export declare const HARNESS_BOUND_PROVIDERS: Set<string>;
12
+ export interface RouteDecision {
13
+ model: string | null;
14
+ mode?: string;
15
+ decidedAt?: string;
16
+ }
17
+ export type RoutingFile = Record<string, Record<string, RouteDecision>>;
18
+ export interface RouteResolution {
19
+ /** true when the (provider, role) key is present -- a decision exists. */
20
+ decided: boolean;
21
+ /** pinned slug, or null for an explicit harness-default / undecided. */
22
+ model: string | null;
23
+ /** "pinned" | "harness-default" | null (undecided/invalid). */
24
+ mode: string | null;
25
+ /** "<provider>-route" | "harness-default explicit" | "undecided" | "invalid". */
26
+ source: string;
27
+ error: string | null;
28
+ }
29
+ /**
30
+ * Resolve the route-file path. Honors the `DEFT_ROUTING_PATH` override first
31
+ * (keeps both maintainer and consumer testable), then reads from the MAIN
32
+ * worktree root via `git rev-parse --git-common-dir` -> parent. The main-root
33
+ * read is deliberate: gitignored/untracked files are NOT copied into
34
+ * `git worktree add` directories, and swarm dispatches leaf coders from
35
+ * worktrees, so every worktree in a cohort must share the one local file.
36
+ */
37
+ export declare function resolveRoutingPath(startDir: string, environ?: NodeJS.ProcessEnv): string;
38
+ export declare function loadRoutingFile(path: string): {
39
+ data: RoutingFile | null;
40
+ error: string | null;
41
+ };
42
+ /**
43
+ * Resolve a (provider, role) route. Tri-state by KEY PRESENCE:
44
+ * - key present, model "<slug>" -> pinned
45
+ * - key present, model null -> explicit harness-default (a decision)
46
+ * - key absent -> undecided (fail loud upstream)
47
+ */
48
+ export declare function resolveModelRoute(file: RoutingFile | null, provider: string, role: string): RouteResolution;
49
+ /** Map a runtime descriptor (platform-capabilities.runtimeMode) to a route key. */
50
+ export declare function dispatchProviderFromRuntime(runtimeMode: string): string;
51
+ /**
52
+ * Write a decision back to the route file (create-if-missing). Stamps
53
+ * `decidedAt` when the caller did not supply one. Used by the interactive
54
+ * resolver path (resolver step 5) and the `swarm:routing-set` task.
55
+ */
56
+ export declare function writeModelDecision(path: string, provider: string, role: string, decision: RouteDecision): void;
57
+ //# sourceMappingURL=routing.d.ts.map
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Operator-specifiable coding sub-agent model routing (#1739).
3
+ *
4
+ * The selection lives in a per-project, per-machine, gitignored route file
5
+ * (`.deft/routing.local.json`) keyed by (dispatch_provider, worker_role) -> a
6
+ * decision object. Unlike the superseded `swarmSubagentBackend` enum (#1531 /
7
+ * #1735), which recorded intent but was never threaded into the spawn call,
8
+ * the resolved model is stamped into the launch manifest so the dispatch path
9
+ * can actually honor it.
10
+ *
11
+ * Load-bearing rule: "decided?" is tested by KEY PRESENCE, never by value
12
+ * truthiness -- an explicit `model: null` (mode: harness-default) is a
13
+ * decision, not absence. Testing truthiness would re-nag every session on an
14
+ * explicit default.
15
+ */
16
+ import { execFileSync } from "node:child_process";
17
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
18
+ import { dirname, isAbsolute, join, resolve } from "node:path";
19
+ /**
20
+ * The fixed worker-role vocabulary (reused from #1531). No separate tier
21
+ * vocabulary to start; decisions are strictly per-role.
22
+ */
23
+ export const SWARM_WORKER_ROLES = [
24
+ "leaf-implementation",
25
+ "orchestrator",
26
+ "review-monitor",
27
+ "merge-release",
28
+ ];
29
+ export const ROUTING_MODE_PINNED = "pinned";
30
+ export const ROUTING_MODE_HARNESS_DEFAULT = "harness-default";
31
+ export const ROUTING_FILENAME = "routing.local.json";
32
+ /** Providers whose model is harness-bound -- deft cannot pin or verify a slug. */
33
+ export const HARNESS_BOUND_PROVIDERS = new Set(["grok"]);
34
+ /**
35
+ * Resolve the route-file path. Honors the `DEFT_ROUTING_PATH` override first
36
+ * (keeps both maintainer and consumer testable), then reads from the MAIN
37
+ * worktree root via `git rev-parse --git-common-dir` -> parent. The main-root
38
+ * read is deliberate: gitignored/untracked files are NOT copied into
39
+ * `git worktree add` directories, and swarm dispatches leaf coders from
40
+ * worktrees, so every worktree in a cohort must share the one local file.
41
+ */
42
+ export function resolveRoutingPath(startDir, environ = process.env) {
43
+ const override = environ.DEFT_ROUTING_PATH;
44
+ if (override !== undefined && override.trim().length > 0) {
45
+ return resolve(override.trim());
46
+ }
47
+ let root = resolve(startDir);
48
+ try {
49
+ const out = execFileSync("git", ["rev-parse", "--git-common-dir"], {
50
+ cwd: startDir,
51
+ encoding: "utf8",
52
+ stdio: ["ignore", "pipe", "ignore"],
53
+ }).trim();
54
+ if (out.length > 0) {
55
+ const commonDir = isAbsolute(out) ? out : resolve(startDir, out);
56
+ root = dirname(commonDir);
57
+ }
58
+ }
59
+ catch {
60
+ // Not a git work tree -- fall back to startDir.
61
+ }
62
+ return join(root, ".deft", ROUTING_FILENAME);
63
+ }
64
+ export function loadRoutingFile(path) {
65
+ if (!existsSync(path)) {
66
+ return { data: null, error: null };
67
+ }
68
+ let parsed;
69
+ try {
70
+ parsed = JSON.parse(readFileSync(path, "utf8"));
71
+ }
72
+ catch (exc) {
73
+ return { data: null, error: `${path}: invalid JSON (${String(exc)}).` };
74
+ }
75
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
76
+ return { data: null, error: `${path}: routing file must be a JSON object.` };
77
+ }
78
+ return { data: parsed, error: null };
79
+ }
80
+ function providerBlockOf(file, provider) {
81
+ if (file === null) {
82
+ return null;
83
+ }
84
+ const block = file[provider];
85
+ if (typeof block !== "object" || block === null || Array.isArray(block)) {
86
+ return null;
87
+ }
88
+ return block;
89
+ }
90
+ /**
91
+ * Resolve a (provider, role) route. Tri-state by KEY PRESENCE:
92
+ * - key present, model "<slug>" -> pinned
93
+ * - key present, model null -> explicit harness-default (a decision)
94
+ * - key absent -> undecided (fail loud upstream)
95
+ */
96
+ export function resolveModelRoute(file, provider, role) {
97
+ const block = providerBlockOf(file, provider);
98
+ if (block === null || !(role in block)) {
99
+ return { decided: false, model: null, mode: null, source: "undecided", error: null };
100
+ }
101
+ const decision = block[role];
102
+ if (typeof decision !== "object" || decision === null || Array.isArray(decision)) {
103
+ return {
104
+ decided: true,
105
+ model: null,
106
+ mode: null,
107
+ source: "invalid",
108
+ error: `routing[${provider}][${role}] must be a decision object.`,
109
+ };
110
+ }
111
+ const model = decision.model;
112
+ const mode = typeof decision.mode === "string" && decision.mode.length > 0 ? decision.mode : null;
113
+ if (model === null) {
114
+ return {
115
+ decided: true,
116
+ model: null,
117
+ mode: mode ?? ROUTING_MODE_HARNESS_DEFAULT,
118
+ source: "harness-default explicit",
119
+ error: null,
120
+ };
121
+ }
122
+ if (typeof model === "string" && model.trim().length > 0) {
123
+ return {
124
+ decided: true,
125
+ model: model.trim(),
126
+ mode: mode ?? ROUTING_MODE_PINNED,
127
+ source: `${provider}-route`,
128
+ error: null,
129
+ };
130
+ }
131
+ return {
132
+ decided: true,
133
+ model: null,
134
+ mode,
135
+ source: "invalid",
136
+ error: `routing[${provider}][${role}].model must be a non-empty string or explicit null.`,
137
+ };
138
+ }
139
+ /** Map a runtime descriptor (platform-capabilities.runtimeMode) to a route key. */
140
+ export function dispatchProviderFromRuntime(runtimeMode) {
141
+ const normalized = runtimeMode.trim().toLowerCase();
142
+ if (normalized.length === 0) {
143
+ return "unknown";
144
+ }
145
+ if (normalized.includes("grok")) {
146
+ return "grok";
147
+ }
148
+ if (normalized.includes("cursor")) {
149
+ return "cursor";
150
+ }
151
+ return normalized;
152
+ }
153
+ /**
154
+ * Write a decision back to the route file (create-if-missing). Stamps
155
+ * `decidedAt` when the caller did not supply one. Used by the interactive
156
+ * resolver path (resolver step 5) and the `swarm:routing-set` task.
157
+ */
158
+ export function writeModelDecision(path, provider, role, decision) {
159
+ const { data } = loadRoutingFile(path);
160
+ const file = data ?? {};
161
+ const existing = providerBlockOf(file, provider);
162
+ const block = existing ?? {};
163
+ block[role] = {
164
+ model: decision.model,
165
+ mode: decision.mode ??
166
+ (decision.model === null ? ROUTING_MODE_HARNESS_DEFAULT : ROUTING_MODE_PINNED),
167
+ decidedAt: decision.decidedAt ?? new Date().toISOString(),
168
+ };
169
+ file[provider] = block;
170
+ mkdirSync(dirname(path), { recursive: true });
171
+ writeFileSync(path, `${JSON.stringify(file, null, 2)}\n`, "utf8");
172
+ }
173
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1,22 @@
1
+ import { LEAF_CODING_WORKER_ROLE } from "./constants.js";
2
+ export declare const KNOWN_SUBAGENT_BACKEND_IDS: Set<string>;
3
+ export interface SubagentBackendDescriptor {
4
+ readonly backend_id: string;
5
+ readonly display_name: string;
6
+ readonly roles: readonly string[];
7
+ readonly available: boolean;
8
+ }
9
+ export interface SwarmSubagentBackendResult {
10
+ readonly backend_id: string | null;
11
+ readonly source: string;
12
+ readonly error: string | null;
13
+ }
14
+ export declare function probeSubagentBackends(environ?: NodeJS.ProcessEnv): SubagentBackendDescriptor[];
15
+ export declare function resolveSwarmSubagentBackend(projectRoot: string): SwarmSubagentBackendResult;
16
+ export declare function dispatchProviderFor(backendId: string): string;
17
+ export declare function enforceSubagentBackendPolicy(projectRoot: string, environ?: NodeJS.ProcessEnv): {
18
+ backend: SubagentBackendDescriptor | null;
19
+ error: string | null;
20
+ };
21
+ export { LEAF_CODING_WORKER_ROLE };
22
+ //# sourceMappingURL=subagent-backend.d.ts.map
@@ -0,0 +1,162 @@
1
+ import { loadProjectDefinition } from "../policy/resolve.js";
2
+ import { LEAF_CODING_WORKER_ROLE, SUBAGENT_BACKEND_SET_CMD } from "./constants.js";
3
+ const TRUTHY = new Set(["1", "true", "yes", "on"]);
4
+ export const KNOWN_SUBAGENT_BACKEND_IDS = new Set(["composer", "grok-build", "cursor-cloud"]);
5
+ const SUBAGENT_BACKEND_CATALOG = {
6
+ composer: {
7
+ display_name: "Composer-class coding agent",
8
+ roles: ["leaf-implementation"],
9
+ },
10
+ "grok-build": {
11
+ display_name: "Grok Build (spawn_subagent)",
12
+ roles: ["leaf-implementation", "review-monitor"],
13
+ },
14
+ "cursor-cloud": {
15
+ display_name: "Cursor / cloud agent",
16
+ roles: ["leaf-implementation", "orchestrator", "review-monitor"],
17
+ },
18
+ };
19
+ function isTruthy(value) {
20
+ return value !== undefined && TRUTHY.has(value.trim().toLowerCase());
21
+ }
22
+ function probeBackendAvailable(backendId, environ = process.env) {
23
+ const envKey = `DEFT_PROBE_${backendId.toUpperCase().replace(/-/g, "_")}`;
24
+ const override = environ[envKey];
25
+ if (override !== undefined) {
26
+ return isTruthy(override);
27
+ }
28
+ if (backendId === "grok-build") {
29
+ const runtime = environ.DEFT_AGENT_RUNTIME?.trim().toLowerCase() ?? "";
30
+ return isTruthy(environ.GROK_BUILD) || runtime === "grok-build";
31
+ }
32
+ if (backendId === "composer") {
33
+ return isTruthy(environ.CURSOR_COMPOSER);
34
+ }
35
+ if (backendId === "cursor-cloud") {
36
+ return isTruthy(environ.CURSOR_AGENT);
37
+ }
38
+ return false;
39
+ }
40
+ export function probeSubagentBackends(environ = process.env) {
41
+ return [...KNOWN_SUBAGENT_BACKEND_IDS].sort().map((backendId) => {
42
+ const meta = SUBAGENT_BACKEND_CATALOG[backendId];
43
+ return {
44
+ backend_id: backendId,
45
+ display_name: meta?.display_name ?? backendId,
46
+ roles: meta?.roles ?? [],
47
+ available: probeBackendAvailable(backendId, environ),
48
+ };
49
+ });
50
+ }
51
+ function getPolicyBlock(data) {
52
+ const plan = data.plan;
53
+ if (typeof plan !== "object" || plan === null || Array.isArray(plan)) {
54
+ return {};
55
+ }
56
+ const policy = plan.policy;
57
+ if (typeof policy !== "object" || policy === null || Array.isArray(policy)) {
58
+ return {};
59
+ }
60
+ return policy;
61
+ }
62
+ export function resolveSwarmSubagentBackend(projectRoot) {
63
+ const [data, err] = loadProjectDefinition(projectRoot);
64
+ if (data === null) {
65
+ return { backend_id: null, source: "default", error: err };
66
+ }
67
+ const policyBlock = getPolicyBlock(data);
68
+ if (!("swarmSubagentBackend" in policyBlock)) {
69
+ return { backend_id: null, source: "default", error: null };
70
+ }
71
+ const raw = policyBlock.swarmSubagentBackend;
72
+ if (raw === null) {
73
+ return {
74
+ backend_id: null,
75
+ source: "typed",
76
+ error: "plan.policy.swarmSubagentBackend is explicitly null.",
77
+ };
78
+ }
79
+ if (typeof raw !== "string" || raw.trim().length === 0) {
80
+ return {
81
+ backend_id: null,
82
+ source: "typed",
83
+ error: `plan.policy.swarmSubagentBackend must be a non-empty string; got ${typeof raw}`,
84
+ };
85
+ }
86
+ const bid = raw.trim();
87
+ if (!KNOWN_SUBAGENT_BACKEND_IDS.has(bid)) {
88
+ return {
89
+ backend_id: bid,
90
+ source: "typed",
91
+ error: `plan.policy.swarmSubagentBackend must be one of ` +
92
+ `${JSON.stringify([...KNOWN_SUBAGENT_BACKEND_IDS].sort())}; got ${JSON.stringify(bid)}`,
93
+ };
94
+ }
95
+ return { backend_id: bid, source: "typed", error: null };
96
+ }
97
+ function formatProbedBackends(backends) {
98
+ return backends
99
+ .map((entry) => {
100
+ const avail = entry.available ? "available" : "unavailable";
101
+ return ` ${entry.backend_id} (${avail}; roles=[${entry.roles.join(", ")}])`;
102
+ })
103
+ .join("\n");
104
+ }
105
+ const DISPATCH_PROVIDER_BY_BACKEND = {
106
+ composer: "cursor",
107
+ "grok-build": "grok",
108
+ "cursor-cloud": "cursor",
109
+ };
110
+ export function dispatchProviderFor(backendId) {
111
+ return DISPATCH_PROVIDER_BY_BACKEND[backendId] ?? backendId;
112
+ }
113
+ export function enforceSubagentBackendPolicy(projectRoot, environ = process.env) {
114
+ const result = resolveSwarmSubagentBackend(projectRoot);
115
+ const probed = probeSubagentBackends(environ);
116
+ if (result.backend_id === null) {
117
+ const detail = result.error ?? "plan.policy.swarmSubagentBackend is not set.";
118
+ const listing = formatProbedBackends(probed);
119
+ return {
120
+ backend: null,
121
+ error: `${detail}\n` +
122
+ "Select a coding sub-agent backend before headless dispatch:\n" +
123
+ `${listing}\n` +
124
+ "Probe harness availability: task policy:subagent-backends\n" +
125
+ `Persist a choice: ${SUBAGENT_BACKEND_SET_CMD.replace("{backend_id}", "<id>")}`,
126
+ };
127
+ }
128
+ const selected = probed.find((e) => e.backend_id === result.backend_id) ?? null;
129
+ if (selected === null) {
130
+ const known = probed.map((e) => e.backend_id).join(", ");
131
+ return {
132
+ backend: null,
133
+ error: `plan.policy.swarmSubagentBackend=${JSON.stringify(result.backend_id)} is not a ` +
134
+ `known backend id (known: ${known}).\n` +
135
+ `Persist a valid choice: ${SUBAGENT_BACKEND_SET_CMD.replace("{backend_id}", "<id>")}`,
136
+ };
137
+ }
138
+ if (!selected.available) {
139
+ const availableIds = probed.filter((e) => e.available).map((e) => e.backend_id);
140
+ const availText = availableIds.length > 0 ? availableIds.join(", ") : "(none)";
141
+ return {
142
+ backend: null,
143
+ error: `plan.policy.swarmSubagentBackend=${JSON.stringify(result.backend_id)} is ` +
144
+ "unavailable in the current harness.\n" +
145
+ `Available backend ids: ${availText}\n` +
146
+ `Choose a different backend: ${SUBAGENT_BACKEND_SET_CMD.replace("{backend_id}", "<id>")}`,
147
+ };
148
+ }
149
+ if (!selected.roles.includes(LEAF_CODING_WORKER_ROLE)) {
150
+ const rolesText = selected.roles.length > 0 ? selected.roles.join(", ") : "(none)";
151
+ return {
152
+ backend: null,
153
+ error: `plan.policy.swarmSubagentBackend=${JSON.stringify(result.backend_id)} does not ` +
154
+ `support worker role ${JSON.stringify(LEAF_CODING_WORKER_ROLE)} ` +
155
+ `(roles=[${rolesText}]).\n` +
156
+ `Choose a leaf-implementation backend: ${SUBAGENT_BACKEND_SET_CMD.replace("{backend_id}", "<id>")}`,
157
+ };
158
+ }
159
+ return { backend: selected, error: null };
160
+ }
161
+ export { LEAF_CODING_WORKER_ROLE };
162
+ //# sourceMappingURL=subagent-backend.js.map
@@ -0,0 +1,10 @@
1
+ export interface TextCaptureResult {
2
+ readonly returncode: number;
3
+ readonly stdout: string;
4
+ readonly stderr: string;
5
+ }
6
+ /** UTF-8-safe subprocess capture — mirrors scripts/_safe_subprocess.run_text (#1366). */
7
+ export declare function runText(command: readonly string[], options?: {
8
+ cwd?: string;
9
+ }): TextCaptureResult;
10
+ //# sourceMappingURL=subprocess.d.ts.map
@@ -0,0 +1,34 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import { SUBPROCESS_MAX_BUFFER } from "../subprocess/max-buffer.js";
3
+ /** UTF-8-safe subprocess capture — mirrors scripts/_safe_subprocess.run_text (#1366). */
4
+ export function runText(command, options = {}) {
5
+ if (command.length === 0) {
6
+ return { returncode: -1, stdout: "", stderr: "empty command" };
7
+ }
8
+ const [binary, ...args] = command;
9
+ try {
10
+ const stdout = execFileSync(binary ?? "", args, {
11
+ cwd: options.cwd,
12
+ encoding: "utf8",
13
+ stdio: ["ignore", "pipe", "pipe"],
14
+ maxBuffer: SUBPROCESS_MAX_BUFFER,
15
+ });
16
+ return {
17
+ returncode: 0,
18
+ stdout: typeof stdout === "string" ? stdout : "",
19
+ stderr: "",
20
+ };
21
+ }
22
+ catch (err) {
23
+ const e = err;
24
+ if (e.code === "ENOENT") {
25
+ return { returncode: -1, stdout: "", stderr: String(e.message ?? "command not found") };
26
+ }
27
+ return {
28
+ returncode: typeof e.status === "number" ? e.status : -1,
29
+ stdout: typeof e.stdout === "string" ? e.stdout : "",
30
+ stderr: typeof e.stderr === "string" ? e.stderr : String(e.message ?? ""),
31
+ };
32
+ }
33
+ }
34
+ //# sourceMappingURL=subprocess.js.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export declare function verifyReviewCleanMain(argv?: string[]): number;
3
+ //# sourceMappingURL=verify-review-clean-cli.d.ts.map