@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
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ /**
3
+ * Shared probe state for CLIProxy-managed Claude accounts.
4
+ *
5
+ * Anthropic's /api/oauth/usage endpoint rate-limits hard (429, usually with
6
+ * `retry-after: 0`). Every CCS process probes it on its own: the dashboard
7
+ * server, and the runtime quota monitor in each running `ccs claude` session.
8
+ * In-memory caches can't coordinate those, so this state lives on disk under
9
+ * ~/.ccs/cache/claude-quota/<account>.json and gives all of them:
10
+ *
11
+ * - a short shared TTL, so N processes polling one account make one call
12
+ * - a 429 cooldown with exponential backoff, honored by every process
13
+ * - the last successful result, served (marked stale) while probes fail
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.buildStaleClaudeResult = exports.computeClaudeProbeCooldownMs = exports.parseRetryAfterMs = exports.writeClaudeProbeState = exports.readClaudeProbeState = exports.CLAUDE_QUOTA_NORMALIZATION_VERSION = exports.CLAUDE_PROBE_STALE_MAX_AGE_MS = exports.CLAUDE_PROBE_COOLDOWN_MAX_MS = exports.CLAUDE_PROBE_COOLDOWN_BASE_MS = exports.CLAUDE_PROBE_SHARED_TTL_MS = void 0;
40
+ const fs = __importStar(require("node:fs"));
41
+ const path = __importStar(require("node:path"));
42
+ const config_manager_1 = require("../../utils/config-manager");
43
+ const auth_utils_1 = require("../auth/auth-utils");
44
+ const quota_fetcher_claude_normalizer_1 = require("./quota-fetcher-claude-normalizer");
45
+ /** Reuse another process's successful result for this long instead of probing. */
46
+ exports.CLAUDE_PROBE_SHARED_TTL_MS = 60000;
47
+ /** First 429 cooldown; doubles per consecutive 429 up to the max. */
48
+ exports.CLAUDE_PROBE_COOLDOWN_BASE_MS = 2 * 60000;
49
+ exports.CLAUDE_PROBE_COOLDOWN_MAX_MS = 15 * 60000;
50
+ /** Upper bound for a server-sent Retry-After. */
51
+ const CLAUDE_PROBE_RETRY_AFTER_MAX_MS = 60 * 60000;
52
+ /** Never serve a last-good result older than this, even if no window reset has passed. */
53
+ exports.CLAUDE_PROBE_STALE_MAX_AGE_MS = 6 * 60 * 60000;
54
+ const STATE_VERSION = 1;
55
+ exports.CLAUDE_QUOTA_NORMALIZATION_VERSION = 4;
56
+ function emptyState() {
57
+ return {
58
+ version: STATE_VERSION,
59
+ normalizationVersion: exports.CLAUDE_QUOTA_NORMALIZATION_VERSION,
60
+ lastGood: null,
61
+ consecutive429: 0,
62
+ cooldownUntil: 0,
63
+ };
64
+ }
65
+ function getStateFile(accountId) {
66
+ return path.join((0, config_manager_1.getCcsDir)(), 'cache', 'claude-quota', `${(0, auth_utils_1.sanitizeEmail)(accountId)}.json`);
67
+ }
68
+ function readClaudeProbeState(accountId) {
69
+ try {
70
+ const parsed = JSON.parse(fs.readFileSync(getStateFile(accountId), 'utf-8'));
71
+ if (typeof parsed !== 'object' || parsed === null)
72
+ return emptyState();
73
+ const state = parsed;
74
+ if (state.version !== STATE_VERSION)
75
+ return emptyState();
76
+ const lastGood = state.normalizationVersion === exports.CLAUDE_QUOTA_NORMALIZATION_VERSION &&
77
+ state.lastGood &&
78
+ state.lastGood.success === true &&
79
+ Array.isArray(state.lastGood.windows)
80
+ ? state.lastGood
81
+ : null;
82
+ return {
83
+ version: STATE_VERSION,
84
+ normalizationVersion: exports.CLAUDE_QUOTA_NORMALIZATION_VERSION,
85
+ lastGood,
86
+ consecutive429: Number.isFinite(state.consecutive429) ? Number(state.consecutive429) : 0,
87
+ cooldownUntil: Number.isFinite(state.cooldownUntil) ? Number(state.cooldownUntil) : 0,
88
+ };
89
+ }
90
+ catch {
91
+ return emptyState();
92
+ }
93
+ }
94
+ exports.readClaudeProbeState = readClaudeProbeState;
95
+ /** Atomic write (tmp + rename) so concurrent readers never see a partial file. */
96
+ function writeClaudeProbeState(accountId, state) {
97
+ const file = getStateFile(accountId);
98
+ const tmp = `${file}.${process.pid}.${Date.now()}.tmp`;
99
+ try {
100
+ fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
101
+ fs.writeFileSync(tmp, JSON.stringify({ ...state, normalizationVersion: exports.CLAUDE_QUOTA_NORMALIZATION_VERSION }), { mode: 0o600 });
102
+ fs.renameSync(tmp, file);
103
+ }
104
+ catch {
105
+ // Best effort: losing the shared state only costs extra upstream calls.
106
+ try {
107
+ fs.rmSync(tmp, { force: true });
108
+ }
109
+ catch {
110
+ // ignore
111
+ }
112
+ }
113
+ }
114
+ exports.writeClaudeProbeState = writeClaudeProbeState;
115
+ /** Parse `retry-after:<seconds|HTTP-date>` from errorDetail into ms. */
116
+ function parseRetryAfterMs(detail, now) {
117
+ const match = detail ? /retry-after:(.+)$/.exec(detail) : null;
118
+ if (!match)
119
+ return null;
120
+ const raw = match[1].trim();
121
+ const seconds = Number(raw);
122
+ const ms = Number.isFinite(seconds) ? seconds * 1000 : Date.parse(raw) - now;
123
+ if (!Number.isFinite(ms))
124
+ return null;
125
+ return Math.min(Math.max(0, ms), CLAUDE_PROBE_RETRY_AFTER_MAX_MS);
126
+ }
127
+ exports.parseRetryAfterMs = parseRetryAfterMs;
128
+ /** Cooldown after the Nth consecutive 429 (1-based); Retry-After wins when longer. */
129
+ function computeClaudeProbeCooldownMs(consecutive429, retryAfterMs) {
130
+ const exponent = Math.max(0, consecutive429 - 1);
131
+ const backoff = Math.min(exports.CLAUDE_PROBE_COOLDOWN_BASE_MS * 2 ** exponent, exports.CLAUDE_PROBE_COOLDOWN_MAX_MS);
132
+ return Math.max(backoff, retryAfterMs ?? 0);
133
+ }
134
+ exports.computeClaudeProbeCooldownMs = computeClaudeProbeCooldownMs;
135
+ function hasReset(resetAt, now) {
136
+ if (!resetAt)
137
+ return false;
138
+ const parsed = Date.parse(resetAt);
139
+ return Number.isFinite(parsed) && parsed <= now;
140
+ }
141
+ /**
142
+ * Build the stale result served while probes fail. Windows whose reset time has
143
+ * passed are dropped (their numbers are known to be wrong); returns null when
144
+ * the result is too old or no window survives.
145
+ */
146
+ function buildStaleClaudeResult(lastGood, now) {
147
+ if (now - lastGood.lastUpdated > exports.CLAUDE_PROBE_STALE_MAX_AGE_MS)
148
+ return null;
149
+ const windows = lastGood.windows.filter((window) => !hasReset(window.resetAt, now));
150
+ if (windows.length === 0)
151
+ return null;
152
+ return {
153
+ ...lastGood,
154
+ windows,
155
+ coreUsage: (0, quota_fetcher_claude_normalizer_1.buildClaudeCoreUsageSummary)(windows),
156
+ stale: true,
157
+ };
158
+ }
159
+ exports.buildStaleClaudeResult = buildStaleClaudeResult;
160
+ //# sourceMappingURL=quota-fetcher-claude-probe-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-fetcher-claude-probe-state.js","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-probe-state.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@
4
4
  * Fetches OAuth usage windows from Claude API and normalizes 5h + weekly windows.
