openfox 2.0.113 → 2.0.115

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 (99) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/CHANGELOG.md +43 -0
  3. package/dist/agent-defaults/builder.agent.md +1 -0
  4. package/dist/agent-defaults/planner.agent.md +1 -0
  5. package/dist/{backend-P3GHHLHJ.js → backend-LVYHLGQJ.js} +2 -2
  6. package/dist/{chat-handler-PEK5JDHO.js → chat-handler-5SP265CR.js} +32 -26
  7. package/dist/{chunk-HKD4IMOE.js → chunk-27NABDXB.js} +2 -2
  8. package/dist/{chunk-FF2EKUQO.js → chunk-2FCLCUVR.js} +6 -6
  9. package/dist/{chunk-ONONXV3N.js → chunk-37QLXLML.js} +4 -4
  10. package/dist/{chunk-YB6WYVNY.js → chunk-3KBRMBTP.js} +2 -2
  11. package/dist/{chunk-YGPPFVLJ.js → chunk-3NPLERPQ.js} +17 -17
  12. package/dist/{chunk-XQR76MQ5.js → chunk-3PG65AXG.js} +18 -3
  13. package/dist/chunk-3QQAIUZI.js +957 -0
  14. package/dist/{chunk-PWXBIUEY.js → chunk-5PT4UMRR.js} +89 -1
  15. package/dist/chunk-5V3BF67X.js +7 -0
  16. package/dist/{chunk-6UPBZ2ZR.js → chunk-6KPJLELC.js} +4 -4
  17. package/dist/chunk-6RGACY4E.js +1081 -0
  18. package/dist/{chunk-BNFGDTEU.js → chunk-AESOGRFK.js} +2 -2
  19. package/dist/{chunk-YHEQTVFV.js → chunk-AZHWLLPP.js} +1 -1
  20. package/dist/{chunk-TCGWZBTS.js → chunk-BVVCRIVM.js} +4 -4
  21. package/dist/{chunk-EMI3YYLP.js → chunk-BWVO5WFK.js} +4 -4
  22. package/dist/{chunk-CP44U7BT.js → chunk-ERNWAKUB.js} +7 -7
  23. package/dist/{chunk-WWTYWLDM.js → chunk-HD6Y77RO.js} +2 -2
  24. package/dist/{chunk-4NMGX5F2.js → chunk-I7FY2LTR.js} +2 -2
  25. package/dist/{chunk-5VYSKVZT.js → chunk-JFK4GKQD.js} +321 -54
  26. package/dist/{chunk-43M7QZMX.js → chunk-JGWHRYWG.js} +4 -4
  27. package/dist/{chunk-Y64PEWKP.js → chunk-JLAR2CMV.js} +2 -2
  28. package/dist/{chunk-BYSUSSSC.js → chunk-LNNBLB6G.js} +48 -151
  29. package/dist/{chunk-V4664YKR.js → chunk-LTYL6ZGH.js} +2 -2
  30. package/dist/{chunk-R2MTWC7C.js → chunk-M6X6AIEG.js} +6 -4
  31. package/dist/{chunk-VGRVPYZ5.js → chunk-O6DU226D.js} +2 -2
  32. package/dist/{chunk-TEQEDOWI.js → chunk-OCBBAEMT.js} +288 -316
  33. package/dist/{chunk-SNLLOXCM.js → chunk-OCSTEGK7.js} +3 -3
  34. package/dist/{chunk-HGOTZWON.js → chunk-OKVHMKE2.js} +60 -1064
  35. package/dist/chunk-OSXPQSLW.js +128 -0
  36. package/dist/{chunk-O2YSYW2F.js → chunk-TFF5T3K3.js} +10 -10
  37. package/dist/{chunk-3R43CMLS.js → chunk-TGLVWAFC.js} +11 -11
  38. package/dist/{chunk-L737Y63F.js → chunk-TOKQ2UVG.js} +2 -2
  39. package/dist/{chunk-AZFZE36I.js → chunk-VWEATA7R.js} +18 -8
  40. package/dist/{chunk-BKCW3JLL.js → chunk-X25Q6RAV.js} +1 -1
  41. package/dist/{chunk-JR54MDZI.js → chunk-YX3OQBNX.js} +3 -3
  42. package/dist/{chunk-EC5T5A6O.js → chunk-ZTOG6LJD.js} +3 -3
  43. package/dist/cli/dev.js +1 -1
  44. package/dist/cli/index.js +1 -1
  45. package/dist/client-KE7EDI2D.js +16 -0
  46. package/dist/{client-pure-VFZIIK4S.js → client-pure-66Z6FWS6.js} +2 -2
  47. package/dist/command-defaults/mark-done.command.md +14 -0
  48. package/dist/compactor-SKVC2VNL.js +32 -0
  49. package/dist/{dynamic-context-F2XTQJR5.js → dynamic-context-QNB4ELLP.js} +10 -9
  50. package/dist/{events-224IO5NJ.js → events-5PLO4QJU.js} +9 -7
  51. package/dist/{folding-YTTTVS56.js → folding-CJWYFUKD.js} +7 -5
  52. package/dist/http-client-KLODRQC2.js +11 -0
  53. package/dist/{inspect-proxy-B7LGGTM7.js → inspect-proxy-K6QKEYDT.js} +4 -4
  54. package/dist/launch-EOXVWLOP.js +52 -0
  55. package/dist/{manager-4QGXI6WZ.js → manager-LZ3JQ443.js} +5 -5
  56. package/dist/{model-overrides-OY2YKUNV.js → model-overrides-5UVW3KTE.js} +4 -4
  57. package/dist/orchestrator-ED3KFPXO.js +63 -0
  58. package/dist/package.json +3 -3
  59. package/dist/{path-security-PFMZY7IA.js → path-security-B6EZC63L.js} +13 -11
  60. package/dist/{platform-QNGCKX4L.js → platform-6RPPBHKH.js} +4 -4
  61. package/dist/{processor-NYPJ5PFA.js → processor-226ZOTRI.js} +31 -25
  62. package/dist/{project-creator-AWP2JUFS.js → project-creator-VBFE35NI.js} +3 -3
  63. package/dist/{projects-C4353IQK.js → projects-AXHZOBR2.js} +5 -3
  64. package/dist/{protocol-CBT1d98i.d.ts → protocol-JdxRpPxM.d.ts} +21 -3
  65. package/dist/{protocol-LZZ7C4VQ.js → protocol-RKSWKNXI.js} +3 -3
  66. package/dist/provider/index.d.ts +4 -4
  67. package/dist/{provider-PIRPN2CC.js → provider-DL4ZWQY7.js} +8 -8
  68. package/dist/{provider-manager-GNEPR6UN.js → provider-manager-6CLRMGDE.js} +8 -8
  69. package/dist/{registry-VCKDSVKA.js → registry-5XI5NDBF.js} +6 -4
  70. package/dist/{serve-6DRHQLCG.js → serve-DARV4NJG.js} +36 -33
  71. package/dist/server/index.d.ts +13 -6
  72. package/dist/server/index.js +35 -32
  73. package/dist/server-LQJ7MBDS.js +55 -0
  74. package/dist/service-4JKTGPRG.js +25 -0
  75. package/dist/{session-overrides-RNKV35MU.js → session-overrides-AZKV6BRD.js} +8 -6
  76. package/dist/{sessions-D5CEPQGU.js → sessions-752IZIIK.js} +7 -5
  77. package/dist/{settings-BNRNX6IW.js → settings-2AHDKCD7.js} +3 -3
  78. package/dist/shared/index.d.ts +3 -3
  79. package/dist/shared/index.js +1 -1
  80. package/dist/skill-defaults/workflows/SKILL.md +24 -6
  81. package/dist/tasks-XJXHU623.js +217 -0
  82. package/dist/{tools-2B363F7L.js → tools-QYYNFMGU.js} +31 -23
  83. package/dist/{types-cVfqOj6M.d.ts → types-CIVhQMvD.d.ts} +1 -1
  84. package/dist/{types-BAxh20ZL.d.ts → types-Df7NM9b5.d.ts} +76 -1
  85. package/dist/{update-IQMRYN7J.js → update-2REP2WB6.js} +2 -2
  86. package/dist/web/assets/{index-CjWC6EQ4.css → index-BmILAZrT.css} +1 -1
  87. package/dist/web/assets/index-M7ToECa4.js +324 -0
  88. package/dist/web/index.html +2 -2
  89. package/dist/web/sw.js +1 -1
  90. package/dist/workflow-defaults/default.workflow.json +5 -3
  91. package/dist/{workspace-YUNHV4WS.js → workspace-RMZVTFJD.js} +4 -4
  92. package/package.json +3 -3
  93. package/dist/chunk-B2PHPBFU.js +0 -7
  94. package/dist/client-3LJGD6KY.js +0 -16
  95. package/dist/compactor-ZBNKANHV.js +0 -30
  96. package/dist/http-client-YC3UA5OZ.js +0 -11
  97. package/dist/orchestrator-JKBY7B3P.js +0 -57
  98. package/dist/server-HUHFJW7U.js +0 -48
  99. package/dist/web/assets/index-DBUtUSHK.js +0 -323
