@quickchatai/pi-quickreview 0.0.0-stage → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +23 -0
- package/README.md +75 -2
- package/assets/agents/pass-abstraction.md +64 -0
- package/assets/agents/pass-ask-human.md +134 -0
- package/assets/agents/pass-backcompat.md +67 -0
- package/assets/agents/pass-baseline.md +61 -0
- package/assets/agents/pass-behaviour-delta.md +64 -0
- package/assets/agents/pass-bounds.md +36 -0
- package/assets/agents/pass-claims.md +31 -0
- package/assets/agents/pass-concurrency.md +168 -0
- package/assets/agents/pass-consistency.md +57 -0
- package/assets/agents/pass-contracts.md +30 -0
- package/assets/agents/pass-data-safety.md +54 -0
- package/assets/agents/pass-deferred.md +35 -0
- package/assets/agents/pass-delivery.md +37 -0
- package/assets/agents/pass-duplication.md +60 -0
- package/assets/agents/pass-intent.md +63 -0
- package/assets/agents/pass-lint-conformance.md +46 -0
- package/assets/agents/pass-maintainability.md +67 -0
- package/assets/agents/pass-placement.md +68 -0
- package/assets/agents/pass-prod-risk.md +24 -0
- package/assets/agents/pass-rollout.md +32 -0
- package/assets/agents/pass-roundtrip.md +46 -0
- package/assets/agents/pass-security.md +31 -0
- package/assets/agents/pass-simplicity.md +68 -0
- package/assets/agents/pass-statelessness.md +27 -0
- package/assets/agents/pass-style.md +37 -0
- package/assets/agents/pass-sweep.md +57 -0
- package/assets/agents/pass-tests.md +58 -0
- package/assets/agents/pass-ui.md +23 -0
- package/assets/agents/pass-validate.md +50 -0
- package/assets/agents/pass-widened.md +46 -0
- package/assets/agents/scan/pass-scan.md +86 -0
- package/assets/config.example.toml +1067 -0
- package/assets/deploy/reviewer/AGENTS.override.md +12 -0
- package/assets/profiles/default/README.md +21 -0
- package/assets/profiles/default/addenda/.gitkeep +0 -0
- package/assets/profiles/default/profile.toml +17 -0
- package/assets/profiles/example-django/README.md +21 -0
- package/assets/profiles/example-django/addenda/10-migration-discipline.md +13 -0
- package/assets/profiles/example-django/addenda/20-new-column-nullability.md +12 -0
- package/assets/profiles/example-django/addenda/30-test-doctrine.md +12 -0
- package/assets/profiles/example-django/addenda/40-orm-usage.md +19 -0
- package/assets/profiles/example-django/addenda/50-declared-shape.md +10 -0
- package/assets/profiles/example-django/addenda/60-config-placement.md +14 -0
- package/assets/profiles/example-django/heuristics.toml +24 -0
- package/assets/profiles/example-django/profile.toml +9 -0
- package/assets/profiles/fast/README.md +24 -0
- package/assets/profiles/fast/profile.toml +59 -0
- package/assets/profiles/minimal/README.md +17 -0
- package/assets/profiles/minimal/addenda/.gitkeep +0 -0
- package/assets/profiles/minimal/profile.toml +8 -0
- package/assets/profiles/snappy/README.md +24 -0
- package/assets/profiles/snappy/addenda/10-race-as-question.md +6 -0
- package/assets/profiles/snappy/profile.toml +46 -0
- package/assets/prompts/companion-day-open.md +46 -0
- package/assets/prompts/companion-first-run.md +104 -0
- package/assets/prompts/companion.md +821 -0
- package/assets/prompts/conversation-system.md +117 -0
- package/assets/prompts/eod-sweep.md +120 -0
- package/assets/prompts/onboarding.md +74 -0
- package/assets/prompts/pass-common.md +52 -0
- package/assets/prompts/pass-quality-common.md +22 -0
- package/assets/prompts/round-first.md +874 -0
- package/assets/prompts/round-follow-up.md +991 -0
- package/assets/prompts/round-re-review.md +889 -0
- package/assets/prompts/round-recheck.md +196 -0
- package/assets/prompts/round-staleness.md +856 -0
- package/assets/schemas/review-result.v1.json +391 -0
- package/assets/schemas/scan-result.v1.json +421 -0
- package/assets/schemas/version.v1.json +57 -0
- package/assets/seed-manifest.json +19 -0
- package/assets/seeds/agents/pass-baseline.md +61 -0
- package/assets/seeds/agents/pass-contracts.md +30 -0
- package/assets/seeds/agents/pass-data-safety.md +54 -0
- package/assets/seeds/agents/pass-delivery.md +37 -0
- package/assets/seeds/agents/pass-prod-risk.md +24 -0
- package/assets/seeds/agents/pass-security.md +31 -0
- package/assets/seeds/agents/pass-statelessness.md +27 -0
- package/assets/seeds/agents/pass-ui.md +23 -0
- package/assets/seeds/agents/pass-validate.md +50 -0
- package/assets/seeds/prompts/conversation-system.md +117 -0
- package/assets/seeds/prompts/eod-sweep.md +120 -0
- package/assets/seeds/prompts/pass-common.md +52 -0
- package/dist/extensions/bash-guard.d.ts +467 -0
- package/dist/extensions/bash-guard.d.ts.map +1 -0
- package/dist/extensions/bash-guard.js +3058 -0
- package/dist/extensions/bash-guard.js.map +1 -0
- package/dist/extensions/finding-clusters.d.ts +33 -0
- package/dist/extensions/finding-clusters.d.ts.map +1 -0
- package/dist/extensions/finding-clusters.js +218 -0
- package/dist/extensions/finding-clusters.js.map +1 -0
- package/dist/extensions/ledger-pin.d.ts +76 -0
- package/dist/extensions/ledger-pin.d.ts.map +1 -0
- package/dist/extensions/ledger-pin.js +331 -0
- package/dist/extensions/ledger-pin.js.map +1 -0
- package/dist/extensions/lens.d.ts +43 -0
- package/dist/extensions/lens.d.ts.map +1 -0
- package/dist/extensions/lens.js +150 -0
- package/dist/extensions/lens.js.map +1 -0
- package/dist/extensions/pi-tool.d.ts +22 -0
- package/dist/extensions/pi-tool.d.ts.map +1 -0
- package/dist/extensions/pi-tool.js +20 -0
- package/dist/extensions/pi-tool.js.map +1 -0
- package/dist/extensions/quickreview.d.ts +21 -0
- package/dist/extensions/quickreview.d.ts.map +1 -0
- package/dist/extensions/quickreview.js +132 -0
- package/dist/extensions/quickreview.js.map +1 -0
- package/dist/src/anchors.d.ts +54 -0
- package/dist/src/anchors.d.ts.map +1 -0
- package/dist/src/anchors.js +127 -0
- package/dist/src/anchors.js.map +1 -0
- package/dist/src/assetroot.d.ts +16 -0
- package/dist/src/assetroot.d.ts.map +1 -0
- package/dist/src/assetroot.js +77 -0
- package/dist/src/assetroot.js.map +1 -0
- package/dist/src/authwatch.d.ts +61 -0
- package/dist/src/authwatch.d.ts.map +1 -0
- package/dist/src/authwatch.js +210 -0
- package/dist/src/authwatch.js.map +1 -0
- package/dist/src/budget.d.ts +15 -0
- package/dist/src/budget.d.ts.map +1 -0
- package/dist/src/budget.js +32 -0
- package/dist/src/budget.js.map +1 -0
- package/dist/src/casebudget.d.ts +3 -0
- package/dist/src/casebudget.d.ts.map +1 -0
- package/dist/src/casebudget.js +3 -0
- package/dist/src/casebudget.js.map +1 -0
- package/dist/src/cigate.d.ts +116 -0
- package/dist/src/cigate.d.ts.map +1 -0
- package/dist/src/cigate.js +176 -0
- package/dist/src/cigate.js.map +1 -0
- package/dist/src/codespan.d.ts +46 -0
- package/dist/src/codespan.d.ts.map +1 -0
- package/dist/src/codespan.js +75 -0
- package/dist/src/codespan.js.map +1 -0
- package/dist/src/contextpack.d.ts +56 -0
- package/dist/src/contextpack.d.ts.map +1 -0
- package/dist/src/contextpack.js +195 -0
- package/dist/src/contextpack.js.map +1 -0
- package/dist/src/contract.d.ts +8 -0
- package/dist/src/contract.d.ts.map +1 -0
- package/dist/src/contract.js +21 -0
- package/dist/src/contract.js.map +1 -0
- package/dist/src/coverage.d.ts +32 -0
- package/dist/src/coverage.d.ts.map +1 -0
- package/dist/src/coverage.js +85 -0
- package/dist/src/coverage.js.map +1 -0
- package/dist/src/datafence.d.ts +19 -0
- package/dist/src/datafence.d.ts.map +1 -0
- package/dist/src/datafence.js +60 -0
- package/dist/src/datafence.js.map +1 -0
- package/dist/src/dedup.d.ts +65 -0
- package/dist/src/dedup.d.ts.map +1 -0
- package/dist/src/dedup.js +459 -0
- package/dist/src/dedup.js.map +1 -0
- package/dist/src/depsources.d.ts +304 -0
- package/dist/src/depsources.d.ts.map +1 -0
- package/dist/src/depsources.js +3367 -0
- package/dist/src/depsources.js.map +1 -0
- package/dist/src/diffinput.d.ts +10 -0
- package/dist/src/diffinput.d.ts.map +1 -0
- package/dist/src/diffinput.js +172 -0
- package/dist/src/diffinput.js.map +1 -0
- package/dist/src/doubtwords.d.ts +10 -0
- package/dist/src/doubtwords.d.ts.map +1 -0
- package/dist/src/doubtwords.js +13 -0
- package/dist/src/doubtwords.js.map +1 -0
- package/dist/src/ecosystem.d.ts +148 -0
- package/dist/src/ecosystem.d.ts.map +1 -0
- package/dist/src/ecosystem.js +338 -0
- package/dist/src/ecosystem.js.map +1 -0
- package/dist/src/engine/agentdir.d.ts +5 -0
- package/dist/src/engine/agentdir.d.ts.map +1 -0
- package/dist/src/engine/agentdir.js +21 -0
- package/dist/src/engine/agentdir.js.map +1 -0
- package/dist/src/engine/auth.d.ts +214 -0
- package/dist/src/engine/auth.d.ts.map +1 -0
- package/dist/src/engine/auth.js +374 -0
- package/dist/src/engine/auth.js.map +1 -0
- package/dist/src/engine/budget.d.ts +60 -0
- package/dist/src/engine/budget.d.ts.map +1 -0
- package/dist/src/engine/budget.js +113 -0
- package/dist/src/engine/budget.js.map +1 -0
- package/dist/src/engine/capfd.d.ts +6 -0
- package/dist/src/engine/capfd.d.ts.map +1 -0
- package/dist/src/engine/capfd.js +21 -0
- package/dist/src/engine/capfd.js.map +1 -0
- package/dist/src/engine/caseout.d.ts +66 -0
- package/dist/src/engine/caseout.d.ts.map +1 -0
- package/dist/src/engine/caseout.js +107 -0
- package/dist/src/engine/caseout.js.map +1 -0
- package/dist/src/engine/context.d.ts +57 -0
- package/dist/src/engine/context.d.ts.map +1 -0
- package/dist/src/engine/context.js +212 -0
- package/dist/src/engine/context.js.map +1 -0
- package/dist/src/engine/envmap.d.ts +13 -0
- package/dist/src/engine/envmap.d.ts.map +1 -0
- package/dist/src/engine/envmap.js +372 -0
- package/dist/src/engine/envmap.js.map +1 -0
- package/dist/src/engine/extfiles.d.ts +7 -0
- package/dist/src/engine/extfiles.d.ts.map +1 -0
- package/dist/src/engine/extfiles.js +23 -0
- package/dist/src/engine/extfiles.js.map +1 -0
- package/dist/src/engine/keyroute.d.ts +21 -0
- package/dist/src/engine/keyroute.d.ts.map +1 -0
- package/dist/src/engine/keyroute.js +58 -0
- package/dist/src/engine/keyroute.js.map +1 -0
- package/dist/src/engine/lens/cache-group.d.ts +20 -0
- package/dist/src/engine/lens/cache-group.d.ts.map +1 -0
- package/dist/src/engine/lens/cache-group.js +31 -0
- package/dist/src/engine/lens/cache-group.js.map +1 -0
- package/dist/src/engine/lens/cache-run.d.ts +65 -0
- package/dist/src/engine/lens/cache-run.d.ts.map +1 -0
- package/dist/src/engine/lens/cache-run.js +159 -0
- package/dist/src/engine/lens/cache-run.js.map +1 -0
- package/dist/src/engine/lens/deadline.d.ts +54 -0
- package/dist/src/engine/lens/deadline.d.ts.map +1 -0
- package/dist/src/engine/lens/deadline.js +111 -0
- package/dist/src/engine/lens/deadline.js.map +1 -0
- package/dist/src/engine/lens/engine-tools.d.ts +13 -0
- package/dist/src/engine/lens/engine-tools.d.ts.map +1 -0
- package/dist/src/engine/lens/engine-tools.js +37 -0
- package/dist/src/engine/lens/engine-tools.js.map +1 -0
- package/dist/src/engine/lens/env.d.ts +23 -0
- package/dist/src/engine/lens/env.d.ts.map +1 -0
- package/dist/src/engine/lens/env.js +42 -0
- package/dist/src/engine/lens/env.js.map +1 -0
- package/dist/src/engine/lens/launch-plan.d.ts +63 -0
- package/dist/src/engine/lens/launch-plan.d.ts.map +1 -0
- package/dist/src/engine/lens/launch-plan.js +203 -0
- package/dist/src/engine/lens/launch-plan.js.map +1 -0
- package/dist/src/engine/lens/leaf-cache.d.ts +22 -0
- package/dist/src/engine/lens/leaf-cache.d.ts.map +1 -0
- package/dist/src/engine/lens/leaf-cache.js +115 -0
- package/dist/src/engine/lens/leaf-cache.js.map +1 -0
- package/dist/src/engine/lens/permits.d.ts +14 -0
- package/dist/src/engine/lens/permits.d.ts.map +1 -0
- package/dist/src/engine/lens/permits.js +18 -0
- package/dist/src/engine/lens/permits.js.map +1 -0
- package/dist/src/engine/lens/registry.d.ts +55 -0
- package/dist/src/engine/lens/registry.d.ts.map +1 -0
- package/dist/src/engine/lens/registry.js +140 -0
- package/dist/src/engine/lens/registry.js.map +1 -0
- package/dist/src/engine/lens/round-lens.d.ts +16 -0
- package/dist/src/engine/lens/round-lens.d.ts.map +1 -0
- package/dist/src/engine/lens/round-lens.js +46 -0
- package/dist/src/engine/lens/round-lens.js.map +1 -0
- package/dist/src/engine/lens/runlens.d.ts +103 -0
- package/dist/src/engine/lens/runlens.d.ts.map +1 -0
- package/dist/src/engine/lens/runlens.js +538 -0
- package/dist/src/engine/lens/runlens.js.map +1 -0
- package/dist/src/engine/lens/section.d.ts +19 -0
- package/dist/src/engine/lens/section.d.ts.map +1 -0
- package/dist/src/engine/lens/section.js +40 -0
- package/dist/src/engine/lens/section.js.map +1 -0
- package/dist/src/engine/lens/semaphore.d.ts +13 -0
- package/dist/src/engine/lens/semaphore.d.ts.map +1 -0
- package/dist/src/engine/lens/semaphore.js +44 -0
- package/dist/src/engine/lens/semaphore.js.map +1 -0
- package/dist/src/engine/lens/tool.d.ts +34 -0
- package/dist/src/engine/lens/tool.d.ts.map +1 -0
- package/dist/src/engine/lens/tool.js +345 -0
- package/dist/src/engine/lens/tool.js.map +1 -0
- package/dist/src/engine/lens/wave.d.ts +63 -0
- package/dist/src/engine/lens/wave.d.ts.map +1 -0
- package/dist/src/engine/lens/wave.js +95 -0
- package/dist/src/engine/lens/wave.js.map +1 -0
- package/dist/src/engine/livesessions.d.ts +21 -0
- package/dist/src/engine/livesessions.d.ts.map +1 -0
- package/dist/src/engine/livesessions.js +57 -0
- package/dist/src/engine/livesessions.js.map +1 -0
- package/dist/src/engine/livewire.d.ts +18 -0
- package/dist/src/engine/livewire.d.ts.map +1 -0
- package/dist/src/engine/livewire.js +31 -0
- package/dist/src/engine/livewire.js.map +1 -0
- package/dist/src/engine/openable.d.ts +37 -0
- package/dist/src/engine/openable.d.ts.map +1 -0
- package/dist/src/engine/openable.js +120 -0
- package/dist/src/engine/openable.js.map +1 -0
- package/dist/src/engine/pisdk.d.ts +226 -0
- package/dist/src/engine/pisdk.d.ts.map +1 -0
- package/dist/src/engine/pisdk.js +552 -0
- package/dist/src/engine/pisdk.js.map +1 -0
- package/dist/src/engine/port.d.ts +144 -0
- package/dist/src/engine/port.d.ts.map +1 -0
- package/dist/src/engine/port.js +16 -0
- package/dist/src/engine/port.js.map +1 -0
- package/dist/src/engine/prompts.d.ts +159 -0
- package/dist/src/engine/prompts.d.ts.map +1 -0
- package/dist/src/engine/prompts.js +339 -0
- package/dist/src/engine/prompts.js.map +1 -0
- package/dist/src/engine/render.d.ts +10 -0
- package/dist/src/engine/render.d.ts.map +1 -0
- package/dist/src/engine/render.js +23 -0
- package/dist/src/engine/render.js.map +1 -0
- package/dist/src/engine/reviewruntime.d.ts +13 -0
- package/dist/src/engine/reviewruntime.d.ts.map +1 -0
- package/dist/src/engine/reviewruntime.js +35 -0
- package/dist/src/engine/reviewruntime.js.map +1 -0
- package/dist/src/engine/reviewsdk.d.ts +75 -0
- package/dist/src/engine/reviewsdk.d.ts.map +1 -0
- package/dist/src/engine/reviewsdk.js +180 -0
- package/dist/src/engine/reviewsdk.js.map +1 -0
- package/dist/src/engine/round.d.ts +166 -0
- package/dist/src/engine/round.d.ts.map +1 -0
- package/dist/src/engine/round.js +543 -0
- package/dist/src/engine/round.js.map +1 -0
- package/dist/src/engine/roundagents.d.ts +17 -0
- package/dist/src/engine/roundagents.d.ts.map +1 -0
- package/dist/src/engine/roundagents.js +49 -0
- package/dist/src/engine/roundagents.js.map +1 -0
- package/dist/src/engine/roundevents.d.ts +110 -0
- package/dist/src/engine/roundevents.d.ts.map +1 -0
- package/dist/src/engine/roundevents.js +276 -0
- package/dist/src/engine/roundevents.js.map +1 -0
- package/dist/src/engine/roundsdk.d.ts +33 -0
- package/dist/src/engine/roundsdk.d.ts.map +1 -0
- package/dist/src/engine/roundsdk.js +76 -0
- package/dist/src/engine/roundsdk.js.map +1 -0
- package/dist/src/engine/sdkruntime.d.ts +23 -0
- package/dist/src/engine/sdkruntime.d.ts.map +1 -0
- package/dist/src/engine/sdkruntime.js +340 -0
- package/dist/src/engine/sdkruntime.js.map +1 -0
- package/dist/src/engine/select.d.ts +16 -0
- package/dist/src/engine/select.d.ts.map +1 -0
- package/dist/src/engine/select.js +32 -0
- package/dist/src/engine/select.js.map +1 -0
- package/dist/src/engine/sessionwrap.d.ts +4 -0
- package/dist/src/engine/sessionwrap.d.ts.map +1 -0
- package/dist/src/engine/sessionwrap.js +31 -0
- package/dist/src/engine/sessionwrap.js.map +1 -0
- package/dist/src/engine/toolfence.d.ts +90 -0
- package/dist/src/engine/toolfence.d.ts.map +1 -0
- package/dist/src/engine/toolfence.js +378 -0
- package/dist/src/engine/toolfence.js.map +1 -0
- package/dist/src/engine/tooluid.d.ts +128 -0
- package/dist/src/engine/tooluid.d.ts.map +1 -0
- package/dist/src/engine/tooluid.js +401 -0
- package/dist/src/engine/tooluid.js.map +1 -0
- package/dist/src/envstrip.d.ts +10 -0
- package/dist/src/envstrip.d.ts.map +1 -0
- package/dist/src/envstrip.js +15 -0
- package/dist/src/envstrip.js.map +1 -0
- package/dist/src/escalationprompt.d.ts +22 -0
- package/dist/src/escalationprompt.d.ts.map +1 -0
- package/dist/src/escalationprompt.js +54 -0
- package/dist/src/escalationprompt.js.map +1 -0
- package/dist/src/execfn.d.ts +29 -0
- package/dist/src/execfn.d.ts.map +1 -0
- package/dist/src/execfn.js +55 -0
- package/dist/src/execfn.js.map +1 -0
- package/dist/src/finding-chain.d.ts +40 -0
- package/dist/src/finding-chain.d.ts.map +1 -0
- package/dist/src/finding-chain.js +76 -0
- package/dist/src/finding-chain.js.map +1 -0
- package/dist/src/finding-row.d.ts +24 -0
- package/dist/src/finding-row.d.ts.map +1 -0
- package/dist/src/finding-row.js +26 -0
- package/dist/src/finding-row.js.map +1 -0
- package/dist/src/findingkey.d.ts +99 -0
- package/dist/src/findingkey.d.ts.map +1 -0
- package/dist/src/findingkey.js +210 -0
- package/dist/src/findingkey.js.map +1 -0
- package/dist/src/findingsrecord.d.ts +175 -0
- package/dist/src/findingsrecord.d.ts.map +1 -0
- package/dist/src/findingsrecord.js +410 -0
- package/dist/src/findingsrecord.js.map +1 -0
- package/dist/src/followup-mode.d.ts +4 -0
- package/dist/src/followup-mode.d.ts.map +1 -0
- package/dist/src/followup-mode.js +6 -0
- package/dist/src/followup-mode.js.map +1 -0
- package/dist/src/gate.d.ts +199 -0
- package/dist/src/gate.d.ts.map +1 -0
- package/dist/src/gate.js +315 -0
- package/dist/src/gate.js.map +1 -0
- package/dist/src/ghcred.d.ts +58 -0
- package/dist/src/ghcred.d.ts.map +1 -0
- package/dist/src/ghcred.js +139 -0
- package/dist/src/ghcred.js.map +1 -0
- package/dist/src/githubAuth.d.ts +32 -0
- package/dist/src/githubAuth.d.ts.map +1 -0
- package/dist/src/githubAuth.js +116 -0
- package/dist/src/githubAuth.js.map +1 -0
- package/dist/src/githubcore.d.ts +20 -0
- package/dist/src/githubcore.d.ts.map +1 -0
- package/dist/src/githubcore.js +20 -0
- package/dist/src/githubcore.js.map +1 -0
- package/dist/src/glob.d.ts +11 -0
- package/dist/src/glob.d.ts.map +1 -0
- package/dist/src/glob.js +69 -0
- package/dist/src/glob.js.map +1 -0
- package/dist/src/guards.d.ts +93 -0
- package/dist/src/guards.d.ts.map +1 -0
- package/dist/src/guards.js +306 -0
- package/dist/src/guards.js.map +1 -0
- package/dist/src/heartbeat.d.ts +29 -0
- package/dist/src/heartbeat.d.ts.map +1 -0
- package/dist/src/heartbeat.js +87 -0
- package/dist/src/heartbeat.js.map +1 -0
- package/dist/src/heuristics.d.ts +247 -0
- package/dist/src/heuristics.d.ts.map +1 -0
- package/dist/src/heuristics.js +927 -0
- package/dist/src/heuristics.js.map +1 -0
- package/dist/src/homes.d.ts +181 -0
- package/dist/src/homes.d.ts.map +1 -0
- package/dist/src/homes.js +242 -0
- package/dist/src/homes.js.map +1 -0
- package/dist/src/hunkheader.d.ts +11 -0
- package/dist/src/hunkheader.d.ts.map +1 -0
- package/dist/src/hunkheader.js +18 -0
- package/dist/src/hunkheader.js.map +1 -0
- package/dist/src/include.d.ts +435 -0
- package/dist/src/include.d.ts.map +1 -0
- package/dist/src/include.js +1692 -0
- package/dist/src/include.js.map +1 -0
- package/dist/src/launchvocab.d.ts +36 -0
- package/dist/src/launchvocab.d.ts.map +1 -0
- package/dist/src/launchvocab.js +59 -0
- package/dist/src/launchvocab.js.map +1 -0
- package/dist/src/ledgercarry.d.ts +24 -0
- package/dist/src/ledgercarry.d.ts.map +1 -0
- package/dist/src/ledgercarry.js +109 -0
- package/dist/src/ledgercarry.js.map +1 -0
- package/dist/src/lensids.d.ts +7 -0
- package/dist/src/lensids.d.ts.map +1 -0
- package/dist/src/lensids.js +53 -0
- package/dist/src/lensids.js.map +1 -0
- package/dist/src/lensplanning.d.ts +8 -0
- package/dist/src/lensplanning.d.ts.map +1 -0
- package/dist/src/lensplanning.js +126 -0
- package/dist/src/lensplanning.js.map +1 -0
- package/dist/src/lensresult.d.ts +94 -0
- package/dist/src/lensresult.d.ts.map +1 -0
- package/dist/src/lensresult.js +162 -0
- package/dist/src/lensresult.js.map +1 -0
- package/dist/src/lenstuning.d.ts +97 -0
- package/dist/src/lenstuning.d.ts.map +1 -0
- package/dist/src/lenstuning.js +326 -0
- package/dist/src/lenstuning.js.map +1 -0
- package/dist/src/lintconfig.d.ts +31 -0
- package/dist/src/lintconfig.d.ts.map +1 -0
- package/dist/src/lintconfig.js +543 -0
- package/dist/src/lintconfig.js.map +1 -0
- package/dist/src/live/events.d.ts +188 -0
- package/dist/src/live/events.d.ts.map +1 -0
- package/dist/src/live/events.js +136 -0
- package/dist/src/live/events.js.map +1 -0
- package/dist/src/live/writer.d.ts +54 -0
- package/dist/src/live/writer.d.ts.map +1 -0
- package/dist/src/live/writer.js +516 -0
- package/dist/src/live/writer.js.map +1 -0
- package/dist/src/localreview.d.ts +128 -0
- package/dist/src/localreview.d.ts.map +1 -0
- package/dist/src/localreview.js +426 -0
- package/dist/src/localreview.js.map +1 -0
- package/dist/src/loosenedtests.d.ts +13 -0
- package/dist/src/loosenedtests.d.ts.map +1 -0
- package/dist/src/loosenedtests.js +188 -0
- package/dist/src/loosenedtests.js.map +1 -0
- package/dist/src/memoryport.d.ts +264 -0
- package/dist/src/memoryport.d.ts.map +1 -0
- package/dist/src/memoryport.js +445 -0
- package/dist/src/memoryport.js.map +1 -0
- package/dist/src/migrations.d.ts +106 -0
- package/dist/src/migrations.d.ts.map +1 -0
- package/dist/src/migrations.js +373 -0
- package/dist/src/migrations.js.map +1 -0
- package/dist/src/oneshot.d.ts +12 -0
- package/dist/src/oneshot.d.ts.map +1 -0
- package/dist/src/oneshot.js +8 -0
- package/dist/src/oneshot.js.map +1 -0
- package/dist/src/packing.d.ts +11 -0
- package/dist/src/packing.d.ts.map +1 -0
- package/dist/src/packing.js +31 -0
- package/dist/src/packing.js.map +1 -0
- package/dist/src/passes.d.ts +16 -0
- package/dist/src/passes.d.ts.map +1 -0
- package/dist/src/passes.js +104 -0
- package/dist/src/passes.js.map +1 -0
- package/dist/src/passtasks.d.ts +68 -0
- package/dist/src/passtasks.d.ts.map +1 -0
- package/dist/src/passtasks.js +360 -0
- package/dist/src/passtasks.js.map +1 -0
- package/dist/src/pathinside.d.ts +5 -0
- package/dist/src/pathinside.d.ts.map +1 -0
- package/dist/src/pathinside.js +9 -0
- package/dist/src/pathinside.js.map +1 -0
- package/dist/src/pibuiltins.d.ts +36 -0
- package/dist/src/pibuiltins.d.ts.map +1 -0
- package/dist/src/pibuiltins.js +83 -0
- package/dist/src/pibuiltins.js.map +1 -0
- package/dist/src/plankey.d.ts +4 -0
- package/dist/src/plankey.d.ts.map +1 -0
- package/dist/src/plankey.js +10 -0
- package/dist/src/plankey.js.map +1 -0
- package/dist/src/planner.d.ts +375 -0
- package/dist/src/planner.d.ts.map +1 -0
- package/dist/src/planner.js +722 -0
- package/dist/src/planner.js.map +1 -0
- package/dist/src/plugin/args.d.ts +19 -0
- package/dist/src/plugin/args.d.ts.map +1 -0
- package/dist/src/plugin/args.js +107 -0
- package/dist/src/plugin/args.js.map +1 -0
- package/dist/src/plugin/index.d.ts +3 -0
- package/dist/src/plugin/index.d.ts.map +1 -0
- package/dist/src/plugin/index.js +14 -0
- package/dist/src/plugin/index.js.map +1 -0
- package/dist/src/plugin/login.d.ts +39 -0
- package/dist/src/plugin/login.d.ts.map +1 -0
- package/dist/src/plugin/login.js +73 -0
- package/dist/src/plugin/login.js.map +1 -0
- package/dist/src/plugin/review.d.ts +27 -0
- package/dist/src/plugin/review.d.ts.map +1 -0
- package/dist/src/plugin/review.js +298 -0
- package/dist/src/plugin/review.js.map +1 -0
- package/dist/src/plugin/runner.d.ts +6 -0
- package/dist/src/plugin/runner.d.ts.map +1 -0
- package/dist/src/plugin/runner.js +65 -0
- package/dist/src/plugin/runner.js.map +1 -0
- package/dist/src/plugin/scan.d.ts +79 -0
- package/dist/src/plugin/scan.d.ts.map +1 -0
- package/dist/src/plugin/scan.js +348 -0
- package/dist/src/plugin/scan.js.map +1 -0
- package/dist/src/plugin/session.d.ts +56 -0
- package/dist/src/plugin/session.d.ts.map +1 -0
- package/dist/src/plugin/session.js +2 -0
- package/dist/src/plugin/session.js.map +1 -0
- package/dist/src/plugin/setup.d.ts +19 -0
- package/dist/src/plugin/setup.d.ts.map +1 -0
- package/dist/src/plugin/setup.js +142 -0
- package/dist/src/plugin/setup.js.map +1 -0
- package/dist/src/plugin/versiongate.d.ts +26 -0
- package/dist/src/plugin/versiongate.d.ts.map +1 -0
- package/dist/src/plugin/versiongate.js +83 -0
- package/dist/src/plugin/versiongate.js.map +1 -0
- package/dist/src/postingkey.d.ts +8 -0
- package/dist/src/postingkey.d.ts.map +1 -0
- package/dist/src/postingkey.js +25 -0
- package/dist/src/postingkey.js.map +1 -0
- package/dist/src/postingpolicy.d.ts +108 -0
- package/dist/src/postingpolicy.d.ts.map +1 -0
- package/dist/src/postingpolicy.js +341 -0
- package/dist/src/postingpolicy.js.map +1 -0
- package/dist/src/pr-identity.d.ts +3 -0
- package/dist/src/pr-identity.d.ts.map +1 -0
- package/dist/src/pr-identity.js +9 -0
- package/dist/src/pr-identity.js.map +1 -0
- package/dist/src/prdelta.d.ts +181 -0
- package/dist/src/prdelta.d.ts.map +1 -0
- package/dist/src/prdelta.js +501 -0
- package/dist/src/prdelta.js.map +1 -0
- package/dist/src/pricing.d.ts +94 -0
- package/dist/src/pricing.d.ts.map +1 -0
- package/dist/src/pricing.js +209 -0
- package/dist/src/pricing.js.map +1 -0
- package/dist/src/priorfindings.d.ts +167 -0
- package/dist/src/priorfindings.d.ts.map +1 -0
- package/dist/src/priorfindings.js +445 -0
- package/dist/src/priorfindings.js.map +1 -0
- package/dist/src/priortasks.d.ts +31 -0
- package/dist/src/priortasks.d.ts.map +1 -0
- package/dist/src/priortasks.js +119 -0
- package/dist/src/priortasks.js.map +1 -0
- package/dist/src/profilelookup.d.ts +59 -0
- package/dist/src/profilelookup.d.ts.map +1 -0
- package/dist/src/profilelookup.js +98 -0
- package/dist/src/profilelookup.js.map +1 -0
- package/dist/src/profileoverrides.d.ts +91 -0
- package/dist/src/profileoverrides.d.ts.map +1 -0
- package/dist/src/profileoverrides.js +313 -0
- package/dist/src/profileoverrides.js.map +1 -0
- package/dist/src/profiles.d.ts +144 -0
- package/dist/src/profiles.d.ts.map +1 -0
- package/dist/src/profiles.js +604 -0
- package/dist/src/profiles.js.map +1 -0
- package/dist/src/promptdoc.d.ts +3 -0
- package/dist/src/promptdoc.d.ts.map +1 -0
- package/dist/src/promptdoc.js +18 -0
- package/dist/src/promptdoc.js.map +1 -0
- package/dist/src/prtarget.d.ts +70 -0
- package/dist/src/prtarget.d.ts.map +1 -0
- package/dist/src/prtarget.js +181 -0
- package/dist/src/prtarget.js.map +1 -0
- package/dist/src/recheckorder.d.ts +32 -0
- package/dist/src/recheckorder.d.ts.map +1 -0
- package/dist/src/recheckorder.js +5 -0
- package/dist/src/recheckorder.js.map +1 -0
- package/dist/src/reviewapi.d.ts +207 -0
- package/dist/src/reviewapi.d.ts.map +1 -0
- package/dist/src/reviewapi.js +939 -0
- package/dist/src/reviewapi.js.map +1 -0
- package/dist/src/reviewbotfindings.d.ts +33 -0
- package/dist/src/reviewbotfindings.d.ts.map +1 -0
- package/dist/src/reviewbotfindings.js +80 -0
- package/dist/src/reviewbotfindings.js.map +1 -0
- package/dist/src/reviewconfig.d.ts +741 -0
- package/dist/src/reviewconfig.d.ts.map +1 -0
- package/dist/src/reviewconfig.js +797 -0
- package/dist/src/reviewconfig.js.map +1 -0
- package/dist/src/reviewdelta.d.ts +51 -0
- package/dist/src/reviewdelta.d.ts.map +1 -0
- package/dist/src/reviewdelta.js +119 -0
- package/dist/src/reviewdelta.js.map +1 -0
- package/dist/src/reviewdest.d.ts +86 -0
- package/dist/src/reviewdest.d.ts.map +1 -0
- package/dist/src/reviewdest.js +142 -0
- package/dist/src/reviewdest.js.map +1 -0
- package/dist/src/reviewerstub.d.ts +12 -0
- package/dist/src/reviewerstub.d.ts.map +1 -0
- package/dist/src/reviewerstub.js +28 -0
- package/dist/src/reviewerstub.js.map +1 -0
- package/dist/src/reviewhost.d.ts +58 -0
- package/dist/src/reviewhost.d.ts.map +1 -0
- package/dist/src/reviewhost.js +135 -0
- package/dist/src/reviewhost.js.map +1 -0
- package/dist/src/reviewpost.d.ts +79 -0
- package/dist/src/reviewpost.d.ts.map +1 -0
- package/dist/src/reviewpost.js +233 -0
- package/dist/src/reviewpost.js.map +1 -0
- package/dist/src/reviewrender.d.ts +154 -0
- package/dist/src/reviewrender.d.ts.map +1 -0
- package/dist/src/reviewrender.js +480 -0
- package/dist/src/reviewrender.js.map +1 -0
- package/dist/src/reviewstate.d.ts +62 -0
- package/dist/src/reviewstate.d.ts.map +1 -0
- package/dist/src/reviewstate.js +167 -0
- package/dist/src/reviewstate.js.map +1 -0
- package/dist/src/reviewstore.d.ts +17 -0
- package/dist/src/reviewstore.d.ts.map +1 -0
- package/dist/src/reviewstore.js +105 -0
- package/dist/src/reviewstore.js.map +1 -0
- package/dist/src/round-progress.d.ts +120 -0
- package/dist/src/round-progress.d.ts.map +1 -0
- package/dist/src/round-progress.js +172 -0
- package/dist/src/round-progress.js.map +1 -0
- package/dist/src/round-stage-deadlines.d.ts +12 -0
- package/dist/src/round-stage-deadlines.d.ts.map +1 -0
- package/dist/src/round-stage-deadlines.js +10 -0
- package/dist/src/round-stage-deadlines.js.map +1 -0
- package/dist/src/session-command.d.ts +19 -0
- package/dist/src/session-command.d.ts.map +1 -0
- package/dist/src/session-command.js +20 -0
- package/dist/src/session-command.js.map +1 -0
- package/dist/src/settledread.d.ts +61 -0
- package/dist/src/settledread.d.ts.map +1 -0
- package/dist/src/settledread.js +135 -0
- package/dist/src/settledread.js.map +1 -0
- package/dist/src/severity.d.ts +167 -0
- package/dist/src/severity.d.ts.map +1 -0
- package/dist/src/severity.js +364 -0
- package/dist/src/severity.js.map +1 -0
- package/dist/src/severityrank.d.ts +8 -0
- package/dist/src/severityrank.d.ts.map +1 -0
- package/dist/src/severityrank.js +16 -0
- package/dist/src/severityrank.js.map +1 -0
- package/dist/src/standing-review.d.ts +45 -0
- package/dist/src/standing-review.d.ts.map +1 -0
- package/dist/src/standing-review.js +43 -0
- package/dist/src/standing-review.js.map +1 -0
- package/dist/src/storerows.d.ts +225 -0
- package/dist/src/storerows.d.ts.map +1 -0
- package/dist/src/storerows.js +7 -0
- package/dist/src/storerows.js.map +1 -0
- package/dist/src/styleguide.d.ts +25 -0
- package/dist/src/styleguide.d.ts.map +1 -0
- package/dist/src/styleguide.js +272 -0
- package/dist/src/styleguide.js.map +1 -0
- package/dist/src/sweepstatus.d.ts +42 -0
- package/dist/src/sweepstatus.d.ts.map +1 -0
- package/dist/src/sweepstatus.js +97 -0
- package/dist/src/sweepstatus.js.map +1 -0
- package/dist/src/templates.d.ts +243 -0
- package/dist/src/templates.d.ts.map +1 -0
- package/dist/src/templates.js +847 -0
- package/dist/src/templates.js.map +1 -0
- package/dist/src/types.d.ts +639 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +90 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/unifieddiff.d.ts +22 -0
- package/dist/src/unifieddiff.d.ts.map +1 -0
- package/dist/src/unifieddiff.js +176 -0
- package/dist/src/unifieddiff.js.map +1 -0
- package/dist/src/yieldloop.d.ts +2 -0
- package/dist/src/yieldloop.d.ts.map +1 -0
- package/dist/src/yieldloop.js +14 -0
- package/dist/src/yieldloop.js.map +1 -0
- package/package.json +60 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roundagents.js","sourceRoot":"","sources":["../../../src/engine/roundagents.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6EAA6E;AAC7E,mEAAmE;AACnE,sBAAsB;AACtB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAsB,MAAM,gBAAgB,CAAC;AAE9F;;;;;qEAKqE;AACrE,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,GAAe,EACf,MAAc,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AACzC;;+DAE+D;AAC/D,UAA2E,EAAE;IAE7E,0EAA0E;IAC1E,0EAA0E;IAC1E,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzF,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE;QACnD,0EAA0E;QAC1E,MAAM,EAAE,KAAK;QACb,IAAI;QACJ,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;QACvB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW;QAClC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;QACtC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC;QACvB,SAAS,EAAE,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC;QACzE,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC;QAC7B,OAAO,EAAE;YACP,GAAG,YAAY;YACf,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,GAAG,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC;YAC/D,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;YAChC,gEAAgE;YAChE,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC;SACrC;KACF,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
export interface Usage {
|
|
2
|
+
input: number;
|
|
3
|
+
output: number;
|
|
4
|
+
cacheRead: number;
|
|
5
|
+
}
|
|
6
|
+
/** The child results a `tool_execution_end` event of a lens tool carries
|
|
7
|
+
* (`result.details.results`); [] for any other shape. A result with an `id`
|
|
8
|
+
* (LensResult v1) can come back from more than one call — claim it on a
|
|
9
|
+
* `LensOnce` before counting it. */
|
|
10
|
+
export declare function childResults(e: Record<string, unknown>): unknown[];
|
|
11
|
+
/**
|
|
12
|
+
* Sum model usage from pi `--mode json` stdout lines. The parent's own turns
|
|
13
|
+
* carry `usage` on every assistant `message_end`; lens passes run as child
|
|
14
|
+
* processes, and the native subagent tool reports each child's usage in its
|
|
15
|
+
* tool result — both are counted, and a line that is not JSON is skipped
|
|
16
|
+
* (stderr noise, a truncated final line).
|
|
17
|
+
*/
|
|
18
|
+
export declare function usageFromEvents(lines: Iterable<string>): Usage & {
|
|
19
|
+
children: number;
|
|
20
|
+
};
|
|
21
|
+
/** One lens tool call (`subagent`, `launch_plan`, `lens`, `lens_wave`) of the
|
|
22
|
+
* main session: a lens fan-out, a validator, a re-run. */
|
|
23
|
+
export interface StageCall {
|
|
24
|
+
/** Launch order, from 0. */
|
|
25
|
+
call: number;
|
|
26
|
+
tool_call_id: string | null;
|
|
27
|
+
/** The agents it launched (one, or a parallel `tasks` list). */
|
|
28
|
+
agents: string[];
|
|
29
|
+
/** `validate` when every agent is pass-validate. */
|
|
30
|
+
kind: "lens" | "validate";
|
|
31
|
+
/**
|
|
32
|
+
* A GUESS from launch order: `delta` up to and including the first
|
|
33
|
+
* validator call, `sweep` for every call launched after that validator
|
|
34
|
+
* returned. On a follow-up round that is the change review vs the
|
|
35
|
+
* pre-approval sweep (its lenses and its own validator); on a round-1 case
|
|
36
|
+
* a `sweep` call is a re-run after the validator.
|
|
37
|
+
*/
|
|
38
|
+
phase: "delta" | "sweep";
|
|
39
|
+
/** The main session's last message before the call — so the window
|
|
40
|
+
* includes the session writing the tasks (tool-call arguments are output
|
|
41
|
+
* tokens). Null when no message preceded it. */
|
|
42
|
+
start_ms: number | null;
|
|
43
|
+
/** The last child message; else the session's first message after the
|
|
44
|
+
* call returned. Null when neither exists (a truncated stream). */
|
|
45
|
+
end_ms: number | null;
|
|
46
|
+
usage: Usage;
|
|
47
|
+
/** pi's own price of the children ($), summed. */
|
|
48
|
+
cost: number;
|
|
49
|
+
children: number;
|
|
50
|
+
}
|
|
51
|
+
export interface StageTotals {
|
|
52
|
+
calls: number;
|
|
53
|
+
agents: number;
|
|
54
|
+
usage: Usage;
|
|
55
|
+
cost: number;
|
|
56
|
+
/** First start to last end over the phase's calls; null when unknown. */
|
|
57
|
+
start_ms: number | null;
|
|
58
|
+
end_ms: number | null;
|
|
59
|
+
wall_ms: number | null;
|
|
60
|
+
}
|
|
61
|
+
export interface Stages {
|
|
62
|
+
calls: StageCall[];
|
|
63
|
+
phases: {
|
|
64
|
+
delta: StageTotals;
|
|
65
|
+
sweep: StageTotals;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Split one review's pi `--mode json` stream into its subagent calls, each
|
|
70
|
+
* with its agents, its phase (by launch order relative to the first
|
|
71
|
+
* pass-validate call — see `StageCall.phase`), its wall window and its usage
|
|
72
|
+
* and cost, plus a total per phase. Pure; a line that is not JSON is skipped.
|
|
73
|
+
* `tool_execution_*` events carry no timestamp, so times come from message
|
|
74
|
+
* stamps: the parent's, and each child's own messages in the tool result.
|
|
75
|
+
*/
|
|
76
|
+
export declare function stagesFromEvents(lines: Iterable<string>): Stages;
|
|
77
|
+
/** Model-call failures one review saw, by kind. `rate_limited` and
|
|
78
|
+
* `overloaded` are the shared login pushing back (every bench container
|
|
79
|
+
* draws on ONE ChatGPT login): a case that failed with either is retried by
|
|
80
|
+
* arm.sh after a pause, never scored as the reviewer's own miss.
|
|
81
|
+
* `usage_limit` is the login's PLAN window exhausted ("Codex error: The usage
|
|
82
|
+
* limit has been reached", each case failing within seconds): no pause of
|
|
83
|
+
* minutes cures it, so arm.sh stops launching instead of burning the retries
|
|
84
|
+
* (older summaries lack this kind). */
|
|
85
|
+
export interface ModelErrors {
|
|
86
|
+
rate_limited: number;
|
|
87
|
+
overloaded: number;
|
|
88
|
+
usage_limit?: number;
|
|
89
|
+
other: number;
|
|
90
|
+
/** One message of the most telling kind, for the log. */
|
|
91
|
+
sample?: string;
|
|
92
|
+
}
|
|
93
|
+
/** The plan's usage window is spent (checked before RATE_LIMIT_RE, which it
|
|
94
|
+
* would also match). */
|
|
95
|
+
export declare const USAGE_LIMIT_RE: RegExp;
|
|
96
|
+
export declare const RATE_LIMIT_RE: RegExp;
|
|
97
|
+
export declare const OVERLOAD_RE: RegExp;
|
|
98
|
+
/** A model error message's kind: a spent usage window first (its words would
|
|
99
|
+
* also read as a rate limit), then a rate limit, then an overload. One
|
|
100
|
+
* reading for pi's event stream and its stderr. */
|
|
101
|
+
export declare function modelErrorKind(message: string): "usage_limit" | "rate_limited" | "overloaded" | "other";
|
|
102
|
+
/**
|
|
103
|
+
* Count the failed model calls in pi's `--mode json` stream: every assistant
|
|
104
|
+
* message with `stopReason: "error"`, the parent's and the lens children's
|
|
105
|
+
* alike (children's arrive nested in the subagent tool result). pi repeats a
|
|
106
|
+
* message in later events (updates, the final message list), so each is
|
|
107
|
+
* counted once, keyed by its timestamp and text.
|
|
108
|
+
*/
|
|
109
|
+
export declare function modelErrorsFromEvents(lines: Iterable<string>): ModelErrors;
|
|
110
|
+
//# sourceMappingURL=roundevents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roundevents.d.ts","sourceRoot":"","sources":["../../../src/engine/roundevents.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAeD;;;oCAGoC;AACpC,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,CAElE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CA2BrF;AAID;0DAC0D;AAC1D,MAAM,WAAW,SAAS;IACxB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gEAAgE;IAChE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,oDAAoD;IACpD,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B;;;;;;OAMG;IACH,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB;;oDAEgD;IAChD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;uEACmE;IACnE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,MAAM,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,CAAC;CACpD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAqHhE;AAED;;;;;;;uCAOuC;AACvC,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;wBACwB;AACxB,eAAO,MAAM,cAAc,QACwF,CAAC;AACpH,eAAO,MAAM,aAAa,QAAsE,CAAC;AACjG,eAAO,MAAM,WAAW,QAA4C,CAAC;AAErE;;mDAEmD;AACnD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GACd,aAAa,GAAG,cAAc,GAAG,YAAY,GAAG,OAAO,CAKzD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,WAAW,CA0C1E"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
// What a round's pi event stream says about the round: its token usage, its
|
|
2
|
+
// per-stage cost and time (the lens calls, split into the change review and the
|
|
3
|
+
// pre-approval sweep), and the model-call failures it saw. Pure readers of the
|
|
4
|
+
// `pi --mode json` stream either runtime writes; the round records them
|
|
5
|
+
// (packages/pi-plugin/src/engine/round.ts), the bench reports them (src/bench/aacr.ts).
|
|
6
|
+
import { isLensTool, LENS_WAVE_TOOL, lensIdOf, LensOnce, lensResultsOf } from "../lensresult.js";
|
|
7
|
+
import { usageCost } from "../pricing.js";
|
|
8
|
+
// ---- pi's JSON event stream ---------------------------------------------------
|
|
9
|
+
/** Add one pi `usage` object's token counts to `into` (a field that is not a
|
|
10
|
+
* number counts 0; a usage that is not an object adds nothing). */
|
|
11
|
+
function addUsage(into, x) {
|
|
12
|
+
if (typeof x !== "object" || x === null)
|
|
13
|
+
return;
|
|
14
|
+
const r = x;
|
|
15
|
+
const n = (k) => (typeof r[k] === "number" ? r[k] : 0);
|
|
16
|
+
into.input += n("input");
|
|
17
|
+
into.output += n("output");
|
|
18
|
+
into.cacheRead += n("cacheRead");
|
|
19
|
+
}
|
|
20
|
+
/** The child results a `tool_execution_end` event of a lens tool carries
|
|
21
|
+
* (`result.details.results`); [] for any other shape. A result with an `id`
|
|
22
|
+
* (LensResult v1) can come back from more than one call — claim it on a
|
|
23
|
+
* `LensOnce` before counting it. */
|
|
24
|
+
export function childResults(e) {
|
|
25
|
+
return lensResultsOf(e["result"]);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Sum model usage from pi `--mode json` stdout lines. The parent's own turns
|
|
29
|
+
* carry `usage` on every assistant `message_end`; lens passes run as child
|
|
30
|
+
* processes, and the native subagent tool reports each child's usage in its
|
|
31
|
+
* tool result — both are counted, and a line that is not JSON is skipped
|
|
32
|
+
* (stderr noise, a truncated final line).
|
|
33
|
+
*/
|
|
34
|
+
export function usageFromEvents(lines) {
|
|
35
|
+
const u = { input: 0, output: 0, cacheRead: 0, children: 0 };
|
|
36
|
+
const add = (x) => addUsage(u, x);
|
|
37
|
+
const once = new LensOnce();
|
|
38
|
+
for (const line of lines) {
|
|
39
|
+
if (!line.trim())
|
|
40
|
+
continue;
|
|
41
|
+
let e;
|
|
42
|
+
try {
|
|
43
|
+
e = JSON.parse(line);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (e["type"] === "message_end") {
|
|
49
|
+
const m = e["message"];
|
|
50
|
+
if (m?.["role"] === "assistant")
|
|
51
|
+
add(m["usage"]);
|
|
52
|
+
}
|
|
53
|
+
if (e["type"] === "tool_execution_end") {
|
|
54
|
+
for (const r of childResults(e)) {
|
|
55
|
+
const usage = r?.["usage"];
|
|
56
|
+
if (usage && once.claim(lensIdOf(r))) {
|
|
57
|
+
add(usage);
|
|
58
|
+
u.children++;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return u;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Split one review's pi `--mode json` stream into its subagent calls, each
|
|
67
|
+
* with its agents, its phase (by launch order relative to the first
|
|
68
|
+
* pass-validate call — see `StageCall.phase`), its wall window and its usage
|
|
69
|
+
* and cost, plus a total per phase. Pure; a line that is not JSON is skipped.
|
|
70
|
+
* `tool_execution_*` events carry no timestamp, so times come from message
|
|
71
|
+
* stamps: the parent's, and each child's own messages in the tool result.
|
|
72
|
+
*/
|
|
73
|
+
export function stagesFromEvents(lines) {
|
|
74
|
+
const calls = [];
|
|
75
|
+
const open = new Map();
|
|
76
|
+
const awaitingEnd = [];
|
|
77
|
+
const once = new LensOnce();
|
|
78
|
+
let lastTs = null;
|
|
79
|
+
let firstValidateDone = false;
|
|
80
|
+
for (const line of lines) {
|
|
81
|
+
if (!line.trim())
|
|
82
|
+
continue;
|
|
83
|
+
let e;
|
|
84
|
+
try {
|
|
85
|
+
e = JSON.parse(line);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const m = e["message"];
|
|
91
|
+
const ts = typeof m?.["timestamp"] === "number" ? m["timestamp"] : null;
|
|
92
|
+
if (ts !== null) {
|
|
93
|
+
for (const c of awaitingEnd.splice(0))
|
|
94
|
+
c.end_ms = ts;
|
|
95
|
+
lastTs = ts;
|
|
96
|
+
}
|
|
97
|
+
// `launch_plan` launches lenses through the subagent tool's own
|
|
98
|
+
// execute; its args name task dirs, so its agents come from the result.
|
|
99
|
+
// `lens_wave` joins a wave the engine launched: no args at all.
|
|
100
|
+
if (!isLensTool(e["toolName"]))
|
|
101
|
+
continue;
|
|
102
|
+
const id = typeof e["toolCallId"] === "string" ? e["toolCallId"] : null;
|
|
103
|
+
if (e["type"] === "tool_execution_start") {
|
|
104
|
+
const args = (e["args"] ?? {});
|
|
105
|
+
const agents = typeof args["agent"] === "string"
|
|
106
|
+
? [args["agent"]]
|
|
107
|
+
: Array.isArray(args["tasks"])
|
|
108
|
+
? args["tasks"]
|
|
109
|
+
.map((t) => t?.["agent"])
|
|
110
|
+
.filter((a) => typeof a === "string")
|
|
111
|
+
: [];
|
|
112
|
+
const call = {
|
|
113
|
+
call: calls.length,
|
|
114
|
+
tool_call_id: id,
|
|
115
|
+
agents,
|
|
116
|
+
kind: agents.length > 0 && agents.every((a) => a.startsWith("pass-validate"))
|
|
117
|
+
? "validate"
|
|
118
|
+
: "lens",
|
|
119
|
+
phase: firstValidateDone ? "sweep" : "delta",
|
|
120
|
+
start_ms: lastTs,
|
|
121
|
+
end_ms: null,
|
|
122
|
+
usage: { input: 0, output: 0, cacheRead: 0 },
|
|
123
|
+
cost: 0,
|
|
124
|
+
children: 0,
|
|
125
|
+
};
|
|
126
|
+
calls.push(call);
|
|
127
|
+
if (id !== null)
|
|
128
|
+
open.set(id, call);
|
|
129
|
+
}
|
|
130
|
+
else if (e["type"] === "tool_execution_end") {
|
|
131
|
+
const call = id !== null ? open.get(id) : undefined;
|
|
132
|
+
if (!call)
|
|
133
|
+
continue;
|
|
134
|
+
open.delete(id);
|
|
135
|
+
const results = childResults(e);
|
|
136
|
+
// A run a lens-id'd result already reported (a `lens_wave` joining a
|
|
137
|
+
// wave, or joining it again) is counted by its first call only.
|
|
138
|
+
const fresh = new Set(results.filter((r) => once.claim(lensIdOf(r))));
|
|
139
|
+
// A launch_plan call named no agent at start: its results do.
|
|
140
|
+
if (call.agents.length === 0)
|
|
141
|
+
call.agents = results
|
|
142
|
+
.filter((r) => fresh.has(r))
|
|
143
|
+
.map((r) => r?.["agent"])
|
|
144
|
+
.filter((a) => typeof a === "string");
|
|
145
|
+
let last = null;
|
|
146
|
+
let first = null;
|
|
147
|
+
for (const r0 of results) {
|
|
148
|
+
const r = (r0 ?? {});
|
|
149
|
+
const u = r["usage"];
|
|
150
|
+
if (u && fresh.has(r0)) {
|
|
151
|
+
addUsage(call.usage, u);
|
|
152
|
+
call.cost += usageCost(u["cost"]);
|
|
153
|
+
call.children++;
|
|
154
|
+
}
|
|
155
|
+
for (const msg of Array.isArray(r["messages"]) ? r["messages"] : []) {
|
|
156
|
+
const t = msg?.["timestamp"];
|
|
157
|
+
if (typeof t !== "number")
|
|
158
|
+
continue;
|
|
159
|
+
if (last === null || t > last)
|
|
160
|
+
last = t;
|
|
161
|
+
if (fresh.has(r0) && (first === null || t < first))
|
|
162
|
+
first = t;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// A `lens_wave` joins a wave the engine started at round start: the
|
|
166
|
+
// wave's window opens with its first lens message, not with the join.
|
|
167
|
+
if (e["toolName"] === LENS_WAVE_TOOL && first !== null)
|
|
168
|
+
call.start_ms = call.start_ms === null ? first : Math.min(call.start_ms, first);
|
|
169
|
+
if (last !== null)
|
|
170
|
+
call.end_ms = last;
|
|
171
|
+
else
|
|
172
|
+
awaitingEnd.push(call);
|
|
173
|
+
if (call.kind === "validate")
|
|
174
|
+
firstValidateDone = true;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
const total = (phase) => {
|
|
178
|
+
const mine = calls.filter((c) => c.phase === phase);
|
|
179
|
+
const starts = mine.map((c) => c.start_ms).filter((x) => x !== null);
|
|
180
|
+
const ends = mine.map((c) => c.end_ms).filter((x) => x !== null);
|
|
181
|
+
const start = starts.length ? Math.min(...starts) : null;
|
|
182
|
+
const end = ends.length ? Math.max(...ends) : null;
|
|
183
|
+
return {
|
|
184
|
+
calls: mine.length,
|
|
185
|
+
agents: mine.reduce((n, c) => n + c.agents.length, 0),
|
|
186
|
+
usage: mine.reduce((u, c) => ({
|
|
187
|
+
input: u.input + c.usage.input,
|
|
188
|
+
output: u.output + c.usage.output,
|
|
189
|
+
cacheRead: u.cacheRead + c.usage.cacheRead,
|
|
190
|
+
}), { input: 0, output: 0, cacheRead: 0 }),
|
|
191
|
+
cost: mine.reduce((n, c) => n + c.cost, 0),
|
|
192
|
+
start_ms: start,
|
|
193
|
+
end_ms: end,
|
|
194
|
+
wall_ms: start !== null && end !== null && end >= start ? end - start : null,
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
return { calls, phases: { delta: total("delta"), sweep: total("sweep") } };
|
|
198
|
+
}
|
|
199
|
+
/** The plan's usage window is spent (checked before RATE_LIMIT_RE, which it
|
|
200
|
+
* would also match). */
|
|
201
|
+
export const USAGE_LIMIT_RE = /usage limit has been reached|usage[ _-]?limit[ _-]?reached|insufficient[ _-]?quota|exceeded your current quota/i;
|
|
202
|
+
export const RATE_LIMIT_RE = /\b429\b|rate[ _-]?limit|too many requests|usage[ _-]?limit|quota/i;
|
|
203
|
+
export const OVERLOAD_RE = /overloaded|\b50[23]\b|\b529\b|capacity/i;
|
|
204
|
+
/** A model error message's kind: a spent usage window first (its words would
|
|
205
|
+
* also read as a rate limit), then a rate limit, then an overload. One
|
|
206
|
+
* reading for pi's event stream and its stderr. */
|
|
207
|
+
export function modelErrorKind(message) {
|
|
208
|
+
if (USAGE_LIMIT_RE.test(message))
|
|
209
|
+
return "usage_limit";
|
|
210
|
+
if (RATE_LIMIT_RE.test(message))
|
|
211
|
+
return "rate_limited";
|
|
212
|
+
if (OVERLOAD_RE.test(message))
|
|
213
|
+
return "overloaded";
|
|
214
|
+
return "other";
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Count the failed model calls in pi's `--mode json` stream: every assistant
|
|
218
|
+
* message with `stopReason: "error"`, the parent's and the lens children's
|
|
219
|
+
* alike (children's arrive nested in the subagent tool result). pi repeats a
|
|
220
|
+
* message in later events (updates, the final message list), so each is
|
|
221
|
+
* counted once, keyed by its timestamp and text.
|
|
222
|
+
*/
|
|
223
|
+
export function modelErrorsFromEvents(lines) {
|
|
224
|
+
const seen = new Set();
|
|
225
|
+
const out = { rate_limited: 0, overloaded: 0, usage_limit: 0, other: 0 };
|
|
226
|
+
const visit = (x, depth) => {
|
|
227
|
+
if (depth > 12 || typeof x !== "object" || x === null)
|
|
228
|
+
return;
|
|
229
|
+
if (Array.isArray(x)) {
|
|
230
|
+
for (const y of x)
|
|
231
|
+
visit(y, depth + 1);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
const r = x;
|
|
235
|
+
if (r["stopReason"] === "error" && typeof r["errorMessage"] === "string") {
|
|
236
|
+
const msg = r["errorMessage"];
|
|
237
|
+
const key = `${String(r["timestamp"] ?? "")}|${msg}`;
|
|
238
|
+
if (!seen.has(key)) {
|
|
239
|
+
seen.add(key);
|
|
240
|
+
const kind = modelErrorKind(msg);
|
|
241
|
+
if (kind === "usage_limit") {
|
|
242
|
+
out.usage_limit = (out.usage_limit ?? 0) + 1;
|
|
243
|
+
out.sample = msg.slice(0, 200);
|
|
244
|
+
}
|
|
245
|
+
else if (kind === "rate_limited") {
|
|
246
|
+
out.rate_limited++;
|
|
247
|
+
if (!out.usage_limit)
|
|
248
|
+
out.sample = msg.slice(0, 200);
|
|
249
|
+
}
|
|
250
|
+
else if (kind === "overloaded") {
|
|
251
|
+
out.overloaded++;
|
|
252
|
+
if (!out.rate_limited && !out.usage_limit)
|
|
253
|
+
out.sample = msg.slice(0, 200);
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
out.other++;
|
|
257
|
+
out.sample ??= msg.slice(0, 200);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
for (const v of Object.values(r))
|
|
262
|
+
visit(v, depth + 1);
|
|
263
|
+
};
|
|
264
|
+
for (const line of lines) {
|
|
265
|
+
if (!line.trim() || !line.includes('"errorMessage"'))
|
|
266
|
+
continue;
|
|
267
|
+
try {
|
|
268
|
+
visit(JSON.parse(line), 0);
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
// not JSON — stderr noise or a truncated final line
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return out;
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=roundevents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roundevents.js","sourceRoot":"","sources":["../../../src/engine/roundevents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ExtensionFactory, ToolDefinition } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import type { SessionSpec } from "./port.js";
|
|
3
|
+
import type { SessionExtras } from "./sdkruntime.js";
|
|
4
|
+
/** The lens tool of a round: the factories that register it (the native tool is
|
|
5
|
+
* a file's extension) or the definitions handed over as `customTools` (our own,
|
|
6
|
+
* packages/pi-plugin/src/engine/lens/engine-tools.ts), and the tool names they add to the allowlist. */
|
|
7
|
+
export interface RoundLensTools {
|
|
8
|
+
factories: readonly ExtensionFactory[];
|
|
9
|
+
customTools?: readonly ToolDefinition[];
|
|
10
|
+
toolNames: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
export interface RoundSdkOptions {
|
|
13
|
+
/** The route's lens tool. Omitted: the session has none. */
|
|
14
|
+
lens?: RoundLensTools;
|
|
15
|
+
/** Where ledger-pin's diagnostics go, one line each. Omitted: nowhere. */
|
|
16
|
+
log?: (line: string) => void;
|
|
17
|
+
}
|
|
18
|
+
/** The names the model's bash may draw from the spec's env besides the host
|
|
19
|
+
* defaults: the git isolation pins and the QCR_* names the round's scripts read.
|
|
20
|
+
* The proc route's bash saw the whole env; the API keys in it are not carried. */
|
|
21
|
+
export declare const BASH_ENV_ALLOW: readonly ["GIT_*", "QCR_*"];
|
|
22
|
+
/** The reviewer stub as a context file at `<cwd>/AGENTS.override.md`. A
|
|
23
|
+
* checkout keeps it at `deploy/reviewer/`; the release and bench images install
|
|
24
|
+
* it at the tree's root (docker/Dockerfile, bench/aacr/Dockerfile), so both
|
|
25
|
+
* places are tried. A round without the stub fails here, loudly: a context file
|
|
26
|
+
* is never dropped silently. */
|
|
27
|
+
export declare function reviewerStub(root: string, cwd: string): {
|
|
28
|
+
path: string;
|
|
29
|
+
content: string;
|
|
30
|
+
};
|
|
31
|
+
/** The per-session pieces of a round's main session on the SDK runtime. */
|
|
32
|
+
export declare function roundSdkExtras(options?: RoundSdkOptions): (spec: SessionSpec) => SessionExtras;
|
|
33
|
+
//# sourceMappingURL=roundsdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roundsdk.d.ts","sourceRoot":"","sources":["../../../src/engine/roundsdk.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AASxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;wGAEwG;AACxG,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACxC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED;;kFAEkF;AAClF,eAAO,MAAM,cAAc,6BAA8B,CAAC;AAE1D;;;;gCAIgC;AAChC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAKzF;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAC5B,OAAO,GAAE,eAAoB,GAC5B,CAAC,IAAI,EAAE,WAAW,KAAK,aAAa,CA6BtC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// What a review round's main session carries on the SDK runtime, so that its
|
|
2
|
+
// provider request is the one the process route's `pi` sends (canary 10, full:
|
|
3
|
+
// tests/pi-canary/canary-10-oneshot-request.test.ts).
|
|
4
|
+
//
|
|
5
|
+
// The process route hands pi extension FILES (`--extension`), the cwd's context
|
|
6
|
+
// file and a spawn env. An SDK session has none of those, so the same things
|
|
7
|
+
// arrive as data and factories:
|
|
8
|
+
//
|
|
9
|
+
// extension files the factories the files' own shims call, built from
|
|
10
|
+
// the spec's env (bash-guard, ledger-pin,
|
|
11
|
+
// finding-clusters), in the file order of the proc route
|
|
12
|
+
// the lens tool a factory the route hands in (`lens`): today's native
|
|
13
|
+
// one is a file only; the engine's lens tools
|
|
14
|
+
// take this slot
|
|
15
|
+
// the tool allowlist pi's defaults plus every tool those extensions
|
|
16
|
+
// register: pi's CLI activates all of them, and the
|
|
17
|
+
// host drops anything not named
|
|
18
|
+
// the context stub the reviewer stub handed as data, at the path pi
|
|
19
|
+
// would have read it from in the cwd; never read
|
|
20
|
+
// from, or written into, a checkout
|
|
21
|
+
// the model's bash env an allowlist over the spec's env, never a GitHub
|
|
22
|
+
// token (pisdk.ts buildBashEnv)
|
|
23
|
+
//
|
|
24
|
+
// `roundSdkExtras()` is the `extras` option of `sdkRuntime(host, { extras })`.
|
|
25
|
+
import { readFileSync } from "node:fs";
|
|
26
|
+
import { join } from "node:path";
|
|
27
|
+
import { bashGuardConfigFromEnv, createBashGuard } from "../../extensions/bash-guard.js";
|
|
28
|
+
import { FINDING_CLUSTERS_TOOLS, createFindingClusters, } from "../../extensions/finding-clusters.js";
|
|
29
|
+
import { createLedgerPin, ledgerPinConfigFromEnv } from "../../extensions/ledger-pin.js";
|
|
30
|
+
import { HOST_CONTEXT_STUB, reviewerStubSource } from "../reviewerstub.js";
|
|
31
|
+
import { DEFAULT_TOOLS } from "./pisdk.js";
|
|
32
|
+
/** The names the model's bash may draw from the spec's env besides the host
|
|
33
|
+
* defaults: the git isolation pins and the QCR_* names the round's scripts read.
|
|
34
|
+
* The proc route's bash saw the whole env; the API keys in it are not carried. */
|
|
35
|
+
export const BASH_ENV_ALLOW = ["GIT_*", "QCR_*"];
|
|
36
|
+
/** The reviewer stub as a context file at `<cwd>/AGENTS.override.md`. A
|
|
37
|
+
* checkout keeps it at `deploy/reviewer/`; the release and bench images install
|
|
38
|
+
* it at the tree's root (docker/Dockerfile, bench/aacr/Dockerfile), so both
|
|
39
|
+
* places are tried. A round without the stub fails here, loudly: a context file
|
|
40
|
+
* is never dropped silently. */
|
|
41
|
+
export function reviewerStub(root, cwd) {
|
|
42
|
+
return {
|
|
43
|
+
path: join(cwd, HOST_CONTEXT_STUB),
|
|
44
|
+
content: readFileSync(reviewerStubSource(root), "utf8"),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** The per-session pieces of a round's main session on the SDK runtime. */
|
|
48
|
+
export function roundSdkExtras(options = {}) {
|
|
49
|
+
return (spec) => {
|
|
50
|
+
const root = spec.env["QCR_SANDBOX_ROOT"];
|
|
51
|
+
if (root === undefined)
|
|
52
|
+
throw new Error("a round's spec names its production tree (QCR_SANDBOX_ROOT)");
|
|
53
|
+
const lens = options.lens;
|
|
54
|
+
return {
|
|
55
|
+
// The proc route's `--extension` order: bash-guard, ledger-pin, the lens
|
|
56
|
+
// tool, finding-clusters. The tool list in the request follows it.
|
|
57
|
+
extensions: [
|
|
58
|
+
createBashGuard(bashGuardConfigFromEnv(spec.env, spec.cwd)),
|
|
59
|
+
// The snapshot lands under the production tree (QCR_SANDBOX_ROOT),
|
|
60
|
+
// which a round's spec always names.
|
|
61
|
+
createLedgerPin(ledgerPinConfigFromEnv(spec.env, root, options.log ? { log: options.log } : {})),
|
|
62
|
+
...(lens?.factories ?? []),
|
|
63
|
+
createFindingClusters(),
|
|
64
|
+
],
|
|
65
|
+
tools: [
|
|
66
|
+
...DEFAULT_TOOLS,
|
|
67
|
+
...(lens?.toolNames ?? []),
|
|
68
|
+
...FINDING_CLUSTERS_TOOLS.map((t) => t.name),
|
|
69
|
+
],
|
|
70
|
+
...(lens?.customTools?.length ? { customTools: lens.customTools } : {}),
|
|
71
|
+
agentsFiles: [reviewerStub(root, spec.cwd)],
|
|
72
|
+
bashEnv: { allow: BASH_ENV_ALLOW },
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=roundsdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roundsdk.js","sourceRoot":"","sources":["../../../src/engine/roundsdk.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,+EAA+E;AAC/E,sDAAsD;AACtD,EAAE;AACF,gFAAgF;AAChF,6EAA6E;AAC7E,gCAAgC;AAChC,EAAE;AACF,iFAAiF;AACjF,qEAAqE;AACrE,oFAAoF;AACpF,mFAAmF;AACnF,yEAAyE;AACzE,4CAA4C;AAC5C,4EAA4E;AAC5E,+EAA+E;AAC/E,2DAA2D;AAC3D,0EAA0E;AAC1E,4EAA4E;AAC5E,+DAA+D;AAC/D,8EAA8E;AAC9E,2DAA2D;AAC3D,EAAE;AACF,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAoB3C;;kFAEkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,CAAU,CAAC;AAE1D;;;;gCAIgC;AAChC,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,GAAW;IACpD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC;QAClC,OAAO,EAAE,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,cAAc,CAC5B,UAA2B,EAAE;IAE7B,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC1C,IAAI,IAAI,KAAK,SAAS;YACpB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,OAAO;YACL,yEAAyE;YACzE,mEAAmE;YACnE,UAAU,EAAE;gBACV,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3D,mEAAmE;gBACnE,qCAAqC;gBACrC,eAAe,CACb,sBAAsB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAChF;gBACD,GAAG,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;gBAC1B,qBAAqB,EAAE;aACxB;YACD,KAAK,EAAE;gBACL,GAAG,aAAa;gBAChB,GAAG,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;gBAC1B,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAC7C;YACD,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,WAAW,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3C,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;SACnC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type BudgetReason } from "./budget.js";
|
|
2
|
+
import type { HostSessionSpec, PiHost } from "./pisdk.js";
|
|
3
|
+
import { type Runtime, type SessionSpec } from "./port.js";
|
|
4
|
+
/** What only the route knows about a session, beyond the port's plain data: the
|
|
5
|
+
* extension factories and tools it carries (P3's factories, the lens tool), the
|
|
6
|
+
* tool allowlist those tools join, the model's bash environment, the context
|
|
7
|
+
* files it hands over as data, the thinking level, and text appended to pi's own
|
|
8
|
+
* system prompt (a leaf's body). Called once per session. A field here wins over
|
|
9
|
+
* the spec's own. */
|
|
10
|
+
export type SessionExtras = Pick<HostSessionSpec, "extensions" | "customTools" | "tools" | "agentsFiles" | "bashEnv" | "inheritFds" | "thinkingLevel" | "appendSystemPrompt">;
|
|
11
|
+
export interface SdkRuntimeOptions {
|
|
12
|
+
/** The route's own pieces for a spec. Without it a spec that names
|
|
13
|
+
* `extensions` (paths) is refused: an SDK session loads factories, not files. */
|
|
14
|
+
extras?: (spec: SessionSpec) => SessionExtras;
|
|
15
|
+
/** The last resort of a turn's budget, when its abort and its dispose both
|
|
16
|
+
* failed to end it (packages/pi-plugin/src/engine/budget.ts). A host that owns its process
|
|
17
|
+
* passes one that exits it; omitted, the abort and dispose are all a wedged
|
|
18
|
+
* turn gets, and the process is left to its owner. */
|
|
19
|
+
backstop?: (reason: BudgetReason) => void;
|
|
20
|
+
}
|
|
21
|
+
/** The runtime that hosts a session in this process, on `host`'s pi SDK. */
|
|
22
|
+
export declare function sdkRuntime(host: PiHost, options?: SdkRuntimeOptions): Runtime;
|
|
23
|
+
//# sourceMappingURL=sdkruntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkruntime.d.ts","sourceRoot":"","sources":["../../../src/engine/sdkruntime.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAIL,KAAK,OAAO,EAGZ,KAAK,WAAW,EAKjB,MAAM,WAAW,CAAC;AAEnB;;;;;qBAKqB;AACrB,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,eAAe,EACb,YAAY,GACZ,aAAa,GACb,OAAO,GACP,aAAa,GACb,SAAS,GACT,YAAY,GACZ,eAAe,GACf,oBAAoB,CACvB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC;qFACiF;IACjF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,aAAa,CAAC;IAC9C;;;0DAGsD;IACtD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAC3C;AAgRD,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CA8DjF"}
|