audit-tools 0.30.2 → 0.30.4

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.
Files changed (141) hide show
  1. package/dist/audit/cli/auditStep.d.ts.map +1 -1
  2. package/dist/audit/cli/auditStep.js +24 -13
  3. package/dist/audit/cli/auditStep.js.map +1 -1
  4. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  5. package/dist/audit/cli/nextStepHelpers.js +11 -6
  6. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  7. package/dist/audit/cli/prompts.d.ts.map +1 -1
  8. package/dist/audit/cli/prompts.js +3 -1
  9. package/dist/audit/cli/prompts.js.map +1 -1
  10. package/dist/audit/cli/reviewRun.d.ts.map +1 -1
  11. package/dist/audit/cli/reviewRun.js +9 -4
  12. package/dist/audit/cli/reviewRun.js.map +1 -1
  13. package/dist/audit/contracts/workerSchemas.d.ts +22 -4
  14. package/dist/audit/contracts/workerSchemas.d.ts.map +1 -1
  15. package/dist/audit/contracts/wrapperResponse.d.ts +12 -12
  16. package/dist/audit/orchestrator/artifactFreshness.d.ts +2 -1
  17. package/dist/audit/orchestrator/artifactFreshness.d.ts.map +1 -1
  18. package/dist/audit/orchestrator/artifactFreshness.js +5 -15
  19. package/dist/audit/orchestrator/artifactFreshness.js.map +1 -1
  20. package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
  21. package/dist/audit/orchestrator/executorRunners.js +10 -9
  22. package/dist/audit/orchestrator/executorRunners.js.map +1 -1
  23. package/dist/audit/orchestrator/ingestionExecutors.d.ts.map +1 -1
  24. package/dist/audit/orchestrator/ingestionExecutors.js +5 -1
  25. package/dist/audit/orchestrator/ingestionExecutors.js.map +1 -1
  26. package/dist/audit/orchestrator/intentCheckpointGate.d.ts +129 -0
  27. package/dist/audit/orchestrator/intentCheckpointGate.d.ts.map +1 -0
  28. package/dist/audit/orchestrator/intentCheckpointGate.js +193 -0
  29. package/dist/audit/orchestrator/intentCheckpointGate.js.map +1 -0
  30. package/dist/audit/orchestrator/ledger.d.ts +30 -0
  31. package/dist/audit/orchestrator/ledger.d.ts.map +1 -0
  32. package/dist/audit/orchestrator/ledger.js +126 -0
  33. package/dist/audit/orchestrator/ledger.js.map +1 -0
  34. package/dist/audit/orchestrator/nextStep.d.ts +11 -29
  35. package/dist/audit/orchestrator/nextStep.d.ts.map +1 -1
  36. package/dist/audit/orchestrator/nextStep.js +11 -29
  37. package/dist/audit/orchestrator/nextStep.js.map +1 -1
  38. package/dist/audit/orchestrator/resultBaseline.d.ts +82 -0
  39. package/dist/audit/orchestrator/resultBaseline.d.ts.map +1 -0
  40. package/dist/audit/orchestrator/resultBaseline.js +79 -0
  41. package/dist/audit/orchestrator/resultBaseline.js.map +1 -0
  42. package/dist/audit/quota/index.d.ts +17 -12
  43. package/dist/audit/quota/index.d.ts.map +1 -1
  44. package/dist/audit/types/artifactMetadata.d.ts +9 -0
  45. package/dist/audit/types/artifactMetadata.d.ts.map +1 -1
  46. package/dist/audit/types.d.ts +13 -4
  47. package/dist/audit/types.d.ts.map +1 -1
  48. package/dist/audit/types.js +8 -0
  49. package/dist/audit/types.js.map +1 -1
  50. package/dist/remediate/steps/dispatch.d.ts.map +1 -1
  51. package/dist/remediate/steps/dispatch.js +16 -22
  52. package/dist/remediate/steps/dispatch.js.map +1 -1
  53. package/dist/remediate/steps/nextStep.d.ts +11 -23
  54. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  55. package/dist/remediate/steps/nextStep.js +49 -43
  56. package/dist/remediate/steps/nextStep.js.map +1 -1
  57. package/dist/shared/contentKey.d.ts +83 -0
  58. package/dist/shared/contentKey.d.ts.map +1 -0
  59. package/dist/shared/contentKey.js +163 -0
  60. package/dist/shared/contentKey.js.map +1 -0
  61. package/dist/shared/dispatch/rollingDispatch.d.ts.map +1 -1
  62. package/dist/shared/dispatch/rollingDispatch.js +7 -3
  63. package/dist/shared/dispatch/rollingDispatch.js.map +1 -1
  64. package/dist/shared/friction/captureFrictionEvent.d.ts +50 -0
  65. package/dist/shared/friction/captureFrictionEvent.d.ts.map +1 -0
  66. package/dist/shared/friction/captureFrictionEvent.js +34 -0
  67. package/dist/shared/friction/captureFrictionEvent.js.map +1 -0
  68. package/dist/shared/friction/triage.d.ts +126 -0
  69. package/dist/shared/friction/triage.d.ts.map +1 -0
  70. package/dist/shared/friction/triage.js +149 -0
  71. package/dist/shared/friction/triage.js.map +1 -0
  72. package/dist/shared/index.d.ts +15 -3
  73. package/dist/shared/index.d.ts.map +1 -1
  74. package/dist/shared/index.js +11 -3
  75. package/dist/shared/index.js.map +1 -1
  76. package/dist/shared/io/auditToolsPaths.d.ts +9 -0
  77. package/dist/shared/io/auditToolsPaths.d.ts.map +1 -1
  78. package/dist/shared/io/auditToolsPaths.js +11 -0
  79. package/dist/shared/io/auditToolsPaths.js.map +1 -1
  80. package/dist/shared/io/frictionCapture.d.ts +2 -0
  81. package/dist/shared/io/frictionCapture.d.ts.map +1 -1
  82. package/dist/shared/io/frictionCapture.js +1 -1
  83. package/dist/shared/io/frictionCapture.js.map +1 -1
  84. package/dist/shared/quota/apiPool.d.ts +1 -1
  85. package/dist/shared/quota/apiPool.d.ts.map +1 -1
  86. package/dist/shared/quota/apiPool.js +29 -7
  87. package/dist/shared/quota/apiPool.js.map +1 -1
  88. package/dist/shared/quota/capacity.d.ts +19 -4
  89. package/dist/shared/quota/capacity.d.ts.map +1 -1
  90. package/dist/shared/quota/capacity.js +5 -0
  91. package/dist/shared/quota/capacity.js.map +1 -1
  92. package/dist/shared/quota/claudeOAuthQuotaSource.d.ts +8 -0
  93. package/dist/shared/quota/claudeOAuthQuotaSource.d.ts.map +1 -1
  94. package/dist/shared/quota/claudeOAuthQuotaSource.js +15 -0
  95. package/dist/shared/quota/claudeOAuthQuotaSource.js.map +1 -1
  96. package/dist/shared/quota/codexQuotaSource.d.ts +3 -0
  97. package/dist/shared/quota/codexQuotaSource.d.ts.map +1 -1
  98. package/dist/shared/quota/codexQuotaSource.js +8 -0
  99. package/dist/shared/quota/codexQuotaSource.js.map +1 -1
  100. package/dist/shared/quota/compositeQuotaSource.d.ts +22 -0
  101. package/dist/shared/quota/compositeQuotaSource.d.ts.map +1 -1
  102. package/dist/shared/quota/compositeQuotaSource.js +42 -0
  103. package/dist/shared/quota/compositeQuotaSource.js.map +1 -1
  104. package/dist/shared/quota/coverage.d.ts +45 -0
  105. package/dist/shared/quota/coverage.d.ts.map +1 -0
  106. package/dist/shared/quota/coverage.js +77 -0
  107. package/dist/shared/quota/coverage.js.map +1 -0
  108. package/dist/shared/quota/httpQuotaSource.d.ts +24 -1
  109. package/dist/shared/quota/httpQuotaSource.d.ts.map +1 -1
  110. package/dist/shared/quota/httpQuotaSource.js +46 -6
  111. package/dist/shared/quota/httpQuotaSource.js.map +1 -1
  112. package/dist/shared/quota/quotaCoverageNudge.d.ts +26 -0
  113. package/dist/shared/quota/quotaCoverageNudge.d.ts.map +1 -0
  114. package/dist/shared/quota/quotaCoverageNudge.js +82 -0
  115. package/dist/shared/quota/quotaCoverageNudge.js.map +1 -0
  116. package/dist/shared/quota/quotaSource.d.ts +25 -2
  117. package/dist/shared/quota/quotaSource.d.ts.map +1 -1
  118. package/dist/shared/quota/quotaSource.js +15 -0
  119. package/dist/shared/quota/quotaSource.js.map +1 -1
  120. package/dist/shared/quota/scheduler.d.ts +10 -2
  121. package/dist/shared/quota/scheduler.d.ts.map +1 -1
  122. package/dist/shared/quota/scheduler.js +12 -3
  123. package/dist/shared/quota/scheduler.js.map +1 -1
  124. package/dist/shared/repair/emitValidateRepair.d.ts +124 -0
  125. package/dist/shared/repair/emitValidateRepair.d.ts.map +1 -0
  126. package/dist/shared/repair/emitValidateRepair.js +179 -0
  127. package/dist/shared/repair/emitValidateRepair.js.map +1 -0
  128. package/dist/shared/repair/index.d.ts +8 -0
  129. package/dist/shared/repair/index.d.ts.map +1 -0
  130. package/dist/shared/repair/index.js +2 -0
  131. package/dist/shared/repair/index.js.map +1 -0
  132. package/dist/shared/stableStringify.d.ts +14 -0
  133. package/dist/shared/stableStringify.d.ts.map +1 -0
  134. package/dist/shared/stableStringify.js +28 -0
  135. package/dist/shared/stableStringify.js.map +1 -0
  136. package/dist/shared/types/sessionConfig.d.ts +16 -0
  137. package/dist/shared/types/sessionConfig.d.ts.map +1 -1
  138. package/dist/shared/types/sessionConfig.js.map +1 -1
  139. package/package.json +1 -1
  140. package/schemas/audit_result.schema.json +9 -0
  141. package/schemas/audit_results.schema.json +9 -0
