@kaitranntt/ccs 8.4.0-dev.1 → 8.4.0-dev.11
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 +1 -1
- package/config/base-claude.settings.json +1 -1
- package/dist/api/services/cliproxy-profile-bridge.d.ts.map +1 -1
- package/dist/api/services/cliproxy-profile-bridge.js +20 -9
- package/dist/api/services/cliproxy-profile-bridge.js.map +1 -1
- package/dist/auth/profile-registry.d.ts.map +1 -1
- package/dist/auth/profile-registry.js +13 -12
- package/dist/auth/profile-registry.js.map +1 -1
- package/dist/cliproxy/accounts/account-safety.d.ts.map +1 -1
- package/dist/cliproxy/accounts/account-safety.js +56 -56
- package/dist/cliproxy/accounts/account-safety.js.map +1 -1
- package/dist/cliproxy/auth/antigravity-responsibility.d.ts.map +1 -1
- package/dist/cliproxy/auth/antigravity-responsibility.js +15 -15
- package/dist/cliproxy/auth/antigravity-responsibility.js.map +1 -1
- package/dist/cliproxy/auth/auth-token-manager.d.ts.map +1 -1
- package/dist/cliproxy/auth/auth-token-manager.js +2 -1
- package/dist/cliproxy/auth/auth-token-manager.js.map +1 -1
- package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
- package/dist/cliproxy/auth/auth-types.js +3 -2
- package/dist/cliproxy/auth/auth-types.js.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.js +6 -5
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
- package/dist/cliproxy/auth/provider-refreshers/index.d.ts.map +1 -1
- package/dist/cliproxy/auth/provider-refreshers/index.js +2 -1
- package/dist/cliproxy/auth/provider-refreshers/index.js.map +1 -1
- package/dist/cliproxy/config/env-builder.d.ts +19 -2
- package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
- package/dist/cliproxy/config/env-builder.js +58 -9
- package/dist/cliproxy/config/env-builder.js.map +1 -1
- package/dist/cliproxy/config/model-config.d.ts.map +1 -1
- package/dist/cliproxy/config/model-config.js +32 -32
- package/dist/cliproxy/config/model-config.js.map +1 -1
- package/dist/cliproxy/executor/arg-parser.d.ts.map +1 -1
- package/dist/cliproxy/executor/arg-parser.js +26 -26
- package/dist/cliproxy/executor/arg-parser.js.map +1 -1
- package/dist/cliproxy/executor/auth-coordinator.d.ts.map +1 -1
- package/dist/cliproxy/executor/auth-coordinator.js +15 -14
- package/dist/cliproxy/executor/auth-coordinator.js.map +1 -1
- package/dist/cliproxy/executor/browser-launch-setup.d.ts.map +1 -1
- package/dist/cliproxy/executor/browser-launch-setup.js +6 -2
- package/dist/cliproxy/executor/browser-launch-setup.js.map +1 -1
- package/dist/cliproxy/executor/index.d.ts.map +1 -1
- package/dist/cliproxy/executor/index.js +17 -13
- package/dist/cliproxy/executor/index.js.map +1 -1
- package/dist/cliproxy/executor/lifecycle-manager.d.ts.map +1 -1
- package/dist/cliproxy/executor/lifecycle-manager.js +18 -16
- package/dist/cliproxy/executor/lifecycle-manager.js.map +1 -1
- package/dist/cliproxy/executor/model-warnings.d.ts.map +1 -1
- package/dist/cliproxy/executor/model-warnings.js +24 -13
- package/dist/cliproxy/executor/model-warnings.js.map +1 -1
- package/dist/cliproxy/executor/retry-handler.d.ts.map +1 -1
- package/dist/cliproxy/executor/retry-handler.js +13 -11
- package/dist/cliproxy/executor/retry-handler.js.map +1 -1
- package/dist/cliproxy/executor/session-bridge.d.ts.map +1 -1
- package/dist/cliproxy/executor/session-bridge.js +18 -10
- package/dist/cliproxy/executor/session-bridge.js.map +1 -1
- package/dist/cliproxy/management/remote-token-uploader.d.ts.map +1 -1
- package/dist/cliproxy/management/remote-token-uploader.js +11 -11
- package/dist/cliproxy/management/remote-token-uploader.js.map +1 -1
- package/dist/cliproxy/proxy/https-tunnel-proxy.d.ts +5 -1
- package/dist/cliproxy/proxy/https-tunnel-proxy.d.ts.map +1 -1
- package/dist/cliproxy/proxy/https-tunnel-proxy.js +22 -10
- package/dist/cliproxy/proxy/https-tunnel-proxy.js.map +1 -1
- package/dist/cliproxy/proxy/tool-sanitization-proxy.d.ts +0 -12
- package/dist/cliproxy/proxy/tool-sanitization-proxy.d.ts.map +1 -1
- package/dist/cliproxy/proxy/tool-sanitization-proxy.js +42 -72
- package/dist/cliproxy/proxy/tool-sanitization-proxy.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.d.ts +21 -0
- package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.js +154 -0
- package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.d.ts +35 -0
- package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.js +98 -0
- package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.d.ts +22 -0
- package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.js +111 -0
- package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.d.ts +17 -0
- package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.js +85 -0
- package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/constants.d.ts +25 -0
- package/dist/cliproxy/quota/quota-fetcher/constants.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/constants.js +31 -0
- package/dist/cliproxy/quota/quota-fetcher/constants.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/http-client.d.ts +29 -0
- package/dist/cliproxy/quota/quota-fetcher/http-client.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/http-client.js +199 -0
- package/dist/cliproxy/quota/quota-fetcher/http-client.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/project-lookup.d.ts +16 -0
- package/dist/cliproxy/quota/quota-fetcher/project-lookup.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/project-lookup.js +89 -0
- package/dist/cliproxy/quota/quota-fetcher/project-lookup.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/status-classifier.d.ts +29 -0
- package/dist/cliproxy/quota/quota-fetcher/status-classifier.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/status-classifier.js +168 -0
- package/dist/cliproxy/quota/quota-fetcher/status-classifier.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/types.d.ts +165 -0
- package/dist/cliproxy/quota/quota-fetcher/types.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher/types.js +9 -0
- package/dist/cliproxy/quota/quota-fetcher/types.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude.js +14 -3
- package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-codex.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-codex.js +36 -9
- package/dist/cliproxy/quota/quota-fetcher-codex.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.d.ts +26 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.js +132 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.d.ts +23 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.js +54 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.d.ts +26 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.js +29 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.d.ts +61 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.js +259 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.d.ts +20 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.js +38 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.d.ts +82 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.js +263 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.d.ts +46 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.js +188 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.d.ts +35 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.js +65 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.d.ts +37 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.js +117 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.d.ts +31 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.js +77 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.d.ts +114 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.js +10 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli.d.ts +13 -58
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli.js +20 -819
- package/dist/cliproxy/quota/quota-fetcher-gemini-cli.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-ghcp.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-ghcp.js +19 -4
- package/dist/cliproxy/quota/quota-fetcher-ghcp.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher.d.ts +12 -108
- package/dist/cliproxy/quota/quota-fetcher.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher.js +23 -766
- package/dist/cliproxy/quota/quota-fetcher.js.map +1 -1
- package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-manager.js +7 -3
- package/dist/cliproxy/quota/quota-manager.js.map +1 -1
- package/dist/cliproxy/routing/routing-strategy.d.ts.map +1 -1
- package/dist/cliproxy/routing/routing-strategy.js +11 -3
- package/dist/cliproxy/routing/routing-strategy.js.map +1 -1
- package/dist/commands/bar/bar-server-probe.d.ts +16 -3
- package/dist/commands/bar/bar-server-probe.d.ts.map +1 -1
- package/dist/commands/bar/bar-server-probe.js +83 -18
- package/dist/commands/bar/bar-server-probe.js.map +1 -1
- package/dist/commands/bar/help-subcommand.d.ts.map +1 -1
- package/dist/commands/bar/help-subcommand.js +2 -2
- package/dist/commands/bar/help-subcommand.js.map +1 -1
- package/dist/commands/bar/install-subcommand.d.ts +4 -10
- package/dist/commands/bar/install-subcommand.d.ts.map +1 -1
- package/dist/commands/bar/install-subcommand.js +44 -53
- package/dist/commands/bar/install-subcommand.js.map +1 -1
- package/dist/commands/bar/launch-subcommand.d.ts +11 -1
- package/dist/commands/bar/launch-subcommand.d.ts.map +1 -1
- package/dist/commands/bar/launch-subcommand.js +82 -15
- package/dist/commands/bar/launch-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts +26 -0
- package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js +82 -0
- package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.d.ts +41 -0
- package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.js +202 -0
- package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/format-helpers.d.ts +32 -0
- package/dist/commands/cliproxy/quota-subcommand/format-helpers.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/format-helpers.js +90 -0
- package/dist/commands/cliproxy/quota-subcommand/format-helpers.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/handlers.d.ts +25 -0
- package/dist/commands/cliproxy/quota-subcommand/handlers.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/handlers.js +245 -0
- package/dist/commands/cliproxy/quota-subcommand/handlers.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/profile-args.d.ts +10 -0
- package/dist/commands/cliproxy/quota-subcommand/profile-args.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/profile-args.js +37 -0
- package/dist/commands/cliproxy/quota-subcommand/profile-args.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/provider-runtime.d.ts +12 -0
- package/dist/commands/cliproxy/quota-subcommand/provider-runtime.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/provider-runtime.js +64 -0
- package/dist/commands/cliproxy/quota-subcommand/provider-runtime.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.d.ts +27 -0
- package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.js +74 -0
- package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.d.ts +10 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.js +46 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/claude.d.ts +14 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/claude.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/claude.js +68 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/claude.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/codex.d.ts +14 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/codex.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/codex.js +82 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/codex.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.d.ts +14 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.js +61 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.d.ts +13 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.js +63 -0
- package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/test-exports.d.ts +19 -0
- package/dist/commands/cliproxy/quota-subcommand/test-exports.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/test-exports.js +22 -0
- package/dist/commands/cliproxy/quota-subcommand/test-exports.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/types.d.ts +42 -0
- package/dist/commands/cliproxy/quota-subcommand/types.d.ts.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand/types.js +9 -0
- package/dist/commands/cliproxy/quota-subcommand/types.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand.d.ts +14 -36
- package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.js +21 -872
- package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
- package/dist/commands/config-channels-command.d.ts +1 -1
- package/dist/commands/config-channels-command.d.ts.map +1 -1
- package/dist/commands/config-channels-command.js +3 -3
- package/dist/commands/config-channels-command.js.map +1 -1
- package/dist/commands/config-command-options.d.ts.map +1 -1
- package/dist/commands/config-command-options.js +11 -2
- package/dist/commands/config-command-options.js.map +1 -1
- package/dist/commands/persist-command/arg-parsing.d.ts +14 -0
- package/dist/commands/persist-command/arg-parsing.d.ts.map +1 -0
- package/dist/commands/persist-command/arg-parsing.js +84 -0
- package/dist/commands/persist-command/arg-parsing.js.map +1 -0
- package/dist/commands/persist-command/backup-rotation.d.ts +23 -0
- package/dist/commands/persist-command/backup-rotation.d.ts.map +1 -0
- package/dist/commands/persist-command/backup-rotation.js +260 -0
- package/dist/commands/persist-command/backup-rotation.js.map +1 -0
- package/dist/commands/persist-command/handler.d.ts +10 -0
- package/dist/commands/persist-command/handler.d.ts.map +1 -0
- package/dist/commands/persist-command/handler.js +267 -0
- package/dist/commands/persist-command/handler.js.map +1 -0
- package/dist/commands/persist-command/help.d.ts +9 -0
- package/dist/commands/persist-command/help.d.ts.map +1 -0
- package/dist/commands/persist-command/help.js +86 -0
- package/dist/commands/persist-command/help.js.map +1 -0
- package/dist/commands/persist-command/receipt.d.ts +13 -0
- package/dist/commands/persist-command/receipt.d.ts.map +1 -0
- package/dist/commands/persist-command/receipt.js +102 -0
- package/dist/commands/persist-command/receipt.js.map +1 -0
- package/dist/commands/persist-command/secret-detection.d.ts +11 -0
- package/dist/commands/persist-command/secret-detection.d.ts.map +1 -0
- package/dist/commands/persist-command/secret-detection.js +54 -0
- package/dist/commands/persist-command/secret-detection.js.map +1 -0
- package/dist/commands/persist-command/secure-file.d.ts +21 -0
- package/dist/commands/persist-command/secure-file.d.ts.map +1 -0
- package/dist/commands/persist-command/secure-file.js +231 -0
- package/dist/commands/persist-command/secure-file.js.map +1 -0
- package/dist/commands/persist-command/types.d.ts +42 -0
- package/dist/commands/persist-command/types.d.ts.map +1 -0
- package/dist/commands/persist-command/types.js +34 -0
- package/dist/commands/persist-command/types.js.map +1 -0
- package/dist/commands/persist-command.d.ts +7 -2
- package/dist/commands/persist-command.d.ts.map +1 -1
- package/dist/commands/persist-command.js +17 -933
- package/dist/commands/persist-command.js.map +1 -1
- package/dist/config/config-loader-facade.d.ts +1 -1
- package/dist/config/config-loader-facade.d.ts.map +1 -1
- package/dist/config/config-loader-facade.js +3 -1
- package/dist/config/config-loader-facade.js.map +1 -1
- package/dist/config/loader/config-getters.d.ts +16 -0
- package/dist/config/loader/config-getters.d.ts.map +1 -1
- package/dist/config/loader/config-getters.js +33 -1
- package/dist/config/loader/config-getters.js.map +1 -1
- package/dist/config/loader/defaults-merger.d.ts.map +1 -1
- package/dist/config/loader/defaults-merger.js +4 -0
- package/dist/config/loader/defaults-merger.js.map +1 -1
- package/dist/config/loader/yaml-serializer.d.ts.map +1 -1
- package/dist/config/loader/yaml-serializer.js +13 -0
- package/dist/config/loader/yaml-serializer.js.map +1 -1
- package/dist/config/schemas/index.d.ts +2 -0
- package/dist/config/schemas/index.d.ts.map +1 -1
- package/dist/config/schemas/index.js +5 -1
- package/dist/config/schemas/index.js.map +1 -1
- package/dist/config/schemas/runtime.d.ts +57 -0
- package/dist/config/schemas/runtime.d.ts.map +1 -0
- package/dist/config/schemas/runtime.js +51 -0
- package/dist/config/schemas/runtime.js.map +1 -0
- package/dist/config/schemas/unified-config.d.ts +3 -0
- package/dist/config/schemas/unified-config.d.ts.map +1 -1
- package/dist/config/schemas/unified-config.js.map +1 -1
- package/dist/config/unified-config-loader.d.ts +1 -1
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +3 -1
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/copilot/copilot-executor.js +25 -25
- package/dist/copilot/copilot-executor.js.map +1 -1
- package/dist/cursor/cursor-daemon-entry.d.ts.map +1 -1
- package/dist/cursor/cursor-daemon-entry.js +34 -9
- package/dist/cursor/cursor-daemon-entry.js.map +1 -1
- package/dist/cursor/cursor-daemon.d.ts.map +1 -1
- package/dist/cursor/cursor-daemon.js +1 -0
- package/dist/cursor/cursor-daemon.js.map +1 -1
- package/dist/cursor/cursor-profile-executor.d.ts.map +1 -1
- package/dist/cursor/cursor-profile-executor.js +18 -17
- package/dist/cursor/cursor-profile-executor.js.map +1 -1
- package/dist/delegation/delegation-handler.d.ts.map +1 -1
- package/dist/delegation/delegation-handler.js +29 -23
- package/dist/delegation/delegation-handler.js.map +1 -1
- package/dist/delegation/headless-executor.d.ts +1 -0
- package/dist/delegation/headless-executor.d.ts.map +1 -1
- package/dist/delegation/headless-executor.js +35 -14
- package/dist/delegation/headless-executor.js.map +1 -1
- package/dist/delegation/session-manager.d.ts.map +1 -1
- package/dist/delegation/session-manager.js +12 -4
- package/dist/delegation/session-manager.js.map +1 -1
- package/dist/dispatcher/cli-argument-parser.d.ts +1 -1
- package/dist/dispatcher/cli-argument-parser.d.ts.map +1 -1
- package/dist/dispatcher/cli-argument-parser.js +24 -23
- package/dist/dispatcher/cli-argument-parser.js.map +1 -1
- package/dist/dispatcher/flows/cliproxy-flow.d.ts.map +1 -1
- package/dist/dispatcher/flows/cliproxy-flow.js +12 -11
- package/dist/dispatcher/flows/cliproxy-flow.js.map +1 -1
- package/dist/dispatcher/flows/settings-flow.d.ts.map +1 -1
- package/dist/dispatcher/flows/settings-flow.js +27 -27
- package/dist/dispatcher/flows/settings-flow.js.map +1 -1
- package/dist/dispatcher/profile-resolver.d.ts +1 -1
- package/dist/dispatcher/profile-resolver.d.ts.map +1 -1
- package/dist/dispatcher/profile-resolver.js +36 -23
- package/dist/dispatcher/profile-resolver.js.map +1 -1
- package/dist/docker/supervisord-lifecycle.d.ts.map +1 -1
- package/dist/docker/supervisord-lifecycle.js +5 -1
- package/dist/docker/supervisord-lifecycle.js.map +1 -1
- package/dist/errors/error-types.d.ts +26 -22
- package/dist/errors/error-types.d.ts.map +1 -1
- package/dist/errors/error-types.js +15 -12
- package/dist/errors/error-types.js.map +1 -1
- package/dist/errors/exit-codes.d.ts +20 -13
- package/dist/errors/exit-codes.d.ts.map +1 -1
- package/dist/errors/exit-codes.js +32 -28
- package/dist/errors/exit-codes.js.map +1 -1
- package/dist/glmt/delta-accumulator.d.ts +1 -0
- package/dist/glmt/delta-accumulator.d.ts.map +1 -1
- package/dist/glmt/delta-accumulator.js +12 -4
- package/dist/glmt/delta-accumulator.js.map +1 -1
- package/dist/glmt/glmt-proxy.d.ts.map +1 -1
- package/dist/glmt/glmt-proxy.js +39 -10
- package/dist/glmt/glmt-proxy.js.map +1 -1
- package/dist/glmt/glmt-transformer.d.ts.map +1 -1
- package/dist/glmt/glmt-transformer.js +1 -4
- package/dist/glmt/glmt-transformer.js.map +1 -1
- package/dist/glmt/pipeline/request-transformer.d.ts.map +1 -1
- package/dist/glmt/pipeline/request-transformer.js +5 -1
- package/dist/glmt/pipeline/request-transformer.js.map +1 -1
- package/dist/glmt/pipeline/response-builder.d.ts.map +1 -1
- package/dist/glmt/pipeline/response-builder.js +7 -3
- package/dist/glmt/pipeline/response-builder.js.map +1 -1
- package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -1
- package/dist/glmt/pipeline/stream-parser.js +11 -5
- package/dist/glmt/pipeline/stream-parser.js.map +1 -1
- package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -1
- package/dist/glmt/pipeline/tool-call-handler.js +7 -1
- package/dist/glmt/pipeline/tool-call-handler.js.map +1 -1
- package/dist/glmt/sse-parser.d.ts +1 -0
- package/dist/glmt/sse-parser.d.ts.map +1 -1
- package/dist/glmt/sse-parser.js +7 -3
- package/dist/glmt/sse-parser.js.map +1 -1
- package/dist/management/shared-manager/fs-helpers.d.ts +69 -0
- package/dist/management/shared-manager/fs-helpers.d.ts.map +1 -0
- package/dist/management/shared-manager/fs-helpers.js +241 -0
- package/dist/management/shared-manager/fs-helpers.js.map +1 -0
- package/dist/management/shared-manager/migrations.d.ts +21 -0
- package/dist/management/shared-manager/migrations.d.ts.map +1 -0
- package/dist/management/shared-manager/migrations.js +187 -0
- package/dist/management/shared-manager/migrations.js.map +1 -0
- package/dist/management/shared-manager/orchestrator.d.ts +87 -0
- package/dist/management/shared-manager/orchestrator.d.ts.map +1 -0
- package/dist/management/shared-manager/orchestrator.js +161 -0
- package/dist/management/shared-manager/orchestrator.js.map +1 -0
- package/dist/management/shared-manager/plugin-layout-internals.d.ts +42 -0
- package/dist/management/shared-manager/plugin-layout-internals.d.ts.map +1 -0
- package/dist/management/shared-manager/plugin-layout-internals.js +192 -0
- package/dist/management/shared-manager/plugin-layout-internals.js.map +1 -0
- package/dist/management/shared-manager/plugin-metadata-normalizer.d.ts +53 -0
- package/dist/management/shared-manager/plugin-metadata-normalizer.d.ts.map +1 -0
- package/dist/management/shared-manager/plugin-metadata-normalizer.js +253 -0
- package/dist/management/shared-manager/plugin-metadata-normalizer.js.map +1 -0
- package/dist/management/shared-manager/project-context-sync.d.ts +36 -0
- package/dist/management/shared-manager/project-context-sync.d.ts.map +1 -0
- package/dist/management/shared-manager/project-context-sync.js +204 -0
- package/dist/management/shared-manager/project-context-sync.js.map +1 -0
- package/dist/management/shared-manager/project-memory-sync.d.ts +21 -0
- package/dist/management/shared-manager/project-memory-sync.d.ts.map +1 -0
- package/dist/management/shared-manager/project-memory-sync.js +113 -0
- package/dist/management/shared-manager/project-memory-sync.js.map +1 -0
- package/dist/management/shared-manager/shared-dir-linker.d.ts +41 -0
- package/dist/management/shared-manager/shared-dir-linker.d.ts.map +1 -0
- package/dist/management/shared-manager/shared-dir-linker.js +227 -0
- package/dist/management/shared-manager/shared-dir-linker.js.map +1 -0
- package/dist/management/shared-manager/symlink-helpers.d.ts +61 -0
- package/dist/management/shared-manager/symlink-helpers.d.ts.map +1 -0
- package/dist/management/shared-manager/symlink-helpers.js +243 -0
- package/dist/management/shared-manager/symlink-helpers.js.map +1 -0
- package/dist/management/shared-manager/types.d.ts +45 -0
- package/dist/management/shared-manager/types.d.ts.map +1 -0
- package/dist/management/shared-manager/types.js +57 -0
- package/dist/management/shared-manager/types.js.map +1 -0
- package/dist/management/shared-manager.d.ts +13 -160
- package/dist/management/shared-manager.d.ts.map +1 -1
- package/dist/management/shared-manager.js +18 -1294
- package/dist/management/shared-manager.js.map +1 -1
- package/dist/proxy/proxy-daemon-entry.js +1 -1
- package/dist/proxy/proxy-daemon-entry.js.map +1 -1
- package/dist/proxy/transformers/sse-stream-transformer.d.ts.map +1 -1
- package/dist/proxy/transformers/sse-stream-transformer.js +12 -17
- package/dist/proxy/transformers/sse-stream-transformer.js.map +1 -1
- package/dist/services/logging/index.d.ts +1 -1
- package/dist/services/logging/index.d.ts.map +1 -1
- package/dist/services/logging/index.js +6 -1
- package/dist/services/logging/index.js.map +1 -1
- package/dist/services/logging/log-context.d.ts +27 -2
- package/dist/services/logging/log-context.d.ts.map +1 -1
- package/dist/services/logging/log-context.js +43 -4
- package/dist/services/logging/log-context.js.map +1 -1
- package/dist/services/logging/log-redaction.d.ts +9 -0
- package/dist/services/logging/log-redaction.d.ts.map +1 -1
- package/dist/services/logging/log-redaction.js +31 -3
- package/dist/services/logging/log-redaction.js.map +1 -1
- package/dist/services/logging/logger.js +2 -2
- package/dist/services/logging/logger.js.map +1 -1
- package/dist/shared/provider-preset-catalog.d.ts +1 -1
- package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
- package/dist/shared/provider-preset-catalog.js +14 -0
- package/dist/shared/provider-preset-catalog.js.map +1 -1
- package/dist/targets/claude-adapter.d.ts.map +1 -1
- package/dist/targets/claude-adapter.js +5 -0
- package/dist/targets/claude-adapter.js.map +1 -1
- package/dist/targets/codex-adapter.d.ts.map +1 -1
- package/dist/targets/codex-adapter.js +11 -10
- package/dist/targets/codex-adapter.js.map +1 -1
- package/dist/targets/codex-detector.d.ts.map +1 -1
- package/dist/targets/codex-detector.js +14 -0
- package/dist/targets/codex-detector.js.map +1 -1
- package/dist/targets/droid-adapter.d.ts.map +1 -1
- package/dist/targets/droid-adapter.js +12 -12
- package/dist/targets/droid-adapter.js.map +1 -1
- package/dist/ui/assets/{Trans-RG_sMDEu.js → Trans-BXjW_Rw3.js} +1 -1
- package/dist/ui/assets/{accounts-yTXURc-q.js → accounts-C7JMc-UL.js} +1 -1
- package/dist/ui/assets/{alert-dialog-DjvPgzFs.js → alert-dialog-BSSHnWG_.js} +1 -1
- package/dist/ui/assets/{api-Ck1dtNEM.js → api-GzEZNvOJ.js} +1 -1
- package/dist/ui/assets/{auth-section-DBnY_LPz.js → auth-section-B6k7LWIq.js} +1 -1
- package/dist/ui/assets/{backups-section-Ci-uL4Of.js → backups-section-Cr3g01YN.js} +1 -1
- package/dist/ui/assets/{channels-BeS9O5q0.js → channels-CMyh1yhN.js} +1 -1
- package/dist/ui/assets/{checkbox-DFeFDZBp.js → checkbox-BkqYXiER.js} +1 -1
- package/dist/ui/assets/{claude-extension-DS5qN19Z.js → claude-extension-BzYl3zcz.js} +1 -1
- package/dist/ui/assets/{cliproxy-D7HJH4mZ.js → cliproxy-DwzKzuZI.js} +1 -1
- package/dist/ui/assets/{cliproxy-ai-providers-oJQZXrtc.js → cliproxy-ai-providers-DL95SYNa.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-2mRPEcRj.js → cliproxy-control-panel-Ba2Rgzdo.js} +1 -1
- package/dist/ui/assets/{codex-D0AUQ6jA.js → codex-ClTEGCnr.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-B37-CVuq.js → confirm-dialog-BPAO4ILr.js} +1 -1
- package/dist/ui/assets/{copilot-KaaW-mko.js → copilot-CymHD4gl.js} +1 -1
- package/dist/ui/assets/{cursor-BKiTgYi5.js → cursor-DAiPXs8h.js} +1 -1
- package/dist/ui/assets/{droid-DHdqGnFw.js → droid-CAhLWDOj.js} +1 -1
- package/dist/ui/assets/{globalenv-section-SfZO97nU.js → globalenv-section-BK5x_uXG.js} +1 -1
- package/dist/ui/assets/{health-CSRS9O0D.js → health-D_ErMvYv.js} +1 -1
- package/dist/ui/assets/{index-Cu_F55_O.js → index-B4cUkPwc.js} +1 -1
- package/dist/ui/assets/{index-DWUuSBUe.js → index-BZMyk4bI.js} +1 -1
- package/dist/ui/assets/{index-CGgavq2X.js → index-BcfwoMDm.js} +3 -3
- package/dist/ui/assets/{index-iQuEEGbH.js → index-BmbKPprT.js} +1 -1
- package/dist/ui/assets/{index-ChTYEBCZ.js → index-CEjVNSjg.js} +1 -1
- package/dist/ui/assets/{index-DJ66NrBH.js → index-CFDjAXOB.js} +1 -1
- package/dist/ui/assets/{index-DycwEe96.js → index-DCC80SZ0.js} +1 -1
- package/dist/ui/assets/{logs-tiZ_51mo.js → logs-DwhXr-9Y.js} +1 -1
- package/dist/ui/assets/{masked-input-D9FVoeMA.js → masked-input-DWJTe7jh.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-2k26d8pS.js → proxy-status-widget-CJXi8yui.js} +1 -1
- package/dist/ui/assets/{raw-json-settings-editor-panel-CguBh93H.js → raw-json-settings-editor-panel-DWhAi0kI.js} +1 -1
- package/dist/ui/assets/{searchable-select-C4wShshD.js → searchable-select-CYC4Y8pS.js} +1 -1
- package/dist/ui/assets/{separator-mvGlDdEW.js → separator-JhuNwVKE.js} +1 -1
- package/dist/ui/assets/{shared-Ck0yAwbs.js → shared-Hpgs7l5G.js} +1 -1
- package/dist/ui/assets/{table-DrUJOxKL.js → table-DDJTZfyL.js} +1 -1
- package/dist/ui/assets/{updates-BVHBFcq8.js → updates-CtygOHUO.js} +1 -1
- package/dist/ui/assets/{use-accounts-DLtuaniS.js → use-accounts-CaptC8AS.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/utils/bar-auth-token.d.ts +4 -0
- package/dist/utils/bar-auth-token.d.ts.map +1 -0
- package/dist/utils/bar-auth-token.js +60 -0
- package/dist/utils/bar-auth-token.js.map +1 -0
- package/dist/utils/browser/browser-settings.d.ts +3 -1
- package/dist/utils/browser/browser-settings.d.ts.map +1 -1
- package/dist/utils/browser/browser-settings.js +2 -2
- package/dist/utils/browser/browser-settings.js.map +1 -1
- package/dist/utils/browser/browser-setup.d.ts.map +1 -1
- package/dist/utils/browser/browser-setup.js +3 -1
- package/dist/utils/browser/browser-setup.js.map +1 -1
- package/dist/utils/browser/browser-status.d.ts.map +1 -1
- package/dist/utils/browser/browser-status.js +4 -2
- package/dist/utils/browser/browser-status.js.map +1 -1
- package/dist/utils/image-analysis/mcp-installer.d.ts.map +1 -1
- package/dist/utils/image-analysis/mcp-installer.js +16 -13
- package/dist/utils/image-analysis/mcp-installer.js.map +1 -1
- package/dist/utils/websearch/mcp-installer.d.ts.map +1 -1
- package/dist/utils/websearch/mcp-installer.js +14 -12
- package/dist/utils/websearch/mcp-installer.js.map +1 -1
- package/dist/web-server/middleware/request-logging-middleware.d.ts.map +1 -1
- package/dist/web-server/middleware/request-logging-middleware.js +14 -9
- package/dist/web-server/middleware/request-logging-middleware.js.map +1 -1
- package/dist/web-server/routes/bar-routes.d.ts.map +1 -1
- package/dist/web-server/routes/bar-routes.js +11 -2
- package/dist/web-server/routes/bar-routes.js.map +1 -1
- package/dist/web-server/routes/claude-extension-routes.d.ts.map +1 -1
- package/dist/web-server/routes/claude-extension-routes.js +3 -2
- package/dist/web-server/routes/claude-extension-routes.js.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.js +6 -4
- package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes/config-routes.d.ts +16 -0
- package/dist/web-server/routes/cliproxy-stats-routes/config-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/config-routes.js +219 -0
- package/dist/web-server/routes/cliproxy-stats-routes/config-routes.js.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.d.ts +12 -0
- package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.js +153 -0
- package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.js.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.d.ts +19 -0
- package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.js +38 -0
- package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.js.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.d.ts +13 -0
- package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.js +195 -0
- package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.js.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/restart-route.d.ts +17 -0
- package/dist/web-server/routes/cliproxy-stats-routes/restart-route.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/restart-route.js +34 -0
- package/dist/web-server/routes/cliproxy-stats-routes/restart-route.js.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/router.d.ts +10 -0
- package/dist/web-server/routes/cliproxy-stats-routes/router.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/router.js +245 -0
- package/dist/web-server/routes/cliproxy-stats-routes/router.js.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/shared.d.ts +35 -0
- package/dist/web-server/routes/cliproxy-stats-routes/shared.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/shared.js +59 -0
- package/dist/web-server/routes/cliproxy-stats-routes/shared.js.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.d.ts +44 -0
- package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.js +66 -0
- package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.js.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts +16 -57
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.js +25 -926
- package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
- package/dist/web-server/routes/cliproxy-sync-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-sync-routes.js +9 -2
- package/dist/web-server/routes/cliproxy-sync-routes.js.map +1 -1
- package/dist/web-server/routes/copilot-settings-routes.d.ts.map +1 -1
- package/dist/web-server/routes/copilot-settings-routes.js +2 -1
- package/dist/web-server/routes/copilot-settings-routes.js.map +1 -1
- package/dist/web-server/routes/cursor-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cursor-routes.js +3 -1
- package/dist/web-server/routes/cursor-routes.js.map +1 -1
- package/dist/web-server/routes/image-analysis-routes.d.ts.map +1 -1
- package/dist/web-server/routes/image-analysis-routes.js +2 -1
- 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 +6 -0
- package/dist/web-server/routes/index.js.map +1 -1
- package/dist/web-server/routes/persist-routes.d.ts.map +1 -1
- package/dist/web-server/routes/persist-routes.js +8 -1
- package/dist/web-server/routes/persist-routes.js.map +1 -1
- package/dist/web-server/routes/proxy-routes.d.ts.map +1 -1
- package/dist/web-server/routes/proxy-routes.js +33 -5
- package/dist/web-server/routes/proxy-routes.js.map +1 -1
- package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
- package/dist/web-server/routes/route-helpers.js +18 -6
- package/dist/web-server/routes/route-helpers.js.map +1 -1
- package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
- package/dist/web-server/routes/settings-routes.js +7 -6
- package/dist/web-server/routes/settings-routes.js.map +1 -1
- package/dist/web-server/usage/aggregator.d.ts.map +1 -1
- package/dist/web-server/usage/aggregator.js +8 -8
- package/dist/web-server/usage/aggregator.js.map +1 -1
- package/dist/web-server/usage/cliproxy-usage-transformer.d.ts.map +1 -1
- package/dist/web-server/usage/cliproxy-usage-transformer.js +9 -4
- package/dist/web-server/usage/cliproxy-usage-transformer.js.map +1 -1
- package/dist/web-server/usage/codex-local-quota-collector.d.ts +2 -2
- package/dist/web-server/usage/codex-local-quota-collector.d.ts.map +1 -1
- package/dist/web-server/usage/codex-local-quota-collector.js +39 -11
- package/dist/web-server/usage/codex-local-quota-collector.js.map +1 -1
- package/dist/web-server/usage/handlers.d.ts.map +1 -1
- package/dist/web-server/usage/handlers.js +1 -1
- package/dist/web-server/usage/handlers.js.map +1 -1
- package/package.json +1 -1
- package/scripts/ci-parity-gate.sh +31 -0
- package/scripts/generate-throw-error-baseline.js +103 -0
- package/scripts/github/stable-release-issue-cleanup-lib.mjs +51 -11
- package/scripts/hardening-inventory.js +62 -4
- package/scripts/maintainability-metrics.js +356 -0
|
@@ -1,775 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Quota Fetcher for Antigravity Accounts
|
|
3
|
+
* Quota Fetcher for Antigravity Accounts (barrel).
|
|
4
4
|
*
|
|
5
|
-
* Fetches quota information from Google Cloud Code internal API.
|
|
5
|
+
* Fetches quota information from the Google Cloud Code internal API.
|
|
6
6
|
* Used for displaying remaining quota percentages and reset times.
|
|
7
|
-
*/
|
|
8
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
-
}
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
-
if (mod && mod.__esModule) return mod;
|
|
26
|
-
var result = {};
|
|
27
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
-
__setModuleDefault(result, mod);
|
|
29
|
-
return result;
|
|
30
|
-
};
|
|
31
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
-
exports.findAvailableAccount = exports.__testExports = exports.fetchAllProviderQuotas = exports.readProjectIdFromAuthFile = exports.fetchAccountQuota = void 0;
|
|
33
|
-
const fs = __importStar(require("node:fs"));
|
|
34
|
-
const path = __importStar(require("node:path"));
|
|
35
|
-
const config_generator_1 = require("../config/config-generator");
|
|
36
|
-
const account_manager_1 = require("../accounts/account-manager");
|
|
37
|
-
const auth_utils_1 = require("../auth/auth-utils");
|
|
38
|
-
const provider_entitlement_evidence_1 = require("../auth/provider-entitlement-evidence");
|
|
39
|
-
const proxy_target_resolver_1 = require("../proxy/proxy-target-resolver");
|
|
40
|
-
/** Google Cloud Code API endpoints */
|
|
41
|
-
const ANTIGRAVITY_DAILY_API_BASE = 'https://daily-cloudcode-pa.googleapis.com';
|
|
42
|
-
const ANTIGRAVITY_API_BASE = 'https://cloudcode-pa.googleapis.com';
|
|
43
|
-
const ANTIGRAVITY_API_VERSION = 'v1internal';
|
|
44
|
-
const ANTIGRAVITY_LOADCODEASSIST_BASE_URLS = [
|
|
45
|
-
ANTIGRAVITY_DAILY_API_BASE,
|
|
46
|
-
ANTIGRAVITY_API_BASE,
|
|
47
|
-
];
|
|
48
|
-
const MANAGEMENT_API_TIMEOUT_MS = 5000;
|
|
49
|
-
/** Headers for loadCodeAssist (matches current CLIProxyAPIPlus control-plane requests) */
|
|
50
|
-
const LOADCODEASSIST_HEADERS = {
|
|
51
|
-
'Content-Type': 'application/json',
|
|
52
|
-
'User-Agent': 'antigravity/1.21.9 darwin/arm64 google-api-nodejs-client/10.3.0',
|
|
53
|
-
'X-Goog-Api-Client': 'gl-node/22.21.1',
|
|
54
|
-
};
|
|
55
|
-
/** Headers for fetchAvailableModels (matches CLIProxyAPI antigravity_executor.go) */
|
|
56
|
-
const FETCHMODELS_HEADERS = {
|
|
57
|
-
'Content-Type': 'application/json',
|
|
58
|
-
'User-Agent': 'antigravity/1.104.0 darwin/arm64',
|
|
59
|
-
};
|
|
60
|
-
function safeParseJson(bodyText) {
|
|
61
|
-
try {
|
|
62
|
-
return JSON.parse(bodyText);
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
function normalizeErrorDetail(bodyText) {
|
|
69
|
-
const normalized = bodyText.trim();
|
|
70
|
-
if (!normalized) {
|
|
71
|
-
return undefined;
|
|
72
|
-
}
|
|
73
|
-
if (normalized.length <= 400) {
|
|
74
|
-
return normalized;
|
|
75
|
-
}
|
|
76
|
-
return `${normalized.slice(0, 397)}...`;
|
|
77
|
-
}
|
|
78
|
-
function buildAntigravityFailure(status, bodyText) {
|
|
79
|
-
const detail = normalizeErrorDetail(bodyText || '');
|
|
80
|
-
if (status === 401) {
|
|
81
|
-
return {
|
|
82
|
-
httpStatus: 401,
|
|
83
|
-
error: 'Token expired or invalid',
|
|
84
|
-
errorCode: 'reauth_required',
|
|
85
|
-
actionHint: 'Re-authenticate this account. If CLIProxy is running, retry after the proxy finishes refreshing the token.',
|
|
86
|
-
needsReauth: true,
|
|
87
|
-
errorDetail: detail,
|
|
88
|
-
entitlement: (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
89
|
-
normalizedTier: 'unknown',
|
|
90
|
-
source: 'runtime_inference',
|
|
91
|
-
confidence: 'medium',
|
|
92
|
-
accessState: 'unknown',
|
|
93
|
-
capacityState: 'unknown',
|
|
94
|
-
}),
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
if (status === 403) {
|
|
98
|
-
return {
|
|
99
|
-
httpStatus: 403,
|
|
100
|
-
error: 'Access forbidden',
|
|
101
|
-
errorCode: 'quota_api_forbidden',
|
|
102
|
-
actionHint: 'This account does not have Gemini Code Assist quota access.',
|
|
103
|
-
isForbidden: true,
|
|
104
|
-
errorDetail: detail,
|
|
105
|
-
entitlement: (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
106
|
-
normalizedTier: 'unknown',
|
|
107
|
-
source: 'runtime_inference',
|
|
108
|
-
confidence: 'medium',
|
|
109
|
-
accessState: 'not_entitled',
|
|
110
|
-
capacityState: 'unknown',
|
|
111
|
-
}),
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
if (status === 429) {
|
|
115
|
-
return {
|
|
116
|
-
httpStatus: 429,
|
|
117
|
-
error: 'Rate limited - try again later',
|
|
118
|
-
errorCode: 'rate_limited',
|
|
119
|
-
actionHint: 'Retry later. This looks temporary.',
|
|
120
|
-
retryable: true,
|
|
121
|
-
errorDetail: detail,
|
|
122
|
-
entitlement: (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
123
|
-
normalizedTier: 'unknown',
|
|
124
|
-
source: 'runtime_inference',
|
|
125
|
-
confidence: 'low',
|
|
126
|
-
accessState: 'unknown',
|
|
127
|
-
capacityState: 'rate_limited',
|
|
128
|
-
}),
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
if (status === 408) {
|
|
132
|
-
return {
|
|
133
|
-
httpStatus: 408,
|
|
134
|
-
error: 'Request timeout',
|
|
135
|
-
errorCode: 'network_timeout',
|
|
136
|
-
actionHint: 'Retry later. This looks temporary.',
|
|
137
|
-
retryable: true,
|
|
138
|
-
errorDetail: detail,
|
|
139
|
-
entitlement: (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
140
|
-
normalizedTier: 'unknown',
|
|
141
|
-
source: 'runtime_inference',
|
|
142
|
-
confidence: 'low',
|
|
143
|
-
accessState: 'unknown',
|
|
144
|
-
capacityState: 'temporarily_unavailable',
|
|
145
|
-
}),
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
if (typeof status === 'number' && status >= 500) {
|
|
149
|
-
return {
|
|
150
|
-
httpStatus: status,
|
|
151
|
-
error: `API error: ${status}`,
|
|
152
|
-
errorCode: 'provider_unavailable',
|
|
153
|
-
actionHint: 'Retry later. The provider appears unavailable.',
|
|
154
|
-
retryable: true,
|
|
155
|
-
errorDetail: detail,
|
|
156
|
-
entitlement: (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
157
|
-
normalizedTier: 'unknown',
|
|
158
|
-
source: 'runtime_inference',
|
|
159
|
-
confidence: 'low',
|
|
160
|
-
accessState: 'unknown',
|
|
161
|
-
capacityState: 'temporarily_unavailable',
|
|
162
|
-
}),
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
if (typeof status === 'number' && status >= 400) {
|
|
166
|
-
return {
|
|
167
|
-
httpStatus: status,
|
|
168
|
-
error: `API error: ${status}`,
|
|
169
|
-
errorCode: 'quota_request_failed',
|
|
170
|
-
errorDetail: detail,
|
|
171
|
-
entitlement: (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
172
|
-
normalizedTier: 'unknown',
|
|
173
|
-
source: 'runtime_inference',
|
|
174
|
-
confidence: 'low',
|
|
175
|
-
accessState: 'unknown',
|
|
176
|
-
capacityState: 'unknown',
|
|
177
|
-
}),
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
return {
|
|
181
|
-
error: 'Quota request failed',
|
|
182
|
-
errorCode: 'quota_request_failed',
|
|
183
|
-
errorDetail: detail,
|
|
184
|
-
entitlement: (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
185
|
-
normalizedTier: 'unknown',
|
|
186
|
-
source: 'runtime_inference',
|
|
187
|
-
confidence: 'low',
|
|
188
|
-
accessState: 'unknown',
|
|
189
|
-
capacityState: 'unknown',
|
|
190
|
-
}),
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
function mergeAntigravityTierEvidence(entitlement, tier, rawTierId, rawTierLabel) {
|
|
194
|
-
if (tier === 'unknown' && !entitlement) {
|
|
195
|
-
return undefined;
|
|
196
|
-
}
|
|
197
|
-
return (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
198
|
-
normalizedTier: tier,
|
|
199
|
-
rawTierId,
|
|
200
|
-
rawTierLabel,
|
|
201
|
-
source: rawTierId ? 'runtime_api' : (entitlement?.source ?? 'runtime_inference'),
|
|
202
|
-
confidence: rawTierId ? 'high' : (entitlement?.confidence ?? 'medium'),
|
|
203
|
-
accessState: entitlement?.accessState ?? 'unknown',
|
|
204
|
-
capacityState: entitlement?.capacityState ?? 'unknown',
|
|
205
|
-
notes: entitlement?.notes ?? null,
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
async function readManagedResponse(response, viaManagement) {
|
|
209
|
-
const bodyText = await response.text();
|
|
210
|
-
return {
|
|
211
|
-
status: response.status,
|
|
212
|
-
bodyText,
|
|
213
|
-
json: safeParseJson(bodyText),
|
|
214
|
-
viaManagement,
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
function isAntigravityAuthFileForAccount(file, accountId) {
|
|
218
|
-
const provider = (file.provider || file.type || '').trim().toLowerCase();
|
|
219
|
-
if (provider !== 'antigravity' && provider !== 'agy') {
|
|
220
|
-
return false;
|
|
221
|
-
}
|
|
222
|
-
const normalizedAccount = accountId.trim().toLowerCase();
|
|
223
|
-
const normalizedEmail = file.email?.trim().toLowerCase();
|
|
224
|
-
if (normalizedEmail && normalizedEmail === normalizedAccount) {
|
|
225
|
-
return true;
|
|
226
|
-
}
|
|
227
|
-
const normalizedName = file.name?.trim().toLowerCase();
|
|
228
|
-
if (!normalizedName) {
|
|
229
|
-
return false;
|
|
230
|
-
}
|
|
231
|
-
const sanitizedAccount = (0, auth_utils_1.sanitizeEmail)(accountId).toLowerCase();
|
|
232
|
-
return (normalizedName === `antigravity-${sanitizedAccount}.json` ||
|
|
233
|
-
normalizedName === `agy-${sanitizedAccount}.json`);
|
|
234
|
-
}
|
|
235
|
-
async function findManagedAntigravityAuthIndex(accountId) {
|
|
236
|
-
const target = (0, proxy_target_resolver_1.getProxyTarget)();
|
|
237
|
-
const controller = new AbortController();
|
|
238
|
-
const timeoutId = setTimeout(() => controller.abort(), MANAGEMENT_API_TIMEOUT_MS);
|
|
239
|
-
try {
|
|
240
|
-
const response = await fetch((0, proxy_target_resolver_1.buildProxyUrl)(target, '/v0/management/auth-files'), {
|
|
241
|
-
signal: controller.signal,
|
|
242
|
-
headers: (0, proxy_target_resolver_1.buildManagementHeaders)(target),
|
|
243
|
-
});
|
|
244
|
-
clearTimeout(timeoutId);
|
|
245
|
-
if (!response.ok) {
|
|
246
|
-
return null;
|
|
247
|
-
}
|
|
248
|
-
const data = (await response.json());
|
|
249
|
-
const match = data.files?.find((file) => isAntigravityAuthFileForAccount(file, accountId));
|
|
250
|
-
return match?.auth_index ?? null;
|
|
251
|
-
}
|
|
252
|
-
catch {
|
|
253
|
-
clearTimeout(timeoutId);
|
|
254
|
-
return null;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
async function performManagedAntigravityRequest(accountId, url, headers, body) {
|
|
258
|
-
const authIndex = await findManagedAntigravityAuthIndex(accountId);
|
|
259
|
-
if (authIndex === null || authIndex === undefined) {
|
|
260
|
-
return null;
|
|
261
|
-
}
|
|
262
|
-
const target = (0, proxy_target_resolver_1.getProxyTarget)();
|
|
263
|
-
const controller = new AbortController();
|
|
264
|
-
const timeoutId = setTimeout(() => controller.abort(), MANAGEMENT_API_TIMEOUT_MS);
|
|
265
|
-
try {
|
|
266
|
-
const response = await fetch((0, proxy_target_resolver_1.buildProxyUrl)(target, '/v0/management/api-call'), {
|
|
267
|
-
method: 'POST',
|
|
268
|
-
signal: controller.signal,
|
|
269
|
-
headers: (0, proxy_target_resolver_1.buildManagementHeaders)(target, {
|
|
270
|
-
'Content-Type': 'application/json',
|
|
271
|
-
}),
|
|
272
|
-
body: JSON.stringify({
|
|
273
|
-
auth_index: authIndex,
|
|
274
|
-
method: 'POST',
|
|
275
|
-
url,
|
|
276
|
-
header: {
|
|
277
|
-
...headers,
|
|
278
|
-
Authorization: 'Bearer $TOKEN$',
|
|
279
|
-
},
|
|
280
|
-
data: body,
|
|
281
|
-
}),
|
|
282
|
-
});
|
|
283
|
-
clearTimeout(timeoutId);
|
|
284
|
-
if (!response.ok) {
|
|
285
|
-
return null;
|
|
286
|
-
}
|
|
287
|
-
const apiResponse = (await response.json());
|
|
288
|
-
const bodyText = typeof apiResponse.body === 'string' ? apiResponse.body : '';
|
|
289
|
-
return {
|
|
290
|
-
status: typeof apiResponse.status_code === 'number' ? apiResponse.status_code : 500,
|
|
291
|
-
bodyText,
|
|
292
|
-
json: safeParseJson(bodyText),
|
|
293
|
-
viaManagement: true,
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
|
-
catch {
|
|
297
|
-
clearTimeout(timeoutId);
|
|
298
|
-
return null;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
async function performAntigravityRequest(accountId, accessToken, url, headers, body) {
|
|
302
|
-
const controller = new AbortController();
|
|
303
|
-
const timeoutId = setTimeout(() => controller.abort(), MANAGEMENT_API_TIMEOUT_MS);
|
|
304
|
-
try {
|
|
305
|
-
const response = await fetch(url, {
|
|
306
|
-
method: 'POST',
|
|
307
|
-
signal: controller.signal,
|
|
308
|
-
headers: {
|
|
309
|
-
...headers,
|
|
310
|
-
Authorization: `Bearer ${accessToken}`,
|
|
311
|
-
},
|
|
312
|
-
body,
|
|
313
|
-
});
|
|
314
|
-
clearTimeout(timeoutId);
|
|
315
|
-
const directResult = await readManagedResponse(response, false);
|
|
316
|
-
if (directResult.status !== 401) {
|
|
317
|
-
return directResult;
|
|
318
|
-
}
|
|
319
|
-
const managedResult = await performManagedAntigravityRequest(accountId, url, headers, body);
|
|
320
|
-
return managedResult ?? directResult;
|
|
321
|
-
}
|
|
322
|
-
catch (err) {
|
|
323
|
-
clearTimeout(timeoutId);
|
|
324
|
-
if (err instanceof Error && err.name === 'AbortError') {
|
|
325
|
-
return {
|
|
326
|
-
status: 408,
|
|
327
|
-
bodyText: '',
|
|
328
|
-
json: null,
|
|
329
|
-
viaManagement: false,
|
|
330
|
-
};
|
|
331
|
-
}
|
|
332
|
-
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
333
|
-
return {
|
|
334
|
-
status: 503,
|
|
335
|
-
bodyText: message,
|
|
336
|
-
json: null,
|
|
337
|
-
viaManagement: false,
|
|
338
|
-
};
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
async function performAntigravityRequestWithBaseUrlFallback(accountId, accessToken, baseUrls, apiPath, headers, body) {
|
|
342
|
-
let lastResponse = null;
|
|
343
|
-
for (const baseUrl of baseUrls) {
|
|
344
|
-
const response = await performAntigravityRequest(accountId, accessToken, `${baseUrl}/${apiPath}`, headers, body);
|
|
345
|
-
if (response.status >= 200 && response.status < 300) {
|
|
346
|
-
return response;
|
|
347
|
-
}
|
|
348
|
-
lastResponse = response;
|
|
349
|
-
}
|
|
350
|
-
return (lastResponse ?? {
|
|
351
|
-
status: 503,
|
|
352
|
-
bodyText: 'No Antigravity API endpoint available',
|
|
353
|
-
json: null,
|
|
354
|
-
viaManagement: false,
|
|
355
|
-
});
|
|
356
|
-
}
|
|
357
|
-
/**
|
|
358
|
-
* Read auth data from auth file (access token, project_id, expiry status)
|
|
359
|
-
*/
|
|
360
|
-
function readAuthData(provider, accountId) {
|
|
361
|
-
// Check both active and paused auth directories (quota needed for paused accounts too)
|
|
362
|
-
const authDirs = [(0, config_generator_1.getAuthDir)(), (0, account_manager_1.getPausedDir)()];
|
|
363
|
-
// Sanitize accountId (email) to match auth file naming: @ and . → _
|
|
364
|
-
const sanitizedId = (0, auth_utils_1.sanitizeEmail)(accountId);
|
|
365
|
-
const prefix = provider === 'agy' ? 'antigravity-' : `${provider}-`;
|
|
366
|
-
const expectedFile = `${prefix}${sanitizedId}.json`;
|
|
367
|
-
for (const authDir of authDirs) {
|
|
368
|
-
if (!fs.existsSync(authDir))
|
|
369
|
-
continue;
|
|
370
|
-
const filePath = path.join(authDir, expectedFile);
|
|
371
|
-
// Direct file access (most common case)
|
|
372
|
-
if (fs.existsSync(filePath)) {
|
|
373
|
-
try {
|
|
374
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
375
|
-
const data = JSON.parse(content);
|
|
376
|
-
if (!data.access_token)
|
|
377
|
-
continue;
|
|
378
|
-
return {
|
|
379
|
-
accessToken: data.access_token,
|
|
380
|
-
refreshToken: data.refresh_token || null,
|
|
381
|
-
projectId: data.project_id || null,
|
|
382
|
-
isExpired: (0, auth_utils_1.isTokenExpired)(data.expired),
|
|
383
|
-
expiresAt: data.expired || null,
|
|
384
|
-
};
|
|
385
|
-
}
|
|
386
|
-
catch {
|
|
387
|
-
continue;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
// Fallback: scan directory for matching email in file content
|
|
391
|
-
const files = fs.readdirSync(authDir);
|
|
392
|
-
for (const file of files) {
|
|
393
|
-
if (file.startsWith(prefix) && file.endsWith('.json')) {
|
|
394
|
-
const candidatePath = path.join(authDir, file);
|
|
395
|
-
try {
|
|
396
|
-
const content = fs.readFileSync(candidatePath, 'utf-8');
|
|
397
|
-
const data = JSON.parse(content);
|
|
398
|
-
// Match by email field inside the auth file
|
|
399
|
-
if (data.email === accountId && data.access_token) {
|
|
400
|
-
return {
|
|
401
|
-
accessToken: data.access_token,
|
|
402
|
-
refreshToken: data.refresh_token || null,
|
|
403
|
-
projectId: data.project_id || null,
|
|
404
|
-
isExpired: (0, auth_utils_1.isTokenExpired)(data.expired),
|
|
405
|
-
expiresAt: data.expired || null,
|
|
406
|
-
};
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
catch {
|
|
410
|
-
continue;
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
return null;
|
|
416
|
-
}
|
|
417
|
-
/**
|
|
418
|
-
* Map tier ID string to AccountTier type
|
|
419
|
-
* API returns: "g1-ultra-tier", "g1-pro-tier", "standard-tier", etc.
|
|
420
|
-
* Priority: ultra > pro > free
|
|
421
|
-
*/
|
|
422
|
-
/**
|
|
423
|
-
* Get project ID and tier via loadCodeAssist endpoint
|
|
424
|
-
* Uses paidTier.id for accurate tier detection (g1-ultra-tier, g1-pro-tier)
|
|
425
|
-
*/
|
|
426
|
-
async function getProjectId(accountId, accessToken) {
|
|
427
|
-
const body = JSON.stringify({
|
|
428
|
-
metadata: {
|
|
429
|
-
ide_name: 'antigravity',
|
|
430
|
-
ide_type: 'ANTIGRAVITY',
|
|
431
|
-
ide_version: '1.21.9',
|
|
432
|
-
},
|
|
433
|
-
});
|
|
434
|
-
const response = await performAntigravityRequestWithBaseUrlFallback(accountId, accessToken, ANTIGRAVITY_LOADCODEASSIST_BASE_URLS, `${ANTIGRAVITY_API_VERSION}:loadCodeAssist`, LOADCODEASSIST_HEADERS, body);
|
|
435
|
-
if (response.status < 200 || response.status >= 300) {
|
|
436
|
-
return {
|
|
437
|
-
projectId: null,
|
|
438
|
-
...buildAntigravityFailure(response.status, response.bodyText),
|
|
439
|
-
};
|
|
440
|
-
}
|
|
441
|
-
const data = response.json;
|
|
442
|
-
if (!data) {
|
|
443
|
-
return {
|
|
444
|
-
projectId: null,
|
|
445
|
-
error: 'Invalid quota response from provider',
|
|
446
|
-
errorCode: 'provider_unavailable',
|
|
447
|
-
retryable: true,
|
|
448
|
-
entitlement: (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
449
|
-
normalizedTier: 'unknown',
|
|
450
|
-
source: 'runtime_inference',
|
|
451
|
-
confidence: 'low',
|
|
452
|
-
accessState: 'unknown',
|
|
453
|
-
capacityState: 'temporarily_unavailable',
|
|
454
|
-
notes: 'Provider returned a 2xx response with an empty or invalid project payload.',
|
|
455
|
-
}),
|
|
456
|
-
};
|
|
457
|
-
}
|
|
458
|
-
// Extract project ID from response
|
|
459
|
-
let projectId;
|
|
460
|
-
if (typeof data.cloudaicompanionProject === 'string') {
|
|
461
|
-
projectId = data.cloudaicompanionProject;
|
|
462
|
-
}
|
|
463
|
-
else if (typeof data.cloudaicompanionProject === 'object') {
|
|
464
|
-
projectId = data.cloudaicompanionProject?.id;
|
|
465
|
-
}
|
|
466
|
-
if (!projectId?.trim()) {
|
|
467
|
-
return {
|
|
468
|
-
projectId: null,
|
|
469
|
-
error: 'Sign in to Antigravity app to activate quota.',
|
|
470
|
-
errorCode: 'account_unprovisioned',
|
|
471
|
-
actionHint: 'Complete sign-in in the Antigravity app, then retry quota refresh.',
|
|
472
|
-
isUnprovisioned: true,
|
|
473
|
-
entitlement: (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
474
|
-
normalizedTier: 'unknown',
|
|
475
|
-
source: 'runtime_inference',
|
|
476
|
-
confidence: 'medium',
|
|
477
|
-
accessState: 'unknown',
|
|
478
|
-
capacityState: 'unknown',
|
|
479
|
-
notes: 'Project provisioning is incomplete for this account.',
|
|
480
|
-
}),
|
|
481
|
-
};
|
|
482
|
-
}
|
|
483
|
-
// Extract tier - paidTier reflects actual subscription status, takes priority
|
|
484
|
-
const rawTierId = (data.paidTier?.id || data.currentTier?.id || '').trim() || null;
|
|
485
|
-
const tier = (0, provider_entitlement_evidence_1.normalizeProviderTierId)(rawTierId);
|
|
486
|
-
return {
|
|
487
|
-
projectId: projectId.trim(),
|
|
488
|
-
tier,
|
|
489
|
-
rawTierId,
|
|
490
|
-
rawTierLabel: (0, provider_entitlement_evidence_1.getProviderTierLabel)(rawTierId),
|
|
491
|
-
};
|
|
492
|
-
}
|
|
493
|
-
/**
|
|
494
|
-
* Fetch available models with quota info
|
|
495
|
-
* Note: projectId is kept for potential future use but not sent in body
|
|
496
|
-
* (CLIProxyAPI sends empty {} body for this endpoint)
|
|
497
|
-
*/
|
|
498
|
-
async function fetchAvailableModels(accountId, accessToken, _projectId) {
|
|
499
|
-
const url = `${ANTIGRAVITY_API_BASE}/${ANTIGRAVITY_API_VERSION}:fetchAvailableModels`;
|
|
500
|
-
const response = await performAntigravityRequest(accountId, accessToken, url, FETCHMODELS_HEADERS, JSON.stringify({}));
|
|
501
|
-
if (response.status < 200 || response.status >= 300) {
|
|
502
|
-
return {
|
|
503
|
-
success: false,
|
|
504
|
-
models: [],
|
|
505
|
-
lastUpdated: Date.now(),
|
|
506
|
-
...buildAntigravityFailure(response.status, response.bodyText),
|
|
507
|
-
};
|
|
508
|
-
}
|
|
509
|
-
const data = response.json;
|
|
510
|
-
if (!data) {
|
|
511
|
-
return {
|
|
512
|
-
success: false,
|
|
513
|
-
models: [],
|
|
514
|
-
lastUpdated: Date.now(),
|
|
515
|
-
error: 'Invalid quota response from provider',
|
|
516
|
-
errorCode: 'provider_unavailable',
|
|
517
|
-
retryable: true,
|
|
518
|
-
entitlement: (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
519
|
-
normalizedTier: 'unknown',
|
|
520
|
-
source: 'runtime_inference',
|
|
521
|
-
confidence: 'low',
|
|
522
|
-
accessState: 'unknown',
|
|
523
|
-
capacityState: 'temporarily_unavailable',
|
|
524
|
-
notes: 'Provider returned a 2xx response with an empty or invalid quota payload.',
|
|
525
|
-
}),
|
|
526
|
-
};
|
|
527
|
-
}
|
|
528
|
-
const models = [];
|
|
529
|
-
if (data.models && typeof data.models === 'object') {
|
|
530
|
-
for (const [modelId, modelData] of Object.entries(data.models)) {
|
|
531
|
-
const quotaInfo = modelData.quotaInfo || modelData.quota_info;
|
|
532
|
-
if (!quotaInfo)
|
|
533
|
-
continue;
|
|
534
|
-
const remaining = quotaInfo.remainingFraction ?? quotaInfo.remaining_fraction ?? quotaInfo.remaining;
|
|
535
|
-
const resetTime = quotaInfo.resetTime || quotaInfo.reset_time || null;
|
|
536
|
-
let percentage;
|
|
537
|
-
if (typeof remaining === 'number' && isFinite(remaining)) {
|
|
538
|
-
percentage = Math.max(0, Math.min(100, Math.round(remaining * 100)));
|
|
539
|
-
}
|
|
540
|
-
else if (resetTime) {
|
|
541
|
-
percentage = 0;
|
|
542
|
-
}
|
|
543
|
-
else {
|
|
544
|
-
continue;
|
|
545
|
-
}
|
|
546
|
-
models.push({
|
|
547
|
-
name: modelId,
|
|
548
|
-
displayName: modelData.displayName,
|
|
549
|
-
percentage,
|
|
550
|
-
resetTime,
|
|
551
|
-
});
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
return {
|
|
555
|
-
success: true,
|
|
556
|
-
models,
|
|
557
|
-
lastUpdated: Date.now(),
|
|
558
|
-
};
|
|
559
|
-
}
|
|
560
|
-
/**
|
|
561
|
-
* Fetch quota for an Antigravity account
|
|
562
7
|
*
|
|
563
|
-
*
|
|
564
|
-
*
|
|
565
|
-
*
|
|
566
|
-
* @returns Quota result with models and percentages
|
|
567
|
-
*/
|
|
568
|
-
async function fetchAccountQuota(provider, accountId, verbose = false) {
|
|
569
|
-
if (verbose)
|
|
570
|
-
console.error(`[i] Fetching quota for ${accountId}...`);
|
|
571
|
-
// Only Antigravity supports quota fetching
|
|
572
|
-
if (provider !== 'agy') {
|
|
573
|
-
const error = `Quota not supported for provider: ${provider}`;
|
|
574
|
-
if (verbose)
|
|
575
|
-
console.error(`[!] Error: ${error}`);
|
|
576
|
-
// Stable machine code so callers branch on a code, not the human string.
|
|
577
|
-
// This is "no quota API for this provider", which is healthy — distinct
|
|
578
|
-
// from a transient fetch failure or an expired token.
|
|
579
|
-
return {
|
|
580
|
-
success: false,
|
|
581
|
-
models: [],
|
|
582
|
-
lastUpdated: Date.now(),
|
|
583
|
-
error,
|
|
584
|
-
errorCode: 'quota_not_supported',
|
|
585
|
-
};
|
|
586
|
-
}
|
|
587
|
-
// Read auth data from auth file (checks both active and paused directories)
|
|
588
|
-
const authData = readAuthData(provider, accountId);
|
|
589
|
-
if (!authData) {
|
|
590
|
-
const error = 'Auth file not found for account';
|
|
591
|
-
if (verbose)
|
|
592
|
-
console.error(`[!] Error: ${error}`);
|
|
593
|
-
return {
|
|
594
|
-
success: false,
|
|
595
|
-
models: [],
|
|
596
|
-
lastUpdated: Date.now(),
|
|
597
|
-
error,
|
|
598
|
-
errorCode: 'auth_file_missing',
|
|
599
|
-
actionHint: 'Reconnect this account so CCS can read a current auth token.',
|
|
600
|
-
};
|
|
601
|
-
}
|
|
602
|
-
const accessToken = authData.accessToken;
|
|
603
|
-
if (verbose) {
|
|
604
|
-
const expiryState = authData.isExpired
|
|
605
|
-
? 'expired'
|
|
606
|
-
: authData.expiresAt
|
|
607
|
-
? `expires ${authData.expiresAt}`
|
|
608
|
-
: 'expiry unknown';
|
|
609
|
-
console.error(`[i] Auth token state: ${expiryState}`);
|
|
610
|
-
}
|
|
611
|
-
// Get project ID and tier - prefer stored project ID, but always call API for tier
|
|
612
|
-
let projectId = authData.projectId;
|
|
613
|
-
let apiTier = 'unknown';
|
|
614
|
-
let rawTierId = null;
|
|
615
|
-
let rawTierLabel = null;
|
|
616
|
-
// Always call loadCodeAssist to get accurate tier from API.
|
|
617
|
-
// If the file token is stale, the helper retries through CLIProxy management auth.
|
|
618
|
-
const lastProjectResult = await getProjectId(accountId, accessToken);
|
|
619
|
-
if (!lastProjectResult.projectId && !projectId) {
|
|
620
|
-
const error = lastProjectResult.error || 'Failed to retrieve project ID';
|
|
621
|
-
if (verbose)
|
|
622
|
-
console.error(`[!] Error: ${error}`);
|
|
623
|
-
return {
|
|
624
|
-
success: false,
|
|
625
|
-
models: [],
|
|
626
|
-
lastUpdated: Date.now(),
|
|
627
|
-
error,
|
|
628
|
-
errorCode: lastProjectResult.errorCode,
|
|
629
|
-
errorDetail: lastProjectResult.errorDetail,
|
|
630
|
-
actionHint: lastProjectResult.actionHint,
|
|
631
|
-
retryable: lastProjectResult.retryable,
|
|
632
|
-
httpStatus: lastProjectResult.httpStatus,
|
|
633
|
-
needsReauth: lastProjectResult.needsReauth,
|
|
634
|
-
isUnprovisioned: lastProjectResult.isUnprovisioned,
|
|
635
|
-
entitlement: lastProjectResult.entitlement,
|
|
636
|
-
isExpired: authData.isExpired,
|
|
637
|
-
expiresAt: authData.expiresAt || undefined,
|
|
638
|
-
};
|
|
639
|
-
}
|
|
640
|
-
// Use API project ID if available, else fallback to stored
|
|
641
|
-
projectId = lastProjectResult.projectId || projectId;
|
|
642
|
-
apiTier = lastProjectResult.tier || 'unknown';
|
|
643
|
-
rawTierId = lastProjectResult.rawTierId || null;
|
|
644
|
-
rawTierLabel = lastProjectResult.rawTierLabel || null;
|
|
645
|
-
if (verbose)
|
|
646
|
-
console.error(`[i] Project ID: ${projectId || 'not found'}`);
|
|
647
|
-
// Fetch models with quota
|
|
648
|
-
const result = await fetchAvailableModels(accountId, accessToken, projectId);
|
|
649
|
-
if (verbose)
|
|
650
|
-
console.error(`[i] Models found: ${result.models.length}`);
|
|
651
|
-
result.accountId = accountId;
|
|
652
|
-
result.projectId = projectId || undefined;
|
|
653
|
-
// Determine tier from API response only
|
|
654
|
-
if (result.success) {
|
|
655
|
-
const finalTier = apiTier !== 'unknown' ? apiTier : 'unknown';
|
|
656
|
-
result.tier = finalTier;
|
|
657
|
-
result.entitlement = (0, provider_entitlement_evidence_1.buildProviderEntitlementEvidence)({
|
|
658
|
-
normalizedTier: finalTier,
|
|
659
|
-
rawTierId,
|
|
660
|
-
rawTierLabel,
|
|
661
|
-
source: rawTierId ? 'runtime_api' : 'runtime_inference',
|
|
662
|
-
confidence: rawTierId ? 'high' : 'medium',
|
|
663
|
-
accessState: 'entitled',
|
|
664
|
-
capacityState: 'available',
|
|
665
|
-
});
|
|
666
|
-
if (finalTier !== 'unknown') {
|
|
667
|
-
(0, account_manager_1.setAccountTier)(provider, accountId, finalTier);
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
-
else {
|
|
671
|
-
result.isExpired = authData.isExpired;
|
|
672
|
-
result.expiresAt = authData.expiresAt || undefined;
|
|
673
|
-
result.entitlement = mergeAntigravityTierEvidence(result.entitlement, apiTier, rawTierId, rawTierLabel);
|
|
674
|
-
}
|
|
675
|
-
if (verbose && result.error) {
|
|
676
|
-
console.log(`[!] Error: ${result.error}`);
|
|
677
|
-
}
|
|
678
|
-
return result;
|
|
679
|
-
}
|
|
680
|
-
exports.fetchAccountQuota = fetchAccountQuota;
|
|
681
|
-
/**
|
|
682
|
-
* Read project ID directly from auth file without making API call
|
|
683
|
-
* Used for quick project ID comparison in doctor command
|
|
8
|
+
* This file is a thin barrel over the focused submodules in ./quota-fetcher/.
|
|
9
|
+
* The public API surface (exports, signatures, types, and __testExports) is
|
|
10
|
+
* preserved exactly so all existing imports from 'quota-fetcher' keep working.
|
|
684
11
|
*/
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
exports.
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
accounts: [],
|
|
703
|
-
projectGroups: {},
|
|
704
|
-
lastUpdated: Date.now(),
|
|
705
|
-
};
|
|
706
|
-
if (accounts.length === 0) {
|
|
707
|
-
return results;
|
|
708
|
-
}
|
|
709
|
-
// Fetch quota for each account in parallel
|
|
710
|
-
const quotaPromises = accounts.map(async (account) => {
|
|
711
|
-
const quota = await fetchAccountQuota(provider, account.id, verbose);
|
|
712
|
-
// Read project ID from auth file if not in quota result
|
|
713
|
-
let projectId = quota.projectId;
|
|
714
|
-
if (!projectId) {
|
|
715
|
-
projectId = readProjectIdFromAuthFile(provider, account.id) || undefined;
|
|
716
|
-
}
|
|
717
|
-
return {
|
|
718
|
-
account,
|
|
719
|
-
quota: { ...quota, accountId: account.id, projectId },
|
|
720
|
-
};
|
|
721
|
-
});
|
|
722
|
-
const quotaResults = await Promise.all(quotaPromises);
|
|
723
|
-
// Build project groups for detecting shared projects
|
|
724
|
-
for (const { account, quota } of quotaResults) {
|
|
725
|
-
results.accounts.push({ account, quota });
|
|
726
|
-
if (quota.projectId) {
|
|
727
|
-
if (!results.projectGroups[quota.projectId]) {
|
|
728
|
-
results.projectGroups[quota.projectId] = [];
|
|
729
|
-
}
|
|
730
|
-
results.projectGroups[quota.projectId].push(account.id);
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
return results;
|
|
734
|
-
}
|
|
735
|
-
exports.fetchAllProviderQuotas = fetchAllProviderQuotas;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.__testExports = exports.buildAntigravityFailure = exports.readProjectIdFromAuthFile = exports.findAvailableAccount = exports.fetchAllProviderQuotas = exports.fetchAccountQuota = void 0;
|
|
14
|
+
// Public functions
|
|
15
|
+
var account_quota_fetcher_1 = require("./quota-fetcher/account-quota-fetcher");
|
|
16
|
+
Object.defineProperty(exports, "fetchAccountQuota", { enumerable: true, get: function () { return account_quota_fetcher_1.fetchAccountQuota; } });
|
|
17
|
+
var all_accounts_fetcher_1 = require("./quota-fetcher/all-accounts-fetcher");
|
|
18
|
+
Object.defineProperty(exports, "fetchAllProviderQuotas", { enumerable: true, get: function () { return all_accounts_fetcher_1.fetchAllProviderQuotas; } });
|
|
19
|
+
var all_accounts_fetcher_2 = require("./quota-fetcher/all-accounts-fetcher");
|
|
20
|
+
Object.defineProperty(exports, "findAvailableAccount", { enumerable: true, get: function () { return all_accounts_fetcher_2.findAvailableAccount; } });
|
|
21
|
+
var auth_file_reader_1 = require("./quota-fetcher/auth-file-reader");
|
|
22
|
+
Object.defineProperty(exports, "readProjectIdFromAuthFile", { enumerable: true, get: function () { return auth_file_reader_1.readProjectIdFromAuthFile; } });
|
|
23
|
+
// Test-only exports (consumed by quota-fetcher-antigravity-failure.test.ts via
|
|
24
|
+
// dynamic import of ../quota-fetcher?...). buildAntigravityFailure is the only
|
|
25
|
+
// pure helper exercised through this surface; keep it stable.
|
|
26
|
+
var status_classifier_1 = require("./quota-fetcher/status-classifier");
|
|
27
|
+
Object.defineProperty(exports, "buildAntigravityFailure", { enumerable: true, get: function () { return status_classifier_1.buildAntigravityFailure; } });
|
|
28
|
+
const status_classifier_2 = require("./quota-fetcher/status-classifier");
|
|
736
29
|
exports.__testExports = {
|
|
737
|
-
buildAntigravityFailure,
|
|
30
|
+
buildAntigravityFailure: status_classifier_2.buildAntigravityFailure,
|
|
738
31
|
};
|
|
739
|
-
/**
|
|
740
|
-
* Find available account with remaining quota
|
|
741
|
-
* Used by preflight check for auto-switching
|
|
742
|
-
*
|
|
743
|
-
* @param provider - Provider name
|
|
744
|
-
* @param excludeAccountId - Account to exclude (current exhausted account)
|
|
745
|
-
* @param verbose - Show detailed diagnostics
|
|
746
|
-
* @returns Account with available quota, or null if none available
|
|
747
|
-
*/
|
|
748
|
-
async function findAvailableAccount(provider, excludeAccountId, verbose = false) {
|
|
749
|
-
const allQuotas = await fetchAllProviderQuotas(provider, verbose);
|
|
750
|
-
// Get excluded account's project ID to avoid switching to same-project accounts
|
|
751
|
-
const excludedProjectId = allQuotas.accounts.find((a) => a.account.id === excludeAccountId)?.quota
|
|
752
|
-
.projectId;
|
|
753
|
-
for (const { account, quota } of allQuotas.accounts) {
|
|
754
|
-
// Skip excluded account
|
|
755
|
-
if (excludeAccountId && account.id === excludeAccountId) {
|
|
756
|
-
continue;
|
|
757
|
-
}
|
|
758
|
-
// Skip failed quota fetches
|
|
759
|
-
if (!quota.success) {
|
|
760
|
-
continue;
|
|
761
|
-
}
|
|
762
|
-
// Skip accounts sharing same GCP project (quota is pooled)
|
|
763
|
-
if (excludedProjectId && quota.projectId === excludedProjectId) {
|
|
764
|
-
continue;
|
|
765
|
-
}
|
|
766
|
-
// Check if any model has remaining quota (> 5% to avoid edge cases)
|
|
767
|
-
const hasQuota = quota.models.some((m) => m.percentage > 5);
|
|
768
|
-
if (hasQuota) {
|
|
769
|
-
return { account, quota };
|
|
770
|
-
}
|
|
771
|
-
}
|
|
772
|
-
return null;
|
|
773
|
-
}
|
|
774
|
-
exports.findAvailableAccount = findAvailableAccount;
|
|
775
32
|
//# sourceMappingURL=quota-fetcher.js.map
|