@kaitranntt/ccs 8.4.0 → 8.5.0

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 (672) hide show
  1. package/README.md +5 -2
  2. package/config/base-claude.settings.json +1 -1
  3. package/config/base-glm.settings.json +4 -4
  4. package/config/base-glmt.settings.json +4 -4
  5. package/config/base-km.settings.json +4 -4
  6. package/config/base-mm.settings.json +4 -4
  7. package/dist/api/services/cliproxy-profile-bridge.d.ts.map +1 -1
  8. package/dist/api/services/cliproxy-profile-bridge.js +20 -9
  9. package/dist/api/services/cliproxy-profile-bridge.js.map +1 -1
  10. package/dist/auth/profile-registry.d.ts.map +1 -1
  11. package/dist/auth/profile-registry.js +13 -12
  12. package/dist/auth/profile-registry.js.map +1 -1
  13. package/dist/cliproxy/accounts/account-safety.d.ts.map +1 -1
  14. package/dist/cliproxy/accounts/account-safety.js +56 -56
  15. package/dist/cliproxy/accounts/account-safety.js.map +1 -1
  16. package/dist/cliproxy/auth/antigravity-responsibility.d.ts.map +1 -1
  17. package/dist/cliproxy/auth/antigravity-responsibility.js +15 -15
  18. package/dist/cliproxy/auth/antigravity-responsibility.js.map +1 -1
  19. package/dist/cliproxy/auth/auth-token-manager.d.ts.map +1 -1
  20. package/dist/cliproxy/auth/auth-token-manager.js +2 -1
  21. package/dist/cliproxy/auth/auth-token-manager.js.map +1 -1
  22. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
  23. package/dist/cliproxy/auth/auth-types.js +3 -2
  24. package/dist/cliproxy/auth/auth-types.js.map +1 -1
  25. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  26. package/dist/cliproxy/auth/oauth-handler.js +16 -5
  27. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  28. package/dist/cliproxy/auth/provider-refreshers/index.d.ts +2 -1
  29. package/dist/cliproxy/auth/provider-refreshers/index.d.ts.map +1 -1
  30. package/dist/cliproxy/auth/provider-refreshers/index.js +4 -2
  31. package/dist/cliproxy/auth/provider-refreshers/index.js.map +1 -1
  32. package/dist/cliproxy/auth/token-manager.d.ts +2 -1
  33. package/dist/cliproxy/auth/token-manager.d.ts.map +1 -1
  34. package/dist/cliproxy/auth/token-manager.js +2 -1
  35. package/dist/cliproxy/auth/token-manager.js.map +1 -1
  36. package/dist/cliproxy/config/env-builder.d.ts +19 -2
  37. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  38. package/dist/cliproxy/config/env-builder.js +58 -9
  39. package/dist/cliproxy/config/env-builder.js.map +1 -1
  40. package/dist/cliproxy/config/model-config.d.ts.map +1 -1
  41. package/dist/cliproxy/config/model-config.js +32 -32
  42. package/dist/cliproxy/config/model-config.js.map +1 -1
  43. package/dist/cliproxy/executor/arg-parser.d.ts.map +1 -1
  44. package/dist/cliproxy/executor/arg-parser.js +26 -26
  45. package/dist/cliproxy/executor/arg-parser.js.map +1 -1
  46. package/dist/cliproxy/executor/auth-coordinator.d.ts.map +1 -1
  47. package/dist/cliproxy/executor/auth-coordinator.js +15 -14
  48. package/dist/cliproxy/executor/auth-coordinator.js.map +1 -1
  49. package/dist/cliproxy/executor/browser-launch-setup.d.ts.map +1 -1
  50. package/dist/cliproxy/executor/browser-launch-setup.js +6 -2
  51. package/dist/cliproxy/executor/browser-launch-setup.js.map +1 -1
  52. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  53. package/dist/cliproxy/executor/index.js +27 -17
  54. package/dist/cliproxy/executor/index.js.map +1 -1
  55. package/dist/cliproxy/executor/lifecycle-manager.d.ts.map +1 -1
  56. package/dist/cliproxy/executor/lifecycle-manager.js +18 -16
  57. package/dist/cliproxy/executor/lifecycle-manager.js.map +1 -1
  58. package/dist/cliproxy/executor/model-warnings.d.ts.map +1 -1
  59. package/dist/cliproxy/executor/model-warnings.js +24 -13
  60. package/dist/cliproxy/executor/model-warnings.js.map +1 -1
  61. package/dist/cliproxy/executor/retry-handler.d.ts.map +1 -1
  62. package/dist/cliproxy/executor/retry-handler.js +13 -11
  63. package/dist/cliproxy/executor/retry-handler.js.map +1 -1
  64. package/dist/cliproxy/executor/session-bridge.d.ts.map +1 -1
  65. package/dist/cliproxy/executor/session-bridge.js +18 -10
  66. package/dist/cliproxy/executor/session-bridge.js.map +1 -1
  67. package/dist/cliproxy/management/remote-token-uploader.d.ts.map +1 -1
  68. package/dist/cliproxy/management/remote-token-uploader.js +11 -11
  69. package/dist/cliproxy/management/remote-token-uploader.js.map +1 -1
  70. package/dist/cliproxy/provider-capabilities.d.ts +6 -0
  71. package/dist/cliproxy/provider-capabilities.d.ts.map +1 -1
  72. package/dist/cliproxy/provider-capabilities.js +28 -3
  73. package/dist/cliproxy/provider-capabilities.js.map +1 -1
  74. package/dist/cliproxy/proxy/https-tunnel-proxy.d.ts +5 -1
  75. package/dist/cliproxy/proxy/https-tunnel-proxy.d.ts.map +1 -1
  76. package/dist/cliproxy/proxy/https-tunnel-proxy.js +22 -10
  77. package/dist/cliproxy/proxy/https-tunnel-proxy.js.map +1 -1
  78. package/dist/cliproxy/proxy/tool-sanitization-proxy.d.ts +0 -12
  79. package/dist/cliproxy/proxy/tool-sanitization-proxy.d.ts.map +1 -1
  80. package/dist/cliproxy/proxy/tool-sanitization-proxy.js +42 -72
  81. package/dist/cliproxy/proxy/tool-sanitization-proxy.js.map +1 -1
  82. package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.d.ts +21 -0
  83. package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.d.ts.map +1 -0
  84. package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.js +154 -0
  85. package/dist/cliproxy/quota/quota-fetcher/account-quota-fetcher.js.map +1 -0
  86. package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.d.ts +35 -0
  87. package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.d.ts.map +1 -0
  88. package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.js +98 -0
  89. package/dist/cliproxy/quota/quota-fetcher/all-accounts-fetcher.js.map +1 -0
  90. package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.d.ts +22 -0
  91. package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.d.ts.map +1 -0
  92. package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.js +111 -0
  93. package/dist/cliproxy/quota/quota-fetcher/auth-file-reader.js.map +1 -0
  94. package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.d.ts +17 -0
  95. package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.d.ts.map +1 -0
  96. package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.js +85 -0
  97. package/dist/cliproxy/quota/quota-fetcher/available-models-fetcher.js.map +1 -0
  98. package/dist/cliproxy/quota/quota-fetcher/constants.d.ts +25 -0
  99. package/dist/cliproxy/quota/quota-fetcher/constants.d.ts.map +1 -0
  100. package/dist/cliproxy/quota/quota-fetcher/constants.js +31 -0
  101. package/dist/cliproxy/quota/quota-fetcher/constants.js.map +1 -0
  102. package/dist/cliproxy/quota/quota-fetcher/http-client.d.ts +29 -0
  103. package/dist/cliproxy/quota/quota-fetcher/http-client.d.ts.map +1 -0
  104. package/dist/cliproxy/quota/quota-fetcher/http-client.js +199 -0
  105. package/dist/cliproxy/quota/quota-fetcher/http-client.js.map +1 -0
  106. package/dist/cliproxy/quota/quota-fetcher/project-lookup.d.ts +16 -0
  107. package/dist/cliproxy/quota/quota-fetcher/project-lookup.d.ts.map +1 -0
  108. package/dist/cliproxy/quota/quota-fetcher/project-lookup.js +89 -0
  109. package/dist/cliproxy/quota/quota-fetcher/project-lookup.js.map +1 -0
  110. package/dist/cliproxy/quota/quota-fetcher/status-classifier.d.ts +29 -0
  111. package/dist/cliproxy/quota/quota-fetcher/status-classifier.d.ts.map +1 -0
  112. package/dist/cliproxy/quota/quota-fetcher/status-classifier.js +168 -0
  113. package/dist/cliproxy/quota/quota-fetcher/status-classifier.js.map +1 -0
  114. package/dist/cliproxy/quota/quota-fetcher/types.d.ts +165 -0
  115. package/dist/cliproxy/quota/quota-fetcher/types.d.ts.map +1 -0
  116. package/dist/cliproxy/quota/quota-fetcher/types.js +9 -0
  117. package/dist/cliproxy/quota/quota-fetcher/types.js.map +1 -0
  118. package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
  119. package/dist/cliproxy/quota/quota-fetcher-claude.js +14 -3
  120. package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
  121. package/dist/cliproxy/quota/quota-fetcher-codex.d.ts.map +1 -1
  122. package/dist/cliproxy/quota/quota-fetcher-codex.js +36 -9
  123. package/dist/cliproxy/quota/quota-fetcher-codex.js.map +1 -1
  124. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.d.ts +26 -0
  125. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.d.ts.map +1 -0
  126. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.js +132 -0
  127. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/auth-file-discovery.js.map +1 -0
  128. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.d.ts +23 -0
  129. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.d.ts.map +1 -0
  130. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.js +54 -0
  131. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/bucket-building.js.map +1 -0
  132. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.d.ts +26 -0
  133. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.d.ts.map +1 -0
  134. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.js +29 -0
  135. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/constants.js.map +1 -0
  136. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.d.ts +61 -0
  137. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.d.ts.map +1 -0
  138. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.js +259 -0
  139. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/error-parsing.js.map +1 -0
  140. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.d.ts +20 -0
  141. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.d.ts.map +1 -0
  142. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.js +38 -0
  143. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/index.js.map +1 -0
  144. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.d.ts +82 -0
  145. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.d.ts.map +1 -0
  146. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.js +263 -0
  147. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/managed-request.js.map +1 -0
  148. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.d.ts +46 -0
  149. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.d.ts.map +1 -0
  150. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.js +188 -0
  151. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/quota-fetcher.js.map +1 -0
  152. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.d.ts +35 -0
  153. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.d.ts.map +1 -0
  154. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.js +65 -0
  155. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/shared-utils.js.map +1 -0
  156. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.d.ts +37 -0
  157. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.d.ts.map +1 -0
  158. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.js +117 -0
  159. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/supplementary-metadata.js.map +1 -0
  160. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.d.ts +31 -0
  161. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.d.ts.map +1 -0
  162. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.js +77 -0
  163. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/token-parsing.js.map +1 -0
  164. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.d.ts +114 -0
  165. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.d.ts.map +1 -0
  166. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.js +10 -0
  167. package/dist/cliproxy/quota/quota-fetcher-gemini-cli/types.js.map +1 -0
  168. package/dist/cliproxy/quota/quota-fetcher-gemini-cli.d.ts +13 -58
  169. package/dist/cliproxy/quota/quota-fetcher-gemini-cli.d.ts.map +1 -1
  170. package/dist/cliproxy/quota/quota-fetcher-gemini-cli.js +20 -819
  171. package/dist/cliproxy/quota/quota-fetcher-gemini-cli.js.map +1 -1
  172. package/dist/cliproxy/quota/quota-fetcher-ghcp.d.ts.map +1 -1
  173. package/dist/cliproxy/quota/quota-fetcher-ghcp.js +19 -4
  174. package/dist/cliproxy/quota/quota-fetcher-ghcp.js.map +1 -1
  175. package/dist/cliproxy/quota/quota-fetcher.d.ts +12 -108
  176. package/dist/cliproxy/quota/quota-fetcher.d.ts.map +1 -1
  177. package/dist/cliproxy/quota/quota-fetcher.js +23 -766
  178. package/dist/cliproxy/quota/quota-fetcher.js.map +1 -1
  179. package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
  180. package/dist/cliproxy/quota/quota-manager.js +7 -3
  181. package/dist/cliproxy/quota/quota-manager.js.map +1 -1
  182. package/dist/cliproxy/routing/routing-strategy.d.ts.map +1 -1
  183. package/dist/cliproxy/routing/routing-strategy.js +11 -3
  184. package/dist/cliproxy/routing/routing-strategy.js.map +1 -1
  185. package/dist/commands/bar/bar-server-probe.d.ts +16 -3
  186. package/dist/commands/bar/bar-server-probe.d.ts.map +1 -1
  187. package/dist/commands/bar/bar-server-probe.js +83 -18
  188. package/dist/commands/bar/bar-server-probe.js.map +1 -1
  189. package/dist/commands/bar/help-subcommand.d.ts.map +1 -1
  190. package/dist/commands/bar/help-subcommand.js +2 -2
  191. package/dist/commands/bar/help-subcommand.js.map +1 -1
  192. package/dist/commands/bar/install-subcommand.d.ts +4 -10
  193. package/dist/commands/bar/install-subcommand.d.ts.map +1 -1
  194. package/dist/commands/bar/install-subcommand.js +44 -53
  195. package/dist/commands/bar/install-subcommand.js.map +1 -1
  196. package/dist/commands/bar/launch-subcommand.d.ts +11 -1
  197. package/dist/commands/bar/launch-subcommand.d.ts.map +1 -1
  198. package/dist/commands/bar/launch-subcommand.js +82 -15
  199. package/dist/commands/bar/launch-subcommand.js.map +1 -1
  200. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts +26 -0
  201. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts.map +1 -0
  202. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js +82 -0
  203. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js.map +1 -0
  204. package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.d.ts +41 -0
  205. package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.d.ts.map +1 -0
  206. package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.js +202 -0
  207. package/dist/commands/cliproxy/quota-subcommand/codex-window-helpers.js.map +1 -0
  208. package/dist/commands/cliproxy/quota-subcommand/format-helpers.d.ts +32 -0
  209. package/dist/commands/cliproxy/quota-subcommand/format-helpers.d.ts.map +1 -0
  210. package/dist/commands/cliproxy/quota-subcommand/format-helpers.js +90 -0
  211. package/dist/commands/cliproxy/quota-subcommand/format-helpers.js.map +1 -0
  212. package/dist/commands/cliproxy/quota-subcommand/handlers.d.ts +25 -0
  213. package/dist/commands/cliproxy/quota-subcommand/handlers.d.ts.map +1 -0
  214. package/dist/commands/cliproxy/quota-subcommand/handlers.js +245 -0
  215. package/dist/commands/cliproxy/quota-subcommand/handlers.js.map +1 -0
  216. package/dist/commands/cliproxy/quota-subcommand/profile-args.d.ts +10 -0
  217. package/dist/commands/cliproxy/quota-subcommand/profile-args.d.ts.map +1 -0
  218. package/dist/commands/cliproxy/quota-subcommand/profile-args.js +37 -0
  219. package/dist/commands/cliproxy/quota-subcommand/profile-args.js.map +1 -0
  220. package/dist/commands/cliproxy/quota-subcommand/provider-runtime.d.ts +12 -0
  221. package/dist/commands/cliproxy/quota-subcommand/provider-runtime.d.ts.map +1 -0
  222. package/dist/commands/cliproxy/quota-subcommand/provider-runtime.js +64 -0
  223. package/dist/commands/cliproxy/quota-subcommand/provider-runtime.js.map +1 -0
  224. package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.d.ts +27 -0
  225. package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.d.ts.map +1 -0
  226. package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.js +74 -0
  227. package/dist/commands/cliproxy/quota-subcommand/quota-failure-display.js.map +1 -0
  228. package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.d.ts +10 -0
  229. package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.d.ts.map +1 -0
  230. package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.js +46 -0
  231. package/dist/commands/cliproxy/quota-subcommand/sections/antigravity.js.map +1 -0
  232. package/dist/commands/cliproxy/quota-subcommand/sections/claude.d.ts +14 -0
  233. package/dist/commands/cliproxy/quota-subcommand/sections/claude.d.ts.map +1 -0
  234. package/dist/commands/cliproxy/quota-subcommand/sections/claude.js +68 -0
  235. package/dist/commands/cliproxy/quota-subcommand/sections/claude.js.map +1 -0
  236. package/dist/commands/cliproxy/quota-subcommand/sections/codex.d.ts +14 -0
  237. package/dist/commands/cliproxy/quota-subcommand/sections/codex.d.ts.map +1 -0
  238. package/dist/commands/cliproxy/quota-subcommand/sections/codex.js +82 -0
  239. package/dist/commands/cliproxy/quota-subcommand/sections/codex.js.map +1 -0
  240. package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.d.ts +14 -0
  241. package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.d.ts.map +1 -0
  242. package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.js +61 -0
  243. package/dist/commands/cliproxy/quota-subcommand/sections/gemini-cli.js.map +1 -0
  244. package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.d.ts +13 -0
  245. package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.d.ts.map +1 -0
  246. package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.js +63 -0
  247. package/dist/commands/cliproxy/quota-subcommand/sections/ghcp.js.map +1 -0
  248. package/dist/commands/cliproxy/quota-subcommand/test-exports.d.ts +19 -0
  249. package/dist/commands/cliproxy/quota-subcommand/test-exports.d.ts.map +1 -0
  250. package/dist/commands/cliproxy/quota-subcommand/test-exports.js +22 -0
  251. package/dist/commands/cliproxy/quota-subcommand/test-exports.js.map +1 -0
  252. package/dist/commands/cliproxy/quota-subcommand/types.d.ts +42 -0
  253. package/dist/commands/cliproxy/quota-subcommand/types.d.ts.map +1 -0
  254. package/dist/commands/cliproxy/quota-subcommand/types.js +9 -0
  255. package/dist/commands/cliproxy/quota-subcommand/types.js.map +1 -0
  256. package/dist/commands/cliproxy/quota-subcommand.d.ts +14 -36
  257. package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
  258. package/dist/commands/cliproxy/quota-subcommand.js +21 -872
  259. package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
  260. package/dist/commands/command-catalog.js +1 -1
  261. package/dist/commands/command-catalog.js.map +1 -1
  262. package/dist/commands/config-channels-command.d.ts +1 -1
  263. package/dist/commands/config-channels-command.d.ts.map +1 -1
  264. package/dist/commands/config-channels-command.js +3 -3
  265. package/dist/commands/config-channels-command.js.map +1 -1
  266. package/dist/commands/config-command-options.d.ts.map +1 -1
  267. package/dist/commands/config-command-options.js +11 -2
  268. package/dist/commands/config-command-options.js.map +1 -1
  269. package/dist/commands/persist-command/arg-parsing.d.ts +14 -0
  270. package/dist/commands/persist-command/arg-parsing.d.ts.map +1 -0
  271. package/dist/commands/persist-command/arg-parsing.js +84 -0
  272. package/dist/commands/persist-command/arg-parsing.js.map +1 -0
  273. package/dist/commands/persist-command/backup-rotation.d.ts +23 -0
  274. package/dist/commands/persist-command/backup-rotation.d.ts.map +1 -0
  275. package/dist/commands/persist-command/backup-rotation.js +260 -0
  276. package/dist/commands/persist-command/backup-rotation.js.map +1 -0
  277. package/dist/commands/persist-command/handler.d.ts +10 -0
  278. package/dist/commands/persist-command/handler.d.ts.map +1 -0
  279. package/dist/commands/persist-command/handler.js +267 -0
  280. package/dist/commands/persist-command/handler.js.map +1 -0
  281. package/dist/commands/persist-command/help.d.ts +9 -0
  282. package/dist/commands/persist-command/help.d.ts.map +1 -0
  283. package/dist/commands/persist-command/help.js +86 -0
  284. package/dist/commands/persist-command/help.js.map +1 -0
  285. package/dist/commands/persist-command/receipt.d.ts +13 -0
  286. package/dist/commands/persist-command/receipt.d.ts.map +1 -0
  287. package/dist/commands/persist-command/receipt.js +102 -0
  288. package/dist/commands/persist-command/receipt.js.map +1 -0
  289. package/dist/commands/persist-command/secret-detection.d.ts +11 -0
  290. package/dist/commands/persist-command/secret-detection.d.ts.map +1 -0
  291. package/dist/commands/persist-command/secret-detection.js +54 -0
  292. package/dist/commands/persist-command/secret-detection.js.map +1 -0
  293. package/dist/commands/persist-command/secure-file.d.ts +21 -0
  294. package/dist/commands/persist-command/secure-file.d.ts.map +1 -0
  295. package/dist/commands/persist-command/secure-file.js +231 -0
  296. package/dist/commands/persist-command/secure-file.js.map +1 -0
  297. package/dist/commands/persist-command/types.d.ts +42 -0
  298. package/dist/commands/persist-command/types.d.ts.map +1 -0
  299. package/dist/commands/persist-command/types.js +34 -0
  300. package/dist/commands/persist-command/types.js.map +1 -0
  301. package/dist/commands/persist-command.d.ts +7 -2
  302. package/dist/commands/persist-command.d.ts.map +1 -1
  303. package/dist/commands/persist-command.js +17 -933
  304. package/dist/commands/persist-command.js.map +1 -1
  305. package/dist/config/config-loader-facade.d.ts +1 -1
  306. package/dist/config/config-loader-facade.d.ts.map +1 -1
  307. package/dist/config/config-loader-facade.js +3 -1
  308. package/dist/config/config-loader-facade.js.map +1 -1
  309. package/dist/config/loader/config-getters.d.ts +16 -0
  310. package/dist/config/loader/config-getters.d.ts.map +1 -1
  311. package/dist/config/loader/config-getters.js +33 -1
  312. package/dist/config/loader/config-getters.js.map +1 -1
  313. package/dist/config/loader/defaults-merger.d.ts.map +1 -1
  314. package/dist/config/loader/defaults-merger.js +4 -0
  315. package/dist/config/loader/defaults-merger.js.map +1 -1
  316. package/dist/config/loader/yaml-serializer.d.ts.map +1 -1
  317. package/dist/config/loader/yaml-serializer.js +13 -0
  318. package/dist/config/loader/yaml-serializer.js.map +1 -1
  319. package/dist/config/schemas/index.d.ts +2 -0
  320. package/dist/config/schemas/index.d.ts.map +1 -1
  321. package/dist/config/schemas/index.js +5 -1
  322. package/dist/config/schemas/index.js.map +1 -1
  323. package/dist/config/schemas/runtime.d.ts +57 -0
  324. package/dist/config/schemas/runtime.d.ts.map +1 -0
  325. package/dist/config/schemas/runtime.js +51 -0
  326. package/dist/config/schemas/runtime.js.map +1 -0
  327. package/dist/config/schemas/unified-config.d.ts +3 -0
  328. package/dist/config/schemas/unified-config.d.ts.map +1 -1
  329. package/dist/config/schemas/unified-config.js.map +1 -1
  330. package/dist/config/unified-config-loader.d.ts +1 -1
  331. package/dist/config/unified-config-loader.d.ts.map +1 -1
  332. package/dist/config/unified-config-loader.js +3 -1
  333. package/dist/config/unified-config-loader.js.map +1 -1
  334. package/dist/copilot/copilot-executor.js +25 -25
  335. package/dist/copilot/copilot-executor.js.map +1 -1
  336. package/dist/cursor/cursor-daemon-entry.d.ts.map +1 -1
  337. package/dist/cursor/cursor-daemon-entry.js +34 -9
  338. package/dist/cursor/cursor-daemon-entry.js.map +1 -1
  339. package/dist/cursor/cursor-daemon.d.ts.map +1 -1
  340. package/dist/cursor/cursor-daemon.js +1 -0
  341. package/dist/cursor/cursor-daemon.js.map +1 -1
  342. package/dist/cursor/cursor-profile-executor.d.ts.map +1 -1
  343. package/dist/cursor/cursor-profile-executor.js +18 -17
  344. package/dist/cursor/cursor-profile-executor.js.map +1 -1
  345. package/dist/delegation/delegation-handler.d.ts.map +1 -1
  346. package/dist/delegation/delegation-handler.js +29 -23
  347. package/dist/delegation/delegation-handler.js.map +1 -1
  348. package/dist/delegation/headless-executor.d.ts +1 -0
  349. package/dist/delegation/headless-executor.d.ts.map +1 -1
  350. package/dist/delegation/headless-executor.js +36 -15
  351. package/dist/delegation/headless-executor.js.map +1 -1
  352. package/dist/delegation/session-manager.d.ts.map +1 -1
  353. package/dist/delegation/session-manager.js +12 -4
  354. package/dist/delegation/session-manager.js.map +1 -1
  355. package/dist/dispatcher/cli-argument-parser.d.ts +1 -1
  356. package/dist/dispatcher/cli-argument-parser.d.ts.map +1 -1
  357. package/dist/dispatcher/cli-argument-parser.js +24 -23
  358. package/dist/dispatcher/cli-argument-parser.js.map +1 -1
  359. package/dist/dispatcher/flows/cliproxy-flow.d.ts.map +1 -1
  360. package/dist/dispatcher/flows/cliproxy-flow.js +12 -15
  361. package/dist/dispatcher/flows/cliproxy-flow.js.map +1 -1
  362. package/dist/dispatcher/flows/copilot-flow.js +1 -1
  363. package/dist/dispatcher/flows/copilot-flow.js.map +1 -1
  364. package/dist/dispatcher/flows/cursor-flow.js +1 -1
  365. package/dist/dispatcher/flows/cursor-flow.js.map +1 -1
  366. package/dist/dispatcher/flows/settings-flow.d.ts.map +1 -1
  367. package/dist/dispatcher/flows/settings-flow.js +32 -29
  368. package/dist/dispatcher/flows/settings-flow.js.map +1 -1
  369. package/dist/dispatcher/profile-resolver.d.ts +1 -1
  370. package/dist/dispatcher/profile-resolver.d.ts.map +1 -1
  371. package/dist/dispatcher/profile-resolver.js +36 -23
  372. package/dist/dispatcher/profile-resolver.js.map +1 -1
  373. package/dist/docker/supervisord-lifecycle.d.ts.map +1 -1
  374. package/dist/docker/supervisord-lifecycle.js +5 -1
  375. package/dist/docker/supervisord-lifecycle.js.map +1 -1
  376. package/dist/errors/error-types.d.ts +26 -22
  377. package/dist/errors/error-types.d.ts.map +1 -1
  378. package/dist/errors/error-types.js +15 -12
  379. package/dist/errors/error-types.js.map +1 -1
  380. package/dist/errors/exit-codes.d.ts +20 -13
  381. package/dist/errors/exit-codes.d.ts.map +1 -1
  382. package/dist/errors/exit-codes.js +32 -28
  383. package/dist/errors/exit-codes.js.map +1 -1
  384. package/dist/glmt/delta-accumulator.d.ts +1 -0
  385. package/dist/glmt/delta-accumulator.d.ts.map +1 -1
  386. package/dist/glmt/delta-accumulator.js +12 -4
  387. package/dist/glmt/delta-accumulator.js.map +1 -1
  388. package/dist/glmt/glmt-proxy.d.ts.map +1 -1
  389. package/dist/glmt/glmt-proxy.js +39 -10
  390. package/dist/glmt/glmt-proxy.js.map +1 -1
  391. package/dist/glmt/glmt-transformer.d.ts.map +1 -1
  392. package/dist/glmt/glmt-transformer.js +1 -4
  393. package/dist/glmt/glmt-transformer.js.map +1 -1
  394. package/dist/glmt/pipeline/request-transformer.d.ts.map +1 -1
  395. package/dist/glmt/pipeline/request-transformer.js +5 -1
  396. package/dist/glmt/pipeline/request-transformer.js.map +1 -1
  397. package/dist/glmt/pipeline/response-builder.d.ts.map +1 -1
  398. package/dist/glmt/pipeline/response-builder.js +7 -3
  399. package/dist/glmt/pipeline/response-builder.js.map +1 -1
  400. package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -1
  401. package/dist/glmt/pipeline/stream-parser.js +11 -5
  402. package/dist/glmt/pipeline/stream-parser.js.map +1 -1
  403. package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -1
  404. package/dist/glmt/pipeline/tool-call-handler.js +7 -1
  405. package/dist/glmt/pipeline/tool-call-handler.js.map +1 -1
  406. package/dist/glmt/sse-parser.d.ts +1 -0
  407. package/dist/glmt/sse-parser.d.ts.map +1 -1
  408. package/dist/glmt/sse-parser.js +7 -3
  409. package/dist/glmt/sse-parser.js.map +1 -1
  410. package/dist/management/shared-manager/fs-helpers.d.ts +69 -0
  411. package/dist/management/shared-manager/fs-helpers.d.ts.map +1 -0
  412. package/dist/management/shared-manager/fs-helpers.js +241 -0
  413. package/dist/management/shared-manager/fs-helpers.js.map +1 -0
  414. package/dist/management/shared-manager/migrations.d.ts +21 -0
  415. package/dist/management/shared-manager/migrations.d.ts.map +1 -0
  416. package/dist/management/shared-manager/migrations.js +187 -0
  417. package/dist/management/shared-manager/migrations.js.map +1 -0
  418. package/dist/management/shared-manager/orchestrator.d.ts +87 -0
  419. package/dist/management/shared-manager/orchestrator.d.ts.map +1 -0
  420. package/dist/management/shared-manager/orchestrator.js +161 -0
  421. package/dist/management/shared-manager/orchestrator.js.map +1 -0
  422. package/dist/management/shared-manager/plugin-layout-internals.d.ts +42 -0
  423. package/dist/management/shared-manager/plugin-layout-internals.d.ts.map +1 -0
  424. package/dist/management/shared-manager/plugin-layout-internals.js +192 -0
  425. package/dist/management/shared-manager/plugin-layout-internals.js.map +1 -0
  426. package/dist/management/shared-manager/plugin-metadata-normalizer.d.ts +53 -0
  427. package/dist/management/shared-manager/plugin-metadata-normalizer.d.ts.map +1 -0
  428. package/dist/management/shared-manager/plugin-metadata-normalizer.js +253 -0
  429. package/dist/management/shared-manager/plugin-metadata-normalizer.js.map +1 -0
  430. package/dist/management/shared-manager/project-context-sync.d.ts +36 -0
  431. package/dist/management/shared-manager/project-context-sync.d.ts.map +1 -0
  432. package/dist/management/shared-manager/project-context-sync.js +204 -0
  433. package/dist/management/shared-manager/project-context-sync.js.map +1 -0
  434. package/dist/management/shared-manager/project-memory-sync.d.ts +21 -0
  435. package/dist/management/shared-manager/project-memory-sync.d.ts.map +1 -0
  436. package/dist/management/shared-manager/project-memory-sync.js +113 -0
  437. package/dist/management/shared-manager/project-memory-sync.js.map +1 -0
  438. package/dist/management/shared-manager/shared-dir-linker.d.ts +41 -0
  439. package/dist/management/shared-manager/shared-dir-linker.d.ts.map +1 -0
  440. package/dist/management/shared-manager/shared-dir-linker.js +227 -0
  441. package/dist/management/shared-manager/shared-dir-linker.js.map +1 -0
  442. package/dist/management/shared-manager/symlink-helpers.d.ts +61 -0
  443. package/dist/management/shared-manager/symlink-helpers.d.ts.map +1 -0
  444. package/dist/management/shared-manager/symlink-helpers.js +243 -0
  445. package/dist/management/shared-manager/symlink-helpers.js.map +1 -0
  446. package/dist/management/shared-manager/types.d.ts +45 -0
  447. package/dist/management/shared-manager/types.d.ts.map +1 -0
  448. package/dist/management/shared-manager/types.js +57 -0
  449. package/dist/management/shared-manager/types.js.map +1 -0
  450. package/dist/management/shared-manager.d.ts +13 -160
  451. package/dist/management/shared-manager.d.ts.map +1 -1
  452. package/dist/management/shared-manager.js +18 -1294
  453. package/dist/management/shared-manager.js.map +1 -1
  454. package/dist/proxy/proxy-daemon-entry.js +1 -1
  455. package/dist/proxy/proxy-daemon-entry.js.map +1 -1
  456. package/dist/proxy/server/messages-route.d.ts +10 -0
  457. package/dist/proxy/server/messages-route.d.ts.map +1 -1
  458. package/dist/proxy/server/messages-route.js +34 -7
  459. package/dist/proxy/server/messages-route.js.map +1 -1
  460. package/dist/proxy/server/proxy-server.d.ts.map +1 -1
  461. package/dist/proxy/server/proxy-server.js +1 -1
  462. package/dist/proxy/server/proxy-server.js.map +1 -1
  463. package/dist/proxy/transformers/sse-stream-transformer.d.ts.map +1 -1
  464. package/dist/proxy/transformers/sse-stream-transformer.js +12 -17
  465. package/dist/proxy/transformers/sse-stream-transformer.js.map +1 -1
  466. package/dist/services/logging/index.d.ts +1 -1
  467. package/dist/services/logging/index.d.ts.map +1 -1
  468. package/dist/services/logging/index.js +6 -1
  469. package/dist/services/logging/index.js.map +1 -1
  470. package/dist/services/logging/log-context.d.ts +27 -2
  471. package/dist/services/logging/log-context.d.ts.map +1 -1
  472. package/dist/services/logging/log-context.js +43 -4
  473. package/dist/services/logging/log-context.js.map +1 -1
  474. package/dist/services/logging/log-redaction.d.ts +9 -0
  475. package/dist/services/logging/log-redaction.d.ts.map +1 -1
  476. package/dist/services/logging/log-redaction.js +31 -3
  477. package/dist/services/logging/log-redaction.js.map +1 -1
  478. package/dist/services/logging/logger.js +2 -2
  479. package/dist/services/logging/logger.js.map +1 -1
  480. package/dist/shared/provider-preset-catalog.d.ts +1 -1
  481. package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
  482. package/dist/shared/provider-preset-catalog.js +21 -7
  483. package/dist/shared/provider-preset-catalog.js.map +1 -1
  484. package/dist/targets/claude-adapter.d.ts.map +1 -1
  485. package/dist/targets/claude-adapter.js +5 -0
  486. package/dist/targets/claude-adapter.js.map +1 -1
  487. package/dist/targets/codex-adapter.d.ts.map +1 -1
  488. package/dist/targets/codex-adapter.js +11 -10
  489. package/dist/targets/codex-adapter.js.map +1 -1
  490. package/dist/targets/codex-detector.d.ts.map +1 -1
  491. package/dist/targets/codex-detector.js +14 -0
  492. package/dist/targets/codex-detector.js.map +1 -1
  493. package/dist/targets/droid-adapter.d.ts.map +1 -1
  494. package/dist/targets/droid-adapter.js +12 -12
  495. package/dist/targets/droid-adapter.js.map +1 -1
  496. package/dist/ui/assets/{Trans-RG_sMDEu.js → Trans-GYzYLs2D.js} +1 -1
  497. package/dist/ui/assets/{accounts-yTXURc-q.js → accounts-DC1QuyI9.js} +1 -1
  498. package/dist/ui/assets/{alert-dialog-DjvPgzFs.js → alert-dialog-6SiedqmE.js} +1 -1
  499. package/dist/ui/assets/{api-Ck1dtNEM.js → api-3s21dbNJ.js} +1 -1
  500. package/dist/ui/assets/{auth-section-DBnY_LPz.js → auth-section-XBfNgVN4.js} +1 -1
  501. package/dist/ui/assets/{backups-section-Ci-uL4Of.js → backups-section-BidiiVlq.js} +1 -1
  502. package/dist/ui/assets/{channels-BeS9O5q0.js → channels-pfgPUDGt.js} +1 -1
  503. package/dist/ui/assets/{checkbox-DFeFDZBp.js → checkbox-CJw_-nvC.js} +1 -1
  504. package/dist/ui/assets/{claude-extension-DS5qN19Z.js → claude-extension-BIIUOvTJ.js} +1 -1
  505. package/dist/ui/assets/{cliproxy-D7HJH4mZ.js → cliproxy-Cq8OX0Pu.js} +1 -1
  506. package/dist/ui/assets/{cliproxy-ai-providers-oJQZXrtc.js → cliproxy-ai-providers-DI760ZF0.js} +1 -1
  507. package/dist/ui/assets/{cliproxy-control-panel-2mRPEcRj.js → cliproxy-control-panel-CBqvpOqj.js} +1 -1
  508. package/dist/ui/assets/{codex-D0AUQ6jA.js → codex-DL4OLBUu.js} +1 -1
  509. package/dist/ui/assets/{confirm-dialog-B37-CVuq.js → confirm-dialog-CC_Cc3EO.js} +1 -1
  510. package/dist/ui/assets/{copilot-KaaW-mko.js → copilot-D2kEhTXR.js} +1 -1
  511. package/dist/ui/assets/{cursor-BKiTgYi5.js → cursor-BashLrYk.js} +1 -1
  512. package/dist/ui/assets/{droid-DHdqGnFw.js → droid-DaKTINFL.js} +1 -1
  513. package/dist/ui/assets/{globalenv-section-SfZO97nU.js → globalenv-section-BQicL8L0.js} +1 -1
  514. package/dist/ui/assets/{health-CSRS9O0D.js → health-bRbE_ADg.js} +1 -1
  515. package/dist/ui/assets/{index-CGgavq2X.js → index-B2JEyN3d.js} +36 -36
  516. package/dist/ui/assets/{index-Cu_F55_O.js → index-BwZdl1HU.js} +1 -1
  517. package/dist/ui/assets/{index-DWUuSBUe.js → index-CgeAb1-K.js} +1 -1
  518. package/dist/ui/assets/{index-iQuEEGbH.js → index-DAQ0qIQ_.js} +1 -1
  519. package/dist/ui/assets/{index-ChTYEBCZ.js → index-O2x1grGh.js} +1 -1
  520. package/dist/ui/assets/{index-DycwEe96.js → index-WA7tK6np.js} +1 -1
  521. package/dist/ui/assets/{index-DJ66NrBH.js → index-mf2X1GwS.js} +1 -1
  522. package/dist/ui/assets/{logs-tiZ_51mo.js → logs-qrBHUJ0H.js} +1 -1
  523. package/dist/ui/assets/{masked-input-D9FVoeMA.js → masked-input-CXwQ4E-g.js} +1 -1
  524. package/dist/ui/assets/{proxy-status-widget-2k26d8pS.js → proxy-status-widget-DPz4nCzR.js} +1 -1
  525. package/dist/ui/assets/{raw-json-settings-editor-panel-CguBh93H.js → raw-json-settings-editor-panel-CcvsWVh1.js} +1 -1
  526. package/dist/ui/assets/{searchable-select-C4wShshD.js → searchable-select-EXSjNCRu.js} +1 -1
  527. package/dist/ui/assets/{separator-mvGlDdEW.js → separator-D2CTfWBQ.js} +1 -1
  528. package/dist/ui/assets/{shared-Ck0yAwbs.js → shared-DpgzhFqe.js} +1 -1
  529. package/dist/ui/assets/{table-DrUJOxKL.js → table-DwbiGRYk.js} +1 -1
  530. package/dist/ui/assets/{updates-BVHBFcq8.js → updates-D8jfIb2y.js} +1 -1
  531. package/dist/ui/assets/{use-accounts-DLtuaniS.js → use-accounts-Bwtpnx-x.js} +1 -1
  532. package/dist/ui/index.html +1 -1
  533. package/dist/utils/bar-auth-token.d.ts +4 -0
  534. package/dist/utils/bar-auth-token.d.ts.map +1 -0
  535. package/dist/utils/bar-auth-token.js +60 -0
  536. package/dist/utils/bar-auth-token.js.map +1 -0
  537. package/dist/utils/browser/browser-settings.d.ts +3 -1
  538. package/dist/utils/browser/browser-settings.d.ts.map +1 -1
  539. package/dist/utils/browser/browser-settings.js +2 -2
  540. package/dist/utils/browser/browser-settings.js.map +1 -1
  541. package/dist/utils/browser/browser-setup.d.ts.map +1 -1
  542. package/dist/utils/browser/browser-setup.js +3 -1
  543. package/dist/utils/browser/browser-setup.js.map +1 -1
  544. package/dist/utils/browser/browser-status.d.ts.map +1 -1
  545. package/dist/utils/browser/browser-status.js +4 -2
  546. package/dist/utils/browser/browser-status.js.map +1 -1
  547. package/dist/utils/fetch-proxy-setup.d.ts +3 -2
  548. package/dist/utils/fetch-proxy-setup.d.ts.map +1 -1
  549. package/dist/utils/fetch-proxy-setup.js +10 -6
  550. package/dist/utils/fetch-proxy-setup.js.map +1 -1
  551. package/dist/utils/image-analysis/mcp-installer.d.ts.map +1 -1
  552. package/dist/utils/image-analysis/mcp-installer.js +16 -13
  553. package/dist/utils/image-analysis/mcp-installer.js.map +1 -1
  554. package/dist/utils/websearch/index.d.ts +1 -1
  555. package/dist/utils/websearch/index.d.ts.map +1 -1
  556. package/dist/utils/websearch/index.js +2 -1
  557. package/dist/utils/websearch/index.js.map +1 -1
  558. package/dist/utils/websearch/mcp-installer.d.ts +8 -0
  559. package/dist/utils/websearch/mcp-installer.d.ts.map +1 -1
  560. package/dist/utils/websearch/mcp-installer.js +34 -13
  561. package/dist/utils/websearch/mcp-installer.js.map +1 -1
  562. package/dist/utils/websearch-manager.d.ts +1 -1
  563. package/dist/utils/websearch-manager.d.ts.map +1 -1
  564. package/dist/utils/websearch-manager.js +2 -1
  565. package/dist/utils/websearch-manager.js.map +1 -1
  566. package/dist/web-server/middleware/request-logging-middleware.d.ts.map +1 -1
  567. package/dist/web-server/middleware/request-logging-middleware.js +14 -9
  568. package/dist/web-server/middleware/request-logging-middleware.js.map +1 -1
  569. package/dist/web-server/model-pricing.d.ts.map +1 -1
  570. package/dist/web-server/model-pricing.js +22 -2
  571. package/dist/web-server/model-pricing.js.map +1 -1
  572. package/dist/web-server/routes/bar-routes.d.ts +12 -1
  573. package/dist/web-server/routes/bar-routes.d.ts.map +1 -1
  574. package/dist/web-server/routes/bar-routes.js +22 -6
  575. package/dist/web-server/routes/bar-routes.js.map +1 -1
  576. package/dist/web-server/routes/claude-extension-routes.d.ts.map +1 -1
  577. package/dist/web-server/routes/claude-extension-routes.js +3 -2
  578. package/dist/web-server/routes/claude-extension-routes.js.map +1 -1
  579. package/dist/web-server/routes/cliproxy-auth-routes.d.ts +1 -0
  580. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  581. package/dist/web-server/routes/cliproxy-auth-routes.js +20 -5
  582. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  583. package/dist/web-server/routes/cliproxy-stats-routes/config-routes.d.ts +16 -0
  584. package/dist/web-server/routes/cliproxy-stats-routes/config-routes.d.ts.map +1 -0
  585. package/dist/web-server/routes/cliproxy-stats-routes/config-routes.js +219 -0
  586. package/dist/web-server/routes/cliproxy-stats-routes/config-routes.js.map +1 -0
  587. package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.d.ts +12 -0
  588. package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.d.ts.map +1 -0
  589. package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.js +153 -0
  590. package/dist/web-server/routes/cliproxy-stats-routes/error-log-routes.js.map +1 -0
  591. package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.d.ts +19 -0
  592. package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.d.ts.map +1 -0
  593. package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.js +38 -0
  594. package/dist/web-server/routes/cliproxy-stats-routes/quota-helpers.js.map +1 -0
  595. package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.d.ts +13 -0
  596. package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.d.ts.map +1 -0
  597. package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.js +195 -0
  598. package/dist/web-server/routes/cliproxy-stats-routes/quota-routes.js.map +1 -0
  599. package/dist/web-server/routes/cliproxy-stats-routes/restart-route.d.ts +17 -0
  600. package/dist/web-server/routes/cliproxy-stats-routes/restart-route.d.ts.map +1 -0
  601. package/dist/web-server/routes/cliproxy-stats-routes/restart-route.js +34 -0
  602. package/dist/web-server/routes/cliproxy-stats-routes/restart-route.js.map +1 -0
  603. package/dist/web-server/routes/cliproxy-stats-routes/router.d.ts +10 -0
  604. package/dist/web-server/routes/cliproxy-stats-routes/router.d.ts.map +1 -0
  605. package/dist/web-server/routes/cliproxy-stats-routes/router.js +245 -0
  606. package/dist/web-server/routes/cliproxy-stats-routes/router.js.map +1 -0
  607. package/dist/web-server/routes/cliproxy-stats-routes/shared.d.ts +35 -0
  608. package/dist/web-server/routes/cliproxy-stats-routes/shared.d.ts.map +1 -0
  609. package/dist/web-server/routes/cliproxy-stats-routes/shared.js +59 -0
  610. package/dist/web-server/routes/cliproxy-stats-routes/shared.js.map +1 -0
  611. package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.d.ts +44 -0
  612. package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.d.ts.map +1 -0
  613. package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.js +66 -0
  614. package/dist/web-server/routes/cliproxy-stats-routes/version-helpers.js.map +1 -0
  615. package/dist/web-server/routes/cliproxy-stats-routes.d.ts +16 -57
  616. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  617. package/dist/web-server/routes/cliproxy-stats-routes.js +25 -926
  618. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  619. package/dist/web-server/routes/cliproxy-sync-routes.d.ts.map +1 -1
  620. package/dist/web-server/routes/cliproxy-sync-routes.js +9 -2
  621. package/dist/web-server/routes/cliproxy-sync-routes.js.map +1 -1
  622. package/dist/web-server/routes/copilot-settings-routes.d.ts.map +1 -1
  623. package/dist/web-server/routes/copilot-settings-routes.js +2 -1
  624. package/dist/web-server/routes/copilot-settings-routes.js.map +1 -1
  625. package/dist/web-server/routes/cursor-routes.d.ts.map +1 -1
  626. package/dist/web-server/routes/cursor-routes.js +3 -1
  627. package/dist/web-server/routes/cursor-routes.js.map +1 -1
  628. package/dist/web-server/routes/image-analysis-routes.d.ts.map +1 -1
  629. package/dist/web-server/routes/image-analysis-routes.js +2 -1
  630. package/dist/web-server/routes/image-analysis-routes.js.map +1 -1
  631. package/dist/web-server/routes/index.d.ts.map +1 -1
  632. package/dist/web-server/routes/index.js +6 -0
  633. package/dist/web-server/routes/index.js.map +1 -1
  634. package/dist/web-server/routes/persist-routes.d.ts.map +1 -1
  635. package/dist/web-server/routes/persist-routes.js +8 -1
  636. package/dist/web-server/routes/persist-routes.js.map +1 -1
  637. package/dist/web-server/routes/proxy-routes.d.ts.map +1 -1
  638. package/dist/web-server/routes/proxy-routes.js +33 -5
  639. package/dist/web-server/routes/proxy-routes.js.map +1 -1
  640. package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
  641. package/dist/web-server/routes/route-helpers.js +18 -6
  642. package/dist/web-server/routes/route-helpers.js.map +1 -1
  643. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  644. package/dist/web-server/routes/settings-routes.js +7 -6
  645. package/dist/web-server/routes/settings-routes.js.map +1 -1
  646. package/dist/web-server/usage/aggregator.d.ts.map +1 -1
  647. package/dist/web-server/usage/aggregator.js +8 -8
  648. package/dist/web-server/usage/aggregator.js.map +1 -1
  649. package/dist/web-server/usage/bar-analytics.d.ts +21 -0
  650. package/dist/web-server/usage/bar-analytics.d.ts.map +1 -1
  651. package/dist/web-server/usage/bar-analytics.js +78 -9
  652. package/dist/web-server/usage/bar-analytics.js.map +1 -1
  653. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts.map +1 -1
  654. package/dist/web-server/usage/cliproxy-usage-transformer.js +9 -4
  655. package/dist/web-server/usage/cliproxy-usage-transformer.js.map +1 -1
  656. package/dist/web-server/usage/codex-local-quota-collector.d.ts +2 -2
  657. package/dist/web-server/usage/codex-local-quota-collector.d.ts.map +1 -1
  658. package/dist/web-server/usage/codex-local-quota-collector.js +39 -11
  659. package/dist/web-server/usage/codex-local-quota-collector.js.map +1 -1
  660. package/dist/web-server/usage/handlers.d.ts.map +1 -1
  661. package/dist/web-server/usage/handlers.js +1 -1
  662. package/dist/web-server/usage/handlers.js.map +1 -1
  663. package/dist/web-server/usage/native-quota-collector.d.ts +37 -9
  664. package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -1
  665. package/dist/web-server/usage/native-quota-collector.js +226 -23
  666. package/dist/web-server/usage/native-quota-collector.js.map +1 -1
  667. package/package.json +1 -1
  668. package/scripts/ci-parity-gate.sh +31 -0
  669. package/scripts/generate-throw-error-baseline.js +103 -0
  670. package/scripts/github/stable-release-issue-cleanup-lib.mjs +51 -11
  671. package/scripts/hardening-inventory.js +62 -4
  672. package/scripts/maintainability-metrics.js +356 -0
