@kaitranntt/ccs 8.1.4-dev.8 → 8.2.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 (134) hide show
  1. package/dist/cliproxy/quota/quota-fetcher-claude.d.ts +9 -0
  2. package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
  3. package/dist/cliproxy/quota/quota-fetcher-claude.js +53 -16
  4. package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
  5. package/dist/cliproxy/quota/quota-fetcher.d.ts.map +1 -1
  6. package/dist/cliproxy/quota/quota-fetcher.js +4 -0
  7. package/dist/cliproxy/quota/quota-fetcher.js.map +1 -1
  8. package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
  9. package/dist/cliproxy/quota/quota-manager.js +32 -1
  10. package/dist/cliproxy/quota/quota-manager.js.map +1 -1
  11. package/dist/cliproxy/services/stats-fetcher.d.ts +13 -0
  12. package/dist/cliproxy/services/stats-fetcher.d.ts.map +1 -1
  13. package/dist/cliproxy/services/stats-fetcher.js +25 -1
  14. package/dist/cliproxy/services/stats-fetcher.js.map +1 -1
  15. package/dist/commands/bar/index.d.ts +8 -0
  16. package/dist/commands/bar/index.d.ts.map +1 -0
  17. package/dist/commands/bar/index.js +69 -0
  18. package/dist/commands/bar/index.js.map +1 -0
  19. package/dist/commands/bar/install-subcommand.d.ts +50 -0
  20. package/dist/commands/bar/install-subcommand.d.ts.map +1 -0
  21. package/dist/commands/bar/install-subcommand.js +383 -0
  22. package/dist/commands/bar/install-subcommand.js.map +1 -0
  23. package/dist/commands/bar/launch-subcommand.d.ts +38 -0
  24. package/dist/commands/bar/launch-subcommand.d.ts.map +1 -0
  25. package/dist/commands/bar/launch-subcommand.js +141 -0
  26. package/dist/commands/bar/launch-subcommand.js.map +1 -0
  27. package/dist/commands/bar/uninstall-subcommand.d.ts +13 -0
  28. package/dist/commands/bar/uninstall-subcommand.d.ts.map +1 -0
  29. package/dist/commands/bar/uninstall-subcommand.js +78 -0
  30. package/dist/commands/bar/uninstall-subcommand.js.map +1 -0
  31. package/dist/commands/bar/version-subcommand.d.ts +8 -0
  32. package/dist/commands/bar/version-subcommand.d.ts.map +1 -0
  33. package/dist/commands/bar/version-subcommand.js +62 -0
  34. package/dist/commands/bar/version-subcommand.js.map +1 -0
  35. package/dist/commands/command-catalog.d.ts.map +1 -1
  36. package/dist/commands/command-catalog.js +6 -0
  37. package/dist/commands/command-catalog.js.map +1 -1
  38. package/dist/commands/root-command-router.d.ts.map +1 -1
  39. package/dist/commands/root-command-router.js +7 -0
  40. package/dist/commands/root-command-router.js.map +1 -1
  41. package/dist/config/loader/yaml-serializer.d.ts.map +1 -1
  42. package/dist/config/loader/yaml-serializer.js +13 -0
  43. package/dist/config/loader/yaml-serializer.js.map +1 -1
  44. package/dist/config/schemas/quota.d.ts +26 -2
  45. package/dist/config/schemas/quota.d.ts.map +1 -1
  46. package/dist/config/schemas/quota.js +20 -1
  47. package/dist/config/schemas/quota.js.map +1 -1
  48. package/dist/ui/assets/{Trans-DsGR5Bhb.js → Trans-BkttMZOY.js} +1 -1
  49. package/dist/ui/assets/{accounts-DHBmHeH-.js → accounts-CMnafyvZ.js} +1 -1
  50. package/dist/ui/assets/{alert-dialog-Do0XfN46.js → alert-dialog-Dgbg5gJ1.js} +1 -1
  51. package/dist/ui/assets/api-VhuWZte1.js +4 -0
  52. package/dist/ui/assets/{auth-section-BmTeNetL.js → auth-section-DV1ImDLn.js} +1 -1
  53. package/dist/ui/assets/{backups-section-COawLfTr.js → backups-section-D7r-Huo_.js} +1 -1
  54. package/dist/ui/assets/{channels-C9LVYmNJ.js → channels-CKUk3W1L.js} +1 -1
  55. package/dist/ui/assets/{checkbox-BkFzg8C-.js → checkbox-B6j6PA4N.js} +1 -1
  56. package/dist/ui/assets/{claude-extension-Ch7L4lTF.js → claude-extension-B9phgEGW.js} +1 -1
  57. package/dist/ui/assets/{cliproxy-B3uWt6gn.js → cliproxy-CjZiufaQ.js} +1 -1
  58. package/dist/ui/assets/{cliproxy-ai-providers-Bn1_AdKD.js → cliproxy-ai-providers-J_8Tg44E.js} +1 -1
  59. package/dist/ui/assets/{cliproxy-control-panel-DC4pOOfY.js → cliproxy-control-panel-DOxGnabX.js} +1 -1
  60. package/dist/ui/assets/{codex-CcODhykP.js → codex-BJuDLXfe.js} +1 -1
  61. package/dist/ui/assets/{confirm-dialog-4rb-E8-R.js → confirm-dialog-CjwyQ3AU.js} +1 -1
  62. package/dist/ui/assets/{copilot-zgPXNkMw.js → copilot-Nhs4PdOq.js} +2 -2
  63. package/dist/ui/assets/{cursor-lRPpppk-.js → cursor-DqFROSqy.js} +1 -1
  64. package/dist/ui/assets/{droid-koOj34SB.js → droid-CBwAiZcv.js} +1 -1
  65. package/dist/ui/assets/{globalenv-section-jOkPVwvN.js → globalenv-section-D9WhcK3S.js} +1 -1
  66. package/dist/ui/assets/{health-CxHauE3Y.js → health-CE3lFqFV.js} +1 -1
  67. package/dist/ui/assets/icons-gI6odJjU.js +1 -0
  68. package/dist/ui/assets/{index-De3yNJ94.js → index-Bssd99Pa.js} +1 -1
  69. package/dist/ui/assets/{index-I_ek1xyD.js → index-C6D81JHk.js} +1 -1
  70. package/dist/ui/assets/{index-BLC5PyZn.js → index-D--xE6Kq.js} +1 -1
  71. package/dist/ui/assets/{index-D7crOfea.js → index-DFYK4jw3.js} +4 -4
  72. package/dist/ui/assets/{index-DUGnoURR.js → index-DGsfFqiO.js} +1 -1
  73. package/dist/ui/assets/index-UEdhhar4.css +1 -0
  74. package/dist/ui/assets/{index-CRhKyfnS.js → index-bJvDY0e2.js} +1 -1
  75. package/dist/ui/assets/{index-BK-PSsqi.js → index-vK0cF4_0.js} +1 -1
  76. package/dist/ui/assets/{logs-BplpQHRb.js → logs-BUA9GCN2.js} +1 -1
  77. package/dist/ui/assets/{masked-input-DuLL3EwS.js → masked-input-BZdCgWmH.js} +1 -1
  78. package/dist/ui/assets/{proxy-status-widget-BruRPTSl.js → proxy-status-widget-I35xB9u9.js} +1 -1
  79. package/dist/ui/assets/{raw-json-settings-editor-panel-ClPqZ6iZ.js → raw-json-settings-editor-panel-DuL_4ncA.js} +1 -1
  80. package/dist/ui/assets/{searchable-select-BH1b065u.js → searchable-select-BleLprBy.js} +1 -1
  81. package/dist/ui/assets/{separator-BOiJ0l4s.js → separator-De5-VTtx.js} +1 -1
  82. package/dist/ui/assets/{shared-CunXigZu.js → shared-Bu81YVUK.js} +1 -1
  83. package/dist/ui/assets/{table-C7ysR1Xz.js → table-DsXaM2jg.js} +1 -1
  84. package/dist/ui/assets/{updates-BtBCV2xk.js → updates-C2bOO3Fo.js} +1 -1
  85. package/dist/ui/assets/{use-accounts-CwRU3ln9.js → use-accounts-C2OmaTJU.js} +1 -1
  86. package/dist/ui/index.html +3 -3
  87. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  88. package/dist/web-server/routes/account-routes.js +116 -0
  89. package/dist/web-server/routes/account-routes.js.map +1 -1
  90. package/dist/web-server/routes/bar-routes.d.ts +149 -0
  91. package/dist/web-server/routes/bar-routes.d.ts.map +1 -0
  92. package/dist/web-server/routes/bar-routes.js +415 -0
  93. package/dist/web-server/routes/bar-routes.js.map +1 -0
  94. package/dist/web-server/routes/index.d.ts.map +1 -1
  95. package/dist/web-server/routes/index.js +18 -0
  96. package/dist/web-server/routes/index.js.map +1 -1
  97. package/dist/web-server/usage/bar-analytics.d.ts +101 -0
  98. package/dist/web-server/usage/bar-analytics.d.ts.map +1 -0
  99. package/dist/web-server/usage/bar-analytics.js +315 -0
  100. package/dist/web-server/usage/bar-analytics.js.map +1 -0
  101. package/dist/web-server/usage/claude-native-credentials.d.ts +56 -0
  102. package/dist/web-server/usage/claude-native-credentials.d.ts.map +1 -0
  103. package/dist/web-server/usage/claude-native-credentials.js +140 -0
  104. package/dist/web-server/usage/claude-native-credentials.js.map +1 -0
  105. package/dist/web-server/usage/cliproxy-snapshot-reader.d.ts +24 -0
  106. package/dist/web-server/usage/cliproxy-snapshot-reader.d.ts.map +1 -0
  107. package/dist/web-server/usage/cliproxy-snapshot-reader.js +82 -0
  108. package/dist/web-server/usage/cliproxy-snapshot-reader.js.map +1 -0
  109. package/dist/web-server/usage/cliproxy-usage-syncer.d.ts +3 -2
  110. package/dist/web-server/usage/cliproxy-usage-syncer.d.ts.map +1 -1
  111. package/dist/web-server/usage/cliproxy-usage-syncer.js +14 -2
  112. package/dist/web-server/usage/cliproxy-usage-syncer.js.map +1 -1
  113. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts +8 -1
  114. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts.map +1 -1
  115. package/dist/web-server/usage/cliproxy-usage-transformer.js +31 -4
  116. package/dist/web-server/usage/cliproxy-usage-transformer.js.map +1 -1
  117. package/dist/web-server/usage/codex-local-quota-collector.d.ts +74 -0
  118. package/dist/web-server/usage/codex-local-quota-collector.d.ts.map +1 -0
  119. package/dist/web-server/usage/codex-local-quota-collector.js +248 -0
  120. package/dist/web-server/usage/codex-local-quota-collector.js.map +1 -0
  121. package/dist/web-server/usage/data-aggregator.d.ts +11 -0
  122. package/dist/web-server/usage/data-aggregator.d.ts.map +1 -1
  123. package/dist/web-server/usage/data-aggregator.js +29 -1
  124. package/dist/web-server/usage/data-aggregator.js.map +1 -1
  125. package/dist/web-server/usage/native-quota-collector.d.ts +44 -0
  126. package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -0
  127. package/dist/web-server/usage/native-quota-collector.js +378 -0
  128. package/dist/web-server/usage/native-quota-collector.js.map +1 -0
  129. package/dist/web-server/usage/types.d.ts +2 -0
  130. package/dist/web-server/usage/types.d.ts.map +1 -1
  131. package/package.json +1 -1
  132. package/dist/ui/assets/api-B7OYas_V.js +0 -4
  133. package/dist/ui/assets/icons-DzKUh8vG.js +0 -1
  134. package/dist/ui/assets/index-DOfPoKe_.css +0 -1
