@kaitranntt/ccs 8.10.0-dev.2 → 8.10.0-dev.20

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 (309) hide show
  1. package/README.md +17 -5
  2. package/claude-mods/ccs-notices/.claude-plugin/plugin.json +1 -0
  3. package/claude-mods/ccs-notices/hooks/hooks.json +1 -0
  4. package/claude-mods/ccs-notices/hooks/register.ts +67 -0
  5. package/claude-mods/ccs-notices/tsconfig.json +3 -0
  6. package/dist/cliproxy/accounts/account-safety.d.ts +3 -2
  7. package/dist/cliproxy/accounts/account-safety.d.ts.map +1 -1
  8. package/dist/cliproxy/accounts/account-safety.js +23 -35
  9. package/dist/cliproxy/accounts/account-safety.js.map +1 -1
  10. package/dist/cliproxy/accounts/claude-pool-policy-api.d.ts +12 -0
  11. package/dist/cliproxy/accounts/claude-pool-policy-api.d.ts.map +1 -0
  12. package/dist/cliproxy/accounts/claude-pool-policy-api.js +74 -0
  13. package/dist/cliproxy/accounts/claude-pool-policy-api.js.map +1 -0
  14. package/dist/cliproxy/accounts/claude-pool-policy-lease.d.ts +11 -0
  15. package/dist/cliproxy/accounts/claude-pool-policy-lease.d.ts.map +1 -0
  16. package/dist/cliproxy/accounts/claude-pool-policy-lease.js +55 -0
  17. package/dist/cliproxy/accounts/claude-pool-policy-lease.js.map +1 -0
  18. package/dist/cliproxy/accounts/claude-pool-policy-reconciliation.d.ts +13 -0
  19. package/dist/cliproxy/accounts/claude-pool-policy-reconciliation.d.ts.map +1 -0
  20. package/dist/cliproxy/accounts/claude-pool-policy-reconciliation.js +215 -0
  21. package/dist/cliproxy/accounts/claude-pool-policy-reconciliation.js.map +1 -0
  22. package/dist/cliproxy/accounts/claude-pool-policy-runtime.d.ts +19 -0
  23. package/dist/cliproxy/accounts/claude-pool-policy-runtime.d.ts.map +1 -0
  24. package/dist/cliproxy/accounts/claude-pool-policy-runtime.js +65 -0
  25. package/dist/cliproxy/accounts/claude-pool-policy-runtime.js.map +1 -0
  26. package/dist/cliproxy/accounts/claude-pool-policy-state.d.ts +37 -0
  27. package/dist/cliproxy/accounts/claude-pool-policy-state.d.ts.map +1 -0
  28. package/dist/cliproxy/accounts/claude-pool-policy-state.js +205 -0
  29. package/dist/cliproxy/accounts/claude-pool-policy-state.js.map +1 -0
  30. package/dist/cliproxy/accounts/claude-pool-policy.d.ts +48 -0
  31. package/dist/cliproxy/accounts/claude-pool-policy.d.ts.map +1 -0
  32. package/dist/cliproxy/accounts/claude-pool-policy.js +401 -0
  33. package/dist/cliproxy/accounts/claude-pool-policy.js.map +1 -0
  34. package/dist/cliproxy/accounts/drain-order.d.ts +1 -1
  35. package/dist/cliproxy/accounts/drain-order.d.ts.map +1 -1
  36. package/dist/cliproxy/accounts/drain-order.js +17 -0
  37. package/dist/cliproxy/accounts/drain-order.js.map +1 -1
  38. package/dist/cliproxy/accounts/email-account-identity.d.ts.map +1 -1
  39. package/dist/cliproxy/accounts/email-account-identity.js +3 -1
  40. package/dist/cliproxy/accounts/email-account-identity.js.map +1 -1
  41. package/dist/cliproxy/accounts/pool-state.d.ts +1 -1
  42. package/dist/cliproxy/accounts/pool-state.d.ts.map +1 -1
  43. package/dist/cliproxy/accounts/registry-config.d.ts +4 -0
  44. package/dist/cliproxy/accounts/registry-config.d.ts.map +1 -0
  45. package/dist/cliproxy/accounts/registry-config.js +46 -0
  46. package/dist/cliproxy/accounts/registry-config.js.map +1 -0
  47. package/dist/cliproxy/accounts/registry.d.ts.map +1 -1
  48. package/dist/cliproxy/accounts/registry.js +38 -16
  49. package/dist/cliproxy/accounts/registry.js.map +1 -1
  50. package/dist/cliproxy/accounts/session-notices.d.ts +35 -0
  51. package/dist/cliproxy/accounts/session-notices.d.ts.map +1 -0
  52. package/dist/cliproxy/accounts/session-notices.js +147 -0
  53. package/dist/cliproxy/accounts/session-notices.js.map +1 -0
  54. package/dist/cliproxy/accounts/token-file-ops.d.ts +1 -2
  55. package/dist/cliproxy/accounts/token-file-ops.d.ts.map +1 -1
  56. package/dist/cliproxy/accounts/token-file-ops.js +2 -7
  57. package/dist/cliproxy/accounts/token-file-ops.js.map +1 -1
  58. package/dist/cliproxy/accounts/types.d.ts +1 -1
  59. package/dist/cliproxy/accounts/types.d.ts.map +1 -1
  60. package/dist/cliproxy/ai-providers/codex-plan-compatibility.d.ts.map +1 -1
  61. package/dist/cliproxy/ai-providers/codex-plan-compatibility.js +10 -8
  62. package/dist/cliproxy/ai-providers/codex-plan-compatibility.js.map +1 -1
  63. package/dist/cliproxy/ai-providers/codex-reasoning-proxy.d.ts +12 -2
  64. package/dist/cliproxy/ai-providers/codex-reasoning-proxy.d.ts.map +1 -1
  65. package/dist/cliproxy/ai-providers/codex-reasoning-proxy.js +107 -88
  66. package/dist/cliproxy/ai-providers/codex-reasoning-proxy.js.map +1 -1
  67. package/dist/cliproxy/ai-providers/model-id-normalizer.d.ts +1 -1
  68. package/dist/cliproxy/ai-providers/model-id-normalizer.d.ts.map +1 -1
  69. package/dist/cliproxy/ai-providers/model-id-normalizer.js +1 -1
  70. package/dist/cliproxy/ai-providers/model-id-normalizer.js.map +1 -1
  71. package/dist/cliproxy/ai-providers/schema-sanitizer.d.ts +3 -1
  72. package/dist/cliproxy/ai-providers/schema-sanitizer.d.ts.map +1 -1
  73. package/dist/cliproxy/ai-providers/schema-sanitizer.js +3 -1
  74. package/dist/cliproxy/ai-providers/schema-sanitizer.js.map +1 -1
  75. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  76. package/dist/cliproxy/config/env-builder.js +8 -1
  77. package/dist/cliproxy/config/env-builder.js.map +1 -1
  78. package/dist/cliproxy/config/fallback-chain-serializer.d.ts +8 -0
  79. package/dist/cliproxy/config/fallback-chain-serializer.d.ts.map +1 -0
  80. package/dist/cliproxy/config/fallback-chain-serializer.js +67 -0
  81. package/dist/cliproxy/config/fallback-chain-serializer.js.map +1 -0
  82. package/dist/cliproxy/config/generator.d.ts +9 -1
  83. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  84. package/dist/cliproxy/config/generator.js +162 -10
  85. package/dist/cliproxy/config/generator.js.map +1 -1
  86. package/dist/cliproxy/config/thinking-config.js +5 -5
  87. package/dist/cliproxy/config/thinking-config.js.map +1 -1
  88. package/dist/cliproxy/executor/account-resolution.d.ts.map +1 -1
  89. package/dist/cliproxy/executor/account-resolution.js +7 -1
  90. package/dist/cliproxy/executor/account-resolution.js.map +1 -1
  91. package/dist/cliproxy/executor/claude-launcher.d.ts.map +1 -1
  92. package/dist/cliproxy/executor/claude-launcher.js +23 -3
  93. package/dist/cliproxy/executor/claude-launcher.js.map +1 -1
  94. package/dist/cliproxy/executor/claude-mods.d.ts +33 -0
  95. package/dist/cliproxy/executor/claude-mods.d.ts.map +1 -0
  96. package/dist/cliproxy/executor/claude-mods.js +121 -0
  97. package/dist/cliproxy/executor/claude-mods.js.map +1 -0
  98. package/dist/cliproxy/executor/env-resolver.js +1 -1
  99. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  100. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  101. package/dist/cliproxy/executor/index.js +2 -1
  102. package/dist/cliproxy/executor/index.js.map +1 -1
  103. package/dist/cliproxy/executor/proxy-chain-builder.d.ts.map +1 -1
  104. package/dist/cliproxy/executor/proxy-chain-builder.js +4 -0
  105. package/dist/cliproxy/executor/proxy-chain-builder.js.map +1 -1
  106. package/dist/cliproxy/model-catalog.d.ts +1 -1
  107. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  108. package/dist/cliproxy/model-catalog.js +103 -10
  109. package/dist/cliproxy/model-catalog.js.map +1 -1
  110. package/dist/cliproxy/proxy/content-encoding.d.ts +20 -0
  111. package/dist/cliproxy/proxy/content-encoding.d.ts.map +1 -0
  112. package/dist/cliproxy/proxy/content-encoding.js +37 -0
  113. package/dist/cliproxy/proxy/content-encoding.js.map +1 -0
  114. package/dist/cliproxy/proxy/tool-sanitization-proxy.d.ts +7 -1
  115. package/dist/cliproxy/proxy/tool-sanitization-proxy.d.ts.map +1 -1
  116. package/dist/cliproxy/proxy/tool-sanitization-proxy.js +71 -109
  117. package/dist/cliproxy/proxy/tool-sanitization-proxy.js.map +1 -1
  118. package/dist/cliproxy/proxy/upstream-response-timeout.d.ts +13 -0
  119. package/dist/cliproxy/proxy/upstream-response-timeout.d.ts.map +1 -1
  120. package/dist/cliproxy/proxy/upstream-response-timeout.js +26 -1
  121. package/dist/cliproxy/proxy/upstream-response-timeout.js.map +1 -1
  122. package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.d.ts +17 -4
  123. package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.d.ts.map +1 -1
  124. package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.js +246 -153
  125. package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.js.map +1 -1
  126. package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.d.ts +47 -0
  127. package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.d.ts.map +1 -0
  128. package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.js +160 -0
  129. package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.js.map +1 -0
  130. package/dist/cliproxy/quota/quota-fetcher-claude.d.ts +4 -4
  131. package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
  132. package/dist/cliproxy/quota/quota-fetcher-claude.js +188 -21
  133. package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
  134. package/dist/cliproxy/quota/quota-label-sanitizer.d.ts +3 -2
  135. package/dist/cliproxy/quota/quota-label-sanitizer.d.ts.map +1 -1
  136. package/dist/cliproxy/quota/quota-label-sanitizer.js +6 -5
  137. package/dist/cliproxy/quota/quota-label-sanitizer.js.map +1 -1
  138. package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
  139. package/dist/cliproxy/quota/quota-manager.js +3 -9
  140. package/dist/cliproxy/quota/quota-manager.js.map +1 -1
  141. package/dist/cliproxy/quota/quota-types.d.ts +17 -0
  142. package/dist/cliproxy/quota/quota-types.d.ts.map +1 -1
  143. package/dist/cliproxy/services/stats-fetcher.d.ts +4 -0
  144. package/dist/cliproxy/services/stats-fetcher.d.ts.map +1 -1
  145. package/dist/cliproxy/services/stats-fetcher.js +14 -1
  146. package/dist/cliproxy/services/stats-fetcher.js.map +1 -1
  147. package/dist/cliproxy/services/usage-compatibility-transformer.d.ts +5 -0
  148. package/dist/cliproxy/services/usage-compatibility-transformer.d.ts.map +1 -1
  149. package/dist/cliproxy/services/usage-compatibility-transformer.js +77 -6
  150. package/dist/cliproxy/services/usage-compatibility-transformer.js.map +1 -1
  151. package/dist/cliproxy/types/config-types.d.ts +3 -0
  152. package/dist/cliproxy/types/config-types.d.ts.map +1 -1
  153. package/dist/commands/api-command/help.d.ts.map +1 -1
  154. package/dist/commands/api-command/help.js +2 -0
  155. package/dist/commands/api-command/help.js.map +1 -1
  156. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  157. package/dist/commands/cliproxy/help-subcommand.js +9 -0
  158. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  159. package/dist/commands/cliproxy/order-subcommand.d.ts.map +1 -1
  160. package/dist/commands/cliproxy/order-subcommand.js +86 -44
  161. package/dist/commands/cliproxy/order-subcommand.js.map +1 -1
  162. package/dist/commands/cliproxy/pool-state-renderer.d.ts.map +1 -1
  163. package/dist/commands/cliproxy/pool-state-renderer.js +9 -2
  164. package/dist/commands/cliproxy/pool-state-renderer.js.map +1 -1
  165. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts +1 -2
  166. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts.map +1 -1
  167. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js +5 -16
  168. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js.map +1 -1
  169. package/dist/commands/cliproxy/quota-subcommand/sections/claude.d.ts.map +1 -1
  170. package/dist/commands/cliproxy/quota-subcommand/sections/claude.js +4 -1
  171. package/dist/commands/cliproxy/quota-subcommand/sections/claude.js.map +1 -1
  172. package/dist/config/schemas/cliproxy.d.ts +16 -1
  173. package/dist/config/schemas/cliproxy.d.ts.map +1 -1
  174. package/dist/config/schemas/cliproxy.js.map +1 -1
  175. package/dist/cursor/cursor-daemon-entry.d.ts.map +1 -1
  176. package/dist/cursor/cursor-daemon-entry.js +11 -49
  177. package/dist/cursor/cursor-daemon-entry.js.map +1 -1
  178. package/dist/cursor/cursor-daemon.d.ts.map +1 -1
  179. package/dist/cursor/cursor-daemon.js +7 -4
  180. package/dist/cursor/cursor-daemon.js.map +1 -1
  181. package/dist/dispatcher/flows/cliproxy-flow.d.ts.map +1 -1
  182. package/dist/dispatcher/flows/cliproxy-flow.js +1 -0
  183. package/dist/dispatcher/flows/cliproxy-flow.js.map +1 -1
  184. package/dist/dispatcher/flows/settings-flow.d.ts.map +1 -1
  185. package/dist/dispatcher/flows/settings-flow.js +3 -1
  186. package/dist/dispatcher/flows/settings-flow.js.map +1 -1
  187. package/dist/docker/docker-bootstrap.d.ts.map +1 -1
  188. package/dist/docker/docker-bootstrap.js +29 -5
  189. package/dist/docker/docker-bootstrap.js.map +1 -1
  190. package/dist/glmt/glmt-proxy.d.ts +0 -4
  191. package/dist/glmt/glmt-proxy.d.ts.map +1 -1
  192. package/dist/glmt/glmt-proxy.js +6 -21
  193. package/dist/glmt/glmt-proxy.js.map +1 -1
  194. package/dist/management/shared-manager/plugin-layout-internals.d.ts.map +1 -1
  195. package/dist/management/shared-manager/plugin-layout-internals.js +8 -0
  196. package/dist/management/shared-manager/plugin-layout-internals.js.map +1 -1
  197. package/dist/management/shared-manager/plugin-metadata-normalizer.d.ts.map +1 -1
  198. package/dist/management/shared-manager/plugin-metadata-normalizer.js +72 -21
  199. package/dist/management/shared-manager/plugin-metadata-normalizer.js.map +1 -1
  200. package/dist/management/shared-manager/shared-dir-linker.d.ts.map +1 -1
  201. package/dist/management/shared-manager/shared-dir-linker.js +5 -0
  202. package/dist/management/shared-manager/shared-dir-linker.js.map +1 -1
  203. package/dist/management/shared-manager/types.d.ts.map +1 -1
  204. package/dist/management/shared-manager/types.js +4 -1
  205. package/dist/management/shared-manager/types.js.map +1 -1
  206. package/dist/proxy/server/http-helpers.d.ts +6 -1
  207. package/dist/proxy/server/http-helpers.d.ts.map +1 -1
  208. package/dist/proxy/server/http-helpers.js +19 -77
  209. package/dist/proxy/server/http-helpers.js.map +1 -1
  210. package/dist/proxy/server/messages-route.d.ts.map +1 -1
  211. package/dist/proxy/server/messages-route.js +11 -5
  212. package/dist/proxy/server/messages-route.js.map +1 -1
  213. package/dist/shared/claude-pool-policy.d.ts +20 -0
  214. package/dist/shared/claude-pool-policy.d.ts.map +1 -0
  215. package/dist/shared/claude-pool-policy.js +3 -0
  216. package/dist/shared/claude-pool-policy.js.map +1 -0
  217. package/dist/shared/provider-preset-catalog.d.ts +1 -1
  218. package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
  219. package/dist/shared/provider-preset-catalog.js +80 -7
  220. package/dist/shared/provider-preset-catalog.js.map +1 -1
  221. package/dist/targets/droid-provider.d.ts.map +1 -1
  222. package/dist/targets/droid-provider.js +10 -8
  223. package/dist/targets/droid-provider.js.map +1 -1
  224. package/dist/ui/assets/{Trans-BFurXtDk.js → Trans-Dlb02vqu.js} +1 -1
  225. package/dist/ui/assets/{accounts-B_ik6YOD.js → accounts-NMmfEBnl.js} +1 -1
  226. package/dist/ui/assets/{alert-dialog-C6fhMbXC.js → alert-dialog-CLeTz0Di.js} +1 -1
  227. package/dist/ui/assets/{api-CxCFoBC0.js → api-DxGxeHbw.js} +2 -2
  228. package/dist/ui/assets/{auth-section-CtmO77JA.js → auth-section-AI2YNrUB.js} +1 -1
  229. package/dist/ui/assets/{backups-section-BYKnAWUa.js → backups-section-CxyuzCda.js} +1 -1
  230. package/dist/ui/assets/{channels-3uR41jWp.js → channels-SBcIEMn0.js} +1 -1
  231. package/dist/ui/assets/{checkbox-fCmjUiDn.js → checkbox-C1D6YcRy.js} +1 -1
  232. package/dist/ui/assets/{claude-extension-BplTVbCF.js → claude-extension-C3Ik79tl.js} +1 -1
  233. package/dist/ui/assets/cliproxy-BySCuRxu.js +4 -0
  234. package/dist/ui/assets/{cliproxy-ai-providers-D4OTiwA3.js → cliproxy-ai-providers-B8LPZhj3.js} +6 -6
  235. package/dist/ui/assets/{cliproxy-control-panel-DCyhsdm1.js → cliproxy-control-panel-Dsv31SI_.js} +1 -1
  236. package/dist/ui/assets/{codex-BGF20GsK.js → codex-CWZlSLEn.js} +5 -5
  237. package/dist/ui/assets/{confirm-dialog-BtMwDW6c.js → confirm-dialog-tpU9d5TR.js} +1 -1
  238. package/dist/ui/assets/{copilot-r1b0KLFf.js → copilot-C5uwBK-k.js} +1 -1
  239. package/dist/ui/assets/{cursor-BhVKTiz1.js → cursor-BwoYXKM4.js} +1 -1
  240. package/dist/ui/assets/{droid-lol9hAdK.js → droid-Cv6mZctn.js} +2 -2
  241. package/dist/ui/assets/{globalenv-section-B0gg-kuR.js → globalenv-section-CKc1Udhj.js} +1 -1
  242. package/dist/ui/assets/{health-Bu6RFYCP.js → health-Ctfcm6p0.js} +1 -1
  243. package/dist/ui/assets/{index-BbPI5sU_.js → index--TAxR0Iy.js} +1 -1
  244. package/dist/ui/assets/index-0hASk2BU.css +1 -0
  245. package/dist/ui/assets/{index-Pn_n_HFQ.js → index-C2ABCKof.js} +1 -1
  246. package/dist/ui/assets/{index-Djse8iLV.js → index-C5YaR--I.js} +1 -1
  247. package/dist/ui/assets/{index-BmjgsjcO.js → index-CBKaNavQ.js} +1 -1
  248. package/dist/ui/assets/{index-ptYEAEzZ.js → index-DnnSa3K6.js} +1 -1
  249. package/dist/ui/assets/{index-awbhDVzL.js → index-G9JzuSyw.js} +1 -1
  250. package/dist/ui/assets/index-gX7Mi5Ws.js +56 -0
  251. package/dist/ui/assets/{logs-B5Sbi4IG.js → logs-D6LiKkzU.js} +1 -1
  252. package/dist/ui/assets/{masked-input-BnrL_TdT.js → masked-input-CmtENW5h.js} +1 -1
  253. package/dist/ui/assets/proxy-status-widget-DqVBhfEP.js +1 -0
  254. package/dist/ui/assets/{raw-json-settings-editor-panel-PStRjNEl.js → raw-json-settings-editor-panel-C9-_RC57.js} +1 -1
  255. package/dist/ui/assets/{searchable-select-BDpwwNsP.js → searchable-select-BeEQJh2E.js} +1 -1
  256. package/dist/ui/assets/{separator-CJCyWDRS.js → separator-CB-e5SCL.js} +1 -1
  257. package/dist/ui/assets/{shared-6BrToCad.js → shared-GU9wziRt.js} +3 -3
  258. package/dist/ui/assets/{table-CnZev3Iu.js → table-BFrniqUJ.js} +1 -1
  259. package/dist/ui/assets/{updates-BiS0o8aM.js → updates-DYhBCREi.js} +1 -1
  260. package/dist/ui/assets/{use-accounts-89FOqhFc.js → use-accounts-xaNW9KeG.js} +1 -1
  261. package/dist/ui/index.html +2 -2
  262. package/dist/utils/delegation-validator.d.ts.map +1 -1
  263. package/dist/utils/delegation-validator.js +29 -8
  264. package/dist/utils/delegation-validator.js.map +1 -1
  265. package/dist/utils/openai-compat-launch-settings.d.ts +11 -1
  266. package/dist/utils/openai-compat-launch-settings.d.ts.map +1 -1
  267. package/dist/utils/openai-compat-launch-settings.js +55 -5
  268. package/dist/utils/openai-compat-launch-settings.js.map +1 -1
  269. package/dist/utils/request-body.d.ts +40 -0
  270. package/dist/utils/request-body.d.ts.map +1 -0
  271. package/dist/utils/request-body.js +142 -0
  272. package/dist/utils/request-body.js.map +1 -0
  273. package/dist/web-server/index.d.ts +1 -1
  274. package/dist/web-server/index.d.ts.map +1 -1
  275. package/dist/web-server/index.js +4 -1
  276. package/dist/web-server/index.js.map +1 -1
  277. package/dist/web-server/jsonl-parser.d.ts +2 -0
  278. package/dist/web-server/jsonl-parser.d.ts.map +1 -1
  279. package/dist/web-server/jsonl-parser.js +54 -4
  280. package/dist/web-server/jsonl-parser.js.map +1 -1
  281. package/dist/web-server/model-pricing.d.ts.map +1 -1
  282. package/dist/web-server/model-pricing.js +99 -1
  283. package/dist/web-server/model-pricing.js.map +1 -1
  284. package/dist/web-server/routes/bar-pool-account-quota-adapter.d.ts.map +1 -1
  285. package/dist/web-server/routes/bar-pool-account-quota-adapter.js +1 -3
  286. package/dist/web-server/routes/bar-pool-account-quota-adapter.js.map +1 -1
  287. package/dist/web-server/routes/cliproxy-routing-routes.d.ts.map +1 -1
  288. package/dist/web-server/routes/cliproxy-routing-routes.js +16 -0
  289. package/dist/web-server/routes/cliproxy-routing-routes.js.map +1 -1
  290. package/dist/web-server/shutdown.d.ts +2 -3
  291. package/dist/web-server/shutdown.d.ts.map +1 -1
  292. package/dist/web-server/shutdown.js +16 -8
  293. package/dist/web-server/shutdown.js.map +1 -1
  294. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts +6 -0
  295. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts.map +1 -1
  296. package/dist/web-server/usage/cliproxy-usage-transformer.js +57 -1
  297. package/dist/web-server/usage/cliproxy-usage-transformer.js.map +1 -1
  298. package/dist/web-server/usage/codex-native-usage-collector.d.ts.map +1 -1
  299. package/dist/web-server/usage/codex-native-usage-collector.js +7 -4
  300. package/dist/web-server/usage/codex-native-usage-collector.js.map +1 -1
  301. package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -1
  302. package/dist/web-server/usage/native-quota-collector.js +35 -67
  303. package/dist/web-server/usage/native-quota-collector.js.map +1 -1
  304. package/package.json +3 -1
  305. package/scripts/run-test-bucket.js +4 -0
  306. package/dist/ui/assets/cliproxy-BdW2ctsn.js +0 -4
  307. package/dist/ui/assets/index-DzFlVVV3.css +0 -1
  308. package/dist/ui/assets/index-pHOoeHgY.js +0 -56
  309. package/dist/ui/assets/proxy-status-widget-ColaQQXh.js +0 -1
