audit-tools 0.34.41 → 0.35.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/dist/audit/cli/args.d.ts +6 -0
- package/dist/audit/cli/args.d.ts.map +1 -1
- package/dist/audit/cli/args.js +21 -4
- package/dist/audit/cli/args.js.map +1 -1
- package/dist/audit/cli/auditStep.d.ts +6 -15
- package/dist/audit/cli/auditStep.d.ts.map +1 -1
- package/dist/audit/cli/auditStep.js +1 -1
- package/dist/audit/cli/auditStep.js.map +1 -1
- package/dist/audit/cli/dispatch/hostFanoutGate.d.ts +21 -61
- package/dist/audit/cli/dispatch/hostFanoutGate.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/hostFanoutGate.js +18 -167
- package/dist/audit/cli/dispatch/hostFanoutGate.js.map +1 -1
- package/dist/audit/cli/dispatch/packetFilter.d.ts +2 -2
- package/dist/audit/cli/dispatch/packetFilter.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/packetFilter.js +3 -1
- package/dist/audit/cli/dispatch/packetFilter.js.map +1 -1
- package/dist/audit/cli/dispatch/quotaPool.d.ts +2 -14
- package/dist/audit/cli/dispatch/quotaPool.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/quotaPool.js +16 -6
- package/dist/audit/cli/dispatch/quotaPool.js.map +1 -1
- package/dist/audit/cli/dispatch/tierRouting.d.ts +2 -2
- package/dist/audit/cli/dispatch/tokenUsageObservation.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/tokenUsageObservation.js +10 -2
- package/dist/audit/cli/dispatch/tokenUsageObservation.js.map +1 -1
- package/dist/audit/cli/dispatch.d.ts +14 -3
- package/dist/audit/cli/dispatch.d.ts.map +1 -1
- package/dist/audit/cli/dispatch.js +87 -65
- package/dist/audit/cli/dispatch.js.map +1 -1
- package/dist/audit/cli/forceSynthesisCommand.d.ts.map +1 -1
- package/dist/audit/cli/forceSynthesisCommand.js +9 -1
- package/dist/audit/cli/forceSynthesisCommand.js.map +1 -1
- package/dist/audit/cli/hybridDispatch.d.ts +4 -9
- package/dist/audit/cli/hybridDispatch.d.ts.map +1 -1
- package/dist/audit/cli/hybridDispatch.js +1 -1
- package/dist/audit/cli/hybridDispatch.js.map +1 -1
- package/dist/audit/cli/lineIndex.d.ts +2 -0
- package/dist/audit/cli/lineIndex.d.ts.map +1 -1
- package/dist/audit/cli/lineIndex.js +4 -0
- package/dist/audit/cli/lineIndex.js.map +1 -1
- package/dist/audit/cli/nextStepCommand.d.ts +0 -26
- package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
- package/dist/audit/cli/nextStepCommand.js +14 -358
- package/dist/audit/cli/nextStepCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts +5 -16
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +27 -157
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/quotaCommand.d.ts.map +1 -1
- package/dist/audit/cli/quotaCommand.js +1 -5
- package/dist/audit/cli/quotaCommand.js.map +1 -1
- package/dist/audit/cli/reviewRun.d.ts.map +1 -1
- package/dist/audit/cli/reviewRun.js +58 -23
- package/dist/audit/cli/reviewRun.js.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.d.ts +1 -1
- package/dist/audit/cli/semanticReviewStep.d.ts.map +1 -1
- package/dist/audit/cli/semanticReviewStep.js +35 -54
- package/dist/audit/cli/semanticReviewStep.js.map +1 -1
- package/dist/audit/cli/steps.d.ts +4 -4
- package/dist/audit/cli/steps.d.ts.map +1 -1
- package/dist/audit/cli/steps.js +0 -1
- package/dist/audit/cli/steps.js.map +1 -1
- package/dist/audit/cli/workPartitionRuntime.d.ts +11 -0
- package/dist/audit/cli/workPartitionRuntime.d.ts.map +1 -0
- package/dist/audit/cli/workPartitionRuntime.js +39 -0
- package/dist/audit/cli/workPartitionRuntime.js.map +1 -0
- package/dist/audit/contracts/wrapperResponse.d.ts +6 -6
- package/dist/audit/io/artifacts.d.ts +1 -3
- package/dist/audit/io/artifacts.d.ts.map +1 -1
- package/dist/audit/io/artifacts.js +0 -3
- package/dist/audit/io/artifacts.js.map +1 -1
- package/dist/audit/orchestrator/advance.d.ts.map +1 -1
- package/dist/audit/orchestrator/advance.js +0 -35
- package/dist/audit/orchestrator/advance.js.map +1 -1
- package/dist/audit/orchestrator/advanceTypes.d.ts +4 -63
- package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
- package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
- package/dist/audit/orchestrator/executorRunners.js +9 -12
- package/dist/audit/orchestrator/executorRunners.js.map +1 -1
- package/dist/audit/orchestrator/executors.d.ts.map +1 -1
- package/dist/audit/orchestrator/executors.js +0 -5
- package/dist/audit/orchestrator/executors.js.map +1 -1
- package/dist/audit/orchestrator/hostInputPause.d.ts +1 -1
- package/dist/audit/orchestrator/hostInputPause.js +1 -1
- package/dist/audit/orchestrator/ingestionExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/ingestionExecutors.js +4 -1
- package/dist/audit/orchestrator/ingestionExecutors.js.map +1 -1
- package/dist/audit/orchestrator/intakeExecutors.d.ts +1 -65
- package/dist/audit/orchestrator/intakeExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/intakeExecutors.js +3 -425
- package/dist/audit/orchestrator/intakeExecutors.js.map +1 -1
- package/dist/audit/orchestrator/nextStep.d.ts +0 -13
- package/dist/audit/orchestrator/nextStep.d.ts.map +1 -1
- package/dist/audit/orchestrator/nextStep.js +0 -7
- package/dist/audit/orchestrator/nextStep.js.map +1 -1
- package/dist/audit/orchestrator/planningExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/planningExecutors.js +4 -1
- package/dist/audit/orchestrator/planningExecutors.js.map +1 -1
- package/dist/audit/orchestrator/rollingDispatch.d.ts +1 -1
- package/dist/audit/orchestrator/rollingDispatch.d.ts.map +1 -1
- package/dist/audit/orchestrator/rollingDispatch.js +5 -4
- package/dist/audit/orchestrator/rollingDispatch.js.map +1 -1
- package/dist/audit/orchestrator/state.d.ts +0 -39
- package/dist/audit/orchestrator/state.d.ts.map +1 -1
- package/dist/audit/orchestrator/state.js +3 -29
- package/dist/audit/orchestrator/state.js.map +1 -1
- package/dist/audit/orchestrator/synthesisExecutors.d.ts +8 -2
- package/dist/audit/orchestrator/synthesisExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/synthesisExecutors.js +7 -5
- package/dist/audit/orchestrator/synthesisExecutors.js.map +1 -1
- package/dist/audit/reporting/findingIdentity.d.ts +2 -2
- package/dist/audit/reporting/findingIdentity.js +2 -2
- package/dist/audit/reporting/synthesis.d.ts +7 -1
- package/dist/audit/reporting/synthesis.d.ts.map +1 -1
- package/dist/audit/reporting/synthesis.js +27 -7
- package/dist/audit/reporting/synthesis.js.map +1 -1
- package/dist/audit/reporting/workBlocks.d.ts +14 -3
- package/dist/audit/reporting/workBlocks.d.ts.map +1 -1
- package/dist/audit/reporting/workBlocks.js +163 -73
- package/dist/audit/reporting/workBlocks.js.map +1 -1
- package/dist/audit/types/activeDispatch.d.ts +8 -7
- package/dist/audit/types/activeDispatch.d.ts.map +1 -1
- package/dist/audit/types/auditState.d.ts +6 -6
- package/dist/audit/types/externalAnalyzer.d.ts +6 -6
- package/dist/audit/validation/auditResults.d.ts.map +1 -1
- package/dist/audit/validation/auditResults.js +6 -1
- package/dist/audit/validation/auditResults.js.map +1 -1
- package/dist/remediate/contractPipeline/phaseCut.d.ts +8 -0
- package/dist/remediate/contractPipeline/phaseCut.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/phaseCut.js +63 -0
- package/dist/remediate/contractPipeline/phaseCut.js.map +1 -1
- package/dist/remediate/contractPipeline/phaseCutArtifact.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/phaseCutArtifact.js +5 -3
- package/dist/remediate/contractPipeline/phaseCutArtifact.js.map +1 -1
- package/dist/remediate/phases/plan.d.ts.map +1 -1
- package/dist/remediate/phases/plan.js +35 -12
- package/dist/remediate/phases/plan.js.map +1 -1
- package/dist/remediate/steps/contractPipeline.d.ts +6 -2
- package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipeline.js +90 -6
- package/dist/remediate/steps/contractPipeline.js.map +1 -1
- package/dist/remediate/steps/contractPipelinePrompts.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipelinePrompts.js +4 -2
- package/dist/remediate/steps/contractPipelinePrompts.js.map +1 -1
- package/dist/remediate/steps/dispatch/marshal.d.ts +6 -0
- package/dist/remediate/steps/dispatch/marshal.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/marshal.js +16 -17
- package/dist/remediate/steps/dispatch/marshal.js.map +1 -1
- package/dist/remediate/steps/dispatch/waveScheduling.d.ts +7 -15
- package/dist/remediate/steps/dispatch/waveScheduling.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/waveScheduling.js +26 -19
- package/dist/remediate/steps/dispatch/waveScheduling.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts +5 -7
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +100 -82
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/remediate/steps/rollingSession.d.ts +2 -1
- package/dist/remediate/steps/rollingSession.d.ts.map +1 -1
- package/dist/remediate/steps/rollingSession.js +14 -8
- package/dist/remediate/steps/rollingSession.js.map +1 -1
- package/dist/remediate/steps/sessionConfigLoad.d.ts +3 -2
- package/dist/remediate/steps/sessionConfigLoad.d.ts.map +1 -1
- package/dist/remediate/steps/sessionConfigLoad.js +4 -10
- package/dist/remediate/steps/sessionConfigLoad.js.map +1 -1
- package/dist/remediate/validation/contractPipeline.d.ts +1 -1
- package/dist/remediate/validation/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipeline.js +7 -1
- package/dist/remediate/validation/contractPipeline.js.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.d.ts +8 -0
- package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.js +89 -0
- package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
- package/dist/shared/config/resolveSessionConfig.d.ts.map +1 -1
- package/dist/shared/config/resolveSessionConfig.js +6 -5
- package/dist/shared/config/resolveSessionConfig.js.map +1 -1
- package/dist/shared/decompose/workPartition.d.ts +66 -0
- package/dist/shared/decompose/workPartition.d.ts.map +1 -0
- package/dist/shared/decompose/workPartition.js +523 -0
- package/dist/shared/decompose/workPartition.js.map +1 -0
- package/dist/shared/dispatch/admissionLoop.d.ts +5 -44
- package/dist/shared/dispatch/admissionLoop.d.ts.map +1 -1
- package/dist/shared/dispatch/admissionLoop.js +20 -82
- package/dist/shared/dispatch/admissionLoop.js.map +1 -1
- package/dist/shared/dispatch/coordinator.d.ts +5 -5
- package/dist/shared/dispatch/coordinator.d.ts.map +1 -1
- package/dist/shared/dispatch/coordinator.js +12 -11
- package/dist/shared/dispatch/coordinator.js.map +1 -1
- package/dist/shared/dispatch/costRank.d.ts +5 -155
- package/dist/shared/dispatch/costRank.d.ts.map +1 -1
- package/dist/shared/dispatch/costRank.js +2 -179
- package/dist/shared/dispatch/costRank.js.map +1 -1
- package/dist/shared/dispatch/dispatchQuotaContract.d.ts +37 -38
- package/dist/shared/dispatch/dispatchQuotaContract.d.ts.map +1 -1
- package/dist/shared/dispatch/dispatchQuotaContract.js +0 -1
- package/dist/shared/dispatch/dispatchQuotaContract.js.map +1 -1
- package/dist/shared/dispatch/hybridDispatch.d.ts +6 -2
- package/dist/shared/dispatch/hybridDispatch.d.ts.map +1 -1
- package/dist/shared/dispatch/hybridDispatch.js +1 -1
- package/dist/shared/dispatch/hybridDispatch.js.map +1 -1
- package/dist/shared/dispatch/rollingDispatch.d.ts +4 -4
- package/dist/shared/dispatch/rollingDispatch.d.ts.map +1 -1
- package/dist/shared/dispatch/rollingDispatch.js +13 -11
- package/dist/shared/dispatch/rollingDispatch.js.map +1 -1
- package/dist/shared/dispatch/unifiedRolling.d.ts +2 -2
- package/dist/shared/dispatch/unifiedRolling.d.ts.map +1 -1
- package/dist/shared/dispatch/unifiedRolling.js +1 -1
- package/dist/shared/dispatch/unifiedRolling.js.map +1 -1
- package/dist/shared/engine/obligationEngine.d.ts +2 -2
- package/dist/shared/friction/stepBoundaryCapture.d.ts +5 -59
- package/dist/shared/friction/stepBoundaryCapture.d.ts.map +1 -1
- package/dist/shared/friction/stepBoundaryCapture.js +11 -107
- package/dist/shared/friction/stepBoundaryCapture.js.map +1 -1
- package/dist/shared/index.d.ts +13 -16
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +9 -13
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/io/stateDir.d.ts +2 -2
- package/dist/shared/io/stateDir.js +2 -2
- package/dist/shared/providers/auditorSources.d.ts +10 -84
- package/dist/shared/providers/auditorSources.d.ts.map +1 -1
- package/dist/shared/providers/auditorSources.js +42 -261
- package/dist/shared/providers/auditorSources.js.map +1 -1
- package/dist/shared/providers/dispatchExclusion.d.ts +22 -0
- package/dist/shared/providers/dispatchExclusion.d.ts.map +1 -0
- package/dist/shared/providers/dispatchExclusion.js +23 -0
- package/dist/shared/providers/dispatchExclusion.js.map +1 -0
- package/dist/shared/providers/identity.d.ts +2 -66
- package/dist/shared/providers/identity.d.ts.map +1 -1
- package/dist/shared/providers/identity.js +2 -72
- package/dist/shared/providers/identity.js.map +1 -1
- package/dist/shared/providers/providerFactory.d.ts +0 -3
- package/dist/shared/providers/providerFactory.d.ts.map +1 -1
- package/dist/shared/providers/providerFactory.js +5 -32
- package/dist/shared/providers/providerFactory.js.map +1 -1
- package/dist/shared/providers/providerPathGuard.d.ts +3 -3
- package/dist/shared/providers/providerPathGuard.js +7 -7
- package/dist/shared/providers/providerPathGuard.js.map +1 -1
- package/dist/shared/quota/apiPool.d.ts +19 -22
- package/dist/shared/quota/apiPool.d.ts.map +1 -1
- package/dist/shared/quota/apiPool.js +66 -47
- package/dist/shared/quota/apiPool.js.map +1 -1
- package/dist/shared/quota/capacity.d.ts +29 -24
- package/dist/shared/quota/capacity.d.ts.map +1 -1
- package/dist/shared/quota/capacity.js +30 -4
- package/dist/shared/quota/capacity.js.map +1 -1
- package/dist/shared/quota/codexHostConfig.d.ts +6 -13
- package/dist/shared/quota/codexHostConfig.d.ts.map +1 -1
- package/dist/shared/quota/codexHostConfig.js +8 -14
- package/dist/shared/quota/codexHostConfig.js.map +1 -1
- package/dist/shared/quota/fileLock.d.ts +7 -0
- package/dist/shared/quota/fileLock.d.ts.map +1 -1
- package/dist/shared/quota/fileLock.js +32 -4
- package/dist/shared/quota/fileLock.js.map +1 -1
- package/dist/shared/quota/hostLimits.d.ts +1 -1
- package/dist/shared/quota/hostLimits.d.ts.map +1 -1
- package/dist/shared/quota/hostLimits.js +8 -11
- package/dist/shared/quota/hostLimits.js.map +1 -1
- package/dist/shared/quota/hostPool.d.ts +1 -1
- package/dist/shared/quota/hostPool.js +2 -2
- package/dist/shared/quota/hostPool.js.map +1 -1
- package/dist/shared/quota/limits.d.ts.map +1 -1
- package/dist/shared/quota/limits.js +30 -26
- package/dist/shared/quota/limits.js.map +1 -1
- package/dist/shared/quota/scheduler.d.ts +2 -3
- package/dist/shared/quota/scheduler.d.ts.map +1 -1
- package/dist/shared/quota/scheduler.js +1 -1
- package/dist/shared/quota/scheduler.js.map +1 -1
- package/dist/shared/quota/types.d.ts +10 -10
- package/dist/shared/quota/types.d.ts.map +1 -1
- package/dist/shared/quota/types.js +4 -7
- package/dist/shared/quota/types.js.map +1 -1
- package/dist/shared/repair/brokeredDispatch.d.ts.map +1 -1
- package/dist/shared/repair/brokeredDispatch.js +3 -0
- package/dist/shared/repair/brokeredDispatch.js.map +1 -1
- package/dist/shared/reporting/auditDeliverable.d.ts.map +1 -1
- package/dist/shared/reporting/auditDeliverable.js +1 -0
- package/dist/shared/reporting/auditDeliverable.js.map +1 -1
- package/dist/shared/rolling/pausedState.d.ts +7 -7
- package/dist/shared/rolling/pausedState.js +3 -3
- package/dist/shared/tokens.d.ts +2 -5
- package/dist/shared/tokens.d.ts.map +1 -1
- package/dist/shared/tokens.js +15 -15
- package/dist/shared/tokens.js.map +1 -1
- package/dist/shared/types/auditorDescriptor.d.ts +3 -2
- package/dist/shared/types/auditorDescriptor.d.ts.map +1 -1
- package/dist/shared/types/auditorDescriptor.js +3 -2
- package/dist/shared/types/auditorDescriptor.js.map +1 -1
- package/dist/shared/types/finding.d.ts +80 -0
- package/dist/shared/types/finding.d.ts.map +1 -1
- package/dist/shared/types/finding.js +17 -0
- package/dist/shared/types/finding.js.map +1 -1
- package/dist/shared/types/sessionConfig.d.ts +5 -5
- package/dist/shared/types/sessionConfig.js +1 -1
- package/dist/shared/validation/findingsReport.d.ts.map +1 -1
- package/dist/shared/validation/findingsReport.js +3 -0
- package/dist/shared/validation/findingsReport.js.map +1 -1
- package/docs/audit-pkg/development.md +3 -2
- package/docs/audit-pkg/operator-guide.md +13 -106
- package/docs/audit-pkg/product.md +8 -7
- package/docs/audit-pkg/release.md +38 -29
- package/opencode.json +2 -2
- package/package.json +7 -4
- package/skills/audit-code/SKILL.md +2 -1
- package/skills/audit-code/audit-code.prompt.md +4 -3
- package/skills/remediate-code/remediate-code.prompt.md +2 -1
- package/dist/audit/cli/providerConfirmationStep.d.ts +0 -106
- package/dist/audit/cli/providerConfirmationStep.d.ts.map +0 -1
- package/dist/audit/cli/providerConfirmationStep.js +0 -396
- package/dist/audit/cli/providerConfirmationStep.js.map +0 -1
- package/dist/audit/orchestrator/providerConfirmation.d.ts +0 -25
- package/dist/audit/orchestrator/providerConfirmation.d.ts.map +0 -1
- package/dist/audit/orchestrator/providerConfirmation.js +0 -60
- package/dist/audit/orchestrator/providerConfirmation.js.map +0 -1
- package/dist/shared/providers/providerConfirmation.d.ts +0 -141
- package/dist/shared/providers/providerConfirmation.d.ts.map +0 -1
- package/dist/shared/providers/providerConfirmation.js +0 -420
- package/dist/shared/providers/providerConfirmation.js.map +0 -1
- package/dist/shared/providers/proxyCatalog.d.ts +0 -158
- package/dist/shared/providers/proxyCatalog.d.ts.map +0 -1
- package/dist/shared/providers/proxyCatalog.js +0 -658
- package/dist/shared/providers/proxyCatalog.js.map +0 -1
- package/dist/shared/providers/sharedProviderConfirmation.d.ts +0 -802
- package/dist/shared/providers/sharedProviderConfirmation.d.ts.map +0 -1
- package/dist/shared/providers/sharedProviderConfirmation.js +0 -1865
- package/dist/shared/providers/sharedProviderConfirmation.js.map +0 -1
- package/dist/shared/types/providerConfirmation.d.ts +0 -334
- package/dist/shared/types/providerConfirmation.d.ts.map +0 -1
- package/dist/shared/types/providerConfirmation.js +0 -35
- package/dist/shared/types/providerConfirmation.js.map +0 -1
|
@@ -14,52 +14,11 @@
|
|
|
14
14
|
* nothing — both shipped, both as silent fail-opens.
|
|
15
15
|
*
|
|
16
16
|
* This module is a LEAF on purpose: pure string derivation, no value imports. That is
|
|
17
|
-
* what lets the quota ledger
|
|
18
|
-
*
|
|
19
|
-
* homes (`quota/scheduler.ts`, `providers/sharedProviderConfirmation.ts`) could not
|
|
17
|
+
* what lets the quota ledger and source fold import the same answer without an
|
|
18
|
+
* import cycle — the previous homes could not
|
|
20
19
|
* all be reached from each other, which is why the keys were rediscovered per-consumer
|
|
21
20
|
* in the first place.
|
|
22
21
|
*/
|
|
23
|
-
/**
|
|
24
|
-
* **"Is this the backend the operator already saw?"** → **service** + model.
|
|
25
|
-
*
|
|
26
|
-
* `service:model` where the model is knowable, else the coarse service name — where
|
|
27
|
-
* "service" is the BACKEND ACTUALLY SERVING the model (`service ?? transport`), never
|
|
28
|
-
* the transport that reaches it. Approval is about whose model you consume, not the
|
|
29
|
-
* road taken: two transports onto one service+model are ONE backend the operator
|
|
30
|
-
* confirms once.
|
|
31
|
-
*
|
|
32
|
-
* **Service-qualification is load-bearing, not cosmetic.** The earlier `model_id ??
|
|
33
|
-
* provider` form dropped the provider whenever a model was known, and that was a gate
|
|
34
|
-
* BYPASS in two directions: two backends from different services advertising the SAME
|
|
35
|
-
* model string collapsed into one delta entry (only one got an exclusion pattern),
|
|
36
|
-
* and — worse — confirming one service's model marked a different service's
|
|
37
|
-
* identically-named model as confirmed, so a backend the operator never saw routed as
|
|
38
|
-
* approved. Proxy expansion makes that collision ordinary, not exotic.
|
|
39
|
-
*
|
|
40
|
-
* **The coarse fallback is equally load-bearing** — do not "simplify" it away. A model
|
|
41
|
-
* is knowable here only for `openai-compatible` and `codex`; for claude-code / agy /
|
|
42
|
-
* opencode / worker-command the model arrives only at the dispatch handshake. A
|
|
43
|
-
* model-ONLY identity would let such a backend contribute no key at all, so installing
|
|
44
|
-
* `agy` on PATH would leave the Gate-0 delta empty and the gate would dispatch it
|
|
45
|
-
* silently — reopening the exact PATH-appearance case the gate exists to catch, blind
|
|
46
|
-
* rather than loud.
|
|
47
|
-
*
|
|
48
|
-
* ⚠ NOT interchangeable with {@link exclusionPattern}. Building an exclusion rule from
|
|
49
|
-
* this identity matches nothing for a proxied lane — `ruleMatches` compares the
|
|
50
|
-
* TRANSPORT. They were unified once; that was the bypass.
|
|
51
|
-
*
|
|
52
|
-
* ⚠ Nor is it the dispatch COST-POSITION map (`readConfirmedCostPositions`), a third
|
|
53
|
-
* keyspace keyed by BARE `model_id` because `costRank` looks positions up with no
|
|
54
|
-
* service in hand at the lookup site. Do not unify with either.
|
|
55
|
-
*/
|
|
56
|
-
export function backendIdentity(modelId, serviceName) {
|
|
57
|
-
return modelId ? `${serviceName}:${modelId}` : serviceName;
|
|
58
|
-
}
|
|
59
|
-
/** The service a source is served BY — its declared backend, else its own transport. */
|
|
60
|
-
export function sourceService(source) {
|
|
61
|
-
return source.service ?? source.transport;
|
|
62
|
-
}
|
|
63
22
|
/**
|
|
64
23
|
* **"How much quota is left?"** → **service** (+account) + model.
|
|
65
24
|
*
|
|
@@ -89,33 +48,4 @@ export function quotaPoolKey(providerName, hostModel, account) {
|
|
|
89
48
|
const head = account ? `${providerName}#${account}` : providerName;
|
|
90
49
|
return hostModel ? `${head}/${hostModel}` : `${head}/*`;
|
|
91
50
|
}
|
|
92
|
-
/**
|
|
93
|
-
* **"What pattern rules this backend out?"** → **transport** + model.
|
|
94
|
-
*
|
|
95
|
-
* The axis-explicit exclusion pattern that rules out one backend at the finest
|
|
96
|
-
* granularity its model is knowable at — prefixed with `transport:` because the
|
|
97
|
-
* routing filter matches on `ExcludableBackend.transport`. A backend whose model
|
|
98
|
-
* arrives only at the dispatch handshake (a CLI) must be ruled out at the coarse
|
|
99
|
-
* `transport:provider` tier or the rule would never match.
|
|
100
|
-
*
|
|
101
|
-
* Model-granular form uses `/` as the delimiter (not `:`) because model ids can
|
|
102
|
-
* contain colons (e.g. `qwen2.5:7b`).
|
|
103
|
-
*
|
|
104
|
-
* ⚠ NOT the same value as {@link backendIdentity} — see that function's note.
|
|
105
|
-
*/
|
|
106
|
-
export function exclusionPattern(modelId, transportProvider) {
|
|
107
|
-
return modelId
|
|
108
|
-
? `transport:${transportProvider}/${modelId}`
|
|
109
|
-
: `transport:${transportProvider}`;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* **"What pattern rules this service/vendor out durably?"** → **service** + model.
|
|
113
|
-
*
|
|
114
|
-
* The axis-explicit exclusion pattern that rules out a backend at the service
|
|
115
|
-
* (vendor) axis — prefixed with `service:`. Emitted by autonomous fail-closed
|
|
116
|
-
* writes so unconfirmed backends stay excluded across transport/proxy changes.
|
|
117
|
-
*/
|
|
118
|
-
export function serviceExclusionPattern(modelId, serviceName) {
|
|
119
|
-
return modelId ? `service:${serviceName}/${modelId}` : `service:${serviceName}`;
|
|
120
|
-
}
|
|
121
51
|
//# sourceMappingURL=identity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/shared/providers/identity.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/shared/providers/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,YAAY,CAC1B,YAAoB,EACpB,SAAoC,EACpC,OAAuB;IAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IACnE,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;AAC1D,CAAC"}
|
|
@@ -31,19 +31,16 @@ export interface AutoProviderContext {
|
|
|
31
31
|
headless: boolean;
|
|
32
32
|
inVSCode: boolean;
|
|
33
33
|
insideOpenCode: boolean;
|
|
34
|
-
insideClaudeCode: boolean;
|
|
35
34
|
insideCodex: boolean;
|
|
36
35
|
insideAgy: boolean;
|
|
37
36
|
inAntigravity: boolean;
|
|
38
37
|
hasVSCodeTaskTemplate: boolean;
|
|
39
38
|
hasAntigravityTemplate: boolean;
|
|
40
39
|
hasSubprocessTemplate: boolean;
|
|
41
|
-
hasClaudeCodeConfig: boolean;
|
|
42
40
|
hasOpenCodeConfig: boolean;
|
|
43
41
|
hasCodexConfig: boolean;
|
|
44
42
|
hasAgyConfig: boolean;
|
|
45
43
|
hasOpenAiCompatibleConfig: boolean;
|
|
46
|
-
claudeAvailable: boolean;
|
|
47
44
|
opencodeAvailable: boolean;
|
|
48
45
|
codexAvailable: boolean;
|
|
49
46
|
agyAvailable: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerFactory.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/providerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAElB,cAAc,EACd,SAAS,EACV,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"providerFactory.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/providerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAElB,cAAc,EACd,SAAS,EACV,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAMvD,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAK3E;AAUD;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,GACzC,OAAO,CAET;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,OAAO,CAAC;IAChC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,yBAAyB,EAAE,OAAO,CAAC;IACnC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB;AA6KD;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,GAAE,aAAkB,EACjC,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;CAC5B,GACL,oBAAoB,CAYtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kCAAkC,CAChD,YAAY,EAAE,oBAAoB,EAClC,aAAa,GAAE,aAAkB,GAChC,0BAA0B,CA8B5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,CAAC;IACzB,wBAAwB,EAAE,CACxB,MAAM,EAAE,gBAAgB,GAAG,SAAS,KACjC,oBAAoB,CAAC;IAC1B;;;;OAIG;IACH,0BAA0B,EAAE,CAC1B,MAAM,EAAE,kBAAkB,GAAG,SAAS,KACnC,oBAAoB,CAAC;IAC1B,sBAAsB,EAAE,CACtB,MAAM,EAAE,cAAc,GAAG,SAAS,KAC/B,oBAAoB,CAAC;IAC1B,iBAAiB,EAAE,CACjB,MAAM,EAAE,SAAS,GAAG,SAAS,KAC1B,oBAAoB,CAAC;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,EAAE,aAAa,YAAK,EACjC,IAAI,EAAE,wBAAwB,GAC7B,oBAAoB,CA6CtB"}
|
|
@@ -6,11 +6,6 @@ import { OpenAiCompatibleProvider } from "./openAiCompatibleProvider.js";
|
|
|
6
6
|
function hasEntries(values) {
|
|
7
7
|
return (values?.length ?? 0) > 0;
|
|
8
8
|
}
|
|
9
|
-
function hasConfiguredClaudeCode(sessionConfig) {
|
|
10
|
-
return (Boolean(sessionConfig.claude_code?.command?.trim()) ||
|
|
11
|
-
hasEntries(sessionConfig.claude_code?.extra_args) ||
|
|
12
|
-
sessionConfig.claude_code?.dangerously_skip_permissions === true);
|
|
13
|
-
}
|
|
14
9
|
export function hasConfiguredOpenCode(sessionConfig) {
|
|
15
10
|
return (Boolean(sessionConfig.opencode?.command?.trim()) ||
|
|
16
11
|
hasEntries(sessionConfig.opencode?.extra_args));
|
|
@@ -38,14 +33,12 @@ export function hasConfiguredOpenAiCompatible(config) {
|
|
|
38
33
|
}
|
|
39
34
|
function getAutoProviderContext(sessionConfig, env, lookupCommand, uiMode) {
|
|
40
35
|
// Self-spawn signals come from the single-sourced guard so the auto-resolver
|
|
41
|
-
// and
|
|
36
|
+
// and source discovery agree byte-for-byte on what "inside an active session"
|
|
42
37
|
// means (the `CLAUDECODE` / `CODEX` in-session env convention).
|
|
43
38
|
// Note: `CODEX_*` vars in quota/hostLimits.ts denote Anthropic's "Codex
|
|
44
39
|
// Desktop" originator — a distinct concept from the OpenAI Codex CLI.
|
|
45
40
|
// These signals are the behavioral contract; regression-tested in
|
|
46
41
|
// packages/shared/tests/codex-antigravity-providers.test.mjs.
|
|
47
|
-
const insideClaudeCode = isSelfSpawnBlocked("claude-code", env);
|
|
48
|
-
const claudeCommand = sessionConfig.claude_code?.command ?? "claude";
|
|
49
42
|
const opencodeCommand = sessionConfig.opencode?.command ?? "opencode";
|
|
50
43
|
const codexCommand = sessionConfig.codex?.command ?? "codex";
|
|
51
44
|
const insideCodex = isSelfSpawnBlocked("codex", env);
|
|
@@ -55,7 +48,6 @@ function getAutoProviderContext(sessionConfig, env, lookupCommand, uiMode) {
|
|
|
55
48
|
headless: uiMode === "headless",
|
|
56
49
|
inVSCode: (env.TERM_PROGRAM ?? "").toLowerCase() === "vscode",
|
|
57
50
|
insideOpenCode: Boolean(env.OPENCODE),
|
|
58
|
-
insideClaudeCode,
|
|
59
51
|
insideCodex,
|
|
60
52
|
insideAgy,
|
|
61
53
|
// In-IDE marker for Antigravity: either an `ANTIGRAVITY` env var or
|
|
@@ -69,15 +61,12 @@ function getAutoProviderContext(sessionConfig, env, lookupCommand, uiMode) {
|
|
|
69
61
|
hasVSCodeTaskTemplate: hasEntries(sessionConfig.vscode_task?.command_template),
|
|
70
62
|
hasAntigravityTemplate: hasEntries(sessionConfig.antigravity?.command_template),
|
|
71
63
|
hasSubprocessTemplate: hasEntries(sessionConfig.subprocess_template?.command_template),
|
|
72
|
-
hasClaudeCodeConfig: hasConfiguredClaudeCode(sessionConfig),
|
|
73
64
|
hasOpenCodeConfig: hasConfiguredOpenCode(sessionConfig),
|
|
74
65
|
hasCodexConfig: hasConfiguredCodex(sessionConfig.codex),
|
|
75
66
|
hasAgyConfig: hasConfiguredAgy(sessionConfig.agy),
|
|
76
67
|
hasOpenAiCompatibleConfig: hasConfiguredOpenAiCompatible(sessionConfig.openai_compatible),
|
|
77
|
-
claudeAvailable: !insideClaudeCode && lookupCommand(claudeCommand),
|
|
78
68
|
opencodeAvailable: lookupCommand(opencodeCommand),
|
|
79
|
-
//
|
|
80
|
-
// cannot be spawned from inside a codex session.
|
|
69
|
+
// A fresh `codex` subprocess cannot be spawned from inside a codex session.
|
|
81
70
|
codexAvailable: !insideCodex && lookupCommand(codexCommand),
|
|
82
71
|
// Gated for July 18, 2026 sunset cleanup: fallback check for gemini CLI executable on PATH
|
|
83
72
|
agyAvailable: !insideAgy &&
|
|
@@ -114,10 +103,7 @@ const PROVIDER_PRIORITY_RULES = [
|
|
|
114
103
|
},
|
|
115
104
|
{
|
|
116
105
|
name: "vscode-task",
|
|
117
|
-
comment: "
|
|
118
|
-
"is forced false, so we never resolve to claude-code — a fresh `claude` " +
|
|
119
|
-
"subprocess cannot be spawned from within one. Such runs fall through to " +
|
|
120
|
-
"worker-command (manual dispatch), matching ClaudeCodeProvider's guard.",
|
|
106
|
+
comment: "Use an explicitly configured VS Code task when the current IDE owns it.",
|
|
121
107
|
predicate: (ctx) => ctx.inVSCode && ctx.hasVSCodeTaskTemplate,
|
|
122
108
|
},
|
|
123
109
|
{
|
|
@@ -132,11 +118,6 @@ const PROVIDER_PRIORITY_RULES = [
|
|
|
132
118
|
comment: "Explicit subprocess template configured: use it.",
|
|
133
119
|
predicate: (ctx) => ctx.hasSubprocessTemplate,
|
|
134
120
|
},
|
|
135
|
-
{
|
|
136
|
-
name: "claude-code",
|
|
137
|
-
comment: "Config-gated: operator explicitly configured claude-code and it is available.",
|
|
138
|
-
predicate: (ctx) => ctx.hasClaudeCodeConfig && ctx.claudeAvailable,
|
|
139
|
-
},
|
|
140
121
|
{
|
|
141
122
|
name: "opencode",
|
|
142
123
|
comment: "Config-gated: operator explicitly configured opencode and it is available. " +
|
|
@@ -154,13 +135,6 @@ const PROVIDER_PRIORITY_RULES = [
|
|
|
154
135
|
comment: "Config-gated: operator explicitly configured agy and it is available.",
|
|
155
136
|
predicate: (ctx) => ctx.hasAgyConfig && ctx.agyAvailable,
|
|
156
137
|
},
|
|
157
|
-
{
|
|
158
|
-
name: "claude-code",
|
|
159
|
-
comment: "Tie-break: claude is available — prefer claude-code. (No `!opencodeAvailable` " +
|
|
160
|
-
"guard: opencode no longer competes at the bare-availability rung, so claude " +
|
|
161
|
-
"wins whenever present rather than yielding to an unconfigured opencode.)",
|
|
162
|
-
predicate: (ctx) => ctx.claudeAvailable,
|
|
163
|
-
},
|
|
164
138
|
{
|
|
165
139
|
name: "agy",
|
|
166
140
|
comment: "Tie-break: agy/gemini is available — prefer agy.",
|
|
@@ -182,9 +156,8 @@ const PROVIDER_PRIORITY_RULES = [
|
|
|
182
156
|
},
|
|
183
157
|
{
|
|
184
158
|
name: "codex",
|
|
185
|
-
comment: "Last resort: codex is only auto-selected when no
|
|
186
|
-
|
|
187
|
-
predicate: (ctx) => ctx.codexAvailable && !ctx.claudeAvailable && !ctx.opencodeAvailable,
|
|
159
|
+
comment: "Last resort: codex is only auto-selected when no configured opencode is available.",
|
|
160
|
+
predicate: (ctx) => ctx.codexAvailable && !ctx.opencodeAvailable,
|
|
188
161
|
},
|
|
189
162
|
];
|
|
190
163
|
function chooseAutoProvider(context) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerFactory.js","sourceRoot":"","sources":["../../../src/shared/providers/providerFactory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAU3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,SAAS,UAAU,CAAC,MAA4B;IAC9C,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"providerFactory.js","sourceRoot":"","sources":["../../../src/shared/providers/providerFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export declare function setCommandExistsForTesting(impl: ((command: string) => b
|
|
|
15
15
|
* is currently inside an active session of that same agent (e.g. `claude-code`
|
|
16
16
|
* while `CLAUDECODE` is set, `codex` while `CODEX` is set). Machine-readable,
|
|
17
17
|
* single-sourced, and the basis for both the auto-resolver's `*Available`
|
|
18
|
-
* guards and the
|
|
18
|
+
* guards and the source-pool self-spawn exclusion.
|
|
19
19
|
*/
|
|
20
20
|
export declare function isSelfSpawnBlocked(provider: ResolvedProviderName, env?: NodeJS.ProcessEnv): boolean;
|
|
21
21
|
/**
|
|
@@ -31,7 +31,7 @@ export declare function isSelfSpawnBlocked(provider: ResolvedProviderName, env?:
|
|
|
31
31
|
* 3. env auto-detection — the SAME in-session signals the self-spawn guard
|
|
32
32
|
* reads: inside a Codex session (`isSelfSpawnBlocked("codex")`) ⇒ `codex`;
|
|
33
33
|
* inside a Claude Code session (`CLAUDECODE`) ⇒ `claude-code`;
|
|
34
|
-
* 4.
|
|
34
|
+
* 4. neutral `worker-command` fallback when the host did not identify itself.
|
|
35
35
|
*
|
|
36
36
|
* B1 host-identity sourcing: keying the host fan-out off THIS (rather than
|
|
37
37
|
* literal `claude-code`) is what stops a Codex host from charging its packets to
|
|
@@ -52,7 +52,7 @@ export declare function resolveConversationHostProvider(options?: {
|
|
|
52
52
|
* an EXPLICIT `sessionConfig.provider` passes through; an unset / `auto`
|
|
53
53
|
* provider falls back to the auto-detected {@link resolveConversationHostProvider}
|
|
54
54
|
* (the `--host-provider` override / `host_provider` config / env detection /
|
|
55
|
-
*
|
|
55
|
+
* neutral fallback). Single-sourced so the fallback and the `auto`-exclusion live
|
|
56
56
|
* in ONE place rather than being re-spelled at each dispatch call site across
|
|
57
57
|
* both orchestrators.
|
|
58
58
|
*
|
|
@@ -3,8 +3,8 @@ import { isHeadlessPrimaryProvider } from "./inProcessWorkers.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Single-sourced PATH detection + self-spawn guard for the provider subsystem.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Legacy provider discovery and `providerFactory.ts` (auto-resolution) used to
|
|
7
|
+
* carry separate copies of `commandExists` and their
|
|
8
8
|
* own ad-hoc `env.CLAUDECODE` / `env.CODEX` self-spawn checks. Two copies of a
|
|
9
9
|
* security-relevant guard is exactly the drift hazard the project's
|
|
10
10
|
* "single-source the guard" invariant exists to prevent — a fix to one copy
|
|
@@ -51,7 +51,7 @@ export function setCommandExistsForTesting(impl) {
|
|
|
51
51
|
* The in-session env signals that mark a host as already running INSIDE an agent
|
|
52
52
|
* of a given kind — a fresh subprocess of that same agent cannot be spawned from
|
|
53
53
|
* within one (it would self-spawn). Single-sourced so the auto-resolver and the
|
|
54
|
-
*
|
|
54
|
+
* source discovery path agree byte-for-byte on what "self-spawn-blocked" means.
|
|
55
55
|
*
|
|
56
56
|
* Only `claude-code` and `codex` have a self-spawn hazard: they are headless
|
|
57
57
|
* CLIs auto-spawned as fresh subprocesses. The other providers are either
|
|
@@ -66,7 +66,7 @@ const SELF_SPAWN_ENV_SIGNAL = {
|
|
|
66
66
|
* is currently inside an active session of that same agent (e.g. `claude-code`
|
|
67
67
|
* while `CLAUDECODE` is set, `codex` while `CODEX` is set). Machine-readable,
|
|
68
68
|
* single-sourced, and the basis for both the auto-resolver's `*Available`
|
|
69
|
-
* guards and the
|
|
69
|
+
* guards and the source-pool self-spawn exclusion.
|
|
70
70
|
*/
|
|
71
71
|
export function isSelfSpawnBlocked(provider, env = process.env) {
|
|
72
72
|
if (provider === "codex") {
|
|
@@ -98,7 +98,7 @@ export function isSelfSpawnBlocked(provider, env = process.env) {
|
|
|
98
98
|
* 3. env auto-detection — the SAME in-session signals the self-spawn guard
|
|
99
99
|
* reads: inside a Codex session (`isSelfSpawnBlocked("codex")`) ⇒ `codex`;
|
|
100
100
|
* inside a Claude Code session (`CLAUDECODE`) ⇒ `claude-code`;
|
|
101
|
-
* 4.
|
|
101
|
+
* 4. neutral `worker-command` fallback when the host did not identify itself.
|
|
102
102
|
*
|
|
103
103
|
* B1 host-identity sourcing: keying the host fan-out off THIS (rather than
|
|
104
104
|
* literal `claude-code`) is what stops a Codex host from charging its packets to
|
|
@@ -121,14 +121,14 @@ export function resolveConversationHostProvider(options) {
|
|
|
121
121
|
return "claude-code";
|
|
122
122
|
if (isSelfSpawnBlocked("agy", env))
|
|
123
123
|
return "agy";
|
|
124
|
-
return "
|
|
124
|
+
return "worker-command";
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
127
|
* The host's resolved provider identity for quota-key / driver-classification:
|
|
128
128
|
* an EXPLICIT `sessionConfig.provider` passes through; an unset / `auto`
|
|
129
129
|
* provider falls back to the auto-detected {@link resolveConversationHostProvider}
|
|
130
130
|
* (the `--host-provider` override / `host_provider` config / env detection /
|
|
131
|
-
*
|
|
131
|
+
* neutral fallback). Single-sourced so the fallback and the `auto`-exclusion live
|
|
132
132
|
* in ONE place rather than being re-spelled at each dispatch call site across
|
|
133
133
|
* both orchestrators.
|
|
134
134
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerPathGuard.js","sourceRoot":"","sources":["../../../src/shared/providers/providerPathGuard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE;;;;;;;;;;;;;;;;;;GAkBG;AAEH,6EAA6E;AAC7E,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACvE,8EAA8E;IAC9E,8EAA8E;IAC9E,yEAAyE;IACzE,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE;QACjD,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,IAAI,iBAAiB,GAAiC,kBAAkB,CAAC;AAEzE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAA2C;IAE3C,iBAAiB,GAAG,IAAI,IAAI,kBAAkB,CAAC;AACjD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,qBAAqB,GAAkD;IAC3E,aAAa,EAAE,YAAY;CAC5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA8B,EAC9B,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,OAAO,CACZ,GAAG,CAAC,KAAK;YACP,GAAG,CAAC,WAAW;YACf,GAAG,CAAC,eAAe;YACnB,GAAG,CAAC,kCAAkC,CACzC,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,oFAAoF;QACpF,yDAAyD;QACzD,OAAO,OAAO,CACZ,GAAG,CAAC,OAAO;YACT,GAAG,CAAC,eAAe;YACnB,GAAG,CAAC,UAAU,CACjB,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAI/C;IACC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;IACnC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC;IACzD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,UAAU,CAAC;IACzE,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACxC,IAAI,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IACrD,IAAI,kBAAkB,CAAC,aAAa,EAAE,GAAG,CAAC;QAAE,OAAO,aAAa,CAAC;IACjE,IAAI,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"providerPathGuard.js","sourceRoot":"","sources":["../../../src/shared/providers/providerPathGuard.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import type { DispatchModelTier } from "../types/stepContract.js";
|
|
|
5
5
|
import type { HostConcurrencyLimit, QuotaStateEntry } from "./types.js";
|
|
6
6
|
import type { QuotaSource } from "./quotaSource.js";
|
|
7
7
|
import type { DiscoveredRateLimitsInput, HostModelRosterEntry } from "./scheduler.js";
|
|
8
|
-
import type { DispatchExclusion
|
|
8
|
+
import type { DispatchExclusion } from "../providers/dispatchExclusion.js";
|
|
9
9
|
/**
|
|
10
10
|
* The stable id of a dispatchable source — its explicit `id`, or the quota-ledger
|
|
11
11
|
* pool identity `service[#account]/(model ?? endpoint ?? *)` ({@link quotaPoolKey})
|
|
@@ -14,31 +14,28 @@ import type { DispatchExclusion, DispatchExclusionPattern } from "../providers/s
|
|
|
14
14
|
* (It said `transport[...]` until stage 1 normalized `service` at the chokepoint; the
|
|
15
15
|
* transport arm below is now the unreachable fallback, not the main path.)
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* the gate's `(service ?? transport):model` compare key — which shares this
|
|
21
|
-
* backend-qualified provider half but carries no account. Do not unify them.
|
|
17
|
+
* The account component is load-bearing here: it prevents independent credentials
|
|
18
|
+
* from collapsing into one quota pool while still deduplicating two transports that
|
|
19
|
+
* reach the same service, account, and model.
|
|
22
20
|
*/
|
|
23
21
|
export declare function dispatchableSourceId(source: DispatchableSource, account?: string | null): string;
|
|
24
22
|
/**
|
|
25
23
|
* The effective per-request context window (tokens) for a dispatchable source — a
|
|
26
|
-
* positive integer
|
|
27
|
-
*
|
|
28
|
-
* every fit gate for a proxy pool whose registry entry carried no context field
|
|
29
|
-
*
|
|
30
|
-
* 413'd instead of being skipped). Fallback chain:
|
|
24
|
+
* positive integer when declared/discovered, otherwise null. Fit gates treat null
|
|
25
|
+
* as unadmittable: the earlier "unknown ⇒ always fits" behavior silently no-op'd
|
|
26
|
+
* every fit gate for a proxy pool whose registry entry carried no context field.
|
|
27
|
+
* Resolution chain:
|
|
31
28
|
* 1. operator/registry-declared `quota.context_tokens` (the stamp populate sets),
|
|
32
29
|
* 2. else the BACKEND model's models.dev window (`resolveModelStatics(model,
|
|
33
30
|
* service ?? transport)` — a synced, someone-else-maintained table),
|
|
34
|
-
* 3. else
|
|
31
|
+
* 3. else unknown (`null`) — never a guessed window.
|
|
35
32
|
* Single-sourced (exported) as the one fit-window resolver. Only `buildSourcePool`
|
|
36
33
|
* stamps it — host-model pools carry no `contextCapTokens` and gate (on the admission
|
|
37
34
|
* path) against their own per-pool `resolved_limits` window instead; the admission
|
|
38
35
|
* builder folds the two (`context_cap_tokens ?? resolved_limits.context_tokens`) so
|
|
39
36
|
* BOTH pool classes share one fit predicate (unified-routing step B).
|
|
40
37
|
*/
|
|
41
|
-
export declare function resolveSourceContextWindowTokens(source: DispatchableSource): number;
|
|
38
|
+
export declare function resolveSourceContextWindowTokens(source: DispatchableSource): number | null;
|
|
42
39
|
/**
|
|
43
40
|
* Bridge a generic {@link DispatchableSource} to the concrete per-provider config
|
|
44
41
|
* block its provider constructor expects, so `createFreshSessionProvider` can build
|
|
@@ -177,7 +174,7 @@ export interface DispatchableSourceSet {
|
|
|
177
174
|
* Returns the PAIR `{ sources, dropped }`, mirroring `resolveAmbientSources`
|
|
178
175
|
* (`auditorSources.ts`), which applies the same `laneWorkerKindConflict` predicate.
|
|
179
176
|
* A routing-filtered lane must be a value the caller can read, not only a stderr
|
|
180
|
-
* line:
|
|
177
|
+
* line: source discovery can feed read-only diagnostics, where a dropped
|
|
181
178
|
* backend stays VISIBLE and marked so the operator can act on it — the same reason
|
|
182
179
|
* `excludedBackends` is filtered on the routing side rather than in the gather.
|
|
183
180
|
* A stderr-only report also self-suppresses after the first (lane, reason) in a
|
|
@@ -189,7 +186,7 @@ export declare function collectDispatchableSources(sessionConfig: SessionConfig,
|
|
|
189
186
|
/**
|
|
190
187
|
* The FULL dispatchable source list for a run — the configured
|
|
191
188
|
* `collectDispatchableSources` set. The single async source-gather point: both the
|
|
192
|
-
* dispatch pool builder ({@link buildSourcePools}) and
|
|
189
|
+
* dispatch pool builder ({@link buildSourcePools}) and source diagnostics
|
|
193
190
|
* consume it, so what the operator confirms is exactly what routes (no display/dispatch
|
|
194
191
|
* drift on the source set). Async is retained as the stable seam for the per-auditor
|
|
195
192
|
* inventory resolution the handshake will feed here.
|
|
@@ -198,15 +195,15 @@ export declare function gatherDispatchableSources(sessionConfig: SessionConfig,
|
|
|
198
195
|
commandWorkers?: boolean;
|
|
199
196
|
}): Promise<DispatchableSourceSet>;
|
|
200
197
|
/**
|
|
201
|
-
* A
|
|
198
|
+
* A self-spawn-zeroed dispatch capacity: reach existed and the local safety guard
|
|
202
199
|
* removed all of it. Distinct from a legitimately empty build (nothing configured),
|
|
203
200
|
* which is normal operation and carries no fact.
|
|
204
201
|
*/
|
|
205
202
|
export interface ExclusionZeroing {
|
|
206
203
|
/** How many sources were gathered before the rules were applied. */
|
|
207
204
|
gatheredCount: number;
|
|
208
|
-
/** The
|
|
209
|
-
patterns:
|
|
205
|
+
/** The mechanical transport patterns that did it, deduplicated and sorted. */
|
|
206
|
+
patterns: string[];
|
|
210
207
|
}
|
|
211
208
|
/**
|
|
212
209
|
* The result of a source-pool build.
|
|
@@ -244,8 +241,8 @@ export declare function buildSourcePools(params: {
|
|
|
244
241
|
/** The draw's fold policy: admit command-shaped primaries (remediate) or not (audit). */
|
|
245
242
|
commandWorkers?: boolean;
|
|
246
243
|
/**
|
|
247
|
-
*
|
|
248
|
-
*
|
|
244
|
+
* Backends recomputed as self-spawn-blocked in THIS process
|
|
245
|
+
* (`buildSelfSpawnExclusion`). Applied as a
|
|
249
246
|
* set-difference over freshly-gathered reach — never additively.
|
|
250
247
|
*
|
|
251
248
|
* A matcher rather than a name set because the grammar is MODEL-granular
|
|
@@ -253,11 +250,11 @@ export declare function buildSourcePools(params: {
|
|
|
253
250
|
* backend's other sources routable, which a provider-name set cannot express.
|
|
254
251
|
*
|
|
255
252
|
* Filtered HERE, on the routing side, rather than inside
|
|
256
|
-
* {@link gatherDispatchableSources}: the gather also
|
|
253
|
+
* {@link gatherDispatchableSources}: the gather may also feed read-only source
|
|
257
254
|
* display, where an excluded provider must stay VISIBLE and marked excluded so the
|
|
258
255
|
* operator can see it and opt it back in. Display and routing diverge deliberately.
|
|
259
256
|
*
|
|
260
|
-
* Omit ⇒ no filtering
|
|
257
|
+
* Omit ⇒ no filtering, so a caller that has
|
|
261
258
|
* no confirmation to read behaves exactly as before.
|
|
262
259
|
*/
|
|
263
260
|
excludedBackends?: DispatchExclusion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiPool.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/apiPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,KAAK,kBAAkB,EAEvB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"apiPool.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/apiPool.ts"],"names":[],"mappings":"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"}
|