@kaitranntt/ccs 7.50.0 → 7.51.0-dev.10

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 (336) hide show
  1. package/README.md +123 -4
  2. package/config/base-iflow.settings.json +4 -4
  3. package/dist/api/services/index.d.ts +2 -2
  4. package/dist/api/services/index.d.ts.map +1 -1
  5. package/dist/api/services/index.js +2 -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 +13 -0
  9. package/dist/api/services/profile-reader.js.map +1 -1
  10. package/dist/api/services/profile-types.d.ts +9 -0
  11. package/dist/api/services/profile-types.d.ts.map +1 -1
  12. package/dist/api/services/profile-writer.d.ts +8 -2
  13. package/dist/api/services/profile-writer.d.ts.map +1 -1
  14. package/dist/api/services/profile-writer.js +116 -8
  15. package/dist/api/services/profile-writer.js.map +1 -1
  16. package/dist/auth/account-context.d.ts +11 -0
  17. package/dist/auth/account-context.d.ts.map +1 -1
  18. package/dist/auth/account-context.js +42 -8
  19. package/dist/auth/account-context.js.map +1 -1
  20. package/dist/auth/auth-commands.d.ts.map +1 -1
  21. package/dist/auth/auth-commands.js +9 -0
  22. package/dist/auth/auth-commands.js.map +1 -1
  23. package/dist/auth/commands/create-command-env.d.ts +3 -0
  24. package/dist/auth/commands/create-command-env.d.ts.map +1 -0
  25. package/dist/auth/commands/create-command-env.js +55 -0
  26. package/dist/auth/commands/create-command-env.js.map +1 -0
  27. package/dist/auth/commands/create-command.d.ts.map +1 -1
  28. package/dist/auth/commands/create-command.js +136 -30
  29. package/dist/auth/commands/create-command.js.map +1 -1
  30. package/dist/auth/commands/list-command.d.ts.map +1 -1
  31. package/dist/auth/commands/list-command.js +5 -1
  32. package/dist/auth/commands/list-command.js.map +1 -1
  33. package/dist/auth/commands/show-command.d.ts.map +1 -1
  34. package/dist/auth/commands/show-command.js +1 -0
  35. package/dist/auth/commands/show-command.js.map +1 -1
  36. package/dist/auth/commands/types.d.ts +3 -0
  37. package/dist/auth/commands/types.d.ts.map +1 -1
  38. package/dist/auth/commands/types.js +24 -0
  39. package/dist/auth/commands/types.js.map +1 -1
  40. package/dist/auth/profile-continuity-inheritance.d.ts +20 -0
  41. package/dist/auth/profile-continuity-inheritance.d.ts.map +1 -0
  42. package/dist/auth/profile-continuity-inheritance.js +139 -0
  43. package/dist/auth/profile-continuity-inheritance.js.map +1 -0
  44. package/dist/auth/profile-detector.d.ts.map +1 -1
  45. package/dist/auth/profile-detector.js +8 -0
  46. package/dist/auth/profile-detector.js.map +1 -1
  47. package/dist/auth/profile-registry.d.ts +2 -0
  48. package/dist/auth/profile-registry.d.ts.map +1 -1
  49. package/dist/auth/profile-registry.js +45 -7
  50. package/dist/auth/profile-registry.js.map +1 -1
  51. package/dist/ccs.js +195 -7
  52. package/dist/ccs.js.map +1 -1
  53. package/dist/cliproxy/account-safety.d.ts.map +1 -1
  54. package/dist/cliproxy/account-safety.js +4 -0
  55. package/dist/cliproxy/account-safety.js.map +1 -1
  56. package/dist/cliproxy/antigravity-responsibility.d.ts +36 -0
  57. package/dist/cliproxy/antigravity-responsibility.d.ts.map +1 -0
  58. package/dist/cliproxy/antigravity-responsibility.js +171 -0
  59. package/dist/cliproxy/antigravity-responsibility.js.map +1 -0
  60. package/dist/cliproxy/auth/auth-types.d.ts +2 -0
  61. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
  62. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  63. package/dist/cliproxy/auth/oauth-handler.js +18 -0
  64. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  65. package/dist/cliproxy/catalog-cache.d.ts.map +1 -1
  66. package/dist/cliproxy/catalog-cache.js +10 -3
  67. package/dist/cliproxy/catalog-cache.js.map +1 -1
  68. package/dist/cliproxy/composite-validator.d.ts.map +1 -1
  69. package/dist/cliproxy/composite-validator.js +9 -0
  70. package/dist/cliproxy/composite-validator.js.map +1 -1
  71. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  72. package/dist/cliproxy/config/env-builder.js +126 -8
  73. package/dist/cliproxy/config/env-builder.js.map +1 -1
  74. package/dist/cliproxy/config/generator.d.ts +4 -1
  75. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  76. package/dist/cliproxy/config/generator.js +29 -8
  77. package/dist/cliproxy/config/generator.js.map +1 -1
  78. package/dist/cliproxy/executor/env-resolver.d.ts +2 -0
  79. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  80. package/dist/cliproxy/executor/env-resolver.js +2 -1
  81. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  82. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  83. package/dist/cliproxy/executor/index.js +45 -0
  84. package/dist/cliproxy/executor/index.js.map +1 -1
  85. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  86. package/dist/cliproxy/model-catalog.js +3 -39
  87. package/dist/cliproxy/model-catalog.js.map +1 -1
  88. package/dist/cliproxy/model-config.d.ts.map +1 -1
  89. package/dist/cliproxy/model-config.js +12 -11
  90. package/dist/cliproxy/model-config.js.map +1 -1
  91. package/dist/cliproxy/model-id-normalizer.d.ts +30 -2
  92. package/dist/cliproxy/model-id-normalizer.d.ts.map +1 -1
  93. package/dist/cliproxy/model-id-normalizer.js +88 -7
  94. package/dist/cliproxy/model-id-normalizer.js.map +1 -1
  95. package/dist/cliproxy/services/variant-config-adapter.d.ts +4 -35
  96. package/dist/cliproxy/services/variant-config-adapter.d.ts.map +1 -1
  97. package/dist/cliproxy/services/variant-config-adapter.js +11 -34
  98. package/dist/cliproxy/services/variant-config-adapter.js.map +1 -1
  99. package/dist/cliproxy/services/variant-service.d.ts +5 -1
  100. package/dist/cliproxy/services/variant-service.d.ts.map +1 -1
  101. package/dist/cliproxy/services/variant-service.js +31 -9
  102. package/dist/cliproxy/services/variant-service.js.map +1 -1
  103. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
  104. package/dist/cliproxy/services/variant-settings.js +5 -3
  105. package/dist/cliproxy/services/variant-settings.js.map +1 -1
  106. package/dist/cliproxy/stats-fetcher.d.ts +41 -0
  107. package/dist/cliproxy/stats-fetcher.d.ts.map +1 -1
  108. package/dist/cliproxy/stats-fetcher.js +32 -1
  109. package/dist/cliproxy/stats-fetcher.js.map +1 -1
  110. package/dist/cliproxy/sync/profile-mapper.d.ts.map +1 -1
  111. package/dist/cliproxy/sync/profile-mapper.js +14 -2
  112. package/dist/cliproxy/sync/profile-mapper.js.map +1 -1
  113. package/dist/cliproxy/tool-sanitization-proxy.d.ts.map +1 -1
  114. package/dist/cliproxy/tool-sanitization-proxy.js +6 -0
  115. package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -1
  116. package/dist/cliproxy/types.d.ts +2 -0
  117. package/dist/cliproxy/types.d.ts.map +1 -1
  118. package/dist/commands/api-command.d.ts +2 -0
  119. package/dist/commands/api-command.d.ts.map +1 -1
  120. package/dist/commands/api-command.js +45 -10
  121. package/dist/commands/api-command.js.map +1 -1
  122. package/dist/commands/cliproxy/auth-subcommand.d.ts.map +1 -1
  123. package/dist/commands/cliproxy/auth-subcommand.js +5 -2
  124. package/dist/commands/cliproxy/auth-subcommand.js.map +1 -1
  125. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  126. package/dist/commands/cliproxy/help-subcommand.js +1 -0
  127. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  128. package/dist/commands/cliproxy/variant-subcommand.d.ts +15 -0
  129. package/dist/commands/cliproxy/variant-subcommand.d.ts.map +1 -1
  130. package/dist/commands/cliproxy/variant-subcommand.js +144 -15
  131. package/dist/commands/cliproxy/variant-subcommand.js.map +1 -1
  132. package/dist/commands/config-command.js +2 -2
  133. package/dist/commands/config-command.js.map +1 -1
  134. package/dist/commands/help-command.d.ts.map +1 -1
  135. package/dist/commands/help-command.js +38 -2
  136. package/dist/commands/help-command.js.map +1 -1
  137. package/dist/config/migration-manager.d.ts.map +1 -1
  138. package/dist/config/migration-manager.js +19 -0
  139. package/dist/config/migration-manager.js.map +1 -1
  140. package/dist/config/unified-config-loader.d.ts +16 -1
  141. package/dist/config/unified-config-loader.d.ts.map +1 -1
  142. package/dist/config/unified-config-loader.js +188 -59
  143. package/dist/config/unified-config-loader.js.map +1 -1
  144. package/dist/config/unified-config-types.d.ts +26 -0
  145. package/dist/config/unified-config-types.d.ts.map +1 -1
  146. package/dist/config/unified-config-types.js +8 -1
  147. package/dist/config/unified-config-types.js.map +1 -1
  148. package/dist/copilot/copilot-executor.d.ts +2 -2
  149. package/dist/copilot/copilot-executor.d.ts.map +1 -1
  150. package/dist/copilot/copilot-executor.js +4 -3
  151. package/dist/copilot/copilot-executor.js.map +1 -1
  152. package/dist/delegation/headless-executor.d.ts.map +1 -1
  153. package/dist/delegation/headless-executor.js +4 -1
  154. package/dist/delegation/headless-executor.js.map +1 -1
  155. package/dist/management/instance-manager.d.ts +1 -0
  156. package/dist/management/instance-manager.d.ts.map +1 -1
  157. package/dist/management/instance-manager.js +14 -8
  158. package/dist/management/instance-manager.js.map +1 -1
  159. package/dist/management/profile-context-sync-lock.d.ts +14 -0
  160. package/dist/management/profile-context-sync-lock.d.ts.map +1 -0
  161. package/dist/management/profile-context-sync-lock.js +174 -0
  162. package/dist/management/profile-context-sync-lock.js.map +1 -0
  163. package/dist/management/shared-manager.d.ts +18 -0
  164. package/dist/management/shared-manager.d.ts.map +1 -1
  165. package/dist/management/shared-manager.js +145 -6
  166. package/dist/management/shared-manager.js.map +1 -1
  167. package/dist/targets/droid-adapter.d.ts +2 -4
  168. package/dist/targets/droid-adapter.d.ts.map +1 -1
  169. package/dist/targets/droid-adapter.js +20 -10
  170. package/dist/targets/droid-adapter.js.map +1 -1
  171. package/dist/targets/droid-command-router.d.ts +26 -0
  172. package/dist/targets/droid-command-router.d.ts.map +1 -0
  173. package/dist/targets/droid-command-router.js +240 -0
  174. package/dist/targets/droid-command-router.js.map +1 -0
  175. package/dist/targets/droid-config-manager.d.ts +9 -1
  176. package/dist/targets/droid-config-manager.d.ts.map +1 -1
  177. package/dist/targets/droid-config-manager.js +134 -6
  178. package/dist/targets/droid-config-manager.js.map +1 -1
  179. package/dist/targets/droid-provider.d.ts +40 -0
  180. package/dist/targets/droid-provider.d.ts.map +1 -0
  181. package/dist/targets/droid-provider.js +140 -0
  182. package/dist/targets/droid-provider.js.map +1 -0
  183. package/dist/targets/droid-reasoning-runtime.d.ts +14 -0
  184. package/dist/targets/droid-reasoning-runtime.d.ts.map +1 -0
  185. package/dist/targets/droid-reasoning-runtime.js +42 -0
  186. package/dist/targets/droid-reasoning-runtime.js.map +1 -0
  187. package/dist/targets/index.d.ts +2 -0
  188. package/dist/targets/index.d.ts.map +1 -1
  189. package/dist/targets/index.js +4 -1
  190. package/dist/targets/index.js.map +1 -1
  191. package/dist/targets/target-adapter.d.ts +6 -0
  192. package/dist/targets/target-adapter.d.ts.map +1 -1
  193. package/dist/targets/target-resolver.d.ts.map +1 -1
  194. package/dist/targets/target-resolver.js +6 -3
  195. package/dist/targets/target-resolver.js.map +1 -1
  196. package/dist/types/config.d.ts +9 -0
  197. package/dist/types/config.d.ts.map +1 -1
  198. package/dist/types/config.js.map +1 -1
  199. package/dist/ui/assets/accounts-C0a1t7jn.js +1 -0
  200. package/dist/ui/assets/{alert-dialog-YcmZPFim.js → alert-dialog-CdeUwye7.js} +1 -1
  201. package/dist/ui/assets/api-C9zwFFut.js +1 -0
  202. package/dist/ui/assets/auth-section-DN4BD8GL.js +1 -0
  203. package/dist/ui/assets/backups-section-CybLESWH.js +1 -0
  204. package/dist/ui/assets/{checkbox-Cfg9kbJX.js → checkbox-vEe6qcYo.js} +1 -1
  205. package/dist/ui/assets/cliproxy-BqfDDSqL.js +3 -0
  206. package/dist/ui/assets/cliproxy-control-panel-Bge72LT-.js +1 -0
  207. package/dist/ui/assets/{confirm-dialog-CRcV2Yc4.js → confirm-dialog-OyJIM_hE.js} +1 -1
  208. package/dist/ui/assets/copilot-CkAJrz8o.js +3 -0
  209. package/dist/ui/assets/cursor-C9LZa_BA.js +1 -0
  210. package/dist/ui/assets/droid-QWGtb0RV.js +2 -0
  211. package/dist/ui/assets/{form-utils-C-pVd1--.js → form-utils-Cn_Uld6y.js} +1 -1
  212. package/dist/ui/assets/globalenv-section-DOFqIs-8.js +1 -0
  213. package/dist/ui/assets/health-C3ElQ1Lv.js +1 -0
  214. package/dist/ui/assets/icons-kPbuhVdj.js +1 -0
  215. package/dist/ui/assets/index-3GEclgP5.js +1 -0
  216. package/dist/ui/assets/index-BAKFUe-l.js +1 -0
  217. package/dist/ui/assets/index-Bz6l7LGz.js +47 -0
  218. package/dist/ui/assets/index-CMCDJeIA.js +1 -0
  219. package/dist/ui/assets/index-Ck953xpy.css +1 -0
  220. package/dist/ui/assets/index-eLGkeVzr.js +1 -0
  221. package/dist/ui/assets/proxy-status-widget-srJDTpWy.js +1 -0
  222. package/dist/ui/assets/{radix-ui-DKgfU5rd.js → radix-ui-BR1vy4kf.js} +3 -3
  223. package/dist/ui/assets/{separator-CdOKc0gJ.js → separator-CmlWHN0k.js} +1 -1
  224. package/dist/ui/assets/shared-COklsZr3.js +8 -0
  225. package/dist/ui/assets/{switch-B2ALi24E.js → switch-Cv3ybiIH.js} +1 -1
  226. package/dist/ui/assets/{tanstack-5ndrQy-j.js → tanstack-e99Cjjy2.js} +1 -1
  227. package/dist/ui/assets/updates-CGOjPqS1.js +1 -0
  228. package/dist/ui/index.html +6 -6
  229. package/dist/utils/shell-executor.d.ts +5 -0
  230. package/dist/utils/shell-executor.d.ts.map +1 -1
  231. package/dist/utils/shell-executor.js +22 -3
  232. package/dist/utils/shell-executor.js.map +1 -1
  233. package/dist/web-server/index.d.ts.map +1 -1
  234. package/dist/web-server/index.js +2 -0
  235. package/dist/web-server/index.js.map +1 -1
  236. package/dist/web-server/model-pricing.d.ts.map +1 -1
  237. package/dist/web-server/model-pricing.js +163 -22
  238. package/dist/web-server/model-pricing.js.map +1 -1
  239. package/dist/web-server/routes/account-route-helpers.d.ts +20 -0
  240. package/dist/web-server/routes/account-route-helpers.d.ts.map +1 -0
  241. package/dist/web-server/routes/account-route-helpers.js +34 -0
  242. package/dist/web-server/routes/account-route-helpers.js.map +1 -0
  243. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  244. package/dist/web-server/routes/account-routes.js +160 -27
  245. package/dist/web-server/routes/account-routes.js.map +1 -1
  246. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  247. package/dist/web-server/routes/cliproxy-auth-routes.js +58 -24
  248. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  249. package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
  250. package/dist/web-server/routes/cliproxy-stats-routes.js +27 -3
  251. package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
  252. package/dist/web-server/routes/config-routes.d.ts.map +1 -1
  253. package/dist/web-server/routes/config-routes.js +73 -0
  254. package/dist/web-server/routes/config-routes.js.map +1 -1
  255. package/dist/web-server/routes/droid-routes.d.ts +3 -0
  256. package/dist/web-server/routes/droid-routes.d.ts.map +1 -0
  257. package/dist/web-server/routes/droid-routes.js +61 -0
  258. package/dist/web-server/routes/droid-routes.js.map +1 -0
  259. package/dist/web-server/routes/index.d.ts.map +1 -1
  260. package/dist/web-server/routes/index.js +3 -0
  261. package/dist/web-server/routes/index.js.map +1 -1
  262. package/dist/web-server/routes/profile-routes.d.ts +2 -0
  263. package/dist/web-server/routes/profile-routes.d.ts.map +1 -1
  264. package/dist/web-server/routes/profile-routes.js +93 -8
  265. package/dist/web-server/routes/profile-routes.js.map +1 -1
  266. package/dist/web-server/routes/route-helpers.d.ts +2 -1
  267. package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
  268. package/dist/web-server/routes/route-helpers.js +75 -1
  269. package/dist/web-server/routes/route-helpers.js.map +1 -1
  270. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  271. package/dist/web-server/routes/settings-routes.js +247 -40
  272. package/dist/web-server/routes/settings-routes.js.map +1 -1
  273. package/dist/web-server/routes/variant-routes.d.ts +2 -0
  274. package/dist/web-server/routes/variant-routes.d.ts.map +1 -1
  275. package/dist/web-server/routes/variant-routes.js +50 -6
  276. package/dist/web-server/routes/variant-routes.js.map +1 -1
  277. package/dist/web-server/services/compatible-cli-docs-registry.d.ts +23 -0
  278. package/dist/web-server/services/compatible-cli-docs-registry.d.ts.map +1 -0
  279. package/dist/web-server/services/compatible-cli-docs-registry.js +81 -0
  280. package/dist/web-server/services/compatible-cli-docs-registry.js.map +1 -0
  281. package/dist/web-server/services/compatible-cli-json-file-service.d.ts +41 -0
  282. package/dist/web-server/services/compatible-cli-json-file-service.d.ts.map +1 -0
  283. package/dist/web-server/services/compatible-cli-json-file-service.js +205 -0
  284. package/dist/web-server/services/compatible-cli-json-file-service.js.map +1 -0
  285. package/dist/web-server/services/compatible-cli-types.d.ts +82 -0
  286. package/dist/web-server/services/compatible-cli-types.d.ts.map +1 -0
  287. package/dist/web-server/services/compatible-cli-types.js +3 -0
  288. package/dist/web-server/services/compatible-cli-types.js.map +1 -0
  289. package/dist/web-server/services/droid-dashboard-service.d.ts +29 -0
  290. package/dist/web-server/services/droid-dashboard-service.d.ts.map +1 -0
  291. package/dist/web-server/services/droid-dashboard-service.js +238 -0
  292. package/dist/web-server/services/droid-dashboard-service.js.map +1 -0
  293. package/dist/web-server/shared-routes.d.ts.map +1 -1
  294. package/dist/web-server/shared-routes.js +350 -52
  295. package/dist/web-server/shared-routes.js.map +1 -1
  296. package/dist/web-server/usage/aggregator.d.ts +9 -0
  297. package/dist/web-server/usage/aggregator.d.ts.map +1 -1
  298. package/dist/web-server/usage/aggregator.js +63 -7
  299. package/dist/web-server/usage/aggregator.js.map +1 -1
  300. package/dist/web-server/usage/cliproxy-usage-syncer.d.ts +34 -0
  301. package/dist/web-server/usage/cliproxy-usage-syncer.d.ts.map +1 -0
  302. package/dist/web-server/usage/cliproxy-usage-syncer.js +155 -0
  303. package/dist/web-server/usage/cliproxy-usage-syncer.js.map +1 -0
  304. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts +26 -0
  305. package/dist/web-server/usage/cliproxy-usage-transformer.d.ts.map +1 -0
  306. package/dist/web-server/usage/cliproxy-usage-transformer.js +141 -0
  307. package/dist/web-server/usage/cliproxy-usage-transformer.js.map +1 -0
  308. package/dist/web-server/usage/disk-cache.d.ts.map +1 -1
  309. package/dist/web-server/usage/disk-cache.js +2 -1
  310. package/dist/web-server/usage/disk-cache.js.map +1 -1
  311. package/dist/web-server/usage/handlers.d.ts +1 -1
  312. package/dist/web-server/usage/handlers.d.ts.map +1 -1
  313. package/dist/web-server/usage/handlers.js +8 -3
  314. package/dist/web-server/usage/handlers.js.map +1 -1
  315. package/lib/hooks/websearch-transformer.cjs +78 -52
  316. package/package.json +4 -2
  317. package/scripts/maintainability-check.js +163 -0
  318. package/dist/ui/assets/accounts-DIqClJ7z.js +0 -1
  319. package/dist/ui/assets/api-BWyCgbMh.js +0 -1
  320. package/dist/ui/assets/auth-section-Amm4rwiS.js +0 -1
  321. package/dist/ui/assets/backups-section-DmAsqMfq.js +0 -1
  322. package/dist/ui/assets/cliproxy-B-q7RjS2.js +0 -3
  323. package/dist/ui/assets/cliproxy-control-panel-BliRTkbb.js +0 -1
  324. package/dist/ui/assets/copilot-EarFqUyJ.js +0 -3
  325. package/dist/ui/assets/cursor-Dbe4Wtw2.js +0 -1
  326. package/dist/ui/assets/globalenv-section-CBp73q9k.js +0 -1
  327. package/dist/ui/assets/health-Cvr359ff.js +0 -1
  328. package/dist/ui/assets/icons-DGASzt3M.js +0 -1
  329. package/dist/ui/assets/index-8n-yIlea.js +0 -47
  330. package/dist/ui/assets/index-B5aulDs4.js +0 -1
  331. package/dist/ui/assets/index-BBCDm6dS.css +0 -1
  332. package/dist/ui/assets/index-CLBNUja8.js +0 -1
  333. package/dist/ui/assets/index-Cp8K9_TQ.js +0 -1
  334. package/dist/ui/assets/index-DTDftvd-.js +0 -1
  335. package/dist/ui/assets/proxy-status-widget-C0G0aOCW.js +0 -1
  336. package/dist/ui/assets/shared-zsUXmES2.js +0 -1