5
5
  */
6
6
  import type { ClaudeQuotaResult } from './quota-types';
7
- import { buildClaudeQuotaWindows, buildClaudeCoreUsageSummary } from './quota-fetcher-claude-normalizer';
8
- export { buildClaudeQuotaWindows, buildClaudeCoreUsageSummary };
7
+ import { buildClaudeQuotaWindows, buildClaudeCoreUsageSummary, buildClaudeGeneralWindowPresence } from './quota-fetcher-claude-normalizer';
8
+ export { buildClaudeQuotaWindows, buildClaudeCoreUsageSummary, buildClaudeGeneralWindowPresence };
9
9
  export declare const CLAUDE_OAUTH_USAGE_URL = "https://api.anthropic.com/api/oauth/usage";
10
10
  /**
11
11
  * Fetch quota using a directly-supplied native OAuth access token.
@@ -15,11 +15,11 @@ export declare const CLAUDE_OAUTH_USAGE_URL = "https://api.anthropic.com/api/oau
15
15
  * than a CLIProxy-managed auth file). Lives in this file so it can share the
16
16
  * file-private beta header, timeout, attempt count, and branch logic.
17
17
  */
18
- export declare function fetchClaudeQuotaWithToken(accessToken: string, accountId?: string, verbose?: boolean): Promise<ClaudeQuotaResult>;
18
+ export declare function fetchClaudeQuotaWithToken(accessToken: string, accountId?: string, verbose?: boolean, signal?: AbortSignal): Promise<ClaudeQuotaResult>;
19
19
  /**
20
20
  * Fetch quota for a single Claude account.
21
21
  */
