@kaitranntt/ccs 7.55.0 → 7.56.0-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 (189) hide show
  1. package/README.md +13 -3
  2. package/dist/api/services/cliproxy-profile-bridge.d.ts +13 -0
  3. package/dist/api/services/cliproxy-profile-bridge.d.ts.map +1 -0
  4. package/dist/api/services/cliproxy-profile-bridge.js +147 -0
  5. package/dist/api/services/cliproxy-profile-bridge.js.map +1 -0
  6. package/dist/api/services/index.d.ts +3 -1
  7. package/dist/api/services/index.d.ts.map +1 -1
  8. package/dist/api/services/index.js +9 -1
  9. package/dist/api/services/index.js.map +1 -1
  10. package/dist/api/services/profile-reader.d.ts.map +1 -1
  11. package/dist/api/services/profile-reader.js +37 -14
  12. package/dist/api/services/profile-reader.js.map +1 -1
  13. package/dist/api/services/profile-types.d.ts +35 -0
  14. package/dist/api/services/profile-types.d.ts.map +1 -1
  15. package/dist/api/services/profile-writer.d.ts +7 -1
  16. package/dist/api/services/profile-writer.d.ts.map +1 -1
  17. package/dist/api/services/profile-writer.js +44 -1
  18. package/dist/api/services/profile-writer.js.map +1 -1
  19. package/dist/auth/commands/create-command.js +1 -1
  20. package/dist/auth/commands/create-command.js.map +1 -1
  21. package/dist/auth/commands/remove-command.js +1 -1
  22. package/dist/auth/commands/remove-command.js.map +1 -1
  23. package/dist/cliproxy/ai-providers/config-store.d.ts +19 -0
  24. package/dist/cliproxy/ai-providers/config-store.d.ts.map +1 -0
  25. package/dist/cliproxy/ai-providers/config-store.js +117 -0
  26. package/dist/cliproxy/ai-providers/config-store.js.map +1 -0
  27. package/dist/cliproxy/ai-providers/config-yaml-sections.d.ts +2 -0
  28. package/dist/cliproxy/ai-providers/config-yaml-sections.d.ts.map +1 -0
  29. package/dist/cliproxy/ai-providers/config-yaml-sections.js +43 -0
  30. package/dist/cliproxy/ai-providers/config-yaml-sections.js.map +1 -0
  31. package/dist/cliproxy/ai-providers/index.d.ts +4 -0
  32. package/dist/cliproxy/ai-providers/index.d.ts.map +1 -0
  33. package/dist/cliproxy/ai-providers/index.js +12 -0
  34. package/dist/cliproxy/ai-providers/index.js.map +1 -0
  35. package/dist/cliproxy/ai-providers/service.d.ts +6 -0
  36. package/dist/cliproxy/ai-providers/service.d.ts.map +1 -0
  37. package/dist/cliproxy/ai-providers/service.js +191 -0
  38. package/dist/cliproxy/ai-providers/service.js.map +1 -0
  39. package/dist/cliproxy/ai-providers/types.d.ts +97 -0
  40. package/dist/cliproxy/ai-providers/types.d.ts.map +1 -0
  41. package/dist/cliproxy/ai-providers/types.js +53 -0
  42. package/dist/cliproxy/ai-providers/types.js.map +1 -0
  43. package/dist/cliproxy/base-config-loader.d.ts +1 -1
  44. package/dist/cliproxy/base-config-loader.d.ts.map +1 -1
  45. package/dist/cliproxy/codex-plan-compatibility.d.ts +19 -0
  46. package/dist/cliproxy/codex-plan-compatibility.d.ts.map +1 -1
  47. package/dist/cliproxy/codex-plan-compatibility.js +62 -1
  48. package/dist/cliproxy/codex-plan-compatibility.js.map +1 -1
  49. package/dist/cliproxy/codex-reasoning-proxy.d.ts +5 -0
  50. package/dist/cliproxy/codex-reasoning-proxy.d.ts.map +1 -1
  51. package/dist/cliproxy/codex-reasoning-proxy.js +103 -20
  52. package/dist/cliproxy/codex-reasoning-proxy.js.map +1 -1
  53. package/dist/cliproxy/composite-validator.d.ts.map +1 -1
  54. package/dist/cliproxy/composite-validator.js.map +1 -1
  55. package/dist/cliproxy/config/env-builder.d.ts +2 -2
  56. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  57. package/dist/cliproxy/config/extended-context-config.d.ts +1 -1
  58. package/dist/cliproxy/config/extended-context-config.d.ts.map +1 -1
  59. package/dist/cliproxy/config/generator.d.ts +1 -1
  60. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  61. package/dist/cliproxy/config/path-resolver.d.ts +1 -1
  62. package/dist/cliproxy/config/path-resolver.d.ts.map +1 -1
  63. package/dist/cliproxy/config/thinking-config.d.ts +2 -2
  64. package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
  65. package/dist/cliproxy/config/thinking-config.js.map +1 -1
  66. package/dist/cliproxy/index.d.ts +2 -0
  67. package/dist/cliproxy/index.d.ts.map +1 -1
  68. package/dist/cliproxy/index.js +9 -2
  69. package/dist/cliproxy/index.js.map +1 -1
  70. package/dist/cliproxy/management-api-client.d.ts +9 -0
  71. package/dist/cliproxy/management-api-client.d.ts.map +1 -1
  72. package/dist/cliproxy/management-api-client.js +16 -3
  73. package/dist/cliproxy/management-api-client.js.map +1 -1
  74. package/dist/cliproxy/model-catalog.d.ts +1 -1
  75. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  76. package/dist/cliproxy/model-id-normalizer.d.ts +1 -1
  77. package/dist/cliproxy/model-id-normalizer.d.ts.map +1 -1
  78. package/dist/cliproxy/thinking-validator.d.ts +1 -1
  79. package/dist/cliproxy/thinking-validator.d.ts.map +1 -1
  80. package/dist/cliproxy/thinking-validator.js.map +1 -1
  81. package/dist/cliproxy/types.d.ts +22 -0
  82. package/dist/cliproxy/types.d.ts.map +1 -1
  83. package/dist/commands/api-command/create-command.d.ts.map +1 -1
  84. package/dist/commands/api-command/create-command.js +89 -0
  85. package/dist/commands/api-command/create-command.js.map +1 -1
  86. package/dist/commands/api-command/help.d.ts.map +1 -1
  87. package/dist/commands/api-command/help.js +6 -0
  88. package/dist/commands/api-command/help.js.map +1 -1
  89. package/dist/commands/api-command/shared.d.ts +2 -1
  90. package/dist/commands/api-command/shared.d.ts.map +1 -1
  91. package/dist/commands/api-command/shared.js +6 -0
  92. package/dist/commands/api-command/shared.js.map +1 -1
  93. package/dist/commands/config-dashboard-host.js +2 -2
  94. package/dist/commands/config-dashboard-host.js.map +1 -1
  95. package/dist/commands/help-command.d.ts.map +1 -1
  96. package/dist/commands/help-command.js +4 -0
  97. package/dist/commands/help-command.js.map +1 -1
  98. package/dist/config/unified-config-loader.d.ts +1 -1
  99. package/dist/config/unified-config-loader.d.ts.map +1 -1
  100. package/dist/config/unified-config-loader.js.map +1 -1
  101. package/dist/management/instance-manager.d.ts +2 -1
  102. package/dist/management/instance-manager.d.ts.map +1 -1
  103. package/dist/management/instance-manager.js +23 -9
  104. package/dist/management/instance-manager.js.map +1 -1
  105. package/dist/management/profile-context-sync-lock.d.ts +3 -0
  106. package/dist/management/profile-context-sync-lock.d.ts.map +1 -1
  107. package/dist/management/profile-context-sync-lock.js +75 -3
  108. package/dist/management/profile-context-sync-lock.js.map +1 -1
  109. package/dist/management/shared-manager.d.ts +21 -8
  110. package/dist/management/shared-manager.d.ts.map +1 -1
  111. package/dist/management/shared-manager.js +353 -24
  112. package/dist/management/shared-manager.js.map +1 -1
  113. package/dist/shared/claude-extension-setup.js +2 -2
  114. package/dist/shared/claude-extension-setup.js.map +1 -1
  115. package/dist/types/cli.d.ts +10 -9
  116. package/dist/types/cli.d.ts.map +1 -1
  117. package/dist/types/cli.js +8 -9
  118. package/dist/types/cli.js.map +1 -1
  119. package/dist/types/utils.d.ts +7 -6
  120. package/dist/types/utils.d.ts.map +1 -1
  121. package/dist/types/utils.js +6 -7
  122. package/dist/types/utils.js.map +1 -1
  123. package/dist/ui/assets/{accounts-CjGyCl_8.js → accounts-CccaoV-N.js} +1 -1
  124. package/dist/ui/assets/{alert-dialog-cy99V8EM.js → alert-dialog-D838sIju.js} +1 -1
  125. package/dist/ui/assets/antigravity-responsibility-constants-Bvh4Ybz0.js +1 -0
  126. package/dist/ui/assets/api-IXigV-A_.js +4 -0
  127. package/dist/ui/assets/{auth-section-DsDyGmzl.js → auth-section-BGCaHAcN.js} +1 -1
  128. package/dist/ui/assets/{backups-section-B63xrUmB.js → backups-section-CqZN-2Qq.js} +1 -1
  129. package/dist/ui/assets/{checkbox-AxZFvatO.js → checkbox-BgLi38k2.js} +1 -1
  130. package/dist/ui/assets/{claude-extension-N0lxo7BY.js → claude-extension-ClHnH_4i.js} +1 -1
  131. package/dist/ui/assets/cliproxy-ai-providers-EhHqrkRr.js +21 -0
  132. package/dist/ui/assets/cliproxy-control-panel-lRQBQhPS.js +1 -0
  133. package/dist/ui/assets/cliproxy-qX23viWV.js +3 -0
  134. package/dist/ui/assets/{confirm-dialog-D2bDFGvT.js → confirm-dialog-t6i94F2B.js} +1 -1
  135. package/dist/ui/assets/{copilot-INm6uOZF.js → copilot-DlSkTZ2q.js} +1 -1
  136. package/dist/ui/assets/{cursor-C8rDHKEp.js → cursor-DJvTEVHh.js} +1 -1
  137. package/dist/ui/assets/{droid-OZDvbiwC.js → droid-wevxXBVG.js} +2 -2
  138. package/dist/ui/assets/{globalenv-section-ClTBgKg5.js → globalenv-section-De072K_j.js} +1 -1
  139. package/dist/ui/assets/{health-CGaRANip.js → health-Wv80MRCF.js} +1 -1
  140. package/dist/ui/assets/icons-DMeZET56.js +1 -0
  141. package/dist/ui/assets/{index-DQ4jn6yA.js → index-BmB4ckDm.js} +1 -1
  142. package/dist/ui/assets/{index-CGOZU3jq.js → index-BqdBnk5l.js} +1 -1
  143. package/dist/ui/assets/{index-CCSdUs7x.js → index-C9TiCNLM.js} +1 -1
  144. package/dist/ui/assets/{index-DS1QEaxk.js → index-CxPqnEpn.js} +1 -1
  145. package/dist/ui/assets/index-DRmZP4OP.css +1 -0
  146. package/dist/ui/assets/index-N_jd9sKU.js +47 -0
  147. package/dist/ui/assets/providers/codex-color.svg +24 -0
  148. package/dist/ui/assets/providers/vertex.svg +25 -0
  149. package/dist/ui/assets/proxy-status-widget-DMe8konR.js +1 -0
  150. package/dist/ui/assets/{searchable-select-D6dcPTiL.js → searchable-select-C-dUgzQ_.js} +1 -1
  151. package/dist/ui/assets/{separator-Czy9IRpl.js → separator-TnQMGoEt.js} +1 -1
  152. package/dist/ui/assets/{shared-BUJNJgAr.js → shared-Cbcz8ZIu.js} +1 -1
  153. package/dist/ui/assets/{switch-Bog43RUy.js → switch-Df15Gmz9.js} +1 -1
  154. package/dist/ui/assets/{updates-jcWPnn9L.js → updates-WOEYNHTJ.js} +1 -1
  155. package/dist/ui/index.html +3 -3
  156. package/dist/utils/claude-config-path.d.ts.map +1 -1
  157. package/dist/utils/claude-config-path.js +2 -5
  158. package/dist/utils/claude-config-path.js.map +1 -1
  159. package/dist/utils/config-manager.d.ts +7 -1
  160. package/dist/utils/config-manager.d.ts.map +1 -1
  161. package/dist/utils/config-manager.js +30 -1
  162. package/dist/utils/config-manager.js.map +1 -1
  163. package/dist/utils/shell-executor.js +1 -1
  164. package/dist/utils/shell-executor.js.map +1 -1
  165. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  166. package/dist/web-server/routes/account-routes.js +26 -6
  167. package/dist/web-server/routes/account-routes.js.map +1 -1
  168. package/dist/web-server/routes/ai-provider-routes.d.ts +3 -0
  169. package/dist/web-server/routes/ai-provider-routes.d.ts.map +1 -0
  170. package/dist/web-server/routes/ai-provider-routes.js +112 -0
  171. package/dist/web-server/routes/ai-provider-routes.js.map +1 -0
  172. package/dist/web-server/routes/index.d.ts.map +1 -1
  173. package/dist/web-server/routes/index.js +2 -0
  174. package/dist/web-server/routes/index.js.map +1 -1
  175. package/dist/web-server/routes/profile-routes.d.ts.map +1 -1
  176. package/dist/web-server/routes/profile-routes.js +45 -0
  177. package/dist/web-server/routes/profile-routes.js.map +1 -1
  178. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  179. package/dist/web-server/routes/settings-routes.js +3 -0
  180. package/dist/web-server/routes/settings-routes.js.map +1 -1
  181. package/package.json +2 -2
  182. package/scripts/dev-release.sh +103 -51
  183. package/dist/ui/assets/api-DKrhDjiy.js +0 -4
  184. package/dist/ui/assets/cliproxy-D2ozaUJ3.js +0 -3
  185. package/dist/ui/assets/cliproxy-control-panel-5fYLcZKs.js +0 -1
  186. package/dist/ui/assets/icons-DtwH984l.js +0 -1
  187. package/dist/ui/assets/index-ClEn7Y7g.css +0 -1
  188. package/dist/ui/assets/index-tMnuUCFi.js +0 -47
  189. package/dist/ui/assets/proxy-status-widget-PESjh9-t.js +0 -1