@@ -2,7 +2,7 @@ import {
2
2
  SETTINGS_KEYS,
3
3
  getSetting,
4
4
  setSetting
5
- } from "./chunk-WWTYWLDM.js";
5
+ } from "./chunk-HD6Y77RO.js";
6
6
 
7
7
  // src/server/agents/model-overrides.ts
8
8
  import { z } from "zod";
@@ -69,4 +69,4 @@ export {
69
69
  setAgentModelOverride,
70
70
  resolveLLMClientForAgent
71
71
  };
72
- //# sourceMappingURL=chunk-Y64PEWKP.js.map
72
+ //# sourceMappingURL=chunk-JLAR2CMV.js.map
@@ -1,7 +1,13 @@
1
+ import {
2
+ saveItemToDir
3
+ } from "./chunk-OSXPQSLW.js";
4
+ import {
5
+ getProjectDefaultAgent
6
+ } from "./chunk-3PG65AXG.js";
1
7
  import {
2
8
  SETTINGS_KEYS,
3
9
  getSetting
4
- } from "./chunk-WWTYWLDM.js";
10
+ } from "./chunk-HD6Y77RO.js";
5
11
  import {
6
12
  logger
7
13
  } from "./chunk-K44MW7JJ.js";
@@ -10,125 +16,11 @@ import {
10
16
  } from "./chunk-CQGTEGKL.js";
