codex-multi-auth 2.9.2 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/.codex-plugin/plugin.json +1 -1
  2. package/README.md +2 -1
  3. package/config/schema/config.schema.json +23 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +62 -2
  6. package/dist/lib/accounts.d.ts +25 -1
  7. package/dist/lib/accounts.d.ts.map +1 -1
  8. package/dist/lib/accounts.js +26 -6
  9. package/dist/lib/codex-manager/backend-settings-helpers.d.ts.map +1 -1
  10. package/dist/lib/codex-manager/backend-settings-helpers.js +10 -1
  11. package/dist/lib/codex-manager/backend-settings-schema.d.ts +18 -0
  12. package/dist/lib/codex-manager/backend-settings-schema.d.ts.map +1 -1
  13. package/dist/lib/codex-manager/backend-settings-schema.js +19 -0
  14. package/dist/lib/codex-manager/experimental-settings-prompt.d.ts +1 -0
  15. package/dist/lib/codex-manager/experimental-settings-prompt.d.ts.map +1 -1
  16. package/dist/lib/codex-manager/experimental-settings-prompt.js +12 -0
  17. package/dist/lib/codex-manager/experimental-settings-schema.d.ts +2 -0
  18. package/dist/lib/codex-manager/experimental-settings-schema.d.ts.map +1 -1
  19. package/dist/lib/codex-manager/experimental-settings-schema.js +2 -0
  20. package/dist/lib/config.d.ts +29 -0
  21. package/dist/lib/config.d.ts.map +1 -1
  22. package/dist/lib/config.js +88 -0
  23. package/dist/lib/context-budget/model-context-windows.d.ts +25 -0
  24. package/dist/lib/context-budget/model-context-windows.d.ts.map +1 -0
  25. package/dist/lib/context-budget/model-context-windows.js +118 -0
  26. package/dist/lib/context-budget-guard.d.ts +100 -0
  27. package/dist/lib/context-budget-guard.d.ts.map +1 -0
  28. package/dist/lib/context-budget-guard.js +183 -0
  29. package/dist/lib/context-budget-response.d.ts +25 -0
  30. package/dist/lib/context-budget-response.d.ts.map +1 -0
  31. package/dist/lib/context-budget-response.js +57 -0
  32. package/dist/lib/context-overflow.d.ts.map +1 -1
  33. package/dist/lib/context-overflow.js +5 -60
  34. package/dist/lib/request/rate-limit-decision.d.ts +4 -5
  35. package/dist/lib/request/rate-limit-decision.d.ts.map +1 -1
  36. package/dist/lib/request/rate-limit-decision.js +33 -4
  37. package/dist/lib/request/response-metadata.d.ts.map +1 -1
  38. package/dist/lib/request/response-metadata.js +1 -0
  39. package/dist/lib/request/stream-failover-runtime.d.ts +3 -1
  40. package/dist/lib/request/stream-failover-runtime.d.ts.map +1 -1
  41. package/dist/lib/request/stream-failover-runtime.js +7 -2
  42. package/dist/lib/runtime/context-budget-settings.d.ts +13 -0
  43. package/dist/lib/runtime/context-budget-settings.d.ts.map +1 -0
  44. package/dist/lib/runtime/context-budget-settings.js +8 -0
  45. package/dist/lib/runtime/loader-setup.d.ts +1 -0
  46. package/dist/lib/runtime/loader-setup.d.ts.map +1 -1
  47. package/dist/lib/runtime/loader-setup.js +1 -0
  48. package/dist/lib/runtime/rotation-account-selection.d.ts +23 -0
  49. package/dist/lib/runtime/rotation-account-selection.d.ts.map +1 -1
  50. package/dist/lib/runtime/rotation-account-selection.js +15 -6
  51. package/dist/lib/runtime/rotation-proxy-state.d.ts +2 -0
  52. package/dist/lib/runtime/rotation-proxy-state.d.ts.map +1 -1
  53. package/dist/lib/runtime/rotation-server-types.d.ts +11 -0
  54. package/dist/lib/runtime/rotation-server-types.d.ts.map +1 -1
  55. package/dist/lib/runtime-rotation-proxy.d.ts.map +1 -1
  56. package/dist/lib/runtime-rotation-proxy.js +251 -43
  57. package/dist/lib/schemas.d.ts +4 -0
  58. package/dist/lib/schemas.d.ts.map +1 -1
  59. package/dist/lib/schemas.js +10 -0
  60. package/dist/lib/synthetic-response.d.ts +31 -0
  61. package/dist/lib/synthetic-response.d.ts.map +1 -0
  62. package/dist/lib/synthetic-response.js +79 -0
  63. package/dist/lib/ui/ui-copy.d.ts +2 -1
  64. package/dist/lib/ui/ui-copy.d.ts.map +1 -1
  65. package/dist/lib/ui/ui-copy.js +2 -1
  66. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-multi-auth",
3
- "version": "2.9.2",
3
+ "version": "2.10.0",
4
4
  "description": "Install and operate codex-multi-auth for the official @openai/codex CLI with multi-account OAuth rotation, switching, health checks, and recovery tools.",
