@jonnyhoo/ccs 1.1.1 → 1.1.3

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