@quickchatai/pi-quickreview 0.0.0-stage → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1099 -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 +113 -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 +377 -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 +235 -0
- package/dist/src/engine/pisdk.d.ts.map +1 -0
- package/dist/src/engine/pisdk.js +577 -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 +70 -0
- package/dist/src/githubAuth.d.ts.map +1 -0
- package/dist/src/githubAuth.js +183 -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 +106 -0
- package/dist/src/guards.d.ts.map +1 -0
- package/dist/src/guards.js +365 -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/identity.d.ts +34 -0
- package/dist/src/identity.d.ts.map +1 -0
- package/dist/src/identity.js +67 -0
- package/dist/src/identity.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/modelroute.d.ts +38 -0
- package/dist/src/modelroute.d.ts.map +1 -0
- package/dist/src/modelroute.js +105 -0
- package/dist/src/modelroute.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 +42 -0
- package/dist/src/plugin/login.d.ts.map +1 -0
- package/dist/src/plugin/login.js +82 -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 +302 -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 +753 -0
- package/dist/src/reviewconfig.d.ts.map +1 -0
- package/dist/src/reviewconfig.js +805 -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,18 @@
|
|
|
1
|
+
// Maintainer-only text inside prompt files that must never reach a model.
|
|
2
|
+
//
|
|
3
|
+
// Two shapes, both kept in the SOURCE because people and tests read them:
|
|
4
|
+
// - the leading `> Sandbox file: …` doc header (which file this is, who
|
|
5
|
+
// loads it, which placeholders it takes) — rendering it sent the
|
|
6
|
+
// placeholder list a second time, the whole lens plan included;
|
|
7
|
+
// - the `<!-- RATIFIED … -->` / `<!-- /RATIFIED … -->` fence marker lines,
|
|
8
|
+
// which tests/invariant-fences.test.ts pins in the source.
|
|
9
|
+
// Every load path that hands a prompt file to a model strips them here.
|
|
10
|
+
const FENCE_MARKER_LINE = /^[ \t]*<!--[ \t]*\/?RATIFIED\b[^\n]*?-->[ \t]*(?:\r?\n|$)/gm;
|
|
11
|
+
// The header blockquote, the blank lines after it, and an optional `---` rule
|
|
12
|
+
// (with its trailing blank lines) that separated it from the body.
|
|
13
|
+
const DOC_HEADER = /(^|\n)> Sandbox file:[^\n]*\n(?:>[^\n]*\n)*(?:[ \t]*\n)*(?:---[ \t]*\n(?:[ \t]*\n)*)?/;
|
|
14
|
+
/** The prompt text a model should read: no doc header, no fence markers. */
|
|
15
|
+
export function stripModelDocs(text) {
|
|
16
|
+
return text.replace(DOC_HEADER, "$1").replace(FENCE_MARKER_LINE, "");
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=promptdoc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptdoc.js","sourceRoot":"","sources":["../../src/promptdoc.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,qEAAqE;AACrE,oEAAoE;AACpE,6EAA6E;AAC7E,+DAA+D;AAC/D,wEAAwE;AAExE,MAAM,iBAAiB,GAAG,6DAA6D,CAAC;AACxF,8EAA8E;AAC9E,mEAAmE;AACnE,MAAM,UAAU,GACd,uFAAuF,CAAC;AAE1F,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type ExecFn } from "./execfn.js";
|
|
2
|
+
import { type CredentialResolution, type CredentialSource } from "./ghcred.js";
|
|
3
|
+
import { originRepo, type BranchTarget } from "./localreview.js";
|
|
4
|
+
export type PrTargetParse = {
|
|
5
|
+
ok: true;
|
|
6
|
+
repo: string;
|
|
7
|
+
number: number;
|
|
8
|
+
} | {
|
|
9
|
+
ok: false;
|
|
10
|
+
error: string;
|
|
11
|
+
};
|
|
12
|
+
/** A PR argument: `12`, `#12` or a github.com pull URL. A PR on a repo other
|
|
13
|
+
* than the current directory's is refused unless `--repo` names it. */
|
|
14
|
+
export declare function parsePrTarget(arg: string, o: {
|
|
15
|
+
cwdRepo: string | null;
|
|
16
|
+
repo?: string;
|
|
17
|
+
}): PrTargetParse;
|
|
18
|
+
export { originRepo };
|
|
19
|
+
export type { CredentialSource };
|
|
20
|
+
export interface PrFetchRequest {
|
|
21
|
+
repo: string;
|
|
22
|
+
number: number;
|
|
23
|
+
/** An empty or absent directory the PR is fetched into. */
|
|
24
|
+
scratchDir: string;
|
|
25
|
+
token: string;
|
|
26
|
+
fetchFn?: typeof fetch;
|
|
27
|
+
/** Where git fetches from: `<gitBase>/<owner>/<name>.git`. */
|
|
28
|
+
gitBase?: string;
|
|
29
|
+
apiBase?: string;
|
|
30
|
+
/** Stops the fetch: the PR read and the git commands in flight end, and the
|
|
31
|
+
* result is a refusal. */
|
|
32
|
+
signal?: AbortSignal;
|
|
33
|
+
/** Runs git (a test seam). Default: a child process, never blocking the
|
|
34
|
+
* event loop, so the caller's stop is heard while the fetch runs. */
|
|
35
|
+
exec?: ExecFn;
|
|
36
|
+
}
|
|
37
|
+
export type PrFetchResult = {
|
|
38
|
+
ok: true;
|
|
39
|
+
/** The scratch repository: HEAD is the PR's head, `refs/qcr/base` its base. */
|
|
40
|
+
gitDir: string;
|
|
41
|
+
target: BranchTarget;
|
|
42
|
+
title: string;
|
|
43
|
+
body: string | null;
|
|
44
|
+
number: number;
|
|
45
|
+
} | {
|
|
46
|
+
ok: false;
|
|
47
|
+
error: string;
|
|
48
|
+
};
|
|
49
|
+
export declare const SCRATCH_BASE_REF = "refs/qcr/base";
|
|
50
|
+
/** Read the PR (title, body, base) and fetch its head and base. Read-only. */
|
|
51
|
+
export declare function fetchPrTarget(req: PrFetchRequest): Promise<PrFetchResult>;
|
|
52
|
+
export interface PrCredentialDeps {
|
|
53
|
+
env?: Record<string, string | undefined>;
|
|
54
|
+
mintApp?: (secretsDir: string) => Promise<string>;
|
|
55
|
+
ghAuthToken?: () => string | null;
|
|
56
|
+
/** Default: the token handed to this container as a file, if any. */
|
|
57
|
+
handoff?: string | null;
|
|
58
|
+
}
|
|
59
|
+
/** The local route's credential for `secretsDir`, with the real App, env and
|
|
60
|
+
* `gh` unless a test says otherwise. */
|
|
61
|
+
export declare function resolvePrCredential(secretsDir: string, o?: PrCredentialDeps): Promise<CredentialResolution>;
|
|
62
|
+
/** The identity a review is posted as: the credential source the repo names
|
|
63
|
+
* (`post_as` in its review settings), else the one already resolved for
|
|
64
|
+
* reading the PR. A named source that is not available is an error, never a
|
|
65
|
+
* silent switch to another identity. */
|
|
66
|
+
export declare function resolvePostCredential(secretsDir: string, postAs: string | null, resolved: {
|
|
67
|
+
source: CredentialSource;
|
|
68
|
+
token: string;
|
|
69
|
+
}, o?: PrCredentialDeps): Promise<CredentialResolution>;
|
|
70
|
+
//# sourceMappingURL=prtarget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prtarget.d.ts","sourceRoot":"","sources":["../../src/prtarget.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmC,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAiB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhF,MAAM,MAAM,aAAa,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAI5E;uEACuE;AACvE,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,aAAa,CA0Bf;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;8BAC0B;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;yEACqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAOD,MAAM,MAAM,aAAa,GACrB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAGhD,8EAA8E;AAC9E,wBAAsB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAqG/E;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;wCACwC;AACxC,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,CAAC,GAAE,gBAAqB,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAQ/B;AAED;;;wCAGwC;AACxC,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,QAAQ,EAAE;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACrD,CAAC,GAAE,gBAAqB,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAoB/B"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// `qcr review <number|URL>`: which PR, and its head and base fetched into a
|
|
2
|
+
// scratch repository for a read-only review. The credential comes from the
|
|
3
|
+
// local route's chain (packages/pi-plugin/src/ghcred.ts); it is handed to git through the
|
|
4
|
+
// environment, never written into a config file or a URL.
|
|
5
|
+
import { mkdirSync } from "node:fs";
|
|
6
|
+
import { ExecError, nodeExec, runOrThrow } from "./execfn.js";
|
|
7
|
+
import { CREDENTIAL_SOURCES, resolveGithubCredential, ghAuthTokenFromCli, handedToken, } from "./ghcred.js";
|
|
8
|
+
import { TokenMinter } from "./githubAuth.js";
|
|
9
|
+
import { originRepo, resolveBranch } from "./localreview.js";
|
|
10
|
+
const REPO_RE = /^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;
|
|
11
|
+
/** A PR argument: `12`, `#12` or a github.com pull URL. A PR on a repo other
|
|
12
|
+
* than the current directory's is refused unless `--repo` names it. */
|
|
13
|
+
export function parsePrTarget(arg, o) {
|
|
14
|
+
if (o.repo !== undefined && !REPO_RE.test(o.repo))
|
|
15
|
+
return { ok: false, error: `--repo ${o.repo}: expected owner/name` };
|
|
16
|
+
const num = arg.match(/^#?(\d+)$/);
|
|
17
|
+
if (num) {
|
|
18
|
+
const repo = o.repo ?? o.cwdRepo;
|
|
19
|
+
if (!repo)
|
|
20
|
+
return {
|
|
21
|
+
ok: false,
|
|
22
|
+
error: `PR ${arg}: this directory has no GitHub remote — pass --repo owner/name`,
|
|
23
|
+
};
|
|
24
|
+
return { ok: true, repo, number: Number(num[1]) };
|
|
25
|
+
}
|
|
26
|
+
const url = arg.match(/^https:\/\/github\.com\/([^/\s]+\/[^/\s]+)\/pull\/(\d+)(?:[/?#].*)?$/);
|
|
27
|
+
if (!url)
|
|
28
|
+
return { ok: false, error: `${arg}: not a PR number or a github.com pull request URL` };
|
|
29
|
+
const repo = url[1];
|
|
30
|
+
if (o.repo !== undefined && o.repo.toLowerCase() !== repo.toLowerCase())
|
|
31
|
+
return { ok: false, error: `${arg} is on ${repo} but --repo says ${o.repo}` };
|
|
32
|
+
if (o.repo === undefined && (o.cwdRepo ?? "").toLowerCase() !== repo.toLowerCase())
|
|
33
|
+
return {
|
|
34
|
+
ok: false,
|
|
35
|
+
error: `${arg} is on ${repo}, not this directory's repository` +
|
|
36
|
+
`${o.cwdRepo ? ` (${o.cwdRepo})` : ""} — pass --repo ${repo} to review it anyway`,
|
|
37
|
+
};
|
|
38
|
+
return { ok: true, repo, number: Number(url[2]) };
|
|
39
|
+
}
|
|
40
|
+
export { originRepo };
|
|
41
|
+
/** How long the network fetch of a PR's head and base may take. */
|
|
42
|
+
const FETCH_TIMEOUT_MS = 30 * 60_000;
|
|
43
|
+
/** How long a local git step of the fetch may take. */
|
|
44
|
+
const LOCAL_GIT_TIMEOUT_MS = 2 * 60_000;
|
|
45
|
+
export const SCRATCH_BASE_REF = "refs/qcr/base";
|
|
46
|
+
const HEAD_REF = "refs/qcr/head";
|
|
47
|
+
/** Read the PR (title, body, base) and fetch its head and base. Read-only. */
|
|
48
|
+
export async function fetchPrTarget(req) {
|
|
49
|
+
const label = `${req.repo}#${req.number}`;
|
|
50
|
+
const fetchFn = req.fetchFn ?? fetch;
|
|
51
|
+
const apiBase = req.apiBase ?? "https://api.github.com";
|
|
52
|
+
let pr;
|
|
53
|
+
try {
|
|
54
|
+
const res = await fetchFn(`${apiBase}/repos/${req.repo}/pulls/${req.number}`, {
|
|
55
|
+
signal: req.signal
|
|
56
|
+
? AbortSignal.any([req.signal, AbortSignal.timeout(60_000)])
|
|
57
|
+
: AbortSignal.timeout(60_000),
|
|
58
|
+
headers: {
|
|
59
|
+
authorization: `Bearer ${req.token}`,
|
|
60
|
+
accept: "application/vnd.github+json",
|
|
61
|
+
"x-github-api-version": "2022-11-28",
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
if (res.status === 401 || res.status === 403)
|
|
65
|
+
return {
|
|
66
|
+
ok: false,
|
|
67
|
+
error: `GitHub rejected the credential reading ${label} (${res.status}): check it can read ${req.repo}, or run \`gh auth login\``,
|
|
68
|
+
};
|
|
69
|
+
if (res.status === 404)
|
|
70
|
+
return {
|
|
71
|
+
ok: false,
|
|
72
|
+
error: `${label} was not found — wrong number or repo, or the credential cannot see ${req.repo}`,
|
|
73
|
+
};
|
|
74
|
+
if (!res.ok)
|
|
75
|
+
return { ok: false, error: `GitHub answered ${res.status} for ${label}` };
|
|
76
|
+
pr = (await res.json());
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
return {
|
|
80
|
+
ok: false,
|
|
81
|
+
error: `could not read ${label} from GitHub: ${String(err).slice(0, 200)}`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const baseRef = pr.base?.ref;
|
|
85
|
+
if (!baseRef || !pr.head?.sha)
|
|
86
|
+
return { ok: false, error: `${label}: GitHub's answer had no head or base` };
|
|
87
|
+
mkdirSync(req.scratchDir, { recursive: true });
|
|
88
|
+
const header = `Authorization: Basic ${Buffer.from(`x-access-token:${req.token}`).toString("base64")}`;
|
|
89
|
+
const exec = req.exec ?? nodeExec;
|
|
90
|
+
const run = async (args, timeoutMs, auth = false) => {
|
|
91
|
+
await runOrThrow(exec, "git", args, {
|
|
92
|
+
cwd: req.scratchDir,
|
|
93
|
+
env: {
|
|
94
|
+
...process.env,
|
|
95
|
+
GIT_TERMINAL_PROMPT: "0",
|
|
96
|
+
...(auth
|
|
97
|
+
? {
|
|
98
|
+
GIT_CONFIG_COUNT: "1",
|
|
99
|
+
GIT_CONFIG_KEY_0: "http.extraheader",
|
|
100
|
+
GIT_CONFIG_VALUE_0: header,
|
|
101
|
+
}
|
|
102
|
+
: {}),
|
|
103
|
+
},
|
|
104
|
+
timeoutMs,
|
|
105
|
+
...(req.signal ? { signal: req.signal } : {}),
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
try {
|
|
109
|
+
await run(["init", "-q"], LOCAL_GIT_TIMEOUT_MS);
|
|
110
|
+
await run([
|
|
111
|
+
"fetch",
|
|
112
|
+
"-q",
|
|
113
|
+
"--no-tags",
|
|
114
|
+
`${req.gitBase ?? "https://github.com"}/${req.repo}.git`,
|
|
115
|
+
`+refs/pull/${req.number}/head:${HEAD_REF}`,
|
|
116
|
+
`+refs/heads/${baseRef}:${SCRATCH_BASE_REF}`,
|
|
117
|
+
], FETCH_TIMEOUT_MS, true);
|
|
118
|
+
await run(["update-ref", "--no-deref", "HEAD", HEAD_REF], LOCAL_GIT_TIMEOUT_MS);
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
if (req.signal?.aborted)
|
|
122
|
+
return { ok: false, error: `the fetch of ${label} was stopped` };
|
|
123
|
+
// a killed git (its time ran out) exits with no code of its own
|
|
124
|
+
const words = err instanceof ExecError
|
|
125
|
+
? err.result.code === -1
|
|
126
|
+
? "git took too long and was stopped"
|
|
127
|
+
: err.result.stderr.trim() || err.message
|
|
128
|
+
: String(err);
|
|
129
|
+
const msg = words.replaceAll(req.token, "***").slice(0, 300);
|
|
130
|
+
return { ok: false, error: `git could not fetch ${label}: ${msg}` };
|
|
131
|
+
}
|
|
132
|
+
const resolved = resolveBranch(req.scratchDir, SCRATCH_BASE_REF);
|
|
133
|
+
if (!resolved.ok)
|
|
134
|
+
return { ok: false, error: `${label}: ${resolved.error}` };
|
|
135
|
+
return {
|
|
136
|
+
ok: true,
|
|
137
|
+
gitDir: req.scratchDir,
|
|
138
|
+
target: { ...resolved.target, repo: req.repo, branch: `PR #${req.number}`, base: baseRef },
|
|
139
|
+
title: pr.title ?? `PR #${req.number}`,
|
|
140
|
+
body: pr.body ?? null,
|
|
141
|
+
number: req.number,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/** The local route's credential for `secretsDir`, with the real App, env and
|
|
145
|
+
* `gh` unless a test says otherwise. */
|
|
146
|
+
export function resolvePrCredential(secretsDir, o = {}) {
|
|
147
|
+
return resolveGithubCredential({
|
|
148
|
+
secretsDir,
|
|
149
|
+
env: o.env ?? process.env,
|
|
150
|
+
mintApp: o.mintApp ?? ((dir) => new TokenMinter(dir).installationToken()),
|
|
151
|
+
ghAuthToken: o.ghAuthToken ?? ghAuthTokenFromCli,
|
|
152
|
+
handoff: o.handoff === undefined ? handedToken() : o.handoff,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/** The identity a review is posted as: the credential source the repo names
|
|
156
|
+
* (`post_as` in its review settings), else the one already resolved for
|
|
157
|
+
* reading the PR. A named source that is not available is an error, never a
|
|
158
|
+
* silent switch to another identity. */
|
|
159
|
+
export async function resolvePostCredential(secretsDir, postAs, resolved, o = {}) {
|
|
160
|
+
if (postAs === null)
|
|
161
|
+
return { ok: true, ...resolved };
|
|
162
|
+
const known = CREDENTIAL_SOURCES;
|
|
163
|
+
if (!known.includes(postAs)) {
|
|
164
|
+
return {
|
|
165
|
+
ok: false,
|
|
166
|
+
error: `post_as is ${postAs} but that credential is not available (expected one of ${known.join(", ")})`,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const env = o.env ?? process.env;
|
|
170
|
+
const r = await resolveGithubCredential({
|
|
171
|
+
secretsDir: postAs === "app" ? secretsDir : "",
|
|
172
|
+
env: postAs.startsWith("env:") ? { [postAs.slice(4)]: env[postAs.slice(4)] } : {},
|
|
173
|
+
mintApp: o.mintApp ?? ((dir) => new TokenMinter(dir).installationToken()),
|
|
174
|
+
ghAuthToken: postAs === "gh" ? (o.ghAuthToken ?? ghAuthTokenFromCli) : () => null,
|
|
175
|
+
handoff: postAs === "handoff" ? (o.handoff === undefined ? handedToken() : o.handoff) : null,
|
|
176
|
+
});
|
|
177
|
+
return r.ok
|
|
178
|
+
? r
|
|
179
|
+
: { ok: false, error: `post_as is ${postAs} but that credential is not available: ${r.error}` };
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=prtarget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prtarget.js","sourceRoot":"","sources":["../../src/prtarget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** What woke the recheck. `author_reply` is listed because it is a decided
|
|
2
|
+
* trigger — its handling is "hand it to ping-pong and do nothing else". */
|
|
3
|
+
export type RecheckTrigger = "push" | "ci" | "base_advance" | "author_reply";
|
|
4
|
+
/** Why a file was judged not worth re-reviewing. */
|
|
5
|
+
export type TrivialReason = "base-merge" | "migration-renumber" | "pure-rename" | "version-bump" | "formatting" | "no-content-change";
|
|
6
|
+
export interface FileClass {
|
|
7
|
+
filename: string;
|
|
8
|
+
class: "trivial" | "significant";
|
|
9
|
+
/** The trivial rule that fired, or "content" for a real change. */
|
|
10
|
+
reason: TrivialReason | "content";
|
|
11
|
+
}
|
|
12
|
+
/** The recheck's own order kind — deliberately NOT a RoundOrder: no round is
|
|
13
|
+
* started, no pass plan exists, and the session is asked one question. */
|
|
14
|
+
export interface RecheckOrder {
|
|
15
|
+
pr: number;
|
|
16
|
+
title: string;
|
|
17
|
+
trigger: RecheckTrigger;
|
|
18
|
+
/** Always APPROVE — the only standing verdict this path can act on. */
|
|
19
|
+
standing_verdict: "APPROVE";
|
|
20
|
+
last_reviewed_sha: string;
|
|
21
|
+
head_sha: string;
|
|
22
|
+
worktree: string;
|
|
23
|
+
evidence: string;
|
|
24
|
+
files: FileClass[];
|
|
25
|
+
/** Files hand-resolved inside merge commits of this delta — the session
|
|
26
|
+
* must audit each against BOTH merge parents. */
|
|
27
|
+
resolved_files: string[];
|
|
28
|
+
/** Relative name of the decision file the session must write. */
|
|
29
|
+
decision_file: string;
|
|
30
|
+
issued_at: string;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=recheckorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recheckorder.d.ts","sourceRoot":"","sources":["../../src/recheckorder.ts"],"names":[],"mappings":"AAIA;2EAC2E;AAC3E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,IAAI,GAAG,cAAc,GAAG,cAAc,CAAC;AAE7E,oDAAoD;AACpD,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,oBAAoB,GACpB,aAAa,GACb,cAAc,GACd,YAAY,GACZ,mBAAmB,CAAC;AAExB,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,aAAa,CAAC;IACjC,mEAAmE;IACnE,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;CACnC;AAED;0EAC0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,uEAAuE;IACvE,gBAAgB,EAAE,SAAS,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB;qDACiD;IACjD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// The post-approval recheck's order: what woke it, the delta's file
|
|
2
|
+
// classes and the one question handed to the session. The core renders it
|
|
3
|
+
// (packages/pi-plugin/src/templates.ts); src/recheck.ts builds it and re-exports these.
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=recheckorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recheckorder.js","sourceRoot":"","sources":["../../src/recheckorder.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,0EAA0E;AAC1E,wFAAwF"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import type { CoreConfig } from "./reviewconfig.js";
|
|
2
|
+
import type { Ecosystem } from "./ecosystem.js";
|
|
3
|
+
import { type ReviewMemoryPort } from "./memoryport.js";
|
|
4
|
+
import type { ProfilePlace } from "./profilelookup.js";
|
|
5
|
+
import type { ProfileLookup } from "./profiles.js";
|
|
6
|
+
import { type PrCredentialDeps, type PrFetchRequest } from "./prtarget.js";
|
|
7
|
+
import { type Destination, type DestinationChoice } from "./reviewdest.js";
|
|
8
|
+
import { type OneShotResult } from "./oneshot.js";
|
|
9
|
+
import type { RoundSpec } from "./engine/round.js";
|
|
10
|
+
import type { Runtime } from "./engine/port.js";
|
|
11
|
+
/** What is reviewed. */
|
|
12
|
+
export type ReviewTarget =
|
|
13
|
+
/** The repo dir's current branch against its base (`base`, else origin's
|
|
14
|
+
* default branch, main, master). */
|
|
15
|
+
{
|
|
16
|
+
kind: "branch";
|
|
17
|
+
base?: string;
|
|
18
|
+
}
|
|
19
|
+
/** The uncommitted working tree (staged, unstaged and new files) against
|
|
20
|
+
* HEAD. Never posted anywhere. */
|
|
21
|
+
| {
|
|
22
|
+
kind: "uncommitted";
|
|
23
|
+
}
|
|
24
|
+
/** A pull request: `12`, `#12` or a github.com pull URL. A PR on another
|
|
25
|
+
* repo than the repo dir's needs `repo` (owner/name). */
|
|
26
|
+
| {
|
|
27
|
+
kind: "pr";
|
|
28
|
+
pr: string | number;
|
|
29
|
+
repo?: string;
|
|
30
|
+
}
|
|
31
|
+
/** A unified diff: its text, or a reader the run calls when it gets there
|
|
32
|
+
* (a reader's Error message is the refusal, word for word). `name` says
|
|
33
|
+
* where it came from: a file name, or "-" (or nothing) for a piped diff.
|
|
34
|
+
* The repo dir is optional and only read; a diff is never posted. */
|
|
35
|
+
| {
|
|
36
|
+
kind: "diff";
|
|
37
|
+
diff: string | (() => Promise<string>);
|
|
38
|
+
name?: string;
|
|
39
|
+
};
|
|
40
|
+
/** Who is asking. "laptop" previews the estimate, asks above the limit and
|
|
41
|
+
* stops hard at twice the estimate. "action" never asks and has no cap of its
|
|
42
|
+
* own: only a given limit stops the run. */
|
|
43
|
+
export type ReviewRoute = "laptop" | "action";
|
|
44
|
+
/** What the host's isolation of one run is given: core's is
|
|
45
|
+
* packages/pi-plugin/src/reviewhost.ts `prepareReviewHost`, which a host calls with its own words
|
|
46
|
+
* for a refused login (`qcr review`'s: src/hostroute.ts `prepareHostRun`). */
|
|
47
|
+
export interface ReviewHostRequest {
|
|
48
|
+
root: string;
|
|
49
|
+
/** The operator's pi agent dir (its login). Read, never written. */
|
|
50
|
+
srcAgentDir: string;
|
|
51
|
+
/** Where the run's private agent dir goes: `<runDir>/agent`. */
|
|
52
|
+
agentDir: string;
|
|
53
|
+
/** The run's out dir: pi's cwd. */
|
|
54
|
+
cwd: string;
|
|
55
|
+
cfg: CoreConfig;
|
|
56
|
+
/** The review's time budget: a login that expires inside it is refused
|
|
57
|
+
* with `AuthExpiring` (packages/pi-plugin/src/engine/auth.ts). */
|
|
58
|
+
needMs: number;
|
|
59
|
+
/** Checkouts the cwd must stay out of: the asset tree, the reviewed repo. */
|
|
60
|
+
checkouts: readonly string[];
|
|
61
|
+
/** A profile's replacements for the lens agents. */
|
|
62
|
+
profile: {
|
|
63
|
+
readFile?: (path: string) => string;
|
|
64
|
+
lookup: ProfileLookup;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** The isolated run the host prepared. */
|
|
68
|
+
export interface ReviewHostRun {
|
|
69
|
+
/** pi's agent dir for the run. It goes with the run. */
|
|
70
|
+
agentDir: string;
|
|
71
|
+
/** Where pi runs. */
|
|
72
|
+
cwd: string;
|
|
73
|
+
/** Context files above `cwd` that pi would load too. */
|
|
74
|
+
strayContext: string[];
|
|
75
|
+
}
|
|
76
|
+
export interface ReviewLimits {
|
|
77
|
+
route?: ReviewRoute;
|
|
78
|
+
/** The limit for this run, over the repo's own (`auto_limit_usd`); on the
|
|
79
|
+
* "action" route it is the hard stop. */
|
|
80
|
+
limitUsd?: number;
|
|
81
|
+
/** Start over the limit without asking, quoting the key a preview showed. */
|
|
82
|
+
key?: string;
|
|
83
|
+
/** The round's wall clock. */
|
|
84
|
+
timeoutMs: number;
|
|
85
|
+
}
|
|
86
|
+
/** A runtime for one run. `dispose`, when it has one, is called when the run
|
|
87
|
+
* ends (packages/pi-plugin/src/engine/reviewsdk.ts disposes the hosts it built). */
|
|
88
|
+
export type ReviewRuntime = Runtime & {
|
|
89
|
+
dispose?: () => Promise<void> | void;
|
|
90
|
+
};
|
|
91
|
+
/** What a run's runtime is built for. */
|
|
92
|
+
export interface ReviewRuntimeRequest {
|
|
93
|
+
/** The run's own directory. */
|
|
94
|
+
runDir: string;
|
|
95
|
+
}
|
|
96
|
+
export interface ReviewOptions {
|
|
97
|
+
/** The repository (or a directory in it) the review stands in. A diff
|
|
98
|
+
* needs none there: it is then only read for context. */
|
|
99
|
+
repoDir: string;
|
|
100
|
+
/** The asset tree: prompts/, extensions/, agents/ (packages/pi-plugin/src/assetroot.ts). */
|
|
101
|
+
root: string;
|
|
102
|
+
/** The operator's pi agent dir (its login): only read. */
|
|
103
|
+
agentDir: string;
|
|
104
|
+
/** Where each run keeps its throwaway tree and its files. */
|
|
105
|
+
runsDir: string;
|
|
106
|
+
/** Where a dry-run install records the review it would have posted. */
|
|
107
|
+
dryrunDir: string;
|
|
108
|
+
/** The review home: each repo's delta history and saved destination
|
|
109
|
+
* (packages/pi-plugin/src/reviewstore.ts). Null: nothing is remembered, so every run is a full
|
|
110
|
+
* review and no destination is saved. */
|
|
111
|
+
storeDir: string | null;
|
|
112
|
+
config: CoreConfig;
|
|
113
|
+
ecosystem: Ecosystem;
|
|
114
|
+
/** Where profiles are looked up before the asset tree's examples. */
|
|
115
|
+
profileHomes?: readonly ProfilePlace[];
|
|
116
|
+
/** Builds the runtime that hosts one run's review session. Called once per
|
|
117
|
+
* run, when the round is about to start (a preview, a refusal or an
|
|
118
|
+
* unchanged head builds none), and the runtime is disposed when the run
|
|
119
|
+
* ends. A runtime carries the run's lens board and lens runner, so it hosts
|
|
120
|
+
* one run at a time: a runtime still hosting another run is refused. */
|
|
121
|
+
runtime: (run: ReviewRuntimeRequest) => ReviewRuntime;
|
|
122
|
+
/** Isolates the run from the operator's pi home and every checkout.
|
|
123
|
+
* Absent: core's isolation (packages/pi-plugin/src/reviewhost.ts) with the engine's words for
|
|
124
|
+
* a refused login. */
|
|
125
|
+
prepareHost?: (req: ReviewHostRequest) => ReviewHostRun;
|
|
126
|
+
/** Runs the round inside interactive pi instead of on `runtime` (a debug
|
|
127
|
+
* round: no live log, no cap, nothing posted, no destination asked). */
|
|
128
|
+
debugRound?: (spec: RoundSpec) => Promise<OneShotResult>;
|
|
129
|
+
/** The install's memory. Absent or null: the review runs without memory
|
|
130
|
+
* and says so once. */
|
|
131
|
+
memory?: ReviewMemoryPort | null;
|
|
132
|
+
/** Where the result goes, for this run. Absent or empty: the repo's saved
|
|
133
|
+
* default, else the person is asked (`io.choose`), else the fallback. */
|
|
134
|
+
destinations?: readonly Destination[];
|
|
135
|
+
/** Write the markdown report to this file (implies "file"); a relative path
|
|
136
|
+
* is the repo dir's. */
|
|
137
|
+
reportFile?: string;
|
|
138
|
+
/** Review the whole target again, ignoring what an earlier review left. */
|
|
139
|
+
full?: boolean;
|
|
140
|
+
limits: ReviewLimits;
|
|
141
|
+
/** The GitHub credential sources and where GitHub is (a test seam). */
|
|
142
|
+
github?: PrCredentialDeps & Pick<PrFetchRequest, "fetchFn" | "gitBase" | "apiBase">;
|
|
143
|
+
}
|
|
144
|
+
/** What a prompt port is given beside its question: the run's stop, which
|
|
145
|
+
* closes the question unanswered. */
|
|
146
|
+
export interface AskOptions {
|
|
147
|
+
signal?: AbortSignal;
|
|
148
|
+
}
|
|
149
|
+
/** The round that is about to start, for a UI to show while it runs. */
|
|
150
|
+
export interface ReviewStarted {
|
|
151
|
+
/** The run's directory: the round's live log is under it (src/live/). */
|
|
152
|
+
runDir: string;
|
|
153
|
+
/** Where the round writes its files. */
|
|
154
|
+
outDir: string;
|
|
155
|
+
/** The round's session name (the live log's key). */
|
|
156
|
+
sessionName: string;
|
|
157
|
+
lenses: readonly string[];
|
|
158
|
+
estimateUsd: number;
|
|
159
|
+
/** The hard stop in dollars; null: none. */
|
|
160
|
+
capUsd: number | null;
|
|
161
|
+
}
|
|
162
|
+
/** The ports: everything that reaches a person. */
|
|
163
|
+
export interface ReviewIo {
|
|
164
|
+
/** Ask a yes/no question. Null or absent: nobody to ask. A stop closes the
|
|
165
|
+
* question: the run ends stopped, whatever the port answers. */
|
|
166
|
+
confirm?: ((question: string, o?: AskOptions) => Promise<boolean>) | null;
|
|
167
|
+
/** Ask the person to pick one option. Absent: not interactive, so the
|
|
168
|
+
* destination question is never asked. A stop closes it, as for `confirm`. */
|
|
169
|
+
choose?: (question: string, options: DestinationChoice[], o?: AskOptions) => Promise<Destination>;
|
|
170
|
+
/** The run's own progress lines for a person (the preview before the run,
|
|
171
|
+
* the memory notice). */
|
|
172
|
+
progress?: (line: string) => void;
|
|
173
|
+
/** The round is about to start: where it runs and what it plans. */
|
|
174
|
+
started?: (run: ReviewStarted) => void;
|
|
175
|
+
/** A warning said before the run. */
|
|
176
|
+
warn?: (line: string) => void;
|
|
177
|
+
/** The round's diagnostics. */
|
|
178
|
+
log?: (line: string) => void;
|
|
179
|
+
/** Stops the review: it returns a stopped result and cleans up after itself. */
|
|
180
|
+
signal?: AbortSignal;
|
|
181
|
+
}
|
|
182
|
+
/** The versioned JSON object (`qcr review --json`, schemas/review-result.v1.json). */
|
|
183
|
+
export type ReviewData = Record<string, unknown> & {
|
|
184
|
+
schema_version: number;
|
|
185
|
+
ok: boolean;
|
|
186
|
+
};
|
|
187
|
+
export interface ReviewResult {
|
|
188
|
+
/** The versioned JSON object, `schema_version` first. */
|
|
189
|
+
data: ReviewData;
|
|
190
|
+
/** The rendered review; null when the run made none (a refusal, a preview,
|
|
191
|
+
* a review that did not finish). */
|
|
192
|
+
markdown: string | null;
|
|
193
|
+
/** What a terminal shows a person. */
|
|
194
|
+
text: string;
|
|
195
|
+
/** 0 done; 1 refused, declined, failed, stopped or partial; 2 usage. */
|
|
196
|
+
exitCode: 0 | 1 | 2;
|
|
197
|
+
/** Where the result goes, as settled; null when the run ended before that
|
|
198
|
+
* (the caller's own fallback applies). */
|
|
199
|
+
destinations: readonly Destination[] | null;
|
|
200
|
+
}
|
|
201
|
+
/** Run the review of `target`: the plan, the price, the round, the record and,
|
|
202
|
+
* when asked, the post. Never throws for a refusal; the result says it. */
|
|
203
|
+
export declare function review(target: ReviewTarget, opts: ReviewOptions, io?: ReviewIo): Promise<ReviewResult>;
|
|
204
|
+
/** The plan, the price and the key `review` would run under; starts nothing,
|
|
205
|
+
* asks nothing and saves no destination. */
|
|
206
|
+
export declare function preview(target: ReviewTarget, opts: ReviewOptions, io?: ReviewIo): Promise<ReviewResult>;
|
|
207
|
+
//# sourceMappingURL=reviewapi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewapi.d.ts","sourceRoot":"","sources":["../../src/reviewapi.ts"],"names":[],"mappings":"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"}
|