5
5
  "interface": {
6
6
  "composerIcon": "./assets/codex-multi-auth-icon.svg"
package/README.md CHANGED
@@ -329,6 +329,7 @@ The Settings menu now includes an `Experimental` section for staged features:
329
329
  - preview-first sync into `oc-chatgpt-multi-auth`
330
330
  - named local pool backup export with filename prompt
331
331
  - refresh guard toggle and interval controls moved out of Backend Controls
332
+ - context budget guard: pause a session before it hits the model's context window, with independently configurable soft/hard thresholds (default 65% / 69%) — ships disabled; see [Context Budget Guard](docs/features.md#context-budget-guard-experimental)
332
333
 
333
334
  These flows are intentionally non-destructive by default: sync previews before apply, destination-only accounts are preserved, and backup filename collisions fail safely.
334
335
 
@@ -405,7 +406,7 @@ codex-multi-auth doctor --json
405
406
 
406
407
  ## Release Notes
407
408
 
408
- - Current stable: [docs/releases/v2.9.2.md](docs/releases/v2.9.2.md) — install via `npm i -g codex-multi-auth`
409
+ - Current stable: [docs/releases/v2.10.0.md](docs/releases/v2.10.0.md) — install via `npm i -g codex-multi-auth`
409
410
  - Previous stable: [docs/releases/v2.8.3.md](docs/releases/v2.8.3.md)
410
411
  - Previous stable: [docs/releases/v2.8.2.md](docs/releases/v2.8.2.md)
411
412
  - Previous stable: [docs/releases/v2.7.1.md](docs/releases/v2.7.1.md)
@@ -247,6 +247,29 @@
247
247
  "type": "number",
248
248
  "minimum": 1000
249
249
  },
