codex-multi-auth 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -0
- package/README.md +162 -0
- package/assets/opencode-logo-ornate-dark.svg +18 -0
- package/assets/readme-hero.svg +31 -0
- package/config/README.md +87 -0
- package/config/minimal-opencode.json +13 -0
- package/config/opencode-legacy.json +571 -0
- package/config/opencode-modern.json +239 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3160 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/accounts/rate-limits.d.ts +22 -0
- package/dist/lib/accounts/rate-limits.d.ts.map +1 -0
- package/dist/lib/accounts/rate-limits.js +63 -0
- package/dist/lib/accounts/rate-limits.js.map +1 -0
- package/dist/lib/accounts.d.ts +95 -0
- package/dist/lib/accounts.d.ts.map +1 -0
- package/dist/lib/accounts.js +668 -0
- package/dist/lib/accounts.js.map +1 -0
- package/dist/lib/audit.d.ts +45 -0
- package/dist/lib/audit.d.ts.map +1 -0
- package/dist/lib/audit.js +131 -0
- package/dist/lib/audit.js.map +1 -0
- package/dist/lib/auth/auth.d.ts +56 -0
- package/dist/lib/auth/auth.d.ts.map +1 -0
- package/dist/lib/auth/auth.js +214 -0
- package/dist/lib/auth/auth.js.map +1 -0
- package/dist/lib/auth/browser.d.ts +34 -0
- package/dist/lib/auth/browser.d.ts.map +1 -0
- package/dist/lib/auth/browser.js +185 -0
- package/dist/lib/auth/browser.js.map +1 -0
- package/dist/lib/auth/server.d.ts +24 -0
- package/dist/lib/auth/server.d.ts.map +1 -0
- package/dist/lib/auth/server.js +116 -0
- package/dist/lib/auth/server.js.map +1 -0
- package/dist/lib/auth/token-utils.d.ts +59 -0
- package/dist/lib/auth/token-utils.d.ts.map +1 -0
- package/dist/lib/auth/token-utils.js +331 -0
- package/dist/lib/auth/token-utils.js.map +1 -0
- package/dist/lib/auth-rate-limit.d.ts +20 -0
- package/dist/lib/auth-rate-limit.d.ts.map +1 -0
- package/dist/lib/auth-rate-limit.js +91 -0
- package/dist/lib/auth-rate-limit.js.map +1 -0
- package/dist/lib/auto-update-checker.d.ts +10 -0
- package/dist/lib/auto-update-checker.d.ts.map +1 -0
- package/dist/lib/auto-update-checker.js +216 -0
- package/dist/lib/auto-update-checker.js.map +1 -0
- package/dist/lib/capability-policy.d.ts +18 -0
- package/dist/lib/capability-policy.d.ts.map +1 -0
- package/dist/lib/capability-policy.js +150 -0
- package/dist/lib/capability-policy.js.map +1 -0
- package/dist/lib/circuit-breaker.d.ts +34 -0
- package/dist/lib/circuit-breaker.d.ts.map +1 -0
- package/dist/lib/circuit-breaker.js +124 -0
- package/dist/lib/circuit-breaker.js.map +1 -0
- package/dist/lib/cli.d.ts +64 -0
- package/dist/lib/cli.d.ts.map +1 -0
- package/dist/lib/cli.js +274 -0
- package/dist/lib/cli.js.map +1 -0
- package/dist/lib/codex-cli/observability.d.ts +22 -0
- package/dist/lib/codex-cli/observability.d.ts.map +1 -0
- package/dist/lib/codex-cli/observability.js +36 -0
- package/dist/lib/codex-cli/observability.js.map +1 -0
- package/dist/lib/codex-cli/state.d.ts +86 -0
- package/dist/lib/codex-cli/state.d.ts.map +1 -0
- package/dist/lib/codex-cli/state.js +470 -0
- package/dist/lib/codex-cli/state.js.map +1 -0
- package/dist/lib/codex-cli/sync.d.ts +27 -0
- package/dist/lib/codex-cli/sync.d.ts.map +1 -0
- package/dist/lib/codex-cli/sync.js +325 -0
- package/dist/lib/codex-cli/sync.js.map +1 -0
- package/dist/lib/codex-cli/writer.d.ts +12 -0
- package/dist/lib/codex-cli/writer.d.ts.map +1 -0
- package/dist/lib/codex-cli/writer.js +388 -0
- package/dist/lib/codex-cli/writer.js.map +1 -0
- package/dist/lib/codex-manager.d.ts +2 -0
- package/dist/lib/codex-manager.d.ts.map +1 -0
- package/dist/lib/codex-manager.js +4841 -0
- package/dist/lib/codex-manager.js.map +1 -0
- package/dist/lib/config.d.ts +269 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +789 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/constants.d.ts +78 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +78 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/context-overflow.d.ts +27 -0
- package/dist/lib/context-overflow.d.ts.map +1 -0
- package/dist/lib/context-overflow.js +124 -0
- package/dist/lib/context-overflow.js.map +1 -0
- package/dist/lib/dashboard-settings.d.ts +90 -0
- package/dist/lib/dashboard-settings.d.ts.map +1 -0
- package/dist/lib/dashboard-settings.js +327 -0
- package/dist/lib/dashboard-settings.js.map +1 -0
- package/dist/lib/entitlement-cache.d.ts +41 -0
- package/dist/lib/entitlement-cache.d.ts.map +1 -0
- package/dist/lib/entitlement-cache.js +137 -0
- package/dist/lib/entitlement-cache.js.map +1 -0
- package/dist/lib/errors.d.ts +113 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +103 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/forecast.d.ts +42 -0
- package/dist/lib/forecast.d.ts.map +1 -0
- package/dist/lib/forecast.js +256 -0
- package/dist/lib/forecast.js.map +1 -0
- package/dist/lib/health.d.ts +33 -0
- package/dist/lib/health.d.ts.map +1 -0
- package/dist/lib/health.js +70 -0
- package/dist/lib/health.js.map +1 -0
- package/dist/lib/index.d.ts +32 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +32 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/live-account-sync.d.ts +39 -0
- package/dist/lib/live-account-sync.d.ts.map +1 -0
- package/dist/lib/live-account-sync.js +196 -0
- package/dist/lib/live-account-sync.js.map +1 -0
- package/dist/lib/logger.d.ts +40 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +364 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/oauth-success.html +338 -0
- package/dist/lib/parallel-probe.d.ts +28 -0
- package/dist/lib/parallel-probe.d.ts.map +1 -0
- package/dist/lib/parallel-probe.js +97 -0
- package/dist/lib/parallel-probe.js.map +1 -0
- package/dist/lib/preemptive-quota-scheduler.d.ts +53 -0
- package/dist/lib/preemptive-quota-scheduler.d.ts.map +1 -0
- package/dist/lib/preemptive-quota-scheduler.js +220 -0
- package/dist/lib/preemptive-quota-scheduler.js.map +1 -0
- package/dist/lib/proactive-refresh.d.ts +66 -0
- package/dist/lib/proactive-refresh.d.ts.map +1 -0
- package/dist/lib/proactive-refresh.js +143 -0
- package/dist/lib/proactive-refresh.js.map +1 -0
- package/dist/lib/prompts/codex-opencode-bridge.d.ts +19 -0
- package/dist/lib/prompts/codex-opencode-bridge.d.ts.map +1 -0
- package/dist/lib/prompts/codex-opencode-bridge.js +169 -0
- package/dist/lib/prompts/codex-opencode-bridge.js.map +1 -0
- package/dist/lib/prompts/codex.d.ts +41 -0
- package/dist/lib/prompts/codex.d.ts.map +1 -0
- package/dist/lib/prompts/codex.js +383 -0
- package/dist/lib/prompts/codex.js.map +1 -0
- package/dist/lib/prompts/opencode-codex.d.ts +25 -0
- package/dist/lib/prompts/opencode-codex.d.ts.map +1 -0
- package/dist/lib/prompts/opencode-codex.js +270 -0
- package/dist/lib/prompts/opencode-codex.js.map +1 -0
- package/dist/lib/quota-cache.d.ts +68 -0
- package/dist/lib/quota-cache.d.ts.map +1 -0
- package/dist/lib/quota-cache.js +224 -0
- package/dist/lib/quota-cache.js.map +1 -0
- package/dist/lib/quota-probe.d.ts +49 -0
- package/dist/lib/quota-probe.d.ts.map +1 -0
- package/dist/lib/quota-probe.js +368 -0
- package/dist/lib/quota-probe.js.map +1 -0
- package/dist/lib/recovery/constants.d.ts +12 -0
- package/dist/lib/recovery/constants.d.ts.map +1 -0
- package/dist/lib/recovery/constants.js +31 -0
- package/dist/lib/recovery/constants.js.map +1 -0
- package/dist/lib/recovery/index.d.ts +12 -0
- package/dist/lib/recovery/index.d.ts.map +1 -0
- package/dist/lib/recovery/index.js +12 -0
- package/dist/lib/recovery/index.js.map +1 -0
- package/dist/lib/recovery/storage.d.ts +24 -0
- package/dist/lib/recovery/storage.d.ts.map +1 -0
- package/dist/lib/recovery/storage.js +362 -0
- package/dist/lib/recovery/storage.js.map +1 -0
- package/dist/lib/recovery/types.d.ts +116 -0
- package/dist/lib/recovery/types.d.ts.map +1 -0
- package/dist/lib/recovery/types.js +7 -0
- package/dist/lib/recovery/types.js.map +1 -0
- package/dist/lib/recovery.d.ts +31 -0
- package/dist/lib/recovery.d.ts.map +1 -0
- package/dist/lib/recovery.js +313 -0
- package/dist/lib/recovery.js.map +1 -0
- package/dist/lib/refresh-guardian.d.ts +31 -0
- package/dist/lib/refresh-guardian.d.ts.map +1 -0
- package/dist/lib/refresh-guardian.js +151 -0
- package/dist/lib/refresh-guardian.js.map +1 -0
- package/dist/lib/refresh-lease.d.ts +37 -0
- package/dist/lib/refresh-lease.d.ts.map +1 -0
- package/dist/lib/refresh-lease.js +335 -0
- package/dist/lib/refresh-lease.js.map +1 -0
- package/dist/lib/refresh-queue.d.ts +117 -0
- package/dist/lib/refresh-queue.d.ts.map +1 -0
- package/dist/lib/refresh-queue.js +297 -0
- package/dist/lib/refresh-queue.js.map +1 -0
- package/dist/lib/request/failure-policy.d.ts +42 -0
- package/dist/lib/request/failure-policy.d.ts.map +1 -0
- package/dist/lib/request/failure-policy.js +133 -0
- package/dist/lib/request/failure-policy.js.map +1 -0
- package/dist/lib/request/fetch-helpers.d.ts +152 -0
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -0
- package/dist/lib/request/fetch-helpers.js +704 -0
- package/dist/lib/request/fetch-helpers.js.map +1 -0
- package/dist/lib/request/helpers/input-utils.d.ts +7 -0
- package/dist/lib/request/helpers/input-utils.d.ts.map +1 -0
- package/dist/lib/request/helpers/input-utils.js +214 -0
- package/dist/lib/request/helpers/input-utils.js.map +1 -0
- package/dist/lib/request/helpers/model-map.d.ts +28 -0
- package/dist/lib/request/helpers/model-map.d.ts.map +1 -0
- package/dist/lib/request/helpers/model-map.js +133 -0
- package/dist/lib/request/helpers/model-map.js.map +1 -0
- package/dist/lib/request/helpers/tool-utils.d.ts +29 -0
- package/dist/lib/request/helpers/tool-utils.d.ts.map +1 -0
- package/dist/lib/request/helpers/tool-utils.js +117 -0
- package/dist/lib/request/helpers/tool-utils.js.map +1 -0
- package/dist/lib/request/rate-limit-backoff.d.ts +17 -0
- package/dist/lib/request/rate-limit-backoff.d.ts.map +1 -0
- package/dist/lib/request/rate-limit-backoff.js +83 -0
- package/dist/lib/request/rate-limit-backoff.js.map +1 -0
- package/dist/lib/request/request-transformer.d.ts +107 -0
- package/dist/lib/request/request-transformer.d.ts.map +1 -0
- package/dist/lib/request/request-transformer.js +814 -0
- package/dist/lib/request/request-transformer.js.map +1 -0
- package/dist/lib/request/response-handler.d.ts +23 -0
- package/dist/lib/request/response-handler.d.ts.map +1 -0
- package/dist/lib/request/response-handler.js +155 -0
- package/dist/lib/request/response-handler.js.map +1 -0
- package/dist/lib/request/stream-failover.d.ts +21 -0
- package/dist/lib/request/stream-failover.d.ts.map +1 -0
- package/dist/lib/request/stream-failover.js +204 -0
- package/dist/lib/request/stream-failover.js.map +1 -0
- package/dist/lib/rotation.d.ts +146 -0
- package/dist/lib/rotation.d.ts.map +1 -0
- package/dist/lib/rotation.js +321 -0
- package/dist/lib/rotation.js.map +1 -0
- package/dist/lib/runtime-paths.d.ts +58 -0
- package/dist/lib/runtime-paths.d.ts.map +1 -0
- package/dist/lib/runtime-paths.js +164 -0
- package/dist/lib/runtime-paths.js.map +1 -0
- package/dist/lib/schemas.d.ts +435 -0
- package/dist/lib/schemas.d.ts.map +1 -0
- package/dist/lib/schemas.js +268 -0
- package/dist/lib/schemas.js.map +1 -0
- package/dist/lib/session-affinity.d.ts +23 -0
- package/dist/lib/session-affinity.d.ts.map +1 -0
- package/dist/lib/session-affinity.js +127 -0
- package/dist/lib/session-affinity.js.map +1 -0
- package/dist/lib/shutdown.d.ts +7 -0
- package/dist/lib/shutdown.d.ts.map +1 -0
- package/dist/lib/shutdown.js +43 -0
- package/dist/lib/shutdown.js.map +1 -0
- package/dist/lib/storage/migrations.d.ts +59 -0
- package/dist/lib/storage/migrations.d.ts.map +1 -0
- package/dist/lib/storage/migrations.js +41 -0
- package/dist/lib/storage/migrations.js.map +1 -0
- package/dist/lib/storage/paths.d.ts +51 -0
- package/dist/lib/storage/paths.d.ts.map +1 -0
- package/dist/lib/storage/paths.js +152 -0
- package/dist/lib/storage/paths.js.map +1 -0
- package/dist/lib/storage.d.ts +106 -0
- package/dist/lib/storage.d.ts.map +1 -0
- package/dist/lib/storage.js +896 -0
- package/dist/lib/storage.js.map +1 -0
- package/dist/lib/table-formatter.d.ts +32 -0
- package/dist/lib/table-formatter.d.ts.map +1 -0
- package/dist/lib/table-formatter.js +44 -0
- package/dist/lib/table-formatter.js.map +1 -0
- package/dist/lib/tools/hashline-tools.d.ts +51 -0
- package/dist/lib/tools/hashline-tools.d.ts.map +1 -0
- package/dist/lib/tools/hashline-tools.js +456 -0
- package/dist/lib/tools/hashline-tools.js.map +1 -0
- package/dist/lib/types.d.ts +130 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/ui/ansi.d.ts +40 -0
- package/dist/lib/ui/ansi.d.ts.map +1 -0
- package/dist/lib/ui/ansi.js +68 -0
- package/dist/lib/ui/ansi.js.map +1 -0
- package/dist/lib/ui/auth-menu.d.ts +76 -0
- package/dist/lib/ui/auth-menu.d.ts.map +1 -0
- package/dist/lib/ui/auth-menu.js +590 -0
- package/dist/lib/ui/auth-menu.js.map +1 -0
- package/dist/lib/ui/confirm.d.ts +11 -0
- package/dist/lib/ui/confirm.d.ts.map +1 -0
- package/dist/lib/ui/confirm.js +29 -0
- package/dist/lib/ui/confirm.js.map +1 -0
- package/dist/lib/ui/copy.d.ts +123 -0
- package/dist/lib/ui/copy.d.ts.map +1 -0
- package/dist/lib/ui/copy.js +127 -0
- package/dist/lib/ui/copy.js.map +1 -0
- package/dist/lib/ui/format.d.ts +62 -0
- package/dist/lib/ui/format.d.ts.map +1 -0
- package/dist/lib/ui/format.js +205 -0
- package/dist/lib/ui/format.js.map +1 -0
- package/dist/lib/ui/runtime.d.ts +43 -0
- package/dist/lib/ui/runtime.d.ts.map +1 -0
- package/dist/lib/ui/runtime.js +69 -0
- package/dist/lib/ui/runtime.js.map +1 -0
- package/dist/lib/ui/select.d.ts +60 -0
- package/dist/lib/ui/select.d.ts.map +1 -0
- package/dist/lib/ui/select.js +467 -0
- package/dist/lib/ui/select.js.map +1 -0
- package/dist/lib/ui/theme.d.ts +56 -0
- package/dist/lib/ui/theme.d.ts.map +1 -0
- package/dist/lib/ui/theme.js +186 -0
- package/dist/lib/ui/theme.js.map +1 -0
- package/dist/lib/unified-settings.d.ts +71 -0
- package/dist/lib/unified-settings.d.ts.map +1 -0
- package/dist/lib/unified-settings.js +299 -0
- package/dist/lib/unified-settings.js.map +1 -0
- package/dist/lib/utils.d.ts +29 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +54 -0
- package/dist/lib/utils.js.map +1 -0
- package/package.json +115 -0
- package/scripts/audit-dev-allowlist.js +128 -0
- package/scripts/bench-format/hashline-v2.mjs +642 -0
- package/scripts/bench-format/models.mjs +105 -0
- package/scripts/bench-format/opencode.mjs +205 -0
- package/scripts/bench-format/render.mjs +496 -0
- package/scripts/bench-format/stats.mjs +54 -0
- package/scripts/bench-format/tasks.mjs +151 -0
- package/scripts/benchmark-edit-formats.mjs +1161 -0
- package/scripts/benchmark-render-dashboard.mjs +49 -0
- package/scripts/codex-multi-auth.js +6 -0
- package/scripts/codex-routing.js +34 -0
- package/scripts/codex.js +122 -0
- package/scripts/copy-oauth-success.js +37 -0
- package/scripts/install-opencode-codex-auth.js +193 -0
- package/scripts/test-all-models.sh +7 -0
- package/scripts/test-model-matrix.js +424 -0
- package/scripts/validate-model-map.sh +7 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limit state tracking with time-window deduplication.
|
|
3
|
+
*
|
|
4
|
+
* Matches the antigravity plugin behavior:
|
|
5
|
+
* - Deduplicate concurrent 429s so parallel requests don't over-increment backoff.
|
|
6
|
+
* - Reset backoff after a quiet period.
|
|
7
|
+
*/
|
|
8
|
+
const RATE_LIMIT_DEDUP_WINDOW_MS = 2000;
|
|
9
|
+
const RATE_LIMIT_STATE_RESET_MS = 120_000;
|
|
10
|
+
const MAX_BACKOFF_MS = 60_000;
|
|
11
|
+
export const RATE_LIMIT_SHORT_RETRY_THRESHOLD_MS = 5000;
|
|
12
|
+
const rateLimitStateByAccountQuota = new Map();
|
|
13
|
+
function normalizeDelayMs(value, fallback) {
|
|
14
|
+
const candidate = typeof value === "number" && Number.isFinite(value) ? value : fallback;
|
|
15
|
+
return Math.max(0, Math.floor(candidate));
|
|
16
|
+
}
|
|
17
|
+
function pruneStaleRateLimitState() {
|
|
18
|
+
const now = Date.now();
|
|
19
|
+
for (const [key, state] of rateLimitStateByAccountQuota) {
|
|
20
|
+
if (now - state.lastAt > RATE_LIMIT_STATE_RESET_MS) {
|
|
21
|
+
rateLimitStateByAccountQuota.delete(key);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Compute rate-limit backoff for an account+quota key.
|
|
27
|
+
*/
|
|
28
|
+
export function getRateLimitBackoff(accountIndex, quotaKey, serverRetryAfterMs) {
|
|
29
|
+
pruneStaleRateLimitState();
|
|
30
|
+
const now = Date.now();
|
|
31
|
+
const stateKey = `${accountIndex}:${quotaKey}`;
|
|
32
|
+
const previous = rateLimitStateByAccountQuota.get(stateKey);
|
|
33
|
+
const baseDelay = normalizeDelayMs(serverRetryAfterMs, 1000);
|
|
34
|
+
if (previous && now - previous.lastAt < RATE_LIMIT_DEDUP_WINDOW_MS) {
|
|
35
|
+
const backoffDelay = Math.min(baseDelay * Math.pow(2, previous.consecutive429 - 1), MAX_BACKOFF_MS);
|
|
36
|
+
return {
|
|
37
|
+
attempt: previous.consecutive429,
|
|
38
|
+
delayMs: Math.max(baseDelay, backoffDelay),
|
|
39
|
+
isDuplicate: true,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const attempt = previous && now - previous.lastAt < RATE_LIMIT_STATE_RESET_MS
|
|
43
|
+
? previous.consecutive429 + 1
|
|
44
|
+
: 1;
|
|
45
|
+
rateLimitStateByAccountQuota.set(stateKey, {
|
|
46
|
+
consecutive429: attempt,
|
|
47
|
+
lastAt: now,
|
|
48
|
+
quotaKey,
|
|
49
|
+
});
|
|
50
|
+
const backoffDelay = Math.min(baseDelay * Math.pow(2, attempt - 1), MAX_BACKOFF_MS);
|
|
51
|
+
return {
|
|
52
|
+
attempt,
|
|
53
|
+
delayMs: Math.max(baseDelay, backoffDelay),
|
|
54
|
+
isDuplicate: false,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function resetRateLimitBackoff(accountIndex, quotaKey) {
|
|
58
|
+
rateLimitStateByAccountQuota.delete(`${accountIndex}:${quotaKey}`);
|
|
59
|
+
}
|
|
60
|
+
export function clearRateLimitBackoffState() {
|
|
61
|
+
rateLimitStateByAccountQuota.clear();
|
|
62
|
+
}
|
|
63
|
+
const BACKOFF_MULTIPLIERS = {
|
|
64
|
+
quota: 3.0,
|
|
65
|
+
tokens: 1.5,
|
|
66
|
+
concurrent: 0.5,
|
|
67
|
+
unknown: 1.0,
|
|
68
|
+
};
|
|
69
|
+
export function calculateBackoffMs(baseDelayMs, attempt, reason = "unknown") {
|
|
70
|
+
const multiplier = BACKOFF_MULTIPLIERS[reason] ?? 1.0;
|
|
71
|
+
const exponentialDelay = baseDelayMs * Math.pow(2, attempt - 1);
|
|
72
|
+
return Math.min(Math.floor(exponentialDelay * multiplier), MAX_BACKOFF_MS);
|
|
73
|
+
}
|
|
74
|
+
export function getRateLimitBackoffWithReason(accountIndex, quotaKey, serverRetryAfterMs, reason = "unknown") {
|
|
75
|
+
const result = getRateLimitBackoff(accountIndex, quotaKey, serverRetryAfterMs);
|
|
76
|
+
const adjustedDelay = calculateBackoffMs(result.delayMs, result.attempt, reason);
|
|
77
|
+
return {
|
|
78
|
+
...result,
|
|
79
|
+
delayMs: adjustedDelay,
|
|
80
|
+
reason,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=rate-limit-backoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit-backoff.js","sourceRoot":"","sources":["../../../lib/request/rate-limit-backoff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { ConfigOptions, InputItem, ReasoningConfig, RequestBody, UserConfig } from "../types.js";
|
|
2
|
+
type FastSessionStrategy = "hybrid" | "always";
|
|
3
|
+
export { isOpenCodeSystemPrompt, filterOpenCodeSystemPromptsWithCachedPrompt, } from "./helpers/input-utils.js";
|
|
4
|
+
/**
|
|
5
|
+
* Normalize model name to Codex-supported variants
|
|
6
|
+
*
|
|
7
|
+
* Uses explicit model map for known models, with fallback pattern matching
|
|
8
|
+
* for unknown/custom model names.
|
|
9
|
+
*
|
|
10
|
+
* @param model - Original model name (e.g., "gpt-5-codex-low", "openai/gpt-5-codex")
|
|
11
|
+
* @returns Normalized model name (e.g., "gpt-5-codex", "gpt-5.1-codex-max")
|
|
12
|
+
*/
|
|
13
|
+
export declare function normalizeModel(model: string | undefined): string;
|
|
14
|
+
/**
|
|
15
|
+
* Extract configuration for a specific model
|
|
16
|
+
* Merges global options with model-specific options (model-specific takes precedence)
|
|
17
|
+
* @param modelName - Model name (e.g., "gpt-5-codex")
|
|
18
|
+
* @param userConfig - Full user configuration object
|
|
19
|
+
* @returns Merged configuration for this model
|
|
20
|
+
*/
|
|
21
|
+
export declare function getModelConfig(modelName: string, userConfig?: UserConfig): ConfigOptions;
|
|
22
|
+
/**
|
|
23
|
+
* Apply fast-session defaults to reduce latency/cost for interactive sessions.
|
|
24
|
+
* Explicit user/model overrides still take precedence.
|
|
25
|
+
*/
|
|
26
|
+
export declare function applyFastSessionDefaults(userConfig?: UserConfig): UserConfig;
|
|
27
|
+
/**
|
|
28
|
+
* Configure reasoning parameters based on model variant and user config
|
|
29
|
+
*
|
|
30
|
+
* NOTE: This plugin follows Codex CLI defaults instead of opencode defaults because:
|
|
31
|
+
* - We're accessing the ChatGPT backend API (not OpenAI Platform API)
|
|
32
|
+
* - opencode explicitly excludes gpt-5-codex from automatic reasoning configuration
|
|
33
|
+
* - Codex CLI has been thoroughly tested against this backend
|
|
34
|
+
*
|
|
35
|
+
* @param originalModel - Original model name before normalization
|
|
36
|
+
* @param userConfig - User configuration object
|
|
37
|
+
* @returns Reasoning configuration
|
|
38
|
+
*/
|
|
39
|
+
export declare function getReasoningConfig(modelName: string | undefined, userConfig?: ConfigOptions): ReasoningConfig;
|
|
40
|
+
/**
|
|
41
|
+
* Filter input array for stateless Codex API (store: false)
|
|
42
|
+
*
|
|
43
|
+
* Two transformations needed:
|
|
44
|
+
* 1. Remove AI SDK-specific items (not supported by Codex API)
|
|
45
|
+
* 2. Strip IDs from all remaining items (stateless mode)
|
|
46
|
+
*
|
|
47
|
+
* AI SDK constructs to REMOVE (not in OpenAI Responses API spec):
|
|
48
|
+
* - type: "item_reference" - AI SDK uses this for server-side state lookup
|
|
49
|
+
*
|
|
50
|
+
* Items to KEEP (strip IDs):
|
|
51
|
+
* - type: "message" - Conversation messages (provides context to LLM)
|
|
52
|
+
* - type: "function_call" - Tool calls from conversation
|
|
53
|
+
* - type: "function_call_output" - Tool results from conversation
|
|
54
|
+
*
|
|
55
|
+
* Context is maintained through:
|
|
56
|
+
* - Full message history (without IDs)
|
|
57
|
+
* - reasoning.encrypted_content (for reasoning continuity)
|
|
58
|
+
*
|
|
59
|
+
* @param input - Original input array from OpenCode/AI SDK
|
|
60
|
+
* @returns Filtered input array compatible with Codex API
|
|
61
|
+
*/
|
|
62
|
+
export declare function filterInput(input: InputItem[] | undefined): InputItem[] | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Trim long stateless histories for low-latency sessions.
|
|
65
|
+
* Keeps a small leading developer/system context plus the most recent items.
|
|
66
|
+
*/
|
|
67
|
+
export declare function trimInputForFastSession(input: InputItem[] | undefined, maxItems: number, options?: {
|
|
68
|
+
preferLatestUserOnly?: boolean;
|
|
69
|
+
}): InputItem[] | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Filter out OpenCode system prompts from input
|
|
72
|
+
* Used in CODEX_MODE to replace OpenCode prompts with Codex-OpenCode bridge
|
|
73
|
+
* @param input - Input array
|
|
74
|
+
* @returns Input array without OpenCode system prompts
|
|
75
|
+
*/
|
|
76
|
+
export declare function filterOpenCodeSystemPrompts(input: InputItem[] | undefined): Promise<InputItem[] | undefined>;
|
|
77
|
+
/**
|
|
78
|
+
* Add Codex-OpenCode bridge message to input if tools are present
|
|
79
|
+
* @param input - Input array
|
|
80
|
+
* @param hasTools - Whether tools are present in request
|
|
81
|
+
* @returns Input array with bridge message prepended if needed
|
|
82
|
+
*/
|
|
83
|
+
export declare function addCodexBridgeMessage(input: InputItem[] | undefined, hasTools: boolean): InputItem[] | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Add tool remapping message to input if tools are present
|
|
86
|
+
* @param input - Input array
|
|
87
|
+
* @param hasTools - Whether tools are present in request
|
|
88
|
+
* @returns Input array with tool remap message prepended if needed
|
|
89
|
+
*/
|
|
90
|
+
export declare function addToolRemapMessage(input: InputItem[] | undefined, hasTools: boolean): InputItem[] | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Transform request body for Codex API
|
|
93
|
+
*
|
|
94
|
+
* NOTE: Configuration follows Codex CLI patterns instead of opencode defaults:
|
|
95
|
+
* - opencode sets textVerbosity="low" for gpt-5, but Codex CLI uses "medium"
|
|
96
|
+
* - opencode excludes gpt-5-codex from reasoning configuration
|
|
97
|
+
* - This plugin uses store=false (stateless), requiring encrypted reasoning content
|
|
98
|
+
*
|
|
99
|
+
* @param body - Original request body
|
|
100
|
+
* @param codexInstructions - Codex system instructions
|
|
101
|
+
* @param userConfig - User configuration from loader
|
|
102
|
+
* @param codexMode - Enable CODEX_MODE (bridge prompt instead of tool remap) - defaults to true
|
|
103
|
+
* @param fastSession - Force low-latency output settings for faster responses
|
|
104
|
+
* @returns Transformed request body
|
|
105
|
+
*/
|
|
106
|
+
export declare function transformRequestBody(body: RequestBody, codexInstructions: string, userConfig?: UserConfig, codexMode?: boolean, fastSession?: boolean, fastSessionStrategy?: FastSessionStrategy, fastSessionMaxInputItems?: number): Promise<RequestBody>;
|
|
107
|
+
//# sourceMappingURL=request-transformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-transformer.d.ts","sourceRoot":"","sources":["../../../lib/request/request-transformer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACX,aAAa,EACb,SAAS,EACT,eAAe,EACf,WAAW,EACX,UAAU,EACV,MAAM,aAAa,CAAC;AAGrB,KAAK,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAK/C,OAAO,EACN,sBAAsB,EACtB,2CAA2C,GAC3C,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAyGhE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,UAAuC,GACjD,aAAa,CA+Ef;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,UAAU,GAAE,UAAuC,GACjD,UAAU,CAUZ;AA4HD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,GAAE,aAAkB,GAC5B,eAAe,CAoHjB;AAaD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAC1B,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAC5B,SAAS,EAAE,GAAG,SAAS,CAoBzB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1C,SAAS,EAAE,GAAG,SAAS,CAkEzB;AA2FD;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAChD,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAC5B,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAalC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAC9B,QAAQ,EAAE,OAAO,GACf,SAAS,EAAE,GAAG,SAAS,CAezB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAC9B,QAAQ,EAAE,OAAO,GACf,SAAS,EAAE,GAAG,SAAS,CAezB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CACzC,IAAI,EAAE,WAAW,EACjB,iBAAiB,EAAE,MAAM,EACzB,UAAU,GAAE,UAAuC,EACnD,SAAS,UAAO,EAChB,WAAW,UAAQ,EACnB,mBAAmB,GAAE,mBAA8B,EACnD,wBAAwB,SAAK,GAC3B,OAAO,CAAC,WAAW,CAAC,CAsKtB"}
|