@quickchatai/pi-quickreview 0.0.0-stage → 1.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 (689) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +75 -2
  3. package/assets/agents/pass-abstraction.md +64 -0
  4. package/assets/agents/pass-ask-human.md +134 -0
  5. package/assets/agents/pass-backcompat.md +67 -0
  6. package/assets/agents/pass-baseline.md +61 -0
  7. package/assets/agents/pass-behaviour-delta.md +64 -0
  8. package/assets/agents/pass-bounds.md +36 -0
  9. package/assets/agents/pass-claims.md +31 -0
  10. package/assets/agents/pass-concurrency.md +168 -0
  11. package/assets/agents/pass-consistency.md +57 -0
  12. package/assets/agents/pass-contracts.md +30 -0
  13. package/assets/agents/pass-data-safety.md +54 -0
  14. package/assets/agents/pass-deferred.md +35 -0
  15. package/assets/agents/pass-delivery.md +37 -0
  16. package/assets/agents/pass-duplication.md +60 -0
  17. package/assets/agents/pass-intent.md +63 -0
  18. package/assets/agents/pass-lint-conformance.md +46 -0
  19. package/assets/agents/pass-maintainability.md +67 -0
  20. package/assets/agents/pass-placement.md +68 -0
  21. package/assets/agents/pass-prod-risk.md +24 -0
  22. package/assets/agents/pass-rollout.md +32 -0
  23. package/assets/agents/pass-roundtrip.md +46 -0
  24. package/assets/agents/pass-security.md +31 -0
  25. package/assets/agents/pass-simplicity.md +68 -0
  26. package/assets/agents/pass-statelessness.md +27 -0
  27. package/assets/agents/pass-style.md +37 -0
  28. package/assets/agents/pass-sweep.md +57 -0
  29. package/assets/agents/pass-tests.md +58 -0
  30. package/assets/agents/pass-ui.md +23 -0
  31. package/assets/agents/pass-validate.md +50 -0
  32. package/assets/agents/pass-widened.md +46 -0
  33. package/assets/agents/scan/pass-scan.md +86 -0
  34. package/assets/config.example.toml +1067 -0
  35. package/assets/deploy/reviewer/AGENTS.override.md +12 -0
  36. package/assets/profiles/default/README.md +21 -0
  37. package/assets/profiles/default/addenda/.gitkeep +0 -0
  38. package/assets/profiles/default/profile.toml +17 -0
  39. package/assets/profiles/example-django/README.md +21 -0
  40. package/assets/profiles/example-django/addenda/10-migration-discipline.md +13 -0
  41. package/assets/profiles/example-django/addenda/20-new-column-nullability.md +12 -0
  42. package/assets/profiles/example-django/addenda/30-test-doctrine.md +12 -0
  43. package/assets/profiles/example-django/addenda/40-orm-usage.md +19 -0
  44. package/assets/profiles/example-django/addenda/50-declared-shape.md +10 -0
  45. package/assets/profiles/example-django/addenda/60-config-placement.md +14 -0
  46. package/assets/profiles/example-django/heuristics.toml +24 -0
  47. package/assets/profiles/example-django/profile.toml +9 -0
  48. package/assets/profiles/fast/README.md +24 -0
  49. package/assets/profiles/fast/profile.toml +59 -0
  50. package/assets/profiles/minimal/README.md +17 -0
  51. package/assets/profiles/minimal/addenda/.gitkeep +0 -0
  52. package/assets/profiles/minimal/profile.toml +8 -0
  53. package/assets/profiles/snappy/README.md +24 -0
  54. package/assets/profiles/snappy/addenda/10-race-as-question.md +6 -0
  55. package/assets/profiles/snappy/profile.toml +46 -0
  56. package/assets/prompts/companion-day-open.md +46 -0
  57. package/assets/prompts/companion-first-run.md +104 -0
  58. package/assets/prompts/companion.md +821 -0
  59. package/assets/prompts/conversation-system.md +117 -0
  60. package/assets/prompts/eod-sweep.md +120 -0
  61. package/assets/prompts/onboarding.md +74 -0
  62. package/assets/prompts/pass-common.md +52 -0
  63. package/assets/prompts/pass-quality-common.md +22 -0
  64. package/assets/prompts/round-first.md +874 -0
  65. package/assets/prompts/round-follow-up.md +991 -0
  66. package/assets/prompts/round-re-review.md +889 -0
  67. package/assets/prompts/round-recheck.md +196 -0
  68. package/assets/prompts/round-staleness.md +856 -0
  69. package/assets/schemas/review-result.v1.json +391 -0
  70. package/assets/schemas/scan-result.v1.json +421 -0
  71. package/assets/schemas/version.v1.json +57 -0
  72. package/assets/seed-manifest.json +19 -0
  73. package/assets/seeds/agents/pass-baseline.md +61 -0
  74. package/assets/seeds/agents/pass-contracts.md +30 -0
  75. package/assets/seeds/agents/pass-data-safety.md +54 -0
  76. package/assets/seeds/agents/pass-delivery.md +37 -0
  77. package/assets/seeds/agents/pass-prod-risk.md +24 -0
  78. package/assets/seeds/agents/pass-security.md +31 -0
  79. package/assets/seeds/agents/pass-statelessness.md +27 -0
  80. package/assets/seeds/agents/pass-ui.md +23 -0
  81. package/assets/seeds/agents/pass-validate.md +50 -0
  82. package/assets/seeds/prompts/conversation-system.md +117 -0
  83. package/assets/seeds/prompts/eod-sweep.md +120 -0
  84. package/assets/seeds/prompts/pass-common.md +52 -0
  85. package/dist/extensions/bash-guard.d.ts +467 -0
  86. package/dist/extensions/bash-guard.d.ts.map +1 -0
  87. package/dist/extensions/bash-guard.js +3058 -0
  88. package/dist/extensions/bash-guard.js.map +1 -0
  89. package/dist/extensions/finding-clusters.d.ts +33 -0
  90. package/dist/extensions/finding-clusters.d.ts.map +1 -0
  91. package/dist/extensions/finding-clusters.js +218 -0
  92. package/dist/extensions/finding-clusters.js.map +1 -0
  93. package/dist/extensions/ledger-pin.d.ts +76 -0
  94. package/dist/extensions/ledger-pin.d.ts.map +1 -0
  95. package/dist/extensions/ledger-pin.js +331 -0
  96. package/dist/extensions/ledger-pin.js.map +1 -0
  97. package/dist/extensions/lens.d.ts +43 -0
  98. package/dist/extensions/lens.d.ts.map +1 -0
  99. package/dist/extensions/lens.js +150 -0
  100. package/dist/extensions/lens.js.map +1 -0
  101. package/dist/extensions/pi-tool.d.ts +22 -0
  102. package/dist/extensions/pi-tool.d.ts.map +1 -0
  103. package/dist/extensions/pi-tool.js +20 -0
  104. package/dist/extensions/pi-tool.js.map +1 -0
  105. package/dist/extensions/quickreview.d.ts +21 -0
  106. package/dist/extensions/quickreview.d.ts.map +1 -0
  107. package/dist/extensions/quickreview.js +132 -0
  108. package/dist/extensions/quickreview.js.map +1 -0
  109. package/dist/src/anchors.d.ts +54 -0
  110. package/dist/src/anchors.d.ts.map +1 -0
  111. package/dist/src/anchors.js +127 -0
  112. package/dist/src/anchors.js.map +1 -0
  113. package/dist/src/assetroot.d.ts +16 -0
  114. package/dist/src/assetroot.d.ts.map +1 -0
  115. package/dist/src/assetroot.js +77 -0
  116. package/dist/src/assetroot.js.map +1 -0
  117. package/dist/src/authwatch.d.ts +61 -0
  118. package/dist/src/authwatch.d.ts.map +1 -0
  119. package/dist/src/authwatch.js +210 -0
  120. package/dist/src/authwatch.js.map +1 -0
  121. package/dist/src/budget.d.ts +15 -0
  122. package/dist/src/budget.d.ts.map +1 -0
  123. package/dist/src/budget.js +32 -0
  124. package/dist/src/budget.js.map +1 -0
  125. package/dist/src/casebudget.d.ts +3 -0
  126. package/dist/src/casebudget.d.ts.map +1 -0
  127. package/dist/src/casebudget.js +3 -0
  128. package/dist/src/casebudget.js.map +1 -0
  129. package/dist/src/cigate.d.ts +116 -0
  130. package/dist/src/cigate.d.ts.map +1 -0
  131. package/dist/src/cigate.js +176 -0
  132. package/dist/src/cigate.js.map +1 -0
  133. package/dist/src/codespan.d.ts +46 -0
  134. package/dist/src/codespan.d.ts.map +1 -0
  135. package/dist/src/codespan.js +75 -0
  136. package/dist/src/codespan.js.map +1 -0
  137. package/dist/src/contextpack.d.ts +56 -0
  138. package/dist/src/contextpack.d.ts.map +1 -0
  139. package/dist/src/contextpack.js +195 -0
  140. package/dist/src/contextpack.js.map +1 -0
  141. package/dist/src/contract.d.ts +8 -0
  142. package/dist/src/contract.d.ts.map +1 -0
  143. package/dist/src/contract.js +21 -0
  144. package/dist/src/contract.js.map +1 -0
  145. package/dist/src/coverage.d.ts +32 -0
  146. package/dist/src/coverage.d.ts.map +1 -0
  147. package/dist/src/coverage.js +85 -0
  148. package/dist/src/coverage.js.map +1 -0
  149. package/dist/src/datafence.d.ts +19 -0
  150. package/dist/src/datafence.d.ts.map +1 -0
  151. package/dist/src/datafence.js +60 -0
  152. package/dist/src/datafence.js.map +1 -0
  153. package/dist/src/dedup.d.ts +65 -0
  154. package/dist/src/dedup.d.ts.map +1 -0
  155. package/dist/src/dedup.js +459 -0
  156. package/dist/src/dedup.js.map +1 -0
  157. package/dist/src/depsources.d.ts +304 -0
  158. package/dist/src/depsources.d.ts.map +1 -0
  159. package/dist/src/depsources.js +3367 -0
  160. package/dist/src/depsources.js.map +1 -0
  161. package/dist/src/diffinput.d.ts +10 -0
  162. package/dist/src/diffinput.d.ts.map +1 -0
  163. package/dist/src/diffinput.js +172 -0
  164. package/dist/src/diffinput.js.map +1 -0
  165. package/dist/src/doubtwords.d.ts +10 -0
  166. package/dist/src/doubtwords.d.ts.map +1 -0
  167. package/dist/src/doubtwords.js +13 -0
  168. package/dist/src/doubtwords.js.map +1 -0
  169. package/dist/src/ecosystem.d.ts +148 -0
  170. package/dist/src/ecosystem.d.ts.map +1 -0
  171. package/dist/src/ecosystem.js +338 -0
  172. package/dist/src/ecosystem.js.map +1 -0
  173. package/dist/src/engine/agentdir.d.ts +5 -0
  174. package/dist/src/engine/agentdir.d.ts.map +1 -0
  175. package/dist/src/engine/agentdir.js +21 -0
  176. package/dist/src/engine/agentdir.js.map +1 -0
  177. package/dist/src/engine/auth.d.ts +214 -0
  178. package/dist/src/engine/auth.d.ts.map +1 -0
  179. package/dist/src/engine/auth.js +374 -0
  180. package/dist/src/engine/auth.js.map +1 -0
  181. package/dist/src/engine/budget.d.ts +60 -0
  182. package/dist/src/engine/budget.d.ts.map +1 -0
  183. package/dist/src/engine/budget.js +113 -0
  184. package/dist/src/engine/budget.js.map +1 -0
  185. package/dist/src/engine/capfd.d.ts +6 -0
  186. package/dist/src/engine/capfd.d.ts.map +1 -0
  187. package/dist/src/engine/capfd.js +21 -0
  188. package/dist/src/engine/capfd.js.map +1 -0
  189. package/dist/src/engine/caseout.d.ts +66 -0
  190. package/dist/src/engine/caseout.d.ts.map +1 -0
  191. package/dist/src/engine/caseout.js +107 -0
  192. package/dist/src/engine/caseout.js.map +1 -0
  193. package/dist/src/engine/context.d.ts +57 -0
  194. package/dist/src/engine/context.d.ts.map +1 -0
  195. package/dist/src/engine/context.js +212 -0
  196. package/dist/src/engine/context.js.map +1 -0
  197. package/dist/src/engine/envmap.d.ts +13 -0
  198. package/dist/src/engine/envmap.d.ts.map +1 -0
  199. package/dist/src/engine/envmap.js +372 -0
  200. package/dist/src/engine/envmap.js.map +1 -0
  201. package/dist/src/engine/extfiles.d.ts +7 -0
  202. package/dist/src/engine/extfiles.d.ts.map +1 -0
  203. package/dist/src/engine/extfiles.js +23 -0
  204. package/dist/src/engine/extfiles.js.map +1 -0
  205. package/dist/src/engine/keyroute.d.ts +21 -0
  206. package/dist/src/engine/keyroute.d.ts.map +1 -0
  207. package/dist/src/engine/keyroute.js +58 -0
  208. package/dist/src/engine/keyroute.js.map +1 -0
  209. package/dist/src/engine/lens/cache-group.d.ts +20 -0
  210. package/dist/src/engine/lens/cache-group.d.ts.map +1 -0
  211. package/dist/src/engine/lens/cache-group.js +31 -0
  212. package/dist/src/engine/lens/cache-group.js.map +1 -0
  213. package/dist/src/engine/lens/cache-run.d.ts +65 -0
  214. package/dist/src/engine/lens/cache-run.d.ts.map +1 -0
  215. package/dist/src/engine/lens/cache-run.js +159 -0
  216. package/dist/src/engine/lens/cache-run.js.map +1 -0
  217. package/dist/src/engine/lens/deadline.d.ts +54 -0
  218. package/dist/src/engine/lens/deadline.d.ts.map +1 -0
  219. package/dist/src/engine/lens/deadline.js +111 -0
  220. package/dist/src/engine/lens/deadline.js.map +1 -0
  221. package/dist/src/engine/lens/engine-tools.d.ts +13 -0
  222. package/dist/src/engine/lens/engine-tools.d.ts.map +1 -0
  223. package/dist/src/engine/lens/engine-tools.js +37 -0
  224. package/dist/src/engine/lens/engine-tools.js.map +1 -0
  225. package/dist/src/engine/lens/env.d.ts +23 -0
  226. package/dist/src/engine/lens/env.d.ts.map +1 -0
  227. package/dist/src/engine/lens/env.js +42 -0
  228. package/dist/src/engine/lens/env.js.map +1 -0
  229. package/dist/src/engine/lens/launch-plan.d.ts +63 -0
  230. package/dist/src/engine/lens/launch-plan.d.ts.map +1 -0
  231. package/dist/src/engine/lens/launch-plan.js +203 -0
  232. package/dist/src/engine/lens/launch-plan.js.map +1 -0
  233. package/dist/src/engine/lens/leaf-cache.d.ts +22 -0
  234. package/dist/src/engine/lens/leaf-cache.d.ts.map +1 -0
  235. package/dist/src/engine/lens/leaf-cache.js +115 -0
  236. package/dist/src/engine/lens/leaf-cache.js.map +1 -0
  237. package/dist/src/engine/lens/permits.d.ts +14 -0
  238. package/dist/src/engine/lens/permits.d.ts.map +1 -0
  239. package/dist/src/engine/lens/permits.js +18 -0
  240. package/dist/src/engine/lens/permits.js.map +1 -0
  241. package/dist/src/engine/lens/registry.d.ts +55 -0
  242. package/dist/src/engine/lens/registry.d.ts.map +1 -0
  243. package/dist/src/engine/lens/registry.js +140 -0
  244. package/dist/src/engine/lens/registry.js.map +1 -0
  245. package/dist/src/engine/lens/round-lens.d.ts +16 -0
  246. package/dist/src/engine/lens/round-lens.d.ts.map +1 -0
  247. package/dist/src/engine/lens/round-lens.js +46 -0
  248. package/dist/src/engine/lens/round-lens.js.map +1 -0
  249. package/dist/src/engine/lens/runlens.d.ts +103 -0
  250. package/dist/src/engine/lens/runlens.d.ts.map +1 -0
  251. package/dist/src/engine/lens/runlens.js +538 -0
  252. package/dist/src/engine/lens/runlens.js.map +1 -0
  253. package/dist/src/engine/lens/section.d.ts +19 -0
  254. package/dist/src/engine/lens/section.d.ts.map +1 -0
  255. package/dist/src/engine/lens/section.js +40 -0
  256. package/dist/src/engine/lens/section.js.map +1 -0
  257. package/dist/src/engine/lens/semaphore.d.ts +13 -0
  258. package/dist/src/engine/lens/semaphore.d.ts.map +1 -0
  259. package/dist/src/engine/lens/semaphore.js +44 -0
  260. package/dist/src/engine/lens/semaphore.js.map +1 -0
  261. package/dist/src/engine/lens/tool.d.ts +34 -0
  262. package/dist/src/engine/lens/tool.d.ts.map +1 -0
  263. package/dist/src/engine/lens/tool.js +345 -0
  264. package/dist/src/engine/lens/tool.js.map +1 -0
  265. package/dist/src/engine/lens/wave.d.ts +63 -0
  266. package/dist/src/engine/lens/wave.d.ts.map +1 -0
  267. package/dist/src/engine/lens/wave.js +95 -0
  268. package/dist/src/engine/lens/wave.js.map +1 -0
  269. package/dist/src/engine/livesessions.d.ts +21 -0
  270. package/dist/src/engine/livesessions.d.ts.map +1 -0
  271. package/dist/src/engine/livesessions.js +57 -0
  272. package/dist/src/engine/livesessions.js.map +1 -0
  273. package/dist/src/engine/livewire.d.ts +18 -0
  274. package/dist/src/engine/livewire.d.ts.map +1 -0
  275. package/dist/src/engine/livewire.js +31 -0
  276. package/dist/src/engine/livewire.js.map +1 -0
  277. package/dist/src/engine/openable.d.ts +37 -0
  278. package/dist/src/engine/openable.d.ts.map +1 -0
  279. package/dist/src/engine/openable.js +120 -0
  280. package/dist/src/engine/openable.js.map +1 -0
  281. package/dist/src/engine/pisdk.d.ts +226 -0
  282. package/dist/src/engine/pisdk.d.ts.map +1 -0
  283. package/dist/src/engine/pisdk.js +552 -0
  284. package/dist/src/engine/pisdk.js.map +1 -0
  285. package/dist/src/engine/port.d.ts +144 -0
  286. package/dist/src/engine/port.d.ts.map +1 -0
  287. package/dist/src/engine/port.js +16 -0
  288. package/dist/src/engine/port.js.map +1 -0
  289. package/dist/src/engine/prompts.d.ts +159 -0
  290. package/dist/src/engine/prompts.d.ts.map +1 -0
  291. package/dist/src/engine/prompts.js +339 -0
  292. package/dist/src/engine/prompts.js.map +1 -0
  293. package/dist/src/engine/render.d.ts +10 -0
  294. package/dist/src/engine/render.d.ts.map +1 -0
  295. package/dist/src/engine/render.js +23 -0
  296. package/dist/src/engine/render.js.map +1 -0
  297. package/dist/src/engine/reviewruntime.d.ts +13 -0
  298. package/dist/src/engine/reviewruntime.d.ts.map +1 -0
  299. package/dist/src/engine/reviewruntime.js +35 -0
  300. package/dist/src/engine/reviewruntime.js.map +1 -0
  301. package/dist/src/engine/reviewsdk.d.ts +75 -0
  302. package/dist/src/engine/reviewsdk.d.ts.map +1 -0
  303. package/dist/src/engine/reviewsdk.js +180 -0
  304. package/dist/src/engine/reviewsdk.js.map +1 -0
  305. package/dist/src/engine/round.d.ts +166 -0
  306. package/dist/src/engine/round.d.ts.map +1 -0
  307. package/dist/src/engine/round.js +543 -0
  308. package/dist/src/engine/round.js.map +1 -0
  309. package/dist/src/engine/roundagents.d.ts +17 -0
  310. package/dist/src/engine/roundagents.d.ts.map +1 -0
  311. package/dist/src/engine/roundagents.js +49 -0
  312. package/dist/src/engine/roundagents.js.map +1 -0
  313. package/dist/src/engine/roundevents.d.ts +110 -0
  314. package/dist/src/engine/roundevents.d.ts.map +1 -0
  315. package/dist/src/engine/roundevents.js +276 -0
  316. package/dist/src/engine/roundevents.js.map +1 -0
  317. package/dist/src/engine/roundsdk.d.ts +33 -0
  318. package/dist/src/engine/roundsdk.d.ts.map +1 -0
  319. package/dist/src/engine/roundsdk.js +76 -0
  320. package/dist/src/engine/roundsdk.js.map +1 -0
  321. package/dist/src/engine/sdkruntime.d.ts +23 -0
  322. package/dist/src/engine/sdkruntime.d.ts.map +1 -0
  323. package/dist/src/engine/sdkruntime.js +340 -0
  324. package/dist/src/engine/sdkruntime.js.map +1 -0
  325. package/dist/src/engine/select.d.ts +16 -0
  326. package/dist/src/engine/select.d.ts.map +1 -0
  327. package/dist/src/engine/select.js +32 -0
  328. package/dist/src/engine/select.js.map +1 -0
  329. package/dist/src/engine/sessionwrap.d.ts +4 -0
  330. package/dist/src/engine/sessionwrap.d.ts.map +1 -0
  331. package/dist/src/engine/sessionwrap.js +31 -0
  332. package/dist/src/engine/sessionwrap.js.map +1 -0
  333. package/dist/src/engine/toolfence.d.ts +90 -0
  334. package/dist/src/engine/toolfence.d.ts.map +1 -0
  335. package/dist/src/engine/toolfence.js +378 -0
  336. package/dist/src/engine/toolfence.js.map +1 -0
  337. package/dist/src/engine/tooluid.d.ts +128 -0
  338. package/dist/src/engine/tooluid.d.ts.map +1 -0
  339. package/dist/src/engine/tooluid.js +401 -0
  340. package/dist/src/engine/tooluid.js.map +1 -0
  341. package/dist/src/envstrip.d.ts +10 -0
  342. package/dist/src/envstrip.d.ts.map +1 -0
  343. package/dist/src/envstrip.js +15 -0
  344. package/dist/src/envstrip.js.map +1 -0
  345. package/dist/src/escalationprompt.d.ts +22 -0
  346. package/dist/src/escalationprompt.d.ts.map +1 -0
  347. package/dist/src/escalationprompt.js +54 -0
  348. package/dist/src/escalationprompt.js.map +1 -0
  349. package/dist/src/execfn.d.ts +29 -0
  350. package/dist/src/execfn.d.ts.map +1 -0
  351. package/dist/src/execfn.js +55 -0
  352. package/dist/src/execfn.js.map +1 -0
  353. package/dist/src/finding-chain.d.ts +40 -0
  354. package/dist/src/finding-chain.d.ts.map +1 -0
  355. package/dist/src/finding-chain.js +76 -0
  356. package/dist/src/finding-chain.js.map +1 -0
  357. package/dist/src/finding-row.d.ts +24 -0
  358. package/dist/src/finding-row.d.ts.map +1 -0
  359. package/dist/src/finding-row.js +26 -0
  360. package/dist/src/finding-row.js.map +1 -0
  361. package/dist/src/findingkey.d.ts +99 -0
  362. package/dist/src/findingkey.d.ts.map +1 -0
  363. package/dist/src/findingkey.js +210 -0
  364. package/dist/src/findingkey.js.map +1 -0
  365. package/dist/src/findingsrecord.d.ts +175 -0
  366. package/dist/src/findingsrecord.d.ts.map +1 -0
  367. package/dist/src/findingsrecord.js +410 -0
  368. package/dist/src/findingsrecord.js.map +1 -0
  369. package/dist/src/followup-mode.d.ts +4 -0
  370. package/dist/src/followup-mode.d.ts.map +1 -0
  371. package/dist/src/followup-mode.js +6 -0
  372. package/dist/src/followup-mode.js.map +1 -0
  373. package/dist/src/gate.d.ts +199 -0
  374. package/dist/src/gate.d.ts.map +1 -0
  375. package/dist/src/gate.js +315 -0
  376. package/dist/src/gate.js.map +1 -0
  377. package/dist/src/ghcred.d.ts +58 -0
  378. package/dist/src/ghcred.d.ts.map +1 -0
  379. package/dist/src/ghcred.js +139 -0
  380. package/dist/src/ghcred.js.map +1 -0
  381. package/dist/src/githubAuth.d.ts +32 -0
  382. package/dist/src/githubAuth.d.ts.map +1 -0
  383. package/dist/src/githubAuth.js +116 -0
  384. package/dist/src/githubAuth.js.map +1 -0
  385. package/dist/src/githubcore.d.ts +20 -0
  386. package/dist/src/githubcore.d.ts.map +1 -0
  387. package/dist/src/githubcore.js +20 -0
  388. package/dist/src/githubcore.js.map +1 -0
  389. package/dist/src/glob.d.ts +11 -0
  390. package/dist/src/glob.d.ts.map +1 -0
  391. package/dist/src/glob.js +69 -0
  392. package/dist/src/glob.js.map +1 -0
  393. package/dist/src/guards.d.ts +93 -0
  394. package/dist/src/guards.d.ts.map +1 -0
  395. package/dist/src/guards.js +306 -0
  396. package/dist/src/guards.js.map +1 -0
  397. package/dist/src/heartbeat.d.ts +29 -0
  398. package/dist/src/heartbeat.d.ts.map +1 -0
  399. package/dist/src/heartbeat.js +87 -0
  400. package/dist/src/heartbeat.js.map +1 -0
  401. package/dist/src/heuristics.d.ts +247 -0
  402. package/dist/src/heuristics.d.ts.map +1 -0
  403. package/dist/src/heuristics.js +927 -0
  404. package/dist/src/heuristics.js.map +1 -0
  405. package/dist/src/homes.d.ts +181 -0
  406. package/dist/src/homes.d.ts.map +1 -0
  407. package/dist/src/homes.js +242 -0
  408. package/dist/src/homes.js.map +1 -0
  409. package/dist/src/hunkheader.d.ts +11 -0
  410. package/dist/src/hunkheader.d.ts.map +1 -0
  411. package/dist/src/hunkheader.js +18 -0
  412. package/dist/src/hunkheader.js.map +1 -0
  413. package/dist/src/include.d.ts +435 -0
  414. package/dist/src/include.d.ts.map +1 -0
  415. package/dist/src/include.js +1692 -0
  416. package/dist/src/include.js.map +1 -0
  417. package/dist/src/launchvocab.d.ts +36 -0
  418. package/dist/src/launchvocab.d.ts.map +1 -0
  419. package/dist/src/launchvocab.js +59 -0
  420. package/dist/src/launchvocab.js.map +1 -0
  421. package/dist/src/ledgercarry.d.ts +24 -0
  422. package/dist/src/ledgercarry.d.ts.map +1 -0
  423. package/dist/src/ledgercarry.js +109 -0
  424. package/dist/src/ledgercarry.js.map +1 -0
  425. package/dist/src/lensids.d.ts +7 -0
  426. package/dist/src/lensids.d.ts.map +1 -0
  427. package/dist/src/lensids.js +53 -0
  428. package/dist/src/lensids.js.map +1 -0
  429. package/dist/src/lensplanning.d.ts +8 -0
  430. package/dist/src/lensplanning.d.ts.map +1 -0
  431. package/dist/src/lensplanning.js +126 -0
  432. package/dist/src/lensplanning.js.map +1 -0
  433. package/dist/src/lensresult.d.ts +94 -0
  434. package/dist/src/lensresult.d.ts.map +1 -0
  435. package/dist/src/lensresult.js +162 -0
  436. package/dist/src/lensresult.js.map +1 -0
  437. package/dist/src/lenstuning.d.ts +97 -0
  438. package/dist/src/lenstuning.d.ts.map +1 -0
  439. package/dist/src/lenstuning.js +326 -0
  440. package/dist/src/lenstuning.js.map +1 -0
  441. package/dist/src/lintconfig.d.ts +31 -0
  442. package/dist/src/lintconfig.d.ts.map +1 -0
  443. package/dist/src/lintconfig.js +543 -0
  444. package/dist/src/lintconfig.js.map +1 -0
  445. package/dist/src/live/events.d.ts +188 -0
  446. package/dist/src/live/events.d.ts.map +1 -0
  447. package/dist/src/live/events.js +136 -0
  448. package/dist/src/live/events.js.map +1 -0
  449. package/dist/src/live/writer.d.ts +54 -0
  450. package/dist/src/live/writer.d.ts.map +1 -0
  451. package/dist/src/live/writer.js +516 -0
  452. package/dist/src/live/writer.js.map +1 -0
  453. package/dist/src/localreview.d.ts +128 -0
  454. package/dist/src/localreview.d.ts.map +1 -0
  455. package/dist/src/localreview.js +426 -0
  456. package/dist/src/localreview.js.map +1 -0
  457. package/dist/src/loosenedtests.d.ts +13 -0
  458. package/dist/src/loosenedtests.d.ts.map +1 -0
  459. package/dist/src/loosenedtests.js +188 -0
  460. package/dist/src/loosenedtests.js.map +1 -0
  461. package/dist/src/memoryport.d.ts +264 -0
  462. package/dist/src/memoryport.d.ts.map +1 -0
  463. package/dist/src/memoryport.js +445 -0
  464. package/dist/src/memoryport.js.map +1 -0
  465. package/dist/src/migrations.d.ts +106 -0
  466. package/dist/src/migrations.d.ts.map +1 -0
  467. package/dist/src/migrations.js +373 -0
  468. package/dist/src/migrations.js.map +1 -0
  469. package/dist/src/oneshot.d.ts +12 -0
  470. package/dist/src/oneshot.d.ts.map +1 -0
  471. package/dist/src/oneshot.js +8 -0
  472. package/dist/src/oneshot.js.map +1 -0
  473. package/dist/src/packing.d.ts +11 -0
  474. package/dist/src/packing.d.ts.map +1 -0
  475. package/dist/src/packing.js +31 -0
  476. package/dist/src/packing.js.map +1 -0
  477. package/dist/src/passes.d.ts +16 -0
  478. package/dist/src/passes.d.ts.map +1 -0
  479. package/dist/src/passes.js +104 -0
  480. package/dist/src/passes.js.map +1 -0
  481. package/dist/src/passtasks.d.ts +68 -0
  482. package/dist/src/passtasks.d.ts.map +1 -0
  483. package/dist/src/passtasks.js +360 -0
  484. package/dist/src/passtasks.js.map +1 -0
  485. package/dist/src/pathinside.d.ts +5 -0
  486. package/dist/src/pathinside.d.ts.map +1 -0
  487. package/dist/src/pathinside.js +9 -0
  488. package/dist/src/pathinside.js.map +1 -0
  489. package/dist/src/pibuiltins.d.ts +36 -0
  490. package/dist/src/pibuiltins.d.ts.map +1 -0
  491. package/dist/src/pibuiltins.js +83 -0
  492. package/dist/src/pibuiltins.js.map +1 -0
  493. package/dist/src/plankey.d.ts +4 -0
  494. package/dist/src/plankey.d.ts.map +1 -0
  495. package/dist/src/plankey.js +10 -0
  496. package/dist/src/plankey.js.map +1 -0
  497. package/dist/src/planner.d.ts +375 -0
  498. package/dist/src/planner.d.ts.map +1 -0
  499. package/dist/src/planner.js +722 -0
  500. package/dist/src/planner.js.map +1 -0
  501. package/dist/src/plugin/args.d.ts +19 -0
  502. package/dist/src/plugin/args.d.ts.map +1 -0
  503. package/dist/src/plugin/args.js +107 -0
  504. package/dist/src/plugin/args.js.map +1 -0
  505. package/dist/src/plugin/index.d.ts +3 -0
  506. package/dist/src/plugin/index.d.ts.map +1 -0
  507. package/dist/src/plugin/index.js +14 -0
  508. package/dist/src/plugin/index.js.map +1 -0
  509. package/dist/src/plugin/login.d.ts +39 -0
  510. package/dist/src/plugin/login.d.ts.map +1 -0
  511. package/dist/src/plugin/login.js +73 -0
  512. package/dist/src/plugin/login.js.map +1 -0
  513. package/dist/src/plugin/review.d.ts +27 -0
  514. package/dist/src/plugin/review.d.ts.map +1 -0
  515. package/dist/src/plugin/review.js +298 -0
  516. package/dist/src/plugin/review.js.map +1 -0
  517. package/dist/src/plugin/runner.d.ts +6 -0
  518. package/dist/src/plugin/runner.d.ts.map +1 -0
  519. package/dist/src/plugin/runner.js +65 -0
  520. package/dist/src/plugin/runner.js.map +1 -0
  521. package/dist/src/plugin/scan.d.ts +79 -0
  522. package/dist/src/plugin/scan.d.ts.map +1 -0
  523. package/dist/src/plugin/scan.js +348 -0
  524. package/dist/src/plugin/scan.js.map +1 -0
  525. package/dist/src/plugin/session.d.ts +56 -0
  526. package/dist/src/plugin/session.d.ts.map +1 -0
  527. package/dist/src/plugin/session.js +2 -0
  528. package/dist/src/plugin/session.js.map +1 -0
  529. package/dist/src/plugin/setup.d.ts +19 -0
  530. package/dist/src/plugin/setup.d.ts.map +1 -0
  531. package/dist/src/plugin/setup.js +142 -0
  532. package/dist/src/plugin/setup.js.map +1 -0
  533. package/dist/src/plugin/versiongate.d.ts +26 -0
  534. package/dist/src/plugin/versiongate.d.ts.map +1 -0
  535. package/dist/src/plugin/versiongate.js +83 -0
  536. package/dist/src/plugin/versiongate.js.map +1 -0
  537. package/dist/src/postingkey.d.ts +8 -0
  538. package/dist/src/postingkey.d.ts.map +1 -0
  539. package/dist/src/postingkey.js +25 -0
  540. package/dist/src/postingkey.js.map +1 -0
  541. package/dist/src/postingpolicy.d.ts +108 -0
  542. package/dist/src/postingpolicy.d.ts.map +1 -0
  543. package/dist/src/postingpolicy.js +341 -0
  544. package/dist/src/postingpolicy.js.map +1 -0
  545. package/dist/src/pr-identity.d.ts +3 -0
  546. package/dist/src/pr-identity.d.ts.map +1 -0
  547. package/dist/src/pr-identity.js +9 -0
  548. package/dist/src/pr-identity.js.map +1 -0
  549. package/dist/src/prdelta.d.ts +181 -0
  550. package/dist/src/prdelta.d.ts.map +1 -0
  551. package/dist/src/prdelta.js +501 -0
  552. package/dist/src/prdelta.js.map +1 -0
  553. package/dist/src/pricing.d.ts +94 -0
  554. package/dist/src/pricing.d.ts.map +1 -0
  555. package/dist/src/pricing.js +209 -0
  556. package/dist/src/pricing.js.map +1 -0
  557. package/dist/src/priorfindings.d.ts +167 -0
  558. package/dist/src/priorfindings.d.ts.map +1 -0
  559. package/dist/src/priorfindings.js +445 -0
  560. package/dist/src/priorfindings.js.map +1 -0
  561. package/dist/src/priortasks.d.ts +31 -0
  562. package/dist/src/priortasks.d.ts.map +1 -0
  563. package/dist/src/priortasks.js +119 -0
  564. package/dist/src/priortasks.js.map +1 -0
  565. package/dist/src/profilelookup.d.ts +59 -0
  566. package/dist/src/profilelookup.d.ts.map +1 -0
  567. package/dist/src/profilelookup.js +98 -0
  568. package/dist/src/profilelookup.js.map +1 -0
  569. package/dist/src/profileoverrides.d.ts +91 -0
  570. package/dist/src/profileoverrides.d.ts.map +1 -0
  571. package/dist/src/profileoverrides.js +313 -0
  572. package/dist/src/profileoverrides.js.map +1 -0
  573. package/dist/src/profiles.d.ts +144 -0
  574. package/dist/src/profiles.d.ts.map +1 -0
  575. package/dist/src/profiles.js +604 -0
  576. package/dist/src/profiles.js.map +1 -0
  577. package/dist/src/promptdoc.d.ts +3 -0
  578. package/dist/src/promptdoc.d.ts.map +1 -0
  579. package/dist/src/promptdoc.js +18 -0
  580. package/dist/src/promptdoc.js.map +1 -0
  581. package/dist/src/prtarget.d.ts +70 -0
  582. package/dist/src/prtarget.d.ts.map +1 -0
  583. package/dist/src/prtarget.js +181 -0
  584. package/dist/src/prtarget.js.map +1 -0
  585. package/dist/src/recheckorder.d.ts +32 -0
  586. package/dist/src/recheckorder.d.ts.map +1 -0
  587. package/dist/src/recheckorder.js +5 -0
  588. package/dist/src/recheckorder.js.map +1 -0
  589. package/dist/src/reviewapi.d.ts +207 -0
  590. package/dist/src/reviewapi.d.ts.map +1 -0
  591. package/dist/src/reviewapi.js +939 -0
  592. package/dist/src/reviewapi.js.map +1 -0
  593. package/dist/src/reviewbotfindings.d.ts +33 -0
  594. package/dist/src/reviewbotfindings.d.ts.map +1 -0
  595. package/dist/src/reviewbotfindings.js +80 -0
  596. package/dist/src/reviewbotfindings.js.map +1 -0
  597. package/dist/src/reviewconfig.d.ts +741 -0
  598. package/dist/src/reviewconfig.d.ts.map +1 -0
  599. package/dist/src/reviewconfig.js +797 -0
  600. package/dist/src/reviewconfig.js.map +1 -0
  601. package/dist/src/reviewdelta.d.ts +51 -0
  602. package/dist/src/reviewdelta.d.ts.map +1 -0
  603. package/dist/src/reviewdelta.js +119 -0
  604. package/dist/src/reviewdelta.js.map +1 -0
  605. package/dist/src/reviewdest.d.ts +86 -0
  606. package/dist/src/reviewdest.d.ts.map +1 -0
  607. package/dist/src/reviewdest.js +142 -0
  608. package/dist/src/reviewdest.js.map +1 -0
  609. package/dist/src/reviewerstub.d.ts +12 -0
  610. package/dist/src/reviewerstub.d.ts.map +1 -0
  611. package/dist/src/reviewerstub.js +28 -0
  612. package/dist/src/reviewerstub.js.map +1 -0
  613. package/dist/src/reviewhost.d.ts +58 -0
  614. package/dist/src/reviewhost.d.ts.map +1 -0
  615. package/dist/src/reviewhost.js +135 -0
  616. package/dist/src/reviewhost.js.map +1 -0
  617. package/dist/src/reviewpost.d.ts +79 -0
  618. package/dist/src/reviewpost.d.ts.map +1 -0
  619. package/dist/src/reviewpost.js +233 -0
  620. package/dist/src/reviewpost.js.map +1 -0
  621. package/dist/src/reviewrender.d.ts +154 -0
  622. package/dist/src/reviewrender.d.ts.map +1 -0
  623. package/dist/src/reviewrender.js +480 -0
  624. package/dist/src/reviewrender.js.map +1 -0
  625. package/dist/src/reviewstate.d.ts +62 -0
  626. package/dist/src/reviewstate.d.ts.map +1 -0
  627. package/dist/src/reviewstate.js +167 -0
  628. package/dist/src/reviewstate.js.map +1 -0
  629. package/dist/src/reviewstore.d.ts +17 -0
  630. package/dist/src/reviewstore.d.ts.map +1 -0
  631. package/dist/src/reviewstore.js +105 -0
  632. package/dist/src/reviewstore.js.map +1 -0
  633. package/dist/src/round-progress.d.ts +120 -0
  634. package/dist/src/round-progress.d.ts.map +1 -0
  635. package/dist/src/round-progress.js +172 -0
  636. package/dist/src/round-progress.js.map +1 -0
  637. package/dist/src/round-stage-deadlines.d.ts +12 -0
  638. package/dist/src/round-stage-deadlines.d.ts.map +1 -0
  639. package/dist/src/round-stage-deadlines.js +10 -0
  640. package/dist/src/round-stage-deadlines.js.map +1 -0
  641. package/dist/src/session-command.d.ts +19 -0
  642. package/dist/src/session-command.d.ts.map +1 -0
  643. package/dist/src/session-command.js +20 -0
  644. package/dist/src/session-command.js.map +1 -0
  645. package/dist/src/settledread.d.ts +61 -0
  646. package/dist/src/settledread.d.ts.map +1 -0
  647. package/dist/src/settledread.js +135 -0
  648. package/dist/src/settledread.js.map +1 -0
  649. package/dist/src/severity.d.ts +167 -0
  650. package/dist/src/severity.d.ts.map +1 -0
  651. package/dist/src/severity.js +364 -0
  652. package/dist/src/severity.js.map +1 -0
  653. package/dist/src/severityrank.d.ts +8 -0
  654. package/dist/src/severityrank.d.ts.map +1 -0
  655. package/dist/src/severityrank.js +16 -0
  656. package/dist/src/severityrank.js.map +1 -0
  657. package/dist/src/standing-review.d.ts +45 -0
  658. package/dist/src/standing-review.d.ts.map +1 -0
  659. package/dist/src/standing-review.js +43 -0
  660. package/dist/src/standing-review.js.map +1 -0
  661. package/dist/src/storerows.d.ts +225 -0
  662. package/dist/src/storerows.d.ts.map +1 -0
  663. package/dist/src/storerows.js +7 -0
  664. package/dist/src/storerows.js.map +1 -0
  665. package/dist/src/styleguide.d.ts +25 -0
  666. package/dist/src/styleguide.d.ts.map +1 -0
  667. package/dist/src/styleguide.js +272 -0
  668. package/dist/src/styleguide.js.map +1 -0
  669. package/dist/src/sweepstatus.d.ts +42 -0
  670. package/dist/src/sweepstatus.d.ts.map +1 -0
  671. package/dist/src/sweepstatus.js +97 -0
  672. package/dist/src/sweepstatus.js.map +1 -0
  673. package/dist/src/templates.d.ts +243 -0
  674. package/dist/src/templates.d.ts.map +1 -0
  675. package/dist/src/templates.js +847 -0
  676. package/dist/src/templates.js.map +1 -0
  677. package/dist/src/types.d.ts +639 -0
  678. package/dist/src/types.d.ts.map +1 -0
  679. package/dist/src/types.js +90 -0
  680. package/dist/src/types.js.map +1 -0
  681. package/dist/src/unifieddiff.d.ts +22 -0
  682. package/dist/src/unifieddiff.d.ts.map +1 -0
  683. package/dist/src/unifieddiff.js +176 -0
  684. package/dist/src/unifieddiff.js.map +1 -0
  685. package/dist/src/yieldloop.d.ts +2 -0
  686. package/dist/src/yieldloop.d.ts.map +1 -0
  687. package/dist/src/yieldloop.js +14 -0
  688. package/dist/src/yieldloop.js.map +1 -0
  689. package/package.json +60 -4
