dorfl 0.0.0 → 0.1.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 (619) hide show
  1. package/dist/advance-ci-template.d.ts +73 -0
  2. package/dist/advance-ci-template.d.ts.map +1 -0
  3. package/dist/advance-ci-template.js +104 -0
  4. package/dist/advance-ci-template.js.map +1 -0
  5. package/dist/advance-classify.d.ts +132 -0
  6. package/dist/advance-classify.d.ts.map +1 -0
  7. package/dist/advance-classify.js +120 -0
  8. package/dist/advance-classify.js.map +1 -0
  9. package/dist/advance-drivers.d.ts +182 -0
  10. package/dist/advance-drivers.d.ts.map +1 -0
  11. package/dist/advance-drivers.js +231 -0
  12. package/dist/advance-drivers.js.map +1 -0
  13. package/dist/advance-isolated.d.ts +156 -0
  14. package/dist/advance-isolated.d.ts.map +1 -0
  15. package/dist/advance-isolated.js +256 -0
  16. package/dist/advance-isolated.js.map +1 -0
  17. package/dist/advance-lifecycle-template.d.ts +107 -0
  18. package/dist/advance-lifecycle-template.d.ts.map +1 -0
  19. package/dist/advance-lifecycle-template.js +668 -0
  20. package/dist/advance-lifecycle-template.js.map +1 -0
  21. package/dist/advance-loop-driver.d.ts +325 -0
  22. package/dist/advance-loop-driver.d.ts.map +1 -0
  23. package/dist/advance-loop-driver.js +437 -0
  24. package/dist/advance-loop-driver.js.map +1 -0
  25. package/dist/advance-treeless-publish.d.ts +108 -0
  26. package/dist/advance-treeless-publish.d.ts.map +1 -0
  27. package/dist/advance-treeless-publish.js +71 -0
  28. package/dist/advance-treeless-publish.js.map +1 -0
  29. package/dist/advance.d.ts +340 -0
  30. package/dist/advance.d.ts.map +1 -0
  31. package/dist/advance.js +1122 -0
  32. package/dist/advance.js.map +1 -0
  33. package/dist/advancing-lock.d.ts +294 -0
  34. package/dist/advancing-lock.d.ts.map +1 -0
  35. package/dist/advancing-lock.js +594 -0
  36. package/dist/advancing-lock.js.map +1 -0
  37. package/dist/agent-launch.d.ts +79 -0
  38. package/dist/agent-launch.d.ts.map +1 -0
  39. package/dist/agent-launch.js +61 -0
  40. package/dist/agent-launch.js.map +1 -0
  41. package/dist/agent-stop.d.ts +149 -0
  42. package/dist/agent-stop.d.ts.map +1 -0
  43. package/dist/agent-stop.js +307 -0
  44. package/dist/agent-stop.js.map +1 -0
  45. package/dist/apply-decide.d.ts +127 -0
  46. package/dist/apply-decide.d.ts.map +1 -0
  47. package/dist/apply-decide.js +176 -0
  48. package/dist/apply-decide.js.map +1 -0
  49. package/dist/apply-merge-action.d.ts +206 -0
  50. package/dist/apply-merge-action.d.ts.map +1 -0
  51. package/dist/apply-merge-action.js +307 -0
  52. package/dist/apply-merge-action.js.map +1 -0
  53. package/dist/apply-persist.d.ts +174 -0
  54. package/dist/apply-persist.d.ts.map +1 -0
  55. package/dist/apply-persist.js +359 -0
  56. package/dist/apply-persist.js.map +1 -0
  57. package/dist/arbiter.d.ts +120 -0
  58. package/dist/arbiter.d.ts.map +1 -0
  59. package/dist/arbiter.js +255 -0
  60. package/dist/arbiter.js.map +1 -0
  61. package/dist/brand.d.ts +70 -0
  62. package/dist/brand.d.ts.map +1 -0
  63. package/dist/brand.js +84 -0
  64. package/dist/brand.js.map +1 -0
  65. package/dist/buildable-body.d.ts +132 -0
  66. package/dist/buildable-body.d.ts.map +1 -0
  67. package/dist/buildable-body.js +131 -0
  68. package/dist/buildable-body.js.map +1 -0
  69. package/dist/categorise.d.ts +66 -0
  70. package/dist/categorise.d.ts.map +1 -0
  71. package/dist/categorise.js +106 -0
  72. package/dist/categorise.js.map +1 -0
  73. package/dist/claim-cas.d.ts +117 -0
  74. package/dist/claim-cas.d.ts.map +1 -0
  75. package/dist/claim-cas.js +312 -0
  76. package/dist/claim-cas.js.map +1 -0
  77. package/dist/cli-spinner.d.ts +112 -0
  78. package/dist/cli-spinner.d.ts.map +1 -0
  79. package/dist/cli-spinner.js +157 -0
  80. package/dist/cli-spinner.js.map +1 -0
  81. package/dist/cli.d.ts +11 -0
  82. package/dist/cli.d.ts.map +1 -0
  83. package/dist/cli.js +3094 -0
  84. package/dist/cli.js.map +1 -0
  85. package/dist/close-job-template.d.ts +70 -0
  86. package/dist/close-job-template.d.ts.map +1 -0
  87. package/dist/close-job-template.js +180 -0
  88. package/dist/close-job-template.js.map +1 -0
  89. package/dist/close-job.d.ts +95 -0
  90. package/dist/close-job.d.ts.map +1 -0
  91. package/dist/close-job.js +226 -0
  92. package/dist/close-job.js.map +1 -0
  93. package/dist/complete.d.ts +361 -0
  94. package/dist/complete.d.ts.map +1 -0
  95. package/dist/complete.js +885 -0
  96. package/dist/complete.js.map +1 -0
  97. package/dist/concurrency.d.ts +68 -0
  98. package/dist/concurrency.d.ts.map +1 -0
  99. package/dist/concurrency.js +112 -0
  100. package/dist/concurrency.js.map +1 -0
  101. package/dist/config-override.d.ts +76 -0
  102. package/dist/config-override.d.ts.map +1 -0
  103. package/dist/config-override.js +50 -0
  104. package/dist/config-override.js.map +1 -0
  105. package/dist/config.d.ts +668 -0
  106. package/dist/config.d.ts.map +1 -0
  107. package/dist/config.js +241 -0
  108. package/dist/config.js.map +1 -0
  109. package/dist/continue-branch.d.ts +249 -0
  110. package/dist/continue-branch.d.ts.map +1 -0
  111. package/dist/continue-branch.js +389 -0
  112. package/dist/continue-branch.js.map +1 -0
  113. package/dist/cwd-section.d.ts +186 -0
  114. package/dist/cwd-section.d.ts.map +1 -0
  115. package/dist/cwd-section.js +209 -0
  116. package/dist/cwd-section.js.map +1 -0
  117. package/dist/decision-engine.d.ts +170 -0
  118. package/dist/decision-engine.d.ts.map +1 -0
  119. package/dist/decision-engine.js +136 -0
  120. package/dist/decision-engine.js.map +1 -0
  121. package/dist/detect.d.ts +17 -0
  122. package/dist/detect.d.ts.map +1 -0
  123. package/dist/detect.js +118 -0
  124. package/dist/detect.js.map +1 -0
  125. package/dist/do-autopick.d.ts +85 -0
  126. package/dist/do-autopick.d.ts.map +1 -0
  127. package/dist/do-autopick.js +112 -0
  128. package/dist/do-autopick.js.map +1 -0
  129. package/dist/do-config.d.ts +312 -0
  130. package/dist/do-config.d.ts.map +1 -0
  131. package/dist/do-config.js +358 -0
  132. package/dist/do-config.js.map +1 -0
  133. package/dist/do-remote-auto.d.ts +75 -0
  134. package/dist/do-remote-auto.d.ts.map +1 -0
  135. package/dist/do-remote-auto.js +111 -0
  136. package/dist/do-remote-auto.js.map +1 -0
  137. package/dist/do.d.ts +621 -0
  138. package/dist/do.d.ts.map +1 -0
  139. package/dist/do.js +1882 -0
  140. package/dist/do.js.map +1 -0
  141. package/dist/drop-source.d.ts +96 -0
  142. package/dist/drop-source.d.ts.map +1 -0
  143. package/dist/drop-source.js +91 -0
  144. package/dist/drop-source.js.map +1 -0
  145. package/dist/eligibility.d.ts +46 -0
  146. package/dist/eligibility.d.ts.map +1 -0
  147. package/dist/eligibility.js +34 -0
  148. package/dist/eligibility.js.map +1 -0
  149. package/dist/env-config.d.ts +51 -0
  150. package/dist/env-config.d.ts.map +1 -0
  151. package/dist/env-config.js +272 -0
  152. package/dist/env-config.js.map +1 -0
  153. package/dist/failure-cause.d.ts +70 -0
  154. package/dist/failure-cause.d.ts.map +1 -0
  155. package/dist/failure-cause.js +126 -0
  156. package/dist/failure-cause.js.map +1 -0
  157. package/dist/format.d.ts +43 -0
  158. package/dist/format.d.ts.map +1 -0
  159. package/dist/format.js +256 -0
  160. package/dist/format.js.map +1 -0
  161. package/dist/frontmatter.d.ts +215 -0
  162. package/dist/frontmatter.d.ts.map +1 -0
  163. package/dist/frontmatter.js +345 -0
  164. package/dist/frontmatter.js.map +1 -0
  165. package/dist/gate-readiness.d.ts +84 -0
  166. package/dist/gate-readiness.d.ts.map +1 -0
  167. package/dist/gate-readiness.js +103 -0
  168. package/dist/gate-readiness.js.map +1 -0
  169. package/dist/gc.d.ts +165 -0
  170. package/dist/gc.d.ts.map +1 -0
  171. package/dist/gc.js +313 -0
  172. package/dist/gc.js.map +1 -0
  173. package/dist/gh-failure.d.ts +42 -0
  174. package/dist/gh-failure.d.ts.map +1 -0
  175. package/dist/gh-failure.js +49 -0
  176. package/dist/gh-failure.js.map +1 -0
  177. package/dist/git.d.ts +75 -0
  178. package/dist/git.d.ts.map +1 -0
  179. package/dist/git.js +130 -0
  180. package/dist/git.js.map +1 -0
  181. package/dist/github.d.ts +187 -0
  182. package/dist/github.d.ts.map +1 -0
  183. package/dist/github.js +343 -0
  184. package/dist/github.js.map +1 -0
  185. package/dist/harness.d.ts +242 -0
  186. package/dist/harness.d.ts.map +1 -0
  187. package/dist/harness.js +157 -0
  188. package/dist/harness.js.map +1 -0
  189. package/dist/identity.d.ts +167 -0
  190. package/dist/identity.d.ts.map +1 -0
  191. package/dist/identity.js +231 -0
  192. package/dist/identity.js.map +1 -0
  193. package/dist/index.d.ts +147 -0
  194. package/dist/index.d.ts.map +1 -0
  195. package/dist/index.js +76 -0
  196. package/dist/index.js.map +1 -0
  197. package/dist/install-ci-branch-protection.d.ts +147 -0
  198. package/dist/install-ci-branch-protection.d.ts.map +1 -0
  199. package/dist/install-ci-branch-protection.js +166 -0
  200. package/dist/install-ci-branch-protection.js.map +1 -0
  201. package/dist/install-ci-capabilities/advance-lifecycle.d.ts +15 -0
  202. package/dist/install-ci-capabilities/advance-lifecycle.d.ts.map +1 -0
  203. package/dist/install-ci-capabilities/advance-lifecycle.js +28 -0
  204. package/dist/install-ci-capabilities/advance-lifecycle.js.map +1 -0
  205. package/dist/install-ci-capabilities/close-job.d.ts +13 -0
  206. package/dist/install-ci-capabilities/close-job.d.ts.map +1 -0
  207. package/dist/install-ci-capabilities/close-job.js +26 -0
  208. package/dist/install-ci-capabilities/close-job.js.map +1 -0
  209. package/dist/install-ci-capabilities/example-noop.d.ts +16 -0
  210. package/dist/install-ci-capabilities/example-noop.d.ts.map +1 -0
  211. package/dist/install-ci-capabilities/example-noop.js +23 -0
  212. package/dist/install-ci-capabilities/example-noop.js.map +1 -0
  213. package/dist/install-ci-capabilities/intake.d.ts +15 -0
  214. package/dist/install-ci-capabilities/intake.d.ts.map +1 -0
  215. package/dist/install-ci-capabilities/intake.js +28 -0
  216. package/dist/install-ci-capabilities/intake.js.map +1 -0
  217. package/dist/install-ci-capabilities/verify.d.ts +14 -0
  218. package/dist/install-ci-capabilities/verify.d.ts.map +1 -0
  219. package/dist/install-ci-capabilities/verify.js +27 -0
  220. package/dist/install-ci-capabilities/verify.js.map +1 -0
  221. package/dist/install-ci-core.d.ts +446 -0
  222. package/dist/install-ci-core.d.ts.map +1 -0
  223. package/dist/install-ci-core.js +760 -0
  224. package/dist/install-ci-core.js.map +1 -0
  225. package/dist/install-ci-github.d.ts +167 -0
  226. package/dist/install-ci-github.d.ts.map +1 -0
  227. package/dist/install-ci-github.js +315 -0
  228. package/dist/install-ci-github.js.map +1 -0
  229. package/dist/install-ci.d.ts +105 -0
  230. package/dist/install-ci.d.ts.map +1 -0
  231. package/dist/install-ci.js +363 -0
  232. package/dist/install-ci.js.map +1 -0
  233. package/dist/intake-event.d.ts +88 -0
  234. package/dist/intake-event.d.ts.map +1 -0
  235. package/dist/intake-event.js +66 -0
  236. package/dist/intake-event.js.map +1 -0
  237. package/dist/intake-marker.d.ts +95 -0
  238. package/dist/intake-marker.d.ts.map +1 -0
  239. package/dist/intake-marker.js +127 -0
  240. package/dist/intake-marker.js.map +1 -0
  241. package/dist/intake-triage.d.ts +48 -0
  242. package/dist/intake-triage.d.ts.map +1 -0
  243. package/dist/intake-triage.js +95 -0
  244. package/dist/intake-triage.js.map +1 -0
  245. package/dist/intake-trigger-template.d.ts +185 -0
  246. package/dist/intake-trigger-template.d.ts.map +1 -0
  247. package/dist/intake-trigger-template.js +449 -0
  248. package/dist/intake-trigger-template.js.map +1 -0
  249. package/dist/intake.d.ts +569 -0
  250. package/dist/intake.d.ts.map +1 -0
  251. package/dist/intake.js +1628 -0
  252. package/dist/intake.js.map +1 -0
  253. package/dist/integration-core.d.ts +539 -0
  254. package/dist/integration-core.d.ts.map +1 -0
  255. package/dist/integration-core.js +2195 -0
  256. package/dist/integration-core.js.map +1 -0
  257. package/dist/integrator.d.ts +343 -0
  258. package/dist/integrator.d.ts.map +1 -0
  259. package/dist/integrator.js +400 -0
  260. package/dist/integrator.js.map +1 -0
  261. package/dist/isolation.d.ts +219 -0
  262. package/dist/isolation.d.ts.map +1 -0
  263. package/dist/isolation.js +261 -0
  264. package/dist/isolation.js.map +1 -0
  265. package/dist/issue-provider.d.ts +349 -0
  266. package/dist/issue-provider.d.ts.map +1 -0
  267. package/dist/issue-provider.js +360 -0
  268. package/dist/issue-provider.js.map +1 -0
  269. package/dist/item-lock.d.ts +626 -0
  270. package/dist/item-lock.d.ts.map +1 -0
  271. package/dist/item-lock.js +1381 -0
  272. package/dist/item-lock.js.map +1 -0
  273. package/dist/item-path.d.ts +49 -0
  274. package/dist/item-path.d.ts.map +1 -0
  275. package/dist/item-path.js +66 -0
  276. package/dist/item-path.js.map +1 -0
  277. package/dist/ledger-lint.d.ts +129 -0
  278. package/dist/ledger-lint.d.ts.map +1 -0
  279. package/dist/ledger-lint.js +249 -0
  280. package/dist/ledger-lint.js.map +1 -0
  281. package/dist/ledger-read.d.ts +357 -0
  282. package/dist/ledger-read.d.ts.map +1 -0
  283. package/dist/ledger-read.js +442 -0
  284. package/dist/ledger-read.js.map +1 -0
  285. package/dist/ledger-write.d.ts +330 -0
  286. package/dist/ledger-write.d.ts.map +1 -0
  287. package/dist/ledger-write.js +411 -0
  288. package/dist/ledger-write.js.map +1 -0
  289. package/dist/lifecycle-gather.d.ts +30 -0
  290. package/dist/lifecycle-gather.d.ts.map +1 -0
  291. package/dist/lifecycle-gather.js +205 -0
  292. package/dist/lifecycle-gather.js.map +1 -0
  293. package/dist/lifecycle-pools.d.ts +180 -0
  294. package/dist/lifecycle-pools.d.ts.map +1 -0
  295. package/dist/lifecycle-pools.js +78 -0
  296. package/dist/lifecycle-pools.js.map +1 -0
  297. package/dist/merge-question-surfacer.d.ts +166 -0
  298. package/dist/merge-question-surfacer.d.ts.map +1 -0
  299. package/dist/merge-question-surfacer.js +297 -0
  300. package/dist/merge-question-surfacer.js.map +1 -0
  301. package/dist/mint-adr.d.ts +126 -0
  302. package/dist/mint-adr.d.ts.map +1 -0
  303. package/dist/mint-adr.js +257 -0
  304. package/dist/mint-adr.js.map +1 -0
  305. package/dist/mirror-pool-scan.d.ts +125 -0
  306. package/dist/mirror-pool-scan.d.ts.map +1 -0
  307. package/dist/mirror-pool-scan.js +104 -0
  308. package/dist/mirror-pool-scan.js.map +1 -0
  309. package/dist/needs-attention.d.ts +341 -0
  310. package/dist/needs-attention.d.ts.map +1 -0
  311. package/dist/needs-attention.js +900 -0
  312. package/dist/needs-attention.js.map +1 -0
  313. package/dist/orphan-sidecar.d.ts +79 -0
  314. package/dist/orphan-sidecar.d.ts.map +1 -0
  315. package/dist/orphan-sidecar.js +71 -0
  316. package/dist/orphan-sidecar.js.map +1 -0
  317. package/dist/output.d.ts +48 -0
  318. package/dist/output.d.ts.map +1 -0
  319. package/dist/output.js +66 -0
  320. package/dist/output.js.map +1 -0
  321. package/dist/pi-harness.d.ts +179 -0
  322. package/dist/pi-harness.d.ts.map +1 -0
  323. package/dist/pi-harness.js +342 -0
  324. package/dist/pi-harness.js.map +1 -0
  325. package/dist/placement.d.ts +99 -0
  326. package/dist/placement.d.ts.map +1 -0
  327. package/dist/placement.js +67 -0
  328. package/dist/placement.js.map +1 -0
  329. package/dist/prd-to-spec.d.ts +315 -0
  330. package/dist/prd-to-spec.d.ts.map +1 -0
  331. package/dist/prd-to-spec.js +684 -0
  332. package/dist/prd-to-spec.js.map +1 -0
  333. package/dist/prepare.d.ts +121 -0
  334. package/dist/prepare.d.ts.map +1 -0
  335. package/dist/prepare.js +140 -0
  336. package/dist/prepare.js.map +1 -0
  337. package/dist/prompt.d.ts +360 -0
  338. package/dist/prompt.d.ts.map +1 -0
  339. package/dist/prompt.js +499 -0
  340. package/dist/prompt.js.map +1 -0
  341. package/dist/protocol/ADR-FORMAT.md +47 -0
  342. package/dist/protocol/CLAIM-PROTOCOL.md +217 -0
  343. package/dist/protocol/REVIEW-PROTOCOL.md +119 -0
  344. package/dist/protocol/SURFACE-PROTOCOL.md +121 -0
  345. package/dist/protocol/TASKING-PROTOCOL.md +122 -0
  346. package/dist/protocol/WORK-CONTRACT.md +276 -0
  347. package/dist/protocol/spec-template.md +71 -0
  348. package/dist/protocol/task-template.md +65 -0
  349. package/dist/readiness.d.ts +66 -0
  350. package/dist/readiness.d.ts.map +1 -0
  351. package/dist/readiness.js +36 -0
  352. package/dist/readiness.js.map +1 -0
  353. package/dist/reap-branches.d.ts +102 -0
  354. package/dist/reap-branches.d.ts.map +1 -0
  355. package/dist/reap-branches.js +149 -0
  356. package/dist/reap-branches.js.map +1 -0
  357. package/dist/recover-isolated.d.ts +72 -0
  358. package/dist/recover-isolated.d.ts.map +1 -0
  359. package/dist/recover-isolated.js +188 -0
  360. package/dist/recover-isolated.js.map +1 -0
  361. package/dist/registry.d.ts +172 -0
  362. package/dist/registry.d.ts.map +1 -0
  363. package/dist/registry.js +296 -0
  364. package/dist/registry.js.map +1 -0
  365. package/dist/repo-config.d.ts +201 -0
  366. package/dist/repo-config.d.ts.map +1 -0
  367. package/dist/repo-config.js +414 -0
  368. package/dist/repo-config.js.map +1 -0
  369. package/dist/repo-key.d.ts +20 -0
  370. package/dist/repo-key.d.ts.map +1 -0
  371. package/dist/repo-key.js +68 -0
  372. package/dist/repo-key.js.map +1 -0
  373. package/dist/repo-mirror.d.ts +177 -0
  374. package/dist/repo-mirror.d.ts.map +1 -0
  375. package/dist/repo-mirror.js +271 -0
  376. package/dist/repo-mirror.js.map +1 -0
  377. package/dist/retry-backoff.d.ts +90 -0
  378. package/dist/retry-backoff.d.ts.map +1 -0
  379. package/dist/retry-backoff.js +98 -0
  380. package/dist/retry-backoff.js.map +1 -0
  381. package/dist/review-gate.d.ts +173 -0
  382. package/dist/review-gate.d.ts.map +1 -0
  383. package/dist/review-gate.js +261 -0
  384. package/dist/review-gate.js.map +1 -0
  385. package/dist/review-verdict.d.ts +149 -0
  386. package/dist/review-verdict.d.ts.map +1 -0
  387. package/dist/review-verdict.js +332 -0
  388. package/dist/review-verdict.js.map +1 -0
  389. package/dist/run.d.ts +221 -0
  390. package/dist/run.d.ts.map +1 -0
  391. package/dist/run.js +963 -0
  392. package/dist/run.js.map +1 -0
  393. package/dist/scan.d.ts +308 -0
  394. package/dist/scan.d.ts.map +1 -0
  395. package/dist/scan.js +374 -0
  396. package/dist/scan.js.map +1 -0
  397. package/dist/select-order.d.ts +75 -0
  398. package/dist/select-order.d.ts.map +1 -0
  399. package/dist/select-order.js +108 -0
  400. package/dist/select-order.js.map +1 -0
  401. package/dist/select-priority.d.ts +188 -0
  402. package/dist/select-priority.d.ts.map +1 -0
  403. package/dist/select-priority.js +80 -0
  404. package/dist/select-priority.js.map +1 -0
  405. package/dist/select.d.ts +25 -0
  406. package/dist/select.d.ts.map +1 -0
  407. package/dist/select.js +43 -0
  408. package/dist/select.js.map +1 -0
  409. package/dist/session-path.d.ts +36 -0
  410. package/dist/session-path.d.ts.map +1 -0
  411. package/dist/session-path.js +129 -0
  412. package/dist/session-path.js.map +1 -0
  413. package/dist/sidecar-apply.d.ts +83 -0
  414. package/dist/sidecar-apply.d.ts.map +1 -0
  415. package/dist/sidecar-apply.js +111 -0
  416. package/dist/sidecar-apply.js.map +1 -0
  417. package/dist/sidecar.d.ts +245 -0
  418. package/dist/sidecar.d.ts.map +1 -0
  419. package/dist/sidecar.js +481 -0
  420. package/dist/sidecar.js.map +1 -0
  421. package/dist/slug-namespace.d.ts +204 -0
  422. package/dist/slug-namespace.d.ts.map +1 -0
  423. package/dist/slug-namespace.js +229 -0
  424. package/dist/slug-namespace.js.map +1 -0
  425. package/dist/spec-complete.d.ts +44 -0
  426. package/dist/spec-complete.d.ts.map +1 -0
  427. package/dist/spec-complete.js +69 -0
  428. package/dist/spec-complete.js.map +1 -0
  429. package/dist/start.d.ts +97 -0
  430. package/dist/start.d.ts.map +1 -0
  431. package/dist/start.js +633 -0
  432. package/dist/start.js.map +1 -0
  433. package/dist/status.d.ts +199 -0
  434. package/dist/status.d.ts.map +1 -0
  435. package/dist/status.js +228 -0
  436. package/dist/status.js.map +1 -0
  437. package/dist/surface-gate.d.ts +162 -0
  438. package/dist/surface-gate.d.ts.map +1 -0
  439. package/dist/surface-gate.js +206 -0
  440. package/dist/surface-gate.js.map +1 -0
  441. package/dist/surface-persist.d.ts +86 -0
  442. package/dist/surface-persist.d.ts.map +1 -0
  443. package/dist/surface-persist.js +129 -0
  444. package/dist/surface-persist.js.map +1 -0
  445. package/dist/tasker-review-loop.d.ts +249 -0
  446. package/dist/tasker-review-loop.d.ts.map +1 -0
  447. package/dist/tasker-review-loop.js +369 -0
  448. package/dist/tasker-review-loop.js.map +1 -0
  449. package/dist/tasking-eligibility.d.ts +74 -0
  450. package/dist/tasking-eligibility.d.ts.map +1 -0
  451. package/dist/tasking-eligibility.js +52 -0
  452. package/dist/tasking-eligibility.js.map +1 -0
  453. package/dist/tasking-lock.d.ts +111 -0
  454. package/dist/tasking-lock.d.ts.map +1 -0
  455. package/dist/tasking-lock.js +256 -0
  456. package/dist/tasking-lock.js.map +1 -0
  457. package/dist/tasking.d.ts +275 -0
  458. package/dist/tasking.d.ts.map +1 -0
  459. package/dist/tasking.js +952 -0
  460. package/dist/tasking.js.map +1 -0
  461. package/dist/triage-gate.d.ts +127 -0
  462. package/dist/triage-gate.d.ts.map +1 -0
  463. package/dist/triage-gate.js +139 -0
  464. package/dist/triage-gate.js.map +1 -0
  465. package/dist/triage-persist.d.ts +163 -0
  466. package/dist/triage-persist.d.ts.map +1 -0
  467. package/dist/triage-persist.js +387 -0
  468. package/dist/triage-persist.js.map +1 -0
  469. package/dist/verdict-json.d.ts +32 -0
  470. package/dist/verdict-json.d.ts.map +1 -0
  471. package/dist/verdict-json.js +74 -0
  472. package/dist/verdict-json.js.map +1 -0
  473. package/dist/verify-workflow-template.d.ts +60 -0
  474. package/dist/verify-workflow-template.d.ts.map +1 -0
  475. package/dist/verify-workflow-template.js +126 -0
  476. package/dist/verify-workflow-template.js.map +1 -0
  477. package/dist/verify.d.ts +60 -0
  478. package/dist/verify.d.ts.map +1 -0
  479. package/dist/verify.js +62 -0
  480. package/dist/verify.js.map +1 -0
  481. package/dist/watch-session.d.ts +112 -0
  482. package/dist/watch-session.d.ts.map +1 -0
  483. package/dist/watch-session.js +347 -0
  484. package/dist/watch-session.js.map +1 -0
  485. package/dist/work-layout.d.ts +198 -0
  486. package/dist/work-layout.d.ts.map +1 -0
  487. package/dist/work-layout.js +217 -0
  488. package/dist/work-layout.js.map +1 -0
  489. package/dist/work-on.d.ts +154 -0
  490. package/dist/work-on.d.ts.map +1 -0
  491. package/dist/work-on.js +387 -0
  492. package/dist/work-on.js.map +1 -0
  493. package/dist/workspace.d.ts +224 -0
  494. package/dist/workspace.d.ts.map +1 -0
  495. package/dist/workspace.js +325 -0
  496. package/dist/workspace.js.map +1 -0
  497. package/package.json +46 -2
  498. package/src/advance-ci-template.ts +203 -0
  499. package/src/advance-classify.ts +197 -0
  500. package/src/advance-drivers.ts +414 -0
  501. package/src/advance-isolated.ts +432 -0
  502. package/src/advance-lifecycle-template.ts +791 -0
  503. package/src/advance-loop-driver.ts +745 -0
  504. package/src/advance-treeless-publish.ts +177 -0
  505. package/src/advance.ts +1564 -0
  506. package/src/advancing-lock.ts +988 -0
  507. package/src/agent-launch.ts +137 -0
  508. package/src/agent-stop.ts +361 -0
  509. package/src/apply-decide.ts +242 -0
  510. package/src/apply-merge-action.ts +502 -0
  511. package/src/apply-persist.ts +518 -0
  512. package/src/arbiter.ts +372 -0
  513. package/src/brand.ts +111 -0
  514. package/src/buildable-body.ts +196 -0
  515. package/src/categorise.ts +158 -0
  516. package/src/claim-cas.ts +513 -0
  517. package/src/cli-spinner.ts +225 -0
  518. package/src/cli.ts +4369 -0
  519. package/src/close-job-template.ts +236 -0
  520. package/src/close-job.ts +319 -0
  521. package/src/complete.ts +1379 -0
  522. package/src/concurrency.ts +151 -0
  523. package/src/config-override.ts +116 -0
  524. package/src/config.ts +883 -0
  525. package/src/continue-branch.ts +542 -0
  526. package/src/cwd-section.ts +392 -0
  527. package/src/decision-engine.ts +272 -0
  528. package/src/detect.ts +124 -0
  529. package/src/do-autopick.ts +223 -0
  530. package/src/do-config.ts +589 -0
  531. package/src/do-remote-auto.ts +197 -0
  532. package/src/do.ts +2623 -0
  533. package/src/drop-source.ts +194 -0
  534. package/src/eligibility.ts +79 -0
  535. package/src/env-config.ts +305 -0
  536. package/src/failure-cause.ts +142 -0
  537. package/src/format.ts +313 -0
  538. package/src/frontmatter.ts +485 -0
  539. package/src/gate-readiness.ts +147 -0
  540. package/src/gc.ts +510 -0
  541. package/src/gh-failure.ts +53 -0
  542. package/src/git.ts +186 -0
  543. package/src/github.ts +468 -0
  544. package/src/harness.ts +355 -0
  545. package/src/identity.ts +322 -0
  546. package/src/index.ts +785 -0
  547. package/src/install-ci-branch-protection.ts +255 -0
  548. package/src/install-ci-capabilities/advance-lifecycle.ts +34 -0
  549. package/src/install-ci-capabilities/close-job.ts +32 -0
  550. package/src/install-ci-capabilities/example-noop.ts +24 -0
  551. package/src/install-ci-capabilities/intake.ts +34 -0
  552. package/src/install-ci-capabilities/verify.ts +33 -0
  553. package/src/install-ci-core.ts +1088 -0
  554. package/src/install-ci-github.ts +376 -0
  555. package/src/install-ci.ts +552 -0
  556. package/src/intake-event.ts +102 -0
  557. package/src/intake-marker.ts +195 -0
  558. package/src/intake-triage.ts +138 -0
  559. package/src/intake-trigger-template.ts +591 -0
  560. package/src/intake.ts +2445 -0
  561. package/src/integration-core.ts +3065 -0
  562. package/src/integrator.ts +771 -0
  563. package/src/isolation.ts +484 -0
  564. package/src/issue-provider.ts +733 -0
  565. package/src/item-lock.ts +1858 -0
  566. package/src/item-path.ts +75 -0
  567. package/src/ledger-lint.ts +332 -0
  568. package/src/ledger-read.ts +924 -0
  569. package/src/ledger-write.ts +865 -0
  570. package/src/lifecycle-gather.ts +298 -0
  571. package/src/lifecycle-pools.ts +250 -0
  572. package/src/merge-question-surfacer.ts +496 -0
  573. package/src/mint-adr.ts +362 -0
  574. package/src/mirror-pool-scan.ts +240 -0
  575. package/src/needs-attention.ts +1506 -0
  576. package/src/orphan-sidecar.ts +150 -0
  577. package/src/output.ts +89 -0
  578. package/src/pi-harness.ts +403 -0
  579. package/src/placement.ts +131 -0
  580. package/src/prd-to-spec.ts +1023 -0
  581. package/src/prepare.ts +230 -0
  582. package/src/prompt.ts +760 -0
  583. package/src/readiness.ts +98 -0
  584. package/src/reap-branches.ts +278 -0
  585. package/src/recover-isolated.ts +276 -0
  586. package/src/registry.ts +475 -0
  587. package/src/repo-config.ts +550 -0
  588. package/src/repo-key.ts +74 -0
  589. package/src/repo-mirror.ts +367 -0
  590. package/src/retry-backoff.ts +130 -0
  591. package/src/review-gate.ts +389 -0
  592. package/src/review-verdict.ts +422 -0
  593. package/src/run.ts +1430 -0
  594. package/src/scan.ts +611 -0
  595. package/src/select-order.ts +143 -0
  596. package/src/select-priority.ts +266 -0
  597. package/src/select.ts +62 -0
  598. package/src/session-path.ts +153 -0
  599. package/src/sidecar-apply.ts +216 -0
  600. package/src/sidecar.ts +700 -0
  601. package/src/slug-namespace.ts +367 -0
  602. package/src/spec-complete.ts +118 -0
  603. package/src/start.ts +974 -0
  604. package/src/status.ts +441 -0
  605. package/src/surface-gate.ts +337 -0
  606. package/src/surface-persist.ts +241 -0
  607. package/src/tasker-review-loop.ts +671 -0
  608. package/src/tasking-eligibility.ts +114 -0
  609. package/src/tasking-lock.ts +416 -0
  610. package/src/tasking.ts +1438 -0
  611. package/src/triage-gate.ts +248 -0
  612. package/src/triage-persist.ts +570 -0
  613. package/src/verdict-json.ts +73 -0
  614. package/src/verify-workflow-template.ts +159 -0
  615. package/src/verify.ts +123 -0
  616. package/src/watch-session.ts +397 -0
  617. package/src/work-layout.ts +262 -0
  618. package/src/work-on.ts +660 -0
  619. package/src/workspace.ts +502 -0
