@kaitranntt/ccs 7.72.1 → 7.73.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 (140) hide show
  1. package/config/base-claude.settings.json +1 -1
  2. package/dist/auth/commands/create-command.d.ts.map +1 -1
  3. package/dist/auth/commands/create-command.js +1 -1
  4. package/dist/auth/commands/create-command.js.map +1 -1
  5. package/dist/ccs.js +49 -15
  6. package/dist/ccs.js.map +1 -1
  7. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  8. package/dist/cliproxy/config/generator.js +15 -6
  9. package/dist/cliproxy/config/generator.js.map +1 -1
  10. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  11. package/dist/cliproxy/executor/index.js +34 -13
  12. package/dist/cliproxy/executor/index.js.map +1 -1
  13. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  14. package/dist/cliproxy/model-catalog.js +15 -1
  15. package/dist/cliproxy/model-catalog.js.map +1 -1
  16. package/dist/cliproxy/openai-compat-manager.d.ts.map +1 -1
  17. package/dist/cliproxy/openai-compat-manager.js +18 -7
  18. package/dist/cliproxy/openai-compat-manager.js.map +1 -1
  19. package/dist/commands/browser-command.d.ts.map +1 -1
  20. package/dist/commands/browser-command.js +243 -12
  21. package/dist/commands/browser-command.js.map +1 -1
  22. package/dist/commands/command-catalog.d.ts +1 -1
  23. package/dist/commands/command-catalog.d.ts.map +1 -1
  24. package/dist/commands/command-catalog.js +4 -2
  25. package/dist/commands/command-catalog.js.map +1 -1
  26. package/dist/commands/completion-backend.d.ts.map +1 -1
  27. package/dist/commands/completion-backend.js +21 -0
  28. package/dist/commands/completion-backend.js.map +1 -1
  29. package/dist/commands/proxy-command.d.ts +1 -0
  30. package/dist/commands/proxy-command.d.ts.map +1 -1
  31. package/dist/commands/proxy-command.js +93 -23
  32. package/dist/commands/proxy-command.js.map +1 -1
  33. package/dist/config/unified-config-loader.d.ts.map +1 -1
  34. package/dist/config/unified-config-loader.js +9 -0
  35. package/dist/config/unified-config-loader.js.map +1 -1
  36. package/dist/config/unified-config-types.d.ts +12 -2
  37. package/dist/config/unified-config-types.d.ts.map +1 -1
  38. package/dist/config/unified-config-types.js +9 -2
  39. package/dist/config/unified-config-types.js.map +1 -1
  40. package/dist/cursor/cursor-default-models.d.ts +1 -1
  41. package/dist/cursor/cursor-default-models.d.ts.map +1 -1
  42. package/dist/cursor/cursor-default-models.js +11 -1
  43. package/dist/cursor/cursor-default-models.js.map +1 -1
  44. package/dist/glmt/delta-accumulator.d.ts +4 -0
  45. package/dist/glmt/delta-accumulator.d.ts.map +1 -1
  46. package/dist/glmt/delta-accumulator.js +17 -5
  47. package/dist/glmt/delta-accumulator.js.map +1 -1
  48. package/dist/glmt/pipeline/stream-parser.d.ts +0 -3
  49. package/dist/glmt/pipeline/stream-parser.d.ts.map +1 -1
  50. package/dist/glmt/pipeline/stream-parser.js +20 -27
  51. package/dist/glmt/pipeline/stream-parser.js.map +1 -1
  52. package/dist/glmt/pipeline/tool-call-handler.d.ts +0 -7
  53. package/dist/glmt/pipeline/tool-call-handler.d.ts.map +1 -1
  54. package/dist/glmt/pipeline/tool-call-handler.js +15 -24
  55. package/dist/glmt/pipeline/tool-call-handler.js.map +1 -1
  56. package/dist/proxy/index.d.ts +1 -0
  57. package/dist/proxy/index.d.ts.map +1 -1
  58. package/dist/proxy/index.js +1 -0
  59. package/dist/proxy/index.js.map +1 -1
  60. package/dist/proxy/proxy-daemon-paths.d.ts +5 -2
  61. package/dist/proxy/proxy-daemon-paths.d.ts.map +1 -1
  62. package/dist/proxy/proxy-daemon-paths.js +17 -5
  63. package/dist/proxy/proxy-daemon-paths.js.map +1 -1
  64. package/dist/proxy/proxy-daemon-state.d.ts +10 -5
  65. package/dist/proxy/proxy-daemon-state.d.ts.map +1 -1
  66. package/dist/proxy/proxy-daemon-state.js +81 -12
  67. package/dist/proxy/proxy-daemon-state.js.map +1 -1
  68. package/dist/proxy/proxy-daemon.d.ts +4 -3
  69. package/dist/proxy/proxy-daemon.d.ts.map +1 -1
  70. package/dist/proxy/proxy-daemon.js +351 -93
  71. package/dist/proxy/proxy-daemon.js.map +1 -1
  72. package/dist/proxy/proxy-port-resolver.d.ts +7 -0
  73. package/dist/proxy/proxy-port-resolver.d.ts.map +1 -0
  74. package/dist/proxy/proxy-port-resolver.js +22 -0
  75. package/dist/proxy/proxy-port-resolver.js.map +1 -0
  76. package/dist/proxy/server/messages-route.d.ts.map +1 -1
  77. package/dist/proxy/server/messages-route.js +2 -7
  78. package/dist/proxy/server/messages-route.js.map +1 -1
  79. package/dist/proxy/server/proxy-server.d.ts.map +1 -1
  80. package/dist/proxy/server/proxy-server.js +35 -23
  81. package/dist/proxy/server/proxy-server.js.map +1 -1
  82. package/dist/proxy/transformers/request-transformer.d.ts +7 -0
  83. package/dist/proxy/transformers/request-transformer.d.ts.map +1 -1
  84. package/dist/proxy/transformers/request-transformer.js +267 -70
  85. package/dist/proxy/transformers/request-transformer.js.map +1 -1
  86. package/dist/targets/claude-adapter.d.ts.map +1 -1
  87. package/dist/targets/claude-adapter.js +1 -1
  88. package/dist/targets/claude-adapter.js.map +1 -1
  89. package/dist/targets/codex-adapter.d.ts.map +1 -1
  90. package/dist/targets/codex-adapter.js +1 -1
  91. package/dist/targets/codex-adapter.js.map +1 -1
  92. package/dist/targets/codex-detector.d.ts.map +1 -1
  93. package/dist/targets/codex-detector.js +3 -1
  94. package/dist/targets/codex-detector.js.map +1 -1
  95. package/dist/targets/droid-adapter.d.ts.map +1 -1
  96. package/dist/targets/droid-adapter.js +1 -1
  97. package/dist/targets/droid-adapter.js.map +1 -1
  98. package/dist/targets/target-resolver.d.ts.map +1 -1
  99. package/dist/targets/target-resolver.js +15 -0
  100. package/dist/targets/target-resolver.js.map +1 -1
  101. package/dist/utils/browser/browser-policy.d.ts +22 -0
  102. package/dist/utils/browser/browser-policy.d.ts.map +1 -0
  103. package/dist/utils/browser/browser-policy.js +65 -0
  104. package/dist/utils/browser/browser-policy.js.map +1 -0
  105. package/dist/utils/browser/browser-settings.d.ts +25 -1
  106. package/dist/utils/browser/browser-settings.d.ts.map +1 -1
  107. package/dist/utils/browser/browser-settings.js +131 -8
  108. package/dist/utils/browser/browser-settings.js.map +1 -1
  109. package/dist/utils/browser/browser-setup.d.ts +21 -0
  110. package/dist/utils/browser/browser-setup.d.ts.map +1 -0
  111. package/dist/utils/browser/browser-setup.js +68 -0
  112. package/dist/utils/browser/browser-setup.js.map +1 -0
  113. package/dist/utils/browser/browser-status.d.ts +6 -5
  114. package/dist/utils/browser/browser-status.d.ts.map +1 -1
  115. package/dist/utils/browser/browser-status.js +123 -20
  116. package/dist/utils/browser/browser-status.js.map +1 -1
  117. package/dist/utils/browser/index.d.ts +7 -3
  118. package/dist/utils/browser/index.d.ts.map +1 -1
  119. package/dist/utils/browser/index.js +15 -1
  120. package/dist/utils/browser/index.js.map +1 -1
  121. package/dist/utils/claude-spawner.d.ts.map +1 -1
  122. package/dist/utils/claude-spawner.js +1 -1
  123. package/dist/utils/claude-spawner.js.map +1 -1
  124. package/dist/utils/config-manager.d.ts +5 -0
  125. package/dist/utils/config-manager.d.ts.map +1 -1
  126. package/dist/utils/config-manager.js +16 -3
  127. package/dist/utils/config-manager.js.map +1 -1
  128. package/dist/utils/shell-executor.d.ts +9 -0
  129. package/dist/utils/shell-executor.d.ts.map +1 -1
  130. package/dist/utils/shell-executor.js +15 -2
  131. package/dist/utils/shell-executor.js.map +1 -1
  132. package/dist/web-server/model-pricing.d.ts.map +1 -1
  133. package/dist/web-server/model-pricing.js +7 -0
  134. package/dist/web-server/model-pricing.js.map +1 -1
  135. package/dist/web-server/routes/browser-routes.d.ts.map +1 -1
  136. package/dist/web-server/routes/browser-routes.js +51 -10
  137. package/dist/web-server/routes/browser-routes.js.map +1 -1
  138. package/package.json +1 -1
  139. package/scripts/ci-parity-gate.sh +11 -0
  140. package/scripts/ensure-deps.sh +18 -0
