@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,538 @@
|
|
|
1
|
+
// runLens: one lens pass as an in-process SDK session, the engine's replacement
|
|
2
|
+
// for a native `subagent` child process.
|
|
3
|
+
//
|
|
4
|
+
// What a pass is, by construction:
|
|
5
|
+
// - A leaf. It gets the tools its agent file lists, plus the bash-guard
|
|
6
|
+
// factory, and never a lens tool: the runner hands the host no customTools
|
|
7
|
+
// and refuses an agent file that names one (include.ts checks the same at
|
|
8
|
+
// build time). The runner cannot be asked to nest.
|
|
9
|
+
// - Capped. A Permits port bounds the passes in flight: one WeightedSemaphore
|
|
10
|
+
// per PiHost on a one-shot route, the daemon's central broker in a bot worker
|
|
11
|
+
// . A pass holds its permit from before its session exists until the
|
|
12
|
+
// session is read and disposed, retry included.
|
|
13
|
+
// - Isolated. The session comes from PiHost.makeSession (the fence: no
|
|
14
|
+
// other module builds an SDK session), in memory unless `sessionsDir` keeps
|
|
15
|
+
// its JSONL, under an id of its own, so
|
|
16
|
+
// disposing one pass never cuts a sibling's provider socket (canary 1).
|
|
17
|
+
// Its system prompt is pi's base plus the agent's body appended, and the
|
|
18
|
+
// context files ride as data; the pass reads the same bytes a native child
|
|
19
|
+
// reads (tests/lens-prompt-parity.test.ts).
|
|
20
|
+
// - Cache-grouped, when asked (config.cache). The passes of one group, per
|
|
21
|
+
// model, share ONE session id, which is what routes their requests to one
|
|
22
|
+
// provider cache. Disposing a session closes the transports held for its id,
|
|
23
|
+
// so a grouped session is kept until the group's last pass is done and the
|
|
24
|
+
// group is disposed together (cache-run.ts): one pass finishing never ends
|
|
25
|
+
// a sibling's stream. With a context pack the group's first pass starts a
|
|
26
|
+
// warm-up (no permit, the pack and "reply OK") that every pass of the group
|
|
27
|
+
// waits for, at most 30 s; without one, later passes start after a stagger.
|
|
28
|
+
// - Staggered. Sessions are created sessionGapMs apart, per host: building a
|
|
29
|
+
// wave at once blocks the event loop for seconds (docs/cpu-gate.md, finding 4).
|
|
30
|
+
// - Bounded in time. With a deadline, an attempt the timer ends is aborted and
|
|
31
|
+
// retried once on a FRESH session; a second timeout answers timedOut.
|
|
32
|
+
// - Never fatal. runLens does not reject. A host that cannot build the
|
|
33
|
+
// session, an extension that throws, a provider that fails, a caller's
|
|
34
|
+
// abort: each is a failed LensResult, with the spend so far in its usage,
|
|
35
|
+
// one ledger line and a pass_end in the progress log.
|
|
36
|
+
//
|
|
37
|
+
// The task is sent the way the native child sends it: `Task: <task>`.
|
|
38
|
+
import { appendFileSync, mkdirSync } from "node:fs";
|
|
39
|
+
import { dirname, join } from "node:path";
|
|
40
|
+
import { randomUUID } from "node:crypto";
|
|
41
|
+
import { THINKING_LEVELS } from "../../reviewconfig.js";
|
|
42
|
+
import { isLensTool, ledgerLineOf, serializeLedgerLine, } from "../../lensresult.js";
|
|
43
|
+
import { appendProgressLog, } from "../../round-progress.js";
|
|
44
|
+
import { CacheGroups, WARMUP_REPLY_TASK, WARMUP_WAIT_MS, delay, settledWithin, } from "./cache-run.js";
|
|
45
|
+
import { passTimeoutMessage, runUnderDeadline } from "./deadline.js";
|
|
46
|
+
import { leafCache } from "./leaf-cache.js";
|
|
47
|
+
import { localPermits } from "./permits.js";
|
|
48
|
+
import { WeightedSemaphore } from "./semaphore.js";
|
|
49
|
+
/** Gap between session creations on one host. Creating a wave at once blocks
|
|
50
|
+
* the loop for seconds (0.7 to 2.5 s for 8 to 20 sessions). */
|
|
51
|
+
export const DEFAULT_SESSION_GAP_MS = 25;
|
|
52
|
+
const semaphores = new WeakMap();
|
|
53
|
+
/** The host's one lens cap, created on first use. */
|
|
54
|
+
export function lensSemaphoreFor(host, permits) {
|
|
55
|
+
const held = semaphores.get(host);
|
|
56
|
+
if (held === undefined) {
|
|
57
|
+
const made = new WeightedSemaphore(permits);
|
|
58
|
+
semaphores.set(host, made);
|
|
59
|
+
return made;
|
|
60
|
+
}
|
|
61
|
+
if (held.permits !== permits)
|
|
62
|
+
throw new Error(`this host already runs lenses under a cap of ${held.permits}, not ${permits}: one cap per host`);
|
|
63
|
+
return held;
|
|
64
|
+
}
|
|
65
|
+
const creationClocks = new WeakMap();
|
|
66
|
+
/** Wait for this host's next session-creation slot, `gapMs` after the last one
|
|
67
|
+
* handed out. Slots are spaced on the real clock, never the injected one. */
|
|
68
|
+
async function awaitCreationSlot(host, gapMs, signal) {
|
|
69
|
+
if (gapMs <= 0)
|
|
70
|
+
return;
|
|
71
|
+
let clock = creationClocks.get(host);
|
|
72
|
+
if (clock === undefined) {
|
|
73
|
+
clock = { nextFree: 0 };
|
|
74
|
+
creationClocks.set(host, clock);
|
|
75
|
+
}
|
|
76
|
+
const at = Math.max(Date.now(), clock.nextFree);
|
|
77
|
+
clock.nextFree = at + gapMs;
|
|
78
|
+
await delay(at - Date.now(), signal);
|
|
79
|
+
}
|
|
80
|
+
const THINKING_LEVEL_SET = new Set(THINKING_LEVELS);
|
|
81
|
+
/** A failed pass's envelope: no text, exit 1, `error` unless `extra` says more. */
|
|
82
|
+
function failedRun(id, agent, model, usage, errorMessage, extra = {}) {
|
|
83
|
+
return {
|
|
84
|
+
text: "",
|
|
85
|
+
result: {
|
|
86
|
+
id,
|
|
87
|
+
agent,
|
|
88
|
+
model,
|
|
89
|
+
usage,
|
|
90
|
+
messages: [],
|
|
91
|
+
exitCode: 1,
|
|
92
|
+
stopReason: "error",
|
|
93
|
+
errorMessage,
|
|
94
|
+
...extra,
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
const ZERO_USAGE = { input: 0, output: 0, cacheRead: 0, cost: 0 };
|
|
99
|
+
const addUsage = (a, b) => ({
|
|
100
|
+
input: a.input + b.input,
|
|
101
|
+
output: a.output + b.output,
|
|
102
|
+
cacheRead: a.cacheRead + b.cacheRead,
|
|
103
|
+
cost: a.cost + b.cost,
|
|
104
|
+
});
|
|
105
|
+
function readSession(session) {
|
|
106
|
+
// The system message carries the whole prompt; a native child's stream never
|
|
107
|
+
// had it, and no consumer reads it.
|
|
108
|
+
const messages = session.messages.filter((m) => m.role !== "system");
|
|
109
|
+
let last;
|
|
110
|
+
for (let i = messages.length - 1; i >= 0; i--)
|
|
111
|
+
if (messages[i]?.role === "assistant") {
|
|
112
|
+
last = messages[i];
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
const stats = session.getSessionStats();
|
|
116
|
+
const str = (v) => typeof v === "string" && v !== "" ? v : undefined;
|
|
117
|
+
return {
|
|
118
|
+
reading: {
|
|
119
|
+
text: session.getLastAssistantText() ?? "",
|
|
120
|
+
messages: [...messages],
|
|
121
|
+
model: str(last?.["model"]),
|
|
122
|
+
stopReason: str(last?.["stopReason"]),
|
|
123
|
+
errorMessage: str(last?.["errorMessage"]),
|
|
124
|
+
},
|
|
125
|
+
usage: {
|
|
126
|
+
input: stats.tokens.input,
|
|
127
|
+
output: stats.tokens.output,
|
|
128
|
+
cacheRead: stats.tokens.cacheRead,
|
|
129
|
+
cost: stats.cost,
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/** The reason an agent may not run as a lens, or undefined. */
|
|
134
|
+
function leafViolation(agent) {
|
|
135
|
+
const lensTools = (agent.tools ?? []).filter((t) => isLensTool(t));
|
|
136
|
+
return lensTools.length > 0
|
|
137
|
+
? `agent ${agent.name} lists a lens tool (${lensTools.join(", ")}): lenses are leaves`
|
|
138
|
+
: undefined;
|
|
139
|
+
}
|
|
140
|
+
export function createLensRunner(config) {
|
|
141
|
+
const permitPort = config.permitPort ?? localPermits(lensSemaphoreFor(config.host, config.permits));
|
|
142
|
+
const now = config.now ?? Date.now;
|
|
143
|
+
const newId = config.newId ?? randomUUID;
|
|
144
|
+
// The host's sink (it prefixes `[lens] ` where it prints); omitted: nowhere.
|
|
145
|
+
const warn = config.warn ?? (() => { });
|
|
146
|
+
/** Sessions streaming now, by id. A host that handed two ungrouped passes
|
|
147
|
+
* one id would cut one's websocket when the other is disposed (canary 1);
|
|
148
|
+
* a cache group shares its id on purpose and disposes together. */
|
|
149
|
+
const live = new Map();
|
|
150
|
+
const enter = (sessionId) => {
|
|
151
|
+
live.set(sessionId, (live.get(sessionId) ?? 0) + 1);
|
|
152
|
+
};
|
|
153
|
+
const leave = (sessionId) => {
|
|
154
|
+
const n = (live.get(sessionId) ?? 0) - 1;
|
|
155
|
+
if (n > 0)
|
|
156
|
+
live.set(sessionId, n);
|
|
157
|
+
else
|
|
158
|
+
live.delete(sessionId);
|
|
159
|
+
};
|
|
160
|
+
const cache = config.cache !== undefined && config.cache.size >= 1 ? config.cache : undefined;
|
|
161
|
+
const groups = cache !== undefined
|
|
162
|
+
? new CacheGroups(cache.size, cache.staggerMs, undefined, (key, n) => warn(`pin-evidence cache-group-disposed key=${key} sessions=${n}`))
|
|
163
|
+
: undefined;
|
|
164
|
+
const sessionGapMs = config.sessionGapMs ?? DEFAULT_SESSION_GAP_MS;
|
|
165
|
+
const transition = (id, entry) => {
|
|
166
|
+
const p = config.progress;
|
|
167
|
+
if (p === undefined)
|
|
168
|
+
return;
|
|
169
|
+
try {
|
|
170
|
+
mkdirSync(dirname(p.logPath), { recursive: true });
|
|
171
|
+
appendProgressLog(p.logPath, {
|
|
172
|
+
at: new Date(now()).toISOString(),
|
|
173
|
+
pr: p.pr,
|
|
174
|
+
session: p.session,
|
|
175
|
+
run_started_at: p.runStartedAt,
|
|
176
|
+
...(p.commandId !== undefined ? { command_id: p.commandId } : {}),
|
|
177
|
+
...entry,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
catch (e) {
|
|
181
|
+
warn(`progress append failed for ${id}: ${String(e)}`);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
const record = (id, result, startedAtMs, kind = "lens") => {
|
|
185
|
+
try {
|
|
186
|
+
mkdirSync(dirname(config.ledgerPath), { recursive: true });
|
|
187
|
+
appendFileSync(config.ledgerPath, serializeLedgerLine(ledgerLineOf(kind, id, result, { endedAtMs: now(), startedAtMs })));
|
|
188
|
+
}
|
|
189
|
+
catch (e) {
|
|
190
|
+
warn(`ledger append failed for ${id}: ${String(e)}`);
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
async function run(request) {
|
|
194
|
+
const id = newId();
|
|
195
|
+
const startedAt = now();
|
|
196
|
+
const agent = config.registry.get(request.agent);
|
|
197
|
+
const failed = (usage, errorMessage, extra = {}) => failedRun(id, request.agent, agent?.model ?? config.defaultModel ?? "unknown", usage, errorMessage, extra);
|
|
198
|
+
const finish = (out) => {
|
|
199
|
+
record(id, out.result, startedAt);
|
|
200
|
+
return out;
|
|
201
|
+
};
|
|
202
|
+
if (agent === undefined)
|
|
203
|
+
return finish(failed(ZERO_USAGE, `Unknown agent: "${request.agent}". Available agents: ${config.registry
|
|
204
|
+
.names()
|
|
205
|
+
.map((n) => `"${n}"`)
|
|
206
|
+
.join(", ") || "none"}.`));
|
|
207
|
+
const violation = leafViolation(agent);
|
|
208
|
+
if (violation !== undefined)
|
|
209
|
+
return finish(failed(ZERO_USAGE, violation));
|
|
210
|
+
let permit;
|
|
211
|
+
try {
|
|
212
|
+
permit = await permitPort.acquire(id, 1, request.signal);
|
|
213
|
+
}
|
|
214
|
+
catch (e) {
|
|
215
|
+
return finish(failed(ZERO_USAGE, request.signal?.aborted
|
|
216
|
+
? "lens aborted before it started"
|
|
217
|
+
: `no lens permit: ${e instanceof Error ? e.message : String(e)}`, request.signal?.aborted ? { stopReason: "aborted" } : {}));
|
|
218
|
+
}
|
|
219
|
+
let out;
|
|
220
|
+
let started = false;
|
|
221
|
+
try {
|
|
222
|
+
if (request.signal?.aborted) {
|
|
223
|
+
out = failed(ZERO_USAGE, "lens aborted before it started", { stopReason: "aborted" });
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
started = true;
|
|
227
|
+
transition(id, { event: "pass_start", execution_id: id, agent: agent.name });
|
|
228
|
+
out = await execute(id, agent, request);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
finally {
|
|
232
|
+
permit.release();
|
|
233
|
+
}
|
|
234
|
+
if (started) {
|
|
235
|
+
const status = out.result.exitCode === 0 ? "completed" : "failed";
|
|
236
|
+
transition(id, { event: "pass_end", execution_id: id, agent: agent.name, status });
|
|
237
|
+
}
|
|
238
|
+
return finish(out);
|
|
239
|
+
}
|
|
240
|
+
/** The pass under its permit: joins its cache group, if any, and leaves it
|
|
241
|
+
* once its last attempt is done. Never throws. */
|
|
242
|
+
async function execute(id, agent, request) {
|
|
243
|
+
const modelSpec = agent.modelId ?? config.defaultModel;
|
|
244
|
+
const lease = groups !== undefined && modelSpec !== undefined ? groups.join(modelSpec, now()) : undefined;
|
|
245
|
+
try {
|
|
246
|
+
return await executeIn(id, agent, request, lease);
|
|
247
|
+
}
|
|
248
|
+
finally {
|
|
249
|
+
lease?.release();
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/** Session spec the warm-up and the passes share: the host-facing part. */
|
|
253
|
+
const baseSpec = (agent, modelSpec, extensions) => ({
|
|
254
|
+
cwd: config.cwd,
|
|
255
|
+
env: config.env,
|
|
256
|
+
model: modelSpec,
|
|
257
|
+
...(agent.thinking !== null
|
|
258
|
+
? { thinkingLevel: agent.thinking }
|
|
259
|
+
: {}),
|
|
260
|
+
...(config.agentsFiles ? { agentsFiles: config.agentsFiles } : {}),
|
|
261
|
+
extensions,
|
|
262
|
+
...(agent.tools ? { tools: agent.tools } : {}),
|
|
263
|
+
...(config.bashEnv ? { bashEnv: config.bashEnv } : {}),
|
|
264
|
+
});
|
|
265
|
+
/** A group's warm-up: the first pass's model and tools, no lens text, the
|
|
266
|
+
* pack and "reply OK", under the group's session id. It takes no permit (it
|
|
267
|
+
* runs beside the first pass, which holds one) and never rejects: the group
|
|
268
|
+
* is released when it finishes, whatever happened. Its session is kept for
|
|
269
|
+
* the group's disposal. One ledger line, kind "warmup". */
|
|
270
|
+
async function warmUp(agent, modelSpec, lease, pack, keep, hardStopMs) {
|
|
271
|
+
const id = newId();
|
|
272
|
+
const startedAt = now();
|
|
273
|
+
const stop = AbortSignal.timeout(hardStopMs);
|
|
274
|
+
let spent = ZERO_USAGE;
|
|
275
|
+
let session;
|
|
276
|
+
let failure;
|
|
277
|
+
let unexpected = false;
|
|
278
|
+
try {
|
|
279
|
+
await awaitCreationSlot(config.host, sessionGapMs, stop);
|
|
280
|
+
stop.throwIfAborted();
|
|
281
|
+
session = await config.host.makeSession({
|
|
282
|
+
...baseSpec(agent, modelSpec, [
|
|
283
|
+
config.bashGuard,
|
|
284
|
+
leafCache({ pack, cacheKey: lease.key, onUnexpected: () => (unexpected = true) }),
|
|
285
|
+
]),
|
|
286
|
+
sessionId: lease.key,
|
|
287
|
+
onExtensionError: (e) => config.onExtensionError?.("warmup", id, e),
|
|
288
|
+
});
|
|
289
|
+
keep(session);
|
|
290
|
+
stop.throwIfAborted();
|
|
291
|
+
const s = session;
|
|
292
|
+
// An abort that lands before pi's agent is running is a no-op there, so
|
|
293
|
+
// it is repeated until the turn has settled.
|
|
294
|
+
let repeat;
|
|
295
|
+
let turnSettled = false;
|
|
296
|
+
const onStop = () => {
|
|
297
|
+
const again = () => {
|
|
298
|
+
if (turnSettled) {
|
|
299
|
+
if (repeat !== undefined)
|
|
300
|
+
clearInterval(repeat);
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
void s.abort().catch(() => { });
|
|
304
|
+
};
|
|
305
|
+
again();
|
|
306
|
+
repeat = setInterval(again, 100);
|
|
307
|
+
};
|
|
308
|
+
stop.addEventListener("abort", onStop, { once: true });
|
|
309
|
+
try {
|
|
310
|
+
await s.prompt(`Task: ${WARMUP_REPLY_TASK}`);
|
|
311
|
+
}
|
|
312
|
+
finally {
|
|
313
|
+
turnSettled = true;
|
|
314
|
+
stop.removeEventListener("abort", onStop);
|
|
315
|
+
if (repeat !== undefined)
|
|
316
|
+
clearInterval(repeat);
|
|
317
|
+
}
|
|
318
|
+
const read = readSession(s);
|
|
319
|
+
spent = addUsage(spent, read.usage);
|
|
320
|
+
if (stop.aborted)
|
|
321
|
+
failure = "warm-up stopped after its time limit";
|
|
322
|
+
else if (read.reading.stopReason === "error" || read.reading.stopReason === "aborted")
|
|
323
|
+
failure = read.reading.errorMessage ?? `warm-up ended ${read.reading.stopReason}`;
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
failure = e instanceof Error ? e.message : String(e);
|
|
327
|
+
if (session !== undefined) {
|
|
328
|
+
try {
|
|
329
|
+
spent = addUsage(spent, readSession(session).usage);
|
|
330
|
+
}
|
|
331
|
+
catch {
|
|
332
|
+
// nothing readable
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
if (unexpected)
|
|
337
|
+
warn(`warm-up ${id}: request shape not as expected; sent unchanged`);
|
|
338
|
+
record(id, {
|
|
339
|
+
agent: "warmup",
|
|
340
|
+
model: agent.model ?? config.defaultModel ?? "unknown",
|
|
341
|
+
usage: spent,
|
|
342
|
+
messages: [],
|
|
343
|
+
exitCode: failure === undefined ? 0 : 1,
|
|
344
|
+
...(failure !== undefined ? { stopReason: "error", errorMessage: failure } : {}),
|
|
345
|
+
}, startedAt, "warmup");
|
|
346
|
+
}
|
|
347
|
+
/** Wait until the pass's group is ready for it. With a pack: the group's
|
|
348
|
+
* warm-up (started by the first pass), at most the wait; a warm-up that
|
|
349
|
+
* fails or runs late releases the group all the same. Without: the stagger
|
|
350
|
+
* after the group's first pass, an awaited delay. */
|
|
351
|
+
async function groupReady(agent, modelSpec, lease, signal) {
|
|
352
|
+
const pack = cache?.pack;
|
|
353
|
+
if (pack === undefined || !pack.trim()) {
|
|
354
|
+
await delay(lease.delayMs, signal);
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
const waitMs = cache?.warmupWaitMs ?? WARMUP_WAIT_MS;
|
|
358
|
+
const warm = lease.first
|
|
359
|
+
? lease.startWarmup((keep) => warmUp(agent, modelSpec, lease, pack, keep, waitMs * 2))
|
|
360
|
+
: lease.warmup();
|
|
361
|
+
if (warm === undefined)
|
|
362
|
+
return;
|
|
363
|
+
if (!(await settledWithin(warm, waitMs, signal)) && !signal?.aborted)
|
|
364
|
+
warn(`warm-up for cache group ${lease.key} still running after ${waitMs} ms; lenses go on`);
|
|
365
|
+
}
|
|
366
|
+
/** The attempts of one pass, under its permit. Never throws. */
|
|
367
|
+
async function executeIn(id, agent, request, lease) {
|
|
368
|
+
let spent = ZERO_USAGE;
|
|
369
|
+
const modelSpec = agent.modelId ?? config.defaultModel;
|
|
370
|
+
const thinking = agent.thinking;
|
|
371
|
+
const fail = (errorMessage, extra = {}) => failedRun(id, agent.name, agent.model ?? config.defaultModel ?? "unknown", spent, errorMessage, extra);
|
|
372
|
+
if (modelSpec === undefined)
|
|
373
|
+
return fail(`agent ${agent.name} names no model and the run has no default`);
|
|
374
|
+
if (thinking !== null && !THINKING_LEVEL_SET.has(thinking))
|
|
375
|
+
return fail(`agent ${agent.name} asks for an unknown thinking level "${thinking}"`);
|
|
376
|
+
/** Dispose a finished session: now, or with its cache group, which shares
|
|
377
|
+
* its id and so its transports. */
|
|
378
|
+
const retire = (s) => {
|
|
379
|
+
if (lease !== undefined)
|
|
380
|
+
lease.keep(s);
|
|
381
|
+
else
|
|
382
|
+
s.dispose();
|
|
383
|
+
};
|
|
384
|
+
const attempt = async (signal) => {
|
|
385
|
+
let session;
|
|
386
|
+
let sessionId;
|
|
387
|
+
let entered = false;
|
|
388
|
+
let sink;
|
|
389
|
+
let unsubscribe;
|
|
390
|
+
try {
|
|
391
|
+
const pack = cache?.pack;
|
|
392
|
+
const spec = {
|
|
393
|
+
...baseSpec(agent, modelSpec, [
|
|
394
|
+
config.bashGuard,
|
|
395
|
+
...(lease !== undefined && pack !== undefined
|
|
396
|
+
? [
|
|
397
|
+
leafCache({
|
|
398
|
+
pack,
|
|
399
|
+
cacheKey: lease.key,
|
|
400
|
+
body: agent.body,
|
|
401
|
+
onUnexpected: () => warn(`lens ${agent.name} ${id}: request shape not as expected; sent unchanged`),
|
|
402
|
+
}),
|
|
403
|
+
]
|
|
404
|
+
: []),
|
|
405
|
+
]),
|
|
406
|
+
appendSystemPrompt: [agent.body],
|
|
407
|
+
...(config.sessionsDir !== undefined
|
|
408
|
+
? { persist: { sessionDir: join(config.sessionsDir, id) } }
|
|
409
|
+
: {}),
|
|
410
|
+
...(lease !== undefined ? { sessionId: lease.key } : {}),
|
|
411
|
+
onExtensionError: (e) => config.onExtensionError?.(agent.name, id, e),
|
|
412
|
+
};
|
|
413
|
+
await awaitCreationSlot(config.host, sessionGapMs, signal);
|
|
414
|
+
signal.throwIfAborted();
|
|
415
|
+
session = await config.host.makeSession(spec);
|
|
416
|
+
sessionId = session.sessionId;
|
|
417
|
+
if (config.live !== undefined) {
|
|
418
|
+
try {
|
|
419
|
+
const made = config.live(id, agent.name);
|
|
420
|
+
sink = made;
|
|
421
|
+
unsubscribe = session.subscribe((event) => made.feed(event));
|
|
422
|
+
}
|
|
423
|
+
catch (e) {
|
|
424
|
+
warn(`live log for ${id} not started: ${String(e)}`);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
if (lease === undefined && live.has(sessionId))
|
|
428
|
+
throw new Error(`session id ${sessionId} is already live: lens sessions need unique ids`);
|
|
429
|
+
if (lease !== undefined && sessionId !== lease.key)
|
|
430
|
+
throw new Error(`session id ${sessionId} is not its cache group's ${lease.key}`);
|
|
431
|
+
enter(sessionId);
|
|
432
|
+
entered = true;
|
|
433
|
+
signal.throwIfAborted();
|
|
434
|
+
const turn = session.prompt(`Task: ${request.task}`).then(() => undefined, (e) => (e instanceof Error ? e.message : String(e)));
|
|
435
|
+
let settled = false;
|
|
436
|
+
void turn.then(() => {
|
|
437
|
+
settled = true;
|
|
438
|
+
});
|
|
439
|
+
// An abort that lands before pi's agent is running is a no-op there, so
|
|
440
|
+
// it is repeated until the turn has settled.
|
|
441
|
+
const s = session;
|
|
442
|
+
let repeat;
|
|
443
|
+
const onAbort = () => {
|
|
444
|
+
const stop = () => {
|
|
445
|
+
if (settled) {
|
|
446
|
+
if (repeat !== undefined)
|
|
447
|
+
clearInterval(repeat);
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
void s.abort().catch(() => { });
|
|
451
|
+
};
|
|
452
|
+
stop();
|
|
453
|
+
repeat = setInterval(stop, 100);
|
|
454
|
+
};
|
|
455
|
+
if (signal.aborted)
|
|
456
|
+
onAbort();
|
|
457
|
+
else
|
|
458
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
459
|
+
const failure = await turn;
|
|
460
|
+
signal.removeEventListener("abort", onAbort);
|
|
461
|
+
if (repeat !== undefined)
|
|
462
|
+
clearInterval(repeat);
|
|
463
|
+
const { reading, usage } = readSession(session);
|
|
464
|
+
spent = addUsage(spent, usage);
|
|
465
|
+
retire(session);
|
|
466
|
+
leave(sessionId);
|
|
467
|
+
entered = false;
|
|
468
|
+
session = undefined;
|
|
469
|
+
// Ended by a signal, not by the model: the deadline decides what that means.
|
|
470
|
+
signal.throwIfAborted();
|
|
471
|
+
return { ...reading, failure };
|
|
472
|
+
}
|
|
473
|
+
finally {
|
|
474
|
+
unsubscribe?.();
|
|
475
|
+
sink?.close();
|
|
476
|
+
if (session !== undefined) {
|
|
477
|
+
try {
|
|
478
|
+
spent = addUsage(spent, readSession(session).usage);
|
|
479
|
+
}
|
|
480
|
+
catch {
|
|
481
|
+
// nothing readable: the spend is unknown, not guessed
|
|
482
|
+
}
|
|
483
|
+
try {
|
|
484
|
+
retire(session);
|
|
485
|
+
}
|
|
486
|
+
catch {
|
|
487
|
+
// already disposed
|
|
488
|
+
}
|
|
489
|
+
if (sessionId !== undefined && entered)
|
|
490
|
+
leave(sessionId);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
};
|
|
494
|
+
let outcome;
|
|
495
|
+
try {
|
|
496
|
+
if (lease !== undefined)
|
|
497
|
+
await groupReady(agent, modelSpec, lease, request.signal);
|
|
498
|
+
request.signal?.throwIfAborted();
|
|
499
|
+
outcome =
|
|
500
|
+
config.deadlineMs !== undefined
|
|
501
|
+
? await runUnderDeadline(attempt, request.signal, config.deadlineMs)
|
|
502
|
+
: await attempt(request.signal ?? new AbortController().signal);
|
|
503
|
+
}
|
|
504
|
+
catch (e) {
|
|
505
|
+
if (request.signal?.aborted)
|
|
506
|
+
return fail("lens aborted", { stopReason: "aborted" });
|
|
507
|
+
return fail(`lens session failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
508
|
+
}
|
|
509
|
+
if (outcome === "timed_out")
|
|
510
|
+
return fail(passTimeoutMessage(agent.name, config.deadlineMs), { timedOut: true });
|
|
511
|
+
const stopReason = outcome.stopReason;
|
|
512
|
+
const errorMessage = outcome.failure ?? outcome.errorMessage;
|
|
513
|
+
const bad = outcome.failure !== undefined || stopReason === "error" || stopReason === "aborted";
|
|
514
|
+
return {
|
|
515
|
+
text: outcome.text,
|
|
516
|
+
result: {
|
|
517
|
+
id,
|
|
518
|
+
agent: agent.name,
|
|
519
|
+
model: outcome.model ?? agent.model ?? config.defaultModel ?? "unknown",
|
|
520
|
+
usage: spent,
|
|
521
|
+
messages: outcome.messages,
|
|
522
|
+
exitCode: bad ? 1 : 0,
|
|
523
|
+
...(stopReason !== undefined ? { stopReason } : {}),
|
|
524
|
+
...(errorMessage !== undefined ? { errorMessage } : {}),
|
|
525
|
+
},
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
return {
|
|
529
|
+
run,
|
|
530
|
+
liveSessions: () => {
|
|
531
|
+
let n = 0;
|
|
532
|
+
for (const c of live.values())
|
|
533
|
+
n += c;
|
|
534
|
+
return n;
|
|
535
|
+
},
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
//# sourceMappingURL=runlens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runlens.js","sourceRoot":"","sources":["../../../../src/engine/lens/runlens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** What the engine launched at round start: the task directory and the agents of
|
|
2
|
+
* its rows, in row order. */
|
|
3
|
+
export interface EngineWaveNote {
|
|
4
|
+
dir: string;
|
|
5
|
+
agents: readonly string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The words an engine-route round order carries beyond the seeded round
|
|
9
|
+
* template (rule 6: the template is frozen and names `subagent` and
|
|
10
|
+
* `launch_plan`; packages/pi-plugin/src/engine/lens/tool.ts names `lens` and `lens_wave`). Engine
|
|
11
|
+
* code, never `prompts/round-*.md`: it is appended to the order by the round
|
|
12
|
+
* (round.ts) only when the runtime hosts the engine's lens tools.
|
|
13
|
+
*
|
|
14
|
+
* `wave` present: the engine started the planned discovery rows (pass-validate
|
|
15
|
+
* never among them) and the session collects them. Absent: the session launches
|
|
16
|
+
* the planned rows itself, through `lens_wave` over the task directory.
|
|
17
|
+
*/
|
|
18
|
+
export declare function engineLensSection(taskDir: string, wave: EngineWaveNote | null): string;
|
|
19
|
+
//# sourceMappingURL=section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../../../src/engine/lens/section.ts"],"names":[],"mappings":"AAIA;6BAC6B;AAC7B,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,GAAG,MAAM,CA+BtF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// The words an engine-route round order carries beyond the seeded round template.
|
|
2
|
+
// Pure, and apart from packages/pi-plugin/src/engine/prompts.ts (whose closure reaches the state
|
|
3
|
+
// store) so the bot worker can append the same section the one-shot round does.
|
|
4
|
+
/**
|
|
5
|
+
* The words an engine-route round order carries beyond the seeded round
|
|
6
|
+
* template (rule 6: the template is frozen and names `subagent` and
|
|
7
|
+
* `launch_plan`; packages/pi-plugin/src/engine/lens/tool.ts names `lens` and `lens_wave`). Engine
|
|
8
|
+
* code, never `prompts/round-*.md`: it is appended to the order by the round
|
|
9
|
+
* (round.ts) only when the runtime hosts the engine's lens tools.
|
|
10
|
+
*
|
|
11
|
+
* `wave` present: the engine started the planned discovery rows (pass-validate
|
|
12
|
+
* never among them) and the session collects them. Absent: the session launches
|
|
13
|
+
* the planned rows itself, through `lens_wave` over the task directory.
|
|
14
|
+
*/
|
|
15
|
+
export function engineLensSection(taskDir, wave) {
|
|
16
|
+
const lines = [
|
|
17
|
+
"## ENGINE LENS ROUTE (overrides the lens tool names above)",
|
|
18
|
+
"",
|
|
19
|
+
"The lens tools on this route are `lens` and `lens_wave`. Wherever this order says `subagent`, call " +
|
|
20
|
+
"`lens`; wherever it says `launch_plan`, call `lens_wave`. A lens pass cannot launch anything.",
|
|
21
|
+
"",
|
|
22
|
+
];
|
|
23
|
+
if (wave) {
|
|
24
|
+
lines.push(`The engine started the planned discovery wave when this round began, from the task files in ${wave.dir} ` +
|
|
25
|
+
`(${wave.agents.length} rows: ${wave.agents.join(", ")}). Those lenses are already running: do not ` +
|
|
26
|
+
"launch them again, and do not read their task files in their place.", "", "Collect the wave with ONE `lens_wave` call and no arguments: it returns every row that has finished " +
|
|
27
|
+
"and waits for the rest. Read the diff and the context while the wave runs, then call it. It never " +
|
|
28
|
+
"launches a row twice, and its `extra` and `skip` do not apply to rows the engine started.", "", "Everything else is yours to launch with `lens`, several passes in ONE call so they run together: a row " +
|
|
29
|
+
"you raise to a higher tier (it runs in addition to the planned row, which has already started), a lens " +
|
|
30
|
+
"you add, the optional rows, the sweep and the validator.");
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
lines.push(`Launch the planned discovery rows with ONE \`lens_wave\` call: \`dirs\` is [${JSON.stringify(taskDir)}] ` +
|
|
34
|
+
"(plus the optional and sweep directories when this order names them). It starts every row and " +
|
|
35
|
+
"waits for the results, and takes the same `extra` and `skip` as `launch_plan` does. Rows you raise, " +
|
|
36
|
+
"lenses you add and the validator go through `lens`.");
|
|
37
|
+
}
|
|
38
|
+
return lines.join("\n");
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section.js","sourceRoot":"","sources":["../../../../src/engine/lens/section.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,iGAAiG;AACjG,gFAAgF;AAShF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,IAA2B;IAC5E,MAAM,KAAK,GAAG;QACZ,4DAA4D;QAC5D,EAAE;QACF,qGAAqG;YACnG,+FAA+F;QACjG,EAAE;KACH,CAAC;IACF,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,IAAI,CACR,+FAA+F,IAAI,CAAC,GAAG,GAAG;YACxG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C;YACpG,qEAAqE,EACvE,EAAE,EACF,sGAAsG;YACpG,oGAAoG;YACpG,2FAA2F,EAC7F,EAAE,EACF,yGAAyG;YACvG,yGAAyG;YACzG,0DAA0D,CAC7D,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,+EAA+E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI;YACxG,gGAAgG;YAChG,sGAAsG;YACtG,qDAAqD,CACxD,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** A weighted counting semaphore (FIFO). */
|
|
2
|
+
export declare class WeightedSemaphore {
|
|
3
|
+
readonly permits: number;
|
|
4
|
+
private available;
|
|
5
|
+
private readonly waiters;
|
|
6
|
+
constructor(permits: number);
|
|
7
|
+
/** Number of permits currently held (for tests/diagnostics). */
|
|
8
|
+
get held(): number;
|
|
9
|
+
private normalizeWeight;
|
|
10
|
+
acquire(weight: number): Promise<void>;
|
|
11
|
+
release(weight: number): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=semaphore.d.ts.map
|