@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,298 @@
1
+ import { coerceLegacyNarrative, LEGACY_NARRATIVE_KEY, loadProjectDefinition } from "./resolve.js";
2
+ import { DEFAULT_WIP_CAP } from "./wip.js";
3
+ export * from "./autonomy.js";
4
+ export * from "./capacity.js";
5
+ export * from "./decisions.js";
6
+ export * from "./disclosure.js";
7
+ export * from "./resolve.js";
8
+ export * from "./wip.js";
9
+ export const FIELD_ALLOW_DIRECT_COMMITS = "plan.policy.allowDirectCommitsToMaster";
10
+ export const FIELD_WIP_CAP = "plan.policy.wipCap";
11
+ export const FIELD_SESSION_RITUAL_STALENESS_HOURS = "plan.policy.sessionRitualStalenessHours";
12
+ export const FIELD_TRIAGE_SCOPE = "plan.policy.triageScope";
13
+ export const FIELD_TRIAGE_SCOPE_IGNORES = "plan.policy.triageScopeIgnores";
14
+ export const FIELD_TRIAGE_RANKING_LABELS = "plan.policy.triageRankingLabels";
15
+ export const FIELD_TRIAGE_AUTO_CLASSIFY = "plan.policy.triageAutoClassify";
16
+ export const FIELD_TRIAGE_HOLD_MARKERS = "plan.policy.triageHoldMarkers";
17
+ export const FIELD_SWARM_SUBAGENT_BACKEND = "plan.policy.swarmSubagentBackend";
18
+ export const DEFAULT_SESSION_RITUAL_STALENESS_HOURS = 4;
19
+ export const DEFAULT_TRIAGE_SCOPE_VALUE = [
20
+ { rule: "all-open" },
21
+ ];
22
+ export const DEFAULT_TRIAGE_SCOPE_IGNORES_VALUE = [];
23
+ export const DEFAULT_TRIAGE_RANKING_LABELS_VALUE = [];
24
+ export const DEFAULT_TRIAGE_AUTO_CLASSIFY_VALUE = [];
25
+ export const KNOWN_SUBAGENT_BACKEND_IDS = new Set(["composer", "cursor-cloud", "grok-build"]);
26
+ const FALLBACK_HOLD_MARKERS = [
27
+ "do not implement",
28
+ "BLOCKED",
29
+ "HOLDING",
30
+ "Holding / capture only",
31
+ ];
32
+ function getPlan(data) {
33
+ if (data === null)
34
+ return {};
35
+ const plan = data.plan;
36
+ if (typeof plan === "object" && plan !== null && !Array.isArray(plan)) {
37
+ return plan;
38
+ }
39
+ return {};
40
+ }
41
+ function getPolicyBlock(data) {
42
+ const policy = getPlan(data).policy;
43
+ if (typeof policy === "object" && policy !== null && !Array.isArray(policy)) {
44
+ return policy;
45
+ }
46
+ return {};
47
+ }
48
+ function getNarratives(data) {
49
+ const narratives = getPlan(data).narratives;
50
+ if (typeof narratives === "object" && narratives !== null && !Array.isArray(narratives)) {
51
+ return narratives;
52
+ }
53
+ return {};
54
+ }
55
+ function defaultHoldMarkers() {
56
+ return [...FALLBACK_HOLD_MARKERS];
57
+ }
58
+ function inspectAllowDirectCommits(data) {
59
+ const policyBlock = getPolicyBlock(data);
60
+ if ("allowDirectCommitsToMaster" in policyBlock) {
61
+ const raw = policyBlock.allowDirectCommitsToMaster;
62
+ const current = typeof raw === "boolean" ? raw : false;
63
+ return {
64
+ name: FIELD_ALLOW_DIRECT_COMMITS,
65
+ current,
66
+ default: false,
67
+ source: "typed",
68
+ };
69
+ }
70
+ const narratives = getNarratives(data);
71
+ if (LEGACY_NARRATIVE_KEY in narratives) {
72
+ const { allow } = coerceLegacyNarrative(narratives[LEGACY_NARRATIVE_KEY]);
73
+ return {
74
+ name: FIELD_ALLOW_DIRECT_COMMITS,
75
+ current: allow,
76
+ default: false,
77
+ source: "legacy",
78
+ };
79
+ }
80
+ return {
81
+ name: FIELD_ALLOW_DIRECT_COMMITS,
82
+ current: false,
83
+ default: false,
84
+ source: "default",
85
+ };
86
+ }
87
+ function inspectWipCap(data) {
88
+ const policyBlock = getPolicyBlock(data);
89
+ if ("wipCap" in policyBlock) {
90
+ const raw = policyBlock.wipCap;
91
+ let current = DEFAULT_WIP_CAP;
92
+ if (typeof raw === "number" && Number.isInteger(raw) && raw >= 0) {
93
+ current = raw;
94
+ }
95
+ return {
96
+ name: FIELD_WIP_CAP,
97
+ current,
98
+ default: DEFAULT_WIP_CAP,
99
+ source: "typed",
100
+ };
101
+ }
102
+ return {
103
+ name: FIELD_WIP_CAP,
104
+ current: DEFAULT_WIP_CAP,
105
+ default: DEFAULT_WIP_CAP,
106
+ source: "default",
107
+ };
108
+ }
109
+ function inspectSessionRitualStalenessHours(data) {
110
+ const policyBlock = getPolicyBlock(data);
111
+ if ("sessionRitualStalenessHours" in policyBlock) {
112
+ const raw = policyBlock.sessionRitualStalenessHours;
113
+ if (raw === null) {
114
+ return {
115
+ name: FIELD_SESSION_RITUAL_STALENESS_HOURS,
116
+ current: DEFAULT_SESSION_RITUAL_STALENESS_HOURS,
117
+ default: DEFAULT_SESSION_RITUAL_STALENESS_HOURS,
118
+ source: "default",
119
+ };
120
+ }
121
+ let current = DEFAULT_SESSION_RITUAL_STALENESS_HOURS;
122
+ let source = "default-on-error";
123
+ if (typeof raw === "number" && Number.isInteger(raw) && raw > 0) {
124
+ current = raw;
125
+ source = "typed";
126
+ }
127
+ return {
128
+ name: FIELD_SESSION_RITUAL_STALENESS_HOURS,
129
+ current,
130
+ default: DEFAULT_SESSION_RITUAL_STALENESS_HOURS,
131
+ source,
132
+ };
133
+ }
134
+ return {
135
+ name: FIELD_SESSION_RITUAL_STALENESS_HOURS,
136
+ current: DEFAULT_SESSION_RITUAL_STALENESS_HOURS,
137
+ default: DEFAULT_SESSION_RITUAL_STALENESS_HOURS,
138
+ source: "default",
139
+ };
140
+ }
141
+ function listFieldInspector(data, key, name, defaultValue, options) {
142
+ const policyBlock = getPolicyBlock(data);
143
+ if (!(key in policyBlock)) {
144
+ return {
145
+ name,
146
+ current: [...defaultValue],
147
+ default: [...defaultValue],
148
+ source: "default",
149
+ };
150
+ }
151
+ const raw = policyBlock[key];
152
+ if (!Array.isArray(raw)) {
153
+ return {
154
+ name,
155
+ current: [...defaultValue],
156
+ default: [...defaultValue],
157
+ source: "default",
158
+ };
159
+ }
160
+ if (raw.length === 0 && !options?.emptyIsTyped) {
161
+ return {
162
+ name,
163
+ current: [...defaultValue],
164
+ default: [...defaultValue],
165
+ source: "default",
166
+ };
167
+ }
168
+ if (options?.emptyIsTyped && raw.every((s) => typeof s === "string")) {
169
+ const cleaned = raw.filter((s) => typeof s === "string" && s.trim().length > 0);
170
+ return {
171
+ name,
172
+ current: cleaned,
173
+ default: [...defaultValue],
174
+ source: "typed",
175
+ };
176
+ }
177
+ return {
178
+ name,
179
+ current: [...raw],
180
+ default: [...defaultValue],
181
+ source: "typed",
182
+ };
183
+ }
184
+ function inspectSwarmSubagentBackend(data) {
185
+ const policyBlock = getPolicyBlock(data);
186
+ if (!("swarmSubagentBackend" in policyBlock)) {
187
+ return {
188
+ name: FIELD_SWARM_SUBAGENT_BACKEND,
189
+ current: null,
190
+ default: null,
191
+ source: "default",
192
+ };
193
+ }
194
+ const raw = policyBlock.swarmSubagentBackend;
195
+ if (typeof raw === "string") {
196
+ const bid = raw.trim();
197
+ if (bid.length > 0 && KNOWN_SUBAGENT_BACKEND_IDS.has(bid)) {
198
+ return {
199
+ name: FIELD_SWARM_SUBAGENT_BACKEND,
200
+ current: bid,
201
+ default: null,
202
+ source: "typed",
203
+ };
204
+ }
205
+ }
206
+ return {
207
+ name: FIELD_SWARM_SUBAGENT_BACKEND,
208
+ current: null,
209
+ default: null,
210
+ source: "default-on-error",
211
+ };
212
+ }
213
+ const REGISTERED_POLICIES = [
214
+ inspectAllowDirectCommits,
215
+ inspectWipCap,
216
+ inspectSessionRitualStalenessHours,
217
+ (data) => listFieldInspector(data, "triageScope", FIELD_TRIAGE_SCOPE, DEFAULT_TRIAGE_SCOPE_VALUE),
218
+ (data) => listFieldInspector(data, "triageScopeIgnores", FIELD_TRIAGE_SCOPE_IGNORES, DEFAULT_TRIAGE_SCOPE_IGNORES_VALUE),
219
+ (data) => listFieldInspector(data, "triageRankingLabels", FIELD_TRIAGE_RANKING_LABELS, DEFAULT_TRIAGE_RANKING_LABELS_VALUE),
220
+ (data) => listFieldInspector(data, "triageAutoClassify", FIELD_TRIAGE_AUTO_CLASSIFY, DEFAULT_TRIAGE_AUTO_CLASSIFY_VALUE),
221
+ (data) => listFieldInspector(data, "triageHoldMarkers", FIELD_TRIAGE_HOLD_MARKERS, defaultHoldMarkers(), {
222
+ emptyIsTyped: true,
223
+ }),
224
+ inspectSwarmSubagentBackend,
225
+ ];
226
+ /** Walk registered inspectors and return one row per field (#1148). */
227
+ export function inspectAllPolicies(projectRoot) {
228
+ const [data] = loadProjectDefinition(projectRoot);
229
+ return REGISTERED_POLICIES.map((inspect) => inspect(data));
230
+ }
231
+ /** Look up a single registered field by canonical dotted-path name. */
232
+ export function inspectOnePolicy(name, projectRoot) {
233
+ for (const field of inspectAllPolicies(projectRoot)) {
234
+ if (field.name === name)
235
+ return field;
236
+ }
237
+ return null;
238
+ }
239
+ /** Return canonical names of every registered typed-policy field. */
240
+ export function registeredPolicyNames() {
241
+ return REGISTERED_POLICIES.map((inspect) => inspect(null).name);
242
+ }
243
+ function utcIso(now) {
244
+ const dt = now ?? new Date();
245
+ return dt.toISOString().replace(/\.\d{3}Z$/, "Z");
246
+ }
247
+ export function fieldToDict(field) {
248
+ return {
249
+ name: field.name,
250
+ current: field.current,
251
+ default: field.default,
252
+ source: field.source,
253
+ };
254
+ }
255
+ /** Render the JSON envelope {generated_at, fields: [...]}. */
256
+ export function renderJson(fields, now) {
257
+ const envelope = {
258
+ generated_at: utcIso(now),
259
+ fields: fields.map(fieldToDict),
260
+ };
261
+ return JSON.stringify(envelope, null, 2);
262
+ }
263
+ function formatValue(value) {
264
+ if (value === null)
265
+ return "None";
266
+ if (typeof value === "boolean")
267
+ return value ? "true" : "false";
268
+ if (Array.isArray(value) || typeof value === "object") {
269
+ // Match Python json.dumps(..., ensure_ascii=False, sort_keys=False) spacing.
270
+ return JSON.stringify(value).replace(/":/g, '": ').replace(/,"/g, ', "');
271
+ }
272
+ if (typeof value === "string")
273
+ return value;
274
+ return String(value);
275
+ }
276
+ /** Render the human-readable text format from the issue body. */
277
+ export function renderText(fields) {
278
+ if (fields.length === 0) {
279
+ return ("[policy] (no fields changed)\n" +
280
+ " All registered policies are at their framework defaults. " +
281
+ "Re-run without `--changed-only` to inspect them.");
282
+ }
283
+ return fields
284
+ .map((field) => `[policy] ${field.name}\n` +
285
+ ` current: ${formatValue(field.current)}\n` +
286
+ ` default: ${formatValue(field.default)}\n` +
287
+ ` source: ${field.source}`)
288
+ .join("\n\n");
289
+ }
290
+ /** Python repr for a string (single-quoted). */
291
+ export function pythonStringRepr(value) {
292
+ return `'${value}'`;
293
+ }
294
+ /** Python repr for a list of strings. */
295
+ export function pythonListRepr(items) {
296
+ return `[${items.map((i) => pythonStringRepr(i)).join(", ")}]`;
297
+ }
298
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,38 @@
1
+ /** Filesystem-relative location of the project-definition vBRIEF. */
2
+ export declare const PROJECT_DEFINITION_REL_PATH = "vbrief/PROJECT-DEFINITION.vbrief.json";
3
+ /** Environment variable emergency bypass for branch protection (#747). */
4
+ export declare const ENV_BYPASS = "DEFT_ALLOW_DEFAULT_BRANCH_COMMIT";
5
+ /** Legacy narrative key replaced by the typed flag (#746). */
6
+ export declare const LEGACY_NARRATIVE_KEY = "Allow direct commits to master";
7
+ /** Audit log relative path (#746). */
8
+ export declare const AUDIT_LOG_REL_PATH = "meta/policy-changes.log";
9
+ export type PolicySource = "typed" | "legacy-narrative" | "env-bypass" | "default-fail-closed";
10
+ export interface PolicyResult {
11
+ readonly allowDirectCommits: boolean;
12
+ readonly source: PolicySource;
13
+ readonly deprecationWarning: string | null;
14
+ readonly error: string | null;
15
+ }
16
+ /** Resolve absolute path to PROJECT-DEFINITION.vbrief.json. */
17
+ export declare function projectDefinitionPath(projectRoot: string): string;
18
+ /** Best-effort coerce a legacy narrative value to a boolean. */
19
+ export declare function coerceLegacyNarrative(value: unknown): {
20
+ allow: boolean;
21
+ raw: string;
22
+ };
23
+ /** Load and parse PROJECT-DEFINITION. Returns [data, error]. */
24
+ export declare function loadProjectDefinition(projectRoot: string): [Record<string, unknown> | null, string | null];
25
+ /** Resolve the effective branch-commit policy (#746 / #747). */
26
+ export declare function resolvePolicy(projectRoot: string): PolicyResult;
27
+ /** Append a one-line audit entry to meta/policy-changes.log (#746). */
28
+ export declare function appendAuditLog(projectRoot: string, entry: string): string;
29
+ /** Write the typed policy flag back to PROJECT-DEFINITION (#746). */
30
+ export declare function setPolicy(projectRoot: string, options: {
31
+ allowDirectCommits: boolean;
32
+ actor?: string;
33
+ note?: string;
34
+ }): {
35
+ changed: boolean;
36
+ auditEntry: string;
37
+ };
38
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1,228 @@
1
+ import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { join, resolve as pathResolve } from "node:path";
3
+ /** Filesystem-relative location of the project-definition vBRIEF. */
4
+ export const PROJECT_DEFINITION_REL_PATH = "vbrief/PROJECT-DEFINITION.vbrief.json";
5
+ /** Environment variable emergency bypass for branch protection (#747). */
6
+ export const ENV_BYPASS = "DEFT_ALLOW_DEFAULT_BRANCH_COMMIT";
7
+ /** Legacy narrative key replaced by the typed flag (#746). */
8
+ export const LEGACY_NARRATIVE_KEY = "Allow direct commits to master";
9
+ /** Audit log relative path (#746). */
10
+ export const AUDIT_LOG_REL_PATH = "meta/policy-changes.log";
11
+ const TRUTHY = new Set(["1", "true", "yes", "on"]);
12
+ /** Resolve absolute path to PROJECT-DEFINITION.vbrief.json. */
13
+ export function projectDefinitionPath(projectRoot) {
14
+ return join(pathResolve(projectRoot), PROJECT_DEFINITION_REL_PATH);
15
+ }
16
+ function envBypassActive() {
17
+ const raw = process.env[ENV_BYPASS] ?? "";
18
+ return TRUTHY.has(raw.trim().toLowerCase());
19
+ }
20
+ function pythonTypeName(value) {
21
+ if (value === null)
22
+ return "None";
23
+ if (Array.isArray(value))
24
+ return "list";
25
+ if (typeof value === "boolean")
26
+ return "bool";
27
+ if (typeof value === "number")
28
+ return Number.isInteger(value) ? "int" : "float";
29
+ if (typeof value === "string")
30
+ return "str";
31
+ if (typeof value === "object")
32
+ return "dict";
33
+ return typeof value;
34
+ }
35
+ function pythonRepr(value) {
36
+ if (value === undefined)
37
+ return "None";
38
+ if (typeof value === "string")
39
+ return `'${value}'`;
40
+ if (value === null)
41
+ return "None";
42
+ if (typeof value === "boolean")
43
+ return value ? "True" : "False";
44
+ return String(value);
45
+ }
46
+ /** Best-effort coerce a legacy narrative value to a boolean. */
47
+ export function coerceLegacyNarrative(value) {
48
+ if (typeof value === "boolean") {
49
+ return { allow: value, raw: pythonRepr(value) };
50
+ }
51
+ if (typeof value !== "string") {
52
+ return { allow: false, raw: pythonRepr(value) };
53
+ }
54
+ const raw = value.trim();
55
+ const low = raw.toLowerCase();
56
+ if (["true", "yes", "on", "1"].includes(low)) {
57
+ return { allow: true, raw };
58
+ }
59
+ const match = /:\s*(true|yes|on|1)\b/.exec(low);
60
+ if (match !== null) {
61
+ return { allow: true, raw };
62
+ }
63
+ return { allow: false, raw };
64
+ }
65
+ /** Load and parse PROJECT-DEFINITION. Returns [data, error]. */
66
+ export function loadProjectDefinition(projectRoot) {
67
+ const path = projectDefinitionPath(projectRoot);
68
+ if (!existsSync(path)) {
69
+ return [null, `PROJECT-DEFINITION not found at ${path}`];
70
+ }
71
+ try {
72
+ const text = readFileSync(path, { encoding: "utf8" });
73
+ const data = JSON.parse(text);
74
+ return [data, null];
75
+ }
76
+ catch (err) {
77
+ if (err instanceof SyntaxError) {
78
+ return [null, `PROJECT-DEFINITION at ${path} is not valid JSON: ${String(err)}`];
79
+ }
80
+ return [null, `PROJECT-DEFINITION at ${path} cannot be read: ${String(err)}`];
81
+ }
82
+ }
83
+ /** Resolve the effective branch-commit policy (#746 / #747). */
84
+ export function resolvePolicy(projectRoot) {
85
+ if (envBypassActive()) {
86
+ return {
87
+ allowDirectCommits: true,
88
+ source: "env-bypass",
89
+ deprecationWarning: null,
90
+ error: null,
91
+ };
92
+ }
93
+ const [data, err] = loadProjectDefinition(projectRoot);
94
+ if (data === null) {
95
+ return {
96
+ allowDirectCommits: false,
97
+ source: "default-fail-closed",
98
+ deprecationWarning: null,
99
+ error: err,
100
+ };
101
+ }
102
+ const plan = data.plan;
103
+ if (typeof plan !== "object" || plan === null || Array.isArray(plan)) {
104
+ return {
105
+ allowDirectCommits: false,
106
+ source: "default-fail-closed",
107
+ deprecationWarning: null,
108
+ error: "PROJECT-DEFINITION 'plan' is not an object",
109
+ };
110
+ }
111
+ const planObj = plan;
112
+ const policyBlock = planObj.policy;
113
+ if (typeof policyBlock === "object" &&
114
+ policyBlock !== null &&
115
+ !Array.isArray(policyBlock) &&
116
+ "allowDirectCommitsToMaster" in policyBlock) {
117
+ const raw = policyBlock.allowDirectCommitsToMaster;
118
+ if (typeof raw !== "boolean") {
119
+ return {
120
+ allowDirectCommits: false,
121
+ source: "default-fail-closed",
122
+ deprecationWarning: null,
123
+ error: `plan.policy.allowDirectCommitsToMaster must be a boolean; got ${pythonTypeName(raw)} (${pythonRepr(raw)})`,
124
+ };
125
+ }
126
+ return {
127
+ allowDirectCommits: raw,
128
+ source: "typed",
129
+ deprecationWarning: null,
130
+ error: null,
131
+ };
132
+ }
133
+ const narratives = planObj.narratives;
134
+ if (typeof narratives === "object" &&
135
+ narratives !== null &&
136
+ !Array.isArray(narratives) &&
137
+ LEGACY_NARRATIVE_KEY in narratives) {
138
+ const { allow, raw } = coerceLegacyNarrative(narratives[LEGACY_NARRATIVE_KEY]);
139
+ const warn = `DEPRECATED: PROJECT-DEFINITION uses the legacy narrative key ` +
140
+ `'${LEGACY_NARRATIVE_KEY}' (${pythonRepr(raw)}). Migrate to typed ` +
141
+ `plan.policy.allowDirectCommitsToMaster (#746). Run ` +
142
+ `\`task policy:enforce-branches\` or \`task policy:allow-direct-commits ` +
143
+ `-- --confirm\` to set the typed flag explicitly.`;
144
+ return {
145
+ allowDirectCommits: allow,
146
+ source: "legacy-narrative",
147
+ deprecationWarning: warn,
148
+ error: null,
149
+ };
150
+ }
151
+ return {
152
+ allowDirectCommits: false,
153
+ source: "default-fail-closed",
154
+ deprecationWarning: null,
155
+ error: null,
156
+ };
157
+ }
158
+ function nowIso() {
159
+ return new Date().toISOString().replace(/\.\d{3}Z$/, "Z");
160
+ }
161
+ /** Append a one-line audit entry to meta/policy-changes.log (#746). */
162
+ export function appendAuditLog(projectRoot, entry) {
163
+ const logPath = join(pathResolve(projectRoot), AUDIT_LOG_REL_PATH);
164
+ mkdirSync(join(logPath, ".."), { recursive: true });
165
+ const line = `${nowIso()} ${entry}\n`;
166
+ if (!existsSync(logPath)) {
167
+ const header = "# meta/policy-changes.log -- audit trail for " +
168
+ "policy.allowDirectCommitsToMaster transitions (#746)\n";
169
+ writeFileSync(logPath, header, { encoding: "utf8" });
170
+ }
171
+ appendFileSync(logPath, line, { encoding: "utf8" });
172
+ return logPath;
173
+ }
174
+ /** Write the typed policy flag back to PROJECT-DEFINITION (#746). */
175
+ export function setPolicy(projectRoot, options) {
176
+ const { allowDirectCommits, actor = "agent", note = "" } = options;
177
+ const path = projectDefinitionPath(projectRoot);
178
+ if (!existsSync(path)) {
179
+ throw new Error(`PROJECT-DEFINITION not found at ${path}`);
180
+ }
181
+ const data = JSON.parse(readFileSync(path, { encoding: "utf8" }));
182
+ if (typeof data.plan !== "object" || data.plan === null || Array.isArray(data.plan)) {
183
+ if (data.plan === undefined) {
184
+ data.plan = {};
185
+ }
186
+ else {
187
+ throw new Error("PROJECT-DEFINITION 'plan' is not an object");
188
+ }
189
+ }
190
+ const plan = data.plan;
191
+ if (typeof plan.policy !== "object" || plan.policy === null || Array.isArray(plan.policy)) {
192
+ if (plan.policy === undefined) {
193
+ plan.policy = {};
194
+ }
195
+ else {
196
+ throw new Error("plan.policy is not an object");
197
+ }
198
+ }
199
+ const policyBlock = plan.policy;
200
+ const previous = policyBlock.allowDirectCommitsToMaster;
201
+ policyBlock.allowDirectCommitsToMaster = Boolean(allowDirectCommits);
202
+ let legacyDropped = false;
203
+ const narratives = plan.narratives;
204
+ if (typeof narratives === "object" &&
205
+ narratives !== null &&
206
+ !Array.isArray(narratives) &&
207
+ LEGACY_NARRATIVE_KEY in narratives) {
208
+ delete narratives[LEGACY_NARRATIVE_KEY];
209
+ legacyDropped = true;
210
+ }
211
+ writeFileSync(path, `${JSON.stringify(data, null, 2)}\n`, { encoding: "utf8" });
212
+ const changed = previous !== Boolean(allowDirectCommits) || legacyDropped;
213
+ const parts = [
214
+ `actor=${actor}`,
215
+ `allowDirectCommitsToMaster=${allowDirectCommits ? "true" : "false"}`,
216
+ `previous=${pythonRepr(previous)}`,
217
+ ];
218
+ if (legacyDropped) {
219
+ parts.push("legacy-narrative-migrated=true");
220
+ }
221
+ if (note) {
222
+ parts.push(`note=${note.replace(/\n/g, " ").replace(/\r/g, " ")}`);
223
+ }
224
+ const auditEntry = parts.join(" ");
225
+ appendAuditLog(projectRoot, auditEntry);
226
+ return { changed, auditEntry };
227
+ }
228
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1,15 @@
1
+ /** Framework default WIP cap (#1124 / umbrella #1119). */
2
+ export declare const DEFAULT_WIP_CAP = 10;
3
+ /** vBRIEF lifecycle folders that count toward the WIP set. */
4
+ export declare const WIP_LIFECYCLE_DIRS: readonly ["pending", "active"];
5
+ export type WipCapSource = "typed" | "default" | "default-on-error";
6
+ export interface WipCapResult {
7
+ readonly cap: number;
8
+ readonly source: WipCapSource;
9
+ readonly error: string | null;
10
+ }
11
+ /** Resolve plan.policy.wipCap from PROJECT-DEFINITION (#1124). */
12
+ export declare function resolveWipCap(projectRoot: string): WipCapResult;
13
+ /** Count *.vbrief.json files in vbrief/pending/ + vbrief/active/ (#1124). */
14
+ export declare function countVbriefWip(projectRoot: string): number;
15
+ //# sourceMappingURL=wip.d.ts.map
@@ -0,0 +1,81 @@
1
+ import { existsSync, readdirSync } from "node:fs";
2
+ import { join, resolve as pathResolve } from "node:path";
3
+ import { loadProjectDefinition } from "./resolve.js";
4
+ /** Framework default WIP cap (#1124 / umbrella #1119). */
5
+ export const DEFAULT_WIP_CAP = 10;
6
+ /** vBRIEF lifecycle folders that count toward the WIP set. */
7
+ export const WIP_LIFECYCLE_DIRS = ["pending", "active"];
8
+ function pythonTypeName(value) {
9
+ if (value === null)
10
+ return "None";
11
+ if (Array.isArray(value))
12
+ return "list";
13
+ if (typeof value === "boolean")
14
+ return "bool";
15
+ if (typeof value === "number")
16
+ return Number.isInteger(value) ? "int" : "float";
17
+ if (typeof value === "string")
18
+ return "str";
19
+ if (typeof value === "object")
20
+ return "dict";
21
+ return typeof value;
22
+ }
23
+ function pythonRepr(value) {
24
+ if (typeof value === "string")
25
+ return `'${value}'`;
26
+ if (value === null)
27
+ return "None";
28
+ if (typeof value === "boolean")
29
+ return value ? "True" : "False";
30
+ return String(value);
31
+ }
32
+ /** Resolve plan.policy.wipCap from PROJECT-DEFINITION (#1124). */
33
+ export function resolveWipCap(projectRoot) {
34
+ const [data, err] = loadProjectDefinition(projectRoot);
35
+ if (data === null) {
36
+ return { cap: DEFAULT_WIP_CAP, source: "default", error: err };
37
+ }
38
+ const plan = data.plan;
39
+ if (typeof plan !== "object" || plan === null || Array.isArray(plan)) {
40
+ return {
41
+ cap: DEFAULT_WIP_CAP,
42
+ source: "default",
43
+ error: "PROJECT-DEFINITION 'plan' is not an object",
44
+ };
45
+ }
46
+ const policyBlock = plan.policy;
47
+ if (typeof policyBlock !== "object" ||
48
+ policyBlock === null ||
49
+ Array.isArray(policyBlock) ||
50
+ !("wipCap" in policyBlock)) {
51
+ return { cap: DEFAULT_WIP_CAP, source: "default", error: null };
52
+ }
53
+ const raw = policyBlock.wipCap;
54
+ if (typeof raw !== "number" || !Number.isInteger(raw) || raw < 0) {
55
+ return {
56
+ cap: DEFAULT_WIP_CAP,
57
+ source: "default-on-error",
58
+ error: `plan.policy.wipCap must be a non-negative integer; got ${pythonTypeName(raw)} (${pythonRepr(raw)})`,
59
+ };
60
+ }
61
+ return { cap: raw, source: "typed", error: null };
62
+ }
63
+ /** Count *.vbrief.json files in vbrief/pending/ + vbrief/active/ (#1124). */
64
+ export function countVbriefWip(projectRoot) {
65
+ let total = 0;
66
+ const vbriefRoot = join(pathResolve(projectRoot), "vbrief");
67
+ for (const sub of WIP_LIFECYCLE_DIRS) {
68
+ const folder = join(vbriefRoot, sub);
69
+ if (!existsSync(folder)) {
70
+ continue;
71
+ }
72
+ const entries = readdirSync(folder, { withFileTypes: true });
73
+ for (const entry of entries) {
74
+ if (entry.isFile() && entry.name.endsWith(".vbrief.json")) {
75
+ total += 1;
76
+ }
77
+ }
78
+ }
79
+ return total;
80
+ }
81
+ //# sourceMappingURL=wip.js.map
@@ -0,0 +1,6 @@
1
+ export declare const EXIT_OK = 0;
2
+ export declare const EXIT_HITS_FOUND = 1;
3
+ export declare const EXIT_CONFIG_ERROR = 2;
4
+ export declare const GH_TIMEOUT_S = 30;
5
+ export declare const WINDOW_RADIUS = 20;
6
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1,6 @@
1
+ export const EXIT_OK = 0;
2
+ export const EXIT_HITS_FOUND = 1;
3
+ export const EXIT_CONFIG_ERROR = 2;
4
+ export const GH_TIMEOUT_S = 30;
5
+ export const WINDOW_RADIUS = 20;
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,5 @@
1
+ import type { Hit } from "./types.js";
2
+ export declare const CLOSING_KEYWORD_RE: RegExp;
3
+ export declare function renderHit(hit: Hit): string;
4
+ export declare function findHits(text: string, source: string): Hit[];
5
+ //# sourceMappingURL=detect.d.ts.map