@@ -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,52 @@ 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
- });
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
+ }
94
+ }
95
+ process.kill(pid, 'SIGKILL');
96
+ }
97
+ catch {
98
+ // Best-effort cleanup for a daemon we just spawned.
99
+ }
81
100
  }
82
- async function findOpenAICompatProxyPort() {
101
+ function listOpenAICompatProxyCandidatePorts(preferredPort, exact, excludedPorts = new Set()) {
102
+ if (exact) {
103
+ return excludedPorts.has(preferredPort) ? [] : [preferredPort];
104
+ }
105
+ const candidates = new Set();
106
+ if (!excludedPorts.has(preferredPort)) {
107
+ candidates.add(preferredPort);
108
+ }
83
109
  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;
110
+ if (!excludedPorts.has(candidate)) {
111
+ candidates.add(candidate);
86
112
  }
87
113
  }
88
- return 0;
114
+ return [...candidates];
115
+ }
116
+ function isPortBindConflictMessage(message) {
117
+ if (!message) {
118
+ return false;
119
+ }
120
+ const normalized = message.toLowerCase();
121
+ return (message.includes('EADDRINUSE') ||
122
+ normalized.includes('address already in use') ||
123
+ (normalized.includes('is port') && normalized.includes('in use')));
89
124
  }
