@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,339 @@
|
|
|
1
|
+
// The one-shot review's prompts: the first round's and a follow-up round's
|
|
2
|
+
// order and system prompt for a target, rendered by the production renderers
|
|
3
|
+
// (planner.ts buildRoundOrder, templates.ts). Pure: the files the order names
|
|
4
|
+
// are returned for the runner to write; nothing here runs a session.
|
|
5
|
+
//
|
|
6
|
+
// Shared by the benchmark (src/bench/runner.ts), `qcr review` and the engine.
|
|
7
|
+
import { readFileSync } from "node:fs";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
import { buildPassPlan, buildRoundOrder, optionalOrderOf, renderDeltaPatch, roundDeltaOf, sweepOrderOf, } from "../planner.js";
|
|
10
|
+
import { parseLedgerCarry, settledFromLedger } from "../ledgercarry.js";
|
|
11
|
+
import { CONTEXT_PACK_FILE, readWorktreeFileForPack, renderContextPack } from "../contextpack.js";
|
|
12
|
+
import { identityVars } from "../include.js";
|
|
13
|
+
import { lensRuntimeOf } from "../launchvocab.js";
|
|
14
|
+
import { lensEnabled } from "../lenstuning.js";
|
|
15
|
+
import { MEMORY_LESS } from "../memoryport.js";
|
|
16
|
+
import { renderPassTasks } from "../passtasks.js";
|
|
17
|
+
import { loadProfileHeuristics } from "../profiles.js";
|
|
18
|
+
import { firstPartyDirectiveFiles } from "../severity.js";
|
|
19
|
+
import { renderConversationSystemPrompt, renderGateNotes, renderRoundPrompt, roundTemplateFile, templateFileForOrder, } from "../templates.js";
|
|
20
|
+
import { findCiLinters } from "../lintconfig.js";
|
|
21
|
+
import { findStyleGuide } from "../styleguide.js";
|
|
22
|
+
import { benchAppendix } from "./caseout.js";
|
|
23
|
+
/** Cut a PR body to a UTF-8 byte budget. The body is the one unbounded input
|
|
24
|
+
* in the order, and it appears twice (the intent note and the override). */
|
|
25
|
+
export function boundBody(body, maxBytes = 20_000) {
|
|
26
|
+
if (body === null || Buffer.byteLength(body, "utf8") <= maxBytes)
|
|
27
|
+
return body;
|
|
28
|
+
const cut = Buffer.from(body, "utf8")
|
|
29
|
+
.subarray(0, maxBytes)
|
|
30
|
+
.toString("utf8")
|
|
31
|
+
.replace(/\uFFFD$/, "");
|
|
32
|
+
return `${cut}\n…(truncated for the benchmark)`;
|
|
33
|
+
}
|
|
34
|
+
/** The PR's first-party agent-directive files (packages/pi-plugin/src/severity.ts), which the
|
|
35
|
+
* round order names — the same for a first round and a follow-up. */
|
|
36
|
+
export function directiveFilesOf(cfg, files) {
|
|
37
|
+
return firstPartyDirectiveFiles(files, cfg.review.directives);
|
|
38
|
+
}
|
|
39
|
+
/** `[review] context_pack = "pack-first"`, as dispatch writes it:
|
|
40
|
+
* the case's context pack beside its task dirs (`<case>/context-pack.md` —
|
|
41
|
+
* where the glue looks for a task file's pack), and the order the task files
|
|
42
|
+
* render from, which then points at it. Off ⇒ the order unchanged, no file. */
|
|
43
|
+
export function benchContextPack(cfg, built, files, tree, caseDir, deltaPatch) {
|
|
44
|
+
if (!cfg.review.task_files ||
|
|
45
|
+
cfg.review.context_pack !== "pack-first" ||
|
|
46
|
+
cfg.engine.lens_cache_group <= 0)
|
|
47
|
+
return { order: built };
|
|
48
|
+
const path = join(caseDir, CONTEXT_PACK_FILE);
|
|
49
|
+
const pack = renderContextPack({
|
|
50
|
+
pr: built.pr,
|
|
51
|
+
headSha: built.head_sha,
|
|
52
|
+
mergeBase: built.merge_base,
|
|
53
|
+
files,
|
|
54
|
+
...(deltaPatch ? { deltaPatch } : {}),
|
|
55
|
+
readFile: (p) => readWorktreeFileForPack(tree, p),
|
|
56
|
+
maxTokens: cfg.review.context_pack_max_tokens,
|
|
57
|
+
});
|
|
58
|
+
return { order: { ...built, context_pack_file: path }, file: { path, text: pack.text } };
|
|
59
|
+
}
|
|
60
|
+
// ---- the engine lens route's wording -------------------------------------------
|
|
61
|
+
export { engineLensSection } from "./lens/section.js";
|
|
62
|
+
/** The first round's order + system prompt for a target: production renderers. */
|
|
63
|
+
export function renderOneShotPrompts(args) {
|
|
64
|
+
const { root, cfg, target, tree } = args;
|
|
65
|
+
const readPrompt = (name) => {
|
|
66
|
+
const path = join(root, "prompts", name);
|
|
67
|
+
return args.readFile ? args.readFile(path) : readFileSync(path, "utf8");
|
|
68
|
+
};
|
|
69
|
+
const identity = { ...identityVars(cfg), repo: target.repo };
|
|
70
|
+
const title = target.title ?? target.fallbackTitle ?? `${target.repo}#${target.number}`;
|
|
71
|
+
const body = boundBody(target.body);
|
|
72
|
+
const directiveFiles = directiveFilesOf(cfg, args.files);
|
|
73
|
+
const row = { number: target.number, head_sha: target.headSha, title };
|
|
74
|
+
const built = buildRoundOrder({
|
|
75
|
+
cfg,
|
|
76
|
+
row,
|
|
77
|
+
files: args.files,
|
|
78
|
+
roundId: 1,
|
|
79
|
+
roundNo: 1,
|
|
80
|
+
reviewNo: 1,
|
|
81
|
+
roundType: "first",
|
|
82
|
+
worktree: tree,
|
|
83
|
+
settledDigest: "",
|
|
84
|
+
issuedAt: args.issuedAt,
|
|
85
|
+
tree: {
|
|
86
|
+
head_sha: target.headSha,
|
|
87
|
+
base_ref: target.baseRef,
|
|
88
|
+
base_sha: target.baseSha,
|
|
89
|
+
merge_base: target.mergeBase,
|
|
90
|
+
},
|
|
91
|
+
...(body !== null ? { prBody: body } : {}),
|
|
92
|
+
...(directiveFiles.length
|
|
93
|
+
? { firstPartyDirectives: { files: directiveFiles, mention: "maintainer" } }
|
|
94
|
+
: {}),
|
|
95
|
+
ecosystem: args.ecosystem,
|
|
96
|
+
heuristics: loadProfileHeuristics(root, cfg.review.profile, args.profileLookup),
|
|
97
|
+
...(args.dependencyNote ? { dependencyNote: args.dependencyNote } : {}),
|
|
98
|
+
// The repo's written style guide, as production finds it (dispatch.ts).
|
|
99
|
+
...(lensEnabled(cfg.lenses, "pass-style", cfg.review.style_lens)
|
|
100
|
+
? { styleGuide: findStyleGuide(tree) }
|
|
101
|
+
: {}),
|
|
102
|
+
// The linters a CI job of the repo runs, as production finds them.
|
|
103
|
+
...(lensEnabled(cfg.lenses, "pass-lint-conformance", cfg.review.lint_conformance)
|
|
104
|
+
? { ciLinters: findCiLinters(tree) }
|
|
105
|
+
: {}),
|
|
106
|
+
});
|
|
107
|
+
// `[review] task_files`, as production writes them (dispatch.ts): one
|
|
108
|
+
// complete lens task per discovery row, in the output dir.
|
|
109
|
+
// Rendered here, written by the runner (this stays pure).
|
|
110
|
+
const packed = benchContextPack(cfg, built, args.files, tree, args.caseDir);
|
|
111
|
+
const taskFiles = cfg.review.task_files
|
|
112
|
+
? renderPassTasks(packed.order, renderGateNotes(built, args.ecosystem)).map((t) => ({
|
|
113
|
+
...t,
|
|
114
|
+
path: join(args.caseDir, "tasks", t.file),
|
|
115
|
+
}))
|
|
116
|
+
: [];
|
|
117
|
+
// The runner renders comments.json and review.md itself after the session
|
|
118
|
+
// (`[review] render_outputs`, benchAppendix), so the order never carries
|
|
119
|
+
// production's render-review.sh note: there is no scripts/.
|
|
120
|
+
const { render_outputs: _renderedByRunner, ...unrendered } = built;
|
|
121
|
+
const order = taskFiles.length
|
|
122
|
+
? {
|
|
123
|
+
...unrendered,
|
|
124
|
+
...lensRuntimeOf(cfg),
|
|
125
|
+
pass_task_files: taskFiles.map((t) => ({ row: t.row, agent: t.agent, path: t.path })),
|
|
126
|
+
}
|
|
127
|
+
: { ...unrendered, ...lensRuntimeOf(cfg) };
|
|
128
|
+
const template = readPrompt(roundTemplateFile("first"));
|
|
129
|
+
const rendered = renderRoundPrompt(template, order, args.memory ?? MEMORY_LESS, cfg.owner.name, args.ecosystem, identity);
|
|
130
|
+
const orderText = rendered +
|
|
131
|
+
"\n\n" +
|
|
132
|
+
benchAppendix({
|
|
133
|
+
...lensRuntimeOf(cfg),
|
|
134
|
+
repo: target.repo,
|
|
135
|
+
pr: target.number,
|
|
136
|
+
headSha: target.headSha,
|
|
137
|
+
mergeBase: target.mergeBase,
|
|
138
|
+
caseDir: args.caseDir,
|
|
139
|
+
title: target.title,
|
|
140
|
+
body,
|
|
141
|
+
...(cfg.review.render_outputs ? { renderOutputs: true } : {}),
|
|
142
|
+
});
|
|
143
|
+
const system = renderConversationSystemPrompt(readPrompt("conversation-system.md"), { pr: target.number, title, worktree: tree }, identity);
|
|
144
|
+
return {
|
|
145
|
+
system,
|
|
146
|
+
order: orderText,
|
|
147
|
+
plannedLenses: order.pass_plan.map((p) => p.agent),
|
|
148
|
+
passPlan: order.pass_plan,
|
|
149
|
+
taskFiles: taskFiles.map((t) => ({ path: t.path, text: t.text })),
|
|
150
|
+
...(packed.file ? { contextPack: packed.file } : {}),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* The order of a follow-up replay case: production's round k, built
|
|
155
|
+
* from the same pieces dispatch uses — the full plan, `decide`
|
|
156
|
+
* (dispatch's `planFollowUp`), the delta patch and order delta, the prior
|
|
157
|
+
* findings note, the sweep's task files — rendered from the template
|
|
158
|
+
* `templateFileForOrder` picks. Any doubt runs a full re-review.
|
|
159
|
+
*/
|
|
160
|
+
export function renderFollowUpOneShotPrompts(args) {
|
|
161
|
+
const { root, cfg, target, tree } = args;
|
|
162
|
+
const readPrompt = (name) => {
|
|
163
|
+
const path = join(root, "prompts", name);
|
|
164
|
+
return args.readFile ? args.readFile(path) : readFileSync(path, "utf8");
|
|
165
|
+
};
|
|
166
|
+
const identity = { ...identityVars(cfg), repo: target.repo };
|
|
167
|
+
const title = target.title ?? target.fallbackTitle ?? `${target.repo}#${target.number}`;
|
|
168
|
+
const body = boundBody(target.body);
|
|
169
|
+
const directiveFiles = directiveFilesOf(cfg, args.files);
|
|
170
|
+
const row = { number: target.number, head_sha: target.headSha, title };
|
|
171
|
+
const heuristics = loadProfileHeuristics(root, cfg.review.profile, args.profileLookup);
|
|
172
|
+
const styleGuide = lensEnabled(cfg.lenses, "pass-style", cfg.review.style_lens)
|
|
173
|
+
? findStyleGuide(tree)
|
|
174
|
+
: [];
|
|
175
|
+
const ciLinters = lensEnabled(cfg.lenses, "pass-lint-conformance", cfg.review.lint_conformance)
|
|
176
|
+
? findCiLinters(tree)
|
|
177
|
+
: [];
|
|
178
|
+
// The whole PR's plan, exactly as dispatch builds it before deciding.
|
|
179
|
+
const fullPlan = buildPassPlan(cfg, args.files, { title, body: body ?? undefined }, args.ecosystem, heuristics, styleGuide, ciLinters);
|
|
180
|
+
const decided = args.decide({ heuristics, fullPlan, styleGuide, ciLinters });
|
|
181
|
+
const extraFiles = [];
|
|
182
|
+
// The ledger the PR session held when the round was dispatched: carried as
|
|
183
|
+
// production's `ledger_carry` (and its SETTLED digest), and pinned as the
|
|
184
|
+
// case's ledger file (QCR_LEDGER_FILE) by the caller.
|
|
185
|
+
const ledgerPath = join(args.caseDir, "ledger.md");
|
|
186
|
+
const ledgerCarry = args.ledger !== undefined
|
|
187
|
+
? parseLedgerCarry(args.ledger, target.number, ledgerPath)
|
|
188
|
+
: undefined;
|
|
189
|
+
const settledDigest = ledgerCarry && args.ledger !== undefined ? settledFromLedger(args.ledger.trim()) : "";
|
|
190
|
+
if (args.ledger !== undefined)
|
|
191
|
+
extraFiles.push({ path: ledgerPath, text: args.ledger });
|
|
192
|
+
let followUpArg;
|
|
193
|
+
let report;
|
|
194
|
+
if (decided.kind === "delta") {
|
|
195
|
+
const d = decided.decision;
|
|
196
|
+
const patchPath = join(args.caseDir, "delta.patch");
|
|
197
|
+
extraFiles.push({ path: patchPath, text: renderDeltaPatch(d.delta.files) });
|
|
198
|
+
const prior = args.prior(join(args.caseDir, "prior.json"));
|
|
199
|
+
extraFiles.push({ path: join(args.caseDir, "prior.json"), text: prior.sidecar });
|
|
200
|
+
followUpArg = {
|
|
201
|
+
delta: roundDeltaOf(d, patchPath),
|
|
202
|
+
deltaFiles: d.deltaFiles,
|
|
203
|
+
priorFindingsNote: prior.note,
|
|
204
|
+
priorFindings: prior.list,
|
|
205
|
+
...(d.optionalPlan ? { optionalPlan: d.optionalPlan } : {}),
|
|
206
|
+
...(d.sweepPlan ? { sweepPlan: d.sweepPlan } : {}),
|
|
207
|
+
...(d.sweepUnswept ? { sweepUnswept: d.sweepUnswept } : {}),
|
|
208
|
+
...(d.sweepBehaviourUnread ? { sweepBehaviourUnread: d.sweepBehaviourUnread } : {}),
|
|
209
|
+
};
|
|
210
|
+
report = {
|
|
211
|
+
round_no: args.roundNo,
|
|
212
|
+
review_no: args.reviewNo,
|
|
213
|
+
scope: "delta",
|
|
214
|
+
delta_lines: d.delta.lines,
|
|
215
|
+
delta_files: d.delta.files.length,
|
|
216
|
+
...(d.delta.conflicted.length ? { conflicted: d.delta.conflicted } : {}),
|
|
217
|
+
sweep_owed: d.sweepPlan !== undefined,
|
|
218
|
+
prior_findings: prior.list.findings.length,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
report = {
|
|
223
|
+
round_no: args.roundNo,
|
|
224
|
+
review_no: args.reviewNo,
|
|
225
|
+
scope: "full",
|
|
226
|
+
reason: decided.reason,
|
|
227
|
+
...(decided.detail ? { detail: decided.detail } : {}),
|
|
228
|
+
prior_findings: args.priorCount,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
const built = buildRoundOrder({
|
|
232
|
+
cfg,
|
|
233
|
+
row,
|
|
234
|
+
files: args.files,
|
|
235
|
+
roundId: 1,
|
|
236
|
+
roundNo: args.roundNo,
|
|
237
|
+
reviewNo: args.reviewNo,
|
|
238
|
+
roundType: "re-review",
|
|
239
|
+
worktree: tree,
|
|
240
|
+
settledDigest,
|
|
241
|
+
...(ledgerCarry ? { ledgerCarry } : {}),
|
|
242
|
+
issuedAt: args.issuedAt,
|
|
243
|
+
tree: {
|
|
244
|
+
head_sha: target.headSha,
|
|
245
|
+
base_ref: target.baseRef,
|
|
246
|
+
base_sha: target.baseSha,
|
|
247
|
+
merge_base: target.mergeBase,
|
|
248
|
+
},
|
|
249
|
+
...(body !== null ? { prBody: body } : {}),
|
|
250
|
+
...(directiveFiles.length
|
|
251
|
+
? { firstPartyDirectives: { files: directiveFiles, mention: "maintainer" } }
|
|
252
|
+
: {}),
|
|
253
|
+
ecosystem: args.ecosystem,
|
|
254
|
+
heuristics,
|
|
255
|
+
...(args.dependencyNote ? { dependencyNote: args.dependencyNote } : {}),
|
|
256
|
+
...(styleGuide.length ? { styleGuide } : {}),
|
|
257
|
+
...(ciLinters.length ? { ciLinters } : {}),
|
|
258
|
+
plan: decided.kind === "delta" ? decided.decision.plan : fullPlan,
|
|
259
|
+
...(followUpArg ? { followUp: followUpArg } : {}),
|
|
260
|
+
});
|
|
261
|
+
const packed = benchContextPack(cfg, built, args.files, tree, args.caseDir, decided.kind === "delta" ? renderDeltaPatch(decided.decision.delta.files) : undefined);
|
|
262
|
+
const taskFiles = cfg.review.task_files
|
|
263
|
+
? renderPassTasks(packed.order, renderGateNotes(built, args.ecosystem)).map((t) => ({
|
|
264
|
+
...t,
|
|
265
|
+
path: join(args.caseDir, "tasks", t.file),
|
|
266
|
+
}))
|
|
267
|
+
: [];
|
|
268
|
+
// The sweep's own task files, from the same order dispatch renders them
|
|
269
|
+
// from (`sweepOrderOf`), in their own directory.
|
|
270
|
+
const sweepTasks = cfg.review.task_files && built.sweep_plan && built.sweep_plan.length > 0
|
|
271
|
+
? (() => {
|
|
272
|
+
const sweepOrder = sweepOrderOf(packed.order, built.sweep_plan);
|
|
273
|
+
return renderPassTasks(sweepOrder, renderGateNotes(sweepOrder, args.ecosystem)).map((t) => ({ ...t, path: join(args.caseDir, "tasks-sweep", t.file) }));
|
|
274
|
+
})()
|
|
275
|
+
: [];
|
|
276
|
+
// The optional rows' task files, from the same order dispatch
|
|
277
|
+
// renders them from (`optionalOrderOf`), in their own directory.
|
|
278
|
+
const optionalTasks = cfg.review.task_files && built.optional_plan && built.optional_plan.length > 0
|
|
279
|
+
? (() => {
|
|
280
|
+
const optionalOrder = optionalOrderOf(packed.order, built.optional_plan);
|
|
281
|
+
return renderPassTasks(optionalOrder, renderGateNotes(optionalOrder, args.ecosystem)).map((t) => ({ ...t, path: join(args.caseDir, "tasks-optional", t.file) }));
|
|
282
|
+
})()
|
|
283
|
+
: [];
|
|
284
|
+
const { render_outputs: _renderedByBench, ...unrendered } = built;
|
|
285
|
+
const order = {
|
|
286
|
+
...unrendered,
|
|
287
|
+
...lensRuntimeOf(cfg),
|
|
288
|
+
...(taskFiles.length
|
|
289
|
+
? { pass_task_files: taskFiles.map((t) => ({ row: t.row, agent: t.agent, path: t.path })) }
|
|
290
|
+
: {}),
|
|
291
|
+
...(sweepTasks.length
|
|
292
|
+
? { sweep_task_files: sweepTasks.map((t) => ({ row: t.row, agent: t.agent, path: t.path })) }
|
|
293
|
+
: {}),
|
|
294
|
+
...(optionalTasks.length
|
|
295
|
+
? {
|
|
296
|
+
optional_task_files: optionalTasks.map((t) => ({
|
|
297
|
+
row: t.row,
|
|
298
|
+
agent: t.agent,
|
|
299
|
+
path: t.path,
|
|
300
|
+
})),
|
|
301
|
+
}
|
|
302
|
+
: {}),
|
|
303
|
+
};
|
|
304
|
+
const template = readPrompt(templateFileForOrder(order));
|
|
305
|
+
const rendered = renderRoundPrompt(template, order, args.memory ?? MEMORY_LESS, cfg.owner.name, args.ecosystem, identity);
|
|
306
|
+
const orderText = rendered +
|
|
307
|
+
"\n\n" +
|
|
308
|
+
benchAppendix({
|
|
309
|
+
...lensRuntimeOf(cfg),
|
|
310
|
+
repo: target.repo,
|
|
311
|
+
pr: target.number,
|
|
312
|
+
headSha: target.headSha,
|
|
313
|
+
mergeBase: target.mergeBase,
|
|
314
|
+
caseDir: args.caseDir,
|
|
315
|
+
title: target.title,
|
|
316
|
+
body,
|
|
317
|
+
...(cfg.review.render_outputs ? { renderOutputs: true } : {}),
|
|
318
|
+
roundNo: args.roundNo,
|
|
319
|
+
privateReplay: true,
|
|
320
|
+
prevHead: args.prevHead,
|
|
321
|
+
});
|
|
322
|
+
const system = renderConversationSystemPrompt(readPrompt("conversation-system.md"), { pr: target.number, title, worktree: tree }, identity);
|
|
323
|
+
for (const t of sweepTasks)
|
|
324
|
+
extraFiles.push({ path: t.path, text: t.text });
|
|
325
|
+
for (const t of optionalTasks)
|
|
326
|
+
extraFiles.push({ path: t.path, text: t.text });
|
|
327
|
+
return {
|
|
328
|
+
system,
|
|
329
|
+
order: orderText,
|
|
330
|
+
plannedLenses: order.pass_plan.map((p) => p.agent),
|
|
331
|
+
passPlan: order.pass_plan,
|
|
332
|
+
taskFiles: taskFiles.map((t) => ({ path: t.path, text: t.text })),
|
|
333
|
+
...(packed.file ? { contextPack: packed.file } : {}),
|
|
334
|
+
extraFiles,
|
|
335
|
+
followUp: report,
|
|
336
|
+
...(built.sweep_plan && built.sweep_plan.length > 0 ? { sweepPlan: built.sweep_plan } : {}),
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/engine/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { renderPostedReview, type PostedRenderConfig } from "../reviewrender.js";
|
|
2
|
+
/**
|
|
3
|
+
* The bench's render step (`[review] render_outputs`): the SAME two calls the
|
|
4
|
+
* live route's scripts/render-review.sh makes (src/reviewrendercli.ts
|
|
5
|
+
* renderRound) — `postedRenderOptions(cfg)` then `renderPostedReview` — with
|
|
6
|
+
* the case's outcome as the fallback verdict, summary and lenses line. Pinned
|
|
7
|
+
* equal to the live route by tests/dedup-parity.test.ts.
|
|
8
|
+
*/
|
|
9
|
+
export declare function renderBenchOutputs(record: unknown, outcome: Record<string, unknown> | undefined, cfg: PostedRenderConfig): ReturnType<typeof renderPostedReview>;
|
|
10
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/engine/render.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,kBAAkB,EAClB,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC5C,GAAG,EAAE,kBAAkB,GACtB,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAcvC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// The one-shot review's render step: the production review renderer applied to
|
|
2
|
+
// the findings record a session wrote.
|
|
3
|
+
import { postedRenderOptions, renderPostedReview, } from "../reviewrender.js";
|
|
4
|
+
/**
|
|
5
|
+
* The bench's render step (`[review] render_outputs`): the SAME two calls the
|
|
6
|
+
* live route's scripts/render-review.sh makes (src/reviewrendercli.ts
|
|
7
|
+
* renderRound) — `postedRenderOptions(cfg)` then `renderPostedReview` — with
|
|
8
|
+
* the case's outcome as the fallback verdict, summary and lenses line. Pinned
|
|
9
|
+
* equal to the live route by tests/dedup-parity.test.ts.
|
|
10
|
+
*/
|
|
11
|
+
export function renderBenchOutputs(record, outcome, cfg) {
|
|
12
|
+
const passes = Array.isArray(outcome?.["passes"])
|
|
13
|
+
? outcome["passes"]
|
|
14
|
+
.map((p) => String(p["name"] ?? ""))
|
|
15
|
+
.filter((n) => n && n !== "pass-validate")
|
|
16
|
+
: [];
|
|
17
|
+
return renderPostedReview(record, postedRenderOptions(cfg, {
|
|
18
|
+
verdict: typeof outcome?.["verdict"] === "string" ? outcome["verdict"] : null,
|
|
19
|
+
summary: typeof outcome?.["summary"] === "string" ? outcome["summary"] : null,
|
|
20
|
+
lensesApplied: passes.length ? passes.join(", ") : null,
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/engine/render.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,uCAAuC;AAEvC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GAEnB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAe,EACf,OAA4C,EAC5C,GAAuB;IAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC,CAAE,OAAO,CAAC,QAAQ,CAAoC;aAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,kBAAkB,CACvB,MAAM,EACN,mBAAmB,CAAC,GAAG,EAAE;QACvB,OAAO,EAAE,OAAO,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;QAC7E,OAAO,EAAE,OAAO,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;QAC7E,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;KACxD,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CoreConfig } from "../reviewconfig.js";
|
|
2
|
+
import { type EngineRouteRuntime } from "./lens/wave.js";
|
|
3
|
+
import type { ReviewSdkOptions } from "./reviewsdk.js";
|
|
4
|
+
/** What a route decides about the SDK host: everything but the lens route,
|
|
5
|
+
* which the config decides. */
|
|
6
|
+
export type ReviewRuntimeOptions = Omit<ReviewSdkOptions, "engine" | "lens" | "extras">;
|
|
7
|
+
/** The review runtime, built lazily; `dispose` releases the host once one was
|
|
8
|
+
* built. One runtime hosts one review at a time. */
|
|
9
|
+
export type LazyReviewRuntime = EngineRouteRuntime & {
|
|
10
|
+
dispose(): Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
export declare function lazyReviewRuntime(cfg: Pick<CoreConfig, "engine" | "pi">, options?: ReviewRuntimeOptions): LazyReviewRuntime;
|
|
13
|
+
//# sourceMappingURL=reviewruntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewruntime.d.ts","sourceRoot":"","sources":["../../../src/engine/reviewruntime.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAA8B,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,gBAAgB,CAAC;AAEzE;+BAC+B;AAC/B,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;AAExF;oDACoD;AACpD,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG;IAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAElF,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI,CAAC,EACtC,OAAO,GAAE,oBAAyB,GACjC,iBAAiB,CAiCnB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { selectRuntime } from "./select.js";
|
|
2
|
+
import { LensWave } from "./lens/wave.js";
|
|
3
|
+
export function lazyReviewRuntime(cfg, options = {}) {
|
|
4
|
+
const engine = cfg.pi.lens_runtime === "engine";
|
|
5
|
+
let built;
|
|
6
|
+
const runtime = selectRuntime(cfg.engine.runtime, "review", () => {
|
|
7
|
+
const wave = new LensWave();
|
|
8
|
+
const load = () => (built ??= import("./reviewsdk.js").then((m) => m.reviewSdkRuntime({
|
|
9
|
+
...options,
|
|
10
|
+
...(engine ? { engine: { wave, plannedWave: cfg.pi.engine_wave } } : {}),
|
|
11
|
+
})));
|
|
12
|
+
const engineLens = {
|
|
13
|
+
wave,
|
|
14
|
+
runner: { run: async (request) => (await load()).engineLens.runner.run(request) },
|
|
15
|
+
plannedWave: cfg.pi.engine_wave,
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
create: async (spec) => (await load()).create(spec),
|
|
19
|
+
resume: async (file, spec) => (await load()).resume(file, spec),
|
|
20
|
+
// The round reads this before any session exists, so it is named here and
|
|
21
|
+
// reaches the runner the host builds.
|
|
22
|
+
...(engine ? { engineLens } : {}),
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
...runtime,
|
|
27
|
+
dispose: async () => {
|
|
28
|
+
const b = built;
|
|
29
|
+
built = undefined;
|
|
30
|
+
if (b !== undefined)
|
|
31
|
+
await (await b).dispose();
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=reviewruntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewruntime.js","sourceRoot":"","sources":["../../../src/engine/reviewruntime.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAA6C,MAAM,gBAAgB,CAAC;AAWrF,MAAM,UAAU,iBAAiB,CAC/B,GAAsC,EACtC,UAAgC,EAAE;IAElC,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,YAAY,KAAK,QAAQ,CAAC;IAChD,IAAI,KAA4C,CAAC;IACjD,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,GAA8B,EAAE,CAC3C,CAAC,KAAK,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7C,CAAC,CAAC,gBAAgB,CAAC;YACjB,GAAG,OAAO;YACV,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC,CACH,CAAC,CAAC;QACL,MAAM,UAAU,GAAgB;YAC9B,IAAI;YACJ,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,UAAW,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAClF,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW;SAChC,CAAC;QACF,OAAO;YACL,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YACnD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;YAC/D,0EAA0E;YAC1E,sCAAsC;YACtC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC,CAAC;IACJ,CAAC,CAAuB,CAAC;IACzB,OAAO;QACL,GAAG,OAAO;QACV,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,CAAC,GAAG,KAAK,CAAC;YAChB,KAAK,GAAG,SAAS,CAAC;YAClB,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { LensRunConfig } from "./lens/runlens.js";
|
|
2
|
+
import { LensWave, type EngineRouteRuntime } from "./lens/wave.js";
|
|
3
|
+
import { PiHost, type PiHostOptions } from "./pisdk.js";
|
|
4
|
+
import type { BudgetReason } from "./budget.js";
|
|
5
|
+
import type { SessionSpec } from "./port.js";
|
|
6
|
+
import { type RoundLensTools } from "./roundsdk.js";
|
|
7
|
+
import { type SessionExtras } from "./sdkruntime.js";
|
|
8
|
+
export interface ReviewSdkOptions {
|
|
9
|
+
/** Builds the host. Omitted: a PiHost over the run's private agent dir, which
|
|
10
|
+
* owns this process (installs pi's HTTP dispatcher) unless `ownsProcess` or
|
|
11
|
+
* `hostPi` says otherwise. */
|
|
12
|
+
makeHost?: (o: PiHostOptions) => Promise<PiHost>;
|
|
13
|
+
/** The round's lens tool, given the spec it serves and the host its passes
|
|
14
|
+
* run on. Omitted: the `engine` option's (or `extras`'). */
|
|
15
|
+
lens?: (spec: SessionSpec, host: PiHost) => RoundLensTools;
|
|
16
|
+
/** The process env the tool uid split is read from. Omitted: `process.env`. */
|
|
17
|
+
processEnv?: NodeJS.ProcessEnv;
|
|
18
|
+
/** Replaces the round's extras (the extension factories, tool allowlist and
|
|
19
|
+
* context stub of a main session) for a session that is not a round's, such
|
|
20
|
+
* as the defect judge's. */
|
|
21
|
+
extras?: (spec: SessionSpec) => SessionExtras;
|
|
22
|
+
/** `[pi] lens_runtime = engine`: the round's lens tools are ours (`lens`,
|
|
23
|
+
* `lens_wave`), their passes SDK sessions on the session's host. `wave` is the
|
|
24
|
+
* round's board (given, so a route can name it before the host exists);
|
|
25
|
+
* `plannedWave` is `[pi] engine_wave`. Takes the `lens` slot. `config` builds
|
|
26
|
+
* the passes' runner config (default `engineLensConfig`): the bench keeps its
|
|
27
|
+
* agents elsewhere. */
|
|
28
|
+
engine?: {
|
|
29
|
+
wave?: LensWave;
|
|
30
|
+
plannedWave: boolean;
|
|
31
|
+
config?: (host: PiHost, spec: SessionSpec) => LensRunConfig;
|
|
32
|
+
};
|
|
33
|
+
/** The last resort of a turn its abort and dispose did not end
|
|
34
|
+
* (packages/pi-plugin/src/engine/budget.ts). `qcr review` and the bench own their process and
|
|
35
|
+
* pass one that exits it. Omitted: the process is left to its owner. */
|
|
36
|
+
backstop?: (reason: BudgetReason) => void;
|
|
37
|
+
/** Where the round's diagnostics go, one line each: a lens runner's warnings
|
|
38
|
+
* (`[lens] …`, unless its config has a `warn` of its own) and ledger-pin's.
|
|
39
|
+
* Omitted: nowhere. */
|
|
40
|
+
warn?: (line: string) => void;
|
|
41
|
+
/** The user's home, resolved by the host: the tool fence keeps its `.pi` out
|
|
42
|
+
* and expands a tool's `~` against it (PiHostOptions.homeDir). */
|
|
43
|
+
homeDir?: string;
|
|
44
|
+
/** The route owns this process (`qcr review`, the bench): PiHost may install
|
|
45
|
+
* pi's HTTP dispatcher. Default true. */
|
|
46
|
+
ownsProcess?: boolean;
|
|
47
|
+
/** The runtime is built by an extension of the running pi (the pi plugin's
|
|
48
|
+
* /review): PiHostOptions.hostPi. Implies `ownsProcess: false`. */
|
|
49
|
+
hostPi?: boolean;
|
|
50
|
+
/** The stretch at the end of a login's life the run refuses on top of its
|
|
51
|
+
* time budget (`checkAuth`'s margin). Default pi's own refresh margin. A
|
|
52
|
+
* host whose pi refreshed the login for this run's whole window just before
|
|
53
|
+
* it (the plugin's borrowed login) passes 0. */
|
|
54
|
+
authMarginMs?: number;
|
|
55
|
+
/** Paths the tool fence keeps out beside the defaults: where the host's own
|
|
56
|
+
* login lives when no env names it (the plugin's host pi agent dir). */
|
|
57
|
+
fenceDirs?: readonly string[];
|
|
58
|
+
}
|
|
59
|
+
/** The review SDK runtime: a runtime, carrying the engine route when it has one.
|
|
60
|
+
* `dispose` releases every host it built (their sessions and in-memory logins);
|
|
61
|
+
* a later session builds a host again. */
|
|
62
|
+
export type ReviewSdkRuntime = EngineRouteRuntime & {
|
|
63
|
+
dispose(): Promise<void>;
|
|
64
|
+
};
|
|
65
|
+
/** The lens runner's config on the review route's host: the passes read the agent
|
|
66
|
+
* dir's agents, carry the reviewer stub and the same bash env allowlist as
|
|
67
|
+
* the main session, and (with a context pack beside the round's ledger) warm
|
|
68
|
+
* their cache groups with it. */
|
|
69
|
+
export declare function engineLensConfig(host: PiHost, spec: SessionSpec): LensRunConfig;
|
|
70
|
+
/**
|
|
71
|
+
* The review route's SDK runtime. One host per agent dir, built lazily at the
|
|
72
|
+
* first session; no session, no host, no network and no env change.
|
|
73
|
+
*/
|
|
74
|
+
export declare function reviewSdkRuntime(options?: ReviewSdkOptions): ReviewSdkRuntime;
|
|
75
|
+
//# sourceMappingURL=reviewsdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewsdk.d.ts","sourceRoot":"","sources":["../../../src/engine/reviewsdk.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAoB,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAA2B,WAAW,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAgD,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAClG,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B;;kCAE8B;IAC9B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD;gEAC4D;IAC5D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,KAAK,cAAc,CAAC;IAC3D,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC/B;;gCAE4B;IAC5B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,aAAa,CAAC;IAC9C;;;;;2BAKuB;IACvB,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,WAAW,EAAE,OAAO,CAAC;QACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,aAAa,CAAC;KAC7D,CAAC;IACF;;4EAEwE;IACxE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C;;2BAEuB;IACvB,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B;sEACkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;6CACyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;uEACmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;oDAGgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;4EACwE;IACxE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED;;0CAE0C;AAC1C,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG;IAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAEjF;;;iCAGiC;AACjC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,aAAa,CAc/E;AAKD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,gBAAgB,CAkHjF"}
|