@kaitranntt/ccs 7.74.0 → 7.75.0-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.
Files changed (242) hide show
  1. package/dist/api/services/profile-writer.d.ts +1 -1
  2. package/dist/api/services/profile-writer.d.ts.map +1 -1
  3. package/dist/api/services/profile-writer.js +11 -5
  4. package/dist/api/services/profile-writer.js.map +1 -1
  5. package/dist/bin/ccsxp-runtime.d.ts +8 -0
  6. package/dist/bin/ccsxp-runtime.d.ts.map +1 -1
  7. package/dist/bin/ccsxp-runtime.js +60 -3
  8. package/dist/bin/ccsxp-runtime.js.map +1 -1
  9. package/dist/ccs.js +4 -2
  10. package/dist/ccs.js.map +1 -1
  11. package/dist/cliproxy/account-safety.d.ts.map +1 -1
  12. package/dist/cliproxy/account-safety.js +6 -1
  13. package/dist/cliproxy/account-safety.js.map +1 -1
  14. package/dist/cliproxy/ai-providers/service.d.ts.map +1 -1
  15. package/dist/cliproxy/ai-providers/service.js +10 -3
  16. package/dist/cliproxy/ai-providers/service.js.map +1 -1
  17. package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -1
  18. package/dist/cliproxy/binary/lifecycle.js +2 -1
  19. package/dist/cliproxy/binary/lifecycle.js.map +1 -1
  20. package/dist/cliproxy/codex-plan-compatibility.d.ts.map +1 -1
  21. package/dist/cliproxy/codex-plan-compatibility.js +1 -0
  22. package/dist/cliproxy/codex-plan-compatibility.js.map +1 -1
  23. package/dist/cliproxy/config/generator.d.ts +2 -1
  24. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  25. package/dist/cliproxy/config/generator.js +25 -1
  26. package/dist/cliproxy/config/generator.js.map +1 -1
  27. package/dist/cliproxy/executor/index.d.ts +5 -0
  28. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  29. package/dist/cliproxy/executor/index.js +22 -6
  30. package/dist/cliproxy/executor/index.js.map +1 -1
  31. package/dist/cliproxy/executor/retry-handler.js +2 -2
  32. package/dist/cliproxy/executor/retry-handler.js.map +1 -1
  33. package/dist/cliproxy/management-api-client.d.ts.map +1 -1
  34. package/dist/cliproxy/management-api-client.js +3 -2
  35. package/dist/cliproxy/management-api-client.js.map +1 -1
  36. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  37. package/dist/cliproxy/model-catalog.js +12 -0
  38. package/dist/cliproxy/model-catalog.js.map +1 -1
  39. package/dist/cliproxy/quota-fetcher-claude-normalizer.d.ts.map +1 -1
  40. package/dist/cliproxy/quota-fetcher-claude-normalizer.js +16 -12
  41. package/dist/cliproxy/quota-fetcher-claude-normalizer.js.map +1 -1
  42. package/dist/cliproxy/quota-fetcher-codex.d.ts +18 -3
  43. package/dist/cliproxy/quota-fetcher-codex.d.ts.map +1 -1
  44. package/dist/cliproxy/quota-fetcher-codex.js +74 -24
  45. package/dist/cliproxy/quota-fetcher-codex.js.map +1 -1
  46. package/dist/cliproxy/quota-fetcher-ghcp.d.ts.map +1 -1
  47. package/dist/cliproxy/quota-fetcher-ghcp.js +19 -8
  48. package/dist/cliproxy/quota-fetcher-ghcp.js.map +1 -1
  49. package/dist/cliproxy/quota-manager.d.ts +5 -2
  50. package/dist/cliproxy/quota-manager.d.ts.map +1 -1
  51. package/dist/cliproxy/quota-manager.js +177 -63
  52. package/dist/cliproxy/quota-manager.js.map +1 -1
  53. package/dist/cliproxy/quota-types.d.ts +16 -2
  54. package/dist/cliproxy/quota-types.d.ts.map +1 -1
  55. package/dist/cliproxy/routing-strategy-http.d.ts +1 -0
  56. package/dist/cliproxy/routing-strategy-http.d.ts.map +1 -1
  57. package/dist/cliproxy/routing-strategy-http.js +7 -2
  58. package/dist/cliproxy/routing-strategy-http.js.map +1 -1
  59. package/dist/cliproxy/routing-strategy.d.ts +23 -0
  60. package/dist/cliproxy/routing-strategy.d.ts.map +1 -1
  61. package/dist/cliproxy/routing-strategy.js +148 -2
  62. package/dist/cliproxy/routing-strategy.js.map +1 -1
  63. package/dist/cliproxy/service-manager.d.ts +17 -1
  64. package/dist/cliproxy/service-manager.d.ts.map +1 -1
  65. package/dist/cliproxy/service-manager.js +10 -5
  66. package/dist/cliproxy/service-manager.js.map +1 -1
  67. package/dist/cliproxy/sync/profile-mapper.d.ts.map +1 -1
  68. package/dist/cliproxy/sync/profile-mapper.js +21 -0
  69. package/dist/cliproxy/sync/profile-mapper.js.map +1 -1
  70. package/dist/cliproxy/types.d.ts +11 -0
  71. package/dist/cliproxy/types.d.ts.map +1 -1
  72. package/dist/cliproxy/types.js.map +1 -1
  73. package/dist/commands/api-command/create-command.d.ts.map +1 -1
  74. package/dist/commands/api-command/create-command.js +4 -1
  75. package/dist/commands/api-command/create-command.js.map +1 -1
  76. package/dist/commands/api-command/help.d.ts.map +1 -1
  77. package/dist/commands/api-command/help.js +4 -0
  78. package/dist/commands/api-command/help.js.map +1 -1
  79. package/dist/commands/api-command/shared.d.ts +2 -1
  80. package/dist/commands/api-command/shared.d.ts.map +1 -1
  81. package/dist/commands/api-command/shared.js +9 -0
  82. package/dist/commands/api-command/shared.js.map +1 -1
  83. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  84. package/dist/commands/cliproxy/help-subcommand.js +3 -1
  85. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  86. package/dist/commands/cliproxy/index.d.ts.map +1 -1
  87. package/dist/commands/cliproxy/index.js +12 -0
  88. package/dist/commands/cliproxy/index.js.map +1 -1
  89. package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
  90. package/dist/commands/cliproxy/quota-subcommand.js +79 -23
  91. package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
  92. package/dist/commands/cliproxy/routing-subcommand.d.ts +3 -0
  93. package/dist/commands/cliproxy/routing-subcommand.d.ts.map +1 -1
  94. package/dist/commands/cliproxy/routing-subcommand.js +127 -2
  95. package/dist/commands/cliproxy/routing-subcommand.js.map +1 -1
  96. package/dist/commands/command-catalog.d.ts.map +1 -1
  97. package/dist/commands/command-catalog.js +4 -1
  98. package/dist/commands/command-catalog.js.map +1 -1
  99. package/dist/commands/completion-backend.d.ts.map +1 -1
  100. package/dist/commands/completion-backend.js +16 -1
  101. package/dist/commands/completion-backend.js.map +1 -1
  102. package/dist/commands/config-dashboard-host.d.ts.map +1 -1
  103. package/dist/commands/config-dashboard-host.js +14 -2
  104. package/dist/commands/config-dashboard-host.js.map +1 -1
  105. package/dist/config/unified-config-loader.d.ts.map +1 -1
  106. package/dist/config/unified-config-loader.js +26 -0
  107. package/dist/config/unified-config-loader.js.map +1 -1
  108. package/dist/config/unified-config-types.d.ts +4 -0
  109. package/dist/config/unified-config-types.d.ts.map +1 -1
  110. package/dist/config/unified-config-types.js +2 -0
  111. package/dist/config/unified-config-types.js.map +1 -1
  112. package/dist/delegation/headless-executor.d.ts.map +1 -1
  113. package/dist/delegation/headless-executor.js +17 -2
  114. package/dist/delegation/headless-executor.js.map +1 -1
  115. package/dist/proxy/transformers/request-transformer.d.ts.map +1 -1
  116. package/dist/proxy/transformers/request-transformer.js +0 -8
  117. package/dist/proxy/transformers/request-transformer.js.map +1 -1
  118. package/dist/targets/target-metadata.js +1 -1
  119. package/dist/targets/target-metadata.js.map +1 -1
  120. package/dist/ui/assets/{accounts-D0Z5AVKW.js → accounts-CP_Nosd7.js} +1 -1
  121. package/dist/ui/assets/{alert-dialog-CzJucE0e.js → alert-dialog-CjnZBDj3.js} +1 -1
  122. package/dist/ui/assets/{api-DXAf4i-v.js → api-B7mmrAjt.js} +1 -1
  123. package/dist/ui/assets/{auth-section-BrnnHBi-.js → auth-section-BFQ8Mu15.js} +1 -1
  124. package/dist/ui/assets/{backups-section-DCBcfZ-C.js → backups-section-CPwm9q19.js} +1 -1
  125. package/dist/ui/assets/{channels-BSapONLx.js → channels-B2colnY7.js} +1 -1
  126. package/dist/ui/assets/{checkbox-Bd7X5Xud.js → checkbox-BAMXPp68.js} +1 -1
  127. package/dist/ui/assets/{claude-extension-BYJxm4B5.js → claude-extension-BDVoXHr-.js} +1 -1
  128. package/dist/ui/assets/{cliproxy-G5JuFm2j.js → cliproxy-CuLlmDu7.js} +1 -1
  129. package/dist/ui/assets/{cliproxy-ai-providers-D7r2Us_Y.js → cliproxy-ai-providers-8dH1cHVk.js} +1 -1
  130. package/dist/ui/assets/{cliproxy-control-panel-Cmo3ArVL.js → cliproxy-control-panel-CC8HzA8e.js} +1 -1
  131. package/dist/ui/assets/codex-C6Q9rOwp.js +27 -0
  132. package/dist/ui/assets/{confirm-dialog--zJgz4y0.js → confirm-dialog-D0VQlM7B.js} +1 -1
  133. package/dist/ui/assets/{copilot-2ARJ9YVb.js → copilot-CgG2oaRV.js} +1 -1
  134. package/dist/ui/assets/{cursor-CQNCrVt0.js → cursor-CE1giQU2.js} +1 -1
  135. package/dist/ui/assets/{droid-Dl5wRjDv.js → droid-FG2w7nRu.js} +1 -1
  136. package/dist/ui/assets/{globalenv-section-T1imQsSA.js → globalenv-section-BJbBud4W.js} +1 -1
  137. package/dist/ui/assets/health-Dh7o4wt7.js +1 -0
  138. package/dist/ui/assets/index-0mNJhDEG.js +72 -0
  139. package/dist/ui/assets/{index-CqJFugM4.js → index-B6bIHdvz.js} +1 -1
  140. package/dist/ui/assets/{index-DH916Tyi.js → index-BNTqP5R7.js} +1 -1
  141. package/dist/ui/assets/index-BNW5qVXZ.js +1 -0
  142. package/dist/ui/assets/{index-fV5BBuAO.js → index-Bj8UFR7b.js} +1 -1
  143. package/dist/ui/assets/index-DM5Khyln.css +1 -0
  144. package/dist/ui/assets/{index-DFgCoUVv.js → index-DTAdzUUA.js} +1 -1
  145. package/dist/ui/assets/index-X21iqV9e.js +1 -0
  146. package/dist/ui/assets/{logs-CZsWbq7X.js → logs-CxwEaeVS.js} +1 -1
  147. package/dist/ui/assets/masked-input-DygH0M2a.js +1 -0
  148. package/dist/ui/assets/proxy-g4_N-fbB.js +9 -0
  149. package/dist/ui/assets/proxy-status-widget-BWjGFUas.js +1 -0
  150. package/dist/ui/assets/{raw-json-settings-editor-panel-DNmb_vR-.js → raw-json-settings-editor-panel-DYpsr-1d.js} +1 -1
  151. package/dist/ui/assets/{searchable-select--iFe00dY.js → searchable-select-BKx31cCH.js} +1 -1
  152. package/dist/ui/assets/{separator-CaGbNw8E.js → separator-mG07scBE.js} +1 -1
  153. package/dist/ui/assets/{shared-Cgk48Wu3.js → shared-hbFOfnWU.js} +1 -1
  154. package/dist/ui/assets/{table-CKuoPAz4.js → table-DoECcNZ-.js} +1 -1
  155. package/dist/ui/assets/updates-BSeFQRwL.js +1 -0
  156. package/dist/ui/index.html +2 -2
  157. package/dist/utils/openai-compat-launch-settings.d.ts +7 -0
  158. package/dist/utils/openai-compat-launch-settings.d.ts.map +1 -0
  159. package/dist/utils/openai-compat-launch-settings.js +61 -0
  160. package/dist/utils/openai-compat-launch-settings.js.map +1 -0
  161. package/dist/utils/shell-executor.d.ts +1 -1
  162. package/dist/utils/shell-executor.d.ts.map +1 -1
  163. package/dist/utils/shell-executor.js +11 -1
  164. package/dist/utils/shell-executor.js.map +1 -1
  165. package/dist/web-server/jsonl-parser.d.ts.map +1 -1
  166. package/dist/web-server/jsonl-parser.js +22 -4
  167. package/dist/web-server/jsonl-parser.js.map +1 -1
  168. package/dist/web-server/model-pricing.d.ts +8 -6
  169. package/dist/web-server/model-pricing.d.ts.map +1 -1
  170. package/dist/web-server/model-pricing.js +80 -29
  171. package/dist/web-server/model-pricing.js.map +1 -1
  172. package/dist/web-server/models-dev/pricing-resolver.d.ts +18 -0
  173. package/dist/web-server/models-dev/pricing-resolver.d.ts.map +1 -0
  174. package/dist/web-server/models-dev/pricing-resolver.js +153 -0
  175. package/dist/web-server/models-dev/pricing-resolver.js.map +1 -0
  176. package/dist/web-server/models-dev/registry-cache.d.ts +19 -0
  177. package/dist/web-server/models-dev/registry-cache.d.ts.map +1 -0
  178. package/dist/web-server/models-dev/registry-cache.js +155 -0
  179. package/dist/web-server/models-dev/registry-cache.js.map +1 -0
  180. package/dist/web-server/models-dev/types.d.ts +39 -0
  181. package/dist/web-server/models-dev/types.d.ts.map +1 -0
  182. package/dist/web-server/models-dev/types.js +3 -0
  183. package/dist/web-server/models-dev/types.js.map +1 -0
  184. package/dist/web-server/routes/cliproxy-routing-routes.d.ts.map +1 -1
  185. package/dist/web-server/routes/cliproxy-routing-routes.js +35 -0
  186. package/dist/web-server/routes/cliproxy-routing-routes.js.map +1 -1
  187. package/dist/web-server/routes/profile-routes.d.ts.map +1 -1
  188. package/dist/web-server/routes/profile-routes.js +13 -3
  189. package/dist/web-server/routes/profile-routes.js.map +1 -1
  190. package/dist/web-server/routes/route-helpers.d.ts +1 -0
  191. package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
  192. package/dist/web-server/routes/route-helpers.js +11 -0
  193. package/dist/web-server/routes/route-helpers.js.map +1 -1
  194. package/dist/web-server/usage/aggregator.d.ts +1 -0
  195. package/dist/web-server/usage/aggregator.d.ts.map +1 -1
  196. package/dist/web-server/usage/aggregator.js +121 -20
  197. package/dist/web-server/usage/aggregator.js.map +1 -1
  198. package/dist/web-server/usage/cliproxy-usage-syncer.d.ts +0 -15
  199. package/dist/web-server/usage/cliproxy-usage-syncer.d.ts.map +1 -1
  200. package/dist/web-server/usage/cliproxy-usage-syncer.js +159 -55
  201. package/dist/web-server/usage/cliproxy-usage-syncer.js.map +1 -1
  202. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts +23 -7
  203. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts.map +1 -1
  204. package/dist/web-server/usage/cliproxy-usage-transformer.js +191 -28
  205. package/dist/web-server/usage/cliproxy-usage-transformer.js.map +1 -1
  206. package/dist/web-server/usage/codex-native-usage-collector.d.ts +11 -0
  207. package/dist/web-server/usage/codex-native-usage-collector.d.ts.map +1 -0
  208. package/dist/web-server/usage/codex-native-usage-collector.js +177 -0
  209. package/dist/web-server/usage/codex-native-usage-collector.js.map +1 -0
  210. package/dist/web-server/usage/data-aggregator.d.ts.map +1 -1
  211. package/dist/web-server/usage/data-aggregator.js +45 -46
  212. package/dist/web-server/usage/data-aggregator.js.map +1 -1
  213. package/dist/web-server/usage/droid-native-usage-collector.d.ts +14 -0
  214. package/dist/web-server/usage/droid-native-usage-collector.d.ts.map +1 -0
  215. package/dist/web-server/usage/droid-native-usage-collector.js +201 -0
  216. package/dist/web-server/usage/droid-native-usage-collector.js.map +1 -0
  217. package/dist/web-server/usage/handlers.d.ts +1 -0
  218. package/dist/web-server/usage/handlers.d.ts.map +1 -1
  219. package/dist/web-server/usage/handlers.js +155 -45
  220. package/dist/web-server/usage/handlers.js.map +1 -1
  221. package/dist/web-server/usage/model-identity.d.ts +16 -0
  222. package/dist/web-server/usage/model-identity.d.ts.map +1 -0
  223. package/dist/web-server/usage/model-identity.js +70 -0
  224. package/dist/web-server/usage/model-identity.js.map +1 -0
  225. package/dist/web-server/usage/sqlite-cli.d.ts +3 -0
  226. package/dist/web-server/usage/sqlite-cli.d.ts.map +1 -0
  227. package/dist/web-server/usage/sqlite-cli.js +62 -0
  228. package/dist/web-server/usage/sqlite-cli.js.map +1 -0
  229. package/dist/web-server/usage/types.d.ts +6 -0
  230. package/dist/web-server/usage/types.d.ts.map +1 -1
  231. package/lib/mcp/ccs-browser-server.cjs +309 -121
  232. package/package.json +1 -1
  233. package/scripts/dev-release.sh +4 -2
  234. package/dist/ui/assets/codex-4VNBJ4Nb.js +0 -27
  235. package/dist/ui/assets/health-CNous3WN.js +0 -1
  236. package/dist/ui/assets/index-2X8-14xr.js +0 -72
  237. package/dist/ui/assets/index-BcLnqcxD.js +0 -1
  238. package/dist/ui/assets/index-Be3dhMW3.js +0 -9
  239. package/dist/ui/assets/index-DuTB1_9r.css +0 -1
  240. package/dist/ui/assets/masked-input-_EkW1Pzo.js +0 -1
  241. package/dist/ui/assets/proxy-status-widget-D82T2X4F.js +0 -1
  242. package/dist/ui/assets/updates-Dr8Yq-Pm.js +0 -1