package/README.md CHANGED
@@ -32,6 +32,13 @@ Run Claude, Gemini, GLM, and any Anthropic-compatible API - concurrently, withou
32
32
  Looking for the full setup guide, command reference, provider guides, or troubleshooting?
33
33
  Start at **https://docs.ccs.kaitran.ca**.
34
34
 
35
+ ## Contribute And Report Safely
36
+
37
+ - Contributing guide: [CONTRIBUTING.md](./CONTRIBUTING.md)
38
+ - Starter work: [good first issue](https://github.com/kaitranntt/ccs/labels/good%20first%20issue), [help wanted](https://github.com/kaitranntt/ccs/labels/help%20wanted)
39
+ - Questions: [open a question issue](https://github.com/kaitranntt/ccs/issues/new/choose)
40
+ - Security reports: [SECURITY.md](./SECURITY.md) and the [private advisory form](https://github.com/kaitranntt/ccs/security/advisories/new)
41
+
35
42
  ### 1. Install
36
43
 
37
44
  ```bash
@@ -80,7 +87,8 @@ The dashboard provides visual management for all account types:
80
87
 
81
88
  - **Claude Accounts**: Isolation-first by default (work, personal, client), with explicit shared context opt-in
82
89
  - **OAuth Providers**: One-click auth for Gemini, Codex, Antigravity, Kiro, Copilot
83
- - **API Profiles**: Configure GLM, Kimi with your keys
90
+ - **AI Providers**: Configure Gemini, Codex, Claude, Vertex, and OpenAI-compatible API keys under `CLIProxy -> AI Providers`
91
+ - **API Profiles**: Configure GLM, Kimi, OpenRouter, and other Anthropic-compatible APIs as CCS-native profiles
84
92
  - **Factory Droid**: Track Droid install location and BYOK settings health
85
93
  - **Updates Center**: Track support rollouts (Droid target, CLIProxy provider changes, WebSearch integrations)
86
94
  - **Health Monitor**: Real-time status across all profiles
@@ -148,6 +156,8 @@ The dashboard provides visual management for all account types:
148
156
 
149
157
  > **OAuth providers** authenticate via browser on first run. Tokens are cached in `~/.ccs/cliproxy/auth/`.
150
158
 
159
+ > **AI Providers dashboard:** Configure CLIProxy-managed API key families at `ccs config` -> `CLIProxy` -> `AI Providers`. Use `API Profiles` only for CCS-native Anthropic-compatible profiles.
160
+
151
161
  **Powered by:**
152
162
  - [CLIProxyAPIPlus](https://github.com/router-for-me/CLIProxyAPIPlus) - Extended OAuth proxy with Kiro ([@fuko2935](https://github.com/fuko2935), [@Ravens2121](https://github.com/Ravens2121)) and Copilot ([@em4go](https://github.com/em4go)) support
153
163
  - [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) - Core OAuth proxy for Gemini, Codex, Antigravity
@@ -662,7 +672,7 @@ bun remove -g @kaitranntt/ccs
662
672
 
663
673
  ## Contributing
664
674
 
665
- See [CONTRIBUTING.md](./CONTRIBUTING.md).
675
+ See [CONTRIBUTING.md](./CONTRIBUTING.md). For suspected vulnerabilities, use [SECURITY.md](./SECURITY.md) instead of a public issue.
666
676
 
667
677
  <br>
668
678
 
@@ -680,6 +690,6 @@ MIT License - see [LICENSE](LICENSE).
680
690
 
681
691
  ---
682
692
 
683
- **[ccs.kaitran.ca](https://ccs.kaitran.ca)** | **[docs.ccs.kaitran.ca](https://docs.ccs.kaitran.ca)** | [Report Issues](https://github.com/kaitranntt/ccs/issues) | [Star on GitHub](https://github.com/kaitranntt/ccs)
693
+ **[ccs.kaitran.ca](https://ccs.kaitran.ca)** | **[docs.ccs.kaitran.ca](https://docs.ccs.kaitran.ca)** | [Issue Templates](https://github.com/kaitranntt/ccs/issues/new/choose) | [Private Security Report](https://github.com/kaitranntt/ccs/security/advisories/new) | [Star on GitHub](https://github.com/kaitranntt/ccs)
684
694
 
685
695
  </div>
@@ -0,0 +1,13 @@
1
+ import type { TargetType } from '../../targets/target-adapter';
2
+ import type { Settings } from '../../types/config';
3
+ import type { CLIProxyProvider } from '../../cliproxy/types';
4
+ import type { CliproxyBridgeMetadata, CliproxyBridgeProviderInfo, ResolvedCliproxyBridgeProfile } from './profile-types';
5
+ export declare function getDefaultCliproxyBridgeName(provider: CLIProxyProvider): string;
6
+ export declare function suggestCliproxyBridgeName(provider: CLIProxyProvider): string;
7
+ export declare function listCliproxyBridgeProviders(): CliproxyBridgeProviderInfo[];
8
+ export declare function resolveCliproxyBridgeProfile(provider: CLIProxyProvider, options?: {
9
+ name?: string;
10
+ target?: TargetType;
11
+ }): ResolvedCliproxyBridgeProfile;
12
+ export declare function resolveCliproxyBridgeMetadata(settings: Pick<Settings, 'env'> | null | undefined): CliproxyBridgeMetadata | null;
13
+ //# sourceMappingURL=cliproxy-profile-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliproxy-profile-bridge.d.ts","sourceRoot":"","sources":["../../../src/api/services/cliproxy-profile-bridge.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EACV,sBAAsB,EACtB,0BAA0B,EAE1B,6BAA6B,EAC9B,MAAM,iBAAiB,CAAC;AA4CzB,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAE/E;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAc5E;AAYD,wBAAgB,2BAA2B,IAAI,0BAA0B,EAAE,CAQ1E;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,CAAC;CAChB,GACL,6BAA6B,CAiB/B;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,SAAS,GACjD,sBAAsB,GAAG,IAAI,CAmB/B"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.resolveCliproxyBridgeMetadata = exports.resolveCliproxyBridgeProfile = exports.listCliproxyBridgeProviders = exports.suggestCliproxyBridgeName = exports.getDefaultCliproxyBridgeName = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const path = __importStar(require("path"));
29
+ const config_manager_1 = require("../../utils/config-manager");
30
+ const proxy_target_resolver_1 = require("../../cliproxy/proxy-target-resolver");
31
+ const auth_token_manager_1 = require("../../cliproxy/auth-token-manager");
32
+ const base_config_loader_1 = require("../../cliproxy/base-config-loader");
33
+ const provider_capabilities_1 = require("../../cliproxy/provider-capabilities");
34
+ const model_id_normalizer_1 = require("../../cliproxy/model-id-normalizer");
35
+ const unified_config_loader_1 = require("../../config/unified-config-loader");
36
+ const DEFAULT_PROFILE_SUFFIX = '-api';
37
+ function normalizeBridgeUrl(value) {
38
+ try {
39
+ const parsed = new URL(value);
40
+ const hostname = parsed.hostname === 'localhost' ? '127.0.0.1' : parsed.hostname;
41
+ const pathname = parsed.pathname.replace(/\/+$/, '') || '/';
42
+ return `${parsed.protocol}//${hostname}:${parsed.port}${pathname}`;
43
+ }
44
+ catch {
45
+ return value.trim().replace(/\/+$/, '');
46
+ }
47
+ }
48
+ function resolveProviderFromBaseUrl(baseUrl) {
49
+ if (typeof baseUrl !== 'string' || baseUrl.trim().length === 0) {
50
+ return null;
51
+ }
52
+ try {
53
+ const parsed = new URL(baseUrl);
54
+ const extracted = (0, model_id_normalizer_1.extractProviderFromPathname)(parsed.pathname);
55
+ return extracted ? (0, provider_capabilities_1.mapExternalProviderName)(extracted) : null;
56
+ }
57
+ catch {
58
+ const extracted = (0, model_id_normalizer_1.extractProviderFromPathname)(baseUrl);
59
+ return extracted ? (0, provider_capabilities_1.mapExternalProviderName)(extracted) : null;
60
+ }
61
+ }
62
+ function hasConfiguredProfile(name) {
63
+ if ((0, unified_config_loader_1.isUnifiedMode)()) {
64
+ const config = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
65
+ return name in config.profiles;
66
+ }
67
+ const config = (0, config_manager_1.loadConfigSafe)();
68
+ return name in config.profiles;
69
+ }
70
+ function hasSettingsFile(name) {
71
+ return fs.existsSync(path.join((0, config_manager_1.getCcsDir)(), `${name}.settings.json`));
72
+ }
73
+ function getDefaultCliproxyBridgeName(provider) {
74
+ return `${provider}${DEFAULT_PROFILE_SUFFIX}`;
75
+ }
76
+ exports.getDefaultCliproxyBridgeName = getDefaultCliproxyBridgeName;
77
+ function suggestCliproxyBridgeName(provider) {
78
+ const baseName = getDefaultCliproxyBridgeName(provider);
79
+ if (!hasConfiguredProfile(baseName) && !hasSettingsFile(baseName)) {
80
+ return baseName;
81
+ }
82
+ for (let index = 2; index < 1000; index += 1) {
83
+ const candidate = `${baseName}-${index}`;
84
+ if (!hasConfiguredProfile(candidate) && !hasSettingsFile(candidate)) {
85
+ return candidate;
86
+ }
87
+ }
88
+ return `${baseName}-${Date.now()}`;
89
+ }
90
+ exports.suggestCliproxyBridgeName = suggestCliproxyBridgeName;
91
+ function resolveBridgeModelMapping(provider) {
92
+ const mapping = (0, base_config_loader_1.getModelMappingFromConfig)(provider);
93
+ return {
94
+ default: mapping.defaultModel,
95
+ opus: mapping.opusModel || mapping.defaultModel,
96
+ sonnet: mapping.sonnetModel || mapping.defaultModel,
97
+ haiku: mapping.haikuModel || mapping.defaultModel,
98
+ };
99
+ }
100
+ function listCliproxyBridgeProviders() {
101
+ return provider_capabilities_1.CLIPROXY_PROVIDER_IDS.map((provider) => ({
102
+ provider,
103
+ displayName: (0, provider_capabilities_1.getProviderDisplayName)(provider),
104
+ description: (0, provider_capabilities_1.getProviderDescription)(provider),
105
+ defaultProfileName: getDefaultCliproxyBridgeName(provider),
106
+ routePath: `/api/provider/${provider}`,
107
+ }));
108
+ }
109
+ exports.listCliproxyBridgeProviders = listCliproxyBridgeProviders;
110
+ function resolveCliproxyBridgeProfile(provider, options = {}) {
111
+ const target = (0, proxy_target_resolver_1.getProxyTarget)();
112
+ const profileName = options.name?.trim() || suggestCliproxyBridgeName(provider);
113
+ const baseUrl = (0, proxy_target_resolver_1.buildProxyUrl)(target, `/api/provider/${provider}`);
114
+ const apiKey = target.authToken ?? (0, auth_token_manager_1.getEffectiveApiKey)();
115
+ return {
116
+ name: profileName,
117
+ provider,
118
+ providerDisplayName: (0, provider_capabilities_1.getProviderDisplayName)(provider),
119
+ baseUrl,
120
+ apiKey,
121
+ models: resolveBridgeModelMapping(provider),
122
+ target: options.target || 'claude',
123
+ routePath: `/api/provider/${provider}`,
124
+ source: target.isRemote ? 'remote' : 'local',
125
+ };
126
+ }
127
+ exports.resolveCliproxyBridgeProfile = resolveCliproxyBridgeProfile;
128
+ function resolveCliproxyBridgeMetadata(settings) {
129
+ const provider = resolveProviderFromBaseUrl(settings?.env?.ANTHROPIC_BASE_URL);
130
+ if (!provider) {
131
+ return null;
132
+ }
133
+ const resolved = resolveCliproxyBridgeProfile(provider);
134
+ const actualBaseUrl = settings?.env?.ANTHROPIC_BASE_URL?.trim() || '';
135
+ const actualAuthToken = settings?.env?.ANTHROPIC_AUTH_TOKEN?.trim() || '';
136
+ return {
137
+ provider,
138
+ providerDisplayName: resolved.providerDisplayName,
139
+ routePath: resolved.routePath,
140
+ currentBaseUrl: resolved.baseUrl,
141
+ source: resolved.source,
142
+ usesCurrentTarget: normalizeBridgeUrl(actualBaseUrl) === normalizeBridgeUrl(resolved.baseUrl),
143
+ usesCurrentAuthToken: actualAuthToken.length > 0 && actualAuthToken === resolved.apiKey,
144
+ };
145
+ }
146
+ exports.resolveCliproxyBridgeMetadata = resolveCliproxyBridgeMetadata;
147
+ //# sourceMappingURL=cliproxy-profile-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliproxy-profile-bridge.js","sourceRoot":"","sources":["../../../src/api/services/cliproxy-profile-bridge.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,11 @@
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, type UpdateApiProfileTargetResult, type ProfileValidationIssue, type ProfileValidationSummary, type ApiProfileOrphanCandidate, type DiscoverApiProfileOrphansResult, type RegisterApiProfileOrphansResult, type CopyApiProfileResult, type ApiProfileExportBundle, type ExportApiProfileResult, type ImportApiProfileResult, } from './profile-types';
7
+ export { type ModelMapping, type ApiProfileInfo, type CliproxyVariantInfo, type ApiListResult, type CreateApiProfileResult, type CreateCliproxyBridgeProfileResult, type RemoveApiProfileResult, type UpdateApiProfileTargetResult, type CliproxyBridgeProviderInfo, type CliproxyBridgeMetadata, type ResolvedCliproxyBridgeProfile, type ProfileValidationIssue, type ProfileValidationSummary, type ApiProfileOrphanCandidate, type DiscoverApiProfileOrphansResult, type RegisterApiProfileOrphansResult, type CopyApiProfileResult, type ApiProfileExportBundle, type ExportApiProfileResult, type ImportApiProfileResult, } from './profile-types';
8
8
  export { apiProfileExists, isApiProfileConfigured, listApiProfiles, getApiProfileNames, isUsingUnifiedConfig, } from './profile-reader';