90
125
  async function resolveDaemonEntrypoint() {
91
126
  for (const candidate of (0, proxy_daemon_state_1.resolveOpenAICompatProxyEntrypointCandidates)()) {
@@ -99,7 +134,7 @@ async function resolveDaemonEntrypoint() {
99
134
  }
100
135
  return null;
101
136
  }
102
- async function isOpenAICompatProxyRunning(port) {
137
+ async function isOpenAICompatProxyRunning(port, expectedProfileName) {
103
138
  return new Promise((resolve) => {
104
139
  const req = http.request({ hostname: '127.0.0.1', port, path: '/health', method: 'GET', timeout: 3000 }, (res) => {
105
140
  let body = '';
@@ -112,7 +147,8 @@ async function isOpenAICompatProxyRunning(port) {
112
147
  }
113
148
  try {
114
149
  const payload = JSON.parse(body);
115
- resolve(payload.service === proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_SERVICE_NAME);
150
+ resolve(payload.service === proxy_daemon_paths_1.OPENAI_COMPAT_PROXY_SERVICE_NAME &&
151
+ (!expectedProfileName || payload.profile === expectedProfileName));
116
152
  }
117
153
  catch {
118
154
  resolve(false);
@@ -128,27 +164,96 @@ async function isOpenAICompatProxyRunning(port) {
128
164
  });
129
165
  }
130
166
  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);
167
+ async function getOpenAICompatProxyStatusForProfile(profileName) {
168
+ const state = getOpenAICompatProxyStateForProfile(profileName);
169
+ const session = state.session;
170
+ if (!session) {
171
+ return { running: false, profileName, pid: state.pid || undefined };
172
+ }
173
+ const port = session.port;
174
+ const running = await isOpenAICompatProxyRunning(port, profileName);
175
+ return {
176
+ running,
177
+ pid: running ? state.pid || undefined : undefined,
178
+ ...session,
179
+ };
180
+ }
181
+ async function getLegacyOpenAICompatProxyStatus() {
182
+ const session = (0, proxy_daemon_state_1.readLegacyOpenAICompatProxySession)();
183
+ const pid = (0, proxy_daemon_state_1.getLegacyOpenAICompatProxyPid)();
184
+ if (!session && !pid) {
185
+ return null;
186
+ }
187
+ const port = session?.port;
188
+ const running = typeof port === 'number' ? await isOpenAICompatProxyRunning(port, session?.profileName) : false;
135
189
  return {
136
190
  running,
137
- pid: running ? (0, proxy_daemon_state_1.getOpenAICompatProxyPid)() || undefined : undefined,
191
+ pid: running ? pid || undefined : pid || undefined,
138
192
  ...session,
139
193
  };
140
194
  }
195
+ function getOpenAICompatProxyStateForProfile(profileName) {
196
+ const session = (0, proxy_daemon_state_1.readOpenAICompatProxySession)(profileName);
197
+ if (session) {
198
+ return {
199
+ pid: (0, proxy_daemon_state_1.getOpenAICompatProxyPid)(profileName),
200
+ session,
201
+ source: 'profile',
202
+ };
203
+ }
204
+ const legacySession = (0, proxy_daemon_state_1.readLegacyOpenAICompatProxySession)();
205
+ if (legacySession?.profileName === profileName) {
206
+ return {
207
+ pid: (0, proxy_daemon_state_1.getLegacyOpenAICompatProxyPid)(),
208
+ session: legacySession,
209
+ source: 'legacy',
210
+ };
211
+ }
212
+ return { pid: null, session: null, source: 'profile' };
213
+ }
214
+ async function listOpenAICompatProxyStatuses() {
215
+ const profileNames = new Set((0, proxy_daemon_state_1.listOpenAICompatProxyProfileNames)());
216
+ const legacySession = (0, proxy_daemon_state_1.readLegacyOpenAICompatProxySession)();
217
+ if (legacySession?.profileName) {
218
+ profileNames.add(legacySession.profileName);
219
+ }
220
+ const profileStatuses = await Promise.all([...profileNames].map((profileName) => getOpenAICompatProxyStatusForProfile(profileName)));
221
+ const statuses = profileStatuses.filter((status) => status.profileName);
222
+ if (!legacySession?.profileName) {
223
+ const legacyStatus = await getLegacyOpenAICompatProxyStatus();
224
+ if (legacyStatus) {
225
+ statuses.push(legacyStatus);
226
+ }
227
+ }
228
+ return statuses;
229
+ }
230
+ exports.listOpenAICompatProxyStatuses = listOpenAICompatProxyStatuses;
231
+ async function getOpenAICompatProxyStatus(profileName) {
232
+ if (profileName) {
233
+ return getOpenAICompatProxyStatusForProfile(profileName);
234
+ }
235
+ const statuses = await listOpenAICompatProxyStatuses();
236
+ const running = statuses.filter((status) => status.running);
237
+ if (running.length === 1) {
238
+ return running[0];
239
+ }
240
+ if (running.length > 1) {
241
+ return { running: true };
242
+ }
243
+ const latestKnown = statuses[0];
244
+ return latestKnown ?? { running: false };
245
+ }
141
246
  exports.getOpenAICompatProxyStatus = getOpenAICompatProxyStatus;
142
- async function stopOpenAICompatProxyUnlocked() {
143
- const pid = (0, proxy_daemon_state_1.getOpenAICompatProxyPid)();
247
+ async function stopOpenAICompatProxyUnlocked(profileName) {
248
+ const state = getOpenAICompatProxyStateForProfile(profileName);
249
+ const pid = state.pid;
144
250
  if (!pid) {
145
- (0, proxy_daemon_state_1.removeOpenAICompatProxySession)();
251
+ removeOpenAICompatProxyState(state, profileName);
146
252
  return { success: true };
147
253
  }
148
- const ownership = (0, daemon_process_ownership_1.verifyProcessOwnership)(pid, (commandLine) => commandLine.includes('--ccs-openai-proxy-daemon') &&
149
- commandLine.includes('proxy-daemon-entry'));
254
+ const ownership = verifyProxyProcessOwnership(pid, profileName);
150
255
  if (ownership === 'not-owned') {
151
- (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)();
256
+ removeOpenAICompatProxyState(state, profileName);
152
257
  return { success: true };
153
258
  }
154
259
  if (ownership === 'unknown') {
@@ -158,10 +263,63 @@ async function stopOpenAICompatProxyUnlocked() {
158
263
  };
159
264
  }
160
265
  if (ownership === 'not-running') {
161
- (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)();
162
- (0, proxy_daemon_state_1.removeOpenAICompatProxySession)();
266
+ removeOpenAICompatProxyState(state, profileName);
267
+ return { success: true };
268
+ }
269
+ try {
270
+ process.kill(pid, 'SIGTERM');
271
+ let attempts = 0;
272
+ while (attempts < 10) {
273
+ await new Promise((resolve) => setTimeout(resolve, 500));
274
+ try {
275
+ process.kill(pid, 0);
276
+ attempts += 1;
277
+ }
278
+ catch {
279
+ break;
280
+ }
281
+ }
282
+ if (attempts >= 10) {
283
+ try {
284
+ process.kill(pid, 'SIGKILL');
285
+ }
286
+ catch {
287
+ // Already exited.
288
+ }
289
+ }
290
+ }
291
+ catch (error) {
292
+ const err = error;
293
+ if (err.code !== 'ESRCH') {
294
+ return { success: false, error: `Failed to stop daemon: ${err.message}` };
295
+ }
296
+ }
297
+ removeOpenAICompatProxyState(state, profileName);
298
+ return { success: true };
299
+ }
300
+ async function stopLegacyOpenAICompatProxyUnlocked() {
301
+ const legacySession = (0, proxy_daemon_state_1.readLegacyOpenAICompatProxySession)();
302
+ if (legacySession?.profileName) {
303
+ return stopOpenAICompatProxyUnlocked(legacySession.profileName);
304
+ }
305
+ const pid = (0, proxy_daemon_state_1.getLegacyOpenAICompatProxyPid)();
306
+ if (!pid) {
307
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxyPid)();
308
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxySession)();
163
309
  return { success: true };
164
310
  }
311
+ const ownership = verifyProxyProcessOwnership(pid);
312
+ if (ownership === 'not-owned' || ownership === 'not-running') {
313
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxyPid)();
314
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxySession)();
315
+ return { success: true };
316
+ }
317
+ if (ownership === 'unknown') {
318
+ return {
319
+ success: false,
320
+ error: `Refusing to stop PID ${pid}: unable to verify daemon ownership`,
321
+ };
322
+ }
165
323
  try {
166
324
  process.kill(pid, 'SIGTERM');
167
325
  let attempts = 0;
@@ -190,59 +348,73 @@ async function stopOpenAICompatProxyUnlocked() {
190
348
  return { success: false, error: `Failed to stop daemon: ${err.message}` };
191
349
  }
192
350
  }
193
- (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)();
194
- (0, proxy_daemon_state_1.removeOpenAICompatProxySession)();
351
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxyPid)();
352
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxySession)();
195
353
  return { success: true };
196
354
  }
