@kaitranntt/ccs 6.7.0-dev.5 → 6.7.1-dev.1

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 (623) hide show
  1. package/README.md +45 -23
  2. package/dist/api/index.d.ts +7 -0
  3. package/dist/api/index.d.ts.map +1 -0
  4. package/dist/api/index.js +24 -0
  5. package/dist/api/index.js.map +1 -0
  6. package/dist/api/services/index.d.ts +10 -0
  7. package/dist/api/services/index.d.ts.map +1 -0
  8. package/dist/api/services/index.js +26 -0
  9. package/dist/api/services/index.js.map +1 -0
  10. package/dist/api/services/profile-reader.d.ts +28 -0
  11. package/dist/api/services/profile-reader.d.ts.map +1 -0
  12. package/dist/api/services/profile-reader.js +148 -0
  13. package/dist/api/services/profile-reader.js.map +1 -0
  14. package/dist/api/services/profile-types.d.ts +42 -0
  15. package/dist/api/services/profile-types.d.ts.map +1 -0
  16. package/dist/api/services/profile-types.js +8 -0
  17. package/dist/api/services/profile-types.js.map +1 -0
  18. package/dist/api/services/profile-writer.d.ts +6 -0
  19. package/dist/api/services/profile-writer.d.ts.map +1 -0
  20. package/dist/api/services/profile-writer.js +176 -0
  21. package/dist/api/services/profile-writer.js.map +1 -0
  22. package/dist/api/services/validation-service.d.ts +26 -0
  23. package/dist/api/services/validation-service.d.ts.map +1 -0
  24. package/dist/api/services/validation-service.js +77 -0
  25. package/dist/api/services/validation-service.js.map +1 -0
  26. package/dist/auth/auth-commands.d.ts +16 -22
  27. package/dist/auth/auth-commands.d.ts.map +1 -1
  28. package/dist/auth/auth-commands.js +29 -467
  29. package/dist/auth/auth-commands.js.map +1 -1
  30. package/dist/auth/commands/create-command.d.ts +11 -0
  31. package/dist/auth/commands/create-command.d.ts.map +1 -0
  32. package/dist/auth/commands/create-command.js +137 -0
  33. package/dist/auth/commands/create-command.js.map +1 -0
  34. package/dist/auth/commands/default-command.d.ts +15 -0
  35. package/dist/auth/commands/default-command.d.ts.map +1 -0
  36. package/dist/auth/commands/default-command.js +71 -0
  37. package/dist/auth/commands/default-command.js.map +1 -0
  38. package/dist/auth/commands/index.d.ts +12 -0
  39. package/dist/auth/commands/index.d.ts.map +1 -0
  40. package/dist/auth/commands/index.js +25 -0
  41. package/dist/auth/commands/index.js.map +1 -0
  42. package/dist/auth/commands/list-command.d.ts +11 -0
  43. package/dist/auth/commands/list-command.d.ts.map +1 -0
  44. package/dist/auth/commands/list-command.js +124 -0
  45. package/dist/auth/commands/list-command.js.map +1 -0
  46. package/dist/auth/commands/remove-command.d.ts +11 -0
  47. package/dist/auth/commands/remove-command.d.ts.map +1 -0
  48. package/dist/auth/commands/remove-command.js +102 -0
  49. package/dist/auth/commands/remove-command.js.map +1 -0
  50. package/dist/auth/commands/show-command.d.ts +11 -0
  51. package/dist/auth/commands/show-command.d.ts.map +1 -0
  52. package/dist/auth/commands/show-command.js +103 -0
  53. package/dist/auth/commands/show-command.js.map +1 -0
  54. package/dist/auth/commands/types.d.ts +50 -0
  55. package/dist/auth/commands/types.d.ts.map +1 -0
  56. package/dist/auth/commands/types.js +26 -0
  57. package/dist/auth/commands/types.js.map +1 -0
  58. package/dist/auth/index.d.ts +8 -0
  59. package/dist/auth/index.d.ts.map +1 -0
  60. package/dist/auth/index.js +16 -0
  61. package/dist/auth/index.js.map +1 -0
  62. package/dist/auth/profile-detector.d.ts +0 -5
  63. package/dist/auth/profile-detector.d.ts.map +1 -1
  64. package/dist/auth/profile-detector.js +1 -9
  65. package/dist/auth/profile-detector.js.map +1 -1
  66. package/dist/auth/profile-registry.d.ts +0 -4
  67. package/dist/auth/profile-registry.d.ts.map +1 -1
  68. package/dist/auth/profile-registry.js +3 -10
  69. package/dist/auth/profile-registry.js.map +1 -1
  70. package/dist/ccs.js +21 -4
  71. package/dist/ccs.js.map +1 -1
  72. package/dist/cliproxy/auth/auth-types.d.ts +85 -0
  73. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -0
  74. package/dist/cliproxy/auth/auth-types.js +100 -0
  75. package/dist/cliproxy/auth/auth-types.js.map +1 -0
  76. package/dist/cliproxy/auth/environment-detector.d.ts +30 -0
  77. package/dist/cliproxy/auth/environment-detector.d.ts.map +1 -0
  78. package/dist/cliproxy/auth/environment-detector.js +124 -0
  79. package/dist/cliproxy/auth/environment-detector.js.map +1 -0
  80. package/dist/cliproxy/auth/index.d.ts +11 -0
  81. package/dist/cliproxy/auth/index.d.ts.map +1 -0
  82. package/dist/cliproxy/auth/index.js +35 -0
  83. package/dist/cliproxy/auth/index.js.map +1 -0
  84. package/dist/cliproxy/auth/oauth-handler.d.ts +29 -0
  85. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -0
  86. package/dist/cliproxy/auth/oauth-handler.js +205 -0
  87. package/dist/cliproxy/auth/oauth-handler.js.map +1 -0
  88. package/dist/cliproxy/auth/oauth-process.d.ts +27 -0
  89. package/dist/cliproxy/auth/oauth-process.d.ts.map +1 -0
  90. package/dist/cliproxy/auth/oauth-process.js +209 -0
  91. package/dist/cliproxy/auth/oauth-process.js.map +1 -0
  92. package/dist/cliproxy/auth/token-manager.d.ts +53 -0
  93. package/dist/cliproxy/auth/token-manager.d.ts.map +1 -0
  94. package/dist/cliproxy/auth/token-manager.js +250 -0
  95. package/dist/cliproxy/auth/token-manager.js.map +1 -0
  96. package/dist/cliproxy/auth-handler.d.ts +13 -103
  97. package/dist/cliproxy/auth-handler.d.ts.map +1 -1
  98. package/dist/cliproxy/auth-handler.js +35 -766
  99. package/dist/cliproxy/auth-handler.js.map +1 -1
  100. package/dist/cliproxy/binary/downloader.d.ts +29 -0
  101. package/dist/cliproxy/binary/downloader.d.ts.map +1 -0
  102. package/dist/cliproxy/binary/downloader.js +218 -0
  103. package/dist/cliproxy/binary/downloader.js.map +1 -0
  104. package/dist/cliproxy/binary/extractor.d.ts +12 -0
  105. package/dist/cliproxy/binary/extractor.d.ts.map +1 -0
  106. package/dist/cliproxy/binary/extractor.js +27 -0
  107. package/dist/cliproxy/binary/extractor.js.map +1 -0
  108. package/dist/cliproxy/binary/index.d.ts +13 -0
  109. package/dist/cliproxy/binary/index.d.ts.map +1 -0
  110. package/dist/cliproxy/binary/index.js +53 -0
  111. package/dist/cliproxy/binary/index.js.map +1 -0
  112. package/dist/cliproxy/binary/installer.d.ts +24 -0
  113. package/dist/cliproxy/binary/installer.d.ts.map +1 -0
  114. package/dist/cliproxy/binary/installer.js +117 -0
  115. package/dist/cliproxy/binary/installer.js.map +1 -0
  116. package/dist/cliproxy/binary/lifecycle.d.ts +11 -0
  117. package/dist/cliproxy/binary/lifecycle.d.ts.map +1 -0
  118. package/dist/cliproxy/binary/lifecycle.js +106 -0
  119. package/dist/cliproxy/binary/lifecycle.js.map +1 -0
  120. package/dist/cliproxy/binary/tar-extractor.d.ts +9 -0
  121. package/dist/cliproxy/binary/tar-extractor.d.ts.map +1 -0
  122. package/dist/cliproxy/binary/tar-extractor.js +118 -0
  123. package/dist/cliproxy/binary/tar-extractor.js.map +1 -0
  124. package/dist/cliproxy/binary/types.d.ts +24 -0
  125. package/dist/cliproxy/binary/types.d.ts.map +1 -0
  126. package/dist/cliproxy/binary/types.js +14 -0
  127. package/dist/cliproxy/binary/types.js.map +1 -0
  128. package/dist/cliproxy/binary/updater.d.ts +7 -0
  129. package/dist/cliproxy/binary/updater.d.ts.map +1 -0
  130. package/dist/cliproxy/binary/updater.js +18 -0
  131. package/dist/cliproxy/binary/updater.js.map +1 -0
  132. package/dist/cliproxy/binary/verifier.d.ts +18 -0
  133. package/dist/cliproxy/binary/verifier.d.ts.map +1 -0
  134. package/dist/cliproxy/binary/verifier.js +82 -0
  135. package/dist/cliproxy/binary/verifier.js.map +1 -0
  136. package/dist/cliproxy/binary/version-cache.d.ts +46 -0
  137. package/dist/cliproxy/binary/version-cache.d.ts.map +1 -0
  138. package/dist/cliproxy/binary/version-cache.js +171 -0
  139. package/dist/cliproxy/binary/version-cache.js.map +1 -0
  140. package/dist/cliproxy/binary/version-checker.d.ts +19 -0
  141. package/dist/cliproxy/binary/version-checker.d.ts.map +1 -0
  142. package/dist/cliproxy/binary/version-checker.js +77 -0
  143. package/dist/cliproxy/binary/version-checker.js.map +1 -0
  144. package/dist/cliproxy/binary/zip-extractor.d.ts +9 -0
  145. package/dist/cliproxy/binary/zip-extractor.d.ts.map +1 -0
  146. package/dist/cliproxy/binary/zip-extractor.js +110 -0
  147. package/dist/cliproxy/binary/zip-extractor.js.map +1 -0
  148. package/dist/cliproxy/binary-manager.d.ts +16 -170
  149. package/dist/cliproxy/binary-manager.d.ts.map +1 -1
  150. package/dist/cliproxy/binary-manager.js +38 -865
  151. package/dist/cliproxy/binary-manager.js.map +1 -1
  152. package/dist/cliproxy/services/binary-service.d.ts +65 -0
  153. package/dist/cliproxy/services/binary-service.d.ts.map +1 -0
  154. package/dist/cliproxy/services/binary-service.js +140 -0
  155. package/dist/cliproxy/services/binary-service.js.map +1 -0
  156. package/dist/cliproxy/services/index.d.ts +8 -0
  157. package/dist/cliproxy/services/index.d.ts.map +1 -0
  158. package/dist/cliproxy/services/index.js +31 -0
  159. package/dist/cliproxy/services/index.js.map +1 -0
  160. package/dist/cliproxy/services/proxy-lifecycle-service.d.ts +38 -0
  161. package/dist/cliproxy/services/proxy-lifecycle-service.d.ts.map +1 -0
  162. package/dist/cliproxy/services/proxy-lifecycle-service.js +41 -0
  163. package/dist/cliproxy/services/proxy-lifecycle-service.js.map +1 -0
  164. package/dist/cliproxy/services/variant-config-adapter.d.ts +38 -0
  165. package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -0
  166. package/dist/cliproxy/services/variant-config-adapter.js +172 -0
  167. package/dist/cliproxy/services/variant-config-adapter.js.map +1 -0
  168. package/dist/cliproxy/services/variant-service.d.ts +37 -0
  169. package/dist/cliproxy/services/variant-service.d.ts.map +1 -0
  170. package/dist/cliproxy/services/variant-service.js +128 -0
  171. package/dist/cliproxy/services/variant-service.js.map +1 -0
  172. package/dist/cliproxy/services/variant-settings.d.ts +32 -0
  173. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -0
  174. package/dist/cliproxy/services/variant-settings.js +128 -0
  175. package/dist/cliproxy/services/variant-settings.js.map +1 -0
  176. package/dist/commands/api-command.d.ts +3 -6
  177. package/dist/commands/api-command.d.ts.map +1 -1
  178. package/dist/commands/api-command.js +84 -445
  179. package/dist/commands/api-command.js.map +1 -1
  180. package/dist/commands/cliproxy-command.d.ts +0 -3
  181. package/dist/commands/cliproxy-command.d.ts.map +1 -1
  182. package/dist/commands/cliproxy-command.js +182 -621
  183. package/dist/commands/cliproxy-command.js.map +1 -1
  184. package/dist/commands/index.d.ts +17 -0
  185. package/dist/commands/index.d.ts.map +1 -0
  186. package/dist/commands/index.js +33 -0
  187. package/dist/commands/index.js.map +1 -0
  188. package/dist/config/unified-config-loader.d.ts +7 -0
  189. package/dist/config/unified-config-loader.d.ts.map +1 -1
  190. package/dist/config/unified-config-loader.js +11 -1
  191. package/dist/config/unified-config-loader.js.map +1 -1
  192. package/dist/delegation/executor/index.d.ts +7 -0
  193. package/dist/delegation/executor/index.d.ts.map +1 -0
  194. package/dist/delegation/executor/index.js +28 -0
  195. package/dist/delegation/executor/index.js.map +1 -0
  196. package/dist/delegation/executor/result-aggregator.d.ts +30 -0
  197. package/dist/delegation/executor/result-aggregator.d.ts.map +1 -0
  198. package/dist/delegation/executor/result-aggregator.js +66 -0
  199. package/dist/delegation/executor/result-aggregator.js.map +1 -0
  200. package/dist/delegation/executor/stream-parser.d.ts +28 -0
  201. package/dist/delegation/executor/stream-parser.d.ts.map +1 -0
  202. package/dist/delegation/executor/stream-parser.js +140 -0
  203. package/dist/delegation/executor/stream-parser.js.map +1 -0
  204. package/dist/delegation/executor/types.d.ts +121 -0
  205. package/dist/delegation/executor/types.d.ts.map +1 -0
  206. package/dist/delegation/executor/types.js +6 -0
  207. package/dist/delegation/executor/types.js.map +1 -0
  208. package/dist/delegation/headless-executor.d.ts +13 -91
  209. package/dist/delegation/headless-executor.d.ts.map +1 -1
  210. package/dist/delegation/headless-executor.js +84 -291
  211. package/dist/delegation/headless-executor.js.map +1 -1
  212. package/dist/delegation/index.d.ts +11 -0
  213. package/dist/delegation/index.d.ts.map +1 -0
  214. package/dist/delegation/index.js +33 -0
  215. package/dist/delegation/index.js.map +1 -0
  216. package/dist/delegation/result-formatter.d.ts +1 -30
  217. package/dist/delegation/result-formatter.d.ts.map +1 -1
  218. package/dist/delegation/result-formatter.js.map +1 -1
  219. package/dist/errors/cleanup-registry.d.ts +64 -0
  220. package/dist/errors/cleanup-registry.d.ts.map +1 -0
  221. package/dist/errors/cleanup-registry.js +141 -0
  222. package/dist/errors/cleanup-registry.js.map +1 -0
  223. package/dist/errors/error-handler.d.ts +45 -0
  224. package/dist/errors/error-handler.d.ts.map +1 -0
  225. package/dist/errors/error-handler.js +150 -0
  226. package/dist/errors/error-handler.js.map +1 -0
  227. package/dist/errors/error-types.d.ts +102 -0
  228. package/dist/errors/error-types.d.ts.map +1 -0
  229. package/dist/errors/error-types.js +158 -0
  230. package/dist/errors/error-types.js.map +1 -0
  231. package/dist/errors/exit-codes.d.ts +49 -0
  232. package/dist/errors/exit-codes.d.ts.map +1 -0
  233. package/dist/errors/exit-codes.js +72 -0
  234. package/dist/errors/exit-codes.js.map +1 -0
  235. package/dist/errors/index.d.ts +29 -0
  236. package/dist/errors/index.d.ts.map +1 -0
  237. package/dist/errors/index.js +62 -0
  238. package/dist/errors/index.js.map +1 -0
  239. package/dist/glmt/glmt-transformer.d.ts +29 -248
  240. package/dist/glmt/glmt-transformer.d.ts.map +1 -1
  241. package/dist/glmt/glmt-transformer.js +63 -718
  242. package/dist/glmt/glmt-transformer.js.map +1 -1
  243. package/dist/glmt/index.d.ts +14 -0
  244. package/dist/glmt/index.d.ts.map +1 -0
  245. package/dist/glmt/index.js +41 -0
  246. package/dist/glmt/index.js.map +1 -0
  247. package/dist/glmt/pipeline/content-transformer.d.ts +39 -0
  248. package/dist/glmt/pipeline/content-transformer.d.ts.map +1 -0
  249. package/dist/glmt/pipeline/content-transformer.js +162 -0
  250. package/dist/glmt/pipeline/content-transformer.js.map +1 -0
  251. package/dist/glmt/pipeline/index.d.ts +12 -0
  252. package/dist/glmt/pipeline/index.d.ts.map +1 -0
  253. package/dist/glmt/pipeline/index.js +20 -0
  254. package/dist/glmt/pipeline/index.js.map +1 -0
  255. package/dist/glmt/pipeline/request-transformer.d.ts +31 -0
  256. package/dist/glmt/pipeline/request-transformer.d.ts.map +1 -0
  257. package/dist/glmt/pipeline/request-transformer.js +116 -0
  258. package/dist/glmt/pipeline/request-transformer.js.map +1 -0
  259. package/dist/glmt/pipeline/response-builder.d.ts +52 -0
  260. package/dist/glmt/pipeline/response-builder.d.ts.map +1 -0
  261. package/dist/glmt/pipeline/response-builder.js +205 -0
  262. package/dist/glmt/pipeline/response-builder.js.map +1 -0
  263. package/dist/glmt/pipeline/stream-parser.d.ts +59 -0
  264. package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -0
  265. package/dist/glmt/pipeline/stream-parser.js +241 -0
  266. package/dist/glmt/pipeline/stream-parser.js.map +1 -0
  267. package/dist/glmt/pipeline/tool-call-handler.d.ts +22 -0
  268. package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -0
  269. package/dist/glmt/pipeline/tool-call-handler.js +87 -0
  270. package/dist/glmt/pipeline/tool-call-handler.js.map +1 -0
  271. package/dist/glmt/pipeline/types.d.ts +159 -0
  272. package/dist/glmt/pipeline/types.d.ts.map +1 -0
  273. package/dist/glmt/pipeline/types.js +6 -0
  274. package/dist/glmt/pipeline/types.js.map +1 -0
  275. package/dist/management/checks/cliproxy-check.d.ts +37 -0
  276. package/dist/management/checks/cliproxy-check.d.ts.map +1 -0
  277. package/dist/management/checks/cliproxy-check.js +187 -0
  278. package/dist/management/checks/cliproxy-check.js.map +1 -0
  279. package/dist/management/checks/config-check.d.ts +27 -0
  280. package/dist/management/checks/config-check.d.ts.map +1 -0
  281. package/dist/management/checks/config-check.js +158 -0
  282. package/dist/management/checks/config-check.js.map +1 -0
  283. package/dist/management/checks/env-check.d.ts +17 -0
  284. package/dist/management/checks/env-check.d.ts.map +1 -0
  285. package/dist/management/checks/env-check.js +71 -0
  286. package/dist/management/checks/env-check.js.map +1 -0
  287. package/dist/management/checks/index.d.ts +12 -0
  288. package/dist/management/checks/index.d.ts.map +1 -0
  289. package/dist/management/checks/index.js +48 -0
  290. package/dist/management/checks/index.js.map +1 -0
  291. package/dist/management/checks/oauth-check.d.ts +16 -0
  292. package/dist/management/checks/oauth-check.d.ts.map +1 -0
  293. package/dist/management/checks/oauth-check.js +68 -0
  294. package/dist/management/checks/oauth-check.js.map +1 -0
  295. package/dist/management/checks/profile-check.d.ts +36 -0
  296. package/dist/management/checks/profile-check.d.ts.map +1 -0
  297. package/dist/management/checks/profile-check.js +165 -0
  298. package/dist/management/checks/profile-check.js.map +1 -0
  299. package/dist/management/checks/symlink-check.d.ts +30 -0
  300. package/dist/management/checks/symlink-check.d.ts.map +1 -0
  301. package/dist/management/checks/symlink-check.js +204 -0
  302. package/dist/management/checks/symlink-check.js.map +1 -0
  303. package/dist/management/checks/system-check.d.ts +25 -0
  304. package/dist/management/checks/system-check.d.ts.map +1 -0
  305. package/dist/management/checks/system-check.js +136 -0
  306. package/dist/management/checks/system-check.js.map +1 -0
  307. package/dist/management/checks/types.d.ts +64 -0
  308. package/dist/management/checks/types.d.ts.map +1 -0
  309. package/dist/management/checks/types.js +63 -0
  310. package/dist/management/checks/types.js.map +1 -0
  311. package/dist/management/doctor.d.ts +3 -92
  312. package/dist/management/doctor.d.ts.map +1 -1
  313. package/dist/management/doctor.js +15 -831
  314. package/dist/management/doctor.js.map +1 -1
  315. package/dist/management/index.d.ts +15 -0
  316. package/dist/management/index.d.ts.map +1 -0
  317. package/dist/management/index.js +56 -0
  318. package/dist/management/index.js.map +1 -0
  319. package/dist/management/repair/auto-repair.d.ts +13 -0
  320. package/dist/management/repair/auto-repair.d.ts.map +1 -0
  321. package/dist/management/repair/auto-repair.js +170 -0
  322. package/dist/management/repair/auto-repair.js.map +1 -0
  323. package/dist/management/repair/index.d.ts +5 -0
  324. package/dist/management/repair/index.d.ts.map +1 -0
  325. package/dist/management/repair/index.js +9 -0
  326. package/dist/management/repair/index.js.map +1 -0
  327. package/dist/types/delegation.d.ts +1 -13
  328. package/dist/types/delegation.d.ts.map +1 -1
  329. package/dist/types/utils.d.ts +27 -0
  330. package/dist/types/utils.d.ts.map +1 -1
  331. package/dist/ui/assets/{accounts-p1_nf0Jy.js → accounts-BqDNXZu4.js} +1 -1
  332. package/dist/ui/assets/analytics-DQMyOsqI.js +1 -0
  333. package/dist/ui/assets/api-Bzyq4XP7.js +1 -0
  334. package/dist/ui/assets/{card-CCDc-Mx9.js → card-CIN0KDsX.js} +1 -1
  335. package/dist/ui/assets/cliproxy-5iKdPrEG.js +3 -0
  336. package/dist/ui/assets/cliproxy-control-panel-CJ2CfYod.js +1 -0
  337. package/dist/ui/assets/{code-editor-Br9x-r-E.js → code-editor-CDmNFLQ6.js} +1 -1
  338. package/dist/ui/assets/confirm-dialog-CaiDQikc.js +1 -0
  339. package/dist/ui/assets/copilot-nS6iAyk2.js +4 -0
  340. package/dist/ui/assets/form-utils-DP6ILe7Z.js +20 -0
  341. package/dist/ui/assets/health-DYOQfC7u.js +1 -0
  342. package/dist/ui/assets/{icons-BOsxPbiD.js → icons-ZmwVoUeR.js} +1 -1
  343. package/dist/ui/assets/index-C6Dah-xh.js +46 -0
  344. package/dist/ui/assets/index-It66SkKf.css +1 -0
  345. package/dist/ui/assets/{radix-ui-DFHQr9A5.js → radix-ui-CV3R9pD6.js} +3 -3
  346. package/dist/ui/assets/settings-DABC9b5G.js +1 -0
  347. package/dist/ui/assets/{shared-BfYhSN4-.js → shared-BwU4OKQc.js} +1 -1
  348. package/dist/ui/assets/{switch-CMk95lwf.js → switch-BQ6sBBUv.js} +1 -1
  349. package/dist/ui/assets/{tanstack-C4gT2P7V.js → tanstack-Df9bCj5R.js} +1 -1
  350. package/dist/ui/index.html +6 -6
  351. package/dist/utils/claude-spawner.d.ts +54 -0
  352. package/dist/utils/claude-spawner.d.ts.map +1 -0
  353. package/dist/utils/claude-spawner.js +118 -0
  354. package/dist/utils/claude-spawner.js.map +1 -0
  355. package/dist/utils/delegation-validator.d.ts +8 -4
  356. package/dist/utils/delegation-validator.d.ts.map +1 -1
  357. package/dist/utils/delegation-validator.js.map +1 -1
  358. package/dist/utils/helpers.d.ts +0 -11
  359. package/dist/utils/helpers.d.ts.map +1 -1
  360. package/dist/utils/helpers.js +1 -57
  361. package/dist/utils/helpers.js.map +1 -1
  362. package/dist/utils/index.d.ts +15 -0
  363. package/dist/utils/index.d.ts.map +1 -0
  364. package/dist/utils/index.js +50 -0
  365. package/dist/utils/index.js.map +1 -0
  366. package/dist/utils/time.d.ts +10 -0
  367. package/dist/utils/time.d.ts.map +1 -0
  368. package/dist/utils/time.js +27 -0
  369. package/dist/utils/time.js.map +1 -0
  370. package/dist/utils/ui/boxes.d.ts +24 -0
  371. package/dist/utils/ui/boxes.d.ts.map +1 -0
  372. package/dist/utils/ui/boxes.js +108 -0
  373. package/dist/utils/ui/boxes.js.map +1 -0
  374. package/dist/utils/ui/colors.d.ts +25 -0
  375. package/dist/utils/ui/colors.d.ts.map +1 -0
  376. package/dist/utils/ui/colors.js +70 -0
  377. package/dist/utils/ui/colors.js.map +1 -0
  378. package/dist/utils/ui/index.d.ts +51 -0
  379. package/dist/utils/ui/index.d.ts.map +1 -0
  380. package/dist/utils/ui/index.js +96 -0
  381. package/dist/utils/ui/index.js.map +1 -0
  382. package/dist/utils/ui/indicators.d.ts +23 -0
  383. package/dist/utils/ui/indicators.d.ts.map +1 -0
  384. package/dist/utils/ui/indicators.js +39 -0
  385. package/dist/utils/ui/indicators.js.map +1 -0
  386. package/dist/utils/ui/init.d.ts +30 -0
  387. package/dist/utils/ui/init.d.ts.map +1 -0
  388. package/dist/utils/ui/init.js +102 -0
  389. package/dist/utils/ui/init.js.map +1 -0
  390. package/dist/utils/ui/spinner.d.ts +13 -0
  391. package/dist/utils/ui/spinner.d.ts.map +1 -0
  392. package/dist/utils/ui/spinner.js +89 -0
  393. package/dist/utils/ui/spinner.js.map +1 -0
  394. package/dist/utils/ui/tables.d.ts +12 -0
  395. package/dist/utils/ui/tables.d.ts.map +1 -0
  396. package/dist/utils/ui/tables.js +69 -0
  397. package/dist/utils/ui/tables.js.map +1 -0
  398. package/dist/utils/ui/tasks.d.ts +26 -0
  399. package/dist/utils/ui/tasks.d.ts.map +1 -0
  400. package/dist/utils/ui/tasks.js +102 -0
  401. package/dist/utils/ui/tasks.js.map +1 -0
  402. package/dist/utils/ui/text.d.ts +24 -0
  403. package/dist/utils/ui/text.d.ts.map +1 -0
  404. package/dist/utils/ui/text.js +60 -0
  405. package/dist/utils/ui/text.js.map +1 -0
  406. package/dist/utils/ui/types.d.ts +36 -0
  407. package/dist/utils/ui/types.d.ts.map +1 -0
  408. package/dist/utils/ui/types.js +33 -0
  409. package/dist/utils/ui/types.js.map +1 -0
  410. package/dist/utils/ui.d.ts +3 -138
  411. package/dist/utils/ui.d.ts.map +1 -1
  412. package/dist/utils/ui.js +40 -567
  413. package/dist/utils/ui.js.map +1 -1
  414. package/dist/utils/websearch/gemini-cli.d.ts +36 -0
  415. package/dist/utils/websearch/gemini-cli.d.ts.map +1 -0
  416. package/dist/utils/websearch/gemini-cli.js +132 -0
  417. package/dist/utils/websearch/gemini-cli.js.map +1 -0
  418. package/dist/utils/websearch/grok-cli.d.ts +26 -0
  419. package/dist/utils/websearch/grok-cli.d.ts.map +1 -0
  420. package/dist/utils/websearch/grok-cli.js +81 -0
  421. package/dist/utils/websearch/grok-cli.js.map +1 -0
  422. package/dist/utils/websearch/hook-config.d.ts +21 -0
  423. package/dist/utils/websearch/hook-config.d.ts.map +1 -0
  424. package/dist/utils/websearch/hook-config.js +183 -0
  425. package/dist/utils/websearch/hook-config.js.map +1 -0
  426. package/dist/utils/websearch/hook-env.d.ts +16 -0
  427. package/dist/utils/websearch/hook-env.d.ts.map +1 -0
  428. package/dist/utils/websearch/hook-env.js +62 -0
  429. package/dist/utils/websearch/hook-env.js.map +1 -0
  430. package/dist/utils/websearch/hook-installer.d.ts +27 -0
  431. package/dist/utils/websearch/hook-installer.d.ts.map +1 -0
  432. package/dist/utils/websearch/hook-installer.js +141 -0
  433. package/dist/utils/websearch/hook-installer.js.map +1 -0
  434. package/dist/utils/websearch/index.d.ts +15 -0
  435. package/dist/utils/websearch/index.d.ts.map +1 -0
  436. package/dist/utils/websearch/index.js +44 -0
  437. package/dist/utils/websearch/index.js.map +1 -0
  438. package/dist/utils/websearch/opencode-cli.d.ts +26 -0
  439. package/dist/utils/websearch/opencode-cli.d.ts.map +1 -0
  440. package/dist/utils/websearch/opencode-cli.js +81 -0
  441. package/dist/utils/websearch/opencode-cli.js.map +1 -0
  442. package/dist/utils/websearch/status.d.ts +35 -0
  443. package/dist/utils/websearch/status.d.ts.map +1 -0
  444. package/dist/utils/websearch/status.js +185 -0
  445. package/dist/utils/websearch/status.js.map +1 -0
  446. package/dist/utils/websearch/types.d.ts +85 -0
  447. package/dist/utils/websearch/types.d.ts.map +1 -0
  448. package/dist/utils/websearch/types.js +10 -0
  449. package/dist/utils/websearch/types.js.map +1 -0
  450. package/dist/utils/websearch-manager.d.ts +7 -186
  451. package/dist/utils/websearch-manager.d.ts.map +1 -1
  452. package/dist/utils/websearch-manager.js +37 -710
  453. package/dist/utils/websearch-manager.js.map +1 -1
  454. package/dist/web-server/data-aggregator.d.ts +3 -51
  455. package/dist/web-server/data-aggregator.d.ts.map +1 -1
  456. package/dist/web-server/data-aggregator.js +18 -386
  457. package/dist/web-server/data-aggregator.js.map +1 -1
  458. package/dist/web-server/health/cliproxy-checks.d.ts +23 -0
  459. package/dist/web-server/health/cliproxy-checks.d.ts.map +1 -0
  460. package/dist/web-server/health/cliproxy-checks.js +145 -0
  461. package/dist/web-server/health/cliproxy-checks.js.map +1 -0
  462. package/dist/web-server/health/config-checks.d.ts +19 -0
  463. package/dist/web-server/health/config-checks.d.ts.map +1 -0
  464. package/dist/web-server/health/config-checks.js +174 -0
  465. package/dist/web-server/health/config-checks.js.map +1 -0
  466. package/dist/web-server/health/environment-checks.d.ts +11 -0
  467. package/dist/web-server/health/environment-checks.d.ts.map +1 -0
  468. package/dist/web-server/health/environment-checks.js +40 -0
  469. package/dist/web-server/health/environment-checks.js.map +1 -0
  470. package/dist/web-server/health/index.d.ts +13 -0
  471. package/dist/web-server/health/index.d.ts.map +1 -0
  472. package/dist/web-server/health/index.js +41 -0
  473. package/dist/web-server/health/index.js.map +1 -0
  474. package/dist/web-server/health/oauth-checks.d.ts +11 -0
  475. package/dist/web-server/health/oauth-checks.d.ts.map +1 -0
  476. package/dist/web-server/health/oauth-checks.js +34 -0
  477. package/dist/web-server/health/oauth-checks.js.map +1 -0
  478. package/dist/web-server/health/profile-checks.d.ts +19 -0
  479. package/dist/web-server/health/profile-checks.d.ts.map +1 -0
  480. package/dist/web-server/health/profile-checks.js +152 -0
  481. package/dist/web-server/health/profile-checks.js.map +1 -0
  482. package/dist/web-server/health/symlink-checks.d.ts +15 -0
  483. package/dist/web-server/health/symlink-checks.d.ts.map +1 -0
  484. package/dist/web-server/health/symlink-checks.js +173 -0
  485. package/dist/web-server/health/symlink-checks.js.map +1 -0
  486. package/dist/web-server/health/system-checks.d.ts +19 -0
  487. package/dist/web-server/health/system-checks.d.ts.map +1 -0
  488. package/dist/web-server/health/system-checks.js +127 -0
  489. package/dist/web-server/health/system-checks.js.map +1 -0
  490. package/dist/web-server/health/types.d.ts +34 -0
  491. package/dist/web-server/health/types.d.ts.map +1 -0
  492. package/dist/web-server/health/types.js +8 -0
  493. package/dist/web-server/health/types.js.map +1 -0
  494. package/dist/web-server/health/websearch-checks.d.ts +11 -0
  495. package/dist/web-server/health/websearch-checks.d.ts.map +1 -0
  496. package/dist/web-server/health/websearch-checks.js +53 -0
  497. package/dist/web-server/health/websearch-checks.js.map +1 -0
  498. package/dist/web-server/health-service.d.ts +4 -30
  499. package/dist/web-server/health-service.d.ts.map +1 -1
  500. package/dist/web-server/health-service.js +28 -695
  501. package/dist/web-server/health-service.js.map +1 -1
  502. package/dist/web-server/index.d.ts.map +1 -1
  503. package/dist/web-server/index.js +2 -5
  504. package/dist/web-server/index.js.map +1 -1
  505. package/dist/web-server/routes/cliproxy-auth-routes.d.ts +6 -0
  506. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -0
  507. package/dist/web-server/routes/cliproxy-auth-routes.js +202 -0
  508. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -0
  509. package/dist/web-server/routes/cliproxy-stats-routes.d.ts +6 -0
  510. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -0
  511. package/dist/web-server/routes/cliproxy-stats-routes.js +253 -0
  512. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -0
  513. package/dist/web-server/routes/config-routes.d.ts +6 -0
  514. package/dist/web-server/routes/config-routes.d.ts.map +1 -0
  515. package/dist/web-server/routes/config-routes.js +145 -0
  516. package/dist/web-server/routes/config-routes.js.map +1 -0
  517. package/dist/web-server/routes/copilot-routes.d.ts +6 -0
  518. package/dist/web-server/routes/copilot-routes.d.ts.map +1 -0
  519. package/dist/web-server/routes/copilot-routes.js +195 -0
  520. package/dist/web-server/routes/copilot-routes.js.map +1 -0
  521. package/dist/web-server/routes/copilot-settings-routes.d.ts +6 -0
  522. package/dist/web-server/routes/copilot-settings-routes.d.ts.map +1 -0
  523. package/dist/web-server/routes/copilot-settings-routes.js +122 -0
  524. package/dist/web-server/routes/copilot-settings-routes.js.map +1 -0
  525. package/dist/web-server/routes/health-routes.d.ts +6 -0
  526. package/dist/web-server/routes/health-routes.d.ts.map +1 -0
  527. package/dist/web-server/routes/health-routes.js +30 -0
  528. package/dist/web-server/routes/health-routes.js.map +1 -0
  529. package/dist/web-server/routes/index.d.ts +8 -0
  530. package/dist/web-server/routes/index.d.ts.map +1 -0
  531. package/dist/web-server/routes/index.js +54 -0
  532. package/dist/web-server/routes/index.js.map +1 -0
  533. package/dist/web-server/routes/misc-routes.d.ts +6 -0
  534. package/dist/web-server/routes/misc-routes.d.ts.map +1 -0
  535. package/dist/web-server/routes/misc-routes.js +219 -0
  536. package/dist/web-server/routes/misc-routes.js.map +1 -0
  537. package/dist/web-server/routes/profile-routes.d.ts +6 -0
  538. package/dist/web-server/routes/profile-routes.d.ts.map +1 -0
  539. package/dist/web-server/routes/profile-routes.js +164 -0
  540. package/dist/web-server/routes/profile-routes.js.map +1 -0
  541. package/dist/web-server/routes/provider-routes.d.ts +6 -0
  542. package/dist/web-server/routes/provider-routes.d.ts.map +1 -0
  543. package/dist/web-server/routes/provider-routes.js +146 -0
  544. package/dist/web-server/routes/provider-routes.js.map +1 -0
  545. package/dist/web-server/routes/route-helpers.d.ts +55 -0
  546. package/dist/web-server/routes/route-helpers.d.ts.map +1 -0
  547. package/dist/web-server/routes/route-helpers.js +201 -0
  548. package/dist/web-server/routes/route-helpers.js.map +1 -0
  549. package/dist/web-server/routes/settings-routes.d.ts +6 -0
  550. package/dist/web-server/routes/settings-routes.d.ts.map +1 -0
  551. package/dist/web-server/routes/settings-routes.js +207 -0
  552. package/dist/web-server/routes/settings-routes.js.map +1 -0
  553. package/dist/web-server/routes/variant-routes.d.ts +6 -0
  554. package/dist/web-server/routes/variant-routes.d.ts.map +1 -0
  555. package/dist/web-server/routes/variant-routes.js +158 -0
  556. package/dist/web-server/routes/variant-routes.js.map +1 -0
  557. package/dist/web-server/routes/websearch-routes.d.ts +6 -0
  558. package/dist/web-server/routes/websearch-routes.d.ts.map +1 -0
  559. package/dist/web-server/routes/websearch-routes.js +130 -0
  560. package/dist/web-server/routes/websearch-routes.js.map +1 -0
  561. package/dist/web-server/services/index.d.ts +7 -0
  562. package/dist/web-server/services/index.d.ts.map +1 -0
  563. package/dist/web-server/services/index.js +21 -0
  564. package/dist/web-server/services/index.js.map +1 -0
  565. package/dist/web-server/services/usage-aggregator.d.ts +7 -0
  566. package/dist/web-server/services/usage-aggregator.d.ts.map +1 -0
  567. package/dist/web-server/services/usage-aggregator.js +23 -0
  568. package/dist/web-server/services/usage-aggregator.js.map +1 -0
  569. package/dist/web-server/usage/aggregator.d.ts +54 -0
  570. package/dist/web-server/usage/aggregator.d.ts.map +1 -0
  571. package/dist/web-server/usage/aggregator.js +470 -0
  572. package/dist/web-server/usage/aggregator.js.map +1 -0
  573. package/dist/web-server/usage/data-aggregator.d.ts +55 -0
  574. package/dist/web-server/usage/data-aggregator.d.ts.map +1 -0
  575. package/dist/web-server/usage/data-aggregator.js +391 -0
  576. package/dist/web-server/usage/data-aggregator.js.map +1 -0
  577. package/dist/web-server/usage/disk-cache.d.ts +46 -0
  578. package/dist/web-server/usage/disk-cache.d.ts.map +1 -0
  579. package/dist/web-server/usage/disk-cache.js +162 -0
  580. package/dist/web-server/usage/disk-cache.js.map +1 -0
  581. package/dist/web-server/usage/handlers.d.ts +50 -0
  582. package/dist/web-server/usage/handlers.d.ts.map +1 -0
  583. package/dist/web-server/usage/handlers.js +524 -0
  584. package/dist/web-server/usage/handlers.js.map +1 -0
  585. package/dist/web-server/usage/index.d.ts +12 -0
  586. package/dist/web-server/usage/index.d.ts.map +1 -0
  587. package/dist/web-server/usage/index.js +54 -0
  588. package/dist/web-server/usage/index.js.map +1 -0
  589. package/dist/web-server/usage/routes.d.ts +11 -0
  590. package/dist/web-server/usage/routes.d.ts.map +1 -0
  591. package/dist/web-server/usage/routes.js +37 -0
  592. package/dist/web-server/usage/routes.js.map +1 -0
  593. package/dist/web-server/usage/types.d.ts +119 -0
  594. package/dist/web-server/usage/types.d.ts.map +1 -0
  595. package/dist/web-server/usage/types.js +9 -0
  596. package/dist/web-server/usage/types.js.map +1 -0
  597. package/dist/web-server/usage-disk-cache.d.ts +3 -42
  598. package/dist/web-server/usage-disk-cache.d.ts.map +1 -1
  599. package/dist/web-server/usage-disk-cache.js +5 -144
  600. package/dist/web-server/usage-disk-cache.js.map +1 -1
  601. package/dist/web-server/usage-routes.d.ts +3 -31
  602. package/dist/web-server/usage-routes.d.ts.map +1 -1
  603. package/dist/web-server/usage-routes.js +8 -1139
  604. package/dist/web-server/usage-routes.js.map +1 -1
  605. package/dist/web-server/usage-types.d.ts +3 -115
  606. package/dist/web-server/usage-types.d.ts.map +1 -1
  607. package/dist/web-server/usage-types.js +17 -3
  608. package/dist/web-server/usage-types.js.map +1 -1
  609. package/package.json +1 -1
  610. package/dist/ui/assets/analytics-D1k2nYcF.js +0 -1
  611. package/dist/ui/assets/api-D9VVmZ1j.js +0 -1
  612. package/dist/ui/assets/cliproxy-CTt_Nsft.js +0 -1
  613. package/dist/ui/assets/cliproxy-control-panel-DKMAi4_4.js +0 -1
  614. package/dist/ui/assets/copilot-C6F8PT_L.js +0 -4
  615. package/dist/ui/assets/form-utils-BuXDJb0w.js +0 -20
  616. package/dist/ui/assets/health-DiAvJaSn.js +0 -1
  617. package/dist/ui/assets/index-Brq6EBKZ.css +0 -1
  618. package/dist/ui/assets/index-ByU8ZhED.js +0 -48
  619. package/dist/ui/assets/settings-CEomZLGl.js +0 -1
  620. package/dist/web-server/routes.d.ts +0 -7
  621. package/dist/web-server/routes.d.ts.map +0 -1
  622. package/dist/web-server/routes.js +0 -1891
  623. package/dist/web-server/routes.js.map +0 -1