package/README.md CHANGED
@@ -53,16 +53,21 @@ ccs config
53
53
  # Opens http://localhost:3000
54
54
  ```
55
55
 
56
+ Dashboard updates hub: `http://localhost:3000/updates`
57
+
56
58
  Want to run the dashboard in Docker? See `docker/README.md`.
57
59
 
58
60
  ### 3. Configure Your Accounts
59
61
 
60
62
  The dashboard provides visual management for all account types:
61
63
 
62
- - **Claude Accounts**: Create isolated instances (work, personal, client)
64
+ - **Claude Accounts**: Isolation-first by default (work, personal, client), with explicit shared context opt-in
63
65
  - **OAuth Providers**: One-click auth for Gemini, Codex, Antigravity, Kiro, Copilot
64
66
  - **API Profiles**: Configure GLM, Kimi with your keys
67
+ - **Factory Droid**: Track Droid install location and BYOK settings health
68
+ - **Updates Center**: Track support rollouts (Droid target, CLIProxy provider changes, WebSearch integrations)
65
69
  - **Health Monitor**: Real-time status across all profiles
70
+ - **Language Switcher**: Toggle dashboard locale between English, Simplified Chinese, and Vietnamese
66
71
 
67
72
  **Analytics Dashboard**
68
73
 
@@ -154,6 +159,56 @@ ccsd glm
154
159
 