@@ -59,6 +59,8 @@ export declare abstract class BaseHttpQuotaSource implements QuotaSource {
59
59
  constructor(options: HttpQuotaSourceOptions, defaultUserAgent: string);
60
60
  /** Providers this source answers for. A non-matching key returns null (no I/O). */
61
61
  protected abstract handlesProvider(provider: string): boolean;
62
+ /** A proactive HTTP source covers exactly the providers it handles (no creds read). */
63
+ coversProvider(provider: string): boolean;
62
64
  /**
63
65
  * Provider-specific: read the local credential, call the endpoint, and map the
64
66
  * response to a snapshot. Return null to degrade (missing/expired creds,
@@ -74,9 +76,25 @@ export declare abstract class BaseHttpQuotaSource implements QuotaSource {
74
76
  * Both paths return through here so the cache and the status stay consistent.
75
77
  */
76
78
  probeUsage(providerModelKey: string): Promise<QuotaProbeResult>;
79
+ /**
80
+ * Resolve the account id from the source's credential (local, no network).
81
+ * Gated by provider; subclasses that key per-account override
82
+ * {@link readAccountId}. Default null = provider carries no account discriminator.
83
+ */
84
+ resolveAccountId(providerModelKey: string): Promise<string | null>;
85
+ /** Read this credential's account id (local file/JWT read), or null. Override per provider. */
86
+ protected readAccountId(_provider: string): string | null;
77
87
  /** Context for the reusable `fetchXxxUsage` helpers. */
78
88
  protected fetchContext(): UsageFetchContext;
79
89
  protected shouldSkipNetwork(): boolean;
90
+ /**
91
+ * Hermeticity guard for the LOCAL credential read behind {@link readAccountId}:
92
+ * reading the real machine credential under a test runner is machine-dependent,
93
+ * so skip it when the source points at its DEFAULT credential path (an explicitly
94
+ * injected path — a test fixture or a per-source `credentials_path` — is always
95
+ * honored). The kill-switch disables it outright.
96
+ */
97
+ protected shouldSkipCredentialRead(usingDefaultCredentialsPath: boolean): boolean;
80
98
  }