250
+ "contextBudgetGuardEnabled": {
251
+ "type": "boolean"
252
+ },
253
+ "contextBudgetGuardSoftPercent": {
254
+ "type": "number",
255
+ "minimum": 0,
256
+ "maximum": 100
257
+ },
258
+ "contextBudgetGuardHardPercent": {
259
+ "type": "number",
260
+ "minimum": 10,
261
+ "maximum": 100
262
+ },
263
+ "contextBudgetGuardModelWindowOverrides": {
264
+ "type": "object",
265
+ "propertyNames": {
266
+ "type": "string"
267
+ },
268
+ "additionalProperties": {
269
+ "type": "number",
270
+ "exclusiveMinimum": 0
271
+ }
272
+ },
250
273
  "routingMutex": {
251
274
  "type": "string",
252
275
  "enum": [
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAC;AAoW5D;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,iBAAiB,EAAE,MAuwI/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,KAAoB,CAAC;AAElD,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAC;AA8W5D;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,iBAAiB,EAAE,MA80I/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,KAAoB,CAAC;AAElD,eAAe,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -30,9 +30,11 @@ import { startLocalOAuthServer } from "./lib/auth/server.js";
30
30
  import { checkAndNotify } from "./lib/update-notice.js";
31
31
  import { CapabilityPolicyStore } from "./lib/capability-policy.js";
32
32
  import { promptAddAnotherAccount, promptLoginMode } from "./lib/cli.js";
33
- import { getAutoResume, getCodexMode, getEmptyResponseMaxRetries, getEmptyResponseRetryDelayMs, getFallbackToGpt52OnUnsupportedGpt53, getFastSession, getFastSessionMaxInputItems, getFastSessionStrategy, getFetchTimeoutMs, getRateLimitDedupWindowMs, getRateLimitMaxBackoffMs, getRateLimitShortRetryThresholdMs, getRateLimitStateResetMs, getLiveAccountSync, getLiveAccountSyncDebounceMs, getLiveAccountSyncPollMs, getNetworkErrorCooldownMs, getPerProjectAccounts, getPidOffsetEnabled, getPreemptiveQuotaEnabled, getPreemptiveQuotaMaxDeferralMs, getPreemptiveQuotaRemainingPercent5h, getPreemptiveQuotaRemainingPercent7d, getProactiveRefreshBufferMs, getProactiveRefreshGuardian, getProactiveRefreshIntervalMs, getRateLimitToastDebounceMs, getRetryAllAccountsMaxRetries, getRetryAllAccountsMaxWaitMs, getRetryAllAccountsRateLimited, getBackgroundResponses, getResponseContinuation, getServerErrorCooldownMs, getSessionAffinity, getSessionAffinityMaxEntries, getSessionAffinityTtlMs, getSessionRecovery, getStorageBackupEnabled, getStreamStallTimeoutMs, getToastDurationMs, getTokenRefreshSkewMs, getUnsupportedCodexFallbackChain, getUnsupportedCodexPolicy, loadPluginConfig, } from "./lib/config.js";
33
+ import { getAutoResume, getCodexMode, getEmptyResponseMaxRetries, getEmptyResponseRetryDelayMs, getFallbackToGpt52OnUnsupportedGpt53, getFastSession, getFastSessionMaxInputItems, getFastSessionStrategy, getFetchTimeoutMs, getRateLimitDedupWindowMs, getRateLimitMaxBackoffMs, getRateLimitShortRetryThresholdMs, getRateLimitStateResetMs, getLiveAccountSync, getLiveAccountSyncDebounceMs, getLiveAccountSyncPollMs, getNetworkErrorCooldownMs, getPerProjectAccounts, getPidOffsetEnabled, getPreemptiveQuotaEnabled, getPreemptiveQuotaMaxDeferralMs, getPreemptiveQuotaRemainingPercent5h, getPreemptiveQuotaRemainingPercent7d, getContextBudgetGuardEnabled, getContextBudgetGuardSoftPercent, getContextBudgetGuardHardPercent, getContextBudgetGuardModelWindowOverrides, getProactiveRefreshBufferMs, getProactiveRefreshGuardian, getProactiveRefreshIntervalMs, getRateLimitToastDebounceMs, getRetryAllAccountsMaxRetries, getRetryAllAccountsMaxWaitMs, getRetryAllAccountsRateLimited, getBackgroundResponses, getResponseContinuation, getServerErrorCooldownMs, getSessionAffinity, getSessionAffinityMaxEntries, getSessionAffinityTtlMs, getSessionRecovery, getStorageBackupEnabled, getStreamStallTimeoutMs, getToastDurationMs, getTokenRefreshSkewMs, getUnsupportedCodexFallbackChain, getUnsupportedCodexPolicy, loadPluginConfig, } from "./lib/config.js";
34
34
  import { ACCOUNT_LIMITS, AUTH_LABELS, CODEX_BASE_URL, DUMMY_API_KEY, LOG_STAGES, PLUGIN_NAME, PROVIDER_ID, } from "./lib/constants.js";
35
35
  import { handleContextOverflow } from "./lib/context-overflow.js";
36
+ import { ContextBudgetGuard } from "./lib/context-budget-guard.js";
37
+ import { buildContextBudgetHeaders, createContextBudgetPauseResponse, } from "./lib/context-budget-response.js";
36
38
  import { EntitlementCache, resolveEntitlementAccountKey, } from "./lib/entitlement-cache.js";
37
39
  import { LiveAccountSync } from "./lib/live-account-sync.js";
38
40
  import { clearCorrelationId, initLogger, logDebug, logError, logInfo, logRequest, logWarn, setCorrelationId, } from "./lib/logger.js";
@@ -89,6 +91,7 @@ import { ensureLiveAccountSyncEntry } from "./lib/runtime/live-sync-entry.js";
89
91
  import { applyLoaderRuntimeSetup } from "./lib/runtime/loader-setup.js";
90
92
  import { buildManualOAuthFlow } from "./lib/runtime/manual-oauth-flow.js";
91
93
  import { applyPreemptiveQuotaSettingsFromConfig } from "./lib/runtime/quota-settings.js";
94
+ import { applyContextBudgetGuardSettingsFromConfig } from "./lib/runtime/context-budget-settings.js";
92
95
  import { ensureLiveAccountSyncState, ensureRefreshGuardianState, ensureSessionAffinityState, } from "./lib/runtime/runtime-services.js";
93
96
  import { getRuntimeObservabilitySnapshot, mutateRuntimeObservabilitySnapshot, } from "./lib/runtime/runtime-observability.js";
94
97
  import { applyAccountStorageScopeFromConfig } from "./lib/runtime/storage-scope.js";
@@ -166,6 +169,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
166
169
  let sessionAffinityConfigKey = null;
167
170
  const entitlementCache = new EntitlementCache();
168
171
  const preemptiveQuotaScheduler = new PreemptiveQuotaScheduler();
172
+ const contextBudgetGuard = new ContextBudgetGuard();
169
173
  const capabilityPolicyStore = new CapabilityPolicyStore();
170
174
  let accountReloadInFlight = null;
171
175
  const exposeAdvancedCodexTools = (process.env.CODEX_MULTI_AUTH_EXPOSE_ADMIN_TOOLS ?? "").trim() === "1";
@@ -359,6 +363,13 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
359
363
  getPreemptiveQuotaRemainingPercent7d,
360
364
  getPreemptiveQuotaMaxDeferralMs,
361
365
  });
366
+ const applyContextBudgetGuardSettings = (pluginConfig) => applyContextBudgetGuardSettingsFromConfig(pluginConfig, {
367
+ configure: (options) => contextBudgetGuard.configure(options),
368
+ getContextBudgetGuardEnabled,
369
+ getContextBudgetGuardSoftPercent,
370
+ getContextBudgetGuardHardPercent,
371
+ getContextBudgetGuardModelWindowOverrides,
372
+ });
362
373
  // Event handler for session recovery and account selection
363
374
  const eventHandler = async (input) => handleRuntimeEvent({
364
375
  input,
@@ -410,6 +421,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
410
421
  ensureSessionAffinity,
411
422
  ensureRefreshGuardian,
412
423
  applyPreemptiveQuotaSettings,
424
+ applyContextBudgetGuardSettings,
413
425
  });
414
426
  // Only handle OAuth auth type, skip API key auth