9
9
  export { createApiProfile, removeApiProfile, updateApiProfileTarget } from './profile-writer';
10
+ export { createCliproxyBridgeProfile } from './profile-writer';
11
+ export { getDefaultCliproxyBridgeName, listCliproxyBridgeProviders, resolveCliproxyBridgeMetadata, resolveCliproxyBridgeProfile, suggestCliproxyBridgeName, } from './cliproxy-profile-bridge';
10
12
  export { validateApiProfileSettingsPayload } from './profile-lifecycle-validation';
11
13
  export { discoverApiProfileOrphans, registerApiProfileOrphans, copyApiProfile, exportApiProfile, importApiProfileBundle, } from './profile-lifecycle-service';
12
14
  export { isOpenRouterUrl, fetchOpenRouterModels, type OpenRouterModel } from './openrouter-catalog';
@@ -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,EAC3B,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EACpC,KAAK,+BAA+B,EACpC,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,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,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG9F,OAAO,EAAE,iCAAiC,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAGrC,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,iCAAiC,EACtC,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EACpC,KAAK,+BAA+B,EACpC,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,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,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,iCAAiC,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAGrC,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.importApiProfileBundle = exports.exportApiProfile = exports.copyApiProfile = exports.registerApiProfileOrphans = exports.discoverApiProfileOrphans = exports.validateApiProfileSettingsPayload = 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;
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.importApiProfileBundle = exports.exportApiProfile = exports.copyApiProfile = exports.registerApiProfileOrphans = exports.discoverApiProfileOrphans = exports.validateApiProfileSettingsPayload = exports.suggestCliproxyBridgeName = exports.resolveCliproxyBridgeProfile = exports.resolveCliproxyBridgeMetadata = exports.listCliproxyBridgeProviders = exports.getDefaultCliproxyBridgeName = exports.createCliproxyBridgeProfile = 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; } });
@@ -24,6 +24,14 @@ 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
26
  Object.defineProperty(exports, "updateApiProfileTarget", { enumerable: true, get: function () { return profile_writer_1.updateApiProfileTarget; } });
