@kaitranntt/ccs 8.1.4 → 8.2.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/base-kiro.settings.json +4 -4
- package/config/base-qoder.settings.json +10 -0
- package/dist/channels/official-channels-runtime.js +1 -1
- package/dist/channels/official-channels-runtime.js.map +1 -1
- package/dist/cliproxy/accounts/registry.d.ts.map +1 -1
- package/dist/cliproxy/accounts/registry.js +11 -4
- package/dist/cliproxy/accounts/registry.js.map +1 -1
- package/dist/cliproxy/ai-providers/codex-plan-compatibility.js +1 -1
- package/dist/cliproxy/ai-providers/codex-plan-compatibility.js.map +1 -1
- package/dist/cliproxy/ai-providers/codex-reasoning-proxy.d.ts.map +1 -1
- package/dist/cliproxy/ai-providers/codex-reasoning-proxy.js +88 -11
- package/dist/cliproxy/ai-providers/codex-reasoning-proxy.js.map +1 -1
- package/dist/cliproxy/auth/auth-types.d.ts +2 -0
- package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
- package/dist/cliproxy/auth/auth-types.js +7 -0
- 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 +19 -10
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
- package/dist/cliproxy/auth/oauth-trace/redactor.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-trace/redactor.js +1 -0
- package/dist/cliproxy/auth/oauth-trace/redactor.js.map +1 -1
- package/dist/cliproxy/auth/oauth-trace/trace-recorder.js +2 -2
- package/dist/cliproxy/auth/oauth-trace/trace-recorder.js.map +1 -1
- package/dist/cliproxy/binary/version-checker.d.ts +4 -2
- package/dist/cliproxy/binary/version-checker.d.ts.map +1 -1
- package/dist/cliproxy/binary/version-checker.js +30 -20
- package/dist/cliproxy/binary/version-checker.js.map +1 -1
- package/dist/cliproxy/executor/arg-parser.d.ts +8 -5
- package/dist/cliproxy/executor/arg-parser.d.ts.map +1 -1
- package/dist/cliproxy/executor/arg-parser.js +21 -10
- package/dist/cliproxy/executor/arg-parser.js.map +1 -1
- package/dist/cliproxy/executor/browser-launch-setup.d.ts +1 -0
- package/dist/cliproxy/executor/browser-launch-setup.d.ts.map +1 -1
- package/dist/cliproxy/executor/browser-launch-setup.js +4 -3
- 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 +15 -6
- package/dist/cliproxy/executor/index.js.map +1 -1
- package/dist/cliproxy/executor/proxy-resolver.d.ts +15 -9
- package/dist/cliproxy/executor/proxy-resolver.d.ts.map +1 -1
- package/dist/cliproxy/executor/proxy-resolver.js +14 -5
- package/dist/cliproxy/executor/proxy-resolver.js.map +1 -1
- package/dist/cliproxy/model-catalog.d.ts.map +1 -1
- package/dist/cliproxy/model-catalog.js +79 -2
- package/dist/cliproxy/model-catalog.js.map +1 -1
- package/dist/cliproxy/provider-capabilities.d.ts.map +1 -1
- package/dist/cliproxy/provider-capabilities.js +12 -0
- package/dist/cliproxy/provider-capabilities.js.map +1 -1
- package/dist/cliproxy/proxy/proxy-config-resolver.d.ts.map +1 -1
- package/dist/cliproxy/proxy/proxy-config-resolver.js +11 -1
- package/dist/cliproxy/proxy/proxy-config-resolver.js.map +1 -1
- package/dist/cliproxy/proxy/tool-sanitization-proxy.d.ts.map +1 -1
- package/dist/cliproxy/proxy/tool-sanitization-proxy.js +160 -8
- package/dist/cliproxy/proxy/tool-sanitization-proxy.js.map +1 -1
- package/dist/cliproxy/proxy/upstream-response-timeout.d.ts +14 -0
- package/dist/cliproxy/proxy/upstream-response-timeout.d.ts.map +1 -0
- package/dist/cliproxy/proxy/upstream-response-timeout.js +72 -0
- package/dist/cliproxy/proxy/upstream-response-timeout.js.map +1 -0
- package/dist/cliproxy/quota/quota-fetcher-claude.d.ts +9 -0
- package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude.js +53 -16
- package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-codex.d.ts +2 -2
- package/dist/cliproxy/quota/quota-fetcher-codex.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-codex.js +2 -4
- package/dist/cliproxy/quota/quota-fetcher-codex.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher.js +4 -0
- package/dist/cliproxy/quota/quota-fetcher.js.map +1 -1
- package/dist/cliproxy/quota/quota-label-sanitizer.d.ts +10 -0
- package/dist/cliproxy/quota/quota-label-sanitizer.d.ts.map +1 -0
- package/dist/cliproxy/quota/quota-label-sanitizer.js +31 -0
- package/dist/cliproxy/quota/quota-label-sanitizer.js.map +1 -0
- package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-manager.js +32 -1
- package/dist/cliproxy/quota/quota-manager.js.map +1 -1
- package/dist/cliproxy/routing/routing-strategy-http.d.ts.map +1 -1
- package/dist/cliproxy/routing/routing-strategy-http.js +35 -26
- package/dist/cliproxy/routing/routing-strategy-http.js.map +1 -1
- package/dist/cliproxy/services/catalog-cache.d.ts.map +1 -1
- package/dist/cliproxy/services/catalog-cache.js +5 -3
- package/dist/cliproxy/services/catalog-cache.js.map +1 -1
- package/dist/cliproxy/services/stats-fetcher.d.ts +13 -0
- package/dist/cliproxy/services/stats-fetcher.d.ts.map +1 -1
- package/dist/cliproxy/services/stats-fetcher.js +25 -1
- package/dist/cliproxy/services/stats-fetcher.js.map +1 -1
- package/dist/cliproxy/types/provider-types.d.ts +1 -1
- package/dist/cliproxy/types/provider-types.d.ts.map +1 -1
- package/dist/cliproxy/types/provider-types.js +1 -0
- package/dist/cliproxy/types/provider-types.js.map +1 -1
- package/dist/codex-auth/codex-config-symlink.js +21 -4
- package/dist/codex-auth/codex-config-symlink.js.map +1 -1
- package/dist/codex-auth/commands/import-default-command.d.ts +1 -1
- package/dist/codex-auth/commands/import-default-command.d.ts.map +1 -1
- package/dist/codex-auth/commands/import-default-command.js +12 -25
- package/dist/codex-auth/commands/import-default-command.js.map +1 -1
- package/dist/commands/api-command/help.js +1 -1
- package/dist/commands/api-command/help.js.map +1 -1
- package/dist/commands/bar/index.d.ts +8 -0
- package/dist/commands/bar/index.d.ts.map +1 -0
- package/dist/commands/bar/index.js +69 -0
- package/dist/commands/bar/index.js.map +1 -0
- package/dist/commands/bar/install-subcommand.d.ts +50 -0
- package/dist/commands/bar/install-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/install-subcommand.js +383 -0
- package/dist/commands/bar/install-subcommand.js.map +1 -0
- package/dist/commands/bar/launch-subcommand.d.ts +38 -0
- package/dist/commands/bar/launch-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/launch-subcommand.js +144 -0
- package/dist/commands/bar/launch-subcommand.js.map +1 -0
- package/dist/commands/bar/uninstall-subcommand.d.ts +13 -0
- package/dist/commands/bar/uninstall-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/uninstall-subcommand.js +78 -0
- package/dist/commands/bar/uninstall-subcommand.js.map +1 -0
- package/dist/commands/bar/version-subcommand.d.ts +8 -0
- package/dist/commands/bar/version-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/version-subcommand.js +62 -0
- package/dist/commands/bar/version-subcommand.js.map +1 -0
- package/dist/commands/cleanup-command.d.ts.map +1 -1
- package/dist/commands/cleanup-command.js +99 -51
- package/dist/commands/cleanup-command.js.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.d.ts +10 -1
- package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.js +15 -6
- package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
- package/dist/commands/command-catalog.d.ts.map +1 -1
- package/dist/commands/command-catalog.js +7 -0
- package/dist/commands/command-catalog.js.map +1 -1
- package/dist/commands/config-channels-command.d.ts +1 -4
- package/dist/commands/config-channels-command.d.ts.map +1 -1
- package/dist/commands/config-channels-command.js +20 -24
- package/dist/commands/config-channels-command.js.map +1 -1
- package/dist/commands/root-command-router.d.ts.map +1 -1
- package/dist/commands/root-command-router.js +7 -0
- package/dist/commands/root-command-router.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/reserved-names.d.ts +1 -1
- package/dist/config/reserved-names.d.ts.map +1 -1
- package/dist/config/reserved-names.js +1 -0
- package/dist/config/reserved-names.js.map +1 -1
- package/dist/config/schemas/proxy-server.js +1 -1
- package/dist/config/schemas/quota.d.ts +26 -2
- package/dist/config/schemas/quota.d.ts.map +1 -1
- package/dist/config/schemas/quota.js +20 -1
- package/dist/config/schemas/quota.js.map +1 -1
- package/dist/cursor/cursor-daemon-auth.d.ts +2 -0
- package/dist/cursor/cursor-daemon-auth.d.ts.map +1 -0
- package/dist/cursor/cursor-daemon-auth.js +49 -0
- package/dist/cursor/cursor-daemon-auth.js.map +1 -0
- package/dist/cursor/cursor-daemon-entry.d.ts.map +1 -1
- package/dist/cursor/cursor-daemon-entry.js +44 -0
- package/dist/cursor/cursor-daemon-entry.js.map +1 -1
- package/dist/cursor/cursor-daemon.d.ts +2 -1
- package/dist/cursor/cursor-daemon.d.ts.map +1 -1
- package/dist/cursor/cursor-daemon.js +21 -5
- package/dist/cursor/cursor-daemon.js.map +1 -1
- package/dist/cursor/cursor-models.d.ts.map +1 -1
- package/dist/cursor/cursor-models.js +2 -1
- package/dist/cursor/cursor-models.js.map +1 -1
- package/dist/cursor/cursor-profile-executor.d.ts +1 -1
- package/dist/cursor/cursor-profile-executor.d.ts.map +1 -1
- package/dist/cursor/cursor-profile-executor.js +7 -4
- package/dist/cursor/cursor-profile-executor.js.map +1 -1
- package/dist/cursor/cursor-runtime-probe.d.ts.map +1 -1
- package/dist/cursor/cursor-runtime-probe.js +4 -2
- package/dist/cursor/cursor-runtime-probe.js.map +1 -1
- package/dist/cursor/types.d.ts +1 -0
- package/dist/cursor/types.d.ts.map +1 -1
- package/dist/dispatcher/profile-resolver.d.ts +16 -0
- package/dist/dispatcher/profile-resolver.d.ts.map +1 -1
- package/dist/dispatcher/profile-resolver.js +49 -3
- package/dist/dispatcher/profile-resolver.js.map +1 -1
- package/dist/docker/docker-key-rotation.d.ts +2 -0
- package/dist/docker/docker-key-rotation.d.ts.map +1 -1
- package/dist/docker/docker-key-rotation.js +9 -1
- package/dist/docker/docker-key-rotation.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 +13 -1
- package/dist/glmt/sse-parser.js.map +1 -1
- package/dist/management/shared-manager.d.ts.map +1 -1
- package/dist/management/shared-manager.js +9 -1
- package/dist/management/shared-manager.js.map +1 -1
- package/dist/proxy/profile-router.d.ts +2 -0
- package/dist/proxy/profile-router.d.ts.map +1 -1
- package/dist/proxy/profile-router.js +6 -2
- package/dist/proxy/profile-router.js.map +1 -1
- package/dist/proxy/proxy-daemon.js +1 -1
- package/dist/proxy/proxy-daemon.js.map +1 -1
- package/dist/proxy/server/messages-route.d.ts.map +1 -1
- package/dist/proxy/server/messages-route.js +79 -7
- package/dist/proxy/server/messages-route.js.map +1 -1
- package/dist/proxy/transformers/request-transformer.d.ts.map +1 -1
- package/dist/proxy/transformers/request-transformer.js +9 -2
- package/dist/proxy/transformers/request-transformer.js.map +1 -1
- package/dist/shared/claude-extension-setup.d.ts.map +1 -1
- package/dist/shared/claude-extension-setup.js +2 -1
- package/dist/shared/claude-extension-setup.js.map +1 -1
- package/dist/shared/cliproxy-model-routing.d.ts.map +1 -1
- package/dist/shared/cliproxy-model-routing.js +1 -0
- package/dist/shared/cliproxy-model-routing.js.map +1 -1
- package/dist/shared/stale-codex-translator-settings.d.ts.map +1 -1
- package/dist/shared/stale-codex-translator-settings.js +48 -9
- package/dist/shared/stale-codex-translator-settings.js.map +1 -1
- package/dist/targets/codex-adapter.d.ts.map +1 -1
- package/dist/targets/codex-adapter.js +10 -8
- package/dist/targets/codex-adapter.js.map +1 -1
- package/dist/targets/target-metadata.js +1 -1
- package/dist/targets/target-metadata.js.map +1 -1
- package/dist/ui/assets/{Trans-DyZQZ3e2.js → Trans-BkttMZOY.js} +1 -1
- package/dist/ui/assets/accounts-CMnafyvZ.js +1 -0
- package/dist/ui/assets/{alert-dialog-DWHL-dqd.js → alert-dialog-Dgbg5gJ1.js} +1 -1
- package/dist/ui/assets/api-VhuWZte1.js +4 -0
- package/dist/ui/assets/{auth-section-B4o90dwz.js → auth-section-DV1ImDLn.js} +1 -1
- package/dist/ui/assets/{backups-section-1AsdSIJO.js → backups-section-D7r-Huo_.js} +1 -1
- package/dist/ui/assets/{channels-CU4Zdsc_.js → channels-CKUk3W1L.js} +1 -1
- package/dist/ui/assets/{checkbox-CbCKGH8I.js → checkbox-B6j6PA4N.js} +1 -1
- package/dist/ui/assets/claude-extension-B9phgEGW.js +1 -0
- package/dist/ui/assets/cliproxy-CjZiufaQ.js +4 -0
- package/dist/ui/assets/{cliproxy-ai-providers-Dr4L5NRY.js → cliproxy-ai-providers-J_8Tg44E.js} +6 -6
- package/dist/ui/assets/cliproxy-control-panel-DOxGnabX.js +1 -0
- package/dist/ui/assets/codex-BJuDLXfe.js +30 -0
- package/dist/ui/assets/{confirm-dialog-b5Dahgnk.js → confirm-dialog-CjwyQ3AU.js} +1 -1
- package/dist/ui/assets/{copilot-B1Ojakbt.js → copilot-Nhs4PdOq.js} +2 -2
- package/dist/ui/assets/{cursor-PUtNVPx1.js → cursor-DqFROSqy.js} +1 -1
- package/dist/ui/assets/{droid-S2gclncb.js → droid-CBwAiZcv.js} +1 -1
- package/dist/ui/assets/{globalenv-section-7wKSmNSG.js → globalenv-section-D9WhcK3S.js} +1 -1
- package/dist/ui/assets/{health-hMLN_gyw.js → health-CE3lFqFV.js} +1 -1
- package/dist/ui/assets/icons-gI6odJjU.js +1 -0
- package/dist/ui/assets/{index-Cx0dmbiQ.js → index-Bssd99Pa.js} +1 -1
- package/dist/ui/assets/index-C6D81JHk.js +1 -0
- package/dist/ui/assets/{index-BWboJia4.js → index-D--xE6Kq.js} +1 -1
- package/dist/ui/assets/index-DFYK4jw3.js +56 -0
- package/dist/ui/assets/{index-DkR2KVhF.js → index-DGsfFqiO.js} +1 -1
- package/dist/ui/assets/index-UEdhhar4.css +1 -0
- package/dist/ui/assets/{index-Coc3_ABK.js → index-bJvDY0e2.js} +1 -1
- package/dist/ui/assets/{index-CxvNNHgE.js → index-vK0cF4_0.js} +1 -1
- package/dist/ui/assets/logs-BUA9GCN2.js +1 -0
- package/dist/ui/assets/{masked-input-4L9CIZGb.js → masked-input-BZdCgWmH.js} +1 -1
- package/dist/ui/assets/providers/qoder.svg +1 -0
- package/dist/ui/assets/proxy-status-widget-I35xB9u9.js +1 -0
- package/dist/ui/assets/{raw-json-settings-editor-panel-DXh8c8rA.js → raw-json-settings-editor-panel-DuL_4ncA.js} +1 -1
- package/dist/ui/assets/{searchable-select-CtvEQrMo.js → searchable-select-BleLprBy.js} +1 -1
- package/dist/ui/assets/{separator-E0ISp1SN.js → separator-De5-VTtx.js} +1 -1
- package/dist/ui/assets/{shared-BeYwHeNS.js → shared-Bu81YVUK.js} +2 -2
- package/dist/ui/assets/{table-BBslZvNP.js → table-DsXaM2jg.js} +1 -1
- package/dist/ui/assets/updates-C2bOO3Fo.js +1 -0
- package/dist/ui/assets/{use-accounts-BdalFsdY.js → use-accounts-C2OmaTJU.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/utils/browser/browser-settings.d.ts.map +1 -1
- package/dist/utils/browser/browser-settings.js +13 -3
- package/dist/utils/browser/browser-settings.js.map +1 -1
- package/dist/utils/glmt-deprecation.d.ts.map +1 -1
- package/dist/utils/glmt-deprecation.js +1 -3
- package/dist/utils/glmt-deprecation.js.map +1 -1
- package/dist/utils/retry-strategy.js +1 -1
- package/dist/utils/retry-strategy.js.map +1 -1
- package/dist/web-server/index.d.ts.map +1 -1
- package/dist/web-server/index.js +0 -9
- package/dist/web-server/index.js.map +1 -1
- package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -1
- package/dist/web-server/middleware/auth-middleware.js +26 -4
- package/dist/web-server/middleware/auth-middleware.js.map +1 -1
- package/dist/web-server/model-pricing.d.ts +18 -2
- package/dist/web-server/model-pricing.d.ts.map +1 -1
- package/dist/web-server/model-pricing.js +79 -3
- package/dist/web-server/model-pricing.js.map +1 -1
- package/dist/web-server/models-dev/pricing-resolver.js +14 -14
- package/dist/web-server/models-dev/pricing-resolver.js.map +1 -1
- package/dist/web-server/routes/account-routes.d.ts.map +1 -1
- package/dist/web-server/routes/account-routes.js +116 -0
- package/dist/web-server/routes/account-routes.js.map +1 -1
- package/dist/web-server/routes/bar-routes.d.ts +149 -0
- package/dist/web-server/routes/bar-routes.d.ts.map +1 -0
- package/dist/web-server/routes/bar-routes.js +415 -0
- package/dist/web-server/routes/bar-routes.js.map +1 -0
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts +10 -0
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.js +45 -13
- package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
- package/dist/web-server/routes/cliproxy-local-proxy.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-local-proxy.js +25 -8
- package/dist/web-server/routes/cliproxy-local-proxy.js.map +1 -1
- package/dist/web-server/routes/cursor-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cursor-routes.js +6 -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 +7 -0
- 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 +18 -0
- package/dist/web-server/routes/index.js.map +1 -1
- package/dist/web-server/routes/profile-routes.d.ts.map +1 -1
- package/dist/web-server/routes/profile-routes.js +6 -1
- 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 +10 -1
- package/dist/web-server/routes/settings-routes.js.map +1 -1
- package/dist/web-server/services/claude-extension-settings-service.d.ts.map +1 -1
- package/dist/web-server/services/claude-extension-settings-service.js +5 -1
- package/dist/web-server/services/claude-extension-settings-service.js.map +1 -1
- package/dist/web-server/usage/bar-analytics.d.ts +101 -0
- package/dist/web-server/usage/bar-analytics.d.ts.map +1 -0
- package/dist/web-server/usage/bar-analytics.js +315 -0
- package/dist/web-server/usage/bar-analytics.js.map +1 -0
- package/dist/web-server/usage/claude-native-credentials.d.ts +56 -0
- package/dist/web-server/usage/claude-native-credentials.d.ts.map +1 -0
- package/dist/web-server/usage/claude-native-credentials.js +140 -0
- package/dist/web-server/usage/claude-native-credentials.js.map +1 -0
- package/dist/web-server/usage/cliproxy-snapshot-reader.d.ts +24 -0
- package/dist/web-server/usage/cliproxy-snapshot-reader.d.ts.map +1 -0
- package/dist/web-server/usage/cliproxy-snapshot-reader.js +82 -0
- package/dist/web-server/usage/cliproxy-snapshot-reader.js.map +1 -0
- package/dist/web-server/usage/cliproxy-usage-syncer.d.ts +3 -2
- package/dist/web-server/usage/cliproxy-usage-syncer.d.ts.map +1 -1
- package/dist/web-server/usage/cliproxy-usage-syncer.js +46 -13
- package/dist/web-server/usage/cliproxy-usage-syncer.js.map +1 -1
- package/dist/web-server/usage/cliproxy-usage-transformer.d.ts +9 -3
- package/dist/web-server/usage/cliproxy-usage-transformer.d.ts.map +1 -1
- package/dist/web-server/usage/cliproxy-usage-transformer.js +133 -19
- package/dist/web-server/usage/cliproxy-usage-transformer.js.map +1 -1
- package/dist/web-server/usage/codex-local-quota-collector.d.ts +74 -0
- package/dist/web-server/usage/codex-local-quota-collector.d.ts.map +1 -0
- package/dist/web-server/usage/codex-local-quota-collector.js +250 -0
- package/dist/web-server/usage/codex-local-quota-collector.js.map +1 -0
- package/dist/web-server/usage/codex-native-usage-collector.d.ts.map +1 -1
- package/dist/web-server/usage/codex-native-usage-collector.js +18 -2
- package/dist/web-server/usage/codex-native-usage-collector.js.map +1 -1
- package/dist/web-server/usage/data-aggregator.d.ts +11 -0
- package/dist/web-server/usage/data-aggregator.d.ts.map +1 -1
- package/dist/web-server/usage/data-aggregator.js +29 -1
- package/dist/web-server/usage/data-aggregator.js.map +1 -1
- package/dist/web-server/usage/native-quota-collector.d.ts +44 -0
- package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -0
- package/dist/web-server/usage/native-quota-collector.js +378 -0
- package/dist/web-server/usage/native-quota-collector.js.map +1 -0
- package/dist/web-server/usage/profile-filter.d.ts +1 -1
- package/dist/web-server/usage/profile-filter.d.ts.map +1 -1
- package/dist/web-server/usage/profile-filter.js +6 -1
- package/dist/web-server/usage/profile-filter.js.map +1 -1
- package/dist/web-server/usage/types.d.ts +2 -0
- package/dist/web-server/usage/types.d.ts.map +1 -1
- package/lib/mcp/ccs-browser-server.cjs +31 -15
- package/package.json +1 -1
- package/scripts/completion/ccs.bash +0 -12
- package/scripts/completion/ccs.fish +0 -11
- package/scripts/completion/ccs.ps1 +0 -10
- package/scripts/completion/ccs.zsh +0 -13
- package/scripts/github/stable-release-issue-cleanup-lib.mjs +115 -0
- package/scripts/github/stable-release-issue-cleanup.mjs +134 -0
- package/dist/ui/assets/accounts-BPJltru3.js +0 -1
- package/dist/ui/assets/api-BxPN-zy4.js +0 -4
- package/dist/ui/assets/claude-extension-CWpjmIGt.js +0 -1
- package/dist/ui/assets/cliproxy-K6eBb5VO.js +0 -4
- package/dist/ui/assets/cliproxy-control-panel-Cz5r7kHP.js +0 -1
- package/dist/ui/assets/codex-0HdbW8NR.js +0 -30
- package/dist/ui/assets/icons-DzKUh8vG.js +0 -1
- package/dist/ui/assets/index-BMoGhs28.css +0 -1
- package/dist/ui/assets/index-COt1pbk-.js +0 -1
- package/dist/ui/assets/index-CcGVqYOy.js +0 -56
- package/dist/ui/assets/logs-BRFVfyLc.js +0 -1
- package/dist/ui/assets/proxy-status-widget-s1UWOE23.js +0 -1
- package/dist/ui/assets/updates-CDrm903n.js +0 -1
|
@@ -7,15 +7,16 @@
|
|
|
7
7
|
* Snapshot location: ~/.ccs/cache/cliproxy-usage/latest.json
|
|
8
8
|
* Sync interval: 5 minutes
|
|
9
9
|
*/
|
|
10
|
-
import { fetchCliproxyUsageRaw } from '../../cliproxy/services/stats-fetcher';
|
|
10
|
+
import { fetchCliproxyUsageRaw, fetchCliproxyAuthFiles } from '../../cliproxy/services/stats-fetcher';
|
|
11
11
|
import type { DailyUsage, HourlyUsage, MonthlyUsage } from './types';
|
|
12
12
|
type FetchCliproxyUsageRaw = typeof fetchCliproxyUsageRaw;
|
|
13
|
+
type FetchCliproxyAuthFiles = typeof fetchCliproxyAuthFiles;
|
|
13
14
|
export declare function loadCachedCliproxyData(): Promise<{
|
|
14
15
|
daily: DailyUsage[];
|
|
15
16
|
hourly: HourlyUsage[];
|
|
16
17
|
monthly: MonthlyUsage[];
|
|
17
18
|
}>;
|
|
18
|
-
export declare function syncCliproxyUsage(fetchRaw?: FetchCliproxyUsageRaw): Promise<void>;
|
|
19
|
+
export declare function syncCliproxyUsage(fetchRaw?: FetchCliproxyUsageRaw, fetchAuthFiles?: FetchCliproxyAuthFiles): Promise<void>;
|
|
19
20
|
export declare function startCliproxySync(syncNow?: () => Promise<void>): void;
|
|
20
21
|
export declare function stopCliproxySync(): void;
|
|
21
22
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliproxy-usage-syncer.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-syncer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"cliproxy-usage-syncer.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-syncer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,uCAAuC,CAAC;AAS/C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAsBrE,KAAK,qBAAqB,GAAG,OAAO,qBAAqB,CAAC;AAC1D,KAAK,sBAAsB,GAAG,OAAO,sBAAsB,CAAC;AAgQ5D,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC,CAcD;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,GAAE,qBAA6C,EACvD,cAAc,GAAE,sBAA+C,GAC9D,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAAM,OAAO,CAAC,IAAI,CAA6B,GAAG,IAAI,CAahG;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC"}
|
|
@@ -44,6 +44,8 @@ const SNAPSHOT_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
|
|
|
44
44
|
const HISTORY_RETENTION_DAYS = Math.max(30, parseInt(process.env.CCS_CLIPROXY_HISTORY_RETENTION_DAYS ?? '365', 10) || 365);
|
|
45
45
|
const HISTORY_RETENTION_MS = HISTORY_RETENTION_DAYS * 24 * 60 * 60 * 1000;
|
|
46
46
|
const MAX_WRITE_ATTEMPTS = 3;
|
|
47
|
+
const PRIVATE_DIR_MODE = 0o700;
|
|
48
|
+
const PRIVATE_FILE_MODE = 0o600;
|
|
47
49
|
/** Sync interval in ms, configurable via CCS_CLIPROXY_SYNC_INTERVAL env var (default: 5 min) */
|
|
48
50
|
const SYNC_INTERVAL_MS = Math.max(30000, parseInt(process.env.CCS_CLIPROXY_SYNC_INTERVAL ?? '300000', 10) || 300000);
|
|
49
51
|
let syncIntervalId = null;
|
|
@@ -54,11 +56,17 @@ function getCliproxyCacheDir() {
|
|
|
54
56
|
function getLatestSnapshotPath() {
|
|
55
57
|
return path.join(getCliproxyCacheDir(), 'latest.json');
|
|
56
58
|
}
|
|
59
|
+
function ensurePrivateDirectory(dir) {
|
|
60
|
+
fs.mkdirSync(dir, { recursive: true, mode: PRIVATE_DIR_MODE });
|
|
61
|
+
fs.chmodSync(dir, PRIVATE_DIR_MODE);
|
|
62
|
+
}
|
|
57
63
|
function ensureCliproxyCacheDir() {
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
const ccsDir = (0, config_loader_facade_1.getCcsDir)();
|
|
65
|
+
const cacheDir = path.join(ccsDir, 'cache');
|
|
66
|
+
const cliproxyCacheDir = path.join(cacheDir, 'cliproxy-usage');
|
|
67
|
+
ensurePrivateDirectory(ccsDir);
|
|
68
|
+
ensurePrivateDirectory(cacheDir);
|
|
69
|
+
ensurePrivateDirectory(cliproxyCacheDir);
|
|
62
70
|
}
|
|
63
71
|
function getSnapshotTimestamp() {
|
|
64
72
|
snapshotTimestampOrdinal = (snapshotTimestampOrdinal + 1) % 1000;
|
|
@@ -87,8 +95,6 @@ function buildLegacyHistoryDetails(snapshot) {
|
|
|
87
95
|
details.push({
|
|
88
96
|
model: breakdown.modelName,
|
|
89
97
|
timestamp: buildHourlyTimestamp(hour.hour),
|
|
90
|
-
source: hour.source,
|
|
91
|
-
authIndex: 'legacy-hourly',
|
|
92
98
|
inputTokens: breakdown.inputTokens,
|
|
93
99
|
outputTokens: breakdown.outputTokens,
|
|
94
100
|
cacheReadTokens: breakdown.cacheReadTokens,
|
|
@@ -108,8 +114,6 @@ function buildLegacyHistoryDetails(snapshot) {
|
|
|
108
114
|
details.push({
|
|
109
115
|
model: breakdown.modelName,
|
|
110
116
|
timestamp: buildDailyTimestamp(day.date),
|
|
111
|
-
source: day.source,
|
|
112
|
-
authIndex: 'legacy-daily',
|
|
113
117
|
inputTokens: breakdown.inputTokens,
|
|
114
118
|
outputTokens: breakdown.outputTokens,
|
|
115
119
|
cacheReadTokens: breakdown.cacheReadTokens,
|
|
@@ -157,13 +161,25 @@ function readSnapshot(emitWarnings = true) {
|
|
|
157
161
|
}
|
|
158
162
|
return null;
|
|
159
163
|
}
|
|
160
|
-
|
|
164
|
+
const details = snapshot.details;
|
|
165
|
+
if (!Array.isArray(details)) {
|
|
161
166
|
if (emitWarnings) {
|
|
162
167
|
console.log((0, ui_1.info)('CLIProxy snapshot details missing, will refresh on next sync'));
|
|
163
168
|
}
|
|
164
169
|
return null;
|
|
165
170
|
}
|
|
166
|
-
|
|
171
|
+
const normalizedDetails = details
|
|
172
|
+
.map((detail) => (0, cliproxy_usage_transformer_1.normalizeCliproxyUsageHistoryDetail)(detail))
|
|
173
|
+
.filter((detail) => detail !== null);
|
|
174
|
+
const { daily, hourly, monthly } = (0, cliproxy_usage_transformer_1.buildCliproxyUsageHistoryAggregates)(normalizedDetails);
|
|
175
|
+
return {
|
|
176
|
+
version: SNAPSHOT_VERSION,
|
|
177
|
+
timestamp: Number(snapshot.timestamp),
|
|
178
|
+
details: normalizedDetails,
|
|
179
|
+
daily,
|
|
180
|
+
hourly,
|
|
181
|
+
monthly,
|
|
182
|
+
};
|
|
167
183
|
}
|
|
168
184
|
if (snapshot.version === 1 || snapshot.version === 2) {
|
|
169
185
|
return migrateLegacySnapshot(snapshot, emitWarnings);
|
|
@@ -200,7 +216,11 @@ async function writeSnapshotWithMerge(incomingDetails) {
|
|
|
200
216
|
const baseTimestamp = baseSnapshot?.timestamp ?? -Infinity;
|
|
201
217
|
const snapshot = buildSnapshot(baseSnapshot?.details ?? [], incomingDetails);
|
|
202
218
|
const tempFile = `${snapshotPath}.${process.pid}.${snapshot.timestamp}.tmp`;
|
|
203
|
-
fs.writeFileSync(tempFile, JSON.stringify(snapshot),
|
|
219
|
+
fs.writeFileSync(tempFile, JSON.stringify(snapshot), {
|
|
220
|
+
encoding: 'utf-8',
|
|
221
|
+
mode: PRIVATE_FILE_MODE,
|
|
222
|
+
});
|
|
223
|
+
fs.chmodSync(tempFile, PRIVATE_FILE_MODE);
|
|
204
224
|
const latestSnapshot = readSnapshot(false);
|
|
205
225
|
const latestTimestamp = latestSnapshot?.timestamp ?? -Infinity;
|
|
206
226
|
if (latestTimestamp > baseTimestamp) {
|
|
@@ -208,6 +228,7 @@ async function writeSnapshotWithMerge(incomingDetails) {
|
|
|
208
228
|
continue;
|
|
209
229
|
}
|
|
210
230
|
fs.renameSync(tempFile, snapshotPath);
|
|
231
|
+
fs.chmodSync(snapshotPath, PRIVATE_FILE_MODE);
|
|
211
232
|
console.log((0, ui_1.ok)('CLIProxy usage snapshot updated'));
|
|
212
233
|
return;
|
|
213
234
|
}
|
|
@@ -226,14 +247,26 @@ async function loadCachedCliproxyData() {
|
|
|
226
247
|
return { daily: snapshot.daily, hourly: snapshot.hourly, monthly: snapshot.monthly };
|
|
227
248
|
}
|
|
228
249
|
exports.loadCachedCliproxyData = loadCachedCliproxyData;
|
|
229
|
-
async function syncCliproxyUsage(fetchRaw = stats_fetcher_1.fetchCliproxyUsageRaw) {
|
|
250
|
+
async function syncCliproxyUsage(fetchRaw = stats_fetcher_1.fetchCliproxyUsageRaw, fetchAuthFiles = stats_fetcher_1.fetchCliproxyAuthFiles) {
|
|
230
251
|
const raw = await fetchRaw();
|
|
231
252
|
if (raw === null) {
|
|
232
253
|
console.log((0, ui_1.warn)('CLIProxy usage sync skipped: proxy unavailable'));
|
|
233
254
|
return;
|
|
234
255
|
}
|
|
256
|
+
// Build auth_index → account email map for attribution.
|
|
257
|
+
// Auth file fetch failure is non-fatal: fall back to undefined map (cost = 0).
|
|
258
|
+
let accountMap;
|
|
259
|
+
try {
|
|
260
|
+
const authFiles = await fetchAuthFiles();
|
|
261
|
+
if (authFiles !== null) {
|
|
262
|
+
accountMap = (0, stats_fetcher_1.buildAuthIndexToAccountMap)(authFiles);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
// Auth files unavailable — proceed without account attribution
|
|
267
|
+
}
|
|
235
268
|
try {
|
|
236
|
-
await writeSnapshotWithMerge((0, cliproxy_usage_transformer_1.extractCliproxyUsageHistoryDetails)(raw));
|
|
269
|
+
await writeSnapshotWithMerge((0, cliproxy_usage_transformer_1.extractCliproxyUsageHistoryDetails)(raw, accountMap));
|
|
237
270
|
}
|
|
238
271
|
catch (err) {
|
|
239
272
|
console.log((0, ui_1.warn)('Failed to write CLIProxy snapshot:') + ` ${err.message}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliproxy-usage-syncer.js","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-syncer.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"cliproxy-usage-syncer.js","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-syncer.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,9 @@ import type { DailyUsage, HourlyUsage, MonthlyUsage } from './types';
|
|
|
10
10
|
export interface CliproxyUsageHistoryDetail {
|
|
11
11
|
model: string;
|
|
12
12
|
provider?: string;
|
|
13
|
+
/** CLIProxy account email/id derived from auth_index lookup. Populated when an accountMap is supplied. */
|
|
14
|
+
accountId?: string;
|
|
13
15
|
timestamp: string;
|
|
14
|
-
source: string;
|
|
15
|
-
authIndex: string;
|
|
16
16
|
inputTokens: number;
|
|
17
17
|
outputTokens: number;
|
|
18
18
|
cacheReadTokens: number;
|
|
@@ -20,12 +20,18 @@ export interface CliproxyUsageHistoryDetail {
|
|
|
20
20
|
cost: number;
|
|
21
21
|
failed: boolean;
|
|
22
22
|
}
|
|
23
|
+
export declare function normalizeCliproxyUsageHistoryDetail(detail: unknown): CliproxyUsageHistoryDetail | null;
|
|
23
24
|
/**
|
|
24
25
|
* Flatten the nested response.usage.apis[provider].models[model].details[]
|
|
25
26
|
* structure into normalized history details. Failed requests are retained only
|
|
26
27
|
* when they still report tracked token usage that analytics can account for.
|
|
28
|
+
*
|
|
29
|
+
* @param accountMap Optional auth_index → account email/id map. When provided,
|
|
30
|
+
* each detail's `accountId` is resolved from String(auth_index). When the index
|
|
31
|
+
* is absent from the map, `accountId` is left undefined so getTodayCostByAccount
|
|
32
|
+
* buckets the cost under 'unknown' rather than mis-attributing it.
|
|
27
33
|
*/
|
|
28
|
-
export declare function extractCliproxyUsageHistoryDetails(response: CliproxyUsageApiResponse): CliproxyUsageHistoryDetail[];
|
|
34
|
+
export declare function extractCliproxyUsageHistoryDetails(response: CliproxyUsageApiResponse, accountMap?: Map<string, string>): CliproxyUsageHistoryDetail[];
|
|
29
35
|
export declare function mergeCliproxyUsageHistoryDetails(existing: CliproxyUsageHistoryDetail[], incoming: CliproxyUsageHistoryDetail[]): CliproxyUsageHistoryDetail[];
|
|
30
36
|
export declare function pruneCliproxyUsageHistoryDetails(details: CliproxyUsageHistoryDetail[], oldestTimestamp: number): CliproxyUsageHistoryDetail[];
|
|
31
37
|
/** Transform CLIProxy usage response into DailyUsage array (sorted descending by date) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliproxy-usage-transformer.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAkB,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAOrF,qFAAqF;AACrF,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,
|
|
1
|
+
{"version":3,"file":"cliproxy-usage-transformer.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAkB,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAOrF,qFAAqF;AACrF,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0GAA0G;IAC1G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAsGD,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,OAAO,GACd,0BAA0B,GAAG,IAAI,CAiDnC;AAeD;;;;;;;;;GASG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,wBAAwB,EAClC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,0BAA0B,EAAE,CAkB9B;AAoED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,0BAA0B,EAAE,EACtC,QAAQ,EAAE,0BAA0B,EAAE,GACrC,0BAA0B,EAAE,CA0C9B;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,0BAA0B,EAAE,EACrC,eAAe,EAAE,MAAM,GACtB,0BAA0B,EAAE,CAK9B;AAoED,0FAA0F;AAC1F,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,wBAAwB,GAAG,UAAU,EAAE,CAsB9F;AAED,2FAA2F;AAC3F,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,wBAAwB,GAAG,WAAW,EAAE,CA2BhG;AAED,6FAA6F;AAC7F,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,wBAAwB,GACjC,YAAY,EAAE,CAkBhB;AAED,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,0BAA0B,EAAE,GAAG;IAC1F,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAgEA"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* types compatible with the CCS analytics dashboard.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.buildCliproxyUsageHistoryAggregates = exports.transformCliproxyToMonthlyUsage = exports.transformCliproxyToHourlyUsage = exports.transformCliproxyToDailyUsage = exports.pruneCliproxyUsageHistoryDetails = exports.mergeCliproxyUsageHistoryDetails = exports.extractCliproxyUsageHistoryDetails = void 0;
|
|
9
|
+
exports.buildCliproxyUsageHistoryAggregates = exports.transformCliproxyToMonthlyUsage = exports.transformCliproxyToHourlyUsage = exports.transformCliproxyToDailyUsage = exports.pruneCliproxyUsageHistoryDetails = exports.mergeCliproxyUsageHistoryDetails = exports.extractCliproxyUsageHistoryDetails = exports.normalizeCliproxyUsageHistoryDetail = void 0;
|
|
10
10
|
const model_pricing_1 = require("../model-pricing");
|
|
11
11
|
const model_identity_1 = require("./model-identity");
|
|
12
12
|
/** Build ModelBreakdown from accumulated token counts */
|
|
@@ -22,27 +22,91 @@ function buildModelBreakdown(modelName, provider, acc) {
|
|
|
22
22
|
cost,
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
-
function createHistoryDetail(provider, model, detail) {
|
|
25
|
+
function createHistoryDetail(provider, model, detail, accountMap) {
|
|
26
26
|
const pricingProvider = (0, model_identity_1.normalizeUsageProvider)(provider) ?? provider.trim().toLowerCase();
|
|
27
|
+
const inputTokens = detail.tokens?.input_tokens ?? 0;
|
|
28
|
+
const outputTokens = detail.tokens?.output_tokens ?? 0;
|
|
29
|
+
const cacheReadTokens = detail.tokens?.cached_tokens ?? 0;
|
|
30
|
+
// Resolve accountId from auth_index → account map.
|
|
31
|
+
// buildAuthIndexToAccountMap stores only String(auth_index) keys, so the numeric-key
|
|
32
|
+
// lookup is dead code and the detail.source fallback mis-attributes cost to a CLIProxy
|
|
33
|
+
// source label rather than an email. Leave accountId undefined when the index is absent
|
|
34
|
+
// so getTodayCostByAccount buckets it under 'unknown' and the bar excludes it.
|
|
35
|
+
let accountId;
|
|
36
|
+
if (accountMap !== undefined) {
|
|
37
|
+
const key = String(detail.auth_index);
|
|
38
|
+
accountId = accountMap.get(key);
|
|
39
|
+
}
|
|
27
40
|
return {
|
|
28
41
|
model,
|
|
29
42
|
provider: pricingProvider,
|
|
43
|
+
...(accountId !== undefined && { accountId }),
|
|
30
44
|
timestamp: detail.timestamp,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
outputTokens: detail.tokens?.output_tokens ?? 0,
|
|
35
|
-
cacheReadTokens: detail.tokens?.cached_tokens ?? 0,
|
|
45
|
+
inputTokens,
|
|
46
|
+
outputTokens,
|
|
47
|
+
cacheReadTokens,
|
|
36
48
|
requestCount: 1,
|
|
37
|
-
cost: (
|
|
38
|
-
inputTokens: detail.tokens?.input_tokens ?? 0,
|
|
39
|
-
outputTokens: detail.tokens?.output_tokens ?? 0,
|
|
40
|
-
cacheCreationTokens: 0,
|
|
41
|
-
cacheReadTokens: detail.tokens?.cached_tokens ?? 0,
|
|
42
|
-
}, model, { provider: pricingProvider }),
|
|
49
|
+
cost: calculateHistoryDetailCost(model, pricingProvider, inputTokens, outputTokens, cacheReadTokens),
|
|
43
50
|
failed: detail.failed,
|
|
44
51
|
};
|
|
45
52
|
}
|
|
53
|
+
function calculateHistoryDetailCost(model, provider, inputTokens, outputTokens, cacheReadTokens) {
|
|
54
|
+
return (0, model_pricing_1.calculateCost)({
|
|
55
|
+
inputTokens,
|
|
56
|
+
outputTokens,
|
|
57
|
+
cacheCreationTokens: 0,
|
|
58
|
+
cacheReadTokens,
|
|
59
|
+
}, model, provider ? { provider } : undefined);
|
|
60
|
+
}
|
|
61
|
+
function normalizePersistedNumber(value, fallback = 0) {
|
|
62
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
|
|
63
|
+
}
|
|
64
|
+
function normalizePersistedProvider(value) {
|
|
65
|
+
if (typeof value !== 'string')
|
|
66
|
+
return undefined;
|
|
67
|
+
const trimmed = value.trim();
|
|
68
|
+
if (trimmed.length === 0)
|
|
69
|
+
return undefined;
|
|
70
|
+
return (0, model_identity_1.normalizeUsageProvider)(trimmed) ?? trimmed.toLowerCase();
|
|
71
|
+
}
|
|
72
|
+
function normalizeCliproxyUsageHistoryDetail(detail) {
|
|
73
|
+
if (!detail || typeof detail !== 'object')
|
|
74
|
+
return null;
|
|
75
|
+
const candidate = detail;
|
|
76
|
+
if (typeof candidate.model !== 'string' ||
|
|
77
|
+
typeof candidate.timestamp !== 'string' ||
|
|
78
|
+
!Number.isFinite(Date.parse(candidate.timestamp))) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
const provider = normalizePersistedProvider(candidate.provider);
|
|
82
|
+
const inputTokens = normalizePersistedNumber(candidate.inputTokens);
|
|
83
|
+
const outputTokens = normalizePersistedNumber(candidate.outputTokens);
|
|
84
|
+
const cacheReadTokens = normalizePersistedNumber(candidate.cacheReadTokens);
|
|
85
|
+
const requestCount = Math.max(1, normalizePersistedNumber(candidate.requestCount, 1));
|
|
86
|
+
// Compute the cost fallback lazily. calculateHistoryDetailCost is ~6ms/call
|
|
87
|
+
// (model-pricing lookup); passing it as an eager default argument ran it for
|
|
88
|
+
// every record even when a persisted cost was already present, turning a few
|
|
89
|
+
// thousand records into a multi-second event-loop stall.
|
|
90
|
+
const cost = typeof candidate.cost === 'number' && Number.isFinite(candidate.cost)
|
|
91
|
+
? candidate.cost
|
|
92
|
+
: calculateHistoryDetailCost(candidate.model, provider, inputTokens, outputTokens, cacheReadTokens);
|
|
93
|
+
const accountId = typeof candidate.accountId === 'string' && candidate.accountId.length > 0
|
|
94
|
+
? candidate.accountId
|
|
95
|
+
: undefined;
|
|
96
|
+
return {
|
|
97
|
+
model: candidate.model,
|
|
98
|
+
...(provider && { provider }),
|
|
99
|
+
...(accountId !== undefined && { accountId }),
|
|
100
|
+
timestamp: candidate.timestamp,
|
|
101
|
+
inputTokens,
|
|
102
|
+
outputTokens,
|
|
103
|
+
cacheReadTokens,
|
|
104
|
+
requestCount,
|
|
105
|
+
cost,
|
|
106
|
+
failed: candidate.failed === true,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
exports.normalizeCliproxyUsageHistoryDetail = normalizeCliproxyUsageHistoryDetail;
|
|
46
110
|
// ============================================================================
|
|
47
111
|
// FLATTEN
|
|
48
112
|
// ============================================================================
|
|
@@ -56,8 +120,13 @@ function hasTrackedUsage(detail) {
|
|
|
56
120
|
* Flatten the nested response.usage.apis[provider].models[model].details[]
|
|
57
121
|
* structure into normalized history details. Failed requests are retained only
|
|
58
122
|
* when they still report tracked token usage that analytics can account for.
|
|
123
|
+
*
|
|
124
|
+
* @param accountMap Optional auth_index → account email/id map. When provided,
|
|
125
|
+
* each detail's `accountId` is resolved from String(auth_index). When the index
|
|
126
|
+
* is absent from the map, `accountId` is left undefined so getTodayCostByAccount
|
|
127
|
+
* buckets the cost under 'unknown' rather than mis-attributing it.
|
|
59
128
|
*/
|
|
60
|
-
function extractCliproxyUsageHistoryDetails(response) {
|
|
129
|
+
function extractCliproxyUsageHistoryDetails(response, accountMap) {
|
|
61
130
|
const apis = response?.usage?.apis;
|
|
62
131
|
if (!apis)
|
|
63
132
|
return [];
|
|
@@ -73,20 +142,32 @@ function extractCliproxyUsageHistoryDetails(response) {
|
|
|
73
142
|
for (const detail of details) {
|
|
74
143
|
if (detail.failed && !hasTrackedUsage(detail))
|
|
75
144
|
continue;
|
|
76
|
-
results.push(createHistoryDetail(provider, model, detail));
|
|
145
|
+
results.push(createHistoryDetail(provider, model, detail, accountMap));
|
|
77
146
|
}
|
|
78
147
|
}
|
|
79
148
|
}
|
|
80
149
|
return results;
|
|
81
150
|
}
|
|
82
151
|
exports.extractCliproxyUsageHistoryDetails = extractCliproxyUsageHistoryDetails;
|
|
152
|
+
function sanitizeHistoryDetail(detail) {
|
|
153
|
+
return {
|
|
154
|
+
model: detail.model,
|
|
155
|
+
...(detail.provider && { provider: detail.provider }),
|
|
156
|
+
...(detail.accountId !== undefined && { accountId: detail.accountId }),
|
|
157
|
+
timestamp: detail.timestamp,
|
|
158
|
+
inputTokens: detail.inputTokens,
|
|
159
|
+
outputTokens: detail.outputTokens,
|
|
160
|
+
cacheReadTokens: detail.cacheReadTokens,
|
|
161
|
+
requestCount: detail.requestCount,
|
|
162
|
+
cost: detail.cost,
|
|
163
|
+
failed: detail.failed,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
83
166
|
function createHistorySignature(detail) {
|
|
84
167
|
return [
|
|
85
168
|
detail.model,
|
|
86
169
|
detail.provider ?? '',
|
|
87
170
|
detail.timestamp,
|
|
88
|
-
detail.source,
|
|
89
|
-
detail.authIndex,
|
|
90
171
|
detail.inputTokens,
|
|
91
172
|
detail.outputTokens,
|
|
92
173
|
detail.cacheReadTokens,
|
|
@@ -94,9 +175,42 @@ function createHistorySignature(detail) {
|
|
|
94
175
|
detail.failed ? '1' : '0',
|
|
95
176
|
].join('|');
|
|
96
177
|
}
|
|
178
|
+
function createProviderlessHistorySignature(detail) {
|
|
179
|
+
return [
|
|
180
|
+
detail.model,
|
|
181
|
+
detail.timestamp,
|
|
182
|
+
detail.inputTokens,
|
|
183
|
+
detail.outputTokens,
|
|
184
|
+
detail.cacheReadTokens,
|
|
185
|
+
detail.requestCount,
|
|
186
|
+
detail.failed ? '1' : '0',
|
|
187
|
+
].join('|');
|
|
188
|
+
}
|
|
189
|
+
function hydrateProviderlessHistoryDetails(existing, incoming) {
|
|
190
|
+
const incomingByProviderlessSignature = new Map();
|
|
191
|
+
for (const detail of incoming) {
|
|
192
|
+
if (!detail.provider)
|
|
193
|
+
continue;
|
|
194
|
+
const signature = createProviderlessHistorySignature(detail);
|
|
195
|
+
incomingByProviderlessSignature.set(signature, [
|
|
196
|
+
...(incomingByProviderlessSignature.get(signature) ?? []),
|
|
197
|
+
detail,
|
|
198
|
+
]);
|
|
199
|
+
}
|
|
200
|
+
return existing.map((detail) => {
|
|
201
|
+
if (detail.provider)
|
|
202
|
+
return detail;
|
|
203
|
+
const matches = incomingByProviderlessSignature.get(createProviderlessHistorySignature(detail));
|
|
204
|
+
const providers = new Set(matches?.map((match) => match.provider).filter(Boolean));
|
|
205
|
+
if (!matches || providers.size !== 1)
|
|
206
|
+
return detail;
|
|
207
|
+
return { ...detail, provider: matches[0].provider, cost: matches[0].cost };
|
|
208
|
+
});
|
|
209
|
+
}
|
|
97
210
|
function mergeCliproxyUsageHistoryDetails(existing, incoming) {
|
|
211
|
+
const hydratedExisting = hydrateProviderlessHistoryDetails(existing, incoming);
|
|
98
212
|
const existingCounts = new Map();
|
|
99
|
-
for (const detail of
|
|
213
|
+
for (const detail of hydratedExisting) {
|
|
100
214
|
const signature = createHistorySignature(detail);
|
|
101
215
|
const entry = existingCounts.get(signature);
|
|
102
216
|
if (entry) {
|
|
@@ -129,7 +243,7 @@ function mergeCliproxyUsageHistoryDetails(existing, incoming) {
|
|
|
129
243
|
const merged = [];
|
|
130
244
|
for (const { detail, count } of existingCounts.values()) {
|
|
131
245
|
for (let index = 0; index < count; index++) {
|
|
132
|
-
merged.push(
|
|
246
|
+
merged.push(sanitizeHistoryDetail(detail));
|
|
133
247
|
}
|
|
134
248
|
}
|
|
135
249
|
return merged.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliproxy-usage-transformer.js","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-transformer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cliproxy-usage-transformer.js","sourceRoot":"","sources":["../../../src/web-server/usage/cliproxy-usage-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex local quota collector (zero network).
|
|
3
|
+
*
|
|
4
|
+
* Codex writes a `rate_limits` object into its rollout session logs
|
|
5
|
+
* (~/.codex/sessions/<y>/<m>/<d>/rollout-*.jsonl). We surface the user's Codex
|
|
6
|
+
* subscription quota WITHOUT any network call — pure local file read.
|
|
7
|
+
*
|
|
8
|
+
* Exec-mode sessions often never emit rate_limits (the field stays null). The
|
|
9
|
+
* NEWEST session is frequently exec-mode, so reading only it would emit no row
|
|
10
|
+
* even though an older interactive session still carries real quota. We instead
|
|
11
|
+
* scan recent sessions newest-first and use the first one that yields a usable
|
|
12
|
+
* rate_limits, marking the result stale when that source file is old. We only
|
|
13
|
+
* return null when no scanned session has any rate_limits — then the bar omits
|
|
14
|
+
* the row rather than inventing a fake one.
|
|
15
|
+
*/
|
|
16
|
+
/// <reference types="node" />
|
|
17
|
+
/// <reference types="bun-types" />
|
|
18
|
+
/// <reference types="node" />
|
|
19
|
+
import * as fs from 'node:fs';
|
|
20
|
+
/**
|
|
21
|
+
* One Codex quota window normalized for the bar's per-window detail.
|
|
22
|
+
* `key`/`label` map primary->five_hour/"5h", secondary->seven_day/"week".
|
|
23
|
+
*/
|
|
24
|
+
export interface CodexLocalQuotaWindow {
|
|
25
|
+
/** Stable window key: "five_hour" | "seven_day". */
|
|
26
|
+
key: string;
|
|
27
|
+
/** Short display label: "5h" | "week". */
|
|
28
|
+
label: string;
|
|
29
|
+
/** Used percentage (0-100). */
|
|
30
|
+
usedPercent: number;
|
|
31
|
+
/** Remaining percentage (0-100) = 100 - usedPercent. */
|
|
32
|
+
remainingPercent: number;
|
|
33
|
+
/** ISO timestamp when this window resets, null if unknown. */
|
|
34
|
+
resetAt: string | null;
|
|
35
|
+
/** Window length in minutes (300 / 10080), null if absent in the raw log. */
|
|
36
|
+
windowMinutes: number | null;
|
|
37
|
+
}
|
|
38
|
+
/** Normalized Codex quota snapshot from a local session log. */
|
|
39
|
+
export interface CodexLocalQuota {
|
|
40
|
+
/** Remaining percentage (0-100): min across primary/secondary windows. */
|
|
41
|
+
quotaPercentage: number;
|
|
42
|
+
/** ISO timestamp of the soonest window reset, null if unknown. */
|
|
43
|
+
nextReset: string | null;
|
|
44
|
+
/** plan_type from the session (e.g. "pro"/"plus"), null if absent. */
|
|
45
|
+
tier: string | null;
|
|
46
|
+
/** True when the source file is older than the freshness window. */
|
|
47
|
+
stale: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* ISO mtime of the session file that SUPPLIED this data, present only when
|
|
50
|
+
* stale. Lets the bar render an "as of HH:mm (older session)" footnote.
|
|
51
|
+
*/
|
|
52
|
+
staleAsOf: string | null;
|
|
53
|
+
/** Per-window detail (primary -> five_hour, secondary -> seven_day). */
|
|
54
|
+
windows: CodexLocalQuotaWindow[];
|
|
55
|
+
}
|
|
56
|
+
/** Injectable seams for deterministic tests (no real fs / no tail subprocess). */
|
|
57
|
+
export interface CodexLocalQuotaDeps {
|
|
58
|
+
env?: NodeJS.ProcessEnv;
|
|
59
|
+
homeDir?: string;
|
|
60
|
+
existsSyncImpl?: (p: string) => boolean;
|
|
61
|
+
readdirImpl?: (dir: string) => fs.Dirent[];
|
|
62
|
+
statMtimeMsImpl?: (p: string) => number;
|
|
63
|
+
/** Returns the last N lines of a file (default: Bun tail). */
|
|
64
|
+
tailLinesImpl?: (file: string, lines: number) => Promise<string[]>;
|
|
65
|
+
now?: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Scan recent Codex sessions newest-first and normalize the first usable
|
|
69
|
+
* rate_limits. Staleness is computed from the mtime of the file that SUPPLIED
|
|
70
|
+
* the data (not the newest file), so a real-but-old session reads correctly as
|
|
71
|
+
* stale. Returns null only when none of the scanned sessions carries quota.
|
|
72
|
+
*/
|
|
73
|
+
export declare function getCodexLocalQuota(deps?: CodexLocalQuotaDeps): Promise<CodexLocalQuota | null>;
|
|
74
|
+
//# sourceMappingURL=codex-local-quota-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-local-quota-collector.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/codex-local-quota-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;;;;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAI9B;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,eAAe,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,sEAAsE;IACtE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,oEAAoE;IACpE,KAAK,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,wEAAwE;IACxE,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;IAC3C,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAiLD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAiDjC"}
|