@@ -8,6 +8,7 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.loadAllUsageData = exports.loadSessionData = exports.loadMonthlyUsageData = exports.loadHourlyUsageData = exports.loadDailyUsageData = exports.aggregateSessionUsage = exports.aggregateMonthlyUsage = exports.aggregateHourlyUsage = exports.aggregateDailyUsage = void 0;
10
10
  const model_pricing_1 = require("../model-pricing");
11
+ const model_identity_1 = require("./model-identity");
11
12
  // ============================================================================
12
13
  // HELPER FUNCTIONS
13
14
  // ============================================================================
@@ -26,10 +27,11 @@ function extractHour(timestamp) {
26
27
  return `${date} ${hour}:00`;
27
28
  }
28
29
  /** Create model breakdown from accumulated data */
29
- function createModelBreakdown(modelName, inputTokens, outputTokens, cacheCreationTokens, cacheReadTokens) {
30
- const cost = (0, model_pricing_1.calculateCost)({ inputTokens, outputTokens, cacheCreationTokens, cacheReadTokens }, modelName);
30
+ function createModelBreakdown(modelName, provider, inputTokens, outputTokens, cacheCreationTokens, cacheReadTokens) {
31
+ const cost = (0, model_pricing_1.calculateCost)({ inputTokens, outputTokens, cacheCreationTokens, cacheReadTokens }, modelName, { provider });
31
32
  return {
32
33
  modelName,
34
+ ...(provider && { provider }),
33
35
  inputTokens,
34
36
  outputTokens,
35
37
  cacheCreationTokens,
@@ -37,6 +39,22 @@ function createModelBreakdown(modelName, inputTokens, outputTokens, cacheCreatio
37
39
  cost,
38
40
  };
39
41
  }
42
+ function getEntryProvider(entry) {
43
+ return (0, model_identity_1.normalizeUsageProvider)(entry.target);
44
+ }
45
+ function getEntryModelKey(entry) {
46
+ return `${getEntryProvider(entry) ?? ''}\u0000${entry.model}`;
47
+ }
48
+ function createModelAccumulator(entry) {
49
+ return {
50
+ modelName: entry.model,
51
+ provider: getEntryProvider(entry),
52
+ inputTokens: 0,
53
+ outputTokens: 0,
54
+ cacheCreationTokens: 0,
55
+ cacheReadTokens: 0,
56
+ };
57
+ }
40
58
  // ============================================================================
41
59
  // DAILY AGGREGATION
42
60
  // ============================================================================
@@ -63,18 +81,13 @@ function aggregateDailyUsage(entries, source = 'custom-parser') {
63
81
  let totalCacheCreation = 0;
64
82
  let totalCacheRead = 0;
65
83
  for (const entry of dateEntries) {
66
- const model = entry.model;
67
- const acc = modelMap.get(model) || {
68
- inputTokens: 0,
69
- outputTokens: 0,
70
- cacheCreationTokens: 0,
71
- cacheReadTokens: 0,
72
- };
84
+ const modelKey = getEntryModelKey(entry);
85
+ const acc = modelMap.get(modelKey) || createModelAccumulator(entry);
73
86
  acc.inputTokens += entry.inputTokens;
74
87
  acc.outputTokens += entry.outputTokens;
75
88
  acc.cacheCreationTokens += entry.cacheCreationTokens;
76
89
  acc.cacheReadTokens += entry.cacheReadTokens;
77
- modelMap.set(model, acc);
90
+ modelMap.set(modelKey, acc);
78
91
  totalInput += entry.inputTokens;
79
92
  totalOutput += entry.outputTokens;
80
93
  totalCacheCreation += entry.cacheCreationTokens;
@@ -83,8 +96,8 @@ function aggregateDailyUsage(entries, source = 'custom-parser') {
83
96
  // Build model breakdowns
84
97
  const modelBreakdowns = [];
85
98
  let totalCost = 0;
86
- for (const [modelName, acc] of modelMap) {
87
- const breakdown = createModelBreakdown(modelName, acc.inputTokens, acc.outputTokens, acc.cacheCreationTokens, acc.cacheReadTokens);
99
+ for (const acc of modelMap.values()) {
100
+ const breakdown = createModelBreakdown(acc.modelName, acc.provider, acc.inputTokens, acc.outputTokens, acc.cacheCreationTokens, acc.cacheReadTokens);
88
101
  modelBreakdowns.push(breakdown);
89
102
  totalCost += breakdown.cost;
90
103
  }
@@ -99,7 +112,7 @@ function aggregateDailyUsage(entries, source = 'custom-parser') {
99
112
  cacheReadTokens: totalCacheRead,
100
113
  cost: totalCost,
101
114
  totalCost,
102
- modelsUsed: Array.from(modelMap.keys()),
115
+ modelsUsed: (0, model_identity_1.getModelsUsed)(modelBreakdowns),
103
116
  modelBreakdowns,
104
117
  });
105
118
  }
@@ -134,18 +147,13 @@ function aggregateHourlyUsage(entries, source = 'custom-parser') {
134
147
  let totalCacheCreation = 0;
135
148
  let totalCacheRead = 0;
136
149
  for (const entry of hourEntries) {
137
- const model = entry.model;
138
- const acc = modelMap.get(model) || {
139
- inputTokens: 0,
140
- outputTokens: 0,
141
- cacheCreationTokens: 0,
142
- cacheReadTokens: 0,
143
- };
150
+ const modelKey = getEntryModelKey(entry);
151
+ const acc = modelMap.get(modelKey) || createModelAccumulator(entry);
144
152
  acc.inputTokens += entry.inputTokens;
145
153
  acc.outputTokens += entry.outputTokens;
146
154
  acc.cacheCreationTokens += entry.cacheCreationTokens;
147
155
  acc.cacheReadTokens += entry.cacheReadTokens;
148
- modelMap.set(model, acc);
156
+ modelMap.set(modelKey, acc);
149
157
  totalInput += entry.inputTokens;
150
158
  totalOutput += entry.outputTokens;
151
159
  totalCacheCreation += entry.cacheCreationTokens;
@@ -154,8 +162,8 @@ function aggregateHourlyUsage(entries, source = 'custom-parser') {
154
162
  // Build model breakdowns
155
163
  const modelBreakdowns = [];
156
164
  let totalCost = 0;
157
- for (const [modelName, acc] of modelMap) {
158
- const breakdown = createModelBreakdown(modelName, acc.inputTokens, acc.outputTokens, acc.cacheCreationTokens, acc.cacheReadTokens);
165
+ for (const acc of modelMap.values()) {
166
+ const breakdown = createModelBreakdown(acc.modelName, acc.provider, acc.inputTokens, acc.outputTokens, acc.cacheCreationTokens, acc.cacheReadTokens);
159
167
  modelBreakdowns.push(breakdown);
160
168
  totalCost += breakdown.cost;
161
169
  }
@@ -170,8 +178,9 @@ function aggregateHourlyUsage(entries, source = 'custom-parser') {
170
178
  cacheReadTokens: totalCacheRead,
171
179
  cost: totalCost,
172
180
  totalCost,
173
- modelsUsed: Array.from(modelMap.keys()),
181
+ modelsUsed: (0, model_identity_1.getModelsUsed)(modelBreakdowns),
174
182
  modelBreakdowns,
183
+ requestCount: hourEntries.length,
175
184
  });
176
185
  }
177
186
  // Sort by hour descending (most recent first)
@@ -205,18 +214,13 @@ function aggregateMonthlyUsage(entries, source = 'custom-parser') {
205
214
  let totalCacheCreation = 0;
206
215
  let totalCacheRead = 0;
207
216
  for (const entry of monthEntries) {
208
- const model = entry.model;
209
- const acc = modelMap.get(model) || {
210
- inputTokens: 0,
211
- outputTokens: 0,
212
- cacheCreationTokens: 0,
213
- cacheReadTokens: 0,
214
- };
217
+ const modelKey = getEntryModelKey(entry);
218
+ const acc = modelMap.get(modelKey) || createModelAccumulator(entry);
215
219
  acc.inputTokens += entry.inputTokens;
216
220
  acc.outputTokens += entry.outputTokens;
217
221
  acc.cacheCreationTokens += entry.cacheCreationTokens;
218
222
  acc.cacheReadTokens += entry.cacheReadTokens;
219
- modelMap.set(model, acc);
223
+ modelMap.set(modelKey, acc);
220
224
  totalInput += entry.inputTokens;
221
225
  totalOutput += entry.outputTokens;
222
226
  totalCacheCreation += entry.cacheCreationTokens;
@@ -225,8 +229,8 @@ function aggregateMonthlyUsage(entries, source = 'custom-parser') {
225
229
  // Build model breakdowns
226
230
  const modelBreakdowns = [];
227
231
  let totalCost = 0;
228
- for (const [modelName, acc] of modelMap) {
229
- const breakdown = createModelBreakdown(modelName, acc.inputTokens, acc.outputTokens, acc.cacheCreationTokens, acc.cacheReadTokens);
232
+ for (const acc of modelMap.values()) {
233
+ const breakdown = createModelBreakdown(acc.modelName, acc.provider, acc.inputTokens, acc.outputTokens, acc.cacheCreationTokens, acc.cacheReadTokens);
230
234
  modelBreakdowns.push(breakdown);
231
235
  totalCost += breakdown.cost;
232
236
  }
@@ -240,7 +244,7 @@ function aggregateMonthlyUsage(entries, source = 'custom-parser') {
240
244
  cacheCreationTokens: totalCacheCreation,
241
245
  cacheReadTokens: totalCacheRead,
242
246
  totalCost,
243
- modelsUsed: Array.from(modelMap.keys()),
247
+ modelsUsed: (0, model_identity_1.getModelsUsed)(modelBreakdowns),
244
248
  modelBreakdowns,
245
249
  });
246
250
  }
@@ -281,18 +285,13 @@ function aggregateSessionUsage(entries, source = 'custom-parser') {
281
285
  let projectPath = '';
282
286
  let target;
283
287
  for (const entry of orderedEntries) {
284
- const model = entry.model;
285
- const acc = modelMap.get(model) || {
286
- inputTokens: 0,
287
- outputTokens: 0,
288
- cacheCreationTokens: 0,
289
- cacheReadTokens: 0,
290
- };
288
+ const modelKey = getEntryModelKey(entry);
289
+ const acc = modelMap.get(modelKey) || createModelAccumulator(entry);
291
290
  acc.inputTokens += entry.inputTokens;
292
291
  acc.outputTokens += entry.outputTokens;
293
292
  acc.cacheCreationTokens += entry.cacheCreationTokens;
294
293
  acc.cacheReadTokens += entry.cacheReadTokens;
295
- modelMap.set(model, acc);
294
+ modelMap.set(modelKey, acc);
296
295
  totalInput += entry.inputTokens;
297
296
  totalOutput += entry.outputTokens;
298
297
  totalCacheCreation += entry.cacheCreationTokens;
@@ -316,8 +315,8 @@ function aggregateSessionUsage(entries, source = 'custom-parser') {
316
315
  // Build model breakdowns
317
316
  const modelBreakdowns = [];
318
317
  let totalCost = 0;
319
- for (const [modelName, acc] of modelMap) {
320
- const breakdown = createModelBreakdown(modelName, acc.inputTokens, acc.outputTokens, acc.cacheCreationTokens, acc.cacheReadTokens);
318
+ for (const acc of modelMap.values()) {
319
+ const breakdown = createModelBreakdown(acc.modelName, acc.provider, acc.inputTokens, acc.outputTokens, acc.cacheCreationTokens, acc.cacheReadTokens);
321
320
  modelBreakdowns.push(breakdown);
322
321
  totalCost += breakdown.cost;
323
322
  }
@@ -334,7 +333,7 @@ function aggregateSessionUsage(entries, source = 'custom-parser') {
334
333
  totalCost,
335
334
  lastActivity,
336
335
  versions: Array.from(versions),
337
- modelsUsed: Array.from(modelMap.keys()),
336
+ modelsUsed: (0, model_identity_1.getModelsUsed)(modelBreakdowns),
338
337
  modelBreakdowns,
339
338
  source,
340
339
  target,
@@ -1 +1 @@
1
- {"version":3,"file":"data-aggregator.js","sourceRoot":"","sources":["../../../src/web-server/usage/data-aggregator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-aggregator.js","sourceRoot":"","sources":["../../../src/web-server/usage/data-aggregator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="bun-types" />
3
+ import type { RawUsageEntry } from '../jsonl-parser';
4
+ import { querySqliteJson } from './sqlite-cli';
5
+ export type DroidSqliteQuery = typeof querySqliteJson;
6
+ interface DroidNativeUsageCollectorOptions {
7
+ env?: NodeJS.ProcessEnv;
8
+ homeDir?: string;
9
+ includeCcsManagedSessions?: boolean;
10
+ querySqliteJson?: DroidSqliteQuery;
11
+ }
12
+ export declare function scanDroidNativeUsageEntries(options?: DroidNativeUsageCollectorOptions): Promise<RawUsageEntry[]>;
13
+ export {};
14
+ //# sourceMappingURL=droid-native-usage-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"droid-native-usage-collector.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/droid-native-usage-collector.ts"],"names":[],"mappings":";;AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GAAG,OAAO,eAAe,CAAC;AAEtD,UAAU,gCAAgC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAgID,wBAAsB,2BAA2B,CAC/C,OAAO,GAAE,gCAAqC,GAC7C,OAAO,CAAC,aAAa,EAAE,CAAC,CAsE1B"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.scanDroidNativeUsageEntries = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const path = __importStar(require("path"));
29
+ const droid_dashboard_service_1 = require("../services/droid-dashboard-service");
30
+ const ui_1 = require("../../utils/ui");
31
+ const sqlite_cli_1 = require("./sqlite-cli");
32
+ const DROID_COST_BATCH_SIZE = 1000;
33
+ function isObject(value) {
34
+ return typeof value === 'object' && value !== null;
35
+ }
36
+ function asString(value) {
37
+ return typeof value === 'string' && value.trim().length > 0 ? value.trim() : null;
38
+ }
39
+ function asNumber(value) {
40
+ const numeric = typeof value === 'number' ? value : Number(value);
41
+ return Number.isFinite(numeric) && numeric >= 0 ? numeric : null;
42
+ }
43
+ function isCcsManagedSelector(selector) {
44
+ return selector.startsWith('custom:CCS-') || selector.startsWith('custom:ccs-');
45
+ }
46
+ function buildSelectorAlias(displayName, index) {
47
+ return `${displayName.trim().replace(/\s+/g, '-')}-${index}`;
48
+ }
49
+ function normalizeCustomModels(settings) {
50
+ const raw = settings.customModels ?? settings.custom_models;
51
+ if (Array.isArray(raw)) {
52
+ return raw.filter((entry) => isObject(entry));
53
+ }
54
+ if (isObject(raw)) {
55
+ return Object.values(raw).filter((entry) => isObject(entry));
56
+ }
57
+ return [];
58
+ }
59
+ function buildCustomModelMap(settingsPath) {
60
+ const selectors = new Map();
61
+ if (!fs.existsSync(settingsPath))
62
+ return selectors;
63
+ try {
64
+ const parsed = JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
65
+ if (!isObject(parsed))
66
+ return selectors;
67
+ for (const [index, entry] of normalizeCustomModels(parsed).entries()) {
68
+ const displayName = asString(entry.displayName ?? entry.model_display_name);
69
+ const model = asString(entry.model);
70
+ if (!displayName || !model)
71
+ continue;
72
+ selectors.set(`custom:${buildSelectorAlias(displayName, index)}`, model);
73
+ }
74
+ }
75
+ catch {
76
+ return selectors;
77
+ }
78
+ return selectors;
79
+ }
80
+ function collectSessionFiles(dir, suffix, results = []) {
81
+ if (!fs.existsSync(dir))
82
+ return results;
83
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
84
+ const entryPath = path.join(dir, entry.name);
85
+ if (entry.isDirectory()) {
86
+ collectSessionFiles(entryPath, suffix, results);
87
+ continue;
88
+ }
89
+ if (entry.isFile() && entry.name.endsWith(suffix)) {
90
+ results.push(entryPath);
91
+ }
92
+ }
93
+ return results;
94
+ }
95
+ function readSessionStartMetadata(filePath) {
96
+ try {
97
+ const firstLine = fs.readFileSync(filePath, 'utf8').split('\n')[0];
98
+ const parsed = JSON.parse(firstLine);
99
+ if (parsed?.type !== 'session_start')
100
+ return null;
101
+ return {
102
+ projectPath: asString(parsed.cwd) ?? '/',
103
+ version: typeof parsed.version === 'number'
104
+ ? String(parsed.version)
105
+ : (asString(parsed.version) ?? undefined),
106
+ };
107
+ }
108
+ catch {
109
+ return null;
110
+ }
111
+ }
112
+ function loadSessionMetadata(factoryDir) {
113
+ const metadata = new Map();
114
+ const selectorMap = buildCustomModelMap(path.join(factoryDir, 'settings.json'));
115
+ const sessionsDir = path.join(factoryDir, 'sessions');
116
+ for (const settingsPath of collectSessionFiles(sessionsDir, '.settings.json')) {
117
+ const sessionId = path.basename(settingsPath, '.settings.json');
118
+ const jsonlPath = settingsPath.replace(/\.settings\.json$/, '.jsonl');
119
+ const start = readSessionStartMetadata(jsonlPath);
120
+ if (!start)
121
+ continue;
122
+ try {
123
+ const parsed = JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
124
+ const rawSelector = asString(parsed?.model) ?? 'unknown-droid-model';
125
+ metadata.set(sessionId, {
126
+ model: selectorMap.get(rawSelector) ?? rawSelector,
127
+ projectPath: start.projectPath,
128
+ rawSelector,
129
+ version: start.version,
130
+ });
131
+ }
132
+ catch {
133
+ continue;
134
+ }
135
+ }
136
+ return metadata;
137
+ }
138
+ async function scanDroidNativeUsageEntries(options = {}) {
139
+ const query = options.querySqliteJson ?? sqlite_cli_1.querySqliteJson;
140
+ const { settingsPath } = (0, droid_dashboard_service_1.resolveDroidConfigPaths)({
141
+ env: options.env,
142
+ homeDir: options.homeDir,
143
+ });
144
+ const factoryDir = path.dirname(settingsPath);
145
+ const costsDbPath = path.join(factoryDir, 'costs.db');
146
+ if (!fs.existsSync(costsDbPath))
147
+ return [];
148
+ const rows = [];
149
+ let offset = 0;
150
+ while (true) {
151
+ const batch = await query(costsDbPath, `SELECT session_id, timestamp, input_tokens, output_tokens FROM costs ` +
152
+ `ORDER BY timestamp ASC LIMIT ${DROID_COST_BATCH_SIZE} OFFSET ${offset};`);
153
+ if (!batch.length)
154
+ break;
155
+ rows.push(...batch);
156
+ if (batch.length < DROID_COST_BATCH_SIZE)
157
+ break;
158
+ offset += batch.length;
159
+ }
160
+ if (!rows.length)
161
+ return [];
162
+ const metadata = loadSessionMetadata(factoryDir);
163
+ const entries = [];
164
+ let skippedRowsWithoutMetadata = 0;
165
+ for (const row of rows) {
166
+ if (!isObject(row))
167
+ continue;
168
+ const sessionId = asString(row.session_id);
169
+ const timestamp = asString(row.timestamp);
170
+ const inputTokens = asNumber(row.input_tokens);
171
+ const outputTokens = asNumber(row.output_tokens);
172
+ if (!sessionId || !timestamp || inputTokens === null || outputTokens === null)
173
+ continue;
174
+ const session = metadata.get(sessionId);
175
+ if (!session) {
176
+ skippedRowsWithoutMetadata++;
177
+ continue;
178
+ }
179
+ if (!options.includeCcsManagedSessions && isCcsManagedSelector(session.rawSelector)) {
180
+ continue;
181
+ }
182
+ entries.push({
183
+ inputTokens,
184
+ outputTokens,
185
+ cacheCreationTokens: 0,
186
+ cacheReadTokens: 0,
187
+ model: session.model,
188
+ sessionId,
189
+ timestamp,
190
+ projectPath: session.projectPath,
191
+ version: session.version,
192
+ target: 'droid',
193
+ });
194
+ }
195
+ if (skippedRowsWithoutMetadata > 0) {
196
+ console.log((0, ui_1.warn)(`Skipped ${skippedRowsWithoutMetadata} Droid native cost row(s) without local session metadata`));
197
+ }
198
+ return entries;
199
+ }
200
+ exports.scanDroidNativeUsageEntries = scanDroidNativeUsageEntries;
201
+ //# sourceMappingURL=droid-native-usage-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"droid-native-usage-collector.js","sourceRoot":"","sources":["../../../src/web-server/usage/droid-native-usage-collector.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export interface UsageQuery {
19
19
  export declare function validateDate(dateString?: string): string | undefined;
20
20
  export declare function validateLimit(limit?: string): number;
21
21
  export declare function validateOffset(offset?: string): number;
22
+ export declare function validateDateRangeOrder(since?: string, until?: string): void;
22
23
  export declare function filterByDateRange<T extends {
23
24
  date?: string;
24
25
  month?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/handlers.ts"],"names":[],"mappings":"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"}