@kaitranntt/ccs 7.73.1 → 7.74.0-dev.2

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 (263) hide show
  1. package/README.md +5 -1
  2. package/config/base-claude.settings.json +1 -1
  3. package/dist/ccs.js +68 -18
  4. package/dist/ccs.js.map +1 -1
  5. package/dist/cliproxy/account-safety.d.ts +11 -0
  6. package/dist/cliproxy/account-safety.d.ts.map +1 -1
  7. package/dist/cliproxy/account-safety.js +114 -1
  8. package/dist/cliproxy/account-safety.js.map +1 -1
  9. package/dist/cliproxy/binary/types.d.ts +3 -3
  10. package/dist/cliproxy/binary/types.d.ts.map +1 -1
  11. package/dist/cliproxy/binary/types.js +3 -3
  12. package/dist/cliproxy/binary/types.js.map +1 -1
  13. package/dist/cliproxy/binary-manager.d.ts +11 -14
  14. package/dist/cliproxy/binary-manager.d.ts.map +1 -1
  15. package/dist/cliproxy/binary-manager.js +56 -42
  16. package/dist/cliproxy/binary-manager.js.map +1 -1
  17. package/dist/cliproxy/catalog-cache.d.ts.map +1 -1
  18. package/dist/cliproxy/catalog-cache.js +7 -0
  19. package/dist/cliproxy/catalog-cache.js.map +1 -1
  20. package/dist/cliproxy/codex-plan-compatibility.d.ts.map +1 -1
  21. package/dist/cliproxy/codex-plan-compatibility.js +1 -0
  22. package/dist/cliproxy/codex-plan-compatibility.js.map +1 -1
  23. package/dist/cliproxy/codex-reasoning-proxy.d.ts +4 -0
  24. package/dist/cliproxy/codex-reasoning-proxy.d.ts.map +1 -1
  25. package/dist/cliproxy/codex-reasoning-proxy.js +41 -20
  26. package/dist/cliproxy/codex-reasoning-proxy.js.map +1 -1
  27. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  28. package/dist/cliproxy/config/env-builder.js +0 -57
  29. package/dist/cliproxy/config/env-builder.js.map +1 -1
  30. package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
  31. package/dist/cliproxy/config/thinking-config.js +9 -1
  32. package/dist/cliproxy/config/thinking-config.js.map +1 -1
  33. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  34. package/dist/cliproxy/executor/env-resolver.js +2 -2
  35. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  36. package/dist/cliproxy/executor/https-tunnel-policy.d.ts +17 -0
  37. package/dist/cliproxy/executor/https-tunnel-policy.d.ts.map +1 -0
  38. package/dist/cliproxy/executor/https-tunnel-policy.js +20 -0
  39. package/dist/cliproxy/executor/https-tunnel-policy.js.map +1 -0
  40. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  41. package/dist/cliproxy/executor/index.js +50 -16
  42. package/dist/cliproxy/executor/index.js.map +1 -1
  43. package/dist/cliproxy/model-catalog.d.ts +1 -1
  44. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  45. package/dist/cliproxy/model-catalog.js +30 -1
  46. package/dist/cliproxy/model-catalog.js.map +1 -1
  47. package/dist/cliproxy/model-config.d.ts.map +1 -1
  48. package/dist/cliproxy/model-config.js +1 -8
  49. package/dist/cliproxy/model-config.js.map +1 -1
  50. package/dist/cliproxy/model-id-normalizer.d.ts +2 -2
  51. package/dist/cliproxy/model-id-normalizer.d.ts.map +1 -1
  52. package/dist/cliproxy/model-id-normalizer.js +20 -9
  53. package/dist/cliproxy/model-id-normalizer.js.map +1 -1
  54. package/dist/cliproxy/platform-detector.d.ts +5 -6
  55. package/dist/cliproxy/platform-detector.d.ts.map +1 -1
  56. package/dist/cliproxy/platform-detector.js +5 -6
  57. package/dist/cliproxy/platform-detector.js.map +1 -1
  58. package/dist/cliproxy/quota-manager.d.ts.map +1 -1
  59. package/dist/cliproxy/quota-manager.js +25 -2
  60. package/dist/cliproxy/quota-manager.js.map +1 -1
  61. package/dist/cliproxy/services/binary-service.d.ts.map +1 -1
  62. package/dist/cliproxy/services/binary-service.js +7 -14
  63. package/dist/cliproxy/services/binary-service.js.map +1 -1
  64. package/dist/cliproxy/services/variant-service.d.ts +2 -2
  65. package/dist/cliproxy/services/variant-service.js +2 -2
  66. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
  67. package/dist/cliproxy/services/variant-settings.js +2 -4
  68. package/dist/cliproxy/services/variant-settings.js.map +1 -1
  69. package/dist/cliproxy/thinking-validator.d.ts +6 -1
  70. package/dist/cliproxy/thinking-validator.d.ts.map +1 -1
  71. package/dist/cliproxy/thinking-validator.js +22 -2
  72. package/dist/cliproxy/thinking-validator.js.map +1 -1
  73. package/dist/cliproxy/tool-sanitization-proxy.d.ts +4 -0
  74. package/dist/cliproxy/tool-sanitization-proxy.d.ts.map +1 -1
  75. package/dist/cliproxy/tool-sanitization-proxy.js +49 -27
  76. package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -1
  77. package/dist/cliproxy/types.d.ts +3 -4
  78. package/dist/cliproxy/types.d.ts.map +1 -1
  79. package/dist/cliproxy/types.js.map +1 -1
  80. package/dist/commands/browser-command.d.ts.map +1 -1
  81. package/dist/commands/browser-command.js +243 -12
  82. package/dist/commands/browser-command.js.map +1 -1
  83. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  84. package/dist/commands/cliproxy/help-subcommand.js +2 -2
  85. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  86. package/dist/commands/command-catalog.d.ts +1 -1
  87. package/dist/commands/command-catalog.d.ts.map +1 -1
  88. package/dist/commands/command-catalog.js +4 -2
  89. package/dist/commands/command-catalog.js.map +1 -1
  90. package/dist/commands/completion-backend.d.ts.map +1 -1
  91. package/dist/commands/completion-backend.js +21 -0
  92. package/dist/commands/completion-backend.js.map +1 -1
  93. package/dist/commands/config-thinking-command.js +1 -1
  94. package/dist/commands/config-thinking-command.js.map +1 -1
  95. package/dist/commands/proxy-command.d.ts +1 -0
  96. package/dist/commands/proxy-command.d.ts.map +1 -1
  97. package/dist/commands/proxy-command.js +105 -25
  98. package/dist/commands/proxy-command.js.map +1 -1
  99. package/dist/config/unified-config-loader.d.ts.map +1 -1
  100. package/dist/config/unified-config-loader.js +32 -6
  101. package/dist/config/unified-config-loader.js.map +1 -1
  102. package/dist/config/unified-config-types.d.ts +17 -2
  103. package/dist/config/unified-config-types.d.ts.map +1 -1
  104. package/dist/config/unified-config-types.js +10 -2
  105. package/dist/config/unified-config-types.js.map +1 -1
  106. package/dist/cursor/cursor-anthropic-translator.d.ts.map +1 -1
  107. package/dist/cursor/cursor-anthropic-translator.js +17 -3
  108. package/dist/cursor/cursor-anthropic-translator.js.map +1 -1
  109. package/dist/cursor/cursor-anthropic-types.d.ts +3 -0
  110. package/dist/cursor/cursor-anthropic-types.d.ts.map +1 -1
  111. package/dist/cursor/cursor-default-models.d.ts +1 -1
  112. package/dist/cursor/cursor-default-models.d.ts.map +1 -1
  113. package/dist/cursor/cursor-default-models.js +11 -1
  114. package/dist/cursor/cursor-default-models.js.map +1 -1
  115. package/dist/delegation/headless-executor.d.ts.map +1 -1
  116. package/dist/delegation/headless-executor.js +29 -2
  117. package/dist/delegation/headless-executor.js.map +1 -1
  118. package/dist/glmt/delta-accumulator.d.ts +4 -0
  119. package/dist/glmt/delta-accumulator.d.ts.map +1 -1
  120. package/dist/glmt/delta-accumulator.js +17 -5
  121. package/dist/glmt/delta-accumulator.js.map +1 -1
  122. package/dist/glmt/pipeline/stream-parser.d.ts +0 -3
  123. package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -1
  124. package/dist/glmt/pipeline/stream-parser.js +20 -27
  125. package/dist/glmt/pipeline/stream-parser.js.map +1 -1
  126. package/dist/glmt/pipeline/tool-call-handler.d.ts +0 -7
  127. package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -1
  128. package/dist/glmt/pipeline/tool-call-handler.js +15 -24
  129. package/dist/glmt/pipeline/tool-call-handler.js.map +1 -1
  130. package/dist/proxy/index.d.ts +1 -0
  131. package/dist/proxy/index.d.ts.map +1 -1
  132. package/dist/proxy/index.js +1 -0
  133. package/dist/proxy/index.js.map +1 -1
  134. package/dist/proxy/proxy-daemon-entry.js +2 -1
  135. package/dist/proxy/proxy-daemon-entry.js.map +1 -1
  136. package/dist/proxy/proxy-daemon-paths.d.ts +9 -3
  137. package/dist/proxy/proxy-daemon-paths.d.ts.map +1 -1
  138. package/dist/proxy/proxy-daemon-paths.js +21 -6
  139. package/dist/proxy/proxy-daemon-paths.js.map +1 -1
  140. package/dist/proxy/proxy-daemon-state.d.ts +10 -5
  141. package/dist/proxy/proxy-daemon-state.d.ts.map +1 -1
  142. package/dist/proxy/proxy-daemon-state.js +81 -12
  143. package/dist/proxy/proxy-daemon-state.js.map +1 -1
  144. package/dist/proxy/proxy-daemon.d.ts +4 -3
  145. package/dist/proxy/proxy-daemon.d.ts.map +1 -1
  146. package/dist/proxy/proxy-daemon.js +351 -92
  147. package/dist/proxy/proxy-daemon.js.map +1 -1
  148. package/dist/proxy/proxy-port-resolver.d.ts +9 -0
  149. package/dist/proxy/proxy-port-resolver.d.ts.map +1 -0
  150. package/dist/proxy/proxy-port-resolver.js +62 -0
  151. package/dist/proxy/proxy-port-resolver.js.map +1 -0
  152. package/dist/proxy/server/messages-route.d.ts.map +1 -1
  153. package/dist/proxy/server/messages-route.js +2 -7
  154. package/dist/proxy/server/messages-route.js.map +1 -1
  155. package/dist/proxy/server/proxy-server.d.ts.map +1 -1
  156. package/dist/proxy/server/proxy-server.js +35 -23
  157. package/dist/proxy/server/proxy-server.js.map +1 -1
  158. package/dist/proxy/transformers/request-transformer.d.ts.map +1 -1
  159. package/dist/proxy/transformers/request-transformer.js +23 -18
  160. package/dist/proxy/transformers/request-transformer.js.map +1 -1
  161. package/dist/targets/claude-adapter.d.ts.map +1 -1
  162. package/dist/targets/claude-adapter.js +2 -2
  163. package/dist/targets/claude-adapter.js.map +1 -1
  164. package/dist/targets/codex-adapter.d.ts.map +1 -1
  165. package/dist/targets/codex-adapter.js +1 -1
  166. package/dist/targets/codex-adapter.js.map +1 -1
  167. package/dist/targets/droid-config-manager.d.ts.map +1 -1
  168. package/dist/targets/droid-config-manager.js +40 -0
  169. package/dist/targets/droid-config-manager.js.map +1 -1
  170. package/dist/targets/target-resolver.d.ts.map +1 -1
  171. package/dist/targets/target-resolver.js +15 -0
  172. package/dist/targets/target-resolver.js.map +1 -1
  173. package/dist/ui/assets/{accounts-BNSlujHd.js → accounts-BGE0yjYy.js} +1 -1
  174. package/dist/ui/assets/{alert-dialog-DHK6l5WN.js → alert-dialog-DuiOADsV.js} +1 -1
  175. package/dist/ui/assets/{api-Bixmu-o6.js → api-Guj515aS.js} +1 -1
  176. package/dist/ui/assets/{auth-section-BXHLEs4g.js → auth-section-SAQbhr1I.js} +1 -1
  177. package/dist/ui/assets/{backups-section-BWGX4IT_.js → backups-section-DDvlWpiu.js} +1 -1
  178. package/dist/ui/assets/{channels-Du6Q5wGz.js → channels-BplAqAOq.js} +1 -1
  179. package/dist/ui/assets/{checkbox-CdduUSQP.js → checkbox-BOkFW5T7.js} +1 -1
  180. package/dist/ui/assets/{claude-extension-D407M3LZ.js → claude-extension-n_MuC68N.js} +1 -1
  181. package/dist/ui/assets/cliproxy-WWj2GyJE.js +3 -0
  182. package/dist/ui/assets/{cliproxy-ai-providers-BRrCP6ap.js → cliproxy-ai-providers-B70CiXmm.js} +1 -1
  183. package/dist/ui/assets/{cliproxy-control-panel-_Yccw80J.js → cliproxy-control-panel-B7FrWnuW.js} +1 -1
  184. package/dist/ui/assets/codex-BoljmCX9.js +27 -0
  185. package/dist/ui/assets/{confirm-dialog-0poiyBAw.js → confirm-dialog-D73zMOJ7.js} +1 -1
  186. package/dist/ui/assets/{copilot-8xH7Nk9a.js → copilot-CmS0DhuS.js} +1 -1
  187. package/dist/ui/assets/{cursor-Dgg-ni59.js → cursor-btzq1F22.js} +1 -1
  188. package/dist/ui/assets/{droid-CDpc1L0C.js → droid-Dt-4f5BE.js} +1 -1
  189. package/dist/ui/assets/{globalenv-section-CcdoEVNK.js → globalenv-section-DWWZ9ERp.js} +1 -1
  190. package/dist/ui/assets/{health-dj20C2Gn.js → health-CuzprvVL.js} +1 -1
  191. package/dist/ui/assets/icons-DyorC3Xk.js +1 -0
  192. package/dist/ui/assets/{index-CQp8Tx8Q.js → index-CA5Km3DW.js} +1 -1
  193. package/dist/ui/assets/{index-DumrYfrM.js → index-CHCBgQxw.js} +1 -1
  194. package/dist/ui/assets/index-ClrCKbzh.js +1 -0
  195. package/dist/ui/assets/index-DEqhujvv.js +9 -0
  196. package/dist/ui/assets/index-DPiX3K4c.js +1 -0
  197. package/dist/ui/assets/{index-CJgNAOTk.js → index-DQXr3j8J.js} +1 -1
  198. package/dist/ui/assets/index-DhAjOd4r.js +72 -0
  199. package/dist/ui/assets/{logs-qfToZXwm.js → logs-CabVgAOr.js} +1 -1
  200. package/dist/ui/assets/{masked-input-BMznu3pB.js → masked-input-4lwOg03z.js} +1 -1
  201. package/dist/ui/assets/{proxy-status-widget-BaDK8Rtz.js → proxy-status-widget-C6Ctzus0.js} +1 -1
  202. package/dist/ui/assets/{raw-json-settings-editor-panel-DgDt3Vlv.js → raw-json-settings-editor-panel-upVhpuik.js} +1 -1
  203. package/dist/ui/assets/{searchable-select-7ZDkhIXd.js → searchable-select-DkL__exx.js} +1 -1
  204. package/dist/ui/assets/{separator-BjiPsa_I.js → separator-fWUi3UIY.js} +1 -1
  205. package/dist/ui/assets/{shared-B-IiUz1s.js → shared-I-FRJqTw.js} +1 -1
  206. package/dist/ui/assets/{table-BrWMZ3pU.js → table-D3mrbj8H.js} +1 -1
  207. package/dist/ui/assets/{updates-CxJ8al_e.js → updates-2HIhdejN.js} +1 -1
  208. package/dist/ui/index.html +2 -2
  209. package/dist/utils/browser/browser-policy.d.ts +22 -0
  210. package/dist/utils/browser/browser-policy.d.ts.map +1 -0
  211. package/dist/utils/browser/browser-policy.js +65 -0
  212. package/dist/utils/browser/browser-policy.js.map +1 -0
  213. package/dist/utils/browser/browser-settings.d.ts +11 -2
  214. package/dist/utils/browser/browser-settings.d.ts.map +1 -1
  215. package/dist/utils/browser/browser-settings.js +65 -42
  216. package/dist/utils/browser/browser-settings.js.map +1 -1
  217. package/dist/utils/browser/browser-setup.d.ts +21 -0
  218. package/dist/utils/browser/browser-setup.d.ts.map +1 -0
  219. package/dist/utils/browser/browser-setup.js +68 -0
  220. package/dist/utils/browser/browser-setup.js.map +1 -0
  221. package/dist/utils/browser/browser-status.d.ts +8 -5
  222. package/dist/utils/browser/browser-status.d.ts.map +1 -1
  223. package/dist/utils/browser/browser-status.js +97 -33
  224. package/dist/utils/browser/browser-status.js.map +1 -1
  225. package/dist/utils/browser/index.d.ts +7 -3
  226. package/dist/utils/browser/index.d.ts.map +1 -1
  227. package/dist/utils/browser/index.js +15 -1
  228. package/dist/utils/browser/index.js.map +1 -1
  229. package/dist/utils/config-manager.d.ts +5 -0
  230. package/dist/utils/config-manager.d.ts.map +1 -1
  231. package/dist/utils/config-manager.js +16 -3
  232. package/dist/utils/config-manager.js.map +1 -1
  233. package/dist/utils/hooks/get-image-analysis-hook-env.d.ts.map +1 -1
  234. package/dist/utils/hooks/get-image-analysis-hook-env.js +7 -3
  235. package/dist/utils/hooks/get-image-analysis-hook-env.js.map +1 -1
  236. package/dist/utils/shell-executor.d.ts +14 -0
  237. package/dist/utils/shell-executor.d.ts.map +1 -1
  238. package/dist/utils/shell-executor.js +98 -23
  239. package/dist/utils/shell-executor.js.map +1 -1
  240. package/dist/web-server/middleware/auth-middleware.d.ts +2 -2
  241. package/dist/web-server/middleware/auth-middleware.d.ts.map +1 -1
  242. package/dist/web-server/middleware/auth-middleware.js.map +1 -1
  243. package/dist/web-server/model-pricing.d.ts.map +1 -1
  244. package/dist/web-server/model-pricing.js +7 -0
  245. package/dist/web-server/model-pricing.js.map +1 -1
  246. package/dist/web-server/routes/browser-routes.d.ts.map +1 -1
  247. package/dist/web-server/routes/browser-routes.js +76 -10
  248. package/dist/web-server/routes/browser-routes.js.map +1 -1
  249. package/dist/web-server/services/cliproxy-dashboard-install-service.d.ts.map +1 -1
  250. package/dist/web-server/services/cliproxy-dashboard-install-service.js +1 -2
  251. package/dist/web-server/services/cliproxy-dashboard-install-service.js.map +1 -1
  252. package/lib/mcp/ccs-browser-server.cjs +5727 -424
  253. package/package.json +5 -3
  254. package/scripts/ci-parity-gate.sh +11 -3
  255. package/scripts/ensure-deps.sh +18 -0
  256. package/scripts/run-test-bucket.js +186 -0
  257. package/dist/ui/assets/cliproxy-BcXcp3jL.js +0 -3
  258. package/dist/ui/assets/codex-C-Aq41_4.js +0 -27
  259. package/dist/ui/assets/icons-Dmi9qMuE.js +0 -1
  260. package/dist/ui/assets/index-B2ffORVS.js +0 -9
  261. package/dist/ui/assets/index-BPjLIQ2v.js +0 -1
  262. package/dist/ui/assets/index-DJiXf8E8.js +0 -1
  263. package/dist/ui/assets/index-TR572mqL.js +0 -72