415
427
  if (auth.type !== "oauth") {
@@ -603,6 +615,23 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
603
615
  .toString()
604
616
  .trim() || undefined;
605
617
  const sessionAffinityKey = threadIdCandidate ?? promptCacheKey ?? null;
618
+ // Context budget guard: pause BEFORE spending an upstream
619
+ // round-trip on a request the tracked session is already over
620
+ // the hard threshold for, rather than waiting on the eventual
621
+ // context_length_exceeded 400 that handleContextOverflow below
622
+ // only reacts to after the fact. Independent of which account
623
+ // ends up serving the request, so it runs ahead of account
624
+ // selection entirely rather than inside its retry loop.
625
+ const contextBudgetAdvisory = contextBudgetGuard.getAdvisory(sessionAffinityKey ?? "", Date.now(), model);
626
+ if (contextBudgetAdvisory.level === "hard") {
627
+ // One-shot: this pause returns before the request is
628
+ // forwarded, so the onUsage hook that would lower the
629
+ // recorded usage never runs. Dropping the snapshot keeps
630
+ // the session recoverable — otherwise the `/compact` turn
631
+ // this message asks for is blocked by the same key.
632
+ contextBudgetGuard.noteHardPauseEmitted(sessionAffinityKey ?? "");
633
+ return createContextBudgetPauseResponse(contextBudgetAdvisory);
634
+ }
606
635
  const sessionAffinityVersion = (sessionAffinityWriteVersion += 1);
607
636
  const effectivePromptCacheKey = (sessionAffinityKey ?? promptCacheKey ?? "")
608
637
  .toString()
@@ -1614,7 +1643,22 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
1614
1643
  sessionAffinityStore?.updateLastResponseId(sessionAffinityKey, responseId, Date.now(), sessionAffinityVersion);
1615
1644
  storedResponseIdForSuccess = true;
1616
1645
  },
1617
- onUsage: usageDeferral.onUsage,
1646
+ onUsage: (usage) => {
1647
+ usageDeferral.onUsage(usage);
1648
+ // Responses is mostly stateless (store=false): this
1649
+ // turn's input_tokens reflects the full conversation
1650
+ // resent this call, so it doubles as a live read of
1651
+ // the session's current context size. input + output, NOT
1652
+ // total: total_tokens also counts reasoning tokens, which
1653
+ // are not resent as context on the next turn.
1654
+ if (sessionAffinityKey && model) {
1655
+ contextBudgetGuard.update(sessionAffinityKey, {
1656
+ model,
1657
+ contextTokens: usage.inputTokens + usage.outputTokens,
1658
+ updatedAt: Date.now(),
1659
+ });
1660
+ }
1661
+ },
1618
1662
  streamStallTimeoutMs,
1619
1663
  });
1620
1664
  if (!isStreaming && emptyResponseMaxRetries > 0) {
@@ -1723,6 +1767,22 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
1723
1767
  clearPoolExhaustionCooldown();
1724
1768
  clearServerBurstCooldown();
1725
1769
  syncRuntimeObservability(requestTraceId);
1770
+ // Non-blocking: contextBudgetAdvisory reflects usage
1771
+ // observed as of the PRIOR turn (this turn's own usage
1772
+ // isn't known yet for a streaming body), attached as a
1773
+ // header for `codex-multi-auth status` / the statusline
1774
+ // rather than altering this response's body.
1775
+ if (contextBudgetAdvisory.level === "soft") {
1776
+ const headers = new Headers(successResponse.headers);
1777
+ for (const [name, value] of Object.entries(buildContextBudgetHeaders(contextBudgetAdvisory))) {
1778
+ headers.set(name, value);
1779
+ }
1780
+ return new Response(successResponse.body, {
1781
+ status: successResponse.status,
1782
+ statusText: successResponse.statusText,
1783
+ headers,
1784
+ });
1785
+ }
1726
1786
  return successResponse;
1727
1787
  }