@@ -26,6 +26,17 @@ export declare function aggregateMonthlyUsage(entries: RawUsageEntry[], source?:
26
26
  * Groups by sessionId, tracks last activity and versions
27
27
  */
28
28
  export declare function aggregateSessionUsage(entries: RawUsageEntry[], source?: string): SessionUsage[];
29
+ import type { CliproxyUsageHistoryDetail } from './cliproxy-usage-transformer';
30
+ /**
31
+ * Compute per-account cost totals for a given calendar day.
32
+ *
33
+ * @param details Flat history details produced by extractCliproxyUsageHistoryDetails.
34
+ * Details with `accountId` are grouped by that value; details without are grouped
35
+ * under the key `'unknown'`.
36
+ * @param today YYYY-MM-DD date string (defaults to local date if omitted).
37
+ * @returns Record mapping accountId (or 'unknown') → total cost in USD for that day.
38
+ */
39
+ export declare function getTodayCostByAccount(details: CliproxyUsageHistoryDetail[], today?: string): Record<string, number>;
29
40
  import { type ParserOptions } from '../jsonl-parser';
30
41
  /**
31
42
  * Load daily usage data (replaces better-ccusage loadDailyUsageData)
@@ -1 +1 @@
1
- {"version":3,"file":"data-aggregator.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/data-aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAmFjB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,SAAkB,GACvB,UAAU,EAAE,CA4Ed;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,SAAkB,GACvB,WAAW,EAAE,CA6Ef;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,SAAkB,GACvB,YAAY,EAAE,CA2EhB;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,SAAkB,GACvB,YAAY,EAAE,CA2GhB;AAMD,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE5E;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAGvF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAGzF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAG3F;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAGtF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IACvE,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC,CAQD"}
1
+ {"version":3,"file":"data-aggregator.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/data-aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAmFjB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,SAAkB,GACvB,UAAU,EAAE,CA4Ed;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,SAAkB,GACvB,WAAW,EAAE,CA6Ef;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,SAAkB,GACvB,YAAY,EAAE,CA2EhB;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,SAAkB,GACvB,YAAY,EAAE,CA2GhB;AAMD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAG/E;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,0BAA0B,EAAE,EACrC,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAMD,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE5E;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAGvF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAGzF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAG3F;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAGtF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IACvE,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC,CAQD"}
@@ -6,7 +6,7 @@
6
6
  * Uses model-pricing.ts for cost calculations.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.loadAllUsageData = exports.loadSessionData = exports.loadMonthlyUsageData = exports.loadHourlyUsageData = exports.loadDailyUsageData = exports.aggregateSessionUsage = exports.aggregateMonthlyUsage = exports.aggregateHourlyUsage = exports.aggregateDailyUsage = void 0;
9
+ exports.loadAllUsageData = exports.loadSessionData = exports.loadMonthlyUsageData = exports.loadHourlyUsageData = exports.loadDailyUsageData = exports.getTodayCostByAccount = exports.aggregateSessionUsage = exports.aggregateMonthlyUsage = exports.aggregateHourlyUsage = exports.aggregateDailyUsage = void 0;
10
10
  const model_pricing_1 = require("../model-pricing");
11
11
  const model_identity_1 = require("./model-identity");
12
12
  // ============================================================================
@@ -344,6 +344,34 @@ function aggregateSessionUsage(entries, source = 'custom-parser') {
344
344
  return sessionUsage;
345
345
  }
346
346
  exports.aggregateSessionUsage = aggregateSessionUsage;
347
+ const bar_analytics_1 = require("./bar-analytics");
348
+ /**
349
+ * Compute per-account cost totals for a given calendar day.
350
+ *
351
+ * @param details Flat history details produced by extractCliproxyUsageHistoryDetails.
352
+ * Details with `accountId` are grouped by that value; details without are grouped
353
+ * under the key `'unknown'`.
354
+ * @param today YYYY-MM-DD date string (defaults to local date if omitted).
355
+ * @returns Record mapping accountId (or 'unknown') → total cost in USD for that day.
356
+ */
357
+ function getTodayCostByAccount(details, today) {
358
+ // Key on the LOCAL calendar day so a near-midnight record buckets into the
359
+ // same day the analytics panel shows (bar-analytics also keys on localDayKey).
360
+ const dateKey = today ?? (0, bar_analytics_1.localDayKey)(new Date());
361
+ const result = {};
362
+ for (const detail of details) {
363
+ // Filter to the requested day only
364
+ if (!detail.timestamp.startsWith(dateKey))
365
+ continue;
366
+ // Skip zero-cost records to avoid polluting result with no-op entries
367
+ if (detail.cost <= 0)
368
+ continue;
369
+ const accountKey = detail.accountId ?? 'unknown';
370
+ result[accountKey] = (result[accountKey] ?? 0) + detail.cost;
371
+ }
372
+ return result;
373
+ }
374
+ exports.getTodayCostByAccount = getTodayCostByAccount;
347
375
  // ============================================================================
348
376
  // MAIN DATA LOADER (drop-in replacement for better-ccusage)
349
377
  // ============================================================================
@@ -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,44 @@
1
+ /**
2
+ * Native subscription quota collector — the ONLY server-side fetch surface for
3
+ * the user's own Claude Code + Codex subscription quota.
4
+ *
5
+ * The macOS bar reads localhost /api/bar/summary and NEVER calls Anthropic. All
6
+ * Anthropic traffic originates here, under strict safety controls, because the
7
+ * OAuth usage endpoint is undocumented and hostile to polling (persistent 429s,
8
+ * no Retry-After, first-party-only policy). The controls below exist to protect
9
+ * the user's account:
10
+ *
11
+ * - long TTL (10 min) on-demand cache, never a tight timer loop
12
+ * - in-flight coalescing so concurrent /summary calls share one fetch
13
+ * - Retry-After honored; exponential backoff + jitter on 429/5xx
14
+ * - circuit breaker stops calling after repeated 429s for a cooldown
15
+ * - serve-stale-on-failure; only omit a row when there is genuinely no data
16
+ *
17
+ * Codex is a pure local file read (no network), so it skips the network guards.
18
+ */
19
+ import { type ClaudeNativeCredentials } from './claude-native-credentials';
20
+ import { type CodexLocalQuota } from './codex-local-quota-collector';
21
+ import type { ClaudeQuotaResult } from '../../cliproxy/quota/quota-types';
22
+ import type { BarSummaryRow } from '../routes/bar-routes';
23
+ export interface NativeQuotaDeps {
24
+ /** Read the native Claude Code credentials. */
25
+ readCredentials?: () => ClaudeNativeCredentials | null;
26
+ /** Fetch Claude quota with a directly-supplied native token. */
27
+ fetchClaudeQuota?: (accessToken: string, accountId?: string) => Promise<ClaudeQuotaResult>;
28
+ /** Read Codex quota from local session logs (zero network). */
29
+ getCodexQuota?: () => Promise<CodexLocalQuota | null>;
30
+ /** Clock seam for deterministic backoff/TTL/breaker tests. */
31
+ now?: () => number;
32
+ /** Sleep seam (no real delay in tests). */
33
+ sleep?: (ms: number) => Promise<void>;
34
+ }
35
+ /** Reset all module state. Tests call this to avoid cross-test pollution. */
36
+ export declare function resetNativeQuotaState(): void;
37
+ /**
38
+ * Build the native subscription rows (Claude Code + Codex) for /summary.
39
+ *
40
+ * Each path is independently try/caught so one failing source never blocks the
41
+ * other or the response. Returns only rows that represent real data.
42
+ */
43
+ export declare function getNativeAccountRows(deps?: NativeQuotaDeps): Promise<BarSummaryRow[]>;
44
+ //# sourceMappingURL=native-quota-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-quota-collector.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/native-quota-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAKL,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AAgC7E,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC;IACvD,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3F,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACtD,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAqCD,6EAA6E;AAC7E,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAwUD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAU/F"}
@@ -0,0 +1,378 @@
1
+ "use strict";
2
+ /**
3
+ * Native subscription quota collector — the ONLY server-side fetch surface for
4
+ * the user's own Claude Code + Codex subscription quota.
5
+ *
6
+ * The macOS bar reads localhost /api/bar/summary and NEVER calls Anthropic. All
7
+ * Anthropic traffic originates here, under strict safety controls, because the
8
+ * OAuth usage endpoint is undocumented and hostile to polling (persistent 429s,
9
+ * no Retry-After, first-party-only policy). The controls below exist to protect
10
+ * the user's account:
11
+ *
12
+ * - long TTL (10 min) on-demand cache, never a tight timer loop
13
+ * - in-flight coalescing so concurrent /summary calls share one fetch
14
+ * - Retry-After honored; exponential backoff + jitter on 429/5xx
15
+ * - circuit breaker stops calling after repeated 429s for a cooldown
16
+ * - serve-stale-on-failure; only omit a row when there is genuinely no data
17
+ *
18
+ * Codex is a pure local file read (no network), so it skips the network guards.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.getNativeAccountRows = exports.resetNativeQuotaState = void 0;
22
+ const claude_native_credentials_1 = require("./claude-native-credentials");
23
+ const quota_fetcher_claude_1 = require("../../cliproxy/quota/quota-fetcher-claude");
24
+ const codex_local_quota_collector_1 = require("./codex-local-quota-collector");
25
+ // ============================================================================
26
+ // Safety constants (concrete, named, module-level)
27
+ // ============================================================================
28
+ /** On-demand cache TTL. Floor is 5 min; we use 10 min because the bar polls
29
+ * /summary far more often than a hook fires. */
30
+ const NATIVE_QUOTA_TTL_MS = 600000; // 10 minutes
31
+ /** Exponential backoff base; delay = min(base * 2^n, MAX) + jitter. */
32
+ const RETRY_BASE_MS = 1000;
33
+ /** Ceiling for any single backoff / Retry-After cooldown derived from one call. */
34
+ const MAX_BACKOFF_MS = 60000; // 1 minute
35
+ /** Jitter added to backoff to avoid synchronized retries. */
36
+ const JITTER_MAX_MS = 500;
37
+ /** Consecutive 429s that trip the breaker open. */
38
+ const CB_TRIP_THRESHOLD = 3;
39
+ /** How long the breaker stays open (zero network) once tripped. */
40
+ const CB_COOLDOWN_MS = 900000; // 15 minutes
41
+ const CLAUDE_PROVIDER = 'claude-code';
42
+ const CODEX_PROVIDER = 'codex';
43
+ function freshProviderState() {
44
+ return {
45
+ cachedRow: null,
46
+ cachedAt: 0,
47
+ pending: null,
48
+ consecutive429: 0,
49
+ breakerOpenUntil: 0,
50
+ cooldownUntil: 0,
51
+ backoffAttempt: 0,
52
+ };
53
+ }
54
+ const claudeState = freshProviderState();
55
+ /** Reset all module state. Tests call this to avoid cross-test pollution. */
56
+ function resetNativeQuotaState() {
57
+ Object.assign(claudeState, freshProviderState());
58
+ }
59
+ exports.resetNativeQuotaState = resetNativeQuotaState;
60
+ // ============================================================================
61
+ // Helpers
62
+ // ============================================================================
63
+ function defaultSleep(ms) {
64
+ return new Promise((resolve) => setTimeout(resolve, ms));
65
+ }
66
+ /** Parse Retry-After (seconds or HTTP-date) into ms, capped at MAX_BACKOFF_MS. */
67
+ function parseRetryAfterMs(detail, now) {
68
+ if (!detail)
69
+ return null;
70
+ const match = /retry-after:(.+)$/.exec(detail);
71
+ if (!match)
72
+ return null;
73
+ const raw = match[1].trim();
74
+ const asSeconds = Number(raw);
75
+ if (Number.isFinite(asSeconds)) {
76
+ return Math.min(Math.max(0, asSeconds) * 1000, MAX_BACKOFF_MS);
77
+ }
78
+ const asDate = Date.parse(raw);
79
+ if (Number.isFinite(asDate)) {
80
+ return Math.min(Math.max(0, asDate - now), MAX_BACKOFF_MS);
81
+ }
82
+ return null;
83
+ }
84
+ function computeBackoffMs(attempt) {
85
+ const exp = Math.min(RETRY_BASE_MS * 2 ** attempt, MAX_BACKOFF_MS);
86
+ const jitter = Math.floor(Math.random() * JITTER_MAX_MS);
87
+ return exp + jitter;
88
+ }
89
+ /**
90
+ * Best-guess remaining percentage across the 5h + weekly core windows, mirroring
91
+ * the CLIProxy quota-manager derivation: min of remaining across non-overage
92
+ * windows, falling back to all windows if core summary is absent.
93
+ */
94
+ function deriveClaudeQuotaPercentage(quota) {
95
+ const coreWindows = [quota.coreUsage?.fiveHour, quota.coreUsage?.weekly].filter((w) => !!w);
96
+ if (coreWindows.length > 0) {
97
+ return Math.min(...coreWindows.map((w) => w.remainingPercent));
98
+ }
99
+ const usageWindows = quota.windows.filter((w) => w.rateLimitType !== 'overage');
100
+ if (usageWindows.length > 0) {
101
+ return Math.min(...usageWindows.map((w) => w.remainingPercent));
102
+ }
103
+ return null;
104
+ }
105
+ /** Soonest non-null reset ISO across the two core windows. */
106
+ function deriveClaudeNextReset(quota) {
107
+ const resets = [quota.coreUsage?.fiveHour?.resetAt, quota.coreUsage?.weekly?.resetAt]
108
+ .filter((r) => typeof r === 'string')
109
+ .map((r) => ({ iso: r, ms: new Date(r).getTime() }))
110
+ .filter((r) => Number.isFinite(r.ms))
111
+ .sort((a, b) => a.ms - b.ms);
112
+ return resets.length > 0 ? resets[0].iso : null;
113
+ }
114
+ /** Window length in minutes by Claude rate-limit family. */
115
+ const FIVE_HOUR_MINUTES = 300;
116
+ const SEVEN_DAY_MINUTES = 10080;
117
+ /**
118
+ * Build the per-window detail for a Claude subscription row.
119
+ *
120
+ * 5h + weekly come from coreUsage (the canonical core summary). Opus/Sonnet
121
+ * weekly splits come from quota.windows[] and only exist on Max plans, so they
122
+ * are omitted entirely when absent. Each window carries BOTH used and remaining
123
+ * percent so the bar never re-derives them.
124
+ */
125
+ function buildClaudeQuotaWindows(quota) {
126
+ const windows = [];
127
+ const fiveHour = quota.coreUsage?.fiveHour;
128
+ if (fiveHour) {
129
+ windows.push({
130
+ key: 'five_hour',
131
+ label: '5h',
132
+ usedPercent: 100 - fiveHour.remainingPercent,
133
+ remainingPercent: fiveHour.remainingPercent,
134
+ resetAt: fiveHour.resetAt,
135
+ windowMinutes: FIVE_HOUR_MINUTES,
136
+ });
137
+ }
138
+ const weekly = quota.coreUsage?.weekly;
139
+ if (weekly) {
140
+ windows.push({
141
+ key: 'seven_day',
142
+ label: 'week',
143
+ usedPercent: 100 - weekly.remainingPercent,
144
+ remainingPercent: weekly.remainingPercent,
145
+ resetAt: weekly.resetAt,
146
+ windowMinutes: SEVEN_DAY_MINUTES,
147
+ });
148
+ }
149
+ // Opus/Sonnet weekly splits are Max-only; surface them when the API carries
150
+ // them, otherwise omit so non-Max plans get exactly the two core windows.
151
+ const splitLabels = {
152
+ seven_day_opus: 'Opus · week',
153
+ seven_day_sonnet: 'Sonnet · week',
154
+ };
155
+ for (const w of quota.windows) {
156
+ const label = splitLabels[w.rateLimitType];
157
+ if (!label)
158
+ continue;
159
+ windows.push({
160
+ key: w.rateLimitType,
161
+ label,
162
+ usedPercent: w.usedPercent,
163
+ remainingPercent: w.remainingPercent,
164
+ resetAt: w.resetAt,
165
+ windowMinutes: SEVEN_DAY_MINUTES,
166
+ });
167
+ }
168
+ return windows;
169
+ }
170
+ function buildClaudeRow(quota, tier, now) {
171
+ const quotaWindows = buildClaudeQuotaWindows(quota);
172
+ return {
173
+ account_id: CLAUDE_PROVIDER,
174
+ provider: CLAUDE_PROVIDER,
175
+ displayName: 'Claude Code',
176
+ tier,
177
+ paused: false,
178
+ quota_percentage: deriveClaudeQuotaPercentage(quota),
179
+ quotaStatus: 'ok',
180
+ next_reset: deriveClaudeNextReset(quota),
181
+ is_default: false,
182
+ last_activity_at: null,
183
+ today_cost: null,
184
+ health: 'ok',
185
+ cached: false,
186
+ fetchedAt: new Date(now).toISOString(),
187
+ needsReauth: false,
188
+ // Omit the field entirely (rather than an empty array) when no windows
189
+ // resolved, so the wire shape stays minimal.
190
+ ...(quotaWindows.length > 0 ? { quotaWindows } : {}),
191
+ };
192
+ }
193
+ /** Map the Codex local windows into the row's per-window detail shape. */
194
+ function buildCodexQuotaWindows(quota) {
195
+ return quota.windows.map((w) => ({
196
+ key: w.key,
197
+ label: w.label,
198
+ usedPercent: w.usedPercent,
199
+ remainingPercent: w.remainingPercent,
200
+ resetAt: w.resetAt,
201
+ windowMinutes: w.windowMinutes,
202
+ }));
203
+ }
204
+ function buildCodexRow(quota, now) {
205
+ const quotaWindows = buildCodexQuotaWindows(quota);
206
+ return {
207
+ account_id: CODEX_PROVIDER,
208
+ provider: CODEX_PROVIDER,
209
+ displayName: 'Codex',
210
+ tier: quota.tier,
211
+ paused: false,
212
+ quota_percentage: quota.quotaPercentage,
213
+ quotaStatus: 'ok',
214
+ next_reset: quota.nextReset,
215
+ is_default: false,
216
+ last_activity_at: null,
217
+ today_cost: null,
218
+ // Codex is a local read; a stale source still reflects real usage so we keep
219
+ // quotaStatus 'ok' but flag health 'warning' to hint freshness.
220
+ health: quota.stale ? 'warning' : 'ok',
221
+ cached: false,
222
+ fetchedAt: new Date(now).toISOString(),
223
+ needsReauth: false,
224
+ ...(quotaWindows.length > 0 ? { quotaWindows } : {}),
225
+ // staleAsOf is only present (and serialized) when the source session is old.
226
+ ...(quota.staleAsOf ? { staleAsOf: quota.staleAsOf } : {}),
227
+ };
228
+ }
229
+ /** Return the cached row marked cached=true (used for TTL + stale serving). */
230
+ function serveCached(state) {
231
+ if (!state.cachedRow)
232
+ return null;
233
+ return { ...state.cachedRow, cached: true };
234
+ }
235
+ // ============================================================================
236
+ // Claude path with full safety controls
237
+ // ============================================================================
238
+ async function collectClaudeRow(deps) {
239
+ const now = (deps.now ?? Date.now)();
240
+ const state = claudeState;
241
+ // Serve from cache while within TTL — on-demand only, NO network.
242
+ if (state.cachedRow && now - state.cachedAt < NATIVE_QUOTA_TTL_MS) {
243
+ return serveCached(state);
244
+ }
245
+ // Breaker open or cooldown active -> zero network, serve stale (may be null).
246
+ if (now < state.breakerOpenUntil || now < state.cooldownUntil) {
247
+ return serveCached(state);
248
+ }
249
+ // Coalesce: concurrent callers past TTL share one in-flight fetch.
250
+ if (state.pending) {
251
+ return state.pending;
252
+ }
253
+ const readCredentials = deps.readCredentials ?? claude_native_credentials_1.readClaudeCredentials;
254
+ const fetchQuota = deps.fetchClaudeQuota ?? quota_fetcher_claude_1.fetchClaudeQuotaWithToken;
255
+ const sleep = deps.sleep ?? defaultSleep;
256
+ state.pending = (async () => {
257
+ try {
258
+ const creds = readCredentials();
259
+ // No token / unsupported subscription -> never spend a call, omit the row.
260
+ if (!creds || !(0, claude_native_credentials_1.hasSupportedSubscription)(creds)) {
261
+ return serveCached(state);
262
+ }
263
+ const token = (0, claude_native_credentials_1.getAccessToken)(creds);
264
+ if (!token) {
265
+ return serveCached(state);
266
+ }
267
+ const tier = (0, claude_native_credentials_1.getSubscriptionTier)(creds);
268
+ const quota = await fetchQuota(token, CLAUDE_PROVIDER);
269
+ if (quota.success) {
270
+ // Success closes the breaker and clears backoff.
271
+ state.consecutive429 = 0;
272
+ state.breakerOpenUntil = 0;
273
+ state.cooldownUntil = 0;
274
+ state.backoffAttempt = 0;
275
+ const row = buildClaudeRow(quota, tier, now);
276
+ state.cachedRow = row;
277
+ state.cachedAt = now;
278
+ return { ...row, cached: false };
279
+ }
280
+ // 401 -> token expired. Emit a reauth row so the bar can prompt; this is
281
+ // a real, actionable state distinct from a transient failure.
282
+ if (quota.needsReauth) {
283
+ const row = {
284
+ account_id: CLAUDE_PROVIDER,
285
+ provider: CLAUDE_PROVIDER,
286
+ displayName: 'Claude Code',
287
+ tier,
288
+ paused: false,
289
+ quota_percentage: null,
290
+ quotaStatus: 'error',
291
+ next_reset: null,
292
+ is_default: false,
293
+ last_activity_at: null,
294
+ today_cost: null,
295
+ health: 'error',
296
+ cached: false,
297
+ fetchedAt: new Date(now).toISOString(),
298
+ needsReauth: true,
299
+ };
300
+ // Do not cache the reauth row as a good value; it should re-evaluate
301
+ // once the user re-auths. But return it now.
302
+ return row;
303
+ }
304
+ // 429 / 5xx / transient. Apply backoff + breaker, then serve stale.
305
+ const is429 = quota.httpStatus === 429;
306
+ if (is429) {
307
+ state.consecutive429 += 1;
308
+ if (state.consecutive429 >= CB_TRIP_THRESHOLD) {
309
+ state.breakerOpenUntil = now + CB_COOLDOWN_MS;
310
+ }
311
+ const retryAfter = parseRetryAfterMs(quota.errorDetail, now);
312
+ const backoff = retryAfter ?? computeBackoffMs(state.backoffAttempt);
313
+ state.cooldownUntil = now + backoff;
314
+ state.backoffAttempt += 1;
315
+ // We do NOT sleep-then-retry inside the request path (that would burn
316
+ // the request budget). The cooldown gates the NEXT call instead.
317
+ void sleep; // retained as an injectable seam for future inline retry
318
+ }
319
+ else if (quota.retryable) {
320
+ const backoff = computeBackoffMs(state.backoffAttempt);
321
+ state.cooldownUntil = now + backoff;
322
+ state.backoffAttempt += 1;
323
+ }
324
+ // Serve last good row on failure; omit if we never succeeded.
325
+ return serveCached(state);
326
+ }
327
+ catch {
328
+ // Network/parse rejection -> treat as transient, serve stale.
329
+ const backoff = computeBackoffMs(state.backoffAttempt);
330
+ state.cooldownUntil = now + backoff;
331
+ state.backoffAttempt += 1;
332
+ return serveCached(state);
333
+ }
334
+ finally {
335
+ state.pending = null;
336
+ }
337
+ })();
338
+ return state.pending;
339
+ }
340
+ // ============================================================================
341
+ // Codex path (local read, no network guards needed)
342
+ // ============================================================================
343
+ async function collectCodexRow(deps) {
344
+ const now = (deps.now ?? Date.now)();
345
+ const getCodex = deps.getCodexQuota ?? codex_local_quota_collector_1.getCodexLocalQuota;
346
+ try {
347
+ const quota = await getCodex();
348
+ if (!quota)
349
+ return null; // exec-mode / no rate_limits -> omit the row
350
+ return buildCodexRow(quota, now);
351
+ }
352
+ catch {
353
+ return null;
354
+ }
355
+ }
356
+ // ============================================================================
357
+ // Public entry point
358
+ // ============================================================================
359
+ /**
360
+ * Build the native subscription rows (Claude Code + Codex) for /summary.
361
+ *
362
+ * Each path is independently try/caught so one failing source never blocks the
363
+ * other or the response. Returns only rows that represent real data.
364
+ */
365
+ async function getNativeAccountRows(deps = {}) {
366
+ const [claude, codex] = await Promise.all([
367
+ collectClaudeRow(deps).catch(() => null),
368
+ collectCodexRow(deps).catch(() => null),
369
+ ]);
370
+ const rows = [];
371
+ if (claude)
372
+ rows.push(claude);
373
+ if (codex)
374
+ rows.push(codex);
375
+ return rows;
376
+ }
377
+ exports.getNativeAccountRows = getNativeAccountRows;
378
+ //# sourceMappingURL=native-quota-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-quota-collector.js","sourceRoot":"","sources":["../../../src/web-server/usage/native-quota-collector.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,8 @@ export interface DailyUsage {
19
19
  date: string;
20
20
  /** Stable CCS profile name when the source can be attributed to one. */
21
21
  profile?: string;
22
+ /** Account email/id when the source can be attributed to a specific CLIProxy account. */
23
+ accountId?: string;
22
24
  source: string;
23
25
  inputTokens: number;
24
26
  outputTokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaitranntt/ccs",
3
- "version": "8.1.4-dev.8",
3
+ "version": "8.2.0-dev.1",
4
4
  "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more",
5
5
  "keywords": [
6
6
  "cli",