@@ -23,16 +23,27 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.startOpenAICompatProxy = exports.stopOpenAICompatProxy = exports.getOpenAICompatProxyStatus = exports.isOpenAICompatProxyRunning = void 0;
26
+ exports.startOpenAICompatProxy = exports.stopOpenAICompatProxy = exports.getOpenAICompatProxyStatus = exports.listOpenAICompatProxyStatuses = exports.isOpenAICompatProxyRunning = void 0;
27
27
  const child_process_1 = require("child_process");
28
28
  const crypto = __importStar(require("crypto"));
29
29
  const fs = __importStar(require("fs"));
30
30
  const http = __importStar(require("http"));
31
- const net = __importStar(require("net"));
32
31
  const lockfile = __importStar(require("proper-lockfile"));
33
32
  const daemon_process_ownership_1 = require("../cursor/daemon-process-ownership");
34
33
  const proxy_daemon_paths_1 = require("./proxy-daemon-paths");
35
34
  const proxy_daemon_state_1 = require("./proxy-daemon-state");
35
+ const proxy_port_resolver_1 = require("./proxy-port-resolver");
36
+ function escapeRegExp(value) {
37
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
38
+ }
39
+ function verifyProxyProcessOwnership(pid, profileName) {
40
+ const profilePattern = profileName
41
+ ? new RegExp(`(^|\\s)--profile(?:\\s+|=)${escapeRegExp(profileName)}(?=\\s|$)`)
42
+ : null;
43
+ return (0, daemon_process_ownership_1.verifyProcessOwnership)(pid, (commandLine) => commandLine.includes('--ccs-openai-proxy-daemon') &&
44
+ commandLine.includes('proxy-daemon-entry') &&
45
+ (!profilePattern || profilePattern.test(commandLine)));
46
+ }
36
47
  function generateProxyAuthToken() {
37
48
  return crypto.randomBytes(24).toString('hex');
38
49
  }