11
17
 
12
18
  // src/server/agents/registry.ts
13
- import { readdir as readdir2, readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2, access as access2, unlink as unlink2 } from "fs/promises";
14
- import { join as join2, dirname } from "path";
15
- import { constants as constants2 } from "fs";
16
- import { fileURLToPath } from "url";
17
- import matter2 from "gray-matter";
18
-
19
- // src/server/shared/item-loader.ts
20
- import { readdir, readFile, access, writeFile, mkdir, unlink } from "fs/promises";
21
- import { join } from "path";
19
+ import { readdir, readFile, writeFile, mkdir, access, unlink } from "fs/promises";
20
+ import { join, dirname } from "path";
22
21
  import { constants } from "fs";
22
+ import { fileURLToPath } from "url";
23
23
  import matter from "gray-matter";
24
- async function pathExists(path) {
25
- try {
26
- await access(path, constants.R_OK);
27
- return true;
28
- } catch {
29
- return false;
30
- }
31
- }
32
- async function getDefaultIds(dir, extension) {
33
- try {
34
- const files = (await readdir(dir)).filter((f) => f.endsWith(extension));
35
- return files.map((f) => f.replace(extension, ""));
36
- } catch {
37
- return [];
38
- }
39
- }
40
- async function loadItemsFromDir(dir, options) {
41
- if (!await pathExists(dir)) {
42
- return [];
43
- }
44
- let files;
45
- try {
46
- files = (await readdir(dir)).filter((f) => f.endsWith(options.extension));
47
- } catch {
48
- return [];
49
- }
50
- const items = [];
51
- for (const file of files) {
52
- try {
53
- const raw = await readFile(join(dir, file), "utf-8");
54
- const { data, content } = matter(raw);
55
- if (data.id && content.trim()) {
56
- items.push({
57
- metadata: data,
58
- prompt: content.trim()
59
- });
60
- } else {
61
- logger.warn(`Skipping invalid ${options.logName} file`, { file });
62
- }
63
- } catch (err) {
64
- logger.warn(`Failed to parse ${options.logName} file`, {
65
- file,
66
- error: err instanceof Error ? err.message : String(err)
67
- });
68
- }
69
- }
70
- return items;
71
- }
72
- async function findFileByInternalId(dir, id, ext) {
73
- if (!await pathExists(dir)) return null;
74
- let files;
75
- try {
76
- files = await readdir(dir);
77
- } catch {
78
- return null;
79
- }
80
- for (const file of files) {
81
- if (!file.endsWith(ext)) continue;
82
- try {
83
- const raw = await readFile(join(dir, file), "utf-8");
84
- let parsedId;
85
- if (ext === ".md" || ext === ".mdx") {
86
- const { data } = matter(raw);
87
- parsedId = data.id;
88
- } else {
89
- const parsed = JSON.parse(raw);
90
- parsedId = parsed.metadata?.id ?? parsed.id;
91
- }
92
- if (parsedId === id) {
93
- return join(dir, file);
94
- }
95
- } catch {
96
- }
97
- }
98
- return null;
99
- }
100
- async function saveItemToDir(dir, item, ext, serialize) {
101
- if (!await pathExists(dir)) {
102
- await mkdir(dir, { recursive: true });
103
- }
104
- const meta = item.metadata;
105
- const filePath = join(dir, `${meta.id}${ext}`);
106
- const existing = await findFileByInternalId(dir, meta.id, ext);
107
- if (existing && existing !== filePath) {
108
- await unlink(existing).catch(() => {
109
- });
110
- }
111
- await writeFile(filePath, serialize(item), "utf-8");
112
- }
113
- var jsonSerializer = (item) => JSON.stringify(item, null, 2) + "\n";
114
- async function deleteItemFromDir(dir, id, ext) {
115
- const fastPath = join(dir, `${id}${ext}`);
116
- try {
117
- await unlink(fastPath);
118
- return { success: true };
119
- } catch {
120
- const found = await findFileByInternalId(dir, id, ext);
121
- if (found) {
122
- try {
123
- await unlink(found);
124
- return { success: true };
125
- } catch {
126
- return { success: false };
127
- }
128
- }
129
- return { success: false };
130
- }
131
- }
132
24
 