155
160
  Need additional alias names? Set `CCS_DROID_ALIASES` as a comma-separated list (for example: `CCS_DROID_ALIASES=ccs-droid,mydroid`).
156
161
 
162
+ For Factory BYOK compatibility, CCS also stores a per-profile Droid provider hint
163
+ (`CCS_DROID_PROVIDER`) using one of:
164
+ `anthropic`, `openai`, or `generic-chat-completion-api`.
165
+ If the hint is missing, CCS resolves provider from base URL/model at runtime.
166
+
167
+ CCS also persists Droid's active model selector in `~/.factory/settings.json`
168
+ (`model: custom:<alias>`). This avoids passing `-m` argv in interactive mode,
169
+ which Droid treats as queued prompt text.
170
+
171
+ CCS supports structural Droid command passthrough after profile selection:
172
+
173
+ ```bash
174
+ ccsd codex exec --skip-permissions-unsafe "fix failing tests"
175
+ ccsd codex --skip-permissions-unsafe "fix failing tests" # auto-routed to: droid exec ...
176
+ ccsd codex -m custom:gpt-5.3-codex "fix failing tests" # short exec flags auto-routed too
177
+ ```
178
+
179
+ If you pass exec-only flags without a prompt (for example `--skip-permissions-unsafe`),
180
+ Droid `exec` will return its native "No prompt provided" usage guidance.
181
+
182
+ If multiple reasoning flags are provided in Droid exec mode, CCS keeps the first
183
+ flag and warns about duplicates.
184
+
185
+ Dashboard parity: `ccs config` -> `Factory Droid`
186
+
187
+ ### Per-Profile Target Defaults
188
+
189
+ You can pin a default target (`claude` or `droid`) per profile:
190
+
191
+ ```bash
192
+ # API profile defaults to Droid
193
+ ccs api create myglm --preset glm --target droid
194
+
195
+ # CLIProxy variant defaults to Droid
196
+ ccs cliproxy create mycodex --provider codex --target droid
197
+ ```
198
+
199
+ Built-in CLIProxy providers also work with Droid alias/target override:
200
+
201
+ ```bash
202
+ ccsd codex
203
+ ccsd agy
204
+ ccs codex --target droid
205
+ ccsd codex exec --auto high "triage this bug report"
206
+ ```
207
+
208
+ Dashboard parity:
209
+ - `ccs config` -> `API Profiles` -> set **Default Target**
210
+ - `ccs config` -> `CLIProxy` -> create/edit variant -> set **Default Target**
211
+
157
212
  ### Kiro Auth Methods