27
+ var profile_writer_2 = require("./profile-writer");
28
+ Object.defineProperty(exports, "createCliproxyBridgeProfile", { enumerable: true, get: function () { return profile_writer_2.createCliproxyBridgeProfile; } });
29
+ var cliproxy_profile_bridge_1 = require("./cliproxy-profile-bridge");
30
+ Object.defineProperty(exports, "getDefaultCliproxyBridgeName", { enumerable: true, get: function () { return cliproxy_profile_bridge_1.getDefaultCliproxyBridgeName; } });
31
+ Object.defineProperty(exports, "listCliproxyBridgeProviders", { enumerable: true, get: function () { return cliproxy_profile_bridge_1.listCliproxyBridgeProviders; } });
32
+ Object.defineProperty(exports, "resolveCliproxyBridgeMetadata", { enumerable: true, get: function () { return cliproxy_profile_bridge_1.resolveCliproxyBridgeMetadata; } });
33
+ Object.defineProperty(exports, "resolveCliproxyBridgeProfile", { enumerable: true, get: function () { return cliproxy_profile_bridge_1.resolveCliproxyBridgeProfile; } });
34
+ Object.defineProperty(exports, "suggestCliproxyBridgeName", { enumerable: true, get: function () { return cliproxy_profile_bridge_1.suggestCliproxyBridgeName; } });
27
35
  // Lifecycle validation and operations