197
- async function stopOpenAICompatProxy() {
198
- return withOpenAICompatProxyLock(() => stopOpenAICompatProxyUnlocked());
355
+ function removeOpenAICompatProxyState(state, profileName) {
356
+ if (state.source === 'legacy') {
357
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxyPid)();
358
+ (0, proxy_daemon_state_1.removeLegacyOpenAICompatProxySession)();
359
+ return;
360
+ }
361
+ (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)(profileName);
362
+ (0, proxy_daemon_state_1.removeOpenAICompatProxySession)(profileName);
363
+ }
364
+ async function stopOpenAICompatProxy(profileName) {
365
+ return withOpenAICompatProxyLock(async () => {
366
+ if (profileName) {
367
+ return stopOpenAICompatProxyUnlocked(profileName);
368
+ }
369
+ const statuses = await listOpenAICompatProxyStatuses();
370
+ const failures = [];
371
+ for (const status of statuses) {
372
+ const stopped = status.profileName
373
+ ? await stopOpenAICompatProxyUnlocked(status.profileName)
374
+ : await stopLegacyOpenAICompatProxyUnlocked();
375
+ if (!stopped.success) {
376
+ failures.push(status.profileName
377
+ ? `${status.profileName}: ${stopped.error || 'failed to stop proxy'}`
378
+ : `legacy proxy: ${stopped.error || 'failed to stop proxy'}`);
379
+ }
380
+ }
381
+ if (failures.length > 0) {
382
+ return { success: false, error: `Failed to stop some proxies: ${failures.join('; ')}` };
383
+ }
384
+ return { success: true };
385
+ });
199
386
  }