@@ -2,11 +2,11 @@
2
2
  * Native subscription quota collector — the ONLY server-side fetch surface for
3
3
  * the user's own Claude Code + Codex subscription quota.
4
4
  *
5
- * The macOS bar reads localhost /api/bar/summary and NEVER calls Anthropic. All
6
- * Anthropic traffic originates here, under strict safety controls, because the
7
- * OAuth usage endpoint is undocumented and hostile to polling (persistent 429s,
8
- * no Retry-After, first-party-only policy). The controls below exist to protect
9
- * the user's account:
5
+ * The macOS bar reads localhost /api/bar/summary and NEVER calls Anthropic or
6
+ * ChatGPT. All upstream traffic originates here, under strict safety controls,
7
+ * because these endpoints are undocumented and hostile to polling (persistent
8
+ * 429s, no Retry-After, first-party-only policy). The controls below exist to
9
+ * protect the user's accounts:
10
10
  *
11
11
  * - long TTL (10 min) on-demand cache, never a tight timer loop
12
12
  * - in-flight coalescing so concurrent /summary calls share one fetch
@@ -14,18 +14,31 @@
14
14
  * - circuit breaker stops calling after repeated 429s for a cooldown
15
15
  * - serve-stale-on-failure; only omit a row when there is genuinely no data
