@quickchatai/pi-quickreview 0.0.0-stage → 1.2.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 (697) 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 +1099 -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 +113 -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 +377 -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 +235 -0
  282. package/dist/src/engine/pisdk.d.ts.map +1 -0
  283. package/dist/src/engine/pisdk.js +577 -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 +70 -0
  382. package/dist/src/githubAuth.d.ts.map +1 -0
  383. package/dist/src/githubAuth.js +183 -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 +106 -0
  394. package/dist/src/guards.d.ts.map +1 -0
  395. package/dist/src/guards.js +365 -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/identity.d.ts +34 -0
  414. package/dist/src/identity.d.ts.map +1 -0
  415. package/dist/src/identity.js +67 -0
  416. package/dist/src/identity.js.map +1 -0
  417. package/dist/src/include.d.ts +435 -0
  418. package/dist/src/include.d.ts.map +1 -0
  419. package/dist/src/include.js +1692 -0
  420. package/dist/src/include.js.map +1 -0
  421. package/dist/src/launchvocab.d.ts +36 -0
  422. package/dist/src/launchvocab.d.ts.map +1 -0
  423. package/dist/src/launchvocab.js +59 -0
  424. package/dist/src/launchvocab.js.map +1 -0
  425. package/dist/src/ledgercarry.d.ts +24 -0
  426. package/dist/src/ledgercarry.d.ts.map +1 -0
  427. package/dist/src/ledgercarry.js +109 -0
  428. package/dist/src/ledgercarry.js.map +1 -0
  429. package/dist/src/lensids.d.ts +7 -0
  430. package/dist/src/lensids.d.ts.map +1 -0
  431. package/dist/src/lensids.js +53 -0
  432. package/dist/src/lensids.js.map +1 -0
  433. package/dist/src/lensplanning.d.ts +8 -0
  434. package/dist/src/lensplanning.d.ts.map +1 -0
  435. package/dist/src/lensplanning.js +126 -0
  436. package/dist/src/lensplanning.js.map +1 -0
  437. package/dist/src/lensresult.d.ts +94 -0
  438. package/dist/src/lensresult.d.ts.map +1 -0
  439. package/dist/src/lensresult.js +162 -0
  440. package/dist/src/lensresult.js.map +1 -0
  441. package/dist/src/lenstuning.d.ts +97 -0
  442. package/dist/src/lenstuning.d.ts.map +1 -0
  443. package/dist/src/lenstuning.js +326 -0
  444. package/dist/src/lenstuning.js.map +1 -0
  445. package/dist/src/lintconfig.d.ts +31 -0
  446. package/dist/src/lintconfig.d.ts.map +1 -0
  447. package/dist/src/lintconfig.js +543 -0
  448. package/dist/src/lintconfig.js.map +1 -0
  449. package/dist/src/live/events.d.ts +188 -0
  450. package/dist/src/live/events.d.ts.map +1 -0
  451. package/dist/src/live/events.js +136 -0
  452. package/dist/src/live/events.js.map +1 -0
  453. package/dist/src/live/writer.d.ts +54 -0
  454. package/dist/src/live/writer.d.ts.map +1 -0
  455. package/dist/src/live/writer.js +516 -0
  456. package/dist/src/live/writer.js.map +1 -0
  457. package/dist/src/localreview.d.ts +128 -0
  458. package/dist/src/localreview.d.ts.map +1 -0
  459. package/dist/src/localreview.js +426 -0
  460. package/dist/src/localreview.js.map +1 -0
  461. package/dist/src/loosenedtests.d.ts +13 -0
  462. package/dist/src/loosenedtests.d.ts.map +1 -0
  463. package/dist/src/loosenedtests.js +188 -0
  464. package/dist/src/loosenedtests.js.map +1 -0
  465. package/dist/src/memoryport.d.ts +264 -0
  466. package/dist/src/memoryport.d.ts.map +1 -0
  467. package/dist/src/memoryport.js +445 -0
  468. package/dist/src/memoryport.js.map +1 -0
  469. package/dist/src/migrations.d.ts +106 -0
  470. package/dist/src/migrations.d.ts.map +1 -0
  471. package/dist/src/migrations.js +373 -0
  472. package/dist/src/migrations.js.map +1 -0
  473. package/dist/src/modelroute.d.ts +38 -0
  474. package/dist/src/modelroute.d.ts.map +1 -0
  475. package/dist/src/modelroute.js +105 -0
  476. package/dist/src/modelroute.js.map +1 -0
  477. package/dist/src/oneshot.d.ts +12 -0
  478. package/dist/src/oneshot.d.ts.map +1 -0
  479. package/dist/src/oneshot.js +8 -0
  480. package/dist/src/oneshot.js.map +1 -0
  481. package/dist/src/packing.d.ts +11 -0
  482. package/dist/src/packing.d.ts.map +1 -0
  483. package/dist/src/packing.js +31 -0
  484. package/dist/src/packing.js.map +1 -0
  485. package/dist/src/passes.d.ts +16 -0
  486. package/dist/src/passes.d.ts.map +1 -0
  487. package/dist/src/passes.js +104 -0
  488. package/dist/src/passes.js.map +1 -0
  489. package/dist/src/passtasks.d.ts +68 -0
  490. package/dist/src/passtasks.d.ts.map +1 -0
  491. package/dist/src/passtasks.js +360 -0
  492. package/dist/src/passtasks.js.map +1 -0
  493. package/dist/src/pathinside.d.ts +5 -0
  494. package/dist/src/pathinside.d.ts.map +1 -0
  495. package/dist/src/pathinside.js +9 -0
  496. package/dist/src/pathinside.js.map +1 -0
  497. package/dist/src/pibuiltins.d.ts +36 -0
  498. package/dist/src/pibuiltins.d.ts.map +1 -0
  499. package/dist/src/pibuiltins.js +83 -0
  500. package/dist/src/pibuiltins.js.map +1 -0
  501. package/dist/src/plankey.d.ts +4 -0
  502. package/dist/src/plankey.d.ts.map +1 -0
  503. package/dist/src/plankey.js +10 -0
  504. package/dist/src/plankey.js.map +1 -0
  505. package/dist/src/planner.d.ts +375 -0
  506. package/dist/src/planner.d.ts.map +1 -0
  507. package/dist/src/planner.js +722 -0
  508. package/dist/src/planner.js.map +1 -0
  509. package/dist/src/plugin/args.d.ts +19 -0
  510. package/dist/src/plugin/args.d.ts.map +1 -0
  511. package/dist/src/plugin/args.js +107 -0
  512. package/dist/src/plugin/args.js.map +1 -0
  513. package/dist/src/plugin/index.d.ts +3 -0
  514. package/dist/src/plugin/index.d.ts.map +1 -0
  515. package/dist/src/plugin/index.js +14 -0
  516. package/dist/src/plugin/index.js.map +1 -0
  517. package/dist/src/plugin/login.d.ts +42 -0
  518. package/dist/src/plugin/login.d.ts.map +1 -0
  519. package/dist/src/plugin/login.js +82 -0
  520. package/dist/src/plugin/login.js.map +1 -0
  521. package/dist/src/plugin/review.d.ts +27 -0
  522. package/dist/src/plugin/review.d.ts.map +1 -0
  523. package/dist/src/plugin/review.js +302 -0
  524. package/dist/src/plugin/review.js.map +1 -0
  525. package/dist/src/plugin/runner.d.ts +6 -0
  526. package/dist/src/plugin/runner.d.ts.map +1 -0
  527. package/dist/src/plugin/runner.js +65 -0
  528. package/dist/src/plugin/runner.js.map +1 -0
  529. package/dist/src/plugin/scan.d.ts +79 -0
  530. package/dist/src/plugin/scan.d.ts.map +1 -0
  531. package/dist/src/plugin/scan.js +348 -0
  532. package/dist/src/plugin/scan.js.map +1 -0
  533. package/dist/src/plugin/session.d.ts +56 -0
  534. package/dist/src/plugin/session.d.ts.map +1 -0
  535. package/dist/src/plugin/session.js +2 -0
  536. package/dist/src/plugin/session.js.map +1 -0
  537. package/dist/src/plugin/setup.d.ts +19 -0
  538. package/dist/src/plugin/setup.d.ts.map +1 -0
  539. package/dist/src/plugin/setup.js +142 -0
  540. package/dist/src/plugin/setup.js.map +1 -0
  541. package/dist/src/plugin/versiongate.d.ts +26 -0
  542. package/dist/src/plugin/versiongate.d.ts.map +1 -0
  543. package/dist/src/plugin/versiongate.js +83 -0
  544. package/dist/src/plugin/versiongate.js.map +1 -0
  545. package/dist/src/postingkey.d.ts +8 -0
  546. package/dist/src/postingkey.d.ts.map +1 -0
  547. package/dist/src/postingkey.js +25 -0
  548. package/dist/src/postingkey.js.map +1 -0
  549. package/dist/src/postingpolicy.d.ts +108 -0
  550. package/dist/src/postingpolicy.d.ts.map +1 -0
  551. package/dist/src/postingpolicy.js +341 -0
  552. package/dist/src/postingpolicy.js.map +1 -0
  553. package/dist/src/pr-identity.d.ts +3 -0
  554. package/dist/src/pr-identity.d.ts.map +1 -0
  555. package/dist/src/pr-identity.js +9 -0
  556. package/dist/src/pr-identity.js.map +1 -0
  557. package/dist/src/prdelta.d.ts +181 -0
  558. package/dist/src/prdelta.d.ts.map +1 -0
  559. package/dist/src/prdelta.js +501 -0
  560. package/dist/src/prdelta.js.map +1 -0
  561. package/dist/src/pricing.d.ts +94 -0
  562. package/dist/src/pricing.d.ts.map +1 -0
  563. package/dist/src/pricing.js +209 -0
  564. package/dist/src/pricing.js.map +1 -0
  565. package/dist/src/priorfindings.d.ts +167 -0
  566. package/dist/src/priorfindings.d.ts.map +1 -0
  567. package/dist/src/priorfindings.js +445 -0
  568. package/dist/src/priorfindings.js.map +1 -0
  569. package/dist/src/priortasks.d.ts +31 -0
  570. package/dist/src/priortasks.d.ts.map +1 -0
  571. package/dist/src/priortasks.js +119 -0
  572. package/dist/src/priortasks.js.map +1 -0
  573. package/dist/src/profilelookup.d.ts +59 -0
  574. package/dist/src/profilelookup.d.ts.map +1 -0
  575. package/dist/src/profilelookup.js +98 -0
  576. package/dist/src/profilelookup.js.map +1 -0
  577. package/dist/src/profileoverrides.d.ts +91 -0
  578. package/dist/src/profileoverrides.d.ts.map +1 -0
  579. package/dist/src/profileoverrides.js +313 -0
  580. package/dist/src/profileoverrides.js.map +1 -0
  581. package/dist/src/profiles.d.ts +144 -0
  582. package/dist/src/profiles.d.ts.map +1 -0
  583. package/dist/src/profiles.js +604 -0
  584. package/dist/src/profiles.js.map +1 -0
  585. package/dist/src/promptdoc.d.ts +3 -0
  586. package/dist/src/promptdoc.d.ts.map +1 -0
  587. package/dist/src/promptdoc.js +18 -0
  588. package/dist/src/promptdoc.js.map +1 -0
  589. package/dist/src/prtarget.d.ts +70 -0
  590. package/dist/src/prtarget.d.ts.map +1 -0
  591. package/dist/src/prtarget.js +181 -0
  592. package/dist/src/prtarget.js.map +1 -0
  593. package/dist/src/recheckorder.d.ts +32 -0
  594. package/dist/src/recheckorder.d.ts.map +1 -0
  595. package/dist/src/recheckorder.js +5 -0
  596. package/dist/src/recheckorder.js.map +1 -0
  597. package/dist/src/reviewapi.d.ts +207 -0
  598. package/dist/src/reviewapi.d.ts.map +1 -0
  599. package/dist/src/reviewapi.js +939 -0
  600. package/dist/src/reviewapi.js.map +1 -0
  601. package/dist/src/reviewbotfindings.d.ts +33 -0
  602. package/dist/src/reviewbotfindings.d.ts.map +1 -0
  603. package/dist/src/reviewbotfindings.js +80 -0
  604. package/dist/src/reviewbotfindings.js.map +1 -0
  605. package/dist/src/reviewconfig.d.ts +753 -0
  606. package/dist/src/reviewconfig.d.ts.map +1 -0
  607. package/dist/src/reviewconfig.js +805 -0
  608. package/dist/src/reviewconfig.js.map +1 -0
  609. package/dist/src/reviewdelta.d.ts +51 -0
  610. package/dist/src/reviewdelta.d.ts.map +1 -0
  611. package/dist/src/reviewdelta.js +119 -0
  612. package/dist/src/reviewdelta.js.map +1 -0
  613. package/dist/src/reviewdest.d.ts +86 -0
  614. package/dist/src/reviewdest.d.ts.map +1 -0
  615. package/dist/src/reviewdest.js +142 -0
  616. package/dist/src/reviewdest.js.map +1 -0
  617. package/dist/src/reviewerstub.d.ts +12 -0
  618. package/dist/src/reviewerstub.d.ts.map +1 -0
  619. package/dist/src/reviewerstub.js +28 -0
  620. package/dist/src/reviewerstub.js.map +1 -0
  621. package/dist/src/reviewhost.d.ts +58 -0
  622. package/dist/src/reviewhost.d.ts.map +1 -0
  623. package/dist/src/reviewhost.js +135 -0
  624. package/dist/src/reviewhost.js.map +1 -0
  625. package/dist/src/reviewpost.d.ts +79 -0
  626. package/dist/src/reviewpost.d.ts.map +1 -0
  627. package/dist/src/reviewpost.js +233 -0
  628. package/dist/src/reviewpost.js.map +1 -0
  629. package/dist/src/reviewrender.d.ts +154 -0
  630. package/dist/src/reviewrender.d.ts.map +1 -0
  631. package/dist/src/reviewrender.js +480 -0
  632. package/dist/src/reviewrender.js.map +1 -0
  633. package/dist/src/reviewstate.d.ts +62 -0
  634. package/dist/src/reviewstate.d.ts.map +1 -0
  635. package/dist/src/reviewstate.js +167 -0
  636. package/dist/src/reviewstate.js.map +1 -0
  637. package/dist/src/reviewstore.d.ts +17 -0
  638. package/dist/src/reviewstore.d.ts.map +1 -0
  639. package/dist/src/reviewstore.js +105 -0
  640. package/dist/src/reviewstore.js.map +1 -0
  641. package/dist/src/round-progress.d.ts +120 -0
  642. package/dist/src/round-progress.d.ts.map +1 -0
  643. package/dist/src/round-progress.js +172 -0
  644. package/dist/src/round-progress.js.map +1 -0
  645. package/dist/src/round-stage-deadlines.d.ts +12 -0
  646. package/dist/src/round-stage-deadlines.d.ts.map +1 -0
  647. package/dist/src/round-stage-deadlines.js +10 -0
  648. package/dist/src/round-stage-deadlines.js.map +1 -0
  649. package/dist/src/session-command.d.ts +19 -0
  650. package/dist/src/session-command.d.ts.map +1 -0
  651. package/dist/src/session-command.js +20 -0
  652. package/dist/src/session-command.js.map +1 -0
  653. package/dist/src/settledread.d.ts +61 -0
  654. package/dist/src/settledread.d.ts.map +1 -0
  655. package/dist/src/settledread.js +135 -0
  656. package/dist/src/settledread.js.map +1 -0
  657. package/dist/src/severity.d.ts +167 -0
  658. package/dist/src/severity.d.ts.map +1 -0
  659. package/dist/src/severity.js +364 -0
  660. package/dist/src/severity.js.map +1 -0
  661. package/dist/src/severityrank.d.ts +8 -0
  662. package/dist/src/severityrank.d.ts.map +1 -0
  663. package/dist/src/severityrank.js +16 -0
  664. package/dist/src/severityrank.js.map +1 -0
  665. package/dist/src/standing-review.d.ts +45 -0
  666. package/dist/src/standing-review.d.ts.map +1 -0
  667. package/dist/src/standing-review.js +43 -0
  668. package/dist/src/standing-review.js.map +1 -0
  669. package/dist/src/storerows.d.ts +225 -0
  670. package/dist/src/storerows.d.ts.map +1 -0
  671. package/dist/src/storerows.js +7 -0
  672. package/dist/src/storerows.js.map +1 -0
  673. package/dist/src/styleguide.d.ts +25 -0
  674. package/dist/src/styleguide.d.ts.map +1 -0
  675. package/dist/src/styleguide.js +272 -0
  676. package/dist/src/styleguide.js.map +1 -0
  677. package/dist/src/sweepstatus.d.ts +42 -0
  678. package/dist/src/sweepstatus.d.ts.map +1 -0
  679. package/dist/src/sweepstatus.js +97 -0
  680. package/dist/src/sweepstatus.js.map +1 -0
  681. package/dist/src/templates.d.ts +243 -0
  682. package/dist/src/templates.d.ts.map +1 -0
  683. package/dist/src/templates.js +847 -0
  684. package/dist/src/templates.js.map +1 -0
  685. package/dist/src/types.d.ts +639 -0
  686. package/dist/src/types.d.ts.map +1 -0
  687. package/dist/src/types.js +90 -0
  688. package/dist/src/types.js.map +1 -0
  689. package/dist/src/unifieddiff.d.ts +22 -0
  690. package/dist/src/unifieddiff.d.ts.map +1 -0
  691. package/dist/src/unifieddiff.js +176 -0
  692. package/dist/src/unifieddiff.js.map +1 -0
  693. package/dist/src/yieldloop.d.ts +2 -0
  694. package/dist/src/yieldloop.d.ts.map +1 -0
  695. package/dist/src/yieldloop.js +14 -0
  696. package/dist/src/yieldloop.js.map +1 -0
  697. package/package.json +60 -4
