@kaitranntt/ccs 7.66.1 → 7.67.0-dev.10
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 +3 -1
- package/dist/api/services/index.d.ts +1 -0
- package/dist/api/services/index.d.ts.map +1 -1
- package/dist/api/services/index.js +3 -1
- package/dist/api/services/index.js.map +1 -1
- package/dist/api/services/local-runtime-readiness.d.ts +14 -0
- package/dist/api/services/local-runtime-readiness.d.ts.map +1 -0
- package/dist/api/services/local-runtime-readiness.js +89 -0
- package/dist/api/services/local-runtime-readiness.js.map +1 -0
- package/dist/ccs.js +68 -35
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/accounts/types.d.ts +1 -1
- package/dist/cliproxy/accounts/types.d.ts.map +1 -1
- package/dist/cliproxy/auth/auth-types.d.ts +29 -6
- package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
- package/dist/cliproxy/auth/auth-types.js +58 -10
- package/dist/cliproxy/auth/auth-types.js.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.d.ts +6 -1
- package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.js +165 -45
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
- package/dist/cliproxy/auth/oauth-process.d.ts +26 -1
- package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-process.js +314 -49
- package/dist/cliproxy/auth/oauth-process.js.map +1 -1
- package/dist/cliproxy/auth/token-manager.d.ts +9 -0
- package/dist/cliproxy/auth/token-manager.d.ts.map +1 -1
- package/dist/cliproxy/auth/token-manager.js +104 -58
- package/dist/cliproxy/auth/token-manager.js.map +1 -1
- package/dist/cliproxy/auth-utils.d.ts +2 -1
- package/dist/cliproxy/auth-utils.d.ts.map +1 -1
- package/dist/cliproxy/auth-utils.js +32 -7
- package/dist/cliproxy/auth-utils.js.map +1 -1
- package/dist/cliproxy/catalog-cache.d.ts +9 -1
- package/dist/cliproxy/catalog-cache.d.ts.map +1 -1
- package/dist/cliproxy/catalog-cache.js +115 -29
- package/dist/cliproxy/catalog-cache.js.map +1 -1
- package/dist/cliproxy/catalog-routing.d.ts +12 -0
- package/dist/cliproxy/catalog-routing.d.ts.map +1 -0
- package/dist/cliproxy/catalog-routing.js +19 -0
- package/dist/cliproxy/catalog-routing.js.map +1 -0
- package/dist/cliproxy/codex-plan-compatibility.d.ts +0 -1
- package/dist/cliproxy/codex-plan-compatibility.d.ts.map +1 -1
- package/dist/cliproxy/codex-plan-compatibility.js +3 -7
- package/dist/cliproxy/codex-plan-compatibility.js.map +1 -1
- package/dist/cliproxy/config/generator.d.ts +2 -1
- package/dist/cliproxy/config/generator.d.ts.map +1 -1
- package/dist/cliproxy/config/generator.js +11 -1
- package/dist/cliproxy/config/generator.js.map +1 -1
- package/dist/cliproxy/executor/index.d.ts +5 -0
- package/dist/cliproxy/executor/index.d.ts.map +1 -1
- package/dist/cliproxy/executor/index.js +119 -16
- package/dist/cliproxy/executor/index.js.map +1 -1
- package/dist/cliproxy/gemini-cli-quota-normalizer.js +1 -1
- package/dist/cliproxy/gemini-cli-quota-normalizer.js.map +1 -1
- package/dist/cliproxy/index.d.ts +1 -1
- package/dist/cliproxy/index.d.ts.map +1 -1
- package/dist/cliproxy/index.js.map +1 -1
- package/dist/cliproxy/managed-model-prefixes.d.ts +7 -0
- package/dist/cliproxy/managed-model-prefixes.d.ts.map +1 -0
- package/dist/cliproxy/managed-model-prefixes.js +116 -0
- package/dist/cliproxy/managed-model-prefixes.js.map +1 -0
- package/dist/cliproxy/management-api-client.d.ts +9 -0
- package/dist/cliproxy/management-api-client.d.ts.map +1 -1
- package/dist/cliproxy/management-api-client.js +14 -0
- package/dist/cliproxy/management-api-client.js.map +1 -1
- package/dist/cliproxy/model-catalog.d.ts.map +1 -1
- package/dist/cliproxy/model-catalog.js +19 -4
- package/dist/cliproxy/model-catalog.js.map +1 -1
- package/dist/cliproxy/provider-entitlement-evidence.d.ts +17 -0
- package/dist/cliproxy/provider-entitlement-evidence.d.ts.map +1 -0
- package/dist/cliproxy/provider-entitlement-evidence.js +55 -0
- package/dist/cliproxy/provider-entitlement-evidence.js.map +1 -0
- package/dist/cliproxy/provider-entitlement-types.d.ts +16 -0
- package/dist/cliproxy/provider-entitlement-types.d.ts.map +1 -0
- package/dist/cliproxy/provider-entitlement-types.js +3 -0
- package/dist/cliproxy/provider-entitlement-types.js.map +1 -0
- package/dist/cliproxy/proxy-detector.d.ts.map +1 -1
- package/dist/cliproxy/proxy-detector.js +6 -2
- package/dist/cliproxy/proxy-detector.js.map +1 -1
- package/dist/cliproxy/quota-fetcher-gemini-cli.d.ts.map +1 -1
- package/dist/cliproxy/quota-fetcher-gemini-cli.js +64 -19
- package/dist/cliproxy/quota-fetcher-gemini-cli.js.map +1 -1
- package/dist/cliproxy/quota-fetcher.d.ts +10 -0
- package/dist/cliproxy/quota-fetcher.d.ts.map +1 -1
- package/dist/cliproxy/quota-fetcher.js +116 -21
- package/dist/cliproxy/quota-fetcher.js.map +1 -1
- package/dist/cliproxy/quota-types.d.ts +3 -0
- package/dist/cliproxy/quota-types.d.ts.map +1 -1
- package/dist/cliproxy/routing-strategy-http.d.ts +6 -0
- package/dist/cliproxy/routing-strategy-http.d.ts.map +1 -0
- package/dist/cliproxy/routing-strategy-http.js +115 -0
- package/dist/cliproxy/routing-strategy-http.js.map +1 -0
- package/dist/cliproxy/routing-strategy.d.ts +18 -0
- package/dist/cliproxy/routing-strategy.d.ts.map +1 -0
- package/dist/cliproxy/routing-strategy.js +123 -0
- package/dist/cliproxy/routing-strategy.js.map +1 -0
- package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-settings.js +43 -30
- package/dist/cliproxy/services/variant-settings.js.map +1 -1
- package/dist/cliproxy/startup-lock.d.ts.map +1 -1
- package/dist/cliproxy/startup-lock.js +5 -1
- package/dist/cliproxy/startup-lock.js.map +1 -1
- package/dist/cliproxy/tool-sanitization-proxy.d.ts +1 -0
- package/dist/cliproxy/tool-sanitization-proxy.d.ts.map +1 -1
- package/dist/cliproxy/tool-sanitization-proxy.js +6 -0
- package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -1
- package/dist/cliproxy/types.d.ts +7 -0
- package/dist/cliproxy/types.d.ts.map +1 -1
- package/dist/cliproxy/types.js.map +1 -1
- package/dist/commands/api-command/create-command.d.ts +3 -0
- package/dist/commands/api-command/create-command.d.ts.map +1 -1
- package/dist/commands/api-command/create-command.js +20 -6
- package/dist/commands/api-command/create-command.js.map +1 -1
- package/dist/commands/api-command/help.d.ts.map +1 -1
- package/dist/commands/api-command/help.js +1 -0
- package/dist/commands/api-command/help.js.map +1 -1
- package/dist/commands/cleanup-command.d.ts +1 -1
- package/dist/commands/cleanup-command.d.ts.map +1 -1
- package/dist/commands/cleanup-command.js +57 -34
- package/dist/commands/cleanup-command.js.map +1 -1
- package/dist/commands/cliproxy/catalog-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/catalog-subcommand.js +72 -44
- package/dist/commands/cliproxy/catalog-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.js +6 -2
- package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/index.d.ts.map +1 -1
- package/dist/commands/cliproxy/index.js +14 -0
- package/dist/commands/cliproxy/index.js.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.d.ts +2 -0
- package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.js +8 -1
- package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/routing-subcommand.d.ts +4 -0
- package/dist/commands/cliproxy/routing-subcommand.d.ts.map +1 -0
- package/dist/commands/cliproxy/routing-subcommand.js +68 -0
- package/dist/commands/cliproxy/routing-subcommand.js.map +1 -0
- package/dist/commands/cliproxy/variant-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/variant-subcommand.js +44 -3
- package/dist/commands/cliproxy/variant-subcommand.js.map +1 -1
- package/dist/commands/command-catalog.d.ts +2 -2
- package/dist/commands/command-catalog.d.ts.map +1 -1
- package/dist/commands/command-catalog.js +3 -1
- package/dist/commands/command-catalog.js.map +1 -1
- package/dist/commands/completion-backend.d.ts.map +1 -1
- package/dist/commands/completion-backend.js +15 -1
- package/dist/commands/completion-backend.js.map +1 -1
- package/dist/commands/config-command.d.ts.map +1 -1
- package/dist/commands/config-command.js +23 -0
- package/dist/commands/config-command.js.map +1 -1
- package/dist/commands/docker/up-subcommand.js +1 -1
- package/dist/commands/docker/up-subcommand.js.map +1 -1
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +62 -1
- package/dist/commands/help-command.js.map +1 -1
- package/dist/commands/update-command.d.ts +20 -5
- package/dist/commands/update-command.d.ts.map +1 -1
- package/dist/commands/update-command.js +169 -119
- package/dist/commands/update-command.js.map +1 -1
- package/dist/config/unified-config-loader.d.ts +2 -1
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +37 -1
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +29 -1
- package/dist/config/unified-config-types.d.ts.map +1 -1
- package/dist/config/unified-config-types.js +13 -1
- package/dist/config/unified-config-types.js.map +1 -1
- package/dist/copilot/copilot-executor.d.ts.map +1 -1
- package/dist/copilot/copilot-executor.js +5 -8
- package/dist/copilot/copilot-executor.js.map +1 -1
- package/dist/delegation/headless-executor.d.ts.map +1 -1
- package/dist/delegation/headless-executor.js +19 -16
- package/dist/delegation/headless-executor.js.map +1 -1
- package/dist/errors/error-handler.d.ts.map +1 -1
- package/dist/errors/error-handler.js +13 -0
- package/dist/errors/error-handler.js.map +1 -1
- package/dist/glmt/glmt-transformer.d.ts +1 -0
- package/dist/glmt/glmt-transformer.d.ts.map +1 -1
- package/dist/glmt/glmt-transformer.js +9 -0
- package/dist/glmt/glmt-transformer.js.map +1 -1
- package/dist/management/checks/image-analysis-check.d.ts.map +1 -1
- package/dist/management/checks/image-analysis-check.js +19 -1
- package/dist/management/checks/image-analysis-check.js.map +1 -1
- package/dist/management/recovery-manager.d.ts +6 -0
- package/dist/management/recovery-manager.d.ts.map +1 -1
- package/dist/management/recovery-manager.js +72 -2
- package/dist/management/recovery-manager.js.map +1 -1
- package/dist/services/logging/index.d.ts +7 -0
- package/dist/services/logging/index.d.ts.map +1 -0
- package/dist/services/logging/index.js +22 -0
- package/dist/services/logging/index.js.map +1 -0
- package/dist/services/logging/log-buffer.d.ts +5 -0
- package/dist/services/logging/log-buffer.d.ts.map +1 -0
- package/dist/services/logging/log-buffer.js +20 -0
- package/dist/services/logging/log-buffer.js.map +1 -0
- package/dist/services/logging/log-config.d.ts +4 -0
- package/dist/services/logging/log-config.d.ts.map +1 -0
- package/dist/services/logging/log-config.js +68 -0
- package/dist/services/logging/log-config.js.map +1 -0
- package/dist/services/logging/log-paths.d.ts +8 -0
- package/dist/services/logging/log-paths.d.ts.map +1 -0
- package/dist/services/logging/log-paths.js +66 -0
- package/dist/services/logging/log-paths.js.map +1 -0
- package/dist/services/logging/log-reader.d.ts +5 -0
- package/dist/services/logging/log-reader.d.ts.map +1 -0
- package/dist/services/logging/log-reader.js +124 -0
- package/dist/services/logging/log-reader.js.map +1 -0
- package/dist/services/logging/log-redaction.d.ts +2 -0
- package/dist/services/logging/log-redaction.d.ts.map +1 -0
- package/dist/services/logging/log-redaction.js +53 -0
- package/dist/services/logging/log-redaction.js.map +1 -0
- package/dist/services/logging/log-storage.d.ts +4 -0
- package/dist/services/logging/log-storage.d.ts.map +1 -0
- package/dist/services/logging/log-storage.js +109 -0
- package/dist/services/logging/log-storage.js.map +1 -0
- package/dist/services/logging/log-types.d.ts +30 -0
- package/dist/services/logging/log-types.d.ts.map +1 -0
- package/dist/services/logging/log-types.js +19 -0
- package/dist/services/logging/log-types.js.map +1 -0
- package/dist/services/logging/logger.d.ts +9 -0
- package/dist/services/logging/logger.d.ts.map +1 -0
- package/dist/services/logging/logger.js +46 -0
- package/dist/services/logging/logger.js.map +1 -0
- package/dist/shared/agy-gemini-pro-compatibility.d.ts +15 -0
- package/dist/shared/agy-gemini-pro-compatibility.d.ts.map +1 -0
- package/dist/shared/agy-gemini-pro-compatibility.js +18 -0
- package/dist/shared/agy-gemini-pro-compatibility.js.map +1 -0
- package/dist/shared/cliproxy-model-routing.d.ts +45 -0
- package/dist/shared/cliproxy-model-routing.d.ts.map +1 -0
- package/dist/shared/cliproxy-model-routing.js +144 -0
- package/dist/shared/cliproxy-model-routing.js.map +1 -0
- package/dist/shared/provider-preset-catalog.d.ts +3 -1
- package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
- package/dist/shared/provider-preset-catalog.js +16 -0
- package/dist/shared/provider-preset-catalog.js.map +1 -1
- package/dist/ui/assets/{accounts-BjfPKR8m.js → accounts-DjL3iVZW.js} +1 -1
- package/dist/ui/assets/{alert-dialog-Dh2NUFdm.js → alert-dialog-Tc_D1a_B.js} +1 -1
- package/dist/ui/assets/api-CUtkvXmX.js +4 -0
- package/dist/ui/assets/{auth-section-Dp10_YyD.js → auth-section-CuKWQHC7.js} +1 -1
- package/dist/ui/assets/{backups-section-C0jF8MP1.js → backups-section-BKW2pbb9.js} +1 -1
- package/dist/ui/assets/{channels-CkXuK5i7.js → channels-DvWJMdaq.js} +1 -1
- package/dist/ui/assets/{checkbox-tA5FH8Ol.js → checkbox-B0hZxMK5.js} +1 -1
- package/dist/ui/assets/{claude-extension-Bg2ZkzMz.js → claude-extension-Dfqu-rev.js} +1 -1
- package/dist/ui/assets/cliproxy-C9RxW-I8.js +3 -0
- package/dist/ui/assets/cliproxy-ai-providers-BXLuuxNf.js +15 -0
- package/dist/ui/assets/{cliproxy-control-panel-Da-sGGyI.js → cliproxy-control-panel-aQ7cCc2U.js} +1 -1
- package/dist/ui/assets/{codex-ooWKOPa2.js → codex-aq4RI6_n.js} +9 -9
- package/dist/ui/assets/{confirm-dialog-CKjwhn9j.js → confirm-dialog-CpDk6eu4.js} +1 -1
- package/dist/ui/assets/{copilot-GA7EPiK1.js → copilot-CQRpGXvY.js} +2 -2
- package/dist/ui/assets/{cursor-B6c8CyHG.js → cursor-BpXPf6qi.js} +1 -1
- package/dist/ui/assets/{droid-CPRHOIX2.js → droid-Cgx-yLjy.js} +2 -2
- package/dist/ui/assets/{globalenv-section-Czgnw_GV.js → globalenv-section-DsNqG1yB.js} +1 -1
- package/dist/ui/assets/{health-CXLOMk8n.js → health-BY-O-JcA.js} +1 -1
- package/dist/ui/assets/icons-KVCk4_U8.js +1 -0
- package/dist/ui/assets/index-BmSzf0T9.js +72 -0
- package/dist/ui/assets/index-CLGiPB3A.js +1 -0
- package/dist/ui/assets/{index-CvfzKRSH.js → index-Cet36v1V.js} +1 -1
- package/dist/ui/assets/{index-Boa5e-GY.js → index-DH6L6ybH.js} +1 -1
- package/dist/ui/assets/{index-BceMcbCR.js → index-DsCjnpco.js} +1 -1
- package/dist/ui/assets/{index-D2v_-6AW.js → index-TQFuDZdB.js} +1 -1
- package/dist/ui/assets/index-teLjoh2T.css +1 -0
- package/dist/ui/assets/logs-D5ro-pc7.js +1 -0
- package/dist/ui/assets/{masked-input-B1_asiUI.js → masked-input-h0XkMSwB.js} +1 -1
- package/dist/ui/assets/proxy-status-widget-yBdrFeb7.js +1 -0
- package/dist/ui/assets/{raw-json-settings-editor-panel-DMbTkxWw.js → raw-json-settings-editor-panel-Cb7ZInQV.js} +1 -1
- package/dist/ui/assets/searchable-select-D4xr5xKS.js +1 -0
- package/dist/ui/assets/{separator-CdaalG0K.js → separator-gw5BjIpP.js} +1 -1
- package/dist/ui/assets/{shared-BiFB-et0.js → shared-C-VeA1Z9.js} +1 -1
- package/dist/ui/assets/{table-BPwgFXLQ.js → table-Bd4isC18.js} +1 -1
- package/dist/ui/assets/{tanstack-DWm6aJ-G.js → tanstack-CrmUhA7Z.js} +2 -2
- package/dist/ui/assets/updates-DiK8I67C.js +1 -0
- package/dist/ui/index.html +4 -4
- package/dist/utils/hooks/image-analysis-runtime-status.d.ts.map +1 -1
- package/dist/utils/hooks/image-analysis-runtime-status.js +5 -1
- package/dist/utils/hooks/image-analysis-runtime-status.js.map +1 -1
- package/dist/utils/hooks/image-analyzer-hook-utils.d.ts +21 -0
- package/dist/utils/hooks/image-analyzer-hook-utils.d.ts.map +1 -0
- package/dist/utils/hooks/image-analyzer-hook-utils.js +81 -0
- package/dist/utils/hooks/image-analyzer-hook-utils.js.map +1 -0
- package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts +1 -0
- package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts.map +1 -1
- package/dist/utils/hooks/image-analyzer-profile-hook-injector.js +33 -12
- package/dist/utils/hooks/image-analyzer-profile-hook-injector.js.map +1 -1
- package/dist/utils/hooks/index.d.ts +1 -0
- package/dist/utils/hooks/index.d.ts.map +1 -1
- package/dist/utils/hooks/index.js +3 -1
- package/dist/utils/hooks/index.js.map +1 -1
- package/dist/utils/image-analysis/index.d.ts +1 -0
- package/dist/utils/image-analysis/index.d.ts.map +1 -1
- package/dist/utils/image-analysis/index.js +6 -1
- package/dist/utils/image-analysis/index.js.map +1 -1
- package/dist/utils/image-analysis/repair.d.ts +12 -0
- package/dist/utils/image-analysis/repair.d.ts.map +1 -0
- package/dist/utils/image-analysis/repair.js +105 -0
- package/dist/utils/image-analysis/repair.js.map +1 -0
- package/dist/utils/package-manager-detector.d.ts +30 -4
- package/dist/utils/package-manager-detector.d.ts.map +1 -1
- package/dist/utils/package-manager-detector.js +247 -60
- package/dist/utils/package-manager-detector.js.map +1 -1
- package/dist/utils/update-checker.d.ts +1 -1
- package/dist/utils/update-checker.d.ts.map +1 -1
- package/dist/utils/websearch/trace.d.ts.map +1 -1
- package/dist/utils/websearch/trace.js +7 -0
- package/dist/utils/websearch/trace.js.map +1 -1
- package/dist/web-server/index.d.ts.map +1 -1
- package/dist/web-server/index.js +24 -0
- package/dist/web-server/index.js.map +1 -1
- package/dist/web-server/middleware/request-logging-middleware.d.ts +3 -0
- package/dist/web-server/middleware/request-logging-middleware.d.ts.map +1 -0
- package/dist/web-server/middleware/request-logging-middleware.js +30 -0
- package/dist/web-server/middleware/request-logging-middleware.js.map +1 -0
- package/dist/web-server/routes/auth-routes.d.ts +10 -0
- package/dist/web-server/routes/auth-routes.d.ts.map +1 -1
- package/dist/web-server/routes/auth-routes.js +33 -6
- package/dist/web-server/routes/auth-routes.js.map +1 -1
- package/dist/web-server/routes/catalog-routes.d.ts.map +1 -1
- package/dist/web-server/routes/catalog-routes.js +9 -8
- package/dist/web-server/routes/catalog-routes.js.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts +8 -0
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.js +86 -76
- package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
- package/dist/web-server/routes/cliproxy-routing-routes.d.ts +3 -0
- package/dist/web-server/routes/cliproxy-routing-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-routing-routes.js +34 -0
- package/dist/web-server/routes/cliproxy-routing-routes.js.map +1 -0
- package/dist/web-server/routes/image-analysis-routes.d.ts.map +1 -1
- package/dist/web-server/routes/image-analysis-routes.js +1 -10
- package/dist/web-server/routes/image-analysis-routes.js.map +1 -1
- package/dist/web-server/routes/index.d.ts.map +1 -1
- package/dist/web-server/routes/index.js +22 -0
- package/dist/web-server/routes/index.js.map +1 -1
- package/dist/web-server/routes/logs-routes.d.ts +3 -0
- package/dist/web-server/routes/logs-routes.d.ts.map +1 -0
- package/dist/web-server/routes/logs-routes.js +75 -0
- package/dist/web-server/routes/logs-routes.js.map +1 -0
- package/dist/web-server/routes/profile-routes.d.ts.map +1 -1
- package/dist/web-server/routes/profile-routes.js +8 -0
- package/dist/web-server/routes/profile-routes.js.map +1 -1
- package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
- package/dist/web-server/routes/settings-routes.js +2 -0
- package/dist/web-server/routes/settings-routes.js.map +1 -1
- package/dist/web-server/services/logs-dashboard-service.d.ts +7 -0
- package/dist/web-server/services/logs-dashboard-service.d.ts.map +1 -0
- package/dist/web-server/services/logs-dashboard-service.js +33 -0
- package/dist/web-server/services/logs-dashboard-service.js.map +1 -0
- package/dist/web-server/usage/routes.d.ts.map +1 -1
- package/dist/web-server/usage/routes.js +11 -0
- package/dist/web-server/usage/routes.js.map +1 -1
- package/dist/web-server/websocket.d.ts.map +1 -1
- package/dist/web-server/websocket.js +23 -14
- package/dist/web-server/websocket.js.map +1 -1
- package/lib/hooks/image-analyzer-transformer.cjs +5 -0
- package/package.json +1 -1
- package/dist/ui/assets/api-C-3mQCFf.js +0 -4
- package/dist/ui/assets/cliproxy-1qRVSbVC.js +0 -3
- package/dist/ui/assets/cliproxy-ai-providers-DBSXTTyw.js +0 -21
- package/dist/ui/assets/icons-B9oTjo-t.js +0 -1
- package/dist/ui/assets/index-BMHPMj0j.js +0 -69
- package/dist/ui/assets/index-CknHGRYp.css +0 -1
- package/dist/ui/assets/index-v-DY6Zby.js +0 -1
- package/dist/ui/assets/proxy-status-widget-Ci1JpStj.js +0 -1
- package/dist/ui/assets/searchable-select-HbP2PXl3.js +0 -1
- package/dist/ui/assets/updates-l8Co9uve.js +0 -1
|
@@ -11,25 +11,40 @@ import type { AccountInfo } from '../account-manager';
|
|
|
11
11
|
* - aws-authcode: AWS Builder ID via Authorization Code flow (CLI flag only)
|
|
12
12
|
* - google: Social OAuth via Google
|
|
13
13
|
* - github: Social OAuth via GitHub (management API only)
|
|
14
|
+
* - idc: IAM Identity Center (IDC) via CLI flags with start URL + region
|
|
14
15
|
*/
|
|
15
|
-
export declare const KIRO_AUTH_METHODS: readonly ["aws", "aws-authcode", "google", "github"];
|
|
16
|
+
export declare const KIRO_AUTH_METHODS: readonly ["aws", "aws-authcode", "google", "github", "idc"];
|
|
16
17
|
export type KiroAuthMethod = (typeof KIRO_AUTH_METHODS)[number];
|
|
17
18
|
/** CLI binary supports these Kiro methods directly via flags. */
|
|
18
|
-
export declare const KIRO_CLI_AUTH_METHODS: readonly ["aws", "aws-authcode", "google"];
|
|
19
|
+
export declare const KIRO_CLI_AUTH_METHODS: readonly ["aws", "aws-authcode", "google", "idc"];
|
|
19
20
|
export type KiroCLIAuthMethod = (typeof KIRO_CLI_AUTH_METHODS)[number];
|
|
21
|
+
export declare const KIRO_IDC_FLOWS: readonly ["authcode", "device"];
|
|
22
|
+
export type KiroIDCFlow = (typeof KIRO_IDC_FLOWS)[number];
|
|
23
|
+
export declare const DEFAULT_KIRO_IDC_FLOW: KiroIDCFlow;
|
|
20
24
|
/** Default Kiro method for CCS UX and AWS Organization support. */
|
|
21
25
|
export declare const DEFAULT_KIRO_AUTH_METHOD: KiroAuthMethod;
|
|
22
26
|
export declare function isKiroAuthMethod(value: string): value is KiroAuthMethod;
|
|
23
27
|
export declare function isKiroCLIAuthMethod(value: string): value is KiroCLIAuthMethod;
|
|
28
|
+
export declare function isKiroIDCFlow(value: string): value is KiroIDCFlow;
|
|
24
29
|
export declare function normalizeKiroAuthMethod(value?: string): KiroAuthMethod;
|
|
25
|
-
export declare function
|
|
26
|
-
export declare function
|
|
30
|
+
export declare function normalizeKiroIDCFlow(value?: string): KiroIDCFlow;
|
|
31
|
+
export declare function isKiroDeviceCodeMethod(method: KiroAuthMethod, options?: {
|
|
32
|
+
idcFlow?: KiroIDCFlow;
|
|
33
|
+
}): boolean;
|
|
34
|
+
export declare function getKiroCallbackPort(method: KiroAuthMethod, options?: {
|
|
35
|
+
idcFlow?: KiroIDCFlow;
|
|
36
|
+
}): number | null;
|
|
27
37
|
export declare function getKiroCLIAuthFlag(method: KiroCLIAuthMethod): string;
|
|
38
|
+
export declare function getKiroCLIAuthArgs(method: KiroCLIAuthMethod, options?: {
|
|
39
|
+
idcStartUrl?: string;
|
|
40
|
+
idcRegion?: string;
|
|
41
|
+
idcFlow?: KiroIDCFlow;
|
|
42
|
+
}): string[];
|
|
28
43
|
/**
|
|
29
44
|
* Kiro method for CLIProxyAPI management endpoint:
|
|
30
45
|
* GET /v0/management/kiro-auth-url?method=<value>
|
|
31
46
|
*/
|
|
32
|
-
export declare function toKiroManagementMethod(method: KiroAuthMethod): 'aws' | 'google' | 'github';
|
|
47
|
+
export declare function toKiroManagementMethod(method: KiroAuthMethod): 'aws' | 'google' | 'github' | null;
|
|
33
48
|
/**
|
|
34
49
|
* OAuth callback ports used by CLIProxyAPI (hardcoded in binary)
|
|
35
50
|
* See: https://github.com/router-for-me/CLIProxyAPI/tree/main/internal/auth
|
|
@@ -108,7 +123,9 @@ export declare const CLIPROXY_CALLBACK_PROVIDER_MAP: Record<CLIProxyProvider, st
|
|
|
108
123
|
*/
|
|
109
124
|
export declare const CLIPROXY_AUTH_URL_PROVIDER_MAP: Record<CLIProxyProvider, string>;
|
|
110
125
|
export declare function getManagementAuthUrlPath(provider: CLIProxyProvider): string;
|
|
111
|
-
export declare function getPasteCallbackStartPath(provider: CLIProxyProvider
|
|
126
|
+
export declare function getPasteCallbackStartPath(provider: CLIProxyProvider, options?: {
|
|
127
|
+
kiroMethod?: KiroAuthMethod;
|
|
128
|
+
}): string | null;
|
|
112
129
|
export declare function getManagementOAuthCallbackPath(): string;
|
|
113
130
|
/**
|
|
114
131
|
* Get OAuth config for provider
|
|
@@ -127,6 +144,12 @@ export interface OAuthOptions {
|
|
|
127
144
|
acceptAgyRisk?: boolean;
|
|
128
145
|
/** Kiro auth method override (CLI + Dashboard parity). */
|
|
129
146
|
kiroMethod?: KiroAuthMethod;
|
|
147
|
+
/** Kiro IDC start URL (required when kiroMethod=idc). */
|
|
148
|
+
kiroIDCStartUrl?: string;
|
|
149
|
+
/** Kiro IDC region override. */
|
|
150
|
+
kiroIDCRegion?: string;
|
|
151
|
+
/** Kiro IDC flow override (authcode or device). */
|
|
152
|
+
kiroIDCFlow?: KiroIDCFlow;
|
|
130
153
|
/** If true, triggered from Web UI (enables project selection prompt) */
|
|
131
154
|
fromUI?: boolean;
|
|
132
155
|
/** If true, use --no-incognito flag (Kiro only - use normal browser instead of incognito) */
|
|
@@ -1 +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,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAWtD
|
|
1
|
+
{"version":3,"file":"auth-types.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/auth-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Type definitions and OAuth configurations for CLIProxy authentication.
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.getOAuthConfig = exports.getManagementOAuthCallbackPath = exports.getPasteCallbackStartPath = exports.getManagementAuthUrlPath = exports.CLIPROXY_AUTH_URL_PROVIDER_MAP = exports.CLIPROXY_CALLBACK_PROVIDER_MAP = exports.PROVIDER_TYPE_VALUES = exports.PROVIDER_AUTH_PREFIXES = exports.OAUTH_CONFIGS = exports.OAUTH_CALLBACK_PORTS = exports.toKiroManagementMethod = exports.getKiroCLIAuthFlag = exports.getKiroCallbackPort = exports.isKiroDeviceCodeMethod = exports.normalizeKiroAuthMethod = exports.isKiroCLIAuthMethod = exports.isKiroAuthMethod = exports.DEFAULT_KIRO_AUTH_METHOD = exports.KIRO_CLI_AUTH_METHODS = exports.KIRO_AUTH_METHODS = void 0;
|
|
8
|
+
exports.getOAuthConfig = exports.getManagementOAuthCallbackPath = exports.getPasteCallbackStartPath = exports.getManagementAuthUrlPath = exports.CLIPROXY_AUTH_URL_PROVIDER_MAP = exports.CLIPROXY_CALLBACK_PROVIDER_MAP = exports.PROVIDER_TYPE_VALUES = exports.PROVIDER_AUTH_PREFIXES = exports.OAUTH_CONFIGS = exports.OAUTH_CALLBACK_PORTS = exports.toKiroManagementMethod = exports.getKiroCLIAuthArgs = exports.getKiroCLIAuthFlag = exports.getKiroCallbackPort = exports.isKiroDeviceCodeMethod = exports.normalizeKiroIDCFlow = exports.normalizeKiroAuthMethod = exports.isKiroIDCFlow = exports.isKiroCLIAuthMethod = exports.isKiroAuthMethod = exports.DEFAULT_KIRO_AUTH_METHOD = exports.DEFAULT_KIRO_IDC_FLOW = exports.KIRO_IDC_FLOWS = exports.KIRO_CLI_AUTH_METHODS = exports.KIRO_AUTH_METHODS = void 0;
|
|
9
9
|
const provider_capabilities_1 = require("../provider-capabilities");
|
|
10
10
|
/**
|
|
11
11
|
* Kiro authentication methods supported by CLIProxyAPIPlus.
|
|
@@ -13,10 +13,13 @@ const provider_capabilities_1 = require("../provider-capabilities");
|
|
|
13
13
|
* - aws-authcode: AWS Builder ID via Authorization Code flow (CLI flag only)
|
|
14
14
|
* - google: Social OAuth via Google
|
|
15
15
|
* - github: Social OAuth via GitHub (management API only)
|
|
16
|
+
* - idc: IAM Identity Center (IDC) via CLI flags with start URL + region
|
|
16
17
|
*/
|
|
17
|
-
exports.KIRO_AUTH_METHODS = ['aws', 'aws-authcode', 'google', 'github'];
|
|
18
|
+
exports.KIRO_AUTH_METHODS = ['aws', 'aws-authcode', 'google', 'github', 'idc'];
|
|
18
19
|
/** CLI binary supports these Kiro methods directly via flags. */
|
|
19
|
-
exports.KIRO_CLI_AUTH_METHODS = ['aws', 'aws-authcode', 'google'];
|
|
20
|
+
exports.KIRO_CLI_AUTH_METHODS = ['aws', 'aws-authcode', 'google', 'idc'];
|
|
21
|
+
exports.KIRO_IDC_FLOWS = ['authcode', 'device'];
|
|
22
|
+
exports.DEFAULT_KIRO_IDC_FLOW = 'authcode';
|
|
20
23
|
/** Default Kiro method for CCS UX and AWS Organization support. */
|
|
21
24
|
exports.DEFAULT_KIRO_AUTH_METHOD = 'aws';
|
|
22
25
|
function isKiroAuthMethod(value) {
|
|
@@ -27,6 +30,10 @@ function isKiroCLIAuthMethod(value) {
|
|
|
27
30
|
return exports.KIRO_CLI_AUTH_METHODS.includes(value);
|
|
28
31
|
}
|
|
29
32
|
exports.isKiroCLIAuthMethod = isKiroCLIAuthMethod;
|
|
33
|
+
function isKiroIDCFlow(value) {
|
|
34
|
+
return exports.KIRO_IDC_FLOWS.includes(value);
|
|
35
|
+
}
|
|
36
|
+
exports.isKiroIDCFlow = isKiroIDCFlow;
|
|
30
37
|
function normalizeKiroAuthMethod(value) {
|
|
31
38
|
if (!value)
|
|
32
39
|
return exports.DEFAULT_KIRO_AUTH_METHOD;
|
|
@@ -34,12 +41,25 @@ function normalizeKiroAuthMethod(value) {
|
|
|
34
41
|
return isKiroAuthMethod(normalized) ? normalized : exports.DEFAULT_KIRO_AUTH_METHOD;
|
|
35
42
|
}
|
|
36
43
|
exports.normalizeKiroAuthMethod = normalizeKiroAuthMethod;
|
|
37
|
-
function
|
|
38
|
-
|
|
44
|
+
function normalizeKiroIDCFlow(value) {
|
|
45
|
+
if (!value)
|
|
46
|
+
return exports.DEFAULT_KIRO_IDC_FLOW;
|
|
47
|
+
const normalized = value.trim().toLowerCase();
|
|
48
|
+
return isKiroIDCFlow(normalized) ? normalized : exports.DEFAULT_KIRO_IDC_FLOW;
|
|
49
|
+
}
|
|
50
|
+
exports.normalizeKiroIDCFlow = normalizeKiroIDCFlow;
|
|
51
|
+
function isKiroDeviceCodeMethod(method, options) {
|
|
52
|
+
if (method === 'aws') {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
if (method === 'idc') {
|
|
56
|
+
return normalizeKiroIDCFlow(options?.idcFlow) === 'device';
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
39
59
|
}
|
|
40
60
|
exports.isKiroDeviceCodeMethod = isKiroDeviceCodeMethod;
|
|
41
|
-
function getKiroCallbackPort(method) {
|
|
42
|
-
return isKiroDeviceCodeMethod(method) ? null : 9876;
|
|
61
|
+
function getKiroCallbackPort(method, options) {
|
|
62
|
+
return isKiroDeviceCodeMethod(method, options) ? null : 9876;
|
|
43
63
|
}
|
|
44
64
|
exports.getKiroCallbackPort = getKiroCallbackPort;
|
|
45
65
|
function getKiroCLIAuthFlag(method) {
|
|
@@ -50,9 +70,28 @@ function getKiroCLIAuthFlag(method) {
|
|
|
50
70
|
return '--kiro-aws-authcode';
|
|
51
71
|
case 'google':
|
|
52
72
|
return '--kiro-google-login';
|
|
73
|
+
case 'idc':
|
|
74
|
+
return '--kiro-idc-login';
|
|
53
75
|
}
|
|
54
76
|
}
|
|
55
77
|
exports.getKiroCLIAuthFlag = getKiroCLIAuthFlag;
|
|
78
|
+
function getKiroCLIAuthArgs(method, options) {
|
|
79
|
+
if (method !== 'idc') {
|
|
80
|
+
return [getKiroCLIAuthFlag(method)];
|
|
81
|
+
}
|
|
82
|
+
const startUrl = options?.idcStartUrl?.trim();
|
|
83
|
+
if (!startUrl) {
|
|
84
|
+
throw new Error('Kiro IDC login requires --kiro-idc-start-url');
|
|
85
|
+
}
|
|
86
|
+
const args = [getKiroCLIAuthFlag('idc'), '--kiro-idc-start-url', startUrl];
|
|
87
|
+
const region = options?.idcRegion?.trim();
|
|
88
|
+
if (region) {
|
|
89
|
+
args.push('--kiro-idc-region', region);
|
|
90
|
+
}
|
|
91
|
+
args.push('--kiro-idc-flow', normalizeKiroIDCFlow(options?.idcFlow));
|
|
92
|
+
return args;
|
|
93
|
+
}
|
|
94
|
+
exports.getKiroCLIAuthArgs = getKiroCLIAuthArgs;
|
|
56
95
|
/**
|
|
57
96
|
* Kiro method for CLIProxyAPI management endpoint:
|
|
58
97
|
* GET /v0/management/kiro-auth-url?method=<value>
|
|
@@ -63,6 +102,8 @@ function toKiroManagementMethod(method) {
|
|
|
63
102
|
return 'google';
|
|
64
103
|
case 'github':
|
|
65
104
|
return 'github';
|
|
105
|
+
case 'idc':
|
|
106
|
+
return null;
|
|
66
107
|
case 'aws-authcode':
|
|
67
108
|
return 'aws';
|
|
68
109
|
case 'aws':
|
|
@@ -191,10 +232,17 @@ function getManagementAuthUrlPath(provider) {
|
|
|
191
232
|
return `/v0/management/${authUrlProvider}-auth-url?is_webui=true`;
|
|
192
233
|
}
|
|
193
234
|
exports.getManagementAuthUrlPath = getManagementAuthUrlPath;
|
|
194
|
-
function getPasteCallbackStartPath(provider) {
|
|
195
|
-
// Kiro CLI auth methods still use the legacy start route.
|
|
235
|
+
function getPasteCallbackStartPath(provider, options) {
|
|
196
236
|
if (provider === 'kiro') {
|
|
197
|
-
|
|
237
|
+
const kiroMethod = options?.kiroMethod ?? normalizeKiroAuthMethod();
|
|
238
|
+
if (kiroMethod === 'aws-authcode' || kiroMethod === 'idc') {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
const managementMethod = toKiroManagementMethod(kiroMethod);
|
|
242
|
+
if (!managementMethod) {
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
return `${getManagementAuthUrlPath(provider)}&method=${encodeURIComponent(managementMethod)}`;
|
|
198
246
|
}
|
|
199
247
|
return getManagementAuthUrlPath(provider);
|
|
200
248
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-types.js","sourceRoot":"","sources":["../../../src/cliproxy/auth/auth-types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,oEAQkC;AAElC
|
|
1
|
+
{"version":3,"file":"auth-types.js","sourceRoot":"","sources":["../../../src/cliproxy/auth/auth-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { CLIProxyProvider } from '../types';
|
|
13
13
|
import { AccountInfo } from '../account-manager';
|
|
14
14
|
import { OAuthOptions } from './auth-types';
|
|
15
|
+
import { ProviderTokenSnapshot } from './token-manager';
|
|
15
16
|
import { type ProxyTarget } from '../proxy-target-resolver';
|
|
16
17
|
interface PasteCallbackStartData {
|
|
17
18
|
url?: string;
|
|
@@ -19,9 +20,13 @@ interface PasteCallbackStartData {
|
|
|
19
20
|
state?: string;
|
|
20
21
|
status?: string;
|
|
21
22
|
}
|
|
22
|
-
export declare function requestPasteCallbackStart(provider: CLIProxyProvider, target: ProxyTarget
|
|
23
|
+
export declare function requestPasteCallbackStart(provider: CLIProxyProvider, target: ProxyTarget, options?: {
|
|
24
|
+
kiroMethod?: OAuthOptions['kiroMethod'];
|
|
25
|
+
}): Promise<PasteCallbackStartData>;
|
|
23
26
|
export declare function getCliAuthNicknameError(provider: CLIProxyProvider, nickname: string | undefined, existingAccounts: Array<Pick<AccountInfo, 'id' | 'nickname'>>, allowExistingAccountId?: string): string | null;
|
|
27
|
+
export declare function findNewTokenSnapshotForManualAuth(provider: CLIProxyProvider, tokenDir: string, knownTokenFiles: ProviderTokenSnapshot[], expectedAccountId?: string): ProviderTokenSnapshot | null;
|
|
24
28
|
export declare function resolvePasteCallbackAuthUrl(target: ProxyTarget, startData: PasteCallbackStartData, timeoutMs: number, pollIntervalMs?: number): Promise<string | null>;
|
|
29
|
+
export declare function usesKiroLocalCallbackReplay(method: OAuthOptions['kiroMethod'], idcFlow: OAuthOptions['kiroIDCFlow']): boolean;
|
|
25
30
|
/**
|
|
26
31
|
* Trigger OAuth flow for provider
|
|
27
32
|
* Auto-detects headless environment and uses --no-browser flag accordingly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-handler.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/oauth-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,WAAW,EAQZ,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,YAAY,
|
|
1
|
+
{"version":3,"file":"oauth-handler.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/auth/oauth-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,WAAW,EAQZ,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,YAAY,EAcb,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,qBAAqB,EAMtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AASlC,UAAU,sBAAsB;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CAAE,GACpD,OAAO,CAAC,sBAAsB,CAAC,CAkBjC;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,UAAU,CAAC,CAAC,EAC7D,sBAAsB,CAAC,EAAE,MAAM,GAC9B,MAAM,GAAG,IAAI,CAef;AAkBD,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,qBAAqB,EAAE,EACxC,iBAAiB,CAAC,EAAE,MAAM,GACzB,qBAAqB,GAAG,IAAI,CAE9B;AAkED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,sBAAsB,EACjC,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,MAAiD,GAChE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwCxB;AAgLD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAClC,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,GACnC,OAAO,CAMT;AA0MD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA6N7B;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"}
|
|
@@ -34,7 +34,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
34
34
|
return result;
|
|
35
35
|
};
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
-
exports.ensureAuth = exports.triggerOAuth = exports.resolvePasteCallbackAuthUrl = exports.getCliAuthNicknameError = exports.requestPasteCallbackStart = void 0;
|
|
37
|
+
exports.ensureAuth = exports.triggerOAuth = exports.usesKiroLocalCallbackReplay = exports.resolvePasteCallbackAuthUrl = exports.findNewTokenSnapshotForManualAuth = exports.getCliAuthNicknameError = exports.requestPasteCallbackStart = void 0;
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
39
|
const ui_1 = require("../../utils/ui");
|
|
40
40
|
const binary_manager_1 = require("../binary-manager");
|
|
@@ -50,13 +50,16 @@ const proxy_target_resolver_1 = require("../proxy-target-resolver");
|
|
|
50
50
|
const account_safety_1 = require("../account-safety");
|
|
51
51
|
const antigravity_responsibility_1 = require("../antigravity-responsibility");
|
|
52
52
|
const PASTE_CALLBACK_AUTH_URL_POLL_INTERVAL_MS = 3000;
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
const POLLED_AUTH_LOCAL_TOKEN_GRACE_MS = 15 * 1000;
|
|
54
|
+
async function requestPasteCallbackStart(provider, target, options) {
|
|
55
|
+
const startPath = (0, auth_types_1.getPasteCallbackStartPath)(provider, {
|
|
56
|
+
kiroMethod: options?.kiroMethod,
|
|
57
|
+
});
|
|
58
|
+
if (!startPath) {
|
|
59
|
+
throw new Error(`Paste-callback start is not available for ${provider} with the selected method`);
|
|
60
|
+
}
|
|
55
61
|
const response = await fetch((0, proxy_target_resolver_1.buildProxyUrl)(target, startPath), {
|
|
56
|
-
|
|
57
|
-
headers: provider === 'kiro'
|
|
58
|
-
? (0, proxy_target_resolver_1.buildManagementHeaders)(target, { 'Content-Type': 'application/json' })
|
|
59
|
-
: (0, proxy_target_resolver_1.buildManagementHeaders)(target),
|
|
62
|
+
headers: (0, proxy_target_resolver_1.buildManagementHeaders)(target),
|
|
60
63
|
});
|
|
61
64
|
if (!response.ok) {
|
|
62
65
|
throw new Error(`OAuth start failed with status ${response.status}`);
|
|
@@ -81,6 +84,55 @@ exports.getCliAuthNicknameError = getCliAuthNicknameError;
|
|
|
81
84
|
function sleep(ms) {
|
|
82
85
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
83
86
|
}
|
|
87
|
+
function parseAuthUrlState(url) {
|
|
88
|
+
if (!url) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
return new URL(url).searchParams.get('state');
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function findNewTokenSnapshotForManualAuth(provider, tokenDir, knownTokenFiles, expectedAccountId) {
|
|
99
|
+
return (0, token_manager_1.findNewTokenSnapshotForAuthAttempt)(provider, tokenDir, knownTokenFiles, expectedAccountId);
|
|
100
|
+
}
|
|
101
|
+
exports.findNewTokenSnapshotForManualAuth = findNewTokenSnapshotForManualAuth;
|
|
102
|
+
async function waitForManualCallbackToken(provider, target, tokenDir, oauthState, knownTokenFiles, expectedAccountId, timeoutMs, pollIntervalMs = PASTE_CALLBACK_AUTH_URL_POLL_INTERVAL_MS) {
|
|
103
|
+
const deadline = Date.now() + timeoutMs;
|
|
104
|
+
let upstreamCompletedAt = null;
|
|
105
|
+
while (Date.now() < deadline) {
|
|
106
|
+
const tokenSnapshot = findNewTokenSnapshotForManualAuth(provider, tokenDir, knownTokenFiles, expectedAccountId);
|
|
107
|
+
if (tokenSnapshot) {
|
|
108
|
+
return { tokenSnapshot };
|
|
109
|
+
}
|
|
110
|
+
if (oauthState) {
|
|
111
|
+
const response = await fetch((0, proxy_target_resolver_1.buildProxyUrl)(target, `/v0/management/get-auth-status?state=${encodeURIComponent(oauthState)}`), { headers: (0, proxy_target_resolver_1.buildManagementHeaders)(target) });
|
|
112
|
+
if (response.ok) {
|
|
113
|
+
const data = (await response.json());
|
|
114
|
+
if (data.status === 'error') {
|
|
115
|
+
return {
|
|
116
|
+
tokenSnapshot: null,
|
|
117
|
+
error: data.error || 'Authentication failed while waiting for local token persistence',
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
if (data.status === 'ok' && upstreamCompletedAt === null) {
|
|
121
|
+
upstreamCompletedAt = Date.now();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (upstreamCompletedAt !== null &&
|
|
126
|
+
Date.now() - upstreamCompletedAt >= POLLED_AUTH_LOCAL_TOKEN_GRACE_MS) {
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
if (Date.now() + pollIntervalMs >= deadline) {
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
await sleep(pollIntervalMs);
|
|
133
|
+
}
|
|
134
|
+
return { tokenSnapshot: null };
|
|
135
|
+
}
|
|
84
136
|
async function resolvePasteCallbackAuthUrl(target, startData, timeoutMs, pollIntervalMs = PASTE_CALLBACK_AUTH_URL_POLL_INTERVAL_MS) {
|
|
85
137
|
const authUrl = startData.url || startData.auth_url;
|
|
86
138
|
if (authUrl) {
|
|
@@ -223,11 +275,43 @@ async function prepareBinary(provider, verbose) {
|
|
|
223
275
|
throw error;
|
|
224
276
|
}
|
|
225
277
|
}
|
|
278
|
+
function buildOAuthArgs(provider, configPath, headless, noIncognito, options = {}) {
|
|
279
|
+
const args = ['--config', configPath];
|
|
280
|
+
if (provider === 'kiro') {
|
|
281
|
+
const method = (0, auth_types_1.normalizeKiroAuthMethod)(options.kiroMethod);
|
|
282
|
+
if (!(0, auth_types_1.isKiroCLIAuthMethod)(method)) {
|
|
283
|
+
throw new Error(`Kiro auth method '${method}' is not supported by CLI flow.`);
|
|
284
|
+
}
|
|
285
|
+
args.push(...(0, auth_types_1.getKiroCLIAuthArgs)(method, {
|
|
286
|
+
idcStartUrl: options.kiroIDCStartUrl,
|
|
287
|
+
idcRegion: options.kiroIDCRegion,
|
|
288
|
+
idcFlow: options.kiroIDCFlow,
|
|
289
|
+
}));
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
args.push((0, auth_types_1.getOAuthConfig)(provider).authFlag);
|
|
293
|
+
}
|
|
294
|
+
if (headless) {
|
|
295
|
+
args.push('--no-browser');
|
|
296
|
+
}
|
|
297
|
+
if (provider === 'kiro' && noIncognito) {
|
|
298
|
+
args.push('--no-incognito');
|
|
299
|
+
}
|
|
300
|
+
return args;
|
|
301
|
+
}
|
|
302
|
+
function usesKiroLocalCallbackReplay(method, idcFlow) {
|
|
303
|
+
const normalizedMethod = (0, auth_types_1.normalizeKiroAuthMethod)(method);
|
|
304
|
+
if (normalizedMethod === 'aws-authcode') {
|
|
305
|
+
return true;
|
|
306
|
+
}
|
|
307
|
+
return normalizedMethod === 'idc' && (0, auth_types_1.normalizeKiroIDCFlow)(idcFlow) === 'authcode';
|
|
308
|
+
}
|
|
309
|
+
exports.usesKiroLocalCallbackReplay = usesKiroLocalCallbackReplay;
|
|
226
310
|
/**
|
|
227
311
|
* Handle paste-callback mode: show auth URL, prompt for callback paste
|
|
228
312
|
* Uses proxy target resolver to connect to correct CLIProxyAPI instance (local or remote)
|
|
229
313
|
*/
|
|
230
|
-
async function handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir, nickname, expectedAccountId) {
|
|
314
|
+
async function handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir, nickname, expectedAccountId, options) {
|
|
231
315
|
// Resolve CLIProxyAPI target (local or remote based on config)
|
|
232
316
|
const target = (0, proxy_target_resolver_1.getProxyTarget)();
|
|
233
317
|
// OAuth state timeout (10 minutes, matches CLIProxyAPI state TTL)
|
|
@@ -235,12 +319,13 @@ async function handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir,
|
|
|
235
319
|
console.log('');
|
|
236
320
|
console.log((0, ui_1.info)(`Starting ${oauthConfig.displayName} OAuth (paste-callback mode)...`));
|
|
237
321
|
try {
|
|
238
|
-
// Request auth URL from CLIProxyAPI
|
|
239
|
-
//
|
|
240
|
-
// management auth-url contract used by providers like Claude.
|
|
322
|
+
// Request auth URL from CLIProxyAPI management endpoints when the selected
|
|
323
|
+
// provider/method supports the manual start-url contract.
|
|
241
324
|
let startData;
|
|
242
325
|
try {
|
|
243
|
-
startData = await requestPasteCallbackStart(provider, target
|
|
326
|
+
startData = await requestPasteCallbackStart(provider, target, {
|
|
327
|
+
kiroMethod: options?.kiroMethod,
|
|
328
|
+
});
|
|
244
329
|
}
|
|
245
330
|
catch (error) {
|
|
246
331
|
const startError = error.message;
|
|
@@ -253,6 +338,8 @@ async function handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir,
|
|
|
253
338
|
console.log((0, ui_1.fail)('No authorization URL received'));
|
|
254
339
|
return null;
|
|
255
340
|
}
|
|
341
|
+
const oauthState = startData.state || parseAuthUrlState(authUrl);
|
|
342
|
+
const knownTokenFiles = (0, token_manager_1.listProviderTokenSnapshots)(provider, tokenDir);
|
|
256
343
|
// Display auth URL in box
|
|
257
344
|
console.log('');
|
|
258
345
|
console.log(' ╔══════════════════════════════════════════════════════════════╗');
|
|
@@ -328,8 +415,23 @@ async function handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir,
|
|
|
328
415
|
(0, account_safety_1.warnPossible403Ban)(provider, callbackError);
|
|
329
416
|
return null;
|
|
330
417
|
}
|
|
418
|
+
console.log((0, ui_1.info)('Callback submitted. Waiting for token exchange...'));
|
|
419
|
+
const { tokenSnapshot, error: tokenWaitError } = await waitForManualCallbackToken(provider, target, tokenDir, oauthState, knownTokenFiles, expectedAccountId, OAUTH_STATE_TIMEOUT_MS);
|
|
420
|
+
if (tokenWaitError) {
|
|
421
|
+
console.log((0, ui_1.fail)(tokenWaitError));
|
|
422
|
+
(0, account_safety_1.warnPossible403Ban)(provider, tokenWaitError);
|
|
423
|
+
return null;
|
|
424
|
+
}
|
|
425
|
+
if (!tokenSnapshot) {
|
|
426
|
+
console.log((0, ui_1.fail)('Authentication completed upstream, but no new local token was saved for this account. Update CCS/CLIProxy and retry.'));
|
|
427
|
+
return null;
|
|
428
|
+
}
|
|
429
|
+
const account = (0, token_manager_1.registerAccountFromToken)(provider, tokenDir, nickname, verbose, tokenSnapshot.file);
|
|
430
|
+
if (!account) {
|
|
431
|
+
console.log((0, ui_1.fail)('Authenticated token could not be matched to the requested account. Retry the flow.'));
|
|
432
|
+
return null;
|
|
433
|
+
}
|
|
331
434
|
console.log((0, ui_1.ok)('Authentication successful!'));
|
|
332
|
-
const account = (0, token_manager_1.registerAccountFromToken)(provider, tokenDir, nickname, verbose, expectedAccountId);
|
|
333
435
|
// Account safety: check for cross-provider conflicts
|
|
334
436
|
if (account?.email) {
|
|
335
437
|
const conflicts = (0, account_safety_1.checkNewAccountConflict)(provider, account.email);
|
|
@@ -362,6 +464,7 @@ async function triggerOAuth(provider, options = {}) {
|
|
|
362
464
|
const acceptAgyRisk = options.acceptAgyRisk === true;
|
|
363
465
|
const { nickname } = options;
|
|
364
466
|
const resolvedKiroMethod = provider === 'kiro' ? (0, auth_types_1.normalizeKiroAuthMethod)(options.kiroMethod) : auth_types_1.DEFAULT_KIRO_AUTH_METHOD;
|
|
467
|
+
const resolvedKiroIDCFlow = provider === 'kiro' ? (0, auth_types_1.normalizeKiroIDCFlow)(options.kiroIDCFlow) : auth_types_1.DEFAULT_KIRO_IDC_FLOW;
|
|
365
468
|
if (provider === 'agy') {
|
|
366
469
|
if (fromUI && !acceptAgyRisk) {
|
|
367
470
|
console.log((0, ui_1.fail)('Antigravity OAuth blocked: responsibility acknowledgement is missing.'));
|
|
@@ -388,11 +491,6 @@ async function triggerOAuth(provider, options = {}) {
|
|
|
388
491
|
console.log((0, ui_1.fail)(nicknameError));
|
|
389
492
|
return null;
|
|
390
493
|
}
|
|
391
|
-
// Handle paste-callback mode
|
|
392
|
-
if (options.pasteCallback) {
|
|
393
|
-
const tokenDir = (0, token_manager_1.getProviderTokenDir)(provider);
|
|
394
|
-
return handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir, nickname, existingNameMatch?.id);
|
|
395
|
-
}
|
|
396
494
|
// Handle --import flag: skip OAuth and import from Kiro IDE directly
|
|
397
495
|
if (options.import && provider === 'kiro') {
|
|
398
496
|
const tokenDir = (0, token_manager_1.getProviderTokenDir)(provider);
|
|
@@ -407,34 +505,38 @@ async function triggerOAuth(provider, options = {}) {
|
|
|
407
505
|
console.log(' Use: ccs config -> Accounts -> Add Kiro account -> Method: GitHub OAuth');
|
|
408
506
|
return null;
|
|
409
507
|
}
|
|
410
|
-
const callbackPort = provider === 'kiro'
|
|
508
|
+
const callbackPort = provider === 'kiro'
|
|
509
|
+
? (0, auth_types_1.getKiroCallbackPort)(resolvedKiroMethod, { idcFlow: resolvedKiroIDCFlow })
|
|
510
|
+
: oauth_port_diagnostics_1.OAUTH_CALLBACK_PORTS[provider];
|
|
411
511
|
const isCLI = !fromUI;
|
|
412
512
|
const headless = options.headless ?? (0, environment_detector_1.isHeadlessEnvironment)();
|
|
413
|
-
const isDeviceCodeFlow = provider === 'kiro'
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
authFlag = (0, auth_types_1.getKiroCLIAuthFlag)(resolvedKiroMethod);
|
|
513
|
+
const isDeviceCodeFlow = provider === 'kiro'
|
|
514
|
+
? (0, auth_types_1.isKiroDeviceCodeMethod)(resolvedKiroMethod, { idcFlow: resolvedKiroIDCFlow })
|
|
515
|
+
: callbackPort === null;
|
|
516
|
+
let selectedPasteCallback = options.pasteCallback === true;
|
|
517
|
+
if (provider === 'kiro' && !(0, auth_types_1.isKiroCLIAuthMethod)(resolvedKiroMethod)) {
|
|
518
|
+
console.log((0, ui_1.fail)(`Kiro auth method '${resolvedKiroMethod}' is not supported by CLI flow.`));
|
|
519
|
+
console.log(' Use Dashboard management OAuth for this method.');
|
|
520
|
+
return null;
|
|
422
521
|
}
|
|
423
522
|
// Interactive mode selection for headless environments
|
|
424
523
|
// Skip if explicit mode flag provided or device code flow (no callback needed)
|
|
425
|
-
if (headless && !
|
|
524
|
+
if (headless && !selectedPasteCallback && !options.portForward && !isDeviceCodeFlow) {
|
|
426
525
|
// Non-interactive environment (piped input) - default to paste mode
|
|
427
526
|
if (!process.stdin.isTTY) {
|
|
428
|
-
|
|
429
|
-
return handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir, nickname, existingNameMatch?.id);
|
|
527
|
+
selectedPasteCallback = true;
|
|
430
528
|
}
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
529
|
+
else {
|
|
530
|
+
const mode = await promptOAuthModeChoice(callbackPort);
|
|
531
|
+
if (mode === 'paste') {
|
|
532
|
+
selectedPasteCallback = true;
|
|
533
|
+
}
|
|
435
534
|
}
|
|
436
|
-
// mode === 'forward' continues to existing port-forwarding flow below
|
|
437
535
|
}
|
|
536
|
+
const useSelectedKiroLocalPasteCallback = selectedPasteCallback &&
|
|
537
|
+
provider === 'kiro' &&
|
|
538
|
+
usesKiroLocalCallbackReplay(resolvedKiroMethod, resolvedKiroIDCFlow);
|
|
539
|
+
const useSelectedKiroDirectCliFlow = provider === 'kiro' && (isDeviceCodeFlow || useSelectedKiroLocalPasteCallback);
|
|
438
540
|
if (existingAccounts.length > 0 && !add) {
|
|
439
541
|
console.log('');
|
|
440
542
|
console.log((0, ui_1.info)(`${existingAccounts.length} account(s) already authenticated for ${oauthConfig.displayName}`));
|
|
@@ -443,6 +545,10 @@ async function triggerOAuth(provider, options = {}) {
|
|
|
443
545
|
return null;
|
|
444
546
|
}
|
|
445
547
|
}
|
|
548
|
+
if (selectedPasteCallback && !useSelectedKiroDirectCliFlow) {
|
|
549
|
+
const tokenDir = (0, token_manager_1.getProviderTokenDir)(provider);
|
|
550
|
+
return handlePasteCallbackMode(provider, oauthConfig, verbose, tokenDir, nickname, existingNameMatch?.id, { kiroMethod: provider === 'kiro' ? resolvedKiroMethod : undefined });
|
|
551
|
+
}
|
|
446
552
|
// Pre-flight checks (skip for device code flows which don't need callback ports)
|
|
447
553
|
if (!isDeviceCodeFlow && !(await runPreflightChecks(provider, oauthConfig))) {
|
|
448
554
|
return null;
|
|
@@ -461,14 +567,19 @@ async function triggerOAuth(provider, options = {}) {
|
|
|
461
567
|
console.error(`[auth] Freed port ${localCallbackPort} for OAuth callback`);
|
|
462
568
|
}
|
|
463
569
|
}
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
args
|
|
570
|
+
const processHeadless = selectedPasteCallback && provider === 'kiro' ? true : headless;
|
|
571
|
+
let args;
|
|
572
|
+
try {
|
|
573
|
+
args = buildOAuthArgs(provider, configPath, processHeadless, noIncognito, {
|
|
574
|
+
kiroMethod: provider === 'kiro' ? resolvedKiroMethod : undefined,
|
|
575
|
+
kiroIDCStartUrl: options.kiroIDCStartUrl,
|
|
576
|
+
kiroIDCRegion: options.kiroIDCRegion,
|
|
577
|
+
kiroIDCFlow: provider === 'kiro' ? resolvedKiroIDCFlow : undefined,
|
|
578
|
+
});
|
|
468
579
|
}
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
580
|
+
catch (error) {
|
|
581
|
+
console.log((0, ui_1.fail)(error.message));
|
|
582
|
+
return null;
|
|
472
583
|
}
|
|
473
584
|
// Show step based on flow type
|
|
474
585
|
if (isDeviceCodeFlow) {
|
|
@@ -479,7 +590,13 @@ async function triggerOAuth(provider, options = {}) {
|
|
|
479
590
|
else {
|
|
480
591
|
(0, environment_detector_1.showStep)(2, 4, 'progress', `Starting callback server on port ${callbackPort}...`);
|
|
481
592
|
// Show headless instructions (only for authorization code flows)
|
|
482
|
-
if (
|
|
593
|
+
if (useSelectedKiroLocalPasteCallback) {
|
|
594
|
+
console.log('');
|
|
595
|
+
console.log((0, ui_1.info)('Paste-callback mode enabled for Kiro CLI auth.'));
|
|
596
|
+
console.log(' CCS will print the authorization URL and wait for you to paste the final callback URL.');
|
|
597
|
+
console.log('');
|
|
598
|
+
}
|
|
599
|
+
else if (headless) {
|
|
483
600
|
console.log('');
|
|
484
601
|
console.log((0, ui_1.warn)('PORT FORWARDING REQUIRED'));
|
|
485
602
|
console.log(` OAuth callback uses localhost:${callbackPort} which must be reachable.`);
|
|
@@ -496,11 +613,14 @@ async function triggerOAuth(provider, options = {}) {
|
|
|
496
613
|
tokenDir,
|
|
497
614
|
oauthConfig,
|
|
498
615
|
callbackPort,
|
|
499
|
-
headless,
|
|
616
|
+
headless: processHeadless,
|
|
500
617
|
verbose,
|
|
501
618
|
isCLI,
|
|
502
619
|
nickname,
|
|
503
620
|
expectedAccountId: existingNameMatch?.id,
|
|
621
|
+
authFlowType: isDeviceCodeFlow ? 'device_code' : 'authorization_code',
|
|
622
|
+
kiroMethod: provider === 'kiro' ? resolvedKiroMethod : undefined,
|
|
623
|
+
manualCallback: useSelectedKiroLocalPasteCallback,
|
|
504
624
|
});
|
|
505
625
|
// Show hint for Kiro users about --no-incognito option (first-time auth only)
|
|
506
626
|
if (account && provider === 'kiro' && !noIncognito) {
|