200
387
  exports.stopOpenAICompatProxy = stopOpenAICompatProxy;
201
388
  async function startOpenAICompatProxy(profile, options = {}) {
202
389
  return withOpenAICompatProxyLock(async () => {
203
- const status = await getOpenAICompatProxyStatus();
390
+ const status = await getOpenAICompatProxyStatus(profile.profileName);
204
391
  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) {
211
- 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}`,
215
- };
216
- }
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) {
392
+ const portPreference = (0, proxy_port_resolver_1.resolveOpenAICompatProxyPortPreference)(profile.profileName);
393
+ const explicitPort = typeof options.port === 'number' ? options.port : undefined;
394
+ const preferredPort = explicitPort ??
395
+ (portPreference.source === 'profile'
396
+ ? portPreference.port
397
+ : status.port || portPreference.port);
398
+ const requiresExactPort = explicitPort !== undefined || portPreference.source === 'profile';
399
+ if (status.running && status.port === preferredPort && (status.host || '127.0.0.1') === host) {
224
400
  return {
225
401
  success: true,
226
402
  alreadyRunning: true,
227
403
  pid: status.pid,
228
- port,
404
+ port: preferredPort,
229
405
  authToken: status.authToken,
230
406
  };
231
407
  }
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();
408
+ if (!Number.isInteger(preferredPort) || preferredPort < 1 || preferredPort > 65535) {
409
+ return { success: false, port: preferredPort, error: `Invalid port: ${preferredPort}` };
410
+ }
411
+ if (status.pid && !status.port) {
412
+ const stopped = await stopOpenAICompatProxyUnlocked(profile.profileName);
241
413
  if (!stopped.success) {
242
414
  return {
243
415
  success: false,
244
- port,
245
- error: stopped.error || 'Failed to restart the running proxy',
416
+ port: preferredPort,
417
+ error: stopped.error || 'Failed to clear stale proxy state',
246
418
  };
247
419
  }
248
420
  }
@@ -250,23 +422,39 @@ async function startOpenAICompatProxy(profile, options = {}) {
250
422
  if (!daemonEntry) {
251
423
  return {
252
424
  success: false,
253
- port,
425
+ port: preferredPort,
254
426
  error: 'OpenAI proxy daemon entrypoint not found. Run `bun run build` and retry.',
255
427
  };
256
428
  }
257
- return new Promise((resolve) => {
429
+ const launchOnPort = (port, persistState) => new Promise((resolve) => {
258
430
  let resolved = false;
259
431
  let timeout = null;
432
+ let stderr = '';
260
433
  const authToken = generateProxyAuthToken();
434
+ const commitState = () => {
435
+ if (proc.pid) {
436
+ (0, proxy_daemon_state_1.writeOpenAICompatProxyPid)(profile.profileName, proc.pid);
437
+ }
438
+ (0, proxy_daemon_state_1.writeOpenAICompatProxySession)({
439
+ profileName: profile.profileName,
440
+ settingsPath: profile.settingsPath,
441
+ host,
442
+ port,
443
+ baseUrl: profile.baseUrl,
444
+ authToken,
445
+ model: profile.model,
446
+ insecure: options.insecure,
447
+ });
448
+ };
261
449
  const finish = (result) => {
262
450
  if (resolved)
263
451
  return;
264
452
  resolved = true;
265
453
  if (timeout)
266
454
  clearTimeout(timeout);
267
- if (!result.success) {
268
- (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)();
269
- (0, proxy_daemon_state_1.removeOpenAICompatProxySession)();
455
+ if (!result.success && persistState) {
456
+ (0, proxy_daemon_state_1.removeOpenAICompatProxyPid)(profile.profileName);
457
+ (0, proxy_daemon_state_1.removeOpenAICompatProxySession)(profile.profileName);
270
458
  }
271
459
  resolve(result);
272
460
  };
@@ -284,26 +472,33 @@ async function startOpenAICompatProxy(profile, options = {}) {
284
472
  authToken,
285
473
  ...(options.insecure ? ['--insecure'] : []),
286
474
  '--ccs-openai-proxy-daemon',
287
- ], { stdio: 'ignore', detached: true });
475
+ ], { stdio: ['ignore', 'ignore', 'pipe'], detached: true });
288
476
  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,
477
+ proc.stderr?.setEncoding('utf8');
478
+ proc.stderr?.on('data', (chunk) => {
479
+ stderr += chunk;
301
480
  });
302
481
  let attempts = 0;
303
482
  const poll = async () => {
304
483
  attempts += 1;
305
- if (await isOpenAICompatProxyRunning(port)) {
306
- finish({ success: true, pid: proc.pid, port, authToken });
484
+ if (await isOpenAICompatProxyRunning(port, profile.profileName)) {
485
+ if (persistState) {
486
+ commitState();
487
+ }
488
+ finish({
489
+ success: true,
490
+ pid: proc.pid,
491
+ port,
492
+ authToken,
493
+ ...(persistState
494
+ ? {}
495
+ : {
496
+ commitState,
497
+ stop: async () => {
498
+ await terminateDaemonProcess(proc.pid);
499
+ },
500
+ }),
501
+ });
307
502
  return;
308
503
  }
309
504
  if (attempts >= 30) {
@@ -318,14 +513,21 @@ async function startOpenAICompatProxy(profile, options = {}) {
318
513
  };
319
514
  timeout = setTimeout(poll, 1000);
320
515
  proc.on('error', (error) => {
321
- finish({ success: false, port, error: error.message });
516
+ finish({
517
+ success: false,
518
+ port,
519
+ error: error.message,
520
+ bindConflict: isPortBindConflictMessage(error.message),
521
+ });
322
522
  });
323
523
  proc.on('exit', (code, signal) => {
524
+ const bindConflict = isPortBindConflictMessage(stderr);
324
525
  if (code === 0) {
325
526
  finish({
326
527
  success: false,
327
528
  port,
328
529
  error: 'Proxy daemon exited before becoming healthy',
530
+ bindConflict,
329
531
  });
330
532
  return;
331
533
  }
@@ -333,7 +535,8 @@ async function startOpenAICompatProxy(profile, options = {}) {
333
535
  finish({
334
536
  success: false,
335
537
  port,
336
- error: `Proxy daemon exited with code ${code}`,
538
+ error: stderr.trim() || `Proxy daemon exited with code ${code}`,
539
+ bindConflict,
337
540
  });
338
541
  return;
339
542
  }
@@ -341,9 +544,64 @@ async function startOpenAICompatProxy(profile, options = {}) {
341
544
  success: false,
342
545
  port,
343
546
  error: `Proxy daemon was killed by signal ${signal}`,
547
+ bindConflict,
344
548
  });
345
549
  });
346
550
  });
551
+ const launchProxy = async (persistState) => {
552
+ const attemptedPorts = new Set();
553
+ let lastResult = null;
554
+ const candidates = listOpenAICompatProxyCandidatePorts(preferredPort, requiresExactPort, attemptedPorts);
555
+ if (candidates.length === 0) {
556
+ return {
557
+ success: false,
558
+ port: preferredPort,
559
+ 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}`,
560
+ };
561
+ }
562
+ for (const port of candidates) {
563
+ const result = await launchOnPort(port, persistState);
564
+ if (result.success) {
565
+ return result;
566
+ }
567
+ if (requiresExactPort && result.bindConflict) {
568
+ return {
569
+ ...result,
570
+ error: `Requested proxy port ${preferredPort} is already in use`,
571
+ };
572
+ }
573
+ lastResult = result;
574
+ attemptedPorts.add(port);
575
+ if (!result.bindConflict) {
576
+ return result;
577
+ }
578
+ }
579
+ return (lastResult ?? {
580
+ success: false,
581
+ port: preferredPort,
582
+ error: requiresExactPort
583
+ ? `Requested proxy port ${preferredPort} is already in use`
584
+ : 'No free proxy port found in the proxy port range',
585
+ });
586
+ };
587
+ if (status.running) {
588
+ const launched = await launchProxy(false);
589
+ if (!launched.success) {
590
+ return launched;
591
+ }
592
+ const stopped = await stopOpenAICompatProxyUnlocked(profile.profileName);
593
+ if (!stopped.success) {
594
+ await launched.stop?.();
595
+ return {
596
+ success: false,
597
+ port: launched.port,
598
+ error: stopped.error || 'Failed to replace the running proxy',
599
+ };
600
+ }
601
+ launched.commitState?.();
602
+ return launched;
603
+ }
604
+ return launchProxy(true);
347
605
  });
348
606
  }
349
607
  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,7 @@
1
+ export interface OpenAICompatProxyPortPreference {
2
+ port: number;
3
+ source: 'default' | 'profile';
4
+ }
5
+ export declare function resolveOpenAICompatProxyPortPreference(profileName: string): OpenAICompatProxyPortPreference;
6
+ export declare function resolveOpenAICompatProxyPreferredPort(profileName: string): number;
7
+ //# sourceMappingURL=proxy-port-resolver.d.ts.map