@allocator-one/rcl 4.4.19

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 (663) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1415 -0
  3. package/dist/ci.d.ts +16 -0
  4. package/dist/ci.js +42 -0
  5. package/dist/ci.js.map +1 -0
  6. package/dist/config/data-dir.d.ts +6 -0
  7. package/dist/config/data-dir.js +12 -0
  8. package/dist/config/data-dir.js.map +1 -0
  9. package/dist/config/defaults.d.ts +82 -0
  10. package/dist/config/defaults.js +89 -0
  11. package/dist/config/defaults.js.map +1 -0
  12. package/dist/config/harness.d.ts +40 -0
  13. package/dist/config/harness.js +151 -0
  14. package/dist/config/harness.js.map +1 -0
  15. package/dist/config/loader.d.ts +13 -0
  16. package/dist/config/loader.js +131 -0
  17. package/dist/config/loader.js.map +1 -0
  18. package/dist/config/provider-concurrency.d.ts +4 -0
  19. package/dist/config/provider-concurrency.js +6 -0
  20. package/dist/config/provider-concurrency.js.map +1 -0
  21. package/dist/config/providers.d.ts +3 -0
  22. package/dist/config/providers.js +9 -0
  23. package/dist/config/providers.js.map +1 -0
  24. package/dist/config/schema.d.ts +179 -0
  25. package/dist/config/schema.js +115 -0
  26. package/dist/config/schema.js.map +1 -0
  27. package/dist/consensus/claim-contract.d.ts +9 -0
  28. package/dist/consensus/claim-contract.js +307 -0
  29. package/dist/consensus/claim-contract.js.map +1 -0
  30. package/dist/consensus/claim-identity.d.ts +5 -0
  31. package/dist/consensus/claim-identity.js +39 -0
  32. package/dist/consensus/claim-identity.js.map +1 -0
  33. package/dist/consensus/deduper.d.ts +43 -0
  34. package/dist/consensus/deduper.js +1052 -0
  35. package/dist/consensus/deduper.js.map +1 -0
  36. package/dist/consensus/finding-identity.d.ts +20 -0
  37. package/dist/consensus/finding-identity.js +49 -0
  38. package/dist/consensus/finding-identity.js.map +1 -0
  39. package/dist/consensus/gating.d.ts +215 -0
  40. package/dist/consensus/gating.js +699 -0
  41. package/dist/consensus/gating.js.map +1 -0
  42. package/dist/consensus/parser.d.ts +22 -0
  43. package/dist/consensus/parser.js +255 -0
  44. package/dist/consensus/parser.js.map +1 -0
  45. package/dist/consensus/semantic-deduper.d.ts +10 -0
  46. package/dist/consensus/semantic-deduper.js +70 -0
  47. package/dist/consensus/semantic-deduper.js.map +1 -0
  48. package/dist/consensus/types.d.ts +196 -0
  49. package/dist/consensus/types.js +2 -0
  50. package/dist/consensus/types.js.map +1 -0
  51. package/dist/consensus/verification-contract.d.ts +8 -0
  52. package/dist/consensus/verification-contract.js +95 -0
  53. package/dist/consensus/verification-contract.js.map +1 -0
  54. package/dist/consensus/voter.d.ts +29 -0
  55. package/dist/consensus/voter.js +394 -0
  56. package/dist/consensus/voter.js.map +1 -0
  57. package/dist/converge/attempt-budget.d.ts +88 -0
  58. package/dist/converge/attempt-budget.js +717 -0
  59. package/dist/converge/attempt-budget.js.map +1 -0
  60. package/dist/converge/bound-fix-recovery-source.d.ts +24 -0
  61. package/dist/converge/bound-fix-recovery-source.js +25 -0
  62. package/dist/converge/bound-fix-recovery-source.js.map +1 -0
  63. package/dist/converge/bound-fix-recovery.d.ts +15 -0
  64. package/dist/converge/bound-fix-recovery.js +65 -0
  65. package/dist/converge/bound-fix-recovery.js.map +1 -0
  66. package/dist/converge/correction-anchors.d.ts +1 -0
  67. package/dist/converge/correction-anchors.js +2 -0
  68. package/dist/converge/correction-anchors.js.map +1 -0
  69. package/dist/converge/cycle-remote.d.ts +6 -0
  70. package/dist/converge/cycle-remote.js +41 -0
  71. package/dist/converge/cycle-remote.js.map +1 -0
  72. package/dist/converge/delivery-reconciliation.d.ts +17 -0
  73. package/dist/converge/delivery-reconciliation.js +53 -0
  74. package/dist/converge/delivery-reconciliation.js.map +1 -0
  75. package/dist/converge/finding-identity.d.ts +6 -0
  76. package/dist/converge/finding-identity.js +7 -0
  77. package/dist/converge/finding-identity.js.map +1 -0
  78. package/dist/converge/fresh-review.d.ts +37 -0
  79. package/dist/converge/fresh-review.js +351 -0
  80. package/dist/converge/fresh-review.js.map +1 -0
  81. package/dist/converge/launch-guard.d.ts +55 -0
  82. package/dist/converge/launch-guard.js +363 -0
  83. package/dist/converge/launch-guard.js.map +1 -0
  84. package/dist/converge/launch-preflight.d.ts +5 -0
  85. package/dist/converge/launch-preflight.js +41 -0
  86. package/dist/converge/launch-preflight.js.map +1 -0
  87. package/dist/converge/launch-record.d.ts +136 -0
  88. package/dist/converge/launch-record.js +86 -0
  89. package/dist/converge/launch-record.js.map +1 -0
  90. package/dist/converge/legacy-launch-health.d.ts +311 -0
  91. package/dist/converge/legacy-launch-health.js +159 -0
  92. package/dist/converge/legacy-launch-health.js.map +1 -0
  93. package/dist/converge/legacy-roster.d.ts +29 -0
  94. package/dist/converge/legacy-roster.js +268 -0
  95. package/dist/converge/legacy-roster.js.map +1 -0
  96. package/dist/converge/native-lock.d.ts +18 -0
  97. package/dist/converge/native-lock.js +122 -0
  98. package/dist/converge/native-lock.js.map +1 -0
  99. package/dist/converge/ordinary-pending-export.d.ts +67 -0
  100. package/dist/converge/ordinary-pending-export.js +175 -0
  101. package/dist/converge/ordinary-pending-export.js.map +1 -0
  102. package/dist/converge/ordinary-pending-package.d.ts +28 -0
  103. package/dist/converge/ordinary-pending-package.js +36 -0
  104. package/dist/converge/ordinary-pending-package.js.map +1 -0
  105. package/dist/converge/pending-legacy-resume.d.ts +119 -0
  106. package/dist/converge/pending-legacy-resume.js +720 -0
  107. package/dist/converge/pending-legacy-resume.js.map +1 -0
  108. package/dist/converge/pending-recovery-source.d.ts +131 -0
  109. package/dist/converge/pending-recovery-source.js +71 -0
  110. package/dist/converge/pending-recovery-source.js.map +1 -0
  111. package/dist/converge/recovery-launch.d.ts +66 -0
  112. package/dist/converge/recovery-launch.js +518 -0
  113. package/dist/converge/recovery-launch.js.map +1 -0
  114. package/dist/converge/retained-report.d.ts +29 -0
  115. package/dist/converge/retained-report.js +218 -0
  116. package/dist/converge/retained-report.js.map +1 -0
  117. package/dist/converge/retry-source.d.ts +25 -0
  118. package/dist/converge/retry-source.js +13 -0
  119. package/dist/converge/retry-source.js.map +1 -0
  120. package/dist/converge/review-cycle.d.ts +49 -0
  121. package/dist/converge/review-cycle.js +26 -0
  122. package/dist/converge/review-cycle.js.map +1 -0
  123. package/dist/converge/round-gap-schema.d.ts +66 -0
  124. package/dist/converge/round-gap-schema.js +51 -0
  125. package/dist/converge/round-gap-schema.js.map +1 -0
  126. package/dist/converge/round-gap.d.ts +38 -0
  127. package/dist/converge/round-gap.js +334 -0
  128. package/dist/converge/round-gap.js.map +1 -0
  129. package/dist/converge/run-state.d.ts +224 -0
  130. package/dist/converge/run-state.js +564 -0
  131. package/dist/converge/run-state.js.map +1 -0
  132. package/dist/converge/stale-report-schema.d.ts +42 -0
  133. package/dist/converge/stale-report-schema.js +79 -0
  134. package/dist/converge/stale-report-schema.js.map +1 -0
  135. package/dist/converge/stale-report-storage.d.ts +47 -0
  136. package/dist/converge/stale-report-storage.js +172 -0
  137. package/dist/converge/stale-report-storage.js.map +1 -0
  138. package/dist/converge/stale-report.d.ts +14 -0
  139. package/dist/converge/stale-report.js +213 -0
  140. package/dist/converge/stale-report.js.map +1 -0
  141. package/dist/converge/target-ownership.d.ts +29 -0
  142. package/dist/converge/target-ownership.js +95 -0
  143. package/dist/converge/target-ownership.js.map +1 -0
  144. package/dist/converge/terminal-rejection-schema.d.ts +42 -0
  145. package/dist/converge/terminal-rejection-schema.js +39 -0
  146. package/dist/converge/terminal-rejection-schema.js.map +1 -0
  147. package/dist/converge/terminal-rejection.d.ts +13 -0
  148. package/dist/converge/terminal-rejection.js +275 -0
  149. package/dist/converge/terminal-rejection.js.map +1 -0
  150. package/dist/coordination/registry-lock.d.ts +82 -0
  151. package/dist/coordination/registry-lock.js +498 -0
  152. package/dist/coordination/registry-lock.js.map +1 -0
  153. package/dist/discuss.d.ts +53 -0
  154. package/dist/discuss.js +112 -0
  155. package/dist/discuss.js.map +1 -0
  156. package/dist/dispatch/adapter.d.ts +32 -0
  157. package/dist/dispatch/adapter.js +2 -0
  158. package/dist/dispatch/adapter.js.map +1 -0
  159. package/dist/dispatch/anthropic.d.ts +10 -0
  160. package/dist/dispatch/anthropic.js +235 -0
  161. package/dist/dispatch/anthropic.js.map +1 -0
  162. package/dist/dispatch/async-lane.d.ts +127 -0
  163. package/dist/dispatch/async-lane.js +414 -0
  164. package/dist/dispatch/async-lane.js.map +1 -0
  165. package/dist/dispatch/capture-council.d.ts +63 -0
  166. package/dist/dispatch/capture-council.js +137 -0
  167. package/dist/dispatch/capture-council.js.map +1 -0
  168. package/dist/dispatch/captured-async.d.ts +67 -0
  169. package/dist/dispatch/captured-async.js +40 -0
  170. package/dist/dispatch/captured-async.js.map +1 -0
  171. package/dist/dispatch/captured-inputs.d.ts +50 -0
  172. package/dist/dispatch/captured-inputs.js +190 -0
  173. package/dist/dispatch/captured-inputs.js.map +1 -0
  174. package/dist/dispatch/checkpoint-async-context.d.ts +27 -0
  175. package/dist/dispatch/checkpoint-async-context.js +51 -0
  176. package/dist/dispatch/checkpoint-async-context.js.map +1 -0
  177. package/dist/dispatch/checkpoint-async-execution.d.ts +22 -0
  178. package/dist/dispatch/checkpoint-async-execution.js +130 -0
  179. package/dist/dispatch/checkpoint-async-execution.js.map +1 -0
  180. package/dist/dispatch/checkpoint-async-store.d.ts +134 -0
  181. package/dist/dispatch/checkpoint-async-store.js +534 -0
  182. package/dist/dispatch/checkpoint-async-store.js.map +1 -0
  183. package/dist/dispatch/checkpoint-async-unknown.d.ts +19 -0
  184. package/dist/dispatch/checkpoint-async-unknown.js +46 -0
  185. package/dist/dispatch/checkpoint-async-unknown.js.map +1 -0
  186. package/dist/dispatch/checkpoint-async.d.ts +252 -0
  187. package/dist/dispatch/checkpoint-async.js +270 -0
  188. package/dist/dispatch/checkpoint-async.js.map +1 -0
  189. package/dist/dispatch/checkpoint-gating-execution.d.ts +26 -0
  190. package/dist/dispatch/checkpoint-gating-execution.js +84 -0
  191. package/dist/dispatch/checkpoint-gating-execution.js.map +1 -0
  192. package/dist/dispatch/checkpoint-phase-limits.d.ts +5 -0
  193. package/dist/dispatch/checkpoint-phase-limits.js +11 -0
  194. package/dist/dispatch/checkpoint-phase-limits.js.map +1 -0
  195. package/dist/dispatch/checkpoint-verification-context.d.ts +15 -0
  196. package/dist/dispatch/checkpoint-verification-context.js +48 -0
  197. package/dist/dispatch/checkpoint-verification-context.js.map +1 -0
  198. package/dist/dispatch/checkpoint-verification.d.ts +213 -0
  199. package/dist/dispatch/checkpoint-verification.js +381 -0
  200. package/dist/dispatch/checkpoint-verification.js.map +1 -0
  201. package/dist/dispatch/checkpoint.d.ts +329 -0
  202. package/dist/dispatch/checkpoint.js +1418 -0
  203. package/dist/dispatch/checkpoint.js.map +1 -0
  204. package/dist/dispatch/google.d.ts +10 -0
  205. package/dist/dispatch/google.js +158 -0
  206. package/dist/dispatch/google.js.map +1 -0
  207. package/dist/dispatch/late-audit.d.ts +23 -0
  208. package/dist/dispatch/late-audit.js +133 -0
  209. package/dist/dispatch/late-audit.js.map +1 -0
  210. package/dist/dispatch/merge.d.ts +29 -0
  211. package/dist/dispatch/merge.js +112 -0
  212. package/dist/dispatch/merge.js.map +1 -0
  213. package/dist/dispatch/openai-compat.d.ts +30 -0
  214. package/dist/dispatch/openai-compat.js +166 -0
  215. package/dist/dispatch/openai-compat.js.map +1 -0
  216. package/dist/dispatch/openai.d.ts +10 -0
  217. package/dist/dispatch/openai.js +159 -0
  218. package/dist/dispatch/openai.js.map +1 -0
  219. package/dist/dispatch/original-execution.d.ts +30 -0
  220. package/dist/dispatch/original-execution.js +91 -0
  221. package/dist/dispatch/original-execution.js.map +1 -0
  222. package/dist/dispatch/original-launch.d.ts +37 -0
  223. package/dist/dispatch/original-launch.js +117 -0
  224. package/dist/dispatch/original-launch.js.map +1 -0
  225. package/dist/dispatch/quorum.d.ts +15 -0
  226. package/dist/dispatch/quorum.js +33 -0
  227. package/dist/dispatch/quorum.js.map +1 -0
  228. package/dist/dispatch/recovery-operation.d.ts +44 -0
  229. package/dist/dispatch/recovery-operation.js +146 -0
  230. package/dist/dispatch/recovery-operation.js.map +1 -0
  231. package/dist/dispatch/recovery-policy.d.ts +54 -0
  232. package/dist/dispatch/recovery-policy.js +157 -0
  233. package/dist/dispatch/recovery-policy.js.map +1 -0
  234. package/dist/dispatch/recovery.d.ts +78 -0
  235. package/dist/dispatch/recovery.js +299 -0
  236. package/dist/dispatch/recovery.js.map +1 -0
  237. package/dist/dispatch/retained-async.d.ts +13 -0
  238. package/dist/dispatch/retained-async.js +101 -0
  239. package/dist/dispatch/retained-async.js.map +1 -0
  240. package/dist/dispatch/reviewer-identity.d.ts +10 -0
  241. package/dist/dispatch/reviewer-identity.js +19 -0
  242. package/dist/dispatch/reviewer-identity.js.map +1 -0
  243. package/dist/dispatch/runner.d.ts +76 -0
  244. package/dist/dispatch/runner.js +415 -0
  245. package/dist/dispatch/runner.js.map +1 -0
  246. package/dist/dispatch/utils.d.ts +159 -0
  247. package/dist/dispatch/utils.js +381 -0
  248. package/dist/dispatch/utils.js.map +1 -0
  249. package/dist/dispatch/verification-execution.d.ts +48 -0
  250. package/dist/dispatch/verification-execution.js +252 -0
  251. package/dist/dispatch/verification-execution.js.map +1 -0
  252. package/dist/dispatch/verification-late-audit.d.ts +17 -0
  253. package/dist/dispatch/verification-late-audit.js +117 -0
  254. package/dist/dispatch/verification-late-audit.js.map +1 -0
  255. package/dist/evidence/claim-recovery/authenticated-carrier-projection.d.ts +30 -0
  256. package/dist/evidence/claim-recovery/authenticated-carrier-projection.js +100 -0
  257. package/dist/evidence/claim-recovery/authenticated-carrier-projection.js.map +1 -0
  258. package/dist/evidence/claim-recovery/authenticated-receipts.d.ts +46 -0
  259. package/dist/evidence/claim-recovery/authenticated-receipts.js +120 -0
  260. package/dist/evidence/claim-recovery/authenticated-receipts.js.map +1 -0
  261. package/dist/evidence/claim-recovery/carrier-inventory.d.ts +49 -0
  262. package/dist/evidence/claim-recovery/carrier-inventory.js +340 -0
  263. package/dist/evidence/claim-recovery/carrier-inventory.js.map +1 -0
  264. package/dist/evidence/claim-recovery/claim-index.d.ts +12 -0
  265. package/dist/evidence/claim-recovery/claim-index.js +56 -0
  266. package/dist/evidence/claim-recovery/claim-index.js.map +1 -0
  267. package/dist/evidence/claim-recovery/confirmation.d.ts +53 -0
  268. package/dist/evidence/claim-recovery/confirmation.js +151 -0
  269. package/dist/evidence/claim-recovery/confirmation.js.map +1 -0
  270. package/dist/evidence/claim-recovery/context.d.ts +15 -0
  271. package/dist/evidence/claim-recovery/context.js +40 -0
  272. package/dist/evidence/claim-recovery/context.js.map +1 -0
  273. package/dist/evidence/claim-recovery/proof-storage.d.ts +6 -0
  274. package/dist/evidence/claim-recovery/proof-storage.js +97 -0
  275. package/dist/evidence/claim-recovery/proof-storage.js.map +1 -0
  276. package/dist/evidence/claim-recovery/validation/anchors.d.ts +20 -0
  277. package/dist/evidence/claim-recovery/validation/anchors.js +22 -0
  278. package/dist/evidence/claim-recovery/validation/anchors.js.map +1 -0
  279. package/dist/evidence/claim-recovery/validation/carrier-projection.d.ts +9 -0
  280. package/dist/evidence/claim-recovery/validation/carrier-projection.js +364 -0
  281. package/dist/evidence/claim-recovery/validation/carrier-projection.js.map +1 -0
  282. package/dist/evidence/claim-recovery/validation/carrier-types.d.ts +83 -0
  283. package/dist/evidence/claim-recovery/validation/carrier-types.js +2 -0
  284. package/dist/evidence/claim-recovery/validation/carrier-types.js.map +1 -0
  285. package/dist/evidence/claim-recovery/validation/claim-split.d.ts +57 -0
  286. package/dist/evidence/claim-recovery/validation/claim-split.js +209 -0
  287. package/dist/evidence/claim-recovery/validation/claim-split.js.map +1 -0
  288. package/dist/evidence/claim-recovery/validation/claims.d.ts +20 -0
  289. package/dist/evidence/claim-recovery/validation/claims.js +108 -0
  290. package/dist/evidence/claim-recovery/validation/claims.js.map +1 -0
  291. package/dist/evidence/claim-recovery/validation/current-projection.d.ts +36 -0
  292. package/dist/evidence/claim-recovery/validation/current-projection.js +424 -0
  293. package/dist/evidence/claim-recovery/validation/current-projection.js.map +1 -0
  294. package/dist/evidence/claim-recovery/validation/lexical.d.ts +18 -0
  295. package/dist/evidence/claim-recovery/validation/lexical.js +91 -0
  296. package/dist/evidence/claim-recovery/validation/lexical.js.map +1 -0
  297. package/dist/evidence/claim-recovery/validation/materials.d.ts +19 -0
  298. package/dist/evidence/claim-recovery/validation/materials.js +160 -0
  299. package/dist/evidence/claim-recovery/validation/materials.js.map +1 -0
  300. package/dist/evidence/claim-recovery/validation/native-material.d.ts +27 -0
  301. package/dist/evidence/claim-recovery/validation/native-material.js +35 -0
  302. package/dist/evidence/claim-recovery/validation/native-material.js.map +1 -0
  303. package/dist/evidence/claim-recovery/validation/native-occurrences.d.ts +79 -0
  304. package/dist/evidence/claim-recovery/validation/native-occurrences.js +187 -0
  305. package/dist/evidence/claim-recovery/validation/native-occurrences.js.map +1 -0
  306. package/dist/evidence/claim-recovery/validation/native-state.d.ts +45 -0
  307. package/dist/evidence/claim-recovery/validation/native-state.js +385 -0
  308. package/dist/evidence/claim-recovery/validation/native-state.js.map +1 -0
  309. package/dist/evidence/claim-recovery/validation/obligations.d.ts +15 -0
  310. package/dist/evidence/claim-recovery/validation/obligations.js +65 -0
  311. package/dist/evidence/claim-recovery/validation/obligations.js.map +1 -0
  312. package/dist/evidence/claim-recovery/validation/occurrence-source.d.ts +45 -0
  313. package/dist/evidence/claim-recovery/validation/occurrence-source.js +208 -0
  314. package/dist/evidence/claim-recovery/validation/occurrence-source.js.map +1 -0
  315. package/dist/evidence/claim-recovery/validation/occurrence-types.d.ts +101 -0
  316. package/dist/evidence/claim-recovery/validation/occurrence-types.js +2 -0
  317. package/dist/evidence/claim-recovery/validation/occurrence-types.js.map +1 -0
  318. package/dist/evidence/claim-recovery/validation/occurrence.d.ts +30 -0
  319. package/dist/evidence/claim-recovery/validation/occurrence.js +227 -0
  320. package/dist/evidence/claim-recovery/validation/occurrence.js.map +1 -0
  321. package/dist/evidence/claim-recovery/validation/primitives.d.ts +11 -0
  322. package/dist/evidence/claim-recovery/validation/primitives.js +41 -0
  323. package/dist/evidence/claim-recovery/validation/primitives.js.map +1 -0
  324. package/dist/evidence/claim-recovery/validation/receipts.d.ts +37 -0
  325. package/dist/evidence/claim-recovery/validation/receipts.js +83 -0
  326. package/dist/evidence/claim-recovery/validation/receipts.js.map +1 -0
  327. package/dist/evidence/claim-recovery/validation/recovery-json.d.ts +8 -0
  328. package/dist/evidence/claim-recovery/validation/recovery-json.js +42 -0
  329. package/dist/evidence/claim-recovery/validation/recovery-json.js.map +1 -0
  330. package/dist/evidence/claim-recovery/validation/semantic-cache.d.ts +3 -0
  331. package/dist/evidence/claim-recovery/validation/semantic-cache.js +22 -0
  332. package/dist/evidence/claim-recovery/validation/semantic-cache.js.map +1 -0
  333. package/dist/evidence/claim-recovery/validation/semantic-validation.d.ts +9 -0
  334. package/dist/evidence/claim-recovery/validation/semantic-validation.js +347 -0
  335. package/dist/evidence/claim-recovery/validation/semantic-validation.js.map +1 -0
  336. package/dist/evidence/claim-recovery/validation/sighting.d.ts +2 -0
  337. package/dist/evidence/claim-recovery/validation/sighting.js +15 -0
  338. package/dist/evidence/claim-recovery/validation/sighting.js.map +1 -0
  339. package/dist/evidence/claim-recovery/validation/sources.d.ts +15 -0
  340. package/dist/evidence/claim-recovery/validation/sources.js +2 -0
  341. package/dist/evidence/claim-recovery/validation/sources.js.map +1 -0
  342. package/dist/evidence/claim-recovery/validation/types.d.ts +126 -0
  343. package/dist/evidence/claim-recovery/validation/types.js +2 -0
  344. package/dist/evidence/claim-recovery/validation/types.js.map +1 -0
  345. package/dist/evidence/claim-split.d.ts +1 -0
  346. package/dist/evidence/claim-split.js +2 -0
  347. package/dist/evidence/claim-split.js.map +1 -0
  348. package/dist/evidence/event-receipts.d.ts +16 -0
  349. package/dist/evidence/event-receipts.js +41 -0
  350. package/dist/evidence/event-receipts.js.map +1 -0
  351. package/dist/evidence/finding-recovery.d.ts +23 -0
  352. package/dist/evidence/finding-recovery.js +74 -0
  353. package/dist/evidence/finding-recovery.js.map +1 -0
  354. package/dist/evidence/finding-retriage.d.ts +14 -0
  355. package/dist/evidence/finding-retriage.js +57 -0
  356. package/dist/evidence/finding-retriage.js.map +1 -0
  357. package/dist/evidence/format.d.ts +18 -0
  358. package/dist/evidence/format.js +152 -0
  359. package/dist/evidence/format.js.map +1 -0
  360. package/dist/evidence/original-run/decode.d.ts +30 -0
  361. package/dist/evidence/original-run/decode.js +208 -0
  362. package/dist/evidence/original-run/decode.js.map +1 -0
  363. package/dist/evidence/original-run/journal.d.ts +31 -0
  364. package/dist/evidence/original-run/journal.js +157 -0
  365. package/dist/evidence/original-run/journal.js.map +1 -0
  366. package/dist/evidence/original-run/lock-path.d.ts +17 -0
  367. package/dist/evidence/original-run/lock-path.js +116 -0
  368. package/dist/evidence/original-run/lock-path.js.map +1 -0
  369. package/dist/evidence/original-run/lock-scope.d.ts +21 -0
  370. package/dist/evidence/original-run/lock-scope.js +61 -0
  371. package/dist/evidence/original-run/lock-scope.js.map +1 -0
  372. package/dist/evidence/original-run/lock.d.ts +33 -0
  373. package/dist/evidence/original-run/lock.js +259 -0
  374. package/dist/evidence/original-run/lock.js.map +1 -0
  375. package/dist/evidence/original-run/remote.d.ts +23 -0
  376. package/dist/evidence/original-run/remote.js +110 -0
  377. package/dist/evidence/original-run/remote.js.map +1 -0
  378. package/dist/evidence/original-run/source.d.ts +61 -0
  379. package/dist/evidence/original-run/source.js +267 -0
  380. package/dist/evidence/original-run/source.js.map +1 -0
  381. package/dist/evidence/reads.d.ts +11 -0
  382. package/dist/evidence/reads.js +16 -0
  383. package/dist/evidence/reads.js.map +1 -0
  384. package/dist/evidence/recover-finding.d.ts +17 -0
  385. package/dist/evidence/recover-finding.js +65 -0
  386. package/dist/evidence/recover-finding.js.map +1 -0
  387. package/dist/evidence/recover-run.d.ts +26 -0
  388. package/dist/evidence/recover-run.js +180 -0
  389. package/dist/evidence/recover-run.js.map +1 -0
  390. package/dist/evidence/retained-time-budget.d.ts +9 -0
  391. package/dist/evidence/retained-time-budget.js +14 -0
  392. package/dist/evidence/retained-time-budget.js.map +1 -0
  393. package/dist/evidence/retriage-finding.d.ts +12 -0
  394. package/dist/evidence/retriage-finding.js +67 -0
  395. package/dist/evidence/retriage-finding.js.map +1 -0
  396. package/dist/evidence/reviewer-lineage.d.ts +35 -0
  397. package/dist/evidence/reviewer-lineage.js +293 -0
  398. package/dist/evidence/reviewer-lineage.js.map +1 -0
  399. package/dist/evidence/reviewer-original.d.ts +67 -0
  400. package/dist/evidence/reviewer-original.js +148 -0
  401. package/dist/evidence/reviewer-original.js.map +1 -0
  402. package/dist/evidence/reviewer-recovery.d.ts +74 -0
  403. package/dist/evidence/reviewer-recovery.js +179 -0
  404. package/dist/evidence/reviewer-recovery.js.map +1 -0
  405. package/dist/evidence/reviewer-status.d.ts +145 -0
  406. package/dist/evidence/reviewer-status.js +302 -0
  407. package/dist/evidence/reviewer-status.js.map +1 -0
  408. package/dist/evidence/show.d.ts +10 -0
  409. package/dist/evidence/show.js +41 -0
  410. package/dist/evidence/show.js.map +1 -0
  411. package/dist/evidence/status.d.ts +38 -0
  412. package/dist/evidence/status.js +73 -0
  413. package/dist/evidence/status.js.map +1 -0
  414. package/dist/evidence/target.d.ts +17 -0
  415. package/dist/evidence/target.js +74 -0
  416. package/dist/evidence/target.js.map +1 -0
  417. package/dist/evidence/types.d.ts +176 -0
  418. package/dist/evidence/types.js +109 -0
  419. package/dist/evidence/types.js.map +1 -0
  420. package/dist/index.d.ts +2 -0
  421. package/dist/index.js +2688 -0
  422. package/dist/index.js.map +1 -0
  423. package/dist/models/seed.d.ts +44 -0
  424. package/dist/models/seed.js +175 -0
  425. package/dist/models/seed.js.map +1 -0
  426. package/dist/models/server-stats.d.ts +80 -0
  427. package/dist/models/server-stats.js +109 -0
  428. package/dist/models/server-stats.js.map +1 -0
  429. package/dist/models/stats-store.d.ts +84 -0
  430. package/dist/models/stats-store.js +572 -0
  431. package/dist/models/stats-store.js.map +1 -0
  432. package/dist/output/artifacts.d.ts +16 -0
  433. package/dist/output/artifacts.js +29 -0
  434. package/dist/output/artifacts.js.map +1 -0
  435. package/dist/output/assembly-refusal.d.ts +8 -0
  436. package/dist/output/assembly-refusal.js +14 -0
  437. package/dist/output/assembly-refusal.js.map +1 -0
  438. package/dist/output/github.d.ts +12 -0
  439. package/dist/output/github.js +214 -0
  440. package/dist/output/github.js.map +1 -0
  441. package/dist/output/json.d.ts +3 -0
  442. package/dist/output/json.js +8 -0
  443. package/dist/output/json.js.map +1 -0
  444. package/dist/output/markdown.d.ts +3 -0
  445. package/dist/output/markdown.js +281 -0
  446. package/dist/output/markdown.js.map +1 -0
  447. package/dist/output/progress.d.ts +55 -0
  448. package/dist/output/progress.js +180 -0
  449. package/dist/output/progress.js.map +1 -0
  450. package/dist/output/sanitize.d.ts +18 -0
  451. package/dist/output/sanitize.js +46 -0
  452. package/dist/output/sanitize.js.map +1 -0
  453. package/dist/output/terminal.d.ts +2 -0
  454. package/dist/output/terminal.js +172 -0
  455. package/dist/output/terminal.js.map +1 -0
  456. package/dist/prepare/chunker.d.ts +18 -0
  457. package/dist/prepare/chunker.js +325 -0
  458. package/dist/prepare/chunker.js.map +1 -0
  459. package/dist/prepare/language.d.ts +1 -0
  460. package/dist/prepare/language.js +99 -0
  461. package/dist/prepare/language.js.map +1 -0
  462. package/dist/prepare/prompt-builder.d.ts +44 -0
  463. package/dist/prepare/prompt-builder.js +102 -0
  464. package/dist/prepare/prompt-builder.js.map +1 -0
  465. package/dist/prepare/unified-diff.d.ts +40 -0
  466. package/dist/prepare/unified-diff.js +135 -0
  467. package/dist/prepare/unified-diff.js.map +1 -0
  468. package/dist/prompts/base.d.ts +3 -0
  469. package/dist/prompts/base.js +53 -0
  470. package/dist/prompts/base.js.map +1 -0
  471. package/dist/prompts/hardening.d.ts +19 -0
  472. package/dist/prompts/hardening.js +67 -0
  473. package/dist/prompts/hardening.js.map +1 -0
  474. package/dist/prompts/languages/elixir.d.ts +1 -0
  475. package/dist/prompts/languages/elixir.js +13 -0
  476. package/dist/prompts/languages/elixir.js.map +1 -0
  477. package/dist/prompts/languages/generic.d.ts +1 -0
  478. package/dist/prompts/languages/generic.js +11 -0
  479. package/dist/prompts/languages/generic.js.map +1 -0
  480. package/dist/prompts/languages/python.d.ts +1 -0
  481. package/dist/prompts/languages/python.js +14 -0
  482. package/dist/prompts/languages/python.js.map +1 -0
  483. package/dist/prompts/languages/typescript.d.ts +1 -0
  484. package/dist/prompts/languages/typescript.js +13 -0
  485. package/dist/prompts/languages/typescript.js.map +1 -0
  486. package/dist/prompts/plan.d.ts +15 -0
  487. package/dist/prompts/plan.js +55 -0
  488. package/dist/prompts/plan.js.map +1 -0
  489. package/dist/report/aggregation-inputs.d.ts +52 -0
  490. package/dist/report/aggregation-inputs.js +114 -0
  491. package/dist/report/aggregation-inputs.js.map +1 -0
  492. package/dist/report/assembly.d.ts +43 -0
  493. package/dist/report/assembly.js +133 -0
  494. package/dist/report/assembly.js.map +1 -0
  495. package/dist/report/blocking-health.d.ts +64 -0
  496. package/dist/report/blocking-health.js +156 -0
  497. package/dist/report/blocking-health.js.map +1 -0
  498. package/dist/report/checkpoint-assembly.d.ts +10 -0
  499. package/dist/report/checkpoint-assembly.js +17 -0
  500. package/dist/report/checkpoint-assembly.js.map +1 -0
  501. package/dist/report/checkpoint-consensus.d.ts +59 -0
  502. package/dist/report/checkpoint-consensus.js +197 -0
  503. package/dist/report/checkpoint-consensus.js.map +1 -0
  504. package/dist/report/checkpoint-gating.d.ts +36 -0
  505. package/dist/report/checkpoint-gating.js +110 -0
  506. package/dist/report/checkpoint-gating.js.map +1 -0
  507. package/dist/report/checkpoint-projection.d.ts +76 -0
  508. package/dist/report/checkpoint-projection.js +122 -0
  509. package/dist/report/checkpoint-projection.js.map +1 -0
  510. package/dist/report/consensus-assembly.d.ts +37 -0
  511. package/dist/report/consensus-assembly.js +33 -0
  512. package/dist/report/consensus-assembly.js.map +1 -0
  513. package/dist/report/recovery-source.d.ts +7 -0
  514. package/dist/report/recovery-source.js +7 -0
  515. package/dist/report/recovery-source.js.map +1 -0
  516. package/dist/report/reviewer-artifact.d.ts +118 -0
  517. package/dist/report/reviewer-artifact.js +381 -0
  518. package/dist/report/reviewer-artifact.js.map +1 -0
  519. package/dist/report/reviewer-evidence-schema.d.ts +42 -0
  520. package/dist/report/reviewer-evidence-schema.js +28 -0
  521. package/dist/report/reviewer-evidence-schema.js.map +1 -0
  522. package/dist/report/reviewer-evidence.d.ts +54 -0
  523. package/dist/report/reviewer-evidence.js +229 -0
  524. package/dist/report/reviewer-evidence.js.map +1 -0
  525. package/dist/report/reviewer-health.d.ts +62 -0
  526. package/dist/report/reviewer-health.js +105 -0
  527. package/dist/report/reviewer-health.js.map +1 -0
  528. package/dist/report/run-header.d.ts +219 -0
  529. package/dist/report/run-header.js +307 -0
  530. package/dist/report/run-header.js.map +1 -0
  531. package/dist/report/supplemental-async.d.ts +19 -0
  532. package/dist/report/supplemental-async.js +85 -0
  533. package/dist/report/supplemental-async.js.map +1 -0
  534. package/dist/report/uuid.d.ts +16 -0
  535. package/dist/report/uuid.js +41 -0
  536. package/dist/report/uuid.js.map +1 -0
  537. package/dist/resolver/git.d.ts +16 -0
  538. package/dist/resolver/git.js +77 -0
  539. package/dist/resolver/git.js.map +1 -0
  540. package/dist/resolver/github-client.d.ts +82 -0
  541. package/dist/resolver/github-client.js +27 -0
  542. package/dist/resolver/github-client.js.map +1 -0
  543. package/dist/resolver/github.d.ts +29 -0
  544. package/dist/resolver/github.js +166 -0
  545. package/dist/resolver/github.js.map +1 -0
  546. package/dist/resolver/local.d.ts +3 -0
  547. package/dist/resolver/local.js +75 -0
  548. package/dist/resolver/local.js.map +1 -0
  549. package/dist/resolver/plan.d.ts +8 -0
  550. package/dist/resolver/plan.js +44 -0
  551. package/dist/resolver/plan.js.map +1 -0
  552. package/dist/resolver/target.d.ts +35 -0
  553. package/dist/resolver/target.js +112 -0
  554. package/dist/resolver/target.js.map +1 -0
  555. package/dist/resolver/types.d.ts +43 -0
  556. package/dist/resolver/types.js +2 -0
  557. package/dist/resolver/types.js.map +1 -0
  558. package/dist/roles/builtin.d.ts +4 -0
  559. package/dist/roles/builtin.js +282 -0
  560. package/dist/roles/builtin.js.map +1 -0
  561. package/dist/roles/dispatcher.d.ts +26 -0
  562. package/dist/roles/dispatcher.js +96 -0
  563. package/dist/roles/dispatcher.js.map +1 -0
  564. package/dist/roles/legacy-4.1.10.d.ts +2 -0
  565. package/dist/roles/legacy-4.1.10.js +320 -0
  566. package/dist/roles/legacy-4.1.10.js.map +1 -0
  567. package/dist/roles/legacy-4.4.9.d.ts +4 -0
  568. package/dist/roles/legacy-4.4.9.js +282 -0
  569. package/dist/roles/legacy-4.4.9.js.map +1 -0
  570. package/dist/roles/loader.d.ts +10 -0
  571. package/dist/roles/loader.js +104 -0
  572. package/dist/roles/loader.js.map +1 -0
  573. package/dist/roles/types.d.ts +13 -0
  574. package/dist/roles/types.js +2 -0
  575. package/dist/roles/types.js.map +1 -0
  576. package/dist/telemetry/abort-signal.d.ts +13 -0
  577. package/dist/telemetry/abort-signal.js +40 -0
  578. package/dist/telemetry/abort-signal.js.map +1 -0
  579. package/dist/telemetry/attest.d.ts +98 -0
  580. package/dist/telemetry/attest.js +331 -0
  581. package/dist/telemetry/attest.js.map +1 -0
  582. package/dist/telemetry/attested-retry.d.ts +79 -0
  583. package/dist/telemetry/attested-retry.js +195 -0
  584. package/dist/telemetry/attested-retry.js.map +1 -0
  585. package/dist/telemetry/attested-reviewer-delivery.d.ts +58 -0
  586. package/dist/telemetry/attested-reviewer-delivery.js +238 -0
  587. package/dist/telemetry/attested-reviewer-delivery.js.map +1 -0
  588. package/dist/telemetry/backfill.d.ts +95 -0
  589. package/dist/telemetry/backfill.js +460 -0
  590. package/dist/telemetry/backfill.js.map +1 -0
  591. package/dist/telemetry/credentials.d.ts +44 -0
  592. package/dist/telemetry/credentials.js +87 -0
  593. package/dist/telemetry/credentials.js.map +1 -0
  594. package/dist/telemetry/deliver.d.ts +152 -0
  595. package/dist/telemetry/deliver.js +662 -0
  596. package/dist/telemetry/deliver.js.map +1 -0
  597. package/dist/telemetry/envelope-validation.d.ts +13 -0
  598. package/dist/telemetry/envelope-validation.js +196 -0
  599. package/dist/telemetry/envelope-validation.js.map +1 -0
  600. package/dist/telemetry/envelope.d.ts +159 -0
  601. package/dist/telemetry/envelope.js +288 -0
  602. package/dist/telemetry/envelope.js.map +1 -0
  603. package/dist/telemetry/events.d.ts +68 -0
  604. package/dist/telemetry/events.js +79 -0
  605. package/dist/telemetry/events.js.map +1 -0
  606. package/dist/telemetry/notice.d.ts +15 -0
  607. package/dist/telemetry/notice.js +67 -0
  608. package/dist/telemetry/notice.js.map +1 -0
  609. package/dist/telemetry/outbox.d.ts +166 -0
  610. package/dist/telemetry/outbox.js +741 -0
  611. package/dist/telemetry/outbox.js.map +1 -0
  612. package/dist/telemetry/quarantine.d.ts +105 -0
  613. package/dist/telemetry/quarantine.js +224 -0
  614. package/dist/telemetry/quarantine.js.map +1 -0
  615. package/dist/telemetry/read-sink.d.ts +31 -0
  616. package/dist/telemetry/read-sink.js +25 -0
  617. package/dist/telemetry/read-sink.js.map +1 -0
  618. package/dist/telemetry/recovery/command.d.ts +16 -0
  619. package/dist/telemetry/recovery/command.js +70 -0
  620. package/dist/telemetry/recovery/command.js.map +1 -0
  621. package/dist/telemetry/recovery/discovery.d.ts +8 -0
  622. package/dist/telemetry/recovery/discovery.js +277 -0
  623. package/dist/telemetry/recovery/discovery.js.map +1 -0
  624. package/dist/telemetry/recovery/files.d.ts +20 -0
  625. package/dist/telemetry/recovery/files.js +123 -0
  626. package/dist/telemetry/recovery/files.js.map +1 -0
  627. package/dist/telemetry/recovery/plan.d.ts +10 -0
  628. package/dist/telemetry/recovery/plan.js +325 -0
  629. package/dist/telemetry/recovery/plan.js.map +1 -0
  630. package/dist/telemetry/recovery/source.d.ts +328 -0
  631. package/dist/telemetry/recovery/source.js +253 -0
  632. package/dist/telemetry/recovery/source.js.map +1 -0
  633. package/dist/telemetry/recovery/types.d.ts +100 -0
  634. package/dist/telemetry/recovery/types.js +2 -0
  635. package/dist/telemetry/recovery/types.js.map +1 -0
  636. package/dist/telemetry/recovery-request-budget.d.ts +39 -0
  637. package/dist/telemetry/recovery-request-budget.js +102 -0
  638. package/dist/telemetry/recovery-request-budget.js.map +1 -0
  639. package/dist/telemetry/report-consistency.d.ts +11 -0
  640. package/dist/telemetry/report-consistency.js +111 -0
  641. package/dist/telemetry/report-consistency.js.map +1 -0
  642. package/dist/telemetry/reviewer-delivery.d.ts +39 -0
  643. package/dist/telemetry/reviewer-delivery.js +279 -0
  644. package/dist/telemetry/reviewer-delivery.js.map +1 -0
  645. package/dist/telemetry/reviewer-preflight.d.ts +13 -0
  646. package/dist/telemetry/reviewer-preflight.js +56 -0
  647. package/dist/telemetry/reviewer-preflight.js.map +1 -0
  648. package/dist/telemetry/scrub.d.ts +53 -0
  649. package/dist/telemetry/scrub.js +205 -0
  650. package/dist/telemetry/scrub.js.map +1 -0
  651. package/dist/telemetry/sink.d.ts +212 -0
  652. package/dist/telemetry/sink.js +813 -0
  653. package/dist/telemetry/sink.js.map +1 -0
  654. package/dist/telemetry/terminal-reviewer-delivery.d.ts +18 -0
  655. package/dist/telemetry/terminal-reviewer-delivery.js +27 -0
  656. package/dist/telemetry/terminal-reviewer-delivery.js.map +1 -0
  657. package/dist/telemetry/transient-input.d.ts +2 -0
  658. package/dist/telemetry/transient-input.js +37 -0
  659. package/dist/telemetry/transient-input.js.map +1 -0
  660. package/dist/telemetry/verification.d.ts +9 -0
  661. package/dist/telemetry/verification.js +12 -0
  662. package/dist/telemetry/verification.js.map +1 -0
  663. package/package.json +73 -0