81
99
  /** GET/POST a JSON endpoint; returns parsed JSON, or null on non-200/network/parse failure. */
82
100
  export declare function fetchJsonOrNull(fetchImpl: FetchLike, url: string, init: {
@@ -84,9 +102,14 @@ export declare function fetchJsonOrNull(fetchImpl: FetchLike, url: string, init:
84
102
  headers?: Record<string, string>;
85
103
  body?: string;
86
104
  }): Promise<unknown | null>;
87
- /** Splits a `provider/model` quota key; `provider/*` and bare `provider` → model null. */
105
+ /**
106
+ * Splits a `provider[#account]/model` quota key into its parts. `provider/*` and a
107
+ * bare `provider` → model null; no `#` → account null. The model tail may contain
108
+ * `/` (split on the FIRST `/` only); provider + optional account live in the head.
109
+ */
88
110
  export declare function parseProviderModelKey(key: string): {
89
111
  provider: string;
112
+ account: string | null;
90
113
  model: string | null;
91
114
  };
92
115
  /** Clamp to a 0–1 fraction (the scheduler's `remaining_pct` scale). */
@@ -1 +1 @@
1
- {"version":3,"file":"httpQuotaSource.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/httpQuotaSource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpQuotaSource.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/httpQuotaSource.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,10 @@ export class BaseHttpQuotaSource {
19
19
  this.cacheTtlMs = options.cacheTtlMs ?? DEFAULT_CACHE_TTL_MS;
20
20
  this.userAgent = options.userAgent ?? defaultUserAgent;
21
21
  }
22
+ /** A proactive HTTP source covers exactly the providers it handles (no creds read). */
23
+ coversProvider(provider) {
24
+ return this.handlesProvider(provider);
25
+ }
22
26
  async queryCurrentUsage(providerModelKey) {
23
27
  return (await this.probeUsage(providerModelKey)).snapshot;
24
28
  }
@@ -53,6 +57,21 @@ export class BaseHttpQuotaSource {
53
57
  this.cache.set(providerModelKey, result);
54
58
  return { snapshot, status: classifyProbe(result) };
55
59
  }
60
+ /**
61
+ * Resolve the account id from the source's credential (local, no network).
62
+ * Gated by provider; subclasses that key per-account override
63
+ * {@link readAccountId}. Default null = provider carries no account discriminator.
64
+ */
65
+ async resolveAccountId(providerModelKey) {
66
+ const { provider } = parseProviderModelKey(providerModelKey);
67
+ if (!this.handlesProvider(provider))
68
+ return null;
69
+ return this.readAccountId(provider);
70
+ }
71
+ /** Read this credential's account id (local file/JWT read), or null. Override per provider. */
72
+ readAccountId(_provider) {
73
+ return null;
74
+ }
56
75
  /** Context for the reusable `fetchXxxUsage` helpers. */
57
76
  fetchContext() {
58
77
  return { fetchImpl: this.fetchImpl, now: this.now, userAgent: this.userAgent };
@@ -64,6 +83,20 @@ export class BaseHttpQuotaSource {
64
83
  return true;
65
84
  return false;
66
85
  }
86
+ /**
87
+ * Hermeticity guard for the LOCAL credential read behind {@link readAccountId}:
88
+ * reading the real machine credential under a test runner is machine-dependent,
89
+ * so skip it when the source points at its DEFAULT credential path (an explicitly
90
+ * injected path — a test fixture or a per-source `credentials_path` — is always
91
+ * honored). The kill-switch disables it outright.
92
+ */
93
+ shouldSkipCredentialRead(usingDefaultCredentialsPath) {
94
+ if (isTruthyEnv(process.env.AUDIT_TOOLS_DISABLE_PROACTIVE_QUOTA))
95
+ return true;
96
+ if (usingDefaultCredentialsPath && isUnderTestRunner())
97
+ return true;
98
+ return false;
99
+ }
67
100
  }
68
101
  /** GET/POST a JSON endpoint; returns parsed JSON, or null on non-200/network/parse failure. */
69
102
  export async function fetchJsonOrNull(fetchImpl, url, init) {
@@ -83,14 +116,21 @@ export async function fetchJsonOrNull(fetchImpl, url, init) {
83
116
  return null;
84
117
  }
85
118
  }
86
- /** Splits a `provider/model` quota key; `provider/*` and bare `provider` → model null. */
119
+ /**
120
+ * Splits a `provider[#account]/model` quota key into its parts. `provider/*` and a
121
+ * bare `provider` → model null; no `#` → account null. The model tail may contain
122
+ * `/` (split on the FIRST `/` only); provider + optional account live in the head.
123
+ */
87
124
  export function parseProviderModelKey(key) {
88
125
  const idx = key.indexOf("/");
89
- if (idx < 0)
90
- return { provider: key, model: null };
91
- const provider = key.slice(0, idx);
92
- const rest = key.slice(idx + 1);
93
- return { provider, model: rest === "" || rest === "*" ? null : rest };
126
+ const head = idx < 0 ? key : key.slice(0, idx);
127
+ const rest = idx < 0 ? "" : key.slice(idx + 1);
128
+ const model = idx < 0 || rest === "" || rest === "*" ? null : rest;
129
+ const hashIdx = head.indexOf("#");
130
+ if (hashIdx < 0)
131
+ return { provider: head, account: null, model };
132
+ const account = head.slice(hashIdx + 1);
133
+ return { provider: head.slice(0, hashIdx), account: account === "" ? null : account, model };
94
134
  }
95
135
  /** Clamp to a 0–1 fraction (the scheduler's `remaining_pct` scale). */
96
136
  export function clampFraction(n) {
@@ -1 +1 @@
1
- {"version":3,"file":"httpQuotaSource.js","sourceRoot":"","sources":["../../../src/shared/quota/httpQuotaSource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpQuotaSource.js","sourceRoot":"","sources":["../../../src/shared/quota/httpQuotaSource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Gate the full unestablished-quota nudge to ONCE per environment: the first time
3
+ * an unsupported host provider is seen in an artifact dir, emit the full two-path
4
+ * nudge ({@link renderUnestablishedQuotaNudge}); afterward callers carry only the
5
+ * terse `quota_coverage: unestablished` status. State is a per-provider marker file
6
+ * in the artifact dir, so it survives across steps/runs of the same run dir.
7
+ *
8
+ * Returns true exactly once per (artifactDir, provider) — it writes the marker on
9
+ * the first true. All fs failures are swallowed: a missing/unwritable artifact dir
10
+ * degrades to "emit" (better a repeated nudge than a silently-swallowed gap).
11
+ */
12
+ export declare function shouldEmitQuotaNudge(artifactDir: string, provider: string): boolean;
13
+ /** Marker filename for a provider, with non-filename-safe chars folded to `-`. */
14
+ export declare function quotaNudgeMarkerName(provider: string): string;
15
+ /**
16
+ * Build the dispatch-prompt quota-coverage nudge block from a written
17
+ * `dispatch-quota.json`: for each DISTINCT provider whose pool reported
18
+ * `quota_coverage: "unestablished"`, emit the full two-path nudge the FIRST time
19
+ * (once per environment, via {@link shouldEmitQuotaNudge}) and a terse one-liner
20
+ * after. Returns "" when the file is absent/unreadable or no provider is
21
+ * unestablished — so a supported environment adds nothing to the prompt. Shared so
22
+ * both orchestrators surface the identical block (no drift). Reads the contract's
23
+ * `capacity_pools[]` (each `{ pool_id, quota_coverage }`) defensively.
24
+ */
25
+ export declare function renderQuotaCoverageNudge(quotaPath: string | null | undefined, artifactsDir: string): string;
26
+ //# sourceMappingURL=quotaCoverageNudge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quotaCoverageNudge.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/quotaCoverageNudge.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAcnF;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,YAAY,EAAE,MAAM,GACnB,MAAM,CA6BR"}
@@ -0,0 +1,82 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { parseProviderModelKey } from "./httpQuotaSource.js";
4
+ import { renderUnestablishedQuotaNudge } from "./coverage.js";
5
+ /**
6
+ * Gate the full unestablished-quota nudge to ONCE per environment: the first time
7
+ * an unsupported host provider is seen in an artifact dir, emit the full two-path
8
+ * nudge ({@link renderUnestablishedQuotaNudge}); afterward callers carry only the
9
+ * terse `quota_coverage: unestablished` status. State is a per-provider marker file
10
+ * in the artifact dir, so it survives across steps/runs of the same run dir.
11
+ *
12
+ * Returns true exactly once per (artifactDir, provider) — it writes the marker on
13
+ * the first true. All fs failures are swallowed: a missing/unwritable artifact dir
14
+ * degrades to "emit" (better a repeated nudge than a silently-swallowed gap).
15
+ */
16
+ export function shouldEmitQuotaNudge(artifactDir, provider) {
17
+ const markerPath = path.join(artifactDir, quotaNudgeMarkerName(provider));
18
+ try {
19
+ if (existsSync(markerPath))
20
+ return false;
21
+ }
22
+ catch {
23
+ return true; // can't tell → emit
24
+ }
25
+ try {
26
+ mkdirSync(artifactDir, { recursive: true });
27
+ writeFileSync(markerPath, provider);
28
+ }
29
+ catch {
30
+ // Couldn't persist the marker — still emit this time (may re-emit next time).
31
+ }
32
+ return true;
33
+ }
34
+ /** Marker filename for a provider, with non-filename-safe chars folded to `-`. */
35
+ export function quotaNudgeMarkerName(provider) {
36
+ const safe = provider.replace(/[^a-zA-Z0-9._-]+/g, "-");
37
+ return `quota-coverage-nudged-${safe}.marker`;
38
+ }
39
+ /**
40
+ * Build the dispatch-prompt quota-coverage nudge block from a written
41
+ * `dispatch-quota.json`: for each DISTINCT provider whose pool reported
42
+ * `quota_coverage: "unestablished"`, emit the full two-path nudge the FIRST time
43
+ * (once per environment, via {@link shouldEmitQuotaNudge}) and a terse one-liner
44
+ * after. Returns "" when the file is absent/unreadable or no provider is
45
+ * unestablished — so a supported environment adds nothing to the prompt. Shared so
46
+ * both orchestrators surface the identical block (no drift). Reads the contract's
47
+ * `capacity_pools[]` (each `{ pool_id, quota_coverage }`) defensively.
48
+ */
49
+ export function renderQuotaCoverageNudge(quotaPath, artifactsDir) {
50
+ if (!quotaPath)
51
+ return "";
52
+ let pools;
53
+ try {
54
+ const data = JSON.parse(readFileSync(quotaPath, "utf8"));
55
+ pools = Array.isArray(data?.capacity_pools)
56
+ ? data.capacity_pools
57
+ : [];
58
+ }
59
+ catch {
60
+ return "";
61
+ }
62
+ const seen = new Set();
63
+ const providers = [];
64
+ for (const pool of pools) {
65
+ if (pool?.quota_coverage !== "unestablished")
66
+ continue;
67
+ const { provider } = parseProviderModelKey(String(pool.pool_id ?? ""));
68
+ if (!provider || seen.has(provider))
69
+ continue;
70
+ seen.add(provider);
71
+ providers.push(provider);
72
+ }
73
+ if (providers.length === 0)
74
+ return "";
75
+ return providers
76
+ .map((provider) => shouldEmitQuotaNudge(artifactsDir, provider)
77
+ ? renderUnestablishedQuotaNudge(provider)
78
+ : `⚠️ quota_coverage: unestablished for \`${provider}\` — no proactive quota source wired; ` +
79
+ `pacing is reactive-429 only. See dispatch-quota.json and the earlier nudge.`)
80
+ .join("\n\n");
81
+ }
82
+ //# sourceMappingURL=quotaCoverageNudge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quotaCoverageNudge.js","sourceRoot":"","sources":["../../../src/shared/quota/quotaCoverageNudge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,QAAgB;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,oBAAoB;IACnC,CAAC;IACD,IAAI,CAAC;QACH,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;IAChF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IACxD,OAAO,yBAAyB,IAAI,SAAS,CAAC;AAChD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAoC,EACpC,YAAoB;IAEpB,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,IAAI,KAA6D,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAiC,CAAC;QACzF,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;YACzC,CAAC,CAAE,IAAI,CAAC,cAAyE;YACjF,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,EAAE,cAAc,KAAK,eAAe;YAAE,SAAS;QACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QAC9C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,SAAS;SACb,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAChB,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC;QAC1C,CAAC,CAAC,6BAA6B,CAAC,QAAQ,CAAC;QACzC,CAAC,CAAC,0CAA0C,QAAQ,wCAAwC;YAC1F,6EAA6E,CAClF;SACA,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC"}
@@ -7,18 +7,18 @@ export declare const QuotaUsageSnapshotSchema: z.ZodObject<{
7
7
  captured_at: z.ZodString;
8
8
  source: z.ZodString;
9
9
  }, "strict", z.ZodTypeAny, {
10
+ captured_at: string;
10
11
  remaining_pct: number | null;
11
12
  reset_at: string | null;
12
13
  requests_remaining: number | null;
13
14
  tokens_remaining: number | null;
14
- captured_at: string;
15
15
  source: string;
16
16
  }, {
17
+ captured_at: string;
17
18
  remaining_pct: number | null;
18
19
  reset_at: string | null;
19
20
  requests_remaining: number | null;
20
21
  tokens_remaining: number | null;
21
- captured_at: string;
22
22
  source: string;
23
23
  }>;
24
24
  export type QuotaUsageSnapshot = z.infer<typeof QuotaUsageSnapshotSchema>;
@@ -57,7 +57,30 @@ export interface QuotaSource {
57
57
  * derives a best-effort result for sources that don't implement it.
58
58
  */
59
59
  probeUsage?(providerModelKey: string): Promise<QuotaProbeResult>;
60
+ /**
61
+ * Resolve the ACCOUNT identity this source reads for a provider, from its
62
+ * credential — never guessed (see docs/quota-dispatch-design.md §5). Used to
63
+ * stamp the account segment into the pool key so two same-provider accounts
64
+ * form distinct pools. Returns null when the source doesn't handle the provider,
65
+ * the credential is absent/unreadable, or the provider carries no account id.
66
+ * Local-only (no network). Optional so plain stubs stay valid.
67
+ */
68
+ resolveAccountId?(providerModelKey: string): Promise<string | null>;
69
+ /**
70
+ * Pure capability check: does this source provide PROACTIVE quota tracking for
71
+ * `provider`? No credentials, no network — answers "is this provider supported in
72
+ * code", which is what separates an unsupported environment (`unestablished`) from
73
+ * a supported-but-degraded one. Reactive-only sources (learned, host-session) omit
74
+ * it. See {@link classifyQuotaCoverage}.
75
+ */
76
+ coversProvider?(provider: string): boolean;
60
77
  }
78
+ /**
79
+ * Resolve a provider's account id via a source's {@link QuotaSource.resolveAccountId}
80
+ * when it has one, else null. Never throws — account resolution failure degrades to
81
+ * an unkeyed (account-null) pool rather than aborting pool construction.
82
+ */
83
+ export declare function resolveAccountIdSafe(source: QuotaSource, providerModelKey: string): Promise<string | null>;
61
84
  /**
62
85
  * Probe a quota source, using its native {@link QuotaSource.probeUsage} when it
63
86
  * has one and otherwise deriving a conservative result from
@@ -1 +1 @@
1
- {"version":3,"file":"quotaSource.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/quotaSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;EAS1B,CAAC;AACZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAChF;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAClE;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B"}
1
+ {"version":3,"file":"quotaSource.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/quotaSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;EAS1B,CAAC;AACZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAChF;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjE;;;;;;;OAOG;IACH,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpE;;;;;;OAMG;IACH,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5C;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,WAAW,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B"}
@@ -9,6 +9,21 @@ export const QuotaUsageSnapshotSchema = z
9
9
  source: z.string(),
10
10
  })
11
11
  .strict();
12
+ /**
13
+ * Resolve a provider's account id via a source's {@link QuotaSource.resolveAccountId}
14
+ * when it has one, else null. Never throws — account resolution failure degrades to
15
+ * an unkeyed (account-null) pool rather than aborting pool construction.
16
+ */
17
+ export async function resolveAccountIdSafe(source, providerModelKey) {
18
+ if (!source.resolveAccountId)
19
+ return null;
20
+ try {
21
+ return await source.resolveAccountId(providerModelKey);
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
12
27
  /**
13
28
  * Probe a quota source, using its native {@link QuotaSource.probeUsage} when it
14
29
  * has one and otherwise deriving a conservative result from
@@ -1 +1 @@
1
- {"version":3,"file":"quotaSource.js","sourceRoot":"","sources":["../../../src/shared/quota/quotaSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC/C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC;KACD,MAAM,EAAE,CAAC;AA0CZ;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAmB,EACnB,gBAAwB;IAExB,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"quotaSource.js","sourceRoot":"","sources":["../../../src/shared/quota/quotaSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC/C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC;KACD,MAAM,EAAE,CAAC;AA2DZ;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAmB,EACnB,gBAAwB;IAExB,IAAI,CAAC,MAAM,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAmB,EACnB,gBAAwB;IAExB,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChD,CAAC;AACH,CAAC"}
@@ -89,6 +89,14 @@ export declare const DEFAULT_FIRST_CONTACT_CONCURRENCY = 3;
89
89
  export declare const QUOTA_REMAINING_PCT_CRITICAL = 0.1;
90
90
  export declare const QUOTA_REMAINING_PCT_LOW = 0.3;
91
91
  export declare function scheduleWave(options: ScheduleWaveOptions): WaveSchedule;
92
- /** Build the state key used for indexing quota-state.json entries. */
93
- export declare function buildProviderModelKey(providerName: string, hostModel: string | null | undefined): string;
92
+ /**
93
+ * Build the quota pool key used for indexing quota-state.json entries and gating
94
+ * sources. Pool identity is `(provider, account, model)` — quota is billed
95
+ * per-ACCOUNT, so two same-provider accounts must NOT alias to one pool (see
96
+ * docs/quota-dispatch-design.md §5). Format: `provider[#account]/model`. The
97
+ * account segment is OMITTED when null, so a single-account run keeps the legacy
98
+ * `provider/model` key (no migration). The `model` tail may itself contain `/`;
99
+ * provider + account live in the head before the first `/`.
100
+ */
101
+ export declare function buildProviderModelKey(providerName: string, hostModel: string | null | undefined, account?: string | null): string;
94
102
  //# sourceMappingURL=scheduler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAe,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGlG,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAGf,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQ3D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,yBAAyB;IACxC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;;IAGnC,oEAAoE;;IAEpE,uDAAuD;;IAEvD;;;;;OAKG;;;;;;;;;;;;EAGI,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAI9E;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAkDxE;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChD,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;CACrD;AAMD,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,mEAAmE;AACnE,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,mFAAmF;AACnF,eAAO,MAAM,iCAAiC,IAAI,CAAC;AACnD;;;GAGG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAmM3C,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CA+HvE;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,MAAM,CAER"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAe,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGlG,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAGf,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQ3D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,yBAAyB;IACxC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;;IAGnC,oEAAoE;;IAEpE,uDAAuD;;IAEvD;;;;;OAKG;;;;;;;;;;;;EAGI,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAI9E;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAkDxE;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,oBAAoB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChD,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;CACrD;AAMD,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,mEAAmE;AACnE,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,mFAAmF;AACnF,eAAO,MAAM,iCAAiC,IAAI,CAAC;AACnD;;;GAGG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAmM3C,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CA+HvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAGR"}
@@ -306,8 +306,17 @@ export function scheduleWave(options) {
306
306
  binding_cap: bindingCap,
307
307
  };
308
308
  }
309
- /** Build the state key used for indexing quota-state.json entries. */
310
- export function buildProviderModelKey(providerName, hostModel) {
311
- return hostModel ? `${providerName}/${hostModel}` : `${providerName}/*`;
309
+ /**
310
+ * Build the quota pool key used for indexing quota-state.json entries and gating
311
+ * sources. Pool identity is `(provider, account, model)` — quota is billed
312
+ * per-ACCOUNT, so two same-provider accounts must NOT alias to one pool (see
313
+ * docs/quota-dispatch-design.md §5). Format: `provider[#account]/model`. The
314
+ * account segment is OMITTED when null, so a single-account run keeps the legacy
315
+ * `provider/model` key (no migration). The `model` tail may itself contain `/`;
316
+ * provider + account live in the head before the first `/`.
317
+ */
318
+ export function buildProviderModelKey(providerName, hostModel, account) {
319
+ const head = account ? `${providerName}#${account}` : providerName;
320
+ return hostModel ? `${head}/${hostModel}` : `${head}/*`;
312
321
  }
313
322
  //# sourceMappingURL=scheduler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/shared/quota/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/shared/quota/scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ import type { FrictionCaptureArtifact } from '../io/frictionCapture.js';
2
+ /** A normalized validation error the seam reasons over (validator-agnostic). */
3
+ export interface RepairValidationError {
4
+ /** Dotted path to the offending field (validator's own path token). */
5
+ path: string;
6
+ /** Human-readable message. */
7
+ message: string;
8
+ /**
9
+ * Whether this error sits on a REQUIRED field. Only REQUIRED errors gate stage
10
+ * escalation; an OPTIONAL-field error is something stage1 coercion is allowed
11
+ * to clear by dropping the sub-object.
12
+ */
13
+ required: boolean;
14
+ }
15
+ /** Outcome of running the canonical validator over a payload. */
16
+ export interface RepairValidationResult {
17
+ /** All errors (required + optional). Empty ⟹ clean. */
18
+ errors: RepairValidationError[];
19
+ }
20
+ /**
21
+ * Classification + deterministic coercion for one contract. The seam asks the
22
+ * contract to coerce its own OPTIONAL sub-objects and backfill its own
23
+ * recoverable identity — the seam owns the staging policy, the contract owns the
24
+ * field semantics.
25
+ */
26
+ export interface RepairCoercion {
27
+ /**
28
+ * Deterministically coerce the payload in a NON-DESTRUCTIVE, OPTIONAL-only way:
29
+ * drop/empty optional sub-objects that fail validation, and backfill tool-owned
30
+ * identity that is RECOVERABLE PER ELEMENT. Must NEVER mutate a required
31
+ * identity coordinate by homogenizing across elements.
32
+ *
33
+ * Returns the (possibly new) payload plus the structured record of what it did,
34
+ * so the seam can emit one friction event per change and decide escalation.
35
+ */
36
+ coerce(payload: unknown): RepairCoercionResult;
37
+ }
38
+ /** What stage1 coercion did to a payload. */
39
+ export interface RepairCoercionResult {
40
+ /** The coerced payload (same reference allowed if nothing changed). */
41
+ payload: unknown;
42
+ /** OPTIONAL sub-objects dropped/emptied, by path. */
43
+ drops: string[];
44
+ /** Tool-owned identity fields backfilled per element, by path. */
45
+ backfills: string[];
46
+ /**
47
+ * Set true when a REQUIRED identity field is missing on a MULTI-element array
48
+ * and is NOT recoverable per element — the payload must escalate straight to
49
+ * `unrepairable` rather than be homogenized (INV-o3-2, fail-2).
50
+ */
51
+ unrecoverableIdentity: boolean;
52
+ }
53
+ /**
54
+ * The errors-only bounded LLM patcher (stage2). Everything-agnostic: the caller
55
+ * wires whatever provider/model it likes. Receives ONLY the current payload and
56
+ * the remaining errors; returns a patched payload (or the same payload if it
57
+ * could not help). MUST be invoked outside any held artifact-tree lock — the seam
58
+ * holds none and does no artifact-tree IO.
59
+ */
60
+ export type RepairPatcher = (payload: unknown, errors: RepairValidationError[]) => Promise<unknown>;
61
+ /** A registered contract: one validator, one classification/coercion policy. */
62
+ export interface RepairContract {
63
+ /** Stable contract id (e.g. 'audit_results', 'implement_worker_result'). */
64
+ contractId: string;
65
+ /** The ONE canonical validator, re-run after every stage. Never forked. */
66
+ validate(payload: unknown): RepairValidationResult;
67
+ /** Deterministic OPTIONAL-only coercion + recoverable-identity backfill. */
68
+ coercion: RepairCoercion;
69
+ }
70
+ export type RepairStatus = 'clean' | 'coerced' | 'patched' | 'unrepairable';
71
+ /** A repair stage actually applied, in order. */
72
+ export type RepairStage = 'validate' | 'coerce' | 'llm_patch' | 'redispatch';
73
+ /** Re-dispatch signal surfaced when the seam exhausts cheaper stages. */
74
+ export interface RepairRedispatch {
75
+ /**
76
+ * The 1-based attempt counter for the NEXT dispatch. The caller feeds this to
77
+ * `buildResultContentDiscriminator({ source: 'redispatch', attempt })` so the
78
+ * re-dispatched result carries a distinct discriminator (and idempotencyKey).
79
+ */
80
+ attempt: number;
81
+ }
82
+ /** The single result shape of the seam (OBL-...-o3-contract). */
83
+ export interface RepairOutcome {
84
+ /** The repaired payload (identity-preserving for clean/coerced/patched). */
85
+ repaired_payload: unknown;
86
+ /** Terminal status. */
87
+ status: RepairStatus;
88
+ /** Non-empty whenever status !== 'clean'. */
89
+ warnings: string[];
90
+ /** Remaining REQUIRED-field errors after the last stage (empty unless unrepairable). */
91
+ remaining_errors: RepairValidationError[];
92
+ /** Stages applied, in order. Always begins with 'validate'. */
93
+ stages_applied: RepairStage[];
94
+ /** Present only when status === 'unrepairable': the re-dispatch signal. */
95
+ redispatch?: RepairRedispatch;
96
+ }
97
+ /** Options for one repair run. */
98
+ export interface RunEmitValidateRepairOptions {
99
+ /** The registered contract (validator + coercion). */
100
+ contract: RepairContract;
101
+ /** The worker payload to repair. */
102
+ payload: unknown;
103
+ /** Artifacts dir for friction capture (best-effort). */
104
+ artifactsDir: string;
105
+ /** Per-run id for friction capture keying. */
106
+ runId: string;
107
+ /** Which orchestrator is calling (friction record `tool` field). */
108
+ tool?: FrictionCaptureArtifact['tool'];
109
+ /** Optional bounded LLM patcher (stage2). Omitted ⟹ stage2 is skipped. */
110
+ patcher?: RepairPatcher;
111
+ /** Max bounded LLM attempts (default 1). */
112
+ maxLlmAttempts?: number;
113
+ /**
114
+ * 1-based current attempt counter (default 1). The re-dispatch signal advances
115
+ * it by one so the next attempt carries a distinct discriminator.
116
+ */
117
+ attempt?: number;
118
+ }
119
+ /**
120
+ * Run the cheapest-first monotonic emit-validate-repair pipeline over one
121
+ * payload. See the module header for the full stage contract.
122
+ */
123
+ export declare function runEmitValidateRepair(opts: RunEmitValidateRepairOptions): Promise<RepairOutcome>;
124
+ //# sourceMappingURL=emitValidateRepair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitValidateRepair.d.ts","sourceRoot":"","sources":["../../../src/shared/repair/emitValidateRepair.ts"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,sBAAsB;IACrC,uDAAuD;IACvD,MAAM,EAAE,qBAAqB,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAAC;CAChD;AAED,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,OAAO,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kEAAkE;IAClE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;OAIG;IACH,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,qBAAqB,EAAE,KAC5B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,sBAAsB,CAAC;IACnD,4EAA4E;IAC5E,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC;AAE5E,iDAAiD;AACjD,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC;AAE7E,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uBAAuB;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,wFAAwF;IACxF,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;IAC1C,+DAA+D;IAC/D,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,kCAAkC;AAClC,MAAM,WAAW,4BAA4B;IAC3C,sDAAsD;IACtD,QAAQ,EAAE,cAAc,CAAC;IACzB,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,IAAI,CAAC,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACvC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA2BD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,aAAa,CAAC,CAyIxB"}