@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,225 @@
|
|
|
1
|
+
export interface RoundRow {
|
|
2
|
+
id: number;
|
|
3
|
+
pr: number;
|
|
4
|
+
round_no: number;
|
|
5
|
+
round_type: string;
|
|
6
|
+
lenses: string;
|
|
7
|
+
verdict: string | null;
|
|
8
|
+
/** Legacy self-reported spend column. Never written — boot folds surviving
|
|
9
|
+
* values into est_usd and every consumer reads est_usd. Kept in the DDL
|
|
10
|
+
* because a live DB cannot drop it without a table rebuild. */
|
|
11
|
+
spend_usd: number | null;
|
|
12
|
+
duration_s: number | null;
|
|
13
|
+
/** Session-written 3-4 sentence round summary (verdict file `summary`). */
|
|
14
|
+
summary: string | null;
|
|
15
|
+
started_at: string;
|
|
16
|
+
deadline_at: string;
|
|
17
|
+
finished_at: string | null;
|
|
18
|
+
status: string;
|
|
19
|
+
/** Diffstat of the head this round reviewed (summed over the files API). */
|
|
20
|
+
additions: number | null;
|
|
21
|
+
deletions: number | null;
|
|
22
|
+
changed_files: number | null;
|
|
23
|
+
/** 1 for rows imported from GitHub history — never live behaviour. */
|
|
24
|
+
backfilled: number;
|
|
25
|
+
/** GitHub review databaseId — the backfill idempotence key. */
|
|
26
|
+
gh_review_id: number | null;
|
|
27
|
+
gh_commit_id: string | null;
|
|
28
|
+
/** Deterministic shell-post identity and confirmed outcome. Null key
|
|
29
|
+
* means a legacy round whose verdict cannot be receipt-gated. */
|
|
30
|
+
posting_key: string | null;
|
|
31
|
+
posted_event: string | null;
|
|
32
|
+
posted_at: string | null;
|
|
33
|
+
/** The trigger instant this round answered, copied off pr_state at start so
|
|
34
|
+
* time-to-first-verdict survives the `trigger_ts = null` reset at dispatch. */
|
|
35
|
+
trigger_ts: string | null;
|
|
36
|
+
tokens_in: number | null;
|
|
37
|
+
/** Output tokens including reasoning tokens. */
|
|
38
|
+
tokens_out: number | null;
|
|
39
|
+
tokens_cache_read: number | null;
|
|
40
|
+
/** Daemon-side USD estimate (config pricing); null when a model is unpriced. */
|
|
41
|
+
est_usd: number | null;
|
|
42
|
+
/** The tier `pass-validate` ran at this round — recorded so a later audit
|
|
43
|
+
* can tell which tier judged which finding. Null on rounds started before
|
|
44
|
+
* the column existed (and on backfilled history), and on a round whose
|
|
45
|
+
* profile switched the validator off. */
|
|
46
|
+
validate_tier: string | null;
|
|
47
|
+
/** Executed-pass telemetry: JSON array of VerdictPassEntry — the
|
|
48
|
+
* passes the session ACTUALLY ran, as reported in the verdict file. Distinct
|
|
49
|
+
* from `lenses`, which is the daemon's PLAN. Null = unknown (round predates
|
|
50
|
+
* the field, or the session ran an older prompt and reported nothing). */
|
|
51
|
+
executed_passes: string | null;
|
|
52
|
+
/** Exact dispatch-time policy for classifying reasoned added passes. */
|
|
53
|
+
pass_plan: string | null;
|
|
54
|
+
addable_passes: string | null;
|
|
55
|
+
/** When the lost-prompt net first observed this round
|
|
56
|
+
* fully silent (prompt consumed, session alive, no JSONL activity). The net
|
|
57
|
+
* fires only on the SECOND consecutive silent sweep; any non-silent
|
|
58
|
+
* observation clears the mark. Same persistence idiom as the
|
|
59
|
+
* reviewed_heads/approval_withheld marks — a mark the daemon writes so a
|
|
60
|
+
* restart cannot forget it — but round-scoped, so it lives on the round
|
|
61
|
+
* row rather than in a per-PR table. Null = never seen silent. */
|
|
62
|
+
silent_since: string | null;
|
|
63
|
+
/** The receipt token stamped into this round's wake file, echoed
|
|
64
|
+
* back by pi into the session JSONL when — and only when — the prompt is
|
|
65
|
+
* ACCEPTED. Null means the round was dispatched by a build that stamped no
|
|
66
|
+
* marker, so its delivery is UNKNOWABLE rather than unconfirmed: readers
|
|
67
|
+
* must fall back to the older inference instead of concluding "lost". */
|
|
68
|
+
prompt_marker: string | null;
|
|
69
|
+
/** How many times this round's prompt has been re-delivered. Cheap
|
|
70
|
+
* recovery (rewrite the wake file, same round and session), bounded on its
|
|
71
|
+
* own rather than out of the `max_self_requeues` budget. */
|
|
72
|
+
redeliveries: number;
|
|
73
|
+
/** The per-round comment count: inline comments this round posted,
|
|
74
|
+
* as the session reports it in its findings record. Null = unknown (no
|
|
75
|
+
* record, or a record that omitted the count) — never confused with 0. */
|
|
76
|
+
comments_posted: number | null;
|
|
77
|
+
/** Why this round was cancelled — null on every round that was not
|
|
78
|
+
* cancelled, and on older cancellations the boot migration could not
|
|
79
|
+
* classify from their prose summary. The prose stays in `summary`; this
|
|
80
|
+
* is the machine-readable half every aggregate groups by. */
|
|
81
|
+
cancel_cause: string | null;
|
|
82
|
+
/** Bracket around dispatch-time migration-precheck posting. Existing
|
|
83
|
+
* rounds migrate as unknown (never auto-replayed); new rounds start none and
|
|
84
|
+
* move through ambiguous before the gated call resolves. */
|
|
85
|
+
preflight_posting_state: "unknown" | "none" | "ambiguous" | "executed" | "dryrun" | "refused";
|
|
86
|
+
/** First exact planned discovery execution observed by the daemon. */
|
|
87
|
+
fanout_started_at: string | null;
|
|
88
|
+
/** The end of this round's usage window while
|
|
89
|
+
* its round-end measurement (usage, the exec-policy audit, the integrity
|
|
90
|
+
* re-check) is OWED — stamped synchronously when the round end fixes the
|
|
91
|
+
* window, cleared when the measurement has finished, whatever it found.
|
|
92
|
+
* A non-null value at boot is a measurement a restart cut short; the
|
|
93
|
+
* verdict watcher resumes it. Null = nothing owed (and every round before
|
|
94
|
+
* the column). */
|
|
95
|
+
usage_owed_to: string | null;
|
|
96
|
+
/** The head this round was dispatched to review (the prepared tree's). */
|
|
97
|
+
head_sha: string | null;
|
|
98
|
+
/** The merge base the round's prepared tree had: the next
|
|
99
|
+
* follow-up round checks it is still under its own merge base, so a
|
|
100
|
+
* force-pushed base is a full round, never base drift read as the PR's. */
|
|
101
|
+
merge_base: string | null;
|
|
102
|
+
/** `full` | `delta` — what the round reviewed. NULL on a first round and on
|
|
103
|
+
* every round before the column (a legacy non-first round was a full
|
|
104
|
+
* re-review). */
|
|
105
|
+
scope: string | null;
|
|
106
|
+
/** A delta round's baseline: the last reviewed head it was diffed from. */
|
|
107
|
+
delta_base_sha: string | null;
|
|
108
|
+
/** A delta round's PR-owned change: lines (additions + deletions), files. */
|
|
109
|
+
delta_lines: number | null;
|
|
110
|
+
delta_files: number | null;
|
|
111
|
+
/** 1 when the round's order carried the pre-approval sweep, else 0; NULL
|
|
112
|
+
* on rounds that are not follow-ups. */
|
|
113
|
+
sweep_owed: number | null;
|
|
114
|
+
/** The sweep's plan (JSON PassPlanEntry[]), when owed. */
|
|
115
|
+
sweep_plan: string | null;
|
|
116
|
+
/** ran | not_owed | not_reached | unknown — what became of the sweep. */
|
|
117
|
+
sweep_status: string | null;
|
|
118
|
+
}
|
|
119
|
+
/** One parsed row of the durable reasoning record. */
|
|
120
|
+
export interface RoundFindingRow {
|
|
121
|
+
id: number;
|
|
122
|
+
pr: number;
|
|
123
|
+
round_id: number | null;
|
|
124
|
+
round_no: number;
|
|
125
|
+
head_sha: string;
|
|
126
|
+
finding_key: string;
|
|
127
|
+
path: string | null;
|
|
128
|
+
line: number | null;
|
|
129
|
+
lens: string;
|
|
130
|
+
tier: string | null;
|
|
131
|
+
/** 1 when the lens is not in the round's plan — the add protocol ran it. */
|
|
132
|
+
unplanned: number;
|
|
133
|
+
severity: string | null;
|
|
134
|
+
confidence: number | null;
|
|
135
|
+
reachability: string | null;
|
|
136
|
+
kind: string | null;
|
|
137
|
+
disposition: string;
|
|
138
|
+
axis: string | null;
|
|
139
|
+
word: string | null;
|
|
140
|
+
reason: string | null;
|
|
141
|
+
evidence: string | null;
|
|
142
|
+
posted_as: string | null;
|
|
143
|
+
raised_in_round: number | null;
|
|
144
|
+
thread_id: number | null;
|
|
145
|
+
recorded_at: string;
|
|
146
|
+
/** The posted comment's title as the record wrote it; null
|
|
147
|
+
* when the record carries none. */
|
|
148
|
+
title: string | null;
|
|
149
|
+
/** Canonical lens ids, a JSON array (`packages/pi-plugin/src/lensids.ts`). Null
|
|
150
|
+
* only on a row the boot migration has not reached yet. */
|
|
151
|
+
lens_ids: string | null;
|
|
152
|
+
}
|
|
153
|
+
/** One prior finding a follow-up round was handed, or reported on
|
|
154
|
+
* (`prior_finding_checks`). */
|
|
155
|
+
export interface PriorFindingCheckRow {
|
|
156
|
+
pr: number;
|
|
157
|
+
checked_round: number;
|
|
158
|
+
head_sha: string;
|
|
159
|
+
round_no: number;
|
|
160
|
+
finding_key: string;
|
|
161
|
+
blocking: number;
|
|
162
|
+
/** fixed | open | conceded | settled | obsolete | unverifiable; null =
|
|
163
|
+
* listed and not (yet) reported. */
|
|
164
|
+
status: string | null;
|
|
165
|
+
evidence: string | null;
|
|
166
|
+
listed_at: string | null;
|
|
167
|
+
reported_at: string | null;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* What the store needs to write one recorded finding. Structural on purpose —
|
|
171
|
+
* `FindingsRecordEntry` (packages/pi-plugin/src/findingsrecord.ts) satisfies it without state.ts
|
|
172
|
+
* having to know anything about files, parsing or the record's schema.
|
|
173
|
+
*/
|
|
174
|
+
export interface RoundFindingInput {
|
|
175
|
+
key: string;
|
|
176
|
+
path?: string | null;
|
|
177
|
+
line?: number | null;
|
|
178
|
+
lens?: string | null;
|
|
179
|
+
tier?: string | null;
|
|
180
|
+
severity?: string | null;
|
|
181
|
+
confidence?: number | null;
|
|
182
|
+
reachability?: string | null;
|
|
183
|
+
kind?: string | null;
|
|
184
|
+
disposition?: string | null;
|
|
185
|
+
axis?: string | null;
|
|
186
|
+
word?: string | null;
|
|
187
|
+
reason?: string | null;
|
|
188
|
+
evidence?: string | null;
|
|
189
|
+
posted_as?: string | null;
|
|
190
|
+
raised_in_round?: number | null;
|
|
191
|
+
thread_id?: number | null;
|
|
192
|
+
title?: string | null;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* The reviewed-head mark: the last head this system actually reviewed on a
|
|
196
|
+
* PR, what it decided there, and the newest author reply seen since. One row
|
|
197
|
+
* per PR — the mark is a *position*, not a history; the rounds table keeps the
|
|
198
|
+
* history.
|
|
199
|
+
*
|
|
200
|
+
* Two readers: the no-new-evidence guard (posting time and dispatch time) and
|
|
201
|
+
* the post-approval delta recheck, which needs exactly `head_sha` to diff the
|
|
202
|
+
* current head against. Lifecycle consumers read it only through
|
|
203
|
+
* `standing-review.ts`.
|
|
204
|
+
*/
|
|
205
|
+
export interface ReviewedHeadRow {
|
|
206
|
+
pr: number;
|
|
207
|
+
head_sha: string;
|
|
208
|
+
/** When the mark was last (re)stamped — the instant author replies race. */
|
|
209
|
+
reviewed_at: string;
|
|
210
|
+
/** The verdict applied at this head, when one was ("APPROVE" | …). */
|
|
211
|
+
verdict: string | null;
|
|
212
|
+
/** The review event actually POSTed at this head, when one was. */
|
|
213
|
+
posted_event: string | null;
|
|
214
|
+
round_no: number | null;
|
|
215
|
+
/** Newest author reply observed after the mark was stamped (new evidence). */
|
|
216
|
+
last_author_reply_at: string | null;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* What the event log says about one migration-collision COMMENT (the dedupe's
|
|
220
|
+
* delivery read). `unknown` is an unreadable ledger row; `pending` is a
|
|
221
|
+
* readable intent with unconfirmed delivery. Neither permits another POST.
|
|
222
|
+
* A dry-run receipt is recorded intent, never a delivered remedy.
|
|
223
|
+
*/
|
|
224
|
+
export type CollisionCommentRecord = "commented" | "dryrun" | "pending" | "not_commented" | "unknown";
|
|
225
|
+
//# sourceMappingURL=storerows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storerows.d.ts","sourceRoot":"","sources":["../../src/storerows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// The state records the review core reads and writes: rounds, the findings
|
|
2
|
+
// a round recorded, the prior-finding checks, the reviewed-head mark and the
|
|
3
|
+
// migration-collision delivery read. Plain shapes, so the core can hand them
|
|
4
|
+
// around without the SQLite store; src/state.ts is their one writer and
|
|
5
|
+
// re-exports them.
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=storerows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storerows.js","sourceRoot":"","sources":["../../src/storerows.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,wEAAwE;AACxE,mBAAmB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare const GUIDE_MIN_LINES = 15;
|
|
2
|
+
export declare const SECTION_MIN_LINES = 8;
|
|
3
|
+
/** The style section of a CONTRIBUTING file as 1-based [from, to] lines, when
|
|
4
|
+
* it is substantial enough to be a guide. Markdown headings only. */
|
|
5
|
+
export declare function styleSection(text: string): [number, number] | null;
|
|
6
|
+
/**
|
|
7
|
+
* The same rule over a FILE LISTING rather than a directory tree: the
|
|
8
|
+
* setup engine reads the reviewed repo through a port, so it hands over the
|
|
9
|
+
* repo-relative paths it has and a reader that answers null for anything it
|
|
10
|
+
* cannot or will not read (a directory, a file over the size cap). The
|
|
11
|
+
* candidates are exactly the ones `findStyleGuide` lists — the root, `docs/`,
|
|
12
|
+
* `doc/`, `.github/`, and one level down under `docs/`/`doc/` by name only —
|
|
13
|
+
* plus the agent-directive files — so both spellings return the same
|
|
14
|
+
* references for the same tree. `identity` says which file a path really is
|
|
15
|
+
* (findStyleGuide passes realpath); without one a directive file is known by
|
|
16
|
+
* its text, so a link and its target — which read the same — count once.
|
|
17
|
+
*/
|
|
18
|
+
export declare function styleGuideRefsIn(files: readonly string[], read: (rel: string) => string | null, identity?: (rel: string) => string | null): string[];
|
|
19
|
+
/**
|
|
20
|
+
* The repo's written style guide(s) under `root`, as repo-relative
|
|
21
|
+
* references — `path` for a whole guide file, `path:from-to` for a style
|
|
22
|
+
* section — or [] when there is none worth a lens.
|
|
23
|
+
*/
|
|
24
|
+
export declare function findStyleGuide(root: string): string[];
|
|
25
|
+
//# sourceMappingURL=styleguide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styleguide.d.ts","sourceRoot":"","sources":["../../src/styleguide.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAqEnC;qEACqE;AACrE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAElE;AAiFD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EACpC,QAAQ,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAGnC,GACA,MAAM,EAAE,CAuBV;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAuCrD"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
// Does this repo write its code style down? (`[review] style_lens`)
|
|
2
|
+
//
|
|
3
|
+
// Style is the one review concern with no universal answer: every repo has
|
|
4
|
+
// its own, and a reviewer's taste is not it. So the style lens runs only
|
|
5
|
+
// where the repo has a WELL-DEFINED written guide, and it judges only against
|
|
6
|
+
// that guide. "Well defined" is structural and cheap to check here, before a
|
|
7
|
+
// round is planned:
|
|
8
|
+
//
|
|
9
|
+
// - a dedicated guide file — STYLEGUIDE / STYLE_GUIDE / STYLE / CODE_STYLE /
|
|
10
|
+
// CODING_STYLE / CODING_STANDARDS / CODING_GUIDELINES / CONVENTIONS, as
|
|
11
|
+
// .md/.rst/.txt/.adoc, at the root or under docs/, doc/ or .github/ (or a
|
|
12
|
+
// docs file whose NAME says style guide / coding standards) — with at
|
|
13
|
+
// least GUIDE_MIN_LINES lines of content;
|
|
14
|
+
// - or a style section in CONTRIBUTING (a heading such as "Code style",
|
|
15
|
+
// "Coding standards", "Style guide") with at least SECTION_MIN_LINES
|
|
16
|
+
// lines of content under it;
|
|
17
|
+
// - or style rules the repo wrote for its agents: a style section
|
|
18
|
+
// — the same headings, plus a bare "Conventions", "Style", "Formatting"
|
|
19
|
+
// or "Naming" — of at least SECTION_MIN_LINES lines in an agent-directive
|
|
20
|
+
// file (AGENTS.md / CLAUDE.md at the root, .github/copilot-instructions.md,
|
|
21
|
+
// .github/instructions/*.md), or a whole directive file whose NAME says
|
|
22
|
+
// style or conventions (`.github/instructions/code-style.instructions.md`)
|
|
23
|
+
// with at least SECTION_MIN_LINES lines. What a team already told its
|
|
24
|
+
// agents about style is a written guide; a separate file is not required.
|
|
25
|
+
// A directive file that is a link to another one (CLAUDE.md → AGENTS.md)
|
|
26
|
+
// is read once.
|
|
27
|
+
//
|
|
28
|
+
// A guide the repo writes WINS over one a profile points the lens at
|
|
29
|
+
// (`[lenses.pass-style] guide`, packages/pi-plugin/src/lenstuning.ts): that one is used only
|
|
30
|
+
// when this finds nothing (src/dispatch.ts buildPassPlan).
|
|
31
|
+
//
|
|
32
|
+
// Linter and formatter configs are NOT a style guide here: what a tool
|
|
33
|
+
// enforces is CI's job, and the review reads CI, it never re-runs it.
|
|
34
|
+
// Total: an unreadable tree is "no guide", never an error.
|
|
35
|
+
import { existsSync, readdirSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
36
|
+
import { join, relative } from "node:path";
|
|
37
|
+
import { resolveInsideCheckout } from "./lintconfig.js";
|
|
38
|
+
export const GUIDE_MIN_LINES = 15;
|
|
39
|
+
export const SECTION_MIN_LINES = 8;
|
|
40
|
+
const MAX_GUIDE_BYTES = 512 * 1024;
|
|
41
|
+
const GUIDE_NAME_RE = /^(style[-_ ]?guide|style|code[-_ ]?style|coding[-_ ]?(style|standards|guidelines|conventions)|conventions)(\.(md|markdown|rst|txt|adoc))$/i;
|
|
42
|
+
const DOCS_NAME_RE = /(style[-_ ]?guide|code[-_ ]?style|coding[-_ ]?(style|standards|guidelines|conventions))[^/]*\.(md|markdown|rst|txt|adoc)$/i;
|
|
43
|
+
const CONTRIBUTING_RE = /^contributing\.(md|markdown|rst|txt|adoc)$/i;
|
|
44
|
+
const STYLE_HEADING_RE = /^(#{1,6}\s+|=+\s*$|-+\s*$)?.*\b(code|coding)\s+(style|standards|conventions|guidelines)\b|\bstyle\s*guide\b/i;
|
|
45
|
+
const HEADING_RE = /^#{1,6}\s+\S/;
|
|
46
|
+
/** A directive file's style heading: the guide headings above, or a bare
|
|
47
|
+
* "Conventions" / "Style" / "Formatting" / "Naming" — agent files name the
|
|
48
|
+
* section for the agent, not as a guide — or a section of written RULES
|
|
49
|
+
* ("Rules", "Compliance"): what a team tells
|
|
50
|
+
* its agents the code must follow is its written guide whatever the heading
|
|
51
|
+
* says (repos commonly keep naming, header and formatting rules under a
|
|
52
|
+
* heading such as "# Compliance Rules").
|
|
53
|
+
* pass-style still applies only the style rules in it and still skips what a
|
|
54
|
+
* configured tool enforces; the section only decides that the lens runs. */
|
|
55
|
+
const DIRECTIVE_HEADING_RE = /\b(style|conventions|formatting|naming|rules|compliance)\b/i;
|
|
56
|
+
const ROOT_DIRECTIVE_RE = /^(agents|claude)\.md$/i;
|
|
57
|
+
const DIRECTIVE_NAME_RE = /(style|conventions)[^/]*\.(md|markdown)$/i;
|
|
58
|
+
function contentLines(text) {
|
|
59
|
+
return text.split("\n").filter((l) => l.trim() && !/^[#=\-*_`\s]+$/.test(l.trim())).length;
|
|
60
|
+
}
|
|
61
|
+
function read(path) {
|
|
62
|
+
try {
|
|
63
|
+
const st = statSync(path);
|
|
64
|
+
if (!st.isFile() || st.size > MAX_GUIDE_BYTES)
|
|
65
|
+
return null;
|
|
66
|
+
return readFileSync(path, "utf8");
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function list(dir) {
|
|
73
|
+
try {
|
|
74
|
+
return readdirSync(dir);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** Which lines sit inside a fenced code block (the fences included): a
|
|
81
|
+
* `# comment` in a shell example is code, not a heading. A fence opens on
|
|
82
|
+
* three or more backticks or tildes (indented at most three spaces) and
|
|
83
|
+
* closes on a run of the same character at least as long; one left open runs
|
|
84
|
+
* to the end of the file, as Markdown renders it. */
|
|
85
|
+
function fencedLines(lines) {
|
|
86
|
+
const out = [];
|
|
87
|
+
let open = null;
|
|
88
|
+
for (const line of lines) {
|
|
89
|
+
const m = /^ {0,3}(`{3,}|~{3,})(.*)$/.exec(line);
|
|
90
|
+
if (open === null) {
|
|
91
|
+
if (m && !(m[1][0] === "`" && m[2].includes("`")))
|
|
92
|
+
open = { char: m[1][0], len: m[1].length };
|
|
93
|
+
out.push(open !== null);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
out.push(true);
|
|
97
|
+
if (m && m[1][0] === open.char && m[1].length >= open.len && m[2].trim() === "")
|
|
98
|
+
open = null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
/** The style section of a CONTRIBUTING file as 1-based [from, to] lines, when
|
|
104
|
+
* it is substantial enough to be a guide. Markdown headings only. */
|
|
105
|
+
export function styleSection(text) {
|
|
106
|
+
return styleSections(text, (l) => STYLE_HEADING_RE.test(l))[0] ?? null;
|
|
107
|
+
}
|
|
108
|
+
/** Every substantial style section of `text` whose heading passes `isStyle`,
|
|
109
|
+
* as 1-based [from, to] lines, in file order; a heading inside a section
|
|
110
|
+
* already taken is part of it, not a section of its own. */
|
|
111
|
+
function styleSections(text, isStyle) {
|
|
112
|
+
const lines = text.split("\n");
|
|
113
|
+
const fenced = fencedLines(lines);
|
|
114
|
+
const out = [];
|
|
115
|
+
for (let i = 0; i < lines.length; i++) {
|
|
116
|
+
const l = lines[i];
|
|
117
|
+
if (fenced[i] || !HEADING_RE.test(l) || !isStyle(l))
|
|
118
|
+
continue;
|
|
119
|
+
const level = /^#+/.exec(l)[0].length;
|
|
120
|
+
let end = lines.length;
|
|
121
|
+
for (let j = i + 1; j < lines.length; j++) {
|
|
122
|
+
const m = fenced[j] ? null : /^(#{1,6})\s+\S/.exec(lines[j]);
|
|
123
|
+
if (m && m[1].length <= level) {
|
|
124
|
+
end = j;
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// The span ends at its last non-blank line (a file's trailing newline too).
|
|
129
|
+
while (end > i + 1 && lines[end - 1].trim() === "")
|
|
130
|
+
end--;
|
|
131
|
+
if (contentLines(lines.slice(i + 1, end).join("\n")) >= SECTION_MIN_LINES) {
|
|
132
|
+
out.push([i + 1, end]);
|
|
133
|
+
i = end - 1;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return out;
|
|
137
|
+
}
|
|
138
|
+
const isDirectiveHeading = (l) => STYLE_HEADING_RE.test(l) || DIRECTIVE_HEADING_RE.test(l);
|
|
139
|
+
/** Style rules in the repo's agent-directive files, as references:
|
|
140
|
+
* `path:from-to` per style section, `path` for a directive file whose name
|
|
141
|
+
* says style. Over a listing: `identity` names the file a path really is, so a
|
|
142
|
+
* directive file that links to another is read once; null = skip the path. */
|
|
143
|
+
function directiveStyleRules(listing, read, identity) {
|
|
144
|
+
const files = listing.filter((rel) => {
|
|
145
|
+
const parts = rel.split("/");
|
|
146
|
+
if (parts.length === 1)
|
|
147
|
+
return ROOT_DIRECTIVE_RE.test(parts[0]);
|
|
148
|
+
if (parts.length === 2 && parts[0] === ".github")
|
|
149
|
+
return /^copilot-instructions\.md$/i.test(parts[1]);
|
|
150
|
+
return (parts.length === 3 &&
|
|
151
|
+
parts[0] === ".github" &&
|
|
152
|
+
parts[1] === "instructions" &&
|
|
153
|
+
/\.(md|markdown)$/i.test(parts[2]));
|
|
154
|
+
});
|
|
155
|
+
const named = (rel) => rel.startsWith(".github/instructions/") && DIRECTIVE_NAME_RE.test(rel);
|
|
156
|
+
// A file named for style is read first, so an alias of it that sorts
|
|
157
|
+
// earlier (base.md → code-style.instructions.md) cannot claim the file's
|
|
158
|
+
// identity and read it by headings alone.
|
|
159
|
+
const ordered = [...new Set(files)].sort((a, b) => Number(named(b)) - Number(named(a)) || (a < b ? -1 : a > b ? 1 : 0));
|
|
160
|
+
const out = [];
|
|
161
|
+
const seen = new Set();
|
|
162
|
+
for (const rel of ordered) {
|
|
163
|
+
const real = identity(rel);
|
|
164
|
+
if (real === null || seen.has(real))
|
|
165
|
+
continue;
|
|
166
|
+
seen.add(real);
|
|
167
|
+
const text = read(rel);
|
|
168
|
+
if (text === null)
|
|
169
|
+
continue;
|
|
170
|
+
if (named(rel)) {
|
|
171
|
+
if (contentLines(text) >= SECTION_MIN_LINES)
|
|
172
|
+
out.push(rel);
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
for (const [from, to] of styleSections(text, isDirectiveHeading))
|
|
176
|
+
out.push(`${rel}:${from}-${to}`);
|
|
177
|
+
}
|
|
178
|
+
return out;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* The same rule over a FILE LISTING rather than a directory tree: the
|
|
182
|
+
* setup engine reads the reviewed repo through a port, so it hands over the
|
|
183
|
+
* repo-relative paths it has and a reader that answers null for anything it
|
|
184
|
+
* cannot or will not read (a directory, a file over the size cap). The
|
|
185
|
+
* candidates are exactly the ones `findStyleGuide` lists — the root, `docs/`,
|
|
186
|
+
* `doc/`, `.github/`, and one level down under `docs/`/`doc/` by name only —
|
|
187
|
+
* plus the agent-directive files — so both spellings return the same
|
|
188
|
+
* references for the same tree. `identity` says which file a path really is
|
|
189
|
+
* (findStyleGuide passes realpath); without one a directive file is known by
|
|
190
|
+
* its text, so a link and its target — which read the same — count once.
|
|
191
|
+
*/
|
|
192
|
+
export function styleGuideRefsIn(files, read, identity = (rel) => {
|
|
193
|
+
const text = read(rel);
|
|
194
|
+
return text === null ? null : `text:${text}`;
|
|
195
|
+
}) {
|
|
196
|
+
const out = [];
|
|
197
|
+
for (const rel of files) {
|
|
198
|
+
const parts = rel.split("/");
|
|
199
|
+
const name = parts[parts.length - 1];
|
|
200
|
+
const dir = parts.slice(0, -1).join("/");
|
|
201
|
+
if (dir === "" || dir === "docs" || dir === "doc" || dir === ".github") {
|
|
202
|
+
if (GUIDE_NAME_RE.test(name) || (dir !== "" && DOCS_NAME_RE.test(name))) {
|
|
203
|
+
const text = read(rel);
|
|
204
|
+
if (text !== null && contentLines(text) >= GUIDE_MIN_LINES)
|
|
205
|
+
out.push(rel);
|
|
206
|
+
}
|
|
207
|
+
else if (CONTRIBUTING_RE.test(name)) {
|
|
208
|
+
const text = read(rel);
|
|
209
|
+
const sec = text === null ? null : styleSection(text);
|
|
210
|
+
if (sec)
|
|
211
|
+
out.push(`${rel}:${sec[0]}-${sec[1]}`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
else if (parts.length === 3 && (parts[0] === "docs" || parts[0] === "doc")) {
|
|
215
|
+
if (!DOCS_NAME_RE.test(name))
|
|
216
|
+
continue;
|
|
217
|
+
const text = read(rel);
|
|
218
|
+
if (text !== null && contentLines(text) >= GUIDE_MIN_LINES)
|
|
219
|
+
out.push(rel);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
out.push(...directiveStyleRules(files, read, identity));
|
|
223
|
+
return [...new Set(out)].sort();
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* The repo's written style guide(s) under `root`, as repo-relative
|
|
227
|
+
* references — `path` for a whole guide file, `path:from-to` for a style
|
|
228
|
+
* section — or [] when there is none worth a lens.
|
|
229
|
+
*/
|
|
230
|
+
export function findStyleGuide(root) {
|
|
231
|
+
if (!existsSync(root))
|
|
232
|
+
return [];
|
|
233
|
+
// Every path read here must RESOLVE inside the checkout: the tree is the
|
|
234
|
+
// PR's, and a guide symlinked (or reached through a symlinked docs/) to a
|
|
235
|
+
// file outside it — a secret the container can read — would be named in
|
|
236
|
+
// the plan and read in full by pass-style. A link that stays inside is fine.
|
|
237
|
+
let realRoot;
|
|
238
|
+
try {
|
|
239
|
+
realRoot = realpathSync(root);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return [];
|
|
243
|
+
}
|
|
244
|
+
const inside = (rel) => resolveInsideCheckout(root, realRoot, rel);
|
|
245
|
+
const listing = [];
|
|
246
|
+
for (const d of ["", "docs", "doc", ".github", ".github/instructions"]) {
|
|
247
|
+
for (const name of list(join(root, d)))
|
|
248
|
+
listing.push(relative(root, join(root, d, name)));
|
|
249
|
+
}
|
|
250
|
+
// docs/<sub>/ one level down, by name only (a docs site's style page).
|
|
251
|
+
for (const d of ["docs", "doc"]) {
|
|
252
|
+
for (const sub of list(join(root, d))) {
|
|
253
|
+
const subdir = join(root, d, sub);
|
|
254
|
+
let isDir = false;
|
|
255
|
+
try {
|
|
256
|
+
isDir = statSync(subdir).isDirectory();
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
if (!isDir)
|
|
262
|
+
continue;
|
|
263
|
+
for (const name of list(subdir))
|
|
264
|
+
listing.push(relative(root, join(subdir, name)));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return styleGuideRefsIn(listing, (rel) => {
|
|
268
|
+
const real = inside(rel);
|
|
269
|
+
return real === null ? null : read(real);
|
|
270
|
+
}, inside);
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=styleguide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styleguide.js","sourceRoot":"","sources":["../../src/styleguide.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** What a session may CLAIM became of its owed sweep (the verdict's
|
|
2
|
+
* `sweep`): `ran`, `not_owed` (the order carried none), `not_reached` (the
|
|
3
|
+
* round decided REQUEST_CHANGES first) or `skipped` (decided not needed). */
|
|
4
|
+
export declare const SWEEP_CLAIMS: readonly ["ran", "not_owed", "not_reached", "skipped"];
|
|
5
|
+
export type SweepClaim = (typeof SWEEP_CLAIMS)[number];
|
|
6
|
+
export declare function isSweepClaim(word: unknown): word is SweepClaim;
|
|
7
|
+
/** A pass entry's `phase`: `delta` | `sweep`, case and separators
|
|
8
|
+
* forgiven; anything else is unusable (null). */
|
|
9
|
+
export declare function normalizePassPhase(raw: unknown): "delta" | "sweep" | null;
|
|
10
|
+
/** The verdict's top-level `sweep`: `ran` | `not_owed` | `not_reached` |
|
|
11
|
+
* `skipped`, case forgiven and `-`/space read as `_`; anything else is
|
|
12
|
+
* unusable (null). */
|
|
13
|
+
export declare function normalizeSweepClaim(raw: unknown): SweepClaim | null;
|
|
14
|
+
/** What became of a follow-up round's pre-approval sweep
|
|
15
|
+
* (`rounds.sweep_status`). */
|
|
16
|
+
export type SweepStatus = SweepClaim | "unknown";
|
|
17
|
+
/** An APPROVE that left its owed sweep un-run: neither ran nor decided not
|
|
18
|
+
* needed (`followup_sweep_skipped`). */
|
|
19
|
+
export declare function sweepSkippedOnApprove(verdict: string | null | undefined, owed: boolean, status: SweepStatus): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* The sweep status a follow-up round's verdict earns. `ran` only
|
|
22
|
+
* when the session CLAIMED it and its executed telemetry carries sweep-phase
|
|
23
|
+
* passes; every contradiction or gap is `unknown` with a note — never `ran`,
|
|
24
|
+
* because a run sweep is a full look and an unknown one must stay owed. Pure.
|
|
25
|
+
*
|
|
26
|
+
* `sweepPasses`: the count of executed `phase: "sweep"` entries, null when the
|
|
27
|
+
* verdict carried no usable pass telemetry. `verdict`: the round's decided
|
|
28
|
+
* verdict — `not_reached` means "decided REQUEST_CHANGES first", so an
|
|
29
|
+
* APPROVE claiming it (or `not_owed` beside an owed sweep) is a
|
|
30
|
+
* contradiction, recorded `unknown`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function sweepStatusOf(args: {
|
|
33
|
+
owed: boolean;
|
|
34
|
+
claim: SweepClaim | null;
|
|
35
|
+
sweepPasses: number | null;
|
|
36
|
+
receiptSettled: boolean;
|
|
37
|
+
verdict?: string | null;
|
|
38
|
+
}): {
|
|
39
|
+
status: SweepStatus;
|
|
40
|
+
note?: string;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=sweepstatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sweepstatus.d.ts","sourceRoot":"","sources":["../../src/sweepstatus.ts"],"names":[],"mappings":"AAKA;;6EAE6E;AAC7E,eAAO,MAAM,YAAY,wDAAyD,CAAC;AACnF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,UAAU,CAE9D;AAED;iDACiD;AACjD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAOzE;AAED;;sBAEsB;AACtB,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAOnE;AAED;8BAC8B;AAC9B,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAEjD;wCACwC;AACxC,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,WAAW,GAClB,OAAO,CAET;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAyCzC"}
|