28
36
  var profile_lifecycle_validation_1 = require("./profile-lifecycle-validation");
29
37
  Object.defineProperty(exports, "validateApiProfileSettingsPayload", { enumerable: true, get: function () { return profile_lifecycle_validation_1.validateApiProfileSettingsPayload; } });
@@ -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;AAsBrE,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,sCAAsC;AACtC,+EAAmF;AAA1E,iJAAA,iCAAiC,OAAA;AAC1C,yEAMqC;AALnC,sIAAA,yBAAyB,OAAA;AACzB,sIAAA,yBAAyB,OAAA;AACzB,2HAAA,cAAc,OAAA;AACd,6HAAA,gBAAgB,OAAA;AAChB,mIAAA,sBAAsB,OAAA;AAGxB,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;AA0BrE,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;AACnE,mDAA+D;AAAtD,6HAAA,2BAA2B,OAAA;AACpC,qEAMmC;AALjC,uIAAA,4BAA4B,OAAA;AAC5B,sIAAA,2BAA2B,OAAA;AAC3B,wIAAA,6BAA6B,OAAA;AAC7B,uIAAA,4BAA4B,OAAA;AAC5B,oIAAA,yBAAyB,OAAA;AAG3B,sCAAsC;AACtC,+EAAmF;AAA1E,iJAAA,iCAAiC,OAAA;AAC1C,yEAMqC;AALnC,sIAAA,yBAAyB,OAAA;AACzB,sIAAA,yBAAyB,OAAA;AACzB,2HAAA,cAAc,OAAA;AACd,6HAAA,gBAAgB,OAAA;AAChB,mIAAA,sBAAsB,OAAA;AAGxB,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;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"}
1
+ {"version":3,"file":"profile-reader.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-reader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAuC,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAY1F;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWtD;AAkCD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,aAAa,CAqE/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAO7C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C"}
@@ -31,9 +31,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
31
31
  Object.defineProperty(exports, "__esModule", { value: true });