@@ -0,0 +1,21 @@
1
+ /** What a stop needs of a session: a RuntimeSession fits. */
2
+ export interface StoppableSession {
3
+ abort(): Promise<void>;
4
+ dispose(): Promise<void>;
5
+ }
6
+ /** A session is running; the returned release forgets it (call it on dispose). */
7
+ export declare function trackSession(session: StoppableSession): () => void;
8
+ /** How many sessions are running now. */
9
+ export declare function liveSessionCount(): number;
10
+ /** This process hosts its pi sessions on the SDK: a stop signal ends it through
11
+ * `stopLiveSessions` and an exit, not through the pi children's groups. Set by
12
+ * the route as it picks the runtime, before any session exists, so a signal
13
+ * that arrives while the host is still being built is already an SDK stop. */
14
+ export declare function markSdkRoute(): void;
15
+ export declare function onSdkRoute(): boolean;
16
+ /** Test seam: forget the route mark and any session left. */
17
+ export declare function resetLiveSessions(): void;
18
+ /** Stop every running session: all aborted, then all disposed, each step given
19
+ * `graceMs` at most. Never rejects. */
20
+ export declare function stopLiveSessions(graceMs?: number): Promise<void>;
21
+ //# sourceMappingURL=livesessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"livesessions.d.ts","sourceRoot":"","sources":["../../../src/engine/livesessions.ts"],"names":[],"mappings":"AAQA,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAKD,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,IAAI,CAKlE;AAED,yCAAyC;AACzC,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;8EAG8E;AAC9E,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAgBD;uCACuC;AACvC,wBAAsB,gBAAgB,CAAC,OAAO,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAIrE"}
@@ -0,0 +1,57 @@
1
+ // The SDK sessions this process has running, so a signal handler elsewhere
2
+ // (src/reviewdetach.ts runDetachedChild) can stop them. An SDK session lives in
3
+ // this very process, so the stop is `abort()`, then `dispose()`, then the
4
+ // process exit.
5
+ //
6
+ // Kept apart from sdkruntime.ts so that the detached driver can import it
7
+ // without loading the pi SDK (tests/fences-engine.test.ts S2).
8
+ const live = new Set();
9
+ let sdkRoute = false;
10
+ /** A session is running; the returned release forgets it (call it on dispose). */
11
+ export function trackSession(session) {
12
+ live.add(session);
13
+ return () => {
14
+ live.delete(session);
15
+ };
16
+ }
17
+ /** How many sessions are running now. */
18
+ export function liveSessionCount() {
19
+ return live.size;
20
+ }
21
+ /** This process hosts its pi sessions on the SDK: a stop signal ends it through
22
+ * `stopLiveSessions` and an exit, not through the pi children's groups. Set by
23
+ * the route as it picks the runtime, before any session exists, so a signal
24
+ * that arrives while the host is still being built is already an SDK stop. */
25
+ export function markSdkRoute() {
26
+ sdkRoute = true;
27
+ }
28
+ export function onSdkRoute() {
29
+ return sdkRoute;
30
+ }
31
+ /** Test seam: forget the route mark and any session left. */
32
+ export function resetLiveSessions() {
33
+ live.clear();
34
+ sdkRoute = false;
35
+ }
36
+ /** Resolve when `step` has, or after `ms`, whichever comes first: a stop that
37
+ * waited on a wedged session would never reach the exit behind it. */
38
+ async function within(step, ms) {
39
+ let timer;
40
+ const limit = new Promise((resolve) => {
41
+ timer = setTimeout(resolve, ms);
42
+ });
43
+ try {
44
+ await Promise.race([step.catch(() => undefined), limit]);
45
+ }
46
+ finally {
47
+ clearTimeout(timer);
48
+ }
49
+ }
50
+ /** Stop every running session: all aborted, then all disposed, each step given
51
+ * `graceMs` at most. Never rejects. */
52
+ export async function stopLiveSessions(graceMs = 5_000) {
53
+ const sessions = [...live];
54
+ await within(Promise.allSettled(sessions.map((s) => s.abort())), graceMs);
55
+ await within(Promise.allSettled(sessions.map((s) => s.dispose())), graceMs);
56
+ }
57
+ //# sourceMappingURL=livesessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"livesessions.js","sourceRoot":"","sources":["../../../src/engine/livesessions.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gFAAgF;AAChF,0EAA0E;AAC1E,gBAAgB;AAChB,EAAE;AACF,0EAA0E;AAC1E,+DAA+D;AAQ/D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;AACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAAC,OAAyB;IACpD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClB,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED;;;8EAG8E;AAC9E,MAAM,UAAU,YAAY;IAC1B,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,QAAQ,GAAG,KAAK,CAAC;AACnB,CAAC;AAED;sEACsE;AACtE,KAAK,UAAU,MAAM,CAAC,IAAsB,EAAE,EAAU;IACtD,IAAI,KAAgD,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC1C,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3D,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;uCACuC;AACvC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAO,GAAG,KAAK;IACpD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3B,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type LiveSink, type LiveWriter } from "../live/writer.js";
2
+ /** Where a round's LiveEvent logs go: `<root>/state/live/<key>/r<round>/`. */
3
+ export interface RoundLive {
4
+ /** The state-bearing directory (a run dir on the one-shot routes). */
5
+ root: string;
6
+ /** `pr-<n>` on the bot; the review's name on a one-shot. */
7
+ key: string;
8
+ round: number;
9
+ }
10
+ /** The writer for one round. `env` is the session's environment: a launch plan
11
+ * resolves its task dirs against it, as the lens tool does. */
12
+ export declare function roundLiveWriter(live: RoundLive, env: Readonly<Record<string, string | undefined>>, warn?: (message: string) => void): LiveWriter;
13
+ /** The main session's sink for a round, started with its identity. */
14
+ export declare function openRoundSink(live: RoundLive, who: {
15
+ pr: number;
16
+ session: string;
17
+ }, env: Readonly<Record<string, string | undefined>>, warn?: (message: string) => void): LiveSink;
18
+ //# sourceMappingURL=livewire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"livewire.d.ts","sourceRoot":"","sources":["../../../src/engine/livewire.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGrF,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;+DAC+D;AAC/D,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACjD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC/B,UAAU,CAUZ;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,SAAS,EACf,GAAG,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACpC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACjD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC/B,QAAQ,CAOV"}
@@ -0,0 +1,31 @@
1
+ // The engine's side of the LiveEvent log (src/live/): which directory a round
2
+ // writes to, and how a `launch_plan` call is resolved into the tasks it
3
+ // launches. The writer itself knows nothing of the lens tool or the task dirs
4
+ // (so a daemon-side reader can import src/live/ without the engine); this is
5
+ // the one place they meet.
6
+ import { liveRoundDir } from "../live/events.js";
7
+ import { createLiveWriter } from "../live/writer.js";
8
+ import { planLaunch } from "./lens/launch-plan.js";
9
+ /** The writer for one round. `env` is the session's environment: a launch plan
10
+ * resolves its task dirs against it, as the lens tool does. */
11
+ export function roundLiveWriter(live, env, warn) {
12
+ return createLiveWriter({
13
+ dir: liveRoundDir(live.root, live.key, live.round),
14
+ env,
15
+ ...(warn ? { warn } : {}),
16
+ launchExecutions: (args, planEnv) => {
17
+ const plan = planLaunch(args, { ...planEnv });
18
+ return plan.ok ? plan.units.map(({ agent, phase }) => ({ agent, phase })) : [];
19
+ },
20
+ });
21
+ }
22
+ /** The main session's sink for a round, started with its identity. */
23
+ export function openRoundSink(live, who, env, warn) {
24
+ return roundLiveWriter(live, env, warn).main({
25
+ key: live.key,
26
+ round: live.round,
27
+ pr: who.pr,
28
+ session: who.session,
29
+ });
30
+ }
31
+ //# sourceMappingURL=livewire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"livewire.js","sourceRoot":"","sources":["../../../src/engine/livewire.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAC9E,6EAA6E;AAC7E,2BAA2B;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAkC,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAWnD;+DAC+D;AAC/D,MAAM,UAAU,eAAe,CAC7B,IAAe,EACf,GAAiD,EACjD,IAAgC;IAEhC,OAAO,gBAAgB,CAAC;QACtB,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;QAClD,GAAG;QACH,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAC3B,IAAe,EACf,GAAoC,EACpC,GAAiD,EACjD,IAAgC;IAEhC,OAAO,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC;QAC3C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,37 @@
1
+ /** Under a round's dir: the main session's JSONL. */
2
+ export declare const MAIN_SESSION_DIR = "session";
3
+ /** Under a round's dir: one directory per lens pass, holding its session JSONL. */
4
+ export declare const LENS_SESSIONS_DIR = "lens-sessions";
5
+ /** A round's lens ledger, in the dir that keeps its lens sessions. */
6
+ export declare const LENS_LEDGER_FILE = "lens-ledger.jsonl";
7
+ export declare const OPEN_META_FILE = "open-meta.json";
8
+ /** What a debug round (`qcr review --debug-pi`) records of itself in the round dir. */
9
+ export declare const DEBUG_STATUS_FILE = "debug-round.json";
10
+ export declare function openEnvOf(env: Readonly<Record<string, string | undefined>>): Record<string, string>;
11
+ export interface OpenMeta {
12
+ version: 1;
13
+ sessionName: string;
14
+ /** Where the round's pi ran (the run's out dir, holding the reviewer stub). */
15
+ cwd: string;
16
+ model: string;
17
+ /** The round's QCR_* env, without anything secret-looking. */
18
+ env: Record<string, string>;
19
+ }
20
+ export declare function writeOpenMeta(roundDir: string, meta: OpenMeta): void;
21
+ export declare function readOpenMeta(roundDir: string): OpenMeta | null;
22
+ /** The newest session JSONL directly in `dir`; null when there is none. */
23
+ export declare function newestJsonl(dir: string): string | null;
24
+ /** The round's main session JSONL. */
25
+ export declare function mainSessionOf(roundDir: string): string | null;
26
+ export interface LensSessionRef {
27
+ /** The lens run id (a scan: the case's file stem). */
28
+ id: string;
29
+ file: string;
30
+ }
31
+ /** The lens sessions a round kept, oldest first, each with its last attempt's file. */
32
+ export declare function lensSessionsOf(roundDir: string): LensSessionRef[];
33
+ /** Agent name by lens run id, from the round's lens ledger. */
34
+ export declare function lensAgentsOf(roundDir: string): Map<string, string>;
35
+ /** Whether `dir` is a round dir that kept at least one session. */
36
+ export declare function hasSessions(dir: string): boolean;
37
+ //# sourceMappingURL=openable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openable.d.ts","sourceRoot":"","sources":["../../../src/engine/openable.ts"],"names":[],"mappings":"AAeA,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AACjD,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AAMpD,wBAAgB,SAAS,CACvB,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAChD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKxB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAOpE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAO9D;AAUD,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYtD;AAED,sCAAsC;AACtC,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE7D;AAED,MAAM,WAAW,cAAc;IAC7B,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAYjE;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBlE;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD"}
@@ -0,0 +1,120 @@
1
+ // What makes a finished round openable in pi: where its session JSONLs
2
+ // live under the run dir, and the small record `qcr open` needs to start pi on
3
+ // them again. Pure: no pi SDK, no engine, so the CLI, the scan runner and the
4
+ // extensions can all import it.
5
+ //
6
+ // <round dir>/session/<time>_<id>.jsonl the main session
7
+ // <round dir>/lens-sessions/<lens run id>/*.jsonl one lens pass (a retried
8
+ // pass leaves a file per attempt)
9
+ // <round dir>/open-meta.json how to start pi on them
10
+ //
11
+ // A scan keeps its leaves the same way, one directory per case under the
12
+ // run's transcript dir (`scan/transcripts/<run>/lens-sessions/<case>/`).
13
+ import { mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
14
+ import { join } from "node:path";
15
+ /** Under a round's dir: the main session's JSONL. */
16
+ export const MAIN_SESSION_DIR = "session";
17
+ /** Under a round's dir: one directory per lens pass, holding its session JSONL. */
18
+ export const LENS_SESSIONS_DIR = "lens-sessions";
19
+ /** A round's lens ledger, in the dir that keeps its lens sessions. */
20
+ export const LENS_LEDGER_FILE = "lens-ledger.jsonl";
21
+ export const OPEN_META_FILE = "open-meta.json";
22
+ /** What a debug round (`qcr review --debug-pi`) records of itself in the round dir. */
23
+ export const DEBUG_STATUS_FILE = "debug-round.json";
24
+ /** The names of a round's env that are kept for `qcr open`: the QCR_* names the
25
+ * round's extensions read. A name that smells of a secret is never kept. */
26
+ const SECRETISH = /KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL/i;
27
+ export function openEnvOf(env) {
28
+ const out = {};
29
+ for (const [k, v] of Object.entries(env))
30
+ if (k.startsWith("QCR_") && v !== undefined && !SECRETISH.test(k))
31
+ out[k] = v;
32
+ return out;
33
+ }
34
+ export function writeOpenMeta(roundDir, meta) {
35
+ try {
36
+ mkdirSync(roundDir, { recursive: true });
37
+ writeFileSync(join(roundDir, OPEN_META_FILE), JSON.stringify(meta, null, 2) + "\n");
38
+ }
39
+ catch {
40
+ // Openability is evidence: a failure to record it never costs the round.
41
+ }
42
+ }
43
+ export function readOpenMeta(roundDir) {
44
+ try {
45
+ const m = JSON.parse(readFileSync(join(roundDir, OPEN_META_FILE), "utf8"));
46
+ return m.version === 1 && typeof m.cwd === "string" && typeof m.env === "object" ? m : null;
47
+ }
48
+ catch {
49
+ return null;
50
+ }
51
+ }
52
+ const mtime = (path) => {
53
+ try {
54
+ return statSync(path).mtimeMs;
55
+ }
56
+ catch {
57
+ return 0;
58
+ }
59
+ };
60
+ /** The newest session JSONL directly in `dir`; null when there is none. */
61
+ export function newestJsonl(dir) {
62
+ let names;
63
+ try {
64
+ names = readdirSync(dir);
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ const files = names
70
+ .filter((n) => n.endsWith(".jsonl"))
71
+ .map((n) => join(dir, n))
72
+ .sort((a, b) => mtime(b) - mtime(a) || b.localeCompare(a));
73
+ return files[0] ?? null;
74
+ }
75
+ /** The round's main session JSONL. */
76
+ export function mainSessionOf(roundDir) {
77
+ return newestJsonl(join(roundDir, MAIN_SESSION_DIR));
78
+ }
79
+ /** The lens sessions a round kept, oldest first, each with its last attempt's file. */
80
+ export function lensSessionsOf(roundDir) {
81
+ const base = join(roundDir, LENS_SESSIONS_DIR);
82
+ let ids;
83
+ try {
84
+ ids = readdirSync(base);
85
+ }
86
+ catch {
87
+ return [];
88
+ }
89
+ return ids
90
+ .map((id) => ({ id, file: newestJsonl(join(base, id)) }))
91
+ .filter((r) => r.file !== null)
92
+ .sort((a, b) => mtime(a.file) - mtime(b.file) || a.id.localeCompare(b.id));
93
+ }
94
+ /** Agent name by lens run id, from the round's lens ledger. */
95
+ export function lensAgentsOf(roundDir) {
96
+ const out = new Map();
97
+ try {
98
+ for (const line of readFileSync(join(roundDir, LENS_LEDGER_FILE), "utf8").split("\n")) {
99
+ if (!line.trim())
100
+ continue;
101
+ try {
102
+ const row = JSON.parse(line);
103
+ if (typeof row.id === "string" && typeof row.agent === "string")
104
+ out.set(row.id, row.agent);
105
+ }
106
+ catch {
107
+ // a torn line
108
+ }
109
+ }
110
+ }
111
+ catch {
112
+ // no ledger: ids only
113
+ }
114
+ return out;
115
+ }
116
+ /** Whether `dir` is a round dir that kept at least one session. */
117
+ export function hasSessions(dir) {
118
+ return mainSessionOf(dir) !== null || lensSessionsOf(dir).length > 0;
119
+ }
120
+ //# sourceMappingURL=openable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openable.js","sourceRoot":"","sources":["../../../src/engine/openable.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,+EAA+E;AAC/E,8EAA8E;AAC9E,gCAAgC;AAChC,EAAE;AACF,sEAAsE;AACtE,8EAA8E;AAC9E,qFAAqF;AACrF,6EAA6E;AAC7E,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAC1C,mFAAmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AACjD,sEAAsE;AACtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AACpD,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,uFAAuF;AACvF,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAEpD;4EAC4E;AAC5E,MAAM,SAAS,GAAG,uCAAuC,CAAC;AAE1D,MAAM,UAAU,SAAS,CACvB,GAAiD;IAEjD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QACtC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChF,OAAO,GAAG,CAAC;AACb,CAAC;AAYD,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAc;IAC5D,IAAI,CAAC;QACH,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAa,CAAC;QACvF,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE;IACrC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,KAAK;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SACxB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC1B,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACvD,CAAC;AAQD,uFAAuF;AACvF,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAC/C,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,GAAG;SACP,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACxD,MAAM,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;SACnD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsC,CAAC;gBAClE,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;oBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9F,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,235 @@
1
+ import type { Api, Model } from "@earendil-works/pi-ai";
2
+ import { type AgentSession, type CreateAgentSessionOptions, type CreateModelRuntimeOptions, type ExtensionError, type ExtensionFactory, type ToolDefinition, ModelRuntime, SessionManager, SettingsManager } from "@earendil-works/pi-coding-agent";
3
+ import type { AgentsFile } from "./port.js";
4
+ import { type ImageSniffer, type ToolFence } from "./toolfence.js";
5
+ import { type ToolIds } from "./tooluid.js";
6
+ /** Where undici keeps the process-global dispatcher: both Node's bundled fetch
7
+ * and the npm undici pi installs read this one symbol. */
8
+ export declare const UNDICI_GLOBAL_DISPATCHER: unique symbol;
9
+ /** The idle timeout the production routes run pi with (bench/aacr/Dockerfile's
10
+ * project settings). pi's own default is five minutes. */
11
+ export declare const DEFAULT_HTTP_IDLE_TIMEOUT_MS = 120000;
12
+ /** What PiHost found, or did, about the process-global HTTP dispatcher.
13
+ * - installed: pi's dispatcher, installed by a PiHost of this process.
14
+ * - reused: someone else's (a CLI pi's) is in place and was left there.
15
+ * - none: the route does not own the process, so nothing was installed. */
16
+ export type DispatcherOutcome = "installed" | "reused" | "none";
17
+ /** The process title pi's CLI gives itself: its APP_NAME (`pi` unless the
18
+ * package's piConfig renames it), with `-rpc` appended by the rpc entry. */
19
+ export declare function piCliTitles(): readonly string[];
20
+ /** True inside a pi CLI process (setupCli and rpc-entry set both signals): the
21
+ * dispatcher there is pi's own and must never be replaced. The environment flag
22
+ * alone is not proof: pi's bash tool hands it to every child, so a standalone
23
+ * `qcr review` started from a pi session inherits it. The process title is set
24
+ * per process and never inherited, so it must agree. */
25
+ export declare function insideCliPi(env?: NodeJS.ProcessEnv, title?: string): boolean;
26
+ /** The directory of the pi package this module runs against: pi's own answer
27
+ * (its exported getPackageDir), so an extension inside a running pi, whose
28
+ * package directory holds no pi of its own, gets the running one. */
29
+ export declare function piPackageDir(): string;
30
+ export type ConfigureHttpDispatcher = (timeoutMs?: number) => void;
31
+ /** pi's own configureHttpDispatcher, deep-imported by file path (the export map
32
+ * does not publish it). It is the same module instance pi's SDK uses, so
33
+ * its fetch bookkeeping stays single. Throws if pi moved or renamed it: that is
34
+ * drift, and canary 6 is where a bump finds out. */
35
+ export declare function loadConfigureHttpDispatcher(): Promise<ConfigureHttpDispatcher>;
36
+ type SessionOpen = typeof SessionManager.open;
37
+ /** Make `SessionManager.open` default its cwd to `cwd()` (the launcher's, as its
38
+ * host resolves it) instead of the session header's, the way `resumeFile` below opens a session in the spec's cwd. Idempotent.
39
+ * An explicit override (pi's own missing-cwd recovery) still wins. VERIFY-ON-PIN: pi's
40
+ * CLI reaches the class's static `open` at call time (main.js createSessionManager;
41
+ * tests/picwd.test.ts drives the real one). */
42
+ export declare function pinSessionCwd(manager: {
43
+ open: SessionOpen;
44
+ }, cwd: () => string): void;
45
+ /** pi's own CLI entry (its cli.js: setupCli, then main) with the session cwd pinned
46
+ * to `cwd()`, the launching process's (src/picwd.ts). setupCli's steps are repeated
47
+ * here because the package does not export it: the same title and flags (so
48
+ * `insideCliPi` answers as in the CLI binary) and the same HTTP dispatcher. */
49
+ export declare function runPiCliInCwd(argv: string[], cwd: () => string): Promise<void>;
50
+ /** pi's own image sniffer (utils/mime.js), deep-imported the way the dispatcher
51
+ * is: the fenced read tool tells an image from its first bytes with it. Null
52
+ * where pi moved it: a file is then read as text, never as an image. */
53
+ export declare function loadImageSniffer(): Promise<ImageSniffer | null>;
54
+ /**
55
+ * Make sure provider requests (and every Node fetch in the process) go through
56
+ * pi's dispatcher, installing it at most once and only when `ownsProcess`.
57
+ *
58
+ * Inside a CLI pi the dispatcher is pi's own and is never touched, whatever the
59
+ * route claims. Nor is one that PiHost installed and something else has since
60
+ * replaced. (undici wraps every dispatcher it is given, and Node creates its own
61
+ * lazily on the first fetch, so a dispatcher cannot be recognised as pi's by
62
+ * looking at it: the flag and title pi's CLI sets, and PiHost's own marker,
63
+ * are the facts there are.)
64
+ */
65
+ export declare function ensureHttpDispatcher(o: {
66
+ ownsProcess: boolean;
67
+ idleTimeoutMs: number;
68
+ /** The caller is an extension of the running pi CLI: its dispatcher is in
69
+ * place, whatever the title says. */
70
+ hostPi?: boolean;
71
+ }): Promise<DispatcherOutcome>;
72
+ /** Names (or `PREFIX*` patterns) of the spec's env the model's bash receives by
73
+ * default. A route adds its own through `bashEnv.allow`. */
74
+ export declare const DEFAULT_BASH_ENV_ALLOW: readonly string[];
75
+ export interface BashEnvOptions {
76
+ /** Extra names (or `PREFIX*` patterns) taken from the spec's env. */
77
+ allow?: readonly string[];
78
+ /** Explicit values the route sets for the model's bash (a git config pin, a
79
+ * relocator): applied after the allowlist, still subject to the token strip. */
80
+ set?: Readonly<Record<string, string>>;
81
+ }
82
+ /**
83
+ * The environment of one bash call: the spec's env filtered by the allowlist,
84
+ * pi's session identity, the route's explicit values, and never a GitHub token.
85
+ * The process's own env is not a source: a token the host holds cannot leak
86
+ * through here whatever the allowlist says.
87
+ */
88
+ export declare function buildBashEnv(specEnv: Readonly<Record<string, string | undefined>>, piEnv: Readonly<Record<string, string | undefined>>, options?: BashEnvOptions): Record<string, string>;
89
+ export interface PiHostOptions {
90
+ /** A private, absolute directory: pi's auth, models and models-store files
91
+ * live in it. Never the operator's ~/.pi/agent. */
92
+ agentDir: string;
93
+ /** The route owns this process, so PiHost may install pi's HTTP dispatcher
94
+ *. False inside a CLI pi or a host that someone else configured. */
95
+ ownsProcess?: boolean;
96
+ /** The host is built by an extension of the running pi CLI (the pi plugin):
97
+ * pi's dispatcher is reused, never installed, and nothing is loaded from
98
+ * pi's dist/ by file path (the read tool then tells no image from its bytes
99
+ * and reads every file as text). Implies `ownsProcess: false`. */
100
+ hostPi?: boolean;
101
+ /** Idle timeout for provider requests and the dispatcher. */
102
+ httpIdleTimeoutMs?: number;
103
+ /** Credential storage in place of the file at authPath (read-only copies). */
104
+ credentials?: CreateModelRuntimeOptions["credentials"];
105
+ /** Runs once on the new ModelRuntime: register a provider, set a runtime key. */
106
+ configureModels?: (runtime: ModelRuntime) => void | Promise<void>;
107
+ /** In-memory pi settings, merged over the host defaults. */
108
+ settings?: Parameters<typeof SettingsManager.inMemory>[0];
109
+ /** Context files every session gets unless its spec says otherwise. */
110
+ agentsFiles?: readonly AgentsFile[];
111
+ /** The uid and gid the model's bash runs as: every command of every
112
+ * session of this host is started through setpriv to them. The process must
113
+ * hold CAP_SETUID/CAP_SETGID (the image's cli mode does). Omitted: the
114
+ * model's bash runs as this process. */
115
+ toolUid?: ToolIds;
116
+ /** The setpriv binary for `toolUid`: omitted, a system one by absolute path
117
+ * (tooluid.ts trustedSetpriv). Tests hand a stand-in. */
118
+ setprivBin?: string;
119
+ /** The user's home, as pi resolves `~` (the host resolves it: core reads no
120
+ * home of its own). The default fence keeps its `.pi` out of the file tools,
121
+ * and a tool's `~` path is expanded against it. Omitted: no home is fenced,
122
+ * and a `~` path is refused. */
123
+ homeDir?: string;
124
+ /** What the file tools may not reach. Omitted: /proc, /run/qcr-in, /qcr-login,
125
+ * the host's agent dir, `homeDir`'s pi dir, the login sources this process's
126
+ * env names (PI_CODING_AGENT_DIR, QCR_SCAN_AUTH_SRC), the credentials it
127
+ * points at (toolfence.ts credentialPaths) and `fenceDirs`.
128
+ * `false` turns the fence off. */
129
+ fence?: ToolFence | false;
130
+ /** More paths for the default fence: where a caller's login source and
131
+ * credentials are when they are not in the process env (reviewsdk's
132
+ * processEnv, a bot worker's session env). */
133
+ fenceDirs?: readonly string[];
134
+ }
135
+ export interface HostSessionSpec {
136
+ /** The session's working directory (also the bash tool's). */
137
+ cwd: string;
138
+ /** The environment the model's bash may draw from; nothing else is read. */
139
+ env: Readonly<Record<string, string | undefined>>;
140
+ /** A model object, or `provider/id` looked up on the host's ModelRuntime. */
141
+ model: string | Model<Api>;
142
+ thinkingLevel?: CreateAgentSessionOptions["thinkingLevel"];
143
+ /** The system prompt text. Omitted: pi's own default prompt. */
144
+ systemPrompt?: string;
145
+ /** Text appended to the system prompt, the way `--append-system-prompt` does
146
+ * (a lens's body rides here, over pi's own base prompt). Literal text: never
147
+ * read as a path, unlike the flag. Pieces join with a blank line. */
148
+ appendSystemPrompt?: readonly string[];
149
+ /** Context files, as data. Omitted: the host's. */
150
+ agentsFiles?: readonly AgentsFile[];
151
+ /** Extension factories: the only extensions the session loads. */
152
+ extensions?: readonly ExtensionFactory[];
153
+ customTools?: readonly ToolDefinition[];
154
+ /** The tool allowlist, exact names. Omitted: pi's four defaults. */
155
+ tools?: readonly string[];
156
+ bashEnv?: BashEnvOptions;
157
+ /** Descriptors of this process that each of the model's bash commands gets at
158
+ * the same number, and nothing else (Node closes every other one): the bot
159
+ * worker's IPC capability, which the post scripts read. Each must be
160
+ * open now. */
161
+ inheritFds?: readonly number[];
162
+ /** Persist the session's JSONL: at an exact file (a new session, written from
163
+ * its first user message on, as pi's `--session <path>` does), or under a
164
+ * directory pi names the file in (`--session-dir`), or by reopening an
165
+ * existing file under its own id (`resumeFile`; new turns append to it).
166
+ * Omitted: in memory. */
167
+ persist?: {
168
+ sessionFile: string;
169
+ } | {
170
+ sessionDir: string;
171
+ } | {
172
+ resumeFile: string;
173
+ };
174
+ /** The id of an in-memory session. Omitted: a fresh unique one. Sessions given
175
+ * the SAME id share the provider's cache routing (pi derives the cache key and
176
+ * the routing headers from it) and the provider-side resources held for it:
177
+ * disposing any one of them closes the transports of all (pi's
178
+ * cleanupSessionResources(id)). Only a caller that disposes the whole set
179
+ * together (a lens cache group) may share one. With `persist.sessionDir`
180
+ * the file is named `<time>_<id>.jsonl`, so sessions sharing an id still write
181
+ * files of their own. Refused with the other `persist` shapes and with
182
+ * `sessionManager`, which carry their own id. */
183
+ sessionId?: string;
184
+ /** An already-built manager, for a caller that needs one pi's own way
185
+ * (canaries). Wins over `persist`; give one or the other. Default: an
186
+ * in-memory manager with a fresh unique id. */
187
+ sessionManager?: SessionManager;
188
+ /** Called for every extension error pi reports instead of throwing. */
189
+ onExtensionError?: (error: ExtensionError) => void;
190
+ }
191
+ /** pi's own default tool set at the pin (DEFAULT_TOOL_NAMES). Canary 5 holds it. */
192
+ export declare const DEFAULT_TOOLS: readonly string[];
193
+ /**
194
+ * The spec's model on this host. An OpenAI spec runs on the login that exists
195
+ * (modelroute.ts): the provider it names when that provider has a credential,
196
+ * else its twin (`openai-codex` <-> `openai`) when the twin has one and serves
197
+ * the same id. pi's own offline auth check decides (ModelRuntime.checkAuth
198
+ * reads the credential store and the runtime keys; the host's snapshot is
199
+ * empty, since it is created without a refresh).
200
+ */
201
+ export declare function resolveModel(runtime: Pick<ModelRuntime, "getModel" | "checkAuth">, model: string | Model<Api>): Promise<Model<Api>>;
202
+ /** The id a session JSONL's header carries; null when the file does not start
203
+ * with a session header. */
204
+ export declare function headerId(file: string): string | null;
205
+ export declare class PiHost {
206
+ private readonly options;
207
+ readonly agentDir: string;
208
+ readonly modelRuntime: ModelRuntime;
209
+ /** What the host found or did about the HTTP dispatcher. */
210
+ readonly dispatcher: DispatcherOutcome;
211
+ readonly httpIdleTimeoutMs: number;
212
+ /** What the file tools are kept out of, or null. */
213
+ readonly fence: ToolFence | null;
214
+ private readonly sessions;
215
+ private constructor();
216
+ static create(options: PiHostOptions): Promise<PiHost>;
217
+ /** A fresh settings manager per session: sessions never share mutable
218
+ * settings, and project settings (the reviewed repo's .pi/) are never read. */
219
+ private settings;
220
+ /** The file tools of the allowlist, behind the fence. None when there is no fence. */
221
+ private fileTools;
222
+ /**
223
+ * One isolated, extension-bound session. The caller owns it: dispose it, or
224
+ * dispose the host to dispose every session it made.
225
+ */
226
+ makeSession(spec: HostSessionSpec): Promise<AgentSession>;
227
+ /** Dispose every session this host made. Idempotent. */
228
+ dispose(): void;
229
+ }
230
+ /** pi's own parse of a session file, as a worker's first act on it: open it and
231
+ * rebuild the context. No session is started and nothing is written to `file`.
232
+ * The cutover preflight (src/preflight.ts) resumes every open PR's JSONL with it. */
233
+ export declare function openSessionContext(file: string, sessionDir: string, cwd: string): void;
234
+ export {};
235
+ //# sourceMappingURL=pisdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pisdk.d.ts","sourceRoot":"","sources":["../../../src/engine/pisdk.ts"],"names":[],"mappings":"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"}