16
16
  *
17
- * Codex is a pure local file read (no network), so it skips the network guards.
17
+ * Claude path: reads native credentials + polls api.anthropic.com/api/oauth/usage.
18
+ * Codex path: PRIMARY = live network (chatgpt.com/backend-api/wham/usage, via
19
+ * fetchCodexQuota), FALLBACK = local session logs (getCodexLocalQuota), mirroring
20
+ * the same safety pattern as the Claude path.
18
21
  */
19
22
  import { type ClaudeNativeCredentials } from './claude-native-credentials';
20
23
  import { type CodexLocalQuota } from './codex-local-quota-collector';
21
- import type { ClaudeQuotaResult } from '../../cliproxy/quota/quota-types';
24
+ import type { ClaudeQuotaResult, CodexQuotaResult } from '../../cliproxy/quota/quota-types';
22
25
  import type { BarSummaryRow } from '../routes/bar-routes';
23
26
  export interface NativeQuotaDeps {
24
27
  /** Read the native Claude Code credentials. */
25
28
  readCredentials?: () => ClaudeNativeCredentials | null;
26
29
  /** Fetch Claude quota with a directly-supplied native token. */
27
30
  fetchClaudeQuota?: (accessToken: string, accountId?: string) => Promise<ClaudeQuotaResult>;
28
- /** Read Codex quota from local session logs (zero network). */
31
+ /**
32
+ * Resolve the default Codex account ID for network quota fetch.
33
+ * Returns null when no Codex account is configured (bar omits the live path).
34
+ */
35
+ getDefaultCodexAccountId?: () => string | null;
36
+ /**
37
+ * Fetch Codex quota live from the network.
38
+ * Injected so tests never hit chatgpt.com.
39
+ */
40
+ fetchCodexNetworkQuota?: (accountId: string) => Promise<CodexQuotaResult>;
41
+ /** Read Codex quota from local session logs (zero network, fallback). */
29
42
  getCodexQuota?: () => Promise<CodexLocalQuota | null>;
30
43
  /** Clock seam for deterministic backoff/TTL/breaker tests. */
31
44
  now?: () => number;
@@ -39,6 +52,21 @@ export declare function resetNativeQuotaState(): void;
39
52
  *
40
53
  * Each path is independently try/caught so one failing source never blocks the
41
54
  * other or the response. Returns only rows that represent real data.
55
+ *
56
+ * `opts.force` bypasses the TTL short-circuit on both paths so a debounce-
57
+ * passing refresh re-pulls native rows live. The circuit breaker is always
58
+ * respected regardless of force (account protection).
59
+ */
60
+ export declare function getNativeAccountRows(deps?: NativeQuotaDeps, opts?: {
61
+ force?: boolean;
62
+ }): Promise<BarSummaryRow[]>;
63
+ /**
64
+ * Last-known native rows from cache, WITHOUT any fetch (instant, no network).
65
+ *
66
+ * Used as a non-blocking fallback by /summary: when a forced live re-pull
67
+ * overruns the native side-load budget, the response serves these cached rows
68
+ * instead of dropping the Claude/Codex cards entirely. The in-flight fetch keeps
69
+ * warming the cache, so the next poll shows the fresh values.
42
70
  */
43
- export declare function getNativeAccountRows(deps?: NativeQuotaDeps): Promise<BarSummaryRow[]>;
71
+ export declare function getCachedNativeAccountRows(): BarSummaryRow[];
44
72
  //# sourceMappingURL=native-quota-collector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-quota-collector.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/native-quota-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAKL,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AAgC7E,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC;IACvD,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3F,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACtD,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAqCD,6EAA6E;AAC7E,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAwUD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAU/F"}
1
+ {"version":3,"file":"native-quota-collector.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/native-quota-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAKL,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AAgC7E,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC;IACvD,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3F;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC/C;;;OAGG;IACH,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1E,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACtD,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAsCD,6EAA6E;AAC7E,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AA0gBD;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,eAAoB,EAC1B,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACzB,OAAO,CAAC,aAAa,EAAE,CAAC,CAW1B;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,IAAI,aAAa,EAAE,CAK5D"}
@@ -3,11 +3,11 @@
3
3
  * Native subscription quota collector — the ONLY server-side fetch surface for
4
4
  * the user's own Claude Code + Codex subscription quota.
5
5
  *
6
- * The macOS bar reads localhost /api/bar/summary and NEVER calls Anthropic. All
7
- * Anthropic traffic originates here, under strict safety controls, because the
8
- * OAuth usage endpoint is undocumented and hostile to polling (persistent 429s,
9
- * no Retry-After, first-party-only policy). The controls below exist to protect
10
- * the user's account:
6
+ * The macOS bar reads localhost /api/bar/summary and NEVER calls Anthropic or
7
+ * ChatGPT. All upstream traffic originates here, under strict safety controls,
8
+ * because these endpoints are undocumented and hostile to polling (persistent
9
+ * 429s, no Retry-After, first-party-only policy). The controls below exist to
10
+ * protect the user's accounts:
11
11
  *
12
12
  * - long TTL (10 min) on-demand cache, never a tight timer loop
13
13
  * - in-flight coalescing so concurrent /summary calls share one fetch
@@ -15,12 +15,17 @@
15
15
  * - circuit breaker stops calling after repeated 429s for a cooldown
16
16
  * - serve-stale-on-failure; only omit a row when there is genuinely no data
17
17
  *
18
- * Codex is a pure local file read (no network), so it skips the network guards.
18
+ * Claude path: reads native credentials + polls api.anthropic.com/api/oauth/usage.
19
+ * Codex path: PRIMARY = live network (chatgpt.com/backend-api/wham/usage, via
20
+ * fetchCodexQuota), FALLBACK = local session logs (getCodexLocalQuota), mirroring
21
+ * the same safety pattern as the Claude path.
19
22
  */
20
23
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.getNativeAccountRows = exports.resetNativeQuotaState = void 0;
24
+ exports.getCachedNativeAccountRows = exports.getNativeAccountRows = exports.resetNativeQuotaState = void 0;
22
25
  const claude_native_credentials_1 = require("./claude-native-credentials");
23
26
  const quota_fetcher_claude_1 = require("../../cliproxy/quota/quota-fetcher-claude");
27
+ const quota_fetcher_codex_1 = require("../../cliproxy/quota/quota-fetcher-codex");
28
+ const query_1 = require("../../cliproxy/accounts/query");
24
29
  const codex_local_quota_collector_1 = require("./codex-local-quota-collector");
25
30
  // ============================================================================
26
31
  // Safety constants (concrete, named, module-level)
@@ -52,9 +57,11 @@ function freshProviderState() {
52
57
  };
53
58
  }
