@jonnyhoo/ccs 1.0.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 (1223) hide show
  1. package/.claude/commands/ccs/continue.md +15 -0
  2. package/.claude/commands/ccs.md +17 -0
  3. package/.claude/skills/ccs-delegation/CLAUDE.md.template +17 -0
  4. package/.claude/skills/ccs-delegation/SKILL.md +195 -0
  5. package/.claude/skills/ccs-delegation/references/troubleshooting.md +201 -0
  6. package/LICENSE +21 -0
  7. package/README.md +383 -0
  8. package/config/base-agy.settings.json +10 -0
  9. package/config/base-claude.settings.json +10 -0
  10. package/config/base-codex.settings.json +10 -0
  11. package/config/base-gemini.settings.json +10 -0
  12. package/config/base-ghcp.settings.json +10 -0
  13. package/config/base-glm.settings.json +10 -0
  14. package/config/base-glmt.settings.json +17 -0
  15. package/config/base-iflow.settings.json +10 -0
  16. package/config/base-kimi.settings.json +11 -0
  17. package/config/base-kiro.settings.json +10 -0
  18. package/config/base-mm.settings.json +10 -0
  19. package/config/base-ollama-cloud.settings.json +10 -0
  20. package/config/base-ollama.settings.json +10 -0
  21. package/config/base-qwen.settings.json +10 -0
  22. package/config/config.example.json +6 -0
  23. package/dist/api/index.d.ts +7 -0
  24. package/dist/api/index.d.ts.map +1 -0
  25. package/dist/api/index.js +24 -0
  26. package/dist/api/index.js.map +1 -0
  27. package/dist/api/services/index.d.ts +13 -0
  28. package/dist/api/services/index.d.ts.map +1 -0
  29. package/dist/api/services/index.js +39 -0
  30. package/dist/api/services/index.js.map +1 -0
  31. package/dist/api/services/openrouter-catalog.d.ts +30 -0
  32. package/dist/api/services/openrouter-catalog.d.ts.map +1 -0
  33. package/dist/api/services/openrouter-catalog.js +130 -0
  34. package/dist/api/services/openrouter-catalog.js.map +1 -0
  35. package/dist/api/services/openrouter-picker.d.ts +15 -0
  36. package/dist/api/services/openrouter-picker.d.ts.map +1 -0
  37. package/dist/api/services/openrouter-picker.js +113 -0
  38. package/dist/api/services/openrouter-picker.js.map +1 -0
  39. package/dist/api/services/profile-reader.d.ts +31 -0
  40. package/dist/api/services/profile-reader.d.ts.map +1 -0
  41. package/dist/api/services/profile-reader.js +153 -0
  42. package/dist/api/services/profile-reader.js.map +1 -0
  43. package/dist/api/services/profile-types.d.ts +42 -0
  44. package/dist/api/services/profile-types.d.ts.map +1 -0
  45. package/dist/api/services/profile-types.js +8 -0
  46. package/dist/api/services/profile-types.js.map +1 -0
  47. package/dist/api/services/profile-writer.d.ts +6 -0
  48. package/dist/api/services/profile-writer.d.ts.map +1 -0
  49. package/dist/api/services/profile-writer.js +187 -0
  50. package/dist/api/services/profile-writer.js.map +1 -0
  51. package/dist/api/services/provider-presets.d.ts +38 -0
  52. package/dist/api/services/provider-presets.d.ts.map +1 -0
  53. package/dist/api/services/provider-presets.js +165 -0
  54. package/dist/api/services/provider-presets.js.map +1 -0
  55. package/dist/api/services/validation-service.d.ts +26 -0
  56. package/dist/api/services/validation-service.d.ts.map +1 -0
  57. package/dist/api/services/validation-service.js +80 -0
  58. package/dist/api/services/validation-service.js.map +1 -0
  59. package/dist/auth/auth-commands.d.ts +62 -0
  60. package/dist/auth/auth-commands.d.ts.map +1 -0
  61. package/dist/auth/auth-commands.js +191 -0
  62. package/dist/auth/auth-commands.js.map +1 -0
  63. package/dist/auth/commands/create-command.d.ts +11 -0
  64. package/dist/auth/commands/create-command.d.ts.map +1 -0
  65. package/dist/auth/commands/create-command.js +137 -0
  66. package/dist/auth/commands/create-command.js.map +1 -0
  67. package/dist/auth/commands/default-command.d.ts +15 -0
  68. package/dist/auth/commands/default-command.d.ts.map +1 -0
  69. package/dist/auth/commands/default-command.js +71 -0
  70. package/dist/auth/commands/default-command.js.map +1 -0
  71. package/dist/auth/commands/index.d.ts +12 -0
  72. package/dist/auth/commands/index.d.ts.map +1 -0
  73. package/dist/auth/commands/index.js +25 -0
  74. package/dist/auth/commands/index.js.map +1 -0
  75. package/dist/auth/commands/list-command.d.ts +11 -0
  76. package/dist/auth/commands/list-command.d.ts.map +1 -0
  77. package/dist/auth/commands/list-command.js +124 -0
  78. package/dist/auth/commands/list-command.js.map +1 -0
  79. package/dist/auth/commands/remove-command.d.ts +11 -0
  80. package/dist/auth/commands/remove-command.d.ts.map +1 -0
  81. package/dist/auth/commands/remove-command.js +102 -0
  82. package/dist/auth/commands/remove-command.js.map +1 -0
  83. package/dist/auth/commands/show-command.d.ts +11 -0
  84. package/dist/auth/commands/show-command.d.ts.map +1 -0
  85. package/dist/auth/commands/show-command.js +103 -0
  86. package/dist/auth/commands/show-command.js.map +1 -0
  87. package/dist/auth/commands/types.d.ts +50 -0
  88. package/dist/auth/commands/types.d.ts.map +1 -0
  89. package/dist/auth/commands/types.js +26 -0
  90. package/dist/auth/commands/types.js.map +1 -0
  91. package/dist/auth/index.d.ts +8 -0
  92. package/dist/auth/index.d.ts.map +1 -0
  93. package/dist/auth/index.js +16 -0
  94. package/dist/auth/index.js.map +1 -0
  95. package/dist/auth/profile-detector.d.ts +106 -0
  96. package/dist/auth/profile-detector.d.ts.map +1 -0
  97. package/dist/auth/profile-detector.js +431 -0
  98. package/dist/auth/profile-detector.js.map +1 -0
  99. package/dist/auth/profile-registry.d.ts +110 -0
  100. package/dist/auth/profile-registry.d.ts.map +1 -0
  101. package/dist/auth/profile-registry.js +318 -0
  102. package/dist/auth/profile-registry.js.map +1 -0
  103. package/dist/ccs.d.ts +2 -0
  104. package/dist/ccs.d.ts.map +1 -0
  105. package/dist/ccs.js +642 -0
  106. package/dist/ccs.js.map +1 -0
  107. package/dist/cliproxy/account-manager.d.ts +218 -0
  108. package/dist/cliproxy/account-manager.d.ts.map +1 -0
  109. package/dist/cliproxy/account-manager.js +808 -0
  110. package/dist/cliproxy/account-manager.js.map +1 -0
  111. package/dist/cliproxy/auth/auth-types.d.ts +106 -0
  112. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -0
  113. package/dist/cliproxy/auth/auth-types.js +164 -0
  114. package/dist/cliproxy/auth/auth-types.js.map +1 -0
  115. package/dist/cliproxy/auth/environment-detector.d.ts +30 -0
  116. package/dist/cliproxy/auth/environment-detector.d.ts.map +1 -0
  117. package/dist/cliproxy/auth/environment-detector.js +129 -0
  118. package/dist/cliproxy/auth/environment-detector.js.map +1 -0
  119. package/dist/cliproxy/auth/gemini-token-refresh.d.ts +38 -0
  120. package/dist/cliproxy/auth/gemini-token-refresh.d.ts.map +1 -0
  121. package/dist/cliproxy/auth/gemini-token-refresh.js +327 -0
  122. package/dist/cliproxy/auth/gemini-token-refresh.js.map +1 -0
  123. package/dist/cliproxy/auth/index.d.ts +11 -0
  124. package/dist/cliproxy/auth/index.d.ts.map +1 -0
  125. package/dist/cliproxy/auth/index.js +35 -0
  126. package/dist/cliproxy/auth/index.js.map +1 -0
  127. package/dist/cliproxy/auth/kiro-import.d.ts +23 -0
  128. package/dist/cliproxy/auth/kiro-import.d.ts.map +1 -0
  129. package/dist/cliproxy/auth/kiro-import.js +140 -0
  130. package/dist/cliproxy/auth/kiro-import.js.map +1 -0
  131. package/dist/cliproxy/auth/oauth-handler.d.ts +31 -0
  132. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -0
  133. package/dist/cliproxy/auth/oauth-handler.js +422 -0
  134. package/dist/cliproxy/auth/oauth-handler.js.map +1 -0
  135. package/dist/cliproxy/auth/oauth-process.d.ts +27 -0
  136. package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -0
  137. package/dist/cliproxy/auth/oauth-process.js +386 -0
  138. package/dist/cliproxy/auth/oauth-process.js.map +1 -0
  139. package/dist/cliproxy/auth/provider-refreshers/index.d.ts +21 -0
  140. package/dist/cliproxy/auth/provider-refreshers/index.d.ts.map +1 -0
  141. package/dist/cliproxy/auth/provider-refreshers/index.js +57 -0
  142. package/dist/cliproxy/auth/provider-refreshers/index.js.map +1 -0
  143. package/dist/cliproxy/auth/token-expiry-checker.d.ts +37 -0
  144. package/dist/cliproxy/auth/token-expiry-checker.d.ts.map +1 -0
  145. package/dist/cliproxy/auth/token-expiry-checker.js +115 -0
  146. package/dist/cliproxy/auth/token-expiry-checker.js.map +1 -0
  147. package/dist/cliproxy/auth/token-manager.d.ts +66 -0
  148. package/dist/cliproxy/auth/token-manager.d.ts.map +1 -0
  149. package/dist/cliproxy/auth/token-manager.js +309 -0
  150. package/dist/cliproxy/auth/token-manager.js.map +1 -0
  151. package/dist/cliproxy/auth/token-refresh-config.d.ts +13 -0
  152. package/dist/cliproxy/auth/token-refresh-config.d.ts.map +1 -0
  153. package/dist/cliproxy/auth/token-refresh-config.js +31 -0
  154. package/dist/cliproxy/auth/token-refresh-config.js.map +1 -0
  155. package/dist/cliproxy/auth/token-refresh-worker.d.ts +83 -0
  156. package/dist/cliproxy/auth/token-refresh-worker.d.ts.map +1 -0
  157. package/dist/cliproxy/auth/token-refresh-worker.js +214 -0
  158. package/dist/cliproxy/auth/token-refresh-worker.js.map +1 -0
  159. package/dist/cliproxy/auth-handler.d.ts +31 -0
  160. package/dist/cliproxy/auth-handler.d.ts.map +1 -0
  161. package/dist/cliproxy/auth-handler.js +60 -0
  162. package/dist/cliproxy/auth-handler.js.map +1 -0
  163. package/dist/cliproxy/auth-session-manager.d.ts +51 -0
  164. package/dist/cliproxy/auth-session-manager.d.ts.map +1 -0
  165. package/dist/cliproxy/auth-session-manager.js +134 -0
  166. package/dist/cliproxy/auth-session-manager.js.map +1 -0
  167. package/dist/cliproxy/auth-token-manager.d.ts +82 -0
  168. package/dist/cliproxy/auth-token-manager.d.ts.map +1 -0
  169. package/dist/cliproxy/auth-token-manager.js +187 -0
  170. package/dist/cliproxy/auth-token-manager.js.map +1 -0
  171. package/dist/cliproxy/auth-utils.d.ts +16 -0
  172. package/dist/cliproxy/auth-utils.d.ts.map +1 -0
  173. package/dist/cliproxy/auth-utils.js +33 -0
  174. package/dist/cliproxy/auth-utils.js.map +1 -0
  175. package/dist/cliproxy/base-config-loader.d.ts +42 -0
  176. package/dist/cliproxy/base-config-loader.d.ts.map +1 -0
  177. package/dist/cliproxy/base-config-loader.js +123 -0
  178. package/dist/cliproxy/base-config-loader.js.map +1 -0
  179. package/dist/cliproxy/binary/downloader.d.ts +42 -0
  180. package/dist/cliproxy/binary/downloader.d.ts.map +1 -0
  181. package/dist/cliproxy/binary/downloader.js +407 -0
  182. package/dist/cliproxy/binary/downloader.js.map +1 -0
  183. package/dist/cliproxy/binary/extractor.d.ts +12 -0
  184. package/dist/cliproxy/binary/extractor.d.ts.map +1 -0
  185. package/dist/cliproxy/binary/extractor.js +28 -0
  186. package/dist/cliproxy/binary/extractor.js.map +1 -0
  187. package/dist/cliproxy/binary/index.d.ts +13 -0
  188. package/dist/cliproxy/binary/index.d.ts.map +1 -0
  189. package/dist/cliproxy/binary/index.js +54 -0
  190. package/dist/cliproxy/binary/index.js.map +1 -0
  191. package/dist/cliproxy/binary/installer.d.ts +25 -0
  192. package/dist/cliproxy/binary/installer.d.ts.map +1 -0
  193. package/dist/cliproxy/binary/installer.js +129 -0
  194. package/dist/cliproxy/binary/installer.js.map +1 -0
  195. package/dist/cliproxy/binary/lifecycle.d.ts +11 -0
  196. package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -0
  197. package/dist/cliproxy/binary/lifecycle.js +150 -0
  198. package/dist/cliproxy/binary/lifecycle.js.map +1 -0
  199. package/dist/cliproxy/binary/tar-extractor.d.ts +10 -0
  200. package/dist/cliproxy/binary/tar-extractor.d.ts.map +1 -0
  201. package/dist/cliproxy/binary/tar-extractor.js +118 -0
  202. package/dist/cliproxy/binary/tar-extractor.js.map +1 -0
  203. package/dist/cliproxy/binary/types.d.ts +49 -0
  204. package/dist/cliproxy/binary/types.d.ts.map +1 -0
  205. package/dist/cliproxy/binary/types.js +32 -0
  206. package/dist/cliproxy/binary/types.js.map +1 -0
  207. package/dist/cliproxy/binary/updater.d.ts +7 -0
  208. package/dist/cliproxy/binary/updater.d.ts.map +1 -0
  209. package/dist/cliproxy/binary/updater.js +18 -0
  210. package/dist/cliproxy/binary/updater.js.map +1 -0
  211. package/dist/cliproxy/binary/verifier.d.ts +18 -0
  212. package/dist/cliproxy/binary/verifier.d.ts.map +1 -0
  213. package/dist/cliproxy/binary/verifier.js +82 -0
  214. package/dist/cliproxy/binary/verifier.js.map +1 -0
  215. package/dist/cliproxy/binary/version-cache.d.ts +64 -0
  216. package/dist/cliproxy/binary/version-cache.d.ts.map +1 -0
  217. package/dist/cliproxy/binary/version-cache.js +239 -0
  218. package/dist/cliproxy/binary/version-cache.js.map +1 -0
  219. package/dist/cliproxy/binary/version-checker.d.ts +36 -0
  220. package/dist/cliproxy/binary/version-checker.d.ts.map +1 -0
  221. package/dist/cliproxy/binary/version-checker.js +135 -0
  222. package/dist/cliproxy/binary/version-checker.js.map +1 -0
  223. package/dist/cliproxy/binary/zip-extractor.d.ts +10 -0
  224. package/dist/cliproxy/binary/zip-extractor.d.ts.map +1 -0
  225. package/dist/cliproxy/binary/zip-extractor.js +110 -0
  226. package/dist/cliproxy/binary/zip-extractor.js.map +1 -0
  227. package/dist/cliproxy/binary-manager.d.ts +59 -0
  228. package/dist/cliproxy/binary-manager.d.ts.map +1 -0
  229. package/dist/cliproxy/binary-manager.js +211 -0
  230. package/dist/cliproxy/binary-manager.js.map +1 -0
  231. package/dist/cliproxy/cliproxy-executor.d.ts +33 -0
  232. package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -0
  233. package/dist/cliproxy/cliproxy-executor.js +1025 -0
  234. package/dist/cliproxy/cliproxy-executor.js.map +1 -0
  235. package/dist/cliproxy/codex-reasoning-proxy.d.ts +49 -0
  236. package/dist/cliproxy/codex-reasoning-proxy.d.ts.map +1 -0
  237. package/dist/cliproxy/codex-reasoning-proxy.js +367 -0
  238. package/dist/cliproxy/codex-reasoning-proxy.js.map +1 -0
  239. package/dist/cliproxy/config-generator.d.ts +227 -0
  240. package/dist/cliproxy/config-generator.d.ts.map +1 -0
  241. package/dist/cliproxy/config-generator.js +876 -0
  242. package/dist/cliproxy/config-generator.js.map +1 -0
  243. package/dist/cliproxy/device-code-handler.d.ts +28 -0
  244. package/dist/cliproxy/device-code-handler.d.ts.map +1 -0
  245. package/dist/cliproxy/device-code-handler.js +22 -0
  246. package/dist/cliproxy/device-code-handler.js.map +1 -0
  247. package/dist/cliproxy/https-tunnel-proxy.d.ts +44 -0
  248. package/dist/cliproxy/https-tunnel-proxy.d.ts.map +1 -0
  249. package/dist/cliproxy/https-tunnel-proxy.js +224 -0
  250. package/dist/cliproxy/https-tunnel-proxy.js.map +1 -0
  251. package/dist/cliproxy/index.d.ts +41 -0
  252. package/dist/cliproxy/index.d.ts.map +1 -0
  253. package/dist/cliproxy/index.js +151 -0
  254. package/dist/cliproxy/index.js.map +1 -0
  255. package/dist/cliproxy/management-api-client.d.ts +67 -0
  256. package/dist/cliproxy/management-api-client.d.ts.map +1 -0
  257. package/dist/cliproxy/management-api-client.js +347 -0
  258. package/dist/cliproxy/management-api-client.js.map +1 -0
  259. package/dist/cliproxy/management-api-types.d.ts +107 -0
  260. package/dist/cliproxy/management-api-types.d.ts.map +1 -0
  261. package/dist/cliproxy/management-api-types.js +9 -0
  262. package/dist/cliproxy/management-api-types.js.map +1 -0
  263. package/dist/cliproxy/model-catalog.d.ts +108 -0
  264. package/dist/cliproxy/model-catalog.d.ts.map +1 -0
  265. package/dist/cliproxy/model-catalog.js +247 -0
  266. package/dist/cliproxy/model-catalog.js.map +1 -0
  267. package/dist/cliproxy/model-config.d.ts +31 -0
  268. package/dist/cliproxy/model-config.d.ts.map +1 -0
  269. package/dist/cliproxy/model-config.js +250 -0
  270. package/dist/cliproxy/model-config.js.map +1 -0
  271. package/dist/cliproxy/openai-compat-manager.d.ts +46 -0
  272. package/dist/cliproxy/openai-compat-manager.d.ts.map +1 -0
  273. package/dist/cliproxy/openai-compat-manager.js +191 -0
  274. package/dist/cliproxy/openai-compat-manager.js.map +1 -0
  275. package/dist/cliproxy/platform-detector.d.ts +99 -0
  276. package/dist/cliproxy/platform-detector.d.ts.map +1 -0
  277. package/dist/cliproxy/platform-detector.js +174 -0
  278. package/dist/cliproxy/platform-detector.js.map +1 -0
  279. package/dist/cliproxy/project-selection-handler.d.ts +105 -0
  280. package/dist/cliproxy/project-selection-handler.d.ts.map +1 -0
  281. package/dist/cliproxy/project-selection-handler.js +167 -0
  282. package/dist/cliproxy/project-selection-handler.js.map +1 -0
  283. package/dist/cliproxy/proxy-config-resolver.d.ts +86 -0
  284. package/dist/cliproxy/proxy-config-resolver.d.ts.map +1 -0
  285. package/dist/cliproxy/proxy-config-resolver.js +253 -0
  286. package/dist/cliproxy/proxy-config-resolver.js.map +1 -0
  287. package/dist/cliproxy/proxy-detector.d.ts +72 -0
  288. package/dist/cliproxy/proxy-detector.d.ts.map +1 -0
  289. package/dist/cliproxy/proxy-detector.js +196 -0
  290. package/dist/cliproxy/proxy-detector.js.map +1 -0
  291. package/dist/cliproxy/proxy-target-resolver.d.ts +50 -0
  292. package/dist/cliproxy/proxy-target-resolver.d.ts.map +1 -0
  293. package/dist/cliproxy/proxy-target-resolver.js +105 -0
  294. package/dist/cliproxy/proxy-target-resolver.js.map +1 -0
  295. package/dist/cliproxy/quota-fetcher-codex.d.ts +66 -0
  296. package/dist/cliproxy/quota-fetcher-codex.d.ts.map +1 -0
  297. package/dist/cliproxy/quota-fetcher-codex.js +315 -0
  298. package/dist/cliproxy/quota-fetcher-codex.js.map +1 -0
  299. package/dist/cliproxy/quota-fetcher-gemini-cli.d.ts +51 -0
  300. package/dist/cliproxy/quota-fetcher-gemini-cli.d.ts.map +1 -0
  301. package/dist/cliproxy/quota-fetcher-gemini-cli.js +492 -0
  302. package/dist/cliproxy/quota-fetcher-gemini-cli.js.map +1 -0
  303. package/dist/cliproxy/quota-fetcher.d.ts +95 -0
  304. package/dist/cliproxy/quota-fetcher.d.ts.map +1 -0
  305. package/dist/cliproxy/quota-fetcher.js +589 -0
  306. package/dist/cliproxy/quota-fetcher.js.map +1 -0
  307. package/dist/cliproxy/quota-manager.d.ts +88 -0
  308. package/dist/cliproxy/quota-manager.d.ts.map +1 -0
  309. package/dist/cliproxy/quota-manager.js +278 -0
  310. package/dist/cliproxy/quota-manager.js.map +1 -0
  311. package/dist/cliproxy/quota-response-cache.d.ts +46 -0
  312. package/dist/cliproxy/quota-response-cache.d.ts.map +1 -0
  313. package/dist/cliproxy/quota-response-cache.js +98 -0
  314. package/dist/cliproxy/quota-response-cache.js.map +1 -0
  315. package/dist/cliproxy/quota-types.d.ts +84 -0
  316. package/dist/cliproxy/quota-types.d.ts.map +1 -0
  317. package/dist/cliproxy/quota-types.js +9 -0
  318. package/dist/cliproxy/quota-types.js.map +1 -0
  319. package/dist/cliproxy/remote-auth-fetcher.d.ts +28 -0
  320. package/dist/cliproxy/remote-auth-fetcher.d.ts.map +1 -0
  321. package/dist/cliproxy/remote-auth-fetcher.js +117 -0
  322. package/dist/cliproxy/remote-auth-fetcher.js.map +1 -0
  323. package/dist/cliproxy/remote-proxy-client.d.ts +59 -0
  324. package/dist/cliproxy/remote-proxy-client.d.ts.map +1 -0
  325. package/dist/cliproxy/remote-proxy-client.js +278 -0
  326. package/dist/cliproxy/remote-proxy-client.js.map +1 -0
  327. package/dist/cliproxy/remote-token-uploader.d.ts +28 -0
  328. package/dist/cliproxy/remote-token-uploader.d.ts.map +1 -0
  329. package/dist/cliproxy/remote-token-uploader.js +178 -0
  330. package/dist/cliproxy/remote-token-uploader.js.map +1 -0
  331. package/dist/cliproxy/service-manager.d.ts +55 -0
  332. package/dist/cliproxy/service-manager.d.ts.map +1 -0
  333. package/dist/cliproxy/service-manager.js +327 -0
  334. package/dist/cliproxy/service-manager.js.map +1 -0
  335. package/dist/cliproxy/services/binary-service.d.ts +67 -0
  336. package/dist/cliproxy/services/binary-service.d.ts.map +1 -0
  337. package/dist/cliproxy/services/binary-service.js +176 -0
  338. package/dist/cliproxy/services/binary-service.js.map +1 -0
  339. package/dist/cliproxy/services/index.d.ts +8 -0
  340. package/dist/cliproxy/services/index.d.ts.map +1 -0
  341. package/dist/cliproxy/services/index.js +31 -0
  342. package/dist/cliproxy/services/index.js.map +1 -0
  343. package/dist/cliproxy/services/proxy-lifecycle-service.d.ts +38 -0
  344. package/dist/cliproxy/services/proxy-lifecycle-service.d.ts.map +1 -0
  345. package/dist/cliproxy/services/proxy-lifecycle-service.js +41 -0
  346. package/dist/cliproxy/services/proxy-lifecycle-service.js.map +1 -0
  347. package/dist/cliproxy/services/variant-config-adapter.d.ts +48 -0
  348. package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -0
  349. package/dist/cliproxy/services/variant-config-adapter.js +215 -0
  350. package/dist/cliproxy/services/variant-config-adapter.js.map +1 -0
  351. package/dist/cliproxy/services/variant-service.d.ts +52 -0
  352. package/dist/cliproxy/services/variant-service.d.ts.map +1 -0
  353. package/dist/cliproxy/services/variant-service.js +218 -0
  354. package/dist/cliproxy/services/variant-service.js.map +1 -0
  355. package/dist/cliproxy/services/variant-settings.d.ts +37 -0
  356. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -0
  357. package/dist/cliproxy/services/variant-settings.js +168 -0
  358. package/dist/cliproxy/services/variant-settings.js.map +1 -0
  359. package/dist/cliproxy/session-tracker.d.ts +100 -0
  360. package/dist/cliproxy/session-tracker.d.ts.map +1 -0
  361. package/dist/cliproxy/session-tracker.js +420 -0
  362. package/dist/cliproxy/session-tracker.js.map +1 -0
  363. package/dist/cliproxy/startup-lock.d.ts +57 -0
  364. package/dist/cliproxy/startup-lock.d.ts.map +1 -0
  365. package/dist/cliproxy/startup-lock.js +216 -0
  366. package/dist/cliproxy/startup-lock.js.map +1 -0
  367. package/dist/cliproxy/stats-fetcher.d.ts +106 -0
  368. package/dist/cliproxy/stats-fetcher.d.ts.map +1 -0
  369. package/dist/cliproxy/stats-fetcher.js +267 -0
  370. package/dist/cliproxy/stats-fetcher.js.map +1 -0
  371. package/dist/cliproxy/sync/auto-sync-watcher.d.ts +37 -0
  372. package/dist/cliproxy/sync/auto-sync-watcher.d.ts.map +1 -0
  373. package/dist/cliproxy/sync/auto-sync-watcher.js +211 -0
  374. package/dist/cliproxy/sync/auto-sync-watcher.js.map +1 -0
  375. package/dist/cliproxy/sync/index.d.ts +10 -0
  376. package/dist/cliproxy/sync/index.d.ts.map +1 -0
  377. package/dist/cliproxy/sync/index.js +27 -0
  378. package/dist/cliproxy/sync/index.js.map +1 -0
  379. package/dist/cliproxy/sync/local-config-sync.d.ts +28 -0
  380. package/dist/cliproxy/sync/local-config-sync.d.ts.map +1 -0
  381. package/dist/cliproxy/sync/local-config-sync.js +223 -0
  382. package/dist/cliproxy/sync/local-config-sync.js.map +1 -0
  383. package/dist/cliproxy/sync/profile-mapper.d.ts +55 -0
  384. package/dist/cliproxy/sync/profile-mapper.d.ts.map +1 -0
  385. package/dist/cliproxy/sync/profile-mapper.js +173 -0
  386. package/dist/cliproxy/sync/profile-mapper.js.map +1 -0
  387. package/dist/cliproxy/thinking-validator.d.ts +67 -0
  388. package/dist/cliproxy/thinking-validator.d.ts.map +1 -0
  389. package/dist/cliproxy/thinking-validator.js +327 -0
  390. package/dist/cliproxy/thinking-validator.js.map +1 -0
  391. package/dist/cliproxy/tool-name-mapper.d.ts +103 -0
  392. package/dist/cliproxy/tool-name-mapper.d.ts.map +1 -0
  393. package/dist/cliproxy/tool-name-mapper.js +149 -0
  394. package/dist/cliproxy/tool-name-mapper.js.map +1 -0
  395. package/dist/cliproxy/tool-name-sanitizer.d.ts +65 -0
  396. package/dist/cliproxy/tool-name-sanitizer.d.ts.map +1 -0
  397. package/dist/cliproxy/tool-name-sanitizer.js +118 -0
  398. package/dist/cliproxy/tool-name-sanitizer.js.map +1 -0
  399. package/dist/cliproxy/tool-sanitization-proxy.d.ts +70 -0
  400. package/dist/cliproxy/tool-sanitization-proxy.d.ts.map +1 -0
  401. package/dist/cliproxy/tool-sanitization-proxy.js +453 -0
  402. package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -0
  403. package/dist/cliproxy/types.d.ts +218 -0
  404. package/dist/cliproxy/types.d.ts.map +1 -0
  405. package/dist/cliproxy/types.js +12 -0
  406. package/dist/cliproxy/types.js.map +1 -0
  407. package/dist/commands/api-command.d.ts +12 -0
  408. package/dist/commands/api-command.d.ts.map +1 -0
  409. package/dist/commands/api-command.js +423 -0
  410. package/dist/commands/api-command.js.map +1 -0
  411. package/dist/commands/cleanup-command.d.ts +12 -0
  412. package/dist/commands/cleanup-command.d.ts.map +1 -0
  413. package/dist/commands/cleanup-command.js +350 -0
  414. package/dist/commands/cleanup-command.js.map +1 -0
  415. package/dist/commands/cliproxy-command.d.ts +21 -0
  416. package/dist/commands/cliproxy-command.d.ts.map +1 -0
  417. package/dist/commands/cliproxy-command.js +1099 -0
  418. package/dist/commands/cliproxy-command.js.map +1 -0
  419. package/dist/commands/cliproxy-sync-handler.d.ts +19 -0
  420. package/dist/commands/cliproxy-sync-handler.d.ts.map +1 -0
  421. package/dist/commands/cliproxy-sync-handler.js +99 -0
  422. package/dist/commands/cliproxy-sync-handler.js.map +1 -0
  423. package/dist/commands/config-auth/disable-command.d.ts +10 -0
  424. package/dist/commands/config-auth/disable-command.d.ts.map +1 -0
  425. package/dist/commands/config-auth/disable-command.js +64 -0
  426. package/dist/commands/config-auth/disable-command.js.map +1 -0
  427. package/dist/commands/config-auth/index.d.ts +14 -0
  428. package/dist/commands/config-auth/index.d.ts.map +1 -0
  429. package/dist/commands/config-auth/index.js +84 -0
  430. package/dist/commands/config-auth/index.js.map +1 -0
  431. package/dist/commands/config-auth/setup-command.d.ts +13 -0
  432. package/dist/commands/config-auth/setup-command.d.ts.map +1 -0
  433. package/dist/commands/config-auth/setup-command.js +121 -0
  434. package/dist/commands/config-auth/setup-command.js.map +1 -0
  435. package/dist/commands/config-auth/show-command.d.ts +10 -0
  436. package/dist/commands/config-auth/show-command.d.ts.map +1 -0
  437. package/dist/commands/config-auth/show-command.js +79 -0
  438. package/dist/commands/config-auth/show-command.js.map +1 -0
  439. package/dist/commands/config-auth/types.d.ts +25 -0
  440. package/dist/commands/config-auth/types.d.ts.map +1 -0
  441. package/dist/commands/config-auth/types.js +8 -0
  442. package/dist/commands/config-auth/types.js.map +1 -0
  443. package/dist/commands/config-command.d.ts +12 -0
  444. package/dist/commands/config-command.d.ts.map +1 -0
  445. package/dist/commands/config-command.js +184 -0
  446. package/dist/commands/config-command.js.map +1 -0
  447. package/dist/commands/config-image-analysis-command.d.ts +8 -0
  448. package/dist/commands/config-image-analysis-command.d.ts.map +1 -0
  449. package/dist/commands/config-image-analysis-command.js +174 -0
  450. package/dist/commands/config-image-analysis-command.js.map +1 -0
  451. package/dist/commands/copilot-command.d.ts +10 -0
  452. package/dist/commands/copilot-command.d.ts.map +1 -0
  453. package/dist/commands/copilot-command.js +228 -0
  454. package/dist/commands/copilot-command.js.map +1 -0
  455. package/dist/commands/doctor-command.d.ts +11 -0
  456. package/dist/commands/doctor-command.d.ts.map +1 -0
  457. package/dist/commands/doctor-command.js +92 -0
  458. package/dist/commands/doctor-command.js.map +1 -0
  459. package/dist/commands/help-command.d.ts +5 -0
  460. package/dist/commands/help-command.d.ts.map +1 -0
  461. package/dist/commands/help-command.js +346 -0
  462. package/dist/commands/help-command.js.map +1 -0
  463. package/dist/commands/index.d.ts +18 -0
  464. package/dist/commands/index.d.ts.map +1 -0
  465. package/dist/commands/index.js +35 -0
  466. package/dist/commands/index.js.map +1 -0
  467. package/dist/commands/install-command.d.ts +14 -0
  468. package/dist/commands/install-command.d.ts.map +1 -0
  469. package/dist/commands/install-command.js +62 -0
  470. package/dist/commands/install-command.js.map +1 -0
  471. package/dist/commands/migrate-command.d.ts +17 -0
  472. package/dist/commands/migrate-command.d.ts.map +1 -0
  473. package/dist/commands/migrate-command.js +139 -0
  474. package/dist/commands/migrate-command.js.map +1 -0
  475. package/dist/commands/persist-command.d.ts +12 -0
  476. package/dist/commands/persist-command.d.ts.map +1 -0
  477. package/dist/commands/persist-command.js +565 -0
  478. package/dist/commands/persist-command.js.map +1 -0
  479. package/dist/commands/setup-command.d.ts +29 -0
  480. package/dist/commands/setup-command.d.ts.map +1 -0
  481. package/dist/commands/setup-command.js +426 -0
  482. package/dist/commands/setup-command.js.map +1 -0
  483. package/dist/commands/shell-completion-command.d.ts +10 -0
  484. package/dist/commands/shell-completion-command.d.ts.map +1 -0
  485. package/dist/commands/shell-completion-command.js +90 -0
  486. package/dist/commands/shell-completion-command.js.map +1 -0
  487. package/dist/commands/sync-command.d.ts +10 -0
  488. package/dist/commands/sync-command.d.ts.map +1 -0
  489. package/dist/commands/sync-command.js +67 -0
  490. package/dist/commands/sync-command.js.map +1 -0
  491. package/dist/commands/tokens-command.d.ts +19 -0
  492. package/dist/commands/tokens-command.d.ts.map +1 -0
  493. package/dist/commands/tokens-command.js +173 -0
  494. package/dist/commands/tokens-command.js.map +1 -0
  495. package/dist/commands/update-command.d.ts +19 -0
  496. package/dist/commands/update-command.d.ts.map +1 -0
  497. package/dist/commands/update-command.js +290 -0
  498. package/dist/commands/update-command.js.map +1 -0
  499. package/dist/commands/version-command.d.ts +10 -0
  500. package/dist/commands/version-command.d.ts.map +1 -0
  501. package/dist/commands/version-command.js +100 -0
  502. package/dist/commands/version-command.js.map +1 -0
  503. package/dist/config/feature-flags.d.ts +19 -0
  504. package/dist/config/feature-flags.d.ts.map +1 -0
  505. package/dist/config/feature-flags.js +31 -0
  506. package/dist/config/feature-flags.js.map +1 -0
  507. package/dist/config/index.d.ts +11 -0
  508. package/dist/config/index.d.ts.map +1 -0
  509. package/dist/config/index.js +32 -0
  510. package/dist/config/index.js.map +1 -0
  511. package/dist/config/migration-manager.d.ts +75 -0
  512. package/dist/config/migration-manager.d.ts.map +1 -0
  513. package/dist/config/migration-manager.js +446 -0
  514. package/dist/config/migration-manager.js.map +1 -0
  515. package/dist/config/reserved-names.d.ts +31 -0
  516. package/dist/config/reserved-names.d.ts.map +1 -0
  517. package/dist/config/reserved-names.js +80 -0
  518. package/dist/config/reserved-names.js.map +1 -0
  519. package/dist/config/unified-config-loader.d.ts +117 -0
  520. package/dist/config/unified-config-loader.d.ts.map +1 -0
  521. package/dist/config/unified-config-loader.js +756 -0
  522. package/dist/config/unified-config-loader.js.map +1 -0
  523. package/dist/config/unified-config-types.d.ts +519 -0
  524. package/dist/config/unified-config-types.d.ts.map +1 -0
  525. package/dist/config/unified-config-types.js +211 -0
  526. package/dist/config/unified-config-types.js.map +1 -0
  527. package/dist/copilot/copilot-auth.d.ts +52 -0
  528. package/dist/copilot/copilot-auth.d.ts.map +1 -0
  529. package/dist/copilot/copilot-auth.js +201 -0
  530. package/dist/copilot/copilot-auth.js.map +1 -0
  531. package/dist/copilot/copilot-daemon.d.ts +36 -0
  532. package/dist/copilot/copilot-daemon.d.ts.map +1 -0
  533. package/dist/copilot/copilot-daemon.js +237 -0
  534. package/dist/copilot/copilot-daemon.js.map +1 -0
  535. package/dist/copilot/copilot-executor.d.ts +26 -0
  536. package/dist/copilot/copilot-executor.d.ts.map +1 -0
  537. package/dist/copilot/copilot-executor.js +150 -0
  538. package/dist/copilot/copilot-executor.js.map +1 -0
  539. package/dist/copilot/copilot-models.d.ts +34 -0
  540. package/dist/copilot/copilot-models.d.ts.map +1 -0
  541. package/dist/copilot/copilot-models.js +261 -0
  542. package/dist/copilot/copilot-models.js.map +1 -0
  543. package/dist/copilot/copilot-package-manager.d.ts +93 -0
  544. package/dist/copilot/copilot-package-manager.d.ts.map +1 -0
  545. package/dist/copilot/copilot-package-manager.js +488 -0
  546. package/dist/copilot/copilot-package-manager.js.map +1 -0
  547. package/dist/copilot/index.d.ts +13 -0
  548. package/dist/copilot/index.d.ts.map +1 -0
  549. package/dist/copilot/index.js +63 -0
  550. package/dist/copilot/index.js.map +1 -0
  551. package/dist/copilot/types.d.ts +65 -0
  552. package/dist/copilot/types.d.ts.map +1 -0
  553. package/dist/copilot/types.js +8 -0
  554. package/dist/copilot/types.js.map +1 -0
  555. package/dist/delegation/delegation-handler.d.ts +66 -0
  556. package/dist/delegation/delegation-handler.d.ts.map +1 -0
  557. package/dist/delegation/delegation-handler.js +290 -0
  558. package/dist/delegation/delegation-handler.js.map +1 -0
  559. package/dist/delegation/executor/index.d.ts +7 -0
  560. package/dist/delegation/executor/index.d.ts.map +1 -0
  561. package/dist/delegation/executor/index.js +28 -0
  562. package/dist/delegation/executor/index.js.map +1 -0
  563. package/dist/delegation/executor/result-aggregator.d.ts +30 -0
  564. package/dist/delegation/executor/result-aggregator.d.ts.map +1 -0
  565. package/dist/delegation/executor/result-aggregator.js +66 -0
  566. package/dist/delegation/executor/result-aggregator.js.map +1 -0
  567. package/dist/delegation/executor/stream-parser.d.ts +28 -0
  568. package/dist/delegation/executor/stream-parser.d.ts.map +1 -0
  569. package/dist/delegation/executor/stream-parser.js +140 -0
  570. package/dist/delegation/executor/stream-parser.js.map +1 -0
  571. package/dist/delegation/executor/types.d.ts +129 -0
  572. package/dist/delegation/executor/types.d.ts.map +1 -0
  573. package/dist/delegation/executor/types.js +6 -0
  574. package/dist/delegation/executor/types.js.map +1 -0
  575. package/dist/delegation/headless-executor.d.ts +42 -0
  576. package/dist/delegation/headless-executor.d.ts.map +1 -0
  577. package/dist/delegation/headless-executor.js +480 -0
  578. package/dist/delegation/headless-executor.js.map +1 -0
  579. package/dist/delegation/index.d.ts +11 -0
  580. package/dist/delegation/index.d.ts.map +1 -0
  581. package/dist/delegation/index.js +33 -0
  582. package/dist/delegation/index.js.map +1 -0
  583. package/dist/delegation/result-formatter.d.ts +56 -0
  584. package/dist/delegation/result-formatter.d.ts.map +1 -0
  585. package/dist/delegation/result-formatter.js +341 -0
  586. package/dist/delegation/result-formatter.js.map +1 -0
  587. package/dist/delegation/session-manager.d.ts +58 -0
  588. package/dist/delegation/session-manager.d.ts.map +1 -0
  589. package/dist/delegation/session-manager.js +153 -0
  590. package/dist/delegation/session-manager.js.map +1 -0
  591. package/dist/delegation/settings-parser.d.ts +31 -0
  592. package/dist/delegation/settings-parser.d.ts.map +1 -0
  593. package/dist/delegation/settings-parser.js +107 -0
  594. package/dist/delegation/settings-parser.js.map +1 -0
  595. package/dist/errors/cleanup-registry.d.ts +64 -0
  596. package/dist/errors/cleanup-registry.d.ts.map +1 -0
  597. package/dist/errors/cleanup-registry.js +141 -0
  598. package/dist/errors/cleanup-registry.js.map +1 -0
  599. package/dist/errors/error-handler.d.ts +45 -0
  600. package/dist/errors/error-handler.d.ts.map +1 -0
  601. package/dist/errors/error-handler.js +150 -0
  602. package/dist/errors/error-handler.js.map +1 -0
  603. package/dist/errors/error-types.d.ts +102 -0
  604. package/dist/errors/error-types.d.ts.map +1 -0
  605. package/dist/errors/error-types.js +158 -0
  606. package/dist/errors/error-types.js.map +1 -0
  607. package/dist/errors/exit-codes.d.ts +49 -0
  608. package/dist/errors/exit-codes.d.ts.map +1 -0
  609. package/dist/errors/exit-codes.js +72 -0
  610. package/dist/errors/exit-codes.js.map +1 -0
  611. package/dist/errors/index.d.ts +29 -0
  612. package/dist/errors/index.d.ts.map +1 -0
  613. package/dist/errors/index.js +62 -0
  614. package/dist/errors/index.js.map +1 -0
  615. package/dist/glmt/delta-accumulator.d.ts +210 -0
  616. package/dist/glmt/delta-accumulator.d.ts.map +1 -0
  617. package/dist/glmt/delta-accumulator.js +351 -0
  618. package/dist/glmt/delta-accumulator.js.map +1 -0
  619. package/dist/glmt/glmt-proxy.d.ts +107 -0
  620. package/dist/glmt/glmt-proxy.d.ts.map +1 -0
  621. package/dist/glmt/glmt-proxy.js +665 -0
  622. package/dist/glmt/glmt-proxy.js.map +1 -0
  623. package/dist/glmt/glmt-transformer.d.ts +46 -0
  624. package/dist/glmt/glmt-transformer.d.ts.map +1 -0
  625. package/dist/glmt/glmt-transformer.js +177 -0
  626. package/dist/glmt/glmt-transformer.js.map +1 -0
  627. package/dist/glmt/index.d.ts +14 -0
  628. package/dist/glmt/index.d.ts.map +1 -0
  629. package/dist/glmt/index.js +41 -0
  630. package/dist/glmt/index.js.map +1 -0
  631. package/dist/glmt/locale-enforcer.d.ts +38 -0
  632. package/dist/glmt/locale-enforcer.d.ts.map +1 -0
  633. package/dist/glmt/locale-enforcer.js +69 -0
  634. package/dist/glmt/locale-enforcer.js.map +1 -0
  635. package/dist/glmt/pipeline/content-transformer.d.ts +39 -0
  636. package/dist/glmt/pipeline/content-transformer.d.ts.map +1 -0
  637. package/dist/glmt/pipeline/content-transformer.js +162 -0
  638. package/dist/glmt/pipeline/content-transformer.js.map +1 -0
  639. package/dist/glmt/pipeline/index.d.ts +12 -0
  640. package/dist/glmt/pipeline/index.d.ts.map +1 -0
  641. package/dist/glmt/pipeline/index.js +20 -0
  642. package/dist/glmt/pipeline/index.js.map +1 -0
  643. package/dist/glmt/pipeline/request-transformer.d.ts +31 -0
  644. package/dist/glmt/pipeline/request-transformer.d.ts.map +1 -0
  645. package/dist/glmt/pipeline/request-transformer.js +116 -0
  646. package/dist/glmt/pipeline/request-transformer.js.map +1 -0
  647. package/dist/glmt/pipeline/response-builder.d.ts +52 -0
  648. package/dist/glmt/pipeline/response-builder.d.ts.map +1 -0
  649. package/dist/glmt/pipeline/response-builder.js +205 -0
  650. package/dist/glmt/pipeline/response-builder.js.map +1 -0
  651. package/dist/glmt/pipeline/stream-parser.d.ts +59 -0
  652. package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -0
  653. package/dist/glmt/pipeline/stream-parser.js +241 -0
  654. package/dist/glmt/pipeline/stream-parser.js.map +1 -0
  655. package/dist/glmt/pipeline/tool-call-handler.d.ts +22 -0
  656. package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -0
  657. package/dist/glmt/pipeline/tool-call-handler.js +87 -0
  658. package/dist/glmt/pipeline/tool-call-handler.js.map +1 -0
  659. package/dist/glmt/pipeline/types.d.ts +159 -0
  660. package/dist/glmt/pipeline/types.d.ts.map +1 -0
  661. package/dist/glmt/pipeline/types.js +6 -0
  662. package/dist/glmt/pipeline/types.js.map +1 -0
  663. package/dist/glmt/reasoning-enforcer.d.ts +52 -0
  664. package/dist/glmt/reasoning-enforcer.d.ts.map +1 -0
  665. package/dist/glmt/reasoning-enforcer.js +151 -0
  666. package/dist/glmt/reasoning-enforcer.js.map +1 -0
  667. package/dist/glmt/sse-parser.d.ts +47 -0
  668. package/dist/glmt/sse-parser.d.ts.map +1 -0
  669. package/dist/glmt/sse-parser.js +93 -0
  670. package/dist/glmt/sse-parser.js.map +1 -0
  671. package/dist/management/checks/cliproxy-check.d.ts +37 -0
  672. package/dist/management/checks/cliproxy-check.d.ts.map +1 -0
  673. package/dist/management/checks/cliproxy-check.js +187 -0
  674. package/dist/management/checks/cliproxy-check.js.map +1 -0
  675. package/dist/management/checks/config-check.d.ts +38 -0
  676. package/dist/management/checks/config-check.d.ts.map +1 -0
  677. package/dist/management/checks/config-check.js +215 -0
  678. package/dist/management/checks/config-check.js.map +1 -0
  679. package/dist/management/checks/env-check.d.ts +17 -0
  680. package/dist/management/checks/env-check.d.ts.map +1 -0
  681. package/dist/management/checks/env-check.js +71 -0
  682. package/dist/management/checks/env-check.js.map +1 -0
  683. package/dist/management/checks/image-analysis-check.d.ts +16 -0
  684. package/dist/management/checks/image-analysis-check.d.ts.map +1 -0
  685. package/dist/management/checks/image-analysis-check.js +140 -0
  686. package/dist/management/checks/image-analysis-check.js.map +1 -0
  687. package/dist/management/checks/index.d.ts +13 -0
  688. package/dist/management/checks/index.d.ts.map +1 -0
  689. package/dist/management/checks/index.js +52 -0
  690. package/dist/management/checks/index.js.map +1 -0
  691. package/dist/management/checks/oauth-check.d.ts +16 -0
  692. package/dist/management/checks/oauth-check.d.ts.map +1 -0
  693. package/dist/management/checks/oauth-check.js +68 -0
  694. package/dist/management/checks/oauth-check.js.map +1 -0
  695. package/dist/management/checks/profile-check.d.ts +40 -0
  696. package/dist/management/checks/profile-check.d.ts.map +1 -0
  697. package/dist/management/checks/profile-check.js +190 -0
  698. package/dist/management/checks/profile-check.js.map +1 -0
  699. package/dist/management/checks/symlink-check.d.ts +30 -0
  700. package/dist/management/checks/symlink-check.d.ts.map +1 -0
  701. package/dist/management/checks/symlink-check.js +214 -0
  702. package/dist/management/checks/symlink-check.js.map +1 -0
  703. package/dist/management/checks/system-check.d.ts +25 -0
  704. package/dist/management/checks/system-check.d.ts.map +1 -0
  705. package/dist/management/checks/system-check.js +135 -0
  706. package/dist/management/checks/system-check.js.map +1 -0
  707. package/dist/management/checks/types.d.ts +64 -0
  708. package/dist/management/checks/types.d.ts.map +1 -0
  709. package/dist/management/checks/types.js +64 -0
  710. package/dist/management/checks/types.js.map +1 -0
  711. package/dist/management/doctor.d.ts +34 -0
  712. package/dist/management/doctor.d.ts.map +1 -0
  713. package/dist/management/doctor.js +154 -0
  714. package/dist/management/doctor.js.map +1 -0
  715. package/dist/management/environment-diagnostics.d.ts +69 -0
  716. package/dist/management/environment-diagnostics.d.ts.map +1 -0
  717. package/dist/management/environment-diagnostics.js +229 -0
  718. package/dist/management/environment-diagnostics.js.map +1 -0
  719. package/dist/management/index.d.ts +15 -0
  720. package/dist/management/index.d.ts.map +1 -0
  721. package/dist/management/index.js +56 -0
  722. package/dist/management/index.js.map +1 -0
  723. package/dist/management/instance-manager.d.ts +57 -0
  724. package/dist/management/instance-manager.d.ts.map +1 -0
  725. package/dist/management/instance-manager.js +195 -0
  726. package/dist/management/instance-manager.js.map +1 -0
  727. package/dist/management/oauth-port-diagnostics.d.ts +115 -0
  728. package/dist/management/oauth-port-diagnostics.d.ts.map +1 -0
  729. package/dist/management/oauth-port-diagnostics.js +291 -0
  730. package/dist/management/oauth-port-diagnostics.js.map +1 -0
  731. package/dist/management/recovery-manager.d.ts +56 -0
  732. package/dist/management/recovery-manager.d.ts.map +1 -0
  733. package/dist/management/recovery-manager.js +239 -0
  734. package/dist/management/recovery-manager.js.map +1 -0
  735. package/dist/management/repair/auto-repair.d.ts +13 -0
  736. package/dist/management/repair/auto-repair.d.ts.map +1 -0
  737. package/dist/management/repair/auto-repair.js +186 -0
  738. package/dist/management/repair/auto-repair.js.map +1 -0
  739. package/dist/management/repair/index.d.ts +5 -0
  740. package/dist/management/repair/index.d.ts.map +1 -0
  741. package/dist/management/repair/index.js +9 -0
  742. package/dist/management/repair/index.js.map +1 -0
  743. package/dist/management/shared-manager.d.ts +55 -0
  744. package/dist/management/shared-manager.d.ts.map +1 -0
  745. package/dist/management/shared-manager.js +424 -0
  746. package/dist/management/shared-manager.js.map +1 -0
  747. package/dist/types/cli.d.ts +50 -0
  748. package/dist/types/cli.d.ts.map +1 -0
  749. package/dist/types/cli.js +16 -0
  750. package/dist/types/cli.js.map +1 -0
  751. package/dist/types/config.d.ts +89 -0
  752. package/dist/types/config.d.ts.map +1 -0
  753. package/dist/types/config.js +26 -0
  754. package/dist/types/config.js.map +1 -0
  755. package/dist/types/delegation.d.ts +49 -0
  756. package/dist/types/delegation.d.ts.map +1 -0
  757. package/dist/types/delegation.js +6 -0
  758. package/dist/types/delegation.js.map +1 -0
  759. package/dist/types/glmt.d.ts +95 -0
  760. package/dist/types/glmt.d.ts.map +1 -0
  761. package/dist/types/glmt.js +7 -0
  762. package/dist/types/glmt.js.map +1 -0
  763. package/dist/types/index.d.ts +13 -0
  764. package/dist/types/index.d.ts.map +1 -0
  765. package/dist/types/index.js +16 -0
  766. package/dist/types/index.js.map +1 -0
  767. package/dist/types/utils.d.ts +107 -0
  768. package/dist/types/utils.d.ts.map +1 -0
  769. package/dist/types/utils.js +22 -0
  770. package/dist/types/utils.js.map +1 -0
  771. package/dist/utils/api-key-validator.d.ts +14 -0
  772. package/dist/utils/api-key-validator.d.ts.map +1 -0
  773. package/dist/utils/api-key-validator.js +143 -0
  774. package/dist/utils/api-key-validator.js.map +1 -0
  775. package/dist/utils/claude-detector.d.ts +14 -0
  776. package/dist/utils/claude-detector.d.ts.map +1 -0
  777. package/dist/utils/claude-detector.js +152 -0
  778. package/dist/utils/claude-detector.js.map +1 -0
  779. package/dist/utils/claude-dir-installer.d.ts +46 -0
  780. package/dist/utils/claude-dir-installer.d.ts.map +1 -0
  781. package/dist/utils/claude-dir-installer.js +289 -0
  782. package/dist/utils/claude-dir-installer.js.map +1 -0
  783. package/dist/utils/claude-spawner.d.ts +54 -0
  784. package/dist/utils/claude-spawner.d.ts.map +1 -0
  785. package/dist/utils/claude-spawner.js +118 -0
  786. package/dist/utils/claude-spawner.js.map +1 -0
  787. package/dist/utils/claude-symlink-manager.d.ts +75 -0
  788. package/dist/utils/claude-symlink-manager.d.ts.map +1 -0
  789. package/dist/utils/claude-symlink-manager.js +393 -0
  790. package/dist/utils/claude-symlink-manager.js.map +1 -0
  791. package/dist/utils/config-manager.d.ts +59 -0
  792. package/dist/utils/config-manager.d.ts.map +1 -0
  793. package/dist/utils/config-manager.js +292 -0
  794. package/dist/utils/config-manager.js.map +1 -0
  795. package/dist/utils/delegation-validator.d.ts +44 -0
  796. package/dist/utils/delegation-validator.d.ts.map +1 -0
  797. package/dist/utils/delegation-validator.js +182 -0
  798. package/dist/utils/delegation-validator.js.map +1 -0
  799. package/dist/utils/error-codes.d.ts +36 -0
  800. package/dist/utils/error-codes.d.ts.map +1 -0
  801. package/dist/utils/error-codes.js +63 -0
  802. package/dist/utils/error-codes.js.map +1 -0
  803. package/dist/utils/error-manager.d.ts +59 -0
  804. package/dist/utils/error-manager.d.ts.map +1 -0
  805. package/dist/utils/error-manager.js +250 -0
  806. package/dist/utils/error-manager.js.map +1 -0
  807. package/dist/utils/helpers.d.ts +17 -0
  808. package/dist/utils/helpers.d.ts.map +1 -0
  809. package/dist/utils/helpers.js +111 -0
  810. package/dist/utils/helpers.js.map +1 -0
  811. package/dist/utils/hooks/get-image-analysis-hook-env.d.ts +17 -0
  812. package/dist/utils/hooks/get-image-analysis-hook-env.d.ts.map +1 -0
  813. package/dist/utils/hooks/get-image-analysis-hook-env.js +42 -0
  814. package/dist/utils/hooks/get-image-analysis-hook-env.js.map +1 -0
  815. package/dist/utils/hooks/image-analyzer-hook-configuration.d.ts +17 -0
  816. package/dist/utils/hooks/image-analyzer-hook-configuration.d.ts.map +1 -0
  817. package/dist/utils/hooks/image-analyzer-hook-configuration.js +71 -0
  818. package/dist/utils/hooks/image-analyzer-hook-configuration.js.map +1 -0
  819. package/dist/utils/hooks/image-analyzer-hook-installer.d.ts +31 -0
  820. package/dist/utils/hooks/image-analyzer-hook-installer.d.ts.map +1 -0
  821. package/dist/utils/hooks/image-analyzer-hook-installer.js +149 -0
  822. package/dist/utils/hooks/image-analyzer-hook-installer.js.map +1 -0
  823. package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts +24 -0
  824. package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts.map +1 -0
  825. package/dist/utils/hooks/image-analyzer-profile-hook-injector.js +251 -0
  826. package/dist/utils/hooks/image-analyzer-profile-hook-injector.js.map +1 -0
  827. package/dist/utils/hooks/index.d.ts +11 -0
  828. package/dist/utils/hooks/index.d.ts.map +1 -0
  829. package/dist/utils/hooks/index.js +21 -0
  830. package/dist/utils/hooks/index.js.map +1 -0
  831. package/dist/utils/image-analysis/hook-installer.d.ts +19 -0
  832. package/dist/utils/image-analysis/hook-installer.d.ts.map +1 -0
  833. package/dist/utils/image-analysis/hook-installer.js +112 -0
  834. package/dist/utils/image-analysis/hook-installer.js.map +1 -0
  835. package/dist/utils/image-analysis/index.d.ts +7 -0
  836. package/dist/utils/image-analysis/index.d.ts.map +1 -0
  837. package/dist/utils/image-analysis/index.js +12 -0
  838. package/dist/utils/image-analysis/index.js.map +1 -0
  839. package/dist/utils/index.d.ts +15 -0
  840. package/dist/utils/index.d.ts.map +1 -0
  841. package/dist/utils/index.js +50 -0
  842. package/dist/utils/index.js.map +1 -0
  843. package/dist/utils/package-manager-detector.d.ts +11 -0
  844. package/dist/utils/package-manager-detector.d.ts.map +1 -0
  845. package/dist/utils/package-manager-detector.js +103 -0
  846. package/dist/utils/package-manager-detector.js.map +1 -0
  847. package/dist/utils/platform-commands.d.ts +53 -0
  848. package/dist/utils/platform-commands.d.ts.map +1 -0
  849. package/dist/utils/platform-commands.js +189 -0
  850. package/dist/utils/platform-commands.js.map +1 -0
  851. package/dist/utils/port-utils.d.ts +55 -0
  852. package/dist/utils/port-utils.d.ts.map +1 -0
  853. package/dist/utils/port-utils.js +217 -0
  854. package/dist/utils/port-utils.js.map +1 -0
  855. package/dist/utils/progress-indicator.d.ts +53 -0
  856. package/dist/utils/progress-indicator.d.ts.map +1 -0
  857. package/dist/utils/progress-indicator.js +104 -0
  858. package/dist/utils/progress-indicator.js.map +1 -0
  859. package/dist/utils/prompt.d.ts +55 -0
  860. package/dist/utils/prompt.d.ts.map +1 -0
  861. package/dist/utils/prompt.js +270 -0
  862. package/dist/utils/prompt.js.map +1 -0
  863. package/dist/utils/sensitive-keys.d.ts +35 -0
  864. package/dist/utils/sensitive-keys.d.ts.map +1 -0
  865. package/dist/utils/sensitive-keys.js +67 -0
  866. package/dist/utils/sensitive-keys.js.map +1 -0
  867. package/dist/utils/shell-completion.d.ts +54 -0
  868. package/dist/utils/shell-completion.d.ts.map +1 -0
  869. package/dist/utils/shell-completion.js +260 -0
  870. package/dist/utils/shell-completion.js.map +1 -0
  871. package/dist/utils/shell-executor.d.ts +16 -0
  872. package/dist/utils/shell-executor.d.ts.map +1 -0
  873. package/dist/utils/shell-executor.js +73 -0
  874. package/dist/utils/shell-executor.js.map +1 -0
  875. package/dist/utils/time.d.ts +10 -0
  876. package/dist/utils/time.d.ts.map +1 -0
  877. package/dist/utils/time.js +27 -0
  878. package/dist/utils/time.js.map +1 -0
  879. package/dist/utils/ui/boxes.d.ts +24 -0
  880. package/dist/utils/ui/boxes.d.ts.map +1 -0
  881. package/dist/utils/ui/boxes.js +108 -0
  882. package/dist/utils/ui/boxes.js.map +1 -0
  883. package/dist/utils/ui/colors.d.ts +25 -0
  884. package/dist/utils/ui/colors.d.ts.map +1 -0
  885. package/dist/utils/ui/colors.js +70 -0
  886. package/dist/utils/ui/colors.js.map +1 -0
  887. package/dist/utils/ui/index.d.ts +51 -0
  888. package/dist/utils/ui/index.d.ts.map +1 -0
  889. package/dist/utils/ui/index.js +96 -0
  890. package/dist/utils/ui/index.js.map +1 -0
  891. package/dist/utils/ui/indicators.d.ts +23 -0
  892. package/dist/utils/ui/indicators.d.ts.map +1 -0
  893. package/dist/utils/ui/indicators.js +39 -0
  894. package/dist/utils/ui/indicators.js.map +1 -0
  895. package/dist/utils/ui/init.d.ts +30 -0
  896. package/dist/utils/ui/init.d.ts.map +1 -0
  897. package/dist/utils/ui/init.js +102 -0
  898. package/dist/utils/ui/init.js.map +1 -0
  899. package/dist/utils/ui/spinner.d.ts +13 -0
  900. package/dist/utils/ui/spinner.d.ts.map +1 -0
  901. package/dist/utils/ui/spinner.js +89 -0
  902. package/dist/utils/ui/spinner.js.map +1 -0
  903. package/dist/utils/ui/tables.d.ts +12 -0
  904. package/dist/utils/ui/tables.d.ts.map +1 -0
  905. package/dist/utils/ui/tables.js +69 -0
  906. package/dist/utils/ui/tables.js.map +1 -0
  907. package/dist/utils/ui/tasks.d.ts +26 -0
  908. package/dist/utils/ui/tasks.d.ts.map +1 -0
  909. package/dist/utils/ui/tasks.js +102 -0
  910. package/dist/utils/ui/tasks.js.map +1 -0
  911. package/dist/utils/ui/text.d.ts +24 -0
  912. package/dist/utils/ui/text.d.ts.map +1 -0
  913. package/dist/utils/ui/text.js +60 -0
  914. package/dist/utils/ui/text.js.map +1 -0
  915. package/dist/utils/ui/types.d.ts +36 -0
  916. package/dist/utils/ui/types.d.ts.map +1 -0
  917. package/dist/utils/ui/types.js +33 -0
  918. package/dist/utils/ui/types.js.map +1 -0
  919. package/dist/utils/ui.d.ts +17 -0
  920. package/dist/utils/ui.d.ts.map +1 -0
  921. package/dist/utils/ui.js +57 -0
  922. package/dist/utils/ui.js.map +1 -0
  923. package/dist/utils/update-checker.d.ts +71 -0
  924. package/dist/utils/update-checker.d.ts.map +1 -0
  925. package/dist/utils/update-checker.js +377 -0
  926. package/dist/utils/update-checker.js.map +1 -0
  927. package/dist/utils/version.d.ts +8 -0
  928. package/dist/utils/version.d.ts.map +1 -0
  929. package/dist/utils/version.js +51 -0
  930. package/dist/utils/version.js.map +1 -0
  931. package/dist/utils/websearch/gemini-cli.d.ts +36 -0
  932. package/dist/utils/websearch/gemini-cli.d.ts.map +1 -0
  933. package/dist/utils/websearch/gemini-cli.js +132 -0
  934. package/dist/utils/websearch/gemini-cli.js.map +1 -0
  935. package/dist/utils/websearch/grok-cli.d.ts +26 -0
  936. package/dist/utils/websearch/grok-cli.d.ts.map +1 -0
  937. package/dist/utils/websearch/grok-cli.js +81 -0
  938. package/dist/utils/websearch/grok-cli.js.map +1 -0
  939. package/dist/utils/websearch/hook-config.d.ts +27 -0
  940. package/dist/utils/websearch/hook-config.d.ts.map +1 -0
  941. package/dist/utils/websearch/hook-config.js +280 -0
  942. package/dist/utils/websearch/hook-config.js.map +1 -0
  943. package/dist/utils/websearch/hook-env.d.ts +16 -0
  944. package/dist/utils/websearch/hook-env.d.ts.map +1 -0
  945. package/dist/utils/websearch/hook-env.js +62 -0
  946. package/dist/utils/websearch/hook-env.js.map +1 -0
  947. package/dist/utils/websearch/hook-installer.d.ts +30 -0
  948. package/dist/utils/websearch/hook-installer.d.ts.map +1 -0
  949. package/dist/utils/websearch/hook-installer.js +148 -0
  950. package/dist/utils/websearch/hook-installer.js.map +1 -0
  951. package/dist/utils/websearch/hook-utils.d.ts +18 -0
  952. package/dist/utils/websearch/hook-utils.d.ts.map +1 -0
  953. package/dist/utils/websearch/hook-utils.js +59 -0
  954. package/dist/utils/websearch/hook-utils.js.map +1 -0
  955. package/dist/utils/websearch/index.d.ts +17 -0
  956. package/dist/utils/websearch/index.d.ts.map +1 -0
  957. package/dist/utils/websearch/index.js +51 -0
  958. package/dist/utils/websearch/index.js.map +1 -0
  959. package/dist/utils/websearch/opencode-cli.d.ts +26 -0
  960. package/dist/utils/websearch/opencode-cli.d.ts.map +1 -0
  961. package/dist/utils/websearch/opencode-cli.js +81 -0
  962. package/dist/utils/websearch/opencode-cli.js.map +1 -0
  963. package/dist/utils/websearch/profile-hook-injector.d.ts +20 -0
  964. package/dist/utils/websearch/profile-hook-injector.d.ts.map +1 -0
  965. package/dist/utils/websearch/profile-hook-injector.js +250 -0
  966. package/dist/utils/websearch/profile-hook-injector.js.map +1 -0
  967. package/dist/utils/websearch/status.d.ts +36 -0
  968. package/dist/utils/websearch/status.d.ts.map +1 -0
  969. package/dist/utils/websearch/status.js +192 -0
  970. package/dist/utils/websearch/status.js.map +1 -0
  971. package/dist/utils/websearch/types.d.ts +85 -0
  972. package/dist/utils/websearch/types.d.ts.map +1 -0
  973. package/dist/utils/websearch/types.js +10 -0
  974. package/dist/utils/websearch/types.js.map +1 -0
  975. package/dist/utils/websearch-manager.d.ts +31 -0
  976. package/dist/utils/websearch-manager.d.ts.map +1 -0
  977. package/dist/utils/websearch-manager.js +72 -0
  978. package/dist/utils/websearch-manager.js.map +1 -0
  979. package/dist/web-server/data-aggregator.d.ts +7 -0
  980. package/dist/web-server/data-aggregator.d.ts.map +1 -0
  981. package/dist/web-server/data-aggregator.js +23 -0
  982. package/dist/web-server/data-aggregator.js.map +1 -0
  983. package/dist/web-server/file-watcher.d.ts +15 -0
  984. package/dist/web-server/file-watcher.d.ts.map +1 -0
  985. package/dist/web-server/file-watcher.js +93 -0
  986. package/dist/web-server/file-watcher.js.map +1 -0
  987. package/dist/web-server/health/cliproxy-checks.d.ts +23 -0
  988. package/dist/web-server/health/cliproxy-checks.d.ts.map +1 -0
  989. package/dist/web-server/health/cliproxy-checks.js +171 -0
  990. package/dist/web-server/health/cliproxy-checks.js.map +1 -0
  991. package/dist/web-server/health/config-checks.d.ts +20 -0
  992. package/dist/web-server/health/config-checks.d.ts.map +1 -0
  993. package/dist/web-server/health/config-checks.js +212 -0
  994. package/dist/web-server/health/config-checks.js.map +1 -0
  995. package/dist/web-server/health/environment-checks.d.ts +11 -0
  996. package/dist/web-server/health/environment-checks.d.ts.map +1 -0
  997. package/dist/web-server/health/environment-checks.js +40 -0
  998. package/dist/web-server/health/environment-checks.js.map +1 -0
  999. package/dist/web-server/health/index.d.ts +13 -0
  1000. package/dist/web-server/health/index.d.ts.map +1 -0
  1001. package/dist/web-server/health/index.js +41 -0
  1002. package/dist/web-server/health/index.js.map +1 -0
  1003. package/dist/web-server/health/oauth-checks.d.ts +11 -0
  1004. package/dist/web-server/health/oauth-checks.d.ts.map +1 -0
  1005. package/dist/web-server/health/oauth-checks.js +34 -0
  1006. package/dist/web-server/health/oauth-checks.js.map +1 -0
  1007. package/dist/web-server/health/profile-checks.d.ts +20 -0
  1008. package/dist/web-server/health/profile-checks.d.ts.map +1 -0
  1009. package/dist/web-server/health/profile-checks.js +184 -0
  1010. package/dist/web-server/health/profile-checks.js.map +1 -0
  1011. package/dist/web-server/health/symlink-checks.d.ts +15 -0
  1012. package/dist/web-server/health/symlink-checks.d.ts.map +1 -0
  1013. package/dist/web-server/health/symlink-checks.js +173 -0
  1014. package/dist/web-server/health/symlink-checks.js.map +1 -0
  1015. package/dist/web-server/health/system-checks.d.ts +19 -0
  1016. package/dist/web-server/health/system-checks.d.ts.map +1 -0
  1017. package/dist/web-server/health/system-checks.js +127 -0
  1018. package/dist/web-server/health/system-checks.js.map +1 -0
  1019. package/dist/web-server/health/types.d.ts +34 -0
  1020. package/dist/web-server/health/types.d.ts.map +1 -0
  1021. package/dist/web-server/health/types.js +8 -0
  1022. package/dist/web-server/health/types.js.map +1 -0
  1023. package/dist/web-server/health/websearch-checks.d.ts +11 -0
  1024. package/dist/web-server/health/websearch-checks.d.ts.map +1 -0
  1025. package/dist/web-server/health/websearch-checks.js +53 -0
  1026. package/dist/web-server/health/websearch-checks.js.map +1 -0
  1027. package/dist/web-server/health-service.d.ts +20 -0
  1028. package/dist/web-server/health-service.d.ts.map +1 -0
  1029. package/dist/web-server/health-service.js +162 -0
  1030. package/dist/web-server/health-service.js.map +1 -0
  1031. package/dist/web-server/index.d.ts +25 -0
  1032. package/dist/web-server/index.d.ts.map +1 -0
  1033. package/dist/web-server/index.js +118 -0
  1034. package/dist/web-server/index.js.map +1 -0
  1035. package/dist/web-server/jsonl-parser.d.ts +68 -0
  1036. package/dist/web-server/jsonl-parser.d.ts.map +1 -0
  1037. package/dist/web-server/jsonl-parser.js +214 -0
  1038. package/dist/web-server/jsonl-parser.js.map +1 -0
  1039. package/dist/web-server/middleware/auth-middleware.d.ts +27 -0
  1040. package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -0
  1041. package/dist/web-server/middleware/auth-middleware.js +116 -0
  1042. package/dist/web-server/middleware/auth-middleware.js.map +1 -0
  1043. package/dist/web-server/model-pricing.d.ts +42 -0
  1044. package/dist/web-server/model-pricing.d.ts.map +1 -0
  1045. package/dist/web-server/model-pricing.js +669 -0
  1046. package/dist/web-server/model-pricing.js.map +1 -0
  1047. package/dist/web-server/overview-routes.d.ts +7 -0
  1048. package/dist/web-server/overview-routes.d.ts.map +1 -0
  1049. package/dist/web-server/overview-routes.js +75 -0
  1050. package/dist/web-server/overview-routes.js.map +1 -0
  1051. package/dist/web-server/routes/account-routes.d.ts +9 -0
  1052. package/dist/web-server/routes/account-routes.d.ts.map +1 -0
  1053. package/dist/web-server/routes/account-routes.js +274 -0
  1054. package/dist/web-server/routes/account-routes.js.map +1 -0
  1055. package/dist/web-server/routes/auth-routes.d.ts +7 -0
  1056. package/dist/web-server/routes/auth-routes.d.ts.map +1 -0
  1057. package/dist/web-server/routes/auth-routes.js +108 -0
  1058. package/dist/web-server/routes/auth-routes.js.map +1 -0
  1059. package/dist/web-server/routes/cliproxy-auth-routes.d.ts +3 -0
  1060. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -0
  1061. package/dist/web-server/routes/cliproxy-auth-routes.js +610 -0
  1062. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -0
  1063. package/dist/web-server/routes/cliproxy-stats-routes.d.ts +6 -0
  1064. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -0
  1065. package/dist/web-server/routes/cliproxy-stats-routes.js +681 -0
  1066. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -0
  1067. package/dist/web-server/routes/cliproxy-sync-routes.d.ts +6 -0
  1068. package/dist/web-server/routes/cliproxy-sync-routes.d.ts.map +1 -0
  1069. package/dist/web-server/routes/cliproxy-sync-routes.js +157 -0
  1070. package/dist/web-server/routes/cliproxy-sync-routes.js.map +1 -0
  1071. package/dist/web-server/routes/config-routes.d.ts +6 -0
  1072. package/dist/web-server/routes/config-routes.d.ts.map +1 -0
  1073. package/dist/web-server/routes/config-routes.js +130 -0
  1074. package/dist/web-server/routes/config-routes.js.map +1 -0
  1075. package/dist/web-server/routes/copilot-routes.d.ts +6 -0
  1076. package/dist/web-server/routes/copilot-routes.d.ts.map +1 -0
  1077. package/dist/web-server/routes/copilot-routes.js +195 -0
  1078. package/dist/web-server/routes/copilot-routes.js.map +1 -0
  1079. package/dist/web-server/routes/copilot-settings-routes.d.ts +6 -0
  1080. package/dist/web-server/routes/copilot-settings-routes.d.ts.map +1 -0
  1081. package/dist/web-server/routes/copilot-settings-routes.js +122 -0
  1082. package/dist/web-server/routes/copilot-settings-routes.js.map +1 -0
  1083. package/dist/web-server/routes/health-routes.d.ts +6 -0
  1084. package/dist/web-server/routes/health-routes.d.ts.map +1 -0
  1085. package/dist/web-server/routes/health-routes.js +40 -0
  1086. package/dist/web-server/routes/health-routes.js.map +1 -0
  1087. package/dist/web-server/routes/index.d.ts +8 -0
  1088. package/dist/web-server/routes/index.d.ts.map +1 -0
  1089. package/dist/web-server/routes/index.js +62 -0
  1090. package/dist/web-server/routes/index.js.map +1 -0
  1091. package/dist/web-server/routes/misc-routes.d.ts +6 -0
  1092. package/dist/web-server/routes/misc-routes.d.ts.map +1 -0
  1093. package/dist/web-server/routes/misc-routes.js +396 -0
  1094. package/dist/web-server/routes/misc-routes.js.map +1 -0
  1095. package/dist/web-server/routes/persist-routes.d.ts +6 -0
  1096. package/dist/web-server/routes/persist-routes.d.ts.map +1 -0
  1097. package/dist/web-server/routes/persist-routes.js +286 -0
  1098. package/dist/web-server/routes/persist-routes.js.map +1 -0
  1099. package/dist/web-server/routes/profile-routes.d.ts +9 -0
  1100. package/dist/web-server/routes/profile-routes.d.ts.map +1 -0
  1101. package/dist/web-server/routes/profile-routes.js +116 -0
  1102. package/dist/web-server/routes/profile-routes.js.map +1 -0
  1103. package/dist/web-server/routes/provider-routes.d.ts +6 -0
  1104. package/dist/web-server/routes/provider-routes.d.ts.map +1 -0
  1105. package/dist/web-server/routes/provider-routes.js +146 -0
  1106. package/dist/web-server/routes/provider-routes.js.map +1 -0
  1107. package/dist/web-server/routes/proxy-routes.d.ts +11 -0
  1108. package/dist/web-server/routes/proxy-routes.d.ts.map +1 -0
  1109. package/dist/web-server/routes/proxy-routes.js +154 -0
  1110. package/dist/web-server/routes/proxy-routes.js.map +1 -0
  1111. package/dist/web-server/routes/route-helpers.d.ts +50 -0
  1112. package/dist/web-server/routes/route-helpers.d.ts.map +1 -0
  1113. package/dist/web-server/routes/route-helpers.js +179 -0
  1114. package/dist/web-server/routes/route-helpers.js.map +1 -0
  1115. package/dist/web-server/routes/settings-routes.d.ts +6 -0
  1116. package/dist/web-server/routes/settings-routes.d.ts.map +1 -0
  1117. package/dist/web-server/routes/settings-routes.js +413 -0
  1118. package/dist/web-server/routes/settings-routes.js.map +1 -0
  1119. package/dist/web-server/routes/variant-routes.d.ts +8 -0
  1120. package/dist/web-server/routes/variant-routes.d.ts.map +1 -0
  1121. package/dist/web-server/routes/variant-routes.js +119 -0
  1122. package/dist/web-server/routes/variant-routes.js.map +1 -0
  1123. package/dist/web-server/routes/websearch-routes.d.ts +6 -0
  1124. package/dist/web-server/routes/websearch-routes.d.ts.map +1 -0
  1125. package/dist/web-server/routes/websearch-routes.js +130 -0
  1126. package/dist/web-server/routes/websearch-routes.js.map +1 -0
  1127. package/dist/web-server/services/index.d.ts +7 -0
  1128. package/dist/web-server/services/index.d.ts.map +1 -0
  1129. package/dist/web-server/services/index.js +21 -0
  1130. package/dist/web-server/services/index.js.map +1 -0
  1131. package/dist/web-server/services/usage-aggregator.d.ts +7 -0
  1132. package/dist/web-server/services/usage-aggregator.d.ts.map +1 -0
  1133. package/dist/web-server/services/usage-aggregator.js +23 -0
  1134. package/dist/web-server/services/usage-aggregator.js.map +1 -0
  1135. package/dist/web-server/shared-routes.d.ts +7 -0
  1136. package/dist/web-server/shared-routes.d.ts.map +1 -0
  1137. package/dist/web-server/shared-routes.js +168 -0
  1138. package/dist/web-server/shared-routes.js.map +1 -0
  1139. package/dist/web-server/shutdown.d.ts +14 -0
  1140. package/dist/web-server/shutdown.d.ts.map +1 -0
  1141. package/dist/web-server/shutdown.js +29 -0
  1142. package/dist/web-server/shutdown.js.map +1 -0
  1143. package/dist/web-server/usage/aggregator.d.ts +54 -0
  1144. package/dist/web-server/usage/aggregator.d.ts.map +1 -0
  1145. package/dist/web-server/usage/aggregator.js +470 -0
  1146. package/dist/web-server/usage/aggregator.js.map +1 -0
  1147. package/dist/web-server/usage/data-aggregator.d.ts +55 -0
  1148. package/dist/web-server/usage/data-aggregator.d.ts.map +1 -0
  1149. package/dist/web-server/usage/data-aggregator.js +391 -0
  1150. package/dist/web-server/usage/data-aggregator.js.map +1 -0
  1151. package/dist/web-server/usage/disk-cache.d.ts +46 -0
  1152. package/dist/web-server/usage/disk-cache.d.ts.map +1 -0
  1153. package/dist/web-server/usage/disk-cache.js +162 -0
  1154. package/dist/web-server/usage/disk-cache.js.map +1 -0
  1155. package/dist/web-server/usage/handlers.d.ts +50 -0
  1156. package/dist/web-server/usage/handlers.d.ts.map +1 -0
  1157. package/dist/web-server/usage/handlers.js +524 -0
  1158. package/dist/web-server/usage/handlers.js.map +1 -0
  1159. package/dist/web-server/usage/index.d.ts +12 -0
  1160. package/dist/web-server/usage/index.d.ts.map +1 -0
  1161. package/dist/web-server/usage/index.js +54 -0
  1162. package/dist/web-server/usage/index.js.map +1 -0
  1163. package/dist/web-server/usage/routes.d.ts +11 -0
  1164. package/dist/web-server/usage/routes.d.ts.map +1 -0
  1165. package/dist/web-server/usage/routes.js +37 -0
  1166. package/dist/web-server/usage/routes.js.map +1 -0
  1167. package/dist/web-server/usage/types.d.ts +119 -0
  1168. package/dist/web-server/usage/types.d.ts.map +1 -0
  1169. package/dist/web-server/usage/types.js +9 -0
  1170. package/dist/web-server/usage/types.js.map +1 -0
  1171. package/dist/web-server/usage-disk-cache.d.ts +7 -0
  1172. package/dist/web-server/usage-disk-cache.d.ts.map +1 -0
  1173. package/dist/web-server/usage-disk-cache.js +23 -0
  1174. package/dist/web-server/usage-disk-cache.js.map +1 -0
  1175. package/dist/web-server/usage-routes.d.ts +7 -0
  1176. package/dist/web-server/usage-routes.d.ts.map +1 -0
  1177. package/dist/web-server/usage-routes.js +14 -0
  1178. package/dist/web-server/usage-routes.js.map +1 -0
  1179. package/dist/web-server/usage-types.d.ts +7 -0
  1180. package/dist/web-server/usage-types.d.ts.map +1 -0
  1181. package/dist/web-server/usage-types.js +23 -0
  1182. package/dist/web-server/usage-types.js.map +1 -0
  1183. package/dist/web-server/websocket.d.ts +15 -0
  1184. package/dist/web-server/websocket.d.ts.map +1 -0
  1185. package/dist/web-server/websocket.js +162 -0
  1186. package/dist/web-server/websocket.js.map +1 -0
  1187. package/lib/ccs +32 -0
  1188. package/lib/ccs.ps1 +39 -0
  1189. package/lib/error-codes.ps1 +56 -0
  1190. package/lib/error-codes.sh +63 -0
  1191. package/lib/hooks/block-websearch.cjs +75 -0
  1192. package/lib/hooks/image-analyzer-transformer.cjs +880 -0
  1193. package/lib/hooks/websearch-transformer.cjs +632 -0
  1194. package/lib/progress-indicator.ps1 +120 -0
  1195. package/lib/progress-indicator.sh +117 -0
  1196. package/lib/prompt.ps1 +109 -0
  1197. package/lib/prompt.sh +99 -0
  1198. package/lib/prompts/image-analysis-default.txt +12 -0
  1199. package/lib/prompts/image-analysis-document.txt +13 -0
  1200. package/lib/prompts/image-analysis-screenshot.txt +13 -0
  1201. package/package.json +133 -0
  1202. package/scripts/add-shebang.js +39 -0
  1203. package/scripts/bump-version.sh +153 -0
  1204. package/scripts/check-executables.js +18 -0
  1205. package/scripts/clean-dist.js +46 -0
  1206. package/scripts/code-reviewer.ts +217 -0
  1207. package/scripts/completion/README.md +308 -0
  1208. package/scripts/completion/ccs.bash +176 -0
  1209. package/scripts/completion/ccs.fish +248 -0
  1210. package/scripts/completion/ccs.ps1 +394 -0
  1211. package/scripts/completion/ccs.zsh +308 -0
  1212. package/scripts/dev-install.sh +108 -0
  1213. package/scripts/dev-release.sh +123 -0
  1214. package/scripts/dev-symlink.sh +115 -0
  1215. package/scripts/get-version.sh +16 -0
  1216. package/scripts/postinstall.js +358 -0
  1217. package/scripts/postuninstall.js +48 -0
  1218. package/scripts/pre-release.sh +39 -0
  1219. package/scripts/preinstall.js +59 -0
  1220. package/scripts/send-discord-release.cjs +249 -0
  1221. package/scripts/verify-bundle.js +56 -0
  1222. package/scripts/worker.js +26 -0
  1223. package/scripts/wrangler.toml +15 -0
