@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,11 @@
1
+ export declare class NonPublishableVersionError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ /** Raise Error when version does not match strict X.Y.Z semver. */
5
+ export declare function validateVersion(version: string): void;
6
+ /** Return true when version carries a SemVer pre-release suffix (#425). */
7
+ export declare function isPrereleaseTag(version: string): boolean;
8
+ /** Normalize a semver-shaped release tag to a PEP 440 version string (#771). */
9
+ export declare function toPep440(version: string): string;
10
+ export declare function isPublishable(version: string): boolean;
11
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1,74 @@
1
+ const PEP440_TAG_RE = /^v?(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)(?:-(?<kind>rc|alpha|beta|test)\.(?<num>\d+))?$/;
2
+ const PRE_KIND_MAP = {
3
+ alpha: "a",
4
+ beta: "b",
5
+ rc: "rc",
6
+ };
7
+ const NON_PUBLISHABLE_KINDS = new Set(["test"]);
8
+ export class NonPublishableVersionError extends Error {
9
+ constructor(message) {
10
+ super(message);
11
+ this.name = "NonPublishableVersionError";
12
+ }
13
+ }
14
+ /** Raise Error when version does not match strict X.Y.Z semver. */
15
+ export function validateVersion(version) {
16
+ if (!/^\d+\.\d+\.\d+$/.test(version)) {
17
+ throw new Error(`Invalid version '${version}'. Expected strict semver X.Y.Z ` +
18
+ "(no leading 'v', no pre-release suffix).");
19
+ }
20
+ }
21
+ /** Return true when version carries a SemVer pre-release suffix (#425). */
22
+ export function isPrereleaseTag(version) {
23
+ let candidate = version.trim();
24
+ if (candidate.startsWith("v")) {
25
+ candidate = candidate.slice(1);
26
+ }
27
+ return candidate.includes("-");
28
+ }
29
+ /** Normalize a semver-shaped release tag to a PEP 440 version string (#771). */
30
+ export function toPep440(version) {
31
+ if (typeof version !== "string") {
32
+ throw new Error(`version must be a string, got ${typeof version}`);
33
+ }
34
+ const candidate = version.trim();
35
+ if (!candidate) {
36
+ throw new Error("version must be a non-empty string");
37
+ }
38
+ const match = PEP440_TAG_RE.exec(candidate);
39
+ if (match?.groups === undefined) {
40
+ throw new Error(`Cannot normalize '${candidate}' to PEP 440: expected ` +
41
+ "[v]X.Y.Z or [v]X.Y.Z-(rc|alpha|beta|test).N");
42
+ }
43
+ const major = Number(match.groups.major);
44
+ const minor = Number(match.groups.minor);
45
+ const patch = Number(match.groups.patch);
46
+ const base = `${major}.${minor}.${patch}`;
47
+ const kind = match.groups.kind;
48
+ if (kind === undefined) {
49
+ return base;
50
+ }
51
+ if (NON_PUBLISHABLE_KINDS.has(kind)) {
52
+ throw new NonPublishableVersionError(`Version '${candidate}' carries non-publishable pre-release ` +
53
+ `tag '${kind}'.${match.groups.num} -- release pipeline MUST ` +
54
+ "skip pyproject.toml [project].version sync for this tag.");
55
+ }
56
+ const pepKind = PRE_KIND_MAP[kind];
57
+ if (pepKind === undefined) {
58
+ throw new Error(`Unmapped pre-release kind '${kind}' for version '${candidate}'; ` +
59
+ "add it to _PRE_KIND_MAP or _NON_PUBLISHABLE_KINDS to keep " +
60
+ "_PEP440_TAG_RE in lockstep with the publishability classifier.");
61
+ }
62
+ const pepNum = Number(match.groups.num);
63
+ return `${base}${pepKind}${pepNum}`;
64
+ }
65
+ export function isPublishable(version) {
66
+ try {
67
+ toPep440(version);
68
+ return true;
69
+ }
70
+ catch {
71
+ return false;
72
+ }
73
+ }
74
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1,22 @@
1
+ /** Exit codes mirroring scripts/release_e2e.py (via scripts/release.py). */
2
+ export declare const EXIT_OK = 0;
3
+ export declare const EXIT_VIOLATION = 1;
4
+ export declare const EXIT_CONFIG_ERROR = 2;
5
+ export declare const DEFAULT_OWNER = "deftai";
6
+ export declare const REPO_SLUG_PREFIX = "deftai-release-test-";
7
+ /** Fixed sentinel rehearsal version (#720). */
8
+ export declare const REHEARSAL_VERSION = "0.0.1";
9
+ /**
10
+ * #1910: dependency order for the npm publish dry-run rehearsal, mirroring
11
+ * .github/workflows/npm-publish.yml (types -> core -> content -> cli).
12
+ */
13
+ export declare const NPM_PUBLISH_PACKAGES: readonly ["types", "core", "content", "cli"];
14
+ export declare const NPM_INSTALL_TIMEOUT_SECONDS = 600;
15
+ export declare const NPM_BUILD_TIMEOUT_SECONDS = 600;
16
+ export declare const NPM_PUBLISH_DRYRUN_TIMEOUT_SECONDS = 180;
17
+ export declare const RELEASE_ENTRYPOINT_TIMEOUT_SECONDS = 600;
18
+ export declare const ROLLBACK_ENTRYPOINT_TIMEOUT_SECONDS = 300;
19
+ export declare const ENTRYPOINT_TIMEOUT_EXIT_CODE = 124;
20
+ /** Byte-identical --help from scripts/release_e2e.py (Python 3.12 argparse). */
21
+ export declare const RELEASE_E2E_HELP: string;
22
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1,43 @@
1
+ /** Exit codes mirroring scripts/release_e2e.py (via scripts/release.py). */
2
+ export const EXIT_OK = 0;
3
+ export const EXIT_VIOLATION = 1;
4
+ export const EXIT_CONFIG_ERROR = 2;
5
+ export const DEFAULT_OWNER = "deftai";
6
+ export const REPO_SLUG_PREFIX = "deftai-release-test-";
7
+ /** Fixed sentinel rehearsal version (#720). */
8
+ export const REHEARSAL_VERSION = "0.0.1";
9
+ /**
10
+ * #1910: dependency order for the npm publish dry-run rehearsal, mirroring
11
+ * .github/workflows/npm-publish.yml (types -> core -> content -> cli).
12
+ */
13
+ export const NPM_PUBLISH_PACKAGES = ["types", "core", "content", "cli"];
14
+ export const NPM_INSTALL_TIMEOUT_SECONDS = 600;
15
+ export const NPM_BUILD_TIMEOUT_SECONDS = 600;
16
+ export const NPM_PUBLISH_DRYRUN_TIMEOUT_SECONDS = 180;
17
+ export const RELEASE_ENTRYPOINT_TIMEOUT_SECONDS = 600.0;
18
+ export const ROLLBACK_ENTRYPOINT_TIMEOUT_SECONDS = 300.0;
19
+ export const ENTRYPOINT_TIMEOUT_EXIT_CODE = 124;
20
+ /** Byte-identical --help from scripts/release_e2e.py (Python 3.12 argparse). */
21
+ export const RELEASE_E2E_HELP = "usage: release_e2e [-h] [--owner OWNER] [--dry-run] [--keep-repo]\n" +
22
+ " [--project-root PATH] [--skip-npm]\n" +
23
+ "\n" +
24
+ "End-to-end release rehearsal against an auto-created+destroyed temp GitHub\n" +
25
+ "repo (#716 safety hardening Q1).\n" +
26
+ "\n" +
27
+ "options:\n" +
28
+ " -h, --help show this help message and exit\n" +
29
+ " --owner OWNER GitHub owner under which to create the temp repo\n" +
30
+ " (default: deftai).\n" +
31
+ " --dry-run Print the pipeline plan without invoking gh.\n" +
32
+ " --keep-repo Skip destroying the temp repo at the end (use only when\n" +
33
+ " manually debugging a failed rehearsal; remember to\n" +
34
+ " clean up by hand).\n" +
35
+ " --project-root PATH Repository root (default: $DEFT_PROJECT_ROOT or\n" +
36
+ " scripts/.. ).\n" +
37
+ " --skip-npm Skip the npm publish dry-run rehearsal step (#1910).\n" +
38
+ " The step installs + builds the workspace, which exceeds\n" +
39
+ " the <90s fast budget that --skip-ci/--skip-build\n" +
40
+ " protect; use this to keep the rehearsal fast. The step\n" +
41
+ " also soft-skips on its own when npm is absent from\n" +
42
+ " PATH.\n";
43
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entrypoint-worker-thread.d.ts.map
@@ -0,0 +1,22 @@
1
+ /* v8 ignore start -- worker-thread bootstrap; exercised via runEntrypointWorker integration. */
2
+ import { parentPort, workerData } from "node:worker_threads";
3
+ import { runWorkerEntrypoint } from "./entrypoint-worker.js";
4
+ const data = workerData;
5
+ const result = runWorkerEntrypoint(data);
6
+ const target = data.port ?? parentPort;
7
+ try {
8
+ target?.postMessage(result);
9
+ }
10
+ catch {
11
+ // The parent may have closed the MessageChannel after a timeout +
12
+ // worker.terminate() (e.g. the slow "hang" path). Posting to a closed port
13
+ // throws here, outside runWorkerEntrypoint's catch -- which would surface as
14
+ // a worker 'error' event. The parent already returned its timeout result, so
15
+ // swallow it (#1864 / #1865 review).
16
+ }
17
+ if (data.signal !== undefined) {
18
+ Atomics.store(data.signal, 0, 1);
19
+ Atomics.notify(data.signal, 0);
20
+ }
21
+ /* v8 ignore stop */
22
+ //# sourceMappingURL=entrypoint-worker-thread.js.map
@@ -0,0 +1,13 @@
1
+ export interface WorkerEntrypointData {
2
+ kind: "release" | "rollback" | "test";
3
+ argv: string[];
4
+ cloneDir: string;
5
+ testBehavior?: "ok" | "hang" | "throw";
6
+ }
7
+ export interface WorkerEntrypointResult {
8
+ code: number;
9
+ stdout: string;
10
+ stderr: string;
11
+ }
12
+ export declare function runWorkerEntrypoint(data: WorkerEntrypointData): WorkerEntrypointResult;
13
+ //# sourceMappingURL=entrypoint-worker.d.ts.map
@@ -0,0 +1,50 @@
1
+ import { cmdRelease } from "../release/main.js";
2
+ import { rollbackMain } from "./rollback-bridge.js";
3
+ export function runWorkerEntrypoint(data) {
4
+ process.env.DEFT_PROJECT_ROOT = data.cloneDir;
5
+ const stdoutChunks = [];
6
+ const stderrChunks = [];
7
+ const prevStdout = process.stdout.write.bind(process.stdout);
8
+ const prevStderr = process.stderr.write.bind(process.stderr);
9
+ process.stdout.write = ((chunk) => {
10
+ stdoutChunks.push(String(chunk));
11
+ return true;
12
+ });
13
+ process.stderr.write = ((chunk) => {
14
+ stderrChunks.push(String(chunk));
15
+ return true;
16
+ });
17
+ let code = 0;
18
+ let error;
19
+ try {
20
+ if (data.kind === "release") {
21
+ code = cmdRelease(data.argv);
22
+ }
23
+ else if (data.kind === "rollback") {
24
+ code = rollbackMain(data.argv);
25
+ }
26
+ else if (data.testBehavior === "hang") {
27
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 5_000);
28
+ code = 0;
29
+ }
30
+ else if (data.testBehavior === "throw") {
31
+ throw new Error("boom");
32
+ }
33
+ }
34
+ catch (exc) {
35
+ const message = exc instanceof Error ? `${exc.name}: ${exc.message}` : String(exc);
36
+ const captured = stderrChunks.join("");
37
+ error = captured ? `${captured}\n${message}` : message;
38
+ code = 1;
39
+ }
40
+ finally {
41
+ process.stdout.write = prevStdout;
42
+ process.stderr.write = prevStderr;
43
+ }
44
+ return {
45
+ code: error ? 1 : code || 0,
46
+ stdout: stdoutChunks.join(""),
47
+ stderr: error ?? stderrChunks.join(""),
48
+ };
49
+ }
50
+ //# sourceMappingURL=entrypoint-worker.js.map
@@ -0,0 +1,40 @@
1
+ import type { E2ESeams, EntrypointFn } from "./types.js";
2
+ /** @internal Test hook for restore-owner branch coverage. */
3
+ export declare function restoreProcessStateForTest(restoreOwner: symbol, oldCwd: string, oldProjectRoot: string | undefined): void;
4
+ /**
5
+ * Synchronous worker-backed entrypoint runner (#1864).
6
+ *
7
+ * The earlier `runPromiseSync` deadlocked: it blocked the main thread with
8
+ * `Atomics.wait` while waiting on a Promise whose only settle paths
9
+ * (`worker.on("message")`, `worker.on("error")`, the timeout `setTimeout`)
10
+ * were main-thread event-loop callbacks -- which a blocked event loop can
11
+ * never run, so the `Atomics.notify` microtask never fired and the wait
12
+ * (and the timeout) hung forever.
13
+ *
14
+ * The fix relies on a CROSS-THREAD wake: the worker writes its result to a
15
+ * transferred MessagePort and calls `Atomics.notify` from the worker thread,
16
+ * which wakes the main thread's `Atomics.wait` without needing the event
17
+ * loop. `Atomics.wait`'s own `timeoutMs` is the working timeout backstop
18
+ * (covering the rare worker-load-failure-before-notify case), and
19
+ * `receiveMessageOnPort` reads the queued result synchronously.
20
+ */
21
+ export declare function runEntrypointWorkerSync(kind: "release" | "rollback" | "test", argv: string[], cloneDir: string, timeoutMs: number, testBehavior?: "ok" | "hang" | "throw"): {
22
+ code: number;
23
+ stdout: string;
24
+ stderr: string;
25
+ };
26
+ /** @internal Exported for unit tests that mock worker-backed timeouts. */
27
+ export declare function runEntrypointWorker(kind: "release" | "rollback" | "test", argv: string[], cloneDir: string, timeoutMs: number, testBehavior?: "hang" | "throw"): Promise<{
28
+ code: number;
29
+ stdout: string;
30
+ stderr: string;
31
+ }>;
32
+ /** Run a release entrypoint in-process with subprocess-style bounds. */
33
+ export declare function callReleaseEntrypoint(entrypoint: EntrypointFn, argv: string[], cloneDir: string, timeout?: number): [number, string];
34
+ /** Async variant with timeout support (used for hang / worker-backed entrypoints). */
35
+ export declare function callReleaseEntrypointTimed(kind: "release" | "rollback" | "test", argv: string[], cloneDir: string, timeout: number, testBehavior?: "hang" | "throw"): Promise<[number, string]>;
36
+ export declare function defaultReleaseEntrypoint(argv: string[]): number;
37
+ export declare function defaultRollbackEntrypoint(argv: string[]): number;
38
+ export declare function dispatchTaskRelease(cloneDir: string, version: string, repo: string, seams?: E2ESeams): [boolean, string];
39
+ export declare function dispatchTaskReleaseRollback(cloneDir: string, version: string, repo: string, seams?: E2ESeams): [boolean, string];
40
+ //# sourceMappingURL=entrypoint.d.ts.map
@@ -0,0 +1,257 @@
1
+ import { existsSync, mkdirSync } from "node:fs";
2
+ import { sep } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { MessageChannel, receiveMessageOnPort, Worker } from "node:worker_threads";
5
+ import { cmdRelease } from "../release/main.js";
6
+ import { ENTRYPOINT_TIMEOUT_EXIT_CODE, EXIT_VIOLATION, RELEASE_ENTRYPOINT_TIMEOUT_SECONDS, ROLLBACK_ENTRYPOINT_TIMEOUT_SECONDS, } from "./constants.js";
7
+ import { rollbackMain } from "./rollback-bridge.js";
8
+ let activeRestoreOwner = null;
9
+ /** @internal Test hook for restore-owner branch coverage. */
10
+ export function restoreProcessStateForTest(restoreOwner, oldCwd, oldProjectRoot) {
11
+ restoreProcessState(restoreOwner, oldCwd, oldProjectRoot);
12
+ }
13
+ function restoreProcessState(restoreOwner, oldCwd, oldProjectRoot) {
14
+ if (activeRestoreOwner !== restoreOwner) {
15
+ return;
16
+ }
17
+ activeRestoreOwner = null;
18
+ process.chdir(oldCwd);
19
+ if (oldProjectRoot === undefined) {
20
+ delete process.env.DEFT_PROJECT_ROOT;
21
+ }
22
+ else {
23
+ process.env.DEFT_PROJECT_ROOT = oldProjectRoot;
24
+ }
25
+ }
26
+ function activateProcessState(restoreOwner, cloneDir) {
27
+ activeRestoreOwner = restoreOwner;
28
+ process.env.DEFT_PROJECT_ROOT = cloneDir;
29
+ mkdirSync(cloneDir, { recursive: true });
30
+ process.chdir(cloneDir);
31
+ return true;
32
+ }
33
+ function runEntrypointWithCapture(entrypoint, argv) {
34
+ const stdoutChunks = [];
35
+ const stderrChunks = [];
36
+ const prevStdout = process.stdout.write.bind(process.stdout);
37
+ const prevStderr = process.stderr.write.bind(process.stderr);
38
+ process.stdout.write = ((chunk) => {
39
+ stdoutChunks.push(String(chunk));
40
+ return true;
41
+ });
42
+ process.stderr.write = ((chunk) => {
43
+ stderrChunks.push(String(chunk));
44
+ return true;
45
+ });
46
+ try {
47
+ const code = entrypoint(argv);
48
+ const output = stderrChunks.join("") || stdoutChunks.join("");
49
+ return [code || 0, output];
50
+ }
51
+ catch (exc) {
52
+ const message = exc instanceof Error ? `${exc.name}: ${exc.message}` : String(exc);
53
+ const captured = stderrChunks.join("");
54
+ const stderrValue = captured ? `${captured}\n${message}` : message;
55
+ return [EXIT_VIOLATION, stderrValue || stdoutChunks.join("")];
56
+ }
57
+ finally {
58
+ process.stdout.write = prevStdout;
59
+ process.stderr.write = prevStderr;
60
+ }
61
+ }
62
+ /**
63
+ * Resolve the compiled worker-thread bootstrap path, preferring the sibling
64
+ * file when running from source and falling back to the dist mirror.
65
+ */
66
+ function resolveWorkerPath() {
67
+ const localWorker = fileURLToPath(new URL("./entrypoint-worker-thread.js", import.meta.url));
68
+ const srcSegment = `${sep}src${sep}`;
69
+ const srcIdx = localWorker.indexOf(srcSegment);
70
+ const distWorker = srcIdx === -1
71
+ ? localWorker
72
+ : `${localWorker.slice(0, srcIdx)}${sep}dist${sep}${localWorker.slice(srcIdx + srcSegment.length)}`;
73
+ return existsSync(localWorker) ? localWorker : distWorker;
74
+ }
75
+ /**
76
+ * Synchronous worker-backed entrypoint runner (#1864).
77
+ *
78
+ * The earlier `runPromiseSync` deadlocked: it blocked the main thread with
79
+ * `Atomics.wait` while waiting on a Promise whose only settle paths
80
+ * (`worker.on("message")`, `worker.on("error")`, the timeout `setTimeout`)
81
+ * were main-thread event-loop callbacks -- which a blocked event loop can
82
+ * never run, so the `Atomics.notify` microtask never fired and the wait
83
+ * (and the timeout) hung forever.
84
+ *
85
+ * The fix relies on a CROSS-THREAD wake: the worker writes its result to a
86
+ * transferred MessagePort and calls `Atomics.notify` from the worker thread,
87
+ * which wakes the main thread's `Atomics.wait` without needing the event
88
+ * loop. `Atomics.wait`'s own `timeoutMs` is the working timeout backstop
89
+ * (covering the rare worker-load-failure-before-notify case), and
90
+ * `receiveMessageOnPort` reads the queued result synchronously.
91
+ */
92
+ export function runEntrypointWorkerSync(kind, argv, cloneDir, timeoutMs, testBehavior) {
93
+ const workerPath = resolveWorkerPath();
94
+ const signal = new Int32Array(new SharedArrayBuffer(4)); // 0 = pending, 1 = settled
95
+ const channel = new MessageChannel();
96
+ let worker;
97
+ try {
98
+ worker = new Worker(workerPath, {
99
+ workerData: { kind, argv, cloneDir, signal, port: channel.port2, testBehavior },
100
+ transferList: [channel.port2],
101
+ });
102
+ }
103
+ catch (err) {
104
+ return {
105
+ code: EXIT_VIOLATION,
106
+ stdout: "",
107
+ stderr: err instanceof Error ? err.message : String(err),
108
+ };
109
+ }
110
+ // Crash guard: a worker 'error' event (async module-load failure, or a
111
+ // post-timeout throw when the worker posts to the already-closed port) is
112
+ // re-thrown as an uncaught exception if no listener is attached. We can't act
113
+ // on it here -- this function runs synchronously while the event loop is
114
+ // blocked in Atomics.wait, so an 'error' event can only be delivered on a
115
+ // later tick after we've already returned -- but registering a no-op listener
116
+ // keeps a late worker failure from crashing the whole process (#1864 / #1865).
117
+ worker.on("error", () => { });
118
+ try {
119
+ const waitResult = Atomics.wait(signal, 0, 0, timeoutMs);
120
+ if (waitResult === "timed-out") {
121
+ return {
122
+ code: ENTRYPOINT_TIMEOUT_EXIT_CODE,
123
+ stdout: "",
124
+ stderr: `${kind} timed out after ${timeoutMs / 1000}s`,
125
+ };
126
+ }
127
+ const received = receiveMessageOnPort(channel.port1);
128
+ if (received === undefined) {
129
+ return { code: EXIT_VIOLATION, stdout: "", stderr: "worker produced no result" };
130
+ }
131
+ return received.message;
132
+ }
133
+ finally {
134
+ channel.port1.close();
135
+ void worker.terminate();
136
+ }
137
+ }
138
+ /** @internal Exported for unit tests that mock worker-backed timeouts. */
139
+ export async function runEntrypointWorker(kind, argv, cloneDir, timeoutMs, testBehavior) {
140
+ const workerPath = resolveWorkerPath();
141
+ return new Promise((resolvePromise) => {
142
+ let worker;
143
+ try {
144
+ worker = new Worker(workerPath, {
145
+ workerData: { kind, argv, cloneDir, testBehavior },
146
+ });
147
+ }
148
+ catch (err) {
149
+ resolvePromise({
150
+ code: EXIT_VIOLATION,
151
+ stdout: "",
152
+ stderr: err instanceof Error ? err.message : String(err),
153
+ });
154
+ return;
155
+ }
156
+ let settled = false;
157
+ const finish = (payload) => {
158
+ if (settled)
159
+ return;
160
+ settled = true;
161
+ clearTimeout(timer);
162
+ void worker.terminate();
163
+ resolvePromise(payload);
164
+ };
165
+ const timer = setTimeout(() => {
166
+ finish({
167
+ code: ENTRYPOINT_TIMEOUT_EXIT_CODE,
168
+ stdout: "",
169
+ stderr: `${kind} timed out after ${timeoutMs / 1000}s`,
170
+ });
171
+ }, timeoutMs);
172
+ worker.on("message", (msg) => finish(msg));
173
+ worker.on("error", (err) => finish({
174
+ code: EXIT_VIOLATION,
175
+ stdout: "",
176
+ stderr: err instanceof Error ? err.message : "worker error",
177
+ }));
178
+ });
179
+ }
180
+ function callReleaseEntrypointWorkerBacked(kind, argv, cloneDir, timeout) {
181
+ const timeoutMs = Math.max(1, Math.floor(timeout * 1000));
182
+ const result = runEntrypointWorkerSync(kind, argv, cloneDir, timeoutMs);
183
+ return [result.code, result.stderr || result.stdout];
184
+ }
185
+ /** Run a release entrypoint in-process with subprocess-style bounds. */
186
+ export function callReleaseEntrypoint(entrypoint, argv, cloneDir, timeout = RELEASE_ENTRYPOINT_TIMEOUT_SECONDS) {
187
+ if (entrypoint === defaultReleaseEntrypoint) {
188
+ return callReleaseEntrypointWorkerBacked("release", argv, cloneDir, timeout);
189
+ }
190
+ if (entrypoint === defaultRollbackEntrypoint) {
191
+ return callReleaseEntrypointWorkerBacked("rollback", argv, cloneDir, timeout);
192
+ }
193
+ const oldCwd = process.cwd();
194
+ const oldProjectRoot = process.env.DEFT_PROJECT_ROOT;
195
+ const restoreOwner = Symbol("entrypoint-restore");
196
+ try {
197
+ activateProcessState(restoreOwner, cloneDir);
198
+ return runEntrypointWithCapture(entrypoint, argv);
199
+ }
200
+ finally {
201
+ restoreProcessState(restoreOwner, oldCwd, oldProjectRoot);
202
+ }
203
+ }
204
+ /** Async variant with timeout support (used for hang / worker-backed entrypoints). */
205
+ export async function callReleaseEntrypointTimed(kind, argv, cloneDir, timeout, testBehavior) {
206
+ const oldCwd = process.cwd();
207
+ const oldProjectRoot = process.env.DEFT_PROJECT_ROOT;
208
+ const restoreOwner = Symbol("entrypoint-restore");
209
+ try {
210
+ activateProcessState(restoreOwner, cloneDir);
211
+ const timeoutMs = Math.max(1, Math.floor(timeout * 1000));
212
+ const result = await runEntrypointWorker(kind, argv, cloneDir, timeoutMs, testBehavior);
213
+ return [result.code, result.stderr || result.stdout];
214
+ }
215
+ finally {
216
+ restoreProcessState(restoreOwner, oldCwd, oldProjectRoot);
217
+ }
218
+ }
219
+ export function defaultReleaseEntrypoint(argv) {
220
+ return cmdRelease(argv);
221
+ }
222
+ export function defaultRollbackEntrypoint(argv) {
223
+ return rollbackMain(argv);
224
+ }
225
+ export function dispatchTaskRelease(cloneDir, version, repo, seams = {}) {
226
+ const argv = [version, "--repo", repo, "--skip-ci", "--skip-build", "--allow-vbrief-drift"];
227
+ if (seams.releaseEntrypoint) {
228
+ const code = seams.releaseEntrypoint(argv);
229
+ if (code !== 0) {
230
+ return [false, `release.py failed (exit ${code}): `];
231
+ }
232
+ return [true, `release.py ${version} --repo ${repo} (draft) ran clean`];
233
+ }
234
+ const entrypoint = defaultReleaseEntrypoint;
235
+ const [code, output] = callReleaseEntrypoint(entrypoint, argv, cloneDir, RELEASE_ENTRYPOINT_TIMEOUT_SECONDS);
236
+ if (code !== 0) {
237
+ return [false, `release.py failed (exit ${code}): ${output.trim()}`];
238
+ }
239
+ return [true, `release.py ${version} --repo ${repo} (draft) ran clean`];
240
+ }
241
+ export function dispatchTaskReleaseRollback(cloneDir, version, repo, seams = {}) {
242
+ const argv = [version, "--repo", repo];
243
+ if (seams.rollbackEntrypoint) {
244
+ const code = seams.rollbackEntrypoint(argv);
245
+ if (code !== 0) {
246
+ return [false, `release_rollback.py failed (exit ${code}): `];
247
+ }
248
+ return [true, `release_rollback.py ${version} --repo ${repo} ran clean`];
249
+ }
250
+ const entrypoint = defaultRollbackEntrypoint;
251
+ const [code, output] = callReleaseEntrypoint(entrypoint, argv, cloneDir, ROLLBACK_ENTRYPOINT_TIMEOUT_SECONDS);
252
+ if (code !== 0) {
253
+ return [false, `release_rollback.py failed (exit ${code}): ${output.trim()}`];
254
+ }
255
+ return [true, `release_rollback.py ${version} --repo ${repo} ran clean`];
256
+ }
257
+ //# sourceMappingURL=entrypoint.js.map
@@ -0,0 +1,5 @@
1
+ import type { E2ESeams } from "./types.js";
2
+ export declare function emit(label: string, status: string): void;
3
+ export declare function generateRepoSlug(seams?: E2ESeams): string;
4
+ export declare function parseE2EFlags(argv: readonly string[]): import("./types.js").ParsedE2EFlags;
5
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1,80 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { REPO_SLUG_PREFIX } from "./constants.js";
3
+ export function emit(label, status) {
4
+ process.stderr.write(`[e2e] ${label}... ${status}\n`);
5
+ }
6
+ export function generateRepoSlug(seams = {}) {
7
+ if (seams.generateRepoSlug) {
8
+ return seams.generateRepoSlug();
9
+ }
10
+ const now = seams.now ?? (() => new Date());
11
+ const d = now();
12
+ const timestamp = String(d.getUTCFullYear()) +
13
+ String(d.getUTCMonth() + 1).padStart(2, "0") +
14
+ String(d.getUTCDate()).padStart(2, "0") +
15
+ String(d.getUTCHours()).padStart(2, "0") +
16
+ String(d.getUTCMinutes()).padStart(2, "0") +
17
+ String(d.getUTCSeconds()).padStart(2, "0");
18
+ const suffix = (seams.randomUuidHex ?? (() => randomUUID().replace(/-/g, "")))().slice(0, 6);
19
+ return `${REPO_SLUG_PREFIX}${timestamp}-${suffix}`;
20
+ }
21
+ export function parseE2EFlags(argv) {
22
+ let help = false;
23
+ let owner = "deftai";
24
+ let dryRun = false;
25
+ let keepRepo = false;
26
+ let projectRoot = null;
27
+ let skipNpm = false;
28
+ const unknown = [];
29
+ for (let i = 0; i < argv.length; i += 1) {
30
+ const arg = argv[i];
31
+ if (arg === undefined)
32
+ continue;
33
+ if (arg === "-h" || arg === "--help") {
34
+ help = true;
35
+ }
36
+ else if (arg === "--dry-run") {
37
+ dryRun = true;
38
+ }
39
+ else if (arg === "--keep-repo") {
40
+ keepRepo = true;
41
+ }
42
+ else if (arg === "--skip-npm") {
43
+ skipNpm = true;
44
+ }
45
+ else if (arg === "--owner") {
46
+ const next = argv[i + 1];
47
+ if (next === undefined || next.startsWith("-")) {
48
+ unknown.push(arg);
49
+ }
50
+ else {
51
+ owner = next;
52
+ i += 1;
53
+ }
54
+ }
55
+ else if (arg.startsWith("--owner=")) {
56
+ owner = arg.slice("--owner=".length);
57
+ }
58
+ else if (arg === "--project-root") {
59
+ const next = argv[i + 1];
60
+ if (next === undefined || next.startsWith("-")) {
61
+ unknown.push(arg);
62
+ }
63
+ else {
64
+ projectRoot = next;
65
+ i += 1;
66
+ }
67
+ }
68
+ else if (arg.startsWith("--project-root=")) {
69
+ projectRoot = arg.slice("--project-root=".length);
70
+ }
71
+ else if (arg.startsWith("-")) {
72
+ unknown.push(arg);
73
+ }
74
+ else {
75
+ unknown.push(arg);
76
+ }
77
+ }
78
+ return { help, owner, dryRun, keepRepo, projectRoot, skipNpm, unknown };
79
+ }
80
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1,5 @@
1
+ import type { E2ESeams } from "./types.js";
2
+ export declare function provisionTempRepo(owner: string, slug: string, seams?: E2ESeams): [boolean, string];
3
+ export declare function destroyTempRepo(owner: string, slug: string, seams?: E2ESeams): [boolean, string];
4
+ export declare function verifyDraftRelease(owner: string, slug: string, version: string, seams?: E2ESeams): [boolean, string];
5
+ //# sourceMappingURL=gh-ops.d.ts.map