1728
1788
  if (retryNextAccountBeforeFallback) {
@@ -147,7 +147,31 @@ export declare class AccountManager {
147
147
  recordSuccess(account: ManagedAccount, family: ModelFamily, model?: string | null): void;
148
148
  recordRateLimit(account: ManagedAccount, family: ModelFamily, model?: string | null): void;
149
149
  recordFailure(account: ManagedAccount, family: ModelFamily, model?: string | null): void;
150
- consumeToken(account: ManagedAccount, family: ModelFamily, model?: string | null): boolean;
150
+ consumeToken(account: ManagedAccount, family: ModelFamily, model?: string | null, options?: {
151
+ bypassTokenBucket?: boolean;
152
+ }): boolean;
153
+ /**
154
+ * `consumeToken`, but it says which admission gate rejected the request.
155
+ *
156
+ * There are two gates and they are not interchangeable to a caller writing
157
+ * `account_skip_reasons`: the pool-scoring token bucket, and the circuit
158
+ * breaker's race-safe admission slot. Re-deriving the answer afterwards
159
+ * with `getManagedAccountRuntimeSkipReason` gets it wrong in both
160
+ * directions -- that helper reports the FIRST blocker it finds (so a live
161
+ * cooldown masks a drained bucket), and its `isAvailable()` check answers
162
+ * true for a half-open breaker whose single probe `canExecute()` just
163
+ * handed to a concurrent request. Reporting the gate that actually
164
+ * rejected removes the race and the mis-attribution, and avoids a second
165
+ * state-mutating evaluation (`clearExpiredRateLimits`) on the hot path.
166
+ */
167
+ consumeTokenWithReason(account: ManagedAccount, family: ModelFamily, model?: string | null, options?: {
168
+ bypassTokenBucket?: boolean;
169
+ }): {
170
+ ok: true;
171
+ } | {
172
+ ok: false;
173
+ reason: "token-exhausted" | "circuit-open";
174
+ };
151
175
  /**
152
176
  * Refund a token consumed within the refund window (30 seconds).
153
177
  * Use this when a request fails due to network errors (not rate limits).
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../lib/accounts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../lib/accounts.ts"],"names":[],"mappings":"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"}
@@ -775,20 +775,40 @@ export class AccountManager {
775
775
  healthTracker.recordFailure(getRuntimeTrackerKey(account), quotaKey);
776
776
  getCircuitBreaker(getAccountCircuitKey(account)).recordFailure();
777
777
  }
778
- consumeToken(account, family, model) {
778
+ consumeToken(account, family, model, options = {}) {
779
+ return this.consumeTokenWithReason(account, family, model, options).ok;
780
+ }
781
+ /**
782
+ * `consumeToken`, but it says which admission gate rejected the request.
783
+ *
784
+ * There are two gates and they are not interchangeable to a caller writing
785
+ * `account_skip_reasons`: the pool-scoring token bucket, and the circuit
786
+ * breaker's race-safe admission slot. Re-deriving the answer afterwards
787
+ * with `getManagedAccountRuntimeSkipReason` gets it wrong in both
788
+ * directions -- that helper reports the FIRST blocker it finds (so a live
789
+ * cooldown masks a drained bucket), and its `isAvailable()` check answers
790
+ * true for a half-open breaker whose single probe `canExecute()` just
791
+ * handed to a concurrent request. Reporting the gate that actually
792
+ * rejected removes the race and the mis-attribution, and avoids a second
793
+ * state-mutating evaluation (`clearExpiredRateLimits`) on the hot path.
794
+ */
795
+ consumeTokenWithReason(account, family, model, options = {}) {
779
796
  const quotaKey = model ? `${family}:${model}` : family;
780
797
  const tokenTracker = getTokenTracker();
781
798
  const trackerKey = getRuntimeTrackerKey(account);
782
- if (!tokenTracker.tryConsume(trackerKey, quotaKey)) {
783
- return false;
799
+ const shouldConsumeToken = options.bypassTokenBucket !== true;
800
+ if (shouldConsumeToken && !tokenTracker.tryConsume(trackerKey, quotaKey)) {
801
+ return { ok: false, reason: "token-exhausted" };
784
802
  }
785
803
  try {
786
804
  getCircuitBreaker(getAccountCircuitKey(account)).canExecute();
787
- return true;
805
+ return { ok: true };
788
806
  }
789
807
  catch {
790
- tokenTracker.refundToken(trackerKey, quotaKey);
791
- return false;
808
+ if (shouldConsumeToken) {
809
+ tokenTracker.refundToken(trackerKey, quotaKey);
810
+ }
811
+ return { ok: false, reason: "circuit-open" };
792
812
  }
793
813
  }
794
814
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"backend-settings-helpers.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/backend-settings-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAMN,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,MAAM,8BAA8B,CAAC;AAEtC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAU3E;AAED,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,YAAY,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB;AAED,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,GACjB,OAAO,CAKT;AAED,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,0BAA0B,EAClC,KAAK,EAAE,MAAM,GACX,MAAM,CAUR;AASD,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,UAAU,CAAC,cAAc,kBAAkB,EAAE,mBAAmB,CAAC,EACrE,KAAK,EAAE,sBAAsB,EAC7B,IAAI,EAAE;IACL,qBAAqB,EAAE,CACtB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,UAAU,CAAC,cAAc,kBAAkB,EAAE,mBAAmB,CAAC,KACjE,MAAM,CAAC;CACZ,GACC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiDjC;AAED,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC,CAevB;AAED,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACX,MAAM,CAQR"}
1
+ {"version":3,"file":"backend-settings-helpers.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/backend-settings-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAON,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,MAAM,8BAA8B,CAAC;AAEtC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAU3E;AAED,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,YAAY,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AAED,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,GACjB,OAAO,CAKT;AAED,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,0BAA0B,EAClC,KAAK,EAAE,MAAM,GACX,MAAM,CAUR;AASD,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,UAAU,CAAC,cAAc,kBAAkB,EAAE,mBAAmB,CAAC,EACrE,KAAK,EAAE,sBAAsB,EAC7B,IAAI,EAAE;IACL,qBAAqB,EAAE,CACtB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,UAAU,CAAC,cAAc,kBAAkB,EAAE,mBAAmB,CAAC,KACjE,MAAM,CAAC;CACZ,GACC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiDjC;AAED,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC,CAqBvB;AAED,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACX,MAAM,CAQR"}
@@ -1,4 +1,4 @@
1
- import { BACKEND_DEFAULTS, BACKEND_NUMBER_OPTION_BY_KEY, BACKEND_NUMBER_OPTIONS, BACKEND_TOGGLE_OPTIONS, } from "./backend-settings-schema.js";
1
+ import { BACKEND_DEFAULTS, BACKEND_NUMBER_OPTION_BY_KEY, BACKEND_NUMBER_OPTIONS, BACKEND_TOGGLE_OPTIONS, EXPERIMENTAL_TOGGLE_KEYS, } from "./backend-settings-schema.js";
2
2
  export function cloneBackendPluginConfig(config) {
3
3
  const fallbackChain = config.unsupportedCodexFallbackChain;
4
4
  return {
@@ -19,6 +19,9 @@ export function backendSettingsSnapshot(config) {
19
19
  snapshot[option.key] =
20
20
  config[option.key] ?? BACKEND_DEFAULTS[option.key] ?? option.min;
21
21
  }
22
+ for (const key of EXPERIMENTAL_TOGGLE_KEYS) {
23
+ snapshot[key] = config[key] ?? BACKEND_DEFAULTS[key] ?? false;
24
+ }
22
25
  return snapshot;
23
26
  }
24
27
  export function backendSettingsEqual(left, right) {
@@ -90,6 +93,12 @@ export function buildBackendConfigPatch(config) {
90
93
  patch[option.key] = clampBackendNumber(option, value);
91
94
  }
92
95
  }
96
+ for (const key of EXPERIMENTAL_TOGGLE_KEYS) {
97
+ const value = config[key];
98
+ if (typeof value === "boolean") {
99
+ patch[key] = value;
100
+ }
101
+ }
93
102
  return patch;
94
103
  }
95
104
  export function clampBackendNumberForTests(settingKey, value) {
@@ -1,6 +1,24 @@
1
1
  import type { PluginConfig } from "../types.js";
2
2
  export type BackendToggleSettingKey = "liveAccountSync" | "sessionAffinity" | "proactiveRefreshGuardian" | "retryAllAccountsRateLimited" | "parallelProbing" | "storageBackupEnabled" | "preemptiveQuotaEnabled" | "fastSession" | "sessionRecovery" | "autoResume" | "perProjectAccounts";
3
3
  export type BackendNumberSettingKey = "liveAccountSyncDebounceMs" | "liveAccountSyncPollMs" | "sessionAffinityTtlMs" | "sessionAffinityMaxEntries" | "proactiveRefreshIntervalMs" | "proactiveRefreshBufferMs" | "parallelProbingMaxConcurrency" | "fastSessionMaxInputItems" | "networkErrorCooldownMs" | "serverErrorCooldownMs" | "fetchTimeoutMs" | "streamStallTimeoutMs" | "tokenRefreshSkewMs" | "preemptiveQuotaRemainingPercent5h" | "preemptiveQuotaRemainingPercent7d" | "preemptiveQuotaMaxDeferralMs";
4
+ /**
5
+ * Backend toggles that persist with the backend config but are NOT listed in
6
+ * BACKEND_TOGGLE_OPTIONS, because their home in the UI is the Experimental
7
+ * menu rather than a Backend settings category.
8
+ *
9
+ * They still have to travel through `backendSettingsSnapshot` and
10
+ * `buildBackendConfigPatch`: those two are what the Experimental save path
11
+ * uses to decide "did anything change" and "what do we write to
12
+ * settings.json". A toggle missing from both compares equal to its old value
13
+ * no matter what the user pressed, so the save is skipped and the change
14
+ * lives only in memory until the next launch drops it.
15
+ *
16
+ * Kept out of BACKEND_TOGGLE_OPTIONS so the settings menu's "every toggle
17
+ * belongs to a category" invariant (test/codex-manager-cli.test.ts) still
18
+ * holds without inventing a category for an experimental flag.
19
+ */
20
+ export declare const EXPERIMENTAL_TOGGLE_KEYS: readonly ["contextBudgetGuardEnabled"];
21
+ export type ExperimentalToggleSettingKey = (typeof EXPERIMENTAL_TOGGLE_KEYS)[number];
4
22
  export type BackendSettingFocusKey = BackendToggleSettingKey | BackendNumberSettingKey | null;
5
23
  export interface BackendToggleSettingOption {
6
24
  key: BackendToggleSettingKey;
@@ -1 +1 @@
1
- {"version":3,"file":"backend-settings-schema.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/backend-settings-schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAChC,iBAAiB,GACjB,iBAAiB,GACjB,0BAA0B,GAC1B,6BAA6B,GAC7B,iBAAiB,GACjB,sBAAsB,GACtB,wBAAwB,GACxB,aAAa,GACb,iBAAiB,GACjB,YAAY,GACZ,oBAAoB,CAAC;AAExB,MAAM,MAAM,uBAAuB,GAChC,2BAA2B,GAC3B,uBAAuB,GACvB,sBAAsB,GACtB,2BAA2B,GAC3B,4BAA4B,GAC5B,0BAA0B,GAC1B,+BAA+B,GAC/B,0BAA0B,GAC1B,wBAAwB,GACxB,uBAAuB,GACvB,gBAAgB,GAChB,sBAAsB,GACtB,oBAAoB,GACpB,mCAAmC,GACnC,mCAAmC,GACnC,8BAA8B,CAAC;AAElC,MAAM,MAAM,sBAAsB,GAC/B,uBAAuB,GACvB,uBAAuB,GACvB,IAAI,CAAC;AAER,MAAM,WAAW,0BAA0B;IAC1C,GAAG,EAAE,uBAAuB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IAC1C,GAAG,EAAE,uBAAuB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,MAAM,kBAAkB,GAC3B,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,sBAAsB,CAAC;AAE1B,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,kBAAkB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,UAAU,EAAE,uBAAuB,EAAE,CAAC;CACtC;AAED,MAAM,MAAM,2BAA2B,GACpC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,uBAAuB,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,uBAAuB,CAAC;IAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpB,MAAM,MAAM,wBAAwB,GACjC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,kBAAkB,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEtB,eAAO,MAAM,sBAAsB,EAAE,0BAA0B,EAwD9D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,0BAA0B,EAiJ9D,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,qBAAqB,EAuD3D,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAAuC,CAAC;AAEvE,eAAO,MAAM,4BAA4B,0DAGsB,CAAC;AAEhE,eAAO,MAAM,4BAA4B,0DAGsB,CAAC"}
1
+ {"version":3,"file":"backend-settings-schema.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/backend-settings-schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAChC,iBAAiB,GACjB,iBAAiB,GACjB,0BAA0B,GAC1B,6BAA6B,GAC7B,iBAAiB,GACjB,sBAAsB,GACtB,wBAAwB,GACxB,aAAa,GACb,iBAAiB,GACjB,YAAY,GACZ,oBAAoB,CAAC;AAExB,MAAM,MAAM,uBAAuB,GAChC,2BAA2B,GAC3B,uBAAuB,GACvB,sBAAsB,GACtB,2BAA2B,GAC3B,4BAA4B,GAC5B,0BAA0B,GAC1B,+BAA+B,GAC/B,0BAA0B,GAC1B,wBAAwB,GACxB,uBAAuB,GACvB,gBAAgB,GAChB,sBAAsB,GACtB,oBAAoB,GACpB,mCAAmC,GACnC,mCAAmC,GACnC,8BAA8B,CAAC;AAElC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wBAAwB,wCAEe,CAAC;AAErD,MAAM,MAAM,4BAA4B,GACvC,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3C,MAAM,MAAM,sBAAsB,GAC/B,uBAAuB,GACvB,uBAAuB,GACvB,IAAI,CAAC;AAER,MAAM,WAAW,0BAA0B;IAC1C,GAAG,EAAE,uBAAuB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IAC1C,GAAG,EAAE,uBAAuB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,MAAM,kBAAkB,GAC3B,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,sBAAsB,CAAC;AAE1B,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,kBAAkB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,UAAU,EAAE,uBAAuB,EAAE,CAAC;CACtC;AAED,MAAM,MAAM,2BAA2B,GACpC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,uBAAuB,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,uBAAuB,CAAC;IAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpB,MAAM,MAAM,wBAAwB,GACjC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,kBAAkB,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEtB,eAAO,MAAM,sBAAsB,EAAE,0BAA0B,EAwD9D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,0BAA0B,EAiJ9D,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,qBAAqB,EAuD3D,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAAuC,CAAC;AAEvE,eAAO,MAAM,4BAA4B,0DAGsB,CAAC;AAEhE,eAAO,MAAM,4BAA4B,0DAGsB,CAAC"}
@@ -1,4 +1,23 @@
1
1
  import { getDefaultPluginConfig } from "../config.js";
2
+ /**
3
+ * Backend toggles that persist with the backend config but are NOT listed in
4
+ * BACKEND_TOGGLE_OPTIONS, because their home in the UI is the Experimental
5
+ * menu rather than a Backend settings category.
6
+ *
7
+ * They still have to travel through `backendSettingsSnapshot` and
8
+ * `buildBackendConfigPatch`: those two are what the Experimental save path
9
+ * uses to decide "did anything change" and "what do we write to
10
+ * settings.json". A toggle missing from both compares equal to its old value
11
+ * no matter what the user pressed, so the save is skipped and the change
12
+ * lives only in memory until the next launch drops it.
13
+ *
14
+ * Kept out of BACKEND_TOGGLE_OPTIONS so the settings menu's "every toggle
15
+ * belongs to a category" invariant (test/codex-manager-cli.test.ts) still
16
+ * holds without inventing a category for an experimental flag.
17
+ */
18
+ export const EXPERIMENTAL_TOGGLE_KEYS = [
19
+ "contextBudgetGuardEnabled",
20
+ ];
2
21
  export const BACKEND_TOGGLE_OPTIONS = [
3
22
  {
4
23
  key: "liveAccountSync",
@@ -11,6 +11,7 @@ type ExperimentalSettingsCopy = {
11
11
  experimentalRefreshInterval: string;
12
12
  experimentalDecreaseInterval: string;
13
13
  experimentalIncreaseInterval: string;
14
+ experimentalContextBudgetGuard: string;
14
15
  saveAndBack: string;
15
16
  backNoSave: string;
16
17
  experimentalHelpMenu: string;
@@ -1 +1 @@
1
- {"version":3,"file":"experimental-settings-prompt.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/experimental-settings-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experimental-settings-prompt.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/experimental-settings-prompt.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,11 @@ export async function promptExperimentalSettingsMenu(params) {
48
48
  value: { type: "increase-refresh-interval" },
49
49
  color: "green",
50
50
  },
51
+ {
52
+ label: `${params.formatDashboardSettingState(draft.contextBudgetGuardEnabled ?? false)} ${copy.experimentalContextBudgetGuard}`,
53
+ value: { type: "toggle-context-budget-guard" },
54
+ color: "yellow",
55
+ },
51
56
  { label: copy.saveAndBack, value: { type: "save" }, color: "green" },
52
57
  { label: copy.backNoSave, value: { type: "back" }, color: "red" },
53
58
  ], params.getExperimentalSelectOptions(params.ui, copy.experimentalHelpMenu, params.mapExperimentalMenuHotkey));
@@ -77,6 +82,13 @@ export async function promptExperimentalSettingsMenu(params) {
77
82
  };
78
83
  continue;
79
84
  }
85
+ if (actionType === "toggle-context-budget-guard") {
86
+ draft = {
87
+ ...draft,
88
+ contextBudgetGuardEnabled: !(draft.contextBudgetGuardEnabled ?? false),
89
+ };
90
+ continue;
91
+ }
80
92
  if (actionType === "backup") {
81
93
  const prompt = createInterface({
82
94
  input: params.input,
@@ -10,6 +10,8 @@ export type ExperimentalSettingsAction = {
10
10
  type: "decrease-refresh-interval";
11
11
  } | {
12
12
  type: "increase-refresh-interval";
13
+ } | {
14
+ type: "toggle-context-budget-guard";
13
15
  } | {
14
16
  type: "apply";
15
17
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"experimental-settings-schema.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/experimental-settings-schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,0BAA0B,GACnC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,yBAAyB,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpB,wBAAgB,4BAA4B,CAC3C,EAAE,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC1C,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC,SAAS,CAAC,GAC5D,aAAa,CAAC,0BAA0B,CAAC,CAU3C;AAED,wBAAgB,yBAAyB,CACxC,GAAG,EAAE,MAAM,GACT,0BAA0B,GAAG,SAAS,CAUxC;AAED,wBAAgB,2BAA2B,CAC1C,GAAG,EAAE,MAAM,GACT,0BAA0B,GAAG,SAAS,CAExC"}
1
+ {"version":3,"file":"experimental-settings-schema.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/experimental-settings-schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,0BAA0B,GACnC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,yBAAyB,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,2BAA2B,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,6BAA6B,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpB,wBAAgB,4BAA4B,CAC3C,EAAE,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC1C,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC,SAAS,CAAC,GAC5D,aAAa,CAAC,0BAA0B,CAAC,CAU3C;AAED,wBAAgB,yBAAyB,CACxC,GAAG,EAAE,MAAM,GACT,0BAA0B,GAAG,SAAS,CAWxC;AAED,wBAAgB,2BAA2B,CAC1C,GAAG,EAAE,MAAM,GACT,0BAA0B,GAAG,SAAS,CAExC"}
@@ -17,6 +17,8 @@ export function mapExperimentalMenuHotkey(raw) {
17
17
  return { type: "backup" };
18
18
  if (raw === "3")
19
19
  return { type: "toggle-refresh-guardian" };
20
+ if (raw === "4")
21
+ return { type: "toggle-context-budget-guard" };
20
22
  if (raw === "[" || raw === "-")
21
23
  return { type: "decrease-refresh-interval" };
22
24
  if (raw === "]" || raw === "+")
@@ -322,6 +322,35 @@ export declare function getPreemptiveQuotaRemainingPercent7d(pluginConfig: Plugi
322
322
  * Security: the returned value contains no sensitive tokens and is safe to log.
323
323
  */
324
324
  export declare function getPreemptiveQuotaMaxDeferralMs(pluginConfig: PluginConfig): number;
325
+ /**
326
+ * Whether the (experimental, opt-in) context budget guard is enabled.
327
+ *
328
+ * Ships disabled: pausing a session before it hits the context window is a
329
+ * staged behavior change, not a default-on safety net like preemptive quota
330
+ * deferral, so an explicit opt-in is required.
331
+ */
332
+ export declare function getContextBudgetGuardEnabled(pluginConfig: PluginConfig): boolean;
333
+ /** Percent of the effective context window at which the guard's non-blocking advisory fires. */
334
+ export declare function getContextBudgetGuardSoftPercent(pluginConfig: PluginConfig): number;
335
+ /**
336
+ * Percent of the effective context window at which the guard pauses the next
337
+ * request.
338
+ *
339
+ * Floored at 10, not 0. `resolveNumberSetting` clamps out-of-range values
340
+ * instead of rejecting them, so a configured (or env-supplied) `0` would be a
341
+ * legal threshold that every recorded snapshot clears — pausing every session
342
+ * from its first turn on. The guard applies the same floor in `configure()`
343
+ * so a directly constructed instance cannot be set below it either.
344
+ */
345
+ export declare function getContextBudgetGuardHardPercent(pluginConfig: PluginConfig): number;
346
+ /**
347
+ * User-supplied context-window sizes, keyed by normalized model id, that
348
+ * always take priority over this package's own best-effort estimates (see
349
+ * `lib/context-budget/model-context-windows.ts`). Settings-only: there is no
350
+ * environment override, the same as `unsupportedCodexFallbackChain`, since a
351
+ * per-model token count is not a reasonable single env var.
352
+ */
353
+ export declare function getContextBudgetGuardModelWindowOverrides(pluginConfig: PluginConfig): Record<string, number>;
325
354
  /**
326
355
  * Resolve the routing-mutex mode (PR-N / R4).
327
356
  *
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"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"}