@@ -0,0 +1,1025 @@
1
+ "use strict";
2
+ /**
3
+ * CLIProxy Executor - Spawn/Kill Pattern for CLIProxyAPI
4
+ *
5
+ * Mirrors GLMT architecture:
6
+ * 1. Ensure binary exists (Phase 1)
7
+ * 2. Generate config for provider
8
+ * 3. Spawn CLIProxyAPI binary
9
+ * 4. Poll port for readiness (no stdout signal)
10
+ * 5. Execute Claude CLI with proxied environment
11
+ * 6. Kill proxy on Claude exit
12
+ *
13
+ * Key difference from GLMT: Uses TCP port polling instead of PROXY_READY signal
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.findAvailablePort = exports.isPortAvailable = exports.execClaudeWithCLIProxy = void 0;
40
+ const child_process_1 = require("child_process");
41
+ const net = __importStar(require("net"));
42
+ const os = __importStar(require("os"));
43
+ const progress_indicator_1 = require("../utils/progress-indicator");
44
+ const ui_1 = require("../utils/ui");
45
+ const shell_executor_1 = require("../utils/shell-executor");
46
+ const binary_manager_1 = require("./binary-manager");
47
+ const config_generator_1 = require("./config-generator");
48
+ const remote_proxy_client_1 = require("./remote-proxy-client");
49
+ const auth_handler_1 = require("./auth-handler");
50
+ const types_1 = require("./types");
51
+ const platform_detector_1 = require("./platform-detector");
52
+ const model_config_1 = require("./model-config");
53
+ const proxy_config_resolver_1 = require("./proxy-config-resolver");
54
+ const websearch_manager_1 = require("../utils/websearch-manager");
55
+ const get_image_analysis_hook_env_1 = require("../utils/hooks/get-image-analysis-hook-env");
56
+ const model_catalog_1 = require("./model-catalog");
57
+ const codex_reasoning_proxy_1 = require("./codex-reasoning-proxy");
58
+ const tool_sanitization_proxy_1 = require("./tool-sanitization-proxy");
59
+ const account_manager_1 = require("./account-manager");
60
+ const platform_commands_1 = require("../utils/platform-commands");
61
+ const websearch_manager_2 = require("../utils/websearch-manager");
62
+ const session_tracker_1 = require("./session-tracker");
63
+ const proxy_detector_1 = require("./proxy-detector");
64
+ const startup_lock_1 = require("./startup-lock");
65
+ const unified_config_loader_1 = require("../config/unified-config-loader");
66
+ const quota_manager_1 = require("./quota-manager");
67
+ const https_tunnel_proxy_1 = require("./https-tunnel-proxy");
68
+ /** Default executor configuration */
69
+ const DEFAULT_CONFIG = {
70
+ port: config_generator_1.CLIPROXY_DEFAULT_PORT,
71
+ timeout: 5000,
72
+ verbose: false,
73
+ pollInterval: 100,
74
+ };
75
+ /**
76
+ * Wait for TCP port to become available
77
+ * Uses polling since CLIProxyAPI doesn't emit PROXY_READY signal
78
+ */
79
+ async function waitForProxyReady(port, timeout = 5000, pollInterval = 100) {
80
+ const start = Date.now();
81
+ while (Date.now() - start < timeout) {
82
+ try {
83
+ await new Promise((resolve, reject) => {
84
+ const socket = net.createConnection({ port, host: '127.0.0.1' }, () => {
85
+ socket.destroy();
86
+ resolve();
87
+ });
88
+ socket.on('error', (err) => {
89
+ socket.destroy();
90
+ reject(err);
91
+ });
92
+ // Individual connection timeout
93
+ socket.setTimeout(1000, () => {
94
+ socket.destroy();
95
+ reject(new Error('Connection timeout'));
96
+ });
97
+ });
98
+ return; // Connection successful - proxy is ready
99
+ }
100
+ catch {
101
+ // Connection failed, wait and retry
102
+ await new Promise((r) => setTimeout(r, pollInterval));
103
+ }
104
+ }
105
+ throw new Error(`CLIProxy not ready after ${timeout}ms on port ${port}`);
106
+ }
107
+ /**
108
+ * Execute Claude CLI with CLIProxy (main entry point)
109
+ *
110
+ * @param claudeCli Path to Claude CLI executable
111
+ * @param provider CLIProxy provider (gemini, codex, agy, qwen)
112
+ * @param args Arguments to pass to Claude CLI
113
+ * @param config Optional executor configuration
114
+ */
115
+ async function execClaudeWithCLIProxy(claudeCli, provider, args, config = {}) {
116
+ // Filter out undefined values to prevent overwriting defaults
117
+ const filteredConfig = Object.fromEntries(Object.entries(config).filter(([, v]) => v !== undefined));
118
+ const cfg = { ...DEFAULT_CONFIG, ...filteredConfig };
119
+ const verbose = cfg.verbose || args.includes('--verbose') || args.includes('-v');
120
+ const log = (msg) => {
121
+ if (verbose) {
122
+ console.error(`[cliproxy] ${msg}`);
123
+ }
124
+ };
125
+ // 0. Resolve proxy configuration (CLI > ENV > config.yaml > defaults)
126
+ // This filters proxy flags from args and returns resolved config
127
+ const unifiedConfig = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
128
+ // 0a. Runtime backend/provider validation - block kiro/ghcp if backend=original
129
+ const backend = unifiedConfig.cliproxy?.backend ?? platform_detector_1.DEFAULT_BACKEND;
130
+ if (backend === 'original' && types_1.PLUS_ONLY_PROVIDERS.includes(provider)) {
131
+ console.error('');
132
+ console.error((0, ui_1.fail)(`${provider} requires CLIProxyAPIPlus backend`));
133
+ console.error('');
134
+ console.error('To use this provider, either:');
135
+ console.error(' 1. Set `cliproxy.backend: plus` in ~/.ccs/config.yaml');
136
+ console.error(' 2. Use --backend=plus flag: ccs ' + provider + ' --backend=plus');
137
+ console.error('');
138
+ throw new Error(`Provider ${provider} requires Plus backend`);
139
+ }
140
+ const cliproxyServerConfig = unifiedConfig.cliproxy_server;
141
+ const { config: proxyConfig, remainingArgs: argsWithoutProxy } = (0, proxy_config_resolver_1.resolveProxyConfig)(args, {
142
+ remote: cliproxyServerConfig?.remote
143
+ ? {
144
+ enabled: cliproxyServerConfig.remote.enabled,
145
+ host: cliproxyServerConfig.remote.host,
146
+ port: cliproxyServerConfig.remote.port,
147
+ protocol: cliproxyServerConfig.remote.protocol,
148
+ auth_token: cliproxyServerConfig.remote.auth_token,
149
+ timeout: cliproxyServerConfig.remote.timeout,
150
+ }
151
+ : undefined,
152
+ local: cliproxyServerConfig?.local
153
+ ? {
154
+ port: cliproxyServerConfig.local.port,
155
+ auto_start: cliproxyServerConfig.local.auto_start,
156
+ }
157
+ : undefined,
158
+ });
159
+ // Use resolved port from proxy config (overrides ExecutorConfig)
160
+ // Priority: CLI flags > Variant port (cfg.port) > config.yaml > default
161
+ // cfg.port is set if variant has dedicated port; proxyConfig.port comes from CLI/ENV/config.yaml
162
+ if (cfg.port && cfg.port !== config_generator_1.CLIPROXY_DEFAULT_PORT) {
163
+ // Variant port already set via config param - keep it (highest priority after CLI flags)
164
+ // CLI flags would have been parsed in resolveProxyConfig and set proxyConfig.port
165
+ // So if proxyConfig.port differs from default AND cfg.port differs, CLI wins
166
+ if (proxyConfig.port !== config_generator_1.CLIPROXY_DEFAULT_PORT) {
167
+ cfg.port = proxyConfig.port; // CLI/ENV override variant port
168
+ }
169
+ // else: keep cfg.port (variant port)
170
+ }
171
+ else if (proxyConfig.port !== config_generator_1.CLIPROXY_DEFAULT_PORT) {
172
+ cfg.port = proxyConfig.port;
173
+ }
174
+ // Final port validation - ensure valid port after all resolution
175
+ cfg.port = (0, config_generator_1.validatePort)(cfg.port);
176
+ log(`Proxy mode: ${proxyConfig.mode}`);
177
+ if (proxyConfig.mode === 'remote') {
178
+ log(`Remote host: ${proxyConfig.host}:${proxyConfig.port} (${proxyConfig.protocol})`);
179
+ }
180
+ // Note: proxyConfig is available for Phase 4 (remote mode integration)
181
+ // Ensure MCP web-search is configured for third-party profiles
182
+ // WebSearch is a server-side tool executed by Anthropic's API
183
+ // Third-party providers don't have access, so we use MCP fallback
184
+ (0, websearch_manager_2.ensureMcpWebSearch)();
185
+ // Install WebSearch hook for Gemini CLI + MCP fallback
186
+ // Hook intercepts WebSearch, tries Gemini CLI first, falls back to MCP
187
+ (0, websearch_manager_2.installWebSearchHook)();
188
+ // Display WebSearch status (single line, equilibrium UX)
189
+ (0, websearch_manager_2.displayWebSearchStatus)();
190
+ // Validate provider
191
+ const providerConfig = (0, config_generator_1.getProviderConfig)(provider);
192
+ log(`Provider: ${providerConfig.displayName}`);
193
+ // Check remote proxy if configured (before binary download)
194
+ let useRemoteProxy = false;
195
+ if (proxyConfig.mode === 'remote' && proxyConfig.host) {
196
+ const status = await (0, remote_proxy_client_1.checkRemoteProxy)({
197
+ host: proxyConfig.host,
198
+ port: proxyConfig.port,
199
+ protocol: proxyConfig.protocol,
200
+ authToken: proxyConfig.authToken,
201
+ timeout: proxyConfig.timeout ?? 2000,
202
+ allowSelfSigned: proxyConfig.allowSelfSigned ?? false,
203
+ });
204
+ if (status.reachable) {
205
+ useRemoteProxy = true;
206
+ console.log((0, ui_1.ok)(`Connected to remote proxy at ${proxyConfig.host}:${proxyConfig.port} (${status.latencyMs}ms)`));
207
+ }
208
+ else {
209
+ console.error((0, ui_1.warn)(`Remote proxy unreachable: ${status.error}`));
210
+ if (proxyConfig.remoteOnly) {
211
+ throw new Error('Remote proxy unreachable and --remote-only specified');
212
+ }
213
+ if (proxyConfig.fallbackEnabled) {
214
+ if (proxyConfig.autoStartLocal) {
215
+ console.log((0, ui_1.info)('Falling back to local proxy...'));
216
+ }
217
+ else {
218
+ // Prompt user for fallback (only in TTY)
219
+ if (process.stdin.isTTY) {
220
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
221
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
222
+ const answer = await new Promise((resolve) => {
223
+ rl.question('Start local proxy instead? [Y/n] ', resolve);
224
+ });
225
+ rl.close();
226
+ if (answer.toLowerCase() === 'n') {
227
+ throw new Error('Remote proxy unreachable and user declined fallback');
228
+ }
229
+ }
230
+ console.log((0, ui_1.info)('Starting local proxy...'));
231
+ }
232
+ }
233
+ else {
234
+ throw new Error('Remote proxy unreachable and fallback disabled');
235
+ }
236
+ }
237
+ }
238
+ // Variables for local proxy mode
239
+ let binaryPath;
240
+ let sessionId;
241
+ // 1. Ensure binary exists (downloads if needed) - SKIP for remote mode
242
+ if (!useRemoteProxy) {
243
+ const spinner = new progress_indicator_1.ProgressIndicator('Preparing CLIProxy');
244
+ spinner.start();
245
+ try {
246
+ binaryPath = await (0, binary_manager_1.ensureCLIProxyBinary)(verbose);
247
+ spinner.succeed('CLIProxy binary ready');
248
+ }
249
+ catch (error) {
250
+ spinner.fail('Failed to prepare CLIProxy');
251
+ const err = error;
252
+ // Check if network offline (DNS, connection, or timeout failure)
253
+ const networkErrors = [
254
+ 'getaddrinfo',
255
+ 'ENOTFOUND',
256
+ 'ETIMEDOUT',
257
+ 'ECONNREFUSED',
258
+ 'ENETUNREACH',
259
+ 'EAI_AGAIN',
260
+ ];
261
+ const isNetworkError = networkErrors.some((errCode) => err.message.includes(errCode));
262
+ if (isNetworkError) {
263
+ console.error('');
264
+ console.error((0, ui_1.fail)('No network connection detected'));
265
+ console.error('');
266
+ console.error('CLIProxy binary download requires internet access.');
267
+ console.error('Please check your network connection and try again.');
268
+ console.error('');
269
+ process.exit(1);
270
+ }
271
+ throw error;
272
+ }
273
+ }
274
+ // 2. Handle special flags (use argsWithoutProxy - proxy flags already stripped)
275
+ const forceAuth = argsWithoutProxy.includes('--auth');
276
+ const pasteCallback = argsWithoutProxy.includes('--paste-callback');
277
+ const forceHeadless = argsWithoutProxy.includes('--headless');
278
+ const forceLogout = argsWithoutProxy.includes('--logout');
279
+ const forceConfig = argsWithoutProxy.includes('--config');
280
+ const addAccount = argsWithoutProxy.includes('--add');
281
+ const showAccounts = argsWithoutProxy.includes('--accounts');
282
+ // Kiro-specific: --import to import token from Kiro IDE directly
283
+ const forceImport = argsWithoutProxy.includes('--import');
284
+ // Kiro-specific: browser mode for OAuth
285
+ // Default to normal browser (noIncognito=true) for reliability - incognito often fails on Linux
286
+ // --incognito flag opts into incognito mode, --no-incognito is legacy (now default)
287
+ const incognitoFlag = argsWithoutProxy.includes('--incognito');
288
+ const noIncognitoFlag = argsWithoutProxy.includes('--no-incognito');
289
+ // Config setting (defaults to true = normal browser)
290
+ const kiroNoIncognitoConfig = provider === 'kiro' ? (unifiedConfig.cliproxy?.kiro_no_incognito ?? true) : false;
291
+ // --incognito flag overrides everything to use incognito
292
+ const noIncognito = incognitoFlag ? false : noIncognitoFlag || kiroNoIncognitoConfig;
293
+ // Parse --use <account> flag
294
+ let useAccount;
295
+ const useIdx = argsWithoutProxy.indexOf('--use');
296
+ if (useIdx !== -1 &&
297
+ argsWithoutProxy[useIdx + 1] &&
298
+ !argsWithoutProxy[useIdx + 1].startsWith('-')) {
299
+ useAccount = argsWithoutProxy[useIdx + 1];
300
+ }
301
+ // Parse --nickname <name> flag
302
+ let setNickname;
303
+ const nicknameIdx = argsWithoutProxy.indexOf('--nickname');
304
+ if (nicknameIdx !== -1 &&
305
+ argsWithoutProxy[nicknameIdx + 1] &&
306
+ !argsWithoutProxy[nicknameIdx + 1].startsWith('-')) {
307
+ setNickname = argsWithoutProxy[nicknameIdx + 1];
308
+ }
309
+ // Parse --thinking <value> flag for thinking budget control
310
+ // Supports: level names (low, medium, high, xhigh, auto), numeric budget, or 'off'/'none'
311
+ // Accepts both --thinking=value and --thinking value formats
312
+ let thinkingOverride;
313
+ // Check for --thinking=value format first
314
+ const thinkingEqArg = argsWithoutProxy.find((arg) => arg.startsWith('--thinking='));
315
+ if (thinkingEqArg) {
316
+ const val = thinkingEqArg.substring('--thinking='.length);
317
+ // Handle empty value after equals (--thinking=)
318
+ if (!val || val.trim() === '') {
319
+ console.error((0, ui_1.fail)('--thinking requires a value'));
320
+ console.error(' Examples: --thinking=low, --thinking=8192, --thinking=off');
321
+ console.error(' Levels: minimal, low, medium, high, xhigh, auto');
322
+ process.exit(1);
323
+ }
324
+ // Parse as number if numeric, otherwise keep as string (level name)
325
+ const numVal = parseInt(val, 10);
326
+ thinkingOverride = !isNaN(numVal) ? numVal : val;
327
+ // W2: Warn if multiple --thinking flags found (check both formats)
328
+ const allThinkingFlags = argsWithoutProxy.filter((arg) => arg === '--thinking' || arg.startsWith('--thinking='));
329
+ if (allThinkingFlags.length > 1) {
330
+ console.warn(`[!] Multiple --thinking flags detected. Using first occurrence: ${thinkingEqArg}`);
331
+ }
332
+ }
333
+ else {
334
+ // Fall back to --thinking value format
335
+ const thinkingIdx = argsWithoutProxy.indexOf('--thinking');
336
+ if (thinkingIdx !== -1) {
337
+ const nextArg = argsWithoutProxy[thinkingIdx + 1];
338
+ // U1: Check if --thinking has a value (not missing or another flag)
339
+ if (!nextArg || nextArg.startsWith('-')) {
340
+ console.error((0, ui_1.fail)('--thinking requires a value'));
341
+ console.error(' Examples: --thinking low, --thinking 8192, --thinking off');
342
+ console.error(' Levels: minimal, low, medium, high, xhigh, auto');
343
+ process.exit(1);
344
+ }
345
+ const val = nextArg;
346
+ // Parse as number if numeric, otherwise keep as string (level name)
347
+ const numVal = parseInt(val, 10);
348
+ thinkingOverride = !isNaN(numVal) ? numVal : val;
349
+ // W2: Warn if multiple --thinking flags found (check both formats)
350
+ const allThinkingFlags = argsWithoutProxy.filter((arg) => arg === '--thinking' || arg.startsWith('--thinking='));
351
+ if (allThinkingFlags.length > 1) {
352
+ console.warn(`[!] Multiple --thinking flags detected. Using first occurrence: --thinking ${val}`);
353
+ }
354
+ }
355
+ }
356
+ // Handle --accounts: list accounts and exit
357
+ if (showAccounts) {
358
+ const accounts = (0, account_manager_1.getProviderAccounts)(provider);
359
+ if (accounts.length === 0) {
360
+ console.log((0, ui_1.info)(`No accounts registered for ${providerConfig.displayName}`));
361
+ console.log(` Run "ccs ${provider} --auth" to add an account`);
362
+ }
363
+ else {
364
+ console.log(`\n${providerConfig.displayName} Accounts:\n`);
365
+ for (const acct of accounts) {
366
+ const defaultMark = acct.isDefault ? ' (default)' : '';
367
+ const nickname = acct.nickname ? `[${acct.nickname}]` : '';
368
+ console.log(` ${nickname.padEnd(12)} ${acct.email || acct.id}${defaultMark}`);
369
+ }
370
+ console.log(`\n Use "ccs ${provider} --use <nickname>" to switch accounts`);
371
+ }
372
+ process.exit(0);
373
+ }
374
+ // Handle --use: switch to specified account
375
+ if (useAccount) {
376
+ const account = (0, account_manager_1.findAccountByQuery)(provider, useAccount);
377
+ if (!account) {
378
+ console.error((0, ui_1.fail)(`Account not found: "${useAccount}"`));
379
+ const accounts = (0, account_manager_1.getProviderAccounts)(provider);
380
+ if (accounts.length > 0) {
381
+ console.error(` Available accounts:`);
382
+ for (const acct of accounts) {
383
+ console.error(` - ${acct.nickname || acct.id} (${acct.email || 'no email'})`);
384
+ }
385
+ }
386
+ process.exit(1);
387
+ }
388
+ // Set as default for this and future sessions
389
+ (0, account_manager_1.setDefaultAccount)(provider, account.id);
390
+ (0, account_manager_1.touchAccount)(provider, account.id);
391
+ console.log((0, ui_1.ok)(`Switched to account: ${account.nickname || account.email || account.id}`));
392
+ }
393
+ // Handle --nickname: rename account and exit (unless used with --auth --add)
394
+ if (setNickname && !addAccount) {
395
+ const defaultAccount = (0, account_manager_1.getDefaultAccount)(provider);
396
+ if (!defaultAccount) {
397
+ console.error((0, ui_1.fail)(`No account found for ${providerConfig.displayName}`));
398
+ console.error(` Run "ccs ${provider} --auth" to add an account first`);
399
+ process.exit(1);
400
+ }
401
+ try {
402
+ const success = (0, account_manager_1.renameAccount)(provider, defaultAccount.id, setNickname);
403
+ if (success) {
404
+ console.log((0, ui_1.ok)(`Renamed account to: ${setNickname}`));
405
+ }
406
+ else {
407
+ console.error((0, ui_1.fail)('Failed to rename account'));
408
+ process.exit(1);
409
+ }
410
+ }
411
+ catch (err) {
412
+ console.error((0, ui_1.fail)(err instanceof Error ? err.message : 'Failed to rename account'));
413
+ process.exit(1);
414
+ }
415
+ process.exit(0);
416
+ }
417
+ // Handle --config: configure model selection and exit
418
+ // Pass customSettingsPath for CLIProxy variants to save to correct file
419
+ if (forceConfig && (0, model_catalog_1.supportsModelConfig)(provider)) {
420
+ await (0, model_config_1.configureProviderModel)(provider, true, cfg.customSettingsPath);
421
+ process.exit(0);
422
+ }
423
+ // Handle --logout: clear auth and exit
424
+ if (forceLogout) {
425
+ const { clearAuth } = await Promise.resolve().then(() => __importStar(require('./auth-handler')));
426
+ if (clearAuth(provider)) {
427
+ console.log((0, ui_1.ok)(`Logged out from ${providerConfig.displayName}`));
428
+ }
429
+ else {
430
+ console.log((0, ui_1.info)(`No authentication found for ${providerConfig.displayName}`));
431
+ }
432
+ process.exit(0);
433
+ }
434
+ // Handle --import: import token from Kiro IDE directly (Kiro only)
435
+ if (forceImport) {
436
+ if (provider !== 'kiro') {
437
+ console.error((0, ui_1.fail)('--import is only available for Kiro'));
438
+ console.error(` Run "ccs ${provider} --auth" to authenticate`);
439
+ process.exit(1);
440
+ }
441
+ // Validate flag conflicts
442
+ if (forceAuth) {
443
+ console.error((0, ui_1.fail)('Cannot use --import with --auth'));
444
+ console.error(' --import: Import existing token from Kiro IDE');
445
+ console.error(' --auth: Trigger new OAuth flow in browser');
446
+ process.exit(1);
447
+ }
448
+ if (forceLogout) {
449
+ console.error((0, ui_1.fail)('Cannot use --import with --logout'));
450
+ process.exit(1);
451
+ }
452
+ const { triggerOAuth } = await Promise.resolve().then(() => __importStar(require('./auth-handler')));
453
+ const authSuccess = await triggerOAuth(provider, {
454
+ verbose,
455
+ import: true,
456
+ ...(setNickname ? { nickname: setNickname } : {}),
457
+ });
458
+ if (!authSuccess) {
459
+ console.error((0, ui_1.fail)('Failed to import Kiro token from IDE'));
460
+ console.error(' Make sure you are logged into Kiro IDE first');
461
+ process.exit(1);
462
+ }
463
+ process.exit(0);
464
+ }
465
+ // 3. Ensure OAuth completed (if provider requires it)
466
+ // Skip local OAuth check when using remote proxy with auth token
467
+ // The remote proxy has its own OAuth sessions and handles authentication
468
+ // Note: Trim authToken to reject whitespace-only values
469
+ const remoteAuthToken = proxyConfig.authToken?.trim();
470
+ const skipLocalAuth = useRemoteProxy && !!remoteAuthToken;
471
+ if (skipLocalAuth) {
472
+ log(`Using remote proxy authentication (skipping local OAuth)`);
473
+ }
474
+ if (providerConfig.requiresOAuth && !skipLocalAuth) {
475
+ log(`Checking authentication for ${provider}`);
476
+ if (forceAuth || !(0, auth_handler_1.isAuthenticated)(provider)) {
477
+ // Pass headless only if explicitly set; otherwise let auth-handler auto-detect
478
+ const { triggerOAuth } = await Promise.resolve().then(() => __importStar(require('./auth-handler')));
479
+ const authSuccess = await triggerOAuth(provider, {
480
+ verbose,
481
+ add: addAccount,
482
+ ...(forceHeadless ? { headless: true } : {}),
483
+ ...(setNickname ? { nickname: setNickname } : {}),
484
+ ...(noIncognito ? { noIncognito: true } : {}),
485
+ ...(pasteCallback ? { pasteCallback: true } : {}),
486
+ });
487
+ if (!authSuccess) {
488
+ throw new Error(`Authentication required for ${providerConfig.displayName}`);
489
+ }
490
+ // If --auth was explicitly passed, exit after auth (don't start Claude)
491
+ if (forceAuth) {
492
+ process.exit(0);
493
+ }
494
+ }
495
+ else {
496
+ log(`${provider} already authenticated`);
497
+ }
498
+ // 3a. Proactive token refresh - prevent UND_ERR_SOCKET from expired tokens
499
+ // CLIProxyAPI may fail mid-request if token expires during use
500
+ const { ensureTokenValid } = await Promise.resolve().then(() => __importStar(require('./auth/token-manager')));
501
+ const tokenResult = await ensureTokenValid(provider, verbose);
502
+ if (!tokenResult.valid) {
503
+ // Token expired and refresh failed - trigger re-auth
504
+ console.error((0, ui_1.warn)('OAuth token expired and refresh failed'));
505
+ if (tokenResult.error) {
506
+ console.error(` ${tokenResult.error}`);
507
+ }
508
+ console.error(` Run "ccs ${provider} --auth" to re-authenticate`);
509
+ process.exit(1);
510
+ }
511
+ if (tokenResult.refreshed) {
512
+ log('Token was refreshed proactively');
513
+ }
514
+ // 3a-1. Update lastUsedAt for the account being used
515
+ // This ensures dashboard shows accurate "Last used" timestamps
516
+ const usedAccount = (0, account_manager_1.getDefaultAccount)(provider);
517
+ if (usedAccount) {
518
+ (0, account_manager_1.touchAccount)(provider, usedAccount.id);
519
+ }
520
+ }
521
+ // 3b. Preflight quota check - auto-switch to account with quota before launch
522
+ // Uses quota-manager for caching, tier priority, and cooldown support
523
+ // Skip for remote proxy - quota is managed on the remote server
524
+ if (provider === 'agy' && !skipLocalAuth) {
525
+ const preflight = await (0, quota_manager_1.preflightCheck)(provider);
526
+ if (!preflight.proceed) {
527
+ console.error((0, ui_1.fail)(`Cannot start session: ${preflight.reason}`));
528
+ process.exit(1);
529
+ }
530
+ if (preflight.switchedFrom) {
531
+ console.log((0, ui_1.info)(`Auto-switched to ${preflight.accountId}`));
532
+ console.log(` Reason: ${preflight.reason}`);
533
+ if (preflight.quotaPercent !== undefined && preflight.quotaPercent !== null) {
534
+ console.log(` New account quota: ${preflight.quotaPercent.toFixed(1)}%`);
535
+ }
536
+ else {
537
+ console.log(` New account quota: N/A (fetch unavailable)`);
538
+ }
539
+ }
540
+ }
541
+ // 4. First-run model configuration (interactive)
542
+ // For supported providers, prompt user to select model on first run
543
+ // Pass customSettingsPath for CLIProxy variants
544
+ // Skip for remote proxy - model is configured on the remote server
545
+ if ((0, model_catalog_1.supportsModelConfig)(provider) && !skipLocalAuth) {
546
+ await (0, model_config_1.configureProviderModel)(provider, false, cfg.customSettingsPath); // false = only if not configured
547
+ }
548
+ // 5. Check for known broken models and warn user
549
+ // Show warning for both local and remote modes - user should be aware of model issues
550
+ const currentModel = (0, model_config_1.getCurrentModel)(provider, cfg.customSettingsPath);
551
+ if (currentModel && (0, model_catalog_1.isModelBroken)(provider, currentModel)) {
552
+ const modelEntry = (0, model_catalog_1.findModel)(provider, currentModel);
553
+ const issueUrl = (0, model_catalog_1.getModelIssueUrl)(provider, currentModel);
554
+ console.error('');
555
+ console.error((0, ui_1.warn)(`${modelEntry?.name || currentModel} has known issues with Claude Code`));
556
+ console.error(' Tool calls will fail. Use "gemini-3-pro-preview" instead.');
557
+ if (issueUrl) {
558
+ console.error(` Tracking: ${issueUrl}`);
559
+ }
560
+ if (skipLocalAuth) {
561
+ console.error(' Note: Model may be overridden by remote proxy configuration.');
562
+ }
563
+ else {
564
+ console.error(` Run "ccs ${provider} --config" to change model.`);
565
+ }
566
+ console.error('');
567
+ }
568
+ // 6. Ensure user settings file exists (creates from defaults if not)
569
+ (0, config_generator_1.ensureProviderSettings)(provider);
570
+ // Local proxy mode: generate config, spawn proxy, track session
571
+ let proxy = null;
572
+ if (!useRemoteProxy) {
573
+ // 6. Generate config file
574
+ log(`Generating config for ${provider}`);
575
+ const configPath = (0, config_generator_1.generateConfig)(provider, cfg.port);
576
+ log(`Config written: ${configPath}`);
577
+ // 6a. Pre-flight check using unified detection with startup lock
578
+ // This prevents race conditions when multiple CCS processes start simultaneously
579
+ (0, session_tracker_1.cleanupOrphanedSessions)(cfg.port);
580
+ // Use startup lock to coordinate with other CCS processes
581
+ await (0, startup_lock_1.withStartupLock)(async () => {
582
+ // Detect running proxy using multiple methods (HTTP, session-lock, port-process)
583
+ let proxyStatus = await (0, proxy_detector_1.detectRunningProxy)(cfg.port);
584
+ log(`Proxy detection: ${JSON.stringify(proxyStatus)}`);
585
+ // Check for version mismatch - restart proxy if installed version differs from running
586
+ if (proxyStatus.running && proxyStatus.verified && proxyStatus.version) {
587
+ const installedVersion = (0, binary_manager_1.getInstalledCliproxyVersion)();
588
+ if (installedVersion !== proxyStatus.version) {
589
+ console.log((0, ui_1.warn)(`Version mismatch: running v${proxyStatus.version}, installed v${installedVersion}. Restarting proxy...`));
590
+ log(`Stopping outdated proxy (PID: ${proxyStatus.pid ?? 'unknown'})...`);
591
+ const stopResult = await (0, session_tracker_1.stopProxy)(cfg.port);
592
+ if (stopResult.stopped) {
593
+ log(`Stopped outdated proxy successfully`);
594
+ }
595
+ else {
596
+ log(`Stop proxy result: ${stopResult.error ?? 'unknown error'}`);
597
+ }
598
+ // Wait for port to be released
599
+ await new Promise((r) => setTimeout(r, 500));
600
+ // Re-detect proxy status (should now be not running)
601
+ proxyStatus = await (0, proxy_detector_1.detectRunningProxy)(cfg.port);
602
+ log(`Re-detection after version mismatch restart: ${JSON.stringify(proxyStatus)}`);
603
+ }
604
+ }
605
+ if (proxyStatus.running && proxyStatus.verified) {
606
+ // Healthy proxy found - join it
607
+ if (proxyStatus.pid) {
608
+ sessionId = (0, proxy_detector_1.reclaimOrphanedProxy)(cfg.port, proxyStatus.pid, verbose) ?? undefined;
609
+ }
610
+ if (sessionId) {
611
+ console.log((0, ui_1.info)(`Joined existing CLIProxy on port ${cfg.port} (${proxyStatus.method})`));
612
+ }
613
+ else {
614
+ // Failed to register session - proxy is running but we can't track it
615
+ // This happens when port-process detection fails (permissions, platform issues)
616
+ console.log((0, ui_1.info)(`Using existing CLIProxy on port ${cfg.port} (session tracking unavailable)`));
617
+ log(`PID=${proxyStatus.pid ?? 'unknown'}, session registration skipped`);
618
+ }
619
+ return; // Exit lock early, skip spawning
620
+ }
621
+ if (proxyStatus.running && !proxyStatus.verified) {
622
+ // Proxy detected but not ready yet (another process is starting it)
623
+ log(`Proxy starting up (detected via ${proxyStatus.method}), waiting...`);
624
+ const becameHealthy = await (0, proxy_detector_1.waitForProxyHealthy)(cfg.port, cfg.timeout);
625
+ if (becameHealthy) {
626
+ if (proxyStatus.pid) {
627
+ sessionId = (0, proxy_detector_1.reclaimOrphanedProxy)(cfg.port, proxyStatus.pid, verbose) ?? undefined;
628
+ }
629
+ console.log((0, ui_1.info)(`Joined CLIProxy after startup wait`));
630
+ return; // Exit lock early
631
+ }
632
+ // Proxy didn't become healthy - kill and respawn
633
+ if (proxyStatus.pid) {
634
+ log(`Proxy PID ${proxyStatus.pid} not responding, killing...`);
635
+ (0, platform_commands_1.killProcessOnPort)(cfg.port, verbose);
636
+ await new Promise((r) => setTimeout(r, 500));
637
+ }
638
+ }
639
+ if (proxyStatus.blocked && proxyStatus.blocker) {
640
+ // Port blocked by non-CLIProxy process
641
+ // Last resort: try HTTP health check (handles Windows PID-XXXXX case)
642
+ const isActuallyOurs = await (0, proxy_detector_1.waitForProxyHealthy)(cfg.port, 1000);
643
+ if (isActuallyOurs) {
644
+ sessionId = (0, proxy_detector_1.reclaimOrphanedProxy)(cfg.port, proxyStatus.blocker.pid, verbose) ?? undefined;
645
+ console.log((0, ui_1.info)(`Reclaimed CLIProxy with unrecognized process name`));
646
+ return;
647
+ }
648
+ // Truly blocked by another application
649
+ console.error('');
650
+ console.error((0, ui_1.warn)(`Port ${cfg.port} is blocked by ${proxyStatus.blocker.processName} (PID ${proxyStatus.blocker.pid})`));
651
+ console.error('');
652
+ console.error('To fix this, close the blocking application or run:');
653
+ console.error(` ${(0, platform_commands_1.getPortCheckCommand)(cfg.port)}`);
654
+ console.error('');
655
+ throw new Error(`Port ${cfg.port} is in use by another application`);
656
+ }
657
+ // 6b. Spawn CLIProxyAPI binary
658
+ const proxyArgs = ['--config', configPath];
659
+ log(`Spawning: ${binaryPath} ${proxyArgs.join(' ')}`);
660
+ proxy = (0, child_process_1.spawn)(binaryPath, proxyArgs, {
661
+ stdio: ['ignore', 'ignore', 'ignore'],
662
+ detached: true,
663
+ env: {
664
+ ...process.env,
665
+ WRITABLE_PATH: (0, config_generator_1.getCliproxyWritablePath)(),
666
+ },
667
+ });
668
+ proxy.unref();
669
+ proxy.on('error', (error) => {
670
+ console.error((0, ui_1.fail)(`CLIProxy spawn error: ${error.message}`));
671
+ });
672
+ // 7. Wait for proxy readiness via TCP polling
673
+ const readySpinner = new progress_indicator_1.ProgressIndicator(`Waiting for CLIProxy on port ${cfg.port}`);
674
+ readySpinner.start();
675
+ try {
676
+ await waitForProxyReady(cfg.port, cfg.timeout, cfg.pollInterval);
677
+ readySpinner.succeed(`CLIProxy ready on port ${cfg.port}`);
678
+ }
679
+ catch (error) {
680
+ const backendLabel = backend === 'plus' ? 'CLIProxy Plus' : 'CLIProxy';
681
+ readySpinner.fail(`${backendLabel} startup failed`);
682
+ proxy.kill('SIGTERM');
683
+ const err = error;
684
+ console.error('');
685
+ console.error((0, ui_1.fail)(`${backendLabel} failed to start`));
686
+ console.error('');
687
+ console.error('Possible causes:');
688
+ console.error(` 1. Port ${cfg.port} already in use`);
689
+ console.error(' 2. Binary crashed on startup');
690
+ console.error(' 3. Invalid configuration');
691
+ console.error('');
692
+ console.error('Troubleshooting:');
693
+ console.error(` - Check port: ${(0, platform_commands_1.getPortCheckCommand)(cfg.port)}`);
694
+ console.error(' - Run with --verbose for detailed logs');
695
+ console.error(` - View config: ${(0, platform_commands_1.getCatCommand)(configPath)}`);
696
+ console.error(' - Try: ccs doctor --fix');
697
+ console.error('');
698
+ throw new Error(`CLIProxy startup failed: ${err.message}`);
699
+ }
700
+ // Register this session with the new proxy, including version and backend
701
+ const installedVersion = (0, binary_manager_1.getInstalledCliproxyVersion)();
702
+ sessionId = (0, session_tracker_1.registerSession)(cfg.port, proxy.pid, installedVersion, backend);
703
+ log(`Registered session ${sessionId} with new proxy (PID ${proxy.pid}, version ${installedVersion})`);
704
+ });
705
+ }
706
+ // 7. Execute Claude CLI with proxied environment
707
+ // Use remote or local env vars based on mode
708
+ // When remote is configured (even if using local), pass config for URL rewriting
709
+ const remoteRewriteConfig = proxyConfig.mode === 'remote' && proxyConfig.host
710
+ ? {
711
+ host: proxyConfig.host,
712
+ port: proxyConfig.port,
713
+ protocol: proxyConfig.protocol,
714
+ authToken: proxyConfig.authToken,
715
+ }
716
+ : undefined;
717
+ // For HTTPS remote, we need a local HTTP tunnel since Claude Code doesn't support
718
+ // HTTPS in ANTHROPIC_BASE_URL directly (undici limitation)
719
+ let httpsTunnel = null;
720
+ let tunnelPort = null;
721
+ if (useRemoteProxy && proxyConfig.protocol === 'https' && proxyConfig.host) {
722
+ try {
723
+ httpsTunnel = new https_tunnel_proxy_1.HttpsTunnelProxy({
724
+ remoteHost: proxyConfig.host,
725
+ remotePort: proxyConfig.port,
726
+ authToken: proxyConfig.authToken,
727
+ verbose,
728
+ allowSelfSigned: proxyConfig.allowSelfSigned ?? false,
729
+ });
730
+ tunnelPort = await httpsTunnel.start();
731
+ log(`HTTPS tunnel started on port ${tunnelPort} → https://${proxyConfig.host}:${proxyConfig.port}`);
732
+ }
733
+ catch (error) {
734
+ const err = error;
735
+ console.error((0, ui_1.warn)(`Failed to start HTTPS tunnel: ${err.message}`));
736
+ throw new Error(`HTTPS tunnel startup failed: ${err.message}`);
737
+ }
738
+ }
739
+ // Build env vars - use tunnel port for HTTPS remote, direct URL otherwise
740
+ const envVars = useRemoteProxy
741
+ ? httpsTunnel && tunnelPort
742
+ ? // HTTPS remote via local tunnel - use HTTP to tunnel
743
+ (0, config_generator_1.getRemoteEnvVars)(provider, {
744
+ host: '127.0.0.1',
745
+ port: tunnelPort,
746
+ protocol: 'http', // Tunnel speaks HTTP locally
747
+ authToken: proxyConfig.authToken,
748
+ }, cfg.customSettingsPath)
749
+ : // HTTP remote - direct connection
750
+ (0, config_generator_1.getRemoteEnvVars)(provider, {
751
+ host: proxyConfig.host ?? 'localhost',
752
+ port: proxyConfig.port,
753
+ protocol: proxyConfig.protocol,
754
+ authToken: proxyConfig.authToken,
755
+ }, cfg.customSettingsPath)
756
+ : (0, config_generator_1.getEffectiveEnvVars)(provider, cfg.port, cfg.customSettingsPath, remoteRewriteConfig);
757
+ // Apply thinking configuration to model (auto tier-based or manual override)
758
+ // This adds thinking suffix like model(high) or model(8192) for CLIProxyAPIPlus
759
+ (0, config_generator_1.applyThinkingConfig)(envVars, provider, thinkingOverride);
760
+ // Tool sanitization proxy - applies to ALL CLIProxy providers.
761
+ // Sanitizes MCP tool names exceeding Gemini's 64-char limit.
762
+ // Proxy chain order (request flow):
763
+ // Claude CLI → ToolSanitizationProxy → [CodexReasoningProxy if codex] → CLIProxy → Backend
764
+ // Response flow is reversed, with each proxy transforming data back.
765
+ let toolSanitizationProxy = null;
766
+ let toolSanitizationPort = null;
767
+ if (envVars.ANTHROPIC_BASE_URL) {
768
+ try {
769
+ toolSanitizationProxy = new tool_sanitization_proxy_1.ToolSanitizationProxy({
770
+ upstreamBaseUrl: envVars.ANTHROPIC_BASE_URL,
771
+ verbose,
772
+ warnOnSanitize: true,
773
+ });
774
+ toolSanitizationPort = await toolSanitizationProxy.start();
775
+ log(`Tool sanitization proxy active on port ${toolSanitizationPort}`);
776
+ }
777
+ catch (error) {
778
+ // Non-fatal: continue without sanitization
779
+ const err = error;
780
+ toolSanitizationProxy = null;
781
+ toolSanitizationPort = null;
782
+ if (verbose) {
783
+ console.error((0, ui_1.warn)(`Tool sanitization proxy disabled: ${err.message}`));
784
+ }
785
+ }
786
+ }
787
+ // Determine the effective upstream URL after tool sanitization
788
+ const postSanitizationBaseUrl = toolSanitizationPort
789
+ ? `http://127.0.0.1:${toolSanitizationPort}`
790
+ : envVars.ANTHROPIC_BASE_URL;
791
+ // Codex-only: inject OpenAI reasoning effort based on tier model mapping.
792
+ // Maps by request.model:
793
+ // - OPUS/default model → xhigh
794
+ // - SONNET model → high
795
+ // - HAIKU model → medium
796
+ // - Unknown → medium
797
+ let codexReasoningProxy = null;
798
+ let codexReasoningPort = null;
799
+ if (provider === 'codex') {
800
+ if (!postSanitizationBaseUrl) {
801
+ log('ANTHROPIC_BASE_URL not set for Codex, reasoning proxy disabled');
802
+ }
803
+ else {
804
+ try {
805
+ const traceEnabled = process.env.CCS_CODEX_REASONING_TRACE === '1' ||
806
+ process.env.CCS_CODEX_REASONING_TRACE === 'true';
807
+ // For remote proxy mode, strip /api/provider/codex prefix from paths
808
+ // because remote CLIProxyAPI uses root paths (/v1/messages), not provider-prefixed
809
+ const stripPathPrefix = useRemoteProxy ? '/api/provider/codex' : undefined;
810
+ codexReasoningProxy = new codex_reasoning_proxy_1.CodexReasoningProxy({
811
+ upstreamBaseUrl: postSanitizationBaseUrl,
812
+ verbose,
813
+ defaultEffort: 'medium',
814
+ traceFilePath: traceEnabled ? `${os.homedir()}/.ccs/codex-reasoning-proxy.log` : '',
815
+ modelMap: {
816
+ defaultModel: envVars.ANTHROPIC_MODEL,
817
+ opusModel: envVars.ANTHROPIC_DEFAULT_OPUS_MODEL,
818
+ sonnetModel: envVars.ANTHROPIC_DEFAULT_SONNET_MODEL,
819
+ haikuModel: envVars.ANTHROPIC_DEFAULT_HAIKU_MODEL,
820
+ },
821
+ stripPathPrefix,
822
+ });
823
+ codexReasoningPort = await codexReasoningProxy.start();
824
+ log(`Codex reasoning proxy active: http://127.0.0.1:${codexReasoningPort}/api/provider/codex`);
825
+ }
826
+ catch (error) {
827
+ const err = error;
828
+ codexReasoningProxy = null;
829
+ codexReasoningPort = null;
830
+ if (verbose) {
831
+ console.error((0, ui_1.warn)(`Codex reasoning proxy disabled: ${err.message}`));
832
+ }
833
+ }
834
+ }
835
+ }
836
+ // Determine the final ANTHROPIC_BASE_URL based on active proxies
837
+ // Chain order: Claude CLI → [CodexReasoningProxy] → [ToolSanitizationProxy] → CLIProxy
838
+ // The outermost active proxy becomes the effective base URL
839
+ let finalBaseUrl = envVars.ANTHROPIC_BASE_URL;
840
+ if (toolSanitizationPort) {
841
+ finalBaseUrl = `http://127.0.0.1:${toolSanitizationPort}`;
842
+ }
843
+ if (codexReasoningPort) {
844
+ // Codex reasoning proxy is the outermost layer for codex provider
845
+ finalBaseUrl = `http://127.0.0.1:${codexReasoningPort}/api/provider/codex`;
846
+ }
847
+ const effectiveEnvVars = {
848
+ ...envVars,
849
+ ANTHROPIC_BASE_URL: finalBaseUrl,
850
+ };
851
+ const webSearchEnv = (0, websearch_manager_1.getWebSearchHookEnv)();
852
+ const imageAnalysisEnv = (0, get_image_analysis_hook_env_1.getImageAnalysisHookEnv)(provider);
853
+ const env = {
854
+ ...process.env,
855
+ ...effectiveEnvVars,
856
+ ...webSearchEnv,
857
+ ...imageAnalysisEnv,
858
+ CCS_PROFILE_TYPE: 'cliproxy', // Signal to WebSearch hook this is a third-party provider
859
+ };
860
+ log(`Claude env: ANTHROPIC_BASE_URL=${effectiveEnvVars.ANTHROPIC_BASE_URL}`);
861
+ log(`Claude env: ANTHROPIC_MODEL=${envVars.ANTHROPIC_MODEL}`);
862
+ if (Object.keys(webSearchEnv).length > 0) {
863
+ log(`Claude env: WebSearch config=${JSON.stringify(webSearchEnv)}`);
864
+ }
865
+ // Log global env vars for visibility
866
+ if (envVars.DISABLE_TELEMETRY || envVars.DISABLE_ERROR_REPORTING || envVars.DISABLE_BUG_COMMAND) {
867
+ log(`Claude env: Global env applied (telemetry/reporting disabled)`);
868
+ }
869
+ // Filter out CCS-specific flags before passing to Claude CLI
870
+ // Note: Proxy flags (--proxy-host, etc.) already stripped by resolveProxyConfig()
871
+ const ccsFlags = [
872
+ '--auth',
873
+ '--paste-callback',
874
+ '--headless',
875
+ '--logout',
876
+ '--config',
877
+ '--add',
878
+ '--accounts',
879
+ '--use',
880
+ '--nickname',
881
+ '--thinking',
882
+ '--incognito',
883
+ '--no-incognito',
884
+ '--import',
885
+ '--settings', // Block user --settings to prevent duplicate flags
886
+ // Proxy flags are handled by resolveProxyConfig, but list for documentation
887
+ ...proxy_config_resolver_1.PROXY_CLI_FLAGS,
888
+ ];
889
+ const claudeArgs = argsWithoutProxy.filter((arg, idx) => {
890
+ // Filter out CCS flags
891
+ if (ccsFlags.includes(arg))
892
+ return false;
893
+ // Filter out --thinking=value format
894
+ if (arg.startsWith('--thinking='))
895
+ return false;
896
+ // Filter out value after --use, --nickname, or --thinking
897
+ if (argsWithoutProxy[idx - 1] === '--use' ||
898
+ argsWithoutProxy[idx - 1] === '--nickname' ||
899
+ argsWithoutProxy[idx - 1] === '--thinking')
900
+ return false;
901
+ return true;
902
+ });
903
+ const isWindows = process.platform === 'win32';
904
+ const needsShell = isWindows && /\.(cmd|bat|ps1)$/i.test(claudeCli);
905
+ // Get profile settings path for hooks (WebSearch, etc.)
906
+ // Use custom settings path for CLIProxy variants, otherwise use default provider path
907
+ const settingsPath = cfg.customSettingsPath
908
+ ? cfg.customSettingsPath.replace(/^~/, os.homedir())
909
+ : (0, config_generator_1.getProviderSettingsPath)(provider);
910
+ let claude;
911
+ if (needsShell) {
912
+ const cmdString = [claudeCli, '--settings', settingsPath, ...claudeArgs]
913
+ .map(shell_executor_1.escapeShellArg)
914
+ .join(' ');
915
+ claude = (0, child_process_1.spawn)(cmdString, {
916
+ stdio: 'inherit',
917
+ windowsHide: true,
918
+ shell: true,
919
+ env,
920
+ });
921
+ }
922
+ else {
923
+ claude = (0, child_process_1.spawn)(claudeCli, ['--settings', settingsPath, ...claudeArgs], {
924
+ stdio: 'inherit',
925
+ windowsHide: true,
926
+ env,
927
+ });
928
+ }
929
+ // 8. Cleanup: unregister session when Claude exits (local mode only)
930
+ // Proxy persists by default - use 'ccs cliproxy stop' to kill manually
931
+ // Capture port for cleanup (avoids closure issues)
932
+ const sessionPort = cfg.port;
933
+ claude.on('exit', (code, signal) => {
934
+ log(`Claude exited: code=${code}, signal=${signal}`);
935
+ if (codexReasoningProxy) {
936
+ codexReasoningProxy.stop();
937
+ }
938
+ if (toolSanitizationProxy) {
939
+ toolSanitizationProxy.stop();
940
+ }
941
+ if (httpsTunnel) {
942
+ httpsTunnel.stop();
943
+ }
944
+ // Unregister this session (proxy keeps running for persistence) - only for local mode
945
+ if (sessionId) {
946
+ (0, session_tracker_1.unregisterSession)(sessionId, sessionPort);
947
+ log(`Session ${sessionId} unregistered, proxy persists for other sessions or future use`);
948
+ }
949
+ if (signal) {
950
+ process.kill(process.pid, signal);
951
+ }
952
+ else {
953
+ process.exit(code || 0);
954
+ }
955
+ });
956
+ claude.on('error', (error) => {
957
+ console.error((0, ui_1.fail)(`Claude CLI error: ${error}`));
958
+ if (codexReasoningProxy) {
959
+ codexReasoningProxy.stop();
960
+ }
961
+ if (toolSanitizationProxy) {
962
+ toolSanitizationProxy.stop();
963
+ }
964
+ if (httpsTunnel) {
965
+ httpsTunnel.stop();
966
+ }
967
+ // Unregister session, proxy keeps running (local mode only)
968
+ if (sessionId) {
969
+ (0, session_tracker_1.unregisterSession)(sessionId, sessionPort);
970
+ }
971
+ process.exit(1);
972
+ });
973
+ // Handle parent process termination (SIGTERM, SIGINT)
974
+ const cleanup = () => {
975
+ log('Parent signal received, cleaning up');
976
+ if (codexReasoningProxy) {
977
+ codexReasoningProxy.stop();
978
+ }
979
+ if (toolSanitizationProxy) {
980
+ toolSanitizationProxy.stop();
981
+ }
982
+ if (httpsTunnel) {
983
+ httpsTunnel.stop();
984
+ }
985
+ // Unregister session, proxy keeps running (local mode only)
986
+ if (sessionId) {
987
+ (0, session_tracker_1.unregisterSession)(sessionId, sessionPort);
988
+ }
989
+ claude.kill('SIGTERM');
990
+ };
991
+ process.once('SIGTERM', cleanup);
992
+ process.once('SIGINT', cleanup);
993
+ }
994
+ exports.execClaudeWithCLIProxy = execClaudeWithCLIProxy;
995
+ /**
996
+ * Check if a port is available
997
+ */
998
+ async function isPortAvailable(port) {
999
+ return new Promise((resolve) => {
1000
+ const server = net.createServer();
1001
+ server.once('error', () => {
1002
+ resolve(false);
1003
+ });
1004
+ server.once('listening', () => {
1005
+ server.close();
1006
+ resolve(true);
1007
+ });
1008
+ server.listen(port, '127.0.0.1');
1009
+ });
1010
+ }
1011
+ exports.isPortAvailable = isPortAvailable;
1012
+ /**
1013
+ * Find an available port in range
1014
+ */
1015
+ async function findAvailablePort(startPort = config_generator_1.CLIPROXY_DEFAULT_PORT, range = 10) {
1016
+ for (let port = startPort; port < startPort + range; port++) {
1017
+ if (await isPortAvailable(port)) {
1018
+ return port;
1019
+ }
1020
+ }
1021
+ throw new Error(`No available port found in range ${startPort}-${startPort + range - 1}`);
1022
+ }
1023
+ exports.findAvailablePort = findAvailablePort;
1024
+ exports.default = execClaudeWithCLIProxy;
1025
+ //# sourceMappingURL=cliproxy-executor.js.map