@@ -5,48 +5,15 @@
5
5
  * Manages CCS API profiles for custom API providers.
6
6
  * Commands: create, list, remove
7
7
  *
8
- * Supports dual-mode configuration:
9
- * - Unified YAML format (config.yaml) when CCS_UNIFIED_CONFIG=1 or config.yaml exists
10
- * - Legacy JSON format (config.json, *.settings.json) as fallback
8
+ * CLI parsing and output formatting only.
9
+ * Business logic delegated to src/api/services/.
11
10
  */
12
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- var desc = Object.getOwnPropertyDescriptor(m, k);
15
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
- desc = { enumerable: true, get: function() { return m[k]; } };
17
- }
18
- Object.defineProperty(o, k2, desc);
19
- }) : (function(o, m, k, k2) {
20
- if (k2 === undefined) k2 = k;
21
- o[k2] = m[k];
22
- }));
23
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
- Object.defineProperty(o, "default", { enumerable: true, value: v });
25
- }) : function(o, v) {
26
- o["default"] = v;
27
- });
28
- var __importStar = (this && this.__importStar) || function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
11
  Object.defineProperty(exports, "__esModule", { value: true });
36
12
  exports.handleApiCommand = void 0;
37
- const fs = __importStar(require("fs"));
38
- const os = __importStar(require("os"));
39
- const path = __importStar(require("path"));
40
13
  const ui_1 = require("../utils/ui");