@@ -0,0 +1,149 @@
1
+ /**
2
+ * The UNIFIED review-verdict type + parser + the shared JSON-verdict-contract
3
+ * prompt helper for the runner-invoked **review discipline**
4
+ * (`work/protocol/REVIEW-PROTOCOL.md`, source-of-truth
5
+ * `skills/setup/protocol/REVIEW-PROTOCOL.md`).
6
+ *
7
+ * This is the keystone of the `runner-invoked-disciplines-into-protocol` prd
8
+ * (task 1, D4): every runner-invoked review prompt builder
9
+ * ({@link buildReviewPrompt}, {@link buildTaskAcceptancePrompt} in
10
+ * `review-gate.ts`; {@link buildLoneTaskReviewPrompt} in `intake.ts`;
11
+ * {@link buildTaskReviewPrompt} in `tasker-review-loop.ts`) POINTS at
12
+ * `REVIEW-PROTOCOL.md` for the discipline + calls {@link verdictContractPrompt}
13
+ * for the JSON-emitted-shape prose. None of them re-inlines the lenses or the
14
+ * verdict contract; this module is the single home.
15
+ *
16
+ * The PARSER is the source of truth for the EMITTED SHAPE (D2):
17
+ * `REVIEW-PROTOCOL.md` mirrors what `parseReviewVerdict` enforces (a
18
+ * fixture-matches-doc test pins the two together). Discipline content is owned
19
+ * by the doc; enforced shape is owned by the parser.
20
+ */
21
+ /** A single review finding — the `severity`/`question`/`context` triple. */
22
+ export interface ReviewFinding {
23
+ /** Whether this finding blocks (keeps the work out of "ready") or is a nit. */
24
+ severity: 'blocking' | 'non-blocking';
25
+ /** The question / defect, with enough context to act. */
26
+ question: string;
27
+ /** The relevant excerpt, `file:line`, or reasoning. */
28
+ context?: string;
29
+ }
30
+ /**
31
+ * A full-content edit the review agent wants applied (the improver loop's
32
+ * between-passes step). `path` is repo-relative; `content` is the FULL
33
+ * replacement file body. The runner writes it; the agent does no disk/git.
34
+ */
35
+ export interface TaskEdit {
36
+ /** Repo-relative path of the candidate task file to write. */
37
+ path: string;
38
+ /** The full replacement content for that file. */
39
+ content: string;
40
+ }
41
+ /**
42
+ * A task the review judged UNCERTAIN — emit it `needsAnswers: true` with the
43
+ * questions in its body. Used by the tasker improver loop's non-converge sink.
44
+ */
45
+ export interface UncertainTask {
46
+ /** Repo-relative path of the uncertain candidate task. */
47
+ path: string;
48
+ /** The open questions to record in the task body. */
49
+ questions: string[];
50
+ }
51
+ /**
52
+ * The UNIFIED review verdict — one type across all four runner-invoked review
53
+ * call sites. The required fields (`verdict`, `findings`) are common; the
54
+ * optional channels are caller-specific (each builder's prompt names which
55
+ * channels to fill). The parser tolerates any subset; routing code reads only
56
+ * the channels its caller asked for.
57
+ */
58
+ export interface ReviewVerdict {
59
+ /** `approve` lets the artifact proceed; `block` routes to needs-attention. */
60
+ verdict: 'approve' | 'block';
61
+ /** The findings the agent surfaced (may be empty on an approve). */
62
+ findings: ReviewFinding[];
63
+ /**
64
+ * For the PR/code review gate: the deliberately-authored, human-readable
65
+ * REVIEW prose the in-core PR-comment poster posts. Advisory only — never
66
+ * gates the verdict (routing uses ONLY `verdict`/`findings`).
67
+ */
68
+ review?: string;
69
+ /** For the tasker improver loop: full-content edits to apply between passes. */
70
+ edits?: TaskEdit[];
71
+ /**
72
+ * For the lone-task review: a single in-memory full-replacement task BODY
73
+ * (the markdown AFTER the frontmatter), applied before the next round.
74
+ */
75
+ edit?: string;
76
+ /** For the lone-task review: open question(s) carried into the ASK comment. */
77
+ questions?: string[];
78
+ /** For the tasker improver loop: specific tasks to emit `needsAnswers: true`. */
79
+ uncertainTasks?: UncertainTask[];
80
+ /** For the tasker improver loop: route the WHOLE prd to needs-attention. */
81
+ decompositionUnclear?: {
82
+ questions: string[];
83
+ };
84
+ }
85
+ /** Raised when the review agent ran but produced no parseable verdict. */
86
+ export declare class ReviewParseError extends Error {
87
+ }
88
+ /**
89
+ * Parse the unified review verdict out of the review agent's textual output.
90
+ * The agent may wrap the JSON object in prose / a fenced block, so the first
91
+ * JSON object carrying a `verdict` field is extracted via the shared
92
+ * {@link extractJsonObjectSpan}, JSON-parsed, and validated. The verdict shape
93
+ * is the source of truth for what `REVIEW-PROTOCOL.md` describes (D2).
94
+ *
95
+ * Throws {@link ReviewParseError} on: no JSON object, invalid JSON, or a
96
+ * `verdict` not in `{approve, block}`. The caller treats any throw as
97
+ * needs-attention — NEVER a silent approve.
98
+ */
99
+ export declare function parseReviewVerdict(output: string): ReviewVerdict;
100
+ /**
101
+ * The shared JSON-verdict-contract prompt block — ONE function, called by all
102
+ * four review-prompt builders. Returns the prose describing the unified
103
+ * {@link ReviewVerdict} emitted shape (the prose mirrors what
104
+ * {@link parseReviewVerdict} enforces; D2). Per-builder framing (who you are,
105
+ * what you are reviewing, which optional channels to fill) stays in each
106
+ * builder; this block is the single source of truth for the shape.
107
+ *
108
+ * The block is intentionally generous about optional channels — each caller's
109
+ * prompt names which ones it wants. Unused channels are ignored by the parser.
110
+ */
111
+ export declare function verdictContractPrompt(): string;
112
+ /**
113
+ * The shared "emit DEFENSIVE, parseable, minified JSON" contract block — the
114
+ * hard-won discipline that stops a weak model from stranding the run with an
115
+ * unparseable emit (a dropped escape on an inner `"`, a raw newline in a string,
116
+ * an over-long field). It was learned on the Gate-2 verdict seam
117
+ * (observation `gate2-review-verdict-json-parse-crash-on-large-diffs`) and is
118
+ * now SHARED so EVERY agent→JSON→dispatch seam carries it, not just the verdict
119
+ * gate: {@link verdictContractPrompt} appends it, and so does the SURFACE gate's
120
+ * `buildSurfacePrompt` (observation
121
+ * `surface-rung-agent-emits-no-parseable-questions` — the same class of failure
122
+ * on the surface rung, where the prompt previously lacked this hardening AND
123
+ * showed a multi-line example that invited pretty-printing).
124
+ *
125
+ * @param emitNoun what the emitted object is called in prose (`verdict` /
126
+ * `result`) — only the wording differs; the discipline is identical.
127
+ * @param longestField the name of the field most likely to be long (the one to
128
+ * length-cap), or undefined to omit the length-cap bullet.
129
+ */
130
+ export declare function parseableJsonContractPrompt(emitNoun?: string, longestField?: string): string;
131
+ /**
132
+ * The shared prompt block that POINTS the spawned agent at the in-band review
133
+ * discipline doc (`work/protocol/REVIEW-PROTOCOL.md` in the set-up target repo,
134
+ * or the vendored fallback) instead of re-inlining the lenses. The four review
135
+ * builders call this so the discipline content lives in ONE place
136
+ * (`REVIEW-PROTOCOL.md`), never duplicated in the prompt builders.
137
+ */
138
+ export declare function reviewDisciplinePrompt(): string;
139
+ /**
140
+ * Resolve `REVIEW-PROTOCOL.md` in the target repo / vendored fallback / dev
141
+ * walk \u2014 a thin alias around {@link resolveProtocolDoc} for callers (and
142
+ * tests) that want to assert the doc is reachable. The four builders themselves
143
+ * do NOT call this (they reference the path BY NAME in the prompt prose, so the
144
+ * spawned agent reads its repo's own `work/protocol/REVIEW-PROTOCOL.md`), but
145
+ * keeping the helper here lets the resolver test cover the protocol-doc set in
146
+ * one place.
147
+ */
148
+ export declare function resolveReviewProtocolPath(cwd?: string, override?: string): string;
149
+ //# sourceMappingURL=review-verdict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-verdict.d.ts","sourceRoot":"","sources":["../src/review-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC7B,+EAA+E;IAC/E,QAAQ,EAAE,UAAU,GAAG,cAAc,CAAC;IACtC,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACxB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC7B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,SAAS,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,8EAA8E;IAC9E,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,iFAAiF;IACjF,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAC,CAAC;CAC7C;AAED,0EAA0E;AAC1E,qBAAa,gBAAiB,SAAQ,KAAK;CAAG;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAqChE;AAoJD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAqC9C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,CAC1C,QAAQ,SAAY,EACpB,YAAY,CAAC,EAAE,MAAM,GACnB,MAAM,CAsBR;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAc/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACxC,GAAG,CAAC,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GACf,MAAM,CAER"}
@@ -0,0 +1,332 @@
1
+ /**
2
+ * The UNIFIED review-verdict type + parser + the shared JSON-verdict-contract
3
+ * prompt helper for the runner-invoked **review discipline**
4
+ * (`work/protocol/REVIEW-PROTOCOL.md`, source-of-truth
5
+ * `skills/setup/protocol/REVIEW-PROTOCOL.md`).
6
+ *
7
+ * This is the keystone of the `runner-invoked-disciplines-into-protocol` prd
8
+ * (task 1, D4): every runner-invoked review prompt builder
9
+ * ({@link buildReviewPrompt}, {@link buildTaskAcceptancePrompt} in
10
+ * `review-gate.ts`; {@link buildLoneTaskReviewPrompt} in `intake.ts`;
11
+ * {@link buildTaskReviewPrompt} in `tasker-review-loop.ts`) POINTS at
12
+ * `REVIEW-PROTOCOL.md` for the discipline + calls {@link verdictContractPrompt}
13
+ * for the JSON-emitted-shape prose. None of them re-inlines the lenses or the
14
+ * verdict contract; this module is the single home.
15
+ *
16
+ * The PARSER is the source of truth for the EMITTED SHAPE (D2):
17
+ * `REVIEW-PROTOCOL.md` mirrors what `parseReviewVerdict` enforces (a
18
+ * fixture-matches-doc test pins the two together). Discipline content is owned
19
+ * by the doc; enforced shape is owned by the parser.
20
+ */
21
+ import { extractJsonObjectSpan } from './verdict-json.js';
22
+ import { resolveProtocolDoc } from './prompt.js';
23
+ /** Raised when the review agent ran but produced no parseable verdict. */
24
+ export class ReviewParseError extends Error {
25
+ }
26
+ /**
27
+ * Parse the unified review verdict out of the review agent's textual output.
28
+ * The agent may wrap the JSON object in prose / a fenced block, so the first
29
+ * JSON object carrying a `verdict` field is extracted via the shared
30
+ * {@link extractJsonObjectSpan}, JSON-parsed, and validated. The verdict shape
31
+ * is the source of truth for what `REVIEW-PROTOCOL.md` describes (D2).
32
+ *
33
+ * Throws {@link ReviewParseError} on: no JSON object, invalid JSON, or a
34
+ * `verdict` not in `{approve, block}`. The caller treats any throw as
35
+ * needs-attention — NEVER a silent approve.
36
+ */
37
+ export function parseReviewVerdict(output) {
38
+ const span = extractJsonObjectSpan(output);
39
+ if (span === undefined) {
40
+ throw new ReviewParseError('review agent produced no parseable {verdict, findings} result');
41
+ }
42
+ const slice = output.slice(span.start, span.end);
43
+ let parsed;
44
+ try {
45
+ // STRICT FIRST: already-valid JSON parses here and is returned UNTOUCHED —
46
+ // the repair pass never runs for it (no chance to alter a correct payload).
47
+ parsed = JSON.parse(slice);
48
+ }
49
+ catch (strictErr) {
50
+ // ONE lenient repair pass for the CONTROL-CHAR class (raw newline / tab / CR /
51
+ // other C0 char left unescaped inside a string field, common on large diffs +
52
+ // weaker models). The repair is NARROW: it only escapes control chars INSIDE
53
+ // strings; it NEVER touches JSON structure or token values (no trailing-comma
54
+ // stripping, no quoting bare tokens, no coercion), so it can never launder a
55
+ // genuinely-malformed or meaningfully-WRONG verdict into a false approve/block.
56
+ // A still-failing parse re-throws the ORIGINAL strict error (so direction-1's
57
+ // `runGate2Review` catch routes it to needs-attention, never a silent approve).
58
+ // NOTE the boundary: this does NOT fix an unescaped inner double-quote (which
59
+ // mis-bounds the extracted span before repair even runs); that class is handled
60
+ // by routing (direction 1) + the tightened contract (direction 3).
61
+ try {
62
+ parsed = JSON.parse(repairJsonControlChars(slice));
63
+ }
64
+ catch {
65
+ throw new ReviewParseError(`review verdict was not valid JSON: ${strictErr.message}`);
66
+ }
67
+ }
68
+ // A repaired parse STILL flows through validation, so a repaired
69
+ // `{"verdict":"maybe"}` (valid JSON, invalid VALUE) still throws here — the
70
+ // repair recovers SYNTAX, never bypasses the verdict-VALUE contract.
71
+ return validateVerdict(parsed);
72
+ }
73
+ /**
74
+ * The NARROW lenient repair (direction 2): walk the extracted JSON slice and
75
+ * escape any raw control char (a C0 char `< 0x20`, which JSON forbids inside a
76
+ * string literal) that appears INSIDE a string. OUTSIDE a string the structure
77
+ * is left byte-for-byte untouched. Escape-tracking is load-bearing: an escaped
78
+ * `\"` must NOT be read as the string's closing quote (or a following raw
79
+ * newline would be mis-handled). This recovers ONLY the control-char class; it
80
+ * performs NO structural change and NO token coercion, so it cannot turn a real
81
+ * reject into a false approve.
82
+ */
83
+ function repairJsonControlChars(text) {
84
+ let out = '';
85
+ let inString = false;
86
+ let escaped = false;
87
+ for (let i = 0; i < text.length; i++) {
88
+ const ch = text[i];
89
+ const code = ch.charCodeAt(0);
90
+ if (inString) {
91
+ if (escaped) {
92
+ out += ch;
93
+ escaped = false;
94
+ continue;
95
+ }
96
+ if (ch === '\\') {
97
+ out += ch;
98
+ escaped = true;
99
+ continue;
100
+ }
101
+ if (ch === '"') {
102
+ out += ch;
103
+ inString = false;
104
+ continue;
105
+ }
106
+ if (code < 0x20) {
107
+ if (ch === '\n')
108
+ out += '\\n';
109
+ else if (ch === '\t')
110
+ out += '\\t';
111
+ else if (ch === '\r')
112
+ out += '\\r';
113
+ else
114
+ out += '\\u' + code.toString(16).padStart(4, '0');
115
+ continue;
116
+ }
117
+ out += ch;
118
+ continue;
119
+ }
120
+ if (ch === '"') {
121
+ inString = true;
122
+ }
123
+ out += ch;
124
+ }
125
+ return out;
126
+ }
127
+ function validateVerdict(parsed) {
128
+ if (typeof parsed !== 'object' || parsed === null) {
129
+ throw new ReviewParseError('review verdict was not an object');
130
+ }
131
+ const obj = parsed;
132
+ const verdict = obj.verdict;
133
+ if (verdict !== 'approve' && verdict !== 'block') {
134
+ throw new ReviewParseError(`review verdict was not 'approve' or 'block' (got ${JSON.stringify(verdict)})`);
135
+ }
136
+ const rawFindings = Array.isArray(obj.findings) ? obj.findings : [];
137
+ const findings = rawFindings.map((f) => {
138
+ const item = (typeof f === 'object' && f !== null ? f : {});
139
+ const severity = item.severity === 'blocking' ? 'blocking' : 'non-blocking';
140
+ return {
141
+ severity,
142
+ question: typeof item.question === 'string' ? item.question : '',
143
+ ...(typeof item.context === 'string' ? { context: item.context } : {}),
144
+ };
145
+ });
146
+ const edits = parseEdits(obj.edits);
147
+ const uncertainTasks = parseUncertainTasks(obj.uncertainTasks);
148
+ const decompositionUnclear = parseDecompositionUnclear(obj.decompositionUnclear);
149
+ const questions = Array.isArray(obj.questions)
150
+ ? obj.questions.filter((q) => typeof q === 'string')
151
+ : [];
152
+ return {
153
+ verdict,
154
+ findings,
155
+ ...(typeof obj.review === 'string' ? { review: obj.review } : {}),
156
+ ...(typeof obj.edit === 'string' ? { edit: obj.edit } : {}),
157
+ ...(edits.length > 0 ? { edits } : {}),
158
+ ...(questions.length > 0 ? { questions } : {}),
159
+ ...(uncertainTasks.length > 0 ? { uncertainTasks } : {}),
160
+ ...(decompositionUnclear ? { decompositionUnclear } : {}),
161
+ };
162
+ }
163
+ function parseEdits(raw) {
164
+ if (!Array.isArray(raw)) {
165
+ return [];
166
+ }
167
+ const out = [];
168
+ for (const e of raw) {
169
+ if (typeof e !== 'object' || e === null) {
170
+ continue;
171
+ }
172
+ const item = e;
173
+ if (typeof item.path === 'string' && typeof item.content === 'string') {
174
+ out.push({ path: item.path, content: item.content });
175
+ }
176
+ }
177
+ return out;
178
+ }
179
+ function parseUncertainTasks(raw) {
180
+ if (!Array.isArray(raw)) {
181
+ return [];
182
+ }
183
+ const out = [];
184
+ for (const u of raw) {
185
+ if (typeof u !== 'object' || u === null) {
186
+ continue;
187
+ }
188
+ const item = u;
189
+ if (typeof item.path !== 'string') {
190
+ continue;
191
+ }
192
+ const questions = Array.isArray(item.questions)
193
+ ? item.questions.filter((q) => typeof q === 'string')
194
+ : [];
195
+ out.push({ path: item.path, questions });
196
+ }
197
+ return out;
198
+ }
199
+ function parseDecompositionUnclear(raw) {
200
+ if (typeof raw !== 'object' || raw === null) {
201
+ return undefined;
202
+ }
203
+ const item = raw;
204
+ const questions = Array.isArray(item.questions)
205
+ ? item.questions.filter((q) => typeof q === 'string')
206
+ : [];
207
+ return { questions };
208
+ }
209
+ /**
210
+ * The shared JSON-verdict-contract prompt block — ONE function, called by all
211
+ * four review-prompt builders. Returns the prose describing the unified
212
+ * {@link ReviewVerdict} emitted shape (the prose mirrors what
213
+ * {@link parseReviewVerdict} enforces; D2). Per-builder framing (who you are,
214
+ * what you are reviewing, which optional channels to fill) stays in each
215
+ * builder; this block is the single source of truth for the shape.
216
+ *
217
+ * The block is intentionally generous about optional channels — each caller's
218
+ * prompt names which ones it wants. Unused channels are ignored by the parser.
219
+ */
220
+ export function verdictContractPrompt() {
221
+ return [
222
+ '## Your output \u2014 ONE single JSON object (no prose OUTSIDE it)',
223
+ '',
224
+ 'Emit a single JSON object of this exact shape (see',
225
+ '`work/protocol/REVIEW-PROTOCOL.md` \u2192 "Your output" for the prose-described',
226
+ 'contract this mirrors). The example below is EXPANDED over several lines for',
227
+ 'READABILITY, but you MUST emit it MINIFIED \u2014 ONE single line, no newlines',
228
+ 'between the keys:',
229
+ '',
230
+ '```json',
231
+ '{"verdict": "approve" | "block",',
232
+ ' "findings": [',
233
+ ' {"severity": "blocking" | "non-blocking", "question": "\u2026", "context": "\u2026"}',
234
+ ' ],',
235
+ ' "review": "<the human-readable PR-comment prose, when the caller asks for it>",',
236
+ ' "edits": [ {"path": "work/tasks/backlog/<slug>.md", "content": "<full replacement>"} ],',
237
+ ' "edit": "<single in-memory replacement body, for the lone-task review>",',
238
+ ' "questions": ["<open question for the human>"],',
239
+ ' "uncertainTasks": [ {"path": "work/tasks/backlog/<slug>.md", "questions": ["\u2026"]} ],',
240
+ ' "decompositionUnclear": {"questions": ["\u2026"]}}',
241
+ '```',
242
+ '',
243
+ '- `verdict` MUST be exactly `approve` or `block`. Use `block` with at least',
244
+ ' one blocking finding when the artifact does not deliver / drifts / hides',
245
+ ' a defect a human reviewer would flag; otherwise `approve`.',
246
+ "- `findings` is required (may be empty). Each finding's `severity` is",
247
+ ' `blocking` (keeps the item out of "ready") or `non-blocking` (a nit /',
248
+ ' future improvement). Give each `question` enough context to act WITHOUT',
249
+ ' re-deriving it. `context` is the relevant excerpt, `file:line`, or',
250
+ ' reasoning.',
251
+ '- The optional channels (`review`, `edits`, `edit`, `questions`,',
252
+ ' `uncertainTasks`, `decompositionUnclear`) are OPT-IN: only fill the ones',
253
+ " the caller's framing names. Unused channels are ignored.",
254
+ '',
255
+ parseableJsonContractPrompt('verdict', 'review'),
256
+ ].join('\n');
257
+ }
258
+ /**
259
+ * The shared "emit DEFENSIVE, parseable, minified JSON" contract block — the
260
+ * hard-won discipline that stops a weak model from stranding the run with an
261
+ * unparseable emit (a dropped escape on an inner `"`, a raw newline in a string,
262
+ * an over-long field). It was learned on the Gate-2 verdict seam
263
+ * (observation `gate2-review-verdict-json-parse-crash-on-large-diffs`) and is
264
+ * now SHARED so EVERY agent→JSON→dispatch seam carries it, not just the verdict
265
+ * gate: {@link verdictContractPrompt} appends it, and so does the SURFACE gate's
266
+ * `buildSurfacePrompt` (observation
267
+ * `surface-rung-agent-emits-no-parseable-questions` — the same class of failure
268
+ * on the surface rung, where the prompt previously lacked this hardening AND
269
+ * showed a multi-line example that invited pretty-printing).
270
+ *
271
+ * @param emitNoun what the emitted object is called in prose (`verdict` /
272
+ * `result`) — only the wording differs; the discipline is identical.
273
+ * @param longestField the name of the field most likely to be long (the one to
274
+ * length-cap), or undefined to omit the length-cap bullet.
275
+ */
276
+ export function parseableJsonContractPrompt(emitNoun = 'verdict', longestField) {
277
+ const lengthCap = longestField === undefined
278
+ ? []
279
+ : [
280
+ `- Keep the LONGEST field (\`${longestField}\`) under ~1500 characters; say`,
281
+ ' less, not more. A long, multi-paragraph field is exactly what corrupts',
282
+ ' the JSON.',
283
+ ];
284
+ return [
285
+ '### Keep the JSON PARSEABLE (this is where weak models fail)',
286
+ '',
287
+ `A malformed ${emitNoun} strands the work, so emit DEFENSIVELY:`,
288
+ '- Emit it MINIFIED: ONE single line, no pretty-printing, no blank lines.',
289
+ '- INSIDE every string value, do NOT use a literal double-quote `"`. If you',
290
+ ' must quote something in prose, PARAPHRASE it or use SINGLE quotes \u2014 a',
291
+ ` dropped escape on an inner \`"\` is the #1 cause of an unparseable ${emitNoun}.`,
292
+ '- Keep every string field SHORT and SINGLE-LINE. Do NOT embed a raw newline,',
293
+ ' tab, or other control char in a string; if you genuinely need a break, write',
294
+ ' the two characters `\\n` (a backslash then n), never a real newline.',
295
+ ...lengthCap,
296
+ ].join('\n');
297
+ }
298
+ /**
299
+ * The shared prompt block that POINTS the spawned agent at the in-band review
300
+ * discipline doc (`work/protocol/REVIEW-PROTOCOL.md` in the set-up target repo,
301
+ * or the vendored fallback) instead of re-inlining the lenses. The four review
302
+ * builders call this so the discipline content lives in ONE place
303
+ * (`REVIEW-PROTOCOL.md`), never duplicated in the prompt builders.
304
+ */
305
+ export function reviewDisciplinePrompt() {
306
+ return [
307
+ '## The review discipline',
308
+ '',
309
+ 'Run the review discipline defined in `work/protocol/REVIEW-PROTOCOL.md`',
310
+ '(the in-band, protocol-native review protocol every set-up repo carries;',
311
+ 'the human-facing pointer is `skills/review/SKILL.md`). Apply its lenses',
312
+ 'IN ORDER, ENDING in the destination check ("if this is built/merged',
313
+ 'exactly as written, do we end up with the system the prd/task',
314
+ 'goal describes?"). Be ADVERSARIAL; verify against what ACTUALLY LANDED',
315
+ '(the bytes on disk), not intent. Weight findings by REAL impact \u2014 the',
316
+ 'lenses find candidates, impact decides severity (a technically-true nit',
317
+ 'no one would hit is not a block). Flag, do not guess.',
318
+ ].join('\n');
319
+ }
320
+ /**
321
+ * Resolve `REVIEW-PROTOCOL.md` in the target repo / vendored fallback / dev
322
+ * walk \u2014 a thin alias around {@link resolveProtocolDoc} for callers (and
323
+ * tests) that want to assert the doc is reachable. The four builders themselves
324
+ * do NOT call this (they reference the path BY NAME in the prompt prose, so the
325
+ * spawned agent reads its repo's own `work/protocol/REVIEW-PROTOCOL.md`), but
326
+ * keeping the helper here lets the resolver test cover the protocol-doc set in
327
+ * one place.
328
+ */
329
+ export function resolveReviewProtocolPath(cwd, override) {
330
+ return resolveProtocolDoc('REVIEW-PROTOCOL.md', cwd, override);
331
+ }
332
+ //# sourceMappingURL=review-verdict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-verdict.js","sourceRoot":"","sources":["../src/review-verdict.ts"],"names":[],"mappings":"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"}