158
213
 
159
214
  `ccs kiro --auth` defaults to AWS Builder ID Device OAuth (best support for AWS org accounts).
@@ -221,17 +276,80 @@ ccs work "implement feature" # Terminal 1
221
276
  ccs "review code" # Terminal 2 (personal account)
222
277
  ```
223
278
 
224
- Need continuity between two accounts for the same project? Opt in to shared context:
279
+ #### Account Context Modes (Isolation-First)
280
+
281
+ Account profiles are isolated by default.
282
+
283
+ | Mode | Default | Requirements |
284
+ |------|---------|--------------|
285
+ | `isolated` | Yes | No `context_group` required |
286
+ | `shared` | No (explicit opt-in) | Valid non-empty `context_group` |
287
+
288
+ Shared mode continuity depth:
289
+
290
+ - `standard` (default): shares project workspace context only
291
+ - `deeper` (advanced opt-in): additionally syncs `session-env`, `file-history`, `shell-snapshots`, `todos`
292
+
293
+ Opt in to shared context when needed:
225
294
 
226
295
  ```bash
227
296
  # Share context with default group
228
297
  ccs auth create backup --share-context
229
298
 
230
- # Or isolate by named group (only accounts in this group share context)
299
+ # Share context only within named group
231
300
  ccs auth create backup2 --context-group sprint-a