22
- export declare function fetchClaudeQuota(accountId: string, verbose?: boolean): Promise<ClaudeQuotaResult>;
22
+ export declare function fetchClaudeQuota(accountId: string, verbose?: boolean, signal?: AbortSignal): Promise<ClaudeQuotaResult>;
23
23
  /**
24
24
  * Fetch quota for all Claude accounts.
25
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"quota-fetcher-claude.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,mCAAmC,CAAC;AAK3C,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,CAAC;AAEhE,eAAO,MAAM,sBAAsB,8CAA8C,CAAC;AAiWlF;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,SAAS,SAAgB,EACzB,OAAO,UAAQ,GACd,OAAO,CAAC,iBAAiB,CAAC,CAK5B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,UAAQ,GACd,OAAO,CAAC,iBAAiB,CAAC,CAe5B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,UAAQ,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,EAAE,CAAC,CAS1D"}
1
+ {"version":3,"file":"quota-fetcher-claude.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,gCAAgC,EACjC,MAAM,mCAAmC,CAAC;AAa3C,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,gCAAgC,EAAE,CAAC;AAElG,eAAO,MAAM,sBAAsB,8CAA8C,CAAC;AAyZlF;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,SAAS,SAAgB,EACzB,OAAO,UAAQ,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAM5B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,UAAQ,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAoC5B;AAkID;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,UAAQ,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,EAAE,CAAC,CAS1D"}
@@ -28,7 +28,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
28
28
  return result;
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.fetchAllClaudeQuotas = exports.fetchClaudeQuota = exports.fetchClaudeQuotaWithToken = exports.CLAUDE_OAUTH_USAGE_URL = exports.buildClaudeCoreUsageSummary = exports.buildClaudeQuotaWindows = void 0;
31
+ exports.fetchAllClaudeQuotas = exports.fetchClaudeQuota = exports.fetchClaudeQuotaWithToken = exports.CLAUDE_OAUTH_USAGE_URL = exports.buildClaudeGeneralWindowPresence = exports.buildClaudeCoreUsageSummary = exports.buildClaudeQuotaWindows = void 0;
32
32
  const path = __importStar(require("node:path"));
33
33
  const fsp = __importStar(require("node:fs/promises"));
34
34
  const config_generator_1 = require("../config/config-generator");
@@ -37,13 +37,46 @@ const auth_utils_1 = require("../auth/auth-utils");
37
37
  const quota_fetcher_claude_normalizer_1 = require("./quota-fetcher-claude-normalizer");
38
38
  Object.defineProperty(exports, "buildClaudeQuotaWindows", { enumerable: true, get: function () { return quota_fetcher_claude_normalizer_1.buildClaudeQuotaWindows; } });
39
39
  Object.defineProperty(exports, "buildClaudeCoreUsageSummary", { enumerable: true, get: function () { return quota_fetcher_claude_normalizer_1.buildClaudeCoreUsageSummary; } });
40
+ Object.defineProperty(exports, "buildClaudeGeneralWindowPresence", { enumerable: true, get: function () { return quota_fetcher_claude_normalizer_1.buildClaudeGeneralWindowPresence; } });
40
41
  const logging_1 = require("../../services/logging");
42
+ const quota_fetcher_claude_probe_state_1 = require("./quota-fetcher-claude-probe-state");
41
43
  const logger = (0, logging_1.createLogger)('cliproxy:quota:claude');
42
44
  exports.CLAUDE_OAUTH_USAGE_URL = 'https://api.anthropic.com/api/oauth/usage';
43
45
  const CLAUDE_QUOTA_TIMEOUT_MS = 10000;
44
46
  const CLAUDE_QUOTA_MAX_ATTEMPTS = 2;
45
47
  const CLAUDE_OAUTH_BETA_HEADER = 'oauth-2025-04-20';
46
48
  const CLAUDE_QUOTA_ERROR_BODY_MAX_BYTES = 8192;
49
+ function throwIfAborted(signal) {
50
+ if (signal?.aborted) {
51
+ const error = new Error('Claude quota request cancelled');
52
+ error.name = 'AbortError';
53
+ throw error;
54
+ }
55
+ }
56
+ /** Bound caller waits even when a response-body implementation ignores fetch cancellation. */
57
+ function waitWithAbort(promise, signal) {
58
+ return new Promise((resolve, reject) => {
59
+ const onAbort = () => {
60
+ signal.removeEventListener('abort', onAbort);
61
+ try {
62
+ throwIfAborted(signal);
63
+ }
64
+ catch (error) {
65
+ reject(error);
66
+ }
67
+ };
68
+ signal.addEventListener('abort', onAbort, { once: true });
69
+ promise.then((value) => {
70
+ signal.removeEventListener('abort', onAbort);
71
+ resolve(value);
72
+ }, (error) => {
73
+ signal.removeEventListener('abort', onAbort);
74
+ reject(error);
75
+ });
76
+ if (signal.aborted)
77
+ onAbort();
78
+ });
79
+ }
47
80
  function asString(value) {
48
81
  return typeof value === 'string' && value.trim().length > 0 ? value.trim() : null;
49
82
  }
@@ -156,6 +189,15 @@ async function readAuthCandidate(filePath) {
156
189
  }
