@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,326 @@
|
|
|
1
|
+
// Per-lens tuning from the repo profile.
|
|
2
|
+
//
|
|
3
|
+
// `profile.toml` may carry one `[lenses.<pass>]` table per lens, five keys
|
|
4
|
+
// (and a sixth for the style lens alone):
|
|
5
|
+
//
|
|
6
|
+
// [lenses.pass-security]
|
|
7
|
+
// min_tier = "sol-high" # the lowest tier the plan may run it at
|
|
8
|
+
// effort = "high" # low | medium | high — that lens's thinking only
|
|
9
|
+
// max_severity = "P0" # the lens's severity ceiling (raise or lower)
|
|
10
|
+
// emphasis = "Auth is the product here; …" # words for that lens
|
|
11
|
+
//
|
|
12
|
+
// [lenses.pass-ui]
|
|
13
|
+
// enabled = false # remove the lens from the plan and the add list
|
|
14
|
+
//
|
|
15
|
+
// [lenses.pass-style]
|
|
16
|
+
// guide = "style-guide.md" # a guide file in this profile's dir
|
|
17
|
+
//
|
|
18
|
+
// The resolved map (the whole `extends` chain merged, child-wins per key —
|
|
19
|
+
// packages/pi-plugin/src/profiles.ts `loadProfileLensTuning`) rides the `Config` as `cfg.lenses`,
|
|
20
|
+
// overlaid by `applyProfileTuning` AFTER config.toml and its preset are
|
|
21
|
+
// parsed: **the profile wins** over config.toml, the preset and the code
|
|
22
|
+
// defaults. Every consumer then reads one place:
|
|
23
|
+
//
|
|
24
|
+
// * `min_tier` — plan time (src/dispatch.ts `buildPassPlan`): a FLOOR under
|
|
25
|
+
// whatever tier the plan would otherwise choose, so plan rows, `raisable_to`,
|
|
26
|
+
// the sweep rows and the add rule's variant all move with it. A floor never
|
|
27
|
+
// lowers: a risk pass stays at `sol-high`, the validator stays at or above
|
|
28
|
+
// its configured tier. A lens's floor never moves the validator (it is
|
|
29
|
+
// not raised to match any lens).
|
|
30
|
+
// * `effort` — build time, through the per-variant model hook
|
|
31
|
+
// (`BuildAgentsOptions.models`): only that lens's `<pass>--<tier>` specs get
|
|
32
|
+
// the new thinking suffix. `high` means the model's ceiling
|
|
33
|
+
// (`[models] effort_max`), exactly as the global `[models] effort` does.
|
|
34
|
+
// * `enabled` — `false` removes the lens from selection and from the addable
|
|
35
|
+
// list, whatever selected it (the path core, a heuristic, a sub-lens
|
|
36
|
+
// trigger, a `[review]` lever). A separate, profile-level subtraction:
|
|
37
|
+
// heuristics stay ADD-only. `true` is the default and only matters for a
|
|
38
|
+
// lens a `[review]` lever gates (sub-lenses, the sweep, the tests, quality
|
|
39
|
+
// and style lenses) — there it switches that one lens on whatever the lever
|
|
40
|
+
// says. It never plans an addable-only lens or anything else the
|
|
41
|
+
// selector did not choose. `false` on `pass-validate` switches the
|
|
42
|
+
// validator off: the round then posts the merged candidates
|
|
43
|
+
// with no adversary in front of them, and nothing is doubted.
|
|
44
|
+
// * `emphasis` and `max_severity` — compiled into addenda
|
|
45
|
+
// (`lensTuningAddenda`) that wire.ts and the bench compose after the
|
|
46
|
+
// profile's own pack, so the addendum registry stays the ONLY route into a
|
|
47
|
+
// pass body (rule 6). The ceiling binds at the validator, which enforces
|
|
48
|
+
// every other cap, and is also told to the lens itself.
|
|
49
|
+
// * `guide` (`pass-style` only) — a style guide drafted into the
|
|
50
|
+
// profile for a repo that writes none: a file path RELATIVE to the
|
|
51
|
+
// profile's own directory (so it lives in the config home), read and
|
|
52
|
+
// checked at load. Plan time: the style lens is planned on it only when
|
|
53
|
+
// the repo's own guide (packages/pi-plugin/src/styleguide.ts) finds nothing — **a guide the
|
|
54
|
+
// repo writes wins**. Build time: the text is compiled into an addendum
|
|
55
|
+
// for `pass-style` and the validator, like `emphasis`, so it reaches the
|
|
56
|
+
// session wherever the session runs. Style findings stay `nit` against
|
|
57
|
+
// either guide unless `max_severity` raises the lens's ceiling.
|
|
58
|
+
import { readFileSync, realpathSync, statSync } from "node:fs";
|
|
59
|
+
import { isAbsolute, join, relative, sep } from "node:path";
|
|
60
|
+
import { effortLevel, normalizeEffort, withThinking } from "./reviewconfig.js";
|
|
61
|
+
import { passTierModels, sweepLightVariants, VALIDATE_PASS as VALIDATE, } from "./include.js";
|
|
62
|
+
import { SEVERITIES } from "./severity.js";
|
|
63
|
+
import { flooredToMin, PASS_TIER_ORDER } from "./types.js";
|
|
64
|
+
export const LENS_TUNING_KEYS = [
|
|
65
|
+
"min_tier",
|
|
66
|
+
"effort",
|
|
67
|
+
"enabled",
|
|
68
|
+
"emphasis",
|
|
69
|
+
"max_severity",
|
|
70
|
+
"guide",
|
|
71
|
+
];
|
|
72
|
+
/** The one lens a profile may point at a guide. */
|
|
73
|
+
export const STYLE_LENS = "pass-style";
|
|
74
|
+
/** A drafted guide is a guide, not a manual: it is compiled into two built
|
|
75
|
+
* bodies (the style lens and the validator). */
|
|
76
|
+
export const PROFILE_GUIDE_MAX_CHARS = 32_000;
|
|
77
|
+
/** An emphasis is a few sentences for one lens, not a second rulebook. */
|
|
78
|
+
export const EMPHASIS_MAX_CHARS = 2000;
|
|
79
|
+
/** The downgrade word the validator records when a profile ceiling caps a
|
|
80
|
+
* candidate (packages/pi-plugin/src/findingsrecord.ts DOWNGRADE_WORDS). */
|
|
81
|
+
export const PROFILE_CAP_WORD = "profile-over-cap";
|
|
82
|
+
const EMPHASIS_ID_PREFIX = "lens-emphasis-";
|
|
83
|
+
const CEILING_ID_PREFIX = "lens-ceiling-";
|
|
84
|
+
const GUIDE_ID_PREFIX = "lens-guide-";
|
|
85
|
+
/** Ids the compiled tuning addenda take — a profile pack may not claim them. */
|
|
86
|
+
export const LENS_TUNING_ID_PREFIXES = [
|
|
87
|
+
EMPHASIS_ID_PREFIX,
|
|
88
|
+
CEILING_ID_PREFIX,
|
|
89
|
+
GUIDE_ID_PREFIX,
|
|
90
|
+
];
|
|
91
|
+
/** Read the guide a profile's `[lenses.pass-style] guide` names: a relative
|
|
92
|
+
* path that stays inside the profile's directory (symlinks resolved), a
|
|
93
|
+
* readable, non-empty file within the size cap. Anything else throws. */
|
|
94
|
+
function readProfileGuide(at, value, dir) {
|
|
95
|
+
if (typeof value !== "string" || value.trim() === "")
|
|
96
|
+
throw new Error(`${at} guide must be a file name in the profile's directory`);
|
|
97
|
+
if (dir === undefined)
|
|
98
|
+
throw new Error(`${at} guide needs the profile's directory to resolve`);
|
|
99
|
+
const file = value.trim();
|
|
100
|
+
if (isAbsolute(file) || file.split(/[\\/]/).includes(".."))
|
|
101
|
+
throw new Error(`${at} guide ${JSON.stringify(file)} must be relative to the profile's directory, without '..'`);
|
|
102
|
+
const path = join(dir, file);
|
|
103
|
+
let text;
|
|
104
|
+
try {
|
|
105
|
+
const real = realpathSync(path);
|
|
106
|
+
const inside = relative(realpathSync(dir), real);
|
|
107
|
+
if (inside === "" || inside.startsWith(`..${sep}`) || isAbsolute(inside))
|
|
108
|
+
throw new Error("resolves outside the profile's directory");
|
|
109
|
+
if (!statSync(real).isFile())
|
|
110
|
+
throw new Error("is not a file");
|
|
111
|
+
text = readFileSync(real, "utf8");
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
throw new Error(`${at} guide ${JSON.stringify(file)}: cannot use ${path}: ${err.message}`, {
|
|
115
|
+
cause: err,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
if (text.trim() === "")
|
|
119
|
+
throw new Error(`${at} guide ${path} is empty`);
|
|
120
|
+
if (text.length > PROFILE_GUIDE_MAX_CHARS)
|
|
121
|
+
throw new Error(`${at} guide ${path} is over ${PROFILE_GUIDE_MAX_CHARS} characters`);
|
|
122
|
+
return { file, text };
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Parse one profile's `[lenses]` table. `where` names the file in every
|
|
126
|
+
* error; `known` is every pass the system knows (dispatch.ts ALL_PASSES);
|
|
127
|
+
* `dir` is the profile's directory, which a `guide` resolves against.
|
|
128
|
+
* Anything malformed throws — an unknown lens, an unknown key, a bad value,
|
|
129
|
+
* giving the validator a ceiling, a guide on any lens but `pass-style` or one
|
|
130
|
+
* that cannot be read: a profile that asked for something this cannot honour
|
|
131
|
+
* must fail the boot, never review as if it had. Switching the validator off
|
|
132
|
+
* IS honoured.
|
|
133
|
+
*/
|
|
134
|
+
export function parseLensTable(where, raw, known, dir) {
|
|
135
|
+
const table = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
136
|
+
if (!table(raw))
|
|
137
|
+
throw new Error(`${where} [lenses] must be a table of [lenses.<pass>] tables`);
|
|
138
|
+
const out = {};
|
|
139
|
+
for (const [lens, body] of Object.entries(raw)) {
|
|
140
|
+
const at = `${where} [lenses.${lens}]`;
|
|
141
|
+
if (!known.includes(lens)) {
|
|
142
|
+
throw new Error(`${at} is not a known lens — one of: ${known.join(", ")}`);
|
|
143
|
+
}
|
|
144
|
+
if (!table(body))
|
|
145
|
+
throw new Error(`${at} must be a table`);
|
|
146
|
+
const t = {};
|
|
147
|
+
for (const [key, value] of Object.entries(body)) {
|
|
148
|
+
switch (key) {
|
|
149
|
+
case "min_tier":
|
|
150
|
+
if (!PASS_TIER_ORDER.includes(value))
|
|
151
|
+
throw new Error(`${at} min_tier must be one of ${PASS_TIER_ORDER.join(", ")}`);
|
|
152
|
+
t.min_tier = value;
|
|
153
|
+
break;
|
|
154
|
+
case "effort": {
|
|
155
|
+
const effort = normalizeEffort(value);
|
|
156
|
+
if (effort === null)
|
|
157
|
+
throw new Error(`${at} effort must be "low", "medium" or "high"`);
|
|
158
|
+
t.effort = effort;
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
case "enabled":
|
|
162
|
+
if (typeof value !== "boolean")
|
|
163
|
+
throw new Error(`${at} enabled must be true or false`);
|
|
164
|
+
t.enabled = value;
|
|
165
|
+
break;
|
|
166
|
+
case "emphasis":
|
|
167
|
+
if (typeof value !== "string" || value.trim() === "")
|
|
168
|
+
throw new Error(`${at} emphasis must be a non-empty string`);
|
|
169
|
+
if (value.length > EMPHASIS_MAX_CHARS)
|
|
170
|
+
throw new Error(`${at} emphasis is over ${EMPHASIS_MAX_CHARS} characters`);
|
|
171
|
+
t.emphasis = value.trim();
|
|
172
|
+
break;
|
|
173
|
+
case "max_severity":
|
|
174
|
+
if (lens === VALIDATE)
|
|
175
|
+
throw new Error(`${at} max_severity — the validator raises no findings to cap`);
|
|
176
|
+
if (!SEVERITIES.includes(value))
|
|
177
|
+
throw new Error(`${at} max_severity must be one of ${SEVERITIES.join(", ")}`);
|
|
178
|
+
t.max_severity = value;
|
|
179
|
+
break;
|
|
180
|
+
case "guide":
|
|
181
|
+
if (lens !== STYLE_LENS)
|
|
182
|
+
throw new Error(`${at} guide — only [lenses.${STYLE_LENS}] judges against a guide`);
|
|
183
|
+
t.guide = readProfileGuide(at, value, dir);
|
|
184
|
+
break;
|
|
185
|
+
default:
|
|
186
|
+
throw new Error(`${at} unknown key "${key}" — allowed: ${LENS_TUNING_KEYS.join(", ")}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
out[lens] = t;
|
|
190
|
+
}
|
|
191
|
+
return out;
|
|
192
|
+
}
|
|
193
|
+
/** Merge a child profile's lens tables over its base's: per lens, per key,
|
|
194
|
+
* the child wins (the profile chain's scalar rule). */
|
|
195
|
+
export function mergeLensTuning(base, child) {
|
|
196
|
+
const out = { ...base };
|
|
197
|
+
for (const [lens, t] of Object.entries(child))
|
|
198
|
+
out[lens] = { ...out[lens], ...t };
|
|
199
|
+
return out;
|
|
200
|
+
}
|
|
201
|
+
/** Is `lens` on? An explicit `enabled` wins; otherwise `lever` — the
|
|
202
|
+
* `[review]` switch that gates this lens, or `true` for an ungated one. */
|
|
203
|
+
export function lensEnabled(lenses, lens, lever = true) {
|
|
204
|
+
return lenses?.[lens]?.enabled ?? lever;
|
|
205
|
+
}
|
|
206
|
+
/** `tier`, raised to the lens's `min_tier` when the profile sets one. */
|
|
207
|
+
export function flooredTier(lenses, lens, tier) {
|
|
208
|
+
return flooredToMin(tier, lenses?.[lens]?.min_tier);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* The per-VARIANT model specs a lens's `effort` asks for, keyed
|
|
212
|
+
* `<pass>--<tier>` — the `BuildAgentsOptions.models` hook. Every tier gets a
|
|
213
|
+
* key (the build reads only the variants it writes); the spec is the tier's
|
|
214
|
+
* own, already through the global `[models] effort`, with only its thinking
|
|
215
|
+
* suffix replaced. Untuned lenses get no key, so their built bytes are
|
|
216
|
+
* unchanged.
|
|
217
|
+
*/
|
|
218
|
+
export function lensModelOverrides(models, lenses) {
|
|
219
|
+
const out = {};
|
|
220
|
+
for (const [lens, t] of Object.entries(lenses ?? {})) {
|
|
221
|
+
if (!t.effort)
|
|
222
|
+
continue;
|
|
223
|
+
for (const tier of PASS_TIER_ORDER)
|
|
224
|
+
out[`${lens}--${tier}`] = effortSpec(models, tier, t.effort);
|
|
225
|
+
}
|
|
226
|
+
return out;
|
|
227
|
+
}
|
|
228
|
+
/** `tier`'s model spec at a configured `effort` — `high` is the model's
|
|
229
|
+
* ceiling (`[models] effort_max`). A lens's profile `effort` and the scan's
|
|
230
|
+
* `[scan] effort` resolve through this one rule. */
|
|
231
|
+
export function effortSpec(models, tier, effort) {
|
|
232
|
+
return withThinking(models.tiers[tier], effortLevel(effort, models.effort_max));
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* The per-variant model map a PR round's agent build takes: the profile's
|
|
236
|
+
* per-lens `effort` (`lensModelOverrides`), with `[models.pass_tiers]` pins
|
|
237
|
+
* and `[models.pass_models]` overrides on top (`passTierModels`). The daemon,
|
|
238
|
+
* the bench and the setup replay all build through this one recipe, so each
|
|
239
|
+
* runs a lens at the same model.
|
|
240
|
+
*/
|
|
241
|
+
export function roundAgentModels(cfg) {
|
|
242
|
+
return passTierModels(cfg.models.pass_tiers, cfg.models.tiers, lensModelOverrides(cfg.models, cfg.lenses), cfg.models.pass_models, sweepLightVariants(cfg.review, cfg.lenses), cfg.lenses);
|
|
243
|
+
}
|
|
244
|
+
function ceilingText(lens, sev) {
|
|
245
|
+
const rule = sev === "P0"
|
|
246
|
+
? `\`${lens}\` findings may carry any severity: judge each at its own severity like any other lens's.`
|
|
247
|
+
: `A \`${lens}\` finding may carry any severity up to \`${sev}\`; one arriving above \`${sev}\` is capped down to \`${sev}\` with the one-word downgrade reason \`${PROFILE_CAP_WORD}\` (axis: severity), then follows the ordinary posting map unchanged.`;
|
|
248
|
+
return (`\n## Severity ceiling for \`${lens}\`: \`${sev}\` (this repo's profile)\n` +
|
|
249
|
+
`This repo's profile sets the severity ceiling of the \`${lens}\` lens at \`${sev}\`. ` +
|
|
250
|
+
`It REPLACES every other cap these instructions put on \`${lens}\`, higher or lower. ${rule}\n`);
|
|
251
|
+
}
|
|
252
|
+
/** When the profile's guide is the standard: a PR round's plan row says
|
|
253
|
+
* (dispatch picks the repo's own guide first); a whole-repo scan has no plan
|
|
254
|
+
* row, so the rule is stated outright. */
|
|
255
|
+
const GUIDE_WHEN = {
|
|
256
|
+
pr: `It is the standard ONLY in a round whose \`${STYLE_LENS}\` plan row names "this repo's profile style guide"; ` +
|
|
257
|
+
`when that row names a guide the repo itself writes, the repo's guide is the only standard and this section does not apply. `,
|
|
258
|
+
scan: `This is a whole-repo scan, which has no plan row: it is the standard wherever the repo writes no style guide of its own ` +
|
|
259
|
+
`(a style guide file, a CONTRIBUTING style section, the style sections of its agent-directive files); ` +
|
|
260
|
+
`where the repo writes one, the repo's guide is the only standard and this section does not apply. `,
|
|
261
|
+
};
|
|
262
|
+
/** How a finding against the guide anchors: a PR round cites the changed
|
|
263
|
+
* line; a scan reads whole files, so it cites the line in the code as it is. */
|
|
264
|
+
const GUIDE_CITE = {
|
|
265
|
+
pr: `and cites the CHANGED line that breaks it, exactly as for a repo guide. `,
|
|
266
|
+
scan: `and cites the line that breaks it, exactly as for a repo guide. `,
|
|
267
|
+
};
|
|
268
|
+
function guideText(g, mode) {
|
|
269
|
+
return (`\n## This repo's profile style guide (\`${g.file}\`)\n` +
|
|
270
|
+
`This repo's profile carries a style guide for \`${STYLE_LENS}\`, below, for when the repo writes none of its own. ` +
|
|
271
|
+
GUIDE_WHEN[mode] +
|
|
272
|
+
`It is not a file in the repo: do not look for it at head — the guide is the text below, so "guide missing or unreadable at head, answer NONE" never applies to it. ` +
|
|
273
|
+
`A \`${STYLE_LENS}\` finding against it quotes the rule verbatim and cites it as \`profile style guide ${g.file}\` in place of a repo file and line, ` +
|
|
274
|
+
GUIDE_CITE[mode] +
|
|
275
|
+
`Validator: audit such a finding against this text as you would a repo guide — a rule it does not state is \`refuted\`, and so is a finding citing it in a round whose style row named the repo's own guide.\n\n` +
|
|
276
|
+
`----- begin profile style guide -----\n${g.text.replace(/\n*$/, "\n")}----- end profile style guide -----\n`);
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* The addenda a profile's `emphasis`, `max_severity` and `guide` compile
|
|
280
|
+
* into, in a deterministic order (lens name; emphasis, ceiling, guide). An
|
|
281
|
+
* emphasis binds its lens alone; a ceiling binds its lens (so it knows how
|
|
282
|
+
* high it may go) and the validator (which enforces it); a guide binds the
|
|
283
|
+
* style lens (its standard) and the validator (which audits against it).
|
|
284
|
+
* Composed after the profile's own pack, so a ceiling is the last word on a
|
|
285
|
+
* lens's cap.
|
|
286
|
+
*/
|
|
287
|
+
export function lensTuningAddenda(lenses) {
|
|
288
|
+
const out = [];
|
|
289
|
+
for (const lens of Object.keys(lenses ?? {}).sort()) {
|
|
290
|
+
const t = lenses[lens];
|
|
291
|
+
if (t.emphasis !== undefined) {
|
|
292
|
+
out.push({
|
|
293
|
+
id: `${EMPHASIS_ID_PREFIX}${lens}`,
|
|
294
|
+
scope: [lens],
|
|
295
|
+
text: `\n## What this repo asks of this lens (this repo's profile)\n${t.emphasis}\n`,
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
if (t.max_severity !== undefined) {
|
|
299
|
+
out.push({
|
|
300
|
+
id: `${CEILING_ID_PREFIX}${lens}`,
|
|
301
|
+
scope: [lens, VALIDATE],
|
|
302
|
+
text: ceilingText(lens, t.max_severity),
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
if (t.guide !== undefined) {
|
|
306
|
+
out.push({
|
|
307
|
+
id: `${GUIDE_ID_PREFIX}${lens}`,
|
|
308
|
+
scope: [lens, VALIDATE],
|
|
309
|
+
mode: "pr",
|
|
310
|
+
text: guideText(t.guide, "pr"),
|
|
311
|
+
}, {
|
|
312
|
+
id: `${GUIDE_ID_PREFIX}${lens}-scan`,
|
|
313
|
+
scope: [lens, VALIDATE],
|
|
314
|
+
mode: "scan",
|
|
315
|
+
text: guideText(t.guide, "scan"),
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return out;
|
|
320
|
+
}
|
|
321
|
+
/** The config with the profile's resolved lens tuning overlaid — the profile
|
|
322
|
+
* wins over config.toml, the preset and the defaults. */
|
|
323
|
+
export function applyProfileTuning(cfg, lenses) {
|
|
324
|
+
return { ...cfg, lenses };
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=lenstuning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lenstuning.js","sourceRoot":"","sources":["../../src/lenstuning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** One tool a CI job of the repo runs, with the config that sets its rules. */
|
|
2
|
+
export interface CiLinter {
|
|
3
|
+
/** The tool's name as the plan and the lens see it. */
|
|
4
|
+
tool: string;
|
|
5
|
+
/** Repo-relative config files found for it (may be empty: defaults). */
|
|
6
|
+
configs: string[];
|
|
7
|
+
/** Repo-relative CI files that invoke it. */
|
|
8
|
+
ci: string[];
|
|
9
|
+
/** File extensions its rules cover. */
|
|
10
|
+
covers: RegExp;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The real path of `rel` under `root` when it resolves inside `realRoot` (the
|
|
14
|
+
* checkout's own real path), else null: a link that leaves the checkout, a
|
|
15
|
+
* missing path or the root itself are all null.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveInsideCheckout(root: string, realRoot: string, rel: string): string | null;
|
|
18
|
+
/**
|
|
19
|
+
* The linters and formatters a CI job of the repo under `root` runs — found
|
|
20
|
+
* by reading the CI definitions and the wrapper scripts they call (a CI step
|
|
21
|
+
* `npm run lint` whose package script runs `eslint` counts). [] when the
|
|
22
|
+
* repo runs none, or the tree cannot be read.
|
|
23
|
+
*
|
|
24
|
+
* `packageJson` = `"whole"` reads a CI-called package.json whole, as this
|
|
25
|
+
* module did before it followed scripts — kept so a test can hold the
|
|
26
|
+
* followed reading to finding everything the whole reading found.
|
|
27
|
+
*/
|
|
28
|
+
export declare function findCiLinters(root: string, packageJson?: "called" | "whole"): CiLinter[];
|
|
29
|
+
/** The CI linters whose rules cover at least one changed file. */
|
|
30
|
+
export declare function lintersForFiles(linters: readonly CiLinter[], filenames: readonly string[]): CiLinter[];
|
|
31
|
+
//# sourceMappingURL=lintconfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lintconfig.d.ts","sourceRoot":"","sources":["../../src/lintconfig.ts"],"names":[],"mappings":"AAWA,+EAA+E;AAC/E,MAAM,WAAW,QAAQ;IACvB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AA6HD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQhG;AAkSD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,WAAW,GAAE,QAAQ,GAAG,OAAkB,GACzC,QAAQ,EAAE,CA2EZ;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,QAAQ,EAAE,CAEZ"}
|