@kaitranntt/ccs 6.7.0 → 6.7.1-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -23
- package/dist/api/index.d.ts +7 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +24 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/services/index.d.ts +10 -0
- package/dist/api/services/index.d.ts.map +1 -0
- package/dist/api/services/index.js +26 -0
- package/dist/api/services/index.js.map +1 -0
- package/dist/api/services/profile-reader.d.ts +28 -0
- package/dist/api/services/profile-reader.d.ts.map +1 -0
- package/dist/api/services/profile-reader.js +148 -0
- package/dist/api/services/profile-reader.js.map +1 -0
- package/dist/api/services/profile-types.d.ts +42 -0
- package/dist/api/services/profile-types.d.ts.map +1 -0
- package/dist/api/services/profile-types.js +8 -0
- package/dist/api/services/profile-types.js.map +1 -0
- package/dist/api/services/profile-writer.d.ts +6 -0
- package/dist/api/services/profile-writer.d.ts.map +1 -0
- package/dist/api/services/profile-writer.js +176 -0
- package/dist/api/services/profile-writer.js.map +1 -0
- package/dist/api/services/validation-service.d.ts +26 -0
- package/dist/api/services/validation-service.d.ts.map +1 -0
- package/dist/api/services/validation-service.js +77 -0
- package/dist/api/services/validation-service.js.map +1 -0
- package/dist/auth/auth-commands.d.ts +16 -22
- package/dist/auth/auth-commands.d.ts.map +1 -1
- package/dist/auth/auth-commands.js +29 -467
- package/dist/auth/auth-commands.js.map +1 -1
- package/dist/auth/commands/create-command.d.ts +11 -0
- package/dist/auth/commands/create-command.d.ts.map +1 -0
- package/dist/auth/commands/create-command.js +137 -0
- package/dist/auth/commands/create-command.js.map +1 -0
- package/dist/auth/commands/default-command.d.ts +15 -0
- package/dist/auth/commands/default-command.d.ts.map +1 -0
- package/dist/auth/commands/default-command.js +71 -0
- package/dist/auth/commands/default-command.js.map +1 -0
- package/dist/auth/commands/index.d.ts +12 -0
- package/dist/auth/commands/index.d.ts.map +1 -0
- package/dist/auth/commands/index.js +25 -0
- package/dist/auth/commands/index.js.map +1 -0
- package/dist/auth/commands/list-command.d.ts +11 -0
- package/dist/auth/commands/list-command.d.ts.map +1 -0
- package/dist/auth/commands/list-command.js +124 -0
- package/dist/auth/commands/list-command.js.map +1 -0
- package/dist/auth/commands/remove-command.d.ts +11 -0
- package/dist/auth/commands/remove-command.d.ts.map +1 -0
- package/dist/auth/commands/remove-command.js +102 -0
- package/dist/auth/commands/remove-command.js.map +1 -0
- package/dist/auth/commands/show-command.d.ts +11 -0
- package/dist/auth/commands/show-command.d.ts.map +1 -0
- package/dist/auth/commands/show-command.js +103 -0
- package/dist/auth/commands/show-command.js.map +1 -0
- package/dist/auth/commands/types.d.ts +50 -0
- package/dist/auth/commands/types.d.ts.map +1 -0
- package/dist/auth/commands/types.js +26 -0
- package/dist/auth/commands/types.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +16 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/profile-detector.d.ts +0 -5
- package/dist/auth/profile-detector.d.ts.map +1 -1
- package/dist/auth/profile-detector.js +1 -9
- package/dist/auth/profile-detector.js.map +1 -1
- package/dist/auth/profile-registry.d.ts +0 -4
- package/dist/auth/profile-registry.d.ts.map +1 -1
- package/dist/auth/profile-registry.js +3 -10
- package/dist/auth/profile-registry.js.map +1 -1
- package/dist/ccs.js +21 -4
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/auth/auth-types.d.ts +85 -0
- package/dist/cliproxy/auth/auth-types.d.ts.map +1 -0
- package/dist/cliproxy/auth/auth-types.js +100 -0
- package/dist/cliproxy/auth/auth-types.js.map +1 -0
- package/dist/cliproxy/auth/environment-detector.d.ts +30 -0
- package/dist/cliproxy/auth/environment-detector.d.ts.map +1 -0
- package/dist/cliproxy/auth/environment-detector.js +124 -0
- package/dist/cliproxy/auth/environment-detector.js.map +1 -0
- package/dist/cliproxy/auth/index.d.ts +11 -0
- package/dist/cliproxy/auth/index.d.ts.map +1 -0
- package/dist/cliproxy/auth/index.js +35 -0
- package/dist/cliproxy/auth/index.js.map +1 -0
- package/dist/cliproxy/auth/oauth-handler.d.ts +29 -0
- package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -0
- package/dist/cliproxy/auth/oauth-handler.js +205 -0
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -0
- package/dist/cliproxy/auth/oauth-process.d.ts +27 -0
- package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -0
- package/dist/cliproxy/auth/oauth-process.js +209 -0
- package/dist/cliproxy/auth/oauth-process.js.map +1 -0
- package/dist/cliproxy/auth/token-manager.d.ts +53 -0
- package/dist/cliproxy/auth/token-manager.d.ts.map +1 -0
- package/dist/cliproxy/auth/token-manager.js +250 -0
- package/dist/cliproxy/auth/token-manager.js.map +1 -0
- package/dist/cliproxy/auth-handler.d.ts +13 -103
- package/dist/cliproxy/auth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth-handler.js +35 -766
- package/dist/cliproxy/auth-handler.js.map +1 -1
- package/dist/cliproxy/binary/downloader.d.ts +29 -0
- package/dist/cliproxy/binary/downloader.d.ts.map +1 -0
- package/dist/cliproxy/binary/downloader.js +218 -0
- package/dist/cliproxy/binary/downloader.js.map +1 -0
- package/dist/cliproxy/binary/extractor.d.ts +12 -0
- package/dist/cliproxy/binary/extractor.d.ts.map +1 -0
- package/dist/cliproxy/binary/extractor.js +27 -0
- package/dist/cliproxy/binary/extractor.js.map +1 -0
- package/dist/cliproxy/binary/index.d.ts +13 -0
- package/dist/cliproxy/binary/index.d.ts.map +1 -0
- package/dist/cliproxy/binary/index.js +53 -0
- package/dist/cliproxy/binary/index.js.map +1 -0
- package/dist/cliproxy/binary/installer.d.ts +24 -0
- package/dist/cliproxy/binary/installer.d.ts.map +1 -0
- package/dist/cliproxy/binary/installer.js +117 -0
- package/dist/cliproxy/binary/installer.js.map +1 -0
- package/dist/cliproxy/binary/lifecycle.d.ts +11 -0
- package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -0
- package/dist/cliproxy/binary/lifecycle.js +106 -0
- package/dist/cliproxy/binary/lifecycle.js.map +1 -0
- package/dist/cliproxy/binary/tar-extractor.d.ts +9 -0
- package/dist/cliproxy/binary/tar-extractor.d.ts.map +1 -0
- package/dist/cliproxy/binary/tar-extractor.js +118 -0
- package/dist/cliproxy/binary/tar-extractor.js.map +1 -0
- package/dist/cliproxy/binary/types.d.ts +24 -0
- package/dist/cliproxy/binary/types.d.ts.map +1 -0
- package/dist/cliproxy/binary/types.js +14 -0
- package/dist/cliproxy/binary/types.js.map +1 -0
- package/dist/cliproxy/binary/updater.d.ts +7 -0
- package/dist/cliproxy/binary/updater.d.ts.map +1 -0
- package/dist/cliproxy/binary/updater.js +18 -0
- package/dist/cliproxy/binary/updater.js.map +1 -0
- package/dist/cliproxy/binary/verifier.d.ts +18 -0
- package/dist/cliproxy/binary/verifier.d.ts.map +1 -0
- package/dist/cliproxy/binary/verifier.js +82 -0
- package/dist/cliproxy/binary/verifier.js.map +1 -0
- package/dist/cliproxy/binary/version-cache.d.ts +46 -0
- package/dist/cliproxy/binary/version-cache.d.ts.map +1 -0
- package/dist/cliproxy/binary/version-cache.js +171 -0
- package/dist/cliproxy/binary/version-cache.js.map +1 -0
- package/dist/cliproxy/binary/version-checker.d.ts +19 -0
- package/dist/cliproxy/binary/version-checker.d.ts.map +1 -0
- package/dist/cliproxy/binary/version-checker.js +77 -0
- package/dist/cliproxy/binary/version-checker.js.map +1 -0
- package/dist/cliproxy/binary/zip-extractor.d.ts +9 -0
- package/dist/cliproxy/binary/zip-extractor.d.ts.map +1 -0
- package/dist/cliproxy/binary/zip-extractor.js +110 -0
- package/dist/cliproxy/binary/zip-extractor.js.map +1 -0
- package/dist/cliproxy/binary-manager.d.ts +16 -170
- package/dist/cliproxy/binary-manager.d.ts.map +1 -1
- package/dist/cliproxy/binary-manager.js +38 -865
- package/dist/cliproxy/binary-manager.js.map +1 -1
- package/dist/cliproxy/services/binary-service.d.ts +65 -0
- package/dist/cliproxy/services/binary-service.d.ts.map +1 -0
- package/dist/cliproxy/services/binary-service.js +140 -0
- package/dist/cliproxy/services/binary-service.js.map +1 -0
- package/dist/cliproxy/services/index.d.ts +8 -0
- package/dist/cliproxy/services/index.d.ts.map +1 -0
- package/dist/cliproxy/services/index.js +31 -0
- package/dist/cliproxy/services/index.js.map +1 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.d.ts +38 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.d.ts.map +1 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.js +41 -0
- package/dist/cliproxy/services/proxy-lifecycle-service.js.map +1 -0
- package/dist/cliproxy/services/variant-config-adapter.d.ts +38 -0
- package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -0
- package/dist/cliproxy/services/variant-config-adapter.js +172 -0
- package/dist/cliproxy/services/variant-config-adapter.js.map +1 -0
- package/dist/cliproxy/services/variant-service.d.ts +37 -0
- package/dist/cliproxy/services/variant-service.d.ts.map +1 -0
- package/dist/cliproxy/services/variant-service.js +128 -0
- package/dist/cliproxy/services/variant-service.js.map +1 -0
- package/dist/cliproxy/services/variant-settings.d.ts +32 -0
- package/dist/cliproxy/services/variant-settings.d.ts.map +1 -0
- package/dist/cliproxy/services/variant-settings.js +128 -0
- package/dist/cliproxy/services/variant-settings.js.map +1 -0
- package/dist/commands/api-command.d.ts +3 -6
- package/dist/commands/api-command.d.ts.map +1 -1
- package/dist/commands/api-command.js +84 -445
- package/dist/commands/api-command.js.map +1 -1
- package/dist/commands/cliproxy-command.d.ts +0 -3
- package/dist/commands/cliproxy-command.d.ts.map +1 -1
- package/dist/commands/cliproxy-command.js +182 -621
- package/dist/commands/cliproxy-command.js.map +1 -1
- package/dist/commands/index.d.ts +17 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +33 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/config/unified-config-loader.d.ts +7 -0
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +11 -1
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/delegation/executor/index.d.ts +7 -0
- package/dist/delegation/executor/index.d.ts.map +1 -0
- package/dist/delegation/executor/index.js +28 -0
- package/dist/delegation/executor/index.js.map +1 -0
- package/dist/delegation/executor/result-aggregator.d.ts +30 -0
- package/dist/delegation/executor/result-aggregator.d.ts.map +1 -0
- package/dist/delegation/executor/result-aggregator.js +66 -0
- package/dist/delegation/executor/result-aggregator.js.map +1 -0
- package/dist/delegation/executor/stream-parser.d.ts +28 -0
- package/dist/delegation/executor/stream-parser.d.ts.map +1 -0
- package/dist/delegation/executor/stream-parser.js +140 -0
- package/dist/delegation/executor/stream-parser.js.map +1 -0
- package/dist/delegation/executor/types.d.ts +121 -0
- package/dist/delegation/executor/types.d.ts.map +1 -0
- package/dist/delegation/executor/types.js +6 -0
- package/dist/delegation/executor/types.js.map +1 -0
- package/dist/delegation/headless-executor.d.ts +13 -91
- package/dist/delegation/headless-executor.d.ts.map +1 -1
- package/dist/delegation/headless-executor.js +84 -291
- package/dist/delegation/headless-executor.js.map +1 -1
- package/dist/delegation/index.d.ts +11 -0
- package/dist/delegation/index.d.ts.map +1 -0
- package/dist/delegation/index.js +33 -0
- package/dist/delegation/index.js.map +1 -0
- package/dist/delegation/result-formatter.d.ts +1 -30
- package/dist/delegation/result-formatter.d.ts.map +1 -1
- package/dist/delegation/result-formatter.js.map +1 -1
- package/dist/errors/cleanup-registry.d.ts +64 -0
- package/dist/errors/cleanup-registry.d.ts.map +1 -0
- package/dist/errors/cleanup-registry.js +141 -0
- package/dist/errors/cleanup-registry.js.map +1 -0
- package/dist/errors/error-handler.d.ts +45 -0
- package/dist/errors/error-handler.d.ts.map +1 -0
- package/dist/errors/error-handler.js +150 -0
- package/dist/errors/error-handler.js.map +1 -0
- package/dist/errors/error-types.d.ts +102 -0
- package/dist/errors/error-types.d.ts.map +1 -0
- package/dist/errors/error-types.js +158 -0
- package/dist/errors/error-types.js.map +1 -0
- package/dist/errors/exit-codes.d.ts +49 -0
- package/dist/errors/exit-codes.d.ts.map +1 -0
- package/dist/errors/exit-codes.js +72 -0
- package/dist/errors/exit-codes.js.map +1 -0
- package/dist/errors/index.d.ts +29 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +62 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/glmt/glmt-transformer.d.ts +29 -248
- package/dist/glmt/glmt-transformer.d.ts.map +1 -1
- package/dist/glmt/glmt-transformer.js +63 -718
- package/dist/glmt/glmt-transformer.js.map +1 -1
- package/dist/glmt/index.d.ts +14 -0
- package/dist/glmt/index.d.ts.map +1 -0
- package/dist/glmt/index.js +41 -0
- package/dist/glmt/index.js.map +1 -0
- package/dist/glmt/pipeline/content-transformer.d.ts +39 -0
- package/dist/glmt/pipeline/content-transformer.d.ts.map +1 -0
- package/dist/glmt/pipeline/content-transformer.js +162 -0
- package/dist/glmt/pipeline/content-transformer.js.map +1 -0
- package/dist/glmt/pipeline/index.d.ts +12 -0
- package/dist/glmt/pipeline/index.d.ts.map +1 -0
- package/dist/glmt/pipeline/index.js +20 -0
- package/dist/glmt/pipeline/index.js.map +1 -0
- package/dist/glmt/pipeline/request-transformer.d.ts +31 -0
- package/dist/glmt/pipeline/request-transformer.d.ts.map +1 -0
- package/dist/glmt/pipeline/request-transformer.js +116 -0
- package/dist/glmt/pipeline/request-transformer.js.map +1 -0
- package/dist/glmt/pipeline/response-builder.d.ts +52 -0
- package/dist/glmt/pipeline/response-builder.d.ts.map +1 -0
- package/dist/glmt/pipeline/response-builder.js +205 -0
- package/dist/glmt/pipeline/response-builder.js.map +1 -0
- package/dist/glmt/pipeline/stream-parser.d.ts +59 -0
- package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -0
- package/dist/glmt/pipeline/stream-parser.js +241 -0
- package/dist/glmt/pipeline/stream-parser.js.map +1 -0
- package/dist/glmt/pipeline/tool-call-handler.d.ts +22 -0
- package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -0
- package/dist/glmt/pipeline/tool-call-handler.js +87 -0
- package/dist/glmt/pipeline/tool-call-handler.js.map +1 -0
- package/dist/glmt/pipeline/types.d.ts +159 -0
- package/dist/glmt/pipeline/types.d.ts.map +1 -0
- package/dist/glmt/pipeline/types.js +6 -0
- package/dist/glmt/pipeline/types.js.map +1 -0
- package/dist/management/checks/cliproxy-check.d.ts +37 -0
- package/dist/management/checks/cliproxy-check.d.ts.map +1 -0
- package/dist/management/checks/cliproxy-check.js +187 -0
- package/dist/management/checks/cliproxy-check.js.map +1 -0
- package/dist/management/checks/config-check.d.ts +27 -0
- package/dist/management/checks/config-check.d.ts.map +1 -0
- package/dist/management/checks/config-check.js +158 -0
- package/dist/management/checks/config-check.js.map +1 -0
- package/dist/management/checks/env-check.d.ts +17 -0
- package/dist/management/checks/env-check.d.ts.map +1 -0
- package/dist/management/checks/env-check.js +71 -0
- package/dist/management/checks/env-check.js.map +1 -0
- package/dist/management/checks/index.d.ts +12 -0
- package/dist/management/checks/index.d.ts.map +1 -0
- package/dist/management/checks/index.js +48 -0
- package/dist/management/checks/index.js.map +1 -0
- package/dist/management/checks/oauth-check.d.ts +16 -0
- package/dist/management/checks/oauth-check.d.ts.map +1 -0
- package/dist/management/checks/oauth-check.js +68 -0
- package/dist/management/checks/oauth-check.js.map +1 -0
- package/dist/management/checks/profile-check.d.ts +36 -0
- package/dist/management/checks/profile-check.d.ts.map +1 -0
- package/dist/management/checks/profile-check.js +165 -0
- package/dist/management/checks/profile-check.js.map +1 -0
- package/dist/management/checks/symlink-check.d.ts +30 -0
- package/dist/management/checks/symlink-check.d.ts.map +1 -0
- package/dist/management/checks/symlink-check.js +204 -0
- package/dist/management/checks/symlink-check.js.map +1 -0
- package/dist/management/checks/system-check.d.ts +25 -0
- package/dist/management/checks/system-check.d.ts.map +1 -0
- package/dist/management/checks/system-check.js +136 -0
- package/dist/management/checks/system-check.js.map +1 -0
- package/dist/management/checks/types.d.ts +64 -0
- package/dist/management/checks/types.d.ts.map +1 -0
- package/dist/management/checks/types.js +63 -0
- package/dist/management/checks/types.js.map +1 -0
- package/dist/management/doctor.d.ts +3 -92
- package/dist/management/doctor.d.ts.map +1 -1
- package/dist/management/doctor.js +15 -831
- package/dist/management/doctor.js.map +1 -1
- package/dist/management/index.d.ts +15 -0
- package/dist/management/index.d.ts.map +1 -0
- package/dist/management/index.js +56 -0
- package/dist/management/index.js.map +1 -0
- package/dist/management/repair/auto-repair.d.ts +13 -0
- package/dist/management/repair/auto-repair.d.ts.map +1 -0
- package/dist/management/repair/auto-repair.js +170 -0
- package/dist/management/repair/auto-repair.js.map +1 -0
- package/dist/management/repair/index.d.ts +5 -0
- package/dist/management/repair/index.d.ts.map +1 -0
- package/dist/management/repair/index.js +9 -0
- package/dist/management/repair/index.js.map +1 -0
- package/dist/types/delegation.d.ts +1 -13
- package/dist/types/delegation.d.ts.map +1 -1
- package/dist/types/utils.d.ts +27 -0
- package/dist/types/utils.d.ts.map +1 -1
- package/dist/ui/assets/{accounts-p1_nf0Jy.js → accounts-BqDNXZu4.js} +1 -1
- package/dist/ui/assets/analytics-DQMyOsqI.js +1 -0
- package/dist/ui/assets/api-Bzyq4XP7.js +1 -0
- package/dist/ui/assets/{card-CCDc-Mx9.js → card-CIN0KDsX.js} +1 -1
- package/dist/ui/assets/cliproxy-5iKdPrEG.js +3 -0
- package/dist/ui/assets/cliproxy-control-panel-CJ2CfYod.js +1 -0
- package/dist/ui/assets/{code-editor-Br9x-r-E.js → code-editor-CDmNFLQ6.js} +1 -1
- package/dist/ui/assets/confirm-dialog-CaiDQikc.js +1 -0
- package/dist/ui/assets/copilot-nS6iAyk2.js +4 -0
- package/dist/ui/assets/form-utils-DP6ILe7Z.js +20 -0
- package/dist/ui/assets/health-DYOQfC7u.js +1 -0
- package/dist/ui/assets/{icons-BOsxPbiD.js → icons-ZmwVoUeR.js} +1 -1
- package/dist/ui/assets/index-C6Dah-xh.js +46 -0
- package/dist/ui/assets/index-It66SkKf.css +1 -0
- package/dist/ui/assets/{radix-ui-DFHQr9A5.js → radix-ui-CV3R9pD6.js} +3 -3
- package/dist/ui/assets/settings-DABC9b5G.js +1 -0
- package/dist/ui/assets/{shared-BfYhSN4-.js → shared-BwU4OKQc.js} +1 -1
- package/dist/ui/assets/{switch-CMk95lwf.js → switch-BQ6sBBUv.js} +1 -1
- package/dist/ui/assets/{tanstack-C4gT2P7V.js → tanstack-Df9bCj5R.js} +1 -1
- package/dist/ui/index.html +6 -6
- package/dist/utils/claude-spawner.d.ts +54 -0
- package/dist/utils/claude-spawner.d.ts.map +1 -0
- package/dist/utils/claude-spawner.js +118 -0
- package/dist/utils/claude-spawner.js.map +1 -0
- package/dist/utils/delegation-validator.d.ts +8 -4
- package/dist/utils/delegation-validator.d.ts.map +1 -1
- package/dist/utils/delegation-validator.js.map +1 -1
- package/dist/utils/helpers.d.ts +0 -11
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +1 -57
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +50 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/time.d.ts +10 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +27 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/ui/boxes.d.ts +24 -0
- package/dist/utils/ui/boxes.d.ts.map +1 -0
- package/dist/utils/ui/boxes.js +108 -0
- package/dist/utils/ui/boxes.js.map +1 -0
- package/dist/utils/ui/colors.d.ts +25 -0
- package/dist/utils/ui/colors.d.ts.map +1 -0
- package/dist/utils/ui/colors.js +70 -0
- package/dist/utils/ui/colors.js.map +1 -0
- package/dist/utils/ui/index.d.ts +51 -0
- package/dist/utils/ui/index.d.ts.map +1 -0
- package/dist/utils/ui/index.js +96 -0
- package/dist/utils/ui/index.js.map +1 -0
- package/dist/utils/ui/indicators.d.ts +23 -0
- package/dist/utils/ui/indicators.d.ts.map +1 -0
- package/dist/utils/ui/indicators.js +39 -0
- package/dist/utils/ui/indicators.js.map +1 -0
- package/dist/utils/ui/init.d.ts +30 -0
- package/dist/utils/ui/init.d.ts.map +1 -0
- package/dist/utils/ui/init.js +102 -0
- package/dist/utils/ui/init.js.map +1 -0
- package/dist/utils/ui/spinner.d.ts +13 -0
- package/dist/utils/ui/spinner.d.ts.map +1 -0
- package/dist/utils/ui/spinner.js +89 -0
- package/dist/utils/ui/spinner.js.map +1 -0
- package/dist/utils/ui/tables.d.ts +12 -0
- package/dist/utils/ui/tables.d.ts.map +1 -0
- package/dist/utils/ui/tables.js +69 -0
- package/dist/utils/ui/tables.js.map +1 -0
- package/dist/utils/ui/tasks.d.ts +26 -0
- package/dist/utils/ui/tasks.d.ts.map +1 -0
- package/dist/utils/ui/tasks.js +102 -0
- package/dist/utils/ui/tasks.js.map +1 -0
- package/dist/utils/ui/text.d.ts +24 -0
- package/dist/utils/ui/text.d.ts.map +1 -0
- package/dist/utils/ui/text.js +60 -0
- package/dist/utils/ui/text.js.map +1 -0
- package/dist/utils/ui/types.d.ts +36 -0
- package/dist/utils/ui/types.d.ts.map +1 -0
- package/dist/utils/ui/types.js +33 -0
- package/dist/utils/ui/types.js.map +1 -0
- package/dist/utils/ui.d.ts +3 -138
- package/dist/utils/ui.d.ts.map +1 -1
- package/dist/utils/ui.js +40 -567
- package/dist/utils/ui.js.map +1 -1
- package/dist/utils/websearch/gemini-cli.d.ts +36 -0
- package/dist/utils/websearch/gemini-cli.d.ts.map +1 -0
- package/dist/utils/websearch/gemini-cli.js +132 -0
- package/dist/utils/websearch/gemini-cli.js.map +1 -0
- package/dist/utils/websearch/grok-cli.d.ts +26 -0
- package/dist/utils/websearch/grok-cli.d.ts.map +1 -0
- package/dist/utils/websearch/grok-cli.js +81 -0
- package/dist/utils/websearch/grok-cli.js.map +1 -0
- package/dist/utils/websearch/hook-config.d.ts +21 -0
- package/dist/utils/websearch/hook-config.d.ts.map +1 -0
- package/dist/utils/websearch/hook-config.js +183 -0
- package/dist/utils/websearch/hook-config.js.map +1 -0
- package/dist/utils/websearch/hook-env.d.ts +16 -0
- package/dist/utils/websearch/hook-env.d.ts.map +1 -0
- package/dist/utils/websearch/hook-env.js +62 -0
- package/dist/utils/websearch/hook-env.js.map +1 -0
- package/dist/utils/websearch/hook-installer.d.ts +27 -0
- package/dist/utils/websearch/hook-installer.d.ts.map +1 -0
- package/dist/utils/websearch/hook-installer.js +141 -0
- package/dist/utils/websearch/hook-installer.js.map +1 -0
- package/dist/utils/websearch/index.d.ts +15 -0
- package/dist/utils/websearch/index.d.ts.map +1 -0
- package/dist/utils/websearch/index.js +44 -0
- package/dist/utils/websearch/index.js.map +1 -0
- package/dist/utils/websearch/opencode-cli.d.ts +26 -0
- package/dist/utils/websearch/opencode-cli.d.ts.map +1 -0
- package/dist/utils/websearch/opencode-cli.js +81 -0
- package/dist/utils/websearch/opencode-cli.js.map +1 -0
- package/dist/utils/websearch/status.d.ts +35 -0
- package/dist/utils/websearch/status.d.ts.map +1 -0
- package/dist/utils/websearch/status.js +185 -0
- package/dist/utils/websearch/status.js.map +1 -0
- package/dist/utils/websearch/types.d.ts +85 -0
- package/dist/utils/websearch/types.d.ts.map +1 -0
- package/dist/utils/websearch/types.js +10 -0
- package/dist/utils/websearch/types.js.map +1 -0
- package/dist/utils/websearch-manager.d.ts +7 -186
- package/dist/utils/websearch-manager.d.ts.map +1 -1
- package/dist/utils/websearch-manager.js +37 -710
- package/dist/utils/websearch-manager.js.map +1 -1
- package/dist/web-server/data-aggregator.d.ts +3 -51
- package/dist/web-server/data-aggregator.d.ts.map +1 -1
- package/dist/web-server/data-aggregator.js +18 -386
- package/dist/web-server/data-aggregator.js.map +1 -1
- package/dist/web-server/health/cliproxy-checks.d.ts +23 -0
- package/dist/web-server/health/cliproxy-checks.d.ts.map +1 -0
- package/dist/web-server/health/cliproxy-checks.js +145 -0
- package/dist/web-server/health/cliproxy-checks.js.map +1 -0
- package/dist/web-server/health/config-checks.d.ts +19 -0
- package/dist/web-server/health/config-checks.d.ts.map +1 -0
- package/dist/web-server/health/config-checks.js +174 -0
- package/dist/web-server/health/config-checks.js.map +1 -0
- package/dist/web-server/health/environment-checks.d.ts +11 -0
- package/dist/web-server/health/environment-checks.d.ts.map +1 -0
- package/dist/web-server/health/environment-checks.js +40 -0
- package/dist/web-server/health/environment-checks.js.map +1 -0
- package/dist/web-server/health/index.d.ts +13 -0
- package/dist/web-server/health/index.d.ts.map +1 -0
- package/dist/web-server/health/index.js +41 -0
- package/dist/web-server/health/index.js.map +1 -0
- package/dist/web-server/health/oauth-checks.d.ts +11 -0
- package/dist/web-server/health/oauth-checks.d.ts.map +1 -0
- package/dist/web-server/health/oauth-checks.js +34 -0
- package/dist/web-server/health/oauth-checks.js.map +1 -0
- package/dist/web-server/health/profile-checks.d.ts +19 -0
- package/dist/web-server/health/profile-checks.d.ts.map +1 -0
- package/dist/web-server/health/profile-checks.js +152 -0
- package/dist/web-server/health/profile-checks.js.map +1 -0
- package/dist/web-server/health/symlink-checks.d.ts +15 -0
- package/dist/web-server/health/symlink-checks.d.ts.map +1 -0
- package/dist/web-server/health/symlink-checks.js +173 -0
- package/dist/web-server/health/symlink-checks.js.map +1 -0
- package/dist/web-server/health/system-checks.d.ts +19 -0
- package/dist/web-server/health/system-checks.d.ts.map +1 -0
- package/dist/web-server/health/system-checks.js +127 -0
- package/dist/web-server/health/system-checks.js.map +1 -0
- package/dist/web-server/health/types.d.ts +34 -0
- package/dist/web-server/health/types.d.ts.map +1 -0
- package/dist/web-server/health/types.js +8 -0
- package/dist/web-server/health/types.js.map +1 -0
- package/dist/web-server/health/websearch-checks.d.ts +11 -0
- package/dist/web-server/health/websearch-checks.d.ts.map +1 -0
- package/dist/web-server/health/websearch-checks.js +53 -0
- package/dist/web-server/health/websearch-checks.js.map +1 -0
- package/dist/web-server/health-service.d.ts +4 -30
- package/dist/web-server/health-service.d.ts.map +1 -1
- package/dist/web-server/health-service.js +28 -695
- package/dist/web-server/health-service.js.map +1 -1
- package/dist/web-server/index.d.ts.map +1 -1
- package/dist/web-server/index.js +2 -5
- package/dist/web-server/index.js.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts +6 -0
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-auth-routes.js +202 -0
- package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts +6 -0
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cliproxy-stats-routes.js +253 -0
- package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -0
- package/dist/web-server/routes/config-routes.d.ts +6 -0
- package/dist/web-server/routes/config-routes.d.ts.map +1 -0
- package/dist/web-server/routes/config-routes.js +145 -0
- package/dist/web-server/routes/config-routes.js.map +1 -0
- package/dist/web-server/routes/copilot-routes.d.ts +6 -0
- package/dist/web-server/routes/copilot-routes.d.ts.map +1 -0
- package/dist/web-server/routes/copilot-routes.js +195 -0
- package/dist/web-server/routes/copilot-routes.js.map +1 -0
- package/dist/web-server/routes/copilot-settings-routes.d.ts +6 -0
- package/dist/web-server/routes/copilot-settings-routes.d.ts.map +1 -0
- package/dist/web-server/routes/copilot-settings-routes.js +122 -0
- package/dist/web-server/routes/copilot-settings-routes.js.map +1 -0
- package/dist/web-server/routes/health-routes.d.ts +6 -0
- package/dist/web-server/routes/health-routes.d.ts.map +1 -0
- package/dist/web-server/routes/health-routes.js +30 -0
- package/dist/web-server/routes/health-routes.js.map +1 -0
- package/dist/web-server/routes/index.d.ts +8 -0
- package/dist/web-server/routes/index.d.ts.map +1 -0
- package/dist/web-server/routes/index.js +54 -0
- package/dist/web-server/routes/index.js.map +1 -0
- package/dist/web-server/routes/misc-routes.d.ts +6 -0
- package/dist/web-server/routes/misc-routes.d.ts.map +1 -0
- package/dist/web-server/routes/misc-routes.js +219 -0
- package/dist/web-server/routes/misc-routes.js.map +1 -0
- package/dist/web-server/routes/profile-routes.d.ts +6 -0
- package/dist/web-server/routes/profile-routes.d.ts.map +1 -0
- package/dist/web-server/routes/profile-routes.js +164 -0
- package/dist/web-server/routes/profile-routes.js.map +1 -0
- package/dist/web-server/routes/provider-routes.d.ts +6 -0
- package/dist/web-server/routes/provider-routes.d.ts.map +1 -0
- package/dist/web-server/routes/provider-routes.js +146 -0
- package/dist/web-server/routes/provider-routes.js.map +1 -0
- package/dist/web-server/routes/route-helpers.d.ts +55 -0
- package/dist/web-server/routes/route-helpers.d.ts.map +1 -0
- package/dist/web-server/routes/route-helpers.js +201 -0
- package/dist/web-server/routes/route-helpers.js.map +1 -0
- package/dist/web-server/routes/settings-routes.d.ts +6 -0
- package/dist/web-server/routes/settings-routes.d.ts.map +1 -0
- package/dist/web-server/routes/settings-routes.js +207 -0
- package/dist/web-server/routes/settings-routes.js.map +1 -0
- package/dist/web-server/routes/variant-routes.d.ts +6 -0
- package/dist/web-server/routes/variant-routes.d.ts.map +1 -0
- package/dist/web-server/routes/variant-routes.js +158 -0
- package/dist/web-server/routes/variant-routes.js.map +1 -0
- package/dist/web-server/routes/websearch-routes.d.ts +6 -0
- package/dist/web-server/routes/websearch-routes.d.ts.map +1 -0
- package/dist/web-server/routes/websearch-routes.js +130 -0
- package/dist/web-server/routes/websearch-routes.js.map +1 -0
- package/dist/web-server/services/index.d.ts +7 -0
- package/dist/web-server/services/index.d.ts.map +1 -0
- package/dist/web-server/services/index.js +21 -0
- package/dist/web-server/services/index.js.map +1 -0
- package/dist/web-server/services/usage-aggregator.d.ts +7 -0
- package/dist/web-server/services/usage-aggregator.d.ts.map +1 -0
- package/dist/web-server/services/usage-aggregator.js +23 -0
- package/dist/web-server/services/usage-aggregator.js.map +1 -0
- package/dist/web-server/usage/aggregator.d.ts +54 -0
- package/dist/web-server/usage/aggregator.d.ts.map +1 -0
- package/dist/web-server/usage/aggregator.js +470 -0
- package/dist/web-server/usage/aggregator.js.map +1 -0
- package/dist/web-server/usage/data-aggregator.d.ts +55 -0
- package/dist/web-server/usage/data-aggregator.d.ts.map +1 -0
- package/dist/web-server/usage/data-aggregator.js +391 -0
- package/dist/web-server/usage/data-aggregator.js.map +1 -0
- package/dist/web-server/usage/disk-cache.d.ts +46 -0
- package/dist/web-server/usage/disk-cache.d.ts.map +1 -0
- package/dist/web-server/usage/disk-cache.js +162 -0
- package/dist/web-server/usage/disk-cache.js.map +1 -0
- package/dist/web-server/usage/handlers.d.ts +50 -0
- package/dist/web-server/usage/handlers.d.ts.map +1 -0
- package/dist/web-server/usage/handlers.js +524 -0
- package/dist/web-server/usage/handlers.js.map +1 -0
- package/dist/web-server/usage/index.d.ts +12 -0
- package/dist/web-server/usage/index.d.ts.map +1 -0
- package/dist/web-server/usage/index.js +54 -0
- package/dist/web-server/usage/index.js.map +1 -0
- package/dist/web-server/usage/routes.d.ts +11 -0
- package/dist/web-server/usage/routes.d.ts.map +1 -0
- package/dist/web-server/usage/routes.js +37 -0
- package/dist/web-server/usage/routes.js.map +1 -0
- package/dist/web-server/usage/types.d.ts +119 -0
- package/dist/web-server/usage/types.d.ts.map +1 -0
- package/dist/web-server/usage/types.js +9 -0
- package/dist/web-server/usage/types.js.map +1 -0
- package/dist/web-server/usage-disk-cache.d.ts +3 -42
- package/dist/web-server/usage-disk-cache.d.ts.map +1 -1
- package/dist/web-server/usage-disk-cache.js +5 -144
- package/dist/web-server/usage-disk-cache.js.map +1 -1
- package/dist/web-server/usage-routes.d.ts +3 -31
- package/dist/web-server/usage-routes.d.ts.map +1 -1
- package/dist/web-server/usage-routes.js +8 -1139
- package/dist/web-server/usage-routes.js.map +1 -1
- package/dist/web-server/usage-types.d.ts +3 -115
- package/dist/web-server/usage-types.d.ts.map +1 -1
- package/dist/web-server/usage-types.js +17 -3
- package/dist/web-server/usage-types.js.map +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/analytics-D1k2nYcF.js +0 -1
- package/dist/ui/assets/api-D9VVmZ1j.js +0 -1
- package/dist/ui/assets/cliproxy-CTt_Nsft.js +0 -1
- package/dist/ui/assets/cliproxy-control-panel-DKMAi4_4.js +0 -1
- package/dist/ui/assets/copilot-C6F8PT_L.js +0 -4
- package/dist/ui/assets/form-utils-BuXDJb0w.js +0 -20
- package/dist/ui/assets/health-DiAvJaSn.js +0 -1
- package/dist/ui/assets/index-Brq6EBKZ.css +0 -1
- package/dist/ui/assets/index-ByU8ZhED.js +0 -48
- package/dist/ui/assets/settings-CEomZLGl.js +0 -1
- package/dist/web-server/routes.d.ts +0 -7
- package/dist/web-server/routes.d.ts.map +0 -1
- package/dist/web-server/routes.js +0 -1891
- package/dist/web-server/routes.js.map +0 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Usage Module Barrel Export
|
|
4
|
+
*
|
|
5
|
+
* Re-exports all usage analytics functionality for convenient imports.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.summarizeAnomalies = exports.detectAnomalies = exports.fillHourlyGaps = exports.calculateTokenBreakdownCosts = exports.filterByDateRange = exports.validateOffset = exports.validateLimit = exports.validateDate = exports.usageRoutes = exports.mergeSessionData = exports.mergeHourlyData = exports.mergeMonthlyData = exports.mergeDailyData = exports.getLastFetchTimestamp = exports.prewarmUsageCache = exports.clearUsageCache = exports.getCachedHourlyData = exports.getCachedSessionData = exports.getCachedMonthlyData = exports.getCachedDailyData = exports.loadAllUsageData = exports.loadSessionData = exports.loadMonthlyUsageData = exports.loadHourlyUsageData = exports.loadDailyUsageData = exports.aggregateSessionUsage = exports.aggregateMonthlyUsage = exports.aggregateHourlyUsage = exports.aggregateDailyUsage = exports.getCacheAge = exports.clearDiskCache = exports.isDiskCacheStale = exports.isDiskCacheFresh = exports.writeDiskCache = exports.readDiskCache = void 0;
|
|
9
|
+
// Disk cache
|
|
10
|
+
var disk_cache_1 = require("./disk-cache");
|
|
11
|
+
Object.defineProperty(exports, "readDiskCache", { enumerable: true, get: function () { return disk_cache_1.readDiskCache; } });
|
|
12
|
+
Object.defineProperty(exports, "writeDiskCache", { enumerable: true, get: function () { return disk_cache_1.writeDiskCache; } });
|
|
13
|
+
Object.defineProperty(exports, "isDiskCacheFresh", { enumerable: true, get: function () { return disk_cache_1.isDiskCacheFresh; } });
|
|
14
|
+
Object.defineProperty(exports, "isDiskCacheStale", { enumerable: true, get: function () { return disk_cache_1.isDiskCacheStale; } });
|
|
15
|
+
Object.defineProperty(exports, "clearDiskCache", { enumerable: true, get: function () { return disk_cache_1.clearDiskCache; } });
|
|
16
|
+
Object.defineProperty(exports, "getCacheAge", { enumerable: true, get: function () { return disk_cache_1.getCacheAge; } });
|
|
17
|
+
// Data aggregator - aggregation functions
|
|
18
|
+
var data_aggregator_1 = require("./data-aggregator");
|
|
19
|
+
Object.defineProperty(exports, "aggregateDailyUsage", { enumerable: true, get: function () { return data_aggregator_1.aggregateDailyUsage; } });
|
|
20
|
+
Object.defineProperty(exports, "aggregateHourlyUsage", { enumerable: true, get: function () { return data_aggregator_1.aggregateHourlyUsage; } });
|
|
21
|
+
Object.defineProperty(exports, "aggregateMonthlyUsage", { enumerable: true, get: function () { return data_aggregator_1.aggregateMonthlyUsage; } });
|
|
22
|
+
Object.defineProperty(exports, "aggregateSessionUsage", { enumerable: true, get: function () { return data_aggregator_1.aggregateSessionUsage; } });
|
|
23
|
+
Object.defineProperty(exports, "loadDailyUsageData", { enumerable: true, get: function () { return data_aggregator_1.loadDailyUsageData; } });
|
|
24
|
+
Object.defineProperty(exports, "loadHourlyUsageData", { enumerable: true, get: function () { return data_aggregator_1.loadHourlyUsageData; } });
|
|
25
|
+
Object.defineProperty(exports, "loadMonthlyUsageData", { enumerable: true, get: function () { return data_aggregator_1.loadMonthlyUsageData; } });
|
|
26
|
+
Object.defineProperty(exports, "loadSessionData", { enumerable: true, get: function () { return data_aggregator_1.loadSessionData; } });
|
|
27
|
+
Object.defineProperty(exports, "loadAllUsageData", { enumerable: true, get: function () { return data_aggregator_1.loadAllUsageData; } });
|
|
28
|
+
// Usage aggregator service - caching layer
|
|
29
|
+
var aggregator_1 = require("./aggregator");
|
|
30
|
+
Object.defineProperty(exports, "getCachedDailyData", { enumerable: true, get: function () { return aggregator_1.getCachedDailyData; } });
|
|
31
|
+
Object.defineProperty(exports, "getCachedMonthlyData", { enumerable: true, get: function () { return aggregator_1.getCachedMonthlyData; } });
|
|
32
|
+
Object.defineProperty(exports, "getCachedSessionData", { enumerable: true, get: function () { return aggregator_1.getCachedSessionData; } });
|
|
33
|
+
Object.defineProperty(exports, "getCachedHourlyData", { enumerable: true, get: function () { return aggregator_1.getCachedHourlyData; } });
|
|
34
|
+
Object.defineProperty(exports, "clearUsageCache", { enumerable: true, get: function () { return aggregator_1.clearUsageCache; } });
|
|
35
|
+
Object.defineProperty(exports, "prewarmUsageCache", { enumerable: true, get: function () { return aggregator_1.prewarmUsageCache; } });
|
|
36
|
+
Object.defineProperty(exports, "getLastFetchTimestamp", { enumerable: true, get: function () { return aggregator_1.getLastFetchTimestamp; } });
|
|
37
|
+
Object.defineProperty(exports, "mergeDailyData", { enumerable: true, get: function () { return aggregator_1.mergeDailyData; } });
|
|
38
|
+
Object.defineProperty(exports, "mergeMonthlyData", { enumerable: true, get: function () { return aggregator_1.mergeMonthlyData; } });
|
|
39
|
+
Object.defineProperty(exports, "mergeHourlyData", { enumerable: true, get: function () { return aggregator_1.mergeHourlyData; } });
|
|
40
|
+
Object.defineProperty(exports, "mergeSessionData", { enumerable: true, get: function () { return aggregator_1.mergeSessionData; } });
|
|
41
|
+
// Routes
|
|
42
|
+
var routes_1 = require("./routes");
|
|
43
|
+
Object.defineProperty(exports, "usageRoutes", { enumerable: true, get: function () { return routes_1.usageRoutes; } });
|
|
44
|
+
// Handlers (for testing)
|
|
45
|
+
var handlers_1 = require("./handlers");
|
|
46
|
+
Object.defineProperty(exports, "validateDate", { enumerable: true, get: function () { return handlers_1.validateDate; } });
|
|
47
|
+
Object.defineProperty(exports, "validateLimit", { enumerable: true, get: function () { return handlers_1.validateLimit; } });
|
|
48
|
+
Object.defineProperty(exports, "validateOffset", { enumerable: true, get: function () { return handlers_1.validateOffset; } });
|
|
49
|
+
Object.defineProperty(exports, "filterByDateRange", { enumerable: true, get: function () { return handlers_1.filterByDateRange; } });
|
|
50
|
+
Object.defineProperty(exports, "calculateTokenBreakdownCosts", { enumerable: true, get: function () { return handlers_1.calculateTokenBreakdownCosts; } });
|
|
51
|
+
Object.defineProperty(exports, "fillHourlyGaps", { enumerable: true, get: function () { return handlers_1.fillHourlyGaps; } });
|
|
52
|
+
Object.defineProperty(exports, "detectAnomalies", { enumerable: true, get: function () { return handlers_1.detectAnomalies; } });
|
|
53
|
+
Object.defineProperty(exports, "summarizeAnomalies", { enumerable: true, get: function () { return handlers_1.summarizeAnomalies; } });
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/web-server/usage/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAkBH,aAAa;AACb,2CAQsB;AAPpB,2GAAA,aAAa,OAAA;AACb,4GAAA,cAAc,OAAA;AACd,8GAAA,gBAAgB,OAAA;AAChB,8GAAA,gBAAgB,OAAA;AAChB,4GAAA,cAAc,OAAA;AACd,yGAAA,WAAW,OAAA;AAIb,0CAA0C;AAC1C,qDAU2B;AATzB,sHAAA,mBAAmB,OAAA;AACnB,uHAAA,oBAAoB,OAAA;AACpB,wHAAA,qBAAqB,OAAA;AACrB,wHAAA,qBAAqB,OAAA;AACrB,qHAAA,kBAAkB,OAAA;AAClB,sHAAA,mBAAmB,OAAA;AACnB,uHAAA,oBAAoB,OAAA;AACpB,kHAAA,eAAe,OAAA;AACf,mHAAA,gBAAgB,OAAA;AAGlB,2CAA2C;AAC3C,2CAYsB;AAXpB,gHAAA,kBAAkB,OAAA;AAClB,kHAAA,oBAAoB,OAAA;AACpB,kHAAA,oBAAoB,OAAA;AACpB,iHAAA,mBAAmB,OAAA;AACnB,6GAAA,eAAe,OAAA;AACf,+GAAA,iBAAiB,OAAA;AACjB,mHAAA,qBAAqB,OAAA;AACrB,4GAAA,cAAc,OAAA;AACd,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AACf,8GAAA,gBAAgB,OAAA;AAGlB,SAAS;AACT,mCAAuC;AAA9B,qGAAA,WAAW,OAAA;AAEpB,yBAAyB;AACzB,uCAUoB;AATlB,wGAAA,YAAY,OAAA;AACZ,yGAAA,aAAa,OAAA;AACb,0GAAA,cAAc,OAAA;AACd,6GAAA,iBAAiB,OAAA;AACjB,wHAAA,4BAA4B,OAAA;AAC5B,0GAAA,cAAc,OAAA;AACd,2GAAA,eAAe,OAAA;AACf,8GAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Usage Analytics API Routes
|
|
3
|
+
*
|
|
4
|
+
* Provides REST endpoints for Claude Code usage analytics.
|
|
5
|
+
* Supports daily, monthly, and session-based usage data aggregation.
|
|
6
|
+
*
|
|
7
|
+
* Route handlers are in ./handlers.ts
|
|
8
|
+
*/
|
|
9
|
+
export { prewarmUsageCache, clearUsageCache, getLastFetchTimestamp } from './aggregator';
|
|
10
|
+
export declare const usageRoutes: import("express-serve-static-core").Router;
|
|
11
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEzF,eAAO,MAAM,WAAW,4CAAW,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Usage Analytics API Routes
|
|
4
|
+
*
|
|
5
|
+
* Provides REST endpoints for Claude Code usage analytics.
|
|
6
|
+
* Supports daily, monthly, and session-based usage data aggregation.
|
|
7
|
+
*
|
|
8
|
+
* Route handlers are in ./handlers.ts
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.usageRoutes = exports.getLastFetchTimestamp = exports.clearUsageCache = exports.prewarmUsageCache = void 0;
|
|
12
|
+
const express_1 = require("express");
|
|
13
|
+
const handlers_1 = require("./handlers");
|
|
14
|
+
var aggregator_1 = require("./aggregator");
|
|
15
|
+
Object.defineProperty(exports, "prewarmUsageCache", { enumerable: true, get: function () { return aggregator_1.prewarmUsageCache; } });
|
|
16
|
+
Object.defineProperty(exports, "clearUsageCache", { enumerable: true, get: function () { return aggregator_1.clearUsageCache; } });
|
|
17
|
+
Object.defineProperty(exports, "getLastFetchTimestamp", { enumerable: true, get: function () { return aggregator_1.getLastFetchTimestamp; } });
|
|
18
|
+
exports.usageRoutes = (0, express_1.Router)();
|
|
19
|
+
// Summary endpoint
|
|
20
|
+
exports.usageRoutes.get('/summary', handlers_1.handleSummary);
|
|
21
|
+
// Daily usage endpoint
|
|
22
|
+
exports.usageRoutes.get('/daily', handlers_1.handleDaily);
|
|
23
|
+
// Hourly usage endpoint
|
|
24
|
+
exports.usageRoutes.get('/hourly', handlers_1.handleHourly);
|
|
25
|
+
// Models usage endpoint
|
|
26
|
+
exports.usageRoutes.get('/models', handlers_1.handleModels);
|
|
27
|
+
// Sessions endpoint
|
|
28
|
+
exports.usageRoutes.get('/sessions', handlers_1.handleSessions);
|
|
29
|
+
// Monthly usage endpoint
|
|
30
|
+
exports.usageRoutes.get('/monthly', handlers_1.handleMonthly);
|
|
31
|
+
// Cache refresh endpoint
|
|
32
|
+
exports.usageRoutes.post('/refresh', handlers_1.handleRefresh);
|
|
33
|
+
// Status endpoint
|
|
34
|
+
exports.usageRoutes.get('/status', handlers_1.handleStatus);
|
|
35
|
+
// Insights endpoint (anomaly detection)
|
|
36
|
+
exports.usageRoutes.get('/insights', handlers_1.handleInsights);
|
|
37
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/web-server/usage/routes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,qCAAiC;AACjC,yCAUoB;AAEpB,2CAAyF;AAAhF,+GAAA,iBAAiB,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AAErD,QAAA,WAAW,GAAG,IAAA,gBAAM,GAAE,CAAC;AAEpC,mBAAmB;AACnB,mBAAW,CAAC,GAAG,CAAC,UAAU,EAAE,wBAAa,CAAC,CAAC;AAE3C,uBAAuB;AACvB,mBAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAW,CAAC,CAAC;AAEvC,wBAAwB;AACxB,mBAAW,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAY,CAAC,CAAC;AAEzC,wBAAwB;AACxB,mBAAW,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAY,CAAC,CAAC;AAEzC,oBAAoB;AACpB,mBAAW,CAAC,GAAG,CAAC,WAAW,EAAE,yBAAc,CAAC,CAAC;AAE7C,yBAAyB;AACzB,mBAAW,CAAC,GAAG,CAAC,UAAU,EAAE,wBAAa,CAAC,CAAC;AAE3C,yBAAyB;AACzB,mBAAW,CAAC,IAAI,CAAC,UAAU,EAAE,wBAAa,CAAC,CAAC;AAE5C,kBAAkB;AAClB,mBAAW,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAY,CAAC,CAAC;AAEzC,wCAAwC;AACxC,mBAAW,CAAC,GAAG,CAAC,WAAW,EAAE,yBAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Usage Data Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for aggregated usage data.
|
|
5
|
+
* Compatible with better-ccusage interfaces for drop-in replacement.
|
|
6
|
+
*/
|
|
7
|
+
/** Per-model token and cost breakdown */
|
|
8
|
+
export interface ModelBreakdown {
|
|
9
|
+
modelName: string;
|
|
10
|
+
inputTokens: number;
|
|
11
|
+
outputTokens: number;
|
|
12
|
+
cacheCreationTokens: number;
|
|
13
|
+
cacheReadTokens: number;
|
|
14
|
+
cost: number;
|
|
15
|
+
}
|
|
16
|
+
/** Daily usage aggregation (YYYY-MM-DD) */
|
|
17
|
+
export interface DailyUsage {
|
|
18
|
+
date: string;
|
|
19
|
+
source: string;
|
|
20
|
+
inputTokens: number;
|
|
21
|
+
outputTokens: number;
|
|
22
|
+
cacheCreationTokens: number;
|
|
23
|
+
cacheReadTokens: number;
|
|
24
|
+
cost: number;
|
|
25
|
+
totalCost: number;
|
|
26
|
+
modelsUsed: string[];
|
|
27
|
+
modelBreakdowns: ModelBreakdown[];
|
|
28
|
+
}
|
|
29
|
+
/** Hourly usage aggregation (YYYY-MM-DD HH:00) */
|
|
30
|
+
export interface HourlyUsage {
|
|
31
|
+
hour: string;
|
|
32
|
+
source: string;
|
|
33
|
+
inputTokens: number;
|
|
34
|
+
outputTokens: number;
|
|
35
|
+
cacheCreationTokens: number;
|
|
36
|
+
cacheReadTokens: number;
|
|
37
|
+
cost: number;
|
|
38
|
+
totalCost: number;
|
|
39
|
+
modelsUsed: string[];
|
|
40
|
+
modelBreakdowns: ModelBreakdown[];
|
|
41
|
+
}
|
|
42
|
+
/** Monthly usage aggregation (YYYY-MM) */
|
|
43
|
+
export interface MonthlyUsage {
|
|
44
|
+
month: string;
|
|
45
|
+
source: string;
|
|
46
|
+
inputTokens: number;
|
|
47
|
+
outputTokens: number;
|
|
48
|
+
cacheCreationTokens: number;
|
|
49
|
+
cacheReadTokens: number;
|
|
50
|
+
totalCost: number;
|
|
51
|
+
modelsUsed: string[];
|
|
52
|
+
modelBreakdowns: ModelBreakdown[];
|
|
53
|
+
}
|
|
54
|
+
/** Session-level usage aggregation */
|
|
55
|
+
export interface SessionUsage {
|
|
56
|
+
sessionId: string;
|
|
57
|
+
projectPath: string;
|
|
58
|
+
inputTokens: number;
|
|
59
|
+
outputTokens: number;
|
|
60
|
+
cacheCreationTokens: number;
|
|
61
|
+
cacheReadTokens: number;
|
|
62
|
+
cost: number;
|
|
63
|
+
totalCost: number;
|
|
64
|
+
lastActivity: string;
|
|
65
|
+
versions: string[];
|
|
66
|
+
modelsUsed: string[];
|
|
67
|
+
modelBreakdowns: ModelBreakdown[];
|
|
68
|
+
source: string;
|
|
69
|
+
}
|
|
70
|
+
/** Token category with count and cost */
|
|
71
|
+
export interface TokenCategoryCost {
|
|
72
|
+
tokens: number;
|
|
73
|
+
cost: number;
|
|
74
|
+
}
|
|
75
|
+
/** Breakdown of tokens by type with individual costs */
|
|
76
|
+
export interface TokenBreakdown {
|
|
77
|
+
input: TokenCategoryCost;
|
|
78
|
+
output: TokenCategoryCost;
|
|
79
|
+
cacheCreation: TokenCategoryCost;
|
|
80
|
+
cacheRead: TokenCategoryCost;
|
|
81
|
+
}
|
|
82
|
+
/** Anomaly types for usage pattern detection */
|
|
83
|
+
export type AnomalyType = 'high_input' | 'high_io_ratio' | 'cost_spike' | 'high_cache_read';
|
|
84
|
+
/** Single anomaly detection result */
|
|
85
|
+
export interface Anomaly {
|
|
86
|
+
date: string;
|
|
87
|
+
type: AnomalyType;
|
|
88
|
+
model?: string;
|
|
89
|
+
value: number;
|
|
90
|
+
threshold: number;
|
|
91
|
+
message: string;
|
|
92
|
+
}
|
|
93
|
+
/** Summary of all detected anomalies */
|
|
94
|
+
export interface AnomalySummary {
|
|
95
|
+
totalAnomalies: number;
|
|
96
|
+
highInputDays: number;
|
|
97
|
+
highIoRatioDays: number;
|
|
98
|
+
costSpikeDays: number;
|
|
99
|
+
highCacheReadDays: number;
|
|
100
|
+
}
|
|
101
|
+
/** Insights API response */
|
|
102
|
+
export interface UsageInsights {
|
|
103
|
+
anomalies: Anomaly[];
|
|
104
|
+
summary: AnomalySummary;
|
|
105
|
+
}
|
|
106
|
+
/** Extended model usage with cost breakdown */
|
|
107
|
+
export interface ExtendedModelUsage {
|
|
108
|
+
model: string;
|
|
109
|
+
inputTokens: number;
|
|
110
|
+
outputTokens: number;
|
|
111
|
+
cacheCreationTokens: number;
|
|
112
|
+
cacheReadTokens: number;
|
|
113
|
+
tokens: number;
|
|
114
|
+
cost: number;
|
|
115
|
+
percentage: number;
|
|
116
|
+
costBreakdown: TokenBreakdown;
|
|
117
|
+
ioRatio: number;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AAED,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AAED,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,yCAAyC;AACzC,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,aAAa,EAAE,iBAAiB,CAAC;IACjC,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAED,gDAAgD;AAChD,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,iBAAiB,CAAC;AAEtB,sCAAsC;AACtC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,4BAA4B;AAC5B,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,cAAc,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Usage Data Types
|
|
4
|
+
*
|
|
5
|
+
* Type definitions for aggregated usage data.
|
|
6
|
+
* Compatible with better-ccusage interfaces for drop-in replacement.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/web-server/usage/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
|
@@ -1,46 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Usage Disk Cache - Re-export from modularized location
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* on every dashboard startup. Uses TTL-based invalidation with stale-while-revalidate.
|
|
6
|
-
*
|
|
7
|
-
* Cache location: ~/.ccs/cache/usage.json
|
|
8
|
-
* Default TTL: 5 minutes (configurable)
|
|
9
|
-
*/
|
|
10
|
-
import type { DailyUsage, HourlyUsage, MonthlyUsage, SessionUsage } from './usage-types';
|
|
11
|
-
/** Structure of the disk cache file */
|
|
12
|
-
export interface UsageDiskCache {
|
|
13
|
-
version: number;
|
|
14
|
-
timestamp: number;
|
|
15
|
-
daily: DailyUsage[];
|
|
16
|
-
hourly: HourlyUsage[];
|
|
17
|
-
monthly: MonthlyUsage[];
|
|
18
|
-
session: SessionUsage[];
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Read usage data from disk cache
|
|
22
|
-
* Returns null if cache is missing, corrupted, or has incompatible version
|
|
23
|
-
* NOTE: Does NOT reject based on age - caller handles staleness via SWR pattern
|
|
24
|
-
*/
|
|
25
|
-
export declare function readDiskCache(): UsageDiskCache | null;
|
|
26
|
-
/**
|
|
27
|
-
* Check if disk cache is fresh (within TTL)
|
|
28
|
-
*/
|
|
29
|
-
export declare function isDiskCacheFresh(cache: UsageDiskCache | null): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Check if disk cache is stale but usable (between TTL and STALE_TTL)
|
|
32
|
-
*/
|
|
33
|
-
export declare function isDiskCacheStale(cache: UsageDiskCache | null): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Write usage data to disk cache
|
|
36
|
-
*/
|
|
37
|
-
export declare function writeDiskCache(daily: DailyUsage[], hourly: HourlyUsage[], monthly: MonthlyUsage[], session: SessionUsage[]): void;
|
|
38
|
-
/**
|
|
39
|
-
* Get cache age in human-readable format
|
|
40
|
-
*/
|
|
41
|
-
export declare function getCacheAge(cache: UsageDiskCache | null): string;
|
|
42
|
-
/**
|
|
43
|
-
* Delete disk cache (for manual refresh)
|
|
4
|
+
* @deprecated Import from './usage/disk-cache' instead
|
|
44
5
|
*/
|
|
45
|
-
export
|
|
6
|
+
export * from './usage/disk-cache';
|
|
46
7
|
//# sourceMappingURL=usage-disk-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-disk-cache.d.ts","sourceRoot":"","sources":["../../src/web-server/usage-disk-cache.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"usage-disk-cache.d.ts","sourceRoot":"","sources":["../../src/web-server/usage-disk-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Usage Disk Cache - Re-export from modularized location
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* on every dashboard startup. Uses TTL-based invalidation with stale-while-revalidate.
|
|
7
|
-
*
|
|
8
|
-
* Cache location: ~/.ccs/cache/usage.json
|
|
9
|
-
* Default TTL: 5 minutes (configurable)
|
|
5
|
+
* @deprecated Import from './usage/disk-cache' instead
|
|
10
6
|
*/
|
|
11
7
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
8
|
if (k2 === undefined) k2 = k;
|
|
@@ -19,144 +15,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
19
15
|
if (k2 === undefined) k2 = k;
|
|
20
16
|
o[k2] = m[k];
|
|
21
17
|
}));
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
}) : function(o, v) {
|
|
25
|
-
o["default"] = v;
|
|
26
|
-
});
|
|
27
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
33
20
|
};
|
|
34
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
|
|
36
|
-
const fs = __importStar(require("fs"));
|
|
37
|
-
const path = __importStar(require("path"));
|
|
38
|
-
const os = __importStar(require("os"));
|
|
39
|
-
const ui_1 = require("../utils/ui");
|
|
40
|
-
// Cache configuration
|
|
41
|
-
const CCS_DIR = path.join(os.homedir(), '.ccs');
|
|
42
|
-
const CACHE_DIR = path.join(CCS_DIR, 'cache');
|
|
43
|
-
const CACHE_FILE = path.join(CACHE_DIR, 'usage.json');
|
|
44
|
-
const CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
45
|
-
const STALE_TTL_MS = 7 * 24 * 60 * 60 * 1000; // 7 days (max age for stale data)
|
|
46
|
-
// Current cache version - increment to invalidate old caches
|
|
47
|
-
// v3: Added hourly data to cache
|
|
48
|
-
const CACHE_VERSION = 3;
|
|
49
|
-
/**
|
|
50
|
-
* Ensure ~/.ccs/cache directory exists
|
|
51
|
-
*/
|
|
52
|
-
function ensureCacheDir() {
|
|
53
|
-
if (!fs.existsSync(CACHE_DIR)) {
|
|
54
|
-
fs.mkdirSync(CACHE_DIR, { recursive: true });
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Read usage data from disk cache
|
|
59
|
-
* Returns null if cache is missing, corrupted, or has incompatible version
|
|
60
|
-
* NOTE: Does NOT reject based on age - caller handles staleness via SWR pattern
|
|
61
|
-
*/
|
|
62
|
-
function readDiskCache() {
|
|
63
|
-
try {
|
|
64
|
-
if (!fs.existsSync(CACHE_FILE)) {
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
const data = fs.readFileSync(CACHE_FILE, 'utf-8');
|
|
68
|
-
const cache = JSON.parse(data);
|
|
69
|
-
// Version check - invalidate if schema changed
|
|
70
|
-
if (cache.version !== CACHE_VERSION) {
|
|
71
|
-
console.log((0, ui_1.info)('Cache version mismatch, will refresh'));
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
// Always return cache regardless of age - SWR pattern handles staleness
|
|
75
|
-
return cache;
|
|
76
|
-
}
|
|
77
|
-
catch (err) {
|
|
78
|
-
// Cache corrupted or unreadable - treat as miss
|
|
79
|
-
console.log((0, ui_1.info)('Cache read failed, will refresh:') + ` ${err.message}`);
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
exports.readDiskCache = readDiskCache;
|
|
84
|
-
/**
|
|
85
|
-
* Check if disk cache is fresh (within TTL)
|
|
86
|
-
*/
|
|
87
|
-
function isDiskCacheFresh(cache) {
|
|
88
|
-
if (!cache)
|
|
89
|
-
return false;
|
|
90
|
-
const age = Date.now() - cache.timestamp;
|
|
91
|
-
return age < CACHE_TTL_MS;
|
|
92
|
-
}
|
|
93
|
-
exports.isDiskCacheFresh = isDiskCacheFresh;
|
|
94
|
-
/**
|
|
95
|
-
* Check if disk cache is stale but usable (between TTL and STALE_TTL)
|
|
96
|
-
*/
|
|
97
|
-
function isDiskCacheStale(cache) {
|
|
98
|
-
if (!cache)
|
|
99
|
-
return false;
|
|
100
|
-
const age = Date.now() - cache.timestamp;
|
|
101
|
-
return age >= CACHE_TTL_MS && age < STALE_TTL_MS;
|
|
102
|
-
}
|
|
103
|
-
exports.isDiskCacheStale = isDiskCacheStale;
|
|
104
|
-
/**
|
|
105
|
-
* Write usage data to disk cache
|
|
106
|
-
*/
|
|
107
|
-
function writeDiskCache(daily, hourly, monthly, session) {
|
|
108
|
-
try {
|
|
109
|
-
ensureCacheDir();
|
|
110
|
-
const cache = {
|
|
111
|
-
version: CACHE_VERSION,
|
|
112
|
-
timestamp: Date.now(),
|
|
113
|
-
daily,
|
|
114
|
-
hourly,
|
|
115
|
-
monthly,
|
|
116
|
-
session,
|
|
117
|
-
};
|
|
118
|
-
// Write atomically using temp file + rename
|
|
119
|
-
const tempFile = CACHE_FILE + '.tmp';
|
|
120
|
-
fs.writeFileSync(tempFile, JSON.stringify(cache), 'utf-8');
|
|
121
|
-
fs.renameSync(tempFile, CACHE_FILE);
|
|
122
|
-
console.log((0, ui_1.ok)('Disk cache updated'));
|
|
123
|
-
}
|
|
124
|
-
catch (err) {
|
|
125
|
-
// Non-fatal - we can still serve from memory
|
|
126
|
-
console.log((0, ui_1.warn)('Failed to write disk cache:') + ` ${err.message}`);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
exports.writeDiskCache = writeDiskCache;
|
|
130
|
-
/**
|
|
131
|
-
* Get cache age in human-readable format
|
|
132
|
-
*/
|
|
133
|
-
function getCacheAge(cache) {
|
|
134
|
-
if (!cache)
|
|
135
|
-
return 'never';
|
|
136
|
-
const age = Date.now() - cache.timestamp;
|
|
137
|
-
const seconds = Math.floor(age / 1000);
|
|
138
|
-
const minutes = Math.floor(seconds / 60);
|
|
139
|
-
const hours = Math.floor(minutes / 60);
|
|
140
|
-
if (hours > 0)
|
|
141
|
-
return `${hours}h ${minutes % 60}m ago`;
|
|
142
|
-
if (minutes > 0)
|
|
143
|
-
return `${minutes}m ${seconds % 60}s ago`;
|
|
144
|
-
return `${seconds}s ago`;
|
|
145
|
-
}
|
|
146
|
-
exports.getCacheAge = getCacheAge;
|
|
147
|
-
/**
|
|
148
|
-
* Delete disk cache (for manual refresh)
|
|
149
|
-
*/
|
|
150
|
-
function clearDiskCache() {
|
|
151
|
-
try {
|
|
152
|
-
if (fs.existsSync(CACHE_FILE)) {
|
|
153
|
-
fs.unlinkSync(CACHE_FILE);
|
|
154
|
-
console.log((0, ui_1.ok)('Disk cache cleared'));
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
catch (err) {
|
|
158
|
-
console.log((0, ui_1.warn)('Failed to clear disk cache:') + ` ${err.message}`);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
exports.clearDiskCache = clearDiskCache;
|
|
22
|
+
__exportStar(require("./usage/disk-cache"), exports);
|
|
162
23
|
//# sourceMappingURL=usage-disk-cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-disk-cache.js","sourceRoot":"","sources":["../../src/web-server/usage-disk-cache.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"usage-disk-cache.js","sourceRoot":"","sources":["../../src/web-server/usage-disk-cache.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,qDAAmC"}
|
|
@@ -1,35 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Usage Analytics API Routes
|
|
2
|
+
* Usage Analytics API Routes - Re-export from modularized location
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* Supports daily, monthly, and session-based usage data aggregation.
|
|
6
|
-
*
|
|
7
|
-
* Performance optimizations:
|
|
8
|
-
* - Persistent disk cache to avoid re-parsing JSONL files on startup
|
|
9
|
-
* - TTL-based in-memory caching for fast repeated requests
|
|
10
|
-
* - Request coalescing to prevent duplicate concurrent requests
|
|
11
|
-
* - Non-blocking prewarm with instant stale data serving
|
|
12
|
-
*/
|
|
13
|
-
export declare const usageRoutes: import("express-serve-static-core").Router;
|
|
14
|
-
/** Get timestamp of last successful data fetch */
|
|
15
|
-
export declare function getLastFetchTimestamp(): number | null;
|
|
16
|
-
/**
|
|
17
|
-
* Clear all cached data (useful for manual refresh)
|
|
18
|
-
*/
|
|
19
|
-
export declare function clearUsageCache(): void;
|
|
20
|
-
/**
|
|
21
|
-
* Pre-warm usage caches on server startup
|
|
22
|
-
*
|
|
23
|
-
* Strategy:
|
|
24
|
-
* 1. Check disk cache - if fresh, use it (instant startup)
|
|
25
|
-
* 2. If stale, use it immediately but trigger background refresh
|
|
26
|
-
* 3. If no cache, return immediately and let first request trigger load
|
|
27
|
-
*
|
|
28
|
-
* This ensures dashboard opens in <1s regardless of cache state
|
|
4
|
+
* @deprecated Import from './usage/routes' instead
|
|
29
5
|
*/
|
|
30
|
-
export
|
|
31
|
-
timestamp: number;
|
|
32
|
-
elapsed: number;
|
|
33
|
-
source: string;
|
|
34
|
-
}>;
|
|
6
|
+
export { usageRoutes, prewarmUsageCache, clearUsageCache, getLastFetchTimestamp, } from './usage/routes';
|
|
35
7
|
//# sourceMappingURL=usage-routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-routes.d.ts","sourceRoot":"","sources":["../../src/web-server/usage-routes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"usage-routes.d.ts","sourceRoot":"","sources":["../../src/web-server/usage-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,qBAAqB,GACtB,MAAM,gBAAgB,CAAC"}
|