54
59
  const claudeState = freshProviderState();
60
+ const codexState = freshProviderState();
55
61
  /** Reset all module state. Tests call this to avoid cross-test pollution. */
56
62
  function resetNativeQuotaState() {
57
63
  Object.assign(claudeState, freshProviderState());
64
+ Object.assign(codexState, freshProviderState());
58
65
  }
59
66
  exports.resetNativeQuotaState = resetNativeQuotaState;
60
67
  // ============================================================================
@@ -226,6 +233,68 @@ function buildCodexRow(quota, now) {
226
233
  ...(quota.staleAsOf ? { staleAsOf: quota.staleAsOf } : {}),
227
234
  };
228
235
  }
236
+ /**
237
+ * Build the Codex row from a LIVE network quota result.
238
+ *
239
+ * Uses coreUsage (5h/weekly) to produce QuotaWindowDetail entries with the same
240
+ * stable keys as the Claude path. quota_percentage = min remaining across present
241
+ * core windows. next_reset = soonest core resetAt. No staleAsOf on a live result.
242
+ */
243
+ function buildCodexNetworkRow(quota, now) {
244
+ const windows = [];
245
+ const fiveHour = quota.coreUsage?.fiveHour;
246
+ if (fiveHour) {
247
+ windows.push({
248
+ key: 'five_hour',
249
+ label: '5h',
250
+ usedPercent: 100 - fiveHour.remainingPercent,
251
+ remainingPercent: fiveHour.remainingPercent,
252
+ resetAt: fiveHour.resetAt,
253
+ windowMinutes: FIVE_HOUR_MINUTES,
254
+ });
255
+ }
256
+ const weekly = quota.coreUsage?.weekly;
257
+ if (weekly) {
258
+ windows.push({
259
+ key: 'seven_day',
260
+ label: 'week',
261
+ usedPercent: 100 - weekly.remainingPercent,
262
+ remainingPercent: weekly.remainingPercent,
263
+ resetAt: weekly.resetAt,
264
+ windowMinutes: SEVEN_DAY_MINUTES,
265
+ });
266
+ }
267
+ // quota_percentage = min remaining across the windows present (mirrors Claude derivation)
268
+ const coreWindows = [fiveHour, weekly].filter((w) => !!w);
269
+ const quotaPercentage = coreWindows.length > 0 ? Math.min(...coreWindows.map((w) => w.remainingPercent)) : null;
270
+ // next_reset = soonest resetAt across present core windows
271
+ const resets = coreWindows
272
+ .map((w) => w.resetAt)
273
+ .filter((r) => typeof r === 'string')
274
+ .map((r) => ({ iso: r, ms: new Date(r).getTime() }))
275
+ .filter((r) => Number.isFinite(r.ms))
276
+ .sort((a, b) => a.ms - b.ms);
277
+ const nextReset = resets.length > 0 ? resets[0].iso : null;
278
+ return {
279
+ account_id: CODEX_PROVIDER,
280
+ provider: CODEX_PROVIDER,
281
+ displayName: 'Codex',
282
+ tier: quota.planType ?? null,
283
+ paused: false,
284
+ quota_percentage: quotaPercentage,
285
+ quotaStatus: 'ok',
286
+ next_reset: nextReset,
287
+ is_default: false,
288
+ last_activity_at: null,
289
+ today_cost: null,
290
+ health: 'ok',
291
+ cached: false,
292
+ fetchedAt: new Date(now).toISOString(),
293
+ needsReauth: false,
294
+ // No staleAsOf — live data is always fresh.
295
+ ...(windows.length > 0 ? { quotaWindows: windows } : {}),
296
+ };
297
+ }
229
298
  /** Return the cached row marked cached=true (used for TTL + stale serving). */
