@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,128 @@
1
+ export declare const VBRIEF_RECONCILE_MODULE: "vbrief-reconcile";
2
+ export interface ConflictEntry {
3
+ readonly taskId: string;
4
+ readonly title: string;
5
+ readonly dimensions: ReadonlyArray<{
6
+ readonly dimension: string;
7
+ readonly spec?: string;
8
+ readonly roadmap?: string;
9
+ readonly resolution: string;
10
+ }>;
11
+ readonly overridesApplied: readonly string[];
12
+ }
13
+ export interface ReconciliationReport {
14
+ readonly conflicts: ConflictEntry[];
15
+ readonly orphans: ReadonlyArray<{
16
+ readonly task_id: string;
17
+ readonly title: string;
18
+ }>;
19
+ readonly overridesTriggered: ReadonlyArray<Record<string, string>>;
20
+ readonly overridesUnused: readonly string[];
21
+ }
22
+ export interface SpecTaskEntry {
23
+ readonly item: Record<string, unknown>;
24
+ readonly specPhase: string;
25
+ }
26
+ export interface ReconciledItem {
27
+ readonly task_id: string;
28
+ readonly number: string;
29
+ readonly title: string;
30
+ readonly title_source: string;
31
+ readonly description: string;
32
+ readonly description_source: string;
33
+ readonly status: string;
34
+ readonly status_source: string;
35
+ readonly folder: string;
36
+ readonly phase: string;
37
+ readonly phase_description: string;
38
+ readonly tier: string;
39
+ readonly spec_phase: string;
40
+ readonly roadmap_summary: string;
41
+ readonly source_conflict: string;
42
+ readonly source_section: string;
43
+ readonly is_completed: boolean;
44
+ readonly override_applied: boolean;
45
+ readonly synthetic_id: string;
46
+ readonly original_task_id: string;
47
+ }
48
+ export interface Candidate {
49
+ readonly path: string;
50
+ readonly storyId: string;
51
+ readonly status: string;
52
+ readonly swarm: Record<string, unknown>;
53
+ blocked: string[];
54
+ }
55
+ export interface ReconcileGraphOutcome {
56
+ promoted: string[];
57
+ deferredWip: string[];
58
+ waiting: Array<{
59
+ story_id: string;
60
+ unresolved: string[];
61
+ }>;
62
+ cycles: string[];
63
+ errors: Array<{
64
+ story_id: string;
65
+ message: string;
66
+ }>;
67
+ cap: number;
68
+ count: number;
69
+ dryRun: boolean;
70
+ forced: boolean;
71
+ }
72
+ export interface LabelChange {
73
+ readonly story_id: string;
74
+ readonly repo: string;
75
+ readonly issue_number: number;
76
+ readonly current: string[];
77
+ readonly desired: string[];
78
+ readonly add: string[];
79
+ readonly remove: string[];
80
+ }
81
+ export interface ReconcileLabelsOutcome {
82
+ changed: LabelChange[];
83
+ unchanged: LabelChange[];
84
+ skipped_no_ref: string[];
85
+ errors: Array<{
86
+ story_id: string;
87
+ message: string;
88
+ }>;
89
+ dry_run: boolean;
90
+ }
91
+ export interface Child {
92
+ readonly story_id: string;
93
+ readonly title: string;
94
+ readonly kind: string;
95
+ readonly folder: string;
96
+ readonly depends_on: string[];
97
+ }
98
+ export interface UmbrellaChange {
99
+ readonly story_id: string;
100
+ readonly repo: string;
101
+ readonly issue_number: number;
102
+ readonly action: "created" | "edited" | "unchanged";
103
+ readonly pass_n: number;
104
+ readonly body: string;
105
+ }
106
+ export interface ReconcileUmbrellasOutcome {
107
+ changed: UmbrellaChange[];
108
+ unchanged: UmbrellaChange[];
109
+ skipped_no_ref: string[];
110
+ errors: Array<{
111
+ story_id: string;
112
+ message: string;
113
+ }>;
114
+ dry_run: boolean;
115
+ }
116
+ export interface LabelClient {
117
+ fetchLabels(repo: string, issueNumber: number): string[];
118
+ apply(repo: string, issueNumber: number, add: readonly string[], remove: readonly string[]): void;
119
+ }
120
+ export interface UmbrellaClient {
121
+ fetchComments(repo: string, issueNumber: number): ReadonlyArray<{
122
+ readonly id: number;
123
+ readonly body: string;
124
+ }>;
125
+ editComment(repo: string, commentId: number, body: string): void;
126
+ createComment(repo: string, issueNumber: number, body: string): number | null;
127
+ }
128
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,2 @@
1
+ export const VBRIEF_RECONCILE_MODULE = "vbrief-reconcile";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,48 @@
1
+ import type { Child, ReconcileUmbrellasOutcome, UmbrellaClient } from "./types.js";
2
+ export declare const OPEN_FOLDERS: readonly ["proposed", "pending", "active"];
3
+ export declare const CLOSED_FOLDERS: readonly ["completed", "cancelled"];
4
+ export declare const LIFECYCLE_FOLDERS: readonly ["proposed", "pending", "active", "completed", "cancelled"];
5
+ export declare const CHILD_REF_TYPE = "x-vbrief/plan";
6
+ export declare class UmbrellaScmError extends Error {
7
+ name: string;
8
+ }
9
+ export declare function childFromData(data: Record<string, unknown>, folder: string, fallbackId: string): Child;
10
+ export declare function buildChildIndex(vbriefDir: string): Record<string, Child>;
11
+ export declare function computeChildren(epicData: Record<string, unknown>, index: Record<string, Child>): Child[];
12
+ export declare function computeWaves(children: readonly Child[]): string[][];
13
+ export declare function renderBody(options: {
14
+ passN: number;
15
+ lastPassType: string;
16
+ lastUpdated: string;
17
+ openChildren: readonly Child[];
18
+ closedChildren: readonly Child[];
19
+ waves: readonly (readonly string[])[];
20
+ history: readonly (readonly [number, number])[];
21
+ }): string;
22
+ export interface ParsedShape {
23
+ passN: number | null;
24
+ history: Array<[number, number]>;
25
+ lastUpdated: string | null;
26
+ lastPassType: string | null;
27
+ }
28
+ export declare function parseCurrentShape(body: string): ParsedShape;
29
+ export declare function classifyPassType(prevTotal: number | null, total: number): string;
30
+ export declare class ScmUmbrellaClient implements UmbrellaClient {
31
+ fetchComments(repo: string, issueNumber: number): Array<{
32
+ id: number;
33
+ body: string;
34
+ }>;
35
+ editComment(repo: string, commentId: number, body: string): void;
36
+ createComment(repo: string, issueNumber: number, body: string): number | null;
37
+ }
38
+ export declare function nowIso(date?: Date): string;
39
+ export interface ReconcileUmbrellasOptions {
40
+ readonly repo?: string | null;
41
+ readonly dryRun?: boolean;
42
+ readonly client?: UmbrellaClient;
43
+ readonly now?: string;
44
+ }
45
+ export declare function reconcileUmbrellas(projectRoot: string, options?: ReconcileUmbrellasOptions): [number, ReconcileUmbrellasOutcome];
46
+ export declare function renderUmbrellasReport(outcome: ReconcileUmbrellasOutcome): string;
47
+ export declare function umbrellasOutcomeToJson(outcome: ReconcileUmbrellasOutcome): Record<string, unknown>;
48
+ //# sourceMappingURL=umbrellas.d.ts.map
@@ -0,0 +1,462 @@
1
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
+ import { basename, join, resolve } from "node:path";
3
+ import { call } from "../scm/call.js";
4
+ import { extractIssueRef } from "../triage/reconcile/parse-uri.js";
5
+ export const OPEN_FOLDERS = ["proposed", "pending", "active"];
6
+ export const CLOSED_FOLDERS = ["completed", "cancelled"];
7
+ export const LIFECYCLE_FOLDERS = [...OPEN_FOLDERS, ...CLOSED_FOLDERS];
8
+ export const CHILD_REF_TYPE = "x-vbrief/plan";
9
+ const SCM_SOURCE = "github-issue";
10
+ const HEADER_RE = /^## Current shape \(as of pass-(\d+)\)/m;
11
+ // ReDoS-hardened (#1782 s4 / CodeQL js/polynomial-redos): the original
12
+ // `\s*(.*)$` let `\s*` and `.*` both match horizontal whitespace (overlapping
13
+ // repetitions). Replacing the capture with `(\S.*|)` makes `\s*`'s successor
14
+ // disjoint (starts with a non-whitespace char) while the empty alternation
15
+ // preserves the exact `""`-not-undefined capture of an all-whitespace tail.
16
+ // Captured language is byte-identical to the frozen Python oracle
17
+ // (`r"^...:\s*(.*)$"`, re.MULTILINE) for every input.
18
+ const HISTORY_RE = /^Child-count history:\s*(\S.*|)$/m;
19
+ const LAST_UPDATED_RE = /^Last updated:\s*(\S.*|)$/m;
20
+ const LAST_PASS_TYPE_RE = /^Last pass type:\s*(\S.*|)$/m;
21
+ const HISTORY_TOKEN_RE = /^\s*pass-(\d+):\s*(\d+)\s*$/;
22
+ const READING_ORDER = "1. Read the umbrella issue body.\n" +
23
+ "2. Read this current-shape comment.\n" +
24
+ "3. Read the amendment comments in chronological order for the full audit trail.";
25
+ export class UmbrellaScmError extends Error {
26
+ name = "UmbrellaScmError";
27
+ }
28
+ function readJson(path) {
29
+ try {
30
+ const data = JSON.parse(readFileSync(path, "utf8"));
31
+ return typeof data === "object" && data !== null && !Array.isArray(data)
32
+ ? data
33
+ : null;
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ export function childFromData(data, folder, fallbackId) {
40
+ const plan = typeof data.plan === "object" && data.plan !== null && !Array.isArray(data.plan)
41
+ ? data.plan
42
+ : {};
43
+ const metadata = typeof plan.metadata === "object" && plan.metadata !== null && !Array.isArray(plan.metadata)
44
+ ? plan.metadata
45
+ : {};
46
+ const swarm = typeof metadata.swarm === "object" && metadata.swarm !== null && !Array.isArray(metadata.swarm)
47
+ ? metadata.swarm
48
+ : {};
49
+ const rawDeps = swarm.depends_on;
50
+ const dependsOn = Array.isArray(rawDeps) ? rawDeps.map((d) => String(d)) : [];
51
+ return {
52
+ story_id: String(plan.id ?? fallbackId),
53
+ title: String(plan.title ?? plan.id ?? fallbackId),
54
+ kind: String(metadata.kind ?? "story"),
55
+ folder,
56
+ depends_on: dependsOn,
57
+ };
58
+ }
59
+ export function buildChildIndex(vbriefDir) {
60
+ const index = {};
61
+ for (const folder of LIFECYCLE_FOLDERS) {
62
+ const folderPath = join(vbriefDir, folder);
63
+ if (!existsSync(folderPath))
64
+ continue;
65
+ const files = readdirSync(folderPath)
66
+ .filter((f) => f.endsWith(".vbrief.json"))
67
+ .sort();
68
+ for (const file of files) {
69
+ const path = join(folderPath, file);
70
+ const data = readJson(path);
71
+ if (!data)
72
+ continue;
73
+ const fallbackId = file.slice(0, -".vbrief.json".length);
74
+ index[file] = childFromData(data, folder, fallbackId);
75
+ }
76
+ }
77
+ return index;
78
+ }
79
+ export function computeChildren(epicData, index) {
80
+ const plan = typeof epicData.plan === "object" && epicData.plan !== null && !Array.isArray(epicData.plan)
81
+ ? epicData.plan
82
+ : {};
83
+ const refs = plan.references;
84
+ const children = [];
85
+ const seen = new Set();
86
+ if (!Array.isArray(refs))
87
+ return children;
88
+ for (const ref of refs) {
89
+ if (typeof ref !== "object" || ref === null || Array.isArray(ref))
90
+ continue;
91
+ const rec = ref;
92
+ if (rec.type !== CHILD_REF_TYPE)
93
+ continue;
94
+ const name = basename(String(rec.uri ?? ""));
95
+ const child = index[name];
96
+ if (!child || seen.has(child.story_id))
97
+ continue;
98
+ seen.add(child.story_id);
99
+ children.push(child);
100
+ }
101
+ return children;
102
+ }
103
+ export function computeWaves(children) {
104
+ const ids = new Set(children.map((c) => c.story_id));
105
+ const deps = {};
106
+ for (const c of children) {
107
+ deps[c.story_id] = c.depends_on.filter((d) => ids.has(d));
108
+ }
109
+ const resolved = new Set();
110
+ const remaining = new Set(ids);
111
+ const waves = [];
112
+ while (remaining.size > 0) {
113
+ const layer = [...remaining]
114
+ .filter((r) => (deps[r] ?? []).every((d) => resolved.has(d)))
115
+ .sort();
116
+ if (layer.length === 0) {
117
+ waves.push([...remaining].sort());
118
+ break;
119
+ }
120
+ waves.push(layer);
121
+ for (const id of layer) {
122
+ resolved.add(id);
123
+ remaining.delete(id);
124
+ }
125
+ }
126
+ return waves;
127
+ }
128
+ function bulletBlock(lines) {
129
+ return lines.length > 0 ? lines.join("\n") : "- none";
130
+ }
131
+ export function renderBody(options) {
132
+ const total = options.openChildren.length + options.closedChildren.length;
133
+ const historyStr = options.history.map(([n, count]) => `pass-${n}: ${count}`).join(", ");
134
+ const openLines = options.openChildren.map((c) => `- ${c.story_id}: ${c.title} (${c.kind})`);
135
+ const closedLines = options.closedChildren.map((c) => `- ${c.story_id}: ${c.title} (${c.folder})`);
136
+ const waveLines = options.waves.map((layer, i) => `- Wave ${i + 1}: ${layer.join(", ")}`);
137
+ return (`## Current shape (as of pass-${options.passN})\n` +
138
+ "\n" +
139
+ `Last updated: ${options.lastUpdated}\n` +
140
+ `Last pass type: ${options.lastPassType}\n` +
141
+ `Child count: ${total} (${options.openChildren.length}/${options.closedChildren.length})\n` +
142
+ `Child-count history: ${historyStr}\n` +
143
+ "\n" +
144
+ "### Open children\n" +
145
+ "\n" +
146
+ `${bulletBlock(openLines)}\n` +
147
+ "\n" +
148
+ "### Closed children\n" +
149
+ "\n" +
150
+ `${bulletBlock(closedLines)}\n` +
151
+ "\n" +
152
+ "### Wave order\n" +
153
+ "\n" +
154
+ `${bulletBlock(waveLines)}\n` +
155
+ "\n" +
156
+ "### Open questions\n" +
157
+ "\n" +
158
+ "- none\n" +
159
+ "\n" +
160
+ "### Reading order for fresh contributors\n" +
161
+ "\n" +
162
+ READING_ORDER);
163
+ }
164
+ function parseHistory(raw) {
165
+ const history = [];
166
+ for (const token of raw.split(",")) {
167
+ const match = HISTORY_TOKEN_RE.exec(token);
168
+ if (match?.[1] && match[2])
169
+ history.push([Number(match[1]), Number(match[2])]);
170
+ }
171
+ return history;
172
+ }
173
+ export function parseCurrentShape(body) {
174
+ const header = HEADER_RE.exec(body);
175
+ if (!header?.[1])
176
+ return { passN: null, history: [], lastUpdated: null, lastPassType: null };
177
+ const historyMatch = HISTORY_RE.exec(body);
178
+ const updatedMatch = LAST_UPDATED_RE.exec(body);
179
+ const passTypeMatch = LAST_PASS_TYPE_RE.exec(body);
180
+ return {
181
+ passN: Number(header[1]),
182
+ history: historyMatch?.[1] ? parseHistory(historyMatch[1]) : [],
183
+ lastUpdated: updatedMatch?.[1]?.trim() ?? null,
184
+ lastPassType: passTypeMatch?.[1]?.trim() ?? null,
185
+ };
186
+ }
187
+ export function classifyPassType(prevTotal, total) {
188
+ if (prevTotal === null)
189
+ return "refactor";
190
+ if (total > prevTotal)
191
+ return "additive";
192
+ if (total < prevTotal)
193
+ return "subtractive";
194
+ return "refactor";
195
+ }
196
+ function hasCurrentShape(body) {
197
+ return HEADER_RE.test(body);
198
+ }
199
+ export class ScmUmbrellaClient {
200
+ fetchComments(repo, issueNumber) {
201
+ const proc = call(SCM_SOURCE, "api", [
202
+ `repos/${repo}/issues/${issueNumber}/comments?per_page=100`,
203
+ ]);
204
+ if (proc.returncode !== 0) {
205
+ throw new UmbrellaScmError(`list comments #${issueNumber} (${repo}) failed: ${(proc.stderr || "").trim()}`);
206
+ }
207
+ let data;
208
+ try {
209
+ data = JSON.parse(proc.stdout || "[]");
210
+ }
211
+ catch (exc) {
212
+ throw new UmbrellaScmError(`list comments #${issueNumber} (${repo}) returned non-JSON: ${String(exc)}`);
213
+ }
214
+ if (!Array.isArray(data))
215
+ return [];
216
+ const comments = [];
217
+ for (const entry of data) {
218
+ if (typeof entry === "object" &&
219
+ entry !== null &&
220
+ !Array.isArray(entry) &&
221
+ typeof entry.id === "number" &&
222
+ typeof entry.body === "string") {
223
+ const rec = entry;
224
+ comments.push({ id: rec.id, body: rec.body });
225
+ }
226
+ }
227
+ return comments;
228
+ }
229
+ editComment(repo, commentId, body) {
230
+ const proc = call(SCM_SOURCE, "api", ["-X", "PATCH", `repos/${repo}/issues/comments/${commentId}`, "--input", "-"], { input: JSON.stringify({ body }) });
231
+ if (proc.returncode !== 0) {
232
+ throw new UmbrellaScmError(`edit comment ${commentId} (${repo}) failed: ${(proc.stderr || "").trim()}`);
233
+ }
234
+ }
235
+ createComment(repo, issueNumber, body) {
236
+ const proc = call(SCM_SOURCE, "api", ["-X", "POST", `repos/${repo}/issues/${issueNumber}/comments`, "--input", "-"], { input: JSON.stringify({ body }) });
237
+ if (proc.returncode !== 0) {
238
+ throw new UmbrellaScmError(`create comment #${issueNumber} (${repo}) failed: ${(proc.stderr || "").trim()}`);
239
+ }
240
+ try {
241
+ const data = JSON.parse(proc.stdout || "{}");
242
+ return typeof data.id === "number" ? data.id : null;
243
+ }
244
+ catch {
245
+ return null;
246
+ }
247
+ }
248
+ }
249
+ function planShape(epicData, index) {
250
+ const children = computeChildren(epicData, index);
251
+ const openChildren = children
252
+ .filter((c) => OPEN_FOLDERS.includes(c.folder))
253
+ .sort((a, b) => a.story_id.localeCompare(b.story_id));
254
+ const closedChildren = children
255
+ .filter((c) => !OPEN_FOLDERS.includes(c.folder))
256
+ .sort((a, b) => a.story_id.localeCompare(b.story_id));
257
+ const waves = computeWaves(children);
258
+ return [openChildren, closedChildren, waves];
259
+ }
260
+ function reconcileOneEpic(epicData, index, options) {
261
+ const [openChildren, closedChildren, waves] = planShape(epicData, index);
262
+ const total = openChildren.length + closedChildren.length;
263
+ const comments = options.client.fetchComments(options.repo, options.number);
264
+ const existing = comments.find((c) => hasCurrentShape(c.body));
265
+ if (!existing) {
266
+ const body = renderBody({
267
+ passN: 1,
268
+ lastPassType: "additive",
269
+ lastUpdated: options.now,
270
+ openChildren,
271
+ closedChildren,
272
+ waves,
273
+ history: [[1, total]],
274
+ });
275
+ if (!options.dryRun)
276
+ options.client.createComment(options.repo, options.number, body);
277
+ return {
278
+ story_id: options.storyId,
279
+ repo: options.repo,
280
+ issue_number: options.number,
281
+ action: "created",
282
+ pass_n: 1,
283
+ body,
284
+ };
285
+ }
286
+ const parsed = parseCurrentShape(existing.body);
287
+ const prevPass = parsed.passN ?? 1;
288
+ const prevTotal = parsed.history.length > 0 ? (parsed.history[parsed.history.length - 1]?.[1] ?? null) : null;
289
+ const candidate = renderBody({
290
+ passN: prevPass,
291
+ lastPassType: parsed.lastPassType ?? "refactor",
292
+ lastUpdated: parsed.lastUpdated ?? options.now,
293
+ openChildren,
294
+ closedChildren,
295
+ waves,
296
+ history: parsed.history.length > 0 ? parsed.history : [[prevPass, total]],
297
+ });
298
+ if (candidate === existing.body) {
299
+ return {
300
+ story_id: options.storyId,
301
+ repo: options.repo,
302
+ issue_number: options.number,
303
+ action: "unchanged",
304
+ pass_n: prevPass,
305
+ body: candidate,
306
+ };
307
+ }
308
+ const passN = prevPass + 1;
309
+ const body = renderBody({
310
+ passN,
311
+ lastPassType: classifyPassType(prevTotal, total),
312
+ lastUpdated: options.now,
313
+ openChildren,
314
+ closedChildren,
315
+ waves,
316
+ history: [...parsed.history, [passN, total]],
317
+ });
318
+ if (!options.dryRun)
319
+ options.client.editComment(options.repo, existing.id, body);
320
+ return {
321
+ story_id: options.storyId,
322
+ repo: options.repo,
323
+ issue_number: options.number,
324
+ action: "edited",
325
+ pass_n: passN,
326
+ body,
327
+ };
328
+ }
329
+ export function nowIso(date = new Date()) {
330
+ return date.toISOString().replace(/\.\d{3}Z$/, "Z");
331
+ }
332
+ export function reconcileUmbrellas(projectRoot, options = {}) {
333
+ const root = resolve(projectRoot);
334
+ const vbriefDir = join(root, "vbrief");
335
+ if (!existsSync(vbriefDir)) {
336
+ return [
337
+ 2,
338
+ {
339
+ changed: [],
340
+ unchanged: [],
341
+ skipped_no_ref: [],
342
+ errors: [],
343
+ dry_run: options.dryRun ?? false,
344
+ },
345
+ ];
346
+ }
347
+ const client = options.client ?? new ScmUmbrellaClient();
348
+ const now = options.now ?? nowIso();
349
+ const index = buildChildIndex(vbriefDir);
350
+ const outcome = {
351
+ changed: [],
352
+ unchanged: [],
353
+ skipped_no_ref: [],
354
+ errors: [],
355
+ dry_run: options.dryRun ?? false,
356
+ };
357
+ const seenIssues = new Set();
358
+ for (const folder of LIFECYCLE_FOLDERS) {
359
+ const folderPath = join(vbriefDir, folder);
360
+ if (!existsSync(folderPath))
361
+ continue;
362
+ const files = readdirSync(folderPath)
363
+ .filter((f) => f.endsWith(".vbrief.json"))
364
+ .sort();
365
+ for (const file of files) {
366
+ const path = join(folderPath, file);
367
+ const data = readJson(path);
368
+ if (!data)
369
+ continue;
370
+ const plan = typeof data.plan === "object" && data.plan !== null && !Array.isArray(data.plan)
371
+ ? data.plan
372
+ : {};
373
+ const metadata = typeof plan.metadata === "object" && plan.metadata !== null && !Array.isArray(plan.metadata)
374
+ ? plan.metadata
375
+ : {};
376
+ if (metadata.kind !== "epic")
377
+ continue;
378
+ const storyId = String(plan.id ?? file.slice(0, -".vbrief.json".length));
379
+ const [refRepo, number] = extractIssueRef(data);
380
+ const effectiveRepo = refRepo ?? options.repo ?? null;
381
+ if (number === null || effectiveRepo === null) {
382
+ outcome.skipped_no_ref.push(storyId);
383
+ continue;
384
+ }
385
+ const key = `${effectiveRepo}:${number}`;
386
+ if (seenIssues.has(key))
387
+ continue;
388
+ seenIssues.add(key);
389
+ try {
390
+ const change = reconcileOneEpic(data, index, {
391
+ storyId,
392
+ repo: effectiveRepo,
393
+ number,
394
+ client,
395
+ dryRun: options.dryRun ?? false,
396
+ now,
397
+ });
398
+ if (change.action === "unchanged")
399
+ outcome.unchanged.push(change);
400
+ else
401
+ outcome.changed.push(change);
402
+ }
403
+ catch (exc) {
404
+ outcome.errors.push({ story_id: storyId, message: String(exc) });
405
+ }
406
+ }
407
+ }
408
+ return [outcome.errors.length > 0 ? 1 : 0, outcome];
409
+ }
410
+ export function renderUmbrellasReport(outcome) {
411
+ const lines = ["vBRIEF reconcile umbrellas", ""];
412
+ const suffix = outcome.dry_run ? " (dry-run)" : "";
413
+ lines.push(`Changed${suffix}:`);
414
+ if (outcome.changed.length > 0) {
415
+ for (const c of outcome.changed) {
416
+ lines.push(`- #${c.issue_number} (${c.repo}) [${c.story_id}]: ${c.action} -> pass-${c.pass_n}`);
417
+ }
418
+ }
419
+ else {
420
+ lines.push("- none");
421
+ }
422
+ lines.push("");
423
+ lines.push("Unchanged:");
424
+ if (outcome.unchanged.length > 0) {
425
+ for (const c of outcome.unchanged) {
426
+ lines.push(`- #${c.issue_number} (${c.repo}) [${c.story_id}]: pass-${c.pass_n}`);
427
+ }
428
+ }
429
+ else {
430
+ lines.push("- none");
431
+ }
432
+ if (outcome.skipped_no_ref.length > 0) {
433
+ lines.push("");
434
+ lines.push("Skipped (no github-issue reference / repo):");
435
+ for (const sid of outcome.skipped_no_ref)
436
+ lines.push(`- ${sid}`);
437
+ }
438
+ if (outcome.errors.length > 0) {
439
+ lines.push("");
440
+ lines.push("Errors:");
441
+ for (const err of outcome.errors)
442
+ lines.push(`- ${err.story_id}: ${err.message}`);
443
+ }
444
+ return lines.join("\n");
445
+ }
446
+ export function umbrellasOutcomeToJson(outcome) {
447
+ const toChange = (c) => ({
448
+ story_id: c.story_id,
449
+ repo: c.repo,
450
+ issue_number: c.issue_number,
451
+ action: c.action,
452
+ pass_n: c.pass_n,
453
+ });
454
+ return {
455
+ changed: outcome.changed.map(toChange),
456
+ unchanged: outcome.unchanged.map(toChange),
457
+ skipped_no_ref: [...outcome.skipped_no_ref],
458
+ errors: outcome.errors.map((e) => ({ story_id: e.story_id, message: e.message })),
459
+ dry_run: outcome.dry_run,
460
+ };
461
+ }
462
+ //# sourceMappingURL=umbrellas.js.map
@@ -0,0 +1,26 @@
1
+ export declare const DOC_CORE: Set<string>;
2
+ export declare const PLAN_CORE: Set<string>;
3
+ export declare const ITEM_CORE: Set<string>;
4
+ export declare const EXTENSION_PREFIXES: readonly ["x-directive/", "x-vbrief/"];
5
+ export declare const ALLOW_LIST: Set<string>;
6
+ export interface ConformanceFinding {
7
+ readonly path: string;
8
+ readonly level: string;
9
+ readonly key: string;
10
+ readonly location: string;
11
+ }
12
+ export declare function renderFinding(finding: ConformanceFinding): string;
13
+ /** Scan a parsed vBRIEF document for bare keys at doc / plan / item level (#1620). */
14
+ export declare function scanVbrief(relPath: string, data: unknown): ConformanceFinding[];
15
+ export type ConformanceMode = "all" | "staged";
16
+ export interface ConformanceEvaluateResult {
17
+ readonly exitCode: number;
18
+ readonly findings: readonly ConformanceFinding[];
19
+ readonly message: string;
20
+ }
21
+ /** Pure driver returning exit code, findings, and human message. */
22
+ export declare function evaluateConformance(projectRoot: string, options?: {
23
+ mode?: ConformanceMode;
24
+ allowListPath?: string | null;
25
+ }): ConformanceEvaluateResult;
26
+ //# sourceMappingURL=conformance.d.ts.map