@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,543 @@
1
+ // One review round on an injected runtime: write the round's artifacts, send
2
+ // the main session the production round order, send ONE follow-up when the
3
+ // outputs are missing or unreadable, then read the files and render them
4
+ // through the production review renderer.
5
+ //
6
+ // The runtime hosts the session. On the process runtime the follow-up is a
7
+ // `--continue` respawn of the same pi session; on the SDK runtime it is a
8
+ // second turn on the same live session. The round does not know which: it sees
9
+ // the port (port.ts) and nothing of pi's command line or SDK.
10
+ //
11
+ // Shared by the benchmark (src/bench/runner.ts reviewCase) and `qcr review`
12
+ // (through packages/pi-plugin/src/oneshot.ts). It takes a prepared tree, its file list, a target
13
+ // description and an output directory; it knows nothing of bench cases,
14
+ // stores or prefetching. No daemon, tmux, inject bridge or memory: a process
15
+ // that exits when the round settles (the companion boundary: no GitHub
16
+ // credential reaches it).
17
+ import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
18
+ import { delimiter, dirname, join } from "node:path";
19
+ import { CONTEXT_PACK_FILE } from "../contextpack.js";
20
+ import { isDefaultPosting } from "../postingpolicy.js";
21
+ import { modelErrorKind, modelErrorsFromEvents, stagesFromEvents, usageFromEvents, } from "./roundevents.js";
22
+ import { CASE_FILES, POLICED_ORIGINALS } from "./caseout.js";
23
+ import { caseCostUsd } from "../pricing.js";
24
+ import { lineHasAuthError } from "../authwatch.js";
25
+ import { checkAuth, classifyAuthFailure } from "./auth.js";
26
+ import { apiKeyEnv } from "./keyroute.js";
27
+ import { GIT_ISOLATION_ENV, GITHUB_TOKEN_ENVS } from "../envstrip.js";
28
+ import { openRoundSink } from "./livewire.js";
29
+ import { planLaunch } from "./lens/launch-plan.js";
30
+ import { launchWave, } from "./lens/wave.js";
31
+ import { LENS_SESSIONS_DIR, MAIN_SESSION_DIR, openEnvOf, writeOpenMeta } from "./openable.js";
32
+ import { engineLensSection, renderOneShotPrompts, } from "./prompts.js";
33
+ import { renderBenchOutputs } from "./render.js";
34
+ import { coreExtensionFile } from "./extfiles.js";
35
+ /** The extensions a round's main session runs with, in load order: the
36
+ * command guard, the ledger pin, and the live PR session's `cluster_findings`
37
+ * tool (the same grouping code on both routes). */
38
+ export const ROUND_EXTENSIONS = [
39
+ "bash-guard",
40
+ "ledger-pin",
41
+ "finding-clusters",
42
+ ];
43
+ export function readJson(path) {
44
+ try {
45
+ return JSON.parse(readFileSync(path, "utf8"));
46
+ }
47
+ catch {
48
+ return undefined;
49
+ }
50
+ }
51
+ /** Why a session's JSON output file cannot be used: `undefined` when it parses,
52
+ * `"missing"` when absent, otherwise the parser's message. */
53
+ export function jsonProblem(path) {
54
+ if (!existsSync(path))
55
+ return "missing";
56
+ try {
57
+ JSON.parse(readFileSync(path, "utf8"));
58
+ return undefined;
59
+ }
60
+ catch (err) {
61
+ return String(err instanceof Error ? err.message : err).slice(0, 300);
62
+ }
63
+ }
64
+ /** The BENCHMARK MODE files a scorer reads as JSON: the outcome always; the
65
+ * findings record when the bench renders the posted review from it, else the
66
+ * session's own comments. */
67
+ function scoredOutputs(renderOutputs) {
68
+ return renderOutputs
69
+ ? [CASE_FILES.findings, CASE_FILES.outcome]
70
+ : [CASE_FILES.comments, CASE_FILES.outcome];
71
+ }
72
+ /** The scored BENCHMARK MODE files the session wrote that do not parse. A
73
+ * missing file is not listed here (`missingOutputs` lists it). */
74
+ export function unparseableOutputs(caseDir, renderOutputs) {
75
+ const names = scoredOutputs(renderOutputs);
76
+ const out = [];
77
+ for (const n of names) {
78
+ const p = jsonProblem(join(caseDir, n));
79
+ if (p !== undefined && p !== "missing")
80
+ out.push(`${n} is not valid JSON (${p})`);
81
+ }
82
+ return out;
83
+ }
84
+ /** The scored BENCHMARK MODE files the session has not written. */
85
+ export function missingOutputs(caseDir, renderOutputs) {
86
+ return scoredOutputs(renderOutputs).filter((n) => !existsSync(join(caseDir, n)));
87
+ }
88
+ /** The session's event stream and stderr in a case dir. */
89
+ export const PI_RUN_FILES = ["pi-events.jsonl", "pi-stderr.log"];
90
+ /** The typed refusal in a round's output, if the provider refused the login. */
91
+ function authRefusal(stderrLines, eventsFile, streamError) {
92
+ for (const text of [...stderrLines, streamError ?? ""]) {
93
+ const refused = classifyAuthFailure(text.trim().slice(0, 300));
94
+ if (refused)
95
+ return refused;
96
+ }
97
+ try {
98
+ for (const line of readFileSync(eventsFile, "utf8").split("\n")) {
99
+ if (!lineHasAuthError(line))
100
+ continue;
101
+ // The provider's own text is the record's errorMessage; the line is long.
102
+ const said = /"errorMessage":("(?:[^"\\]|\\.)*")/.exec(line)?.[1];
103
+ const text = said === undefined ? line : JSON.parse(said);
104
+ return classifyAuthFailure(text.slice(0, 300));
105
+ }
106
+ }
107
+ catch {
108
+ // An unreadable stream is reported by the usage step.
109
+ }
110
+ return undefined;
111
+ }
112
+ /** How long a round waits for the engine's wave rows to settle once it has
113
+ * ended them (each ends its session and writes its ledger line). */
114
+ const WAVE_SETTLE_MS = 15_000;
115
+ /** Write the round's files into `i.outDir` and work out the session's env, order
116
+ * and wave. `route` is the engine route the round runs on, if any. Throws only
117
+ * for an unwritable output dir or a login that cannot cover the run (`auth`). */
118
+ export function prepareRound(i, route) {
119
+ const { cfg, outDir, tree, root } = i;
120
+ // Before a file is written or a session started: a login that cannot cover
121
+ // the run is refused here, typed (AuthExpiring), not found out by pi.
122
+ if (i.auth)
123
+ checkAuth(i.auth, { needMs: i.timeoutMs });
124
+ const ownTmp = i.tmpDir === undefined;
125
+ const tmpDir = i.tmpDir ?? join(outDir, "tmp");
126
+ mkdirSync(outDir, { recursive: true });
127
+ // What an earlier attempt wrote here is not this attempt's review.
128
+ for (const f of [...Object.values(CASE_FILES), ...POLICED_ORIGINALS, ...PI_RUN_FILES])
129
+ rmSync(join(outDir, f), { force: true });
130
+ rmSync(tmpDir, { recursive: true, force: true });
131
+ mkdirSync(tmpDir, { recursive: true });
132
+ try {
133
+ const rendered = i.prompts ??
134
+ renderOneShotPrompts({
135
+ root,
136
+ cfg,
137
+ ecosystem: i.ecosystem,
138
+ target: i.target,
139
+ tree,
140
+ caseDir: outDir,
141
+ files: i.files,
142
+ issuedAt: new Date().toISOString(),
143
+ ...(i.dependencyNote ? { dependencyNote: i.dependencyNote } : {}),
144
+ ...(i.memory ? { memory: i.memory } : {}),
145
+ });
146
+ // An earlier attempt's task files never leak into this one: launch_plan
147
+ // launches every task file the dir holds.
148
+ rmSync(join(outDir, "tasks"), { recursive: true, force: true });
149
+ rmSync(join(outDir, CONTEXT_PACK_FILE), { force: true });
150
+ for (const f of rendered.extraFiles ?? []) {
151
+ mkdirSync(dirname(f.path), { recursive: true });
152
+ writeFileSync(f.path, f.text);
153
+ }
154
+ if (rendered.contextPack)
155
+ writeFileSync(rendered.contextPack.path, rendered.contextPack.text);
156
+ if (rendered.taskFiles.length) {
157
+ mkdirSync(join(outDir, "tasks"), { recursive: true });
158
+ for (const t of rendered.taskFiles)
159
+ writeFileSync(t.path, t.text);
160
+ }
161
+ const sysPath = join(outDir, "system-prompt.md");
162
+ writeFileSync(sysPath, rendered.system);
163
+ writeFileSync(join(outDir, "files.json"), JSON.stringify(i.files.map(({ patch: _p, ...f }) => f), null, 2));
164
+ const sessionName = i.sessionName ?? `oneshot-${i.target.number}`;
165
+ const env = {
166
+ PATH: process.env.PATH ?? "/usr/local/bin:/usr/bin:/bin",
167
+ HOME: process.env.HOME ?? "/tmp",
168
+ TMPDIR: tmpDir,
169
+ LANG: "C.UTF-8",
170
+ PI_CODING_AGENT_DIR: i.agentDir,
171
+ QCR_SUBAGENT_SCOPE: i.agentScope ?? "project",
172
+ QCR_SUBAGENT_MAX_CONCURRENCY: String(cfg.engine.lens_max_concurrency),
173
+ QCR_SUBAGENT_CACHE_GROUP: String(cfg.engine.lens_cache_group),
174
+ QCR_SUBAGENT_CACHE_STAGGER_MS: String(cfg.engine.lens_cache_stagger_ms),
175
+ QCR_SUBAGENT_PASS_DEADLINE_MIN: String(cfg.engine.lens_pass_deadline_min),
176
+ // This run's task dirs are its sanctioned launch_plan dirs
177
+ // (production's live under state/pr-<n>-round-<k>-passes/).
178
+ QCR_LAUNCH_PLAN_DIRS: [
179
+ join(outDir, "tasks"),
180
+ join(outDir, "tasks-optional"),
181
+ join(outDir, "tasks-sweep"),
182
+ ].join(delimiter),
183
+ QCR_SANDBOX_ROOT: root,
184
+ QCR_SESSION_NAME: sessionName,
185
+ QCR_PR: String(i.target.number),
186
+ QCR_PR_META: `PR #${i.target.number} — ${i.target.title ?? i.target.repo} (worktree ${tree})`,
187
+ QCR_WORKTREE: tree,
188
+ QCR_LEDGER_FILE: join(outDir, "ledger.md"),
189
+ QCR_PI_VERSION: cfg.pi.version,
190
+ ...GIT_ISOLATION_ENV,
191
+ // An `anthropic/` model arm: pi's anthropic provider reads this key.
192
+ ...(process.env.ANTHROPIC_API_KEY
193
+ ? { ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY }
194
+ : {}),
195
+ // The API-key route (packages/pi-plugin/src/engine/keyroute.ts); nothing on the login route.
196
+ ...apiKeyEnv(),
197
+ };
198
+ // No GitHub credential reaches a process whose model runs bash.
199
+ for (const k of GITHUB_TOKEN_ENVS)
200
+ delete env[k];
201
+ // The engine lens route (wave.ts EngineRoute): the planned wave is what
202
+ // `planLaunch` reads from this run's `tasks/` (pass-validate excluded), the
203
+ // same plan `lens_wave` resolves its dirs to. Nothing is started yet.
204
+ const startWarnings = [];
205
+ let waveUnits = [];
206
+ if (route?.plannedWave && rendered.taskFiles.length) {
207
+ const plan = planLaunch({ dirs: [join(outDir, "tasks")] }, env);
208
+ if (plan.ok)
209
+ waveUnits = plan.units;
210
+ else
211
+ startWarnings.push(`engine wave not planned: ${plan.error}`.slice(0, 300));
212
+ }
213
+ const prompts = route
214
+ ? {
215
+ ...rendered,
216
+ order: `${rendered.order}\n\n${engineLensSection(join(outDir, "tasks"), waveUnits.length
217
+ ? { dir: dirname(waveUnits[0].path), agents: waveUnits.map((u) => u.agent) }
218
+ : null)}`,
219
+ }
220
+ : rendered;
221
+ writeFileSync(join(outDir, "round-order.md"), prompts.order);
222
+ // What `qcr open` needs to start pi on this run's sessions again.
223
+ writeOpenMeta(outDir, {
224
+ version: 1,
225
+ sessionName,
226
+ cwd: i.cwd ?? root,
227
+ model: cfg.models.conversation,
228
+ env: openEnvOf(env),
229
+ });
230
+ const sessionDir = join(outDir, MAIN_SESSION_DIR);
231
+ // This attempt's session only: an earlier attempt's JSONL left here would
232
+ // make `resumable` true and `--continue` would resume THAT conversation.
233
+ rmSync(sessionDir, { recursive: true, force: true });
234
+ // …and its lens sessions: `qcr open --lens` lists what THIS attempt ran.
235
+ rmSync(join(outDir, LENS_SESSIONS_DIR), { recursive: true, force: true });
236
+ return {
237
+ prompts,
238
+ sysPath,
239
+ env,
240
+ sessionName,
241
+ sessionDir,
242
+ events: join(outDir, PI_RUN_FILES[0]),
243
+ stderr: join(outDir, PI_RUN_FILES[1]),
244
+ waveUnits,
245
+ startWarnings,
246
+ tmpDir,
247
+ ownTmp,
248
+ };
249
+ }
250
+ catch (err) {
251
+ if (ownTmp)
252
+ rmSync(tmpDir, { recursive: true, force: true });
253
+ throw err;
254
+ }
255
+ }
256
+ /** Run one review round on `runtime`. A round that fails is a returned outcome
257
+ * (`error`, absent `outcome`), never a throw; only an unwritable output dir, a
258
+ * login that cannot cover the run (`auth`), or a runtime that cannot create the
259
+ * session (`runtime.create` rejects) throws.
260
+ *
261
+ * A runtime that hosts the engine's lens tools (`runtime.engineLens`, wave.ts)
262
+ * makes this an engine lens route: the order gains the engine-only section
263
+ * (prompts.ts engineLensSection), and with `plannedWave` the round starts the
264
+ * planned discovery wave itself, from the round's `tasks/` (never pass-validate),
265
+ * after the main session exists and before its first prompt; the session joins it
266
+ * through `lens_wave` (rule 9). Everything else stays the session's. */
267
+ export async function runRound(i, runtime) {
268
+ const log = i.log ?? (() => { });
269
+ const label = i.label ?? `${i.target.repo}#${i.target.number}`;
270
+ const started = i.startedAt ?? Date.now();
271
+ const { cfg, outDir, root } = i;
272
+ const route = runtime.engineLens;
273
+ const prep = prepareRound(i, route);
274
+ const { env, prompts, sysPath, sessionName, sessionDir, events, stderr, waveUnits } = prep;
275
+ let session;
276
+ let sink;
277
+ let unhear;
278
+ let endWave = async () => { };
279
+ const stopTurn = () => void session?.abort();
280
+ try {
281
+ i.signal?.throwIfAborted();
282
+ // Host isolation: pi discovers nothing of its own. `-ne` leaves only the
283
+ // extensions named below (so neither ~/.pi/agent, nor a project's `.pi/`,
284
+ // nor a package can add one to the session) and `-ns` no skill; lens
285
+ // passes get bash-guard from the lens tool's factory, not a global setting.
286
+ // `-nc` is deliberately absent: the cwd's context file is the reviewer stub.
287
+ log(`review: ${label} — ${i.files.length} files, lenses ${prompts.plannedLenses.join(" ")}`);
288
+ const cwd = i.cwd ?? root;
289
+ session = await runtime.create({
290
+ cwd,
291
+ env,
292
+ model: cfg.models.conversation,
293
+ systemPromptFile: sysPath,
294
+ // The extension list is the whole list: the session discovers none.
295
+ // The modules are the core's own, found beside this one however the
296
+ // package is installed; the SDK route loads their factories (the
297
+ // round's extras, roundsdk.ts) and a runtime without those extras
298
+ // refuses a spec that names extensions rather than run unguarded.
299
+ extensions: ROUND_EXTENSIONS.map((name) => coreExtensionFile(name)),
300
+ name: sessionName,
301
+ sessionDir,
302
+ eventsFile: events,
303
+ stderrFile: stderr,
304
+ limits: { timeoutMs: i.timeoutMs, ...(i.capUsd !== undefined ? { capUsd: i.capUsd } : {}) },
305
+ cliFlags: ["--approve", "-ne", "-ns"],
306
+ });
307
+ i.signal?.throwIfAborted();
308
+ // VERIFY-ON-PIN: a stop that lands once the first prompt is sent but before
309
+ // pi's agent has made the turn's own abort controller reaches an idle pi
310
+ // session's abort(); that pi then ends the turn it is about to start, rather
311
+ // than dropping the abort and running it in full, is assumed, not shown.
312
+ i.signal?.addEventListener("abort", stopTurn, { once: true });
313
+ // The live log hears every event, the `*_update`s too, from the first
314
+ // prompt on; a log that cannot be opened never costs the review.
315
+ if (i.live) {
316
+ try {
317
+ const heard = openRoundSink(i.live, { pr: i.target.number, session: sessionName }, env, (m) => log(`review: ${label} — ${m}`));
318
+ sink = heard;
319
+ unhear = session.subscribe((event) => heard.feed(event), { updates: true });
320
+ }
321
+ catch (err) {
322
+ log(`review: ${label} — live log not started: ${String(err).slice(0, 200)}`);
323
+ }
324
+ }
325
+ // The engine starts the planned wave before the main session's first turn,
326
+ // so the lenses are in flight while it reads. The runner paces the sessions
327
+ // (its cap, its cache groups and its creation stagger, cpu-gate finding 4).
328
+ if (route) {
329
+ route.wave.clear();
330
+ if (waveUnits.length) {
331
+ const stop = new AbortController();
332
+ const rows = launchWave(route.wave, route.runner, waveUnits, stop.signal);
333
+ log(`review: ${label} — engine wave: ${rows.length} lenses started`);
334
+ // Ends what the session did not join, and waits for the rows to write
335
+ // their ledger lines (the round's price counts them).
336
+ endWave = async () => {
337
+ stop.abort();
338
+ let timer;
339
+ await Promise.race([
340
+ Promise.allSettled(rows.map((row) => row.done)),
341
+ new Promise((resolve) => (timer = setTimeout(resolve, WAVE_SETTLE_MS))),
342
+ ]);
343
+ clearTimeout(timer);
344
+ endWave = async () => { };
345
+ };
346
+ }
347
+ }
348
+ let r = await session.prompt(prompts.order);
349
+ const result = {
350
+ prompts,
351
+ plannedLenses: prompts.plannedLenses,
352
+ piRun: r,
353
+ continued: false,
354
+ capped: r.capped === true,
355
+ warnings: [],
356
+ costUsd: null,
357
+ review: null,
358
+ };
359
+ const outcomePath = join(outDir, CASE_FILES.outcome);
360
+ // One continuation, never more: the live system's answer to a round that
361
+ // stopped short is redelivery, not a fresh review. Same session — a
362
+ // `--continue` respawn on the process runtime, a second turn on the live
363
+ // session on the SDK runtime — and only if there IS one: pi persists a
364
+ // session after its first assistant message, and `--continue` on an empty
365
+ // session dir silently starts a NEW session that would review with no
366
+ // round order at all.
367
+ // A round whose files are there but do not parse stopped short too (a
368
+ // model that broke its own JSON escaping): the same one continuation,
369
+ // told which file and what the parser said. So did one that wrote its
370
+ // outcome (the file written last) without a file the scorer reads.
371
+ const broken = existsSync(outcomePath)
372
+ ? unparseableOutputs(outDir, cfg.review.render_outputs)
373
+ : [];
374
+ const missing = existsSync(outcomePath)
375
+ ? missingOutputs(outDir, cfg.review.render_outputs)
376
+ : [];
377
+ const resumable = (existsSync(sessionDir) && readdirSync(sessionDir).some((f) => f.endsWith(".jsonl"))) ||
378
+ session.sessionFile !== null;
379
+ if (!r.timedOut && !r.streamError && !existsSync(outcomePath) && !resumable) {
380
+ result.error = `pi exited ${String(r.code)} before any assistant message — nothing to continue`;
381
+ }
382
+ const stoppedShort = !existsSync(outcomePath) || broken.length > 0 || missing.length > 0;
383
+ if (!r.timedOut &&
384
+ !r.streamError &&
385
+ !result.capped &&
386
+ stoppedShort &&
387
+ resumable &&
388
+ !i.signal?.aborted) {
389
+ const left = i.timeoutMs - (Date.now() - started);
390
+ if (left > 120_000) {
391
+ result.continued = true;
392
+ log(broken.length
393
+ ? `review: ${label} — ${broken.join("; ")}, one continuation`
394
+ : missing.length
395
+ ? `review: ${label} — ${missing.join(", ")} not written, one continuation`
396
+ : `review: ${label} — no outcome.json yet, one continuation`);
397
+ const delivery = await session.followUp(broken.length
398
+ ? `Your BENCHMARK MODE files in ${outDir} cannot be read: ${broken.join("; ")}. Rewrite ${broken.length > 1 ? "them" : "it"} as valid JSON with the same content — plain double quotes, no escaped quotes around keys or values — and write ${CASE_FILES.outcome} last.`
399
+ : cfg.review.render_outputs
400
+ ? `You stopped before the BENCHMARK MODE files were complete. Finish the round now and write ${CASE_FILES.findings} (with the posting fields) and, last, ${CASE_FILES.outcome} in ${outDir}.`
401
+ : `You stopped before the BENCHMARK MODE files were complete. Finish the round now and write ${CASE_FILES.comments}, ${CASE_FILES.review}, ${CASE_FILES.findings} and, last, ${CASE_FILES.outcome} in ${outDir}.`, {
402
+ timeoutMs: left,
403
+ // What is left of the round's cap is what the session's stats say
404
+ // it has spent, whichever runtime metered it.
405
+ ...(i.capUsd !== undefined
406
+ ? { capUsd: Math.max(0, i.capUsd - session.stats().spentUsd) }
407
+ : {}),
408
+ });
409
+ // The session is idle after its first turn, so the follow-up ran now.
410
+ if (delivery.status !== "handled")
411
+ throw new Error(`the continuation was not run: ${delivery.status}`);
412
+ r = delivery.result;
413
+ result.piRun = r;
414
+ result.capped = r.capped === true;
415
+ }
416
+ }
417
+ // The turns are over: a wave row nobody joined is not wanted any more.
418
+ await endWave();
419
+ return settleRound(i, prep, result, r, session.stats().spentUsd);
420
+ }
421
+ finally {
422
+ i.signal?.removeEventListener("abort", stopTurn);
423
+ unhear?.();
424
+ sink?.close();
425
+ await endWave();
426
+ await session?.dispose();
427
+ if (prep.ownTmp)
428
+ rmSync(prep.tmpDir, { recursive: true, force: true });
429
+ }
430
+ }
431
+ /** Read what a finished round left in `outDir`: warnings from pi's stderr, the
432
+ * refused login, usage and stages, the price, and the outcome, findings and
433
+ * rendered review. `r` is the last turn; `metered` is what the session's budget
434
+ * counted, the price when the stream cannot be priced. */
435
+ export function settleRound(i, prep, result, r, metered) {
436
+ const { cfg, outDir } = i;
437
+ const { events, stderr, startWarnings } = prep;
438
+ const outcomePath = join(outDir, CASE_FILES.outcome);
439
+ const stderrLines = readFileSync(stderr, "utf8").split("\n");
440
+ result.warnings = [
441
+ ...startWarnings,
442
+ ...new Set(stderrLines
443
+ .filter((l) => /warn|error|fatal|failed/i.test(l))
444
+ .map((l) => l.trim().slice(0, 300))),
445
+ ].slice(0, 20);
446
+ if (r.streamError)
447
+ result.error = `output stream failed: ${r.streamError}`;
448
+ // A provider that refused the login says so in pi's own output: a line of
449
+ // stderr, or a failed assistant message in the event stream (a record
450
+ // field, never text a tool printed: authwatch's rule). The typed error is
451
+ // what authwatch and a route's exit status branch on.
452
+ const refused = authRefusal(stderrLines, events, r.streamError);
453
+ if (refused)
454
+ result.authError = refused;
455
+ // Usage is telemetry: a failure to read it must never cost the review.
456
+ try {
457
+ const lines = readFileSync(events, "utf8").split("\n");
458
+ result.usage = usageFromEvents(lines);
459
+ result.modelErrors = modelErrorsFromEvents(lines);
460
+ // Per-stage cost and time (stages.json; the per-phase totals ride along).
461
+ const stages = stagesFromEvents(lines);
462
+ writeFileSync(join(outDir, "stages.json"), JSON.stringify(stages, null, 2) + "\n");
463
+ result.stages = stages.phases;
464
+ // pi's own stderr reports what never reached a message (a refused
465
+ // connection, a 429 before the first token).
466
+ for (const w of result.warnings) {
467
+ const kind = modelErrorKind(w);
468
+ if (kind === "usage_limit")
469
+ result.modelErrors.usage_limit = (result.modelErrors.usage_limit ?? 0) + 1;
470
+ else if (kind === "rate_limited")
471
+ result.modelErrors.rate_limited++;
472
+ else if (kind === "overloaded")
473
+ result.modelErrors.overloaded++;
474
+ }
475
+ }
476
+ catch (err) {
477
+ result.warnings.push(`usage unreadable: ${String(err).slice(0, 200)}`);
478
+ }
479
+ // The price of the whole round, lens children included: the case dir's
480
+ // event stream and lens ledger priced as the bench prices them. A stream
481
+ // that cannot be priced falls back to what the session's budget metered
482
+ // (zero when no cap was set, so unpriced).
483
+ try {
484
+ result.costUsd = caseCostUsd(outDir)?.usd ?? (metered > 0 ? metered : null);
485
+ }
486
+ catch {
487
+ result.costUsd = metered > 0 ? metered : null;
488
+ }
489
+ const outcome = readJson(outcomePath);
490
+ if (outcome !== undefined)
491
+ result.outcome = outcome;
492
+ else if (result.authError && result.error === undefined)
493
+ result.error = `the provider refused the login: ${result.authError.message.slice(0, 200)}`;
494
+ // `[review] render_outputs`: comments.json and review.md rendered from the
495
+ // findings record, as production's render-review.sh renders them. A
496
+ // session that wrote its own files anyway is overruled: the record is the
497
+ // source.
498
+ if (cfg.review.render_outputs) {
499
+ const record = readJson(join(outDir, CASE_FILES.findings));
500
+ if (record !== undefined) {
501
+ const out = renderBenchOutputs(record, outcome, cfg);
502
+ writeFileSync(join(outDir, CASE_FILES.comments), JSON.stringify(out.rendered.comments, null, 2) + "\n");
503
+ writeFileSync(join(outDir, CASE_FILES.review), out.rendered.body);
504
+ // The duplicate-merge post-check's and the posting policy's
505
+ // dispositions, kept in the record (the session's own beside it).
506
+ if (out.record !== record) {
507
+ writeFileSync(join(outDir, POLICED_ORIGINALS[2]), JSON.stringify(record, null, 2) + "\n");
508
+ writeFileSync(join(outDir, CASE_FILES.findings), JSON.stringify(out.record, null, 2) + "\n");
509
+ }
510
+ // The `[posting]` cut ran inside the render step, as on the live
511
+ // route — so a caller must not cut a second time.
512
+ if (!isDefaultPosting(cfg.posting)) {
513
+ result.renderedPosting = {
514
+ kept: out.rendered.comments.length + out.rendered.in_body,
515
+ withheld: out.withheld.map((w) => ({
516
+ path: w.path ?? "",
517
+ line: w.line ?? 0,
518
+ source: w.inline ? "inline" : "body",
519
+ cls: w.cls,
520
+ severity: w.severity,
521
+ word: w.word,
522
+ title: w.title,
523
+ })),
524
+ body: cfg.posting.body,
525
+ };
526
+ writeFileSync(join(outDir, POLICED_ORIGINALS[3]), JSON.stringify(result.renderedPosting, null, 2) + "\n");
527
+ }
528
+ if (out.rendered.problems.length)
529
+ result.warnings.push(...out.rendered.problems.slice(0, 10).map((p) => `render: ${p}`.slice(0, 300)));
530
+ }
531
+ }
532
+ const findings = readJson(join(outDir, CASE_FILES.findings));
533
+ if (findings !== undefined)
534
+ result.findings = findings;
535
+ const comments = readJson(join(outDir, CASE_FILES.comments));
536
+ if (Array.isArray(comments))
537
+ result.comments = comments;
538
+ const reviewPath = join(outDir, CASE_FILES.review);
539
+ if (existsSync(reviewPath))
540
+ result.review = readFileSync(reviewPath, "utf8");
541
+ return result;
542
+ }
543
+ //# sourceMappingURL=round.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round.js","sourceRoot":"","sources":["../../../src/engine/round.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { CoreConfig } from "../reviewconfig.js";
2
+ import { type ProfileLookup } from "../profiles.js";
3
+ /** Build the lens + validator agents into `<root>/.pi/agents` — the PROJECT
4
+ * scope the subagents glue reads when QCR_SUBAGENT_SCOPE=project. The VM uses
5
+ * the user scope (a symlink in its own pihome); here the user scope is the
6
+ * companion's shared agent dir, whose `agents` belongs to the companion.
7
+ * `out` overrides the dir: the `qcr review` route builds into its private agent
8
+ * dir's `agents` (src/hostroute.ts) and runs with the user scope. */
9
+ export declare function buildBenchAgents(root: string, cfg: CoreConfig, out?: string,
10
+ /** A profile's replacements (packages/pi-plugin/src/profileoverrides.ts): `readFile` serves a
11
+ * replaced agent or prompt, `lookup` adds the repo profile's layer. Absent:
12
+ * the shipped files and the named profile alone, as always. */
13
+ profile?: {
14
+ readFile?: (path: string) => string;
15
+ lookup?: ProfileLookup;
16
+ }): number;
17
+ //# sourceMappingURL=roundagents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roundagents.d.ts","sourceRoot":"","sources":["../../../src/engine/roundagents.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,EAA4C,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE9F;;;;;qEAKqE;AACrE,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,UAAU,EACf,GAAG,GAAE,MAAoC;AACzC;;+DAE+D;AAC/D,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAAO,GAC5E,MAAM,CA0BR"}
@@ -0,0 +1,49 @@
1
+ // The lens and validator agents a one-shot round's session resolves, built from
2
+ // the shipped agents with the production addenda: the bench builds them into
3
+ // its project scope, `qcr review` into its run's private agent dir
4
+ // (src/hostroute.ts).
5
+ import { mkdirSync, readdirSync, rmSync } from "node:fs";
6
+ import { join } from "node:path";
7
+ import { buildAgents, configAddenda, identityVars, PASS_ADDENDA } from "../include.js";
8
+ import { lensTuningAddenda, roundAgentModels } from "../lenstuning.js";
9
+ import { postingPolicyAddenda } from "../postingpolicy.js";
10
+ import { loadProfileAddenda, loadProfileEcosystem } from "../profiles.js";
11
+ /** Build the lens + validator agents into `<root>/.pi/agents` — the PROJECT
12
+ * scope the subagents glue reads when QCR_SUBAGENT_SCOPE=project. The VM uses
13
+ * the user scope (a symlink in its own pihome); here the user scope is the
14
+ * companion's shared agent dir, whose `agents` belongs to the companion.
15
+ * `out` overrides the dir: the `qcr review` route builds into its private agent
16
+ * dir's `agents` (src/hostroute.ts) and runs with the user scope. */
17
+ export function buildBenchAgents(root, cfg, out = join(root, ".pi", "agents"),
18
+ /** A profile's replacements (packages/pi-plugin/src/profileoverrides.ts): `readFile` serves a
19
+ * replaced agent or prompt, `lookup` adds the repo profile's layer. Absent:
20
+ * the shipped files and the named profile alone, as always. */
21
+ profile = {}) {
22
+ // Empty it rather than remove it: in the sandbox it is a tmpfs MOUNTPOINT
23
+ // (the root filesystem is read-only), and a mountpoint cannot be rmdir'd.
24
+ mkdirSync(out, { recursive: true });
25
+ for (const f of readdirSync(out))
26
+ rmSync(join(out, f), { recursive: true, force: true });
27
+ const built = buildAgents(join(root, "agents"), out, {
28
+ // The bench round runs without the memory extension (header: memory off).
29
+ memory: false,
30
+ root,
31
+ ...(profile.readFile ? { readFile: profile.readFile } : {}),
32
+ tiers: cfg.models.tiers,
33
+ riskPasses: cfg.models.risk_passes,
34
+ validateTier: cfg.models.validate_tier,
35
+ vars: identityVars(cfg),
36
+ ecosystem: loadProfileEcosystem(root, cfg.review.profile, profile.lookup),
37
+ models: roundAgentModels(cfg),
38
+ addenda: [
39
+ ...PASS_ADDENDA,
40
+ ...configAddenda(cfg.review),
41
+ ...loadProfileAddenda(root, cfg.review.profile, profile.lookup),
42
+ ...lensTuningAddenda(cfg.lenses),
43
+ // The profile's `[posting]` policy, compiled for the validator.
44
+ ...postingPolicyAddenda(cfg.posting),
45
+ ],
46
+ });
47
+ return built.length;
48
+ }
49
+ //# sourceMappingURL=roundagents.js.map