@@ -64,28 +75,43 @@ async function withOpenAICompatProxyLock(operation) {
64
75
  }
65
76
  }
66
77
  }
67
- async function isPortOccupied(port) {
68
- return new Promise((resolve) => {
69
- const socket = net.createConnection({ host: '127.0.0.1', port });
70
- const finish = (occupied) => {
71
- socket.removeAllListeners();
72
- socket.destroy();
73
- resolve(occupied);
74
- };
75
- socket.once('connect', () => finish(true));
76
- socket.once('error', () => finish(false));
77
- socket.setTimeout(500, () => {
78
- finish(false);
79
- });
80
- });
81
- }
82
- async function findOpenAICompatProxyPort() {
83
- for (let candidate = proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_DEFAULT_PORT; candidate <= proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_DEFAULT_PORT + 10; candidate += 1) {
84
- if (!(await isPortOccupied(candidate))) {
85
- return candidate;
78
+ async function terminateDaemonProcess(pid) {
79
+ if (!pid) {
80
+ return;
81
+ }
82
+ try {
83
+ process.kill(pid, 'SIGTERM');
84
+ let attempts = 0;
85
+ while (attempts < 10) {
86
+ await new Promise((resolve) => setTimeout(resolve, 200));
87
+ try {
88
+ process.kill(pid, 0);
89
+ attempts += 1;
90
+ }
91
+ catch {
92
+ return;
93
+ }
86
94
  }
95
+ process.kill(pid, 'SIGKILL');
96
+ }
97
+ catch {
98
+ // Best-effort cleanup for a daemon we just spawned.
99
+ }
100
+ }
101
+ function listOpenAICompatProxyCandidatePorts(profileName, preferredPort, exact, excludedPorts = new Set()) {
102
+ if (exact) {
103
+ return excludedPorts.has(preferredPort) ? [] : [preferredPort];
104
+ }
105
+ return (0, proxy_port_resolver_1.listOpenAICompatProxyCandidatePorts)(profileName, preferredPort, excludedPorts);
106
+ }
107
+ function isPortBindConflictMessage(message) {
108
+ if (!message) {
109
+ return false;
87
110
  }
88
- return 0;
111
+ const normalized = message.toLowerCase();
112
+ return (message.includes('EADDRINUSE') ||
113
+ normalized.includes('address already in use') ||
114
+ (normalized.includes('is port') && normalized.includes('in use')));
89
115
  }
90
116
  async function resolveDaemonEntrypoint() {
91
117
  for (const candidate of (0, proxy_daemon_state_1.resolveOpenAICompatProxyEntrypointCandidates)()) {
@@ -99,7 +125,7 @@ async function resolveDaemonEntrypoint() {
99
125
  }
100
126
  return null;
101
127
  }
102
- async function isOpenAICompatProxyRunning(port) {
128
+ async function isOpenAICompatProxyRunning(port, expectedProfileName) {
103
129
  return new Promise((resolve) => {
104
130
  const req = http.request({ hostname: '127.0.0.1', port, path: '/health', method: 'GET', timeout: 3000 }, (res) => {
105
131
  let body = '';
@@ -112,7 +138,8 @@ async function isOpenAICompatProxyRunning(port) {
112
138
  }
113
139
  try {
114
140
  const payload = JSON.parse(body);
115
- resolve(payload.service === proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_SERVICE_NAME);
141
+ resolve(payload.service === proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_SERVICE_NAME &&
142
+ (!expectedProfileName || payload.profile === expectedProfileName));
116
143
  }
117
144
  catch {
118
145
  resolve(false);
@@ -128,27 +155,96 @@ async function isOpenAICompatProxyRunning(port) {
128
155
  });
129
156
  }
130
157
  exports.isOpenAICompatProxyRunning = isOpenAICompatProxyRunning;
131
- async function getOpenAICompatProxyStatus() {
132
- const session = (0, proxy_daemon_state_1.readOpenAICompatProxySession)();
133
- const port = session?.port ?? proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_DEFAULT_PORT;
134
- const running = await isOpenAICompatProxyRunning(port);
158
+ async function getOpenAICompatProxyStatusForProfile(profileName) {
159
+ const state = getOpenAICompatProxyStateForProfile(profileName);
160
+ const session = state.session;
161
+ if (!session) {
162
+ return { running: false, profileName, pid: state.pid || undefined };
163
+ }
164
+ const port = session.port;
165
+ const running = await isOpenAICompatProxyRunning(port, profileName);
135
166
  return {
136
167
  running,
137
- pid: running ? (0, proxy_daemon_state_1.getOpenAICompatProxyPid)() || undefined : undefined,
168
+ pid: running ? state.pid || undefined : undefined,
138
169
  ...session,
139
170
  };
140
171
  }
172
+ async function getLegacyOpenAICompatProxyStatus() {
173
+ const session = (0, proxy_daemon_state_1.readLegacyOpenAICompatProxySession)();
174
+ const pid = (0, proxy_daemon_state_1.getLegacyOpenAICompatProxyPid)();
175
+ if (!session && !pid) {
176
+ return null;
177
+ }
178
+ const port = session?.port;
179
+ const running = typeof port === 'number' ? await isOpenAICompatProxyRunning(port, session?.profileName) : false;
180
+ return {
181
+ running,
182
+ pid: running ? pid || undefined : pid || undefined,
183
+ ...session,
184
+ };
185
+ }
186
+ function getOpenAICompatProxyStateForProfile(profileName) {
187
+ const session = (0, proxy_daemon_state_1.readOpenAICompatProxySession)(profileName);
188
+ if (session) {
189
+ return {
190
+ pid: (0, proxy_daemon_state_1.getOpenAICompatProxyPid)(profileName),
191
+ session,
192
+ source: 'profile',
193
+ };
194
+ }
195
+ const legacySession = (0, proxy_daemon_state_1.readLegacyOpenAICompatProxySession)();
196
+ if (legacySession?.profileName === profileName) {
197
+ return {
198
+ pid: (0, proxy_daemon_state_1.getLegacyOpenAICompatProxyPid)(),
199
+ session: legacySession,
200
+ source: 'legacy',
201
+ };
202
+ }
203
+ return { pid: null, session: null, source: 'profile' };
204
+ }
205
+ async function listOpenAICompatProxyStatuses() {
206
+ const profileNames = new Set((0, proxy_daemon_state_1.listOpenAICompatProxyProfileNames)());
207
+ const legacySession = (0, proxy_daemon_state_1.readLegacyOpenAICompatProxySession)();
208
+ if (legacySession?.profileName) {
209
+ profileNames.add(legacySession.profileName);
210
+ }
211
+ const profileStatuses = await Promise.all([...profileNames].map((profileName) => getOpenAICompatProxyStatusForProfile(profileName)));
212
+ const statuses = profileStatuses.filter((status) => status.profileName);
213
+ if (!legacySession?.profileName) {
214
+ const legacyStatus = await getLegacyOpenAICompatProxyStatus();
215
+ if (legacyStatus) {
216
+ statuses.push(legacyStatus);
217
+ }
218
+ }
219
+ return statuses;
220
+ }
221
+ exports.listOpenAICompatProxyStatuses = listOpenAICompatProxyStatuses;
222
+ async function getOpenAICompatProxyStatus(profileName) {
223
+ if (profileName) {
224
+ return getOpenAICompatProxyStatusForProfile(profileName);
225
+ }
226
+ const statuses = await listOpenAICompatProxyStatuses();
227
+ const running = statuses.filter((status) => status.running);
228
+ if (running.length === 1) {
229
+ return running[0];
230
+ }
231
+ if (running.length > 1) {
232
+ return { running: true };
233
+ }
234
+ const latestKnown = statuses[0];
235
+ return latestKnown ?? { running: false };
236
+ }
141
237
  exports.getOpenAICompatProxyStatus = getOpenAICompatProxyStatus;
142
- async function stopOpenAICompatProxyUnlocked() {
143
- const pid = (0, proxy_daemon_state_1.getOpenAICompatProxyPid)();
238
+ async function stopOpenAICompatProxyUnlocked(profileName) {
239
+ const state = getOpenAICompatProxyStateForProfile(profileName);
240
+ const pid = state.pid;
144
241
  if (!pid) {
145
- (0, proxy_daemon_state_1.removeOpenAICompatProxySession)();
242
+ removeOpenAICompatProxyState(state, profileName);
146
243
  return { success: true };
147
244
  }
148
- const ownership = (0, daemon_process_ownership_1.verifyProcessOwnership)(pid, (commandLine) => commandLine.includes('--ccs-openai-proxy-daemon') &&
149
- commandLine.includes('proxy-daemon-entry'));
245
+ const ownership = verifyProxyProcessOwnership(pid, profileName);
150
246
  if (ownership === 'not-owned') {
151
- (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)();
247
+ removeOpenAICompatProxyState(state, profileName);
152
248
  return { success: true };
153
249
  }
154
250
  if (ownership === 'unknown') {
@@ -158,10 +254,63 @@ async function stopOpenAICompatProxyUnlocked() {
158
254
  };
159
255
  }
160
256
  if (ownership === 'not-running') {
161
- (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)();
162
- (0, proxy_daemon_state_1.removeOpenAICompatProxySession)();
257
+ removeOpenAICompatProxyState(state, profileName);
258
+ return { success: true };
259
+ }
260
+ try {
261
+ process.kill(pid, 'SIGTERM');
262
+ let attempts = 0;
263
+ while (attempts < 10) {
264
+ await new Promise((resolve) => setTimeout(resolve, 500));
265
+ try {
266
+ process.kill(pid, 0);
267
+ attempts += 1;
268
+ }
269
+ catch {
270
+ break;
271
+ }
272
+ }
273
+ if (attempts >= 10) {
274
+ try {
275
+ process.kill(pid, 'SIGKILL');
276
+ }
277
+ catch {
278
+ // Already exited.
279
+ }
280
+ }
281
+ }
282
+ catch (error) {
283
+ const err = error;
284
+ if (err.code !== 'ESRCH') {
285
+ return { success: false, error: `Failed to stop daemon: ${err.message}` };
286
+ }
287
+ }
288
+ removeOpenAICompatProxyState(state, profileName);
289
+ return { success: true };
290
+ }
291
+ async function stopLegacyOpenAICompatProxyUnlocked() {
292
+ const legacySession = (0, proxy_daemon_state_1.readLegacyOpenAICompatProxySession)();
293
+ if (legacySession?.profileName) {
294
+ return stopOpenAICompatProxyUnlocked(legacySession.profileName);
295
+ }
296
+ const pid = (0, proxy_daemon_state_1.getLegacyOpenAICompatProxyPid)();
297
+ if (!pid) {
298
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxyPid)();
299
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxySession)();
300
+ return { success: true };
301
+ }
302
+ const ownership = verifyProxyProcessOwnership(pid);
303
+ if (ownership === 'not-owned' || ownership === 'not-running') {
304
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxyPid)();
305
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxySession)();
163
306
  return { success: true };
164
307
  }
308
+ if (ownership === 'unknown') {
309
+ return {
310
+ success: false,
311
+ error: `Refusing to stop PID ${pid}: unable to verify daemon ownership`,
312
+ };
313
+ }
165
314
  try {
166
315
  process.kill(pid, 'SIGTERM');
167
316
  let attempts = 0;
@@ -190,59 +339,83 @@ async function stopOpenAICompatProxyUnlocked() {
190
339
  return { success: false, error: `Failed to stop daemon: ${err.message}` };
191
340
  }
192
341
  }
193
- (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)();
194
- (0, proxy_daemon_state_1.removeOpenAICompatProxySession)();
342
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxyPid)();
343
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxySession)();
195
344
  return { success: true };
196
345
  }
197
- async function stopOpenAICompatProxy() {
198
- return withOpenAICompatProxyLock(() => stopOpenAICompatProxyUnlocked());
346
+ function removeOpenAICompatProxyState(state, profileName) {
347
+ if (state.source === 'legacy') {
348
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxyPid)();
349
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxySession)();
350
+ return;
351
+ }
352
+ (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)(profileName);
353
+ (0, proxy_daemon_state_1.removeOpenAICompatProxySession)(profileName);
354
+ }
355
+ async function stopOpenAICompatProxy(profileName) {
356
+ return withOpenAICompatProxyLock(async () => {
357
+ if (profileName) {
358
+ return stopOpenAICompatProxyUnlocked(profileName);
359
+ }
360
+ const statuses = await listOpenAICompatProxyStatuses();
361
+ const failures = [];
362
+ for (const status of statuses) {
363
+ const stopped = status.profileName
364
+ ? await stopOpenAICompatProxyUnlocked(status.profileName)
365
+ : await stopLegacyOpenAICompatProxyUnlocked();
366
+ if (!stopped.success) {
367
+ failures.push(status.profileName
368
+ ? `${status.profileName}: ${stopped.error || 'failed to stop proxy'}`
369
+ : `legacy proxy: ${stopped.error || 'failed to stop proxy'}`);
370
+ }
371
+ }
372
+ if (failures.length > 0) {
373
+ return { success: false, error: `Failed to stop some proxies: ${failures.join('; ')}` };
374
+ }
375
+ return { success: true };
376
+ });
199
377
  }
200
378
  exports.stopOpenAICompatProxy = stopOpenAICompatProxy;
201
379
  async function startOpenAICompatProxy(profile, options = {}) {
202
380
  return withOpenAICompatProxyLock(async () => {
203
- const status = await getOpenAICompatProxyStatus();
381
+ const status = await getOpenAICompatProxyStatus(profile.profileName);
204
382
  const host = options.host?.trim() || status.host || '127.0.0.1';
205
- const port = typeof options.port === 'number'
206
- ? options.port
207
- : status.running && status.profileName === profile.profileName && status.port
208
- ? status.port
209
- : await findOpenAICompatProxyPort();
210
- if (port === 0) {
383
+ const portPreference = (0, proxy_port_resolver_1.resolveOpenAICompatProxyPortPreference)(profile.profileName);
384
+ const explicitPort = typeof options.port === 'number' ? options.port : undefined;
385
+ const requiresExactPort = explicitPort !== undefined || portPreference.source === 'profile';
386
+ if (status.running &&
387
+ explicitPort === undefined &&
388
+ portPreference.source !== 'profile' &&
389
+ status.port &&
390
+ (status.host || '127.0.0.1') === host) {
211
391
  return {
212
- success: false,
213
- port: proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_DEFAULT_PORT,
214
- error: `No free proxy port found in range ${proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_DEFAULT_PORT}-${proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_DEFAULT_PORT + 10}`,
392
+ success: true,
393
+ alreadyRunning: true,
394
+ pid: status.pid,
395
+ port: status.port,
396
+ authToken: status.authToken,
215
397
  };
216
398
  }
217
- if (!Number.isInteger(port) || port < 1 || port > 65535) {
218
- return { success: false, port, error: `Invalid port: ${port}` };
219
- }
220
- if (status.running &&
221
- status.profileName === profile.profileName &&
222
- status.port === port &&
223
- (status.host || '127.0.0.1') === host) {
399
+ const preferredPort = explicitPort ?? portPreference.port;
400
+ if (status.running && status.port === preferredPort && (status.host || '127.0.0.1') === host) {
224
401
  return {
225
402
  success: true,
226
403
  alreadyRunning: true,
227
404
  pid: status.pid,
228
- port,
405
+ port: preferredPort,
229
406
  authToken: status.authToken,
230
407
  };
231
408
  }
232
- if (status.running) {
233
- if (status.profileName !== profile.profileName) {
234
- return {
235
- success: false,
236
- port,
237
- error: `Proxy already running for profile "${status.profileName}" on port ${status.port}. Stop it before starting a different profile.`,
238
- };
239
- }
240
- const stopped = await stopOpenAICompatProxyUnlocked();
409
+ if (!Number.isInteger(preferredPort) || preferredPort < 1 || preferredPort > 65535) {
410
+ return { success: false, port: preferredPort, error: `Invalid port: ${preferredPort}` };
411
+ }
412
+ if (status.pid && !status.port) {
413
+ const stopped = await stopOpenAICompatProxyUnlocked(profile.profileName);
241
414
  if (!stopped.success) {
242
415
  return {
243
416
  success: false,
244
- port,
245
- error: stopped.error || 'Failed to restart the running proxy',
417
+ port: preferredPort,
418
+ error: stopped.error || 'Failed to clear stale proxy state',
246
419
  };
247
420
  }
248
421
  }
@@ -250,23 +423,39 @@ async function startOpenAICompatProxy(profile, options = {}) {
250
423
  if (!daemonEntry) {
251
424
  return {
252
425
  success: false,
253
- port,
426
+ port: preferredPort,
254
427
  error: 'OpenAI proxy daemon entrypoint not found. Run `bun run build` and retry.',
255
428
  };
256
429
  }
257
- return new Promise((resolve) => {
430
+ const launchOnPort = (port, persistState) => new Promise((resolve) => {
258
431
  let resolved = false;
259
432
  let timeout = null;
433
+ let stderr = '';
260
434
  const authToken = generateProxyAuthToken();
435
+ const commitState = () => {
436
+ if (proc.pid) {
437
+ (0, proxy_daemon_state_1.writeOpenAICompatProxyPid)(profile.profileName, proc.pid);
438
+ }
439
+ (0, proxy_daemon_state_1.writeOpenAICompatProxySession)({
440
+ profileName: profile.profileName,
441
+ settingsPath: profile.settingsPath,
442
+ host,
443
+ port,
444
+ baseUrl: profile.baseUrl,
445
+ authToken,
446
+ model: profile.model,
447
+ insecure: options.insecure,
448
+ });
449
+ };
261
450
  const finish = (result) => {
262
451
  if (resolved)
263
452
  return;
264
453
  resolved = true;
265
454
  if (timeout)
266
455
  clearTimeout(timeout);
267
- if (!result.success) {
268
- (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)();
269
- (0, proxy_daemon_state_1.removeOpenAICompatProxySession)();
456
+ if (!result.success && persistState) {
457
+ (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)(profile.profileName);
458
+ (0, proxy_daemon_state_1.removeOpenAICompatProxySession)(profile.profileName);
270
459
  }
271
460
  resolve(result);
272
461
  };
@@ -284,26 +473,33 @@ async function startOpenAICompatProxy(profile, options = {}) {
284
473
  authToken,
285
474
  ...(options.insecure ? ['--insecure'] : []),
286
475
  '--ccs-openai-proxy-daemon',
287
- ], { stdio: 'ignore', detached: true });
476
+ ], { stdio: ['ignore', 'ignore', 'pipe'], detached: true });
288
477
  proc.unref();
289
- if (proc.pid) {
290
- (0, proxy_daemon_state_1.writeOpenAICompatProxyPid)(proc.pid);
291
- }
292
- (0, proxy_daemon_state_1.writeOpenAICompatProxySession)({
293
- profileName: profile.profileName,
294
- settingsPath: profile.settingsPath,
295
- host,
296
- port,
297
- baseUrl: profile.baseUrl,
298
- authToken,
299
- model: profile.model,
300
- insecure: options.insecure,
478
+ proc.stderr?.setEncoding('utf8');
479
+ proc.stderr?.on('data', (chunk) => {
480
+ stderr += chunk;
301
481
  });
302
482
  let attempts = 0;
303
483
  const poll = async () => {
304
484
  attempts += 1;
305
- if (await isOpenAICompatProxyRunning(port)) {
306
- finish({ success: true, pid: proc.pid, port, authToken });
485
+ if (await isOpenAICompatProxyRunning(port, profile.profileName)) {
486
+ if (persistState) {
487
+ commitState();
488
+ }
489
+ finish({
490
+ success: true,
491
+ pid: proc.pid,
492
+ port,
493
+ authToken,
494
+ ...(persistState
495
+ ? {}
496
+ : {
497
+ commitState,
498
+ stop: async () => {
499
+ await terminateDaemonProcess(proc.pid);
500
+ },
501
+ }),
502
+ });
307
503
  return;
308
504
  }
309
505
  if (attempts >= 30) {
@@ -318,14 +514,21 @@ async function startOpenAICompatProxy(profile, options = {}) {
318
514
  };
319
515
  timeout = setTimeout(poll, 1000);
320
516
  proc.on('error', (error) => {
321
- finish({ success: false, port, error: error.message });
517
+ finish({
518
+ success: false,
519
+ port,
520
+ error: error.message,
521
+ bindConflict: isPortBindConflictMessage(error.message),
522
+ });
322
523
  });
323
524
  proc.on('exit', (code, signal) => {
525
+ const bindConflict = isPortBindConflictMessage(stderr);
324
526
  if (code === 0) {
325
527
  finish({
326
528
  success: false,
327
529
  port,
328
530
  error: 'Proxy daemon exited before becoming healthy',
531
+ bindConflict,
329
532
  });
330
533
  return;
331
534
  }
@@ -333,7 +536,8 @@ async function startOpenAICompatProxy(profile, options = {}) {
333
536
  finish({
334
537
  success: false,
335
538
  port,
336
- error: `Proxy daemon exited with code ${code}`,
539
+ error: stderr.trim() || `Proxy daemon exited with code ${code}`,
540
+ bindConflict,
337
541
  });
338
542
  return;
339
543
  }
@@ -341,9 +545,64 @@ async function startOpenAICompatProxy(profile, options = {}) {
341
545
  success: false,
342
546
  port,
343
547
  error: `Proxy daemon was killed by signal ${signal}`,
548
+ bindConflict,
344
549
  });
345
550
  });
346
551
  });
552
+ const launchProxy = async (persistState) => {
553
+ const attemptedPorts = new Set();
554
+ let lastResult = null;
555
+ const candidates = listOpenAICompatProxyCandidatePorts(profile.profileName, preferredPort, requiresExactPort, attemptedPorts);
556
+ if (candidates.length === 0) {
557
+ return {
558
+ success: false,
559
+ port: preferredPort,
560
+ error: `No free proxy port found in adaptive range ${proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_ADAPTIVE_PORT_START}-${proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_ADAPTIVE_PORT_END}`,
561
+ };
562
+ }
563
+ for (const port of candidates) {
564
+ const result = await launchOnPort(port, persistState);
565
+ if (result.success) {
566
+ return result;
567
+ }
568
+ if (requiresExactPort && result.bindConflict) {
569
+ return {
570
+ ...result,
571
+ error: `Requested proxy port ${preferredPort} is already in use`,
572
+ };
573
+ }
574
+ lastResult = result;
575
+ attemptedPorts.add(port);
576
+ if (!result.bindConflict) {
577
+ return result;
578
+ }
579
+ }
580
+ return (lastResult ?? {
581
+ success: false,
582
+ port: preferredPort,
583
+ error: requiresExactPort
584
+ ? `Requested proxy port ${preferredPort} is already in use`
585
+ : 'No free proxy port found in the adaptive proxy port range',
586
+ });
587
+ };
588
+ if (status.running) {
589
+ const launched = await launchProxy(false);
590
+ if (!launched.success) {
591
+ return launched;
592
+ }
593
+ const stopped = await stopOpenAICompatProxyUnlocked(profile.profileName);
594
+ if (!stopped.success) {
595
+ await launched.stop?.();
596
+ return {
597
+ success: false,
598
+ port: launched.port,
599
+ error: stopped.error || 'Failed to replace the running proxy',
600
+ };
601
+ }
602
+ launched.commitState?.();
603
+ return launched;
604
+ }
605
+ return launchProxy(true);
347
606
  });
348
607
  }
349
608
  exports.startOpenAICompatProxy = startOpenAICompatProxy;
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-daemon.js","sourceRoot":"","sources":["../../src/proxy/proxy-daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy-daemon.js","sourceRoot":"","sources":["../../src/proxy/proxy-daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface OpenAICompatProxyPortPreference {
2
+ port: number;
3
+ source: 'adaptive' | 'profile' | 'shared';
4
+ }
5
+ export declare function resolveOpenAICompatProxyAdaptivePort(profileName: string): number;
6
+ export declare function listOpenAICompatProxyCandidatePorts(profileName: string, preferredPort: number, excludedPorts?: ReadonlySet<number>): number[];
7
+ export declare function resolveOpenAICompatProxyPortPreference(profileName: string): OpenAICompatProxyPortPreference;
8
+ export declare function resolveOpenAICompatProxyPreferredPort(profileName: string): number;
9
+ //# sourceMappingURL=proxy-port-resolver.d.ts.map