230
299
  function serveCached(state) {
231
300
  if (!state.cachedRow)
@@ -235,14 +304,15 @@ function serveCached(state) {
235
304
  // ============================================================================
236
305
  // Claude path with full safety controls
237
306
  // ============================================================================
238
- async function collectClaudeRow(deps) {
307
+ async function collectClaudeRow(deps, force = false) {
239
308
  const now = (deps.now ?? Date.now)();
240
309
  const state = claudeState;
241
- // Serve from cache while within TTL — on-demand only, NO network.
242
- if (state.cachedRow && now - state.cachedAt < NATIVE_QUOTA_TTL_MS) {
310
+ // Serve from cache while within TTL — force bypasses TTL short-circuit.
311
+ if (!force && state.cachedRow && now - state.cachedAt < NATIVE_QUOTA_TTL_MS) {
243
312
  return serveCached(state);
244
313
  }
245
314
  // Breaker open or cooldown active -> zero network, serve stale (may be null).
315
+ // Force does NOT bypass the breaker — it protects the account.
246
316
  if (now < state.breakerOpenUntil || now < state.cooldownUntil) {
247
317
  return serveCached(state);
248
318
  }
@@ -338,20 +408,131 @@ async function collectClaudeRow(deps) {
338
408
  return state.pending;
339
409
  }
340
410
  // ============================================================================
341
- // Codex path (local read, no network guards needed)
411
+ // Codex path with live network as PRIMARY, local logs as FALLBACK
342
412
  // ============================================================================
343
- async function collectCodexRow(deps) {
413
+ async function collectCodexRow(deps, force = false) {
344
414
  const now = (deps.now ?? Date.now)();
345
- const getCodex = deps.getCodexQuota ?? codex_local_quota_collector_1.getCodexLocalQuota;
346
- try {
347
- const quota = await getCodex();
348
- if (!quota)
349
- return null; // exec-mode / no rate_limits -> omit the row
350
- return buildCodexRow(quota, now);
415
+ const state = codexState;
416
+ // Serve from cache while within TTL — force bypasses TTL short-circuit.
417
+ if (!force && state.cachedRow && now - state.cachedAt < NATIVE_QUOTA_TTL_MS) {
418
+ return serveCached(state);
351
419
  }
352
- catch {
353
- return null;
420
+ // Breaker open or cooldown active -> skip network, go to LOCAL fallback.
421
+ // Force does NOT bypass the breaker — it protects the account.
422
+ const breakerOrCooldownActive = now < state.breakerOpenUntil || now < state.cooldownUntil;
423
+ // Coalesce: concurrent callers past TTL share one in-flight resolution.
424
+ if (state.pending) {
425
+ return state.pending;
354
426
  }
427
+ const getDefaultAccountId = deps.getDefaultCodexAccountId ?? (() => (0, query_1.getDefaultAccount)('codex')?.id ?? null);
428
+ const fetchNetwork = deps.fetchCodexNetworkQuota ?? ((accountId) => (0, quota_fetcher_codex_1.fetchCodexQuota)(accountId));
429
+ const getCodex = deps.getCodexQuota ?? codex_local_quota_collector_1.getCodexLocalQuota;
430
+ const sleep = deps.sleep ?? defaultSleep;
431
+ state.pending = (async () => {
432
+ try {
433
+ // ----------------------------------------------------------------
434
+ // PRIMARY: live network fetch (skipped when breaker/cooldown active)
435
+ // ----------------------------------------------------------------
436
+ if (!breakerOrCooldownActive) {
437
+ const accountId = getDefaultAccountId();
438
+ if (accountId) {
439
+ const quota = await fetchNetwork(accountId);
440
+ if (quota.success) {
441
+ // A healthy response closes the breaker and clears backoff,
442
+ // regardless of content.
443
+ state.consecutive429 = 0;
444
+ state.breakerOpenUntil = 0;
445
+ state.cooldownUntil = 0;
446
+ state.backoffAttempt = 0;
447
+ // Only usable when at least one core window (5h/weekly) resolved. A
448
+ // success with empty coreUsage (only code-review/additional windows,
449
+ // or a changed payload) carries no glanceable signal — do NOT cache
450
+ // a contentless "ok" row or clobber a good cache; fall through to
451
+ // the local fallback so the bar shows real data instead.
452
+ if (quota.coreUsage?.fiveHour || quota.coreUsage?.weekly) {
453
+ const row = buildCodexNetworkRow(quota, now);
454
+ state.cachedRow = row;
455
+ state.cachedAt = now;
456
+ return { ...row, cached: false };
457
+ }
458
+ // else: fall through to LOCAL fallback below.
459
+ }
460
+ else if (quota.needsReauth) {
461
+ // Token expired -> reauth row; do NOT cache as a good value.
462
+ return {
463
+ account_id: CODEX_PROVIDER,
464
+ provider: CODEX_PROVIDER,
465
+ displayName: 'Codex',
466
+ tier: null,
467
+ paused: false,
468
+ quota_percentage: null,
469
+ quotaStatus: 'error',
470
+ next_reset: null,
471
+ is_default: false,
472
+ last_activity_at: null,
473
+ today_cost: null,
474
+ health: 'error',
475
+ cached: false,
476
+ fetchedAt: new Date(now).toISOString(),
477
+ needsReauth: true,
478
+ };
479
+ }
480
+ else if (quota.httpStatus === 429) {
481
+ // 429: apply breaker + backoff, then fall through to local.
482
+ state.consecutive429 += 1;
483
+ if (state.consecutive429 >= CB_TRIP_THRESHOLD) {
484
+ state.breakerOpenUntil = now + CB_COOLDOWN_MS;
485
+ }
486
+ const retryAfter = parseRetryAfterMs(quota.errorDetail, now);
487
+ const backoff = retryAfter ?? computeBackoffMs(state.backoffAttempt);
488
+ state.cooldownUntil = now + backoff;
489
+ state.backoffAttempt += 1;
490
+ void sleep; // retained as an injectable seam for future inline retry
491
+ }
492
+ else if (quota.retryable) {
493
+ // Other transient failure: set cooldown, fall through to local.
494
+ const backoff = computeBackoffMs(state.backoffAttempt);
495
+ state.cooldownUntil = now + backoff;
496
+ state.backoffAttempt += 1;
497
+ }
498
+ else {
499
+ // Terminal non-retryable failure (e.g. 403/404): back off so we
500
+ // don't re-hit a dead endpoint every poll when no local data caches
501
+ // a row to engage the TTL short-circuit. Then fall through to local.
502
+ const backoff = computeBackoffMs(state.backoffAttempt);
503
+ state.cooldownUntil = now + backoff;
504
+ state.backoffAttempt += 1;
505
+ }
506
+ // Fall through to LOCAL fallback below.
507
+ }
508
+ // No configured accountId -> fall through to local fallback.
509
+ }
510
+ // ----------------------------------------------------------------
511
+ // LOCAL FALLBACK: session log read (zero network, always attempted
512
+ // when network is unavailable / no accountId / breaker active)
513
+ // ----------------------------------------------------------------
514
+ const localQuota = await getCodex();
515
+ if (localQuota) {
516
+ const row = buildCodexRow(localQuota, now);
517
+ state.cachedRow = row;
518
+ state.cachedAt = now;
519
+ return { ...row, cached: false };
520
+ }
521
+ // No local data either: serve stale (may be null).
522
+ return serveCached(state);
523
+ }
524
+ catch {
525
+ // Network/parse rejection -> treat as transient, serve stale.
526
+ const backoff = computeBackoffMs(state.backoffAttempt);
527
+ state.cooldownUntil = now + backoff;
528
+ state.backoffAttempt += 1;
529
+ return serveCached(state);
530
+ }
531
+ finally {
532
+ state.pending = null;
533
+ }
534
+ })();
535
+ return state.pending;
355
536
  }
356
537
  // ============================================================================
357
538
  // Public entry point
@@ -361,11 +542,16 @@ async function collectCodexRow(deps) {
361
542
  *
362
543
  * Each path is independently try/caught so one failing source never blocks the
363
544
  * other or the response. Returns only rows that represent real data.
545
+ *
546
+ * `opts.force` bypasses the TTL short-circuit on both paths so a debounce-
547
+ * passing refresh re-pulls native rows live. The circuit breaker is always
548
+ * respected regardless of force (account protection).
364
549
  */
365
- async function getNativeAccountRows(deps = {}) {
550
+ async function getNativeAccountRows(deps = {}, opts) {
551
+ const force = opts?.force ?? false;
366
552
  const [claude, codex] = await Promise.all([
367
- collectClaudeRow(deps).catch(() => null),
368
- collectCodexRow(deps).catch(() => null),
553
+ collectClaudeRow(deps, force).catch(() => null),
554
+ collectCodexRow(deps, force).catch(() => null),
369
555
  ]);
370
556
  const rows = [];
371
557
  if (claude)
@@ -375,4 +561,21 @@ async function getNativeAccountRows(deps = {}) {
375
561
  return rows;
376
562
  }
377
563
  exports.getNativeAccountRows = getNativeAccountRows;
564
+ /**
565
+ * Last-known native rows from cache, WITHOUT any fetch (instant, no network).
566
+ *
567
+ * Used as a non-blocking fallback by /summary: when a forced live re-pull
568
+ * overruns the native side-load budget, the response serves these cached rows
569
+ * instead of dropping the Claude/Codex cards entirely. The in-flight fetch keeps
570
+ * warming the cache, so the next poll shows the fresh values.
571
+ */
572
+ function getCachedNativeAccountRows() {
573
+ const rows = [];
574
+ if (claudeState.cachedRow)
575
+ rows.push({ ...claudeState.cachedRow, cached: true });
576
+ if (codexState.cachedRow)
577
+ rows.push({ ...codexState.cachedRow, cached: true });
578
+ return rows;
579
+ }
580
+ exports.getCachedNativeAccountRows = getCachedNativeAccountRows;
378
581
  //# sourceMappingURL=native-quota-collector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-quota-collector.js","sourceRoot":"","sources":["../../../src/web-server/usage/native-quota-collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-quota-collector.js","sourceRoot":"","sources":["../../../src/web-server/usage/native-quota-collector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaitranntt/ccs",
3
- "version": "8.4.0",
3
+ "version": "8.5.0",
4
4
  "description": "Claude Code Switch - Instant profile switching between Claude, GLM, Kimi, and more",
5
5
  "keywords": [
6
6
  "cli",
@@ -57,6 +57,37 @@ if git show-ref --verify --quiet "refs/remotes/origin/$BASE_BRANCH"; then
57
57
  fi
58
58
  fi
59
59
 
60
+ # Hardening inventory freshness: the maintainability metrics artifact must be
61
+ # regenerated within 30 days so the burndown stays current. Runs only after the
62
+ # skip conditions above (CCS_SKIP_PREPUSH_GATE, detached HEAD, behind origin).
63
+ HARDENING_JSON="docs/reports/hardening-inventory.json"
64
+ if [[ ! -f "$HARDENING_JSON" ]]; then
65
+ echo "[X] Missing $HARDENING_JSON."
66
+ echo " Regenerate with: bun run report:hardening"
67
+ exit 1
68
+ fi
69
+ HARDENING_TS=""
70
+ # If the working-tree copy differs from HEAD (contributor regenerated but not
71
+ # yet committed), use filesystem mtime; otherwise use the last commit time,
72
+ # which is stable across CI clones (checkout resets mtimes) and so correctly
73
+ # flags a stale committed artifact.
74
+ if git diff --quiet -- "$HARDENING_JSON" 2>/dev/null && git diff --cached --quiet -- "$HARDENING_JSON" 2>/dev/null; then
75
+ HARDENING_TS=$(git log -1 --format=%ct -- "$HARDENING_JSON" 2>/dev/null)
76
+ else
77
+ HARDENING_TS=$(stat -f %m "$HARDENING_JSON" 2>/dev/null || stat -c %Y "$HARDENING_JSON" 2>/dev/null)
78
+ fi
79
+ if [[ -n "$HARDENING_TS" ]]; then
80
+ NOW_TS=$(date +%s)
81
+ AGE_DAYS=$(( (NOW_TS - HARDENING_TS) / 86400 ))
82
+ if (( AGE_DAYS > 30 )); then
83
+ echo "[X] Hardening inventory is stale (${AGE_DAYS}d old; max 30d)."
84
+ echo " Regenerate with: bun run report:hardening"
85
+ echo " Then commit docs/reports/hardening-inventory.{json,md}."
86
+ exit 1
87
+ fi
88
+ echo "[i] Hardening inventory fresh (${AGE_DAYS}d old; max 30d)."
89
+ fi
90
+
60
91
  echo "[i] Running CI-parity local checks..."
61
92
  # `set -euo pipefail` above makes every step fail fast. Keep these commands
62
93
  # explicit so parity drift is visible when CI changes.
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Generate the baseline allowlist for eslint-rules/no-new-throw-error.js.
5
+ *
6
+ * Walks src/ (non-test), finds every `throw new Error(...)` site using the same
7
+ * comment-stripping as scripts/maintainability-metrics.js (so the baseline
8
+ * matches what the ESLint AST sees — comments are not ThrowStatement nodes),
9
+ * and writes eslint-rules/throw-error-baseline.json as a sorted array of
10
+ * `${relativePath}:${line}` keys.
11
+ *
12
+ * Run after intentionally adding a new grandfathered throw, or quarterly to
13
+ * prune entries that have since been converted to typed errors.
14
+ */
15
+
16
+ 'use strict';
17
+
18
+ const fs = require('fs');
19
+ const path = require('path');
20
+
21
+ const ROOT_DIR = path.resolve(__dirname, '..');
22
+ const SRC_DIR = path.join(ROOT_DIR, 'src');
23
+ const OUTPUT_PATH = path.join(ROOT_DIR, 'eslint-rules', 'throw-error-baseline.json');
24
+
25
+ const SOURCE_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']);
26
+ const THROW_NEW_ERROR_REGEX = /\bthrow\s+new\s+Error\s*\(/g;
27
+
28
+ function isTestPath(relPath) {
29
+ return (
30
+ /(?:^|\/)(?:__tests__|tests?)\//.test(relPath) ||
31
+ /\.test\./.test(relPath) ||
32
+ /\.spec\./.test(relPath)
33
+ );
34
+ }
35
+
36
+ function toPosix(p) {
37
+ return p.split(path.sep).join('/');
38
+ }
39
+
40
+ function relPath(fullPath) {
41
+ return toPosix(path.relative(ROOT_DIR, fullPath));
42
+ }
43
+
44
+ // Lazy require: hardening-inventory.js requires this module's sibling maintainability-metrics.js
45
+ // at top level; requiring it back at top level here would capture a partial module.exports.
46
+ // A function-scope require resolves against the fully-loaded module at call time.
47
+ function stripCommentsOnce(sourceText) {
48
+ return require('./hardening-inventory.js').stripComments(sourceText);
49
+ }
50
+
51
+ function walkFiles(dirPath) {
52
+ const out = [];
53
+ let entries;
54
+ try {
55
+ entries = fs.readdirSync(dirPath, { withFileTypes: true });
56
+ } catch {
57
+ return out;
58
+ }
59
+ for (const entry of entries) {
60
+ if (entry.name === 'node_modules' || entry.name === 'dist') continue;
61
+ const full = path.join(dirPath, entry.name);
62
+ if (entry.isDirectory()) {
63
+ out.push.apply(out, walkFiles(full));
64
+ } else if (entry.isFile() && SOURCE_EXTENSIONS.has(path.extname(full))) {
65
+ out.push(full);
66
+ }
67
+ }
68
+ return out;
69
+ }
70
+
71
+ function collectSites() {
72
+ const sites = [];
73
+ for (const full of walkFiles(SRC_DIR)) {
74
+ const rel = relPath(full);
75
+ if (isTestPath(rel)) continue;
76
+ // Match on the RAW source (not comment-stripped). ESLint lints the raw
77
+ // file, so the baseline must reflect real throw lines as the AST sees them.
78
+ // stripComments can undercount on files whose regex/template literals confuse
79
+ // its state machine; raw matching is a superset (may include comment/string
80
+ // mentions, which are harmless unused allowlist entries) and never undercounts.
81
+ const sourceText = fs.readFileSync(full, 'utf8');
82
+ const re = new RegExp(THROW_NEW_ERROR_REGEX.source, 'g');
83
+ let match;
84
+ while ((match = re.exec(sourceText)) !== null) {
85
+ const line = sourceText.slice(0, match.index).split(/\r?\n/).length;
86
+ sites.push(`${rel}:${line}`);
87
+ }
88
+ }
89
+ return sites.sort();
90
+ }
91
+
92
+ function main() {
93
+ const sites = collectSites();
94
+ fs.mkdirSync(path.dirname(OUTPUT_PATH), { recursive: true });
95
+ fs.writeFileSync(OUTPUT_PATH, JSON.stringify(sites, null, 2) + '\n', 'utf8');
96
+ console.log(`[throw-error-baseline] ${sites.length} sites -> ${relPath(OUTPUT_PATH)}`);
97
+ }
98
+
99
+ if (require.main === module) {
100
+ main();
101
+ }
102
+
103
+ module.exports = { collectSites, OUTPUT_PATH };