codex-multi-auth 2.17.2 → 2.18.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/.codex-plugin/plugin.json +1 -1
- package/README.md +86 -425
- package/config/README.md +1 -1
- package/config/codex-legacy.json +12 -212
- package/config/codex-modern.json +4 -80
- package/config/minimal-codex.json +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/lib/account-policy.d.ts +18 -2
- package/dist/lib/account-policy.js +97 -40
- package/dist/lib/accounts/rate-limits.d.ts +0 -1
- package/dist/lib/accounts.d.ts +0 -1
- package/dist/lib/accounts.js +4 -5
- package/dist/lib/api-route-store.d.ts +0 -1
- package/dist/lib/audit.d.ts +0 -1
- package/dist/lib/audit.js +43 -12
- package/dist/lib/auth/account-access.d.ts +0 -1
- package/dist/lib/auth/account-access.js +5 -1
- package/dist/lib/auth/auth.d.ts +4 -3
- package/dist/lib/auth/auth.js +220 -28
- package/dist/lib/auth/browser.d.ts +0 -1
- package/dist/lib/auth/callback-guidance.d.ts +0 -1
- package/dist/lib/auth/device-auth.d.ts +0 -1
- package/dist/lib/auth/index.d.ts +0 -1
- package/dist/lib/auth/org-override.d.ts +0 -1
- package/dist/lib/auth/server.d.ts +1 -2
- package/dist/lib/auth/server.js +100 -53
- package/dist/lib/auth/token-utils.d.ts +0 -1
- package/dist/lib/auth-rate-limit.d.ts +0 -1
- package/dist/lib/budget-guard.d.ts +16 -2
- package/dist/lib/budget-guard.js +123 -43
- package/dist/lib/capability-policy.d.ts +0 -1
- package/dist/lib/circuit-breaker.d.ts +20 -1
- package/dist/lib/circuit-breaker.js +24 -5
- package/dist/lib/cli.d.ts +0 -1
- package/dist/lib/codex-cli/index.d.ts +0 -1
- package/dist/lib/codex-cli/observability.d.ts +0 -1
- package/dist/lib/codex-cli/state.d.ts +0 -1
- package/dist/lib/codex-cli/sync.d.ts +0 -1
- package/dist/lib/codex-cli/writer.d.ts +0 -1
- package/dist/lib/codex-manager/account-credentials.d.ts +0 -1
- package/dist/lib/codex-manager/account-manager-commands.d.ts +0 -1
- package/dist/lib/codex-manager/account-pool-write.d.ts +0 -1
- package/dist/lib/codex-manager/active-account-sync.d.ts +6 -0
- package/dist/lib/codex-manager/active-account-sync.js +336 -0
- package/dist/lib/codex-manager/api-login-menu.d.ts +0 -1
- package/dist/lib/codex-manager/backend-category-entry.d.ts +0 -1
- package/dist/lib/codex-manager/backend-category-helpers.d.ts +0 -1
- package/dist/lib/codex-manager/backend-category-prompt.d.ts +0 -1
- package/dist/lib/codex-manager/backend-settings-controller.d.ts +0 -1
- package/dist/lib/codex-manager/backend-settings-entry.d.ts +0 -1
- package/dist/lib/codex-manager/backend-settings-helpers.d.ts +0 -1
- package/dist/lib/codex-manager/backend-settings-prompt.d.ts +0 -1
- package/dist/lib/codex-manager/backend-settings-schema.d.ts +0 -1
- package/dist/lib/codex-manager/behavior-settings-panel.d.ts +0 -1
- package/dist/lib/codex-manager/commands/account.d.ts +8 -3
- package/dist/lib/codex-manager/commands/account.js +46 -34
- package/dist/lib/codex-manager/commands/best.d.ts +0 -1
- package/dist/lib/codex-manager/commands/bridge.d.ts +0 -1
- package/dist/lib/codex-manager/commands/budget.d.ts +8 -3
- package/dist/lib/codex-manager/commands/budget.js +6 -4
- package/dist/lib/codex-manager/commands/check.d.ts +0 -1
- package/dist/lib/codex-manager/commands/config-explain.d.ts +0 -1
- package/dist/lib/codex-manager/commands/debug-bundle.d.ts +0 -1
- package/dist/lib/codex-manager/commands/forecast.d.ts +0 -1
- package/dist/lib/codex-manager/commands/history.d.ts +0 -1
- package/dist/lib/codex-manager/commands/init-config.d.ts +0 -1
- package/dist/lib/codex-manager/commands/integrations.d.ts +0 -1
- package/dist/lib/codex-manager/commands/limits.d.ts +0 -1
- package/dist/lib/codex-manager/commands/models.d.ts +0 -1
- package/dist/lib/codex-manager/commands/monitor.d.ts +0 -1
- package/dist/lib/codex-manager/commands/report.d.ts +0 -1
- package/dist/lib/codex-manager/commands/resets.d.ts +0 -1
- package/dist/lib/codex-manager/commands/resets.js +9 -1
- package/dist/lib/codex-manager/commands/rotation.d.ts +0 -1
- package/dist/lib/codex-manager/commands/status.d.ts +0 -1
- package/dist/lib/codex-manager/commands/switch.d.ts +0 -1
- package/dist/lib/codex-manager/commands/uninstall.d.ts +0 -1
- package/dist/lib/codex-manager/commands/unpin.d.ts +0 -1
- package/dist/lib/codex-manager/commands/usage.d.ts +0 -1
- package/dist/lib/codex-manager/commands/verify.d.ts +0 -1
- package/dist/lib/codex-manager/commands/why-selected.d.ts +0 -1
- package/dist/lib/codex-manager/commands/workspace.d.ts +0 -1
- package/dist/lib/codex-manager/dashboard-display-panel.d.ts +0 -1
- package/dist/lib/codex-manager/dashboard-formatters.d.ts +0 -1
- package/dist/lib/codex-manager/dashboard-settings-controller.d.ts +0 -1
- package/dist/lib/codex-manager/dashboard-settings-data.d.ts +0 -1
- package/dist/lib/codex-manager/dashboard-settings-entry.d.ts +0 -1
- package/dist/lib/codex-manager/experimental-settings-entry.d.ts +0 -1
- package/dist/lib/codex-manager/experimental-settings-prompt.d.ts +0 -1
- package/dist/lib/codex-manager/experimental-settings-schema.d.ts +0 -1
- package/dist/lib/codex-manager/experimental-sync-target-entry.d.ts +0 -1
- package/dist/lib/codex-manager/experimental-sync-target.d.ts +0 -1
- package/dist/lib/codex-manager/forecast-report-shared.d.ts +0 -1
- package/dist/lib/codex-manager/formatters/account-formatters.d.ts +0 -1
- package/dist/lib/codex-manager/formatters/index.d.ts +0 -1
- package/dist/lib/codex-manager/formatters/model-formatters.d.ts +0 -1
- package/dist/lib/codex-manager/formatters/quota-formatters.d.ts +0 -1
- package/dist/lib/codex-manager/formatters/text-style.d.ts +0 -1
- package/dist/lib/codex-manager/health-check.d.ts +0 -1
- package/dist/lib/codex-manager/help.d.ts +0 -1
- package/dist/lib/codex-manager/login-action-panel.d.ts +0 -1
- package/dist/lib/codex-manager/login-flow.d.ts +0 -1
- package/dist/lib/codex-manager/login-menu-actions.d.ts +0 -1
- package/dist/lib/codex-manager/login-menu-data.d.ts +0 -1
- package/dist/lib/codex-manager/login-oauth.d.ts +0 -1
- package/dist/lib/codex-manager/login-workspace-choice.d.ts +0 -1
- package/dist/lib/codex-manager/manual-callback.d.ts +0 -1
- package/dist/lib/codex-manager/persist-selected-account.d.ts +0 -1
- package/dist/lib/codex-manager/quota-cache-helpers.d.ts +0 -1
- package/dist/lib/codex-manager/rate-limit-markers.d.ts +0 -1
- package/dist/lib/codex-manager/repair-commands.d.ts +0 -1
- package/dist/lib/codex-manager/settings-hub/backend.d.ts +0 -1
- package/dist/lib/codex-manager/settings-hub/dashboard.d.ts +0 -1
- package/dist/lib/codex-manager/settings-hub/experimental.d.ts +0 -1
- package/dist/lib/codex-manager/settings-hub/index.d.ts +0 -1
- package/dist/lib/codex-manager/settings-hub/shared.d.ts +0 -1
- package/dist/lib/codex-manager/settings-hub-entry.d.ts +0 -1
- package/dist/lib/codex-manager/settings-hub-menu.d.ts +0 -1
- package/dist/lib/codex-manager/settings-hub-prompt.d.ts +0 -1
- package/dist/lib/codex-manager/settings-hub.d.ts +0 -1
- package/dist/lib/codex-manager/settings-panels.d.ts +0 -1
- package/dist/lib/codex-manager/settings-persist-utils.d.ts +0 -1
- package/dist/lib/codex-manager/settings-preview.d.ts +0 -1
- package/dist/lib/codex-manager/settings-write-queue.d.ts +0 -1
- package/dist/lib/codex-manager/statusline-settings-panel.d.ts +0 -1
- package/dist/lib/codex-manager/theme-settings-panel.d.ts +0 -1
- package/dist/lib/codex-manager/unified-settings-controller.d.ts +0 -1
- package/dist/lib/codex-manager/unified-settings-entry.d.ts +0 -1
- package/dist/lib/codex-manager.d.ts +1 -2
- package/dist/lib/codex-manager.js +5 -95
- package/dist/lib/concurrency.d.ts +0 -1
- package/dist/lib/config-schema.d.ts +0 -1
- package/dist/lib/config.d.ts +0 -1
- package/dist/lib/config.js +46 -241
- package/dist/lib/constants.d.ts +0 -1
- package/dist/lib/context-budget/model-context-windows.d.ts +1 -2
- package/dist/lib/context-budget/model-context-windows.js +10 -13
- package/dist/lib/context-budget-guard.d.ts +0 -1
- package/dist/lib/context-budget-response.d.ts +0 -1
- package/dist/lib/context-overflow.d.ts +0 -1
- package/dist/lib/dashboard-settings.d.ts +0 -1
- package/dist/lib/entitlement-cache.d.ts +0 -1
- package/dist/lib/env-parsing.d.ts +13 -1
- package/dist/lib/env-parsing.js +21 -0
- package/dist/lib/errors.d.ts +0 -1
- package/dist/lib/forecast.d.ts +0 -1
- package/dist/lib/fs-retry.d.ts +0 -1
- package/dist/lib/health.d.ts +0 -1
- package/dist/lib/index.d.ts +0 -1
- package/dist/lib/integration-generators.d.ts +0 -1
- package/dist/lib/live-account-sync.d.ts +0 -1
- package/dist/lib/local-bridge.d.ts +0 -1
- package/dist/lib/local-bridge.js +4 -1
- package/dist/lib/local-client-tokens.d.ts +0 -1
- package/dist/lib/local-client-tokens.js +125 -30
- package/dist/lib/logger.d.ts +0 -1
- package/dist/lib/logger.js +11 -1
- package/dist/lib/model-capability-matrix.d.ts +0 -1
- package/dist/lib/model-route-policy.d.ts +1 -2
- package/dist/lib/named-backup-export.d.ts +0 -1
- package/dist/lib/oc-chatgpt-import-adapter.d.ts +0 -1
- package/dist/lib/oc-chatgpt-orchestrator.d.ts +0 -1
- package/dist/lib/oc-chatgpt-target-detection.d.ts +3 -3
- package/dist/lib/oc-chatgpt-target-detection.js +40 -13
- package/dist/lib/parallel-probe.d.ts +0 -1
- package/dist/lib/policy/runtime-policy-cache.d.ts +80 -0
- package/dist/lib/policy/runtime-policy-cache.js +310 -0
- package/dist/lib/policy/runtime-policy.d.ts +1 -2
- package/dist/lib/policy/runtime-policy.js +46 -19
- package/dist/lib/preemptive-quota-scheduler.d.ts +0 -1
- package/dist/lib/proactive-refresh.d.ts +0 -1
- package/dist/lib/prompts/codex-host-bridge.d.ts +0 -1
- package/dist/lib/prompts/codex.d.ts +0 -1
- package/dist/lib/prompts/fetch-utils.d.ts +0 -1
- package/dist/lib/prompts/host-codex-prompt.d.ts +0 -1
- package/dist/lib/quota-cache.d.ts +0 -1
- package/dist/lib/quota-cache.js +60 -36
- package/dist/lib/quota-probe.d.ts +0 -1
- package/dist/lib/quota-probe.js +5 -2
- package/dist/lib/quota-readiness.d.ts +0 -1
- package/dist/lib/recovery/constants.d.ts +0 -1
- package/dist/lib/recovery/storage.d.ts +0 -1
- package/dist/lib/recovery/types.d.ts +0 -1
- package/dist/lib/recovery.d.ts +0 -1
- package/dist/lib/redaction.d.ts +0 -1
- package/dist/lib/refresh-guardian.d.ts +0 -1
- package/dist/lib/refresh-lease.d.ts +0 -1
- package/dist/lib/refresh-queue.d.ts +0 -1
- package/dist/lib/request/client-cancellation.d.ts +0 -1
- package/dist/lib/request/error-classification.d.ts +0 -1
- package/dist/lib/request/error-classification.js +41 -52
- package/dist/lib/request/failover-config.d.ts +0 -1
- package/dist/lib/request/failure-policy.d.ts +0 -1
- package/dist/lib/request/fetch-helpers.d.ts +0 -1
- package/dist/lib/request/fetch-helpers.js +1 -1
- package/dist/lib/request/headers.d.ts +0 -1
- package/dist/lib/request/helpers/input-utils.d.ts +0 -1
- package/dist/lib/request/helpers/input-utils.js +88 -34
- package/dist/lib/request/helpers/model-map.d.ts +2 -3
- package/dist/lib/request/helpers/model-map.js +120 -78
- package/dist/lib/request/helpers/tool-utils.d.ts +0 -1
- package/dist/lib/request/helpers/tool-utils.js +421 -4
- package/dist/lib/request/index.d.ts +0 -1
- package/dist/lib/request/rate-limit-backoff.d.ts +0 -1
- package/dist/lib/request/rate-limit-decision.d.ts +0 -1
- package/dist/lib/request/request-attempt-budget.d.ts +0 -1
- package/dist/lib/request/request-init.d.ts +0 -1
- package/dist/lib/request/request-resilience.d.ts +0 -1
- package/dist/lib/request/request-transformer.d.ts +1 -2
- package/dist/lib/request/request-transformer.js +51 -26
- package/dist/lib/request/response-compaction.d.ts +0 -1
- package/dist/lib/request/response-handler.d.ts +0 -1
- package/dist/lib/request/response-metadata.d.ts +0 -1
- package/dist/lib/request/response-outcome.d.ts +0 -1
- package/dist/lib/request/stream-failover-runtime.d.ts +0 -1
- package/dist/lib/request/stream-failover.d.ts +0 -1
- package/dist/lib/request/stream-failover.js +28 -4
- package/dist/lib/request/token-refresh.d.ts +0 -1
- package/dist/lib/request/url-rewriting.d.ts +0 -1
- package/dist/lib/request/wait-utils.d.ts +0 -1
- package/dist/lib/rotation.d.ts +0 -1
- package/dist/lib/routing-mutex.d.ts +0 -1
- package/dist/lib/routing-profiles.d.ts +16 -2
- package/dist/lib/routing-profiles.js +119 -44
- package/dist/lib/runtime/account-check-helpers.d.ts +0 -1
- package/dist/lib/runtime/account-check-types.d.ts +0 -1
- package/dist/lib/runtime/account-check.d.ts +0 -1
- package/dist/lib/runtime/account-manager-cache-entry.d.ts +0 -1
- package/dist/lib/runtime/account-manager-cache.d.ts +0 -1
- package/dist/lib/runtime/account-model-catalog.d.ts +1 -2
- package/dist/lib/runtime/account-pool.d.ts +0 -1
- package/dist/lib/runtime/account-reset-credits.d.ts +0 -1
- package/dist/lib/runtime/account-reset-credits.js +8 -2
- package/dist/lib/runtime/account-scope.d.ts +0 -1
- package/dist/lib/runtime/account-select-event.d.ts +0 -1
- package/dist/lib/runtime/account-selection.d.ts +0 -1
- package/dist/lib/runtime/account-state.d.ts +0 -1
- package/dist/lib/runtime/account-status.d.ts +0 -1
- package/dist/lib/runtime/account-storage-scope-entry.d.ts +0 -1
- package/dist/lib/runtime/api-model-capabilities.d.ts +0 -1
- package/dist/lib/runtime/api-model-runtime.d.ts +0 -1
- package/dist/lib/runtime/app-bind.d.ts +0 -1
- package/dist/lib/runtime/app-helper-selection.d.ts +0 -1
- package/dist/lib/runtime/auth-facade.d.ts +0 -1
- package/dist/lib/runtime/automatic-account-checks.d.ts +0 -1
- package/dist/lib/runtime/automatic-subscription-checks.d.ts +0 -1
- package/dist/lib/runtime/browser-oauth-flow.d.ts +0 -1
- package/dist/lib/runtime/capability-boost.d.ts +0 -1
- package/dist/lib/runtime/catalog-capabilities.d.ts +0 -1
- package/dist/lib/runtime/config-toml.d.ts +0 -1
- package/dist/lib/runtime/context-budget-settings.d.ts +0 -1
- package/dist/lib/runtime/event-handler.d.ts +0 -1
- package/dist/lib/runtime/first-run.d.ts +0 -1
- package/dist/lib/runtime/flagged-verify-types.d.ts +0 -1
- package/dist/lib/runtime/hydrate-emails.d.ts +0 -1
- package/dist/lib/runtime/inference-activity.d.ts +0 -1
- package/dist/lib/runtime/live-sync-entry.d.ts +0 -1
- package/dist/lib/runtime/live-sync.d.ts +0 -1
- package/dist/lib/runtime/loader-setup.d.ts +0 -1
- package/dist/lib/runtime/login-menu-accounts.d.ts +0 -1
- package/dist/lib/runtime/manual-oauth-flow.d.ts +0 -1
- package/dist/lib/runtime/model-discovery-status.d.ts +0 -1
- package/dist/lib/runtime/native-account-storage.d.ts +0 -1
- package/dist/lib/runtime/native-account-sync.d.ts +0 -1
- package/dist/lib/runtime/native-binding-lock.d.ts +0 -1
- package/dist/lib/runtime/native-client-auth.d.ts +0 -1
- package/dist/lib/runtime/native-provider-config.d.ts +0 -1
- package/dist/lib/runtime/native-rate-limits.d.ts +2 -1
- package/dist/lib/runtime/native-rate-limits.js +23 -6
- package/dist/lib/runtime/preemptive-quota.d.ts +0 -1
- package/dist/lib/runtime/quota-headers.d.ts +0 -1
- package/dist/lib/runtime/quota-probe.d.ts +0 -1
- package/dist/lib/runtime/quota-settings.d.ts +0 -1
- package/dist/lib/runtime/refresh-guardian-entry.d.ts +0 -1
- package/dist/lib/runtime/refresh-guardian.d.ts +0 -1
- package/dist/lib/runtime/request-init.d.ts +0 -1
- package/dist/lib/runtime/reset-credit-routing.d.ts +0 -1
- package/dist/lib/runtime/reset-credits.d.ts +0 -1
- package/dist/lib/runtime/response-output-history.d.ts +0 -1
- package/dist/lib/runtime/responses-websocket.d.ts +0 -1
- package/dist/lib/runtime/resume-picker.d.ts +0 -1
- package/dist/lib/runtime/rotation-account-selection.d.ts +0 -1
- package/dist/lib/runtime/rotation-proxy-state.d.ts +0 -1
- package/dist/lib/runtime/rotation-server-types.d.ts +0 -1
- package/dist/lib/runtime/rotation-storage-meta.d.ts +0 -1
- package/dist/lib/runtime/rotation-token-refresh.d.ts +0 -1
- package/dist/lib/runtime/runtime-capability-failures.d.ts +0 -1
- package/dist/lib/runtime/runtime-current-account.d.ts +0 -1
- package/dist/lib/runtime/runtime-observability.d.ts +0 -1
- package/dist/lib/runtime/runtime-services.d.ts +0 -1
- package/dist/lib/runtime/session-affinity-entry.d.ts +0 -1
- package/dist/lib/runtime/session-recovery.d.ts +0 -1
- package/dist/lib/runtime/status-marker.d.ts +0 -1
- package/dist/lib/runtime/storage-scope.d.ts +0 -1
- package/dist/lib/runtime/subscription-first-use.d.ts +0 -1
- package/dist/lib/runtime/subscription-quota-event.d.ts +0 -1
- package/dist/lib/runtime/subscription-quota-order.d.ts +0 -1
- package/dist/lib/runtime/toast.d.ts +0 -1
- package/dist/lib/runtime/ui-runtime-entry.d.ts +0 -1
- package/dist/lib/runtime/ui-runtime.d.ts +0 -1
- package/dist/lib/runtime/verify-flagged.d.ts +0 -1
- package/dist/lib/runtime/workspace-model-scopes.d.ts +0 -1
- package/dist/lib/runtime-constants.d.ts +0 -1
- package/dist/lib/runtime-paths.d.ts +0 -1
- package/dist/lib/runtime-rotation-proxy.d.ts +1 -1
- package/dist/lib/runtime-rotation-proxy.js +133 -0
- package/dist/lib/schemas.d.ts +35 -13
- package/dist/lib/schemas.js +19 -2
- package/dist/lib/session-affinity.d.ts +0 -1
- package/dist/lib/shutdown.d.ts +0 -1
- package/dist/lib/storage/account-clear-entry.d.ts +0 -1
- package/dist/lib/storage/account-clear.d.ts +0 -1
- package/dist/lib/storage/account-match-utils.d.ts +0 -1
- package/dist/lib/storage/account-persistence.d.ts +0 -1
- package/dist/lib/storage/account-port.d.ts +0 -1
- package/dist/lib/storage/account-save-entry.d.ts +0 -1
- package/dist/lib/storage/account-save.d.ts +9 -2
- package/dist/lib/storage/account-save.js +4 -1
- package/dist/lib/storage/account-snapshot.d.ts +0 -1
- package/dist/lib/storage/backup-metadata-builder.d.ts +0 -1
- package/dist/lib/storage/backup-metadata.d.ts +0 -1
- package/dist/lib/storage/backup-paths.d.ts +0 -1
- package/dist/lib/storage/backup-restore.d.ts +0 -1
- package/dist/lib/storage/cache-artifacts.d.ts +0 -1
- package/dist/lib/storage/credential-sidecars.d.ts +0 -1
- package/dist/lib/storage/error-hints.d.ts +0 -1
- package/dist/lib/storage/file-lock.d.ts +0 -1
- package/dist/lib/storage/file-lock.js +33 -1
- package/dist/lib/storage/file-paths.d.ts +0 -1
- package/dist/lib/storage/fixture-guards.d.ts +0 -1
- package/dist/lib/storage/flagged-entry.d.ts +0 -1
- package/dist/lib/storage/flagged-load-entry.d.ts +0 -1
- package/dist/lib/storage/flagged-save-entry.d.ts +0 -1
- package/dist/lib/storage/flagged-storage-file.d.ts +0 -1
- package/dist/lib/storage/flagged-storage-io.d.ts +0 -1
- package/dist/lib/storage/flagged-storage.d.ts +0 -1
- package/dist/lib/storage/gitignore.d.ts +0 -1
- package/dist/lib/storage/hash.d.ts +0 -1
- package/dist/lib/storage/health.d.ts +0 -1
- package/dist/lib/storage/identity.d.ts +0 -1
- package/dist/lib/storage/import-export.d.ts +0 -1
- package/dist/lib/storage/json-store-lock.d.ts +105 -0
- package/dist/lib/storage/json-store-lock.js +259 -0
- package/dist/lib/storage/metadata-section.d.ts +0 -1
- package/dist/lib/storage/migrations.d.ts +0 -1
- package/dist/lib/storage/migrations.js +31 -18
- package/dist/lib/storage/named-backup-entry.d.ts +0 -1
- package/dist/lib/storage/named-backups-entry.d.ts +0 -1
- package/dist/lib/storage/named-backups.d.ts +0 -1
- package/dist/lib/storage/path-state.d.ts +0 -1
- package/dist/lib/storage/paths.d.ts +0 -1
- package/dist/lib/storage/pending-auth.d.ts +9 -3
- package/dist/lib/storage/pending-auth.js +30 -8
- package/dist/lib/storage/project-migration.d.ts +0 -1
- package/dist/lib/storage/public-types.d.ts +0 -1
- package/dist/lib/storage/record-identity.d.ts +0 -1
- package/dist/lib/storage/record-utils.d.ts +0 -1
- package/dist/lib/storage/restore-assessment.d.ts +0 -1
- package/dist/lib/storage/restore-backup-entry.d.ts +0 -1
- package/dist/lib/storage/restore-metadata.d.ts +0 -1
- package/dist/lib/storage/save-retry.d.ts +0 -1
- package/dist/lib/storage/snapshot-inspectors.d.ts +0 -1
- package/dist/lib/storage/snapshot-merge.d.ts +0 -1
- package/dist/lib/storage/storage-parser.d.ts +2 -1
- package/dist/lib/storage/storage-parser.js +10 -2
- package/dist/lib/storage/transactions.d.ts +0 -1
- package/dist/lib/storage.d.ts +15 -2
- package/dist/lib/storage.js +612 -25
- package/dist/lib/synthetic-response.d.ts +0 -1
- package/dist/lib/table-formatter.d.ts +0 -1
- package/dist/lib/temp-path.d.ts +0 -1
- package/dist/lib/tools/hashline-tools.d.ts +0 -1
- package/dist/lib/types.d.ts +0 -1
- package/dist/lib/ui/ansi.d.ts +0 -1
- package/dist/lib/ui/auth-menu-builder.d.ts +0 -1
- package/dist/lib/ui/auth-menu.d.ts +0 -1
- package/dist/lib/ui/check-progress.d.ts +0 -1
- package/dist/lib/ui/confirm.d.ts +0 -1
- package/dist/lib/ui/display-width.d.ts +0 -1
- package/dist/lib/ui/format.d.ts +0 -1
- package/dist/lib/ui/index.d.ts +0 -1
- package/dist/lib/ui/runtime.d.ts +0 -1
- package/dist/lib/ui/select.d.ts +0 -1
- package/dist/lib/ui/theme.d.ts +0 -1
- package/dist/lib/ui/ui-copy.d.ts +1 -2
- package/dist/lib/ui/ui-copy.js +1 -1
- package/dist/lib/unified-settings.d.ts +13 -11
- package/dist/lib/unified-settings.js +22 -14
- package/dist/lib/update-notice.d.ts +0 -1
- package/dist/lib/usage/index.d.ts +0 -1
- package/dist/lib/usage/ledger.d.ts +0 -1
- package/dist/lib/usage/pricing.d.ts +1 -2
- package/dist/lib/usage/pricing.js +41 -16
- package/dist/lib/usage/redaction.d.ts +0 -1
- package/dist/lib/usage/stream-usage-deferral.d.ts +0 -1
- package/dist/lib/usage/types.d.ts +0 -1
- package/dist/lib/usage/usage-extraction.d.ts +0 -1
- package/dist/lib/utils.d.ts +21 -1
- package/dist/lib/utils.js +31 -0
- package/dist/lib/wsl.d.ts +0 -1
- package/package.json +11 -5
- package/scripts/codex-bin-resolver.js +20 -1
- package/scripts/codex-multi-auth.js +7 -1
- package/scripts/codex.js +385 -89
- package/skills/codex-auth-setup/SKILL.md +73 -0
package/dist/lib/schemas.js
CHANGED
|
@@ -202,8 +202,16 @@ export const AccountStorageV3Schema = z.object({
|
|
|
202
202
|
});
|
|
203
203
|
/**
|
|
204
204
|
* Legacy V1 account metadata for migration support.
|
|
205
|
+
*
|
|
206
|
+
* Uses `passthrough` so V3-compatible extra fields (workspaces,
|
|
207
|
+
* rateLimitResetTimes, authInvalidatedAt, …) survive the schema boundary:
|
|
208
|
+
* version:1 files with V3-era rows are real (the flagged-accounts store is
|
|
209
|
+
* `version: 1` with full V3 rows) and migrateV1ToV3 now carries unknown
|
|
210
|
+
* fields forward — stripping them here would make that preservation a no-op
|
|
211
|
+
* for every schema-valid file. Same rationale as FlaggedAccountMetadataV1Schema.
|
|
205
212
|
*/
|
|
206
|
-
const AccountMetadataV1Schema = z
|
|
213
|
+
const AccountMetadataV1Schema = z
|
|
214
|
+
.object({
|
|
207
215
|
accountId: z.string().optional(),
|
|
208
216
|
accountIdSource: AccountIdSourceSchema.optional(),
|
|
209
217
|
accountLabel: z.string().optional(),
|
|
@@ -218,14 +226,23 @@ const AccountMetadataV1Schema = z.object({
|
|
|
218
226
|
rateLimitResetTime: z.number().optional(), // V1 used single value
|
|
219
227
|
coolingDownUntil: z.number().optional(),
|
|
220
228
|
cooldownReason: CooldownReasonSchema.optional(),
|
|
221
|
-
})
|
|
229
|
+
})
|
|
230
|
+
.passthrough();
|
|
222
231
|
/**
|
|
223
232
|
* Legacy V1 storage format for migration support.
|
|
233
|
+
*
|
|
234
|
+
* The V3-era top-level fields are accepted too: a hybrid file (version:1 but
|
|
235
|
+
* written by newer code) must not lose `activeIndexByFamily` /
|
|
236
|
+
* `pinnedAccountIndex` / `affinityGeneration` at the schema boundary before
|
|
237
|
+
* normalizeAccountStorage can consume them.
|
|
224
238
|
*/
|
|
225
239
|
export const AccountStorageV1Schema = z.object({
|
|
226
240
|
version: z.literal(1),
|
|
227
241
|
accounts: z.array(AccountMetadataV1Schema),
|
|
228
242
|
activeIndex: z.number().min(0),
|
|
243
|
+
activeIndexByFamily: ActiveIndexByFamilySchema.optional(),
|
|
244
|
+
pinnedAccountIndex: z.number().int().min(0).optional(),
|
|
245
|
+
affinityGeneration: z.number().int().min(0).optional(),
|
|
229
246
|
});
|
|
230
247
|
/**
|
|
231
248
|
* Union of V1 and V3 storage formats for migration detection.
|
package/dist/lib/shutdown.d.ts
CHANGED
|
@@ -6,4 +6,3 @@ export declare function selectNewestAccount<T extends AccountLike>(current: T |
|
|
|
6
6
|
export declare function collectDistinctIdentityValues(values: Array<string | undefined>): Set<string>;
|
|
7
7
|
export declare function findNewestMatchingIndex<T, TRef>(accounts: readonly T[], toRef: (account: T) => TRef, predicate: (ref: TRef) => boolean, selectNewest: (current: T | undefined, candidate: T) => T): number | undefined;
|
|
8
8
|
export {};
|
|
9
|
-
//# sourceMappingURL=account-match-utils.d.ts.map
|
|
@@ -15,16 +15,23 @@ export declare function saveAccountsToDisk(storage: AccountStorageV3, params: {
|
|
|
15
15
|
writeTemp: (tempPath: string, content: string) => Promise<void>;
|
|
16
16
|
statTemp: (tempPath: string) => Promise<{
|
|
17
17
|
size: number;
|
|
18
|
+
mtimeMs?: number;
|
|
19
|
+
ctimeMs?: number;
|
|
20
|
+
ino?: number;
|
|
18
21
|
}>;
|
|
19
22
|
renameTempToPath: (tempPath: string) => Promise<void>;
|
|
20
23
|
cleanupResetMarker: () => Promise<void>;
|
|
21
24
|
cleanupWal: () => Promise<void>;
|
|
22
25
|
cleanupTemp: (tempPath: string) => Promise<void>;
|
|
23
|
-
onSaved: (
|
|
26
|
+
onSaved: (stats: {
|
|
27
|
+
size: number;
|
|
28
|
+
mtimeMs?: number;
|
|
29
|
+
ctimeMs?: number;
|
|
30
|
+
ino?: number;
|
|
31
|
+
}, contentSha256: string) => void;
|
|
24
32
|
logWarn: (message: string, details: Record<string, unknown>) => void;
|
|
25
33
|
logError: (message: string, details: Record<string, unknown>) => void;
|
|
26
34
|
createStorageError: (error: unknown) => Error;
|
|
27
35
|
backupPath: string;
|
|
28
36
|
createTempPath: () => string;
|
|
29
37
|
}): Promise<void>;
|
|
30
|
-
//# sourceMappingURL=account-save.d.ts.map
|
|
@@ -34,7 +34,10 @@ export async function saveAccountsToDisk(storage, params) {
|
|
|
34
34
|
}
|
|
35
35
|
await params.renameTempToPath(tempPath);
|
|
36
36
|
await params.cleanupResetMarker();
|
|
37
|
-
|
|
37
|
+
// The temp file's stat fields survive the rename onto the primary path,
|
|
38
|
+
// so together with the content hash they are a free record of what this
|
|
39
|
+
// process last wrote — no extra stat of the destination is needed.
|
|
40
|
+
params.onSaved(stats, params.computeSha256(content));
|
|
38
41
|
await params.cleanupWal();
|
|
39
42
|
}
|
|
40
43
|
catch (error) {
|
|
@@ -7,4 +7,3 @@ export declare function getAccountsBackupRecoveryCandidates(path: string, depth:
|
|
|
7
7
|
export declare function getAccountsWalPath(path: string): string;
|
|
8
8
|
export declare function getIntentionalResetMarkerPath(path: string): string;
|
|
9
9
|
export { ACCOUNTS_BACKUP_SUFFIX, ACCOUNTS_WAL_SUFFIX, RESET_MARKER_SUFFIX };
|
|
10
|
-
//# sourceMappingURL=backup-paths.d.ts.map
|
|
@@ -10,4 +10,3 @@ export declare function clearCredentialSidecars(): Promise<void>;
|
|
|
10
10
|
* keys never survive a reset; the first failure is rethrown afterwards.
|
|
11
11
|
*/
|
|
12
12
|
export declare function clearAccountsAndCredentialSidecars(clearPool: () => Promise<void>): Promise<void>;
|
|
13
|
-
//# sourceMappingURL=credential-sidecars.d.ts.map
|
|
@@ -7,4 +7,3 @@ export declare function formatStorageErrorHint(error: unknown, path: string): st
|
|
|
7
7
|
* Wrap an arbitrary storage failure in a StorageError with a derived hint.
|
|
8
8
|
*/
|
|
9
9
|
export declare function toStorageError(message: string, error: unknown, path: string): StorageError;
|
|
10
|
-
//# sourceMappingURL=error-hints.d.ts.map
|
|
@@ -9,6 +9,33 @@ const abandonedOwners = new Set();
|
|
|
9
9
|
const leases = new AsyncLocalStorage();
|
|
10
10
|
const host = createHash("sha256").update(hostname()).digest("hex").slice(0, 16);
|
|
11
11
|
const ownerPattern = /^([a-f0-9]{16})\.([1-9][0-9]*)\.([a-f0-9-]{36})$/;
|
|
12
|
+
// Contended acquisition retries once ran on a fixed 25ms delay: every waiter
|
|
13
|
+
// woke on the same cadence and re-collided on the rename (p99 ~1.8s under ~200
|
|
14
|
+
// waiters). The base delay now grows mildly from 15ms toward 40ms with up to
|
|
15
|
+
// 10ms of uniform jitter, so each retry lands in ~[15,50)ms and waiters
|
|
16
|
+
// decorrelate instead of stampeding the lock together.
|
|
17
|
+
const LOCK_RETRY_MIN_DELAY_MS = 15;
|
|
18
|
+
const LOCK_RETRY_MAX_BASE_DELAY_MS = 40;
|
|
19
|
+
const LOCK_RETRY_GROWTH_FACTOR = 1.2;
|
|
20
|
+
const LOCK_RETRY_JITTER_MS = 10;
|
|
21
|
+
function lockRetryBaseDelayMs(failedAttempt) {
|
|
22
|
+
return Math.min(LOCK_RETRY_MIN_DELAY_MS * LOCK_RETRY_GROWTH_FACTOR ** (failedAttempt - 1), LOCK_RETRY_MAX_BASE_DELAY_MS);
|
|
23
|
+
}
|
|
24
|
+
// Derive the attempt cap from the delay schedule itself, not a flat ~40ms
|
|
25
|
+
// guess: the first retries are cheaper than steady state (15ms, 18ms, …), so
|
|
26
|
+
// ceil(waitMs / expected) let a short budget expire after roughly half the
|
|
27
|
+
// requested wait — a 70ms budget could return ELOCKED in ~33ms. Summing the
|
|
28
|
+
// zero-jitter base delays keeps retrying until the schedule has slept at
|
|
29
|
+
// least waitMs; jitter only ever extends the wait, never shortens it.
|
|
30
|
+
function lockMaxAttemptsForWaitMs(waitMs) {
|
|
31
|
+
let attempts = 1;
|
|
32
|
+
let coveredMs = 0;
|
|
33
|
+
while (coveredMs < waitMs) {
|
|
34
|
+
coveredMs += lockRetryBaseDelayMs(attempts);
|
|
35
|
+
attempts += 1;
|
|
36
|
+
}
|
|
37
|
+
return attempts;
|
|
38
|
+
}
|
|
12
39
|
function code(error) {
|
|
13
40
|
return error?.code;
|
|
14
41
|
}
|
|
@@ -152,7 +179,12 @@ export async function withFileTransactionLock(path, action, options = {}) {
|
|
|
152
179
|
await recoverDeadOwner(lock);
|
|
153
180
|
throw Object.assign(Error("Storage is busy with another live writer; retry shortly."), { code: "ELOCKED" });
|
|
154
181
|
}
|
|
155
|
-
}, {
|
|
182
|
+
}, {
|
|
183
|
+
maxAttempts: lockMaxAttemptsForWaitMs(options.waitMs ?? 10000),
|
|
184
|
+
backoffMs: lockRetryBaseDelayMs,
|
|
185
|
+
jitterMs: LOCK_RETRY_JITTER_MS,
|
|
186
|
+
retryableCodes: ["ELOCKED", "EBUSY", "EPERM", "EACCES", "EAGAIN"],
|
|
187
|
+
});
|
|
156
188
|
const lease = { active: true };
|
|
157
189
|
const context = new Map(leases.getStore());
|
|
158
190
|
context.set(key, lease);
|
|
@@ -3,4 +3,3 @@ export { ACCOUNTS_BACKUP_SUFFIX, ACCOUNTS_WAL_SUFFIX, getAccountsBackupPath, get
|
|
|
3
3
|
export declare function getAccountsBackupRecoveryCandidates(path: string): string[];
|
|
4
4
|
export declare function getFlaggedAccountsPath(storagePath: string, fileName: string): string;
|
|
5
5
|
export declare function getLegacyFlaggedAccountsPath(storagePath: string, legacyFileName: string): string;
|
|
6
|
-
//# sourceMappingURL=file-paths.d.ts.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import type { AccountMetadataV3, AccountStorageV3 } from "./public-types.js";
|
|
2
2
|
export declare function looksLikeSyntheticFixtureAccount(account: AccountMetadataV3): boolean;
|
|
3
3
|
export declare function looksLikeSyntheticFixtureStorage(storage: AccountStorageV3 | null): boolean;
|
|
4
|
-
//# sourceMappingURL=fixture-guards.d.ts.map
|
|
@@ -19,4 +19,3 @@ export declare function loadFlaggedAccountsEntry(params: {
|
|
|
19
19
|
logError: (message: string, details: Record<string, unknown>) => void;
|
|
20
20
|
logInfo: (message: string, details: Record<string, unknown>) => void;
|
|
21
21
|
}): Promise<FlaggedAccountStorageV1>;
|
|
22
|
-
//# sourceMappingURL=flagged-load-entry.d.ts.map
|
|
@@ -8,4 +8,3 @@ export declare function loadFlaggedAccountsFromFile(path: string, deps: {
|
|
|
8
8
|
normalizeFlaggedStorage: (data: unknown) => FlaggedAccountStorageV1;
|
|
9
9
|
sleep?: (ms: number) => Promise<void>;
|
|
10
10
|
}): Promise<FlaggedAccountStorageV1>;
|
|
11
|
-
//# sourceMappingURL=flagged-storage-file.d.ts.map
|
|
@@ -18,4 +18,3 @@ export declare function toAccountIdentityRef(account: Pick<AccountLike, "account
|
|
|
18
18
|
export declare function getAccountIdentityKey(account: Pick<AccountLike, "accountId" | "email" | "refreshToken">): string | undefined;
|
|
19
19
|
export declare function getRuntimeAccountIdentityKey(account: Pick<RuntimeAccountLike, "accountId" | "email" | "index">): string | number | undefined;
|
|
20
20
|
export {};
|
|
21
|
-
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stamp `updatedAt` for a per-key governance entry with a hybrid logical
|
|
3
|
+
* floor: when the wall clock regressed below the timestamp the entry being
|
|
4
|
+
* overwritten already carries, stamp `prior + 1` instead of `now`. Every
|
|
5
|
+
* upsert-only store merges with `updatedAt >=`, so a backward clock jump
|
|
6
|
+
* would otherwise stamp a semantically-newer write below its own
|
|
7
|
+
* predecessor and the merge would silently drop it. Equal or forward wall
|
|
8
|
+
* times pass through unchanged — ties already resolve to the caller's
|
|
9
|
+
* write under `>=`.
|
|
10
|
+
*
|
|
11
|
+
* `prior` is the entry the writer saw, which can trail the freshest on-disk
|
|
12
|
+
* entry when a concurrent writer lands between the caller's load and its
|
|
13
|
+
* save; baseline-aware save merges re-apply this same floor against the
|
|
14
|
+
* on-disk entry at merge time so the edit still cannot be lost.
|
|
15
|
+
*/
|
|
16
|
+
export declare function stampUpdatedAt(now: number, prior: number | undefined): number;
|
|
17
|
+
/**
|
|
18
|
+
* Serialize `task` behind the previous write queued for `path`, so same-file
|
|
19
|
+
* writers inside this process run one at a time in submission order. A failed
|
|
20
|
+
* predecessor never blocks or fails successors. Re-entrant for the same path
|
|
21
|
+
* within one async context.
|
|
22
|
+
*
|
|
23
|
+
* This is the per-path generalization of the module-local `writeQueue`
|
|
24
|
+
* variables the governance stores used to keep by hand.
|
|
25
|
+
*/
|
|
26
|
+
export declare function withJsonStoreWriteQueue<T>(path: string, task: () => Promise<T>): Promise<T>;
|
|
27
|
+
/** Test helper: drop queued-write bookkeeping (all paths, or one when given). */
|
|
28
|
+
export declare function resetJsonStoreWriteQueuesForTests(path?: string): void;
|
|
29
|
+
/**
|
|
30
|
+
* Stat `filePath` for its mtime with bounded transient-FS retry (the save
|
|
31
|
+
* path is Windows-sensitive: a single transient EBUSY/EPERM/EAGAIN from an
|
|
32
|
+
* AV/indexer lock must not abort the whole save). ENOENT returns `null`
|
|
33
|
+
* immediately; on exhaustion the last failure surfaces so the caller treats
|
|
34
|
+
* it as a real save error rather than a phantom missing file.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getJsonStoreFileMtimeMs(filePath: string): Promise<number | null>;
|
|
37
|
+
/**
|
|
38
|
+
* The `ESTALE` signal used by the CAS retry loop: the file's mtime moved
|
|
39
|
+
* between the caller's stat and its write, so the attempt must re-read and
|
|
40
|
+
* re-merge against the latest on-disk state instead of clobbering it.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createJsonStoreStaleError(filePath: string): NodeJS.ErrnoException;
|
|
43
|
+
/**
|
|
44
|
+
* Throw `ESTALE` when `filePath`'s current mtime differs from
|
|
45
|
+
* `expectedMtimeMs` (`null` means "file must still be absent"). Writers that
|
|
46
|
+
* keep their own temp+rename flow call this just before the rename, matching
|
|
47
|
+
* {@link writeJsonStoreFileAtomicWithRetry}'s inline check.
|
|
48
|
+
*/
|
|
49
|
+
export declare function assertJsonStoreFileMtimeUnchanged(filePath: string, expectedMtimeMs: number | null): Promise<void>;
|
|
50
|
+
export interface JsonStoreAtomicWriteOptions {
|
|
51
|
+
/**
|
|
52
|
+
* When present (including explicit `null` = "expect the file to be
|
|
53
|
+
* absent"), compare-and-swap guard: abort with `ESTALE` if the target's
|
|
54
|
+
* mtime moved since the caller read it, so the caller can re-read and
|
|
55
|
+
* merge instead of clobbering a concurrent write. Omit the key entirely
|
|
56
|
+
* to skip the check.
|
|
57
|
+
*/
|
|
58
|
+
expectedMtimeMs?: number | null;
|
|
59
|
+
/** Temp file mode (and therefore the final file's mode when created). */
|
|
60
|
+
mode?: number;
|
|
61
|
+
/** fsync the temp file before rename so a crash/power-loss cannot leave a truncated store. */
|
|
62
|
+
fsync?: boolean;
|
|
63
|
+
/** Rename retry codes; defaults to EBUSY/EPERM. */
|
|
64
|
+
retryableCodes?: ReadonlySet<string>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Atomic JSON write: serialize `payload` pretty-printed with a trailing
|
|
68
|
+
* newline to a crypto-random sibling temp file, then rename it over
|
|
69
|
+
* `filePath` with bounded transient-FS retry. Optionally CAS-checks the
|
|
70
|
+
* target mtime first and fsyncs the temp file; on failure the temp is
|
|
71
|
+
* removed best-effort.
|
|
72
|
+
*/
|
|
73
|
+
export declare function writeJsonStoreFileAtomicWithRetry(filePath: string, payload: unknown, options?: JsonStoreAtomicWriteOptions): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Run `task`, retrying `ESTALE` CAS aborts so each attempt can re-read and
|
|
76
|
+
* re-merge against the latest on-disk state (matches the config save loop:
|
|
77
|
+
* 3 attempts, immediate retry, ESTALE-only).
|
|
78
|
+
*/
|
|
79
|
+
export declare function withJsonStoreCasRetry<T>(task: () => Promise<T>): Promise<T>;
|
|
80
|
+
export interface JsonStoreFileLockOptions {
|
|
81
|
+
/**
|
|
82
|
+
* How long to wait for a lock held by a LIVE foreign process before
|
|
83
|
+
* failing with `ELOCKTIMEOUT` (default 10s). A crashed holder's lock is
|
|
84
|
+
* reclaimed as soon as its dead PID is observed; a live holder is never
|
|
85
|
+
* evicted — including a reused PID, which fails closed here rather than
|
|
86
|
+
* risking two writers in the critical section.
|
|
87
|
+
*/
|
|
88
|
+
waitTimeoutMs?: number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Cross-process mutex for a JSON store file, delegated to the proven
|
|
92
|
+
* candidate-directory transaction lock in lib/storage/file-lock.ts: each
|
|
93
|
+
* acquirer stages `<path>.write-lock.candidate-*` containing its unique
|
|
94
|
+
* `<host>.<pid>.<uuid>` owner file, then publishes it with a single atomic
|
|
95
|
+
* `rename` (which only succeeds while the lock directory is absent or empty,
|
|
96
|
+
* so there is no ownerless acquisition window). A crashed holder's lock is
|
|
97
|
+
* recovered by unlinking exactly that dead owner's unique filename and
|
|
98
|
+
* removing the directory only while it is still empty — an `rmdir` can never
|
|
99
|
+
* erase a lock that was republished in the meantime, so takeover can never
|
|
100
|
+
* delete another owner's live lock. Waiters on a live holder retry inside
|
|
101
|
+
* `waitTimeoutMs` (default 10s), then this wrapper surfaces the exhaustion
|
|
102
|
+
* as `ELOCKTIMEOUT`. Re-entrant for the same resolved path within one async
|
|
103
|
+
* context.
|
|
104
|
+
*/
|
|
105
|
+
export declare function withJsonStoreFileLock<T>(targetPath: string, task: () => Promise<T>, options?: JsonStoreFileLockOptions): Promise<T>;
|