@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,18 @@
1
+ // Maintainer-only text inside prompt files that must never reach a model.
2
+ //
3
+ // Two shapes, both kept in the SOURCE because people and tests read them:
4
+ // - the leading `> Sandbox file: …` doc header (which file this is, who
5
+ // loads it, which placeholders it takes) — rendering it sent the
6
+ // placeholder list a second time, the whole lens plan included;
7
+ // - the `<!-- RATIFIED … -->` / `<!-- /RATIFIED … -->` fence marker lines,
8
+ // which tests/invariant-fences.test.ts pins in the source.
9
+ // Every load path that hands a prompt file to a model strips them here.
10
+ const FENCE_MARKER_LINE = /^[ \t]*<!--[ \t]*\/?RATIFIED\b[^\n]*?-->[ \t]*(?:\r?\n|$)/gm;
11
+ // The header blockquote, the blank lines after it, and an optional `---` rule
12
+ // (with its trailing blank lines) that separated it from the body.
13
+ const DOC_HEADER = /(^|\n)> Sandbox file:[^\n]*\n(?:>[^\n]*\n)*(?:[ \t]*\n)*(?:---[ \t]*\n(?:[ \t]*\n)*)?/;
14
+ /** The prompt text a model should read: no doc header, no fence markers. */
15
+ export function stripModelDocs(text) {
16
+ return text.replace(DOC_HEADER, "$1").replace(FENCE_MARKER_LINE, "");
17
+ }
18
+ //# sourceMappingURL=promptdoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptdoc.js","sourceRoot":"","sources":["../../src/promptdoc.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,qEAAqE;AACrE,oEAAoE;AACpE,6EAA6E;AAC7E,+DAA+D;AAC/D,wEAAwE;AAExE,MAAM,iBAAiB,GAAG,6DAA6D,CAAC;AACxF,8EAA8E;AAC9E,mEAAmE;AACnE,MAAM,UAAU,GACd,uFAAuF,CAAC;AAE1F,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { type ExecFn } from "./execfn.js";
2
+ import { type CredentialResolution, type CredentialSource } from "./ghcred.js";
3
+ import { originRepo, type BranchTarget } from "./localreview.js";
4
+ export type PrTargetParse = {
5
+ ok: true;
6
+ repo: string;
7
+ number: number;
8
+ } | {
9
+ ok: false;
10
+ error: string;
11
+ };
12
+ /** A PR argument: `12`, `#12` or a github.com pull URL. A PR on a repo other
13
+ * than the current directory's is refused unless `--repo` names it. */
14
+ export declare function parsePrTarget(arg: string, o: {
15
+ cwdRepo: string | null;
16
+ repo?: string;
17
+ }): PrTargetParse;
18
+ export { originRepo };
19
+ export type { CredentialSource };
20
+ export interface PrFetchRequest {
21
+ repo: string;
22
+ number: number;
23
+ /** An empty or absent directory the PR is fetched into. */
24
+ scratchDir: string;
25
+ token: string;
26
+ fetchFn?: typeof fetch;
27
+ /** Where git fetches from: `<gitBase>/<owner>/<name>.git`. */
28
+ gitBase?: string;
29
+ apiBase?: string;
30
+ /** Stops the fetch: the PR read and the git commands in flight end, and the
31
+ * result is a refusal. */
32
+ signal?: AbortSignal;
33
+ /** Runs git (a test seam). Default: a child process, never blocking the
34
+ * event loop, so the caller's stop is heard while the fetch runs. */
35
+ exec?: ExecFn;
36
+ }
37
+ export type PrFetchResult = {
38
+ ok: true;
39
+ /** The scratch repository: HEAD is the PR's head, `refs/qcr/base` its base. */
40
+ gitDir: string;
41
+ target: BranchTarget;
42
+ title: string;
43
+ body: string | null;
44
+ number: number;
45
+ } | {
46
+ ok: false;
47
+ error: string;
48
+ };
49
+ export declare const SCRATCH_BASE_REF = "refs/qcr/base";
50
+ /** Read the PR (title, body, base) and fetch its head and base. Read-only. */
51
+ export declare function fetchPrTarget(req: PrFetchRequest): Promise<PrFetchResult>;
52
+ export interface PrCredentialDeps {
53
+ env?: Record<string, string | undefined>;
54
+ mintApp?: (secretsDir: string) => Promise<string>;
55
+ ghAuthToken?: () => string | null;
56
+ /** Default: the token handed to this container as a file, if any. */
57
+ handoff?: string | null;
58
+ }
59
+ /** The local route's credential for `secretsDir`, with the real App, env and
60
+ * `gh` unless a test says otherwise. */
61
+ export declare function resolvePrCredential(secretsDir: string, o?: PrCredentialDeps): Promise<CredentialResolution>;
62
+ /** The identity a review is posted as: the credential source the repo names
63
+ * (`post_as` in its review settings), else the one already resolved for
64
+ * reading the PR. A named source that is not available is an error, never a
65
+ * silent switch to another identity. */
66
+ export declare function resolvePostCredential(secretsDir: string, postAs: string | null, resolved: {
67
+ source: CredentialSource;
68
+ token: string;
69
+ }, o?: PrCredentialDeps): Promise<CredentialResolution>;
70
+ //# sourceMappingURL=prtarget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prtarget.d.ts","sourceRoot":"","sources":["../../src/prtarget.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmC,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAiB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhF,MAAM,MAAM,aAAa,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAI5E;uEACuE;AACvE,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,aAAa,CA0Bf;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;8BAC0B;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;yEACqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAOD,MAAM,MAAM,aAAa,GACrB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAGhD,8EAA8E;AAC9E,wBAAsB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAqG/E;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;wCACwC;AACxC,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,CAAC,GAAE,gBAAqB,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAQ/B;AAED;;;wCAGwC;AACxC,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,QAAQ,EAAE;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACrD,CAAC,GAAE,gBAAqB,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAoB/B"}
@@ -0,0 +1,181 @@
1
+ // `qcr review <number|URL>`: which PR, and its head and base fetched into a
2
+ // scratch repository for a read-only review. The credential comes from the
3
+ // local route's chain (packages/pi-plugin/src/ghcred.ts); it is handed to git through the
4
+ // environment, never written into a config file or a URL.
5
+ import { mkdirSync } from "node:fs";
6
+ import { ExecError, nodeExec, runOrThrow } from "./execfn.js";
7
+ import { CREDENTIAL_SOURCES, resolveGithubCredential, ghAuthTokenFromCli, handedToken, } from "./ghcred.js";
8
+ import { TokenMinter } from "./githubAuth.js";
9
+ import { originRepo, resolveBranch } from "./localreview.js";
10
+ const REPO_RE = /^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;
11
+ /** A PR argument: `12`, `#12` or a github.com pull URL. A PR on a repo other
12
+ * than the current directory's is refused unless `--repo` names it. */
13
+ export function parsePrTarget(arg, o) {
14
+ if (o.repo !== undefined && !REPO_RE.test(o.repo))
15
+ return { ok: false, error: `--repo ${o.repo}: expected owner/name` };
16
+ const num = arg.match(/^#?(\d+)$/);
17
+ if (num) {
18
+ const repo = o.repo ?? o.cwdRepo;
19
+ if (!repo)
20
+ return {
21
+ ok: false,
22
+ error: `PR ${arg}: this directory has no GitHub remote — pass --repo owner/name`,
23
+ };
24
+ return { ok: true, repo, number: Number(num[1]) };
25
+ }
26
+ const url = arg.match(/^https:\/\/github\.com\/([^/\s]+\/[^/\s]+)\/pull\/(\d+)(?:[/?#].*)?$/);
27
+ if (!url)
28
+ return { ok: false, error: `${arg}: not a PR number or a github.com pull request URL` };
29
+ const repo = url[1];
30
+ if (o.repo !== undefined && o.repo.toLowerCase() !== repo.toLowerCase())
31
+ return { ok: false, error: `${arg} is on ${repo} but --repo says ${o.repo}` };
32
+ if (o.repo === undefined && (o.cwdRepo ?? "").toLowerCase() !== repo.toLowerCase())
33
+ return {
34
+ ok: false,
35
+ error: `${arg} is on ${repo}, not this directory's repository` +
36
+ `${o.cwdRepo ? ` (${o.cwdRepo})` : ""} — pass --repo ${repo} to review it anyway`,
37
+ };
38
+ return { ok: true, repo, number: Number(url[2]) };
39
+ }
40
+ export { originRepo };
41
+ /** How long the network fetch of a PR's head and base may take. */
42
+ const FETCH_TIMEOUT_MS = 30 * 60_000;
43
+ /** How long a local git step of the fetch may take. */
44
+ const LOCAL_GIT_TIMEOUT_MS = 2 * 60_000;
45
+ export const SCRATCH_BASE_REF = "refs/qcr/base";
46
+ const HEAD_REF = "refs/qcr/head";
47
+ /** Read the PR (title, body, base) and fetch its head and base. Read-only. */
48
+ export async function fetchPrTarget(req) {
49
+ const label = `${req.repo}#${req.number}`;
50
+ const fetchFn = req.fetchFn ?? fetch;
51
+ const apiBase = req.apiBase ?? "https://api.github.com";
52
+ let pr;
53
+ try {
54
+ const res = await fetchFn(`${apiBase}/repos/${req.repo}/pulls/${req.number}`, {
55
+ signal: req.signal
56
+ ? AbortSignal.any([req.signal, AbortSignal.timeout(60_000)])
57
+ : AbortSignal.timeout(60_000),
58
+ headers: {
59
+ authorization: `Bearer ${req.token}`,
60
+ accept: "application/vnd.github+json",
61
+ "x-github-api-version": "2022-11-28",
62
+ },
63
+ });
64
+ if (res.status === 401 || res.status === 403)
65
+ return {
66
+ ok: false,
67
+ error: `GitHub rejected the credential reading ${label} (${res.status}): check it can read ${req.repo}, or run \`gh auth login\``,
68
+ };
69
+ if (res.status === 404)
70
+ return {
71
+ ok: false,
72
+ error: `${label} was not found — wrong number or repo, or the credential cannot see ${req.repo}`,
73
+ };
74
+ if (!res.ok)
75
+ return { ok: false, error: `GitHub answered ${res.status} for ${label}` };
76
+ pr = (await res.json());
77
+ }
78
+ catch (err) {
79
+ return {
80
+ ok: false,
81
+ error: `could not read ${label} from GitHub: ${String(err).slice(0, 200)}`,
82
+ };
83
+ }
84
+ const baseRef = pr.base?.ref;
85
+ if (!baseRef || !pr.head?.sha)
86
+ return { ok: false, error: `${label}: GitHub's answer had no head or base` };
87
+ mkdirSync(req.scratchDir, { recursive: true });
88
+ const header = `Authorization: Basic ${Buffer.from(`x-access-token:${req.token}`).toString("base64")}`;
89
+ const exec = req.exec ?? nodeExec;
90
+ const run = async (args, timeoutMs, auth = false) => {
91
+ await runOrThrow(exec, "git", args, {
92
+ cwd: req.scratchDir,
93
+ env: {
94
+ ...process.env,
95
+ GIT_TERMINAL_PROMPT: "0",
96
+ ...(auth
97
+ ? {
98
+ GIT_CONFIG_COUNT: "1",
99
+ GIT_CONFIG_KEY_0: "http.extraheader",
100
+ GIT_CONFIG_VALUE_0: header,
101
+ }
102
+ : {}),
103
+ },
104
+ timeoutMs,
105
+ ...(req.signal ? { signal: req.signal } : {}),
106
+ });
107
+ };
108
+ try {
109
+ await run(["init", "-q"], LOCAL_GIT_TIMEOUT_MS);
110
+ await run([
111
+ "fetch",
112
+ "-q",
113
+ "--no-tags",
114
+ `${req.gitBase ?? "https://github.com"}/${req.repo}.git`,
115
+ `+refs/pull/${req.number}/head:${HEAD_REF}`,
116
+ `+refs/heads/${baseRef}:${SCRATCH_BASE_REF}`,
117
+ ], FETCH_TIMEOUT_MS, true);
118
+ await run(["update-ref", "--no-deref", "HEAD", HEAD_REF], LOCAL_GIT_TIMEOUT_MS);
119
+ }
120
+ catch (err) {
121
+ if (req.signal?.aborted)
122
+ return { ok: false, error: `the fetch of ${label} was stopped` };
123
+ // a killed git (its time ran out) exits with no code of its own
124
+ const words = err instanceof ExecError
125
+ ? err.result.code === -1
126
+ ? "git took too long and was stopped"
127
+ : err.result.stderr.trim() || err.message
128
+ : String(err);
129
+ const msg = words.replaceAll(req.token, "***").slice(0, 300);
130
+ return { ok: false, error: `git could not fetch ${label}: ${msg}` };
131
+ }
132
+ const resolved = resolveBranch(req.scratchDir, SCRATCH_BASE_REF);
133
+ if (!resolved.ok)
134
+ return { ok: false, error: `${label}: ${resolved.error}` };
135
+ return {
136
+ ok: true,
137
+ gitDir: req.scratchDir,
138
+ target: { ...resolved.target, repo: req.repo, branch: `PR #${req.number}`, base: baseRef },
139
+ title: pr.title ?? `PR #${req.number}`,
140
+ body: pr.body ?? null,
141
+ number: req.number,
142
+ };
143
+ }
144
+ /** The local route's credential for `secretsDir`, with the real App, env and
145
+ * `gh` unless a test says otherwise. */
146
+ export function resolvePrCredential(secretsDir, o = {}) {
147
+ return resolveGithubCredential({
148
+ secretsDir,
149
+ env: o.env ?? process.env,
150
+ mintApp: o.mintApp ?? ((dir) => new TokenMinter(dir).installationToken()),
151
+ ghAuthToken: o.ghAuthToken ?? ghAuthTokenFromCli,
152
+ handoff: o.handoff === undefined ? handedToken() : o.handoff,
153
+ });
154
+ }
155
+ /** The identity a review is posted as: the credential source the repo names
156
+ * (`post_as` in its review settings), else the one already resolved for
157
+ * reading the PR. A named source that is not available is an error, never a
158
+ * silent switch to another identity. */
159
+ export async function resolvePostCredential(secretsDir, postAs, resolved, o = {}) {
160
+ if (postAs === null)
161
+ return { ok: true, ...resolved };
162
+ const known = CREDENTIAL_SOURCES;
163
+ if (!known.includes(postAs)) {
164
+ return {
165
+ ok: false,
166
+ error: `post_as is ${postAs} but that credential is not available (expected one of ${known.join(", ")})`,
167
+ };
168
+ }
169
+ const env = o.env ?? process.env;
170
+ const r = await resolveGithubCredential({
171
+ secretsDir: postAs === "app" ? secretsDir : "",
172
+ env: postAs.startsWith("env:") ? { [postAs.slice(4)]: env[postAs.slice(4)] } : {},
173
+ mintApp: o.mintApp ?? ((dir) => new TokenMinter(dir).installationToken()),
174
+ ghAuthToken: postAs === "gh" ? (o.ghAuthToken ?? ghAuthTokenFromCli) : () => null,
175
+ handoff: postAs === "handoff" ? (o.handoff === undefined ? handedToken() : o.handoff) : null,
176
+ });
177
+ return r.ok
178
+ ? r
179
+ : { ok: false, error: `post_as is ${postAs} but that credential is not available: ${r.error}` };
180
+ }
181
+ //# sourceMappingURL=prtarget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prtarget.js","sourceRoot":"","sources":["../../src/prtarget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /** What woke the recheck. `author_reply` is listed because it is a decided
2
+ * trigger — its handling is "hand it to ping-pong and do nothing else". */
3
+ export type RecheckTrigger = "push" | "ci" | "base_advance" | "author_reply";
4
+ /** Why a file was judged not worth re-reviewing. */
5
+ export type TrivialReason = "base-merge" | "migration-renumber" | "pure-rename" | "version-bump" | "formatting" | "no-content-change";
6
+ export interface FileClass {
7
+ filename: string;
8
+ class: "trivial" | "significant";
9
+ /** The trivial rule that fired, or "content" for a real change. */
10
+ reason: TrivialReason | "content";
11
+ }
12
+ /** The recheck's own order kind — deliberately NOT a RoundOrder: no round is
13
+ * started, no pass plan exists, and the session is asked one question. */
14
+ export interface RecheckOrder {
15
+ pr: number;
16
+ title: string;
17
+ trigger: RecheckTrigger;
18
+ /** Always APPROVE — the only standing verdict this path can act on. */
19
+ standing_verdict: "APPROVE";
20
+ last_reviewed_sha: string;
21
+ head_sha: string;
22
+ worktree: string;
23
+ evidence: string;
24
+ files: FileClass[];
25
+ /** Files hand-resolved inside merge commits of this delta — the session
26
+ * must audit each against BOTH merge parents. */
27
+ resolved_files: string[];
28
+ /** Relative name of the decision file the session must write. */
29
+ decision_file: string;
30
+ issued_at: string;
31
+ }
32
+ //# sourceMappingURL=recheckorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recheckorder.d.ts","sourceRoot":"","sources":["../../src/recheckorder.ts"],"names":[],"mappings":"AAIA;2EAC2E;AAC3E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,IAAI,GAAG,cAAc,GAAG,cAAc,CAAC;AAE7E,oDAAoD;AACpD,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,oBAAoB,GACpB,aAAa,GACb,cAAc,GACd,YAAY,GACZ,mBAAmB,CAAC;AAExB,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,aAAa,CAAC;IACjC,mEAAmE;IACnE,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;CACnC;AAED;0EAC0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,uEAAuE;IACvE,gBAAgB,EAAE,SAAS,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB;qDACiD;IACjD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,5 @@
1
+ // The post-approval recheck's order: what woke it, the delta's file
2
+ // classes and the one question handed to the session. The core renders it
3
+ // (packages/pi-plugin/src/templates.ts); src/recheck.ts builds it and re-exports these.
4
+ export {};
5
+ //# sourceMappingURL=recheckorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recheckorder.js","sourceRoot":"","sources":["../../src/recheckorder.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,0EAA0E;AAC1E,wFAAwF"}
@@ -0,0 +1,207 @@
1
+ import type { CoreConfig } from "./reviewconfig.js";
2
+ import type { Ecosystem } from "./ecosystem.js";
3
+ import { type ReviewMemoryPort } from "./memoryport.js";
4
+ import type { ProfilePlace } from "./profilelookup.js";
5
+ import type { ProfileLookup } from "./profiles.js";
6
+ import { type PrCredentialDeps, type PrFetchRequest } from "./prtarget.js";
7
+ import { type Destination, type DestinationChoice } from "./reviewdest.js";
8
+ import { type OneShotResult } from "./oneshot.js";
9
+ import type { RoundSpec } from "./engine/round.js";
10
+ import type { Runtime } from "./engine/port.js";
11
+ /** What is reviewed. */
12
+ export type ReviewTarget =
13
+ /** The repo dir's current branch against its base (`base`, else origin's
14
+ * default branch, main, master). */
15
+ {
16
+ kind: "branch";
17
+ base?: string;
18
+ }
19
+ /** The uncommitted working tree (staged, unstaged and new files) against
20
+ * HEAD. Never posted anywhere. */
21
+ | {
22
+ kind: "uncommitted";
23
+ }
24
+ /** A pull request: `12`, `#12` or a github.com pull URL. A PR on another
25
+ * repo than the repo dir's needs `repo` (owner/name). */
26
+ | {
27
+ kind: "pr";
28
+ pr: string | number;
29
+ repo?: string;
30
+ }
31
+ /** A unified diff: its text, or a reader the run calls when it gets there
32
+ * (a reader's Error message is the refusal, word for word). `name` says
33
+ * where it came from: a file name, or "-" (or nothing) for a piped diff.
34
+ * The repo dir is optional and only read; a diff is never posted. */
35
+ | {
36
+ kind: "diff";
37
+ diff: string | (() => Promise<string>);
38
+ name?: string;
39
+ };
40
+ /** Who is asking. "laptop" previews the estimate, asks above the limit and
41
+ * stops hard at twice the estimate. "action" never asks and has no cap of its
42
+ * own: only a given limit stops the run. */
43
+ export type ReviewRoute = "laptop" | "action";
44
+ /** What the host's isolation of one run is given: core's is
45
+ * packages/pi-plugin/src/reviewhost.ts `prepareReviewHost`, which a host calls with its own words
46
+ * for a refused login (`qcr review`'s: src/hostroute.ts `prepareHostRun`). */
47
+ export interface ReviewHostRequest {
48
+ root: string;
49
+ /** The operator's pi agent dir (its login). Read, never written. */
50
+ srcAgentDir: string;
51
+ /** Where the run's private agent dir goes: `<runDir>/agent`. */
52
+ agentDir: string;
53
+ /** The run's out dir: pi's cwd. */
54
+ cwd: string;
55
+ cfg: CoreConfig;
56
+ /** The review's time budget: a login that expires inside it is refused
57
+ * with `AuthExpiring` (packages/pi-plugin/src/engine/auth.ts). */
58
+ needMs: number;
59
+ /** Checkouts the cwd must stay out of: the asset tree, the reviewed repo. */
60
+ checkouts: readonly string[];
61
+ /** A profile's replacements for the lens agents. */
62
+ profile: {
63
+ readFile?: (path: string) => string;
64
+ lookup: ProfileLookup;
65
+ };
66
+ }
67
+ /** The isolated run the host prepared. */
68
+ export interface ReviewHostRun {
69
+ /** pi's agent dir for the run. It goes with the run. */
70
+ agentDir: string;
71
+ /** Where pi runs. */
72
+ cwd: string;
73
+ /** Context files above `cwd` that pi would load too. */
74
+ strayContext: string[];
75
+ }
76
+ export interface ReviewLimits {
77
+ route?: ReviewRoute;
78
+ /** The limit for this run, over the repo's own (`auto_limit_usd`); on the
79
+ * "action" route it is the hard stop. */
80
+ limitUsd?: number;
81
+ /** Start over the limit without asking, quoting the key a preview showed. */
82
+ key?: string;
83
+ /** The round's wall clock. */
84
+ timeoutMs: number;
85
+ }
86
+ /** A runtime for one run. `dispose`, when it has one, is called when the run
87
+ * ends (packages/pi-plugin/src/engine/reviewsdk.ts disposes the hosts it built). */
88
+ export type ReviewRuntime = Runtime & {
89
+ dispose?: () => Promise<void> | void;
90
+ };
91
+ /** What a run's runtime is built for. */
92
+ export interface ReviewRuntimeRequest {
93
+ /** The run's own directory. */
94
+ runDir: string;
95
+ }
96
+ export interface ReviewOptions {
97
+ /** The repository (or a directory in it) the review stands in. A diff
98
+ * needs none there: it is then only read for context. */
99
+ repoDir: string;
100
+ /** The asset tree: prompts/, extensions/, agents/ (packages/pi-plugin/src/assetroot.ts). */
101
+ root: string;
102
+ /** The operator's pi agent dir (its login): only read. */
103
+ agentDir: string;
104
+ /** Where each run keeps its throwaway tree and its files. */
105
+ runsDir: string;
106
+ /** Where a dry-run install records the review it would have posted. */
107
+ dryrunDir: string;
108
+ /** The review home: each repo's delta history and saved destination
109
+ * (packages/pi-plugin/src/reviewstore.ts). Null: nothing is remembered, so every run is a full
110
+ * review and no destination is saved. */
111
+ storeDir: string | null;
112
+ config: CoreConfig;
113
+ ecosystem: Ecosystem;
114
+ /** Where profiles are looked up before the asset tree's examples. */
115
+ profileHomes?: readonly ProfilePlace[];
116
+ /** Builds the runtime that hosts one run's review session. Called once per
117
+ * run, when the round is about to start (a preview, a refusal or an
118
+ * unchanged head builds none), and the runtime is disposed when the run
119
+ * ends. A runtime carries the run's lens board and lens runner, so it hosts
120
+ * one run at a time: a runtime still hosting another run is refused. */
121
+ runtime: (run: ReviewRuntimeRequest) => ReviewRuntime;
122
+ /** Isolates the run from the operator's pi home and every checkout.
123
+ * Absent: core's isolation (packages/pi-plugin/src/reviewhost.ts) with the engine's words for
124
+ * a refused login. */
125
+ prepareHost?: (req: ReviewHostRequest) => ReviewHostRun;
126
+ /** Runs the round inside interactive pi instead of on `runtime` (a debug
127
+ * round: no live log, no cap, nothing posted, no destination asked). */
128
+ debugRound?: (spec: RoundSpec) => Promise<OneShotResult>;
129
+ /** The install's memory. Absent or null: the review runs without memory
130
+ * and says so once. */
131
+ memory?: ReviewMemoryPort | null;
132
+ /** Where the result goes, for this run. Absent or empty: the repo's saved
133
+ * default, else the person is asked (`io.choose`), else the fallback. */
134
+ destinations?: readonly Destination[];
135
+ /** Write the markdown report to this file (implies "file"); a relative path
136
+ * is the repo dir's. */
137
+ reportFile?: string;
138
+ /** Review the whole target again, ignoring what an earlier review left. */
139
+ full?: boolean;
140
+ limits: ReviewLimits;
141
+ /** The GitHub credential sources and where GitHub is (a test seam). */
142
+ github?: PrCredentialDeps & Pick<PrFetchRequest, "fetchFn" | "gitBase" | "apiBase">;
143
+ }
144
+ /** What a prompt port is given beside its question: the run's stop, which
145
+ * closes the question unanswered. */
146
+ export interface AskOptions {
147
+ signal?: AbortSignal;
148
+ }
149
+ /** The round that is about to start, for a UI to show while it runs. */
150
+ export interface ReviewStarted {
151
+ /** The run's directory: the round's live log is under it (src/live/). */
152
+ runDir: string;
153
+ /** Where the round writes its files. */
154
+ outDir: string;
155
+ /** The round's session name (the live log's key). */
156
+ sessionName: string;
157
+ lenses: readonly string[];
158
+ estimateUsd: number;
159
+ /** The hard stop in dollars; null: none. */
160
+ capUsd: number | null;
161
+ }
162
+ /** The ports: everything that reaches a person. */
163
+ export interface ReviewIo {
164
+ /** Ask a yes/no question. Null or absent: nobody to ask. A stop closes the
165
+ * question: the run ends stopped, whatever the port answers. */
166
+ confirm?: ((question: string, o?: AskOptions) => Promise<boolean>) | null;
167
+ /** Ask the person to pick one option. Absent: not interactive, so the
168
+ * destination question is never asked. A stop closes it, as for `confirm`. */
169
+ choose?: (question: string, options: DestinationChoice[], o?: AskOptions) => Promise<Destination>;
170
+ /** The run's own progress lines for a person (the preview before the run,
171
+ * the memory notice). */
172
+ progress?: (line: string) => void;
173
+ /** The round is about to start: where it runs and what it plans. */
174
+ started?: (run: ReviewStarted) => void;
175
+ /** A warning said before the run. */
176
+ warn?: (line: string) => void;
177
+ /** The round's diagnostics. */
178
+ log?: (line: string) => void;
179
+ /** Stops the review: it returns a stopped result and cleans up after itself. */
180
+ signal?: AbortSignal;
181
+ }
182
+ /** The versioned JSON object (`qcr review --json`, schemas/review-result.v1.json). */
183
+ export type ReviewData = Record<string, unknown> & {
184
+ schema_version: number;
185
+ ok: boolean;
186
+ };
187
+ export interface ReviewResult {
188
+ /** The versioned JSON object, `schema_version` first. */
189
+ data: ReviewData;
190
+ /** The rendered review; null when the run made none (a refusal, a preview,
191
+ * a review that did not finish). */
192
+ markdown: string | null;
193
+ /** What a terminal shows a person. */
194
+ text: string;
195
+ /** 0 done; 1 refused, declined, failed, stopped or partial; 2 usage. */
196
+ exitCode: 0 | 1 | 2;
197
+ /** Where the result goes, as settled; null when the run ended before that
198
+ * (the caller's own fallback applies). */
199
+ destinations: readonly Destination[] | null;
200
+ }
201
+ /** Run the review of `target`: the plan, the price, the round, the record and,
202
+ * when asked, the post. Never throws for a refusal; the result says it. */
203
+ export declare function review(target: ReviewTarget, opts: ReviewOptions, io?: ReviewIo): Promise<ReviewResult>;
204
+ /** The plan, the price and the key `review` would run under; starts nothing,
205
+ * asks nothing and saves no destination. */
206
+ export declare function preview(target: ReviewTarget, opts: ReviewOptions, io?: ReviewIo): Promise<ReviewResult>;
207
+ //# sourceMappingURL=reviewapi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewapi.d.ts","sourceRoot":"","sources":["../../src/reviewapi.ts"],"names":[],"mappings":"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"}