@kaitranntt/ccs 7.76.0 → 7.77.0-dev.1
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/README.md +2 -1
- package/dist/api/services/cliproxy-profile-bridge.d.ts.map +1 -1
- package/dist/api/services/cliproxy-profile-bridge.js +5 -6
- package/dist/api/services/cliproxy-profile-bridge.js.map +1 -1
- package/dist/api/services/openrouter-catalog.js +2 -2
- package/dist/api/services/openrouter-catalog.js.map +1 -1
- package/dist/api/services/profile-lifecycle-service.d.ts.map +1 -1
- package/dist/api/services/profile-lifecycle-service.js +6 -6
- package/dist/api/services/profile-lifecycle-service.js.map +1 -1
- package/dist/api/services/profile-reader.d.ts.map +1 -1
- package/dist/api/services/profile-reader.js +14 -15
- package/dist/api/services/profile-reader.js.map +1 -1
- package/dist/api/services/profile-writer.d.ts.map +1 -1
- package/dist/api/services/profile-writer.js +13 -13
- package/dist/api/services/profile-writer.js.map +1 -1
- package/dist/auth/commands/create-command.d.ts.map +1 -1
- package/dist/auth/commands/create-command.js +2 -2
- package/dist/auth/commands/create-command.js.map +1 -1
- package/dist/auth/commands/default-command.d.ts.map +1 -1
- package/dist/auth/commands/default-command.js +3 -3
- package/dist/auth/commands/default-command.js.map +1 -1
- package/dist/auth/commands/remove-command.d.ts.map +1 -1
- package/dist/auth/commands/remove-command.js +2 -2
- package/dist/auth/commands/remove-command.js.map +1 -1
- package/dist/auth/profile-continuity-inheritance.d.ts.map +1 -1
- package/dist/auth/profile-continuity-inheritance.js +4 -4
- package/dist/auth/profile-continuity-inheritance.js.map +1 -1
- package/dist/auth/profile-detector.d.ts.map +1 -1
- package/dist/auth/profile-detector.js +5 -6
- package/dist/auth/profile-detector.js.map +1 -1
- package/dist/auth/profile-registry.d.ts.map +1 -1
- package/dist/auth/profile-registry.js +14 -15
- package/dist/auth/profile-registry.js.map +1 -1
- package/dist/auth/resume-lane-diagnostics.d.ts.map +1 -1
- package/dist/auth/resume-lane-diagnostics.js +2 -2
- package/dist/auth/resume-lane-diagnostics.js.map +1 -1
- package/dist/ccs.js +30 -1257
- package/dist/ccs.js.map +1 -1
- package/dist/channels/official-channels-ids.d.ts +21 -0
- package/dist/channels/official-channels-ids.d.ts.map +1 -0
- package/dist/channels/official-channels-ids.js +46 -0
- package/dist/channels/official-channels-ids.js.map +1 -0
- package/dist/channels/official-channels-runtime.d.ts +2 -5
- package/dist/channels/official-channels-runtime.d.ts.map +1 -1
- package/dist/channels/official-channels-runtime.js +14 -29
- package/dist/channels/official-channels-runtime.js.map +1 -1
- package/dist/channels/official-channels-store.d.ts.map +1 -1
- package/dist/channels/official-channels-store.js +2 -2
- package/dist/channels/official-channels-store.js.map +1 -1
- package/dist/cliproxy/accounts/account-safety.js +4 -4
- package/dist/cliproxy/accounts/account-safety.js.map +1 -1
- package/dist/cliproxy/auth/antigravity-responsibility.js +2 -2
- package/dist/cliproxy/auth/antigravity-responsibility.js.map +1 -1
- package/dist/cliproxy/auth/auth-token-manager.d.ts.map +1 -1
- package/dist/cliproxy/auth/auth-token-manager.js +8 -8
- package/dist/cliproxy/auth/auth-token-manager.js.map +1 -1
- package/dist/cliproxy/auth/token-refresh-config.d.ts.map +1 -1
- package/dist/cliproxy/auth/token-refresh-config.js +2 -2
- package/dist/cliproxy/auth/token-refresh-config.js.map +1 -1
- package/dist/cliproxy/binary/lifecycle.js +2 -2
- package/dist/cliproxy/binary/lifecycle.js.map +1 -1
- package/dist/cliproxy/binary/platform-detector.d.ts +8 -7
- package/dist/cliproxy/binary/platform-detector.d.ts.map +1 -1
- package/dist/cliproxy/binary/platform-detector.js +14 -9
- package/dist/cliproxy/binary/platform-detector.js.map +1 -1
- package/dist/cliproxy/binary-manager.d.ts.map +1 -1
- package/dist/cliproxy/binary-manager.js +5 -3
- package/dist/cliproxy/binary-manager.js.map +1 -1
- package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
- package/dist/cliproxy/config/env-builder.js +2 -2
- package/dist/cliproxy/config/env-builder.js.map +1 -1
- package/dist/cliproxy/config/generator.d.ts +6 -2
- package/dist/cliproxy/config/generator.d.ts.map +1 -1
- package/dist/cliproxy/config/generator.js +43 -10
- package/dist/cliproxy/config/generator.js.map +1 -1
- package/dist/cliproxy/config/model-config.d.ts.map +1 -1
- package/dist/cliproxy/config/model-config.js +2 -2
- package/dist/cliproxy/config/model-config.js.map +1 -1
- package/dist/cliproxy/config/path-resolver.d.ts.map +1 -1
- package/dist/cliproxy/config/path-resolver.js +4 -4
- package/dist/cliproxy/config/path-resolver.js.map +1 -1
- package/dist/cliproxy/config/port-manager.d.ts +6 -0
- package/dist/cliproxy/config/port-manager.d.ts.map +1 -1
- package/dist/cliproxy/config/port-manager.js +19 -1
- package/dist/cliproxy/config/port-manager.js.map +1 -1
- package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
- package/dist/cliproxy/config/thinking-config.js +2 -2
- package/dist/cliproxy/config/thinking-config.js.map +1 -1
- package/dist/cliproxy/executor/account-resolution.d.ts +52 -0
- package/dist/cliproxy/executor/account-resolution.d.ts.map +1 -0
- package/dist/cliproxy/executor/account-resolution.js +154 -0
- package/dist/cliproxy/executor/account-resolution.js.map +1 -0
- package/dist/cliproxy/executor/arg-parser.d.ts +96 -0
- package/dist/cliproxy/executor/arg-parser.d.ts.map +1 -0
- package/dist/cliproxy/executor/arg-parser.js +529 -0
- package/dist/cliproxy/executor/arg-parser.js.map +1 -0
- package/dist/cliproxy/executor/auth-coordinator.d.ts +96 -0
- package/dist/cliproxy/executor/auth-coordinator.d.ts.map +1 -0
- package/dist/cliproxy/executor/auth-coordinator.js +342 -0
- package/dist/cliproxy/executor/auth-coordinator.js.map +1 -0
- package/dist/cliproxy/executor/browser-launch-setup.d.ts +36 -0
- package/dist/cliproxy/executor/browser-launch-setup.d.ts.map +1 -0
- package/dist/cliproxy/executor/browser-launch-setup.js +80 -0
- package/dist/cliproxy/executor/browser-launch-setup.js.map +1 -0
- package/dist/cliproxy/executor/claude-launcher.d.ts +55 -0
- package/dist/cliproxy/executor/claude-launcher.d.ts.map +1 -0
- package/dist/cliproxy/executor/claude-launcher.js +112 -0
- package/dist/cliproxy/executor/claude-launcher.js.map +1 -0
- package/dist/cliproxy/executor/index.d.ts +4 -9
- package/dist/cliproxy/executor/index.d.ts.map +1 -1
- package/dist/cliproxy/executor/index.js +110 -866
- package/dist/cliproxy/executor/index.js.map +1 -1
- package/dist/cliproxy/executor/model-warnings.d.ts +22 -0
- package/dist/cliproxy/executor/model-warnings.d.ts.map +1 -0
- package/dist/cliproxy/executor/model-warnings.js +67 -0
- package/dist/cliproxy/executor/model-warnings.js.map +1 -0
- package/dist/cliproxy/executor/proxy-chain-builder.d.ts +71 -0
- package/dist/cliproxy/executor/proxy-chain-builder.d.ts.map +1 -0
- package/dist/cliproxy/executor/proxy-chain-builder.js +143 -0
- package/dist/cliproxy/executor/proxy-chain-builder.js.map +1 -0
- package/dist/cliproxy/executor/proxy-resolver.d.ts +44 -0
- package/dist/cliproxy/executor/proxy-resolver.d.ts.map +1 -0
- package/dist/cliproxy/executor/proxy-resolver.js +173 -0
- package/dist/cliproxy/executor/proxy-resolver.js.map +1 -0
- package/dist/cliproxy/proxy/proxy-target-resolver.d.ts.map +1 -1
- package/dist/cliproxy/proxy/proxy-target-resolver.js +3 -3
- package/dist/cliproxy/proxy/proxy-target-resolver.js.map +1 -1
- package/dist/cliproxy/proxy/tool-sanitization-proxy.d.ts.map +1 -1
- package/dist/cliproxy/proxy/tool-sanitization-proxy.js +2 -2
- package/dist/cliproxy/proxy/tool-sanitization-proxy.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher.js +28 -9
- package/dist/cliproxy/quota/quota-fetcher.js.map +1 -1
- package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-manager.js +4 -4
- package/dist/cliproxy/quota/quota-manager.js.map +1 -1
- package/dist/cliproxy/routing/routing-strategy.d.ts.map +1 -1
- package/dist/cliproxy/routing/routing-strategy.js +5 -5
- package/dist/cliproxy/routing/routing-strategy.js.map +1 -1
- package/dist/cliproxy/service-manager.js +2 -2
- package/dist/cliproxy/service-manager.js.map +1 -1
- package/dist/cliproxy/services/binary-service.js +8 -8
- package/dist/cliproxy/services/binary-service.js.map +1 -1
- package/dist/cliproxy/services/catalog-cache.d.ts.map +1 -1
- package/dist/cliproxy/services/catalog-cache.js +2 -2
- package/dist/cliproxy/services/catalog-cache.js.map +1 -1
- package/dist/cliproxy/services/proxy-lifecycle-service.d.ts +1 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.d.ts.map +1 -1
- package/dist/cliproxy/services/proxy-lifecycle-service.js +6 -6
- package/dist/cliproxy/services/proxy-lifecycle-service.js.map +1 -1
- package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-config-adapter.js +10 -10
- package/dist/cliproxy/services/variant-config-adapter.js.map +1 -1
- package/dist/cliproxy/services/variant-service.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-service.js +7 -8
- package/dist/cliproxy/services/variant-service.js.map +1 -1
- package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-settings.js +5 -5
- package/dist/cliproxy/services/variant-settings.js.map +1 -1
- package/dist/cliproxy/session-tracker.d.ts +1 -0
- package/dist/cliproxy/session-tracker.d.ts.map +1 -1
- package/dist/cliproxy/session-tracker.js +14 -8
- package/dist/cliproxy/session-tracker.js.map +1 -1
- package/dist/cliproxy/sync/auto-sync-watcher.js +3 -4
- package/dist/cliproxy/sync/auto-sync-watcher.js.map +1 -1
- package/dist/cliproxy/sync/profile-mapper.d.ts.map +1 -1
- package/dist/cliproxy/sync/profile-mapper.js +2 -2
- package/dist/cliproxy/sync/profile-mapper.js.map +1 -1
- package/dist/cliproxy/types/platform-types.d.ts +2 -2
- package/dist/cliproxy/types/platform-types.d.ts.map +1 -1
- package/dist/commands/browser-command.d.ts.map +1 -1
- package/dist/commands/browser-command.js +7 -7
- package/dist/commands/browser-command.js.map +1 -1
- package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js +5 -5
- package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/variant-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/variant-subcommand.js +4 -4
- package/dist/commands/cliproxy/variant-subcommand.js.map +1 -1
- package/dist/commands/config-auth/disable-command.d.ts.map +1 -1
- package/dist/commands/config-auth/disable-command.js +3 -3
- package/dist/commands/config-auth/disable-command.js.map +1 -1
- package/dist/commands/config-auth/setup-command.d.ts.map +1 -1
- package/dist/commands/config-auth/setup-command.js +2 -2
- package/dist/commands/config-auth/setup-command.js.map +1 -1
- package/dist/commands/config-auth/show-command.js +2 -2
- package/dist/commands/config-auth/show-command.js.map +1 -1
- package/dist/commands/config-channels-command.d.ts.map +1 -1
- package/dist/commands/config-channels-command.js +4 -4
- package/dist/commands/config-channels-command.js.map +1 -1
- package/dist/commands/config-command.d.ts +1 -1
- package/dist/commands/config-command.d.ts.map +1 -1
- package/dist/commands/config-command.js +4 -4
- package/dist/commands/config-command.js.map +1 -1
- package/dist/commands/config-image-analysis-command.d.ts.map +1 -1
- package/dist/commands/config-image-analysis-command.js +4 -4
- package/dist/commands/config-image-analysis-command.js.map +1 -1
- package/dist/commands/config-thinking-command.d.ts.map +1 -1
- package/dist/commands/config-thinking-command.js +4 -4
- package/dist/commands/config-thinking-command.js.map +1 -1
- package/dist/commands/copilot-command.d.ts.map +1 -1
- package/dist/commands/copilot-command.js +4 -4
- package/dist/commands/copilot-command.js.map +1 -1
- package/dist/commands/cursor-command.d.ts.map +1 -1
- package/dist/commands/cursor-command.js +7 -7
- package/dist/commands/cursor-command.js.map +1 -1
- package/dist/commands/env-command.d.ts.map +1 -1
- package/dist/commands/env-command.js +2 -2
- package/dist/commands/env-command.js.map +1 -1
- package/dist/commands/migrate-command.d.ts.map +1 -1
- package/dist/commands/migrate-command.js +2 -2
- package/dist/commands/migrate-command.js.map +1 -1
- package/dist/commands/proxy-command.d.ts.map +1 -1
- package/dist/commands/proxy-command.js +2 -1
- package/dist/commands/proxy-command.js.map +1 -1
- package/dist/commands/setup-command.d.ts.map +1 -1
- package/dist/commands/setup-command.js +6 -7
- package/dist/commands/setup-command.js.map +1 -1
- package/dist/commands/version-command.d.ts.map +1 -1
- package/dist/commands/version-command.js +2 -1
- package/dist/commands/version-command.js.map +1 -1
- package/dist/config/loader/config-getters.d.ts +121 -0
- package/dist/config/loader/config-getters.d.ts.map +1 -0
- package/dist/config/loader/config-getters.js +260 -0
- package/dist/config/loader/config-getters.js.map +1 -0
- package/dist/config/loader/defaults-merger.d.ts +21 -0
- package/dist/config/loader/defaults-merger.d.ts.map +1 -0
- package/dist/config/loader/defaults-merger.js +278 -0
- package/dist/config/loader/defaults-merger.js.map +1 -0
- package/dist/config/loader/io-locks.d.ts +76 -0
- package/dist/config/loader/io-locks.d.ts.map +1 -0
- package/dist/config/loader/io-locks.js +297 -0
- package/dist/config/loader/io-locks.js.map +1 -0
- package/dist/config/loader/normalizers.d.ts +40 -0
- package/dist/config/loader/normalizers.d.ts.map +1 -0
- package/dist/config/loader/normalizers.js +172 -0
- package/dist/config/loader/normalizers.js.map +1 -0
- package/dist/config/loader/yaml-serializer.d.ts +19 -0
- package/dist/config/loader/yaml-serializer.d.ts.map +1 -0
- package/dist/config/loader/yaml-serializer.js +300 -0
- package/dist/config/loader/yaml-serializer.js.map +1 -0
- package/dist/config/schemas/cliproxy.d.ts +2 -0
- package/dist/config/schemas/cliproxy.d.ts.map +1 -1
- package/dist/config/unified-config-loader.d.ts +21 -124
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +100 -1098
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/copilot/copilot-daemon.d.ts.map +1 -1
- package/dist/copilot/copilot-daemon.js +2 -2
- package/dist/copilot/copilot-daemon.js.map +1 -1
- package/dist/copilot/copilot-executor.d.ts.map +1 -1
- package/dist/copilot/copilot-executor.js +3 -3
- package/dist/copilot/copilot-executor.js.map +1 -1
- package/dist/copilot/copilot-package-manager.js +2 -2
- package/dist/copilot/copilot-package-manager.js.map +1 -1
- package/dist/cursor/cursor-auth.js +2 -2
- package/dist/cursor/cursor-auth.js.map +1 -1
- package/dist/cursor/cursor-daemon-pid.js +2 -2
- package/dist/cursor/cursor-daemon-pid.js.map +1 -1
- package/dist/cursor/cursor-profile-executor.d.ts +10 -1
- package/dist/cursor/cursor-profile-executor.d.ts.map +1 -1
- package/dist/cursor/cursor-profile-executor.js +10 -6
- package/dist/cursor/cursor-profile-executor.js.map +1 -1
- package/dist/delegation/delegation-handler.js +2 -2
- package/dist/delegation/delegation-handler.js.map +1 -1
- package/dist/delegation/headless-executor.d.ts.map +1 -1
- package/dist/delegation/headless-executor.js +5 -5
- package/dist/delegation/headless-executor.js.map +1 -1
- package/dist/delegation/session-manager.js +2 -2
- package/dist/delegation/session-manager.js.map +1 -1
- package/dist/dispatcher/cli-argument-parser.d.ts +70 -0
- package/dist/dispatcher/cli-argument-parser.d.ts.map +1 -0
- package/dist/dispatcher/cli-argument-parser.js +285 -0
- package/dist/dispatcher/cli-argument-parser.js.map +1 -0
- package/dist/dispatcher/dispatcher-context.d.ts +24 -0
- package/dist/dispatcher/dispatcher-context.d.ts.map +1 -0
- package/dist/dispatcher/dispatcher-context.js +11 -0
- package/dist/dispatcher/dispatcher-context.js.map +1 -0
- package/dist/dispatcher/environment-builder.d.ts +20 -0
- package/dist/dispatcher/environment-builder.d.ts.map +1 -0
- package/dist/dispatcher/environment-builder.js +95 -0
- package/dist/dispatcher/environment-builder.js.map +1 -0
- package/dist/dispatcher/flows/account-flow.d.ts +9 -0
- package/dist/dispatcher/flows/account-flow.d.ts.map +1 -0
- package/dist/dispatcher/flows/account-flow.js +49 -0
- package/dist/dispatcher/flows/account-flow.js.map +1 -0
- package/dist/dispatcher/flows/cliproxy-flow.d.ts +8 -0
- package/dist/dispatcher/flows/cliproxy-flow.d.ts.map +1 -0
- package/dist/dispatcher/flows/cliproxy-flow.js +165 -0
- package/dist/dispatcher/flows/cliproxy-flow.js.map +1 -0
- package/dist/dispatcher/flows/copilot-flow.d.ts +8 -0
- package/dist/dispatcher/flows/copilot-flow.d.ts.map +1 -0
- package/dist/dispatcher/flows/copilot-flow.js +72 -0
- package/dist/dispatcher/flows/copilot-flow.js.map +1 -0
- package/dist/dispatcher/flows/cursor-flow.d.ts +8 -0
- package/dist/dispatcher/flows/cursor-flow.d.ts.map +1 -0
- package/dist/dispatcher/flows/cursor-flow.js +62 -0
- package/dist/dispatcher/flows/cursor-flow.js.map +1 -0
- package/dist/dispatcher/flows/default-flow.d.ts +10 -0
- package/dist/dispatcher/flows/default-flow.d.ts.map +1 -0
- package/dist/dispatcher/flows/default-flow.js +99 -0
- package/dist/dispatcher/flows/default-flow.js.map +1 -0
- package/dist/dispatcher/flows/settings-flow.d.ts +9 -0
- package/dist/dispatcher/flows/settings-flow.d.ts.map +1 -0
- package/dist/dispatcher/flows/settings-flow.js +318 -0
- package/dist/dispatcher/flows/settings-flow.js.map +1 -0
- package/dist/dispatcher/flows/settings-image-analysis-prep.d.ts +28 -0
- package/dist/dispatcher/flows/settings-image-analysis-prep.d.ts.map +1 -0
- package/dist/dispatcher/flows/settings-image-analysis-prep.js +81 -0
- package/dist/dispatcher/flows/settings-image-analysis-prep.js.map +1 -0
- package/dist/dispatcher/pre-dispatch.d.ts +23 -0
- package/dist/dispatcher/pre-dispatch.d.ts.map +1 -0
- package/dist/dispatcher/pre-dispatch.js +156 -0
- package/dist/dispatcher/pre-dispatch.js.map +1 -0
- package/dist/dispatcher/profile-resolver.d.ts +65 -0
- package/dist/dispatcher/profile-resolver.d.ts.map +1 -0
- package/dist/dispatcher/profile-resolver.js +290 -0
- package/dist/dispatcher/profile-resolver.js.map +1 -0
- package/dist/dispatcher/target-executor.d.ts +26 -0
- package/dist/dispatcher/target-executor.d.ts.map +1 -0
- package/dist/dispatcher/target-executor.js +81 -0
- package/dist/dispatcher/target-executor.js.map +1 -0
- package/dist/docker/docker-assets.d.ts.map +1 -1
- package/dist/docker/docker-assets.js +2 -2
- package/dist/docker/docker-assets.js.map +1 -1
- package/dist/glmt/glmt-transformer.d.ts.map +1 -1
- package/dist/glmt/glmt-transformer.js +2 -2
- package/dist/glmt/glmt-transformer.js.map +1 -1
- package/dist/management/checks/config-check.d.ts.map +1 -1
- package/dist/management/checks/config-check.js +2 -2
- package/dist/management/checks/config-check.js.map +1 -1
- package/dist/management/checks/env-check.d.ts.map +1 -1
- package/dist/management/checks/env-check.js +2 -1
- package/dist/management/checks/env-check.js.map +1 -1
- package/dist/management/checks/image-analysis-check.d.ts.map +1 -1
- package/dist/management/checks/image-analysis-check.js +4 -4
- package/dist/management/checks/image-analysis-check.js.map +1 -1
- package/dist/management/checks/profile-check.js +4 -4
- package/dist/management/checks/profile-check.js.map +1 -1
- package/dist/management/checks/symlink-check.js +2 -2
- package/dist/management/checks/symlink-check.js.map +1 -1
- package/dist/management/checks/system-check.js +2 -2
- package/dist/management/checks/system-check.js.map +1 -1
- package/dist/management/instance-manager.d.ts.map +1 -1
- package/dist/management/instance-manager.js +2 -1
- package/dist/management/instance-manager.js.map +1 -1
- package/dist/management/recovery-manager.d.ts.map +1 -1
- package/dist/management/recovery-manager.js +5 -5
- package/dist/management/recovery-manager.js.map +1 -1
- package/dist/management/repair/auto-repair.d.ts.map +1 -1
- package/dist/management/repair/auto-repair.js +2 -2
- package/dist/management/repair/auto-repair.js.map +1 -1
- package/dist/management/shared-manager.d.ts.map +1 -1
- package/dist/management/shared-manager.js +2 -2
- package/dist/management/shared-manager.js.map +1 -1
- package/dist/proxy/proxy-daemon-entry.js +2 -2
- package/dist/proxy/proxy-daemon-entry.js.map +1 -1
- package/dist/proxy/proxy-daemon-paths.js +2 -2
- package/dist/proxy/proxy-daemon-paths.js.map +1 -1
- package/dist/proxy/proxy-port-resolver.js +2 -2
- package/dist/proxy/proxy-port-resolver.js.map +1 -1
- package/dist/proxy/request-router.d.ts.map +1 -1
- package/dist/proxy/request-router.js +3 -3
- package/dist/proxy/request-router.js.map +1 -1
- package/dist/services/logging/log-config.d.ts.map +1 -1
- package/dist/services/logging/log-config.js +3 -3
- package/dist/services/logging/log-config.js.map +1 -1
- package/dist/services/logging/log-paths.js +3 -3
- package/dist/services/logging/log-paths.js.map +1 -1
- package/dist/targets/droid-provider.d.ts.map +1 -1
- package/dist/targets/droid-provider.js +9 -6
- package/dist/targets/droid-provider.js.map +1 -1
- package/dist/ui/assets/{accounts-CDgKt-GZ.js → accounts-CybVGDsm.js} +1 -1
- package/dist/ui/assets/{alert-dialog-CRqbTpjm.js → alert-dialog-C6npAhT0.js} +1 -1
- package/dist/ui/assets/{api-C7W2ibtd.js → api-DZosWVkR.js} +1 -1
- package/dist/ui/assets/{auth-section-RBgQQrdk.js → auth-section-D4MZkgcP.js} +1 -1
- package/dist/ui/assets/{backups-section-DptarTls.js → backups-section-DvMJrmHH.js} +1 -1
- package/dist/ui/assets/{channels-BMQs4wmY.js → channels-BVftYfOn.js} +1 -1
- package/dist/ui/assets/{checkbox-BrRyK0T3.js → checkbox-BLRznRTO.js} +1 -1
- package/dist/ui/assets/{claude-extension-DrSuOyf4.js → claude-extension-C6OeBQ73.js} +1 -1
- package/dist/ui/assets/cliproxy-B3Jyu3r9.js +3 -0
- package/dist/ui/assets/{cliproxy-ai-providers-B8aZTWIe.js → cliproxy-ai-providers-BAJ78pUc.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-BpXgvmht.js → cliproxy-control-panel-XEvUMVJe.js} +1 -1
- package/dist/ui/assets/{codex-CYoq5g4z.js → codex-CY2vikqX.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-CP-4T1Wp.js → confirm-dialog-DjLHh1qX.js} +1 -1
- package/dist/ui/assets/{copilot-aEdlrY3S.js → copilot-afee2lL9.js} +1 -1
- package/dist/ui/assets/{cursor-CSJ0aqxS.js → cursor-DuWy60wp.js} +1 -1
- package/dist/ui/assets/{droid-DTdvqOvV.js → droid-FlceoQ6k.js} +1 -1
- package/dist/ui/assets/{globalenv-section-DXbRVgOM.js → globalenv-section-DpJ7unxC.js} +1 -1
- package/dist/ui/assets/{health-CDce37cB.js → health-BEMgcKD3.js} +1 -1
- package/dist/ui/assets/{index-vN-yw8kw.js → index-0GkznW41.js} +1 -1
- package/dist/ui/assets/{index-DjxqZO4B.js → index-0n_43sCZ.js} +1 -1
- package/dist/ui/assets/{index-Fd17BSGq.js → index-BRtgic66.js} +2 -2
- package/dist/ui/assets/{index-dnIWLkjb.js → index-Ba4ysocb.js} +1 -1
- package/dist/ui/assets/{index-Bm9k7s_T.js → index-Cj7EjEq6.js} +1 -1
- package/dist/ui/assets/{index-KK76yIJk.js → index-Cq9VySs6.js} +1 -1
- package/dist/ui/assets/{index-D_FmvtnX.js → index-DOC7_hun.js} +1 -1
- package/dist/ui/assets/{logs-C_MtpQIE.js → logs-Dth4naJl.js} +1 -1
- package/dist/ui/assets/{masked-input-BAWBYIqo.js → masked-input-DL6pJ8pE.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-DUqasX3c.js → proxy-status-widget-DW4cPFeD.js} +1 -1
- package/dist/ui/assets/{raw-json-settings-editor-panel-DuVlOXFi.js → raw-json-settings-editor-panel-Dcumu3Qi.js} +1 -1
- package/dist/ui/assets/{searchable-select-BCxZHr8N.js → searchable-select-CWL2D5Ft.js} +1 -1
- package/dist/ui/assets/{separator-BV4BKMsB.js → separator-Do_vqTQD.js} +1 -1
- package/dist/ui/assets/{shared-D-Cu_o1h.js → shared-CwWuZx24.js} +1 -1
- package/dist/ui/assets/{table-DW66THR9.js → table-BP6nBZzg.js} +1 -1
- package/dist/ui/assets/{updates-V0D_Q8n4.js → updates-BTHJZ7Rk.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/utils/browser/browser-setup.d.ts +2 -2
- package/dist/utils/browser/browser-setup.d.ts.map +1 -1
- package/dist/utils/browser/browser-setup.js +4 -4
- package/dist/utils/browser/browser-setup.js.map +1 -1
- package/dist/utils/browser/browser-status.d.ts.map +1 -1
- package/dist/utils/browser/browser-status.js +3 -3
- package/dist/utils/browser/browser-status.js.map +1 -1
- package/dist/utils/hooks/get-image-analysis-hook-env.d.ts.map +1 -1
- package/dist/utils/hooks/get-image-analysis-hook-env.js +2 -2
- package/dist/utils/hooks/get-image-analysis-hook-env.js.map +1 -1
- package/dist/utils/hooks/image-analyzer-hook-configuration.d.ts.map +1 -1
- package/dist/utils/hooks/image-analyzer-hook-configuration.js +2 -2
- package/dist/utils/hooks/image-analyzer-hook-configuration.js.map +1 -1
- package/dist/utils/hooks/image-analyzer-hook-installer.d.ts.map +1 -1
- package/dist/utils/hooks/image-analyzer-hook-installer.js +2 -2
- package/dist/utils/hooks/image-analyzer-hook-installer.js.map +1 -1
- package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts.map +1 -1
- package/dist/utils/hooks/image-analyzer-profile-hook-injector.js +2 -2
- package/dist/utils/hooks/image-analyzer-profile-hook-injector.js.map +1 -1
- package/dist/utils/image-analysis/mcp-installer.d.ts.map +1 -1
- package/dist/utils/image-analysis/mcp-installer.js +5 -5
- package/dist/utils/image-analysis/mcp-installer.js.map +1 -1
- package/dist/utils/shell-executor.d.ts.map +1 -1
- package/dist/utils/shell-executor.js +2 -2
- package/dist/utils/shell-executor.js.map +1 -1
- package/dist/utils/websearch/hook-config.d.ts.map +1 -1
- package/dist/utils/websearch/hook-config.js +3 -3
- package/dist/utils/websearch/hook-config.js.map +1 -1
- package/dist/utils/websearch/hook-env.js +2 -2
- package/dist/utils/websearch/hook-env.js.map +1 -1
- package/dist/utils/websearch/hook-installer.d.ts.map +1 -1
- package/dist/utils/websearch/hook-installer.js +2 -2
- package/dist/utils/websearch/hook-installer.js.map +1 -1
- package/dist/utils/websearch/mcp-installer.d.ts.map +1 -1
- package/dist/utils/websearch/mcp-installer.js +5 -5
- package/dist/utils/websearch/mcp-installer.js.map +1 -1
- package/dist/utils/websearch/profile-hook-injector.d.ts.map +1 -1
- package/dist/utils/websearch/profile-hook-injector.js +3 -3
- package/dist/utils/websearch/profile-hook-injector.js.map +1 -1
- package/dist/utils/websearch/provider-secrets.js +2 -2
- package/dist/utils/websearch/provider-secrets.js.map +1 -1
- package/dist/utils/websearch/status.d.ts.map +1 -1
- package/dist/utils/websearch/status.js +4 -4
- package/dist/utils/websearch/status.js.map +1 -1
- package/dist/web-server/file-watcher.js +2 -2
- package/dist/web-server/file-watcher.js.map +1 -1
- package/dist/web-server/health/config-checks.d.ts.map +1 -1
- package/dist/web-server/health/config-checks.js +3 -3
- package/dist/web-server/health/config-checks.js.map +1 -1
- package/dist/web-server/health/profile-checks.d.ts.map +1 -1
- package/dist/web-server/health/profile-checks.js +3 -3
- package/dist/web-server/health/profile-checks.js.map +1 -1
- package/dist/web-server/health-service.d.ts.map +1 -1
- package/dist/web-server/health-service.js +7 -6
- package/dist/web-server/health-service.js.map +1 -1
- package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -1
- package/dist/web-server/middleware/auth-middleware.js +6 -7
- package/dist/web-server/middleware/auth-middleware.js.map +1 -1
- package/dist/web-server/models-dev/registry-cache.d.ts.map +1 -1
- package/dist/web-server/models-dev/registry-cache.js +2 -2
- package/dist/web-server/models-dev/registry-cache.js.map +1 -1
- package/dist/web-server/overview-routes.d.ts.map +1 -1
- package/dist/web-server/overview-routes.js +2 -2
- package/dist/web-server/overview-routes.js.map +1 -1
- package/dist/web-server/routes/account-routes.d.ts.map +1 -1
- package/dist/web-server/routes/account-routes.js +7 -7
- package/dist/web-server/routes/account-routes.js.map +1 -1
- package/dist/web-server/routes/auth-routes.d.ts.map +1 -1
- package/dist/web-server/routes/auth-routes.js +4 -4
- package/dist/web-server/routes/auth-routes.js.map +1 -1
- package/dist/web-server/routes/browser-routes.d.ts.map +1 -1
- package/dist/web-server/routes/browser-routes.js +2 -2
- package/dist/web-server/routes/browser-routes.js.map +1 -1
- package/dist/web-server/routes/channels-routes.d.ts.map +1 -1
- package/dist/web-server/routes/channels-routes.js +4 -4
- package/dist/web-server/routes/channels-routes.js.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.js +2 -2
- package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
- package/dist/web-server/routes/cliproxy-local-proxy.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-local-proxy.js +1 -11
- package/dist/web-server/routes/cliproxy-local-proxy.js.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.js +10 -8
- package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
- package/dist/web-server/routes/cliproxy-sync-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-sync-routes.js +2 -2
- package/dist/web-server/routes/cliproxy-sync-routes.js.map +1 -1
- package/dist/web-server/routes/config-routes.d.ts.map +1 -1
- package/dist/web-server/routes/config-routes.js +6 -6
- package/dist/web-server/routes/config-routes.js.map +1 -1
- package/dist/web-server/routes/copilot-routes.d.ts.map +1 -1
- package/dist/web-server/routes/copilot-routes.js +3 -3
- package/dist/web-server/routes/copilot-routes.js.map +1 -1
- package/dist/web-server/routes/copilot-settings-routes.d.ts.map +1 -1
- package/dist/web-server/routes/copilot-settings-routes.js +6 -7
- package/dist/web-server/routes/copilot-settings-routes.js.map +1 -1
- package/dist/web-server/routes/cursor-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cursor-routes.js +5 -5
- package/dist/web-server/routes/cursor-routes.js.map +1 -1
- package/dist/web-server/routes/cursor-settings-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cursor-settings-routes.js +8 -9
- package/dist/web-server/routes/cursor-settings-routes.js.map +1 -1
- package/dist/web-server/routes/image-analysis-routes.d.ts.map +1 -1
- package/dist/web-server/routes/image-analysis-routes.js +5 -6
- package/dist/web-server/routes/image-analysis-routes.js.map +1 -1
- package/dist/web-server/routes/misc-routes.d.ts.map +1 -1
- package/dist/web-server/routes/misc-routes.js +10 -11
- package/dist/web-server/routes/misc-routes.js.map +1 -1
- package/dist/web-server/routes/proxy-routes.d.ts.map +1 -1
- package/dist/web-server/routes/proxy-routes.js +40 -10
- package/dist/web-server/routes/proxy-routes.js.map +1 -1
- package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
- package/dist/web-server/routes/route-helpers.js +7 -6
- package/dist/web-server/routes/route-helpers.js.map +1 -1
- package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
- package/dist/web-server/routes/settings-routes.js +8 -9
- package/dist/web-server/routes/settings-routes.js.map +1 -1
- package/dist/web-server/routes/websearch-routes.d.ts.map +1 -1
- package/dist/web-server/routes/websearch-routes.js +4 -4
- package/dist/web-server/routes/websearch-routes.js.map +1 -1
- package/dist/web-server/services/claude-extension-binding-service.js +2 -2
- package/dist/web-server/services/claude-extension-binding-service.js.map +1 -1
- package/dist/web-server/services/cliproxy-dashboard-install-service.d.ts.map +1 -1
- package/dist/web-server/services/cliproxy-dashboard-install-service.js +4 -3
- package/dist/web-server/services/cliproxy-dashboard-install-service.js.map +1 -1
- package/dist/web-server/services/logs-dashboard-service.d.ts.map +1 -1
- package/dist/web-server/services/logs-dashboard-service.js +2 -2
- package/dist/web-server/services/logs-dashboard-service.js.map +1 -1
- package/dist/web-server/shared-routes.d.ts.map +1 -1
- package/dist/web-server/shared-routes.js +4 -4
- package/dist/web-server/shared-routes.js.map +1 -1
- package/dist/web-server/usage/aggregator.d.ts.map +1 -1
- package/dist/web-server/usage/aggregator.js +2 -2
- package/dist/web-server/usage/aggregator.js.map +1 -1
- package/dist/web-server/usage/cliproxy-usage-syncer.d.ts.map +1 -1
- package/dist/web-server/usage/cliproxy-usage-syncer.js +2 -2
- package/dist/web-server/usage/cliproxy-usage-syncer.js.map +1 -1
- package/dist/web-server/usage/codex-native-usage-collector.d.ts +2 -0
- package/dist/web-server/usage/codex-native-usage-collector.d.ts.map +1 -1
- package/dist/web-server/usage/codex-native-usage-collector.js +99 -1
- package/dist/web-server/usage/codex-native-usage-collector.js.map +1 -1
- package/dist/web-server/usage/disk-cache.js +2 -2
- package/dist/web-server/usage/disk-cache.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/cliproxy/resolve-lifecycle-port.d.ts +0 -9
- package/dist/commands/cliproxy/resolve-lifecycle-port.d.ts.map +0 -1
- package/dist/commands/cliproxy/resolve-lifecycle-port.js +0 -14
- package/dist/commands/cliproxy/resolve-lifecycle-port.js.map +0 -1
- package/dist/ui/assets/cliproxy-CdqYwRJH.js +0 -3
|
@@ -34,58 +34,34 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
34
34
|
return result;
|
|
35
35
|
};
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
-
exports.__testExports = exports.
|
|
38
|
-
const child_process_1 = require("child_process");
|
|
37
|
+
exports.__testExports = exports._resolveRuntimeQuotaMonitorProviders = exports.filterCcsFlags = exports.CCS_FLAGS = exports.hasGitLabTokenLoginFlag = exports.readOptionValue = exports.findAvailablePort = exports.isPortAvailable = exports.execClaudeWithCLIProxy = void 0;
|
|
39
38
|
const fs = __importStar(require("fs"));
|
|
40
|
-
const os = __importStar(require("os"));
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
|
-
const progress_indicator_1 = require("../../utils/progress-indicator");
|
|
43
39
|
const ui_1 = require("../../utils/ui");
|
|
44
|
-
const config_manager_1 = require("../../utils/config-manager");
|
|
45
|
-
const shell_executor_1 = require("../../utils/shell-executor");
|
|
46
|
-
const binary_manager_1 = require("../binary-manager");
|
|
47
40
|
const config_generator_1 = require("../config/config-generator");
|
|
48
|
-
const remote_proxy_client_1 = require("../services/remote-proxy-client");
|
|
49
|
-
const auth_handler_1 = require("../auth/auth-handler");
|
|
50
|
-
const types_1 = require("../types");
|
|
51
41
|
const model_config_1 = require("../config/model-config");
|
|
52
|
-
const codex_plan_compatibility_1 = require("../ai-providers/codex-plan-compatibility");
|
|
53
|
-
const proxy_config_resolver_1 = require("../proxy/proxy-config-resolver");
|
|
54
42
|
const model_catalog_1 = require("../model-catalog");
|
|
55
|
-
const codex_reasoning_proxy_1 = require("../ai-providers/codex-reasoning-proxy");
|
|
56
|
-
const tool_sanitization_proxy_1 = require("../proxy/tool-sanitization-proxy");
|
|
57
|
-
const account_manager_1 = require("../accounts/account-manager");
|
|
58
|
-
const email_account_identity_1 = require("../accounts/email-account-identity");
|
|
59
43
|
const websearch_manager_1 = require("../../utils/websearch-manager");
|
|
60
44
|
const image_analysis_1 = require("../../utils/image-analysis");
|
|
61
|
-
const
|
|
62
|
-
const unified_config_loader_1 = require("../../config/unified-config-loader");
|
|
45
|
+
const config_loader_facade_1 = require("../../config/config-loader-facade");
|
|
63
46
|
const https_tunnel_proxy_1 = require("../proxy/https-tunnel-proxy");
|
|
64
|
-
const auth_types_1 = require("../auth/auth-types");
|
|
65
47
|
const profile_continuity_inheritance_1 = require("../../auth/profile-continuity-inheritance");
|
|
66
48
|
// Import modular components
|
|
49
|
+
const browser_launch_setup_1 = require("./browser-launch-setup");
|
|
50
|
+
const account_resolution_1 = require("./account-resolution");
|
|
67
51
|
const lifecycle_manager_1 = require("./lifecycle-manager");
|
|
68
52
|
const env_resolver_1 = require("./env-resolver");
|
|
69
|
-
const retry_handler_1 = require("./retry-handler");
|
|
70
|
-
const quota_manager_1 = require("../quota/quota-manager");
|
|
71
53
|
const session_bridge_1 = require("./session-bridge");
|
|
72
|
-
const thinking_arg_parser_1 = require("./thinking-arg-parser");
|
|
73
|
-
const account_safety_1 = require("../accounts/account-safety");
|
|
74
|
-
const antigravity_responsibility_1 = require("../auth/antigravity-responsibility");
|
|
75
54
|
const websearch_manager_2 = require("../../utils/websearch-manager");
|
|
55
|
+
const auth_coordinator_1 = require("./auth-coordinator");
|
|
76
56
|
const thinking_override_resolver_1 = require("./thinking-override-resolver");
|
|
77
57
|
const https_tunnel_policy_1 = require("./https-tunnel-policy");
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return resolved;
|
|
88
|
-
}
|
|
58
|
+
const arg_parser_1 = require("./arg-parser");
|
|
59
|
+
const proxy_resolver_1 = require("./proxy-resolver");
|
|
60
|
+
const proxy_chain_builder_1 = require("./proxy-chain-builder");
|
|
61
|
+
const model_warnings_1 = require("./model-warnings");
|
|
62
|
+
const claude_launcher_1 = require("./claude-launcher");
|
|
63
|
+
/** Local alias so internal call sites need no change */
|
|
64
|
+
const resolveRuntimeQuotaMonitorProviders = account_resolution_1.resolveRuntimeQuotaMonitorProviders;
|
|
89
65
|
/** Default executor configuration */
|
|
90
66
|
const DEFAULT_CONFIG = {
|
|
91
67
|
port: config_generator_1.CLIPROXY_DEFAULT_PORT,
|
|
@@ -93,35 +69,9 @@ const DEFAULT_CONFIG = {
|
|
|
93
69
|
verbose: false,
|
|
94
70
|
pollInterval: 100,
|
|
95
71
|
};
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
if (inlineArg !== undefined) {
|
|
100
|
-
const value = inlineArg.slice(inlinePrefix.length).trim();
|
|
101
|
-
return {
|
|
102
|
-
present: true,
|
|
103
|
-
value: value.length > 0 ? value : undefined,
|
|
104
|
-
missingValue: value.length === 0,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
const index = args.indexOf(flag);
|
|
108
|
-
if (index === -1) {
|
|
109
|
-
return { present: false, missingValue: false };
|
|
110
|
-
}
|
|
111
|
-
const next = args[index + 1];
|
|
112
|
-
if (!next || next.startsWith('-')) {
|
|
113
|
-
return { present: true, missingValue: true };
|
|
114
|
-
}
|
|
115
|
-
return { present: true, value: next.trim(), missingValue: false };
|
|
116
|
-
}
|
|
117
|
-
exports.readOptionValue = readOptionValue;
|
|
118
|
-
function hasGitLabTokenLoginFlag(args) {
|
|
119
|
-
return args.includes('--gitlab-token-login') || args.includes('--token-login');
|
|
120
|
-
}
|
|
121
|
-
exports.hasGitLabTokenLoginFlag = hasGitLabTokenLoginFlag;
|
|
122
|
-
function getGitLabTokenLoginFlagName(args) {
|
|
123
|
-
return args.includes('--gitlab-token-login') ? '--gitlab-token-login' : '--token-login';
|
|
124
|
-
}
|
|
72
|
+
// readOptionValue, hasGitLabTokenLoginFlag, CCS_FLAGS, filterCcsFlags are
|
|
73
|
+
// re-exported from ./arg-parser via the export block at the bottom of this file
|
|
74
|
+
// for backwards compatibility with external callers.
|
|
125
75
|
/**
|
|
126
76
|
* Execute Claude CLI with CLIProxy (main entry point)
|
|
127
77
|
*
|
|
@@ -151,405 +101,48 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
151
101
|
? [...new Set(Object.values(cfg.compositeTiers).map((t) => t.provider))]
|
|
152
102
|
: [];
|
|
153
103
|
// 0. Resolve proxy configuration (CLI > ENV > config.yaml > defaults)
|
|
154
|
-
const unifiedConfig = (0,
|
|
104
|
+
const unifiedConfig = (0, config_loader_facade_1.loadOrCreateUnifiedConfig)();
|
|
155
105
|
// Collect all providers to validate (default + composite tiers)
|
|
156
106
|
const allProviders = [provider, ...compositeProviders];
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
port: cliproxyServerConfig.remote.port,
|
|
164
|
-
protocol: cliproxyServerConfig.remote.protocol,
|
|
165
|
-
auth_token: cliproxyServerConfig.remote.auth_token,
|
|
166
|
-
management_key: cliproxyServerConfig.remote.management_key,
|
|
167
|
-
timeout: cliproxyServerConfig.remote.timeout,
|
|
168
|
-
}
|
|
169
|
-
: undefined,
|
|
170
|
-
local: cliproxyServerConfig?.local
|
|
171
|
-
? {
|
|
172
|
-
port: cliproxyServerConfig.local.port,
|
|
173
|
-
auto_start: cliproxyServerConfig.local.auto_start,
|
|
174
|
-
}
|
|
175
|
-
: undefined,
|
|
107
|
+
const { proxyConfig, useRemoteProxy, localBackend, binaryPath, argsWithoutProxy } = await (0, proxy_resolver_1.resolveExecutorProxy)(args, {
|
|
108
|
+
unifiedConfig,
|
|
109
|
+
allProviders,
|
|
110
|
+
verbose,
|
|
111
|
+
cfg,
|
|
112
|
+
log,
|
|
176
113
|
});
|
|
177
|
-
|
|
178
|
-
let argsWithoutBrowserFlags = argsWithoutProxy;
|
|
179
|
-
try {
|
|
180
|
-
const browserLaunchFlags = (0, browser_1.resolveBrowserLaunchFlagResolution)(argsWithoutProxy);
|
|
181
|
-
browserLaunchOverride = browserLaunchFlags.override;
|
|
182
|
-
argsWithoutBrowserFlags = browserLaunchFlags.argsWithoutFlags;
|
|
183
|
-
}
|
|
184
|
-
catch (error) {
|
|
185
|
-
console.error((0, ui_1.fail)(error.message));
|
|
186
|
-
process.exit(1);
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
const browserConfig = (0, unified_config_loader_1.getBrowserConfig)();
|
|
190
|
-
const browserAttachConfig = (0, browser_1.getEffectiveClaudeBrowserAttachConfig)(browserConfig);
|
|
191
|
-
const claudeBrowserExposure = (0, browser_1.resolveBrowserExposure)({
|
|
192
|
-
enabled: browserAttachConfig.enabled,
|
|
193
|
-
policy: browserConfig.claude.policy,
|
|
194
|
-
}, browserLaunchOverride);
|
|
195
|
-
const blockedBrowserOverrideWarning = (0, browser_1.getBlockedBrowserOverrideWarning)('Claude Browser Attach', claudeBrowserExposure);
|
|
196
|
-
if (blockedBrowserOverrideWarning) {
|
|
197
|
-
console.error((0, ui_1.warn)(blockedBrowserOverrideWarning));
|
|
198
|
-
}
|
|
199
|
-
// Port resolution and validation
|
|
200
|
-
if (cfg.port && cfg.port !== config_generator_1.CLIPROXY_DEFAULT_PORT) {
|
|
201
|
-
if (proxyConfig.port !== config_generator_1.CLIPROXY_DEFAULT_PORT) {
|
|
202
|
-
cfg.port = proxyConfig.port;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
else if (proxyConfig.port !== config_generator_1.CLIPROXY_DEFAULT_PORT) {
|
|
206
|
-
cfg.port = proxyConfig.port;
|
|
207
|
-
}
|
|
208
|
-
cfg.port = (0, config_generator_1.validatePort)(cfg.port);
|
|
209
|
-
log(`Proxy mode: ${proxyConfig.mode}`);
|
|
210
|
-
if (proxyConfig.mode === 'remote') {
|
|
211
|
-
log(`Remote host: ${proxyConfig.host}:${proxyConfig.port} (${proxyConfig.protocol})`);
|
|
212
|
-
}
|
|
114
|
+
const { browserLaunchOverride, argsWithoutBrowserFlags } = (0, browser_launch_setup_1.resolveBrowserLaunchFlags)(argsWithoutProxy);
|
|
213
115
|
// Setup first-class CCS WebSearch runtime
|
|
214
116
|
(0, websearch_manager_1.ensureWebSearchMcpOrThrow)();
|
|
215
117
|
const imageAnalysisMcpReady = (0, image_analysis_1.ensureImageAnalysisMcpOrThrow)();
|
|
216
|
-
const browserAttachRuntime = browserAttachConfig.enabled && claudeBrowserExposure.exposeForLaunch
|
|
217
|
-
? await (0, browser_1.resolveOptionalBrowserAttachRuntime)(browserAttachConfig)
|
|
218
|
-
: undefined;
|
|
219
|
-
const browserRuntimeEnv = browserAttachRuntime?.runtimeEnv;
|
|
220
|
-
if (browserAttachRuntime?.warning) {
|
|
221
|
-
process.stderr.write(`${(0, ui_1.warn)(browserAttachRuntime.warning)}\n`);
|
|
222
|
-
}
|
|
223
|
-
if (browserRuntimeEnv) {
|
|
224
|
-
(0, browser_1.ensureBrowserMcpOrThrow)();
|
|
225
|
-
}
|
|
226
118
|
(0, websearch_manager_1.displayWebSearchStatus)();
|
|
227
119
|
const providerConfig = (0, config_generator_1.getProviderConfig)(provider);
|
|
228
120
|
log(`Provider: ${providerConfig.displayName}`);
|
|
229
|
-
(0, account_safety_1.warnOAuthBanRisk)(provider);
|
|
230
|
-
// Check remote proxy if configured
|
|
231
|
-
let useRemoteProxy = false;
|
|
232
|
-
let localBackend = 'original';
|
|
233
|
-
if (proxyConfig.mode === 'remote' && proxyConfig.host) {
|
|
234
|
-
const status = await (0, remote_proxy_client_1.checkRemoteProxy)({
|
|
235
|
-
host: proxyConfig.host,
|
|
236
|
-
port: proxyConfig.port,
|
|
237
|
-
protocol: proxyConfig.protocol,
|
|
238
|
-
authToken: proxyConfig.authToken,
|
|
239
|
-
timeout: proxyConfig.timeout ?? 2000,
|
|
240
|
-
allowSelfSigned: proxyConfig.allowSelfSigned ?? false,
|
|
241
|
-
});
|
|
242
|
-
if (status.reachable) {
|
|
243
|
-
useRemoteProxy = true;
|
|
244
|
-
console.log((0, ui_1.ok)(`Connected to remote proxy at ${proxyConfig.host}:${proxyConfig.port} (${status.latencyMs}ms)`));
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
console.error((0, ui_1.warn)(`Remote proxy unreachable: ${status.error}`));
|
|
248
|
-
if (proxyConfig.remoteOnly) {
|
|
249
|
-
throw new Error('Remote proxy unreachable and --remote-only specified');
|
|
250
|
-
}
|
|
251
|
-
if (proxyConfig.fallbackEnabled) {
|
|
252
|
-
if (proxyConfig.autoStartLocal) {
|
|
253
|
-
console.log((0, ui_1.info)('Falling back to local proxy...'));
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
if (process.stdin.isTTY) {
|
|
257
|
-
const readline = await Promise.resolve().then(() => __importStar(require('readline')));
|
|
258
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
259
|
-
const answer = await new Promise((resolve) => {
|
|
260
|
-
rl.question('Start local proxy instead? [Y/n] ', resolve);
|
|
261
|
-
});
|
|
262
|
-
rl.close();
|
|
263
|
-
if (answer.toLowerCase() === 'n') {
|
|
264
|
-
throw new Error('Remote proxy unreachable and user declined fallback');
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
console.log((0, ui_1.info)('Starting local proxy...'));
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
throw new Error('Remote proxy unreachable and fallback disabled');
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
if (!useRemoteProxy) {
|
|
276
|
-
localBackend = (0, binary_manager_1.getConfiguredBackend)({ notifyOnPlus: true });
|
|
277
|
-
for (const p of allProviders) {
|
|
278
|
-
if (localBackend === 'original' && types_1.PLUS_ONLY_PROVIDERS.includes(p)) {
|
|
279
|
-
console.error('');
|
|
280
|
-
console.error((0, ui_1.fail)((0, binary_manager_1.getPlusBackendUnavailableMessage)(p)));
|
|
281
|
-
console.error('');
|
|
282
|
-
throw new Error(`Provider ${p} requires local CLIProxy Plus backend`);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
121
|
// Variables for local proxy mode
|
|
287
|
-
let binaryPath;
|
|
288
122
|
let sessionId;
|
|
289
|
-
//
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
}
|
|
297
|
-
catch (error) {
|
|
298
|
-
spinner.fail('Failed to prepare CLIProxy');
|
|
299
|
-
const err = error;
|
|
300
|
-
if ((0, retry_handler_1.isNetworkError)(err)) {
|
|
301
|
-
(0, retry_handler_1.handleNetworkError)(err);
|
|
302
|
-
}
|
|
303
|
-
throw error;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
// 2. Handle special flags (simplified flag parsing - full implementation continues below)
|
|
307
|
-
const forceAuth = argsWithoutProxy.includes('--auth');
|
|
308
|
-
const pasteCallback = argsWithoutProxy.includes('--paste-callback');
|
|
309
|
-
const portForward = argsWithoutProxy.includes('--port-forward');
|
|
310
|
-
const forceHeadless = argsWithoutProxy.includes('--headless');
|
|
311
|
-
if (pasteCallback && portForward) {
|
|
312
|
-
console.error((0, ui_1.fail)('Cannot use --paste-callback with --port-forward'));
|
|
313
|
-
console.error(' --paste-callback: Manually paste OAuth redirect URL');
|
|
314
|
-
console.error(' --port-forward: Use SSH port forwarding for callback');
|
|
315
|
-
process.exit(1);
|
|
316
|
-
}
|
|
317
|
-
const forceLogout = argsWithoutProxy.includes('--logout');
|
|
318
|
-
const forceConfig = argsWithoutProxy.includes('--config');
|
|
319
|
-
const addAccount = argsWithoutProxy.includes('--add');
|
|
320
|
-
const showAccounts = argsWithoutProxy.includes('--accounts');
|
|
321
|
-
const forceImport = argsWithoutProxy.includes('--import');
|
|
322
|
-
const gitlabTokenLogin = hasGitLabTokenLoginFlag(argsWithoutProxy);
|
|
323
|
-
const acceptAgyRisk = (0, antigravity_responsibility_1.hasAntigravityRiskAcceptanceFlag)(argsWithoutProxy);
|
|
324
|
-
const incognitoFlag = argsWithoutProxy.includes('--incognito');
|
|
325
|
-
const noIncognitoFlag = argsWithoutProxy.includes('--no-incognito');
|
|
326
|
-
const kiroNoIncognitoConfig = provider === 'kiro' ? (unifiedConfig.cliproxy?.kiro_no_incognito ?? true) : false;
|
|
327
|
-
const noIncognito = incognitoFlag ? false : noIncognitoFlag || kiroNoIncognitoConfig;
|
|
328
|
-
// Parse --use flag
|
|
329
|
-
let useAccount;
|
|
330
|
-
const useIdx = argsWithoutProxy.indexOf('--use');
|
|
331
|
-
if (useIdx !== -1 &&
|
|
332
|
-
argsWithoutProxy[useIdx + 1] &&
|
|
333
|
-
!argsWithoutProxy[useIdx + 1].startsWith('-')) {
|
|
334
|
-
useAccount = argsWithoutProxy[useIdx + 1];
|
|
335
|
-
}
|
|
336
|
-
// Parse --nickname flag
|
|
337
|
-
let setNickname;
|
|
338
|
-
const nicknameIdx = argsWithoutProxy.indexOf('--nickname');
|
|
339
|
-
if (nicknameIdx !== -1 &&
|
|
340
|
-
argsWithoutProxy[nicknameIdx + 1] &&
|
|
341
|
-
!argsWithoutProxy[nicknameIdx + 1].startsWith('-')) {
|
|
342
|
-
setNickname = argsWithoutProxy[nicknameIdx + 1];
|
|
343
|
-
}
|
|
344
|
-
// Parse --kiro-auth-method flag
|
|
345
|
-
let kiroAuthMethod;
|
|
346
|
-
const kiroMethodValue = readOptionValue(argsWithoutProxy, '--kiro-auth-method');
|
|
347
|
-
if (kiroMethodValue.present) {
|
|
348
|
-
const rawMethod = kiroMethodValue.value;
|
|
349
|
-
if (kiroMethodValue.missingValue || !rawMethod) {
|
|
350
|
-
console.error((0, ui_1.fail)('--kiro-auth-method requires a value'));
|
|
351
|
-
console.error(' Supported values: aws, aws-authcode, google, github, idc');
|
|
352
|
-
process.exitCode = 1;
|
|
353
|
-
return;
|
|
354
|
-
}
|
|
355
|
-
const normalized = rawMethod.trim().toLowerCase();
|
|
356
|
-
if (!(0, auth_types_1.isKiroAuthMethod)(normalized)) {
|
|
357
|
-
console.error((0, ui_1.fail)(`Invalid --kiro-auth-method value: ${rawMethod}`));
|
|
358
|
-
console.error(' Supported values: aws, aws-authcode, google, github, idc');
|
|
359
|
-
process.exitCode = 1;
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
kiroAuthMethod = (0, auth_types_1.normalizeKiroAuthMethod)(normalized);
|
|
363
|
-
}
|
|
364
|
-
let kiroIDCStartUrl;
|
|
365
|
-
const kiroIDCStartUrlValue = readOptionValue(argsWithoutProxy, '--kiro-idc-start-url');
|
|
366
|
-
if (kiroIDCStartUrlValue.present && kiroIDCStartUrlValue.value) {
|
|
367
|
-
kiroIDCStartUrl = kiroIDCStartUrlValue.value;
|
|
368
|
-
}
|
|
369
|
-
else if (kiroIDCStartUrlValue.present) {
|
|
370
|
-
console.error((0, ui_1.fail)('--kiro-idc-start-url requires a value'));
|
|
371
|
-
process.exitCode = 1;
|
|
372
|
-
return;
|
|
373
|
-
}
|
|
374
|
-
let kiroIDCRegion;
|
|
375
|
-
const kiroIDCRegionValue = readOptionValue(argsWithoutProxy, '--kiro-idc-region');
|
|
376
|
-
if (kiroIDCRegionValue.present && kiroIDCRegionValue.value) {
|
|
377
|
-
kiroIDCRegion = kiroIDCRegionValue.value;
|
|
378
|
-
}
|
|
379
|
-
else if (kiroIDCRegionValue.present) {
|
|
380
|
-
console.error((0, ui_1.fail)('--kiro-idc-region requires a value'));
|
|
381
|
-
process.exitCode = 1;
|
|
382
|
-
return;
|
|
383
|
-
}
|
|
384
|
-
let kiroIDCFlow;
|
|
385
|
-
const kiroIDCFlowValue = readOptionValue(argsWithoutProxy, '--kiro-idc-flow');
|
|
386
|
-
if (kiroIDCFlowValue.present) {
|
|
387
|
-
const rawFlow = kiroIDCFlowValue.value;
|
|
388
|
-
if (kiroIDCFlowValue.missingValue || !rawFlow) {
|
|
389
|
-
console.error((0, ui_1.fail)('--kiro-idc-flow requires a value'));
|
|
390
|
-
console.error(' Supported values: authcode, device');
|
|
391
|
-
process.exitCode = 1;
|
|
392
|
-
return;
|
|
393
|
-
}
|
|
394
|
-
const normalized = rawFlow.trim().toLowerCase();
|
|
395
|
-
if (!(0, auth_types_1.isKiroIDCFlow)(normalized)) {
|
|
396
|
-
console.error((0, ui_1.fail)(`Invalid --kiro-idc-flow value: ${rawFlow}`));
|
|
397
|
-
console.error(' Supported values: authcode, device');
|
|
398
|
-
process.exitCode = 1;
|
|
399
|
-
return;
|
|
400
|
-
}
|
|
401
|
-
kiroIDCFlow = (0, auth_types_1.normalizeKiroIDCFlow)(normalized);
|
|
402
|
-
}
|
|
403
|
-
let gitlabBaseUrl;
|
|
404
|
-
const gitlabBaseUrlValue = readOptionValue(argsWithoutProxy, '--gitlab-url');
|
|
405
|
-
if (gitlabBaseUrlValue.present && gitlabBaseUrlValue.value) {
|
|
406
|
-
gitlabBaseUrl = gitlabBaseUrlValue.value.trim();
|
|
407
|
-
}
|
|
408
|
-
else if (gitlabBaseUrlValue.present) {
|
|
409
|
-
console.error((0, ui_1.fail)('--gitlab-url requires a value'));
|
|
410
|
-
process.exitCode = 1;
|
|
411
|
-
return;
|
|
412
|
-
}
|
|
413
|
-
if (kiroAuthMethod && provider !== 'kiro' && !compositeProviders.includes('kiro')) {
|
|
414
|
-
console.error((0, ui_1.fail)('--kiro-auth-method is only valid for ccs kiro'));
|
|
415
|
-
process.exitCode = 1;
|
|
416
|
-
return;
|
|
417
|
-
}
|
|
418
|
-
if ((kiroIDCStartUrl || kiroIDCRegion || kiroIDCFlow) &&
|
|
419
|
-
provider !== 'kiro' &&
|
|
420
|
-
!compositeProviders.includes('kiro')) {
|
|
421
|
-
console.error((0, ui_1.fail)('--kiro-idc-start-url, --kiro-idc-region, and --kiro-idc-flow are only valid for ccs kiro'));
|
|
422
|
-
process.exitCode = 1;
|
|
423
|
-
return;
|
|
424
|
-
}
|
|
425
|
-
if (!kiroAuthMethod && (kiroIDCStartUrl || kiroIDCRegion || kiroIDCFlow)) {
|
|
426
|
-
kiroAuthMethod = 'idc';
|
|
427
|
-
}
|
|
428
|
-
if (kiroAuthMethod === 'idc' && !kiroIDCStartUrl) {
|
|
429
|
-
console.error((0, ui_1.fail)('Kiro IDC login requires --kiro-idc-start-url'));
|
|
430
|
-
console.error(' Example: ccs kiro --auth --kiro-auth-method idc --kiro-idc-start-url https://d-xxx.awsapps.com/start');
|
|
431
|
-
process.exitCode = 1;
|
|
432
|
-
return;
|
|
433
|
-
}
|
|
434
|
-
if (kiroAuthMethod &&
|
|
435
|
-
kiroAuthMethod !== 'idc' &&
|
|
436
|
-
(kiroIDCStartUrl || kiroIDCRegion || kiroIDCFlow)) {
|
|
437
|
-
console.error((0, ui_1.fail)('--kiro-idc-start-url, --kiro-idc-region, and --kiro-idc-flow require --kiro-auth-method idc'));
|
|
438
|
-
process.exitCode = 1;
|
|
123
|
+
// 2. Parse all CCS executor flags (extracted to arg-parser.ts)
|
|
124
|
+
const parsedFlags = (0, arg_parser_1.parseExecutorFlags)(argsWithoutProxy, {
|
|
125
|
+
provider,
|
|
126
|
+
compositeProviders,
|
|
127
|
+
unifiedConfig,
|
|
128
|
+
});
|
|
129
|
+
if (process.exitCode === 1)
|
|
439
130
|
return;
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
? getGitLabTokenLoginFlagName(argsWithoutProxy)
|
|
444
|
-
: '--gitlab-url';
|
|
445
|
-
console.error((0, ui_1.fail)(`${flagName} is only valid for ccs gitlab`));
|
|
446
|
-
process.exitCode = 1;
|
|
131
|
+
// Validate cross-flag combinations (exits with code 1 on violation)
|
|
132
|
+
(0, arg_parser_1.validateFlagCombinations)(parsedFlags, { provider, compositeProviders }, argsWithoutProxy);
|
|
133
|
+
if (process.exitCode === 1)
|
|
447
134
|
return;
|
|
448
|
-
}
|
|
449
|
-
// Parse --thinking / --effort flags (aliases; first occurrence wins)
|
|
450
|
-
const thinkingParse = (0, thinking_arg_parser_1.parseThinkingOverride)(argsWithoutProxy);
|
|
451
|
-
if (thinkingParse.error) {
|
|
452
|
-
const { flag } = thinkingParse.error;
|
|
453
|
-
console.error((0, ui_1.fail)(`${flag} requires a value`));
|
|
454
|
-
if (provider === 'codex') {
|
|
455
|
-
console.error(' Codex examples: --effort xhigh, --effort high, --effort medium');
|
|
456
|
-
console.error(' Alias: --thinking xhigh (same behavior)');
|
|
457
|
-
}
|
|
458
|
-
else {
|
|
459
|
-
console.error(' Examples: --thinking low, --thinking 8192, --thinking off');
|
|
460
|
-
console.error(' Levels: minimal, low, medium, high, xhigh, max, auto');
|
|
461
|
-
}
|
|
462
|
-
process.exit(1);
|
|
463
|
-
}
|
|
135
|
+
const { forceConfig, addAccount, showAccounts, useAccount, setNickname, extendedContextOverride, thinkingParse, } = parsedFlags;
|
|
464
136
|
const { thinkingOverride, thinkingSource } = (0, thinking_override_resolver_1.resolveRuntimeThinkingOverride)(thinkingParse.value, process.env.CCS_THINKING);
|
|
465
|
-
const thinkingCfg = (0,
|
|
137
|
+
const thinkingCfg = (0, config_loader_facade_1.getThinkingConfig)();
|
|
466
138
|
if (thinkingParse.duplicateDisplays.length > 0) {
|
|
467
139
|
console.warn(`[!] Multiple reasoning flags detected. Using first occurrence: ${thinkingParse.sourceDisplay}`);
|
|
468
140
|
}
|
|
469
141
|
if (thinkingParse.sourceFlag === '--effort' && provider !== 'codex') {
|
|
470
142
|
console.warn((0, ui_1.warn)('`--effort` is primarily for codex. Continuing as alias of `--thinking` for compatibility.'));
|
|
471
143
|
}
|
|
472
|
-
//
|
|
473
|
-
|
|
474
|
-
const has1mFlag = argsWithoutProxy.includes('--1m') || argsWithoutProxy.some((arg) => arg.startsWith('--1m='));
|
|
475
|
-
const hasNo1mFlag = argsWithoutProxy.includes('--no-1m') ||
|
|
476
|
-
argsWithoutProxy.some((arg) => arg.startsWith('--no-1m='));
|
|
477
|
-
if (has1mFlag && hasNo1mFlag) {
|
|
478
|
-
console.error((0, ui_1.fail)('Cannot use both --1m and --no-1m flags'));
|
|
479
|
-
process.exit(1);
|
|
480
|
-
}
|
|
481
|
-
else if (has1mFlag) {
|
|
482
|
-
extendedContextOverride = true;
|
|
483
|
-
}
|
|
484
|
-
else if (hasNo1mFlag) {
|
|
485
|
-
extendedContextOverride = false;
|
|
486
|
-
}
|
|
487
|
-
// undefined = auto behavior (Gemini: on, others: off)
|
|
488
|
-
// Handle --accounts
|
|
489
|
-
if (showAccounts) {
|
|
490
|
-
const accounts = (0, account_manager_1.getProviderAccounts)(provider);
|
|
491
|
-
if (accounts.length === 0) {
|
|
492
|
-
console.log((0, ui_1.info)(`No accounts registered for ${providerConfig.displayName}`));
|
|
493
|
-
console.log(` Run "ccs ${provider} --auth" to add an account`);
|
|
494
|
-
}
|
|
495
|
-
else {
|
|
496
|
-
console.log(`\n${providerConfig.displayName} Accounts:\n`);
|
|
497
|
-
for (const acct of accounts) {
|
|
498
|
-
const defaultMark = acct.isDefault ? ' (default)' : '';
|
|
499
|
-
const nickname = acct.nickname ? `[${acct.nickname}]` : '';
|
|
500
|
-
console.log(` ${nickname.padEnd(12)} ${(0, email_account_identity_1.formatAccountDisplayName)(acct)}${defaultMark}`);
|
|
501
|
-
}
|
|
502
|
-
console.log(`\n Use "ccs ${provider} --use <nickname-or-id>" to switch accounts`);
|
|
503
|
-
}
|
|
504
|
-
process.exit(0);
|
|
505
|
-
}
|
|
506
|
-
// Handle --use
|
|
507
|
-
if (useAccount) {
|
|
508
|
-
const account = (0, account_manager_1.findAccountByQuery)(provider, useAccount);
|
|
509
|
-
if (!account) {
|
|
510
|
-
console.error((0, ui_1.fail)(`Account not found: "${useAccount}"`));
|
|
511
|
-
const accounts = (0, account_manager_1.getProviderAccounts)(provider);
|
|
512
|
-
if (accounts.length > 0) {
|
|
513
|
-
console.error(` Available accounts:`);
|
|
514
|
-
for (const acct of accounts) {
|
|
515
|
-
const displayName = (0, email_account_identity_1.formatAccountDisplayName)(acct);
|
|
516
|
-
const label = acct.nickname ? `${acct.nickname} (${displayName})` : displayName;
|
|
517
|
-
console.error(` - ${label}`);
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
process.exit(1);
|
|
521
|
-
}
|
|
522
|
-
(0, account_manager_1.setDefaultAccount)(provider, account.id);
|
|
523
|
-
(0, account_manager_1.touchAccount)(provider, account.id);
|
|
524
|
-
const switchedLabel = account.nickname
|
|
525
|
-
? `${account.nickname} (${(0, email_account_identity_1.formatAccountDisplayName)(account)})`
|
|
526
|
-
: (0, email_account_identity_1.formatAccountDisplayName)(account);
|
|
527
|
-
console.log((0, ui_1.ok)(`Switched to account: ${switchedLabel}`));
|
|
528
|
-
}
|
|
529
|
-
// Handle --nickname (rename account)
|
|
530
|
-
if (setNickname && !addAccount) {
|
|
531
|
-
const defaultAccount = (0, account_manager_1.getDefaultAccount)(provider);
|
|
532
|
-
if (!defaultAccount) {
|
|
533
|
-
console.error((0, ui_1.fail)(`No account found for ${providerConfig.displayName}`));
|
|
534
|
-
console.error(` Run "ccs ${provider} --auth" to add an account first`);
|
|
535
|
-
process.exit(1);
|
|
536
|
-
}
|
|
537
|
-
try {
|
|
538
|
-
const success = (0, account_manager_1.renameAccount)(provider, defaultAccount.id, setNickname);
|
|
539
|
-
if (success) {
|
|
540
|
-
console.log((0, ui_1.ok)(`Renamed account to: ${setNickname}`));
|
|
541
|
-
}
|
|
542
|
-
else {
|
|
543
|
-
console.error((0, ui_1.fail)('Failed to rename account'));
|
|
544
|
-
process.exit(1);
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
catch (err) {
|
|
548
|
-
console.error((0, ui_1.fail)(err instanceof Error ? err.message : 'Failed to rename account'));
|
|
549
|
-
process.exit(1);
|
|
550
|
-
}
|
|
551
|
-
process.exit(0);
|
|
552
|
-
}
|
|
144
|
+
// Handle --accounts / --use / --nickname (warnOAuthBanRisk emitted inside)
|
|
145
|
+
await (0, account_resolution_1.resolveAccounts)({ provider, showAccounts, useAccount, setNickname, addAccount });
|
|
553
146
|
// Handle --config
|
|
554
147
|
if (forceConfig && (0, model_catalog_1.supportsModelConfig)(provider)) {
|
|
555
148
|
// Block --config for composite variants (per-tier models in config.yaml)
|
|
@@ -564,264 +157,49 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
564
157
|
process.exit(0);
|
|
565
158
|
}
|
|
566
159
|
}
|
|
567
|
-
//
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
console.error((0, ui_1.fail)('--import is only available for Kiro'));
|
|
582
|
-
console.error(` Run "ccs ${provider} --auth" to authenticate`);
|
|
583
|
-
process.exit(1);
|
|
584
|
-
}
|
|
585
|
-
if (forceAuth) {
|
|
586
|
-
console.error((0, ui_1.fail)('Cannot use --import with --auth'));
|
|
587
|
-
console.error(' --import: Import existing token from Kiro IDE');
|
|
588
|
-
console.error(' --auth: Trigger new OAuth flow in browser');
|
|
589
|
-
process.exit(1);
|
|
590
|
-
}
|
|
591
|
-
if (forceLogout) {
|
|
592
|
-
console.error((0, ui_1.fail)('Cannot use --import with --logout'));
|
|
593
|
-
process.exit(1);
|
|
594
|
-
}
|
|
595
|
-
const { triggerOAuth } = await Promise.resolve().then(() => __importStar(require('../auth/auth-handler')));
|
|
596
|
-
const authSuccess = await triggerOAuth(provider, {
|
|
597
|
-
verbose,
|
|
598
|
-
import: true,
|
|
599
|
-
...(kiroAuthMethod ? { kiroMethod: kiroAuthMethod } : {}),
|
|
600
|
-
...(kiroIDCStartUrl ? { kiroIDCStartUrl } : {}),
|
|
601
|
-
...(kiroIDCRegion ? { kiroIDCRegion } : {}),
|
|
602
|
-
...(kiroIDCFlow ? { kiroIDCFlow } : {}),
|
|
603
|
-
...(setNickname ? { nickname: setNickname } : {}),
|
|
604
|
-
});
|
|
605
|
-
if (!authSuccess) {
|
|
606
|
-
console.error((0, ui_1.fail)('Failed to import Kiro token from IDE'));
|
|
607
|
-
console.error(' Make sure you are logged into Kiro IDE first');
|
|
608
|
-
process.exit(1);
|
|
609
|
-
}
|
|
610
|
-
process.exit(0);
|
|
611
|
-
}
|
|
160
|
+
// Build auth coordination context (used for logout/import/antigravity/oauth)
|
|
161
|
+
const authCtx = {
|
|
162
|
+
provider,
|
|
163
|
+
compositeProviders,
|
|
164
|
+
parsedFlags,
|
|
165
|
+
cfg,
|
|
166
|
+
unifiedConfig,
|
|
167
|
+
verbose,
|
|
168
|
+
log,
|
|
169
|
+
};
|
|
170
|
+
// Handle --logout (early exit)
|
|
171
|
+
await (0, auth_coordinator_1.handleLogout)(authCtx);
|
|
172
|
+
// Handle --import (early exit, Kiro only)
|
|
173
|
+
await (0, auth_coordinator_1.handleImport)(authCtx);
|
|
612
174
|
// 3. Ensure OAuth completed (if provider requires it)
|
|
613
175
|
const remoteAuthToken = proxyConfig.authToken?.trim();
|
|
614
|
-
const skipLocalAuth =
|
|
176
|
+
const skipLocalAuth = (0, auth_coordinator_1.resolveSkipLocalAuth)(remoteAuthToken, useRemoteProxy);
|
|
615
177
|
if (skipLocalAuth) {
|
|
616
178
|
log(`Using remote proxy authentication (skipping local OAuth)`);
|
|
617
179
|
}
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
acceptedByFlag: acceptAgyRisk,
|
|
622
|
-
});
|
|
623
|
-
if (!acknowledged) {
|
|
624
|
-
throw new Error(`Antigravity auth blocked. Re-run after completing confirmation or pass ${antigravity_responsibility_1.ANTIGRAVITY_ACCEPT_RISK_FLAGS[0]}.`);
|
|
625
|
-
}
|
|
626
|
-
console.error((0, ui_1.info)('Remote proxy mode is active; local OAuth flow is skipped in --auth mode.'));
|
|
180
|
+
// Antigravity gate (runs before OAuth check)
|
|
181
|
+
const { earlyReturn: agyEarlyReturn } = await (0, auth_coordinator_1.runAntigravityGate)(authCtx, skipLocalAuth);
|
|
182
|
+
if (agyEarlyReturn)
|
|
627
183
|
return;
|
|
628
|
-
}
|
|
629
|
-
if (provider === 'agy' && !forceAuth) {
|
|
630
|
-
const requiresAuthNow = providerConfig.requiresOAuth && !(0, auth_handler_1.isAuthenticated)(provider);
|
|
631
|
-
if (skipLocalAuth || !requiresAuthNow) {
|
|
632
|
-
const acknowledged = await (0, antigravity_responsibility_1.ensureCliAntigravityResponsibility)({
|
|
633
|
-
context: 'run',
|
|
634
|
-
acceptedByFlag: acceptAgyRisk,
|
|
635
|
-
});
|
|
636
|
-
if (!acknowledged) {
|
|
637
|
-
console.error((0, ui_1.fail)(`Antigravity session blocked. Re-run after completing confirmation or pass ${antigravity_responsibility_1.ANTIGRAVITY_ACCEPT_RISK_FLAGS[0]}.`));
|
|
638
|
-
process.exit(1);
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
}
|
|
642
184
|
if (providerConfig.requiresOAuth && !skipLocalAuth) {
|
|
643
|
-
|
|
644
|
-
// Multi-provider auth check for composite variants
|
|
645
|
-
if (compositeProviders.length > 0) {
|
|
646
|
-
// Handle forceAuth for composite providers
|
|
647
|
-
if (forceAuth) {
|
|
648
|
-
const { triggerOAuth } = await Promise.resolve().then(() => __importStar(require('../auth/auth-handler')));
|
|
649
|
-
const failures = [];
|
|
650
|
-
for (const p of compositeProviders) {
|
|
651
|
-
const authSuccess = await triggerOAuth(p, {
|
|
652
|
-
verbose,
|
|
653
|
-
add: addAccount,
|
|
654
|
-
...(acceptAgyRisk ? { acceptAgyRisk: true } : {}),
|
|
655
|
-
...(kiroAuthMethod && p === 'kiro' ? { kiroMethod: kiroAuthMethod } : {}),
|
|
656
|
-
...(kiroIDCStartUrl && p === 'kiro' ? { kiroIDCStartUrl } : {}),
|
|
657
|
-
...(kiroIDCRegion && p === 'kiro' ? { kiroIDCRegion } : {}),
|
|
658
|
-
...(kiroIDCFlow && p === 'kiro' ? { kiroIDCFlow } : {}),
|
|
659
|
-
...(gitlabTokenLogin && p === 'gitlab' ? { gitlabAuthMode: 'pat' } : {}),
|
|
660
|
-
...(gitlabBaseUrl && p === 'gitlab' ? { gitlabBaseUrl } : {}),
|
|
661
|
-
...(forceHeadless ? { headless: true } : {}),
|
|
662
|
-
...(setNickname ? { nickname: setNickname } : {}),
|
|
663
|
-
...(noIncognito ? { noIncognito: true } : {}),
|
|
664
|
-
...(pasteCallback ? { pasteCallback: true } : {}),
|
|
665
|
-
...(portForward ? { portForward: true } : {}),
|
|
666
|
-
});
|
|
667
|
-
if (!authSuccess) {
|
|
668
|
-
failures.push(p);
|
|
669
|
-
}
|
|
670
|
-
}
|
|
671
|
-
if (failures.length > 0) {
|
|
672
|
-
const succeeded = compositeProviders.filter((p) => !failures.includes(p));
|
|
673
|
-
console.error((0, ui_1.fail)(`Auth failed for: ${failures.join(', ')}`));
|
|
674
|
-
if (succeeded.length > 0) {
|
|
675
|
-
console.error((0, ui_1.info)(`Succeeded: ${succeeded.join(', ')}`));
|
|
676
|
-
}
|
|
677
|
-
process.exit(1);
|
|
678
|
-
}
|
|
679
|
-
process.exit(0);
|
|
680
|
-
}
|
|
681
|
-
// Check for unauthenticated providers
|
|
682
|
-
const unauthenticatedProviders = [];
|
|
683
|
-
for (const p of compositeProviders) {
|
|
684
|
-
if (!(0, auth_handler_1.isAuthenticated)(p)) {
|
|
685
|
-
unauthenticatedProviders.push(p);
|
|
686
|
-
}
|
|
687
|
-
}
|
|
688
|
-
if (unauthenticatedProviders.length > 0) {
|
|
689
|
-
console.error((0, ui_1.fail)('Composite variant requires authentication for multiple providers:'));
|
|
690
|
-
for (const p of unauthenticatedProviders) {
|
|
691
|
-
console.error(` - ${p} (run "ccs ${p} --auth")`);
|
|
692
|
-
}
|
|
693
|
-
process.exit(1);
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
|
-
else if (forceAuth || !(0, auth_handler_1.isAuthenticated)(provider)) {
|
|
697
|
-
const { triggerOAuth } = await Promise.resolve().then(() => __importStar(require('../auth/auth-handler')));
|
|
698
|
-
const authSuccess = await triggerOAuth(provider, {
|
|
699
|
-
verbose,
|
|
700
|
-
add: addAccount,
|
|
701
|
-
...(acceptAgyRisk ? { acceptAgyRisk: true } : {}),
|
|
702
|
-
...(kiroAuthMethod ? { kiroMethod: kiroAuthMethod } : {}),
|
|
703
|
-
...(kiroIDCStartUrl ? { kiroIDCStartUrl } : {}),
|
|
704
|
-
...(kiroIDCRegion ? { kiroIDCRegion } : {}),
|
|
705
|
-
...(kiroIDCFlow ? { kiroIDCFlow } : {}),
|
|
706
|
-
...(gitlabTokenLogin ? { gitlabAuthMode: 'pat' } : {}),
|
|
707
|
-
...(gitlabBaseUrl ? { gitlabBaseUrl } : {}),
|
|
708
|
-
...(forceHeadless ? { headless: true } : {}),
|
|
709
|
-
...(setNickname ? { nickname: setNickname } : {}),
|
|
710
|
-
...(noIncognito ? { noIncognito: true } : {}),
|
|
711
|
-
...(pasteCallback ? { pasteCallback: true } : {}),
|
|
712
|
-
...(portForward ? { portForward: true } : {}),
|
|
713
|
-
});
|
|
714
|
-
if (!authSuccess) {
|
|
715
|
-
throw new Error(`Authentication required for ${providerConfig.displayName}`);
|
|
716
|
-
}
|
|
717
|
-
if (forceAuth) {
|
|
718
|
-
process.exit(0);
|
|
719
|
-
}
|
|
720
|
-
}
|
|
721
|
-
else {
|
|
722
|
-
log(`${provider} already authenticated`);
|
|
723
|
-
}
|
|
724
|
-
// 3a. Proactive token refresh (multi-provider for composite)
|
|
725
|
-
if (compositeProviders.length > 0) {
|
|
726
|
-
for (const p of compositeProviders) {
|
|
727
|
-
await (0, retry_handler_1.handleTokenExpiration)(p, verbose);
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
else {
|
|
731
|
-
await (0, retry_handler_1.handleTokenExpiration)(provider, verbose);
|
|
732
|
-
}
|
|
733
|
-
// 3a-1. Update lastUsedAt
|
|
734
|
-
const usedAccount = (0, account_manager_1.getDefaultAccount)(provider);
|
|
735
|
-
if (usedAccount) {
|
|
736
|
-
(0, account_manager_1.touchAccount)(provider, usedAccount.id);
|
|
737
|
-
}
|
|
185
|
+
await (0, auth_coordinator_1.ensureProviderAuthentication)(authCtx);
|
|
738
186
|
}
|
|
739
187
|
// 3b. Preflight quota check (providers with quota-based rotation)
|
|
740
188
|
if (!skipLocalAuth) {
|
|
741
|
-
|
|
742
|
-
if (compositeProviders.length > 0) {
|
|
743
|
-
for (const managedProvider of quota_manager_1.MANAGED_QUOTA_PROVIDERS) {
|
|
744
|
-
if (compositeProviders.includes(managedProvider)) {
|
|
745
|
-
await (0, retry_handler_1.handleQuotaCheck)(managedProvider);
|
|
746
|
-
}
|
|
747
|
-
}
|
|
748
|
-
}
|
|
749
|
-
else {
|
|
750
|
-
await (0, retry_handler_1.handleQuotaCheck)(provider);
|
|
751
|
-
}
|
|
189
|
+
await (0, auth_coordinator_1.runPreflightQuotaCheck)(provider, compositeProviders);
|
|
752
190
|
}
|
|
753
191
|
// 3c. Account safety: enforce cross-provider isolation
|
|
754
192
|
if (!skipLocalAuth) {
|
|
755
|
-
(0,
|
|
756
|
-
const isolated = (0, account_safety_1.enforceProviderIsolation)(provider);
|
|
757
|
-
if (isolated === 0) {
|
|
758
|
-
// No enforcement — still warn about duplicates for awareness
|
|
759
|
-
(0, account_safety_1.warnCrossProviderDuplicates)(provider);
|
|
760
|
-
}
|
|
761
|
-
else {
|
|
762
|
-
// 'exit' handlers must be synchronous — restoreAutoPausedAccounts uses sync fs APIs
|
|
763
|
-
process.on('exit', () => {
|
|
764
|
-
(0, account_safety_1.restoreAutoPausedAccounts)(provider);
|
|
765
|
-
});
|
|
766
|
-
}
|
|
193
|
+
(0, auth_coordinator_1.runAccountSafetyGuards)(provider, compositeProviders);
|
|
767
194
|
}
|
|
768
|
-
// 4. First-run model configuration
|
|
769
|
-
if (!
|
|
770
|
-
await (0,
|
|
195
|
+
// 4. First-run model configuration + codex plan reconcile
|
|
196
|
+
if (!skipLocalAuth) {
|
|
197
|
+
await (0, auth_coordinator_1.ensureModelConfiguration)(provider, cfg, verbose);
|
|
771
198
|
}
|
|
772
199
|
// 5. Check for broken models (multi-tier for composite)
|
|
773
|
-
|
|
774
|
-
// Check all tier models in composite variant
|
|
775
|
-
const tiers = ['opus', 'sonnet', 'haiku'];
|
|
776
|
-
for (const tier of tiers) {
|
|
777
|
-
const tierConfig = cfg.compositeTiers[tier];
|
|
778
|
-
if (tierConfig && (0, model_catalog_1.isModelBroken)(tierConfig.provider, tierConfig.model)) {
|
|
779
|
-
const modelEntry = (0, model_catalog_1.findModel)(tierConfig.provider, tierConfig.model);
|
|
780
|
-
const issueUrl = (0, model_catalog_1.getModelIssueUrl)(tierConfig.provider, tierConfig.model);
|
|
781
|
-
console.error('');
|
|
782
|
-
console.error((0, ui_1.warn)(`${tier} tier: ${modelEntry?.name || tierConfig.model} has known issues with Claude Code`));
|
|
783
|
-
console.error(' Tool calls will fail. Consider changing the model in config.yaml.');
|
|
784
|
-
if (issueUrl) {
|
|
785
|
-
console.error(` Tracking: ${issueUrl}`);
|
|
786
|
-
}
|
|
787
|
-
console.error('');
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
|
-
}
|
|
791
|
-
else {
|
|
792
|
-
const currentModel = (0, model_config_1.getCurrentModel)(provider, cfg.customSettingsPath);
|
|
793
|
-
if (currentModel && (0, model_catalog_1.isModelBroken)(provider, currentModel)) {
|
|
794
|
-
const modelEntry = (0, model_catalog_1.findModel)(provider, currentModel);
|
|
795
|
-
const issueUrl = (0, model_catalog_1.getModelIssueUrl)(provider, currentModel);
|
|
796
|
-
const replacementModel = (0, model_catalog_1.getSuggestedReplacementModel)(provider, currentModel);
|
|
797
|
-
console.error('');
|
|
798
|
-
console.error((0, ui_1.warn)(`${modelEntry?.name || currentModel} has known issues with Claude Code`));
|
|
799
|
-
if (replacementModel) {
|
|
800
|
-
console.error(` Tool calls will fail. Use "${replacementModel}" instead.`);
|
|
801
|
-
}
|
|
802
|
-
else {
|
|
803
|
-
console.error(' Tool calls will fail. Consider changing the model in config.yaml.');
|
|
804
|
-
}
|
|
805
|
-
if (issueUrl) {
|
|
806
|
-
console.error(` Tracking: ${issueUrl}`);
|
|
807
|
-
}
|
|
808
|
-
if (skipLocalAuth) {
|
|
809
|
-
console.error(' Note: Model may be overridden by remote proxy configuration.');
|
|
810
|
-
}
|
|
811
|
-
else {
|
|
812
|
-
console.error(` Run "ccs ${provider} --config" to change model.`);
|
|
813
|
-
}
|
|
814
|
-
console.error('');
|
|
815
|
-
}
|
|
816
|
-
}
|
|
200
|
+
(0, model_warnings_1.warnBrokenModels)({ provider, cfg, compositeProviders, skipLocalAuth });
|
|
817
201
|
// 6. Ensure user settings file exists
|
|
818
|
-
(0,
|
|
819
|
-
if (provider === 'codex' && !cfg.isComposite && !skipLocalAuth) {
|
|
820
|
-
await (0, codex_plan_compatibility_1.reconcileCodexModelForActivePlan)({
|
|
821
|
-
currentModel: (0, model_config_1.getCurrentModel)(provider, cfg.customSettingsPath),
|
|
822
|
-
verbose,
|
|
823
|
-
});
|
|
824
|
-
}
|
|
202
|
+
(0, auth_coordinator_1.ensureProviderSettingsFile)(provider);
|
|
825
203
|
// Local proxy mode: generate config, spawn/join proxy, track session
|
|
826
204
|
let proxy = null;
|
|
827
205
|
let configPath;
|
|
@@ -843,7 +221,7 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
843
221
|
}
|
|
844
222
|
}
|
|
845
223
|
}
|
|
846
|
-
// 8. Setup HTTPS tunnel if needed
|
|
224
|
+
// 8. Setup HTTPS tunnel if needed (tunnelPort used by imageAnalysisProxyTarget below)
|
|
847
225
|
let httpsTunnel = null;
|
|
848
226
|
let tunnelPort = null;
|
|
849
227
|
const useHttpsTunnel = (0, https_tunnel_policy_1.shouldStartHttpsTunnel)({
|
|
@@ -907,9 +285,11 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
907
285
|
const imageAnalysisWarning = imageAnalysisProvisioningFailed
|
|
908
286
|
? 'ImageAnalysis MCP provisioning failed. This session will use compatibility fallback when available.'
|
|
909
287
|
: imageAnalysisResolution.warning;
|
|
910
|
-
// 9.
|
|
288
|
+
// 9. Resolve config dir + browser runtime (needed before proxy chain)
|
|
911
289
|
let toolSanitizationProxy = null;
|
|
912
290
|
let toolSanitizationPort = null;
|
|
291
|
+
let codexReasoningProxy = null;
|
|
292
|
+
let codexReasoningPort = null;
|
|
913
293
|
let inheritedClaudeConfigDir = cfg.claudeConfigDir;
|
|
914
294
|
if (!inheritedClaudeConfigDir && cfg.profileName) {
|
|
915
295
|
const continuityInheritance = await (0, profile_continuity_inheritance_1.resolveProfileContinuityInheritance)({
|
|
@@ -923,11 +303,8 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
923
303
|
}
|
|
924
304
|
}
|
|
925
305
|
(0, image_analysis_1.syncImageAnalysisMcpToConfigDir)(inheritedClaudeConfigDir);
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
!(0, browser_1.syncBrowserMcpToConfigDir)(inheritedClaudeConfigDir)) {
|
|
929
|
-
throw new Error('Browser MCP is enabled, but CCS could not sync the browser MCP config into the inherited Claude instance.');
|
|
930
|
-
}
|
|
306
|
+
// Resolve browser attach runtime and sync browser MCP (needs inheritedClaudeConfigDir)
|
|
307
|
+
const { browserRuntimeEnv } = await (0, browser_launch_setup_1.resolveBrowserRuntime)(browserLaunchOverride, inheritedClaudeConfigDir);
|
|
931
308
|
// Build initial env vars to get ANTHROPIC_BASE_URL
|
|
932
309
|
const initialEnvVars = (0, env_resolver_1.buildClaudeEnvironment)({
|
|
933
310
|
provider,
|
|
@@ -953,71 +330,19 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
953
330
|
claudeConfigDir: inheritedClaudeConfigDir,
|
|
954
331
|
imageAnalysisEnv,
|
|
955
332
|
});
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
toolSanitizationProxy = null;
|
|
970
|
-
toolSanitizationPort = null;
|
|
971
|
-
if (verbose) {
|
|
972
|
-
console.error((0, ui_1.warn)(`Tool sanitization proxy disabled: ${err.message}`));
|
|
973
|
-
}
|
|
974
|
-
}
|
|
975
|
-
}
|
|
976
|
-
const postSanitizationBaseUrl = toolSanitizationPort
|
|
977
|
-
? `http://127.0.0.1:${toolSanitizationPort}`
|
|
978
|
-
: initialEnvVars.ANTHROPIC_BASE_URL;
|
|
979
|
-
// 10. Setup Codex reasoning proxy (single-provider Codex only)
|
|
980
|
-
let codexReasoningProxy = null;
|
|
981
|
-
let codexReasoningPort = null;
|
|
982
|
-
// Composite variants require root model-routed endpoints, never provider-pinned codex endpoints.
|
|
983
|
-
if (provider === 'codex' && !cfg.isComposite) {
|
|
984
|
-
if (!postSanitizationBaseUrl) {
|
|
985
|
-
log('ANTHROPIC_BASE_URL not set for Codex, reasoning proxy disabled');
|
|
986
|
-
}
|
|
987
|
-
else {
|
|
988
|
-
try {
|
|
989
|
-
const traceEnabled = process.env.CCS_CODEX_REASONING_TRACE === '1' ||
|
|
990
|
-
process.env.CCS_CODEX_REASONING_TRACE === 'true';
|
|
991
|
-
const stripPathPrefix = useRemoteProxy ? '/api/provider/codex' : undefined;
|
|
992
|
-
const codexThinkingOff = (0, thinking_override_resolver_1.shouldDisableCodexReasoning)(thinkingCfg, thinkingOverride);
|
|
993
|
-
codexReasoningProxy = new codex_reasoning_proxy_1.CodexReasoningProxy({
|
|
994
|
-
upstreamBaseUrl: postSanitizationBaseUrl,
|
|
995
|
-
verbose,
|
|
996
|
-
defaultEffort: 'medium',
|
|
997
|
-
disableEffort: codexThinkingOff,
|
|
998
|
-
traceFilePath: traceEnabled ? path.join((0, config_manager_1.getCcsDir)(), 'codex-reasoning-proxy.log') : '',
|
|
999
|
-
allowSelfSigned: useRemoteProxy ? (proxyConfig.allowSelfSigned ?? false) : false,
|
|
1000
|
-
modelMap: {
|
|
1001
|
-
defaultModel: initialEnvVars.ANTHROPIC_MODEL,
|
|
1002
|
-
opusModel: initialEnvVars.ANTHROPIC_DEFAULT_OPUS_MODEL,
|
|
1003
|
-
sonnetModel: initialEnvVars.ANTHROPIC_DEFAULT_SONNET_MODEL,
|
|
1004
|
-
haikuModel: initialEnvVars.ANTHROPIC_DEFAULT_HAIKU_MODEL,
|
|
1005
|
-
},
|
|
1006
|
-
stripPathPrefix,
|
|
1007
|
-
});
|
|
1008
|
-
codexReasoningPort = await codexReasoningProxy.start();
|
|
1009
|
-
log(`Codex reasoning proxy active: http://127.0.0.1:${codexReasoningPort}/api/provider/codex`);
|
|
1010
|
-
}
|
|
1011
|
-
catch (error) {
|
|
1012
|
-
const err = error;
|
|
1013
|
-
codexReasoningProxy = null;
|
|
1014
|
-
codexReasoningPort = null;
|
|
1015
|
-
if (verbose) {
|
|
1016
|
-
console.error((0, ui_1.warn)(`Codex reasoning proxy disabled: ${err.message}`));
|
|
1017
|
-
}
|
|
1018
|
-
}
|
|
1019
|
-
}
|
|
1020
|
-
}
|
|
333
|
+
// 9b. Build env-dependent proxy chain (tool-sanitization + codex-reasoning)
|
|
334
|
+
({ toolSanitizationProxy, toolSanitizationPort, codexReasoningProxy, codexReasoningPort } =
|
|
335
|
+
await (0, proxy_chain_builder_1.buildProxyChain)({
|
|
336
|
+
provider,
|
|
337
|
+
useRemoteProxy,
|
|
338
|
+
proxyConfig,
|
|
339
|
+
cfg,
|
|
340
|
+
initialEnvVars,
|
|
341
|
+
thinkingOverride,
|
|
342
|
+
thinkingCfg,
|
|
343
|
+
verbose,
|
|
344
|
+
log,
|
|
345
|
+
}));
|
|
1021
346
|
// 11. Build final environment with all proxy chains
|
|
1022
347
|
const env = (0, env_resolver_1.buildClaudeEnvironment)({
|
|
1023
348
|
provider,
|
|
@@ -1073,122 +398,41 @@ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
|
|
|
1073
398
|
const { thinkingLabel, sourceLabel } = (0, thinking_override_resolver_1.buildThinkingStartupStatus)(thinkingCfg, thinkingOverride, thinkingSource, thinkingParse.sourceDisplay);
|
|
1074
399
|
console.error(`[i] Thinking: ${thinkingLabel} (${sourceLabel})`);
|
|
1075
400
|
}
|
|
1076
|
-
// 12. Filter CCS
|
|
1077
|
-
const
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
'--1m',
|
|
1095
|
-
'--no-1m',
|
|
1096
|
-
'--incognito',
|
|
1097
|
-
'--no-incognito',
|
|
1098
|
-
'--import',
|
|
1099
|
-
'--accept-agr-risk',
|
|
1100
|
-
'--accept-antigravity-risk',
|
|
1101
|
-
'--settings',
|
|
1102
|
-
...proxy_config_resolver_1.PROXY_CLI_FLAGS,
|
|
1103
|
-
];
|
|
1104
|
-
const claudeArgs = argsWithoutBrowserFlags.filter((arg, idx) => {
|
|
1105
|
-
if (ccsFlags.includes(arg))
|
|
1106
|
-
return false;
|
|
1107
|
-
if (arg.startsWith('--kiro-auth-method='))
|
|
1108
|
-
return false;
|
|
1109
|
-
if (arg.startsWith('--kiro-idc-start-url='))
|
|
1110
|
-
return false;
|
|
1111
|
-
if (arg.startsWith('--kiro-idc-region='))
|
|
1112
|
-
return false;
|
|
1113
|
-
if (arg.startsWith('--kiro-idc-flow='))
|
|
1114
|
-
return false;
|
|
1115
|
-
if (arg.startsWith('--thinking='))
|
|
1116
|
-
return false;
|
|
1117
|
-
if (arg.startsWith('--effort='))
|
|
1118
|
-
return false;
|
|
1119
|
-
if (arg.startsWith('--1m=') || arg.startsWith('--no-1m='))
|
|
1120
|
-
return false;
|
|
1121
|
-
if (argsWithoutBrowserFlags[idx - 1] === '--use' ||
|
|
1122
|
-
argsWithoutBrowserFlags[idx - 1] === '--nickname' ||
|
|
1123
|
-
argsWithoutBrowserFlags[idx - 1] === '--kiro-auth-method' ||
|
|
1124
|
-
argsWithoutBrowserFlags[idx - 1] === '--kiro-idc-start-url' ||
|
|
1125
|
-
argsWithoutBrowserFlags[idx - 1] === '--kiro-idc-region' ||
|
|
1126
|
-
argsWithoutBrowserFlags[idx - 1] === '--kiro-idc-flow' ||
|
|
1127
|
-
argsWithoutBrowserFlags[idx - 1] === '--thinking' ||
|
|
1128
|
-
argsWithoutBrowserFlags[idx - 1] === '--effort')
|
|
1129
|
-
return false;
|
|
1130
|
-
return true;
|
|
1131
|
-
});
|
|
1132
|
-
const isWindows = process.platform === 'win32';
|
|
1133
|
-
const needsShell = isWindows && /\.(cmd|bat|ps1)$/i.test(claudeCli);
|
|
1134
|
-
const settingsPath = cfg.customSettingsPath
|
|
1135
|
-
? cfg.customSettingsPath.replace(/^~/, os.homedir())
|
|
1136
|
-
: (0, config_generator_1.getProviderSettingsPath)(provider);
|
|
1137
|
-
let claude;
|
|
1138
|
-
const imageAnalysisArgs = imageAnalysisMcpReady
|
|
1139
|
-
? (0, image_analysis_1.appendThirdPartyImageAnalysisToolArgs)(claudeArgs)
|
|
1140
|
-
: claudeArgs;
|
|
1141
|
-
const browserArgs = browserRuntimeEnv
|
|
1142
|
-
? (0, browser_1.appendBrowserToolArgs)(imageAnalysisArgs)
|
|
1143
|
-
: imageAnalysisArgs;
|
|
1144
|
-
const launchArgs = [
|
|
1145
|
-
'--settings',
|
|
1146
|
-
settingsPath,
|
|
1147
|
-
...(0, websearch_manager_1.appendThirdPartyWebSearchToolArgs)(browserArgs),
|
|
1148
|
-
];
|
|
1149
|
-
const traceEnv = (0, websearch_manager_1.createWebSearchTraceContext)({
|
|
1150
|
-
launcher: 'cliproxy.executor',
|
|
1151
|
-
args: launchArgs,
|
|
1152
|
-
profile: cfg.profileName || provider,
|
|
1153
|
-
profileType: 'cliproxy',
|
|
1154
|
-
settingsPath,
|
|
1155
|
-
claudeConfigDir: inheritedClaudeConfigDir,
|
|
401
|
+
// 12. Filter CCS flags, spawn Claude CLI, start quota monitor, wire cleanup
|
|
402
|
+
const claudeArgs = (0, arg_parser_1.filterCcsFlags)(argsWithoutBrowserFlags);
|
|
403
|
+
await (0, claude_launcher_1.launchClaude)({
|
|
404
|
+
claudeCli,
|
|
405
|
+
claudeArgs,
|
|
406
|
+
env,
|
|
407
|
+
cfg,
|
|
408
|
+
provider,
|
|
409
|
+
compositeProviders,
|
|
410
|
+
skipLocalAuth,
|
|
411
|
+
sessionId,
|
|
412
|
+
imageAnalysisMcpReady,
|
|
413
|
+
browserRuntimeEnv,
|
|
414
|
+
inheritedClaudeConfigDir,
|
|
415
|
+
codexReasoningProxy,
|
|
416
|
+
toolSanitizationProxy,
|
|
417
|
+
httpsTunnel,
|
|
418
|
+
verbose,
|
|
1156
419
|
});
|
|
1157
|
-
const tracedEnv = { ...env, ...traceEnv };
|
|
1158
|
-
if (needsShell) {
|
|
1159
|
-
const cmdString = [claudeCli, ...launchArgs].map(shell_executor_1.escapeShellArg).join(' ');
|
|
1160
|
-
claude = (0, child_process_1.spawn)(cmdString, {
|
|
1161
|
-
stdio: 'inherit',
|
|
1162
|
-
windowsHide: true,
|
|
1163
|
-
shell: (0, shell_executor_1.getWindowsEscapedCommandShell)(),
|
|
1164
|
-
env: tracedEnv,
|
|
1165
|
-
});
|
|
1166
|
-
}
|
|
1167
|
-
else {
|
|
1168
|
-
claude = (0, child_process_1.spawn)(claudeCli, launchArgs, {
|
|
1169
|
-
stdio: 'inherit',
|
|
1170
|
-
windowsHide: true,
|
|
1171
|
-
env: tracedEnv,
|
|
1172
|
-
});
|
|
1173
|
-
}
|
|
1174
|
-
// 12b. Start runtime quota monitor (adaptive polling during session)
|
|
1175
|
-
if (!skipLocalAuth) {
|
|
1176
|
-
const { startQuotaMonitor } = await Promise.resolve().then(() => __importStar(require('../quota/quota-manager')));
|
|
1177
|
-
for (const monitorProvider of resolveRuntimeQuotaMonitorProviders(provider, compositeProviders)) {
|
|
1178
|
-
const monitorAccount = (0, account_manager_1.getDefaultAccount)(monitorProvider);
|
|
1179
|
-
if (monitorAccount) {
|
|
1180
|
-
startQuotaMonitor(monitorProvider, monitorAccount.id);
|
|
1181
|
-
}
|
|
1182
|
-
}
|
|
1183
|
-
}
|
|
1184
|
-
// 13. Setup cleanup handlers
|
|
1185
|
-
(0, session_bridge_1.setupCleanupHandlers)(claude, sessionId, cfg.port, codexReasoningProxy, toolSanitizationProxy, httpsTunnel, verbose);
|
|
1186
420
|
}
|
|
1187
421
|
exports.execClaudeWithCLIProxy = execClaudeWithCLIProxy;
|
|
1188
422
|
// Re-export utility functions for backwards compatibility
|
|
1189
423
|
var lifecycle_manager_2 = require("./lifecycle-manager");
|
|
1190
424
|
Object.defineProperty(exports, "isPortAvailable", { enumerable: true, get: function () { return lifecycle_manager_2.isPortAvailable; } });
|
|
1191
425
|
Object.defineProperty(exports, "findAvailablePort", { enumerable: true, get: function () { return lifecycle_manager_2.findAvailablePort; } });
|
|
426
|
+
// Re-export arg-parser helpers (previously inlined here; external callers can
|
|
427
|
+
// import from index or directly from ./arg-parser)
|
|
428
|
+
var arg_parser_2 = require("./arg-parser");
|
|
429
|
+
Object.defineProperty(exports, "readOptionValue", { enumerable: true, get: function () { return arg_parser_2.readOptionValue; } });
|
|
430
|
+
Object.defineProperty(exports, "hasGitLabTokenLoginFlag", { enumerable: true, get: function () { return arg_parser_2.hasGitLabTokenLoginFlag; } });
|
|
431
|
+
Object.defineProperty(exports, "CCS_FLAGS", { enumerable: true, get: function () { return arg_parser_2.CCS_FLAGS; } });
|
|
432
|
+
Object.defineProperty(exports, "filterCcsFlags", { enumerable: true, get: function () { return arg_parser_2.filterCcsFlags; } });
|
|
433
|
+
// Re-export account-resolution helpers for backwards compat with __testExports consumers
|
|
434
|
+
var account_resolution_2 = require("./account-resolution");
|
|
435
|
+
Object.defineProperty(exports, "_resolveRuntimeQuotaMonitorProviders", { enumerable: true, get: function () { return account_resolution_2.resolveRuntimeQuotaMonitorProviders; } });
|
|
1192
436
|
exports.__testExports = {
|
|
1193
437
|
resolveRuntimeQuotaMonitorProviders,
|
|
1194
438
|
};
|