301
+
302
+ # Advanced deeper continuity mode (requires shared mode)
303
+ ccs auth create backup3 --context-group sprint-a --deeper-continuity
304
+ ```
305
+
306
+ Update existing accounts without recreating login:
307
+
308
+ 1. Run `ccs config`
309
+ 2. Open `Accounts`
310
+ 3. Click the pencil icon in Actions and set `isolated` or `shared` mode + continuity depth
311
+
312
+ Shared mode metadata in `~/.ccs/config.yaml`:
313
+
314
+ ```yaml
315
+ accounts:
316
+ work:
317
+ created: "2026-02-24T00:00:00.000Z"
318
+ last_used: null
319
+ context_mode: "shared"
320
+ context_group: "team-alpha"
321
+ continuity_mode: "standard"
232
322
  ```
233
323
 
234
- Isolation remains the default. Shared context only links project workspace data; credentials stay per-account.
324
+ `context_group` rules:
325
+
326
+ - lowercase letters, numbers, `_`, `-`
327
+ - must start with a letter
328
+ - max length `64`
329
+ - non-empty after normalization
330
+ - normalized by trim + lowercase + whitespace collapse (`" Team Alpha "` -> `"team-alpha"`)
331
+
332
+ Shared context with `standard` depth links project workspace data. `deeper` depth links additional continuity artifacts. Credentials remain isolated per account.
333
+
334
+ #### Cross-Profile Continuity Inheritance (Claude Target)
335
+
336
+ You can map non-account profiles (API, CLIProxy, Copilot, or `default`) to reuse continuity artifacts from an account profile:
337
+
338
+ ```yaml
339
+ continuity:
340
+ inherit_from_account:
341
+ glm: pro
342
+ gemini: pro
343
+ copilot: pro
344
+ ```
345
+
346
+ With this config, `ccs glm`, `ccs gemini`, and `ccs copilot` run with `pro`'s `CLAUDE_CONFIG_DIR` continuity context while keeping each profile's own provider credentials/settings.
347
+
348
+ Alternative path for lower manual switching:
349
+
350
+ - Use CLIProxy Claude pool (`ccs cliproxy auth claude`) and manage pool behavior in `ccs config` -> `CLIProxy Plus`.
351
+
352
+ Technical details: [`docs/session-sharing-technical-analysis.md`](docs/session-sharing-technical-analysis.md)
235
353
 
236
354
  <br>
237
355
 
@@ -412,6 +530,7 @@ See [Remote Proxy documentation](https://docs.ccs.kaitran.ca/features/remote-pro
412
530
  | API Profiles | [docs.ccs.kaitran.ca/providers/api-profiles](https://docs.ccs.kaitran.ca/providers/api-profiles) |
413
531
  | Remote Proxy | [docs.ccs.kaitran.ca/features/remote-proxy](https://docs.ccs.kaitran.ca/features/remote-proxy) |
414
532
  | Cursor IDE (local guide) | [./docs/cursor-integration.md](./docs/cursor-integration.md) |
533
+ | Dashboard i18n (local guide) | [./docs/i18n-dashboard.md](./docs/i18n-dashboard.md) |
415
534
  | CLI Reference | [docs.ccs.kaitran.ca/reference/cli-commands](https://docs.ccs.kaitran.ca/reference/cli-commands) |
416
535
  | Architecture | [docs.ccs.kaitran.ca/reference/architecture](https://docs.ccs.kaitran.ca/reference/architecture) |
417
536
  | Troubleshooting | [docs.ccs.kaitran.ca/reference/troubleshooting](https://docs.ccs.kaitran.ca/reference/troubleshooting) |
@@ -2,9 +2,9 @@
2
2
  "env": {
3
3
  "ANTHROPIC_BASE_URL": "http://127.0.0.1:8317/api/provider/iflow",
4
4
  "ANTHROPIC_AUTH_TOKEN": "ccs-internal-managed",
5
- "ANTHROPIC_MODEL": "deepseek-v3.2",
6
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "kimi-k2-thinking",
7
- "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v3.2",
8
- "ANTHROPIC_DEFAULT_HAIKU_MODEL": "minimax-m2"
5
+ "ANTHROPIC_MODEL": "qwen3-coder-plus",
6
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "qwen3-coder-plus",
7
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "qwen3-coder-plus",
8
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "qwen3-coder-plus"
9
9
  }
10
10
  }
@@ -4,9 +4,9 @@
4
4
  * Barrel export for API-related business logic services.
5
5
  */
6
6
  export { validateApiName, validateUrl, getUrlWarning, sanitizeBaseUrl } from './validation-service';
7
- export { type ModelMapping, type ApiProfileInfo, type CliproxyVariantInfo, type ApiListResult, type CreateApiProfileResult, type RemoveApiProfileResult, } from './profile-types';
7
+ export { type ModelMapping, type ApiProfileInfo, type CliproxyVariantInfo, type ApiListResult, type CreateApiProfileResult, type RemoveApiProfileResult, type UpdateApiProfileTargetResult, } from './profile-types';
8
8
  export { apiProfileExists, isApiProfileConfigured, listApiProfiles, getApiProfileNames, isUsingUnifiedConfig, } from './profile-reader';
9
- export { createApiProfile, removeApiProfile } from './profile-writer';
9
+ export { createApiProfile, removeApiProfile, updateApiProfileTarget } from './profile-writer';
10
10
  export { isOpenRouterUrl, fetchOpenRouterModels, type OpenRouterModel } from './openrouter-catalog';
11
11
  export { pickOpenRouterModel, type OpenRouterSelection } from './openrouter-picker';
12
12
  export { PROVIDER_PRESETS, PRESET_ALIASES, OPENROUTER_BASE_URL, getPresetById, getPresetAliases, getPresetIds, isValidPresetId, type ProviderPreset, type PresetCategory, } from './provider-presets';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGpG,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGpF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGpG,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,GAClC,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG9F,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGpF,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * Barrel export for API-related business logic services.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.isValidPresetId = exports.getPresetIds = exports.getPresetAliases = exports.getPresetById = exports.OPENROUTER_BASE_URL = exports.PRESET_ALIASES = exports.PROVIDER_PRESETS = exports.pickOpenRouterModel = exports.fetchOpenRouterModels = exports.isOpenRouterUrl = exports.removeApiProfile = exports.createApiProfile = exports.isUsingUnifiedConfig = exports.getApiProfileNames = exports.listApiProfiles = exports.isApiProfileConfigured = exports.apiProfileExists = exports.sanitizeBaseUrl = exports.getUrlWarning = exports.validateUrl = exports.validateApiName = void 0;
8
+ exports.isValidPresetId = exports.getPresetIds = exports.getPresetAliases = exports.getPresetById = exports.OPENROUTER_BASE_URL = exports.PRESET_ALIASES = exports.PROVIDER_PRESETS = exports.pickOpenRouterModel = exports.fetchOpenRouterModels = exports.isOpenRouterUrl = exports.updateApiProfileTarget = exports.removeApiProfile = exports.createApiProfile = exports.isUsingUnifiedConfig = exports.getApiProfileNames = exports.listApiProfiles = exports.isApiProfileConfigured = exports.apiProfileExists = exports.sanitizeBaseUrl = exports.getUrlWarning = exports.validateUrl = exports.validateApiName = void 0;
9
9
  // Validation services
10
10
  var validation_service_1 = require("./validation-service");
11
11
  Object.defineProperty(exports, "validateApiName", { enumerable: true, get: function () { return validation_service_1.validateApiName; } });
@@ -23,6 +23,7 @@ Object.defineProperty(exports, "isUsingUnifiedConfig", { enumerable: true, get:
23
23
  var profile_writer_1 = require("./profile-writer");
24
24
  Object.defineProperty(exports, "createApiProfile", { enumerable: true, get: function () { return profile_writer_1.createApiProfile; } });
25
25
  Object.defineProperty(exports, "removeApiProfile", { enumerable: true, get: function () { return profile_writer_1.removeApiProfile; } });
26
+ Object.defineProperty(exports, "updateApiProfileTarget", { enumerable: true, get: function () { return profile_writer_1.updateApiProfileTarget; } });
26
27
  // OpenRouter catalog and picker
27
28
  var openrouter_catalog_1 = require("./openrouter-catalog");
28
29
  Object.defineProperty(exports, "isOpenRouterUrl", { enumerable: true, get: function () { return openrouter_catalog_1.isOpenRouterUrl; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/services/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,sBAAsB;AACtB,2DAAoG;AAA3F,qHAAA,eAAe,OAAA;AAAE,iHAAA,WAAW,OAAA;AAAE,mHAAA,aAAa,OAAA;AAAE,qHAAA,eAAe,OAAA;AAYrE,0BAA0B;AAC1B,mDAM0B;AALxB,kHAAA,gBAAgB,OAAA;AAChB,wHAAA,sBAAsB,OAAA;AACtB,iHAAA,eAAe,OAAA;AACf,oHAAA,kBAAkB,OAAA;AAClB,sHAAA,oBAAoB,OAAA;AAGtB,2BAA2B;AAC3B,mDAAsE;AAA7D,kHAAA,gBAAgB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAE3C,gCAAgC;AAChC,2DAAoG;AAA3F,qHAAA,eAAe,OAAA;AAAE,2HAAA,qBAAqB,OAAA;AAC/C,yDAAoF;AAA3E,wHAAA,mBAAmB,OAAA;AAE5B,2BAA2B;AAC3B,uDAU4B;AAT1B,oHAAA,gBAAgB,OAAA;AAChB,kHAAA,cAAc,OAAA;AACd,uHAAA,mBAAmB,OAAA;AACnB,iHAAA,aAAa,OAAA;AACb,oHAAA,gBAAgB,OAAA;AAChB,gHAAA,YAAY,OAAA;AACZ,mHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/services/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,sBAAsB;AACtB,2DAAoG;AAA3F,qHAAA,eAAe,OAAA;AAAE,iHAAA,WAAW,OAAA;AAAE,mHAAA,aAAa,OAAA;AAAE,qHAAA,eAAe,OAAA;AAarE,0BAA0B;AAC1B,mDAM0B;AALxB,kHAAA,gBAAgB,OAAA;AAChB,wHAAA,sBAAsB,OAAA;AACtB,iHAAA,eAAe,OAAA;AACf,oHAAA,kBAAkB,OAAA;AAClB,sHAAA,oBAAoB,OAAA;AAGtB,2BAA2B;AAC3B,mDAA8F;AAArF,kHAAA,gBAAgB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAAE,wHAAA,sBAAsB,OAAA;AAEnE,gCAAgC;AAChC,2DAAoG;AAA3F,qHAAA,eAAe,OAAA;AAAE,2HAAA,qBAAqB,OAAA;AAC/C,yDAAoF;AAA3E,wHAAA,mBAAmB,OAAA;AAE5B,2BAA2B;AAC3B,uDAU4B;AAT1B,oHAAA,gBAAgB,OAAA;AAChB,kHAAA,cAAc,OAAA;AACd,uHAAA,mBAAmB,OAAA;AACnB,iHAAA,aAAa,OAAA;AACb,oHAAA,gBAAgB,OAAA;AAChB,gHAAA,YAAY,OAAA;AACZ,mHAAA,eAAe,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"profile-reader.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-reader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAuC,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE1F;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWtD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAc/D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,aAAa,CA0D/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAO7C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C"}
1
+ {"version":3,"file":"profile-reader.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-reader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAuC,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAW1F;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWtD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAc/D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,aAAa,CAgE/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAO7C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C"}
@@ -34,6 +34,13 @@ const fs = __importStar(require("fs"));
34
34
  const path = __importStar(require("path"));
35
35
  const config_manager_1 = require("../../utils/config-manager");
36
36
  const unified_config_loader_1 = require("../../config/unified-config-loader");
37
+ const VALID_TARGETS = new Set(['claude', 'droid']);
38
+ function sanitizeTarget(target) {
39
+ if (typeof target === 'string' && VALID_TARGETS.has(target)) {
40
+ return target;
41
+ }
42
+ return 'claude';
43
+ }
37
44
  /**
38
45
  * Check if API profile exists in config
39
46
  */
@@ -91,6 +98,7 @@ function listApiProfiles() {
91
98
  settingsPath: profile.settings || 'config.yaml',
92
99
  isConfigured: isApiProfileConfigured(name),
93
100
  configSource: 'unified',
101
+ target: sanitizeTarget(profile.target),
94
102
  });
95
103
  }
96
104
  // CLIProxy variants
@@ -102,11 +110,14 @@ function listApiProfiles() {
102
110
  name,
103
111
  provider,
104
112
  settings: variant?.settings || '-',
113
+ target: sanitizeTarget(variant?.target),
105
114
  });
106
115
  }
107
116
  }
108
117
  else {
109
118
  const config = (0, config_manager_1.loadConfigSafe)();
119
+ const legacyTargetMap = config
120
+ .profile_targets;
110
121
  for (const [name, settingsPath] of Object.entries(config.profiles)) {
111
122
  // Skip 'default' profile - it's the user's native Claude settings
112
123
  if (name === 'default' && settingsPath.includes('.claude/settings.json')) {
@@ -117,6 +128,7 @@ function listApiProfiles() {
117
128
  settingsPath: settingsPath,
118
129
  isConfigured: isApiProfileConfigured(name),
119
130
  configSource: 'legacy',
131
+ target: sanitizeTarget(legacyTargetMap?.[name]),
120
132
  });
121
133
  }
122
134
  // CLIProxy variants
@@ -127,6 +139,7 @@ function listApiProfiles() {
127
139
  name,
128
140
  provider: variant.provider,
129
141
  settings: variant.settings,
142
+ target: sanitizeTarget(variant.target),
130
143
  });
131
144
  }
132
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"profile-reader.js","sourceRoot":"","sources":["../../../src/api/services/profile-reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-reader.js","sourceRoot":"","sources":["../../../src/api/services/profile-reader.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,+DAAuE;AACvE,8EAA8F;AAI9F,MAAM,aAAa,GAA4B,IAAI,GAAG,CAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAExF,SAAS,cAAc,CAAC,MAAe;IACrC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,MAAoB,CAAC,EAAE,CAAC;QAC1E,OAAO,MAAoB,CAAC;IAC9B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,IAAI,CAAC;QACH,IAAI,IAAA,qCAAa,GAAE,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAA,iDAAyB,GAAE,CAAC;YAC3C,OAAO,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC;QACjC,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,+BAAc,GAAE,CAAC;QAChC,OAAO,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAXD,4CAWC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,OAAe;IACpD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAC;QAEnE,uCAAuC;QACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,KAAK,CAAC;QAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,QAAQ,EAAE,GAAG,EAAE,oBAAoB,IAAI,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAdD,wDAcC;AAED;;;;;GAKG;AACH,SAAgB,eAAe;IAC7B,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAE3C,IAAI,IAAA,qCAAa,GAAE,EAAE,CAAC;QACpB,MAAM,aAAa,GAAG,IAAA,iDAAyB,GAAE,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrE,kEAAkE;YAClE,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC9E,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,YAAY,EAAE,OAAO,CAAC,QAAQ,IAAI,aAAa;gBAC/C,YAAY,EAAE,sBAAsB,CAAC,IAAI,CAAC;gBAC1C,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;aACvC,CAAC,CAAC;QACL,CAAC;QACD,oBAAoB;QACpB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;YACrF,MAAM,QAAQ,GACZ,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;gBAC1D,CAAC,CAAC,WAAW;gBACb,CAAC,CAAE,OAAiC,EAAE,QAAQ,IAAI,SAAS,CAAC;YAChE,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,QAAQ;gBACR,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,GAAG;gBAClC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,IAAA,+BAAc,GAAE,CAAC;QAChC,MAAM,eAAe,GAAI,MAAwD;aAC9E,eAAe,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnE,kEAAkE;YAClE,IAAI,IAAI,KAAK,SAAS,IAAK,YAAuB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACrF,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,YAAY,EAAE,YAAsB;gBACpC,YAAY,EAAE,sBAAsB,CAAC,IAAI,CAAC;gBAC1C,YAAY,EAAE,QAAQ;gBACtB,MAAM,EAAE,cAAc,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;aAChD,CAAC,CAAC;QACL,CAAC;QACD,oBAAoB;QACpB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxD,MAAM,OAAO,GAAG,CAA6D,CAAC;gBAC9E,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;iBACvC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAhED,0CAgEC;AAED;;GAEG;AACH,SAAgB,kBAAkB;IAChC,IAAI,IAAA,qCAAa,GAAE,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,IAAA,iDAAyB,GAAE,CAAC;QAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,+BAAc,GAAE,CAAC;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAPD,gDAOC;AAED;;GAEG;AACH,SAAgB,oBAAoB;IAClC,OAAO,IAAA,qCAAa,GAAE,CAAC;AACzB,CAAC;AAFD,oDAEC"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Shared type definitions for API profile services.
5
5
  */
6
+ import type { TargetType } from '../../targets/target-adapter';
6
7
  /** Model mapping for API profiles */
7
8
  export interface ModelMapping {
8
9
  default: string;
@@ -16,12 +17,14 @@ export interface ApiProfileInfo {
16
17
  settingsPath: string;
17
18
  isConfigured: boolean;
18
19
  configSource: 'unified' | 'legacy';
20
+ target: TargetType;
19
21
  }
20
22
  /** CLIProxy variant info */
21
23
  export interface CliproxyVariantInfo {
22
24
  name: string;
23
25
  provider: string;
24
26
  settings: string;
27
+ target: TargetType;
25
28
  }
26
29
  /** Result from list operation */
27
30
  export interface ApiListResult {
@@ -39,4 +42,10 @@ export interface RemoveApiProfileResult {
39
42
  success: boolean;
40
43
  error?: string;
41
44
  }
45
+ /** Result from updating API profile target */
46
+ export interface UpdateApiProfileTargetResult {
47
+ success: boolean;
48
+ target?: TargetType;
49
+ error?: string;
50
+ }
42
51
  //# sourceMappingURL=profile-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile-types.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAC;CACpC;AAED,4BAA4B;AAC5B,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"profile-types.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,4BAA4B;AAC5B,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8CAA8C;AAC9C,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1,6 +1,12 @@
1
- import type { ModelMapping, CreateApiProfileResult, RemoveApiProfileResult } from './profile-types';
1
+ import type { TargetType } from '../../targets/target-adapter';
2
+ import type { ModelMapping, CreateApiProfileResult, RemoveApiProfileResult, UpdateApiProfileTargetResult } from './profile-types';
2
3
  /** Create a new API profile */
3
- export declare function createApiProfile(name: string, baseUrl: string, apiKey: string, models: ModelMapping): CreateApiProfileResult;
4
+ export declare function createApiProfile(name: string, baseUrl: string, apiKey: string, models: ModelMapping, target?: TargetType, provider?: string): CreateApiProfileResult;
5
+ /**
6
+ * Update API profile target (claude/droid).
7
+ * Persists to config.yaml in unified mode and config.json profile_targets in legacy mode.
8
+ */
9
+ export declare function updateApiProfileTarget(name: string, target: TargetType): UpdateApiProfileTargetResult;
4
10
  /** Remove an API profile */
5
11
  export declare function removeApiProfile(name: string): RemoveApiProfileResult;
6
12
  //# sourceMappingURL=profile-writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile-writer.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-writer.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAwGpG,+BAA+B;AAC/B,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,GACnB,sBAAsB,CAmBxB;AA+CD,4BAA4B;AAC5B,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAWrE"}
1
+ {"version":3,"file":"profile-writer.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-writer.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAQ/D,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AA8JzB,+BAA+B;AAC/B,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,MAAM,GAAE,UAAqB,EAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,sBAAsB,CAwBxB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,GACjB,4BAA4B,CAgD9B;AAqDD,4BAA4B;AAC5B,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAWrE"}
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.removeApiProfile = exports.createApiProfile = void 0;
26
+ exports.removeApiProfile = exports.updateApiProfileTarget = exports.createApiProfile = void 0;
27
27
  /**
28
28
  * API Profile Writer Service - Create/remove operations for API profiles.
29
29
  * Supports both unified YAML config and legacy JSON config.
@@ -34,14 +34,49 @@ const config_manager_1 = require("../../utils/config-manager");
34
34
  const helpers_1 = require("../../utils/helpers");
35
35
  const unified_config_loader_1 = require("../../config/unified-config-loader");
36
36
  const profile_hook_injector_1 = require("../../utils/websearch/profile-hook-injector");
37
+ const droid_provider_1 = require("../../targets/droid-provider");
38
+ const provider_capabilities_1 = require("../../cliproxy/provider-capabilities");
39
+ const model_id_normalizer_1 = require("../../cliproxy/model-id-normalizer");
37
40
  /** Check if URL is an OpenRouter endpoint */
38
41
  function isOpenRouterUrl(baseUrl) {
39
42
  return baseUrl.toLowerCase().includes('openrouter.ai');
40
43
  }
44
+ function resolveProviderFromBaseUrl(baseUrl) {
45
+ if (baseUrl.trim().length === 0) {
46
+ return null;
47
+ }
48
+ try {
49
+ const parsed = new URL(baseUrl);
50
+ const extracted = (0, model_id_normalizer_1.extractProviderFromPathname)(parsed.pathname);
51
+ return extracted ? (0, provider_capabilities_1.mapExternalProviderName)(extracted) : null;
52
+ }
53
+ catch {
54
+ const extracted = (0, model_id_normalizer_1.extractProviderFromPathname)(baseUrl);
55
+ return extracted ? (0, provider_capabilities_1.mapExternalProviderName)(extracted) : null;
56
+ }
57
+ }
58
+ function getDeniedModelReason(baseUrl, models) {
59
+ const provider = resolveProviderFromBaseUrl(baseUrl);
60
+ if (!provider)
61
+ return null;
62
+ for (const modelId of [models.default, models.opus, models.sonnet, models.haiku]) {
63
+ if (modelId.trim().length === 0)
64
+ continue;
65
+ const deniedReason = (0, model_id_normalizer_1.getDeniedModelIdReasonForProvider)(modelId, provider);
66
+ if (deniedReason)
67
+ return deniedReason;
68
+ }
69
+ return null;
70
+ }
41
71
  /** Create settings.json file for API profile (legacy format) */
42
- function createSettingsFile(name, baseUrl, apiKey, models) {
72
+ function createSettingsFile(name, baseUrl, apiKey, models, provider) {
43
73
  const ccsDir = (0, config_manager_1.getCcsDir)();
44
74
  const settingsPath = path.join(ccsDir, `${name}.settings.json`);
75
+ const droidProvider = (0, droid_provider_1.resolveDroidProvider)({
76
+ provider,
77
+ baseUrl,
78
+ model: models.default,
79
+ });
45
80
  const settings = {
46
81
  env: {
47
82
  ANTHROPIC_BASE_URL: baseUrl,
@@ -50,6 +85,7 @@ function createSettingsFile(name, baseUrl, apiKey, models) {
50
85
  ANTHROPIC_DEFAULT_OPUS_MODEL: models.opus,
51
86
  ANTHROPIC_DEFAULT_SONNET_MODEL: models.sonnet,
52
87
  ANTHROPIC_DEFAULT_HAIKU_MODEL: models.haiku,
88
+ CCS_DROID_PROVIDER: droidProvider,
53
89
  // OpenRouter requires explicitly blanking the API key to prevent conflicts
54
90
  ...(isOpenRouterUrl(baseUrl) && { ANTHROPIC_API_KEY: '' }),
55
91
  },
@@ -60,7 +96,7 @@ function createSettingsFile(name, baseUrl, apiKey, models) {
60
96
  return settingsPath;
61
97
  }
62
98
  /** Update config.json with new API profile (legacy format) */
63
- function updateLegacyConfig(name) {
99
+ function updateLegacyConfig(name, target = 'claude') {
64
100
  const configPath = (0, config_manager_1.getConfigPath)();
65
101
  const ccsDir = (0, config_manager_1.getCcsDir)();
66
102
  let config;
@@ -72,6 +108,13 @@ function updateLegacyConfig(name) {
72
108
  }
73
109
  const relativePath = `~/.ccs/${name}.settings.json`;
74
110
  config.profiles[name] = relativePath;
111
+ config.profile_targets = config.profile_targets || {};
112
+ if (target === 'claude') {
113
+ delete config.profile_targets[name];
114
+ }
115
+ else {
116
+ config.profile_targets[name] = target;
117
+ }
75
118
  if (!fs.existsSync(ccsDir)) {
76
119
  fs.mkdirSync(ccsDir, { recursive: true });
77
120
  }
@@ -81,10 +124,15 @@ function updateLegacyConfig(name) {
81
124
  fs.renameSync(tempPath, configPath);
82
125
  }
83
126
  /** Create API profile in unified config */
84
- function createApiProfileUnified(name, baseUrl, apiKey, models) {
127
+ function createApiProfileUnified(name, baseUrl, apiKey, models, target = 'claude', provider) {
85
128
  const ccsDir = (0, config_manager_1.getCcsDir)();
86
129
  const settingsFile = `${name}.settings.json`;
87
130
  const settingsPath = path.join(ccsDir, settingsFile);
131
+ const droidProvider = (0, droid_provider_1.resolveDroidProvider)({
132
+ provider,
133
+ baseUrl,
134
+ model: models.default,
135
+ });
88
136
  const settings = {
89
137
  env: {
90
138
  ANTHROPIC_BASE_URL: baseUrl,
@@ -93,6 +141,7 @@ function createApiProfileUnified(name, baseUrl, apiKey, models) {
93
141
  ANTHROPIC_DEFAULT_OPUS_MODEL: models.opus,
94
142
  ANTHROPIC_DEFAULT_SONNET_MODEL: models.sonnet,
95
143
  ANTHROPIC_DEFAULT_HAIKU_MODEL: models.haiku,
144
+ CCS_DROID_PROVIDER: droidProvider,
96
145
  // OpenRouter requires explicitly blanking the API key to prevent conflicts
97
146
  ...(isOpenRouterUrl(baseUrl) && { ANTHROPIC_API_KEY: '' }),
98
147
  },
@@ -107,19 +156,24 @@ function createApiProfileUnified(name, baseUrl, apiKey, models) {
107
156
  config.profiles[name] = {
108
157
  type: 'api',
109
158
  settings: `~/.ccs/${settingsFile}`,
159
+ ...(target !== 'claude' && { target }),
110
160
  };
111
161
  (0, unified_config_loader_1.saveUnifiedConfig)(config);
112
162
  }
113
163
  /** Create a new API profile */
114
- function createApiProfile(name, baseUrl, apiKey, models) {
164
+ function createApiProfile(name, baseUrl, apiKey, models, target = 'claude', provider) {
115
165
  try {
166
+ const deniedReason = getDeniedModelReason(baseUrl, models);
167
+ if (deniedReason) {
168
+ return { success: false, settingsFile: '', error: deniedReason };
169
+ }
116
170
  const settingsFile = `~/.ccs/${name}.settings.json`;
117
171
  if ((0, unified_config_loader_1.isUnifiedMode)()) {
118
- createApiProfileUnified(name, baseUrl, apiKey, models);
172
+ createApiProfileUnified(name, baseUrl, apiKey, models, target, provider);
119
173
  }
120
174
  else {
121
- createSettingsFile(name, baseUrl, apiKey, models);
122
- updateLegacyConfig(name);
175
+ createSettingsFile(name, baseUrl, apiKey, models, provider);
176
+ updateLegacyConfig(name, target);
123
177
  }
124
178
  return { success: true, settingsFile };
125
179
  }
@@ -132,6 +186,54 @@ function createApiProfile(name, baseUrl, apiKey, models) {
132
186
  }
133
187
  }
134
188
  exports.createApiProfile = createApiProfile;
189
+ /**
190
+ * Update API profile target (claude/droid).
191
+ * Persists to config.yaml in unified mode and config.json profile_targets in legacy mode.
192
+ */
193
+ function updateApiProfileTarget(name, target) {
194
+ try {
195
+ if ((0, unified_config_loader_1.isUnifiedMode)()) {
196
+ const config = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
197
+ if (!config.profiles[name]) {
198
+ return { success: false, error: `API profile not found: ${name}` };
199
+ }
200
+ if (target === 'claude') {
201
+ delete config.profiles[name].target;
202
+ }
203
+ else {
204
+ config.profiles[name].target = target;
205
+ }
206
+ (0, unified_config_loader_1.saveUnifiedConfig)(config);
207
+ return { success: true, target };
208
+ }
209
+ const configPath = (0, config_manager_1.getConfigPath)();
210
+ let config;
211
+ try {
212
+ config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
213
+ }
214
+ catch {
215
+ config = { profiles: {} };
216
+ }
217
+ if (!config.profiles[name]) {
218
+ return { success: false, error: `API profile not found: ${name}` };
219
+ }
220
+ config.profile_targets = config.profile_targets || {};
221
+ if (target === 'claude') {
222
+ delete config.profile_targets[name];
223
+ }
224
+ else {
225
+ config.profile_targets[name] = target;
226
+ }
227
+ const tempPath = configPath + '.tmp';
228
+ fs.writeFileSync(tempPath, JSON.stringify(config, null, 2) + '\n', 'utf8');
229
+ fs.renameSync(tempPath, configPath);
230
+ return { success: true, target };
231
+ }
232
+ catch (error) {
233
+ return { success: false, error: error.message };
234
+ }
235
+ }
236
+ exports.updateApiProfileTarget = updateApiProfileTarget;
135
237
  /** Remove API profile from unified config */
136
238
  function removeApiProfileUnified(name) {
137
239
  const config = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
@@ -158,6 +260,12 @@ function removeApiProfileUnified(name) {
158
260
  function removeApiProfileLegacy(name) {
159
261
  const config = (0, config_manager_1.loadConfigSafe)();
160
262
  delete config.profiles[name];
263
+ if (config.profile_targets) {
264
+ delete config.profile_targets[name];
265
+ if (Object.keys(config.profile_targets).length === 0) {
266
+ delete config.profile_targets;
267
+ }
268
+ }
161
269
  const configPath = (0, config_manager_1.getConfigPath)();
162
270
  const tempPath = configPath + '.tmp';
163
271
  fs.writeFileSync(tempPath, JSON.stringify(config, null, 2) + '\n', 'utf8');
@@ -1 +1 @@
1
- {"version":3,"file":"profile-writer.js","sourceRoot":"","sources":["../../../src/api/services/profile-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-writer.js","sourceRoot":"","sources":["../../../src/api/services/profile-writer.ts"],"names":[],"mappings":"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"}