@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,209 @@
|
|
|
1
|
+
// What a review cost in dollars, the way pi prices it: pi's price table for the
|
|
2
|
+
// models the priced arms run on, and the running price of a pi event stream
|
|
3
|
+
// (src/bench/cost.ts adds the benchmark's per-run report over it). Core: a
|
|
4
|
+
// round prices its own case dir with `caseCostUsd`, and a turn's dollar cap
|
|
5
|
+
// meters its stream with `EventCostMeter` (packages/pi-plugin/src/engine/budget.ts).
|
|
6
|
+
//
|
|
7
|
+
// pi prices every model call it makes (usage.cost on each assistant
|
|
8
|
+
// message_end, and a per-child total on each lens result): a case's cost is the
|
|
9
|
+
// sum over the main session and every lens pass. An arm that does not run
|
|
10
|
+
// through pi has its tokens priced at pi's own rates for the model it served.
|
|
11
|
+
// A slim re-score bundle has no transcripts: its case-summary.json carries the
|
|
12
|
+
// price the export computed from the full case dir (`bench_cost_usd`, null =
|
|
13
|
+
// unpriced), which wins for every arm.
|
|
14
|
+
import { isLensTool, ledgerLineFrom, lensIdOf, lensResultsOf } from "./lensresult.js";
|
|
15
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
16
|
+
import { join } from "node:path";
|
|
17
|
+
/** A number, or 0 for anything that is not a finite one. */
|
|
18
|
+
export function finiteNumber(value) {
|
|
19
|
+
return typeof value === "number" && Number.isFinite(value) ? value : 0;
|
|
20
|
+
}
|
|
21
|
+
/** Child usage accepts either a scalar cost or a total-bearing object. */
|
|
22
|
+
export function usageCost(value) {
|
|
23
|
+
return finiteNumber(typeof value === "object" && value !== null ? value.total : value);
|
|
24
|
+
}
|
|
25
|
+
const num = finiteNumber;
|
|
26
|
+
/** pi's price list for the openai-codex models the priced arms run on, $ per
|
|
27
|
+
* million tokens (model catalog `cost` in pi 0.99.1, unchanged at 1.0.0 — VERIFY-ON-PIN). The
|
|
28
|
+
* pricing is per MODEL: gpt-6.1-sol's cache reads cost half of gpt-6-sol's.
|
|
29
|
+
* Requests above 272k input tokens are priced higher by pi; the bridge-driven
|
|
30
|
+
* arms' calls stay well below that (PR-Agent clamps at 32k by default). */
|
|
31
|
+
export const CODEX_USD_PER_MTOK = {
|
|
32
|
+
"gpt-6-sol": { input: 2, cacheRead: 0.2, output: 10 },
|
|
33
|
+
"gpt-6.1-sol": { input: 2, cacheRead: 0.1, output: 10 },
|
|
34
|
+
};
|
|
35
|
+
/** gpt-6-sol's rates — the model every priced arm ran on before gpt-6.1-sol. */
|
|
36
|
+
export const GPT6_SOL_USD_PER_MTOK = CODEX_USD_PER_MTOK["gpt-6-sol"];
|
|
37
|
+
/** The rates for a case's model; a summary that names none predates per-model
|
|
38
|
+
* pricing and ran on gpt-6-sol. An unknown model has no price — never a guess. */
|
|
39
|
+
export function ratesFor(model) {
|
|
40
|
+
const m = model ?? "gpt-6-sol";
|
|
41
|
+
return Object.hasOwn(CODEX_USD_PER_MTOK, m) ? CODEX_USD_PER_MTOK[m] : null;
|
|
42
|
+
}
|
|
43
|
+
/** OpenAI-style counts (input INCLUDING its cached part) as pi-style usage:
|
|
44
|
+
* input without cache reads, the cached part — capped at the input — apart. */
|
|
45
|
+
export function piUsageFromInclusive(input, cached, output) {
|
|
46
|
+
const cacheRead = Math.min(cached, input);
|
|
47
|
+
return { input: input - cacheRead, cacheRead, output };
|
|
48
|
+
}
|
|
49
|
+
/** The slim bundle's per-case price (bench/aacr/export_runs.py, compare.py
|
|
50
|
+
* `SLIM_COST_KEY`). */
|
|
51
|
+
export const SLIM_COST_KEY = "bench_cost_usd";
|
|
52
|
+
/** What the lens children of one lens tool event (`subagent`, `launch_plan`,
|
|
53
|
+
* `lens`, `lens_wave`) report so far: the sum of their per-child prices. A
|
|
54
|
+
* result carrying an `id` (LensResult v1) counts only when `owns` says this
|
|
55
|
+
* call owns that lens run — a `lens_wave` result repeats runs the engine
|
|
56
|
+
* already launched, and a second call can repeat them again. */
|
|
57
|
+
function toolEventCostUsd(e, owns) {
|
|
58
|
+
let usd = 0;
|
|
59
|
+
for (const r of lensResultsOf(e.partialResult ?? e.result)) {
|
|
60
|
+
const id = lensIdOf(r);
|
|
61
|
+
if (id !== null && !owns(id))
|
|
62
|
+
continue;
|
|
63
|
+
usd += usageCost(r?.usage?.cost);
|
|
64
|
+
}
|
|
65
|
+
return usd;
|
|
66
|
+
}
|
|
67
|
+
/** Owner key of every lens run a ledger line prices. */
|
|
68
|
+
const LEDGER = "\0ledger";
|
|
69
|
+
/** A pi `--mode json` stream's running price. An assistant `message_end` adds
|
|
70
|
+
* its own price. A lens tool call (`subagent`/`launch_plan`, or `lens`/
|
|
71
|
+
* `lens_wave`) prices its lens children twice over its life: each `tool_execution_update` carries what they have
|
|
72
|
+
* spent so far (counted as the largest value seen for that toolCallId — the
|
|
73
|
+
* figure only grows, and a repeated or reordered update adds nothing), and the
|
|
74
|
+
* `tool_execution_end` carries the final figure, which REPLACES that value
|
|
75
|
+
* rather than adding to it. A stream with no updates (every pi-events.jsonl
|
|
76
|
+
* runPi writes) prices as it always did: the ends alone.
|
|
77
|
+
*
|
|
78
|
+
* Each LENS RUN counts once. A result with an `id` (LensResult v1) is owned by
|
|
79
|
+
* the first call — or ledger line — that reports it; every later carrier of
|
|
80
|
+
* the same run adds nothing. A result without an `id` is the native shape and
|
|
81
|
+
* always counts. A lens-ledger line (`add` takes the lines of
|
|
82
|
+
* lens-ledger.jsonl too) prices a run no tool result reported, and a cache
|
|
83
|
+
* warm-up, which only the ledger records. */
|
|
84
|
+
export class EventCostMeter {
|
|
85
|
+
perCall = new Map();
|
|
86
|
+
/** Open tool call → its instance key (a repeated toolCallId after an end is
|
|
87
|
+
* a new call). */
|
|
88
|
+
instance = new Map();
|
|
89
|
+
/** Lens run id → the instance (or the ledger) that owns its price. */
|
|
90
|
+
owner = new Map();
|
|
91
|
+
total = 0;
|
|
92
|
+
settled = 0;
|
|
93
|
+
claim(id, who) {
|
|
94
|
+
const held = this.owner.get(id);
|
|
95
|
+
if (held === undefined) {
|
|
96
|
+
this.owner.set(id, who);
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
return held === who;
|
|
100
|
+
}
|
|
101
|
+
/** Feed one event line; returns the change in the running price (negative
|
|
102
|
+
* only when a call's final figure comes in under its largest live one). */
|
|
103
|
+
add(line) {
|
|
104
|
+
if (!line.startsWith("{"))
|
|
105
|
+
return 0;
|
|
106
|
+
let e;
|
|
107
|
+
try {
|
|
108
|
+
e = JSON.parse(line);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return 0;
|
|
112
|
+
}
|
|
113
|
+
const ledger = ledgerLineFrom(e);
|
|
114
|
+
if (ledger !== null) {
|
|
115
|
+
// One-shot: a ledger line read twice, or for a run a tool result owns,
|
|
116
|
+
// adds nothing.
|
|
117
|
+
if (this.owner.has(ledger.id))
|
|
118
|
+
return 0;
|
|
119
|
+
this.owner.set(ledger.id, LEDGER);
|
|
120
|
+
this.total += ledger.usage.cost;
|
|
121
|
+
return ledger.usage.cost;
|
|
122
|
+
}
|
|
123
|
+
if (e.type === "message_end" && e.message?.role === "assistant") {
|
|
124
|
+
const usd = num(e.message.usage?.cost?.total);
|
|
125
|
+
this.total += usd;
|
|
126
|
+
return usd;
|
|
127
|
+
}
|
|
128
|
+
if ((e.type !== "tool_execution_update" && e.type !== "tool_execution_end") ||
|
|
129
|
+
!isLensTool(e.toolName))
|
|
130
|
+
return 0;
|
|
131
|
+
// A call with no id cannot be matched to its end: it is its own entry.
|
|
132
|
+
const id = typeof e.toolCallId === "string" ? e.toolCallId : `\0anon${this.settled++}`;
|
|
133
|
+
const prev = this.perCall.get(id) ?? 0;
|
|
134
|
+
const who = this.instance.get(id) ?? `${id}\0${this.settled++}`;
|
|
135
|
+
this.instance.set(id, who);
|
|
136
|
+
const usd = toolEventCostUsd(e, (lensId) => this.claim(lensId, who));
|
|
137
|
+
const next = e.type === "tool_execution_end" ? usd : Math.max(prev, usd);
|
|
138
|
+
// A finished call is forgotten: the same id turning up again
|
|
139
|
+
// (pi-events.jsonl appends across a continuation's processes) is a new
|
|
140
|
+
// call, priced on its own, as a line-by-line sum always did.
|
|
141
|
+
if (e.type === "tool_execution_end") {
|
|
142
|
+
this.instance.delete(id);
|
|
143
|
+
this.perCall.delete(id);
|
|
144
|
+
}
|
|
145
|
+
else
|
|
146
|
+
this.perCall.set(id, next);
|
|
147
|
+
// Added in stream order, so a stream with no updates sums exactly as a
|
|
148
|
+
// line-by-line sum of the prices would (float addition is not associative).
|
|
149
|
+
this.total += next - prev;
|
|
150
|
+
return next - prev;
|
|
151
|
+
}
|
|
152
|
+
/** The running price over everything fed so far. */
|
|
153
|
+
get totalUsd() {
|
|
154
|
+
return this.total;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/** What one pi `--mode json` event line costs on its own: an assistant
|
|
158
|
+
* `message_end`'s price, or the children a lens tool update or end reports. Zero for any other line, or one that is not JSON. Summing it
|
|
159
|
+
* over a stream that carries updates counts a call once per update — price a
|
|
160
|
+
* stream with an EventCostMeter. */
|
|
161
|
+
export function eventLineCostUsd(line) {
|
|
162
|
+
return new EventCostMeter().add(line);
|
|
163
|
+
}
|
|
164
|
+
/** The round's lens ledger, beside the events in a case dir. */
|
|
165
|
+
export const LENS_LEDGER_FILE = "lens-ledger.jsonl";
|
|
166
|
+
export function caseCostUsd(caseDir) {
|
|
167
|
+
const events = join(caseDir, "pi-events.jsonl");
|
|
168
|
+
if (existsSync(events)) {
|
|
169
|
+
const meter = new EventCostMeter();
|
|
170
|
+
for (const line of readFileSync(events, "utf8").split("\n"))
|
|
171
|
+
meter.add(line);
|
|
172
|
+
// The ledger after the events: a run a tool result already reported is
|
|
173
|
+
// owned there and adds nothing here; a warm-up is added.
|
|
174
|
+
const ledger = join(caseDir, LENS_LEDGER_FILE);
|
|
175
|
+
if (existsSync(ledger))
|
|
176
|
+
for (const line of readFileSync(ledger, "utf8").split("\n"))
|
|
177
|
+
meter.add(line);
|
|
178
|
+
return { usd: meter.totalUsd, source: "pi" };
|
|
179
|
+
}
|
|
180
|
+
const summary = join(caseDir, "case-summary.json");
|
|
181
|
+
if (!existsSync(summary))
|
|
182
|
+
return null;
|
|
183
|
+
const s = JSON.parse(readFileSync(summary, "utf8"));
|
|
184
|
+
const named = typeof s.model === "string" ? s.model : s.fingerprint?.model;
|
|
185
|
+
const model = typeof named === "string" ? named : "gpt-6-sol";
|
|
186
|
+
if (Object.hasOwn(s, SLIM_COST_KEY)) {
|
|
187
|
+
const usd = s[SLIM_COST_KEY];
|
|
188
|
+
if (typeof usd !== "number" || !Number.isFinite(usd))
|
|
189
|
+
return null;
|
|
190
|
+
return s.arm === "claude"
|
|
191
|
+
? { usd, source: "claude" }
|
|
192
|
+
: s.bridge
|
|
193
|
+
? { usd, source: "priced", ...(ratesFor(model) ? { model } : {}) }
|
|
194
|
+
: { usd, source: "pi" };
|
|
195
|
+
}
|
|
196
|
+
if (s.arm === "claude")
|
|
197
|
+
return typeof s.cost_usd === "number" && Number.isFinite(s.cost_usd)
|
|
198
|
+
? { usd: s.cost_usd, source: "claude" }
|
|
199
|
+
: null;
|
|
200
|
+
if (!s.bridge)
|
|
201
|
+
return null;
|
|
202
|
+
const r = ratesFor(model);
|
|
203
|
+
if (!r)
|
|
204
|
+
return null;
|
|
205
|
+
const u = piUsageFromInclusive(num(s.bridge.input_tokens), num(s.bridge.cached_tokens), num(s.bridge.output_tokens));
|
|
206
|
+
const usd = (u.input * r.input + u.cacheRead * r.cacheRead + u.output * r.output) / 1e6;
|
|
207
|
+
return { usd, source: "priced", model };
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { type PriorStatus } from "./findingsrecord.js";
|
|
2
|
+
import type { PriorFindingCheckRow, ReviewedHeadRow, RoundFindingRow, RoundRow } from "./storerows.js";
|
|
3
|
+
/** At most this many findings in the prompt; the sidecar holds them all. */
|
|
4
|
+
export declare const PRIOR_NOTE_MAX_ENTRIES = 40;
|
|
5
|
+
/** At most this many characters of rendered entries in the prompt. */
|
|
6
|
+
export declare const PRIOR_NOTE_MAX_CHARS = 8000;
|
|
7
|
+
/** One open prior finding, as the round is handed it. */
|
|
8
|
+
export interface PriorFinding {
|
|
9
|
+
/** `<round_no>:<finding_key>` of its LATEST posting — the ref to report. */
|
|
10
|
+
ref: string;
|
|
11
|
+
round_no: number;
|
|
12
|
+
finding_key: string;
|
|
13
|
+
/** The round that first posted it (the head of its re-post chain). */
|
|
14
|
+
origin_round: number;
|
|
15
|
+
/** Older refs of the same finding (earlier postings it re-posted). */
|
|
16
|
+
earlier_refs: string[];
|
|
17
|
+
head_sha: string;
|
|
18
|
+
path: string | null;
|
|
19
|
+
line: number | null;
|
|
20
|
+
posted_as: string;
|
|
21
|
+
severity: string | null;
|
|
22
|
+
lens: string;
|
|
23
|
+
lens_ids: string[];
|
|
24
|
+
title: string | null;
|
|
25
|
+
thread_id: number | null;
|
|
26
|
+
/** Posted as a blocker (`[blocker]`). */
|
|
27
|
+
blocking: boolean;
|
|
28
|
+
/** The last status a round reported for it, when that left it open
|
|
29
|
+
* (`open` / `unverifiable`); null when never reported. */
|
|
30
|
+
last_status: PriorStatus | null;
|
|
31
|
+
last_status_round: number | null;
|
|
32
|
+
last_evidence: string | null;
|
|
33
|
+
/** Left out of the round note; rendered into the task of a lens the finding is assigned to. */
|
|
34
|
+
reason: string | null;
|
|
35
|
+
evidence: string | null;
|
|
36
|
+
}
|
|
37
|
+
/** A finding taken off the list, and why — written to the sidecar. */
|
|
38
|
+
export interface DroppedPriorFinding {
|
|
39
|
+
ref: string;
|
|
40
|
+
why: "superseded" | "conceded" | "settled" | "reported_resolved";
|
|
41
|
+
/** The round whose row or report resolved it. */
|
|
42
|
+
by_round: number;
|
|
43
|
+
status?: PriorStatus;
|
|
44
|
+
evidence?: string | null;
|
|
45
|
+
}
|
|
46
|
+
/** A delivered earlier round whose record could not be read. */
|
|
47
|
+
export interface IncompleteRound {
|
|
48
|
+
round_no: number;
|
|
49
|
+
status: string;
|
|
50
|
+
}
|
|
51
|
+
export interface PriorFindingsList {
|
|
52
|
+
pr: number;
|
|
53
|
+
/** The round being dispatched. */
|
|
54
|
+
round_no: number;
|
|
55
|
+
findings: PriorFinding[];
|
|
56
|
+
dropped: DroppedPriorFinding[];
|
|
57
|
+
incomplete: IncompleteRound[];
|
|
58
|
+
}
|
|
59
|
+
export interface ComputePriorInput {
|
|
60
|
+
pr: number;
|
|
61
|
+
roundNo: number;
|
|
62
|
+
/** Every recorded row of the PR's earlier rounds (ingested or read from a
|
|
63
|
+
* record file); rows of round ≥ roundNo are ignored. */
|
|
64
|
+
rows: readonly RoundFindingRow[];
|
|
65
|
+
/** Every report/listing row; only REPORTED rows of checking rounds before
|
|
66
|
+
* roundNo count. */
|
|
67
|
+
checks: readonly Pick<PriorFindingCheckRow, "checked_round" | "round_no" | "finding_key" | "status" | "evidence">[];
|
|
68
|
+
incomplete?: readonly IncompleteRound[];
|
|
69
|
+
}
|
|
70
|
+
/** The shared posted-finding identity policy: thread ownership first, then
|
|
71
|
+
* explicit raised-in-round continuation. Killed candidates never own a chain. */
|
|
72
|
+
export declare function postedFindingChains(rows: readonly RoundFindingRow[]): {
|
|
73
|
+
posted: RoundFindingRow[];
|
|
74
|
+
postedKeys: Set<string>;
|
|
75
|
+
namedPosting: (r: RoundFindingRow) => RoundFindingRow | null;
|
|
76
|
+
find: (k: string) => string;
|
|
77
|
+
members: Map<string, RoundFindingRow[]>;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* The pure core. Collapse the earlier rounds' rows into the open prior
|
|
81
|
+
* findings:
|
|
82
|
+
*
|
|
83
|
+
* - A re-posting (a later posted row whose `raised_in_round` names an earlier
|
|
84
|
+
* round and which `predecessorOf` maps onto one of that round's postings, or
|
|
85
|
+
* which shares its thread) SUPERSEDES the earlier one: one entry per chain,
|
|
86
|
+
* on its latest posting.
|
|
87
|
+
* - A chain is RESOLVED by a later `conceded` row naming it (thread, or
|
|
88
|
+
* raised_in_round + predecessorOf), a later `settled:<thread>` kill on its
|
|
89
|
+
* thread, or a later round's report of fixed/conceded/settled/obsolete —
|
|
90
|
+
* the LATEST report on the chain wins, and a resolution counts only when it
|
|
91
|
+
* comes from a round after the chain's latest posting (a finding re-posted
|
|
92
|
+
* after it was "resolved" is open again; never quieter).
|
|
93
|
+
* - Sorted blockers first, then by round, path and line.
|
|
94
|
+
*/
|
|
95
|
+
export declare function computePriorFindings(input: ComputePriorInput): PriorFindingsList;
|
|
96
|
+
/** `state/pr-<n>-round-<k>-prior.json`, relative to the root — as the prompt
|
|
97
|
+
* names it. */
|
|
98
|
+
export declare function priorSidecarRel(pr: number, roundNo: number): string;
|
|
99
|
+
/** The sidecar's content: every listed finding with its reason and
|
|
100
|
+
* evidence, and what was dropped and why. */
|
|
101
|
+
export declare function priorSidecarText(list: PriorFindingsList, headSha: string): string;
|
|
102
|
+
export declare function priorSidecarPath(stateDir: string, pr: number, roundNo: number): string;
|
|
103
|
+
/**
|
|
104
|
+
* The `{{prior_findings_note}}` text for a computed list. Never empty: a list
|
|
105
|
+
* with nothing open says so, and says whether that is complete. The entries
|
|
106
|
+
* are rendered inside ONE fenced data block (titles quote PR content); the
|
|
107
|
+
* instructions stay outside it.
|
|
108
|
+
*/
|
|
109
|
+
export declare function renderPriorFindingsNote(list: PriorFindingsList,
|
|
110
|
+
/** `sidecar`: where the note says the full list lives — default the
|
|
111
|
+
* daemon's `state/pr-<n>-round-<k>-prior.json`; the bench's follow-up
|
|
112
|
+
* replay names its case dir's copy. */
|
|
113
|
+
opts?: {
|
|
114
|
+
maxEntries?: number;
|
|
115
|
+
maxChars?: number;
|
|
116
|
+
sidecar?: string;
|
|
117
|
+
}): string;
|
|
118
|
+
/** The store slice the collector reads and writes (src/state.ts's StateStore). */
|
|
119
|
+
export interface PriorFindingsStore {
|
|
120
|
+
roundFindings(pr: number): RoundFindingRow[];
|
|
121
|
+
prEvents(pr: number, kinds: readonly string[]): Array<{
|
|
122
|
+
id: number;
|
|
123
|
+
ts: string;
|
|
124
|
+
kind: string;
|
|
125
|
+
payload: Record<string, unknown>;
|
|
126
|
+
}>;
|
|
127
|
+
roundsFor(pr: number): RoundRow[];
|
|
128
|
+
priorFindingChecks(pr: number): PriorFindingCheckRow[];
|
|
129
|
+
reviewedHead(pr: number): ReviewedHeadRow | undefined;
|
|
130
|
+
recordPriorListing(pr: number, checkedRound: number, headSha: string, items: ReadonlyArray<{
|
|
131
|
+
round_no: number;
|
|
132
|
+
finding_key: string;
|
|
133
|
+
blocking: boolean;
|
|
134
|
+
}>): void;
|
|
135
|
+
logEvent(kind: string, pr: number | null, payload?: unknown): void;
|
|
136
|
+
}
|
|
137
|
+
export interface PriorFindingsDeps {
|
|
138
|
+
store: PriorFindingsStore;
|
|
139
|
+
/** `<root>/state/findings` — where round records live. */
|
|
140
|
+
findingsDir: string;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Collect the open prior findings for round `roundNo` of `pr`. Reads
|
|
144
|
+
* state.db, plus — for every delivered earlier round whose record has not
|
|
145
|
+
* been ingested, and every unverdicted one that may have posted
|
|
146
|
+
* (`mayHavePosted`) — the record file itself, synchronously. A round whose
|
|
147
|
+
* record is missing or unparseable is INCOMPLETE, never an empty round.
|
|
148
|
+
*/
|
|
149
|
+
export declare function collectPriorFindings(deps: PriorFindingsDeps, pr: number, roundNo: number): PriorFindingsList;
|
|
150
|
+
export interface PreparedPriorFindings {
|
|
151
|
+
/** The `{{prior_findings_note}}` text. Never empty. */
|
|
152
|
+
note: string;
|
|
153
|
+
/** The list, or null when it could not be assembled. */
|
|
154
|
+
list: PriorFindingsList | null;
|
|
155
|
+
sidecarPath: string;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Everything dispatch needs for one follow-up round: collect the list, write
|
|
159
|
+
* the sidecar (atomically), record the listing in `prior_finding_checks`,
|
|
160
|
+
* and render the note. TOTAL: a failure renders an explicit
|
|
161
|
+
* "list unavailable — verify from your ledger" note, never an empty one.
|
|
162
|
+
*/
|
|
163
|
+
export declare function preparePriorFindings(deps: PriorFindingsDeps & {
|
|
164
|
+
stateDir: string;
|
|
165
|
+
log?: (msg: string, extra?: unknown) => void;
|
|
166
|
+
}, pr: number, roundNo: number, headSha: string): PreparedPriorFindings;
|
|
167
|
+
//# sourceMappingURL=priorfindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priorfindings.d.ts","sourceRoot":"","sources":["../../src/priorfindings.ts"],"names":[],"mappings":"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"}
|