audit-tools 0.30.0 → 0.30.1
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/adapters/astGrep.d.ts +30 -0
- package/dist/audit/adapters/astGrep.d.ts.map +1 -0
- package/dist/audit/adapters/astGrep.js +46 -0
- package/dist/audit/adapters/astGrep.js.map +1 -0
- package/dist/audit/adapters/codeql.d.ts +47 -0
- package/dist/audit/adapters/codeql.d.ts.map +1 -0
- package/dist/audit/adapters/codeql.js +52 -0
- package/dist/audit/adapters/codeql.js.map +1 -0
- package/dist/audit/adapters/normalizeExternal.d.ts +24 -1
- package/dist/audit/adapters/normalizeExternal.d.ts.map +1 -1
- package/dist/audit/adapters/normalizeExternal.js +50 -0
- package/dist/audit/adapters/normalizeExternal.js.map +1 -1
- package/dist/audit/adapters/semgrep.d.ts +34 -15
- package/dist/audit/adapters/semgrep.d.ts.map +1 -1
- package/dist/audit/adapters/semgrep.js +54 -1
- package/dist/audit/adapters/semgrep.js.map +1 -1
- package/dist/audit/cli/mergeAndIngestCommand.d.ts +29 -1
- package/dist/audit/cli/mergeAndIngestCommand.d.ts.map +1 -1
- package/dist/audit/cli/mergeAndIngestCommand.js +71 -5
- package/dist/audit/cli/mergeAndIngestCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +7 -6
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/resynthesizeCommand.d.ts.map +1 -1
- package/dist/audit/cli/resynthesizeCommand.js +3 -3
- package/dist/audit/cli/resynthesizeCommand.js.map +1 -1
- package/dist/audit/cli/submitPacketCommand.d.ts.map +1 -1
- package/dist/audit/cli/submitPacketCommand.js +6 -1
- package/dist/audit/cli/submitPacketCommand.js.map +1 -1
- package/dist/audit/contracts/workerSchemas.d.ts +13 -13
- package/dist/audit/contracts/workerSchemas.d.ts.map +1 -1
- package/dist/audit/contracts/workerSchemas.js +1 -1
- package/dist/audit/contracts/workerSchemas.js.map +1 -1
- package/dist/audit/contracts/wrapperResponse.d.ts +7 -0
- package/dist/audit/contracts/wrapperResponse.d.ts.map +1 -1
- package/dist/audit/contracts/wrapperResponse.js +1 -0
- package/dist/audit/contracts/wrapperResponse.js.map +1 -1
- package/dist/audit/extractors/graph.d.ts.map +1 -1
- package/dist/audit/extractors/graph.js +47 -0
- package/dist/audit/extractors/graph.js.map +1 -1
- package/dist/audit/io/artifacts.d.ts +2 -2
- package/dist/audit/io/artifacts.d.ts.map +1 -1
- package/dist/audit/io/artifacts.js +14 -11
- package/dist/audit/io/artifacts.js.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.d.ts +17 -0
- package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.js +26 -0
- package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
- package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
- package/dist/audit/orchestrator/executorRunners.js +20 -0
- 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 +5 -0
- package/dist/audit/orchestrator/executors.js.map +1 -1
- package/dist/audit/orchestrator/nextStep.d.ts +37 -0
- package/dist/audit/orchestrator/nextStep.d.ts.map +1 -1
- package/dist/audit/orchestrator/nextStep.js +45 -0
- package/dist/audit/orchestrator/nextStep.js.map +1 -1
- package/dist/audit/supervisor/operatorHandoff.d.ts +12 -0
- package/dist/audit/supervisor/operatorHandoff.d.ts.map +1 -1
- package/dist/audit/supervisor/operatorHandoff.js +3 -1
- package/dist/audit/supervisor/operatorHandoff.js.map +1 -1
- package/dist/audit/types/externalAnalyzer.d.ts +68 -2
- package/dist/audit/types/externalAnalyzer.d.ts.map +1 -1
- package/dist/audit/types/externalAnalyzer.js +23 -0
- package/dist/audit/types/externalAnalyzer.js.map +1 -1
- package/dist/audit/types/reviewPlanning.d.ts +14 -14
- package/dist/audit/validation/auditResults.d.ts +17 -0
- package/dist/audit/validation/auditResults.d.ts.map +1 -1
- package/dist/audit/validation/auditResults.js +39 -0
- package/dist/audit/validation/auditResults.js.map +1 -1
- package/dist/audit/validation/sessionConfig.d.ts.map +1 -1
- package/dist/audit/validation/sessionConfig.js +4 -0
- package/dist/audit/validation/sessionConfig.js.map +1 -1
- package/dist/remediate/review/autonomousGate.d.ts +74 -0
- package/dist/remediate/review/autonomousGate.d.ts.map +1 -0
- package/dist/remediate/review/autonomousGate.js +179 -0
- package/dist/remediate/review/autonomousGate.js.map +1 -0
- package/dist/remediate/steps/contractPipeline.d.ts +8 -0
- package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipeline.js +1 -0
- package/dist/remediate/steps/contractPipeline.js.map +1 -1
- package/dist/remediate/steps/contractPipelinePrompts.d.ts +10 -0
- package/dist/remediate/steps/contractPipelinePrompts.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipelinePrompts.js +32 -1
- package/dist/remediate/steps/contractPipelinePrompts.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts +34 -0
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +144 -8
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/shared/index.d.ts +11 -2
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +6 -2
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/io/auditToolsPaths.d.ts +35 -0
- package/dist/shared/io/auditToolsPaths.d.ts.map +1 -1
- package/dist/shared/io/auditToolsPaths.js +46 -1
- package/dist/shared/io/auditToolsPaths.js.map +1 -1
- package/dist/shared/io/frictionCapture.d.ts +83 -0
- package/dist/shared/io/frictionCapture.d.ts.map +1 -0
- package/dist/shared/io/frictionCapture.js +79 -0
- package/dist/shared/io/frictionCapture.js.map +1 -0
- package/dist/shared/io/gitignoreArtifacts.d.ts +94 -0
- package/dist/shared/io/gitignoreArtifacts.d.ts.map +1 -0
- package/dist/shared/io/gitignoreArtifacts.js +147 -0
- package/dist/shared/io/gitignoreArtifacts.js.map +1 -0
- package/dist/shared/quota/antigravityQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/antigravityQuotaSource.js +2 -0
- package/dist/shared/quota/antigravityQuotaSource.js.map +1 -1
- package/dist/shared/quota/claudeOAuthQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/claudeOAuthQuotaSource.js +4 -0
- package/dist/shared/quota/claudeOAuthQuotaSource.js.map +1 -1
- package/dist/shared/quota/codexQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/codexQuotaSource.js +2 -0
- package/dist/shared/quota/codexQuotaSource.js.map +1 -1
- package/dist/shared/quota/copilotQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/copilotQuotaSource.js +2 -0
- package/dist/shared/quota/copilotQuotaSource.js.map +1 -1
- package/dist/shared/quota/errorParsing.d.ts +19 -0
- package/dist/shared/quota/errorParsing.d.ts.map +1 -1
- package/dist/shared/quota/errorParsing.js +14 -1
- package/dist/shared/quota/errorParsing.js.map +1 -1
- package/dist/shared/quota/hostSessionQuotaSource.d.ts +138 -0
- package/dist/shared/quota/hostSessionQuotaSource.d.ts.map +1 -0
- package/dist/shared/quota/hostSessionQuotaSource.js +213 -0
- package/dist/shared/quota/hostSessionQuotaSource.js.map +1 -0
- package/dist/shared/reporting/auditDeliverable.d.ts +36 -0
- package/dist/shared/reporting/auditDeliverable.d.ts.map +1 -0
- package/dist/shared/reporting/auditDeliverable.js +85 -0
- package/dist/shared/reporting/auditDeliverable.js.map +1 -0
- package/dist/shared/types/sessionConfig.d.ts +13 -0
- package/dist/shared/types/sessionConfig.d.ts.map +1 -1
- package/package.json +1 -1
- package/schemas/audit_result.schema.json +2 -2
- package/schemas/audit_results.schema.json +2 -2
- package/schemas/finding.schema.json +2 -2
- package/scripts/postinstall.mjs +64 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeOAuthQuotaSource.js","sourceRoot":"","sources":["../../../src/shared/quota/claudeOAuthQuotaSource.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claudeOAuthQuotaSource.js","sourceRoot":"","sources":["../../../src/shared/quota/claudeOAuthQuotaSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codexQuotaSource.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/codexQuotaSource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EAGnB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAe9B,UAAU,WAAW;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AACD,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,cAAc,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;QACpC,gBAAgB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;KACvC,GAAG,IAAI,CAAC;CACV;AAKD,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACvC;AAED,qBAAa,gBAAiB,SAAQ,mBAAmB;IACvD,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;gBAEhC,OAAO,GAAE,uBAA4B;IAMjD,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;cAIpC,aAAa,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAMnE,+EAA+E;IAC/E,OAAO,CAAC,eAAe;CAWxB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EACjD,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAapC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"codexQuotaSource.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/codexQuotaSource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EAGnB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAe9B,UAAU,WAAW;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AACD,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,cAAc,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;QACpC,gBAAgB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;KACvC,GAAG,IAAI,CAAC;CACV;AAKD,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACvC;AAED,qBAAa,gBAAiB,SAAQ,mBAAmB;IACvD,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;gBAEhC,OAAO,GAAE,uBAA4B;IAMjD,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;cAIpC,aAAa,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAMnE,+EAA+E;IAC/E,OAAO,CAAC,eAAe;CAWxB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EACjD,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAapC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAgBhG"}
|
|
@@ -71,6 +71,8 @@ export async function fetchCodexUsage(creds, ctx) {
|
|
|
71
71
|
* a 0–1 fraction; `reset_at` is the absolute reset (unix seconds → ISO).
|
|
72
72
|
*/
|
|
73
73
|
export function mapCodexUsage(body, nowMs) {
|
|
74
|
+
if (body == null || typeof body !== "object")
|
|
75
|
+
return null;
|
|
74
76
|
const rl = body.rate_limit;
|
|
75
77
|
const windows = [rl?.primary_window, rl?.secondary_window].filter((w) => !!w && typeof w.used_percent === "number");
|
|
76
78
|
if (windows.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codexQuotaSource.js","sourceRoot":"","sources":["../../../src/shared/quota/codexQuotaSource.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codexQuotaSource.js","sourceRoot":"","sources":["../../../src/shared/quota/codexQuotaSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilotQuotaSource.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/copilotQuotaSource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EAGnB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AA6B9B,UAAU,kBAAkB;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AACD,UAAU,oBAAoB;IAC5B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE;QAChB,oBAAoB,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;QACjD,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;KAClC,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACvE,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,IAAI,EAAE,MAAM,GACX,MAAM,CAQR;AAED,qBAAa,kBAAmB,SAAQ,mBAAmB;IACzD,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;gBAEhC,OAAO,GAAE,yBAA8B;IAUnD,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;cAIpC,aAAa,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAMnE,6EAA6E;IAC7E,OAAO,CAAC,eAAe;CAcxB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EACxB,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAYpC;AAED,oGAAoG;AACpG,wBAAgB,eAAe,CAC7B,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,MAAM,GACZ,kBAAkB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"copilotQuotaSource.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/copilotQuotaSource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EAGnB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AA6B9B,UAAU,kBAAkB;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AACD,UAAU,oBAAoB;IAC5B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE;QAChB,oBAAoB,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;QACjD,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;KAClC,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACvE,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,IAAI,EAAE,MAAM,GACX,MAAM,CAQR;AAED,qBAAa,kBAAmB,SAAQ,mBAAmB;IACzD,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;gBAEhC,OAAO,GAAE,yBAA8B;IAUnD,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;cAIpC,aAAa,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAMnE,6EAA6E;IAC7E,OAAO,CAAC,eAAe;CAcxB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EACxB,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAYpC;AAED,oGAAoG;AACpG,wBAAgB,eAAe,CAC7B,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,MAAM,GACZ,kBAAkB,GAAG,IAAI,CAsB3B"}
|
|
@@ -107,6 +107,8 @@ export async function fetchCopilotUsage(creds, ctx) {
|
|
|
107
107
|
}
|
|
108
108
|
/** Maps a `copilot_internal/user` snapshot (premium-requests preferred) → 0–1 remaining + reset. */
|
|
109
109
|
export function mapCopilotUsage(body, nowMs) {
|
|
110
|
+
if (body == null || typeof body !== "object")
|
|
111
|
+
return null;
|
|
110
112
|
const q = body.quota_snapshots?.premium_interactions ?? body.quota_snapshots?.chat;
|
|
111
113
|
if (!q)
|
|
112
114
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilotQuotaSource.js","sourceRoot":"","sources":["../../../src/shared/quota/copilotQuotaSource.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"copilotQuotaSource.js","sourceRoot":"","sources":["../../../src/shared/quota/copilotQuotaSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,25 @@ export interface RateLimitDetectionResult {
|
|
|
3
3
|
retryAfterMs: number | null;
|
|
4
4
|
rawMatch: string | null;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* The worker output channel a piece of text came from. Host *session-limit*
|
|
8
|
+
* sentinels are only trustworthy from the ERROR / STATUS channel: the consumed
|
|
9
|
+
* AuditResult finding content is attacker- / model-controlled prose that may
|
|
10
|
+
* legitimately *quote* a limit string (e.g. a finding describing a rate-limit
|
|
11
|
+
* bug). Treating that as a real session cap would let result content pause the
|
|
12
|
+
* run. CE-003 channel isolation: only `error` / `status` may trip a session
|
|
13
|
+
* limit; `result` is parsed for nothing.
|
|
14
|
+
*/
|
|
15
|
+
export type WorkerOutputChannel = "error" | "status" | "result";
|
|
16
|
+
/**
|
|
17
|
+
* Channel-isolated session-limit detection (CE-003). The single entry point a
|
|
18
|
+
* dispatch consumer MUST use when the text originates from worker output: it
|
|
19
|
+
* refuses to inspect the consumed-result channel, so a healthy AuditResult that
|
|
20
|
+
* merely quotes a limit string can never consume a pause. Only `error` /
|
|
21
|
+
* `status` text is forwarded to {@link detectRateLimitError}.
|
|
22
|
+
*/
|
|
23
|
+
export declare function detectRateLimitFromChannel(channel: WorkerOutputChannel, text: string, now?: number): RateLimitDetectionResult;
|
|
6
24
|
export declare function detectRateLimitError(text: string, now?: number): RateLimitDetectionResult;
|
|
25
|
+
export declare const DEFAULT_COOLDOWN_MS = 60000;
|
|
7
26
|
export declare function computeCooldownUntil(retryAfterMs: number | null, defaultMs?: number, now?: number): string;
|
|
8
27
|
//# sourceMappingURL=errorParsing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorParsing.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/errorParsing.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAiHD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,GACvB,wBAAwB,CAgB1B;
|
|
1
|
+
{"version":3,"file":"errorParsing.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/errorParsing.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAiHD;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhE;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,GACvB,wBAAwB,CAK1B;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,GACvB,wBAAwB,CAgB1B;AAED,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,SAAS,GAAE,MAA4B,EACvC,GAAG,GAAE,MAAmB,GACvB,MAAM,CAGR"}
|
|
@@ -105,6 +105,19 @@ function extractResetsAtClockMs(text, now) {
|
|
|
105
105
|
const ms = target.getTime() - now;
|
|
106
106
|
return ms > 0 ? ms + 5000 : null;
|
|
107
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Channel-isolated session-limit detection (CE-003). The single entry point a
|
|
110
|
+
* dispatch consumer MUST use when the text originates from worker output: it
|
|
111
|
+
* refuses to inspect the consumed-result channel, so a healthy AuditResult that
|
|
112
|
+
* merely quotes a limit string can never consume a pause. Only `error` /
|
|
113
|
+
* `status` text is forwarded to {@link detectRateLimitError}.
|
|
114
|
+
*/
|
|
115
|
+
export function detectRateLimitFromChannel(channel, text, now = Date.now()) {
|
|
116
|
+
if (channel === "result") {
|
|
117
|
+
return { isRateLimited: false, retryAfterMs: null, rawMatch: null };
|
|
118
|
+
}
|
|
119
|
+
return detectRateLimitError(text, now);
|
|
120
|
+
}
|
|
108
121
|
export function detectRateLimitError(text, now = Date.now()) {
|
|
109
122
|
const jsonResult = detectFromJson(text);
|
|
110
123
|
if (jsonResult)
|
|
@@ -121,7 +134,7 @@ export function detectRateLimitError(text, now = Date.now()) {
|
|
|
121
134
|
}
|
|
122
135
|
return { isRateLimited: false, retryAfterMs: null, rawMatch: null };
|
|
123
136
|
}
|
|
124
|
-
const DEFAULT_COOLDOWN_MS = 60_000;
|
|
137
|
+
export const DEFAULT_COOLDOWN_MS = 60_000;
|
|
125
138
|
export function computeCooldownUntil(retryAfterMs, defaultMs = DEFAULT_COOLDOWN_MS, now = Date.now()) {
|
|
126
139
|
const ms = retryAfterMs != null && retryAfterMs > 0 ? retryAfterMs : defaultMs;
|
|
127
140
|
return new Date(now + ms).toISOString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorParsing.js","sourceRoot":"","sources":["../../../src/shared/quota/errorParsing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"errorParsing.js","sourceRoot":"","sources":["../../../src/shared/quota/errorParsing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-session fixed-window QuotaSource.
|
|
3
|
+
*
|
|
4
|
+
* Models a host *account* usage cap (e.g. Claude Code's "You've hit your session
|
|
5
|
+
* limit · resets 3:30pm") as a fixed window that opens again at a stated reset.
|
|
6
|
+
* Unlike the sliding-window learned source, the host session limit is a hard
|
|
7
|
+
* wall the operator account hits — there is no per-request budget to learn, only
|
|
8
|
+
* a binary "open / paused-until-reset" state plus a throttle band as the window
|
|
9
|
+
* fills.
|
|
10
|
+
*
|
|
11
|
+
* Design contract (CP-BLOCK-IMPL-host-session-quota):
|
|
12
|
+
*
|
|
13
|
+
* - **Channel isolation (CE-003).** A session limit is recorded ONLY from the
|
|
14
|
+
* worker ERROR / STATUS channel via {@link detectRateLimitFromChannel}. The
|
|
15
|
+
* consumed AuditResult content is never inspected, so a healthy result that
|
|
16
|
+
* merely quotes a limit string cannot pause the run.
|
|
17
|
+
* - **Throttle before the wall.** The snapshot exposes `remaining_pct` so the
|
|
18
|
+
* scheduler's existing LOW / CRITICAL bands throttle the wave BEFORE the
|
|
19
|
+
* account is fully exhausted, rather than only reacting after a hard 429.
|
|
20
|
+
* - **Auto-pause / auto-resume.** Recording a limit sets `cooldown_until` to the
|
|
21
|
+
* parsed reset (next-future-occurrence for clock times; DEFAULT_COOLDOWN_MS
|
|
22
|
+
* when unparseable). Once an injected `now` passes the reset the source
|
|
23
|
+
* auto-resumes (snapshot reports the window open again).
|
|
24
|
+
* - **Bounded re-limit escalation (no livelock).** Re-queuing the same packet
|
|
25
|
+
* non-consumingly is fine, but an unresettable / clock-skewed limit that keeps
|
|
26
|
+
* re-tripping for the SAME packet must not loop forever. After
|
|
27
|
+
* `maxConsecutiveReLimits` cycles (or a cumulative wall) the source ESCALATES
|
|
28
|
+
* to a terminal hard failure surfaced to the operator (structured stderr +
|
|
29
|
+
* run-ledger), and the caller stops re-queuing that packet.
|
|
30
|
+
* - **Own-provider self-monitoring only.** The source keys off the
|
|
31
|
+
* provider/model it owns; it never reasons about other providers' quota and
|
|
32
|
+
* never overwrites learned (sliding-window) limits.
|
|
33
|
+
*
|
|
34
|
+
* This module owns only the host-session window + escalation bookkeeping; the
|
|
35
|
+
* non-consuming re-queue itself is performed by the rolling engine
|
|
36
|
+
* ({@link dropProvider}), which moves in-flight packets back to `pending_tokens`
|
|
37
|
+
* without ever marking them consumed.
|
|
38
|
+
*/
|
|
39
|
+
import type { QuotaProbeResult, QuotaSource, QuotaUsageSnapshot } from "./quotaSource.js";
|
|
40
|
+
import { type WorkerOutputChannel } from "./errorParsing.js";
|
|
41
|
+
export declare const HOST_SESSION_QUOTA_SOURCE_NAME = "host_session";
|
|
42
|
+
/** Default number of consecutive non-consuming re-limits of the SAME packet before escalating. */
|
|
43
|
+
export declare const DEFAULT_MAX_CONSECUTIVE_RE_LIMITS = 3;
|
|
44
|
+
/** Injected clock — defaults to the system clock, overridable in tests. */
|
|
45
|
+
export type NowFn = () => number;
|
|
46
|
+
export interface HostSessionEscalation {
|
|
47
|
+
/** Packet whose repeated re-limit tripped the bound. */
|
|
48
|
+
packet_id: string;
|
|
49
|
+
/** How many consecutive non-consuming re-limits were observed for it. */
|
|
50
|
+
consecutive_re_limits: number;
|
|
51
|
+
/** Cumulative wall (ms) spent paused on this packet across those cycles. */
|
|
52
|
+
cumulative_wall_ms: number;
|
|
53
|
+
/** Human-readable reason surfaced to the operator. */
|
|
54
|
+
reason: string;
|
|
55
|
+
/** ISO timestamp of the escalation. */
|
|
56
|
+
escalated_at: string;
|
|
57
|
+
}
|
|
58
|
+
export interface HostSessionLimitEvent {
|
|
59
|
+
/** Whether a session limit was recorded (false → input was not a session limit on this channel). */
|
|
60
|
+
recorded: boolean;
|
|
61
|
+
/** ISO cooldown the window is paused until, when recorded. */
|
|
62
|
+
cooldown_until: string | null;
|
|
63
|
+
/**
|
|
64
|
+
* Set when this re-limit of the same packet crossed the bound. When non-null
|
|
65
|
+
* the caller MUST stop re-queuing the packet and surface the escalation to the
|
|
66
|
+
* operator instead of re-dispatching into the wall.
|
|
67
|
+
*/
|
|
68
|
+
escalation: HostSessionEscalation | null;
|
|
69
|
+
}
|
|
70
|
+
export interface HostSessionQuotaSourceOptions {
|
|
71
|
+
/** Provider/model key this source self-monitors (own-provider only). */
|
|
72
|
+
providerModelKey: string;
|
|
73
|
+
/** Injected clock for deterministic tests. */
|
|
74
|
+
now?: NowFn;
|
|
75
|
+
/** Cycles of consecutive same-packet re-limits tolerated before escalation. */
|
|
76
|
+
maxConsecutiveReLimits?: number;
|
|
77
|
+
/** Cumulative paused wall (ms) tolerated for one packet before escalation. */
|
|
78
|
+
maxCumulativeWallMs?: number;
|
|
79
|
+
/** Fallback cooldown when the reset is unparseable. */
|
|
80
|
+
defaultCooldownMs?: number;
|
|
81
|
+
/**
|
|
82
|
+
* Sink for the structured operator surface (stderr + run-ledger). Defaults to
|
|
83
|
+
* a single JSON line on stderr; tests inject a capture. Never throws — an
|
|
84
|
+
* observability failure must not abort a dispatch run.
|
|
85
|
+
*/
|
|
86
|
+
onEscalation?: (escalation: HostSessionEscalation) => void;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Fixed-window host-session QuotaSource. Stateful: it remembers the active
|
|
90
|
+
* cooldown and the per-packet re-limit count so the bounded-escalation guard can
|
|
91
|
+
* fire. Conforms to the shared {@link QuotaSource} contract.
|
|
92
|
+
*/
|
|
93
|
+
export declare class HostSessionQuotaSource implements QuotaSource {
|
|
94
|
+
readonly name = "host_session";
|
|
95
|
+
private readonly providerModelKey;
|
|
96
|
+
private readonly now;
|
|
97
|
+
private readonly maxConsecutiveReLimits;
|
|
98
|
+
private readonly maxCumulativeWallMs;
|
|
99
|
+
private readonly defaultCooldownMs;
|
|
100
|
+
private readonly onEscalation;
|
|
101
|
+
/** Epoch ms the window is paused until, or null when open. */
|
|
102
|
+
private cooldownUntilMs;
|
|
103
|
+
/** ISO captured-at of the most recent state mutation. */
|
|
104
|
+
private capturedAt;
|
|
105
|
+
/** Per-packet re-limit tracker (only the currently-relimiting packet matters). */
|
|
106
|
+
private tracker;
|
|
107
|
+
/** Packets already escalated — a non-consuming re-queue must never re-arm them. */
|
|
108
|
+
private readonly escalated;
|
|
109
|
+
constructor(options: HostSessionQuotaSourceOptions);
|
|
110
|
+
/**
|
|
111
|
+
* True once an injected `now` has passed the recorded reset: the fixed window
|
|
112
|
+
* has reopened and the source auto-resumes.
|
|
113
|
+
*/
|
|
114
|
+
private isPaused;
|
|
115
|
+
/** ISO cooldown the window is currently paused until, or null when open. */
|
|
116
|
+
cooldownUntil(): string | null;
|
|
117
|
+
/** True when the given packet has already been escalated to a terminal failure. */
|
|
118
|
+
isEscalated(packetId: string): boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Record a worker-output line for a packet. CHANNEL-ISOLATED: a session limit
|
|
121
|
+
* is only ever recorded from the ERROR / STATUS channel; `result` text is
|
|
122
|
+
* ignored entirely (CE-003), so a healthy result quoting a limit string is a
|
|
123
|
+
* no-op (`recorded: false`, no pause).
|
|
124
|
+
*
|
|
125
|
+
* On a real limit it sets `cooldown_until` to the parsed reset and, if this is
|
|
126
|
+
* the same packet re-limiting against an unchanged window, increments the
|
|
127
|
+
* bounded counter — escalating once the bound is crossed.
|
|
128
|
+
*/
|
|
129
|
+
recordLimit(channel: WorkerOutputChannel, text: string, packetId: string): HostSessionLimitEvent;
|
|
130
|
+
queryCurrentUsage(providerModelKey: string): Promise<QuotaUsageSnapshot | null>;
|
|
131
|
+
/**
|
|
132
|
+
* Own-provider self-monitoring: only answers for the key it owns. For any other
|
|
133
|
+
* key it is `not_applicable` (no signal expected → never a degrade), so it
|
|
134
|
+
* composes with the sliding-window / learned sources without overwriting them.
|
|
135
|
+
*/
|
|
136
|
+
probeUsage(providerModelKey: string): Promise<QuotaProbeResult>;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=hostSessionQuotaSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hostSessionQuotaSource.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/hostSessionQuotaSource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,8BAA8B,iBAAiB,CAAC;AAE7D,kGAAkG;AAClG,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAOnD,2EAA2E;AAC3E,MAAM,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;AAEjC,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,oGAAoG;IACpG,QAAQ,EAAE,OAAO,CAAC;IAClB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;OAIG;IACH,UAAU,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,6BAA6B;IAC5C,wEAAwE;IACxE,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC5D;AA2BD;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,WAAW;IACxD,QAAQ,CAAC,IAAI,kBAAkC;IAE/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8C;IAE3E,8DAA8D;IAC9D,OAAO,CAAC,eAAe,CAAuB;IAC9C,yDAAyD;IACzD,OAAO,CAAC,UAAU,CAAS;IAC3B,kFAAkF;IAClF,OAAO,CAAC,OAAO,CAAkC;IACjD,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;gBAEnC,OAAO,EAAE,6BAA6B;IAWlD;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAYhB,4EAA4E;IAC5E,aAAa,IAAI,MAAM,GAAG,IAAI;IAM9B,mFAAmF;IACnF,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAItC;;;;;;;;;OASG;IACH,WAAW,CACT,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,qBAAqB;IAmElB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAIrF;;;;OAIG;IACG,UAAU,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAkBtE"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-session fixed-window QuotaSource.
|
|
3
|
+
*
|
|
4
|
+
* Models a host *account* usage cap (e.g. Claude Code's "You've hit your session
|
|
5
|
+
* limit · resets 3:30pm") as a fixed window that opens again at a stated reset.
|
|
6
|
+
* Unlike the sliding-window learned source, the host session limit is a hard
|
|
7
|
+
* wall the operator account hits — there is no per-request budget to learn, only
|
|
8
|
+
* a binary "open / paused-until-reset" state plus a throttle band as the window
|
|
9
|
+
* fills.
|
|
10
|
+
*
|
|
11
|
+
* Design contract (CP-BLOCK-IMPL-host-session-quota):
|
|
12
|
+
*
|
|
13
|
+
* - **Channel isolation (CE-003).** A session limit is recorded ONLY from the
|
|
14
|
+
* worker ERROR / STATUS channel via {@link detectRateLimitFromChannel}. The
|
|
15
|
+
* consumed AuditResult content is never inspected, so a healthy result that
|
|
16
|
+
* merely quotes a limit string cannot pause the run.
|
|
17
|
+
* - **Throttle before the wall.** The snapshot exposes `remaining_pct` so the
|
|
18
|
+
* scheduler's existing LOW / CRITICAL bands throttle the wave BEFORE the
|
|
19
|
+
* account is fully exhausted, rather than only reacting after a hard 429.
|
|
20
|
+
* - **Auto-pause / auto-resume.** Recording a limit sets `cooldown_until` to the
|
|
21
|
+
* parsed reset (next-future-occurrence for clock times; DEFAULT_COOLDOWN_MS
|
|
22
|
+
* when unparseable). Once an injected `now` passes the reset the source
|
|
23
|
+
* auto-resumes (snapshot reports the window open again).
|
|
24
|
+
* - **Bounded re-limit escalation (no livelock).** Re-queuing the same packet
|
|
25
|
+
* non-consumingly is fine, but an unresettable / clock-skewed limit that keeps
|
|
26
|
+
* re-tripping for the SAME packet must not loop forever. After
|
|
27
|
+
* `maxConsecutiveReLimits` cycles (or a cumulative wall) the source ESCALATES
|
|
28
|
+
* to a terminal hard failure surfaced to the operator (structured stderr +
|
|
29
|
+
* run-ledger), and the caller stops re-queuing that packet.
|
|
30
|
+
* - **Own-provider self-monitoring only.** The source keys off the
|
|
31
|
+
* provider/model it owns; it never reasons about other providers' quota and
|
|
32
|
+
* never overwrites learned (sliding-window) limits.
|
|
33
|
+
*
|
|
34
|
+
* This module owns only the host-session window + escalation bookkeeping; the
|
|
35
|
+
* non-consuming re-queue itself is performed by the rolling engine
|
|
36
|
+
* ({@link dropProvider}), which moves in-flight packets back to `pending_tokens`
|
|
37
|
+
* without ever marking them consumed.
|
|
38
|
+
*/
|
|
39
|
+
import { DEFAULT_COOLDOWN_MS, detectRateLimitFromChannel, } from "./errorParsing.js";
|
|
40
|
+
export const HOST_SESSION_QUOTA_SOURCE_NAME = "host_session";
|
|
41
|
+
/** Default number of consecutive non-consuming re-limits of the SAME packet before escalating. */
|
|
42
|
+
export const DEFAULT_MAX_CONSECUTIVE_RE_LIMITS = 3;
|
|
43
|
+
/** `remaining_pct` reported while the window is open and no limit has been seen. */
|
|
44
|
+
const WINDOW_OPEN_REMAINING_PCT = 1;
|
|
45
|
+
/** `remaining_pct` reported while the window is paused (limit active, before reset). */
|
|
46
|
+
const WINDOW_PAUSED_REMAINING_PCT = 0;
|
|
47
|
+
function emitEscalationToStderr(escalation) {
|
|
48
|
+
try {
|
|
49
|
+
process.stderr.write(JSON.stringify({
|
|
50
|
+
ts: escalation.escalated_at,
|
|
51
|
+
kind: "host_session_quota_escalation",
|
|
52
|
+
packet_id: escalation.packet_id,
|
|
53
|
+
consecutive_re_limits: escalation.consecutive_re_limits,
|
|
54
|
+
cumulative_wall_ms: escalation.cumulative_wall_ms,
|
|
55
|
+
reason: escalation.reason,
|
|
56
|
+
}) + "\n");
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Observability must never abort a run.
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Fixed-window host-session QuotaSource. Stateful: it remembers the active
|
|
64
|
+
* cooldown and the per-packet re-limit count so the bounded-escalation guard can
|
|
65
|
+
* fire. Conforms to the shared {@link QuotaSource} contract.
|
|
66
|
+
*/
|
|
67
|
+
export class HostSessionQuotaSource {
|
|
68
|
+
name = HOST_SESSION_QUOTA_SOURCE_NAME;
|
|
69
|
+
providerModelKey;
|
|
70
|
+
now;
|
|
71
|
+
maxConsecutiveReLimits;
|
|
72
|
+
maxCumulativeWallMs;
|
|
73
|
+
defaultCooldownMs;
|
|
74
|
+
onEscalation;
|
|
75
|
+
/** Epoch ms the window is paused until, or null when open. */
|
|
76
|
+
cooldownUntilMs = null;
|
|
77
|
+
/** ISO captured-at of the most recent state mutation. */
|
|
78
|
+
capturedAt;
|
|
79
|
+
/** Per-packet re-limit tracker (only the currently-relimiting packet matters). */
|
|
80
|
+
tracker = null;
|
|
81
|
+
/** Packets already escalated — a non-consuming re-queue must never re-arm them. */
|
|
82
|
+
escalated = new Set();
|
|
83
|
+
constructor(options) {
|
|
84
|
+
this.providerModelKey = options.providerModelKey;
|
|
85
|
+
this.now = options.now ?? Date.now;
|
|
86
|
+
this.maxConsecutiveReLimits =
|
|
87
|
+
options.maxConsecutiveReLimits ?? DEFAULT_MAX_CONSECUTIVE_RE_LIMITS;
|
|
88
|
+
this.maxCumulativeWallMs = options.maxCumulativeWallMs ?? null;
|
|
89
|
+
this.defaultCooldownMs = options.defaultCooldownMs ?? DEFAULT_COOLDOWN_MS;
|
|
90
|
+
this.onEscalation = options.onEscalation ?? emitEscalationToStderr;
|
|
91
|
+
this.capturedAt = new Date(this.now()).toISOString();
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* True once an injected `now` has passed the recorded reset: the fixed window
|
|
95
|
+
* has reopened and the source auto-resumes.
|
|
96
|
+
*/
|
|
97
|
+
isPaused() {
|
|
98
|
+
if (this.cooldownUntilMs == null)
|
|
99
|
+
return false;
|
|
100
|
+
if (this.now() >= this.cooldownUntilMs) {
|
|
101
|
+
// Auto-resume: window reopened, clear the pause + the re-limit tracker so
|
|
102
|
+
// the next limit (a genuinely new exhaustion) starts a fresh count.
|
|
103
|
+
this.cooldownUntilMs = null;
|
|
104
|
+
this.tracker = null;
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
/** ISO cooldown the window is currently paused until, or null when open. */
|
|
110
|
+
cooldownUntil() {
|
|
111
|
+
return this.isPaused() && this.cooldownUntilMs != null
|
|
112
|
+
? new Date(this.cooldownUntilMs).toISOString()
|
|
113
|
+
: null;
|
|
114
|
+
}
|
|
115
|
+
/** True when the given packet has already been escalated to a terminal failure. */
|
|
116
|
+
isEscalated(packetId) {
|
|
117
|
+
return this.escalated.has(packetId);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Record a worker-output line for a packet. CHANNEL-ISOLATED: a session limit
|
|
121
|
+
* is only ever recorded from the ERROR / STATUS channel; `result` text is
|
|
122
|
+
* ignored entirely (CE-003), so a healthy result quoting a limit string is a
|
|
123
|
+
* no-op (`recorded: false`, no pause).
|
|
124
|
+
*
|
|
125
|
+
* On a real limit it sets `cooldown_until` to the parsed reset and, if this is
|
|
126
|
+
* the same packet re-limiting against an unchanged window, increments the
|
|
127
|
+
* bounded counter — escalating once the bound is crossed.
|
|
128
|
+
*/
|
|
129
|
+
recordLimit(channel, text, packetId) {
|
|
130
|
+
const nowMs = this.now();
|
|
131
|
+
const detection = detectRateLimitFromChannel(channel, text, nowMs);
|
|
132
|
+
if (!detection.isRateLimited) {
|
|
133
|
+
return { recorded: false, cooldown_until: null, escalation: null };
|
|
134
|
+
}
|
|
135
|
+
const cooldownMs = detection.retryAfterMs != null && detection.retryAfterMs > 0
|
|
136
|
+
? detection.retryAfterMs
|
|
137
|
+
: this.defaultCooldownMs;
|
|
138
|
+
const resetMs = nowMs + cooldownMs;
|
|
139
|
+
// Track consecutive re-limits of the SAME packet. A re-limit is "the same"
|
|
140
|
+
// when the same packet trips again before the window it last set has
|
|
141
|
+
// reopened — i.e. an unresettable / clock-skewed wall, not normal progress.
|
|
142
|
+
if (this.tracker && this.tracker.packet_id === packetId) {
|
|
143
|
+
this.tracker.consecutive_re_limits += 1;
|
|
144
|
+
this.tracker.cumulative_wall_ms += cooldownMs;
|
|
145
|
+
this.tracker.last_reset_ms = resetMs;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this.tracker = {
|
|
149
|
+
packet_id: packetId,
|
|
150
|
+
consecutive_re_limits: 1,
|
|
151
|
+
cumulative_wall_ms: cooldownMs,
|
|
152
|
+
last_reset_ms: resetMs,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
this.cooldownUntilMs = resetMs;
|
|
156
|
+
this.capturedAt = new Date(nowMs).toISOString();
|
|
157
|
+
const overCycleBound = this.tracker.consecutive_re_limits > this.maxConsecutiveReLimits;
|
|
158
|
+
const overWallBound = this.maxCumulativeWallMs != null &&
|
|
159
|
+
this.tracker.cumulative_wall_ms > this.maxCumulativeWallMs;
|
|
160
|
+
if (overCycleBound || overWallBound) {
|
|
161
|
+
const escalation = {
|
|
162
|
+
packet_id: packetId,
|
|
163
|
+
consecutive_re_limits: this.tracker.consecutive_re_limits,
|
|
164
|
+
cumulative_wall_ms: this.tracker.cumulative_wall_ms,
|
|
165
|
+
reason: overCycleBound
|
|
166
|
+
? `Host session limit re-tripped ${this.tracker.consecutive_re_limits} times for the same packet ` +
|
|
167
|
+
`(bound ${this.maxConsecutiveReLimits}); the reset is not clearing — escalating to operator instead of livelocking.`
|
|
168
|
+
: `Host session limit held the same packet paused for ${this.tracker.cumulative_wall_ms}ms cumulative ` +
|
|
169
|
+
`(bound ${this.maxCumulativeWallMs}ms); escalating to operator instead of livelocking.`,
|
|
170
|
+
escalated_at: new Date(nowMs).toISOString(),
|
|
171
|
+
};
|
|
172
|
+
this.escalated.add(packetId);
|
|
173
|
+
this.tracker = null;
|
|
174
|
+
this.onEscalation(escalation);
|
|
175
|
+
return {
|
|
176
|
+
recorded: true,
|
|
177
|
+
cooldown_until: new Date(resetMs).toISOString(),
|
|
178
|
+
escalation,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
recorded: true,
|
|
183
|
+
cooldown_until: new Date(resetMs).toISOString(),
|
|
184
|
+
escalation: null,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
async queryCurrentUsage(providerModelKey) {
|
|
188
|
+
return (await this.probeUsage(providerModelKey)).snapshot;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Own-provider self-monitoring: only answers for the key it owns. For any other
|
|
192
|
+
* key it is `not_applicable` (no signal expected → never a degrade), so it
|
|
193
|
+
* composes with the sliding-window / learned sources without overwriting them.
|
|
194
|
+
*/
|
|
195
|
+
async probeUsage(providerModelKey) {
|
|
196
|
+
if (providerModelKey !== this.providerModelKey) {
|
|
197
|
+
return { snapshot: null, status: "not_applicable" };
|
|
198
|
+
}
|
|
199
|
+
const paused = this.isPaused();
|
|
200
|
+
const snapshot = {
|
|
201
|
+
remaining_pct: paused ? WINDOW_PAUSED_REMAINING_PCT : WINDOW_OPEN_REMAINING_PCT,
|
|
202
|
+
reset_at: paused && this.cooldownUntilMs != null
|
|
203
|
+
? new Date(this.cooldownUntilMs).toISOString()
|
|
204
|
+
: null,
|
|
205
|
+
requests_remaining: null,
|
|
206
|
+
tokens_remaining: null,
|
|
207
|
+
captured_at: this.capturedAt,
|
|
208
|
+
source: this.name,
|
|
209
|
+
};
|
|
210
|
+
return { snapshot, status: "ok" };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=hostSessionQuotaSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hostSessionQuotaSource.js","sourceRoot":"","sources":["../../../src/shared/quota/hostSessionQuotaSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { AuditFindingsReport, Finding } from "../types/finding.js";
|
|
2
|
+
/**
|
|
3
|
+
* Build the canonical `audit-findings.json` machine contract over `findings`.
|
|
4
|
+
* The summary is derived deterministically; no work-blocks are emitted (the
|
|
5
|
+
* deliverable is a flat, re-consumable finding set). Stamped with the same
|
|
6
|
+
* `contract_version` the auditor emits, so `validateAuditFindingsReport` accepts
|
|
7
|
+
* it and the remediator's structured fast-path consumes it losslessly.
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildAuditFindingsDeliverable(findings: readonly Finding[]): AuditFindingsReport;
|
|
10
|
+
/**
|
|
11
|
+
* Render the `audit-report.md` human deliverable for `findings` using the ONE
|
|
12
|
+
* shared finding renderer (parity with the auditor's report). `title` and
|
|
13
|
+
* `intro` let the caller frame the deliverable (e.g. "leftovers from an
|
|
14
|
+
* autonomous run").
|
|
15
|
+
*/
|
|
16
|
+
export declare function renderAuditDeliverableMarkdown(findings: readonly Finding[], options?: {
|
|
17
|
+
title?: string;
|
|
18
|
+
intro?: string;
|
|
19
|
+
}): string;
|
|
20
|
+
export interface AuditDeliverablePair {
|
|
21
|
+
/** The canonical machine contract (audit-findings.json content). */
|
|
22
|
+
findings_report: AuditFindingsReport;
|
|
23
|
+
/** The human render (audit-report.md content). */
|
|
24
|
+
report_markdown: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build BOTH halves of the re-consumable audit deliverable pair at once. The
|
|
28
|
+
* JSON is the source of truth; the markdown is its render. The caller writes
|
|
29
|
+
* `findings_report` to `audit-findings.json` and `report_markdown` to
|
|
30
|
+
* `audit-report.md`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildAuditDeliverablePair(findings: readonly Finding[], options?: {
|
|
33
|
+
title?: string;
|
|
34
|
+
intro?: string;
|
|
35
|
+
}): AuditDeliverablePair;
|
|
36
|
+
//# sourceMappingURL=auditDeliverable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditDeliverable.d.ts","sourceRoot":"","sources":["../../../src/shared/reporting/auditDeliverable.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,mBAAmB,EAEnB,OAAO,EAER,MAAM,qBAAqB,CAAC;AAmB7B;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,mBAAmB,CAgBrB;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,MAAM,CAcR;AAED,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,eAAe,EAAE,mBAAmB,CAAC;IACrC,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,oBAAoB,CAKtB"}
|