32
32
  exports.isUsingUnifiedConfig = exports.getApiProfileNames = exports.listApiProfiles = exports.isApiProfileConfigured = exports.apiProfileExists = void 0;
33
33
  const fs = __importStar(require("fs"));
34
- const path = __importStar(require("path"));
35
34
  const config_manager_1 = require("../../utils/config-manager");
36
35
  const unified_config_loader_1 = require("../../config/unified-config-loader");
36
+ const helpers_1 = require("../../utils/helpers");
37
+ const cliproxy_profile_bridge_1 = require("./cliproxy-profile-bridge");
37
38
  const VALID_TARGETS = new Set(['claude', 'droid']);
38
39
  function sanitizeTarget(target) {
39
40
  if (typeof target === 'string' && VALID_TARGETS.has(target)) {
@@ -59,23 +60,40 @@ function apiProfileExists(name) {
59
60
  }
60
61
  exports.apiProfileExists = apiProfileExists;
61
62
  /**
62
- * Check if API profile has real API key (not placeholder)
63
+ * Load settings file from a config reference such as ~/.ccs/name.settings.json.
63
64
  */
64
- function isApiProfileConfigured(apiName) {
65
+ function loadProfileSettings(settingsReference) {
66
+ if (!settingsReference || settingsReference === 'config.yaml') {
67
+ return null;
68
+ }
65
69
  try {
66
- const ccsDir = (0, config_manager_1.getCcsDir)();
67
- const settingsPath = path.join(ccsDir, `${apiName}.settings.json`);
68
- // Check settings.json file for API key
70
+ const settingsPath = (0, helpers_1.expandPath)(settingsReference);
69
71
  if (!fs.existsSync(settingsPath))
70
- return false;
71
- const settings = JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
72
- const token = settings?.env?.ANTHROPIC_AUTH_TOKEN || settings?.env?.ANTHROPIC_API_KEY || '';
73
- return token.length > 0 && !token.includes('YOUR_') && !token.includes('your-');
72
+ return null;
73
+ return JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
74
74
  }
75
75
  catch {
76
- return false;
76
+ return null;
77
77
  }
78
78
  }
79
+ function isConfiguredFromSettings(settings) {
80
+ const token = settings?.env?.ANTHROPIC_AUTH_TOKEN || settings?.env?.ANTHROPIC_API_KEY || '';
81
+ return token.length > 0 && !token.includes('YOUR_') && !token.includes('your-');
82
+ }
83
+ function resolveProfileSettingsReference(name) {
84
+ if ((0, unified_config_loader_1.isUnifiedMode)()) {
85
+ const config = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
86
+ return config.profiles[name]?.settings;
87
+ }
88
+ const config = (0, config_manager_1.loadConfigSafe)();
89
+ return config.profiles[name];
90
+ }
91
+ /**
92
+ * Check if API profile has real API key (not placeholder)
93
+ */
94
+ function isApiProfileConfigured(apiName) {
95
+ return isConfiguredFromSettings(loadProfileSettings(resolveProfileSettingsReference(apiName)));
96
+ }
79
97
  exports.isApiProfileConfigured = isApiProfileConfigured;
80
98
  /**
81
99
  * List all API profiles
@@ -93,12 +111,15 @@ function listApiProfiles() {
93
111
  if (name === 'default' && profile.settings?.includes('.claude/settings.json')) {
94
112
  continue;
95
113
  }
114
+ const settingsPath = profile.settings || 'config.yaml';
115
+ const settings = loadProfileSettings(settingsPath);
96
116
  profiles.push({
97
117
  name,
98
- settingsPath: profile.settings || 'config.yaml',
99
- isConfigured: isApiProfileConfigured(name),
118
+ settingsPath,
119
+ isConfigured: isConfiguredFromSettings(settings),
100
120
  configSource: 'unified',
101
121
  target: sanitizeTarget(profile.target),
122
+ cliproxyBridge: (0, cliproxy_profile_bridge_1.resolveCliproxyBridgeMetadata)(settings),
102
123
  });
103
124
  }
104
125
  // CLIProxy variants
@@ -123,12 +144,14 @@ function listApiProfiles() {
123
144
  if (name === 'default' && settingsPath.includes('.claude/settings.json')) {
124
145
  continue;
125
146
  }
147
+ const settings = loadProfileSettings(settingsPath);
126
148
  profiles.push({
127
149
  name,
128
150
  settingsPath: settingsPath,
129
- isConfigured: isApiProfileConfigured(name),
151
+ isConfigured: isConfiguredFromSettings(settings),
130
152
  configSource: 'legacy',
131
153
  target: sanitizeTarget(legacyTargetMap?.[name]),
154
+ cliproxyBridge: (0, cliproxy_profile_bridge_1.resolveCliproxyBridgeMetadata)(settings),
132
155
  });
133
156
  }
134
157
  // CLIProxy variants
@@ -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":"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"}
@@ -4,6 +4,7 @@
4
4
  * Shared type definitions for API profile services.
5
5
  */
6
6
  import type { TargetType } from '../../targets/target-adapter';
7
+ import type { CLIProxyProvider } from '../../cliproxy/types';
7
8
  /** Model mapping for API profiles */
8
9
  export interface ModelMapping {
9
10
  default: string;
@@ -18,6 +19,7 @@ export interface ApiProfileInfo {
18
19
  isConfigured: boolean;
19
20
  configSource: 'unified' | 'legacy';
20
21
  target: TargetType;
22
+ cliproxyBridge?: CliproxyBridgeMetadata | null;
21
23
  }
22
24
  /** CLIProxy variant info */
23
25
  export interface CliproxyVariantInfo {
@@ -37,6 +39,39 @@ export interface CreateApiProfileResult {
37
39
  settingsFile: string;
38
40
  error?: string;
39
41
  }
42
+ export interface CliproxyBridgeProviderInfo {
43
+ provider: CLIProxyProvider;
44
+ displayName: string;
45
+ description: string;
46
+ defaultProfileName: string;
47
+ routePath: string;
48
+ }
49
+ export interface CliproxyBridgeMetadata {
50
+ provider: CLIProxyProvider;
51
+ providerDisplayName: string;
52
+ routePath: string;
53
+ currentBaseUrl: string;
54
+ source: 'local' | 'remote';
55
+ usesCurrentTarget: boolean;
56
+ usesCurrentAuthToken: boolean;
57
+ }
58
+ export interface ResolvedCliproxyBridgeProfile {
59
+ name: string;
60
+ provider: CLIProxyProvider;
61
+ providerDisplayName: string;
62
+ baseUrl: string;
63
+ apiKey: string;
64
+ models: ModelMapping;
65
+ target: TargetType;
66
+ routePath: string;
67
+ source: 'local' | 'remote';
68
+ }
69
+ export interface CreateCliproxyBridgeProfileResult extends CreateApiProfileResult {
70
+ name?: string;
71
+ provider?: CLIProxyProvider;
72
+ target?: TargetType;
73
+ cliproxyBridge?: CliproxyBridgeMetadata | null;
74
+ }
40
75
  /** Result from remove operation */
41
76
  export interface RemoveApiProfileResult {
42
77
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"profile-types.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-types.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,13 @@
1
1
  import type { TargetType } from '../../targets/target-adapter';
2
- import type { ModelMapping, CreateApiProfileResult, RemoveApiProfileResult, UpdateApiProfileTargetResult } from './profile-types';
2
+ import type { CLIProxyProvider } from '../../cliproxy/types';
3
+ import type { ModelMapping, CreateApiProfileResult, CreateCliproxyBridgeProfileResult, RemoveApiProfileResult, UpdateApiProfileTargetResult } from './profile-types';
3
4
  /** Create a new API profile */
4
5
  export declare function createApiProfile(name: string, baseUrl: string, apiKey: string, models: ModelMapping, target?: TargetType, provider?: string): CreateApiProfileResult;
6
+ export declare function createCliproxyBridgeProfile(provider: CLIProxyProvider, options?: {
7
+ name?: string;
8
+ force?: boolean;
9
+ target?: TargetType;
10
+ }): CreateCliproxyBridgeProfileResult;
5
11
  /**
6
12
  * Update API profile target (claude/droid).
7
13
  * Persists to config.yaml in unified mode and config.json profile_targets in legacy mode.
@@ -1 +1 @@
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;AA8KzB,+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"}
1
+ {"version":3,"file":"profile-writer.d.ts","sourceRoot":"","sources":["../../../src/api/services/profile-writer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAQ/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,iCAAiC,EACjC,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAmLzB,+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,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;CAChB,GACL,iCAAiC,CAgDnC;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.updateApiProfileTarget = exports.createApiProfile = void 0;
26
+ exports.removeApiProfile = exports.updateApiProfileTarget = exports.createCliproxyBridgeProfile = 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.
@@ -32,11 +32,15 @@ const fs = __importStar(require("fs"));
32
32
  const path = __importStar(require("path"));
33
33
  const config_manager_1 = require("../../utils/config-manager");
34
34
  const helpers_1 = require("../../utils/helpers");
35
+ const validation_service_1 = require("./validation-service");
35
36
  const unified_config_loader_1 = require("../../config/unified-config-loader");
36
37
  const profile_hook_injector_1 = require("../../utils/websearch/profile-hook-injector");
37
38
  const droid_provider_1 = require("../../targets/droid-provider");
39
+ const reserved_names_1 = require("../../config/reserved-names");
38
40
  const provider_capabilities_1 = require("../../cliproxy/provider-capabilities");
39
41
  const model_id_normalizer_1 = require("../../cliproxy/model-id-normalizer");
42
+ const profile_reader_1 = require("./profile-reader");
43
+ const cliproxy_profile_bridge_1 = require("./cliproxy-profile-bridge");
40
44
  /** Check if URL is an OpenRouter endpoint */
41
45
  function isOpenRouterUrl(baseUrl) {
42
46
  return baseUrl.toLowerCase().includes('openrouter.ai');
@@ -201,6 +205,45 @@ function createApiProfile(name, baseUrl, apiKey, models, target = 'claude', prov
201
205
  }
202
206
  }
203
207
  exports.createApiProfile = createApiProfile;
208
+ function createCliproxyBridgeProfile(provider, options = {}) {
209
+ const providedName = options.name?.trim();
210
+ if (providedName) {
211
+ const nameError = (0, validation_service_1.validateApiName)(providedName);
212
+ if (nameError) {
213
+ return { success: false, settingsFile: '', error: nameError };
214
+ }
215
+ if ((0, reserved_names_1.isReservedName)(providedName)) {
216
+ return {
217
+ success: false,
218
+ settingsFile: '',
219
+ error: `Profile name '${providedName}' is reserved`,
220
+ };
221
+ }
222
+ }
223
+ const resolved = (0, cliproxy_profile_bridge_1.resolveCliproxyBridgeProfile)(provider, options);
224
+ const settingsPath = path.join((0, config_manager_1.getCcsDir)(), `${resolved.name}.settings.json`);
225
+ if (!options.force && ((0, profile_reader_1.apiProfileExists)(resolved.name) || fs.existsSync(settingsPath))) {
226
+ return {
227
+ success: false,
228
+ settingsFile: '',
229
+ error: `Profile already exists: ${resolved.name}`,
230
+ };
231
+ }
232
+ const result = createApiProfile(resolved.name, resolved.baseUrl, resolved.apiKey, resolved.models, resolved.target, provider);
233
+ return {
234
+ ...result,
235
+ name: resolved.name,
236
+ provider,
237
+ target: resolved.target,
238
+ cliproxyBridge: (0, cliproxy_profile_bridge_1.resolveCliproxyBridgeMetadata)({
239
+ env: {
240
+ ANTHROPIC_BASE_URL: resolved.baseUrl,
241
+ ANTHROPIC_AUTH_TOKEN: resolved.apiKey,
242
+ },
243
+ }) ?? null,
244
+ };
245
+ }
246
+ exports.createCliproxyBridgeProfile = createCliproxyBridgeProfile;
204
247
  /**
205
248
  * Update API profile target (claude/droid).
206
249
  * Persists to config.yaml in unified mode and config.json profile_targets in legacy mode.