@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 @@
1
+ {"version":3,"file":"semaphore.d.ts","sourceRoot":"","sources":["../../../../src/engine/lens/semaphore.ts"],"names":[],"mappings":"AAGA,4CAA4C;AAC5C,qBAAa,iBAAiB;IAIhB,QAAQ,CAAC,OAAO,EAAE,MAAM;IAHpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsD;gBAEzD,OAAO,EAAE,MAAM;IAIpC,gEAAgE;IAChE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,eAAe;IAIjB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAc9B"}
@@ -0,0 +1,44 @@
1
+ // The process-wide lens cap: a FIFO counting semaphore with per-call weights.
2
+ // Pure. Lifted from the retired extensions/subagents.ts.
3
+ /** A weighted counting semaphore (FIFO). */
4
+ export class WeightedSemaphore {
5
+ permits;
6
+ available;
7
+ waiters = [];
8
+ constructor(permits) {
9
+ this.permits = permits;
10
+ this.available = permits;
11
+ }
12
+ /** Number of permits currently held (for tests/diagnostics). */
13
+ get held() {
14
+ return this.permits - this.available;
15
+ }
16
+ normalizeWeight(weight) {
17
+ return Math.max(1, Math.min(weight, this.permits));
18
+ }
19
+ async acquire(weight) {
20
+ const w = this.normalizeWeight(weight);
21
+ if (this.available >= w && this.waiters.length === 0) {
22
+ this.available -= w;
23
+ return;
24
+ }
25
+ await new Promise((resolve) => {
26
+ this.waiters.push({ weight: w, resolve });
27
+ });
28
+ }
29
+ release(weight) {
30
+ this.available += this.normalizeWeight(weight);
31
+ if (this.available > this.permits)
32
+ this.available = this.permits;
33
+ while (this.waiters.length > 0 &&
34
+ this.waiters[0] !== undefined &&
35
+ this.available >= this.waiters[0].weight) {
36
+ const next = this.waiters.shift();
37
+ if (!next)
38
+ break;
39
+ this.available -= next.weight;
40
+ next.resolve();
41
+ }
42
+ }
43
+ }
44
+ //# sourceMappingURL=semaphore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semaphore.js","sourceRoot":"","sources":["../../../../src/engine/lens/semaphore.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yDAAyD;AAEzD,4CAA4C;AAC5C,MAAM,OAAO,iBAAiB;IAIP;IAHb,SAAS,CAAS;IACT,OAAO,GAAmD,EAAE,CAAC;IAE9E,YAAqB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAClC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,gEAAgE;IAChE,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;IACvC,CAAC;IAEO,eAAe,CAAC,MAAc;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;QACjE,OACE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS;YAC7B,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EACxC,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI;gBAAE,MAAM;YACjB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ import { LENS_TOOL, LENS_WAVE_TOOL } from "../../lensresult.js";
2
+ import { type QcrTool } from "../../../extensions/pi-tool.js";
3
+ import { type LensWave, type WaveRunner } from "./wave.js";
4
+ export { LENS_TOOL, LENS_WAVE_TOOL };
5
+ /** More passes than this in one `lens` call is a mistake, not a plan. */
6
+ export declare const MAX_LENS_TASKS = 64;
7
+ /** A pass's text in a parallel result is cut here, as the native tool cuts it;
8
+ * the whole of it stays in `details`. */
9
+ export declare const PER_TASK_OUTPUT_CAP: number;
10
+ export interface LensToolDeps {
11
+ /** Starts a pass. The runner's cap and cache groups bound the fan-out. */
12
+ runner: WaveRunner;
13
+ /** The round's rows in flight. */
14
+ wave: LensWave;
15
+ /** The session's environment: `lens_wave` resolves its dirs against it
16
+ * (QCR_SANDBOX_ROOT, QCR_PR, QCR_LAUNCH_PLAN_DIRS), as launch_plan does. */
17
+ env: Readonly<Record<string, string | undefined>>;
18
+ /** The sandbox root `lens_wave` falls back to when `env` names none: the
19
+ * interactive pi's cwd, as its host resolves it. */
20
+ cwd?: () => string;
21
+ }
22
+ type Execute = QcrTool["execute"];
23
+ /** The `lens` tool's execute. */
24
+ export declare function lensExecute(deps: LensToolDeps): Execute;
25
+ /** The `lens_wave` tool's execute. */
26
+ export declare function lensWaveExecute(deps: LensToolDeps): Execute;
27
+ /** The `lens` tool definition. Parameters are plain JSON Schema (a TypeBox
28
+ * schema is plain JSON Schema at runtime). */
29
+ export declare function lensDefinition(deps: LensToolDeps): QcrTool;
30
+ /** The `lens_wave` tool definition. */
31
+ export declare function lensWaveDefinition(deps: LensToolDeps): QcrTool;
32
+ /** Both tools, in registration order. */
33
+ export declare function lensToolDefinitions(deps: LensToolDeps): QcrTool[];
34
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../src/engine/lens/tool.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAmB,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAc,KAAK,OAAO,EAAsB,MAAM,gCAAgC,CAAC;AAG9F,OAAO,EAAa,KAAK,QAAQ,EAAgB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAEpF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AAErC,yEAAyE;AACzE,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;yCACyC;AACzC,eAAO,MAAM,mBAAmB,QAAY,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,MAAM,EAAE,UAAU,CAAC;IACnB,kCAAkC;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf;gFAC4E;IAC5E,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAClD;wDACoD;IACpD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,KAAK,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAmKlC,iCAAiC;AACjC,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAqCvD;AAQD,sCAAsC;AACtC,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CA+E3D;AAaD;8CAC8C;AAC9C,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CA0B1D;AAED,uCAAuC;AACvC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CA6C9D;AAED,yCAAyC;AACzC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,EAAE,CAEjE"}
@@ -0,0 +1,345 @@
1
+ // Our lens tools: `lens` and `lens_wave` (owner ruling), the engine routes'
2
+ // replacement for pi's native `subagent` and the glue's `launch_plan` (retired);
3
+ // a consumer still reads all four, for the transcripts and ledgers of
4
+ // older rounds (packages/pi-plugin/src/lensresult.ts isLensTool).
5
+ //
6
+ // lens one pass, `{agent, task}`, or several at once, `{tasks: [...]}`:
7
+ // the rows the session raises, the lenses it adds, the validator.
8
+ // lens_wave the round's planned discovery wave, from the task files the
9
+ // engine wrote (dirs: the round's tasks, tasks-optional and
10
+ // tasks-sweep, bounded and confined exactly as launch_plan's are,
11
+ // with the same `extra` / `skip`). The engine launches that wave
12
+ // itself at round start, so `lens_wave` JOINS it: a row that
13
+ // is running is waited for, a row that is done is returned, and
14
+ // a row that was never started is started. Nothing runs twice.
15
+ //
16
+ // Both return what the native tools return, so every consumer reads them
17
+ // unchanged: `details.results` holds one LensResult v1 per pass (with the run's
18
+ // `id`, which is how a pass joined by two calls is counted once), `details.mode`
19
+ // is `single` or `parallel`, and a pass still running reports `exitCode: -1`
20
+ // in the updates. The tools run passes on a LensRunner (runlens.ts): the cap,
21
+ // the cache groups and the retry-once deadline are the runner's, not theirs.
22
+ // This module touches no pi SDK; packages/pi-plugin/extensions/lens.ts and the round's hosting
23
+ // give the definitions to pi.
24
+ import { LENS_TOOL, LENS_WAVE_TOOL } from "../../lensresult.js";
25
+ import { textResult } from "../../../extensions/pi-tool.js";
26
+ import { planLaunch } from "./launch-plan.js";
27
+ import { runSafely } from "./wave.js";
28
+ export { LENS_TOOL, LENS_WAVE_TOOL };
29
+ /** More passes than this in one `lens` call is a mistake, not a plan. */
30
+ export const MAX_LENS_TASKS = 64;
31
+ /** A pass's text in a parallel result is cut here, as the native tool cuts it;
32
+ * the whole of it stays in `details`. */
33
+ export const PER_TASK_OUTPUT_CAP = 50 * 1024;
34
+ const ZERO_USAGE = { input: 0, output: 0, cacheRead: 0, cost: 0 };
35
+ const isFailed = (r) => r.exitCode !== 0 || r.stopReason === "error" || r.stopReason === "aborted";
36
+ function truncated(output) {
37
+ const bytes = Buffer.byteLength(output, "utf8");
38
+ if (bytes <= PER_TASK_OUTPUT_CAP)
39
+ return output;
40
+ let cut = output.slice(0, PER_TASK_OUTPUT_CAP);
41
+ while (Buffer.byteLength(cut, "utf8") > PER_TASK_OUTPUT_CAP)
42
+ cut = cut.slice(0, -1);
43
+ return `${cut}\n\n[Output truncated: ${bytes - Buffer.byteLength(cut, "utf8")} bytes omitted. Full output preserved in tool details.]`;
44
+ }
45
+ function outputOf(run) {
46
+ return (isFailed(run.result) ? run.result.errorMessage : undefined) || run.text || "(no output)";
47
+ }
48
+ /** A pass that has not reported yet, in the native tool's still-running shape. */
49
+ function placeholder(agent, task) {
50
+ return { agent, task, exitCode: -1, messages: [], usage: ZERO_USAGE };
51
+ }
52
+ /** One slot of `details.results`: the pass's LensResult v1 and the task it ran. */
53
+ function slot(run, task) {
54
+ return { ...run.result, task };
55
+ }
56
+ function error(tool, message, hint) {
57
+ return {
58
+ ...textResult(`${tool}: ${message}. ${hint}`, { [tool]: { error: message } }),
59
+ isError: true,
60
+ };
61
+ }
62
+ /** The result of a parallel call: the native summary text, `details.results`
63
+ * in the order asked. */
64
+ function parallelResult(entries, extraDetails = {}) {
65
+ const finished = entries.filter((e) => e.run !== undefined);
66
+ const succeeded = finished.filter((e) => !isFailed(e.run.result)).length;
67
+ const summaries = entries.map((e) => {
68
+ if (e.run === undefined)
69
+ return `### [${e.agent}] still running\n\n(no output yet)`;
70
+ const status = isFailed(e.run.result)
71
+ ? `failed${e.run.result.stopReason && e.run.result.stopReason !== "end" ? ` (${e.run.result.stopReason})` : ""}`
72
+ : "completed";
73
+ return `### [${e.agent}] ${status}\n\n${truncated(outputOf(e.run))}`;
74
+ });
75
+ return textResult(`Parallel: ${succeeded}/${entries.length} succeeded\n\n${summaries.join("\n\n---\n\n")}`, {
76
+ mode: "parallel",
77
+ results: resultsOf(entries),
78
+ ...extraDetails,
79
+ });
80
+ }
81
+ function resultsOf(entries) {
82
+ return entries.map((e) => (e.run ? slot(e.run, e.task) : placeholder(e.agent, e.task)));
83
+ }
84
+ function progressUpdate(entries, extraDetails = {}) {
85
+ const done = entries.filter((e) => e.run !== undefined).length;
86
+ return textResult(`Parallel: ${done}/${entries.length} done, ${entries.length - done} running...`, {
87
+ mode: "parallel",
88
+ results: resultsOf(entries),
89
+ ...extraDetails,
90
+ });
91
+ }
92
+ /**
93
+ * Wait for every entry's run, telling `onUpdate` each time one lands. Resolves
94
+ * early, with whatever has landed, when `signal` aborts; the runs themselves are
95
+ * ended by the signal only where the caller handed it to them.
96
+ */
97
+ async function awaitEntries(entries, runs, signal, onUpdate, extraDetails) {
98
+ let stop;
99
+ const aborted = new Promise((resolve) => {
100
+ if (signal === undefined)
101
+ return;
102
+ if (signal.aborted)
103
+ return resolve("aborted");
104
+ stop = () => resolve("aborted");
105
+ signal.addEventListener("abort", stop, { once: true });
106
+ });
107
+ const landed = Promise.all(runs.map(async (p, i) => {
108
+ const run = await p;
109
+ entries[i].run = run;
110
+ try {
111
+ onUpdate?.(progressUpdate(entries, extraDetails));
112
+ }
113
+ catch {
114
+ // a progress listener's failure is not the call's
115
+ }
116
+ })).then(() => "done");
117
+ try {
118
+ return await Promise.race([landed, aborted]);
119
+ }
120
+ finally {
121
+ if (stop !== undefined)
122
+ signal?.removeEventListener("abort", stop);
123
+ }
124
+ }
125
+ function readLensCall(params) {
126
+ if (params["chain"] !== undefined)
127
+ return "`chain` is not supported: launch each lens yourself, or several at once with `tasks`";
128
+ const hasTasks = params["tasks"] !== undefined;
129
+ const hasSingle = params["agent"] !== undefined || params["task"] !== undefined;
130
+ if (hasTasks && hasSingle)
131
+ return "give `agent` and `task`, or `tasks`, not both";
132
+ if (hasTasks) {
133
+ const raw = params["tasks"];
134
+ if (!Array.isArray(raw) || raw.length === 0)
135
+ return "`tasks` must be a non-empty list";
136
+ if (raw.length > MAX_LENS_TASKS)
137
+ return `at most ${MAX_LENS_TASKS} tasks in one call`;
138
+ const tasks = [];
139
+ for (const [i, t] of raw.entries()) {
140
+ const o = typeof t === "object" && t !== null ? t : {};
141
+ if (typeof o["agent"] !== "string" ||
142
+ typeof o["task"] !== "string" ||
143
+ !o["agent"] ||
144
+ !o["task"])
145
+ return `tasks[${i}] needs an \`agent\` and a \`task\``;
146
+ tasks.push({ agent: o["agent"], task: o["task"] });
147
+ }
148
+ return { mode: "parallel", tasks };
149
+ }
150
+ if (typeof params["agent"] !== "string" || typeof params["task"] !== "string")
151
+ return "give `agent` and `task`, or `tasks`";
152
+ if (!params["agent"] || !params["task"])
153
+ return "give `agent` and `task`, or `tasks`";
154
+ return { mode: "single", tasks: [{ agent: params["agent"], task: params["task"] }] };
155
+ }
156
+ /** The `lens` tool's execute. */
157
+ export function lensExecute(deps) {
158
+ return async function lens(_id, params, signal, onUpdate) {
159
+ const call = readLensCall(params ?? {});
160
+ if (typeof call === "string")
161
+ return error(LENS_TOOL, call, "Nothing was launched.");
162
+ const update = onUpdate;
163
+ const runs = call.tasks.map((t) => runSafely(deps.runner, { agent: t.agent, task: t.task, ...(signal ? { signal } : {}) }));
164
+ const entries = call.tasks.map((t) => ({ ...t, run: undefined }));
165
+ const outcome = await awaitEntries(entries, runs, signal, update, {});
166
+ if (call.mode === "parallel") {
167
+ const result = parallelResult(entries);
168
+ return outcome === "aborted" ? { ...result, isError: true } : result;
169
+ }
170
+ const run = entries[0].run;
171
+ const only = call.tasks[0];
172
+ if (run === undefined)
173
+ return {
174
+ ...textResult(`Agent aborted: ${only.agent} was stopped before it answered`, {
175
+ mode: "single",
176
+ results: [placeholder(only.agent, only.task)],
177
+ }),
178
+ isError: true,
179
+ };
180
+ if (isFailed(run.result))
181
+ return {
182
+ ...textResult(`Agent ${run.result.stopReason || "failed"}: ${outputOf(run)}`, {
183
+ mode: "single",
184
+ results: [slot(run, only.task)],
185
+ }),
186
+ isError: true,
187
+ };
188
+ return textResult(run.text || "(no output)", {
189
+ mode: "single",
190
+ results: [slot(run, only.task)],
191
+ });
192
+ };
193
+ }
194
+ // ---- lens_wave -----------------------------------------------------------
195
+ function unitSummary(u) {
196
+ return { phase: u.phase, row: u.row, agent: u.agent };
197
+ }
198
+ /** The `lens_wave` tool's execute. */
199
+ export function lensWaveExecute(deps) {
200
+ return async function lensWave(_id, params, signal, onUpdate) {
201
+ const p = params ?? {};
202
+ const hasDirs = p["dirs"] !== undefined || p["dir"] !== undefined;
203
+ const update = onUpdate;
204
+ let rows;
205
+ const launched = [];
206
+ let skipped = [];
207
+ const extraIgnored = [];
208
+ if (!hasDirs) {
209
+ if (p["extra"] !== undefined || p["skip"] !== undefined)
210
+ return error(LENS_WAVE_TOOL, "`extra` and `skip` name rows of a task directory, so they need `dirs`", "Nothing was launched.");
211
+ rows = deps.wave.rows();
212
+ if (rows.length === 0)
213
+ return error(LENS_WAVE_TOOL, "the engine has launched no wave in this round", "Pass the round's task directory in `dirs`, or launch lenses yourself with `lens`.");
214
+ }
215
+ else {
216
+ const plan = planLaunch(p, { ...deps.env }, deps.cwd?.());
217
+ if (!plan.ok)
218
+ return error(LENS_WAVE_TOOL, plan.error, "Nothing was launched here: launch the rows with `lens`, all in this one turn.");
219
+ skipped = plan.skipped;
220
+ rows = [];
221
+ for (const unit of plan.units) {
222
+ const { row, started } = deps.wave.start(deps.runner, unit, "call", signal);
223
+ rows.push(row);
224
+ if (started)
225
+ launched.push(unit);
226
+ else if (unit.task !== row.task)
227
+ extraIgnored.push(unit.path);
228
+ }
229
+ }
230
+ const joined = rows.filter((r) => !launched.some((u) => u.path === r.key));
231
+ const summary = {
232
+ launched: launched.map(unitSummary),
233
+ joined: joined.map((r) => unitSummary(r.unit)),
234
+ skipped: skipped.map(unitSummary),
235
+ ...(extraIgnored.length > 0 ? { extra_ignored: extraIgnored } : {}),
236
+ };
237
+ const details = { lens_wave: summary };
238
+ const entries = rows.map((r) => ({
239
+ agent: r.unit.agent,
240
+ task: r.task,
241
+ run: r.result,
242
+ }));
243
+ const outcome = await awaitEntries(entries, rows.map((r) => r.done), signal, update, details);
244
+ const result = parallelResult(entries, details);
245
+ if (outcome === "aborted") {
246
+ const running = entries.filter((e) => e.run === undefined).length;
247
+ return {
248
+ ...result,
249
+ content: [
250
+ {
251
+ type: "text",
252
+ text: `lens_wave was stopped with ${running} lens(es) still running.\n\n${result.content[0].text}`,
253
+ },
254
+ ],
255
+ isError: true,
256
+ };
257
+ }
258
+ return result;
259
+ };
260
+ }
261
+ // ---- definitions ---------------------------------------------------------
262
+ const TASK_ITEM = {
263
+ type: "object",
264
+ properties: {
265
+ agent: { type: "string", description: "The lens, by name (an agent of the built set)." },
266
+ task: { type: "string", description: "Its task: the whole message it is sent." },
267
+ },
268
+ required: ["agent", "task"],
269
+ };
270
+ /** The `lens` tool definition. Parameters are plain JSON Schema (a TypeBox
271
+ * schema is plain JSON Schema at runtime). */
272
+ export function lensDefinition(deps) {
273
+ return {
274
+ name: LENS_TOOL,
275
+ label: "Lens",
276
+ description: "Run lens passes: one (`agent` + `task`) or several at once (`tasks`). Each pass is a read-only " +
277
+ "reviewer that works alone and answers with its findings; it cannot launch anything itself. Use it for " +
278
+ "the lenses you raise or add, the validator, and any pass the round's wave does not cover. The round's " +
279
+ "planned discovery wave is collected with `lens_wave`, not launched here. Several passes belong in ONE " +
280
+ "call so they run together. Returns each pass's result in `details.results`, in the order asked.",
281
+ parameters: {
282
+ type: "object",
283
+ properties: {
284
+ agent: { type: "string", description: "The lens, by name. With `task`." },
285
+ task: { type: "string", description: "Its task. With `agent`." },
286
+ tasks: {
287
+ type: "array",
288
+ items: TASK_ITEM,
289
+ minItems: 1,
290
+ maxItems: MAX_LENS_TASKS,
291
+ description: "Several passes to run at once, each `{agent, task}`.",
292
+ },
293
+ },
294
+ },
295
+ execute: lensExecute(deps),
296
+ };
297
+ }
298
+ /** The `lens_wave` tool definition. */
299
+ export function lensWaveDefinition(deps) {
300
+ return {
301
+ name: LENS_WAVE_TOOL,
302
+ label: "Lens wave",
303
+ description: "Collect this review round's planned discovery wave. The engine launched the wave when the round " +
304
+ "began, from the task files it wrote (state/pr-<n>-round-<k>-passes/tasks); this returns the results of " +
305
+ "every row that is finished and waits for the rows still running. It never launches a row twice. With no " +
306
+ "arguments it returns the wave the engine launched. With `dirs` it covers the rows of those task " +
307
+ "directories (the round's tasks, a follow-up round's tasks-optional, the sweep's tasks-sweep) and " +
308
+ "starts any row nobody has started yet. A row you raise to another tier belongs in `skip`, and " +
309
+ "you run it with `lens`. Returns the same result `lens` returns for a parallel call.",
310
+ parameters: {
311
+ type: "object",
312
+ properties: {
313
+ dirs: {
314
+ type: "array",
315
+ items: { type: "string" },
316
+ minItems: 1,
317
+ maxItems: 3,
318
+ description: "The round's task directory (…-passes/tasks, or the …-passes dir itself), and optionally the " +
319
+ "follow-up round's optional rows (…-passes/tasks-optional) and the sweep's …-passes/tasks-sweep.",
320
+ },
321
+ extra: {
322
+ type: "object",
323
+ additionalProperties: { type: "string" },
324
+ description: "Text appended after the pointer of a row this call starts (prior findings assigned to that lens, a " +
325
+ "site, a question). Key: the row number as the plan table prints it (`sweep:<row>` for a sweep row, " +
326
+ "`optional:<row>` for an optional row), the task file name, the agent name (every row of that " +
327
+ "agent), `plan:*` / `optional:*` / `sweep:*` (every row of that phase) or `*` (every row). A row the " +
328
+ "engine already started keeps the text it started with.",
329
+ },
330
+ skip: {
331
+ type: "array",
332
+ items: { type: "string" },
333
+ description: "Rows (same keys as `extra`) NOT to cover here because you run them yourself with `lens` at a " +
334
+ "raised tier.",
335
+ },
336
+ },
337
+ },
338
+ execute: lensWaveExecute(deps),
339
+ };
340
+ }
341
+ /** Both tools, in registration order. */
342
+ export function lensToolDefinitions(deps) {
343
+ return [lensDefinition(deps), lensWaveDefinition(deps)];
344
+ }
345
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../../src/engine/lens/tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { Runtime } from "../port.js";
2
+ import type { LaunchUnit } from "./launch-plan.js";
3
+ import type { LensRequest, LensRun } from "./runlens.js";
4
+ /** What a wave needs of the runner: start one pass. */
5
+ export interface WaveRunner {
6
+ run(request: LensRequest): Promise<LensRun>;
7
+ }
8
+ /** Who started a row. */
9
+ export type WaveOrigin = "engine" | "call";
10
+ export interface WaveRow {
11
+ /** The task file's path: the row's identity. */
12
+ key: string;
13
+ unit: LaunchUnit;
14
+ origin: WaveOrigin;
15
+ /** The task text the row was started with (its pointer plus any `extra`). */
16
+ task: string;
17
+ /** Settles with the pass's result; never rejects. */
18
+ done: Promise<LensRun>;
19
+ /** The result, once `done` has settled. */
20
+ result: LensRun | undefined;
21
+ /** The call's abort ended it before the model did. */
22
+ aborted: boolean;
23
+ }
24
+ /** One pass, as a result however it ends: runLens does not reject, but a runner
25
+ * that does (a host that cannot be built) is still a failed pass. */
26
+ export declare function runSafely(runner: WaveRunner, request: LensRequest): Promise<LensRun>;
27
+ export declare class LensWave {
28
+ private readonly byKey;
29
+ /** The row for a task file, if one was started. */
30
+ get(key: string): WaveRow | undefined;
31
+ /** Every row, in the order they were started. */
32
+ rows(): WaveRow[];
33
+ /** Rows still running. */
34
+ running(): number;
35
+ /** Start a row, unless a row for the same task file is already on the board:
36
+ * then that row is returned and nothing is started. `started` tells which. */
37
+ start(runner: WaveRunner, unit: LaunchUnit, origin: WaveOrigin, signal?: AbortSignal): {
38
+ row: WaveRow;
39
+ started: boolean;
40
+ };
41
+ /** Forget every row (a new round on the same board). */
42
+ clear(): void;
43
+ }
44
+ /**
45
+ * The engine's launch of the planned wave: every unit started at once (the
46
+ * runner's own cap and session stagger pace them), none twice. Returns the
47
+ * rows; the engine keeps `signal` to end the wave with the round.
48
+ */
49
+ export declare function launchWave(wave: LensWave, runner: WaveRunner, units: readonly LaunchUnit[], signal?: AbortSignal): WaveRow[];
50
+ /** What a runtime that hosts the engine's lens tools hands the round: the board
51
+ * its `lens_wave` reads, the runner behind it, and whether the engine starts the
52
+ * planned wave (`[pi] engine_wave`) or leaves the launch to the main session. */
53
+ export interface EngineRoute {
54
+ wave: LensWave;
55
+ runner: WaveRunner;
56
+ plannedWave: boolean;
57
+ }
58
+ /** A runtime that carries an engine route (packages/pi-plugin/src/engine/reviewsdk.ts). The round
59
+ * (round.ts) reads it off the runtime it is given. */
60
+ export type EngineRouteRuntime = Runtime & {
61
+ readonly engineLens?: EngineRoute;
62
+ };
63
+ //# sourceMappingURL=wave.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wave.d.ts","sourceRoot":"","sources":["../../../../src/engine/lens/wave.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7C;AAED,yBAAyB;AACzB,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,OAAO;IACtB,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACvB,2CAA2C;IAC3C,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;qEACqE;AACrE,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBpF;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IAEpD,mDAAmD;IACnD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIrC,iDAAiD;IACjD,IAAI,IAAI,OAAO,EAAE;IAIjB,0BAA0B;IAC1B,OAAO,IAAI,MAAM;IAIjB;kFAC8E;IAC9E,KAAK,CACH,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,UAAU,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IA6BrC,wDAAwD;IACxD,KAAK,IAAI,IAAI;CAGd;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,EAAE,CAEX;AAED;;iFAEiF;AACjF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;sDACsD;AACtD,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC"}
@@ -0,0 +1,95 @@
1
+ // The round's lens wave, as a board of rows in flight.
2
+ //
3
+ // On an engine route the round's engine launches the PLANNED discovery wave at
4
+ // round start, and the main session runs alongside it. `lens_wave` is how the
5
+ // session collects it: finished rows come back as they are, running rows are
6
+ // waited for, and nothing is launched twice. A row is keyed by its task file's
7
+ // path (planLaunch resolves every dir to its real path, so the engine's launch
8
+ // and the session's `lens_wave({dirs})` name the same file the same way).
9
+ //
10
+ // The board holds the promise of each row's run, nothing else. It never
11
+ // schedules: the engine (or, for a row the session names, the session's own
12
+ // `lens_wave` call) starts a row, and a started row is joined by every later
13
+ // call. A row is forgotten only when the call that launched it was aborted: a
14
+ // lens that failed or timed out stays on the board as the failure it was, and
15
+ // the session re-runs it through `lens` if it wants it again.
16
+ import { randomUUID } from "node:crypto";
17
+ /** One pass, as a result however it ends: runLens does not reject, but a runner
18
+ * that does (a host that cannot be built) is still a failed pass. */
19
+ export function runSafely(runner, request) {
20
+ return Promise.resolve()
21
+ .then(() => runner.run(request))
22
+ .catch((e) => ({
23
+ text: "",
24
+ result: {
25
+ id: randomUUID(),
26
+ agent: request.agent,
27
+ model: "unknown",
28
+ usage: { input: 0, output: 0, cacheRead: 0, cost: 0 },
29
+ messages: [],
30
+ exitCode: 1,
31
+ stopReason: "error",
32
+ errorMessage: e instanceof Error ? e.message : String(e),
33
+ },
34
+ }));
35
+ }
36
+ export class LensWave {
37
+ byKey = new Map();
38
+ /** The row for a task file, if one was started. */
39
+ get(key) {
40
+ return this.byKey.get(key);
41
+ }
42
+ /** Every row, in the order they were started. */
43
+ rows() {
44
+ return [...this.byKey.values()];
45
+ }
46
+ /** Rows still running. */
47
+ running() {
48
+ return this.rows().filter((r) => r.result === undefined).length;
49
+ }
50
+ /** Start a row, unless a row for the same task file is already on the board:
51
+ * then that row is returned and nothing is started. `started` tells which. */
52
+ start(runner, unit, origin, signal) {
53
+ const held = this.byKey.get(unit.path);
54
+ if (held !== undefined)
55
+ return { row: held, started: false };
56
+ // `done` is assigned below: the settling callback needs the row itself.
57
+ const row = {
58
+ key: unit.path,
59
+ unit,
60
+ origin,
61
+ task: unit.task,
62
+ result: undefined,
63
+ aborted: false,
64
+ };
65
+ row.done = runSafely(runner, {
66
+ agent: unit.agent,
67
+ task: unit.task,
68
+ ...(signal ? { signal } : {}),
69
+ }).then((run) => {
70
+ row.result = run;
71
+ if (signal?.aborted && run.result.stopReason === "aborted") {
72
+ row.aborted = true;
73
+ // Its caller ended it: the next call may start the row afresh.
74
+ if (this.byKey.get(unit.path) === row)
75
+ this.byKey.delete(unit.path);
76
+ }
77
+ return run;
78
+ });
79
+ this.byKey.set(unit.path, row);
80
+ return { row, started: true };
81
+ }
82
+ /** Forget every row (a new round on the same board). */
83
+ clear() {
84
+ this.byKey.clear();
85
+ }
86
+ }
87
+ /**
88
+ * The engine's launch of the planned wave: every unit started at once (the
89
+ * runner's own cap and session stagger pace them), none twice. Returns the
90
+ * rows; the engine keeps `signal` to end the wave with the round.
91
+ */
92
+ export function launchWave(wave, runner, units, signal) {
93
+ return units.map((unit) => wave.start(runner, unit, "engine", signal).row);
94
+ }
95
+ //# sourceMappingURL=wave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wave.js","sourceRoot":"","sources":["../../../../src/engine/lens/wave.ts"],"names":[],"mappings":"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"}