157
190
  async function readClaudeAuthData(accountId) {
158
191
  const authDirs = [(0, config_generator_1.getAuthDir)(), (0, account_manager_1.getPausedDir)()];
192
+ const registryAccount = (0, account_manager_1.getAccount)('claude', accountId);
193
+ if (registryAccount?.tokenFile) {
194
+ for (const authDir of authDirs) {
195
+ const authData = await readAuthCandidate(path.join(authDir, registryAccount.tokenFile));
196
+ if (authData) {
197
+ return authData;
198
+ }
199
+ }
200
+ }
159
201
  const sanitizedId = (0, auth_utils_1.sanitizeEmail)(accountId);
160
202
  const expectedFiles = [`claude-${sanitizedId}.json`, `anthropic-${sanitizedId}.json`];
161
203
  for (const authDir of authDirs) {
@@ -221,13 +263,16 @@ function buildEmptyResult(error, accountId, needsReauth = false) {
221
263
  * window normalization so neither caller re-implements the hostile-endpoint
222
264
  * handling. The callers differ only in WHERE the token comes from.
223
265
  */
224
- async function runClaudeUsageFetch(accessToken, accountId, verbose) {
266
+ async function runClaudeUsageFetch(accessToken, accountId, verbose, signal) {
225
267
  let lastError = 'Unknown error';
226
268
  for (let attempt = 1; attempt <= CLAUDE_QUOTA_MAX_ATTEMPTS; attempt++) {
269
+ throwIfAborted(signal);
227
270
  const controller = new AbortController();
271
+ const onAbort = () => controller.abort();
272
+ signal?.addEventListener('abort', onAbort, { once: true });
228
273
  const timeoutId = setTimeout(() => controller.abort(), CLAUDE_QUOTA_TIMEOUT_MS);
229
274
  try {
230
- const response = await fetch(exports.CLAUDE_OAUTH_USAGE_URL, {
275
+ const response = await waitWithAbort(fetch(exports.CLAUDE_OAUTH_USAGE_URL, {
231
276
  method: 'GET',
232
277
  signal: controller.signal,
233
278
  headers: {
@@ -236,7 +281,8 @@ async function runClaudeUsageFetch(accessToken, accountId, verbose) {
236
281
  'Content-Type': 'application/json',
237
282
  'anthropic-beta': CLAUDE_OAUTH_BETA_HEADER,
238
283
  },
239
- });
284
+ }), controller.signal);
285
+ throwIfAborted(signal);
240
286
  if (verbose) {
241
287
  logger.info('quota.fetch.status', `Claude OAuth usage status: ${response.status}`, {
242
288
  provider: 'claude',
@@ -245,22 +291,21 @@ async function runClaudeUsageFetch(accessToken, accountId, verbose) {
245
291
  });
246
292
  }
247
293
  if (response.status === 401) {
248
- const errorMessage = await readResponseErrorMessage(response);
249
- clearTimeout(timeoutId);
294
+ const errorMessage = await waitWithAbort(readResponseErrorMessage(response), controller.signal);
295
+ throwIfAborted(signal);
250
296
  return buildEmptyResult(errorMessage || 'Authentication required for Claude OAuth usage', accountId, true);
251
297
  }
252
298
  if (response.status === 404) {
253
- clearTimeout(timeoutId);
254
299
  return buildEmptyResult('Claude OAuth usage endpoint not found', accountId);
255
300
  }
256
301
  if (response.status === 403) {
257
- clearTimeout(timeoutId);
258
302
  return buildEmptyResult('Not authorized for Claude OAuth usage', accountId);
259
303
  }
260
304
  if (!response.ok) {
261
305
  lastError =
262
- (await readResponseErrorMessage(response)) ||
306
+ (await waitWithAbort(readResponseErrorMessage(response), controller.signal)) ||
263
307
  `Claude OAuth usage API error: ${response.status}`;
308
+ throwIfAborted(signal);
264
309
  // Surface the upstream status + Retry-After so an outer caller (the
265
310
  // native collector's circuit-breaker) can honor backoff guidance.
266
311
  const retryAfter = response.headers.get('retry-after');
@@ -268,10 +313,8 @@ async function runClaudeUsageFetch(accessToken, accountId, verbose) {
268
313
  // honor Retry-After and bound total volume. Inner retry stays for
269
314
  // transient 5xx only.
270
315
  if (attempt < CLAUDE_QUOTA_MAX_ATTEMPTS && response.status >= 500) {
271
- clearTimeout(timeoutId);
272
316
  continue;
273
317
  }
274
- clearTimeout(timeoutId);
275
318
  if (response.status === 429) {
276
319
  return {
277
320
  ...buildEmptyResult('Claude usage status temporarily unavailable', accountId),
@@ -291,29 +334,30 @@ async function runClaudeUsageFetch(accessToken, accountId, verbose) {
291
334
  }
292
335
  let payload;
293
336
  try {
294
- payload = await response.json();
337
+ payload = await waitWithAbort(response.json(), controller.signal);
295
338
  }
296
339
  catch {
297
- clearTimeout(timeoutId);
340
+ throwIfAborted(signal);
298
341
  return buildEmptyResult('Invalid Claude OAuth usage format', accountId);
299
342
  }
343
+ throwIfAborted(signal);
300
344
  if (!toObject(payload)) {
301
- clearTimeout(timeoutId);
302
345
  return buildEmptyResult('Invalid Claude OAuth usage format', accountId);
303
346
  }
304
347
  const windows = (0, quota_fetcher_claude_normalizer_1.buildClaudeQuotaWindows)(payload);
305
348
  const coreUsage = (0, quota_fetcher_claude_normalizer_1.buildClaudeCoreUsageSummary)(windows);
306
- clearTimeout(timeoutId);
349
+ const generalWindowPresence = (0, quota_fetcher_claude_normalizer_1.buildClaudeGeneralWindowPresence)(payload);
307
350
  return {
308
351
  success: true,
309
352
  windows,
310
353
  coreUsage,
354
+ generalWindowPresence,
311
355
  lastUpdated: Date.now(),
312
356
  accountId,
313
357
  };
314
358
  }
315
359
  catch (error) {
316
- clearTimeout(timeoutId);
360
+ throwIfAborted(signal);
317
361
  lastError =
318
362
  error instanceof Error && error.name === 'AbortError'
319
363
  ? 'Claude OAuth usage request timeout'
@@ -330,10 +374,13 @@ async function runClaudeUsageFetch(accessToken, accountId, verbose) {
330
374
  });
331
375
  }
332
376
  if (attempt >= CLAUDE_QUOTA_MAX_ATTEMPTS) {
333
- clearTimeout(timeoutId);
334
377
  return { ...buildEmptyResult(lastError, accountId), retryable: true };
335
378
  }
336
379
  }
380
+ finally {
381
+ clearTimeout(timeoutId);
382
+ signal?.removeEventListener('abort', onAbort);
383
+ }
337
384
  }
338
385
  return { ...buildEmptyResult(lastError, accountId), retryable: true };
339
386
  }
@@ -345,27 +392,147 @@ async function runClaudeUsageFetch(accessToken, accountId, verbose) {
345
392
  * than a CLIProxy-managed auth file). Lives in this file so it can share the
346
393
  * file-private beta header, timeout, attempt count, and branch logic.
347
394
  */
348
- async function fetchClaudeQuotaWithToken(accessToken, accountId = 'claude-code', verbose = false) {
395
+ async function fetchClaudeQuotaWithToken(accessToken, accountId = 'claude-code', verbose = false, signal) {
396
+ throwIfAborted(signal);
349
397
  if (!accessToken || accessToken.trim().length === 0) {
350
398
  return buildEmptyResult('Missing native Claude access token', accountId, true);
351
399
  }
352
- return runClaudeUsageFetch(accessToken.trim(), accountId, verbose);
400
+ return runClaudeUsageFetch(accessToken.trim(), accountId, verbose, signal);
353
401
  }
354
402
  exports.fetchClaudeQuotaWithToken = fetchClaudeQuotaWithToken;
355
403
  /**
356
404
  * Fetch quota for a single Claude account.
357
405
  */
358
- async function fetchClaudeQuota(accountId, verbose = false) {
406
+ async function fetchClaudeQuota(accountId, verbose = false, signal) {
407
+ throwIfAborted(signal);
359
408
  const authData = await readClaudeAuthData(accountId);
409
+ throwIfAborted(signal);
360
410
  if (!authData) {
361
411
  return buildEmptyResult('Auth file not found for Claude account', accountId);
362
412
  }
363
413
  if (authData.isExpired) {
364
414
  return buildEmptyResult('Token expired - re-authenticate with ccs cliproxy auth claude', accountId, true);
365
415
  }
366
- return runClaudeUsageFetch(authData.accessToken, accountId, verbose);
416
+ const pending = pendingClaudeFetches.get(accountId);
417
+ if (pending)
418
+ return waitForSharedFetch(accountId, pending, signal);
419
+ const controller = new AbortController();
420
+ const entry = {
421
+ controller,
422
+ waiters: 0,
423
+ settled: false,
424
+ promise: fetchClaudeQuotaWithSharedState(authData.accessToken, accountId, verbose, controller.signal).finally(() => {
425
+ entry.settled = true;
426
+ if (pendingClaudeFetches.get(accountId) === entry)
427
+ pendingClaudeFetches.delete(accountId);
428
+ }),
429
+ };
430
+ pendingClaudeFetches.set(accountId, entry);
431
+ return waitForSharedFetch(accountId, entry, signal);
367
432
  }
368
433
  exports.fetchClaudeQuota = fetchClaudeQuota;
434
+ const pendingClaudeFetches = new Map();
435
+ /** Only the last departing caller may cancel a shared provider request. */
436
+ function waitForSharedFetch(accountId, entry, signal) {
437
+ entry.waiters++;
438
+ return new Promise((resolve, reject) => {
439
+ let done = false;
440
+ const release = () => {
441
+ if (done)
442
+ return false;
443
+ done = true;
444
+ signal?.removeEventListener('abort', onAbort);
445
+ entry.waiters--;
446
+ if (!entry.settled && entry.waiters === 0) {
447
+ if (pendingClaudeFetches.get(accountId) === entry)
448
+ pendingClaudeFetches.delete(accountId);
449
+ entry.controller.abort();
450
+ }
451
+ return true;
452
+ };
453
+ const onAbort = () => {
454
+ if (!release())
455
+ return;
456
+ try {
457
+ throwIfAborted(signal);
458
+ }
459
+ catch (error) {
460
+ reject(error);
461
+ }
462
+ };
463
+ entry.promise.then((value) => {
464
+ if (release())
465
+ resolve(value);
466
+ }, (error) => {
467
+ if (release())
468
+ reject(error);
469
+ });
470
+ signal?.addEventListener('abort', onAbort, { once: true });
471
+ if (signal?.aborted)
472
+ onAbort();
473
+ });
474
+ }
475
+ function buildCooldownHint(cooldownUntil) {
476
+ return `Inference may still be available. Anthropic rate-limited the usage check; CCS retries after ${new Date(cooldownUntil).toLocaleTimeString()}.`;
477
+ }
478
+ /** Result for a probe skipped because the account is in a 429 cooldown. */
479
+ function buildCooldownResult(accountId, cooldownUntil) {
480
+ return {
481
+ ...buildEmptyResult('Claude usage status temporarily unavailable', accountId),
482
+ httpStatus: 429,
483
+ errorCode: 'usage_probe_unavailable',
484
+ actionHint: buildCooldownHint(cooldownUntil),
485
+ retryable: true,
486
+ errorDetail: `cooldown-until:${new Date(cooldownUntil).toISOString()}`,
487
+ };
488
+ }
489
+ /**
490
+ * Probe Anthropic through the shared on-disk state: reuse a fresh result from
491
+ * any CCS process, skip the network during a 429 cooldown, and serve the last
492
+ * good result (stale: true) while the probe is rate-limited or failing.
493
+ */
494
+ async function fetchClaudeQuotaWithSharedState(accessToken, accountId, verbose, signal) {
495
+ throwIfAborted(signal);
496
+ const state = (0, quota_fetcher_claude_probe_state_1.readClaudeProbeState)(accountId);
497
+ const now = Date.now();
498
+ if (state.lastGood && now - state.lastGood.lastUpdated < quota_fetcher_claude_probe_state_1.CLAUDE_PROBE_SHARED_TTL_MS) {
499
+ return state.lastGood;
500
+ }
501
+ if (now < state.cooldownUntil) {
502
+ const stale = state.lastGood ? (0, quota_fetcher_claude_probe_state_1.buildStaleClaudeResult)(state.lastGood, now) : null;
503
+ return stale ?? buildCooldownResult(accountId, state.cooldownUntil);
504
+ }
505
+ const result = await runClaudeUsageFetch(accessToken, accountId, verbose, signal);
506
+ throwIfAborted(signal);
507
+ if (result.success) {
508
+ (0, quota_fetcher_claude_probe_state_1.writeClaudeProbeState)(accountId, {
509
+ ...state,
510
+ lastGood: result,
511
+ consecutive429: 0,
512
+ cooldownUntil: 0,
513
+ });
514
+ return result;
515
+ }
516
+ if (result.httpStatus === 429) {
517
+ const consecutive429 = state.consecutive429 + 1;
518
+ const cooldownMs = (0, quota_fetcher_claude_probe_state_1.computeClaudeProbeCooldownMs)(consecutive429, (0, quota_fetcher_claude_probe_state_1.parseRetryAfterMs)(result.errorDetail, Date.now()));
519
+ const cooldownUntil = Date.now() + cooldownMs;
520
+ (0, quota_fetcher_claude_probe_state_1.writeClaudeProbeState)(accountId, { ...state, consecutive429, cooldownUntil });
521
+ logger.warn('quota.fetch.rate_limited', 'Claude OAuth usage probe rate-limited', {
522
+ provider: 'claude',
523
+ consecutive429,
524
+ cooldownMs,
525
+ });
526
+ const stale = state.lastGood ? (0, quota_fetcher_claude_probe_state_1.buildStaleClaudeResult)(state.lastGood, Date.now()) : null;
527
+ return stale ?? { ...result, actionHint: buildCooldownHint(cooldownUntil) };
528
+ }
529
+ // Transient failures (5xx, timeouts) keep the last good numbers visible;
530
+ // auth and access failures are shown as-is so the user can act on them.
531
+ if (result.retryable && state.lastGood) {
532
+ return (0, quota_fetcher_claude_probe_state_1.buildStaleClaudeResult)(state.lastGood, Date.now()) ?? result;
533
+ }
534
+ return result;
535
+ }
369
536
  /**
370
537
  * Fetch quota for all Claude accounts.
371
538
  */
@@ -1 +1 @@
1
- {"version":3,"file":"quota-fetcher-claude.js","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quota-fetcher-claude.js","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,gDAAkC;AAClC,sDAAwC;AACxC,iEAAwD;AACxD,iEAA4F;AAC5F,mDAAmE;AAEnE,uFAI2C;AAalC,wGAhBP,yDAAuB,OAgBO;AAAE,4GAfhC,6DAA2B,OAegC;AAAE,iHAd7D,kEAAgC,OAc6D;AAZ/F,oDAAsD;AACtD,yFAO4C;AAE5C,MAAM,MAAM,GAAG,IAAA,sBAAY,EAAC,uBAAuB,CAAC,CAAC;AAIxC,QAAA,sBAAsB,GAAG,2CAA2C,CAAC;AAClF,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,MAAM,wBAAwB,GAAG,kBAAkB,CAAC;AACpD,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAE/C,SAAS,cAAc,CAAC,MAAoB;IAC1C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC;QAC1B,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,SAAS,aAAa,CAAI,OAAmB,EAAE,MAAmB;IAChE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,cAAc,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CACV,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CACF,CAAC;QACF,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAOD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrF,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,kBAAkB,CAAC,IAA6B;IACvD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QACrD,IAAI,WAAW;YAAE,OAAO,WAAW,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,IAA6B;IAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,MAAqB;IAC1C,OAAO,MAAM,CAAC,CAAC,CAAC,IAAA,2BAAc,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjD,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,QAAkB;IACxD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,iCAAiC,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC;YAC/B,IAAI,UAAU,GAAG,iCAAiC;gBAAE,OAAO,IAAI,CAAC;YAEhE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;YAC3C,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO;QACL,WAAW;QACX,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,SAAiB;IACjD,MAAM,QAAQ,GAAG,CAAC,IAAA,6BAAU,GAAE,EAAE,IAAA,8BAAY,GAAE,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,IAAA,4BAAU,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxD,IAAI,eAAe,EAAE,SAAS,EAAE,CAAC;QAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;YACxF,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,CAAC,UAAU,WAAW,OAAO,EAAE,aAAa,WAAW,OAAO,CAAC,CAAC;IAEtF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACvB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAC/D,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW;gBAAE,SAAS;YAE3B,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACzC,MAAM,YAAY,GAChB,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,WAAW,CAAC;YAC5E,MAAM,YAAY,GAAG,SAAS,KAAK,SAAS,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAE/C,IAAI,CAAC,YAAY,IAAI,WAAW,CAAC,IAAI,YAAY,EAAE,CAAC;gBAClD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;gBACnC,OAAO;oBACL,WAAW;oBACX,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC;iBACjC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAa,EACb,SAAiB,EACjB,WAAW,GAAG,KAAK;IAEnB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAC3C,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;QACvB,KAAK;QACL,SAAS;QACT,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,mBAAmB,CAChC,WAAmB,EACnB,SAAiB,EACjB,OAAgB,EAChB,MAAoB;IAEpB,IAAI,SAAS,GAAG,eAAe,CAAC;IAEhC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,yBAAyB,EAAE,OAAO,EAAE,EAAE,CAAC;QACtE,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACzC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAEhF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,KAAK,CAAC,8BAAsB,EAAE;gBAC5B,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,WAAW,EAAE;oBACtC,MAAM,EAAE,kBAAkB;oBAC1B,cAAc,EAAE,kBAAkB;oBAClC,gBAAgB,EAAE,wBAAwB;iBAC3C;aACF,CAAC,EACF,UAAU,CAAC,MAAM,CAClB,CAAC;YACF,cAAc,CAAC,MAAM,CAAC,CAAC;YAEvB,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,8BAA8B,QAAQ,CAAC,MAAM,EAAE,EAAE;oBACjF,QAAQ,EAAE,QAAQ;oBAClB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG,MAAM,aAAa,CACtC,wBAAwB,CAAC,QAAQ,CAAC,EAClC,UAAU,CAAC,MAAM,CAClB,CAAC;gBACF,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,OAAO,gBAAgB,CACrB,YAAY,IAAI,gDAAgD,EAChE,SAAS,EACT,IAAI,CACL,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,gBAAgB,CAAC,uCAAuC,EAAE,SAAS,CAAC,CAAC;YAC9E,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,gBAAgB,CAAC,uCAAuC,EAAE,SAAS,CAAC,CAAC;YAC9E,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,SAAS;oBACP,CAAC,MAAM,aAAa,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;wBAC5E,iCAAiC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrD,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,oEAAoE;gBACpE,kEAAkE;gBAClE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACvD,0EAA0E;gBAC1E,kEAAkE;gBAClE,sBAAsB;gBACtB,IAAI,OAAO,GAAG,yBAAyB,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;oBAClE,SAAS;gBACX,CAAC;gBACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC5B,OAAO;wBACL,GAAG,gBAAgB,CAAC,6CAA6C,EAAE,SAAS,CAAC;wBAC7E,UAAU,EAAE,QAAQ,CAAC,MAAM;wBAC3B,SAAS,EAAE,yBAAyB;wBACpC,UAAU,EACR,8EAA8E;wBAChF,SAAS,EAAE,IAAI;wBACf,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACpE,CAAC;gBACJ,CAAC;gBACD,OAAO;oBACL,GAAG,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;oBACzC,UAAU,EAAE,QAAQ,CAAC,MAAM;oBAC3B,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG;oBACjC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpE,CAAC;YACJ,CAAC;YAED,IAAI,OAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YACpE,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,OAAO,gBAAgB,CAAC,mCAAmC,EAAE,SAAS,CAAC,CAAC;YAC1E,CAAC;YACD,cAAc,CAAC,MAAM,CAAC,CAAC;YAEvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,OAAO,gBAAgB,CAAC,mCAAmC,EAAE,SAAS,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,OAAO,GAAG,IAAA,yDAAuB,EAAC,OAAkC,CAAC,CAAC;YAC5E,MAAM,SAAS,GAAG,IAAA,6DAA2B,EAAC,OAAO,CAAC,CAAC;YACvD,MAAM,qBAAqB,GAAG,IAAA,kEAAgC,EAC5D,OAAkC,CACnC,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO;gBACP,SAAS;gBACT,qBAAqB;gBACrB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,SAAS;aACV,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,SAAS;gBACP,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;oBACnD,CAAC,CAAC,oCAAoC;oBACtC,CAAC,CAAC,KAAK,YAAY,KAAK;wBACtB,CAAC,CAAC,KAAK,CAAC,OAAO;wBACf,CAAC,CAAC,eAAe,CAAC;YAExB,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,sCAAsC,OAAO,MAAM,SAAS,EAAE,EAC9D;oBACE,QAAQ,EAAE,QAAQ;oBAClB,OAAO;oBACP,GAAG,EACD,KAAK,YAAY,KAAK;wBACpB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;wBAC9C,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;iBACjC,CACF,CAAC;YACJ,CAAC;YAED,IAAI,OAAO,IAAI,yBAAyB,EAAE,CAAC;gBACzC,OAAO,EAAE,GAAG,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACxE,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACxE,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,yBAAyB,CAC7C,WAAmB,EACnB,SAAS,GAAG,aAAa,EACzB,OAAO,GAAG,KAAK,EACf,MAAoB;IAEpB,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,gBAAgB,CAAC,oCAAoC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAXD,8DAWC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,OAAO,GAAG,KAAK,EACf,MAAoB;IAEpB,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACrD,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,gBAAgB,CAAC,wCAAwC,EAAE,SAAS,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,gBAAgB,CACrB,+DAA+D,EAC/D,SAAS,EACT,IAAI,CACL,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,OAAO;QAAE,OAAO,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAuB;QAChC,UAAU;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,+BAA+B,CACtC,QAAQ,CAAC,WAAW,EACpB,SAAS,EACT,OAAO,EACP,UAAU,CAAC,MAAM,CAClB,CAAC,OAAO,CAAC,GAAG,EAAE;YACb,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,IAAI,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK;gBAAE,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5F,CAAC,CAAC;KACH,CAAC;IACF,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAxCD,4CAwCC;AASD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAEnE,2EAA2E;AAC3E,SAAS,kBAAkB,CACzB,SAAiB,EACjB,KAAyB,EACzB,MAAoB;IAEpB,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,OAAO,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxD,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,IAAI;gBAAE,OAAO,KAAK,CAAC;YACvB,IAAI,GAAG,IAAI,CAAC;YACZ,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;gBAC1C,IAAI,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK;oBAAE,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC1F,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC3B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC,OAAO,EAAE;gBAAE,OAAO;YACvB,IAAI,CAAC;gBACH,cAAc,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAChB,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,OAAO,EAAE;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,IAAI,OAAO,EAAE;gBAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CACF,CAAC;QACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,MAAM,EAAE,OAAO;YAAE,OAAO,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,aAAqB;IAC9C,OAAO,+FAA+F,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,kBAAkB,EAAE,GAAG,CAAC;AACxJ,CAAC;AAED,2EAA2E;AAC3E,SAAS,mBAAmB,CAAC,SAAiB,EAAE,aAAqB;IACnE,OAAO;QACL,GAAG,gBAAgB,CAAC,6CAA6C,EAAE,SAAS,CAAC;QAC7E,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,yBAAyB;QACpC,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC;QAC5C,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,EAAE;KACvE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,+BAA+B,CAC5C,WAAmB,EACnB,SAAiB,EACjB,OAAgB,EAChB,MAAoB;IAEpB,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,IAAA,uDAAoB,EAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,IAAI,KAAK,CAAC,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,6DAA0B,EAAE,CAAC;QACpF,OAAO,KAAK,CAAC,QAAQ,CAAC;IACxB,CAAC;IAED,IAAI,GAAG,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,yDAAsB,EAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,OAAO,KAAK,IAAI,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAClF,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAA,wDAAqB,EAAC,SAAS,EAAE;YAC/B,GAAG,KAAK;YACR,QAAQ,EAAE,MAAM;YAChB,cAAc,EAAE,CAAC;YACjB,aAAa,EAAE,CAAC;SACjB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;QAC9B,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,IAAA,+DAA4B,EAC7C,cAAc,EACd,IAAA,oDAAiB,EAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAClD,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;QAC9C,IAAA,wDAAqB,EAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,uCAAuC,EAAE;YAC/E,QAAQ,EAAE,QAAQ;YAClB,cAAc;YACd,UAAU;SACX,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,yDAAsB,EAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzF,OAAO,KAAK,IAAI,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED,yEAAyE;IACzE,wEAAwE;IACxE,IAAI,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO,IAAA,yDAAsB,EAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC;IACtE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,oBAAoB,CACxC,OAAO,GAAG,KAAK;IAEf,MAAM,QAAQ,GAAG,IAAA,qCAAmB,EAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,KAAK,EAAE,MAAM,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC;KACnD,CAAC,CAAC,CACJ,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAXD,oDAWC"}
@@ -1,10 +1,11 @@
1
1
  /**
2
- * Sanitize upstream Codex feature labels before storing or rendering them.
2
+ * Sanitize upstream quota labels before storing or rendering them.
3
3
  *
4
4
  * The quota API is not schema-validated at runtime, so additional-rate-limit
5
5
  * labels must be constrained to safe, printable strings before they reach the
6
6
  * terminal.
7
7
  */
8
- export declare function sanitizeCodexFeatureLabelOrNull(value: unknown): string | null;
8
+ export declare function sanitizeQuotaLabelOrNull(value: unknown): string | null;
9
+ export declare const sanitizeCodexFeatureLabelOrNull: typeof sanitizeQuotaLabelOrNull;
9
10
  export declare function sanitizeCodexFeatureLabel(value: unknown): string;
10
11
  //# sourceMappingURL=quota-label-sanitizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota-label-sanitizer.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-label-sanitizer.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAW7E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEhE"}
1
+ {"version":3,"file":"quota-label-sanitizer.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-label-sanitizer.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAWtE;AAED,eAAO,MAAM,+BAA+B,iCAA2B,CAAC;AAExE,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEhE"}