@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
@@ -1 +1 @@
1
- import{j as e}from"./radix-ui-nu4wz29m.js";import{r as o}from"./react-vendor-Bjx91N7w.js";import{a as q,bi as J,bk as X,e as E,x as Y,L as A,j as R,k as M,l as K,m as $,n as I,I as F,aE as Q}from"./index-pHOoeHgY.js";import{R as B,x as Z,y as ee,ae as se,$ as te,t as re}from"./icons-DSLG1YsC.js";import"./tanstack-bhJxV1h8.js";import"./notifications-B4_o8bcr.js";import"./utils-CzKF5WmX.js";import"./form-utils-CuHzLhJZ.js";import"./charts-eIPy2oG6.js";const z={mode:"auto",tier_defaults:{opus:"high",sonnet:"medium",haiku:"low"},show_warnings:!0},U=1e4;function ie(){const[t,i]=o.useState(null),[b,d]=o.useState(!0),[_,N]=o.useState(!1),[p,g]=o.useState(null),[P,y]=o.useState(!1),f=o.useRef(void 0),w=o.useRef(!1),k=o.useCallback(async()=>{const r=new AbortController,c=setTimeout(()=>r.abort(),U);try{d(!0),g(null);const n=await fetch("/api/thinking",{signal:r.signal});if(clearTimeout(c),!n.ok)throw n.headers.get("content-type")?.includes("text/html")?new Error(`Server error (${n.status})`):new Error("Failed to load Thinking config");const m=await n.json();i(m.config||z),f.current=m.lastModified,w.current=!0}catch(n){clearTimeout(c),n.name==="AbortError"?g("Request timeout - please try again"):g(n.message)}finally{d(!1)}return()=>r.abort()},[]),l=o.useCallback(async r=>{if(!w.current||t===null){g("Cannot save settings before they load. Click Refresh and try again.");return}const c=t,n={...c,...r.mode!==void 0?{mode:r.mode}:{},...r.tier_defaults!==void 0?{tier_defaults:r.tier_defaults}:{},...r.show_warnings!==void 0?{show_warnings:r.show_warnings}:{}};r.clear_override||r.override===null?delete n.override:r.override!==void 0&&(n.override=r.override),r.clear_provider_overrides||r.provider_overrides===null?delete n.provider_overrides:r.provider_overrides!==void 0&&(n.provider_overrides=r.provider_overrides),i(n);const m=new AbortController,h=setTimeout(()=>m.abort(),U);try{N(!0),g(null);const x={...n,lastModified:f.current},u=await fetch("/api/thinking",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(x),signal:m.signal});if(clearTimeout(h),!u.ok){if(u.headers.get("content-type")?.includes("text/html"))throw new Error(`Server error (${u.status})`);const s=await u.json();throw u.status===409?new Error("Config changed by another session. Refreshing..."):new Error(s.error||"Failed to save")}const v=await u.json();i(v.config),f.current=v.lastModified,y(!0),setTimeout(()=>y(!1),1500)}catch(x){clearTimeout(h),i(c),x.name==="AbortError"?g("Request timeout - please try again"):(g(x.message),x.message.includes("another session")&&setTimeout(()=>k(),1e3))}finally{N(!1)}},[t,k]),T=o.useCallback(r=>{l({mode:r})},[l]),C=o.useCallback((r,c)=>{const n=t?.tier_defaults||z.tier_defaults;l({tier_defaults:{...n,[r]:c}})},[t,l]),O=o.useCallback(r=>{l({show_warnings:r})},[l]),D=o.useCallback(r=>{if(r===void 0){l({override:null,clear_override:!0});return}l({override:r,clear_override:!1})},[l]),L=o.useCallback((r,c,n)=>{const m=t?.provider_overrides||{},h=m[r]||{};if(n===void 0){const{[c]:x,...u}=h,v=Object.keys(u).length>0?u:void 0,{[r]:S,...s}=m,a=v?{...s,[r]:v}:s;l({provider_overrides:Object.keys(a).length>0?a:null,clear_provider_overrides:Object.keys(a).length===0})}else l({provider_overrides:{...m,[r]:{...h,[c]:n}},clear_provider_overrides:!1})},[t,l]);return{config:t||z,loading:b,saving:_,error:p,success:P,fetchConfig:k,saveConfig:l,setMode:T,setTierDefault:C,setShowWarnings:O,setOverride:D,setProviderOverride:L}}const H=[{value:"minimal",label:"Minimal (512 tokens)"},{value:"low",label:"Low (1K tokens)"},{value:"medium",label:"Medium (8K tokens)"},{value:"high",label:"High (24K tokens)"},{value:"xhigh",label:"Extra High (32K tokens)"},{value:"max",label:"Max (adaptive ceiling)"},{value:"auto",label:"Auto (dynamic)"}],ne=[{value:"__none__",label:"None (use CLI flags only)"},...H,{value:"__custom__",label:"Custom budget (number)"},{value:"off",label:"Off (disable thinking)"}],ae=["agy","gemini","codex"],G=0,V=1e5;function fe(){const{t}=q(),{config:i,loading:b,saving:d,error:_,success:N,fetchConfig:p,setMode:g,setTierDefault:P,setShowWarnings:y,setOverride:f,setProviderOverride:w}=ie(),[k,l]=o.useState(null),[T,C]=o.useState(""),[O,D]=o.useState([]),[L,r]=o.useState(null),c=o.useMemo(()=>Array.from(new Set([...ae,...Object.keys(i.provider_overrides??{}),...O])),[O,i.provider_overrides]),n=i.override===void 0?"__none__":typeof i.override=="number"||/^\d+$/.test(String(i.override))?"__custom__":String(i.override),m=typeof i.override=="number"||/^\d+$/.test(String(i.override??""))?String(i.override):"",h=L??m,x=Object.keys(i.provider_overrides??{}).length>0,u=k??x;o.useEffect(()=>{p()},[p]);const v=()=>{const s=T.trim().toLowerCase();s&&(c.includes(s)||D(a=>[...a,s]),C(""),l(!0))},S=()=>{const s=h.trim();if(!s){f(void 0);return}const a=Number.parseInt(s,10);Number.isNaN(a)||a<G||a>V||!/^\d+$/.test(s)||f(a)};return b?e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"flex items-center gap-3 text-muted-foreground",children:[e.jsx(B,{className:"w-5 h-5 animate-spin"}),e.jsx("span",{children:t("settings.loading")})]})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:`absolute left-5 right-5 top-20 z-10 transition-all duration-200 ease-out ${_||N?"opacity-100 translate-y-0":"opacity-0 -translate-y-2 pointer-events-none"}`,children:[_&&e.jsx(J,{variant:"destructive",className:"py-2 shadow-lg",children:e.jsxs("div",{className:"flex items-center justify-between w-full",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{className:"h-4 w-4"}),e.jsx(X,{children:_})]}),e.jsxs(E,{variant:"outline",size:"sm",onClick:p,className:"h-7 px-2 text-xs border-destructive/50 hover:bg-destructive/10",children:[e.jsx(B,{className:"w-3 h-3 mr-1"}),t("sharedPage.retry")]})]})}),N&&e.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 rounded-md border border-green-200 bg-green-50 text-green-700 shadow-lg dark:border-green-900/50 dark:bg-green-900/90 dark:text-green-300",children:[e.jsx(ee,{className:"h-4 w-4 shrink-0"}),e.jsx("span",{className:"text-sm font-medium",children:t("settings.saved")})]})]}),e.jsx(Y,{className:"flex-1",children:e.jsxs("div",{className:"p-5 space-y-6",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(se,{className:"w-5 h-5 text-primary"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t("settingsThinking.description")})]}),e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800",children:[e.jsx(te,{className:"w-4 h-4 text-blue-600 dark:text-blue-400 shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-blue-700 dark:text-blue-300",children:[e.jsx("p",{className:"font-medium",children:t("settingsThinking.supportedProviders")}),e.jsxs("ul",{className:"mt-1 space-y-0.5 text-blue-600 dark:text-blue-400",children:[e.jsxs("li",{children:[t("settingsThinking.supportLine1Prefix")," ",e.jsx("strong",{children:"agy"}),","," ",e.jsx("strong",{children:"gemini"})," ",t("settingsThinking.supportLine1Suffix")]}),e.jsxs("li",{children:[t("settingsThinking.supportLine2Prefix")," ",e.jsx("strong",{children:"codex"})," ",t("settingsThinking.supportLine2SuffixPrefix"),e.jsx("code",{children:"--effort"}),t("settingsThinking.supportLine2SuffixPostfix")]}),e.jsxs("li",{children:[t("settingsThinking.supportLine3Prefix")," ",e.jsx("code",{children:"-high"}),t("settingsThinking.supportLine3Suffix")]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("h3",{className:"text-base font-medium",children:t("settingsThinking.modeTitle")}),e.jsx("div",{className:"space-y-2",children:["auto","off","manual"].map(s=>e.jsxs("div",{className:`flex items-center justify-between p-4 rounded-lg cursor-pointer transition-colors ${i.mode===s?"bg-primary/10 border border-primary/30":"bg-muted/50 hover:bg-muted/80"} ${d?"opacity-70 pointer-events-none":""}`,onClick:()=>{d||g(s)},children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium capitalize",children:s}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[s==="auto"&&t("settingsThinking.modeAutoDesc"),s==="off"&&t("settingsThinking.modeOffDesc"),s==="manual"&&t("settingsThinking.modeManualDesc")]})]}),e.jsx("div",{className:`w-4 h-4 rounded-full border-2 ${i.mode===s?"bg-primary border-primary":"border-muted-foreground/50"}`})]},s))})]}),i.mode==="auto"&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("h3",{className:"text-base font-medium",children:t("settingsThinking.tierDefaults")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t("settingsThinking.tierDefaultsDesc")}),e.jsx("div",{className:"space-y-3",children:["opus","sonnet","haiku"].map(s=>e.jsxs("div",{className:"flex items-center gap-4 p-3 rounded-lg bg-muted/30",children:[e.jsx(A,{className:"w-20 capitalize font-medium",children:s}),e.jsxs(R,{value:i.tier_defaults[s],onValueChange:a=>P(s,a),disabled:d,children:[e.jsx(M,{className:"flex-1",children:e.jsx(K,{})}),e.jsx($,{children:H.map(a=>e.jsx(I,{value:a.value,children:a.label},a.value))})]})]},s))})]}),i.mode==="manual"&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("h3",{className:"text-base font-medium",children:t("settingsThinking.persistentOverride")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t("settingsThinking.persistentOverrideDesc")}),e.jsxs(R,{value:n,onValueChange:s=>{if(s==="__none__"){f(void 0);return}if(s==="__custom__"){h||r("8192");return}r(null),f(s)},disabled:d,children:[e.jsx(M,{children:e.jsx(K,{})}),e.jsx($,{children:ne.map(s=>e.jsx(I,{value:s.value,children:s.label},s.value))})]}),n==="__custom__"&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(F,{type:"number",min:G,max:V,value:h,onChange:s=>r(s.target.value),onBlur:S,disabled:d,placeholder:t("settingsThinking.enterCustomBudget")}),e.jsx(E,{type:"button",size:"sm",variant:"outline",onClick:S,disabled:d,children:t("settingsThinking.apply")})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Range: ",G," to ",V]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("button",{type:"button",className:"flex items-center gap-2 text-base font-medium w-full text-left",onClick:()=>l(s=>!(s??x)),disabled:d,children:[e.jsx(re,{className:`w-4 h-4 transition-transform ${u?"rotate-0":"-rotate-90"}`}),t("settingsThinking.providerOverrides",{count:Object.keys(i.provider_overrides??{}).length})]}),u&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:t("settingsThinking.providerOverridesDesc")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(F,{value:T,onChange:s=>C(s.target.value),disabled:d,placeholder:t("settingsThinking.addProviderPlaceholder")}),e.jsx(E,{type:"button",size:"sm",variant:"outline",onClick:v,disabled:d,children:t("settingsGlobalEnv.add")})]}),c.map(s=>e.jsxs("div",{className:"space-y-2 p-3 rounded-lg bg-muted/30",children:[e.jsx(A,{className:"capitalize font-medium text-sm",children:s}),e.jsx("div",{className:"grid grid-cols-3 gap-2",children:["opus","sonnet","haiku"].map(a=>{const W=i.provider_overrides?.[s]?.[a]||"__default__";return e.jsxs("div",{className:"space-y-1",children:[e.jsx(A,{className:"text-xs text-muted-foreground capitalize",children:a}),e.jsxs(R,{value:W,onValueChange:j=>w(s,a,j==="__default__"?void 0:j),disabled:d,children:[e.jsx(M,{className:"h-8 text-xs",children:e.jsx(K,{})}),e.jsxs($,{children:[e.jsx(I,{value:"__default__",children:t("cursorPage.default")}),H.map(j=>e.jsx(I,{value:j.value,children:j.label},j.value))]})]})]},a)})})]},s))]})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:t("settingsThinking.showWarnings")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t("settingsThinking.showWarningsDesc")})]}),e.jsx(Q,{checked:i.show_warnings??!0,onCheckedChange:y,disabled:d})]}),e.jsxs("div",{className:"p-4 rounded-lg border bg-muted/30",children:[e.jsx("h4",{className:"text-sm font-medium mb-2",children:t("settingsThinking.cliEnvOverride")}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-2",children:["Override per session with flags or"," ",e.jsx("code",{className:"px-1.5 py-0.5 rounded bg-muted",children:"CCS_THINKING"})," env var. Priority: flag > env > config."]}),e.jsxs("div",{className:"space-y-1 text-sm font-mono text-muted-foreground",children:[e.jsx("p",{children:"ccs gemini --thinking high"}),e.jsx("p",{children:"ccs codex --effort xhigh"}),e.jsx("p",{children:'CCS_THINKING=high ccs codex "debug this"'}),e.jsx("p",{children:"ccs config thinking --mode auto"})]})]})]})}),e.jsx("div",{className:"p-4 border-t bg-background",children:e.jsxs(E,{variant:"outline",size:"sm",onClick:p,disabled:b||d,className:"w-full",children:[e.jsx(B,{className:`w-4 h-4 mr-2 ${b?"animate-spin":""}`}),t("settings.refresh")]})})]})}export{fe as default};
1
+ import{j as e}from"./radix-ui-nu4wz29m.js";import{r as o}from"./react-vendor-Bjx91N7w.js";import{a as q,bj as J,bl as X,e as I,x as Y,L as A,j as R,k as M,l as K,m as $,n as E,I as F,aF as Q}from"./index-gX7Mi5Ws.js";import{R as B,x as Z,y as ee,ae as se,$ as te,t as re}from"./icons-DSLG1YsC.js";import"./tanstack-bhJxV1h8.js";import"./notifications-B4_o8bcr.js";import"./utils-CzKF5WmX.js";import"./form-utils-CuHzLhJZ.js";import"./charts-eIPy2oG6.js";const z={mode:"auto",tier_defaults:{opus:"high",sonnet:"medium",haiku:"low"},show_warnings:!0},U=1e4;function ie(){const[t,i]=o.useState(null),[b,d]=o.useState(!0),[_,N]=o.useState(!1),[p,g]=o.useState(null),[P,y]=o.useState(!1),f=o.useRef(void 0),w=o.useRef(!1),k=o.useCallback(async()=>{const r=new AbortController,c=setTimeout(()=>r.abort(),U);try{d(!0),g(null);const n=await fetch("/api/thinking",{signal:r.signal});if(clearTimeout(c),!n.ok)throw n.headers.get("content-type")?.includes("text/html")?new Error(`Server error (${n.status})`):new Error("Failed to load Thinking config");const m=await n.json();i(m.config||z),f.current=m.lastModified,w.current=!0}catch(n){clearTimeout(c),n.name==="AbortError"?g("Request timeout - please try again"):g(n.message)}finally{d(!1)}return()=>r.abort()},[]),l=o.useCallback(async r=>{if(!w.current||t===null){g("Cannot save settings before they load. Click Refresh and try again.");return}const c=t,n={...c,...r.mode!==void 0?{mode:r.mode}:{},...r.tier_defaults!==void 0?{tier_defaults:r.tier_defaults}:{},...r.show_warnings!==void 0?{show_warnings:r.show_warnings}:{}};r.clear_override||r.override===null?delete n.override:r.override!==void 0&&(n.override=r.override),r.clear_provider_overrides||r.provider_overrides===null?delete n.provider_overrides:r.provider_overrides!==void 0&&(n.provider_overrides=r.provider_overrides),i(n);const m=new AbortController,h=setTimeout(()=>m.abort(),U);try{N(!0),g(null);const x={...n,lastModified:f.current},u=await fetch("/api/thinking",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(x),signal:m.signal});if(clearTimeout(h),!u.ok){if(u.headers.get("content-type")?.includes("text/html"))throw new Error(`Server error (${u.status})`);const s=await u.json();throw u.status===409?new Error("Config changed by another session. Refreshing..."):new Error(s.error||"Failed to save")}const v=await u.json();i(v.config),f.current=v.lastModified,y(!0),setTimeout(()=>y(!1),1500)}catch(x){clearTimeout(h),i(c),x.name==="AbortError"?g("Request timeout - please try again"):(g(x.message),x.message.includes("another session")&&setTimeout(()=>k(),1e3))}finally{N(!1)}},[t,k]),T=o.useCallback(r=>{l({mode:r})},[l]),C=o.useCallback((r,c)=>{const n=t?.tier_defaults||z.tier_defaults;l({tier_defaults:{...n,[r]:c}})},[t,l]),O=o.useCallback(r=>{l({show_warnings:r})},[l]),D=o.useCallback(r=>{if(r===void 0){l({override:null,clear_override:!0});return}l({override:r,clear_override:!1})},[l]),L=o.useCallback((r,c,n)=>{const m=t?.provider_overrides||{},h=m[r]||{};if(n===void 0){const{[c]:x,...u}=h,v=Object.keys(u).length>0?u:void 0,{[r]:S,...s}=m,a=v?{...s,[r]:v}:s;l({provider_overrides:Object.keys(a).length>0?a:null,clear_provider_overrides:Object.keys(a).length===0})}else l({provider_overrides:{...m,[r]:{...h,[c]:n}},clear_provider_overrides:!1})},[t,l]);return{config:t||z,loading:b,saving:_,error:p,success:P,fetchConfig:k,saveConfig:l,setMode:T,setTierDefault:C,setShowWarnings:O,setOverride:D,setProviderOverride:L}}const H=[{value:"minimal",label:"Minimal (512 tokens)"},{value:"low",label:"Low (1K tokens)"},{value:"medium",label:"Medium (8K tokens)"},{value:"high",label:"High (24K tokens)"},{value:"xhigh",label:"Extra High (32K tokens)"},{value:"max",label:"Max (adaptive ceiling)"},{value:"auto",label:"Auto (dynamic)"}],ne=[{value:"__none__",label:"None (use CLI flags only)"},...H,{value:"__custom__",label:"Custom budget (number)"},{value:"off",label:"Off (disable thinking)"}],ae=["agy","gemini","codex"],G=0,V=1e5;function fe(){const{t}=q(),{config:i,loading:b,saving:d,error:_,success:N,fetchConfig:p,setMode:g,setTierDefault:P,setShowWarnings:y,setOverride:f,setProviderOverride:w}=ie(),[k,l]=o.useState(null),[T,C]=o.useState(""),[O,D]=o.useState([]),[L,r]=o.useState(null),c=o.useMemo(()=>Array.from(new Set([...ae,...Object.keys(i.provider_overrides??{}),...O])),[O,i.provider_overrides]),n=i.override===void 0?"__none__":typeof i.override=="number"||/^\d+$/.test(String(i.override))?"__custom__":String(i.override),m=typeof i.override=="number"||/^\d+$/.test(String(i.override??""))?String(i.override):"",h=L??m,x=Object.keys(i.provider_overrides??{}).length>0,u=k??x;o.useEffect(()=>{p()},[p]);const v=()=>{const s=T.trim().toLowerCase();s&&(c.includes(s)||D(a=>[...a,s]),C(""),l(!0))},S=()=>{const s=h.trim();if(!s){f(void 0);return}const a=Number.parseInt(s,10);Number.isNaN(a)||a<G||a>V||!/^\d+$/.test(s)||f(a)};return b?e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsxs("div",{className:"flex items-center gap-3 text-muted-foreground",children:[e.jsx(B,{className:"w-5 h-5 animate-spin"}),e.jsx("span",{children:t("settings.loading")})]})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:`absolute left-5 right-5 top-20 z-10 transition-all duration-200 ease-out ${_||N?"opacity-100 translate-y-0":"opacity-0 -translate-y-2 pointer-events-none"}`,children:[_&&e.jsx(J,{variant:"destructive",className:"py-2 shadow-lg",children:e.jsxs("div",{className:"flex items-center justify-between w-full",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Z,{className:"h-4 w-4"}),e.jsx(X,{children:_})]}),e.jsxs(I,{variant:"outline",size:"sm",onClick:p,className:"h-7 px-2 text-xs border-destructive/50 hover:bg-destructive/10",children:[e.jsx(B,{className:"w-3 h-3 mr-1"}),t("sharedPage.retry")]})]})}),N&&e.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 rounded-md border border-green-200 bg-green-50 text-green-700 shadow-lg dark:border-green-900/50 dark:bg-green-900/90 dark:text-green-300",children:[e.jsx(ee,{className:"h-4 w-4 shrink-0"}),e.jsx("span",{className:"text-sm font-medium",children:t("settings.saved")})]})]}),e.jsx(Y,{className:"flex-1",children:e.jsxs("div",{className:"p-5 space-y-6",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(se,{className:"w-5 h-5 text-primary"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t("settingsThinking.description")})]}),e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800",children:[e.jsx(te,{className:"w-4 h-4 text-blue-600 dark:text-blue-400 shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-blue-700 dark:text-blue-300",children:[e.jsx("p",{className:"font-medium",children:t("settingsThinking.supportedProviders")}),e.jsxs("ul",{className:"mt-1 space-y-0.5 text-blue-600 dark:text-blue-400",children:[e.jsxs("li",{children:[t("settingsThinking.supportLine1Prefix")," ",e.jsx("strong",{children:"agy"}),","," ",e.jsx("strong",{children:"gemini"})," ",t("settingsThinking.supportLine1Suffix")]}),e.jsxs("li",{children:[t("settingsThinking.supportLine2Prefix")," ",e.jsx("strong",{children:"codex"})," ",t("settingsThinking.supportLine2SuffixPrefix"),e.jsx("code",{children:"--effort"}),t("settingsThinking.supportLine2SuffixPostfix")]}),e.jsxs("li",{children:[t("settingsThinking.supportLine3Prefix")," ",e.jsx("code",{children:"-high"}),t("settingsThinking.supportLine3Suffix")]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("h3",{className:"text-base font-medium",children:t("settingsThinking.modeTitle")}),e.jsx("div",{className:"space-y-2",children:["auto","off","manual"].map(s=>e.jsxs("div",{className:`flex items-center justify-between p-4 rounded-lg cursor-pointer transition-colors ${i.mode===s?"bg-primary/10 border border-primary/30":"bg-muted/50 hover:bg-muted/80"} ${d?"opacity-70 pointer-events-none":""}`,onClick:()=>{d||g(s)},children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium capitalize",children:s}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[s==="auto"&&t("settingsThinking.modeAutoDesc"),s==="off"&&t("settingsThinking.modeOffDesc"),s==="manual"&&t("settingsThinking.modeManualDesc")]})]}),e.jsx("div",{className:`w-4 h-4 rounded-full border-2 ${i.mode===s?"bg-primary border-primary":"border-muted-foreground/50"}`})]},s))})]}),i.mode==="auto"&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("h3",{className:"text-base font-medium",children:t("settingsThinking.tierDefaults")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t("settingsThinking.tierDefaultsDesc")}),e.jsx("div",{className:"space-y-3",children:["opus","sonnet","haiku"].map(s=>e.jsxs("div",{className:"flex items-center gap-4 p-3 rounded-lg bg-muted/30",children:[e.jsx(A,{className:"w-20 capitalize font-medium",children:s}),e.jsxs(R,{value:i.tier_defaults[s],onValueChange:a=>P(s,a),disabled:d,children:[e.jsx(M,{className:"flex-1",children:e.jsx(K,{})}),e.jsx($,{children:H.map(a=>e.jsx(E,{value:a.value,children:a.label},a.value))})]})]},s))})]}),i.mode==="manual"&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("h3",{className:"text-base font-medium",children:t("settingsThinking.persistentOverride")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t("settingsThinking.persistentOverrideDesc")}),e.jsxs(R,{value:n,onValueChange:s=>{if(s==="__none__"){f(void 0);return}if(s==="__custom__"){h||r("8192");return}r(null),f(s)},disabled:d,children:[e.jsx(M,{children:e.jsx(K,{})}),e.jsx($,{children:ne.map(s=>e.jsx(E,{value:s.value,children:s.label},s.value))})]}),n==="__custom__"&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(F,{type:"number",min:G,max:V,value:h,onChange:s=>r(s.target.value),onBlur:S,disabled:d,placeholder:t("settingsThinking.enterCustomBudget")}),e.jsx(I,{type:"button",size:"sm",variant:"outline",onClick:S,disabled:d,children:t("settingsThinking.apply")})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Range: ",G," to ",V]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("button",{type:"button",className:"flex items-center gap-2 text-base font-medium w-full text-left",onClick:()=>l(s=>!(s??x)),disabled:d,children:[e.jsx(re,{className:`w-4 h-4 transition-transform ${u?"rotate-0":"-rotate-90"}`}),t("settingsThinking.providerOverrides",{count:Object.keys(i.provider_overrides??{}).length})]}),u&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:t("settingsThinking.providerOverridesDesc")}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(F,{value:T,onChange:s=>C(s.target.value),disabled:d,placeholder:t("settingsThinking.addProviderPlaceholder")}),e.jsx(I,{type:"button",size:"sm",variant:"outline",onClick:v,disabled:d,children:t("settingsGlobalEnv.add")})]}),c.map(s=>e.jsxs("div",{className:"space-y-2 p-3 rounded-lg bg-muted/30",children:[e.jsx(A,{className:"capitalize font-medium text-sm",children:s}),e.jsx("div",{className:"grid grid-cols-3 gap-2",children:["opus","sonnet","haiku"].map(a=>{const W=i.provider_overrides?.[s]?.[a]||"__default__";return e.jsxs("div",{className:"space-y-1",children:[e.jsx(A,{className:"text-xs text-muted-foreground capitalize",children:a}),e.jsxs(R,{value:W,onValueChange:j=>w(s,a,j==="__default__"?void 0:j),disabled:d,children:[e.jsx(M,{className:"h-8 text-xs",children:e.jsx(K,{})}),e.jsxs($,{children:[e.jsx(E,{value:"__default__",children:t("cursorPage.default")}),H.map(j=>e.jsx(E,{value:j.value,children:j.label},j.value))]})]})]},a)})})]},s))]})]}),e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:t("settingsThinking.showWarnings")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t("settingsThinking.showWarningsDesc")})]}),e.jsx(Q,{checked:i.show_warnings??!0,onCheckedChange:y,disabled:d})]}),e.jsxs("div",{className:"p-4 rounded-lg border bg-muted/30",children:[e.jsx("h4",{className:"text-sm font-medium mb-2",children:t("settingsThinking.cliEnvOverride")}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-2",children:["Override per session with flags or"," ",e.jsx("code",{className:"px-1.5 py-0.5 rounded bg-muted",children:"CCS_THINKING"})," env var. Priority: flag > env > config."]}),e.jsxs("div",{className:"space-y-1 text-sm font-mono text-muted-foreground",children:[e.jsx("p",{children:"ccs gemini --thinking high"}),e.jsx("p",{children:"ccs codex --effort xhigh"}),e.jsx("p",{children:'CCS_THINKING=high ccs codex "debug this"'}),e.jsx("p",{children:"ccs config thinking --mode auto"})]})]})]})}),e.jsx("div",{className:"p-4 border-t bg-background",children:e.jsxs(I,{variant:"outline",size:"sm",onClick:p,disabled:b||d,className:"w-full",children:[e.jsx(B,{className:`w-4 h-4 mr-2 ${b?"animate-spin":""}`}),t("settings.refresh")]})})]})}export{fe as default};