openfox 2.0.55 → 2.0.56

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.
@@ -5,8 +5,8 @@ import {
5
5
  } from "./chunk-UOKVBO67.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-JQ4FVPIM.js";
9
- import "./chunk-ZIW47U5D.js";
8
+ } from "./chunk-4R6YPRLX.js";
9
+ import "./chunk-H5YF6DVQ.js";
10
10
  import "./chunk-LBGHZLLH.js";
11
11
  import "./chunk-OCILP3SJ.js";
12
12
  import "./chunk-CYJEQF7U.js";
@@ -154,4 +154,4 @@ export {
154
154
  startChatSession,
155
155
  stopSessionExecution
156
156
  };
157
- //# sourceMappingURL=chat-handler-C3NO5RY3.js.map
157
+ //# sourceMappingURL=chat-handler-TVFUXHXP.js.map
@@ -12,7 +12,7 @@ import {
12
12
  loadAllAgentsDefault,
13
13
  processEventsForConversation,
14
14
  runTopLevelAgentLoop
15
- } from "./chunk-ZIW47U5D.js";
15
+ } from "./chunk-H5YF6DVQ.js";
16
16
  import {
17
17
  TurnMetrics,
18
18
  WORKFLOW_KICKOFF_PROMPT,
@@ -324,4 +324,4 @@ export {
324
324
  runAgentTurn,
325
325
  injectWorkflowKickoffIfNeeded
326
326
  };
327
- //# sourceMappingURL=chunk-JQ4FVPIM.js.map
327
+ //# sourceMappingURL=chunk-4R6YPRLX.js.map
@@ -2,7 +2,7 @@ import {
2
2
  injectWorkflowKickoffIfNeeded,
3
3
  runAgentTurn,
4
4
  runChatTurn
5
- } from "./chunk-JQ4FVPIM.js";
5
+ } from "./chunk-4R6YPRLX.js";
6
6
  import {
7
7
  applyDynamicContext,
8
8
  checkAborted,
@@ -16,7 +16,7 @@ import {
16
16
  loadAllAgentsDefault,
17
17
  saveItemToDir,
18
18
  spawnShellProcess
19
- } from "./chunk-ZIW47U5D.js";
19
+ } from "./chunk-H5YF6DVQ.js";
20
20
  import {
21
21
  getPlatformShell,
22
22
  onProcessEvent
@@ -2091,4 +2091,4 @@ export {
2091
2091
  signalMcpReady,
2092
2092
  createWebSocketServer
2093
2093
  };
2094
- //# sourceMappingURL=chunk-PRYVRROH.js.map
2094
+ //# sourceMappingURL=chunk-7VFX3QXQ.js.map
@@ -170,10 +170,23 @@ function isPathAllowed(sessionId, path) {
170
170
  return allowed.has(normalize(path));
171
171
  }
172
172
  async function safeRealpath(path) {
173
+ const absolutePath = normalize(resolve(path));
173
174
  try {
174
- return await realpath(path);
175
+ return await realpath(absolutePath);
175
176
  } catch {
176
- return normalize(resolve(path));
177
+ const missingSegments = [];
178
+ let current = absolutePath;
179
+ while (true) {
180
+ try {
181
+ const canonicalParent = await realpath(current);
182
+ return normalize(join(canonicalParent, ...missingSegments.reverse()));
183
+ } catch {
184
+ const parent = resolve(current, "..");
185
+ if (parent === current) return absolutePath;
186
+ missingSegments.push(basename(current));
187
+ current = parent;
188
+ }
189
+ }
177
190
  }
178
191
  }
179
192
  async function isPathWithinSandbox(path, workdir, sessionId) {
@@ -186,9 +199,9 @@ async function isPathWithinSandbox(path, workdir, sessionId) {
186
199
  const { readlink } = await import("fs/promises");
187
200
  const linkTarget = await readlink(path);
188
201
  const linkDir = resolve(path, "..");
189
- resolvedPath = normalize(resolve(linkDir, linkTarget));
202
+ resolvedPath = await safeRealpath(resolve(linkDir, linkTarget));
190
203
  } catch {
191
- resolvedPath = normalize(resolve(path));
204
+ resolvedPath = await safeRealpath(path);
192
205
  }
193
206
  }
194
207
  resolvedPath = resolvedPath.replace(/\/+$/, "");
@@ -196,12 +209,12 @@ async function isPathWithinSandbox(path, workdir, sessionId) {
196
209
  return { allowed: true, resolvedPath };
197
210
  }
198
211
  for (const root of ALLOWED_ROOTS) {
199
- const normalizedRoot = normalize(root);
212
+ const normalizedRoot = normalize((await safeRealpath(root)).replace(/\/+$/, ""));
200
213
  if (resolvedPath === normalizedRoot || resolvedPath.startsWith(normalizedRoot + sep)) {
201
214
  return { allowed: true, resolvedPath };
202
215
  }
203
216
  }
204
- if (sessionId && isPathAllowed(sessionId, resolvedPath)) {
217
+ if (sessionId && (isPathAllowed(sessionId, path) || isPathAllowed(sessionId, resolvedPath))) {
205
218
  return { allowed: true, resolvedPath };
206
219
  }
207
220
  return { allowed: false, resolvedPath };
@@ -3411,7 +3424,7 @@ var callSubAgentTool = {
3411
3424
  };
3412
3425
  }
3413
3426
  try {
3414
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-32PBXC2S.js");
3427
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-3ULXCV6F.js");
3415
3428
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3416
3429
  const turnMetrics = new TurnMetrics();
3417
3430
  const result = await executeSubAgent({
@@ -4227,7 +4240,7 @@ function resolveAgentDef2(sessionManager, sessionId) {
4227
4240
  }
4228
4241
  async function buildCachedPrompt(sessionManager, sessionId, agentDef) {
4229
4242
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
4230
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-32PBXC2S.js");
4243
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-3ULXCV6F.js");
4231
4244
  const tools = getToolRegistryForAgent2(agentDef).definitions;
4232
4245
  const toolFingerprint = getToolFingerprint(tools);
4233
4246
  const allAgents = await loadAllAgentsDefault();
@@ -4240,7 +4253,7 @@ async function buildCachedPrompt(sessionManager, sessionId, agentDef) {
4240
4253
  async function computeSessionHash(sessionManager, sessionId) {
4241
4254
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
4242
4255
  const agentDef = await resolveAgentDef2(sessionManager, sessionId);
4243
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-32PBXC2S.js");
4256
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-3ULXCV6F.js");
4244
4257
  const tools = getToolRegistryForAgent2(agentDef).definitions;
4245
4258
  const toolFingerprint = getToolFingerprint(tools);
4246
4259
  return computeDynamicContextHash(instructionContent, skills, toolFingerprint);
@@ -4347,7 +4360,7 @@ var mcpConfigTool = createTool(
4347
4360
  await saveGlobalConfig(mcpConfigMode, { ...globalConfig, mcpServers: updated });
4348
4361
  }
4349
4362
  async function rebuildTools() {
4350
- const { setMcpTools: setMcpTools2 } = await import("./tools-32PBXC2S.js");
4363
+ const { setMcpTools: setMcpTools2 } = await import("./tools-3ULXCV6F.js");
4351
4364
  const mcpTools = createMcpTools(mcpManagerForTools);
4352
4365
  setMcpTools2(mcpTools);
4353
4366
  }
@@ -5017,4 +5030,4 @@ export {
5017
5030
  getToolRegistryForAgent,
5018
5031
  createToolRegistry
5019
5032
  };
5020
- //# sourceMappingURL=chunk-ZIW47U5D.js.map
5033
+ //# sourceMappingURL=chunk-H5YF6DVQ.js.map
@@ -208,7 +208,7 @@ async function runCli(options) {
208
208
  if (!configExists) {
209
209
  await runNetworkSetup(mode);
210
210
  }
211
- const { runServe } = await import("./serve-UX6YYIMR.js");
211
+ const { runServe } = await import("./serve-QD3KZNSX.js");
212
212
  const serveOptions = { mode };
213
213
  if (values.port) serveOptions.port = parseInt(values.port);
214
214
  if (values["no-browser"] === true) serveOptions.openBrowser = false;
@@ -220,4 +220,4 @@ async function runCli(options) {
220
220
  export {
221
221
  runCli
222
222
  };
223
- //# sourceMappingURL=chunk-5UHSEVAP.js.map
223
+ //# sourceMappingURL=chunk-ITN5PD7H.js.map
@@ -21,7 +21,7 @@ import {
21
21
  tokenFromPassword,
22
22
  verifyPassword,
23
23
  workflowExists
24
- } from "./chunk-PRYVRROH.js";
24
+ } from "./chunk-7VFX3QXQ.js";
25
25
  import {
26
26
  agentExists,
27
27
  createToolRegistry,
@@ -61,7 +61,7 @@ import {
61
61
  setMcpTools,
62
62
  setNotifyMcpServersChanged,
63
63
  skillExists
64
- } from "./chunk-ZIW47U5D.js";
64
+ } from "./chunk-H5YF6DVQ.js";
65
65
  import {
66
66
  getPathSeparator,
67
67
  isAbsolutePath
@@ -2948,14 +2948,14 @@ var SessionManager = class {
2948
2948
  const msg = {
2949
2949
  queueId: crypto.randomUUID(),
2950
2950
  mode,
2951
- content,
2951
+ content: content ?? "",
2952
2952
  ...attachments ? { attachments } : {},
2953
2953
  ...messageKind ? { messageKind } : {},
2954
2954
  queuedAt: (/* @__PURE__ */ new Date()).toISOString()
2955
2955
  };
2956
2956
  queue.push(msg);
2957
2957
  this.messageQueues.set(sessionId, queue);
2958
- this.emit({ type: "queue_added", sessionId, queueId: msg.queueId, mode, content });
2958
+ this.emit({ type: "queue_added", sessionId, queueId: msg.queueId, mode, content: content ?? "" });
2959
2959
  return msg;
2960
2960
  }
2961
2961
  cancelQueuedMessage(sessionId, queueId) {
@@ -3849,7 +3849,7 @@ import { Router as Router7 } from "express";
3849
3849
  import { spawn as spawn2 } from "child_process";
3850
3850
 
3851
3851
  // src/constants.ts
3852
- var VERSION = "2.0.55";
3852
+ var VERSION = "2.0.56";
3853
3853
 
3854
3854
  // src/server/routes/auto-update.ts
3855
3855
  var updateInProgress = false;
@@ -4050,7 +4050,7 @@ async function createServerHandle(config4) {
4050
4050
  setMcpTools(mcpTools);
4051
4051
  logger.info("MCP tools registered", { count: mcpTools.length });
4052
4052
  }
4053
- const { signalMcpReady } = await import("./server-ILO7GYZE.js");
4053
+ const { signalMcpReady } = await import("./server-URL2FOSC.js");
4054
4054
  signalMcpReady();
4055
4055
  });
4056
4056
  const app = express();
@@ -4243,7 +4243,7 @@ async function createServerHandle(config4) {
4243
4243
  app.get("/api/sessions/:id", async (req, res) => {
4244
4244
  const { getEventStore: getEventStore2 } = await import("./events-52XADT6Y.js");
4245
4245
  const { buildMessagesFromStoredEvents } = await import("./folding-2BGFLV5J.js");
4246
- const { getPendingQuestionsForSession } = await import("./tools-32PBXC2S.js");
4246
+ const { getPendingQuestionsForSession } = await import("./tools-3ULXCV6F.js");
4247
4247
  const session = sessionManager.getSession(req.params.id);
4248
4248
  if (!session) {
4249
4249
  return res.status(404).json({ error: "Session not found" });
@@ -4262,8 +4262,8 @@ async function createServerHandle(config4) {
4262
4262
  if (!session) {
4263
4263
  return res.status(404).json({ error: "Session not found" });
4264
4264
  }
4265
- const { stopSessionExecution } = await import("./chat-handler-C3NO5RY3.js");
4266
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-32PBXC2S.js");
4265
+ const { stopSessionExecution } = await import("./chat-handler-TVFUXHXP.js");
4266
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-3ULXCV6F.js");
4267
4267
  sessionManager.clearMessageQueue(sessionId);
4268
4268
  stopSessionExecution(sessionId, sessionManager);
4269
4269
  abortSession(sessionId);
@@ -4417,7 +4417,7 @@ async function createServerHandle(config4) {
4417
4417
  if (!callId || approved === void 0) {
4418
4418
  return res.status(400).json({ error: "callId and approved are required" });
4419
4419
  }
4420
- const { providePathConfirmation } = await import("./tools-32PBXC2S.js");
4420
+ const { providePathConfirmation } = await import("./tools-3ULXCV6F.js");
4421
4421
  const result = providePathConfirmation(callId, approved, alwaysAllow);
4422
4422
  if (!result.found) {
4423
4423
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -4425,7 +4425,7 @@ async function createServerHandle(config4) {
4425
4425
  const { getEventStore: getEventStore2 } = await import("./events-52XADT6Y.js");
4426
4426
  const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-2BGFLV5J.js");
4427
4427
  const { createSessionStateMessage } = await import("./protocol-CTNE3ANP.js");
4428
- const { getPendingQuestionsForSession } = await import("./tools-32PBXC2S.js");
4428
+ const { getPendingQuestionsForSession } = await import("./tools-3ULXCV6F.js");
4429
4429
  const eventStore = getEventStore2();
4430
4430
  const events = eventStore.getEvents(sessionId);
4431
4431
  const messages = buildMessagesFromStoredEvents(events);
@@ -4446,7 +4446,7 @@ async function createServerHandle(config4) {
4446
4446
  if (!skip && typeof answer !== "string") {
4447
4447
  return res.status(400).json({ error: "answer is required when not skipping" });
4448
4448
  }
4449
- const { provideAnswer } = await import("./tools-32PBXC2S.js");
4449
+ const { provideAnswer } = await import("./tools-3ULXCV6F.js");
4450
4450
  const found = provideAnswer(callId, answer ?? "", skip ?? false);
4451
4451
  if (!found) {
4452
4452
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -4460,8 +4460,10 @@ async function createServerHandle(config4) {
4460
4460
  return res.status(404).json({ error: "Session not found" });
4461
4461
  }
4462
4462
  const { content, attachments, messageKind } = req.body;
4463
- if (!content?.trim()) {
4464
- return res.status(400).json({ error: "content is required" });
4463
+ const hasContent = content?.trim();
4464
+ const hasAttachments = Array.isArray(attachments) && attachments.length > 0;
4465
+ if (!hasContent && !hasAttachments) {
4466
+ return res.status(400).json({ error: "content or attachments is required" });
4465
4467
  }
4466
4468
  sessionManager.queueMessage(sessionId, "asap", content, attachments, messageKind);
4467
4469
  res.json({ success: true, queueState: sessionManager.getQueueState(sessionId) });
@@ -4482,7 +4484,7 @@ async function createServerHandle(config4) {
4482
4484
  if (sessionManager.isWarmedUp(sessionId)) {
4483
4485
  return res.json({ success: false, reason: "already_warmed" });
4484
4486
  }
4485
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-2OPDGKLZ.js");
4487
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-ZBWWJZPN.js");
4486
4488
  runAgentTurn(
4487
4489
  {
4488
4490
  sessionManager,
@@ -4525,8 +4527,8 @@ async function createServerHandle(config4) {
4525
4527
  if (!session) {
4526
4528
  return res.status(404).json({ error: "Session not found" });
4527
4529
  }
4528
- const { stopSessionExecution } = await import("./chat-handler-C3NO5RY3.js");
4529
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-32PBXC2S.js");
4530
+ const { stopSessionExecution } = await import("./chat-handler-TVFUXHXP.js");
4531
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-3ULXCV6F.js");
4530
4532
  const queuedMessages = sessionManager.getQueueState(sessionId);
4531
4533
  sessionManager.clearMessageQueue(sessionId);
4532
4534
  stopSessionExecution(sessionId, sessionManager);
@@ -5036,7 +5038,7 @@ async function createServerHandle(config4) {
5036
5038
  });
5037
5039
  async function rebuildMcpTools() {
5038
5040
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-MOGEI6TP.js");
5039
- const { setMcpTools: setMcpTools2 } = await import("./tools-32PBXC2S.js");
5041
+ const { setMcpTools: setMcpTools2 } = await import("./tools-3ULXCV6F.js");
5040
5042
  const mcpTools = createMcpTools2(mcpManager);
5041
5043
  setMcpTools2(mcpTools);
5042
5044
  }
@@ -5344,7 +5346,7 @@ async function createServerHandle(config4) {
5344
5346
  const state = sessionManager.getContextState(sessionId);
5345
5347
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
5346
5348
  });
5347
- const { QueueProcessor } = await import("./processor-VUAIB4Z6.js");
5349
+ const { QueueProcessor } = await import("./processor-KXXQKBQV.js");
5348
5350
  const queueProcessor = new QueueProcessor({
5349
5351
  sessionManager,
5350
5352
  providerManager,
@@ -5419,4 +5421,4 @@ export {
5419
5421
  createServerHandle,
5420
5422
  createServer
5421
5423
  };
5422
- //# sourceMappingURL=chunk-7V3JBKYK.js.map
5424
+ //# sourceMappingURL=chunk-YVRGXDIX.js.map
package/dist/cli/dev.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-5UHSEVAP.js";
4
+ } from "../chunk-ITN5PD7H.js";
5
5
  import "../chunk-XY3LESVZ.js";
6
6
  import {
7
7
  logger
package/dist/cli/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-5UHSEVAP.js";
4
+ } from "../chunk-ITN5PD7H.js";
5
5
  import "../chunk-XY3LESVZ.js";
6
6
  import {
7
7
  logger
@@ -2,8 +2,8 @@ import {
2
2
  injectWorkflowKickoffIfNeeded,
3
3
  runAgentTurn,
4
4
  runChatTurn
5
- } from "./chunk-JQ4FVPIM.js";
6
- import "./chunk-ZIW47U5D.js";
5
+ } from "./chunk-4R6YPRLX.js";
6
+ import "./chunk-H5YF6DVQ.js";
7
7
  import "./chunk-LBGHZLLH.js";
8
8
  import "./chunk-OCILP3SJ.js";
9
9
  import "./chunk-CYJEQF7U.js";
@@ -43,4 +43,4 @@ export {
43
43
  runAgentTurn,
44
44
  runChatTurn
45
45
  };
46
- //# sourceMappingURL=orchestrator-2OPDGKLZ.js.map
46
+ //# sourceMappingURL=orchestrator-ZBWWJZPN.js.map
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "2.0.55",
3
+ "version": "2.0.56",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -3,7 +3,7 @@ import {
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
5
  } from "./chunk-UOKVBO67.js";
6
- import "./chunk-ZIW47U5D.js";
6
+ import "./chunk-H5YF6DVQ.js";
7
7
  import "./chunk-LBGHZLLH.js";
8
8
  import "./chunk-OCILP3SJ.js";
9
9
  import "./chunk-CYJEQF7U.js";
@@ -174,7 +174,7 @@ var QueueProcessor = class {
174
174
  backend: provider?.backend ?? llmClient.getBackend(),
175
175
  model: llmClient.getModel()
176
176
  };
177
- const { runChatTurn } = await import("./orchestrator-2OPDGKLZ.js");
177
+ const { runChatTurn } = await import("./orchestrator-ZBWWJZPN.js");
178
178
  const runChatTurnParams = buildRunChatTurnParams({
179
179
  sessionManager,
180
180
  sessionId,
@@ -222,4 +222,4 @@ var QueueProcessor = class {
222
222
  export {
223
223
  QueueProcessor
224
224
  };
225
- //# sourceMappingURL=processor-VUAIB4Z6.js.map
225
+ //# sourceMappingURL=processor-KXXQKBQV.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  VERSION,
3
3
  createServer
4
- } from "./chunk-7V3JBKYK.js";
5
- import "./chunk-PRYVRROH.js";
6
- import "./chunk-JQ4FVPIM.js";
7
- import "./chunk-ZIW47U5D.js";
4
+ } from "./chunk-YVRGXDIX.js";
5
+ import "./chunk-7VFX3QXQ.js";
6
+ import "./chunk-4R6YPRLX.js";
7
+ import "./chunk-H5YF6DVQ.js";
8
8
  import "./chunk-LBGHZLLH.js";
9
9
  import "./chunk-OCILP3SJ.js";
10
10
  import "./chunk-CYJEQF7U.js";
@@ -205,4 +205,4 @@ async function runServe(options) {
205
205
  export {
206
206
  runServe
207
207
  };
208
- //# sourceMappingURL=serve-UX6YYIMR.js.map
208
+ //# sourceMappingURL=serve-QD3KZNSX.js.map
@@ -544,7 +544,7 @@ declare class SessionManager {
544
544
  removeCriterion(sessionId: string, criterionId: string): Criterion[];
545
545
  setMetadataEntries(sessionId: string, key: string, entries: MetadataEntry[]): void;
546
546
  private messageQueues;
547
- queueMessage(sessionId: string, mode: 'asap' | 'completion', content: string, attachments?: Attachment[], messageKind?: string): QueuedMessage;
547
+ queueMessage(sessionId: string, mode: 'asap' | 'completion', content?: string, attachments?: Attachment[], messageKind?: string): QueuedMessage;
548
548
  cancelQueuedMessage(sessionId: string, queueId: string): boolean;
549
549
  drainAsapMessages(sessionId: string): QueuedMessage[];
550
550
  drainCompletionMessages(sessionId: string): QueuedMessage[];
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createServer,
3
3
  createServerHandle
4
- } from "../chunk-7V3JBKYK.js";
5
- import "../chunk-PRYVRROH.js";
6
- import "../chunk-JQ4FVPIM.js";
7
- import "../chunk-ZIW47U5D.js";
4
+ } from "../chunk-YVRGXDIX.js";
5
+ import "../chunk-7VFX3QXQ.js";
6
+ import "../chunk-4R6YPRLX.js";
7
+ import "../chunk-H5YF6DVQ.js";
8
8
  import "../chunk-LBGHZLLH.js";
9
9
  import "../chunk-OCILP3SJ.js";
10
10
  import "../chunk-CYJEQF7U.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createWebSocketServer,
3
3
  signalMcpReady
4
- } from "./chunk-PRYVRROH.js";
5
- import "./chunk-JQ4FVPIM.js";
6
- import "./chunk-ZIW47U5D.js";
4
+ } from "./chunk-7VFX3QXQ.js";
5
+ import "./chunk-4R6YPRLX.js";
6
+ import "./chunk-H5YF6DVQ.js";
7
7
  import "./chunk-LBGHZLLH.js";
8
8
  import "./chunk-OCILP3SJ.js";
9
9
  import "./chunk-CYJEQF7U.js";
@@ -35,4 +35,4 @@ export {
35
35
  createWebSocketServer,
36
36
  signalMcpReady
37
37
  };
38
- //# sourceMappingURL=server-ILO7GYZE.js.map
38
+ //# sourceMappingURL=server-URL2FOSC.js.map
@@ -12,7 +12,7 @@ import {
12
12
  setMcpTools,
13
13
  stepDoneTool,
14
14
  validateToolAction
15
- } from "./chunk-ZIW47U5D.js";
15
+ } from "./chunk-H5YF6DVQ.js";
16
16
  import "./chunk-LBGHZLLH.js";
17
17
  import "./chunk-OCILP3SJ.js";
18
18
  import "./chunk-CYJEQF7U.js";
@@ -58,4 +58,4 @@ export {
58
58
  stepDoneTool,
59
59
  validateToolAction
60
60
  };
61
- //# sourceMappingURL=tools-32PBXC2S.js.map
61
+ //# sourceMappingURL=tools-3ULXCV6F.js.map