@@ -5,8 +5,8 @@
5
5
  * Parses Anthropic policy-limits or OAuth-usage payloads into normalized windows and core usage summary.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.buildClaudeCoreUsageSummary = exports.pickMostRestrictiveClaudeWeeklyWindow = exports.isClaudeWeeklyRateLimitType = exports.buildClaudeQuotaWindows = void 0;
9
- const percentage_1 = require("../../utils/percentage");
8
+ exports.buildClaudeCoreUsageSummary = exports.pickMostRestrictiveClaudeWeeklyWindow = exports.isClaudeWeeklyRateLimitType = exports.buildClaudeGeneralWindowPresence = exports.buildClaudeQuotaWindows = exports.getClaudeWindowMetadata = void 0;
9
+ const quota_label_sanitizer_1 = require("./quota-label-sanitizer");
10
10
  // Distinguishes epoch milliseconds from seconds (1e12 ~= 2001-09-09T01:46:40Z).
11
11
  const EPOCH_MS_THRESHOLD = 1e12;
12
12
  function asString(value) {
@@ -26,7 +26,7 @@ function asBoolean(value) {
26
26
  function asNumber(value) {
27
27
  if (typeof value === 'number' && isFinite(value))
28
28
  return value;
29
- if (typeof value === 'string') {
29
+ if (typeof value === 'string' && value.trim()) {
30
30
  const parsed = Number(value);
31
31
  return isFinite(parsed) ? parsed : null;
32
32
  }
@@ -80,45 +80,43 @@ function getClaudeWindowLabel(rateLimitType) {
80
80
  .join(' ');
81
81
  }
82
82
  }
83
- function clampUnit(value) {
84
- return Math.max(0, Math.min(1, value));
85
- }
86
83
  function normalizeUtilization(raw, unit) {
87
- const utilizationRaw = asNumber(raw['utilization']);
88
- const usedPercentRaw = asNumber(raw['usedPercent'] ?? raw['used_percent']);
89
- const remainingPercentRaw = asNumber(raw['remainingPercent'] ?? raw['remaining_percent']);
90
- if (utilizationRaw !== null) {
91
- const usedPercent = unit === 'ratio'
92
- ? (0, percentage_1.clampPercent)(clampUnit(utilizationRaw) * 100)
93
- : (0, percentage_1.clampPercent)(utilizationRaw);
94
- return {
95
- utilization: usedPercent / 100,
96
- usedPercent,
97
- remainingPercent: (0, percentage_1.clampPercent)(100 - usedPercent),
98
- };
99
- }
100
- if (usedPercentRaw !== null) {
101
- const usedPercent = (0, percentage_1.clampPercent)(usedPercentRaw);
102
- return {
103
- utilization: usedPercent / 100,
104
- usedPercent,
105
- remainingPercent: (0, percentage_1.clampPercent)(100 - usedPercent),
106
- };
107
- }
108
- if (remainingPercentRaw !== null) {
109
- const remainingPercent = (0, percentage_1.clampPercent)(remainingPercentRaw);
110
- const usedPercent = (0, percentage_1.clampPercent)(100 - remainingPercent);
111
- return {
112
- utilization: usedPercent / 100,
113
- usedPercent,
114
- remainingPercent,
115
- };
84
+ const utilization = asNumber(raw['utilization']);
85
+ const used = asNumber(raw['usedPercent'] ?? raw['used_percent'] ?? raw['used_percentage']);
86
+ const remaining = asNumber(raw['remainingPercent'] ?? raw['remaining_percent']);
87
+ const usedPercent = utilization !== null
88
+ ? unit === 'ratio'
89
+ ? utilization * 100
90
+ : utilization
91
+ : (used ?? (remaining !== null ? 100 - remaining : null));
92
+ if (usedPercent === null || usedPercent < 0 || usedPercent > 100)
93
+ return null;
94
+ return { utilization: usedPercent / 100, usedPercent, remainingPercent: 100 - usedPercent };
95
+ }
96
+ /** Known legacy IDs are the only safe fallback for metadata-free cached windows. */
97
+ function getClaudeWindowMetadata(window) {
98
+ if (window.scope !== undefined)
99
+ return { scope: window.scope, cadence: window.cadence, modelLabel: window.modelLabel };
100
+ switch (window.rateLimitType) {
101
+ case 'five_hour':
102
+ return { scope: 'account', cadence: '5h' };
103
+ case 'seven_day':
104
+ return { scope: 'account', cadence: 'weekly' };
105
+ case 'seven_day_opus':
106
+ return { scope: 'model', cadence: 'weekly', modelLabel: 'Opus' };
107
+ case 'seven_day_sonnet':
108
+ return { scope: 'model', cadence: 'weekly', modelLabel: 'Sonnet' };
109
+ case 'fable_weekly':
110
+ case 'fable_seven_day':
111
+ case 'seven_day_fable':
112
+ return { scope: 'model', cadence: 'weekly', modelLabel: 'Fable' };
113
+ default:
114
+ return { scope: 'unknown' };
116
115
  }
117
- return {
118
- utilization: null,
119
- usedPercent: 0,
120
- remainingPercent: 100,
121
- };
116
+ }
117
+ exports.getClaudeWindowMetadata = getClaudeWindowMetadata;
118
+ function normalizeModelLabel(label) {
119
+ return label.trim().replace(/\s+/g, ' ').toLowerCase();
122
120
  }
123
121
  function normalizeRateLimitType(value, fallbackKey) {
124
122
  const direct = asString(value);
@@ -126,16 +124,28 @@ function normalizeRateLimitType(value, fallbackKey) {
126
124
  return direct;
127
125
  if (fallbackKey)
128
126
  return fallbackKey;
129
- return 'unknown';
127
+ return '';
130
128
  }
131
129
  function toObject(value) {
132
130
  if (typeof value !== 'object' || value === null || Array.isArray(value))
133
131
  return null;
134
132
  return value;
135
133
  }
134
+ /** Credit grants can expose utilization/reset fields without being time quotas. */
135
+ function isMonetaryCreditBucket(raw) {
136
+ return ['limit_dollars', 'used_dollars', 'remaining_dollars'].some((key) => Object.prototype.hasOwnProperty.call(raw, key));
137
+ }
138
+ function isUnscoped(value) {
139
+ if (value === null || value === undefined)
140
+ return true;
141
+ const scope = toObject(value);
142
+ return (scope !== null && Object.values(scope).every((entry) => entry === null || entry === undefined));
143
+ }
136
144
  function normalizeRestriction(raw, fallbackKey, unit) {
145
+ if (isMonetaryCreditBucket(raw))
146
+ return null;
137
147
  const rateLimitType = normalizeRateLimitType(raw['rateLimitType'] ?? raw['rate_limit_type'] ?? raw['claim'] ?? raw['claimAbbrev'], fallbackKey);
138
- if (!rateLimitType || rateLimitType === 'unknown')
148
+ if (!rateLimitType)
139
149
  return null;
140
150
  const status = asString(raw['status']) || 'unknown';
141
151
  const resetAt = normalizeTimestamp(raw['resetsAt'] ?? raw['resets_at'] ?? raw['resetAt'] ?? raw['reset_at']) ||
@@ -144,14 +154,18 @@ function normalizeRestriction(raw, fallbackKey, unit) {
144
154
  raw['overage_resets_at'] ??
145
155
  raw['overageResetAt'] ??
146
156
  raw['overage_reset_at']) || null;
147
- const { utilization, usedPercent, remainingPercent } = normalizeUtilization(raw, unit);
157
+ const metrics = normalizeUtilization(raw, unit);
158
+ if (!metrics)
159
+ return null;
160
+ const metadata = getClaudeWindowMetadata({ rateLimitType });
148
161
  return {
149
162
  rateLimitType,
150
- label: getClaudeWindowLabel(rateLimitType),
163
+ label: metadata.modelLabel
164
+ ? metadata.modelLabel + ' weekly limit'
165
+ : getClaudeWindowLabel(rateLimitType),
166
+ ...metadata,
151
167
  status,
152
- utilization,
153
- usedPercent,
154
- remainingPercent,
168
+ ...metrics,
155
169
  resetAt,
156
170
  surpassedThreshold: asBoolean(raw['surpassedThreshold'] ?? raw['surpassed_threshold']),
157
171
  severity: asString(raw['severity']) || undefined,
@@ -167,95 +181,208 @@ function normalizeRestriction(raw, fallbackKey, unit) {
167
181
  * Supports both policy-limits `restrictions` payloads and OAuth usage payloads
168
182
  * keyed by window name (`five_hour`, `seven_day`, `seven_day_sonnet`, ...).
169
183
  */
170
- function isClaudeOAuthUsageWindowCandidate(key, raw) {
171
- if (key === 'extra_usage')
172
- return false;
173
- if (asNumber(raw['utilization']) === null)
174
- return false;
175
- const resetAt = raw['resetsAt'] ?? raw['resets_at'] ?? raw['resetAt'] ?? raw['reset_at'] ?? null;
176
- return resetAt !== null && resetAt !== undefined;
177
- }
178
184
  function buildClaudeQuotaWindows(payload) {
179
- const rawRestrictions = payload['restrictions'];
180
185
  const windows = [];
181
- if (Array.isArray(rawRestrictions)) {
182
- for (const item of rawRestrictions) {
186
+ // Parse modern rows first so valid scoped entries win over legacy aliases.
187
+ if (Array.isArray(payload['limits'])) {
188
+ for (const item of payload['limits']) {
183
189
  const raw = toObject(item);
184
190
  if (!raw)
185
191
  continue;
186
- // policy-limits restrictions[] returns utilization as a 0..1 ratio.
187
- const window = normalizeRestriction(raw, undefined, 'ratio');
188
- if (window)
192
+ const model = toObject(toObject(raw['scope'])?.['model']);
193
+ const modelLabel = (0, quota_label_sanitizer_1.sanitizeQuotaLabelOrNull)(model?.['display_name']);
194
+ const kind = asString(raw['kind']);
195
+ if (!kind)
196
+ continue;
197
+ const percent = asNumber(raw['percent']);
198
+ if (percent === null)
199
+ continue;
200
+ const generalKind = isUnscoped(raw['scope']) && kind === 'session'
201
+ ? 'five_hour'
202
+ : isUnscoped(raw['scope']) && kind === 'weekly_all'
203
+ ? 'seven_day'
204
+ : null;
205
+ const window = normalizeRestriction({ ...raw, rateLimitType: generalKind ?? kind, utilization: percent }, undefined, 'percent');
206
+ if (!window)
207
+ continue;
208
+ if (generalKind) {
189
209
  windows.push(window);
210
+ continue;
211
+ }
212
+ if (kind !== 'weekly_scoped' || !modelLabel) {
213
+ windows.push({ ...window, scope: 'unknown' });
214
+ continue;
215
+ }
216
+ windows.push({
217
+ ...window,
218
+ rateLimitType: 'weekly_scoped:' + normalizeModelLabel(modelLabel),
219
+ scope: 'model',
220
+ cadence: 'weekly',
221
+ modelLabel: modelLabel.replace(/\s+/g, ' '),
222
+ label: modelLabel.replace(/\s+/g, ' ') + ' weekly limit',
223
+ });
190
224
  }
191
225
  }
192
- else if (toObject(rawRestrictions)) {
193
- for (const [key, value] of Object.entries(rawRestrictions)) {
194
- const raw = toObject(value);
195
- if (!raw)
196
- continue;
197
- // policy-limits restrictions{} returns utilization as a 0..1 ratio.
198
- const window = normalizeRestriction(raw, key, 'ratio');
226
+ const restrictions = payload['restrictions'];
227
+ if (Array.isArray(restrictions)) {
228
+ for (const item of restrictions) {
229
+ const raw = toObject(item);
230
+ const window = raw ? normalizeRestriction(raw, undefined, 'ratio') : null;
199
231
  if (window)
200
232
  windows.push(window);
201
233
  }
202
234
  }
203
- else if (toObject(payload)) {
204
- for (const [key, value] of Object.entries(payload)) {
235
+ else if (toObject(restrictions)) {
236
+ for (const [key, value] of Object.entries(restrictions)) {
205
237
  const raw = toObject(value);
206
- if (!raw)
207
- continue;
208
- if (!isClaudeOAuthUsageWindowCandidate(key, raw))
209
- continue;
210
- // OAuth /oauth/usage payloads return utilization as percent 0..100.
211
- const window = normalizeRestriction(raw, key, 'percent');
238
+ const window = raw ? normalizeRestriction(raw, key, 'ratio') : null;
212
239
  if (window)
213
240
  windows.push(window);
214
241
  }
215
- // Some responses may contain a single restriction object directly,
216
- // matching the policy-limits ratio shape.
217
- if (windows.length === 0) {
218
- const direct = normalizeRestriction(payload, undefined, 'ratio');
219
- if (direct)
220
- windows.push(direct);
221
- }
242
+ }
243
+ for (const [key, value] of Object.entries(payload)) {
244
+ if (key === 'extra_usage' || key === 'restrictions' || key === 'scope')
245
+ continue;
246
+ const raw = toObject(value);
247
+ if (!raw)
248
+ continue;
249
+ const window = normalizeRestriction(raw, key, 'percent');
250
+ if (window)
251
+ windows.push(window);
252
+ }
253
+ if (windows.length === 0) {
254
+ const direct = normalizeRestriction(payload, undefined, 'ratio');
255
+ if (direct)
256
+ windows.push(direct);
222
257
  }
223
258
  const seen = new Set();
224
- const unique = [];
225
- for (const window of windows) {
226
- const key = `${window.rateLimitType}:${window.resetAt ?? ''}:${window.status}`;
259
+ return windows
260
+ .filter((window) => {
261
+ const key = [
262
+ window.scope,
263
+ window.cadence,
264
+ window.modelLabel
265
+ ? normalizeModelLabel(window.modelLabel)
266
+ : window.scope === 'account'
267
+ ? ''
268
+ : window.rateLimitType,
269
+ ].join(':');
227
270
  if (seen.has(key))
228
- continue;
271
+ return false;
229
272
  seen.add(key);
230
- unique.push(window);
231
- }
232
- return unique.sort((a, b) => a.rateLimitType.localeCompare(b.rateLimitType));
273
+ return true;
274
+ })
275
+ .sort((a, b) => a.rateLimitType.localeCompare(b.rateLimitType));
233
276
  }
234
277
  exports.buildClaudeQuotaWindows = buildClaudeQuotaWindows;
235
- function toEpochMs(iso) {
236
- if (!iso)
237
- return null;
238
- const value = new Date(iso).getTime();
239
- return isNaN(value) ? null : value;
240
- }
241
- function pickMostRestrictiveWeekly(windows) {
242
- if (windows.length === 0)
243
- return null;
244
- return [...windows].sort((a, b) => {
245
- if (a.remainingPercent !== b.remainingPercent) {
246
- return a.remainingPercent - b.remainingPercent;
278
+ /**
279
+ * Preserve general-window presence before numeric normalization can omit invalid rows.
280
+ * Lists are complete snapshots only when their entry structure is valid. Legacy
281
+ * keyed OAuth snapshots must explicitly contain both general keys to prove a
282
+ * missing counterpart absent; a lone key may instead be a partial response.
283
+ */
284
+ function buildClaudeGeneralWindowPresence(payload) {
285
+ const observations = {
286
+ fiveHour: { present: false, invalid: false, absent: false },
287
+ weekly: { present: false, invalid: false, absent: false },
288
+ };
289
+ let complete = false;
290
+ const keyForType = (rateLimitType) => rateLimitType === 'five_hour' ? 'fiveHour' : rateLimitType === 'seven_day' ? 'weekly' : null;
291
+ const hasOwn = (key) => Object.prototype.hasOwnProperty.call(payload, key);
292
+ const observe = (value, fallbackKey, unit) => {
293
+ const fallbackGeneralKey = fallbackKey ? keyForType(fallbackKey) : null;
294
+ if (value === null && fallbackGeneralKey) {
295
+ observations[fallbackGeneralKey].absent = true;
296
+ return true;
297
+ }
298
+ const raw = toObject(value);
299
+ if (!raw) {
300
+ if (fallbackGeneralKey)
301
+ observations[fallbackGeneralKey].invalid = true;
302
+ return false;
303
+ }
304
+ const rateLimitType = normalizeRateLimitType(raw['rateLimitType'] ?? raw['rate_limit_type'] ?? raw['claim'] ?? raw['claimAbbrev'], fallbackKey);
305
+ if (!rateLimitType)
306
+ return false;
307
+ const key = keyForType(rateLimitType);
308
+ if (fallbackGeneralKey && fallbackGeneralKey !== key) {
309
+ observations[fallbackGeneralKey].invalid = true;
310
+ }
311
+ if (!key)
312
+ return true;
313
+ // Legacy identifiers with additional constraints cannot prove a general quota.
314
+ const window = isUnscoped(raw['scope']) ? normalizeRestriction(raw, fallbackKey, unit) : null;
315
+ if (window)
316
+ observations[key].present = true;
317
+ else
318
+ observations[key].invalid = true;
319
+ return true;
320
+ };
321
+ const limits = payload['limits'];
322
+ if (Array.isArray(limits)) {
323
+ let validStructure = true;
324
+ for (const item of limits) {
325
+ const raw = toObject(item);
326
+ const kind = raw ? asString(raw['kind']) : null;
327
+ if (!raw || !kind) {
328
+ validStructure = false;
329
+ continue;
330
+ }
331
+ const key = kind === 'session' ? 'fiveHour' : kind === 'weekly_all' ? 'weekly' : null;
332
+ const scope = raw['scope'];
333
+ if (scope !== undefined && scope !== null && !toObject(scope)) {
334
+ validStructure = false;
335
+ if (key)
336
+ observations[key].invalid = true;
337
+ continue;
338
+ }
339
+ if (!key || !isUnscoped(raw['scope']))
340
+ continue;
341
+ const percent = asNumber(raw['percent']);
342
+ const rateLimitType = key === 'fiveHour' ? 'five_hour' : 'seven_day';
343
+ if (percent === null) {
344
+ observations[key].invalid = true;
345
+ continue;
346
+ }
347
+ observe({ ...raw, rateLimitType, utilization: percent }, undefined, 'percent');
247
348
  }
248
- const aReset = toEpochMs(a.resetAt);
249
- const bReset = toEpochMs(b.resetAt);
250
- if (aReset === null && bReset === null)
251
- return 0;
252
- if (aReset === null)
253
- return 1;
254
- if (bReset === null)
255
- return -1;
256
- return aReset - bReset;
257
- })[0];
349
+ complete || (complete = validStructure);
350
+ }
351
+ const restrictions = payload['restrictions'];
352
+ if (Array.isArray(restrictions)) {
353
+ let validStructure = true;
354
+ for (const item of restrictions)
355
+ validStructure = observe(item, undefined, 'ratio') && validStructure;
356
+ complete || (complete = validStructure);
357
+ }
358
+ else {
359
+ const restrictionMap = toObject(restrictions);
360
+ if (restrictionMap) {
361
+ let validStructure = true;
362
+ for (const [key, value] of Object.entries(restrictionMap)) {
363
+ validStructure = observe(value, key, 'ratio') && validStructure;
364
+ }
365
+ complete || (complete = validStructure);
366
+ }
367
+ }
368
+ for (const key of ['five_hour', 'seven_day']) {
369
+ if (hasOwn(key))
370
+ observe(payload[key], key, 'percent');
371
+ }
372
+ complete || (complete = hasOwn('five_hour') && hasOwn('seven_day'));
373
+ const presence = (key) => {
374
+ const observation = observations[key];
375
+ if (observation.present)
376
+ return 'present';
377
+ if (observation.invalid)
378
+ return 'unknown';
379
+ if (observation.absent || complete)
380
+ return 'absent';
381
+ return 'unknown';
382
+ };
383
+ return { fiveHour: presence('fiveHour'), weekly: presence('weekly') };
258
384
  }
385
+ exports.buildClaudeGeneralWindowPresence = buildClaudeGeneralWindowPresence;
259
386
  function mapCoreWindow(window) {
260
387
  if (!window)
261
388
  return null;
@@ -267,55 +394,21 @@ function mapCoreWindow(window) {
267
394
  status: window.status,
268
395
  };
269
396
  }
270
- const WEEKLY_RATE_LIMIT_TYPES = new Set([
271
- 'seven_day',
272
- 'seven_day_opus',
273
- 'seven_day_sonnet',
274
- 'seven_day_oauth_apps',
275
- 'seven_day_cowork',
276
- ]);
397
+ /** Account-wide weekly quota only; model and unknown windows never bind account health. */
277
398
  function isClaudeWeeklyRateLimitType(rateLimitType) {
278
- return WEEKLY_RATE_LIMIT_TYPES.has(rateLimitType);
399
+ return rateLimitType === 'seven_day';
279
400
  }
280
401
  exports.isClaudeWeeklyRateLimitType = isClaudeWeeklyRateLimitType;
281
402
  function pickMostRestrictiveClaudeWeeklyWindow(windows) {
282
- const weeklyCandidates = windows.filter((window) => isClaudeWeeklyRateLimitType(window.rateLimitType));
283
- return pickMostRestrictiveWeekly(weeklyCandidates);
403
+ return (windows.find((window) => window.rateLimitType === 'seven_day' && getClaudeWindowMetadata(window).scope === 'account') ?? null);
284
404
  }
285
405
  exports.pickMostRestrictiveClaudeWeeklyWindow = pickMostRestrictiveClaudeWeeklyWindow;
286
- /**
287
- * Build explicit 5h + weekly usage summary from Claude policy windows.
288
- */
406
+ /** Rebuild from actual windows, never trust a previously collapsed core summary. */
289
407
  function buildClaudeCoreUsageSummary(windows) {
290
- if (!windows || windows.length === 0) {
291
- return { fiveHour: null, weekly: null };
292
- }
293
- const fiveHourWindow = windows.find((window) => window.rateLimitType === 'five_hour') || null;
294
- const weeklyWindow = pickMostRestrictiveClaudeWeeklyWindow(windows);
295
- if (fiveHourWindow && weeklyWindow) {
296
- return {
297
- fiveHour: mapCoreWindow(fiveHourWindow),
298
- weekly: mapCoreWindow(weeklyWindow),
299
- };
300
- }
301
- // Fallback: infer shortest/longest reset windows from non-overage limits.
302
- const nonOverage = windows.filter((window) => window.rateLimitType !== 'overage');
303
- const withReset = nonOverage
304
- .map((window) => ({
305
- window,
306
- resetMs: toEpochMs(window.resetAt),
307
- }))
308
- .filter((entry) => entry.resetMs !== null)
309
- .sort((a, b) => a.resetMs - b.resetMs);
310
- const inferredWeekly = weeklyWindow ||
311
- [...withReset].reverse().find((entry) => entry.window !== fiveHourWindow)?.window ||
312
- pickMostRestrictiveWeekly(nonOverage.filter((window) => window !== fiveHourWindow));
313
- const inferredFiveHour = fiveHourWindow ||
314
- withReset.find((entry) => entry.window !== inferredWeekly)?.window ||
315
- pickMostRestrictiveWeekly(nonOverage.filter((window) => window !== inferredWeekly));
316
408
  return {
317
- fiveHour: mapCoreWindow(inferredFiveHour),
318
- weekly: mapCoreWindow(inferredWeekly),
409
+ fiveHour: mapCoreWindow(windows.find((window) => window.rateLimitType === 'five_hour' &&
410
+ getClaudeWindowMetadata(window).scope === 'account') ?? null),
411
+ weekly: mapCoreWindow(pickMostRestrictiveClaudeWeeklyWindow(windows)),
319
412
  };
320
413
  }
321
414
  exports.buildClaudeCoreUsageSummary = buildClaudeCoreUsageSummary;
@@ -1 +1 @@
1
- {"version":3,"file":"quota-fetcher-claude-normalizer.js","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-normalizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quota-fetcher-claude-normalizer.js","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-normalizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Shared probe state for CLIProxy-managed Claude accounts.
3
+ *
4
+ * Anthropic's /api/oauth/usage endpoint rate-limits hard (429, usually with
5
+ * `retry-after: 0`). Every CCS process probes it on its own: the dashboard
6
+ * server, and the runtime quota monitor in each running `ccs claude` session.
7
+ * In-memory caches can't coordinate those, so this state lives on disk under
8
+ * ~/.ccs/cache/claude-quota/<account>.json and gives all of them:
9
+ *
10
+ * - a short shared TTL, so N processes polling one account make one call
11
+ * - a 429 cooldown with exponential backoff, honored by every process
12
+ * - the last successful result, served (marked stale) while probes fail
13
+ */
14
+ import type { ClaudeQuotaResult } from './quota-types';
15
+ /** Reuse another process's successful result for this long instead of probing. */
16
+ export declare const CLAUDE_PROBE_SHARED_TTL_MS = 60000;
17
+ /** First 429 cooldown; doubles per consecutive 429 up to the max. */
18
+ export declare const CLAUDE_PROBE_COOLDOWN_BASE_MS: number;
19
+ export declare const CLAUDE_PROBE_COOLDOWN_MAX_MS: number;
20
+ /** Never serve a last-good result older than this, even if no window reset has passed. */
21
+ export declare const CLAUDE_PROBE_STALE_MAX_AGE_MS: number;
22
+ export declare const CLAUDE_QUOTA_NORMALIZATION_VERSION = 4;
23
+ export interface ClaudeProbeState {
24
+ version: number;
25
+ /** Independent of the storage schema; old normalized numbers must not be reused. */
26
+ normalizationVersion?: number;
27
+ /** Last successful usage result (success: true). */
28
+ lastGood: ClaudeQuotaResult | null;
29
+ /** Consecutive 429 responses since the last success. */
30
+ consecutive429: number;
31
+ /** Epoch ms; no process probes upstream before this. */
32
+ cooldownUntil: number;
33
+ }
34
+ export declare function readClaudeProbeState(accountId: string): ClaudeProbeState;
35
+ /** Atomic write (tmp + rename) so concurrent readers never see a partial file. */
36
+ export declare function writeClaudeProbeState(accountId: string, state: ClaudeProbeState): void;
37
+ /** Parse `retry-after:<seconds|HTTP-date>` from errorDetail into ms. */
38
+ export declare function parseRetryAfterMs(detail: string | undefined, now: number): number | null;
39
+ /** Cooldown after the Nth consecutive 429 (1-based); Retry-After wins when longer. */
40
+ export declare function computeClaudeProbeCooldownMs(consecutive429: number, retryAfterMs: number | null): number;
41
+ /**
42
+ * Build the stale result served while probes fail. Windows whose reset time has
43
+ * passed are dropped (their numbers are known to be wrong); returns null when
44
+ * the result is too old or no window survives.
45
+ */
46
+ export declare function buildStaleClaudeResult(lastGood: ClaudeQuotaResult, now: number): ClaudeQuotaResult | null;
47
+ //# sourceMappingURL=quota-fetcher-claude-probe-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-fetcher-claude-probe-state.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-probe-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,QAAa,CAAC;AACxD,eAAO,MAAM,4BAA4B,QAAc,CAAC;AAGxD,0FAA0F;AAC1F,eAAO,MAAM,6BAA6B,QAAkB,CAAC;AAG7D,eAAO,MAAM,kCAAkC,IAAI,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;CACvB;AAgBD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAuBxE;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAmBtF;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQxF;AAED,sFAAsF;AACtF,wBAAgB,4BAA4B,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,UAO/F;AAQD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE,MAAM,GACV,iBAAiB,GAAG,IAAI,CAU1B"}