@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,225 @@
1
+ export interface RoundRow {
2
+ id: number;
3
+ pr: number;
4
+ round_no: number;
5
+ round_type: string;
6
+ lenses: string;
7
+ verdict: string | null;
8
+ /** Legacy self-reported spend column. Never written — boot folds surviving
9
+ * values into est_usd and every consumer reads est_usd. Kept in the DDL
10
+ * because a live DB cannot drop it without a table rebuild. */
11
+ spend_usd: number | null;
12
+ duration_s: number | null;
13
+ /** Session-written 3-4 sentence round summary (verdict file `summary`). */
14
+ summary: string | null;
15
+ started_at: string;
16
+ deadline_at: string;
17
+ finished_at: string | null;
18
+ status: string;
19
+ /** Diffstat of the head this round reviewed (summed over the files API). */
20
+ additions: number | null;
21
+ deletions: number | null;
22
+ changed_files: number | null;
23
+ /** 1 for rows imported from GitHub history — never live behaviour. */
24
+ backfilled: number;
25
+ /** GitHub review databaseId — the backfill idempotence key. */
26
+ gh_review_id: number | null;
27
+ gh_commit_id: string | null;
28
+ /** Deterministic shell-post identity and confirmed outcome. Null key
29
+ * means a legacy round whose verdict cannot be receipt-gated. */
30
+ posting_key: string | null;
31
+ posted_event: string | null;
32
+ posted_at: string | null;
33
+ /** The trigger instant this round answered, copied off pr_state at start so
34
+ * time-to-first-verdict survives the `trigger_ts = null` reset at dispatch. */
35
+ trigger_ts: string | null;
36
+ tokens_in: number | null;
37
+ /** Output tokens including reasoning tokens. */
38
+ tokens_out: number | null;
39
+ tokens_cache_read: number | null;
40
+ /** Daemon-side USD estimate (config pricing); null when a model is unpriced. */
41
+ est_usd: number | null;
42
+ /** The tier `pass-validate` ran at this round — recorded so a later audit
43
+ * can tell which tier judged which finding. Null on rounds started before
44
+ * the column existed (and on backfilled history), and on a round whose
45
+ * profile switched the validator off. */
46
+ validate_tier: string | null;
47
+ /** Executed-pass telemetry: JSON array of VerdictPassEntry — the
48
+ * passes the session ACTUALLY ran, as reported in the verdict file. Distinct
49
+ * from `lenses`, which is the daemon's PLAN. Null = unknown (round predates
50
+ * the field, or the session ran an older prompt and reported nothing). */
51
+ executed_passes: string | null;
52
+ /** Exact dispatch-time policy for classifying reasoned added passes. */
53
+ pass_plan: string | null;
54
+ addable_passes: string | null;
55
+ /** When the lost-prompt net first observed this round
56
+ * fully silent (prompt consumed, session alive, no JSONL activity). The net
57
+ * fires only on the SECOND consecutive silent sweep; any non-silent
58
+ * observation clears the mark. Same persistence idiom as the
59
+ * reviewed_heads/approval_withheld marks — a mark the daemon writes so a
60
+ * restart cannot forget it — but round-scoped, so it lives on the round
61
+ * row rather than in a per-PR table. Null = never seen silent. */
62
+ silent_since: string | null;
63
+ /** The receipt token stamped into this round's wake file, echoed
64
+ * back by pi into the session JSONL when — and only when — the prompt is
65
+ * ACCEPTED. Null means the round was dispatched by a build that stamped no
66
+ * marker, so its delivery is UNKNOWABLE rather than unconfirmed: readers
67
+ * must fall back to the older inference instead of concluding "lost". */
68
+ prompt_marker: string | null;
69
+ /** How many times this round's prompt has been re-delivered. Cheap
70
+ * recovery (rewrite the wake file, same round and session), bounded on its
71
+ * own rather than out of the `max_self_requeues` budget. */
72
+ redeliveries: number;
73
+ /** The per-round comment count: inline comments this round posted,
74
+ * as the session reports it in its findings record. Null = unknown (no
75
+ * record, or a record that omitted the count) — never confused with 0. */
76
+ comments_posted: number | null;
77
+ /** Why this round was cancelled — null on every round that was not
78
+ * cancelled, and on older cancellations the boot migration could not
79
+ * classify from their prose summary. The prose stays in `summary`; this
80
+ * is the machine-readable half every aggregate groups by. */
81
+ cancel_cause: string | null;
82
+ /** Bracket around dispatch-time migration-precheck posting. Existing
83
+ * rounds migrate as unknown (never auto-replayed); new rounds start none and
84
+ * move through ambiguous before the gated call resolves. */
85
+ preflight_posting_state: "unknown" | "none" | "ambiguous" | "executed" | "dryrun" | "refused";
86
+ /** First exact planned discovery execution observed by the daemon. */
87
+ fanout_started_at: string | null;
88
+ /** The end of this round's usage window while
89
+ * its round-end measurement (usage, the exec-policy audit, the integrity
90
+ * re-check) is OWED — stamped synchronously when the round end fixes the
91
+ * window, cleared when the measurement has finished, whatever it found.
92
+ * A non-null value at boot is a measurement a restart cut short; the
93
+ * verdict watcher resumes it. Null = nothing owed (and every round before
94
+ * the column). */
95
+ usage_owed_to: string | null;
96
+ /** The head this round was dispatched to review (the prepared tree's). */
97
+ head_sha: string | null;
98
+ /** The merge base the round's prepared tree had: the next
99
+ * follow-up round checks it is still under its own merge base, so a
100
+ * force-pushed base is a full round, never base drift read as the PR's. */
101
+ merge_base: string | null;
102
+ /** `full` | `delta` — what the round reviewed. NULL on a first round and on
103
+ * every round before the column (a legacy non-first round was a full
104
+ * re-review). */
105
+ scope: string | null;
106
+ /** A delta round's baseline: the last reviewed head it was diffed from. */
107
+ delta_base_sha: string | null;
108
+ /** A delta round's PR-owned change: lines (additions + deletions), files. */
109
+ delta_lines: number | null;
110
+ delta_files: number | null;
111
+ /** 1 when the round's order carried the pre-approval sweep, else 0; NULL
112
+ * on rounds that are not follow-ups. */
113
+ sweep_owed: number | null;
114
+ /** The sweep's plan (JSON PassPlanEntry[]), when owed. */
115
+ sweep_plan: string | null;
116
+ /** ran | not_owed | not_reached | unknown — what became of the sweep. */
117
+ sweep_status: string | null;
118
+ }
119
+ /** One parsed row of the durable reasoning record. */
120
+ export interface RoundFindingRow {
121
+ id: number;
122
+ pr: number;
123
+ round_id: number | null;
124
+ round_no: number;
125
+ head_sha: string;
126
+ finding_key: string;
127
+ path: string | null;
128
+ line: number | null;
129
+ lens: string;
130
+ tier: string | null;
131
+ /** 1 when the lens is not in the round's plan — the add protocol ran it. */
132
+ unplanned: number;
133
+ severity: string | null;
134
+ confidence: number | null;
135
+ reachability: string | null;
136
+ kind: string | null;
137
+ disposition: string;
138
+ axis: string | null;
139
+ word: string | null;
140
+ reason: string | null;
141
+ evidence: string | null;
142
+ posted_as: string | null;
143
+ raised_in_round: number | null;
144
+ thread_id: number | null;
145
+ recorded_at: string;
146
+ /** The posted comment's title as the record wrote it; null
147
+ * when the record carries none. */
148
+ title: string | null;
149
+ /** Canonical lens ids, a JSON array (`packages/pi-plugin/src/lensids.ts`). Null
150
+ * only on a row the boot migration has not reached yet. */
151
+ lens_ids: string | null;
152
+ }
153
+ /** One prior finding a follow-up round was handed, or reported on
154
+ * (`prior_finding_checks`). */
155
+ export interface PriorFindingCheckRow {
156
+ pr: number;
157
+ checked_round: number;
158
+ head_sha: string;
159
+ round_no: number;
160
+ finding_key: string;
161
+ blocking: number;
162
+ /** fixed | open | conceded | settled | obsolete | unverifiable; null =
163
+ * listed and not (yet) reported. */
164
+ status: string | null;
165
+ evidence: string | null;
166
+ listed_at: string | null;
167
+ reported_at: string | null;
168
+ }
169
+ /**
170
+ * What the store needs to write one recorded finding. Structural on purpose —
171
+ * `FindingsRecordEntry` (packages/pi-plugin/src/findingsrecord.ts) satisfies it without state.ts
172
+ * having to know anything about files, parsing or the record's schema.
173
+ */
174
+ export interface RoundFindingInput {
175
+ key: string;
176
+ path?: string | null;
177
+ line?: number | null;
178
+ lens?: string | null;
179
+ tier?: string | null;
180
+ severity?: string | null;
181
+ confidence?: number | null;
182
+ reachability?: string | null;
183
+ kind?: string | null;
184
+ disposition?: string | null;
185
+ axis?: string | null;
186
+ word?: string | null;
187
+ reason?: string | null;
188
+ evidence?: string | null;
189
+ posted_as?: string | null;
190
+ raised_in_round?: number | null;
191
+ thread_id?: number | null;
192
+ title?: string | null;
193
+ }
194
+ /**
195
+ * The reviewed-head mark: the last head this system actually reviewed on a
196
+ * PR, what it decided there, and the newest author reply seen since. One row
197
+ * per PR — the mark is a *position*, not a history; the rounds table keeps the
198
+ * history.
199
+ *
200
+ * Two readers: the no-new-evidence guard (posting time and dispatch time) and
201
+ * the post-approval delta recheck, which needs exactly `head_sha` to diff the
202
+ * current head against. Lifecycle consumers read it only through
203
+ * `standing-review.ts`.
204
+ */
205
+ export interface ReviewedHeadRow {
206
+ pr: number;
207
+ head_sha: string;
208
+ /** When the mark was last (re)stamped — the instant author replies race. */
209
+ reviewed_at: string;
210
+ /** The verdict applied at this head, when one was ("APPROVE" | …). */
211
+ verdict: string | null;
212
+ /** The review event actually POSTed at this head, when one was. */
213
+ posted_event: string | null;
214
+ round_no: number | null;
215
+ /** Newest author reply observed after the mark was stamped (new evidence). */
216
+ last_author_reply_at: string | null;
217
+ }
218
+ /**
219
+ * What the event log says about one migration-collision COMMENT (the dedupe's
220
+ * delivery read). `unknown` is an unreadable ledger row; `pending` is a
221
+ * readable intent with unconfirmed delivery. Neither permits another POST.
222
+ * A dry-run receipt is recorded intent, never a delivered remedy.
223
+ */
224
+ export type CollisionCommentRecord = "commented" | "dryrun" | "pending" | "not_commented" | "unknown";
225
+ //# sourceMappingURL=storerows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storerows.d.ts","sourceRoot":"","sources":["../../src/storerows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ // The state records the review core reads and writes: rounds, the findings
2
+ // a round recorded, the prior-finding checks, the reviewed-head mark and the
3
+ // migration-collision delivery read. Plain shapes, so the core can hand them
4
+ // around without the SQLite store; src/state.ts is their one writer and
5
+ // re-exports them.
6
+ export {};
7
+ //# sourceMappingURL=storerows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storerows.js","sourceRoot":"","sources":["../../src/storerows.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,wEAAwE;AACxE,mBAAmB"}
@@ -0,0 +1,25 @@
1
+ export declare const GUIDE_MIN_LINES = 15;
2
+ export declare const SECTION_MIN_LINES = 8;
3
+ /** The style section of a CONTRIBUTING file as 1-based [from, to] lines, when
4
+ * it is substantial enough to be a guide. Markdown headings only. */
5
+ export declare function styleSection(text: string): [number, number] | null;
6
+ /**
7
+ * The same rule over a FILE LISTING rather than a directory tree: the
8
+ * setup engine reads the reviewed repo through a port, so it hands over the
9
+ * repo-relative paths it has and a reader that answers null for anything it
10
+ * cannot or will not read (a directory, a file over the size cap). The
11
+ * candidates are exactly the ones `findStyleGuide` lists — the root, `docs/`,
12
+ * `doc/`, `.github/`, and one level down under `docs/`/`doc/` by name only —
13
+ * plus the agent-directive files — so both spellings return the same
14
+ * references for the same tree. `identity` says which file a path really is
15
+ * (findStyleGuide passes realpath); without one a directive file is known by
16
+ * its text, so a link and its target — which read the same — count once.
17
+ */
18
+ export declare function styleGuideRefsIn(files: readonly string[], read: (rel: string) => string | null, identity?: (rel: string) => string | null): string[];
19
+ /**
20
+ * The repo's written style guide(s) under `root`, as repo-relative
21
+ * references — `path` for a whole guide file, `path:from-to` for a style
22
+ * section — or [] when there is none worth a lens.
23
+ */
24
+ export declare function findStyleGuide(root: string): string[];
25
+ //# sourceMappingURL=styleguide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleguide.d.ts","sourceRoot":"","sources":["../../src/styleguide.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAqEnC;qEACqE;AACrE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAElE;AAiFD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EACpC,QAAQ,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAGnC,GACA,MAAM,EAAE,CAuBV;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAuCrD"}
@@ -0,0 +1,272 @@
1
+ // Does this repo write its code style down? (`[review] style_lens`)
2
+ //
3
+ // Style is the one review concern with no universal answer: every repo has
4
+ // its own, and a reviewer's taste is not it. So the style lens runs only
5
+ // where the repo has a WELL-DEFINED written guide, and it judges only against
6
+ // that guide. "Well defined" is structural and cheap to check here, before a
7
+ // round is planned:
8
+ //
9
+ // - a dedicated guide file — STYLEGUIDE / STYLE_GUIDE / STYLE / CODE_STYLE /
10
+ // CODING_STYLE / CODING_STANDARDS / CODING_GUIDELINES / CONVENTIONS, as
11
+ // .md/.rst/.txt/.adoc, at the root or under docs/, doc/ or .github/ (or a
12
+ // docs file whose NAME says style guide / coding standards) — with at
13
+ // least GUIDE_MIN_LINES lines of content;
14
+ // - or a style section in CONTRIBUTING (a heading such as "Code style",
15
+ // "Coding standards", "Style guide") with at least SECTION_MIN_LINES
16
+ // lines of content under it;
17
+ // - or style rules the repo wrote for its agents: a style section
18
+ // — the same headings, plus a bare "Conventions", "Style", "Formatting"
19
+ // or "Naming" — of at least SECTION_MIN_LINES lines in an agent-directive
20
+ // file (AGENTS.md / CLAUDE.md at the root, .github/copilot-instructions.md,
21
+ // .github/instructions/*.md), or a whole directive file whose NAME says
22
+ // style or conventions (`.github/instructions/code-style.instructions.md`)
23
+ // with at least SECTION_MIN_LINES lines. What a team already told its
24
+ // agents about style is a written guide; a separate file is not required.
25
+ // A directive file that is a link to another one (CLAUDE.md → AGENTS.md)
26
+ // is read once.
27
+ //
28
+ // A guide the repo writes WINS over one a profile points the lens at
29
+ // (`[lenses.pass-style] guide`, packages/pi-plugin/src/lenstuning.ts): that one is used only
30
+ // when this finds nothing (src/dispatch.ts buildPassPlan).
31
+ //
32
+ // Linter and formatter configs are NOT a style guide here: what a tool
33
+ // enforces is CI's job, and the review reads CI, it never re-runs it.
34
+ // Total: an unreadable tree is "no guide", never an error.
35
+ import { existsSync, readdirSync, readFileSync, realpathSync, statSync } from "node:fs";
36
+ import { join, relative } from "node:path";
37
+ import { resolveInsideCheckout } from "./lintconfig.js";
38
+ export const GUIDE_MIN_LINES = 15;
39
+ export const SECTION_MIN_LINES = 8;
40
+ const MAX_GUIDE_BYTES = 512 * 1024;
41
+ const GUIDE_NAME_RE = /^(style[-_ ]?guide|style|code[-_ ]?style|coding[-_ ]?(style|standards|guidelines|conventions)|conventions)(\.(md|markdown|rst|txt|adoc))$/i;
42
+ const DOCS_NAME_RE = /(style[-_ ]?guide|code[-_ ]?style|coding[-_ ]?(style|standards|guidelines|conventions))[^/]*\.(md|markdown|rst|txt|adoc)$/i;
43
+ const CONTRIBUTING_RE = /^contributing\.(md|markdown|rst|txt|adoc)$/i;
44
+ const STYLE_HEADING_RE = /^(#{1,6}\s+|=+\s*$|-+\s*$)?.*\b(code|coding)\s+(style|standards|conventions|guidelines)\b|\bstyle\s*guide\b/i;
45
+ const HEADING_RE = /^#{1,6}\s+\S/;
46
+ /** A directive file's style heading: the guide headings above, or a bare
47
+ * "Conventions" / "Style" / "Formatting" / "Naming" — agent files name the
48
+ * section for the agent, not as a guide — or a section of written RULES
49
+ * ("Rules", "Compliance"): what a team tells
50
+ * its agents the code must follow is its written guide whatever the heading
51
+ * says (repos commonly keep naming, header and formatting rules under a
52
+ * heading such as "# Compliance Rules").
53
+ * pass-style still applies only the style rules in it and still skips what a
54
+ * configured tool enforces; the section only decides that the lens runs. */
55
+ const DIRECTIVE_HEADING_RE = /\b(style|conventions|formatting|naming|rules|compliance)\b/i;
56
+ const ROOT_DIRECTIVE_RE = /^(agents|claude)\.md$/i;
57
+ const DIRECTIVE_NAME_RE = /(style|conventions)[^/]*\.(md|markdown)$/i;
58
+ function contentLines(text) {
59
+ return text.split("\n").filter((l) => l.trim() && !/^[#=\-*_`\s]+$/.test(l.trim())).length;
60
+ }
61
+ function read(path) {
62
+ try {
63
+ const st = statSync(path);
64
+ if (!st.isFile() || st.size > MAX_GUIDE_BYTES)
65
+ return null;
66
+ return readFileSync(path, "utf8");
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
72
+ function list(dir) {
73
+ try {
74
+ return readdirSync(dir);
75
+ }
76
+ catch {
77
+ return [];
78
+ }
79
+ }
80
+ /** Which lines sit inside a fenced code block (the fences included): a
81
+ * `# comment` in a shell example is code, not a heading. A fence opens on
82
+ * three or more backticks or tildes (indented at most three spaces) and
83
+ * closes on a run of the same character at least as long; one left open runs
84
+ * to the end of the file, as Markdown renders it. */
85
+ function fencedLines(lines) {
86
+ const out = [];
87
+ let open = null;
88
+ for (const line of lines) {
89
+ const m = /^ {0,3}(`{3,}|~{3,})(.*)$/.exec(line);
90
+ if (open === null) {
91
+ if (m && !(m[1][0] === "`" && m[2].includes("`")))
92
+ open = { char: m[1][0], len: m[1].length };
93
+ out.push(open !== null);
94
+ }
95
+ else {
96
+ out.push(true);
97
+ if (m && m[1][0] === open.char && m[1].length >= open.len && m[2].trim() === "")
98
+ open = null;
99
+ }
100
+ }
101
+ return out;
102
+ }
103
+ /** The style section of a CONTRIBUTING file as 1-based [from, to] lines, when
104
+ * it is substantial enough to be a guide. Markdown headings only. */
105
+ export function styleSection(text) {
106
+ return styleSections(text, (l) => STYLE_HEADING_RE.test(l))[0] ?? null;
107
+ }
108
+ /** Every substantial style section of `text` whose heading passes `isStyle`,
109
+ * as 1-based [from, to] lines, in file order; a heading inside a section
110
+ * already taken is part of it, not a section of its own. */
111
+ function styleSections(text, isStyle) {
112
+ const lines = text.split("\n");
113
+ const fenced = fencedLines(lines);
114
+ const out = [];
115
+ for (let i = 0; i < lines.length; i++) {
116
+ const l = lines[i];
117
+ if (fenced[i] || !HEADING_RE.test(l) || !isStyle(l))
118
+ continue;
119
+ const level = /^#+/.exec(l)[0].length;
120
+ let end = lines.length;
121
+ for (let j = i + 1; j < lines.length; j++) {
122
+ const m = fenced[j] ? null : /^(#{1,6})\s+\S/.exec(lines[j]);
123
+ if (m && m[1].length <= level) {
124
+ end = j;
125
+ break;
126
+ }
127
+ }
128
+ // The span ends at its last non-blank line (a file's trailing newline too).
129
+ while (end > i + 1 && lines[end - 1].trim() === "")
130
+ end--;
131
+ if (contentLines(lines.slice(i + 1, end).join("\n")) >= SECTION_MIN_LINES) {
132
+ out.push([i + 1, end]);
133
+ i = end - 1;
134
+ }
135
+ }
136
+ return out;
137
+ }
138
+ const isDirectiveHeading = (l) => STYLE_HEADING_RE.test(l) || DIRECTIVE_HEADING_RE.test(l);
139
+ /** Style rules in the repo's agent-directive files, as references:
140
+ * `path:from-to` per style section, `path` for a directive file whose name
141
+ * says style. Over a listing: `identity` names the file a path really is, so a
142
+ * directive file that links to another is read once; null = skip the path. */
143
+ function directiveStyleRules(listing, read, identity) {
144
+ const files = listing.filter((rel) => {
145
+ const parts = rel.split("/");
146
+ if (parts.length === 1)
147
+ return ROOT_DIRECTIVE_RE.test(parts[0]);
148
+ if (parts.length === 2 && parts[0] === ".github")
149
+ return /^copilot-instructions\.md$/i.test(parts[1]);
150
+ return (parts.length === 3 &&
151
+ parts[0] === ".github" &&
152
+ parts[1] === "instructions" &&
153
+ /\.(md|markdown)$/i.test(parts[2]));
154
+ });
155
+ const named = (rel) => rel.startsWith(".github/instructions/") && DIRECTIVE_NAME_RE.test(rel);
156
+ // A file named for style is read first, so an alias of it that sorts
157
+ // earlier (base.md → code-style.instructions.md) cannot claim the file's
158
+ // identity and read it by headings alone.
159
+ const ordered = [...new Set(files)].sort((a, b) => Number(named(b)) - Number(named(a)) || (a < b ? -1 : a > b ? 1 : 0));
160
+ const out = [];
161
+ const seen = new Set();
162
+ for (const rel of ordered) {
163
+ const real = identity(rel);
164
+ if (real === null || seen.has(real))
165
+ continue;
166
+ seen.add(real);
167
+ const text = read(rel);
168
+ if (text === null)
169
+ continue;
170
+ if (named(rel)) {
171
+ if (contentLines(text) >= SECTION_MIN_LINES)
172
+ out.push(rel);
173
+ continue;
174
+ }
175
+ for (const [from, to] of styleSections(text, isDirectiveHeading))
176
+ out.push(`${rel}:${from}-${to}`);
177
+ }
178
+ return out;
179
+ }
180
+ /**
181
+ * The same rule over a FILE LISTING rather than a directory tree: the
182
+ * setup engine reads the reviewed repo through a port, so it hands over the
183
+ * repo-relative paths it has and a reader that answers null for anything it
184
+ * cannot or will not read (a directory, a file over the size cap). The
185
+ * candidates are exactly the ones `findStyleGuide` lists — the root, `docs/`,
186
+ * `doc/`, `.github/`, and one level down under `docs/`/`doc/` by name only —
187
+ * plus the agent-directive files — so both spellings return the same
188
+ * references for the same tree. `identity` says which file a path really is
189
+ * (findStyleGuide passes realpath); without one a directive file is known by
190
+ * its text, so a link and its target — which read the same — count once.
191
+ */
192
+ export function styleGuideRefsIn(files, read, identity = (rel) => {
193
+ const text = read(rel);
194
+ return text === null ? null : `text:${text}`;
195
+ }) {
196
+ const out = [];
197
+ for (const rel of files) {
198
+ const parts = rel.split("/");
199
+ const name = parts[parts.length - 1];
200
+ const dir = parts.slice(0, -1).join("/");
201
+ if (dir === "" || dir === "docs" || dir === "doc" || dir === ".github") {
202
+ if (GUIDE_NAME_RE.test(name) || (dir !== "" && DOCS_NAME_RE.test(name))) {
203
+ const text = read(rel);
204
+ if (text !== null && contentLines(text) >= GUIDE_MIN_LINES)
205
+ out.push(rel);
206
+ }
207
+ else if (CONTRIBUTING_RE.test(name)) {
208
+ const text = read(rel);
209
+ const sec = text === null ? null : styleSection(text);
210
+ if (sec)
211
+ out.push(`${rel}:${sec[0]}-${sec[1]}`);
212
+ }
213
+ }
214
+ else if (parts.length === 3 && (parts[0] === "docs" || parts[0] === "doc")) {
215
+ if (!DOCS_NAME_RE.test(name))
216
+ continue;
217
+ const text = read(rel);
218
+ if (text !== null && contentLines(text) >= GUIDE_MIN_LINES)
219
+ out.push(rel);
220
+ }
221
+ }
222
+ out.push(...directiveStyleRules(files, read, identity));
223
+ return [...new Set(out)].sort();
224
+ }
225
+ /**
226
+ * The repo's written style guide(s) under `root`, as repo-relative
227
+ * references — `path` for a whole guide file, `path:from-to` for a style
228
+ * section — or [] when there is none worth a lens.
229
+ */
230
+ export function findStyleGuide(root) {
231
+ if (!existsSync(root))
232
+ return [];
233
+ // Every path read here must RESOLVE inside the checkout: the tree is the
234
+ // PR's, and a guide symlinked (or reached through a symlinked docs/) to a
235
+ // file outside it — a secret the container can read — would be named in
236
+ // the plan and read in full by pass-style. A link that stays inside is fine.
237
+ let realRoot;
238
+ try {
239
+ realRoot = realpathSync(root);
240
+ }
241
+ catch {
242
+ return [];
243
+ }
244
+ const inside = (rel) => resolveInsideCheckout(root, realRoot, rel);
245
+ const listing = [];
246
+ for (const d of ["", "docs", "doc", ".github", ".github/instructions"]) {
247
+ for (const name of list(join(root, d)))
248
+ listing.push(relative(root, join(root, d, name)));
249
+ }
250
+ // docs/<sub>/ one level down, by name only (a docs site's style page).
251
+ for (const d of ["docs", "doc"]) {
252
+ for (const sub of list(join(root, d))) {
253
+ const subdir = join(root, d, sub);
254
+ let isDir = false;
255
+ try {
256
+ isDir = statSync(subdir).isDirectory();
257
+ }
258
+ catch {
259
+ continue;
260
+ }
261
+ if (!isDir)
262
+ continue;
263
+ for (const name of list(subdir))
264
+ listing.push(relative(root, join(subdir, name)));
265
+ }
266
+ }
267
+ return styleGuideRefsIn(listing, (rel) => {
268
+ const real = inside(rel);
269
+ return real === null ? null : read(real);
270
+ }, inside);
271
+ }
272
+ //# sourceMappingURL=styleguide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleguide.js","sourceRoot":"","sources":["../../src/styleguide.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /** What a session may CLAIM became of its owed sweep (the verdict's
2
+ * `sweep`): `ran`, `not_owed` (the order carried none), `not_reached` (the
3
+ * round decided REQUEST_CHANGES first) or `skipped` (decided not needed). */
4
+ export declare const SWEEP_CLAIMS: readonly ["ran", "not_owed", "not_reached", "skipped"];
5
+ export type SweepClaim = (typeof SWEEP_CLAIMS)[number];
6
+ export declare function isSweepClaim(word: unknown): word is SweepClaim;
7
+ /** A pass entry's `phase`: `delta` | `sweep`, case and separators
8
+ * forgiven; anything else is unusable (null). */
9
+ export declare function normalizePassPhase(raw: unknown): "delta" | "sweep" | null;
10
+ /** The verdict's top-level `sweep`: `ran` | `not_owed` | `not_reached` |
11
+ * `skipped`, case forgiven and `-`/space read as `_`; anything else is
12
+ * unusable (null). */
13
+ export declare function normalizeSweepClaim(raw: unknown): SweepClaim | null;
14
+ /** What became of a follow-up round's pre-approval sweep
15
+ * (`rounds.sweep_status`). */
16
+ export type SweepStatus = SweepClaim | "unknown";
17
+ /** An APPROVE that left its owed sweep un-run: neither ran nor decided not
18
+ * needed (`followup_sweep_skipped`). */
19
+ export declare function sweepSkippedOnApprove(verdict: string | null | undefined, owed: boolean, status: SweepStatus): boolean;
20
+ /**
21
+ * The sweep status a follow-up round's verdict earns. `ran` only
22
+ * when the session CLAIMED it and its executed telemetry carries sweep-phase
23
+ * passes; every contradiction or gap is `unknown` with a note — never `ran`,
24
+ * because a run sweep is a full look and an unknown one must stay owed. Pure.
25
+ *
26
+ * `sweepPasses`: the count of executed `phase: "sweep"` entries, null when the
27
+ * verdict carried no usable pass telemetry. `verdict`: the round's decided
28
+ * verdict — `not_reached` means "decided REQUEST_CHANGES first", so an
29
+ * APPROVE claiming it (or `not_owed` beside an owed sweep) is a
30
+ * contradiction, recorded `unknown`.
31
+ */
32
+ export declare function sweepStatusOf(args: {
33
+ owed: boolean;
34
+ claim: SweepClaim | null;
35
+ sweepPasses: number | null;
36
+ receiptSettled: boolean;
37
+ verdict?: string | null;
38
+ }): {
39
+ status: SweepStatus;
40
+ note?: string;
41
+ };
42
+ //# sourceMappingURL=sweepstatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sweepstatus.d.ts","sourceRoot":"","sources":["../../src/sweepstatus.ts"],"names":[],"mappings":"AAKA;;6EAE6E;AAC7E,eAAO,MAAM,YAAY,wDAAyD,CAAC;AACnF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,UAAU,CAE9D;AAED;iDACiD;AACjD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAOzE;AAED;;sBAEsB;AACtB,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAOnE;AAED;8BAC8B;AAC9B,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAEjD;wCACwC;AACxC,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,WAAW,GAClB,OAAO,CAET;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAyCzC"}