codex-multi-auth 2.3.0-beta.0 → 2.3.0-beta.2
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 +4 -3
- package/config/schema/config.schema.json +268 -21
- package/dist/index.js +0 -1
- package/dist/lib/account-policy.js +0 -1
- package/dist/lib/accounts/rate-limits.js +0 -1
- package/dist/lib/accounts.d.ts +3 -8
- package/dist/lib/accounts.d.ts.map +1 -1
- package/dist/lib/accounts.js +2 -3
- package/dist/lib/audit.js +0 -1
- package/dist/lib/auth/auth.js +0 -1
- package/dist/lib/auth/browser.js +0 -1
- package/dist/lib/auth/device-auth.js +0 -1
- package/dist/lib/auth/index.js +0 -1
- package/dist/lib/auth/org-override.js +0 -1
- package/dist/lib/auth/server.js +0 -1
- package/dist/lib/auth/token-utils.js +0 -1
- package/dist/lib/auth-rate-limit.js +0 -1
- package/dist/lib/budget-guard.js +0 -1
- package/dist/lib/capability-policy.js +0 -1
- package/dist/lib/circuit-breaker.js +0 -1
- package/dist/lib/cli.js +1 -2
- package/dist/lib/codex-cli/index.js +0 -1
- package/dist/lib/codex-cli/observability.js +0 -1
- package/dist/lib/codex-cli/state.js +0 -1
- package/dist/lib/codex-cli/sync.d.ts +2 -2
- package/dist/lib/codex-cli/sync.d.ts.map +1 -1
- package/dist/lib/codex-cli/sync.js +1 -2
- package/dist/lib/codex-cli/writer.js +0 -1
- package/dist/lib/codex-manager/account-credentials.d.ts +13 -0
- package/dist/lib/codex-manager/account-credentials.d.ts.map +1 -0
- package/dist/lib/codex-manager/account-credentials.js +55 -0
- package/dist/lib/codex-manager/account-manager-commands.js +0 -1
- package/dist/lib/codex-manager/account-pool-write.d.ts +95 -0
- package/dist/lib/codex-manager/account-pool-write.d.ts.map +1 -0
- package/dist/lib/codex-manager/account-pool-write.js +165 -0
- package/dist/lib/codex-manager/account-pool-write.js.map +1 -0
- package/dist/lib/codex-manager/backend-category-entry.js +0 -1
- package/dist/lib/codex-manager/backend-category-helpers.js +0 -1
- package/dist/lib/codex-manager/backend-category-prompt.js +0 -1
- package/dist/lib/codex-manager/backend-settings-controller.js +0 -1
- package/dist/lib/codex-manager/backend-settings-entry.js +0 -1
- package/dist/lib/codex-manager/backend-settings-helpers.js +0 -1
- package/dist/lib/codex-manager/backend-settings-prompt.js +0 -1
- package/dist/lib/codex-manager/backend-settings-schema.js +0 -1
- package/dist/lib/codex-manager/behavior-settings-panel.d.ts +1 -1
- package/dist/lib/codex-manager/behavior-settings-panel.d.ts.map +1 -1
- package/dist/lib/codex-manager/behavior-settings-panel.js +0 -1
- package/dist/lib/codex-manager/commands/account.js +0 -1
- package/dist/lib/codex-manager/commands/best.d.ts +8 -0
- package/dist/lib/codex-manager/commands/best.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/best.js +64 -1
- package/dist/lib/codex-manager/commands/bridge.js +0 -1
- package/dist/lib/codex-manager/commands/budget.js +0 -1
- package/dist/lib/codex-manager/commands/check.js +0 -1
- package/dist/lib/codex-manager/commands/config-explain.js +0 -1
- package/dist/lib/codex-manager/commands/debug-bundle.js +0 -1
- package/dist/lib/codex-manager/commands/forecast.js +0 -1
- package/dist/lib/codex-manager/commands/init-config.js +0 -1
- package/dist/lib/codex-manager/commands/integrations.js +0 -1
- package/dist/lib/codex-manager/commands/models.js +0 -1
- package/dist/lib/codex-manager/commands/monitor.js +0 -1
- package/dist/lib/codex-manager/commands/report.js +0 -1
- package/dist/lib/codex-manager/commands/rotation.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/rotation.js +1 -4
- package/dist/lib/codex-manager/commands/status.js +0 -1
- package/dist/lib/codex-manager/commands/switch.js +0 -1
- package/dist/lib/codex-manager/commands/uninstall.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/uninstall.js +2 -33
- package/dist/lib/codex-manager/commands/unpin.js +0 -1
- package/dist/lib/codex-manager/commands/usage.js +0 -1
- package/dist/lib/codex-manager/commands/verify.js +0 -1
- package/dist/lib/codex-manager/commands/why-selected.js +0 -1
- package/dist/lib/codex-manager/commands/workspace.js +0 -1
- package/dist/lib/codex-manager/dashboard-display-panel.d.ts +1 -1
- package/dist/lib/codex-manager/dashboard-display-panel.d.ts.map +1 -1
- package/dist/lib/codex-manager/dashboard-display-panel.js +0 -1
- package/dist/lib/codex-manager/dashboard-formatters.js +0 -1
- package/dist/lib/codex-manager/dashboard-settings-controller.js +0 -1
- package/dist/lib/codex-manager/dashboard-settings-data.js +0 -1
- package/dist/lib/codex-manager/dashboard-settings-entry.js +0 -1
- package/dist/lib/codex-manager/experimental-settings-entry.js +0 -1
- package/dist/lib/codex-manager/experimental-settings-prompt.js +0 -1
- package/dist/lib/codex-manager/experimental-settings-schema.js +1 -2
- package/dist/lib/codex-manager/experimental-sync-target-entry.js +0 -1
- package/dist/lib/codex-manager/experimental-sync-target.js +0 -1
- package/dist/lib/codex-manager/forecast-report-commands.js +0 -1
- package/dist/lib/codex-manager/forecast-report-shared.d.ts +2 -2
- package/dist/lib/codex-manager/forecast-report-shared.d.ts.map +1 -1
- package/dist/lib/codex-manager/forecast-report-shared.js +5 -21
- package/dist/lib/codex-manager/formatters/account-formatters.d.ts +11 -0
- package/dist/lib/codex-manager/formatters/account-formatters.d.ts.map +1 -0
- package/dist/lib/codex-manager/formatters/account-formatters.js +79 -0
- package/dist/lib/codex-manager/formatters/index.d.ts +5 -0
- package/dist/lib/codex-manager/formatters/index.d.ts.map +1 -0
- package/dist/lib/codex-manager/formatters/index.js +4 -0
- package/dist/lib/codex-manager/formatters/model-formatters.d.ts +12 -0
- package/dist/lib/codex-manager/formatters/model-formatters.d.ts.map +1 -0
- package/dist/lib/codex-manager/formatters/model-formatters.js +23 -0
- package/dist/lib/codex-manager/formatters/quota-formatters.d.ts +11 -0
- package/dist/lib/codex-manager/formatters/quota-formatters.d.ts.map +1 -0
- package/dist/lib/codex-manager/formatters/quota-formatters.js +104 -0
- package/dist/lib/codex-manager/formatters/text-style.d.ts +14 -0
- package/dist/lib/codex-manager/formatters/text-style.d.ts.map +1 -0
- package/dist/lib/codex-manager/formatters/text-style.js +111 -0
- package/dist/lib/codex-manager/health-check.d.ts +14 -0
- package/dist/lib/codex-manager/health-check.d.ts.map +1 -0
- package/dist/lib/codex-manager/health-check.js +278 -0
- package/dist/lib/codex-manager/help.js +0 -1
- package/dist/lib/codex-manager/login-action-panel.d.ts +4 -0
- package/dist/lib/codex-manager/login-action-panel.d.ts.map +1 -0
- package/dist/lib/codex-manager/login-action-panel.js +238 -0
- package/dist/lib/codex-manager/login-flow.d.ts +17 -0
- package/dist/lib/codex-manager/login-flow.d.ts.map +1 -0
- package/dist/lib/codex-manager/login-flow.js +387 -0
- package/dist/lib/codex-manager/login-menu-actions.d.ts +20 -0
- package/dist/lib/codex-manager/login-menu-actions.d.ts.map +1 -0
- package/dist/lib/codex-manager/login-menu-actions.js +303 -0
- package/dist/lib/codex-manager/login-menu-data.d.ts +19 -0
- package/dist/lib/codex-manager/login-menu-data.d.ts.map +1 -0
- package/dist/lib/codex-manager/login-menu-data.js +378 -0
- package/dist/lib/codex-manager/login-oauth.d.ts +55 -0
- package/dist/lib/codex-manager/login-oauth.d.ts.map +1 -0
- package/dist/lib/codex-manager/login-oauth.js +345 -0
- package/dist/lib/codex-manager/manual-callback.d.ts +33 -0
- package/dist/lib/codex-manager/manual-callback.d.ts.map +1 -0
- package/dist/lib/codex-manager/manual-callback.js +30 -0
- package/dist/lib/codex-manager/manual-callback.js.map +1 -0
- package/dist/lib/codex-manager/persist-selected-account.d.ts +24 -0
- package/dist/lib/codex-manager/persist-selected-account.d.ts.map +1 -0
- package/dist/lib/codex-manager/persist-selected-account.js +107 -0
- package/dist/lib/codex-manager/quota-cache-helpers.d.ts +18 -0
- package/dist/lib/codex-manager/quota-cache-helpers.d.ts.map +1 -0
- package/dist/lib/codex-manager/quota-cache-helpers.js +112 -0
- package/dist/lib/codex-manager/rate-limit-markers.js +0 -1
- package/dist/lib/codex-manager/repair-commands.js +0 -1
- package/dist/lib/codex-manager/settings-hub/backend.js +1 -2
- package/dist/lib/codex-manager/settings-hub/dashboard.js +1 -2
- package/dist/lib/codex-manager/settings-hub/experimental.js +1 -2
- package/dist/lib/codex-manager/settings-hub/index.js +1 -2
- package/dist/lib/codex-manager/settings-hub/shared.js +0 -1
- package/dist/lib/codex-manager/settings-hub-entry.js +0 -1
- package/dist/lib/codex-manager/settings-hub-menu.js +0 -1
- package/dist/lib/codex-manager/settings-hub-prompt.js +0 -1
- package/dist/lib/codex-manager/settings-hub.js +0 -1
- package/dist/lib/codex-manager/settings-panels.js +0 -1
- package/dist/lib/codex-manager/settings-persist-utils.js +0 -1
- package/dist/lib/codex-manager/settings-preview.js +0 -1
- package/dist/lib/codex-manager/settings-write-queue.js +0 -1
- package/dist/lib/codex-manager/statusline-order.js +0 -1
- package/dist/lib/codex-manager/statusline-settings-panel.d.ts +1 -1
- package/dist/lib/codex-manager/statusline-settings-panel.d.ts.map +1 -1
- package/dist/lib/codex-manager/statusline-settings-panel.js +0 -1
- package/dist/lib/codex-manager/theme-settings-panel.d.ts +1 -1
- package/dist/lib/codex-manager/theme-settings-panel.d.ts.map +1 -1
- package/dist/lib/codex-manager/theme-settings-panel.js +0 -1
- package/dist/lib/codex-manager/unified-settings-controller.js +0 -1
- package/dist/lib/codex-manager/unified-settings-entry.js +0 -1
- package/dist/lib/codex-manager.d.ts +2 -4
- package/dist/lib/codex-manager.d.ts.map +1 -1
- package/dist/lib/codex-manager.js +219 -2578
- package/dist/lib/codex-manager.js.map +1 -1
- package/dist/lib/config-schema.d.ts +32 -0
- package/dist/lib/config-schema.d.ts.map +1 -0
- package/dist/lib/config-schema.js +96 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +60 -104
- package/dist/lib/constants.js +0 -1
- package/dist/lib/context-overflow.js +0 -1
- package/dist/lib/dashboard-settings.js +0 -1
- package/dist/lib/entitlement-cache.js +0 -1
- package/dist/lib/env-parsing.js +0 -1
- package/dist/lib/errors.js +0 -1
- package/dist/lib/forecast.js +0 -1
- package/dist/lib/fs-retry.d.ts +46 -0
- package/dist/lib/fs-retry.d.ts.map +1 -1
- package/dist/lib/fs-retry.js +74 -6
- package/dist/lib/health.js +0 -1
- package/dist/lib/index.js +0 -1
- package/dist/lib/integration-generators.js +0 -1
- package/dist/lib/live-account-sync.js +0 -1
- package/dist/lib/local-bridge.js +0 -1
- package/dist/lib/local-client-tokens.js +0 -1
- package/dist/lib/logger.js +0 -1
- package/dist/lib/model-capability-matrix.js +0 -1
- package/dist/lib/named-backup-export.js +0 -1
- package/dist/lib/oc-chatgpt-import-adapter.js +0 -1
- package/dist/lib/oc-chatgpt-orchestrator.js +0 -1
- package/dist/lib/oc-chatgpt-target-detection.js +0 -1
- package/dist/lib/parallel-probe.js +0 -1
- package/dist/lib/policy/runtime-policy.js +0 -1
- package/dist/lib/preemptive-quota-scheduler.js +0 -1
- package/dist/lib/proactive-refresh.js +0 -1
- package/dist/lib/prompts/codex-host-bridge.js +0 -1
- package/dist/lib/prompts/codex.d.ts +3 -11
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +4 -12
- package/dist/lib/prompts/fetch-utils.js +0 -1
- package/dist/lib/prompts/host-codex-prompt.js +0 -1
- package/dist/lib/quota-cache.d.ts.map +1 -1
- package/dist/lib/quota-cache.js +15 -43
- package/dist/lib/quota-probe.js +0 -1
- package/dist/lib/quota-readiness.js +0 -1
- package/dist/lib/recovery/constants.js +0 -1
- package/dist/lib/recovery/index.js +0 -1
- package/dist/lib/recovery/storage.d.ts.map +1 -1
- package/dist/lib/recovery/storage.js +30 -51
- package/dist/lib/recovery/storage.js.map +1 -1
- package/dist/lib/recovery/types.js +0 -1
- package/dist/lib/recovery.js +0 -1
- package/dist/lib/refresh-guardian.js +0 -1
- package/dist/lib/refresh-lease.d.ts.map +1 -1
- package/dist/lib/refresh-lease.js +1 -4
- package/dist/lib/refresh-queue.js +0 -1
- package/dist/lib/request/error-classification.d.ts +75 -0
- package/dist/lib/request/error-classification.d.ts.map +1 -0
- package/dist/lib/request/error-classification.js +295 -0
- package/dist/lib/request/failover-config.js +0 -1
- package/dist/lib/request/failure-policy.js +0 -1
- package/dist/lib/request/fetch-helpers.d.ts +10 -114
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +7 -589
- package/dist/lib/request/headers.d.ts +33 -0
- package/dist/lib/request/headers.d.ts.map +1 -0
- package/dist/lib/request/headers.js +64 -0
- package/dist/lib/request/helpers/input-utils.js +0 -1
- package/dist/lib/request/helpers/model-map.d.ts +10 -0
- package/dist/lib/request/helpers/model-map.d.ts.map +1 -1
- package/dist/lib/request/helpers/model-map.js +11 -1
- package/dist/lib/request/helpers/tool-utils.js +0 -1
- package/dist/lib/request/index.js +0 -1
- package/dist/lib/request/rate-limit-backoff.js +0 -1
- package/dist/lib/request/rate-limit-decision.d.ts +28 -0
- package/dist/lib/request/rate-limit-decision.d.ts.map +1 -0
- package/dist/lib/request/rate-limit-decision.js +191 -0
- package/dist/lib/request/request-attempt-budget.js +0 -1
- package/dist/lib/request/request-init.js +0 -1
- package/dist/lib/request/request-resilience.js +0 -1
- package/dist/lib/request/request-transformer.js +0 -1
- package/dist/lib/request/response-compaction.js +0 -1
- package/dist/lib/request/response-handler.js +0 -1
- package/dist/lib/request/response-metadata.js +0 -1
- package/dist/lib/request/stream-failover-runtime.d.ts +8 -0
- package/dist/lib/request/stream-failover-runtime.d.ts.map +1 -0
- package/dist/lib/request/stream-failover-runtime.js +149 -0
- package/dist/lib/request/stream-failover.js +0 -1
- package/dist/lib/request/token-refresh.d.ts +30 -0
- package/dist/lib/request/token-refresh.d.ts.map +1 -0
- package/dist/lib/request/token-refresh.js +116 -0
- package/dist/lib/request/url-rewriting.d.ts +24 -0
- package/dist/lib/request/url-rewriting.d.ts.map +1 -0
- package/dist/lib/request/url-rewriting.js +153 -0
- package/dist/lib/request/wait-utils.js +0 -1
- package/dist/lib/rotation.d.ts +1 -1
- package/dist/lib/rotation.d.ts.map +1 -1
- package/dist/lib/rotation.js +0 -1
- package/dist/lib/routing-mutex.js +0 -1
- package/dist/lib/routing-profiles.js +0 -1
- package/dist/lib/runtime/account-check-helpers.js +0 -1
- package/dist/lib/runtime/account-check-types.js +0 -1
- package/dist/lib/runtime/account-check.js +0 -1
- package/dist/lib/runtime/account-health-check.js +0 -1
- package/dist/lib/runtime/account-manager-cache-entry.js +0 -1
- package/dist/lib/runtime/account-manager-cache.js +0 -1
- package/dist/lib/runtime/account-pool.js +0 -1
- package/dist/lib/runtime/account-scope.js +0 -1
- package/dist/lib/runtime/account-select-event.js +0 -1
- package/dist/lib/runtime/account-selection.js +0 -1
- package/dist/lib/runtime/account-state.js +0 -1
- package/dist/lib/runtime/account-status.js +0 -1
- package/dist/lib/runtime/account-storage-scope-entry.js +0 -1
- package/dist/lib/runtime/app-bind.js +0 -1
- package/dist/lib/runtime/auth-facade.js +0 -1
- package/dist/lib/runtime/browser-oauth-flow.js +0 -1
- package/dist/lib/runtime/capability-boost.js +0 -1
- package/dist/lib/runtime/config-toml.js +0 -1
- package/dist/lib/runtime/event-handler.js +0 -1
- package/dist/lib/runtime/first-run.d.ts +80 -0
- package/dist/lib/runtime/first-run.d.ts.map +1 -0
- package/dist/lib/runtime/first-run.js +327 -0
- package/dist/lib/runtime/flagged-verify-types.js +0 -1
- package/dist/lib/runtime/hydrate-emails.js +0 -1
- package/dist/lib/runtime/live-sync-entry.js +0 -1
- package/dist/lib/runtime/live-sync.js +0 -1
- package/dist/lib/runtime/loader-setup.js +0 -1
- package/dist/lib/runtime/login-menu-accounts.js +0 -1
- package/dist/lib/runtime/manual-oauth-flow.js +0 -1
- package/dist/lib/runtime/oauth-browser-flow.js +0 -1
- package/dist/lib/runtime/preemptive-quota.js +0 -1
- package/dist/lib/runtime/quota-headers.js +0 -1
- package/dist/lib/runtime/quota-probe.js +0 -1
- package/dist/lib/runtime/quota-settings.js +0 -1
- package/dist/lib/runtime/refresh-guardian-entry.js +0 -1
- package/dist/lib/runtime/refresh-guardian.js +0 -1
- package/dist/lib/runtime/request-init.js +0 -1
- package/dist/lib/runtime/rotation-account-selection.d.ts +38 -0
- package/dist/lib/runtime/rotation-account-selection.d.ts.map +1 -0
- package/dist/lib/runtime/rotation-account-selection.js +172 -0
- package/dist/lib/runtime/rotation-proxy-state.d.ts +54 -0
- package/dist/lib/runtime/rotation-proxy-state.d.ts.map +1 -0
- package/dist/lib/runtime/rotation-proxy-state.js +56 -0
- package/dist/lib/runtime/rotation-server-types.d.ts +57 -0
- package/dist/lib/runtime/rotation-server-types.d.ts.map +1 -0
- package/dist/lib/runtime/rotation-server-types.js +1 -0
- package/dist/lib/runtime/rotation-storage-meta.d.ts +40 -0
- package/dist/lib/runtime/rotation-storage-meta.d.ts.map +1 -0
- package/dist/lib/runtime/rotation-storage-meta.js +143 -0
- package/dist/lib/runtime/rotation-token-refresh.d.ts +25 -0
- package/dist/lib/runtime/rotation-token-refresh.d.ts.map +1 -0
- package/dist/lib/runtime/rotation-token-refresh.js +99 -0
- package/dist/lib/runtime/runtime-current-account.d.ts.map +1 -1
- package/dist/lib/runtime/runtime-current-account.js +1 -4
- package/dist/lib/runtime/runtime-observability.js +0 -1
- package/dist/lib/runtime/runtime-services.js +0 -1
- package/dist/lib/runtime/session-affinity-entry.js +0 -1
- package/dist/lib/runtime/session-affinity.js +0 -1
- package/dist/lib/runtime/session-recovery.js +0 -1
- package/dist/lib/runtime/status-marker.js +0 -1
- package/dist/lib/runtime/storage-scope.js +0 -1
- package/dist/lib/runtime/toast.js +0 -1
- package/dist/lib/runtime/ui-runtime-entry.js +0 -1
- package/dist/lib/runtime/ui-runtime.js +0 -1
- package/dist/lib/runtime/verify-flagged.js +0 -1
- package/dist/lib/runtime-constants.js +0 -1
- package/dist/lib/runtime-paths.js +0 -1
- package/dist/lib/runtime-rotation-proxy.d.ts +7 -124
- package/dist/lib/runtime-rotation-proxy.d.ts.map +1 -1
- package/dist/lib/runtime-rotation-proxy.js +614 -1353
- package/dist/lib/schemas.d.ts +3 -3
- package/dist/lib/schemas.js +1 -2
- package/dist/lib/session-affinity.js +0 -1
- package/dist/lib/shutdown.js +0 -1
- package/dist/lib/storage/account-clear-entry.js +0 -1
- package/dist/lib/storage/account-clear.js +0 -1
- package/dist/lib/storage/account-match-utils.js +0 -1
- package/dist/lib/storage/account-persistence.d.ts +1 -1
- package/dist/lib/storage/account-persistence.d.ts.map +1 -1
- package/dist/lib/storage/account-persistence.js +0 -1
- package/dist/lib/storage/account-port.d.ts +1 -1
- package/dist/lib/storage/account-port.d.ts.map +1 -1
- package/dist/lib/storage/account-port.js +0 -1
- package/dist/lib/storage/account-save-entry.d.ts +1 -1
- package/dist/lib/storage/account-save-entry.d.ts.map +1 -1
- package/dist/lib/storage/account-save-entry.js +0 -1
- package/dist/lib/storage/account-save.d.ts +1 -1
- package/dist/lib/storage/account-save.d.ts.map +1 -1
- package/dist/lib/storage/account-save.js +0 -1
- package/dist/lib/storage/account-snapshot.js +0 -1
- package/dist/lib/storage/backup-metadata-builder.d.ts +1 -1
- package/dist/lib/storage/backup-metadata-builder.d.ts.map +1 -1
- package/dist/lib/storage/backup-metadata-builder.js +0 -1
- package/dist/lib/storage/backup-metadata.d.ts +13 -0
- package/dist/lib/storage/backup-metadata.d.ts.map +1 -1
- package/dist/lib/storage/backup-metadata.js +0 -1
- package/dist/lib/storage/backup-paths.js +0 -1
- package/dist/lib/storage/backup-restore.d.ts +1 -1
- package/dist/lib/storage/backup-restore.d.ts.map +1 -1
- package/dist/lib/storage/backup-restore.js +0 -1
- package/dist/lib/storage/cache-artifacts.js +0 -1
- package/dist/lib/storage/error-hints.js +0 -1
- package/dist/lib/storage/file-paths.js +0 -1
- package/dist/lib/storage/fixture-guards.d.ts +1 -1
- package/dist/lib/storage/fixture-guards.d.ts.map +1 -1
- package/dist/lib/storage/fixture-guards.js +0 -1
- package/dist/lib/storage/flagged-entry.js +0 -1
- package/dist/lib/storage/flagged-load-entry.d.ts +1 -1
- package/dist/lib/storage/flagged-load-entry.d.ts.map +1 -1
- package/dist/lib/storage/flagged-load-entry.js +0 -1
- package/dist/lib/storage/flagged-save-entry.d.ts +1 -1
- package/dist/lib/storage/flagged-save-entry.d.ts.map +1 -1
- package/dist/lib/storage/flagged-save-entry.js +0 -1
- package/dist/lib/storage/flagged-storage-file.d.ts +1 -1
- package/dist/lib/storage/flagged-storage-file.d.ts.map +1 -1
- package/dist/lib/storage/flagged-storage-file.js +0 -1
- package/dist/lib/storage/flagged-storage-io.d.ts +1 -1
- package/dist/lib/storage/flagged-storage-io.d.ts.map +1 -1
- package/dist/lib/storage/flagged-storage-io.js +0 -1
- package/dist/lib/storage/flagged-storage.d.ts +1 -1
- package/dist/lib/storage/flagged-storage.d.ts.map +1 -1
- package/dist/lib/storage/flagged-storage.js +15 -2
- package/dist/lib/storage/flagged-storage.js.map +1 -1
- package/dist/lib/storage/gitignore.js +0 -1
- package/dist/lib/storage/hash.js +0 -1
- package/dist/lib/storage/health.js +0 -1
- package/dist/lib/storage/identity.js +0 -1
- package/dist/lib/storage/import-export.d.ts +1 -1
- package/dist/lib/storage/import-export.d.ts.map +1 -1
- package/dist/lib/storage/import-export.js +0 -1
- package/dist/lib/storage/metadata-section.js +0 -1
- package/dist/lib/storage/migrations.d.ts +5 -48
- package/dist/lib/storage/migrations.d.ts.map +1 -1
- package/dist/lib/storage/migrations.js +5 -2
- package/dist/lib/storage/named-backup-entry.js +0 -1
- package/dist/lib/storage/named-backups-entry.d.ts +1 -1
- package/dist/lib/storage/named-backups-entry.d.ts.map +1 -1
- package/dist/lib/storage/named-backups-entry.js +0 -1
- package/dist/lib/storage/named-backups.js +0 -1
- package/dist/lib/storage/path-state.js +0 -1
- package/dist/lib/storage/paths.js +0 -1
- package/dist/lib/storage/project-migration.d.ts +1 -1
- package/dist/lib/storage/project-migration.d.ts.map +1 -1
- package/dist/lib/storage/project-migration.js +0 -1
- package/dist/lib/storage/public-types.d.ts +70 -0
- package/dist/lib/storage/public-types.d.ts.map +1 -0
- package/dist/lib/storage/public-types.js +6 -0
- package/dist/lib/storage/record-utils.js +0 -1
- package/dist/lib/storage/restore-assessment.d.ts +1 -1
- package/dist/lib/storage/restore-assessment.d.ts.map +1 -1
- package/dist/lib/storage/restore-assessment.js +0 -1
- package/dist/lib/storage/restore-backup-entry.d.ts +1 -1
- package/dist/lib/storage/restore-backup-entry.d.ts.map +1 -1
- package/dist/lib/storage/restore-backup-entry.js +0 -1
- package/dist/lib/storage/restore-metadata.d.ts +1 -1
- package/dist/lib/storage/restore-metadata.d.ts.map +1 -1
- package/dist/lib/storage/restore-metadata.js +0 -1
- package/dist/lib/storage/restore.d.ts +1 -1
- package/dist/lib/storage/restore.d.ts.map +1 -1
- package/dist/lib/storage/restore.js +0 -1
- package/dist/lib/storage/save-retry.d.ts +10 -0
- package/dist/lib/storage/save-retry.d.ts.map +1 -0
- package/dist/lib/storage/save-retry.js +26 -0
- package/dist/lib/storage/snapshot-inspectors.d.ts +1 -1
- package/dist/lib/storage/snapshot-inspectors.d.ts.map +1 -1
- package/dist/lib/storage/snapshot-inspectors.js +0 -1
- package/dist/lib/storage/storage-parser.d.ts +1 -1
- package/dist/lib/storage/storage-parser.d.ts.map +1 -1
- package/dist/lib/storage/storage-parser.js +0 -1
- package/dist/lib/storage/transactions.d.ts +1 -1
- package/dist/lib/storage/transactions.d.ts.map +1 -1
- package/dist/lib/storage/transactions.js +0 -1
- package/dist/lib/storage.d.ts +3 -24
- package/dist/lib/storage.d.ts.map +1 -1
- package/dist/lib/storage.js +17 -32
- package/dist/lib/table-formatter.js +0 -1
- package/dist/lib/tools/hashline-tools.js +0 -1
- package/dist/lib/types.js +0 -1
- package/dist/lib/ui/ansi.js +0 -1
- package/dist/lib/ui/auth-menu-builder.d.ts +89 -0
- package/dist/lib/ui/auth-menu-builder.d.ts.map +1 -0
- package/dist/lib/ui/auth-menu-builder.js +350 -0
- package/dist/lib/ui/auth-menu.d.ts +2 -76
- package/dist/lib/ui/auth-menu.d.ts.map +1 -1
- package/dist/lib/ui/auth-menu.js +3 -349
- package/dist/lib/ui/confirm.js +0 -1
- package/dist/lib/ui/copy.d.ts +2 -0
- package/dist/lib/ui/copy.d.ts.map +1 -1
- package/dist/lib/ui/copy.js +2 -0
- package/dist/lib/ui/copy.js.map +1 -1
- package/dist/lib/ui/display-width.js +0 -1
- package/dist/lib/ui/format.js +0 -1
- package/dist/lib/ui/index.d.ts +10 -0
- package/dist/lib/ui/index.d.ts.map +1 -0
- package/dist/lib/ui/index.js +9 -0
- package/dist/lib/ui/runtime.js +0 -1
- package/dist/lib/ui/select.js +0 -1
- package/dist/lib/ui/theme.js +0 -1
- package/dist/lib/ui/ui-copy.d.ts +159 -0
- package/dist/lib/ui/ui-copy.d.ts.map +1 -0
- package/dist/lib/ui/ui-copy.js +163 -0
- package/dist/lib/unified-settings.js +0 -1
- package/dist/lib/update-notice.js +0 -1
- package/dist/lib/usage/index.js +0 -1
- package/dist/lib/usage/ledger.js +0 -1
- package/dist/lib/usage/pricing.js +0 -1
- package/dist/lib/usage/redaction.js +0 -1
- package/dist/lib/usage/types.js +0 -1
- package/dist/lib/utils.js +0 -1
- package/package.json +8 -8
- package/scripts/postinstall.js +34 -265
- package/scripts/preuninstall.js +2 -2
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { Workspace } from "../accounts.js";
|
|
2
|
+
import type { AccountMetadataV3 } from "../storage/public-types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Outcome of folding a single login result into the saved account pool.
|
|
5
|
+
*
|
|
6
|
+
* The CLI login flow uses this to report what actually happened instead of
|
|
7
|
+
* always claiming `Added account` (issue #512): a same-email login that maps
|
|
8
|
+
* onto an existing saved entry updates or rebinds it rather than growing the
|
|
9
|
+
* pool.
|
|
10
|
+
*
|
|
11
|
+
* - `inserted`: a brand new saved entry was appended.
|
|
12
|
+
* - `updated`: an existing entry was refreshed (tokens/label/email) with no
|
|
13
|
+
* previously-unknown workspace introduced.
|
|
14
|
+
* - `rebound`: an existing entry gained at least one workspace id it was not
|
|
15
|
+
* tracking before (e.g. a different workspace on the same email).
|
|
16
|
+
*/
|
|
17
|
+
export type AccountPoolWriteOutcome = "inserted" | "updated" | "rebound";
|
|
18
|
+
/**
|
|
19
|
+
* Identity/token fields resolved from a login result, ready to fold into the
|
|
20
|
+
* saved pool. Field resolution (account id precedence, email sanitisation)
|
|
21
|
+
* happens in the caller; this helper only owns the workspace-tracking and
|
|
22
|
+
* outcome-classification logic that issue #512 depends on.
|
|
23
|
+
*/
|
|
24
|
+
export interface ResolvedAccountWrite {
|
|
25
|
+
accountId?: string;
|
|
26
|
+
accountIdSource?: AccountMetadataV3["accountIdSource"];
|
|
27
|
+
accountLabel?: string;
|
|
28
|
+
email?: string;
|
|
29
|
+
refreshToken: string;
|
|
30
|
+
accessToken?: string;
|
|
31
|
+
expiresAt?: number;
|
|
32
|
+
workspaces?: Workspace[];
|
|
33
|
+
now: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Choose the workspace a freshly-saved account should start on: prefer the
|
|
37
|
+
* workspace whose id matches the resolved accountId, otherwise the first
|
|
38
|
+
* enabled workspace, otherwise index 0.
|
|
39
|
+
*/
|
|
40
|
+
export declare function pickInitialWorkspaceIndex(workspaces: Workspace[], accountId: string | undefined): number;
|
|
41
|
+
/**
|
|
42
|
+
* Merge incoming workspaces with the saved set, preserving any per-workspace
|
|
43
|
+
* enabled/disabled state the user already had. Workspaces the login did not
|
|
44
|
+
* surface are dropped only when the login returned a workspace list at all;
|
|
45
|
+
* otherwise the existing list is kept untouched.
|
|
46
|
+
*/
|
|
47
|
+
export declare function mergeAccountWorkspaces(existing: Pick<AccountMetadataV3, "workspaces">, incoming: Workspace[] | undefined): Workspace[] | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Resolve the workspace index a refreshed account should point at after a
|
|
50
|
+
* merge: keep the user on their current workspace if it survived, else the
|
|
51
|
+
* default workspace, else the first enabled one, else index 0.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolveCurrentWorkspaceIndex(existing: Pick<AccountMetadataV3, "workspaces" | "currentWorkspaceIndex">, mergedWorkspaces: Workspace[] | undefined): number | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Build the saved record for a login result that did not match any existing
|
|
56
|
+
* entry, seeding its workspace tracking from the token-derived workspaces.
|
|
57
|
+
*/
|
|
58
|
+
export declare function buildInsertedAccount(write: ResolvedAccountWrite): {
|
|
59
|
+
account: AccountMetadataV3;
|
|
60
|
+
outcome: "inserted";
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Fold a login result onto an existing saved entry: refresh tokens/identity,
|
|
64
|
+
* merge workspace tracking, and classify whether this was a plain `updated`
|
|
65
|
+
* refresh or a `rebound` (a previously-unknown workspace appeared).
|
|
66
|
+
*/
|
|
67
|
+
export declare function buildUpdatedAccount(existing: AccountMetadataV3, write: ResolvedAccountWrite): {
|
|
68
|
+
account: AccountMetadataV3;
|
|
69
|
+
outcome: "updated" | "rebound";
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Fold a batch of resolved login writes into the saved account list, returning
|
|
73
|
+
* the next account array, the selected index, and the outcome of the last
|
|
74
|
+
* write. This is the pure core of `persistAccountPool`: it owns the dedup →
|
|
75
|
+
* insert/update → workspace-tracking → active-index decisions that issue #512
|
|
76
|
+
* depends on, with the matching strategy injected so the production path and
|
|
77
|
+
* tests share the exact same behaviour.
|
|
78
|
+
*/
|
|
79
|
+
export declare function applyAccountPoolResults(params: {
|
|
80
|
+
existing: AccountMetadataV3[];
|
|
81
|
+
writes: ResolvedAccountWrite[];
|
|
82
|
+
priorActiveIndex?: number;
|
|
83
|
+
findMatchingAccountIndex: (accounts: AccountMetadataV3[], identity: {
|
|
84
|
+
accountId?: string;
|
|
85
|
+
email?: string;
|
|
86
|
+
refreshToken?: string;
|
|
87
|
+
}, options: {
|
|
88
|
+
allowUniqueAccountIdFallbackWithoutEmail: boolean;
|
|
89
|
+
}) => number | undefined;
|
|
90
|
+
}): {
|
|
91
|
+
accounts: AccountMetadataV3[];
|
|
92
|
+
activeIndex: number;
|
|
93
|
+
outcome: AccountPoolWriteOutcome | null;
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=account-pool-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-pool-write.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/account-pool-write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,UAAU,EAAE,SAAS,EAAE,EACvB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,CAWR;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,EAC/C,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,GAC/B,SAAS,EAAE,GAAG,SAAS,CAYzB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC3C,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,uBAAuB,CAAC,EACzE,gBAAgB,EAAE,SAAS,EAAE,GAAG,SAAS,GACvC,MAAM,GAAG,SAAS,CAwBpB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,oBAAoB,GACzB;IAAE,OAAO,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAsBrD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,oBAAoB,GACzB;IAAE,OAAO,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,CA6ChE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC/C,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB,EAAE,CACzB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,QAAQ,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACtB,EACD,OAAO,EAAE;QAAE,wCAAwC,EAAE,OAAO,CAAA;KAAE,KAC1D,MAAM,GAAG,SAAS,CAAC;CACxB,GAAG;IACH,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACxC,CA6CA"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Choose the workspace a freshly-saved account should start on: prefer the
|
|
3
|
+
* workspace whose id matches the resolved accountId, otherwise the first
|
|
4
|
+
* enabled workspace, otherwise index 0.
|
|
5
|
+
*/
|
|
6
|
+
export function pickInitialWorkspaceIndex(workspaces, accountId) {
|
|
7
|
+
if (accountId) {
|
|
8
|
+
const matching = workspaces.findIndex((workspace) => workspace.id === accountId);
|
|
9
|
+
if (matching >= 0)
|
|
10
|
+
return matching;
|
|
11
|
+
}
|
|
12
|
+
const firstEnabled = workspaces.findIndex((workspace) => workspace.enabled !== false);
|
|
13
|
+
return firstEnabled >= 0 ? firstEnabled : 0;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Merge incoming workspaces with the saved set, preserving any per-workspace
|
|
17
|
+
* enabled/disabled state the user already had. Workspaces the login did not
|
|
18
|
+
* surface are dropped only when the login returned a workspace list at all;
|
|
19
|
+
* otherwise the existing list is kept untouched.
|
|
20
|
+
*/
|
|
21
|
+
export function mergeAccountWorkspaces(existing, incoming) {
|
|
22
|
+
if (!incoming)
|
|
23
|
+
return existing.workspaces;
|
|
24
|
+
return incoming.map((newWs) => {
|
|
25
|
+
const existingWs = existing.workspaces?.find((w) => w.id === newWs.id);
|
|
26
|
+
return existingWs
|
|
27
|
+
? {
|
|
28
|
+
...newWs,
|
|
29
|
+
enabled: existingWs.enabled,
|
|
30
|
+
disabledAt: existingWs.disabledAt,
|
|
31
|
+
}
|
|
32
|
+
: newWs;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolve the workspace index a refreshed account should point at after a
|
|
37
|
+
* merge: keep the user on their current workspace if it survived, else the
|
|
38
|
+
* default workspace, else the first enabled one, else index 0.
|
|
39
|
+
*/
|
|
40
|
+
export function resolveCurrentWorkspaceIndex(existing, mergedWorkspaces) {
|
|
41
|
+
if (!mergedWorkspaces || mergedWorkspaces.length === 0) {
|
|
42
|
+
return existing.currentWorkspaceIndex;
|
|
43
|
+
}
|
|
44
|
+
const currentWorkspaceId = existing.workspaces?.[typeof existing.currentWorkspaceIndex === "number"
|
|
45
|
+
? existing.currentWorkspaceIndex
|
|
46
|
+
: 0]?.id;
|
|
47
|
+
if (currentWorkspaceId) {
|
|
48
|
+
const matching = mergedWorkspaces.findIndex((workspace) => workspace.id === currentWorkspaceId);
|
|
49
|
+
if (matching >= 0)
|
|
50
|
+
return matching;
|
|
51
|
+
}
|
|
52
|
+
const defaultIndex = mergedWorkspaces.findIndex((workspace) => workspace.isDefault === true);
|
|
53
|
+
if (defaultIndex >= 0)
|
|
54
|
+
return defaultIndex;
|
|
55
|
+
const firstEnabled = mergedWorkspaces.findIndex((workspace) => workspace.enabled !== false);
|
|
56
|
+
return firstEnabled >= 0 ? firstEnabled : 0;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Build the saved record for a login result that did not match any existing
|
|
60
|
+
* entry, seeding its workspace tracking from the token-derived workspaces.
|
|
61
|
+
*/
|
|
62
|
+
export function buildInsertedAccount(write) {
|
|
63
|
+
const initialWorkspaceIndex = write.workspaces && write.workspaces.length > 0
|
|
64
|
+
? pickInitialWorkspaceIndex(write.workspaces, write.accountId)
|
|
65
|
+
: undefined;
|
|
66
|
+
return {
|
|
67
|
+
outcome: "inserted",
|
|
68
|
+
account: {
|
|
69
|
+
accountId: write.accountId,
|
|
70
|
+
accountIdSource: write.accountIdSource,
|
|
71
|
+
accountLabel: write.accountLabel,
|
|
72
|
+
email: write.email,
|
|
73
|
+
refreshToken: write.refreshToken,
|
|
74
|
+
accessToken: write.accessToken,
|
|
75
|
+
expiresAt: write.expiresAt,
|
|
76
|
+
enabled: true,
|
|
77
|
+
addedAt: write.now,
|
|
78
|
+
lastUsed: write.now,
|
|
79
|
+
workspaces: write.workspaces,
|
|
80
|
+
currentWorkspaceIndex: initialWorkspaceIndex,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Fold a login result onto an existing saved entry: refresh tokens/identity,
|
|
86
|
+
* merge workspace tracking, and classify whether this was a plain `updated`
|
|
87
|
+
* refresh or a `rebound` (a previously-unknown workspace appeared).
|
|
88
|
+
*/
|
|
89
|
+
export function buildUpdatedAccount(existing, write) {
|
|
90
|
+
const nextEmail = write.email ?? existing.email;
|
|
91
|
+
const nextAccountId = write.accountId ?? existing.accountId;
|
|
92
|
+
const nextAccountIdSource = write.accountId
|
|
93
|
+
? (write.accountIdSource ?? existing.accountIdSource)
|
|
94
|
+
: existing.accountIdSource;
|
|
95
|
+
const previousWorkspaceIds = new Set((existing.workspaces ?? []).map((workspace) => workspace.id));
|
|
96
|
+
const mergedWorkspaces = mergeAccountWorkspaces(existing, write.workspaces);
|
|
97
|
+
// Only a genuine *rebind* counts as "rebound": the account already tracked
|
|
98
|
+
// workspaces and the login surfaced one it had never seen. First-time
|
|
99
|
+
// enrichment of a pre-#491 row (no prior workspaces) is a plain `updated`,
|
|
100
|
+
// so the user is not told "Rebound workspace" on their first workspace-aware
|
|
101
|
+
// re-login (#512 follow-up).
|
|
102
|
+
const introducedNewWorkspace = previousWorkspaceIds.size > 0 &&
|
|
103
|
+
Boolean(write.workspaces?.some((workspace) => !previousWorkspaceIds.has(workspace.id)));
|
|
104
|
+
const nextCurrentWorkspaceIndex = resolveCurrentWorkspaceIndex(existing, mergedWorkspaces);
|
|
105
|
+
return {
|
|
106
|
+
outcome: introducedNewWorkspace ? "rebound" : "updated",
|
|
107
|
+
account: {
|
|
108
|
+
...existing,
|
|
109
|
+
accountId: nextAccountId,
|
|
110
|
+
accountIdSource: nextAccountIdSource,
|
|
111
|
+
accountLabel: write.accountLabel ?? existing.accountLabel,
|
|
112
|
+
email: nextEmail,
|
|
113
|
+
refreshToken: write.refreshToken,
|
|
114
|
+
accessToken: write.accessToken,
|
|
115
|
+
expiresAt: write.expiresAt,
|
|
116
|
+
enabled: true,
|
|
117
|
+
lastUsed: write.now,
|
|
118
|
+
workspaces: mergedWorkspaces,
|
|
119
|
+
currentWorkspaceIndex: nextCurrentWorkspaceIndex,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Fold a batch of resolved login writes into the saved account list, returning
|
|
125
|
+
* the next account array, the selected index, and the outcome of the last
|
|
126
|
+
* write. This is the pure core of `persistAccountPool`: it owns the dedup →
|
|
127
|
+
* insert/update → workspace-tracking → active-index decisions that issue #512
|
|
128
|
+
* depends on, with the matching strategy injected so the production path and
|
|
129
|
+
* tests share the exact same behaviour.
|
|
130
|
+
*/
|
|
131
|
+
export function applyAccountPoolResults(params) {
|
|
132
|
+
const accounts = [...params.existing];
|
|
133
|
+
let selectedAccountIndex = null;
|
|
134
|
+
let selectedOutcome = null;
|
|
135
|
+
for (const write of params.writes) {
|
|
136
|
+
const existingIndex = params.findMatchingAccountIndex(accounts, {
|
|
137
|
+
accountId: write.accountId,
|
|
138
|
+
email: write.email,
|
|
139
|
+
refreshToken: write.refreshToken,
|
|
140
|
+
}, { allowUniqueAccountIdFallbackWithoutEmail: true });
|
|
141
|
+
if (existingIndex === undefined) {
|
|
142
|
+
const { account, outcome } = buildInsertedAccount(write);
|
|
143
|
+
selectedAccountIndex = accounts.length;
|
|
144
|
+
accounts.push(account);
|
|
145
|
+
selectedOutcome = outcome;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const existing = accounts[existingIndex];
|
|
149
|
+
if (!existing)
|
|
150
|
+
continue;
|
|
151
|
+
const { account, outcome } = buildUpdatedAccount(existing, write);
|
|
152
|
+
accounts[existingIndex] = account;
|
|
153
|
+
selectedAccountIndex = existingIndex;
|
|
154
|
+
selectedOutcome = outcome;
|
|
155
|
+
}
|
|
156
|
+
const fallbackActiveIndex = accounts.length === 0
|
|
157
|
+
? 0
|
|
158
|
+
: Math.max(0, Math.min(params.priorActiveIndex ?? 0, accounts.length - 1));
|
|
159
|
+
const activeIndex = accounts.length === 0
|
|
160
|
+
? 0
|
|
161
|
+
: selectedAccountIndex === null
|
|
162
|
+
? fallbackActiveIndex
|
|
163
|
+
: Math.max(0, Math.min(selectedAccountIndex, accounts.length - 1));
|
|
164
|
+
return { accounts, activeIndex, outcome: selectedOutcome };
|
|
165
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-pool-write.js","sourceRoot":"","sources":["../../../lib/codex-manager/account-pool-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -261,4 +261,3 @@ export const BACKEND_CATEGORY_OPTIONS = [
|
|
|
261
261
|
export const BACKEND_DEFAULTS = getDefaultPluginConfig();
|
|
262
262
|
export const BACKEND_TOGGLE_OPTION_BY_KEY = new Map(BACKEND_TOGGLE_OPTIONS.map((option) => [option.key, option]));
|
|
263
263
|
export const BACKEND_NUMBER_OPTION_BY_KEY = new Map(BACKEND_NUMBER_OPTIONS.map((option) => [option.key, option]));
|
|
264
|
-
//# sourceMappingURL=backend-settings-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"behavior-settings-panel.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/behavior-settings-panel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"behavior-settings-panel.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/behavior-settings-panel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIhD,MAAM,MAAM,oBAAoB,GAC7B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,yBAAyB,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,0BAA0B,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEtB,MAAM,WAAW,yBAAyB;IACzC,sBAAsB,EAAE,CACvB,QAAQ,EAAE,wBAAwB,KAC9B,wBAAwB,CAAC;IAC9B,6BAA6B,EAAE,CAC9B,KAAK,EAAE,wBAAwB,EAC/B,IAAI,EAAE,SAAS,CAAC,MAAM,wBAAwB,CAAC,EAAE,KAC7C,wBAAwB,CAAC;IAC9B,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,yBAAyB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,mBAAmB,EAAE,SAAS,CAAC,MAAM,wBAAwB,CAAC,EAAE,CAAC;IACjE,OAAO,EAAE,OAAO,OAAO,CAAC;CACxB;AAED,wBAAsB,2BAA2B,CAChD,OAAO,EAAE,wBAAwB,EACjC,IAAI,EAAE,yBAAyB,GAC7B,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAqL1C"}
|
|
@@ -15,6 +15,14 @@ type ParsedArgsResult<T> = {
|
|
|
15
15
|
ok: false;
|
|
16
16
|
message: string;
|
|
17
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Usage text and argument parsing for `best`. Previously module-private in
|
|
20
|
+
* lib/codex-manager.ts and injected into {@link runBestCommand}; moved here so
|
|
21
|
+
* the command owns its CLI surface (audit roadmap §4.1.1 phase 3). Still
|
|
22
|
+
* injected through {@link BestCommandDeps} by the dispatcher, unchanged.
|
|
23
|
+
*/
|
|
24
|
+
export declare function printBestUsage(): void;
|
|
25
|
+
export declare function parseBestArgs(args: string[]): ParsedArgsResult<BestCliOptions>;
|
|
18
26
|
export interface BestCommandDeps {
|
|
19
27
|
setStoragePath: (path: string | null) => void;
|
|
20
28
|
loadAccounts: () => Promise<AccountStorageV3 | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"best.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/best.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,KAAK,kBAAkB,EAA6B,MAAM,sBAAsB,CAAC;AAE1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"best.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/best.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,69 @@
|
|
|
1
1
|
import { describeCodexProbeFailure } from "../../quota-probe.js";
|
|
2
2
|
import { DEFAULT_MODEL, resolveNormalizedModel } from "../../request/helpers/model-map.js";
|
|
3
|
+
import { DEFAULT_LIVE_PROBE_MODEL } from "../quota-cache-helpers.js";
|
|
4
|
+
/**
|
|
5
|
+
* Usage text and argument parsing for `best`. Previously module-private in
|
|
6
|
+
* lib/codex-manager.ts and injected into {@link runBestCommand}; moved here so
|
|
7
|
+
* the command owns its CLI surface (audit roadmap §4.1.1 phase 3). Still
|
|
8
|
+
* injected through {@link BestCommandDeps} by the dispatcher, unchanged.
|
|
9
|
+
*/
|
|
10
|
+
export function printBestUsage() {
|
|
11
|
+
console.log([
|
|
12
|
+
"Usage:",
|
|
13
|
+
" codex-multi-auth best [--live] [--json] [--model <model>]",
|
|
14
|
+
"",
|
|
15
|
+
"Options:",
|
|
16
|
+
" --live, -l Probe live quota headers via Codex backend before switching",
|
|
17
|
+
" --json, -j Print machine-readable JSON output",
|
|
18
|
+
` --model, -m Probe model for live mode (default: ${DEFAULT_LIVE_PROBE_MODEL})`,
|
|
19
|
+
"",
|
|
20
|
+
"Behavior:",
|
|
21
|
+
" - Chooses the healthiest account using forecast scoring",
|
|
22
|
+
" - Switches to the recommended account when it is not already active",
|
|
23
|
+
].join("\n"));
|
|
24
|
+
}
|
|
25
|
+
export function parseBestArgs(args) {
|
|
26
|
+
const options = {
|
|
27
|
+
live: false,
|
|
28
|
+
json: false,
|
|
29
|
+
model: DEFAULT_LIVE_PROBE_MODEL,
|
|
30
|
+
modelProvided: false,
|
|
31
|
+
};
|
|
32
|
+
for (let i = 0; i < args.length; i += 1) {
|
|
33
|
+
const arg = args[i];
|
|
34
|
+
if (!arg)
|
|
35
|
+
continue;
|
|
36
|
+
if (arg === "--live" || arg === "-l") {
|
|
37
|
+
options.live = true;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (arg === "--json" || arg === "-j") {
|
|
41
|
+
options.json = true;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (arg === "--model" || arg === "-m") {
|
|
45
|
+
const value = args[i + 1]?.trim();
|
|
46
|
+
if (!value || value.startsWith("-")) {
|
|
47
|
+
return { ok: false, message: "Missing value for --model" };
|
|
48
|
+
}
|
|
49
|
+
options.model = value;
|
|
50
|
+
options.modelProvided = true;
|
|
51
|
+
i += 1;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (arg.startsWith("--model=")) {
|
|
55
|
+
const value = arg.slice("--model=".length).trim();
|
|
56
|
+
if (!value || value.startsWith("-")) {
|
|
57
|
+
return { ok: false, message: "Missing value for --model" };
|
|
58
|
+
}
|
|
59
|
+
options.model = value;
|
|
60
|
+
options.modelProvided = true;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
return { ok: false, message: `Unknown option: ${arg}` };
|
|
64
|
+
}
|
|
65
|
+
return { ok: true, options };
|
|
66
|
+
}
|
|
3
67
|
export async function runBestCommand(args, deps) {
|
|
4
68
|
const logInfo = deps.logInfo ?? console.log;
|
|
5
69
|
const logWarn = deps.logWarn ?? console.warn;
|
|
@@ -226,4 +290,3 @@ export async function runBestCommand(args, deps) {
|
|
|
226
290
|
}
|
|
227
291
|
return 0;
|
|
228
292
|
}
|
|
229
|
-
//# sourceMappingURL=best.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rotation.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/rotation.ts"],"names":[],"mappings":"AA4BA,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAEN,KAAK,4BAA4B,EACjC,MAAM,wCAAwC,CAAC;AAOhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAqB,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"rotation.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/rotation.ts"],"names":[],"mappings":"AA4BA,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAEN,KAAK,4BAA4B,EACjC,MAAM,wCAAwC,CAAC;AAOhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAqB,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAG5E,KAAK,aAAa,GAAG,gBAAgB,GAAG,IAAI,CAAC;AAiB7C,MAAM,WAAW,mBAAmB;IACnC,gBAAgB,EAAE,MAAM,YAAY,CAAC;IACrC,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,4BAA4B,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC;IAChE,YAAY,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,kBAAkB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IAC1D,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9C,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IACrD,gCAAgC,CAAC,EAAE,MAAM,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;IACtF,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAmnBD,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,mBAAmB,GACvB,OAAO,CAAC,MAAM,CAAC,CAkFjB"}
|
|
@@ -23,6 +23,7 @@ import { findQuotaCacheEntryForAccount, isQuotaCacheEntryExhausted, } from "../.
|
|
|
23
23
|
import { recordRuntimeReset, } from "../../runtime/runtime-observability.js";
|
|
24
24
|
import { appRuntimeHelperStatusToSignal as appRuntimeHelperStatusToRuntimeSignal, resolveAccountCurrentMarkers, resolveRuntimeCurrentAccount, } from "../../runtime/runtime-current-account.js";
|
|
25
25
|
import { isRateLimitedMarker } from "../rate-limit-markers.js";
|
|
26
|
+
import { isRecord } from "../../utils.js";
|
|
26
27
|
function printRotationUsage(logInfo) {
|
|
27
28
|
logInfo([
|
|
28
29
|
"Usage:",
|
|
@@ -390,9 +391,6 @@ function formatEnvOverride() {
|
|
|
390
391
|
return `invalid (${raw})`;
|
|
391
392
|
return parsed ? "enabled" : "disabled";
|
|
392
393
|
}
|
|
393
|
-
function isRecord(value) {
|
|
394
|
-
return typeof value === "object" && value !== null;
|
|
395
|
-
}
|
|
396
394
|
function readOptionalNumber(record, key) {
|
|
397
395
|
const value = record[key];
|
|
398
396
|
return typeof value === "number" && Number.isFinite(value) ? value : null;
|
|
@@ -672,4 +670,3 @@ export async function runRotationCommand(args, deps) {
|
|
|
672
670
|
printRotationUsage(logInfo);
|
|
673
671
|
return 1;
|
|
674
672
|
}
|
|
675
|
-
//# sourceMappingURL=rotation.js.map
|
|
@@ -47,4 +47,3 @@ export async function runSwitchCommand(args, deps) {
|
|
|
47
47
|
(deps.logInfo ?? console.log)(`Switched to account ${parsed}: ${formatAccountLabel(account, targetIndex)}${wasDisabled ? " (re-enabled)" : ""} (pinned for runtime routing)`);
|
|
48
48
|
return 0;
|
|
49
49
|
}
|
|
50
|
-
//# sourceMappingURL=switch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/uninstall.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/uninstall.ts"],"names":[],"mappings":"AASA,wBAAgB,qBAAqB,CACpC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAAkB;;;;EAkBxB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAQ/D;AAED,MAAM,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,wBAAgB,mBAAmB,IAAI,IAAI,CAqB1C;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,mBAAmB,CA2BtE;AAED,MAAM,MAAM,oBAAoB,GAAG;IAClC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE;QAC1B,MAAM,EAAE,IAAI,CAAC;QACb,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;KAC3B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;CACjD,CAAC;AAmBF,wBAAsB,mBAAmB,CACxC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,oBAAyB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA0MjB"}
|