133
25
  // src/server/config.ts
134
26
  import { z } from "zod";
@@ -202,25 +94,25 @@ function getRuntimeConfig() {
202
94
 
203
95
  // src/server/agents/registry.ts
204
96
  var __bundleDir = dirname(fileURLToPath(import.meta.url));
205
- var DEFAULTS_DIR = join2(__bundleDir, "defaults");
206
- var DEFAULTS_DIR_ALT = join2(__bundleDir, "agent-defaults");
97
+ var DEFAULTS_DIR = join(__bundleDir, "defaults");
98
+ var DEFAULTS_DIR_ALT = join(__bundleDir, "agent-defaults");
207
99
  var AGENT_EXTENSION = ".agent.md";
208
100
  function getAgentsDir(configDir) {
209
- return join2(configDir, "agents");
101
+ return join(configDir, "agents");
210
102
  }
211
103
  function getProjectAgentsDir(projectDir) {
212
- return join2(projectDir, ".openfox", "agents");
104
+ return join(projectDir, ".openfox", "agents");
213
105
  }
214
- async function pathExists2(path) {
106
+ async function pathExists(path) {
215
107
  try {
216
- await access2(path, constants2.R_OK);
108
+ await access(path, constants.R_OK);
217
109
  return true;
218
110
  } catch {
219
111
  return false;
220
112
  }
221
113
  }
222
114
  function parseAgentFile(raw, filename) {
223
- const { data, content } = matter2(raw);
115
+ const { data, content } = matter(raw);
224
116
  const meta = data;
225
117
  if (!meta["id"] || !content.trim()) {
226
118
  logger.warn("Skipping invalid agent file", { filename });
@@ -238,19 +130,19 @@ function parseAgentFile(raw, filename) {
238
130
  return { metadata, prompt: content.trim() };
239
131
  }
240
132
  async function loadAgentsFromDir(dir) {
241
- if (!await pathExists2(dir)) {
133
+ if (!await pathExists(dir)) {
242
134
  return [];
243
135
  }
244
136
  let files;
245
137
  try {
246
- files = (await readdir2(dir)).filter((f) => f.endsWith(AGENT_EXTENSION));
138
+ files = (await readdir(dir)).filter((f) => f.endsWith(AGENT_EXTENSION));
247
139
  } catch {
248
140
  return [];
249
141
  }
250
142
  const agents = [];
251
143
  for (const file of files) {
252
144
  try {
253
- const raw = await readFile2(join2(dir, file), "utf-8");
145
+ const raw = await readFile(join(dir, file), "utf-8");
254
146
  const agent = parseAgentFile(raw, file);
255
147
  if (agent) {
256
148
  agents.push(agent);
@@ -294,7 +186,7 @@ async function saveAgentToProject(projectDir, agent) {
294
186
  getProjectAgentsDir(projectDir),
295
187
  agent,
296
188
  AGENT_EXTENSION,
297
- (a) => matter2.stringify(a.prompt, a.metadata)
189
+ (a) => matter.stringify(a.prompt, a.metadata)
298
190
  );
299
191
  }
300
192
  async function deleteProjectAgent(projectDir, agentId) {
@@ -302,7 +194,7 @@ async function deleteProjectAgent(projectDir, agentId) {
302
194
  const paths = getAgentFilePaths(agentsDir, agentId);
303
195
  for (const filePath of paths) {
304
196
  try {
305
- await unlink2(filePath);
197
+ await unlink(filePath);
306
198
  return { success: true };
307
199
  } catch {
308
200
  continue;
@@ -310,11 +202,11 @@ async function deleteProjectAgent(projectDir, agentId) {
310
202
  }
311
203
  return { success: false };
312
204
  }
313
- async function loadAllAgentsDefault() {
205
+ async function loadAllAgentsDefault(projectDir) {
314
206
  try {
315
207
  const config = getRuntimeConfig();
316
208
  const configDir = getGlobalConfigDir(config.mode ?? "production");
317
- return await loadAllAgents(configDir, config.workdir);
209
+ return await loadAllAgents(configDir, projectDir ?? config.workdir);
318
210
  } catch {
319
211
  return loadDefaultAgents();
320
212
  }
@@ -322,7 +214,7 @@ async function loadAllAgentsDefault() {
322
214
  async function getDefaultAgentIds() {
323
215
  for (const dir of [DEFAULTS_DIR, DEFAULTS_DIR_ALT]) {
324
216
  try {
325
- const files = (await readdir2(dir)).filter((f) => f.endsWith(AGENT_EXTENSION));
217
+ const files = (await readdir(dir)).filter((f) => f.endsWith(AGENT_EXTENSION));
326
218
  return files.map((f) => f.replace(AGENT_EXTENSION, ""));
327
219
  } catch {
328
220
  }
@@ -339,7 +231,7 @@ async function isDefaultAgent(agentId) {
339
231
  }
340
232
  function getAgentFilePaths(agentsDir, agentId) {
341
233
  const hyphenated = agentId.replace(/_/g, "-");
342
- return [join2(agentsDir, `${agentId}${AGENT_EXTENSION}`), join2(agentsDir, `${hyphenated}${AGENT_EXTENSION}`)];
234
+ return [join(agentsDir, `${agentId}${AGENT_EXTENSION}`), join(agentsDir, `${hyphenated}${AGENT_EXTENSION}`)];
343
235
  }
344
236
  function findAgentById(agentId, agents) {
345
237
  return agents.find((a) => a.metadata.id === agentId);
@@ -354,14 +246,14 @@ async function agentExists(configDir, agentId, projectDir) {
354
246
  const agentsDir = getAgentsDir(configDir);
355
247
  const paths = getAgentFilePaths(agentsDir, agentId);
356
248
  for (const filePath of paths) {
357
- if (await pathExists2(filePath)) {
249
+ if (await pathExists(filePath)) {
358
250
  return true;
359
251
  }
360
252
  }
361
253
  if (projectDir) {
362
254
  const projectPaths = getAgentFilePaths(getProjectAgentsDir(projectDir), agentId);
363
255
  for (const filePath of projectPaths) {
364
- if (await pathExists2(filePath)) {
256
+ if (await pathExists(filePath)) {
365
257
  return true;
366
258
  }
367
259
  }
@@ -370,12 +262,12 @@ async function agentExists(configDir, agentId, projectDir) {
370
262
  }
371
263
  async function saveAgent(configDir, agent) {
372
264
  const agentsDir = getAgentsDir(configDir);
373
- if (!await pathExists2(agentsDir)) {
374
- await mkdir2(agentsDir, { recursive: true });
265
+ if (!await pathExists(agentsDir)) {
266
+ await mkdir(agentsDir, { recursive: true });
375
267
  }
376
- const filePath = join2(agentsDir, `${agent.metadata.id}${AGENT_EXTENSION}`);
377
- const content = matter2.stringify(agent.prompt, agent.metadata);
378
- await writeFile2(filePath, content, "utf-8");
268
+ const filePath = join(agentsDir, `${agent.metadata.id}${AGENT_EXTENSION}`);
269
+ const content = matter.stringify(agent.prompt, agent.metadata);
270
+ await writeFile(filePath, content, "utf-8");
379
271
  }
380
272
  async function deleteAgent(configDir, agentId) {
381
273
  const isDefault = await isDefaultAgent(agentId);
@@ -386,7 +278,7 @@ async function deleteAgent(configDir, agentId) {
386
278
  const paths = getAgentFilePaths(agentsDir, agentId);
387
279
  for (const filePath of paths) {
388
280
  try {
389
- await unlink2(filePath);
281
+ await unlink(filePath);
390
282
  return { success: true };
391
283
  } catch {
392
284
  continue;
@@ -404,7 +296,19 @@ async function getOverrideAgentIds(configDir, projectDir) {
404
296
  const projectOverrides = projectAgents.map((agent) => agent.metadata.id).filter((id) => defaultIds.includes(id));
405
297
  return [...userOverrides, ...projectOverrides];
406
298
  }
407
- function resolveDefaultAgentId() {
299
+ function resolveDefaultAgentId(projectId) {
300
+ if (projectId) {
301
+ try {
302
+ const projectDefault = getProjectDefaultAgent(projectId);
303
+ if (projectDefault && projectDefault.trim().length > 0) {
304
+ return projectDefault.trim();
305
+ }
306
+ } catch (err) {
307
+ logger.debug("Failed to read project defaultAgent from DB", {
308
+ error: err instanceof Error ? err.message : String(err)
309
+ });
310
+ }
311
+ }
408
312
  try {
409
313
  const dbSetting = getSetting(SETTINGS_KEYS.DEFAULT_AGENT);
410
314
  if (dbSetting && dbSetting.trim().length > 0) {
@@ -426,13 +330,6 @@ function resolveDefaultAgentId() {
426
330
  }
427
331
 
428
332
  export {
429
- pathExists,
430
- getDefaultIds,
431
- loadItemsFromDir,
432
- findFileByInternalId,
433
- saveItemToDir,
434
- jsonSerializer,
435
- deleteItemFromDir,
436
333
  loadConfig,
437
334
  setRuntimeConfig,
438
335
  getRuntimeConfig,
@@ -455,4 +352,4 @@ export {
455
352
  getOverrideAgentIds,
456
353
  resolveDefaultAgentId
457
354
  };
458
- //# sourceMappingURL=chunk-BYSUSSSC.js.map
355
+ //# sourceMappingURL=chunk-LNNBLB6G.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SETTINGS_KEYS,
3
3
  getSetting
4
- } from "./chunk-WWTYWLDM.js";
4
+ } from "./chunk-HD6Y77RO.js";
5
5
  import {
6
6
  logger
7
7
  } from "./chunk-K44MW7JJ.js";
@@ -164,4 +164,4 @@ export {
164
164
  WorkspaceInUseError,
165
165
  OpenAIHttpClient
166
166
  };
167
- //# sourceMappingURL=chunk-V4664YKR.js.map
167
+ //# sourceMappingURL=chunk-LTYL6ZGH.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getProjectByWorkdir
3
- } from "./chunk-XQR76MQ5.js";
3
+ } from "./chunk-3PG65AXG.js";
4
4
  import {
5
5
  logger
6
6
  } from "./chunk-K44MW7JJ.js";
@@ -22,11 +22,13 @@ function buildHttpHeaders(resHeaders, status, contentLengthOverride, contentType
22
22
  }
23
23
  var proxyPool = /* @__PURE__ */ new Map();
24
24
  var nextOffset = 0;
25
+ var PORT_SCAN_RANGE = 200;
25
26
  async function getAvailablePort(proxyBase) {
26
- for (let port = proxyBase; port < proxyBase + 200; port++) {
27
+ const base = Math.min(proxyBase, 65535 - PORT_SCAN_RANGE);
28
+ for (let port = base; port < base + PORT_SCAN_RANGE; port++) {
27
29
  if (await tryBind(port)) return port;
28
30
  }
29
- return proxyBase + nextOffset++ % 200;
31
+ return base + nextOffset++ % PORT_SCAN_RANGE;
30
32
  }
31
33
  function tryBind(port) {
32
34
  return new Promise((resolve) => {
@@ -343,4 +345,4 @@ export {
343
345
  startInspectProxy,
344
346
  stopAllInspectProxies
345
347
  };
346
- //# sourceMappingURL=chunk-R2MTWC7C.js.map
348
+ //# sourceMappingURL=chunk-M6X6AIEG.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  getProjectByWorkdir,
6
6
  updateProject
7
- } from "./chunk-XQR76MQ5.js";
7
+ } from "./chunk-3PG65AXG.js";
8
8
  import {
9
9
  logger
10
10
  } from "./chunk-K44MW7JJ.js";
@@ -333,4 +333,4 @@ export {
333
333
  deleteWorkspace,
334
334
  isGitRepository
335
335
  };
336
- //# sourceMappingURL=chunk-VGRVPYZ5.js.map
336
+ //# sourceMappingURL=chunk-O6DU226D.js.map