41
14
  const prompt_1 = require("../utils/prompt");
42
- const config_manager_1 = require("../utils/config-manager");
43
- const reserved_names_1 = require("../config/reserved-names");
44
- const unified_config_loader_1 = require("../config/unified-config-loader");
45
- const secrets_manager_1 = require("../config/secrets-manager");
46
- const feature_flags_1 = require("../config/feature-flags");
47
- /**
48
- * Parse command line arguments for api commands
49
- */
15
+ const services_1 = require("../api/services");
16
+ /** Parse command line arguments for api commands */
50
17
  function parseArgs(args) {
51
18
  const result = {};
52
19
  for (let i = 0; i < args.length; i++) {
@@ -72,185 +39,7 @@ function parseArgs(args) {
72
39
  }
73
40
  return result;
74
41
  }
75
- /**
76
- * Validate API profile name
77
- */
78
- function validateApiName(name) {
79
- if (!name) {
80
- return 'API name is required';
81
- }
82
- if (!/^[a-zA-Z][a-zA-Z0-9._-]*$/.test(name)) {
83
- return 'API name must start with letter, contain only letters, numbers, dot, dash, underscore';
84
- }
85
- if (name.length > 32) {
86
- return 'API name must be 32 characters or less';
87
- }
88
- // Use centralized reserved names list
89
- if ((0, reserved_names_1.isReservedName)(name)) {
90
- return `'${name}' is a reserved name`;
91
- }
92
- return null;
93
- }
94
- /**
95
- * Validate URL format and warn about common mistakes
96
- */
97
- function validateUrl(url) {
98
- if (!url) {
99
- return 'Base URL is required';
100
- }
101
- try {
102
- new URL(url);
103
- return null;
104
- }
105
- catch {
106
- return 'Invalid URL format (must include protocol, e.g., https://)';
107
- }
108
- }
109
- /**
110
- * Check if URL looks like it includes endpoint path (common mistake)
111
- * Returns warning message if problematic, null if OK
112
- */
113
- function getUrlWarning(url) {
114
- const problematicPaths = ['/chat/completions', '/v1/messages', '/messages', '/completions'];
115
- const lowerUrl = url.toLowerCase();
116
- for (const path of problematicPaths) {
117
- if (lowerUrl.endsWith(path)) {
118
- return (`URL ends with "${path}" - Claude appends this automatically.\n` +
119
- ` You likely want: ${url.replace(new RegExp(path + '$', 'i'), '')}`);
120
- }
121
- }
122
- return null;
123
- }
124
- /**
125
- * Check if unified config mode is active
126
- */
127
- function isUnifiedMode() {
128
- return (0, unified_config_loader_1.hasUnifiedConfig)() || (0, feature_flags_1.isUnifiedConfigEnabled)();
129
- }
130
- /**
131
- * Check if API profile already exists in config
132
- */
133
- function apiExists(name) {
134
- try {
135
- if (isUnifiedMode()) {
136
- const config = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
137
- return name in config.profiles;
138
- }
139
- const config = (0, config_manager_1.loadConfig)();
140
- return name in config.profiles;
141
- }
142
- catch {
143
- return false;
144
- }
145
- }
146
- /**
147
- * Create settings.json file for API profile
148
- * Includes all 4 model fields for proper Claude CLI integration
149
- */
150
- function createSettingsFile(name, baseUrl, apiKey, models) {
151
- const ccsDir = (0, config_manager_1.getCcsDir)();
152
- const settingsPath = path.join(ccsDir, `${name}.settings.json`);
153
- const settings = {
154
- env: {
155
- ANTHROPIC_BASE_URL: baseUrl,
156
- ANTHROPIC_AUTH_TOKEN: apiKey,
157
- ANTHROPIC_MODEL: models.default,
158
- ANTHROPIC_DEFAULT_OPUS_MODEL: models.opus,
159
- ANTHROPIC_DEFAULT_SONNET_MODEL: models.sonnet,
160
- ANTHROPIC_DEFAULT_HAIKU_MODEL: models.haiku,
161
- },
162
- };
163
- fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf8');
164
- return settingsPath;
165
- }
166
- /**
167
- * Update config.json with new API profile
168
- */
169
- function updateConfig(name, _settingsPath) {
170
- const configPath = (0, config_manager_1.getConfigPath)();
171
- const ccsDir = (0, config_manager_1.getCcsDir)();
172
- // Read existing config or create new
173
- let config;
174
- try {
175
- config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
176
- }
177
- catch {
178
- config = { profiles: {} };
179
- }
180
- // Use relative path with ~ for portability
181
- const relativePath = `~/.ccs/${name}.settings.json`;
182
- config.profiles[name] = relativePath;
183
- // Ensure directory exists
184
- if (!fs.existsSync(ccsDir)) {
185
- fs.mkdirSync(ccsDir, { recursive: true });
186
- }
187
- // Write config atomically (write to temp, then rename)
188
- const tempPath = configPath + '.tmp';
189
- fs.writeFileSync(tempPath, JSON.stringify(config, null, 2) + '\n', 'utf8');
190
- fs.renameSync(tempPath, configPath);
191
- }
192
- /**
193
- * Create API profile in unified config
194
- * Creates *.settings.json file and stores reference in config.yaml
195
- * (matching Claude's ~/.claude/settings.json pattern)
196
- */
197
- function createApiProfileUnified(name, baseUrl, apiKey, models) {
198
- const ccsDir = path.join(os.homedir(), '.ccs');
199
- const settingsFile = `${name}.settings.json`;
200
- const settingsPath = path.join(ccsDir, settingsFile);
201
- // Create settings file with all env vars (matching Claude's pattern)
202
- const settings = {
203
- env: {
204
- ANTHROPIC_BASE_URL: baseUrl,
205
- ANTHROPIC_AUTH_TOKEN: apiKey,
206
- ANTHROPIC_MODEL: models.default,
207
- ANTHROPIC_DEFAULT_OPUS_MODEL: models.opus,
208
- ANTHROPIC_DEFAULT_SONNET_MODEL: models.sonnet,
209
- ANTHROPIC_DEFAULT_HAIKU_MODEL: models.haiku,
210
- },
211
- };
212
- // Ensure directory exists
213
- if (!fs.existsSync(ccsDir)) {
214
- fs.mkdirSync(ccsDir, { recursive: true });
215
- }
216
- // Write settings file
217
- fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf8');
218
- // Store reference in config.yaml
219
- const config = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
220
- config.profiles[name] = {
221
- type: 'api',
222
- settings: `~/.ccs/${settingsFile}`,
223
- };
224
- (0, unified_config_loader_1.saveUnifiedConfig)(config);
225
- }
226
- /**
227
- * Remove API profile from unified config
228
- */
229
- function removeApiProfileUnified(name) {
230
- const config = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
231
- const profile = config.profiles[name];
232
- if (!profile) {
233
- throw new Error(`API profile not found: ${name}`);
234
- }
235
- // Delete the settings file if it exists
236
- if (profile.settings) {
237
- const settingsPath = profile.settings.replace(/^~/, os.homedir());
238
- if (fs.existsSync(settingsPath)) {
239
- fs.unlinkSync(settingsPath);
240
- }
241
- }
242
- delete config.profiles[name];
243
- // Clear default if it was the deleted profile
244
- if (config.default === name) {
245
- config.default = undefined;
246
- }
247
- (0, unified_config_loader_1.saveUnifiedConfig)(config);
248
- // Remove any legacy secrets (backward compat)
249
- (0, secrets_manager_1.deleteAllProfileSecrets)(name);
250
- }
251
- /**
252
- * Handle 'ccs api create' command
253
- */
42
+ /** Handle 'ccs api create' command */
254
43
  async function handleCreate(args) {
255
44
  await (0, ui_1.initUI)();
256
45
  const parsedArgs = parseArgs(args);
@@ -260,18 +49,18 @@ async function handleCreate(args) {
260
49
  let name = parsedArgs.name;
261
50
  if (!name) {
262
51
  name = await prompt_1.InteractivePrompt.input('API name', {
263
- validate: validateApiName,
52
+ validate: services_1.validateApiName,
264
53
  });
265
54
  }
266
55
  else {
267
- const error = validateApiName(name);
56
+ const error = (0, services_1.validateApiName)(name);
268
57
  if (error) {
269
58
  console.log((0, ui_1.fail)(error));
270
59
  process.exit(1);
271
60
  }
272
61
  }
273
62
  // Check if exists
274
- if (apiExists(name) && !parsedArgs.force) {
63
+ if ((0, services_1.apiProfileExists)(name) && !parsedArgs.force) {
275
64
  console.log((0, ui_1.fail)(`API '${name}' already exists`));
276
65
  console.log(` Use ${(0, ui_1.color)('--force', 'command')} to overwrite`);
277
66
  process.exit(1);
@@ -279,19 +68,17 @@ async function handleCreate(args) {
279
68
  // Step 2: Base URL
280
69
  let baseUrl = parsedArgs.baseUrl;
281
70
  if (!baseUrl) {
282
- baseUrl = await prompt_1.InteractivePrompt.input('API Base URL (e.g., https://api.example.com/v1 - without /chat/completions)', {
283
- validate: validateUrl,
284
- });
71
+ baseUrl = await prompt_1.InteractivePrompt.input('API Base URL (e.g., https://api.example.com/v1 - without /chat/completions)', { validate: services_1.validateUrl });
285
72
  }
286
73
  else {
287
- const error = validateUrl(baseUrl);
74
+ const error = (0, services_1.validateUrl)(baseUrl);
288
75
  if (error) {
289
76
  console.log((0, ui_1.fail)(error));
290
77
  process.exit(1);
291
78
  }
292
79
  }
293
80
  // Check for common URL mistakes and warn
294
- const urlWarning = getUrlWarning(baseUrl);
81
+ const urlWarning = (0, services_1.getUrlWarning)(baseUrl);
295
82
  if (urlWarning) {
296
83
  console.log('');
297
84
  console.log((0, ui_1.warn)(urlWarning));
@@ -299,10 +86,9 @@ async function handleCreate(args) {
299
86
  default: false,
300
87
  });
301
88
  if (!continueAnyway) {
302
- // Let user re-enter URL
303
89
  baseUrl = await prompt_1.InteractivePrompt.input('API Base URL', {
304
- validate: validateUrl,
305
- default: baseUrl.replace(/\/(chat\/completions|v1\/messages|messages|completions)$/i, ''),
90
+ validate: services_1.validateUrl,
91
+ default: (0, services_1.sanitizeBaseUrl)(baseUrl),
306
92
  });
307
93
  }
308
94
  }
@@ -315,7 +101,7 @@ async function handleCreate(args) {
315
101
  process.exit(1);
316
102
  }
317
103
  }
318
- // Step 4: Model (optional)
104
+ // Step 4: Model configuration
319
105
  const defaultModel = 'claude-sonnet-4-5-20250929';
320
106
  let model = parsedArgs.model;
321
107
  if (!model && !parsedArgs.yes) {
@@ -325,14 +111,11 @@ async function handleCreate(args) {
325
111
  }
326
112
  model = model || defaultModel;
327
113
  // Step 5: Model mapping for Opus/Sonnet/Haiku
328
- // Auto-show if user entered a custom model, otherwise ask
329
114
  let opusModel = model;
330
115
  let sonnetModel = model;
331
116
  let haikuModel = model;
332
117
  const isCustomModel = model !== defaultModel;
333
118
  if (!parsedArgs.yes) {
334
- // If user entered custom model, auto-prompt for model mapping
335
- // Otherwise, ask if they want to configure it
336
119
  let wantCustomMapping = isCustomModel;
337
120
  if (!isCustomModel) {
338
121
  console.log('');
@@ -341,12 +124,9 @@ async function handleCreate(args) {
341
124
  }
342
125
  if (wantCustomMapping) {
343
126
  console.log('');
344
- if (isCustomModel) {
345
- console.log((0, ui_1.dim)('Configure model IDs for each tier (defaults to your model):'));
346
- }
347
- else {
348
- console.log((0, ui_1.dim)('Leave blank to use the default model for each.'));
349
- }
127
+ console.log((0, ui_1.dim)(isCustomModel
128
+ ? 'Configure model IDs for each tier (defaults to your model):'
129
+ : 'Leave blank to use the default model for each.'));
350
130
  opusModel =
351
131
  (await prompt_1.InteractivePrompt.input('Opus model (ANTHROPIC_DEFAULT_OPUS_MODEL)', {
352
132
  default: model,
@@ -361,206 +141,88 @@ async function handleCreate(args) {
361
141
  })) || model;
362
142
  }
363
143
  }
364
- // Build model mapping
365
144
  const models = {
366
145
  default: model,
367
146
  opus: opusModel,
368
147
  sonnet: sonnetModel,
369
148
  haiku: haikuModel,
370
149
  };
371
- // Check if custom model mapping is configured
372
- const hasCustomMapping = opusModel !== model || sonnetModel !== model || haikuModel !== model;
373
- // Create files
150
+ // Create profile
374
151
  console.log('');
375
152
  console.log((0, ui_1.info)('Creating API profile...'));
376
- try {
377
- const settingsFile = `~/.ccs/${name}.settings.json`;
378
- if (isUnifiedMode()) {
379
- // Use unified config format
380
- createApiProfileUnified(name, baseUrl, apiKey, models);
381
- console.log('');
382
- // Build info message
383
- let infoMsg = `API: ${name}\n` +
384
- `Config: ~/.ccs/config.yaml\n` +
385
- `Settings: ${settingsFile}\n` +
386
- `Base URL: ${baseUrl}\n` +
387
- `Model: ${model}`;
388
- if (hasCustomMapping) {
389
- infoMsg +=
390
- `\n\nModel Mapping:\n` +
391
- ` Opus: ${opusModel}\n` +
392
- ` Sonnet: ${sonnetModel}\n` +
393
- ` Haiku: ${haikuModel}`;
394
- }
395
- console.log((0, ui_1.infoBox)(infoMsg, 'API Profile Created'));
396
- }
397
- else {
398
- // Use legacy JSON format
399
- const settingsPath = createSettingsFile(name, baseUrl, apiKey, models);
400
- updateConfig(name, settingsPath);
401
- console.log('');
402
- let infoMsg = `API: ${name}\n` +
403
- `Settings: ${settingsFile}\n` +
404
- `Base URL: ${baseUrl}\n` +
405
- `Model: ${model}`;
406
- if (hasCustomMapping) {
407
- infoMsg +=
408
- `\n\nModel Mapping:\n` +
409
- ` Opus: ${opusModel}\n` +
410
- ` Sonnet: ${sonnetModel}\n` +
411
- ` Haiku: ${haikuModel}`;
412
- }
413
- console.log((0, ui_1.infoBox)(infoMsg, 'API Profile Created'));
414
- }
415
- console.log('');
416
- console.log((0, ui_1.header)('Usage'));
417
- console.log(` ${(0, ui_1.color)(`ccs ${name} "your prompt"`, 'command')}`);
418
- console.log('');
419
- console.log((0, ui_1.header)('Edit Settings'));
420
- console.log(` ${(0, ui_1.dim)('To modify env vars later:')}`);
421
- console.log(` ${(0, ui_1.color)(`nano ${settingsFile.replace('~', '$HOME')}`, 'command')}`);
422
- console.log('');
423
- }
424
- catch (error) {
425
- console.log((0, ui_1.fail)(`Failed to create API profile: ${error.message}`));
153
+ const result = (0, services_1.createApiProfile)(name, baseUrl, apiKey, models);
154
+ if (!result.success) {
155
+ console.log((0, ui_1.fail)(`Failed to create API profile: ${result.error}`));
426
156
  process.exit(1);
427
157
  }
158
+ // Display success
159
+ console.log('');
160
+ const hasCustomMapping = opusModel !== model || sonnetModel !== model || haikuModel !== model;
161
+ let infoMsg = `API: ${name}\n` +
162
+ `Config: ${(0, services_1.isUsingUnifiedConfig)() ? '~/.ccs/config.yaml' : '~/.ccs/config.json'}\n` +
163
+ `Settings: ${result.settingsFile}\n` +
164
+ `Base URL: ${baseUrl}\n` +
165
+ `Model: ${model}`;
166
+ if (hasCustomMapping) {
167
+ infoMsg +=
168
+ `\n\nModel Mapping:\n` +
169
+ ` Opus: ${opusModel}\n` +
170
+ ` Sonnet: ${sonnetModel}\n` +
171
+ ` Haiku: ${haikuModel}`;
172
+ }
173
+ console.log((0, ui_1.infoBox)(infoMsg, 'API Profile Created'));
174
+ console.log('');
175
+ console.log((0, ui_1.header)('Usage'));
176
+ console.log(` ${(0, ui_1.color)(`ccs ${name} "your prompt"`, 'command')}`);
177
+ console.log('');
178
+ console.log((0, ui_1.header)('Edit Settings'));
179
+ console.log(` ${(0, ui_1.dim)('To modify env vars later:')}`);
180
+ console.log(` ${(0, ui_1.color)(`nano ${result.settingsFile.replace('~', '$HOME')}`, 'command')}`);
181
+ console.log('');
428
182
  }
429
- /**
430
- * Check if API profile has real API key (not placeholder)
431
- */
432
- function isApiConfigured(apiName) {
433
- try {
434
- if (isUnifiedMode()) {
435
- // Check secrets.yaml for unified config
436
- const { getProfileSecrets } = require('../config/secrets-manager');
437
- const secrets = getProfileSecrets(apiName);
438
- const token = secrets?.ANTHROPIC_AUTH_TOKEN || '';
439
- return token.length > 0 && !token.includes('YOUR_') && !token.includes('your-');
440
- }
441
- // Legacy: check settings.json file
442
- const ccsDir = (0, config_manager_1.getCcsDir)();
443
- const settingsPath = path.join(ccsDir, `${apiName}.settings.json`);
444
- if (!fs.existsSync(settingsPath))
445
- return false;
446
- const settings = JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
447
- const token = settings?.env?.ANTHROPIC_AUTH_TOKEN || '';
448
- // Check if it's a placeholder or empty
449
- return token.length > 0 && !token.includes('YOUR_') && !token.includes('your-');
450
- }
451
- catch {
452
- return false;
453
- }
454
- }
455
- /**
456
- * Handle 'ccs api list' command
457
- */
183
+ /** Handle 'ccs api list' command */
458
184
  async function handleList() {
459
185
  await (0, ui_1.initUI)();
460
186
  console.log((0, ui_1.header)('CCS API Profiles'));
461
187
  console.log('');
462
- try {
463
- if (isUnifiedMode()) {
464
- // List from unified config
465
- const unifiedConfig = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
466
- const apis = Object.keys(unifiedConfig.profiles);
467
- if (apis.length === 0) {
468
- console.log((0, ui_1.warn)('No API profiles configured'));
469
- console.log('');
470
- console.log('To create an API profile:');
471
- console.log(` ${(0, ui_1.color)('ccs api create', 'command')}`);
472
- console.log('');
473
- return;
474
- }
475
- // Build table data with status indicators
476
- const rows = apis.map((name) => {
477
- const status = isApiConfigured(name) ? (0, ui_1.color)('[OK]', 'success') : (0, ui_1.color)('[!]', 'warning');
478
- return [name, 'config.yaml', status];
479
- });
480
- // Print table
481
- console.log((0, ui_1.table)(rows, {
482
- head: ['API', 'Config', 'Status'],
483
- colWidths: [15, 20, 10],
484
- }));
485
- console.log('');
486
- // Show CLIProxy variants if any
487
- const variants = Object.keys(unifiedConfig.cliproxy?.variants || {});
488
- if (variants.length > 0) {
489
- console.log((0, ui_1.subheader)('CLIProxy Variants'));
490
- const cliproxyRows = variants.map((name) => {
491
- const variant = unifiedConfig.cliproxy?.variants[name];
492
- return [name, variant?.provider || 'unknown', variant?.settings || '-'];
493
- });
494
- console.log((0, ui_1.table)(cliproxyRows, {
495
- head: ['Variant', 'Provider', 'Settings'],
496
- colWidths: [15, 15, 30],
497
- }));
498
- console.log('');
499
- }
500
- console.log((0, ui_1.dim)(`Total: ${apis.length} API profile(s)`));
501
- console.log('');
502
- return;
503
- }
504
- // Legacy: list from config.json
505
- const config = (0, config_manager_1.loadConfig)();
506
- const apis = Object.keys(config.profiles);
507
- if (apis.length === 0) {
508
- console.log((0, ui_1.warn)('No API profiles configured'));
509
- console.log('');
510
- console.log('To create an API profile:');
511
- console.log(` ${(0, ui_1.color)('ccs api create', 'command')}`);
512
- console.log('');
513
- return;
514
- }
515
- // Build table data with status indicators
516
- const rows = apis.map((name) => {
517
- const settingsPath = config.profiles[name];
518
- const status = isApiConfigured(name) ? (0, ui_1.color)('[OK]', 'success') : (0, ui_1.color)('[!]', 'warning');
519
- return [name, settingsPath, status];
520
- });
521
- // Print table
522
- console.log((0, ui_1.table)(rows, {
523
- head: ['API', 'Settings File', 'Status'],
524
- colWidths: [15, 35, 10],
525
- }));
188
+ const { profiles, variants } = (0, services_1.listApiProfiles)();
189
+ if (profiles.length === 0) {
190
+ console.log((0, ui_1.warn)('No API profiles configured'));
526
191
  console.log('');
527
- // Show CLIProxy variants if any
528
- if (config.cliproxy && Object.keys(config.cliproxy).length > 0) {
529
- console.log((0, ui_1.subheader)('CLIProxy Variants'));
530
- const cliproxyRows = Object.entries(config.cliproxy).map(([name, v]) => {
531
- const variant = v;
532
- return [name, variant.provider, variant.settings];
533
- });
534
- console.log((0, ui_1.table)(cliproxyRows, {
535
- head: ['Variant', 'Provider', 'Settings'],
536
- colWidths: [15, 15, 30],
537
- }));
538
- console.log('');
539
- }
540
- console.log((0, ui_1.dim)(`Total: ${apis.length} API profile(s)`));
192
+ console.log('To create an API profile:');
193
+ console.log(` ${(0, ui_1.color)('ccs api create', 'command')}`);
541
194
  console.log('');
195
+ return;
542
196
  }
543
- catch (error) {
544
- console.log((0, ui_1.fail)(`Failed to list API profiles: ${error.message}`));
545
- process.exit(1);
197
+ // Build table data
198
+ const rows = profiles.map((p) => {
199
+ const status = p.isConfigured ? (0, ui_1.color)('[OK]', 'success') : (0, ui_1.color)('[!]', 'warning');
200
+ return [p.name, p.settingsPath, status];
201
+ });
202
+ const colWidths = (0, services_1.isUsingUnifiedConfig)() ? [15, 20, 10] : [15, 35, 10];
203
+ console.log((0, ui_1.table)(rows, {
204
+ head: ['API', (0, services_1.isUsingUnifiedConfig)() ? 'Config' : 'Settings File', 'Status'],
205
+ colWidths,
206
+ }));
207
+ console.log('');
208
+ // Show CLIProxy variants if any
209
+ if (variants.length > 0) {
210
+ console.log((0, ui_1.subheader)('CLIProxy Variants'));
211
+ const cliproxyRows = variants.map((v) => [v.name, v.provider, v.settings]);
212
+ console.log((0, ui_1.table)(cliproxyRows, {
213
+ head: ['Variant', 'Provider', 'Settings'],
214
+ colWidths: [15, 15, 30],
215
+ }));
216
+ console.log('');
546
217
  }
218
+ console.log((0, ui_1.dim)(`Total: ${profiles.length} API profile(s)`));
219
+ console.log('');
547
220
  }
548
- /**
549
- * Handle 'ccs api remove' command
550
- */
221
+ /** Handle 'ccs api remove' command */
551
222
  async function handleRemove(args) {
552
223
  await (0, ui_1.initUI)();
553
224
  const parsedArgs = parseArgs(args);
554
- // Get available APIs based on config mode
555
- let apis;
556
- if (isUnifiedMode()) {
557
- const unifiedConfig = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
558
- apis = Object.keys(unifiedConfig.profiles);
559
- }
560
- else {
561
- const config = (0, config_manager_1.loadConfig)();
562
- apis = Object.keys(config.profiles);
563
- }
225
+ const apis = (0, services_1.getApiProfileNames)();
564
226
  if (apis.length === 0) {
565
227
  console.log((0, ui_1.warn)('No API profiles to remove'));
566
228
  process.exit(0);
@@ -593,7 +255,7 @@ async function handleRemove(args) {
593
255
  // Confirm deletion
594
256
  console.log('');
595
257
  console.log(`API '${(0, ui_1.color)(name, 'command')}' will be removed.`);
596
- if (isUnifiedMode()) {
258
+ if ((0, services_1.isUsingUnifiedConfig)()) {
597
259
  console.log(' Config: ~/.ccs/config.yaml');
598
260
  console.log(' Secrets: ~/.ccs/secrets.yaml');
599
261
  }
@@ -607,36 +269,15 @@ async function handleRemove(args) {
607
269
  console.log((0, ui_1.info)('Cancelled'));
608
270
  process.exit(0);
609
271
  }
610
- try {
611
- if (isUnifiedMode()) {
612
- // Remove from unified config
613
- removeApiProfileUnified(name);
614
- }
615
- else {
616
- // Remove from legacy config.json
617
- const config = (0, config_manager_1.loadConfig)();
618
- delete config.profiles[name];
619
- const configPath = (0, config_manager_1.getConfigPath)();
620
- const tempPath = configPath + '.tmp';
621
- fs.writeFileSync(tempPath, JSON.stringify(config, null, 2) + '\n', 'utf8');
622
- fs.renameSync(tempPath, configPath);
623
- // Remove settings file if it exists
624
- const expandedPath = path.join((0, config_manager_1.getCcsDir)(), `${name}.settings.json`);
625
- if (fs.existsSync(expandedPath)) {
626
- fs.unlinkSync(expandedPath);
627
- }
628
- }
629
- console.log((0, ui_1.ok)(`API profile removed: ${name}`));
630
- console.log('');
631
- }
632
- catch (error) {
633
- console.log((0, ui_1.fail)(`Failed to remove API profile: ${error.message}`));
272
+ const result = (0, services_1.removeApiProfile)(name);
273
+ if (!result.success) {
274
+ console.log((0, ui_1.fail)(`Failed to remove API profile: ${result.error}`));
634
275
  process.exit(1);
635
276
  }
277
+ console.log((0, ui_1.ok)(`API profile removed: ${name}`));
278
+ console.log('');
636
279
  }
637
- /**
638
- * Show help for api commands
639
- */
280
+ /** Show help for api commands */
640
281
  async function showHelp() {
641
282
  await (0, ui_1.initUI)();
642
283
  console.log((0, ui_1.header)('CCS API Management'));
@@ -670,9 +311,7 @@ async function showHelp() {
670
311
  console.log(` ${(0, ui_1.color)('ccs api list', 'command')}`);
671
312
  console.log('');
672
313
  }
673
- /**
674
- * Main api command router
675
- */
314
+ /** Main api command router */
676
315
  async function handleApiCommand(args) {
677
316
  const command = args[0];
678
317
  if (!command || command === '--help' || command === '-h' || command === 'help') {