@@ -0,0 +1,639 @@
1
+ import type { SessionCommandOwnership } from "./session-command.js";
2
+ import type { MigrationCollision } from "./migrations.js";
3
+ import type { PostingPolicy } from "./postingpolicy.js";
4
+ import type { SweepClaim } from "./sweepstatus.js";
5
+ export type RoundType = "first" | "re-review" | "staleness";
6
+ /**
7
+ * Round outcomes. `NEEDS_HUMAN` is a legacy INPUT spelling only: the review is
8
+ * never handed to a human and there is no lifecycle state for it. A verdict
9
+ * file that still says NEEDS_HUMAN lands the PR on `tracked`: the review is
10
+ * posted, no approval is implied, and the AI keeps driving. Nothing waits for
11
+ * a person.
12
+ */
13
+ export declare const VERDICTS: readonly ["APPROVE", "REQUEST_CHANGES", "NEEDS_HUMAN"];
14
+ export type Verdict = (typeof VERDICTS)[number];
15
+ /**
16
+ * Accept a verdict string, tolerating the legacy `ESCALATE` spelling.
17
+ *
18
+ * The alias stays because escalation is a real (default-off) feature, so the
19
+ * vocabulary is live rather than dead. It never parks: ESCALATE folds to
20
+ * NEEDS_HUMAN, which the state machine lands on `tracked`. Returns null for
21
+ * anything else.
22
+ */
23
+ export declare function normalizeVerdict(raw: unknown): Verdict | null;
24
+ /**
25
+ * The per-round prompt receipt token.
26
+ *
27
+ * Deliberately plain ASCII with no JSON metacharacters, so it survives the
28
+ * session JSONL's string encoding byte-for-byte and a raw substring search
29
+ * over the file is exact. Deliberately an HTML comment, so it is inert to the
30
+ * model reading the prompt.
31
+ *
32
+ * Keyed on (pr, round_no) rather than round_id: round_no is what the session
33
+ * writes into its verdict file and its ledger, so a human reading a JSONL can
34
+ * match the token to the round without opening the database.
35
+ */
36
+ export declare function roundPromptMarker(pr: number, roundNo: number): string;
37
+ /**
38
+ * The per-nudge receipt token for a post-approval recheck.
39
+ *
40
+ * A recheck needs a receipt more than a round does: a round has a deadline
41
+ * underneath it, but a `rechecks` claim has none. Without a receipt, a nudge
42
+ * dropped in delivery would leave a claim that suppresses the reconcile
43
+ * push-backstop forever, so a delta on an APPROVED PR would never be
44
+ * audited.
45
+ *
46
+ * Keyed on the recheck fingerprint, which is exactly what the claim is keyed
47
+ * on — so the sweep can ask "did the nudge I claimed actually land?".
48
+ */
49
+ export declare function recheckPromptMarker(pr: number, fingerprint: string): string;
50
+ /** The inverse of `recheckPromptMarker`: the claim a stamped recheck nudge
51
+ * carries (a nudge evicted from the held queue releases exactly that
52
+ * claim). The LAST marker wins, as `stampPrompt` appends it; null when the
53
+ * text carries none. */
54
+ export declare function parseRecheckPromptMarker(text: string): {
55
+ pr: number;
56
+ fingerprint: string;
57
+ } | null;
58
+ /** Append a receipt token to a rendered prompt. Appended, not prepended: the
59
+ * templates open with the instruction that sets the session's frame, and
60
+ * nothing should come before it. */
61
+ export declare function stampPrompt(renderedPrompt: string, marker: string): string;
62
+ /** The round-shaped wrapper around `stampPrompt`. */
63
+ export declare function stampRoundPrompt(renderedPrompt: string, pr: number, roundNo: number): string;
64
+ /** The tier ladder, ascending by capability/cost. The one place the tiers
65
+ * and their order are written down. */
66
+ export declare const PASS_TIER_ORDER: readonly ["terra-med", "sol-med", "sol-high"];
67
+ /** Pass model tiers. */
68
+ export type PassTier = (typeof PASS_TIER_ORDER)[number];
69
+ /** The higher of two tiers (equal tiers return that tier). */
70
+ export declare function higherTier(a: PassTier, b: PassTier): PassTier;
71
+ /** `tier` raised to `floor` when one is set (the profile's `min_tier`), never lowered. */
72
+ export declare function flooredToMin(tier: PassTier, floor: PassTier | undefined): PassTier;
73
+ /** Every tier at or above `floor`, ascending. */
74
+ export declare function tiersAtOrAbove(floor: PassTier): PassTier[];
75
+ /** One planned pass in a round: the lens, the tier-variant agent that runs it
76
+ * (`${lens}--${tier}`), and the higher-tier variant agent names the session
77
+ * may raise to ([] when already at the top or the tier is fixed). */
78
+ export interface PassPlanEntry {
79
+ lens: string;
80
+ agent: string;
81
+ tier: PassTier;
82
+ raisable_to: string[];
83
+ /** Why a content-triggered sub-lens is in the plan (heuristics.ts
84
+ * SUBLENS_TRIGGERS) — shown to the session and passed on as the lens's
85
+ * starting point. Absent for path-selected lenses. */
86
+ why?: string;
87
+ /** The files this row's pass covers — set on sweep rows only: one row per
88
+ * group of changed files, several rows calling the same agent. */
89
+ focus?: string[];
90
+ /** Set on the rows a round may not post without: pass-baseline (every
91
+ * split row) and the risk passes (`[models] risk_passes`). One of these
92
+ * failed and never completed is a round that posts nothing and is
93
+ * requeued (src/requiredpasses.ts). Absent on every other row, and on
94
+ * plans recorded before the field existed. */
95
+ required?: true;
96
+ }
97
+ /** One prior open finding as a lens's task file carries it. */
98
+ export interface PriorTaskEntry {
99
+ /** `<round_no>:<finding_key>` — the ref the session reports. */
100
+ ref: string;
101
+ /** `path:line`, or `(no anchor)`. */
102
+ where: string;
103
+ /** Posted tag and severity, e.g. `[blocker] P1`. */
104
+ tag: string;
105
+ /** The lens(es) that raised it. */
106
+ lens: string;
107
+ title: string;
108
+ /** The original finding's rationale and code evidence, when recorded. */
109
+ reason?: string | null;
110
+ evidence?: string | null;
111
+ /** Its file has no change since the last review (not in the delta). */
112
+ unchanged: boolean;
113
+ /** The last round's report left it open (or it was posted then). */
114
+ held_last_round: boolean;
115
+ }
116
+ /** The prior findings the daemon put into one plan row's task file. */
117
+ export interface PriorAssignment {
118
+ /** Index into `pass_plan`. */
119
+ row: number;
120
+ priors: PriorTaskEntry[];
121
+ }
122
+ export interface RoundRecoveryContext {
123
+ /** Only the exact, pre-publication stage is eligible for automatic replay. */
124
+ stage: "first_pass_start";
125
+ source_round_no: number;
126
+ source_command_id: string;
127
+ /** The head this successor order actually reviews. */
128
+ target_head_sha: string;
129
+ /** 1..N inside the ordinary immediate retry burst. */
130
+ immediate_attempt: number;
131
+ /** Zero for immediate retries; increments for each delayed circuit-breaker
132
+ * generation and is carried through any same-generation fast retries. */
133
+ retry_epoch: number;
134
+ source_incident_id?: string;
135
+ }
136
+ export interface RoundOrder {
137
+ pr: number;
138
+ title: string;
139
+ round_id: number;
140
+ round_no: number;
141
+ /** Posting identity carried through the guarded shell posting route. */
142
+ posting_key?: string;
143
+ /** The PR's review age: prior VERDICTED rounds + 1. round_no stays the
144
+ * audit-unique sequence (cancelled rounds included); review_no drives
145
+ * age-keyed behaviour (nit cap) so failed rounds don't age the PR. */
146
+ review_no?: number;
147
+ round_type: RoundType;
148
+ /** Compat: the pass_plan lenses, in order (pass_plan is authoritative). */
149
+ lenses: string[];
150
+ /** The planned passes for this round, tiered. */
151
+ pass_plan: PassPlanEntry[];
152
+ /** Lenses NOT selected for this round that the session may add. */
153
+ addable_lenses: string[];
154
+ /** The addable lenses whose add variant is NOT the templates' own
155
+ * rule (`sol-med`, or `sol-high` for a risk pass) — the ones a profile
156
+ * `min_tier` floors higher, lens → tier. Absent ⇒ the rule holds for all. */
157
+ addable_tiers?: Record<string, PassTier>;
158
+ /** Changed files past the sweep's per-round cap — named in the plan so a
159
+ * capped sweep never reads as full coverage. */
160
+ sweep_unswept?: string[];
161
+ /** Files the behaviour-delta lens's group cap left uncompared — named in
162
+ * the plan for the same reason. */
163
+ behaviour_unread?: string[];
164
+ /** The rendered third-party-sources block (packages/pi-plugin/src/depsources.ts), carried
165
+ * into every pass's task string. Absent or "" ⇒ nothing was unpacked. */
166
+ dependency_note?: string;
167
+ /** `[review] nits = "open"`: the round lifts the nit limits. Absent ⇒ strict. */
168
+ nit_policy?: "open";
169
+ /** The profile's `[posting]` policy (packages/pi-plugin/src/postingpolicy.ts). Absent ⇒
170
+ * the default posting: no note renders and nothing is enforced. */
171
+ posting_policy?: PostingPolicy;
172
+ migration_gate: boolean;
173
+ /**
174
+ * Migration-number collisions with the base branch that the daemon detected
175
+ * itself and already delivered to the PR as a COMMENT. Mechanics:
176
+ * they are not findings, they never block, and they consume no verdict.
177
+ * Absent on orders built before the pre-check existed.
178
+ */
179
+ migration_collisions?: MigrationCollision[];
180
+ /**
181
+ * True when those collisions' COMMENT did NOT reach the PR this round
182
+ * (withheld over an unreadable ledger row, refused by a posting guard, or
183
+ * the gated call failed). The gate note then tells the session to carry the
184
+ * remedy in its review body — still mechanics, never a blocker — instead of
185
+ * claiming it was posted. Absent ⇒ delivered (or no collisions).
186
+ */
187
+ migration_collisions_undelivered?: boolean;
188
+ /**
189
+ * True when this PR touches migrations and the collision pre-check could
190
+ * NOT run this round (no base reader, no base sha, or the base read threw).
191
+ * The prompt then tells the session the pre-check did not run and that IT
192
+ * must check base-branch migration-number collisions itself — which is what
193
+ * conditionally lifts the pass-data-safety withdrawal (a degraded pre-check
194
+ * is never quieter). Absent on orders built before the field existed.
195
+ */
196
+ migration_precheck_degraded?: boolean;
197
+ /**
198
+ * The PR touches first-party agent-directive files (.claude/**,
199
+ * prompts/**, AGENTS.md/CLAUDE.md and kin — `isFirstPartyDirectivePath`).
200
+ * `files` lists them; `mention` is the deterministically-picked teammate
201
+ * the one security-attention comment @-mentions (most recent human author
202
+ * of the touched directive files at the merge base, falling back to config
203
+ * `[review] escalation_mention_default`; the pick is logged). That comment
204
+ * is posted only when a malicious or source-to-sink injection finding in
205
+ * those files survives (`renderDirectiveEscalationNote`). Absent when
206
+ * the PR touches no such file — and on orders built before the field
207
+ * existed.
208
+ */
209
+ first_party_directives?: {
210
+ files: string[];
211
+ mention: string;
212
+ };
213
+ /**
214
+ * The logins this round's session may escalate to on its own
215
+ * judgement. Present ONLY when `[escalation] enabled = true` AND
216
+ * `session_judgement = true` — so on a default install (escalation off) the
217
+ * field is absent and `{{escalation_note}}` renders empty, so the round
218
+ * prompt carries no escalation text at all — differing from a build without
219
+ * the feature by whitespace only, which tests/escalation.test.ts pins.
220
+ *
221
+ * The list is advisory to the session and BINDING on the daemon: an
222
+ * escalation naming anything else is dropped in `escalation.ts`, not argued
223
+ * with. The deterministic rules do not appear here at all — the daemon
224
+ * evaluates and delivers those itself, with no model in the loop.
225
+ */
226
+ escalation_targets?: string[];
227
+ /** Daemon-authored, exact predecessor identity for a fresh parent
228
+ * recovering a proven pre-fanout stall. Absent on ordinary rounds. */
229
+ recovery?: RoundRecoveryContext;
230
+ /** The sha the worktree is ACTUALLY at — reconciled against the fetched
231
+ * `refs/pull/<n>/head` before the order is built, not the webhook snapshot. */
232
+ head_sha: string;
233
+ /** The branch this PR targets (GitHub `base.ref`), fetched fresh each round
234
+ * into `refs/remotes/origin/<base_ref>` in the base clone. */
235
+ base_ref: string;
236
+ /** Tip of `base_ref` at fetch time — what "against master" means this round. */
237
+ base_sha: string;
238
+ /** merge-base(base_sha, head_sha): where this PR left the base branch.
239
+ * Empty when git could not compute one (shallow/unrelated histories). */
240
+ merge_base: string;
241
+ worktree: string;
242
+ /** The PR body as GitHub returned it: rendered verbatim into the
243
+ * round prompt's INTENT block when `pass-intent` is planned — the lens's
244
+ * entire intent artifact. Absent on orders built before the field existed
245
+ * and on orders whose adapter read failed (no intent lens either way). */
246
+ pr_body?: string;
247
+ /** SETTLED digest: the `SETTLED:` items of the PR's mirrored ledger
248
+ * (`state/ledgers/pr-<n>.md`), bounded — packages/pi-plugin/src/ledgercarry.ts. ""
249
+ * when there is no ledger or it settles nothing. */
250
+ settled_digest: string;
251
+ /** The PR's ledger as ledger-pin last mirrored it, re-handed to the session
252
+ * every round and rendered as `{{ledger_note}}`. Absent when there is no
253
+ * readable ledger for this PR: nothing renders for it. */
254
+ ledger_carry?: LedgerCarry;
255
+ issued_at: string;
256
+ /** `[review] task_files` (packages/pi-plugin/src/passtasks.ts): the discovery rows' task files
257
+ * the daemon wrote for this round — plan row index, agent, absolute path.
258
+ * Absent ⇒ the session writes every task string itself. */
259
+ pass_task_files?: Array<{
260
+ row: number;
261
+ agent: string;
262
+ path: string;
263
+ }>;
264
+ /** `[review] render_outputs` (packages/pi-plugin/src/reviewrender.ts): the session writes the
265
+ * findings record with the posting fields and renders the review body and
266
+ * inline comments from it with `scripts/render-review.sh`. */
267
+ render_outputs?: boolean;
268
+ /** `[review] validator_shards` above 1: how many pass-validate children
269
+ * split this round's candidates (by file). Absent ⇒ one validator. */
270
+ validator_shards?: number;
271
+ /** `[review] dedup_merge` (docs/duplicate-merge.md): the round groups its
272
+ * candidates with the `cluster_findings` tool before the validator. Absent
273
+ * ⇒ no merge step renders. */
274
+ dedup_merge?: boolean;
275
+ /** `[pi] lens_runtime = engine` (packages/pi-plugin/src/launchvocab.ts): the order is written for
276
+ * an engine route's main session, which launches lenses through `lens` and
277
+ * `lens_wave`. Absent ⇒ native (`subagent`, `launch_plan`): the tmux bot's
278
+ * orders never carry it. */
279
+ lens_runtime?: "engine";
280
+ /** `[review] validate_compact`: the validator answers with a decision
281
+ * table keyed by candidate id. Absent ⇒ no compact-answer instruction
282
+ * renders. */
283
+ validate_compact?: boolean;
284
+ /** `[review] coverage_check` (packages/pi-plugin/src/coverage.ts): the changed non-test
285
+ * source files the round holds itself to — after the lenses, the ones no
286
+ * lens raised a finding on get a targeted pass-sweep row. Absent ⇒ no
287
+ * coverage check renders. */
288
+ coverage_files?: Array<{
289
+ path: string;
290
+ lines: number;
291
+ }>;
292
+ /** docs/follow-up-rounds.md: `"delta"` ⇒ a FOLLOW-UP round,
293
+ * rendered from `prompts/round-follow-up.md` — prior findings verified,
294
+ * the PR-owned change since the last reviewed head reviewed, one
295
+ * pre-approval sweep when owed. Absent or `"full"` ⇒ the round renders
296
+ * from its `round_type`'s template. */
297
+ scope?: "delta" | "full";
298
+ /** The PR-owned change since the last reviewed head (a `scope: "delta"`
299
+ * round): rendered as `{{delta_note}}`. */
300
+ delta?: RoundDelta;
301
+ /** The daemon-rendered list of prior open findings to verify
302
+ * (packages/pi-plugin/src/priorfindings.ts `renderPriorFindingsNote`), as
303
+ * `{{prior_findings_note}}`. */
304
+ prior_findings_note?: string;
305
+ /** The listed prior findings, each already assigned to the
306
+ * plan row that owns it and written into that row's task file
307
+ * (packages/pi-plugin/src/priorfindings.ts `assignPriorFindings`). Absent ⇒ the session
308
+ * assigns them through `launch_plan`'s `extra`. */
309
+ prior_assignments?: PriorAssignment[];
310
+ /** The pre-approval sweep's plan — present only when the sweep is owed
311
+ * this round. Never part of `pass_plan`/`lenses`: it runs only when the
312
+ * round would approve. Rendered as `{{sweep_note}}`. */
313
+ sweep_plan?: PassPlanEntry[];
314
+ /** The full plan's files left over the per-round sweep cap (its
315
+ * `sweep_unswept`) — present only beside `sweep_plan`, and rendered in
316
+ * `{{sweep_note}}` as round 1 renders its own. */
317
+ sweep_plan_unswept?: string[];
318
+ /** Whole-PR behaviour-delta gaps, distinct from the change review's own. */
319
+ sweep_plan_behaviour_unread?: string[];
320
+ /** `[review] context_pack = "pack-first"`: the round's context pack,
321
+ * written beside its task files (packages/pi-plugin/src/contextpack.ts). The task files then
322
+ * point at it; absent ⇒ no task file mentions a pack. */
323
+ context_pack_file?: string;
324
+ /** Task files written for the sweep's rows (their own directory and row
325
+ * index — `row` indexes `sweep_plan`). Absent ⇒ the session writes the
326
+ * sweep's task strings itself. */
327
+ sweep_task_files?: Array<{
328
+ row: number;
329
+ agent: string;
330
+ path: string;
331
+ }>;
332
+ /** `[review] follow_up_extent = "session"`: the follow-up plan's
333
+ * OPTIONAL rows — the full delta plan's per-file sweep rows and quality /
334
+ * style lenses — that the main session runs, partly runs or skips, and
335
+ * their task files (`row` indexes `optional_plan`). */
336
+ optional_plan?: PassPlanEntry[];
337
+ optional_task_files?: Array<{
338
+ row: number;
339
+ agent: string;
340
+ path: string;
341
+ }>;
342
+ /** Set when the session decides the follow-up round's extent —
343
+ * the optional rows and whether an owed pre-approval sweep runs. Absent ⇒
344
+ * the fixed rules. */
345
+ follow_up_extent?: "session";
346
+ }
347
+ /** One file of a follow-up round's delta (worktrees.ts `PrOwnedDeltaFile`,
348
+ * minus the hunk text, which rides the patch file). */
349
+ export interface RoundDeltaFile {
350
+ /** The path at the new head (the old path for a deleted file). */
351
+ path: string;
352
+ /** The path at the replayed reviewed head, when a rename/copy moved it. */
353
+ old_path?: string;
354
+ /** added | modified | removed | renamed | copied | changed. */
355
+ status: string;
356
+ /** Changed lines at the new head, `[start, count]` (count 0 = a deletion
357
+ * point after line `start`). */
358
+ ranges: Array<[number, number]>;
359
+ /** The whole file is in scope (deleted, binary, unreadable hunks, a
360
+ * conflict resolution): `ranges` is a hint at most. */
361
+ whole_file?: boolean;
362
+ /** The replay of the reviewed head conflicted here: the author resolved
363
+ * it by hand, so the file is audited against both parents. */
364
+ conflict?: boolean;
365
+ }
366
+ /** The PR-owned change since the last reviewed head: the reviewed
367
+ * head replayed onto this round's merge base (`tree`), diffed against the new
368
+ * head, so base-branch merges cancel out. */
369
+ export interface RoundDelta {
370
+ /** The last reviewed head. */
371
+ from_sha: string;
372
+ /** The synthetic tree: `from_sha` replayed onto this round's merge base. */
373
+ tree: string;
374
+ /** additions + deletions over every file. */
375
+ lines: number;
376
+ files: RoundDeltaFile[];
377
+ /** Absolute path of the whole delta's patch, written by the daemon. */
378
+ patch_file: string;
379
+ }
380
+ /** What a round order carries of the PR's ledger (packages/pi-plugin/src/ledgercarry.ts). */
381
+ export interface LedgerCarry {
382
+ /** Where the daemon read it: the ledger-pin mirror. */
383
+ source: string;
384
+ /** The block's header line as written, e.g. `LEDGER PR #42 @ abc1234`. */
385
+ header: string;
386
+ /** The block, verbatim up to the cap. */
387
+ text: string;
388
+ /** True when `text` was cut at the cap. */
389
+ truncated: boolean;
390
+ /** The full block's length in characters, before any cut. */
391
+ total_chars: number;
392
+ }
393
+ /**
394
+ * Executed-pass telemetry: one entry per pass the session actually launched
395
+ * via the subagent tool AND got a return from — real returns only, never the
396
+ * plan table. This record is what lets the daemon see the difference between
397
+ * the plan (`rounds.lenses`) and what actually ran.
398
+ */
399
+ export interface VerdictPassEntry {
400
+ /** Lens name as planned/launched, e.g. "pass-baseline", "pass-validate". */
401
+ name: string;
402
+ /** Tier/model variant the pass actually ran at (raises included),
403
+ * e.g. "sol-med". Null when the session did not report one. */
404
+ tier?: string | null;
405
+ /** Required for a pass launched through this round's add protocol; absent
406
+ * on deterministic planned passes and legacy verdicts. */
407
+ reason?: string | null;
408
+ /** Candidate findings the pass returned. */
409
+ findings?: number | null;
410
+ /** Validator outcome counts (meaningful on pass-validate): candidates that
411
+ * survived its veto, were killed, or were downgraded. */
412
+ survived?: number | null;
413
+ killed?: number | null;
414
+ downgraded?: number | null;
415
+ /** Merge-stage dispositions, reported on the pass-validate entry:
416
+ * same-defect candidates collapsed at the session's merge step (`MERGED
417
+ * <src> into <dst>` lines) and different-defect candidates folded as a
418
+ * paragraph under a surviving comment (`FOLDED <src> under <dst>` lines).
419
+ * Additive — older verdicts simply omit them (null/undefined = unknown). */
420
+ merged?: number | null;
421
+ folded?: number | null;
422
+ /** Which stage of a follow-up round launched the pass — the
423
+ * step-2 change review (`delta`) or the pre-approval sweep (`sweep`).
424
+ * Absent on every other round. */
425
+ phase?: "delta" | "sweep" | null;
426
+ }
427
+ /** verdict/pr-<n>-round-<k>.json — written by the PR session at round end:
428
+ * a merits verdict, or the guard-5 `head_moved` ending, which carries none. */
429
+ export type VerdictFile = MeritsVerdictFile | HeadMovedVerdictFile;
430
+ /**
431
+ * Guard-5 landing: a session refused at posting time because the PR
432
+ * advanced mid-round writes `outcome: "head_moved"` INSTEAD of a merits
433
+ * verdict — a cheap, explicit round ending the daemon maps to an immediate
434
+ * cancel + capped self-requeue against the fresh head (the same
435
+ * self-requeue counter; the session is healthy and is NOT killed). The file
436
+ * carries no `verdict`; `head_sha` is the stale head the round reviewed. It
437
+ * spares the round idling to its deadline and a healthy session being killed
438
+ * by the recovery path.
439
+ */
440
+ export type HeadMovedVerdictFile = Omit<MeritsVerdictFile, "verdict" | "outcome"> & {
441
+ outcome: "head_moved";
442
+ verdict?: undefined;
443
+ };
444
+ /** A round's decided verdict file. */
445
+ export interface MeritsVerdictFile {
446
+ pr: number;
447
+ round_no: number;
448
+ verdict: Verdict;
449
+ /** Only the guard-5 landing carries an outcome (`HeadMovedVerdictFile`). */
450
+ outcome?: undefined;
451
+ /** Soundness marker on NEEDS_HUMAN: "the PR looks otherwise sound, I just
452
+ * cannot decide". Recorded, never acted on. */
453
+ ai_approved?: boolean;
454
+ /**
455
+ * Set by the session when the code judgment was "no blockers" but the
456
+ * approval could not be given because CI is not green at this head.
457
+ * The review was posted as a COMMENT; the daemon records the
458
+ * withholding and re-queues the PR when CI goes green there.
459
+ */
460
+ approval_withheld?: boolean;
461
+ /** What became of a follow-up round's pre-approval sweep (`SweepClaim`:
462
+ * `ran`, `not_owed`, `not_reached` or `skipped`). Session-written; absent
463
+ * on other rounds. */
464
+ sweep?: SweepClaim;
465
+ /** Why the session skipped an owed pre-approval sweep. */
466
+ sweep_reason?: string;
467
+ /** What the session did with the follow-up plan's optional rows —
468
+ * all run, some run, none run — and why. */
469
+ extent?: "ran" | "partial" | "skipped";
470
+ extent_reason?: string;
471
+ head_sha: string;
472
+ /** Retired: a self-reported figure the models copied from the template.
473
+ * Accepted in any shape and stripped by `validateVerdict`, so no consumer
474
+ * ever sees it; spend is measured from the session transcripts. */
475
+ spend_usd?: unknown;
476
+ ledger_snapshot?: string;
477
+ /** 3-4 sentence plain-prose "what is going on" written by the session for
478
+ * the operator's TUI detail pane. Optional; capped by the consumer. */
479
+ summary?: string;
480
+ /**
481
+ * Executed-pass telemetry. Optional: sessions running older round
482
+ * prompts omit it, and the consumer treats absent/malformed as UNKNOWN —
483
+ * logged, never a verdict rejection (same tolerant-input discipline as the
484
+ * pr/round_no digit-string coercion).
485
+ */
486
+ passes?: VerdictPassEntry[];
487
+ /**
488
+ * Session-judgement escalations — entries the session asks the
489
+ * daemon to deliver BESIDE this verdict. Only read when
490
+ * `[escalation] enabled = true` AND `session_judgement = true`; every entry
491
+ * is validated daemon-side (target must be a configured one, scope must
492
+ * name something concrete) and silently dropped otherwise.
493
+ *
494
+ * Deliberately typed `unknown[]`: this is model-written input, normalized by
495
+ * `escalation.ts normalizeSessionEscalations` and never trusted to be
496
+ * well-shaped. A malformed entry costs a log line — it can never fail, delay
497
+ * or alter the verdict this file carries.
498
+ */
499
+ escalations?: unknown[];
500
+ finished_at: string;
501
+ }
502
+ /** The daemon↔session boundary (`SessionHooks` below). The daemon codes
503
+ * against it, sessions.ts implements it, and a disk-logging stub lets the
504
+ * daemon run end-to-end without pi. */
505
+ export type SessionCommandRetryResult = "retried" | "settled" | "round_finished" | "accepted_race" | "raced" | "retry_failed";
506
+ /** What one same-session REDELIVERY did
507
+ * (`SessionHooks.redeliverSessionCommand`): `redelivered` — the row is back in
508
+ * `pending` and its file rewritten, the session untouched; `started` /
509
+ * `settled` — the command started or ended meanwhile, nothing to redeliver;
510
+ * `raced` — a bridge reserved it between the read and the write (look again
511
+ * later); `not_live` — no live, bridge-ready session to redeliver into (the
512
+ * kill-and-replay recovery owns that); `redelivery_failed` — the payload is
513
+ * gone or altered, or the write failed. */
514
+ export type SessionCommandRedeliveryResult = "redelivered" | "started" | "settled" | "raced" | "not_live" | "redelivery_failed";
515
+ /** The row the supervisor found DUE, as `redeliverSessionCommand` must find it
516
+ * still: the CAS is on what the supervisor saw, never on
517
+ * a fresh read — a bridge that reserved the command after the due check moved
518
+ * `attempt` and `next_check_at`, and that fresh submission is not stale. */
519
+ export interface SessionCommandObservation {
520
+ attempt: number;
521
+ redeliveries: number;
522
+ next_check_at: string;
523
+ }
524
+ /** A lens a round may run beyond its plan, as the round row records it
525
+ * (`addable_passes`): an addable lens at its add tier, which the session runs
526
+ * with a reason — or one of a follow-up round's OPTIONAL rows (`optional`),
527
+ * which it runs at the row's tier or a rung it may raise to, and needs no
528
+ * reason for: the order offered it. */
529
+ export interface RecordedAddablePass {
530
+ lens: string;
531
+ tier: string;
532
+ optional?: true;
533
+ raisable_to?: string[];
534
+ }
535
+ /** What the round-stage supervisor's failure callback did with a stage limit.
536
+ * `posted_wait`: the round's review is already on GitHub (or
537
+ * was refused by guard 2), so the limit is NOT a failure — the session's tail
538
+ * is given its bounded grace and nothing is cancelled, killed or requeued. */
539
+ export type RoundRecoveryDisposition = "requeued" | "exhausted" | "retryable" | "failed_loud" | "settled" | "posted_wait";
540
+ /** What one stale raw-tier sweep did
541
+ * (`PiSessionManager.sweepStaleOvSessions`): the `pr-<n>` OpenViking sessions
542
+ * of closed PRs it deleted, the ones it could not, and what it left for a
543
+ * later pass. `error` = the server's session list could not be read, so
544
+ * nothing was attempted. */
545
+ export interface OvSessionSweepReport {
546
+ listed: number;
547
+ stale: number;
548
+ deleted: string[];
549
+ failed: string[];
550
+ deferred: number;
551
+ error?: string;
552
+ }
553
+ export interface SessionHooks {
554
+ /** The tools this host's sessions launch lenses with (packages/pi-plugin/src/launchvocab.ts):
555
+ * `engine` for the worker host (`lens`, `lens_wave`), absent for the tmux host
556
+ * (`subagent`, `launch_plan`). Every round order the daemon builds for the host
557
+ * is written in that host's names, so one fleet never mixes the two. */
558
+ readonly lensRuntime?: "engine";
559
+ /** Ensure the per-PR session exists (birth on first trigger) and inject the
560
+ * rendered round prompt. */
561
+ dispatchRound(order: RoundOrder, renderedPrompt: string): Promise<void>;
562
+ /** Wake the session outside a round (ping-pong, anomaly follow-ups). */
563
+ inject(pr: number, message: string): Promise<void>;
564
+ /** PR merged/closed: archive session JSONL + ledger, drop worktree, kill tmux. */
565
+ archiveAndClose(pr: number): Promise<void>;
566
+ /** The reconcile pass's sweep over the raw tier: delete the
567
+ * OpenViking sessions of closed PRs that are still on the server, bounded
568
+ * per pass. Optional — stubs and a daemon with no raw tier omit it (null =
569
+ * no raw tier managed). Never a reconcile error: memory never blocks. */
570
+ sweepStaleOvSessions?(): Promise<OvSessionSweepReport | null>;
571
+ /** Is the PR's session alive (tmux session present)? The stuck-round
572
+ * detector reads this — the existing liveness signal, not a new one.
573
+ * Optional: absent (stubs, tests) ⇒ liveness is unknown and the deadline
574
+ * checker treats an overdue round as not stuck: the overdue-anomaly path
575
+ * stands, with no self-requeue. */
576
+ sessionAlive?(pr: number): Promise<boolean>;
577
+ /** Kill the PR's tmux session so the next dispatch rebirths it fresh. Read
578
+ * by the live-but-stuck self-requeue: an overdue round whose session is
579
+ * alive but wedged is killed + requeued instead of left to the anomaly
580
+ * path. Optional: absent ⇒ a live-but-stuck round is not requeued (a fresh
581
+ * round is never injected into a wedged live session). A supervisor passes
582
+ * its exact reservation; false means ownership changed and nothing was killed.
583
+ * Calls without an expected owner retain the operator's ordinary kill. */
584
+ killSession?(pr: number, expected?: SessionCommandOwnership): Promise<void | boolean>;
585
+ /** Milliseconds-epoch mtime of the newest pi session JSONL for this PR, or
586
+ * null when unknown. Read by the lost-prompt net: a round whose inject was
587
+ * consumed while the session shows no activity since the round started
588
+ * never received its prompt. Optional: absent ⇒ no net. */
589
+ sessionActivityAt?(pr: number): Promise<number | null>;
590
+ /**
591
+ * Did this round's prompt actually reach the session?
592
+ *
593
+ * The ONE positive delivery fact in the system. `dispatchRound` stamps a
594
+ * receipt token into the wake file; pi writes the user message it accepted
595
+ * — token and all — into the session JSONL. Present ⇒ delivered. Absent ⇒
596
+ * never delivered, which an mtime inference cannot express: a prompt is
597
+ * dropped BECAUSE the agent is busy, and a busy agent always bumps the
598
+ * mtime after the round started.
599
+ *
600
+ * `null` means "cannot tell" and must never be read as loss.
601
+ * Optional: absent ⇒ no receipt check.
602
+ */
603
+ roundPromptAccepted?(pr: number, roundNo: number, startedAtMs: number): Promise<boolean | null>;
604
+ /**
605
+ * The general form of the same receipt read: did a wake carrying
606
+ * `marker` reach the session? Used by the undelivered-recheck sweep, which
607
+ * has no round row to hang `roundPromptAccepted` off — and needs it more,
608
+ * because a recheck claim has no deadline underneath it.
609
+ * `null` = cannot tell. Optional: absent ⇒ no sweep.
610
+ */
611
+ wakeReceiptPresent?(pr: number, marker: string, sinceMs: number): Promise<boolean | null>;
612
+ /**
613
+ * Re-deliver a round prompt whose receipt never appeared — the same
614
+ * round, session and conversation, with the exact dispatched bytes written
615
+ * to the inject dir again. The CHEAP recovery, deliberately distinct from
616
+ * `selfRequeue`: no round is cancelled, no session is killed, no GitHub
617
+ * state is touched, and the self-requeue budget is not spent.
618
+ *
619
+ * False when the dispatched prompt is no longer on disk — the caller then
620
+ * falls through to the expensive recovery rather than inventing an order.
621
+ * Optional: absent ⇒ the expensive path only.
622
+ */
623
+ redeliverRound?(pr: number, roundNo: number): Promise<boolean>;
624
+ /** Safely retry one durable command after a finite lease
625
+ * expires. The production manager kills and verifies the old sticky session
626
+ * first, then reuses the same id/path/bytes and rebirths the session. It may
627
+ * replay an accepted non-round wake; rounds retain the stricter pre-start
628
+ * rule because their merits lifecycle owns accepted-run recovery. */
629
+ retrySessionCommand?(commandId: string, reason: string): Promise<SessionCommandRetryResult>;
630
+ /** The CHEAP recovery for a command whose start
631
+ * lease ran out on a live, bridge-ready session — the same row handed back
632
+ * to `pending` and the same bytes rewritten at the same path, the session
633
+ * and its conversation left alone. The bridge resubmits only when pi
634
+ * provably holds nothing of it. `observed` is the row the supervisor found
635
+ * due; a row that moved since is `raced`, never requeued. Optional: absent ⇒
636
+ * the kill-and-replay recovery only. */
637
+ redeliverSessionCommand?(commandId: string, observed: SessionCommandObservation): Promise<SessionCommandRedeliveryResult>;
638
+ }
639
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}