@kaitranntt/ccs 6.7.0 → 6.7.1-dev.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/README.md +45 -23
- package/dist/api/index.d.ts +7 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +24 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/services/index.d.ts +10 -0
- package/dist/api/services/index.d.ts.map +1 -0
- package/dist/api/services/index.js +26 -0
- package/dist/api/services/index.js.map +1 -0
- package/dist/api/services/profile-reader.d.ts +28 -0
- package/dist/api/services/profile-reader.d.ts.map +1 -0
- package/dist/api/services/profile-reader.js +148 -0
- package/dist/api/services/profile-reader.js.map +1 -0
- package/dist/api/services/profile-types.d.ts +42 -0
- package/dist/api/services/profile-types.d.ts.map +1 -0
- package/dist/api/services/profile-types.js +8 -0
- package/dist/api/services/profile-types.js.map +1 -0
- package/dist/api/services/profile-writer.d.ts +6 -0
- package/dist/api/services/profile-writer.d.ts.map +1 -0
- package/dist/api/services/profile-writer.js +176 -0
- package/dist/api/services/profile-writer.js.map +1 -0
- package/dist/api/services/validation-service.d.ts +26 -0
- package/dist/api/services/validation-service.d.ts.map +1 -0
- package/dist/api/services/validation-service.js +77 -0
- package/dist/api/services/validation-service.js.map +1 -0
- package/dist/auth/auth-commands.d.ts +16 -22
- package/dist/auth/auth-commands.d.ts.map +1 -1
- package/dist/auth/auth-commands.js +29 -467
- package/dist/auth/auth-commands.js.map +1 -1
- package/dist/auth/commands/create-command.d.ts +11 -0
- package/dist/auth/commands/create-command.d.ts.map +1 -0
- package/dist/auth/commands/create-command.js +137 -0
- package/dist/auth/commands/create-command.js.map +1 -0
- package/dist/auth/commands/default-command.d.ts +15 -0
- package/dist/auth/commands/default-command.d.ts.map +1 -0
- package/dist/auth/commands/default-command.js +71 -0
- package/dist/auth/commands/default-command.js.map +1 -0
- package/dist/auth/commands/index.d.ts +12 -0
- package/dist/auth/commands/index.d.ts.map +1 -0
- package/dist/auth/commands/index.js +25 -0
- package/dist/auth/commands/index.js.map +1 -0
- package/dist/auth/commands/list-command.d.ts +11 -0
- package/dist/auth/commands/list-command.d.ts.map +1 -0
- package/dist/auth/commands/list-command.js +124 -0
- package/dist/auth/commands/list-command.js.map +1 -0
- package/dist/auth/commands/remove-command.d.ts +11 -0
- package/dist/auth/commands/remove-command.d.ts.map +1 -0
- package/dist/auth/commands/remove-command.js +102 -0
- package/dist/auth/commands/remove-command.js.map +1 -0
- package/dist/auth/commands/show-command.d.ts +11 -0
- package/dist/auth/commands/show-command.d.ts.map +1 -0
- package/dist/auth/commands/show-command.js +103 -0
- package/dist/auth/commands/show-command.js.map +1 -0
- package/dist/auth/commands/types.d.ts +50 -0
- package/dist/auth/commands/types.d.ts.map +1 -0
- package/dist/auth/commands/types.js +26 -0
- package/dist/auth/commands/types.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +16 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/profile-detector.d.ts +0 -5
- package/dist/auth/profile-detector.d.ts.map +1 -1
- package/dist/auth/profile-detector.js +1 -9
- package/dist/auth/profile-detector.js.map +1 -1
- package/dist/auth/profile-registry.d.ts +0 -4
- package/dist/auth/profile-registry.d.ts.map +1 -1
- package/dist/auth/profile-registry.js +3 -10
- package/dist/auth/profile-registry.js.map +1 -1
- package/dist/ccs.js +21 -4
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/auth/auth-types.d.ts +85 -0
- package/dist/cliproxy/auth/auth-types.d.ts.map +1 -0
- package/dist/cliproxy/auth/auth-types.js +100 -0
- package/dist/cliproxy/auth/auth-types.js.map +1 -0
- package/dist/cliproxy/auth/environment-detector.d.ts +30 -0
- package/dist/cliproxy/auth/environment-detector.d.ts.map +1 -0
- package/dist/cliproxy/auth/environment-detector.js +124 -0
- package/dist/cliproxy/auth/environment-detector.js.map +1 -0
- package/dist/cliproxy/auth/index.d.ts +11 -0
- package/dist/cliproxy/auth/index.d.ts.map +1 -0
- package/dist/cliproxy/auth/index.js +35 -0
- package/dist/cliproxy/auth/index.js.map +1 -0
- package/dist/cliproxy/auth/oauth-handler.d.ts +29 -0
- package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -0
- package/dist/cliproxy/auth/oauth-handler.js +205 -0
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -0
- package/dist/cliproxy/auth/oauth-process.d.ts +27 -0
- package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -0
- package/dist/cliproxy/auth/oauth-process.js +209 -0
- package/dist/cliproxy/auth/oauth-process.js.map +1 -0
- package/dist/cliproxy/auth/token-manager.d.ts +53 -0
- package/dist/cliproxy/auth/token-manager.d.ts.map +1 -0
- package/dist/cliproxy/auth/token-manager.js +250 -0
- package/dist/cliproxy/auth/token-manager.js.map +1 -0
- package/dist/cliproxy/auth-handler.d.ts +13 -103
- package/dist/cliproxy/auth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth-handler.js +35 -766
- package/dist/cliproxy/auth-handler.js.map +1 -1
- package/dist/cliproxy/binary/downloader.d.ts +29 -0
- package/dist/cliproxy/binary/downloader.d.ts.map +1 -0
- package/dist/cliproxy/binary/downloader.js +218 -0
- package/dist/cliproxy/binary/downloader.js.map +1 -0
- package/dist/cliproxy/binary/extractor.d.ts +12 -0
- package/dist/cliproxy/binary/extractor.d.ts.map +1 -0
- package/dist/cliproxy/binary/extractor.js +27 -0
- package/dist/cliproxy/binary/extractor.js.map +1 -0
- package/dist/cliproxy/binary/index.d.ts +13 -0
- package/dist/cliproxy/binary/index.d.ts.map +1 -0
- package/dist/cliproxy/binary/index.js +53 -0
- package/dist/cliproxy/binary/index.js.map +1 -0
- package/dist/cliproxy/binary/installer.d.ts +24 -0
- package/dist/cliproxy/binary/installer.d.ts.map +1 -0
- package/dist/cliproxy/binary/installer.js +117 -0
- package/dist/cliproxy/binary/installer.js.map +1 -0
- package/dist/cliproxy/binary/lifecycle.d.ts +11 -0
- package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -0
- package/dist/cliproxy/binary/lifecycle.js +106 -0
- package/dist/cliproxy/binary/lifecycle.js.map +1 -0
- package/dist/cliproxy/binary/tar-extractor.d.ts +9 -0
- package/dist/cliproxy/binary/tar-extractor.d.ts.map +1 -0
- package/dist/cliproxy/binary/tar-extractor.js +118 -0
- package/dist/cliproxy/binary/tar-extractor.js.map +1 -0
- package/dist/cliproxy/binary/types.d.ts +24 -0
- package/dist/cliproxy/binary/types.d.ts.map +1 -0
- package/dist/cliproxy/binary/types.js +14 -0
- package/dist/cliproxy/binary/types.js.map +1 -0
- package/dist/cliproxy/binary/updater.d.ts +7 -0
- package/dist/cliproxy/binary/updater.d.ts.map +1 -0
- package/dist/cliproxy/binary/updater.js +18 -0
- package/dist/cliproxy/binary/updater.js.map +1 -0
- package/dist/cliproxy/binary/verifier.d.ts +18 -0
- package/dist/cliproxy/binary/verifier.d.ts.map +1 -0
- package/dist/cliproxy/binary/verifier.js +82 -0
- package/dist/cliproxy/binary/verifier.js.map +1 -0
- package/dist/cliproxy/binary/version-cache.d.ts +46 -0
- package/dist/cliproxy/binary/version-cache.d.ts.map +1 -0
- package/dist/cliproxy/binary/version-cache.js +171 -0
- package/dist/cliproxy/binary/version-cache.js.map +1 -0
- package/dist/cliproxy/binary/version-checker.d.ts +19 -0
- package/dist/cliproxy/binary/version-checker.d.ts.map +1 -0
- package/dist/cliproxy/binary/version-checker.js +77 -0
- package/dist/cliproxy/binary/version-checker.js.map +1 -0
- package/dist/cliproxy/binary/zip-extractor.d.ts +9 -0
- package/dist/cliproxy/binary/zip-extractor.d.ts.map +1 -0
- package/dist/cliproxy/binary/zip-extractor.js +110 -0
- package/dist/cliproxy/binary/zip-extractor.js.map +1 -0
- package/dist/cliproxy/binary-manager.d.ts +16 -170
- package/dist/cliproxy/binary-manager.d.ts.map +1 -1
- package/dist/cliproxy/binary-manager.js +38 -865
- package/dist/cliproxy/binary-manager.js.map +1 -1
- package/dist/cliproxy/remote-proxy-client.d.ts +3 -0
- package/dist/cliproxy/remote-proxy-client.d.ts.map +1 -1
- package/dist/cliproxy/remote-proxy-client.js +7 -3
- package/dist/cliproxy/remote-proxy-client.js.map +1 -1
- package/dist/cliproxy/services/binary-service.d.ts +65 -0
- package/dist/cliproxy/services/binary-service.d.ts.map +1 -0
- package/dist/cliproxy/services/binary-service.js +140 -0
- package/dist/cliproxy/services/binary-service.js.map +1 -0
- package/dist/cliproxy/services/index.d.ts +8 -0
- package/dist/cliproxy/services/index.d.ts.map +1 -0
- package/dist/cliproxy/services/index.js +31 -0
- package/dist/cliproxy/services/index.js.map +1 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.d.ts +38 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.d.ts.map +1 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.js +41 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.js.map +1 -0
- package/dist/cliproxy/services/variant-config-adapter.d.ts +38 -0
- package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -0
- package/dist/cliproxy/services/variant-config-adapter.js +172 -0
- package/dist/cliproxy/services/variant-config-adapter.js.map +1 -0
- package/dist/cliproxy/services/variant-service.d.ts +37 -0
- package/dist/cliproxy/services/variant-service.d.ts.map +1 -0
- package/dist/cliproxy/services/variant-service.js +128 -0
- package/dist/cliproxy/services/variant-service.js.map +1 -0
- package/dist/cliproxy/services/variant-settings.d.ts +32 -0
- package/dist/cliproxy/services/variant-settings.d.ts.map +1 -0
- package/dist/cliproxy/services/variant-settings.js +128 -0
- package/dist/cliproxy/services/variant-settings.js.map +1 -0
- package/dist/commands/api-command.d.ts +3 -6
- package/dist/commands/api-command.d.ts.map +1 -1
- package/dist/commands/api-command.js +84 -445
- package/dist/commands/api-command.js.map +1 -1
- package/dist/commands/cliproxy-command.d.ts +0 -3
- package/dist/commands/cliproxy-command.d.ts.map +1 -1
- package/dist/commands/cliproxy-command.js +182 -621
- package/dist/commands/cliproxy-command.js.map +1 -1
- package/dist/commands/index.d.ts +17 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +33 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/config/unified-config-loader.d.ts +7 -0
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +11 -1
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/delegation/executor/index.d.ts +7 -0
- package/dist/delegation/executor/index.d.ts.map +1 -0
- package/dist/delegation/executor/index.js +28 -0
- package/dist/delegation/executor/index.js.map +1 -0
- package/dist/delegation/executor/result-aggregator.d.ts +30 -0
- package/dist/delegation/executor/result-aggregator.d.ts.map +1 -0
- package/dist/delegation/executor/result-aggregator.js +66 -0
- package/dist/delegation/executor/result-aggregator.js.map +1 -0
- package/dist/delegation/executor/stream-parser.d.ts +28 -0
- package/dist/delegation/executor/stream-parser.d.ts.map +1 -0
- package/dist/delegation/executor/stream-parser.js +140 -0
- package/dist/delegation/executor/stream-parser.js.map +1 -0
- package/dist/delegation/executor/types.d.ts +121 -0
- package/dist/delegation/executor/types.d.ts.map +1 -0
- package/dist/delegation/executor/types.js +6 -0
- package/dist/delegation/executor/types.js.map +1 -0
- package/dist/delegation/headless-executor.d.ts +13 -91
- package/dist/delegation/headless-executor.d.ts.map +1 -1
- package/dist/delegation/headless-executor.js +84 -291
- package/dist/delegation/headless-executor.js.map +1 -1
- package/dist/delegation/index.d.ts +11 -0
- package/dist/delegation/index.d.ts.map +1 -0
- package/dist/delegation/index.js +33 -0
- package/dist/delegation/index.js.map +1 -0
- package/dist/delegation/result-formatter.d.ts +1 -30
- package/dist/delegation/result-formatter.d.ts.map +1 -1
- package/dist/delegation/result-formatter.js.map +1 -1
- package/dist/errors/cleanup-registry.d.ts +64 -0
- package/dist/errors/cleanup-registry.d.ts.map +1 -0
- package/dist/errors/cleanup-registry.js +141 -0
- package/dist/errors/cleanup-registry.js.map +1 -0
- package/dist/errors/error-handler.d.ts +45 -0
- package/dist/errors/error-handler.d.ts.map +1 -0
- package/dist/errors/error-handler.js +150 -0
- package/dist/errors/error-handler.js.map +1 -0
- package/dist/errors/error-types.d.ts +102 -0
- package/dist/errors/error-types.d.ts.map +1 -0
- package/dist/errors/error-types.js +158 -0
- package/dist/errors/error-types.js.map +1 -0
- package/dist/errors/exit-codes.d.ts +49 -0
- package/dist/errors/exit-codes.d.ts.map +1 -0
- package/dist/errors/exit-codes.js +72 -0
- package/dist/errors/exit-codes.js.map +1 -0
- package/dist/errors/index.d.ts +29 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +62 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/glmt/glmt-transformer.d.ts +29 -248
- package/dist/glmt/glmt-transformer.d.ts.map +1 -1
- package/dist/glmt/glmt-transformer.js +63 -718
- package/dist/glmt/glmt-transformer.js.map +1 -1
- package/dist/glmt/index.d.ts +14 -0
- package/dist/glmt/index.d.ts.map +1 -0
- package/dist/glmt/index.js +41 -0
- package/dist/glmt/index.js.map +1 -0
- package/dist/glmt/pipeline/content-transformer.d.ts +39 -0
- package/dist/glmt/pipeline/content-transformer.d.ts.map +1 -0
- package/dist/glmt/pipeline/content-transformer.js +162 -0
- package/dist/glmt/pipeline/content-transformer.js.map +1 -0
- package/dist/glmt/pipeline/index.d.ts +12 -0
- package/dist/glmt/pipeline/index.d.ts.map +1 -0
- package/dist/glmt/pipeline/index.js +20 -0
- package/dist/glmt/pipeline/index.js.map +1 -0
- package/dist/glmt/pipeline/request-transformer.d.ts +31 -0
- package/dist/glmt/pipeline/request-transformer.d.ts.map +1 -0
- package/dist/glmt/pipeline/request-transformer.js +116 -0
- package/dist/glmt/pipeline/request-transformer.js.map +1 -0
- package/dist/glmt/pipeline/response-builder.d.ts +52 -0
- package/dist/glmt/pipeline/response-builder.d.ts.map +1 -0
- package/dist/glmt/pipeline/response-builder.js +205 -0
- package/dist/glmt/pipeline/response-builder.js.map +1 -0
- package/dist/glmt/pipeline/stream-parser.d.ts +59 -0
- package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -0
- package/dist/glmt/pipeline/stream-parser.js +241 -0
- package/dist/glmt/pipeline/stream-parser.js.map +1 -0
- package/dist/glmt/pipeline/tool-call-handler.d.ts +22 -0
- package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -0
- package/dist/glmt/pipeline/tool-call-handler.js +87 -0
- package/dist/glmt/pipeline/tool-call-handler.js.map +1 -0
- package/dist/glmt/pipeline/types.d.ts +159 -0
- package/dist/glmt/pipeline/types.d.ts.map +1 -0
- package/dist/glmt/pipeline/types.js +6 -0
- package/dist/glmt/pipeline/types.js.map +1 -0
- package/dist/management/checks/cliproxy-check.d.ts +37 -0
- package/dist/management/checks/cliproxy-check.d.ts.map +1 -0
- package/dist/management/checks/cliproxy-check.js +187 -0
- package/dist/management/checks/cliproxy-check.js.map +1 -0
- package/dist/management/checks/config-check.d.ts +27 -0
- package/dist/management/checks/config-check.d.ts.map +1 -0
- package/dist/management/checks/config-check.js +158 -0
- package/dist/management/checks/config-check.js.map +1 -0
- package/dist/management/checks/env-check.d.ts +17 -0
- package/dist/management/checks/env-check.d.ts.map +1 -0
- package/dist/management/checks/env-check.js +71 -0
- package/dist/management/checks/env-check.js.map +1 -0
- package/dist/management/checks/index.d.ts +12 -0
- package/dist/management/checks/index.d.ts.map +1 -0
- package/dist/management/checks/index.js +48 -0
- package/dist/management/checks/index.js.map +1 -0
- package/dist/management/checks/oauth-check.d.ts +16 -0
- package/dist/management/checks/oauth-check.d.ts.map +1 -0
- package/dist/management/checks/oauth-check.js +68 -0
- package/dist/management/checks/oauth-check.js.map +1 -0
- package/dist/management/checks/profile-check.d.ts +36 -0
- package/dist/management/checks/profile-check.d.ts.map +1 -0
- package/dist/management/checks/profile-check.js +165 -0
- package/dist/management/checks/profile-check.js.map +1 -0
- package/dist/management/checks/symlink-check.d.ts +30 -0
- package/dist/management/checks/symlink-check.d.ts.map +1 -0
- package/dist/management/checks/symlink-check.js +204 -0
- package/dist/management/checks/symlink-check.js.map +1 -0
- package/dist/management/checks/system-check.d.ts +25 -0
- package/dist/management/checks/system-check.d.ts.map +1 -0
- package/dist/management/checks/system-check.js +136 -0
- package/dist/management/checks/system-check.js.map +1 -0
- package/dist/management/checks/types.d.ts +64 -0
- package/dist/management/checks/types.d.ts.map +1 -0
- package/dist/management/checks/types.js +63 -0
- package/dist/management/checks/types.js.map +1 -0
- package/dist/management/doctor.d.ts +3 -92
- package/dist/management/doctor.d.ts.map +1 -1
- package/dist/management/doctor.js +15 -831
- package/dist/management/doctor.js.map +1 -1
- package/dist/management/index.d.ts +15 -0
- package/dist/management/index.d.ts.map +1 -0
- package/dist/management/index.js +56 -0
- package/dist/management/index.js.map +1 -0
- package/dist/management/repair/auto-repair.d.ts +13 -0
- package/dist/management/repair/auto-repair.d.ts.map +1 -0
- package/dist/management/repair/auto-repair.js +170 -0
- package/dist/management/repair/auto-repair.js.map +1 -0
- package/dist/management/repair/index.d.ts +5 -0
- package/dist/management/repair/index.d.ts.map +1 -0
- package/dist/management/repair/index.js +9 -0
- package/dist/management/repair/index.js.map +1 -0
- package/dist/types/delegation.d.ts +1 -13
- package/dist/types/delegation.d.ts.map +1 -1
- package/dist/types/utils.d.ts +27 -0
- package/dist/types/utils.d.ts.map +1 -1
- package/dist/ui/assets/{accounts-p1_nf0Jy.js → accounts--0JKEYYO.js} +1 -1
- package/dist/ui/assets/analytics-CX5PurM9.js +1 -0
- package/dist/ui/assets/api-D80tfZOx.js +1 -0
- package/dist/ui/assets/{card-CCDc-Mx9.js → card-B-DPlvgo.js} +1 -1
- package/dist/ui/assets/cliproxy-D4AoDTZB.js +3 -0
- package/dist/ui/assets/cliproxy-control-panel-CJ2CfYod.js +1 -0
- package/dist/ui/assets/{code-editor-Br9x-r-E.js → code-editor-DIj6qdUG.js} +1 -1
- package/dist/ui/assets/confirm-dialog-DZkzZLrs.js +1 -0
- package/dist/ui/assets/copilot-Q9tyCgYD.js +4 -0
- package/dist/ui/assets/form-utils-DP6ILe7Z.js +20 -0
- package/dist/ui/assets/health-Cw76uZRy.js +1 -0
- package/dist/ui/assets/{icons-BOsxPbiD.js → icons-ZmwVoUeR.js} +1 -1
- package/dist/ui/assets/index-C1W0iP_Z.js +46 -0
- package/dist/ui/assets/index-It66SkKf.css +1 -0
- package/dist/ui/assets/{radix-ui-DFHQr9A5.js → radix-ui-CV3R9pD6.js} +3 -3
- package/dist/ui/assets/settings-CDdHW_gU.js +1 -0
- package/dist/ui/assets/{shared-BfYhSN4-.js → shared--pI8rTbP.js} +1 -1
- package/dist/ui/assets/{switch-CMk95lwf.js → switch-BP6SzLyZ.js} +1 -1
- package/dist/ui/assets/{tanstack-C4gT2P7V.js → tanstack-Df9bCj5R.js} +1 -1
- package/dist/ui/index.html +6 -6
- package/dist/utils/claude-spawner.d.ts +54 -0
- package/dist/utils/claude-spawner.d.ts.map +1 -0
- package/dist/utils/claude-spawner.js +118 -0
- package/dist/utils/claude-spawner.js.map +1 -0
- package/dist/utils/delegation-validator.d.ts +8 -4
- package/dist/utils/delegation-validator.d.ts.map +1 -1
- package/dist/utils/delegation-validator.js.map +1 -1
- package/dist/utils/helpers.d.ts +0 -11
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +1 -57
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +50 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/time.d.ts +10 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +27 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/ui/boxes.d.ts +24 -0
- package/dist/utils/ui/boxes.d.ts.map +1 -0
- package/dist/utils/ui/boxes.js +108 -0
- package/dist/utils/ui/boxes.js.map +1 -0
- package/dist/utils/ui/colors.d.ts +25 -0
- package/dist/utils/ui/colors.d.ts.map +1 -0
- package/dist/utils/ui/colors.js +70 -0
- package/dist/utils/ui/colors.js.map +1 -0
- package/dist/utils/ui/index.d.ts +51 -0
- package/dist/utils/ui/index.d.ts.map +1 -0
- package/dist/utils/ui/index.js +96 -0
- package/dist/utils/ui/index.js.map +1 -0
- package/dist/utils/ui/indicators.d.ts +23 -0
- package/dist/utils/ui/indicators.d.ts.map +1 -0
- package/dist/utils/ui/indicators.js +39 -0
- package/dist/utils/ui/indicators.js.map +1 -0
- package/dist/utils/ui/init.d.ts +30 -0
- package/dist/utils/ui/init.d.ts.map +1 -0
- package/dist/utils/ui/init.js +102 -0
- package/dist/utils/ui/init.js.map +1 -0
- package/dist/utils/ui/spinner.d.ts +13 -0
- package/dist/utils/ui/spinner.d.ts.map +1 -0
- package/dist/utils/ui/spinner.js +89 -0
- package/dist/utils/ui/spinner.js.map +1 -0
- package/dist/utils/ui/tables.d.ts +12 -0
- package/dist/utils/ui/tables.d.ts.map +1 -0
- package/dist/utils/ui/tables.js +69 -0
- package/dist/utils/ui/tables.js.map +1 -0
- package/dist/utils/ui/tasks.d.ts +26 -0
- package/dist/utils/ui/tasks.d.ts.map +1 -0
- package/dist/utils/ui/tasks.js +102 -0
- package/dist/utils/ui/tasks.js.map +1 -0
- package/dist/utils/ui/text.d.ts +24 -0
- package/dist/utils/ui/text.d.ts.map +1 -0
- package/dist/utils/ui/text.js +60 -0
- package/dist/utils/ui/text.js.map +1 -0
- package/dist/utils/ui/types.d.ts +36 -0
- package/dist/utils/ui/types.d.ts.map +1 -0
- package/dist/utils/ui/types.js +33 -0
- package/dist/utils/ui/types.js.map +1 -0
- package/dist/utils/ui.d.ts +3 -138
- package/dist/utils/ui.d.ts.map +1 -1
- package/dist/utils/ui.js +40 -567
- package/dist/utils/ui.js.map +1 -1
- package/dist/utils/websearch/gemini-cli.d.ts +36 -0
- package/dist/utils/websearch/gemini-cli.d.ts.map +1 -0
- package/dist/utils/websearch/gemini-cli.js +132 -0
- package/dist/utils/websearch/gemini-cli.js.map +1 -0
- package/dist/utils/websearch/grok-cli.d.ts +26 -0
- package/dist/utils/websearch/grok-cli.d.ts.map +1 -0
- package/dist/utils/websearch/grok-cli.js +81 -0
- package/dist/utils/websearch/grok-cli.js.map +1 -0
- package/dist/utils/websearch/hook-config.d.ts +21 -0
- package/dist/utils/websearch/hook-config.d.ts.map +1 -0
- package/dist/utils/websearch/hook-config.js +183 -0
- package/dist/utils/websearch/hook-config.js.map +1 -0
- package/dist/utils/websearch/hook-env.d.ts +16 -0
- package/dist/utils/websearch/hook-env.d.ts.map +1 -0
- package/dist/utils/websearch/hook-env.js +62 -0
- package/dist/utils/websearch/hook-env.js.map +1 -0
- package/dist/utils/websearch/hook-installer.d.ts +27 -0
- package/dist/utils/websearch/hook-installer.d.ts.map +1 -0
- package/dist/utils/websearch/hook-installer.js +141 -0
- package/dist/utils/websearch/hook-installer.js.map +1 -0
- package/dist/utils/websearch/index.d.ts +15 -0
- package/dist/utils/websearch/index.d.ts.map +1 -0
- package/dist/utils/websearch/index.js +44 -0
- package/dist/utils/websearch/index.js.map +1 -0
- package/dist/utils/websearch/opencode-cli.d.ts +26 -0
- package/dist/utils/websearch/opencode-cli.d.ts.map +1 -0
- package/dist/utils/websearch/opencode-cli.js +81 -0
- package/dist/utils/websearch/opencode-cli.js.map +1 -0
- package/dist/utils/websearch/status.d.ts +35 -0
- package/dist/utils/websearch/status.d.ts.map +1 -0
- package/dist/utils/websearch/status.js +185 -0
- package/dist/utils/websearch/status.js.map +1 -0
- package/dist/utils/websearch/types.d.ts +85 -0
- package/dist/utils/websearch/types.d.ts.map +1 -0
- package/dist/utils/websearch/types.js +10 -0
- package/dist/utils/websearch/types.js.map +1 -0
- package/dist/utils/websearch-manager.d.ts +7 -186
- package/dist/utils/websearch-manager.d.ts.map +1 -1
- package/dist/utils/websearch-manager.js +37 -710
- package/dist/utils/websearch-manager.js.map +1 -1
- package/dist/web-server/data-aggregator.d.ts +3 -51
- package/dist/web-server/data-aggregator.d.ts.map +1 -1
- package/dist/web-server/data-aggregator.js +18 -386
- package/dist/web-server/data-aggregator.js.map +1 -1
- package/dist/web-server/health/cliproxy-checks.d.ts +23 -0
- package/dist/web-server/health/cliproxy-checks.d.ts.map +1 -0
- package/dist/web-server/health/cliproxy-checks.js +145 -0
- package/dist/web-server/health/cliproxy-checks.js.map +1 -0
- package/dist/web-server/health/config-checks.d.ts +19 -0
- package/dist/web-server/health/config-checks.d.ts.map +1 -0
- package/dist/web-server/health/config-checks.js +174 -0
- package/dist/web-server/health/config-checks.js.map +1 -0
- package/dist/web-server/health/environment-checks.d.ts +11 -0
- package/dist/web-server/health/environment-checks.d.ts.map +1 -0
- package/dist/web-server/health/environment-checks.js +40 -0
- package/dist/web-server/health/environment-checks.js.map +1 -0
- package/dist/web-server/health/index.d.ts +13 -0
- package/dist/web-server/health/index.d.ts.map +1 -0
- package/dist/web-server/health/index.js +41 -0
- package/dist/web-server/health/index.js.map +1 -0
- package/dist/web-server/health/oauth-checks.d.ts +11 -0
- package/dist/web-server/health/oauth-checks.d.ts.map +1 -0
- package/dist/web-server/health/oauth-checks.js +34 -0
- package/dist/web-server/health/oauth-checks.js.map +1 -0
- package/dist/web-server/health/profile-checks.d.ts +19 -0
- package/dist/web-server/health/profile-checks.d.ts.map +1 -0
- package/dist/web-server/health/profile-checks.js +152 -0
- package/dist/web-server/health/profile-checks.js.map +1 -0
- package/dist/web-server/health/symlink-checks.d.ts +15 -0
- package/dist/web-server/health/symlink-checks.d.ts.map +1 -0
- package/dist/web-server/health/symlink-checks.js +173 -0
- package/dist/web-server/health/symlink-checks.js.map +1 -0
- package/dist/web-server/health/system-checks.d.ts +19 -0
- package/dist/web-server/health/system-checks.d.ts.map +1 -0
- package/dist/web-server/health/system-checks.js +127 -0
- package/dist/web-server/health/system-checks.js.map +1 -0
- package/dist/web-server/health/types.d.ts +34 -0
- package/dist/web-server/health/types.d.ts.map +1 -0
- package/dist/web-server/health/types.js +8 -0
- package/dist/web-server/health/types.js.map +1 -0
- package/dist/web-server/health/websearch-checks.d.ts +11 -0
- package/dist/web-server/health/websearch-checks.d.ts.map +1 -0
- package/dist/web-server/health/websearch-checks.js +53 -0
- package/dist/web-server/health/websearch-checks.js.map +1 -0
- package/dist/web-server/health-service.d.ts +4 -30
- package/dist/web-server/health-service.d.ts.map +1 -1
- package/dist/web-server/health-service.js +28 -695
- package/dist/web-server/health-service.js.map +1 -1
- package/dist/web-server/index.d.ts.map +1 -1
- package/dist/web-server/index.js +2 -5
- package/dist/web-server/index.js.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts +6 -0
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-auth-routes.js +202 -0
- package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts +6 -0
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes.js +253 -0
- package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -0
- package/dist/web-server/routes/config-routes.d.ts +6 -0
- package/dist/web-server/routes/config-routes.d.ts.map +1 -0
- package/dist/web-server/routes/config-routes.js +145 -0
- package/dist/web-server/routes/config-routes.js.map +1 -0
- package/dist/web-server/routes/copilot-routes.d.ts +6 -0
- package/dist/web-server/routes/copilot-routes.d.ts.map +1 -0
- package/dist/web-server/routes/copilot-routes.js +195 -0
- package/dist/web-server/routes/copilot-routes.js.map +1 -0
- package/dist/web-server/routes/copilot-settings-routes.d.ts +6 -0
- package/dist/web-server/routes/copilot-settings-routes.d.ts.map +1 -0
- package/dist/web-server/routes/copilot-settings-routes.js +122 -0
- package/dist/web-server/routes/copilot-settings-routes.js.map +1 -0
- package/dist/web-server/routes/health-routes.d.ts +6 -0
- package/dist/web-server/routes/health-routes.d.ts.map +1 -0
- package/dist/web-server/routes/health-routes.js +30 -0
- package/dist/web-server/routes/health-routes.js.map +1 -0
- package/dist/web-server/routes/index.d.ts +8 -0
- package/dist/web-server/routes/index.d.ts.map +1 -0
- package/dist/web-server/routes/index.js +54 -0
- package/dist/web-server/routes/index.js.map +1 -0
- package/dist/web-server/routes/misc-routes.d.ts +6 -0
- package/dist/web-server/routes/misc-routes.d.ts.map +1 -0
- package/dist/web-server/routes/misc-routes.js +219 -0
- package/dist/web-server/routes/misc-routes.js.map +1 -0
- package/dist/web-server/routes/profile-routes.d.ts +6 -0
- package/dist/web-server/routes/profile-routes.d.ts.map +1 -0
- package/dist/web-server/routes/profile-routes.js +164 -0
- package/dist/web-server/routes/profile-routes.js.map +1 -0
- package/dist/web-server/routes/provider-routes.d.ts +6 -0
- package/dist/web-server/routes/provider-routes.d.ts.map +1 -0
- package/dist/web-server/routes/provider-routes.js +146 -0
- package/dist/web-server/routes/provider-routes.js.map +1 -0
- package/dist/web-server/routes/route-helpers.d.ts +55 -0
- package/dist/web-server/routes/route-helpers.d.ts.map +1 -0
- package/dist/web-server/routes/route-helpers.js +201 -0
- package/dist/web-server/routes/route-helpers.js.map +1 -0
- package/dist/web-server/routes/settings-routes.d.ts +6 -0
- package/dist/web-server/routes/settings-routes.d.ts.map +1 -0
- package/dist/web-server/routes/settings-routes.js +207 -0
- package/dist/web-server/routes/settings-routes.js.map +1 -0
- package/dist/web-server/routes/variant-routes.d.ts +6 -0
- package/dist/web-server/routes/variant-routes.d.ts.map +1 -0
- package/dist/web-server/routes/variant-routes.js +158 -0
- package/dist/web-server/routes/variant-routes.js.map +1 -0
- package/dist/web-server/routes/websearch-routes.d.ts +6 -0
- package/dist/web-server/routes/websearch-routes.d.ts.map +1 -0
- package/dist/web-server/routes/websearch-routes.js +130 -0
- package/dist/web-server/routes/websearch-routes.js.map +1 -0
- package/dist/web-server/services/index.d.ts +7 -0
- package/dist/web-server/services/index.d.ts.map +1 -0
- package/dist/web-server/services/index.js +21 -0
- package/dist/web-server/services/index.js.map +1 -0
- package/dist/web-server/services/usage-aggregator.d.ts +7 -0
- package/dist/web-server/services/usage-aggregator.d.ts.map +1 -0
- package/dist/web-server/services/usage-aggregator.js +23 -0
- package/dist/web-server/services/usage-aggregator.js.map +1 -0
- package/dist/web-server/usage/aggregator.d.ts +54 -0
- package/dist/web-server/usage/aggregator.d.ts.map +1 -0
- package/dist/web-server/usage/aggregator.js +470 -0
- package/dist/web-server/usage/aggregator.js.map +1 -0
- package/dist/web-server/usage/data-aggregator.d.ts +55 -0
- package/dist/web-server/usage/data-aggregator.d.ts.map +1 -0
- package/dist/web-server/usage/data-aggregator.js +391 -0
- package/dist/web-server/usage/data-aggregator.js.map +1 -0
- package/dist/web-server/usage/disk-cache.d.ts +46 -0
- package/dist/web-server/usage/disk-cache.d.ts.map +1 -0
- package/dist/web-server/usage/disk-cache.js +162 -0
- package/dist/web-server/usage/disk-cache.js.map +1 -0
- package/dist/web-server/usage/handlers.d.ts +50 -0
- package/dist/web-server/usage/handlers.d.ts.map +1 -0
- package/dist/web-server/usage/handlers.js +524 -0
- package/dist/web-server/usage/handlers.js.map +1 -0
- package/dist/web-server/usage/index.d.ts +12 -0
- package/dist/web-server/usage/index.d.ts.map +1 -0
- package/dist/web-server/usage/index.js +54 -0
- package/dist/web-server/usage/index.js.map +1 -0
- package/dist/web-server/usage/routes.d.ts +11 -0
- package/dist/web-server/usage/routes.d.ts.map +1 -0
- package/dist/web-server/usage/routes.js +37 -0
- package/dist/web-server/usage/routes.js.map +1 -0
- package/dist/web-server/usage/types.d.ts +119 -0
- package/dist/web-server/usage/types.d.ts.map +1 -0
- package/dist/web-server/usage/types.js +9 -0
- package/dist/web-server/usage/types.js.map +1 -0
- package/dist/web-server/usage-disk-cache.d.ts +3 -42
- package/dist/web-server/usage-disk-cache.d.ts.map +1 -1
- package/dist/web-server/usage-disk-cache.js +5 -144
- package/dist/web-server/usage-disk-cache.js.map +1 -1
- package/dist/web-server/usage-routes.d.ts +3 -31
- package/dist/web-server/usage-routes.d.ts.map +1 -1
- package/dist/web-server/usage-routes.js +8 -1139
- package/dist/web-server/usage-routes.js.map +1 -1
- package/dist/web-server/usage-types.d.ts +3 -115
- package/dist/web-server/usage-types.d.ts.map +1 -1
- package/dist/web-server/usage-types.js +17 -3
- package/dist/web-server/usage-types.js.map +1 -1
- package/package.json +1 -1
- package/scripts/dev-release.sh +113 -0
- package/dist/ui/assets/analytics-D1k2nYcF.js +0 -1
- package/dist/ui/assets/api-D9VVmZ1j.js +0 -1
- package/dist/ui/assets/cliproxy-CTt_Nsft.js +0 -1
- package/dist/ui/assets/cliproxy-control-panel-DKMAi4_4.js +0 -1
- package/dist/ui/assets/copilot-C6F8PT_L.js +0 -4
- package/dist/ui/assets/form-utils-BuXDJb0w.js +0 -20
- package/dist/ui/assets/health-DiAvJaSn.js +0 -1
- package/dist/ui/assets/index-Brq6EBKZ.css +0 -1
- package/dist/ui/assets/index-ByU8ZhED.js +0 -48
- package/dist/ui/assets/settings-CEomZLGl.js +0 -1
- package/dist/web-server/routes.d.ts +0 -7
- package/dist/web-server/routes.d.ts.map +0 -1
- package/dist/web-server/routes.js +0 -1891
- package/dist/web-server/routes.js.map +0 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Types and Configurations
|
|
3
|
+
*
|
|
4
|
+
* Type definitions and OAuth configurations for CLIProxy authentication.
|
|
5
|
+
*/
|
|
6
|
+
import { CLIProxyProvider } from '../types';
|
|
7
|
+
import { AccountInfo } from '../account-manager';
|
|
8
|
+
/**
|
|
9
|
+
* OAuth callback ports used by CLIProxyAPI (hardcoded in binary)
|
|
10
|
+
* See: https://github.com/router-for-me/CLIProxyAPI/tree/main/internal/auth
|
|
11
|
+
*
|
|
12
|
+
* OAuth flow types per provider:
|
|
13
|
+
* - Gemini: Authorization Code Flow with local callback server on port 8085
|
|
14
|
+
* - Codex: Authorization Code Flow with local callback server on port 1455
|
|
15
|
+
* - Agy: Authorization Code Flow with local callback server on port 51121
|
|
16
|
+
* - Qwen: Device Code Flow (polling-based, NO callback port needed)
|
|
17
|
+
*/
|
|
18
|
+
export declare const OAUTH_CALLBACK_PORTS: Partial<Record<CLIProxyProvider, number>>;
|
|
19
|
+
/**
|
|
20
|
+
* Auth status for a provider
|
|
21
|
+
*/
|
|
22
|
+
export interface AuthStatus {
|
|
23
|
+
/** Provider name */
|
|
24
|
+
provider: CLIProxyProvider;
|
|
25
|
+
/** Whether authentication exists */
|
|
26
|
+
authenticated: boolean;
|
|
27
|
+
/** Path to token directory */
|
|
28
|
+
tokenDir: string;
|
|
29
|
+
/** Token file paths found */
|
|
30
|
+
tokenFiles: string[];
|
|
31
|
+
/** When last authenticated (if known) */
|
|
32
|
+
lastAuth?: Date;
|
|
33
|
+
/** Accounts registered for this provider (multi-account support) */
|
|
34
|
+
accounts: AccountInfo[];
|
|
35
|
+
/** Default account ID */
|
|
36
|
+
defaultAccount?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* OAuth config for each provider
|
|
40
|
+
*/
|
|
41
|
+
export interface ProviderOAuthConfig {
|
|
42
|
+
/** Provider identifier */
|
|
43
|
+
provider: CLIProxyProvider;
|
|
44
|
+
/** Display name */
|
|
45
|
+
displayName: string;
|
|
46
|
+
/** OAuth authorization URL (for manual flow) */
|
|
47
|
+
authUrl: string;
|
|
48
|
+
/** Scopes required */
|
|
49
|
+
scopes: string[];
|
|
50
|
+
/** CLI flag for auth */
|
|
51
|
+
authFlag: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* OAuth configurations per provider
|
|
55
|
+
* Note: CLIProxyAPI handles actual OAuth - these are for display/manual flow
|
|
56
|
+
*/
|
|
57
|
+
export declare const OAUTH_CONFIGS: Record<CLIProxyProvider, ProviderOAuthConfig>;
|
|
58
|
+
/**
|
|
59
|
+
* Provider-specific auth file prefixes (fallback detection)
|
|
60
|
+
* CLIProxyAPI names auth files with provider prefix (e.g., "antigravity-user@email.json")
|
|
61
|
+
* Note: Gemini tokens may NOT have prefix - CLIProxyAPI uses {email}-{projectID}.json format
|
|
62
|
+
*/
|
|
63
|
+
export declare const PROVIDER_AUTH_PREFIXES: Record<CLIProxyProvider, string[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Provider type values inside token JSON files
|
|
66
|
+
* CLIProxyAPI sets "type" field in token JSON (e.g., {"type": "gemini"})
|
|
67
|
+
*/
|
|
68
|
+
export declare const PROVIDER_TYPE_VALUES: Record<CLIProxyProvider, string[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Get OAuth config for provider
|
|
71
|
+
*/
|
|
72
|
+
export declare function getOAuthConfig(provider: CLIProxyProvider): ProviderOAuthConfig;
|
|
73
|
+
/**
|
|
74
|
+
* OAuth options for triggerOAuth
|
|
75
|
+
*/
|
|
76
|
+
export interface OAuthOptions {
|
|
77
|
+
verbose?: boolean;
|
|
78
|
+
headless?: boolean;
|
|
79
|
+
account?: string;
|
|
80
|
+
add?: boolean;
|
|
81
|
+
nickname?: string;
|
|
82
|
+
/** If true, triggered from Web UI (enables project selection prompt) */
|
|
83
|
+
fromUI?: boolean;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=auth-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-types.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/auth-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAK1E,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,oCAAoC;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,oEAAoE;IACpE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,yBAAyB;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0BAA0B;IAC1B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAoCvE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAMrE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAMnE,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,mBAAmB,CAM9E;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auth Types and Configurations
|
|
4
|
+
*
|
|
5
|
+
* Type definitions and OAuth configurations for CLIProxy authentication.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.getOAuthConfig = exports.PROVIDER_TYPE_VALUES = exports.PROVIDER_AUTH_PREFIXES = exports.OAUTH_CONFIGS = exports.OAUTH_CALLBACK_PORTS = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* OAuth callback ports used by CLIProxyAPI (hardcoded in binary)
|
|
11
|
+
* See: https://github.com/router-for-me/CLIProxyAPI/tree/main/internal/auth
|
|
12
|
+
*
|
|
13
|
+
* OAuth flow types per provider:
|
|
14
|
+
* - Gemini: Authorization Code Flow with local callback server on port 8085
|
|
15
|
+
* - Codex: Authorization Code Flow with local callback server on port 1455
|
|
16
|
+
* - Agy: Authorization Code Flow with local callback server on port 51121
|
|
17
|
+
* - Qwen: Device Code Flow (polling-based, NO callback port needed)
|
|
18
|
+
*/
|
|
19
|
+
exports.OAUTH_CALLBACK_PORTS = {
|
|
20
|
+
gemini: 8085,
|
|
21
|
+
// codex uses 1455
|
|
22
|
+
// agy uses 51121
|
|
23
|
+
// qwen uses Device Code Flow - no callback port needed
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* OAuth configurations per provider
|
|
27
|
+
* Note: CLIProxyAPI handles actual OAuth - these are for display/manual flow
|
|
28
|
+
*/
|
|
29
|
+
exports.OAUTH_CONFIGS = {
|
|
30
|
+
gemini: {
|
|
31
|
+
provider: 'gemini',
|
|
32
|
+
displayName: 'Google Gemini',
|
|
33
|
+
authUrl: 'https://accounts.google.com/o/oauth2/v2/auth',
|
|
34
|
+
scopes: ['https://www.googleapis.com/auth/generative-language'],
|
|
35
|
+
authFlag: '--login',
|
|
36
|
+
},
|
|
37
|
+
codex: {
|
|
38
|
+
provider: 'codex',
|
|
39
|
+
displayName: 'Codex',
|
|
40
|
+
authUrl: 'https://auth.openai.com/authorize',
|
|
41
|
+
scopes: ['openid', 'profile'],
|
|
42
|
+
authFlag: '--codex-login',
|
|
43
|
+
},
|
|
44
|
+
agy: {
|
|
45
|
+
provider: 'agy',
|
|
46
|
+
displayName: 'Antigravity',
|
|
47
|
+
authUrl: 'https://antigravity.ai/oauth/authorize',
|
|
48
|
+
scopes: ['api'],
|
|
49
|
+
authFlag: '--antigravity-login',
|
|
50
|
+
},
|
|
51
|
+
qwen: {
|
|
52
|
+
provider: 'qwen',
|
|
53
|
+
displayName: 'Qwen Code',
|
|
54
|
+
authUrl: 'https://chat.qwen.ai/api/v1/oauth2/device/code',
|
|
55
|
+
scopes: ['openid', 'profile', 'email', 'model.completion'],
|
|
56
|
+
authFlag: '--qwen-login',
|
|
57
|
+
},
|
|
58
|
+
iflow: {
|
|
59
|
+
provider: 'iflow',
|
|
60
|
+
displayName: 'iFlow',
|
|
61
|
+
authUrl: 'https://iflow.cn/oauth',
|
|
62
|
+
scopes: ['phone', 'profile', 'email'],
|
|
63
|
+
authFlag: '--iflow-login',
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Provider-specific auth file prefixes (fallback detection)
|
|
68
|
+
* CLIProxyAPI names auth files with provider prefix (e.g., "antigravity-user@email.json")
|
|
69
|
+
* Note: Gemini tokens may NOT have prefix - CLIProxyAPI uses {email}-{projectID}.json format
|
|
70
|
+
*/
|
|
71
|
+
exports.PROVIDER_AUTH_PREFIXES = {
|
|
72
|
+
gemini: ['gemini-', 'google-'],
|
|
73
|
+
codex: ['codex-', 'openai-'],
|
|
74
|
+
agy: ['antigravity-', 'agy-'],
|
|
75
|
+
qwen: ['qwen-'],
|
|
76
|
+
iflow: ['iflow-'],
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Provider type values inside token JSON files
|
|
80
|
+
* CLIProxyAPI sets "type" field in token JSON (e.g., {"type": "gemini"})
|
|
81
|
+
*/
|
|
82
|
+
exports.PROVIDER_TYPE_VALUES = {
|
|
83
|
+
gemini: ['gemini'],
|
|
84
|
+
codex: ['codex'],
|
|
85
|
+
agy: ['antigravity'],
|
|
86
|
+
qwen: ['qwen'],
|
|
87
|
+
iflow: ['iflow'],
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Get OAuth config for provider
|
|
91
|
+
*/
|
|
92
|
+
function getOAuthConfig(provider) {
|
|
93
|
+
const config = exports.OAUTH_CONFIGS[provider];
|
|
94
|
+
if (!config) {
|
|
95
|
+
throw new Error(`Unknown provider: ${provider}`);
|
|
96
|
+
}
|
|
97
|
+
return config;
|
|
98
|
+
}
|
|
99
|
+
exports.getOAuthConfig = getOAuthConfig;
|
|
100
|
+
//# sourceMappingURL=auth-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-types.js","sourceRoot":"","sources":["../../../src/cliproxy/auth/auth-types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAKH;;;;;;;;;GASG;AACU,QAAA,oBAAoB,GAA8C;IAC7E,MAAM,EAAE,IAAI;IACZ,kBAAkB;IAClB,iBAAiB;IACjB,uDAAuD;CACxD,CAAC;AAsCF;;;GAGG;AACU,QAAA,aAAa,GAAkD;IAC1E,MAAM,EAAE;QACN,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,eAAe;QAC5B,OAAO,EAAE,8CAA8C;QACvD,MAAM,EAAE,CAAC,qDAAqD,CAAC;QAC/D,QAAQ,EAAE,SAAS;KACpB;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,mCAAmC;QAC5C,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;QAC7B,QAAQ,EAAE,eAAe;KAC1B;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,aAAa;QAC1B,OAAO,EAAE,wCAAwC;QACjD,MAAM,EAAE,CAAC,KAAK,CAAC;QACf,QAAQ,EAAE,qBAAqB;KAChC;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,gDAAgD;QACzD,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,CAAC;QAC1D,QAAQ,EAAE,cAAc;KACzB;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,wBAAwB;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;QACrC,QAAQ,EAAE,eAAe;KAC1B;CACF,CAAC;AAEF;;;;GAIG;AACU,QAAA,sBAAsB,GAAuC;IACxE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC5B,GAAG,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC;IAC7B,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,KAAK,EAAE,CAAC,QAAQ,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACU,QAAA,oBAAoB,GAAuC;IACtE,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,GAAG,EAAE,CAAC,aAAa,CAAC;IACpB,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,OAAO,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,SAAgB,cAAc,CAAC,QAA0B;IACvD,MAAM,MAAM,GAAG,qBAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAND,wCAMC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Detector for CLIProxyAPI
|
|
3
|
+
*
|
|
4
|
+
* Detects headless environments and manages OAuth callback ports.
|
|
5
|
+
*/
|
|
6
|
+
import { CLIProxyProvider } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Detect if running in a headless environment (no browser available)
|
|
9
|
+
*
|
|
10
|
+
* IMPROVED: Avoids false positives on Windows desktop environments
|
|
11
|
+
* where isTTY may be undefined due to terminal wrapper behavior.
|
|
12
|
+
*
|
|
13
|
+
* Case study: Vietnamese Windows users reported "command hangs" because
|
|
14
|
+
* their terminal (PowerShell via npm) didn't set isTTY correctly.
|
|
15
|
+
*/
|
|
16
|
+
export declare function isHeadlessEnvironment(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Kill any process using a specific port
|
|
19
|
+
* Used to free OAuth callback port before authentication
|
|
20
|
+
*/
|
|
21
|
+
export declare function killProcessOnPort(port: number, verbose: boolean): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Get platform-specific troubleshooting for OAuth timeout
|
|
24
|
+
*/
|
|
25
|
+
export declare function getTimeoutTroubleshooting(provider: CLIProxyProvider, port: number | null): string[];
|
|
26
|
+
/**
|
|
27
|
+
* Display a single step status line
|
|
28
|
+
*/
|
|
29
|
+
export declare function showStep(step: number, total: number, status: 'ok' | 'fail' | 'progress', message: string): void;
|
|
30
|
+
//# sourceMappingURL=environment-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-detector.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/environment-detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAqC/C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAmCzE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,GAClB,MAAM,EAAE,CAcV;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,UAAU,EAClC,OAAO,EAAE,MAAM,GACd,IAAI,CAGN"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Environment Detector for CLIProxyAPI
|
|
4
|
+
*
|
|
5
|
+
* Detects headless environments and manages OAuth callback ports.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.showStep = exports.getTimeoutTroubleshooting = exports.killProcessOnPort = exports.isHeadlessEnvironment = void 0;
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
/**
|
|
11
|
+
* Detect if running in a headless environment (no browser available)
|
|
12
|
+
*
|
|
13
|
+
* IMPROVED: Avoids false positives on Windows desktop environments
|
|
14
|
+
* where isTTY may be undefined due to terminal wrapper behavior.
|
|
15
|
+
*
|
|
16
|
+
* Case study: Vietnamese Windows users reported "command hangs" because
|
|
17
|
+
* their terminal (PowerShell via npm) didn't set isTTY correctly.
|
|
18
|
+
*/
|
|
19
|
+
function isHeadlessEnvironment() {
|
|
20
|
+
// SSH session - always headless
|
|
21
|
+
if (process.env.SSH_TTY || process.env.SSH_CLIENT || process.env.SSH_CONNECTION) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
// No display on Linux (X11/Wayland) - headless
|
|
25
|
+
if (process.platform === 'linux' && !process.env.DISPLAY && !process.env.WAYLAND_DISPLAY) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
// Windows desktop - NEVER headless unless SSH (already checked above)
|
|
29
|
+
// This fixes false positive where Windows npm wrappers don't set isTTY correctly
|
|
30
|
+
// Windows desktop environments always have browser capability
|
|
31
|
+
if (process.platform === 'win32') {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
// macOS - check for proper terminal
|
|
35
|
+
if (process.platform === 'darwin') {
|
|
36
|
+
// Non-interactive stdin on macOS means likely piped/scripted
|
|
37
|
+
if (!process.stdin.isTTY) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
// Linux with display - check TTY
|
|
43
|
+
if (process.platform === 'linux') {
|
|
44
|
+
if (!process.stdin.isTTY) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
// Default fallback for unknown platforms
|
|
50
|
+
return !process.stdin.isTTY;
|
|
51
|
+
}
|
|
52
|
+
exports.isHeadlessEnvironment = isHeadlessEnvironment;
|
|
53
|
+
/**
|
|
54
|
+
* Kill any process using a specific port
|
|
55
|
+
* Used to free OAuth callback port before authentication
|
|
56
|
+
*/
|
|
57
|
+
function killProcessOnPort(port, verbose) {
|
|
58
|
+
try {
|
|
59
|
+
if (process.platform === 'win32') {
|
|
60
|
+
// Windows: use netstat + taskkill
|
|
61
|
+
const result = (0, child_process_1.execSync)(`netstat -ano | findstr :${port}`, {
|
|
62
|
+
encoding: 'utf-8',
|
|
63
|
+
stdio: 'pipe',
|
|
64
|
+
});
|
|
65
|
+
const lines = result.trim().split('\n');
|
|
66
|
+
for (const line of lines) {
|
|
67
|
+
const parts = line.trim().split(/\s+/);
|
|
68
|
+
const pid = parts[parts.length - 1];
|
|
69
|
+
if (pid && /^\d+$/.test(pid)) {
|
|
70
|
+
(0, child_process_1.execSync)(`taskkill /F /PID ${pid}`, { stdio: 'pipe' });
|
|
71
|
+
if (verbose)
|
|
72
|
+
console.error(`[auth] Killed process ${pid} on port ${port}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// Unix: use lsof + kill
|
|
79
|
+
const result = (0, child_process_1.execSync)(`lsof -ti:${port}`, { encoding: 'utf-8', stdio: 'pipe' });
|
|
80
|
+
const pids = result
|
|
81
|
+
.trim()
|
|
82
|
+
.split('\n')
|
|
83
|
+
.filter((p) => p);
|
|
84
|
+
for (const pid of pids) {
|
|
85
|
+
(0, child_process_1.execSync)(`kill -9 ${pid}`, { stdio: 'pipe' });
|
|
86
|
+
if (verbose)
|
|
87
|
+
console.error(`[auth] Killed process ${pid} on port ${port}`);
|
|
88
|
+
}
|
|
89
|
+
return pids.length > 0;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// No process on port or command failed - that's fine
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.killProcessOnPort = killProcessOnPort;
|
|
98
|
+
/**
|
|
99
|
+
* Get platform-specific troubleshooting for OAuth timeout
|
|
100
|
+
*/
|
|
101
|
+
function getTimeoutTroubleshooting(provider, port) {
|
|
102
|
+
const lines = [];
|
|
103
|
+
lines.push('');
|
|
104
|
+
lines.push('TROUBLESHOOTING:');
|
|
105
|
+
lines.push(' 1. Check browser completed auth (should show success page)');
|
|
106
|
+
if (port) {
|
|
107
|
+
lines.push(` 2. Check for port conflicts: lsof -ti:${port} or ss -tlnp | grep ${port}`);
|
|
108
|
+
lines.push(` 3. Try: ccs ${provider} --auth --verbose`);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
lines.push(` 2. Try: ccs ${provider} --auth --verbose`);
|
|
112
|
+
}
|
|
113
|
+
return lines;
|
|
114
|
+
}
|
|
115
|
+
exports.getTimeoutTroubleshooting = getTimeoutTroubleshooting;
|
|
116
|
+
/**
|
|
117
|
+
* Display a single step status line
|
|
118
|
+
*/
|
|
119
|
+
function showStep(step, total, status, message) {
|
|
120
|
+
const statusIcon = status === 'ok' ? '[OK]' : status === 'fail' ? '[X]' : '[..]';
|
|
121
|
+
console.log(`${statusIcon} [${step}/${total}] ${message}`);
|
|
122
|
+
}
|
|
123
|
+
exports.showStep = showStep;
|
|
124
|
+
//# sourceMappingURL=environment-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-detector.js","sourceRoot":"","sources":["../../../src/cliproxy/auth/environment-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Module - Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all auth-related functionality from submodules.
|
|
5
|
+
*/
|
|
6
|
+
export type { AuthStatus, ProviderOAuthConfig, OAuthOptions } from './auth-types';
|
|
7
|
+
export { OAUTH_CALLBACK_PORTS, OAUTH_CONFIGS, PROVIDER_AUTH_PREFIXES, PROVIDER_TYPE_VALUES, getOAuthConfig, } from './auth-types';
|
|
8
|
+
export { getProviderTokenDir, isTokenFileForProvider, isAuthenticated, getAuthStatus, getAllAuthStatus, clearAuth, registerAccountFromToken, displayAuthStatus, } from './token-manager';
|
|
9
|
+
export { isHeadlessEnvironment, killProcessOnPort, getTimeoutTroubleshooting, showStep, } from './environment-detector';
|
|
10
|
+
export { triggerOAuth, ensureAuth } from './oauth-handler';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,QAAQ,GACT,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Auth Module - Barrel Export
|
|
4
|
+
*
|
|
5
|
+
* Re-exports all auth-related functionality from submodules.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.ensureAuth = exports.triggerOAuth = exports.showStep = exports.getTimeoutTroubleshooting = exports.killProcessOnPort = exports.isHeadlessEnvironment = exports.displayAuthStatus = exports.registerAccountFromToken = exports.clearAuth = exports.getAllAuthStatus = exports.getAuthStatus = exports.isAuthenticated = exports.isTokenFileForProvider = exports.getProviderTokenDir = exports.getOAuthConfig = exports.PROVIDER_TYPE_VALUES = exports.PROVIDER_AUTH_PREFIXES = exports.OAUTH_CONFIGS = exports.OAUTH_CALLBACK_PORTS = void 0;
|
|
9
|
+
var auth_types_1 = require("./auth-types");
|
|
10
|
+
Object.defineProperty(exports, "OAUTH_CALLBACK_PORTS", { enumerable: true, get: function () { return auth_types_1.OAUTH_CALLBACK_PORTS; } });
|
|
11
|
+
Object.defineProperty(exports, "OAUTH_CONFIGS", { enumerable: true, get: function () { return auth_types_1.OAUTH_CONFIGS; } });
|
|
12
|
+
Object.defineProperty(exports, "PROVIDER_AUTH_PREFIXES", { enumerable: true, get: function () { return auth_types_1.PROVIDER_AUTH_PREFIXES; } });
|
|
13
|
+
Object.defineProperty(exports, "PROVIDER_TYPE_VALUES", { enumerable: true, get: function () { return auth_types_1.PROVIDER_TYPE_VALUES; } });
|
|
14
|
+
Object.defineProperty(exports, "getOAuthConfig", { enumerable: true, get: function () { return auth_types_1.getOAuthConfig; } });
|
|
15
|
+
// Token management
|
|
16
|
+
var token_manager_1 = require("./token-manager");
|
|
17
|
+
Object.defineProperty(exports, "getProviderTokenDir", { enumerable: true, get: function () { return token_manager_1.getProviderTokenDir; } });
|
|
18
|
+
Object.defineProperty(exports, "isTokenFileForProvider", { enumerable: true, get: function () { return token_manager_1.isTokenFileForProvider; } });
|
|
19
|
+
Object.defineProperty(exports, "isAuthenticated", { enumerable: true, get: function () { return token_manager_1.isAuthenticated; } });
|
|
20
|
+
Object.defineProperty(exports, "getAuthStatus", { enumerable: true, get: function () { return token_manager_1.getAuthStatus; } });
|
|
21
|
+
Object.defineProperty(exports, "getAllAuthStatus", { enumerable: true, get: function () { return token_manager_1.getAllAuthStatus; } });
|
|
22
|
+
Object.defineProperty(exports, "clearAuth", { enumerable: true, get: function () { return token_manager_1.clearAuth; } });
|
|
23
|
+
Object.defineProperty(exports, "registerAccountFromToken", { enumerable: true, get: function () { return token_manager_1.registerAccountFromToken; } });
|
|
24
|
+
Object.defineProperty(exports, "displayAuthStatus", { enumerable: true, get: function () { return token_manager_1.displayAuthStatus; } });
|
|
25
|
+
// Environment detection
|
|
26
|
+
var environment_detector_1 = require("./environment-detector");
|
|
27
|
+
Object.defineProperty(exports, "isHeadlessEnvironment", { enumerable: true, get: function () { return environment_detector_1.isHeadlessEnvironment; } });
|
|
28
|
+
Object.defineProperty(exports, "killProcessOnPort", { enumerable: true, get: function () { return environment_detector_1.killProcessOnPort; } });
|
|
29
|
+
Object.defineProperty(exports, "getTimeoutTroubleshooting", { enumerable: true, get: function () { return environment_detector_1.getTimeoutTroubleshooting; } });
|
|
30
|
+
Object.defineProperty(exports, "showStep", { enumerable: true, get: function () { return environment_detector_1.showStep; } });
|
|
31
|
+
// OAuth handling
|
|
32
|
+
var oauth_handler_1 = require("./oauth-handler");
|
|
33
|
+
Object.defineProperty(exports, "triggerOAuth", { enumerable: true, get: function () { return oauth_handler_1.triggerOAuth; } });
|
|
34
|
+
Object.defineProperty(exports, "ensureAuth", { enumerable: true, get: function () { return oauth_handler_1.ensureAuth; } });
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cliproxy/auth/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,2CAMsB;AALpB,kHAAA,oBAAoB,OAAA;AACpB,2GAAA,aAAa,OAAA;AACb,oHAAA,sBAAsB,OAAA;AACtB,kHAAA,oBAAoB,OAAA;AACpB,4GAAA,cAAc,OAAA;AAGhB,mBAAmB;AACnB,iDASyB;AARvB,oHAAA,mBAAmB,OAAA;AACnB,uHAAA,sBAAsB,OAAA;AACtB,gHAAA,eAAe,OAAA;AACf,8GAAA,aAAa,OAAA;AACb,iHAAA,gBAAgB,OAAA;AAChB,0GAAA,SAAS,OAAA;AACT,yHAAA,wBAAwB,OAAA;AACxB,kHAAA,iBAAiB,OAAA;AAGnB,wBAAwB;AACxB,+DAKgC;AAJ9B,6HAAA,qBAAqB,OAAA;AACrB,yHAAA,iBAAiB,OAAA;AACjB,iIAAA,yBAAyB,OAAA;AACzB,gHAAA,QAAQ,OAAA;AAGV,iBAAiB;AACjB,iDAA2D;AAAlD,6GAAA,YAAY,OAAA;AAAE,2GAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Handler for CLIProxyAPI
|
|
3
|
+
*
|
|
4
|
+
* Manages OAuth authentication flow for CLIProxy providers (Gemini, Codex, Antigravity).
|
|
5
|
+
* CLIProxyAPI handles OAuth internally - we just need to:
|
|
6
|
+
* 1. Check if auth exists (token files in CCS auth directory)
|
|
7
|
+
* 2. Trigger OAuth flow by spawning binary with auth flag
|
|
8
|
+
* 3. Auto-detect headless environments (SSH, no DISPLAY)
|
|
9
|
+
* 4. Use --no-browser flag for headless, display OAuth URL for manual auth
|
|
10
|
+
*/
|
|
11
|
+
import { CLIProxyProvider } from '../types';
|
|
12
|
+
import { AccountInfo } from '../account-manager';
|
|
13
|
+
import { OAuthOptions } from './auth-types';
|
|
14
|
+
/**
|
|
15
|
+
* Trigger OAuth flow for provider
|
|
16
|
+
* Auto-detects headless environment and uses --no-browser flag accordingly
|
|
17
|
+
* Shows real-time step-by-step progress for better user feedback
|
|
18
|
+
*/
|
|
19
|
+
export declare function triggerOAuth(provider: CLIProxyProvider, options?: OAuthOptions): Promise<AccountInfo | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Ensure provider is authenticated
|
|
22
|
+
* Triggers OAuth flow if not authenticated
|
|
23
|
+
*/
|
|
24
|
+
export declare function ensureAuth(provider: CLIProxyProvider, options?: {
|
|
25
|
+
verbose?: boolean;
|
|
26
|
+
headless?: boolean;
|
|
27
|
+
account?: string;
|
|
28
|
+
}): Promise<boolean>;
|
|
29
|
+
//# sourceMappingURL=oauth-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-handler.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/oauth-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,WAAW,EAIZ,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,YAAY,EAAwC,MAAM,cAAc,CAAC;AA0FlF;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA+E7B;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACxE,OAAO,CAAC,OAAO,CAAC,CAiBlB"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OAuth Handler for CLIProxyAPI
|
|
4
|
+
*
|
|
5
|
+
* Manages OAuth authentication flow for CLIProxy providers (Gemini, Codex, Antigravity).
|
|
6
|
+
* CLIProxyAPI handles OAuth internally - we just need to:
|
|
7
|
+
* 1. Check if auth exists (token files in CCS auth directory)
|
|
8
|
+
* 2. Trigger OAuth flow by spawning binary with auth flag
|
|
9
|
+
* 3. Auto-detect headless environments (SSH, no DISPLAY)
|
|
10
|
+
* 4. Use --no-browser flag for headless, display OAuth URL for manual auth
|
|
11
|
+
*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ensureAuth = exports.triggerOAuth = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const ui_1 = require("../../utils/ui");
|
|
39
|
+
const binary_manager_1 = require("../binary-manager");
|
|
40
|
+
const config_generator_1 = require("../config-generator");
|
|
41
|
+
const account_manager_1 = require("../account-manager");
|
|
42
|
+
const oauth_port_diagnostics_1 = require("../../management/oauth-port-diagnostics");
|
|
43
|
+
const auth_types_1 = require("./auth-types");
|
|
44
|
+
const environment_detector_1 = require("./environment-detector");
|
|
45
|
+
const token_manager_1 = require("./token-manager");
|
|
46
|
+
const oauth_process_1 = require("./oauth-process");
|
|
47
|
+
/**
|
|
48
|
+
* Prompt user to add another account
|
|
49
|
+
*/
|
|
50
|
+
async function promptAddAccount() {
|
|
51
|
+
const readline = await Promise.resolve().then(() => __importStar(require('readline')));
|
|
52
|
+
const rl = readline.createInterface({
|
|
53
|
+
input: process.stdin,
|
|
54
|
+
output: process.stdout,
|
|
55
|
+
});
|
|
56
|
+
return new Promise((resolve) => {
|
|
57
|
+
rl.question('[?] Add another account? (y/N): ', (answer) => {
|
|
58
|
+
rl.close();
|
|
59
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Run pre-flight OAuth checks
|
|
65
|
+
*/
|
|
66
|
+
async function runPreflightChecks(provider, oauthConfig) {
|
|
67
|
+
console.log('');
|
|
68
|
+
console.log((0, ui_1.info)(`Pre-flight OAuth check for ${oauthConfig.displayName}...`));
|
|
69
|
+
const preflight = await (0, oauth_port_diagnostics_1.enhancedPreflightOAuthCheck)(provider);
|
|
70
|
+
for (const check of preflight.checks) {
|
|
71
|
+
const icon = check.status === 'ok' ? '[OK]' : check.status === 'warn' ? '[!]' : '[X]';
|
|
72
|
+
console.log(` ${icon} ${check.name}: ${check.message}`);
|
|
73
|
+
if (check.fixCommand && check.status !== 'ok') {
|
|
74
|
+
console.log(` Fix: ${check.fixCommand}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (preflight.firewallWarning) {
|
|
78
|
+
console.log('');
|
|
79
|
+
console.log((0, ui_1.warn)('Windows Firewall may block OAuth callback'));
|
|
80
|
+
console.log(' If auth hangs, run as Administrator:');
|
|
81
|
+
console.log(` ${(0, ui_1.color)(preflight.firewallFixCommand || '', 'command')}`);
|
|
82
|
+
}
|
|
83
|
+
if (!preflight.ready) {
|
|
84
|
+
console.log('');
|
|
85
|
+
console.log((0, ui_1.fail)('Pre-flight check failed. Resolve issues above and retry.'));
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Prepare OAuth binary and config
|
|
92
|
+
*/
|
|
93
|
+
async function prepareBinary(provider, verbose) {
|
|
94
|
+
(0, environment_detector_1.showStep)(1, 4, 'progress', 'Preparing CLIProxy binary...');
|
|
95
|
+
try {
|
|
96
|
+
const binaryPath = await (0, binary_manager_1.ensureCLIProxyBinary)(verbose);
|
|
97
|
+
process.stdout.write('\x1b[1A\x1b[2K');
|
|
98
|
+
(0, environment_detector_1.showStep)(1, 4, 'ok', 'CLIProxy binary ready');
|
|
99
|
+
const tokenDir = (0, token_manager_1.getProviderTokenDir)(provider);
|
|
100
|
+
fs.mkdirSync(tokenDir, { recursive: true, mode: 0o700 });
|
|
101
|
+
const configPath = (0, config_generator_1.generateConfig)(provider);
|
|
102
|
+
if (verbose) {
|
|
103
|
+
console.error(`[auth] Config generated: ${configPath}`);
|
|
104
|
+
}
|
|
105
|
+
return { binaryPath, tokenDir, configPath };
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
process.stdout.write('\x1b[1A\x1b[2K');
|
|
109
|
+
(0, environment_detector_1.showStep)(1, 4, 'fail', 'Failed to prepare CLIProxy binary');
|
|
110
|
+
console.error((0, ui_1.fail)(error.message));
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Trigger OAuth flow for provider
|
|
116
|
+
* Auto-detects headless environment and uses --no-browser flag accordingly
|
|
117
|
+
* Shows real-time step-by-step progress for better user feedback
|
|
118
|
+
*/
|
|
119
|
+
async function triggerOAuth(provider, options = {}) {
|
|
120
|
+
const oauthConfig = (0, auth_types_1.getOAuthConfig)(provider);
|
|
121
|
+
const { verbose = false, add = false, nickname, fromUI = false } = options;
|
|
122
|
+
const callbackPort = oauth_port_diagnostics_1.OAUTH_CALLBACK_PORTS[provider];
|
|
123
|
+
const isCLI = !fromUI;
|
|
124
|
+
const headless = options.headless ?? (0, environment_detector_1.isHeadlessEnvironment)();
|
|
125
|
+
// Check for existing accounts
|
|
126
|
+
const existingAccounts = (0, account_manager_1.getProviderAccounts)(provider);
|
|
127
|
+
if (existingAccounts.length > 0 && !add) {
|
|
128
|
+
console.log('');
|
|
129
|
+
console.log((0, ui_1.info)(`${existingAccounts.length} account(s) already authenticated for ${oauthConfig.displayName}`));
|
|
130
|
+
if (!(await promptAddAccount())) {
|
|
131
|
+
console.log((0, ui_1.info)('Cancelled'));
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Pre-flight checks
|
|
136
|
+
if (!(await runPreflightChecks(provider, oauthConfig))) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
console.log('');
|
|
140
|
+
// Prepare binary
|
|
141
|
+
const prepared = await prepareBinary(provider, verbose);
|
|
142
|
+
if (!prepared)
|
|
143
|
+
return null;
|
|
144
|
+
const { binaryPath, tokenDir, configPath } = prepared;
|
|
145
|
+
// Free callback port if needed
|
|
146
|
+
const localCallbackPort = auth_types_1.OAUTH_CALLBACK_PORTS[provider];
|
|
147
|
+
if (localCallbackPort) {
|
|
148
|
+
const killed = (0, environment_detector_1.killProcessOnPort)(localCallbackPort, verbose);
|
|
149
|
+
if (killed && verbose) {
|
|
150
|
+
console.error(`[auth] Freed port ${localCallbackPort} for OAuth callback`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Build args
|
|
154
|
+
const args = ['--config', configPath, oauthConfig.authFlag];
|
|
155
|
+
if (headless) {
|
|
156
|
+
args.push('--no-browser');
|
|
157
|
+
}
|
|
158
|
+
// Show callback server step
|
|
159
|
+
(0, environment_detector_1.showStep)(2, 4, 'progress', `Starting callback server on port ${callbackPort || 'N/A'}...`);
|
|
160
|
+
// Show headless instructions
|
|
161
|
+
if (headless) {
|
|
162
|
+
console.log('');
|
|
163
|
+
console.log((0, ui_1.warn)('PORT FORWARDING REQUIRED'));
|
|
164
|
+
console.log(` OAuth callback uses localhost:${callbackPort} which must be reachable.`);
|
|
165
|
+
console.log(' Run this on your LOCAL machine:');
|
|
166
|
+
console.log(` ${(0, ui_1.color)(`ssh -L ${callbackPort}:localhost:${callbackPort} <USER>@<HOST>`, 'command')}`);
|
|
167
|
+
console.log('');
|
|
168
|
+
}
|
|
169
|
+
// Execute OAuth process
|
|
170
|
+
return (0, oauth_process_1.executeOAuthProcess)({
|
|
171
|
+
provider,
|
|
172
|
+
binaryPath,
|
|
173
|
+
args,
|
|
174
|
+
tokenDir,
|
|
175
|
+
oauthConfig,
|
|
176
|
+
callbackPort,
|
|
177
|
+
headless,
|
|
178
|
+
verbose,
|
|
179
|
+
isCLI,
|
|
180
|
+
nickname,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
exports.triggerOAuth = triggerOAuth;
|
|
184
|
+
/**
|
|
185
|
+
* Ensure provider is authenticated
|
|
186
|
+
* Triggers OAuth flow if not authenticated
|
|
187
|
+
*/
|
|
188
|
+
async function ensureAuth(provider, options = {}) {
|
|
189
|
+
if ((0, token_manager_1.isAuthenticated)(provider)) {
|
|
190
|
+
if (options.verbose) {
|
|
191
|
+
console.error(`[auth] ${provider} already authenticated`);
|
|
192
|
+
}
|
|
193
|
+
const defaultAccount = (0, account_manager_1.getDefaultAccount)(provider);
|
|
194
|
+
if (defaultAccount) {
|
|
195
|
+
(0, account_manager_1.touchAccount)(provider, options.account || defaultAccount.id);
|
|
196
|
+
}
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
const oauthConfig = (0, auth_types_1.getOAuthConfig)(provider);
|
|
200
|
+
console.log((0, ui_1.info)(`${oauthConfig.displayName} authentication required`));
|
|
201
|
+
const account = await triggerOAuth(provider, options);
|
|
202
|
+
return account !== null;
|
|
203
|
+
}
|
|
204
|
+
exports.ensureAuth = ensureAuth;
|
|
205
|
+
//# sourceMappingURL=oauth-handler.js.map
|