@@ -0,0 +1,76 @@
1
+ import type { ModelReview } from '../consensus/types.js';
2
+ import type { ReviewAssignment } from '../roles/types.js';
3
+ import type { BuiltPrompt } from '../prepare/prompt-builder.js';
4
+ import type { ReviewAdapter } from './adapter.js';
5
+ import type { ReasoningEffort } from '../config/schema.js';
6
+ /** A successful cell read from a durably validated, exact-input checkpoint. */
7
+ export interface RetainedReview {
8
+ callIndex: number;
9
+ callIdentity: string;
10
+ review: ModelReview;
11
+ }
12
+ /**
13
+ * Local matrix binding, supplementary to the checkpoint's complete plan
14
+ * validation. Original index and exact prompts prevent cross-chunk reuse.
15
+ */
16
+ export declare function reviewCallIdentity(assignment: ReviewAssignment, prompt: BuiltPrompt, originalIndex: number, seatId?: string): string;
17
+ export interface RunnerOptions {
18
+ timeoutMs: number;
19
+ maxRetries: number;
20
+ concurrency: number;
21
+ /** Per-provider admission caps, enforced alongside global concurrency. */
22
+ providerConcurrency?: Readonly<Record<string, number>>;
23
+ verbose?: boolean;
24
+ /** Progress notification receives an isolated copy after durable acceptance. */
25
+ onReviewComplete?: (review: ModelReview) => void;
26
+ /** Full-matrix original seat instances; omission groups provider/model/role. */
27
+ seatIds?: readonly string[];
28
+ /** Caller must first validate the checkpoint's entire frozen plan and bytes. */
29
+ retainedReviews?: readonly RetainedReview[];
30
+ /** Unique original indices in dispatch priority order; defaults to all missing cells. */
31
+ eligibleCallIndices?: readonly number[];
32
+ /** Persist intent/check budget; false skips this cell, while rejection stops the run. */
33
+ beforeReview?: (callIndex: number, signal: AbortSignal) => Promise<void | false>;
34
+ /** Operation deadline/cancellation, independent of quorum and adapter cooperation. */
35
+ signal?: AbortSignal;
36
+ /**
37
+ * Audit-only raw results arriving after closure. Receives an isolated copy;
38
+ * never changes returned results or health. The caller owns persistence and
39
+ * draining started audit writes; this runner cannot await a late provider.
40
+ * An error sink is required when this hook is supplied.
41
+ */
42
+ auditLateReview?: (review: ModelReview, callIndex: number) => void | Promise<void>;
43
+ /** Must report audit persistence failure without throwing or changing the report. */
44
+ onLateAuditError?: (error: unknown, callIndex: number) => void;
45
+ /**
46
+ * Durable acceptance boundary, serialized in arrival order. The index names
47
+ * the cell in the complete supplied assignment/prompt matrix. Called for
48
+ * every dispatched terminal result, including in-flight cancellations, before
49
+ * progress or success counting. Retained/unstarted/ineligible placeholders
50
+ * bypass this hook: they do not represent newly paid calls. Receives an isolated copy;
51
+ * rejection stops dispatch, aborts remaining calls and rejects the run.
52
+ * The caller owns bounded storage I/O and frozen checkpoint identity.
53
+ */
54
+ acceptReview?: (review: ModelReview, callIndex: number) => Promise<void>;
55
+ /** Reasoning budget for providers that support it; defaults to 'medium'. */
56
+ reasoningEffort?: ReasoningEffort;
57
+ /** Test seam / config-key wiring; defaults to the builtin providers. */
58
+ adapterFactory?: (provider: string) => ReviewAdapter;
59
+ /**
60
+ * Successful complete-seat quorum over the full supplied blocking matrix.
61
+ * Seats are provider/model/role tuples; all their expected chunks must
62
+ * succeed. At quorum cancel every outstanding call, including core models,
63
+ * without waiting for noncooperative adapters. Omission keeps wait-for-all.
64
+ * coreModels is accepted for source compatibility but grants no exemption.
65
+ */
66
+ quorum?: {
67
+ fraction?: number;
68
+ coreModels?: readonly string[];
69
+ /** Ordinary calls: one immutable blocking/secondary lane per matrix entry. */
70
+ blocking?: readonly boolean[];
71
+ /** Retained calls: original assignment IDs, with closure at M even at fraction 1. */
72
+ blockingSeatIds?: readonly string[];
73
+ };
74
+ }
75
+ export declare function defaultAdapterFactory(provider: string, reasoningEffort?: ReasoningEffort): ReviewAdapter;
76
+ export declare function runReviews(assignments: ReviewAssignment[], prompts: BuiltPrompt[], options: RunnerOptions): Promise<ModelReview[]>;
@@ -0,0 +1,415 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { AnthropicAdapter } from './anthropic.js';
3
+ import { OpenAIAdapter } from './openai.js';
4
+ import { GoogleAdapter } from './google.js';
5
+ import { OpenAICompatAdapter } from './openai-compat.js';
6
+ import { DEFAULT_REASONING_EFFORT } from '../config/defaults.js';
7
+ import { MODEL_PROVIDER_SET } from '../config/providers.js';
8
+ import { hasSuccessfulQuorum, resolveQuorumPolicy } from './quorum.js';
9
+ /**
10
+ * Local matrix binding, supplementary to the checkpoint's complete plan
11
+ * validation. Original index and exact prompts prevent cross-chunk reuse.
12
+ */
13
+ export function reviewCallIdentity(assignment, prompt, originalIndex, seatId) {
14
+ if (!Number.isSafeInteger(originalIndex) || originalIndex < 0)
15
+ throw new Error('Invalid original call index');
16
+ const seat = seatId ?? JSON.stringify([assignment.provider, assignment.model, assignment.role.name]);
17
+ return createHash('sha256').update(JSON.stringify([
18
+ 1, originalIndex, seat, assignment.provider, assignment.model, assignment.role.name,
19
+ prompt.systemPrompt, prompt.userPrompt,
20
+ ])).digest('hex');
21
+ }
22
+ export function defaultAdapterFactory(provider, reasoningEffort = DEFAULT_REASONING_EFFORT) {
23
+ switch (provider) {
24
+ case 'anthropic':
25
+ return new AnthropicAdapter();
26
+ case 'openai':
27
+ return new OpenAIAdapter();
28
+ case 'google':
29
+ return new GoogleAdapter();
30
+ case 'openrouter': {
31
+ const apiKey = process.env['OPENROUTER_API_KEY']?.trim();
32
+ // Fail loudly instead of letting the OpenAI SDK silently fall back to
33
+ // OPENAI_API_KEY, which would send the wrong key to openrouter.ai.
34
+ if (!apiKey) {
35
+ throw new Error('OPENROUTER_API_KEY is not set (required for openrouter/ models)');
36
+ }
37
+ return new OpenAICompatAdapter({
38
+ apiKey,
39
+ baseUrl: 'https://openrouter.ai/api/v1',
40
+ provider: 'openrouter',
41
+ // Without a bound, reasoning models think for 5-10 minutes and/or
42
+ // exhaust max_tokens before emitting findings (dogfood: 4 of 7
43
+ // OpenRouter seats completed zero reviews across three rounds).
44
+ reasoningEffort,
45
+ });
46
+ }
47
+ default:
48
+ return new OpenAICompatAdapter();
49
+ }
50
+ }
51
+ export async function runReviews(assignments, prompts, options) {
52
+ if (!Number.isSafeInteger(options.concurrency) || options.concurrency < 1) {
53
+ throw new Error('Runner concurrency must be a positive safe integer');
54
+ }
55
+ const providerLimits = new Map();
56
+ for (const [provider, limit] of Object.entries(options.providerConcurrency ?? {})) {
57
+ if (!MODEL_PROVIDER_SET.has(provider) || !Number.isSafeInteger(limit) || limit < 1) {
58
+ throw new Error('Runner provider concurrency must use canonical providers and positive safe integers');
59
+ }
60
+ providerLimits.set(provider, limit);
61
+ }
62
+ if (!Number.isFinite(options.timeoutMs) || options.timeoutMs <= 0 || options.timeoutMs > 2_147_483_647) {
63
+ throw new Error('Runner timeout must be positive and within the supported timer range');
64
+ }
65
+ if (assignments.length !== prompts.length) {
66
+ throw new Error('assignments and prompts arrays must have same length');
67
+ }
68
+ const calls = assignments.map((a, i) => ({
69
+ model: a.model,
70
+ role: a.role.name,
71
+ provider: a.provider,
72
+ systemPrompt: prompts[i].systemPrompt,
73
+ userPrompt: prompts[i].userPrompt,
74
+ }));
75
+ const adapterOpts = {
76
+ timeoutMs: options.timeoutMs,
77
+ maxRetries: options.maxRetries,
78
+ };
79
+ const factory = options.adapterFactory ??
80
+ ((provider) => defaultAdapterFactory(provider, options.reasoningEffort));
81
+ // One adapter (and HTTP client) per provider per run; a throwing
82
+ // constructor is handled per call below so one bad provider doesn't
83
+ // take down the pool.
84
+ const adapters = new Map();
85
+ const results = new Array(calls.length);
86
+ if (options.seatIds !== undefined &&
87
+ (!Array.isArray(options.seatIds) || options.seatIds.length !== calls.length ||
88
+ calls.some((_call, index) => typeof options.seatIds[index] !== 'string' || options.seatIds[index].trim().length === 0))) {
89
+ throw new Error('Invalid seat ID matrix');
90
+ }
91
+ const seatKeys = calls.map((call, index) => options.seatIds?.[index] ?? JSON.stringify([call.provider, call.model, call.role]));
92
+ const blockingLanes = options.quorum?.blocking;
93
+ const retainedBlockingSeats = options.quorum?.blockingSeatIds;
94
+ if (blockingLanes !== undefined && retainedBlockingSeats !== undefined) {
95
+ throw new Error('Ambiguous blocking lane authority');
96
+ }
97
+ if (blockingLanes !== undefined && (!Array.isArray(blockingLanes) || blockingLanes.length !== calls.length ||
98
+ calls.some((_call, index) => typeof blockingLanes[index] !== 'boolean'))) {
99
+ throw new Error('Invalid blocking lane matrix');
100
+ }
101
+ const expected = new Map();
102
+ const seatLanes = new Map();
103
+ const seatIdentities = new Map();
104
+ for (const [index, key] of seatKeys.entries()) {
105
+ if (typeof key !== 'string' || key.trim().length === 0)
106
+ throw new Error('Invalid empty seat ID');
107
+ const call = calls[index];
108
+ const identity = JSON.stringify([call.provider, call.model, call.role]);
109
+ if (seatIdentities.has(key) && seatIdentities.get(key) !== identity)
110
+ throw new Error('Inconsistent original seat identity');
111
+ seatIdentities.set(key, identity);
112
+ const blocking = blockingLanes?.[index] ?? true;
113
+ if (seatLanes.has(key) && seatLanes.get(key) !== blocking)
114
+ throw new Error('Inconsistent original seat lane');
115
+ seatLanes.set(key, blocking);
116
+ expected.set(key, (expected.get(key) ?? 0) + 1);
117
+ }
118
+ const blockingSeats = new Set(retainedBlockingSeats ?? [...seatLanes].filter(([, blocking]) => blocking).map(([seat]) => seat));
119
+ if (retainedBlockingSeats !== undefined && (!Array.isArray(retainedBlockingSeats) ||
120
+ blockingSeats.size !== retainedBlockingSeats.length ||
121
+ [...blockingSeats].some(seat => !expected.has(seat))))
122
+ throw new Error('Invalid blocking seat subset');
123
+ const resolvedPolicy = options.quorum ? resolveQuorumPolicy(blockingSeats.size, options.quorum.fraction) : undefined;
124
+ // Ordinary fraction 1 preserves wait-for-all, including secondary calls.
125
+ // Retained execution always stops at its original blocking minimum.
126
+ const policy = retainedBlockingSeats !== undefined || (resolvedPolicy && resolvedPolicy.fraction < 1)
127
+ ? resolvedPolicy : undefined;
128
+ const successfulChunks = new Map();
129
+ let successfulSeats = 0;
130
+ function countSuccess(index) {
131
+ const key = seatKeys[index];
132
+ const count = (successfulChunks.get(key) ?? 0) + 1;
133
+ successfulChunks.set(key, count);
134
+ if (blockingSeats.has(key) && count === expected.get(key))
135
+ successfulSeats++;
136
+ }
137
+ function matches(index, review) {
138
+ const call = calls[index];
139
+ return review?.model === call.model && review.role === call.role && review.provider === call.provider;
140
+ }
141
+ function validIndex(index) {
142
+ return Number.isSafeInteger(index) && index >= 0 && index < calls.length;
143
+ }
144
+ const retained = new Set();
145
+ for (const entry of options.retainedReviews ?? []) {
146
+ const index = entry.callIndex;
147
+ if (!validIndex(index) || retained.has(index) || !matches(index, entry.review) ||
148
+ entry.review.status !== 'success' || entry.review.async === true ||
149
+ entry.callIdentity !== reviewCallIdentity(assignments[index], prompts[index], index, options.seatIds?.[index])) {
150
+ throw new Error('Invalid retained review identity, chunk, status or duplicate index');
151
+ }
152
+ retained.add(index);
153
+ results[index] = entry.review;
154
+ countSuccess(index);
155
+ }
156
+ // Set iteration retains planner priority without renumbering original cells.
157
+ const eligible = new Set();
158
+ for (const index of options.eligibleCallIndices ?? calls.map((_call, index) => index).filter(index => !retained.has(index))) {
159
+ if (!validIndex(index) || retained.has(index) || eligible.has(index))
160
+ throw new Error('Invalid eligible call index');
161
+ eligible.add(index);
162
+ }
163
+ if (options.auditLateReview && !options.onLateAuditError)
164
+ throw new Error('Late review audit requires an error sink');
165
+ let closed = policy && hasSuccessfulQuorum(policy, successfulSeats) ? 'quorum' : undefined;
166
+ let failure;
167
+ let acceptance = Promise.resolve();
168
+ const dispatched = new Set();
169
+ const intended = new Set();
170
+ const cancelOutstanding = new Set();
171
+ function cancelCalls() { for (const cancel of cancelOutstanding)
172
+ cancel(); }
173
+ function fail(error) { failure ??= { error }; cancelCalls(); }
174
+ function abort() { closed ??= 'signal'; cancelCalls(); }
175
+ function stopped() { return closed !== undefined || failure !== undefined; }
176
+ function isAbortError(error) {
177
+ return typeof error === 'object' && error !== null && 'name' in error && error.name === 'AbortError';
178
+ }
179
+ function canceledReview(call, elapsedMs, detail) {
180
+ const closure = closed === 'signal' ? 'by operation signal'
181
+ : closed === 'quorum' ? 'at quorum round closure' : undefined;
182
+ return { model: call.model, role: call.role, provider: call.provider, findings: [],
183
+ durationMs: elapsedMs, status: 'canceled',
184
+ error: ['Canceled', closure, detail].filter(Boolean).join(' ') };
185
+ }
186
+ function failedReview(index, error, startedAt) {
187
+ const call = calls[index];
188
+ return { model: call.model, role: call.role, provider: call.provider, findings: [],
189
+ durationMs: Date.now() - startedAt, status: 'error',
190
+ error: error instanceof Error ? error.message : String(error) };
191
+ }
192
+ const auditedRawIndices = new Set();
193
+ function audit(index, review) {
194
+ if (!options.auditLateReview || auditedRawIndices.has(index))
195
+ return;
196
+ auditedRawIndices.add(index);
197
+ // The audit sink cannot mutate a shared result object in the report. Its
198
+ // completion/errors have no path back into success counting or dispatch.
199
+ void Promise.resolve().then(() => options.auditLateReview(structuredClone(review), index))
200
+ .catch(error => options.onLateAuditError(error, index))
201
+ .catch(() => { });
202
+ }
203
+ function accept(index, received) {
204
+ const operation = acceptance.then(async () => {
205
+ if (failure)
206
+ return;
207
+ let review = received;
208
+ if (closed && received.status !== 'canceled') {
209
+ audit(index, received);
210
+ review = canceledReview(calls[index], received.durationMs, 'before durable acceptance');
211
+ }
212
+ if (!matches(index, review))
213
+ throw new Error(`Reviewer result does not match planned cell identity at index ${index}`);
214
+ const countsTowardQuorum = review.status === 'success' && review.async !== true;
215
+ if (dispatched.has(index) || intended.has(index)) {
216
+ await options.acceptReview?.(structuredClone(review), index);
217
+ }
218
+ results[index] = review;
219
+ options.onReviewComplete?.(structuredClone(review));
220
+ if (review.status === 'error' && options.verbose)
221
+ console.error(`${review.model}/${review.role}: ${review.error}`);
222
+ if (countsTowardQuorum) {
223
+ countSuccess(index);
224
+ if (!closed && policy && hasSuccessfulQuorum(policy, successfulSeats)) {
225
+ closed = 'quorum';
226
+ cancelCalls();
227
+ }
228
+ }
229
+ });
230
+ acceptance = operation.catch(fail);
231
+ return operation;
232
+ }
233
+ async function runOne(index) {
234
+ const call = calls[index];
235
+ if (retained.has(index))
236
+ return;
237
+ if (stopped() || !eligible.has(index)) {
238
+ await accept(index, canceledReview(call, 0, eligible.has(index) ? 'before starting' : 'not eligible for recovery'));
239
+ return;
240
+ }
241
+ const startedAt = Date.now();
242
+ const controller = new AbortController();
243
+ let canceled = false;
244
+ let raw;
245
+ let audited = false;
246
+ function auditCanceledRaw() {
247
+ if (canceled && raw && !audited) {
248
+ audited = true;
249
+ audit(index, raw);
250
+ }
251
+ }
252
+ let cancel;
253
+ const cancellation = new Promise(resolveCancel => {
254
+ cancel = () => {
255
+ canceled = true;
256
+ const review = canceledReview(call, Date.now() - startedAt, 'while in flight');
257
+ controller.abort();
258
+ resolveCancel(review);
259
+ auditCanceledRaw();
260
+ };
261
+ cancelOutstanding.add(cancel);
262
+ });
263
+ try {
264
+ // Intent persistence is an owned, caller-bounded durability operation.
265
+ // Cancellation signals it, but the run still observes how it settles.
266
+ if (options.beforeReview) {
267
+ try {
268
+ const intent = await options.beforeReview(index, controller.signal);
269
+ if (intent === false) {
270
+ await accept(index, canceledReview(call, 0, 'intent declined before provider dispatch'));
271
+ return;
272
+ }
273
+ intended.add(index);
274
+ }
275
+ catch (error) {
276
+ if ((canceled || controller.signal.aborted || closed) && isAbortError(error)) {
277
+ await accept(index, canceledReview(call, Date.now() - startedAt, 'while awaiting intent'));
278
+ return;
279
+ }
280
+ fail(error);
281
+ throw error;
282
+ }
283
+ }
284
+ if (stopped()) {
285
+ await accept(index, canceledReview(call, Date.now() - startedAt, 'before provider dispatch'));
286
+ return;
287
+ }
288
+ let adapter;
289
+ try {
290
+ const existing = adapters.get(call.provider);
291
+ adapter = existing ?? factory(call.provider);
292
+ if (!existing)
293
+ adapters.set(call.provider, adapter);
294
+ }
295
+ catch (error) {
296
+ await accept(index, failedReview(index, error, startedAt));
297
+ return;
298
+ }
299
+ dispatched.add(index);
300
+ const provider = (async () => {
301
+ try {
302
+ raw = await adapter.review(call.model, call.role, call.systemPrompt, call.userPrompt, { ...adapterOpts, signal: controller.signal });
303
+ }
304
+ catch (error) {
305
+ raw = failedReview(index, error, startedAt);
306
+ }
307
+ auditCanceledRaw();
308
+ return raw;
309
+ })();
310
+ const review = await Promise.race([provider, cancellation]);
311
+ // A returned response is no longer an in-flight provider call. Remove
312
+ // it before acceptance can close quorum, so accepted work is not audited
313
+ // as a canceled straggler by its own completion.
314
+ cancelOutstanding.delete(cancel);
315
+ await accept(index, review);
316
+ }
317
+ finally {
318
+ cancelOutstanding.delete(cancel);
319
+ }
320
+ }
321
+ if (options.signal?.aborted)
322
+ abort();
323
+ else
324
+ options.signal?.addEventListener('abort', abort, { once: true });
325
+ try {
326
+ const pendingByProvider = new Map();
327
+ let priority = 0;
328
+ for (const index of eligible) {
329
+ const provider = calls[index].provider;
330
+ const pending = pendingByProvider.get(provider) ?? { entries: [], next: 0 };
331
+ pending.entries.push({ index, priority: priority++ });
332
+ pendingByProvider.set(provider, pending);
333
+ }
334
+ let queued = eligible.size;
335
+ const activeByProvider = new Map();
336
+ const active = new Set();
337
+ let completed = 0;
338
+ let completionWaiter;
339
+ const signalCompletion = () => {
340
+ completed++;
341
+ completionWaiter?.();
342
+ completionWaiter = undefined;
343
+ };
344
+ const waitForCompletion = async () => {
345
+ if (completed === 0)
346
+ await new Promise(resolve => { completionWaiter = resolve; });
347
+ completed--;
348
+ };
349
+ const providerLimit = (provider) => Math.min(options.concurrency, providerLimits.get(provider) ?? options.concurrency);
350
+ const nextRunnable = () => {
351
+ let selectedProvider;
352
+ let selectedPriority = Number.POSITIVE_INFINITY;
353
+ for (const [provider, pending] of pendingByProvider) {
354
+ if ((activeByProvider.get(provider) ?? 0) >= providerLimit(provider))
355
+ continue;
356
+ const entry = pending.entries[pending.next];
357
+ if (entry !== undefined && entry.priority < selectedPriority) {
358
+ selectedProvider = provider;
359
+ selectedPriority = entry.priority;
360
+ }
361
+ }
362
+ if (selectedProvider === undefined)
363
+ return undefined;
364
+ const pending = pendingByProvider.get(selectedProvider);
365
+ const selected = pending.entries[pending.next++];
366
+ queued--;
367
+ if (pending.next === pending.entries.length)
368
+ pendingByProvider.delete(selectedProvider);
369
+ return selected.index;
370
+ };
371
+ const start = (index) => {
372
+ const provider = calls[index].provider;
373
+ activeByProvider.set(provider, (activeByProvider.get(provider) ?? 0) + 1);
374
+ let task;
375
+ task = runOne(index).catch(fail).finally(() => {
376
+ const remaining = (activeByProvider.get(provider) ?? 1) - 1;
377
+ if (remaining === 0)
378
+ activeByProvider.delete(provider);
379
+ else
380
+ activeByProvider.set(provider, remaining);
381
+ active.delete(task);
382
+ signalCompletion();
383
+ });
384
+ active.add(task);
385
+ };
386
+ while (queued > 0 && !stopped()) {
387
+ while (active.size < options.concurrency && !stopped()) {
388
+ // Select only among provider heads. This preserves the earliest
389
+ // runnable call and per-provider FIFO order without rescanning every
390
+ // queued call whenever one capped provider completes.
391
+ const index = nextRunnable();
392
+ if (index === undefined)
393
+ break;
394
+ start(index);
395
+ }
396
+ if (active.size === 0)
397
+ break;
398
+ await waitForCompletion();
399
+ }
400
+ await Promise.allSettled([...active]);
401
+ if (failure)
402
+ throw failure.error;
403
+ // Ineligible cells still occupy their original matrix positions. These
404
+ // placeholders have no provider invocation and cannot become paid results.
405
+ for (let index = 0; index < calls.length; index++) {
406
+ if (!results[index])
407
+ await accept(index, canceledReview(calls[index], 0, 'not eligible for recovery'));
408
+ }
409
+ return results;
410
+ }
411
+ finally {
412
+ options.signal?.removeEventListener('abort', abort);
413
+ }
414
+ }
415
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/dispatch/runner.ts"],"names":[],"mappings":"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"}