openfox 1.2.2 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ import {
2
2
  maybeAutoCompactContext,
3
3
  performManualContextCompaction,
4
4
  resolveCompactionStatsIdentity
5
- } from "./chunk-36AJGM6G.js";
5
+ } from "./chunk-4JBBQQOD.js";
6
6
  import "./chunk-NW7PIZH3.js";
7
7
  import "./chunk-WQ4W5H6A.js";
8
8
  import "./chunk-S4QKTRGJ.js";
@@ -20,4 +20,4 @@ export {
20
20
  performManualContextCompaction,
21
21
  resolveCompactionStatsIdentity
22
22
  };
23
- //# sourceMappingURL=auto-compaction-Q36IMXD4.js.map
23
+ //# sourceMappingURL=auto-compaction-RRFGQDQN.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  runChatTurn
3
- } from "./chunk-NIQ4X7Y7.js";
4
- import "./chunk-36AJGM6G.js";
3
+ } from "./chunk-O7O3XMWO.js";
4
+ import "./chunk-4JBBQQOD.js";
5
5
  import {
6
6
  generateSessionName,
7
7
  needsNameGeneration
@@ -59,7 +59,7 @@ async function startChatSession(sessionId, content, deps, options) {
59
59
  sessionManager.setRunning(sessionId, true);
60
60
  broadcastForSession(sessionId, createSessionRunningMessage(true));
61
61
  try {
62
- const { maybeAutoCompactContext } = await import("./auto-compaction-Q36IMXD4.js");
62
+ const { maybeAutoCompactContext } = await import("./auto-compaction-RRFGQDQN.js");
63
63
  await maybeAutoCompactContext({
64
64
  sessionManager,
65
65
  sessionId,
@@ -198,4 +198,4 @@ export {
198
198
  startChatSession,
199
199
  stopSessionExecution
200
200
  };
201
- //# sourceMappingURL=chat-handler-BTU2FLJY.js.map
201
+ //# sourceMappingURL=chat-handler-34PPF43W.js.map
@@ -356,10 +356,8 @@ var COMPACTION_PROMPT = `Summarize the conversation history concisely, preservin
356
356
  6. The user's current question, prompt, or active request
357
357
 
358
358
  Be thorough but concise. Output as a structured summary.
359
-
360
- IMPORTANT: Do NOT use any tools. Do NOT output XML tags like <tool_call>, <function=>. Only respond with plain text summary.`;
359
+ You may use available tools to read files and verify changes if needed.`;
361
360
  var FORMAT_CORRECTION_PROMPT = `IMPORTANT: You MUST use the JSON function calling API. Do NOT output XML tags like <tool_call>, <function=>, or <parameter=>. Your previous attempt was stopped because you used the wrong format. Use the proper tool_calls format.`;
362
- var MAX_FORMAT_RETRIES = 10;
363
361
 
364
362
  // src/server/chat/request-context.ts
365
363
  function getTriggerUserMessage(messages) {
@@ -732,6 +730,144 @@ async function consumeStreamGenerator(gen, onEvent) {
732
730
  onEvent(result.value);
733
731
  }
734
732
  }
733
+ var MAX_TOOL_LOOP_ITERATIONS = 10;
734
+ async function consumeStreamWithToolLoop(options) {
735
+ const {
736
+ messageId,
737
+ systemPrompt,
738
+ llmClient,
739
+ messages,
740
+ tools,
741
+ toolChoice,
742
+ disableThinking,
743
+ signal,
744
+ turnMetrics,
745
+ toolRegistry,
746
+ sessionId,
747
+ workdir,
748
+ onEvent,
749
+ statsIdentity,
750
+ dangerLevel
751
+ } = options;
752
+ const systemMsg = { role: "system", content: systemPrompt };
753
+ let currentMessages = [systemMsg, ...messages];
754
+ let iterations = 0;
755
+ for (; ; ) {
756
+ if (signal?.aborted) {
757
+ return {
758
+ content: "",
759
+ toolCalls: [],
760
+ segments: [],
761
+ usage: { promptTokens: 0, completionTokens: 0 },
762
+ timing: { ttft: 0, completionTime: 0, tps: 0, prefillTps: 0 },
763
+ aborted: true,
764
+ xmlFormatError: false
765
+ };
766
+ }
767
+ if (++iterations > MAX_TOOL_LOOP_ITERATIONS) {
768
+ throw new Error("Max tool loop iterations exceeded during compaction");
769
+ }
770
+ const streamGen = streamLLMPure({
771
+ messageId,
772
+ systemPrompt: "",
773
+ llmClient,
774
+ messages: currentMessages,
775
+ tools,
776
+ toolChoice,
777
+ disableThinking: disableThinking ?? false,
778
+ signal
779
+ });
780
+ const result = await consumeStreamGenerator(streamGen, onEvent);
781
+ if (result.aborted) {
782
+ return result;
783
+ }
784
+ if (result.xmlFormatError) {
785
+ const correctionMsg = { role: "user", content: FORMAT_CORRECTION_PROMPT };
786
+ currentMessages = [...currentMessages, correctionMsg];
787
+ continue;
788
+ }
789
+ turnMetrics.addLLMCall(result.timing, result.usage.promptTokens, result.usage.completionTokens);
790
+ if (result.toolCalls.length > 0) {
791
+ const stats = turnMetrics.buildStats(statsIdentity, "compaction");
792
+ onEvent(createMessageDoneEvent(messageId, {
793
+ segments: result.segments,
794
+ stats
795
+ }));
796
+ const toolContext = {
797
+ sessionId,
798
+ workdir,
799
+ turnMetrics,
800
+ signal: signal ?? void 0,
801
+ llmClient,
802
+ statsIdentity,
803
+ dangerLevel,
804
+ toolRegistry
805
+ };
806
+ const toolResult = await executeToolBatchWithContext(messageId, result.toolCalls, toolContext, onEvent);
807
+ for (const toolMsg of toolResult.toolMessages) {
808
+ const msg = {
809
+ role: "tool",
810
+ content: toolMsg.content,
811
+ toolCallId: toolMsg.toolCallId ?? ""
812
+ };
813
+ currentMessages.push(msg);
814
+ }
815
+ currentMessages.push({
816
+ role: "assistant",
817
+ content: result.content,
818
+ toolCalls: result.toolCalls
819
+ });
820
+ continue;
821
+ }
822
+ if (!result.content && result.thinkingContent) {
823
+ return {
824
+ ...result,
825
+ content: result.thinkingContent
826
+ };
827
+ }
828
+ return result;
829
+ }
830
+ }
831
+ async function executeToolBatchWithContext(assistantMsgId, toolCalls, ctx, onEvent) {
832
+ const toolMessages = [];
833
+ let criteriaChanged = false;
834
+ for (const toolCall of toolCalls) {
835
+ if (ctx.signal?.aborted) {
836
+ throw new Error("Aborted");
837
+ }
838
+ onEvent(createToolCallEvent(assistantMsgId, toolCall));
839
+ let toolResult;
840
+ try {
841
+ toolResult = await ctx.toolRegistry.execute(toolCall.name, toolCall.arguments, {
842
+ sessionId: ctx.sessionId,
843
+ workdir: ctx.workdir,
844
+ ...ctx.signal ? { signal: ctx.signal } : {},
845
+ llmClient: ctx.llmClient,
846
+ statsIdentity: ctx.statsIdentity,
847
+ ...ctx.dangerLevel ? { dangerLevel: ctx.dangerLevel } : {},
848
+ toolCallId: toolCall.id
849
+ });
850
+ } catch (error) {
851
+ toolResult = {
852
+ success: false,
853
+ error: error instanceof Error ? error.message : "Unknown error",
854
+ durationMs: 0,
855
+ truncated: false
856
+ };
857
+ }
858
+ ctx.turnMetrics.addToolTime(toolResult.durationMs);
859
+ onEvent(createToolResultEvent(assistantMsgId, toolCall.id, toolResult));
860
+ const content = toolResult.success ? toolResult.output ?? "Success" : toolResult.output ? `${toolResult.output}
861
+
862
+ Error: ${toolResult.error}` : `Error: ${toolResult.error}`;
863
+ toolMessages.push({
864
+ role: "tool",
865
+ content,
866
+ toolCallId: toolCall.id
867
+ });
868
+ }
869
+ return { toolMessages, criteriaChanged };
870
+ }
735
871
 
736
872
  // src/server/agents/registry.ts
737
873
  import { readdir, readFile as readFile2, writeFile, copyFile, mkdir, access as access2, unlink } from "fs/promises";
@@ -2917,7 +3053,7 @@ Error: ${toolResult.error}` : `Error: ${toolResult.error}`,
2917
3053
  }
2918
3054
  return { toolMessages, criteriaChanged, returnValueContent, returnValueResult };
2919
3055
  }
2920
- var MAX_FORMAT_RETRIES2 = 10;
3056
+ var MAX_FORMAT_RETRIES = 10;
2921
3057
  var FORMAT_CORRECTION_PROMPT2 = `IMPORTANT: You MUST use the JSON function calling API. Do NOT output XML tags like <tool_call>, <function=>, or <parameter=>. Your previous attempt was stopped because you used the wrong format. Use the proper tool_calls format.`;
2922
3058
  function toRequestContextMessages(messages) {
2923
3059
  return messages.map((message) => ({
@@ -2965,7 +3101,7 @@ async function runTopLevelAgentLoop(config, turnMetrics) {
2965
3101
  isSystemGenerated: true,
2966
3102
  messageKind: "correction"
2967
3103
  }));
2968
- eventStore.append(sessionId, createFormatRetryEvent(formatRetryCount, MAX_FORMAT_RETRIES2));
3104
+ eventStore.append(sessionId, createFormatRetryEvent(formatRetryCount, MAX_FORMAT_RETRIES));
2969
3105
  requestMessages.push({ role: "user", content: FORMAT_CORRECTION_PROMPT2, source: "runtime" });
2970
3106
  }
2971
3107
  const configDir = getGlobalConfigDir(getRuntimeConfig().mode ?? "production");
@@ -3029,7 +3165,7 @@ async function runTopLevelAgentLoop(config, turnMetrics) {
3029
3165
  eventStore.append(sessionId, event);
3030
3166
  });
3031
3167
  if (result.xmlFormatError) {
3032
- if (formatRetryCount < MAX_FORMAT_RETRIES2) {
3168
+ if (formatRetryCount < MAX_FORMAT_RETRIES) {
3033
3169
  formatRetryCount += 1;
3034
3170
  continue;
3035
3171
  } else {
@@ -3472,7 +3608,7 @@ var callSubAgentTool = {
3472
3608
  };
3473
3609
  }
3474
3610
  try {
3475
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-4D6R2BA3.js");
3611
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-KTY6SVMF.js");
3476
3612
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3477
3613
  const turnMetrics = new TurnMetrics();
3478
3614
  const result = await executeSubAgent({
@@ -4355,45 +4491,35 @@ ${COMPACTION_PROMPT}
4355
4491
  const assistantMsgId = crypto.randomUUID();
4356
4492
  eventStore.append(sessionId, createMessageStartEvent(assistantMsgId, "assistant", void 0, getCurrentWindowMessageOptions3(sessionId)));
4357
4493
  const turnMetrics = new TurnMetrics();
4358
- const correctionMessages = [];
4359
- let result = null;
4360
- for (let attempt = 0; attempt < MAX_FORMAT_RETRIES; attempt++) {
4361
- const streamGen = streamLLMPure({
4362
- messageId: assistantMsgId,
4363
- systemPrompt: assembledRequest.systemPrompt,
4364
- llmClient,
4365
- messages: [...llmMessages, ...correctionMessages],
4366
- tools: toolRegistry.definitions,
4367
- toolChoice: "none",
4368
- disableThinking: true,
4369
- ...signal ? { signal } : {}
4370
- });
4371
- result = await consumeStreamGenerator(streamGen, (event) => {
4372
- eventStore.append(sessionId, event);
4373
- });
4374
- if (result.aborted) {
4375
- throw new Error("Aborted");
4376
- }
4377
- if (!result.xmlFormatError) {
4378
- break;
4494
+ const compactionToolRegistry = {
4495
+ execute: async (name, args, ctx) => {
4496
+ return toolRegistry.execute(name, args, {
4497
+ ...ctx,
4498
+ sessionManager
4499
+ });
4379
4500
  }
4380
- logger.warn("Compaction XML tool format error, retrying", {
4381
- sessionId,
4382
- attempt: attempt + 1,
4383
- maxAttempts: MAX_FORMAT_RETRIES
4384
- });
4385
- correctionMessages.push({ role: "user", content: FORMAT_CORRECTION_PROMPT });
4386
- }
4387
- if (!result || result.xmlFormatError) {
4388
- throw new Error("Compaction summary generation failed due to XML tool format output");
4501
+ };
4502
+ const result = await consumeStreamWithToolLoop({
4503
+ messageId: assistantMsgId,
4504
+ systemPrompt: assembledRequest.systemPrompt,
4505
+ llmClient,
4506
+ messages: llmMessages,
4507
+ tools: toolRegistry.definitions,
4508
+ toolChoice: "auto",
4509
+ disableThinking: true,
4510
+ turnMetrics,
4511
+ toolRegistry: compactionToolRegistry,
4512
+ sessionId,
4513
+ workdir: session.workdir,
4514
+ onEvent: (event) => eventStore.append(sessionId, event),
4515
+ statsIdentity,
4516
+ ...session.dangerLevel ? { dangerLevel: session.dangerLevel } : {},
4517
+ ...signal ? { signal } : {}
4518
+ });
4519
+ if (result.aborted) {
4520
+ throw new Error("Aborted");
4389
4521
  }
4390
- turnMetrics.addLLMCall(result.timing, result.usage.promptTokens, result.usage.completionTokens);
4391
- const compactionStats = turnMetrics.buildStats(statsIdentity, "planner");
4392
- eventStore.append(sessionId, createMessageDoneEvent(assistantMsgId, {
4393
- segments: result.segments,
4394
- stats: compactionStats,
4395
- promptContext: assembledRequest.promptContext
4396
- }));
4522
+ const compactionStats = turnMetrics.buildStats(statsIdentity, "compaction");
4397
4523
  eventStore.append(sessionId, createChatDoneEvent(assistantMsgId, "complete", compactionStats));
4398
4524
  let summary = (result.content ?? "").trim();
4399
4525
  if (!summary && result.thinkingContent != null) {
@@ -4480,4 +4606,4 @@ export {
4480
4606
  getToolRegistryForAgent,
4481
4607
  createToolRegistry
4482
4608
  };
4483
- //# sourceMappingURL=chunk-36AJGM6G.js.map
4609
+ //# sourceMappingURL=chunk-4JBBQQOD.js.map
@@ -129,7 +129,7 @@ async function runCli(options) {
129
129
  await runInitWithSelect(mode);
130
130
  }
131
131
  }
132
- const { runServe } = await import("./serve-MRW7EKGE.js");
132
+ const { runServe } = await import("./serve-YBHJLFCY.js");
133
133
  await runServe({
134
134
  mode,
135
135
  port: values.port ? parseInt(values.port) : void 0,
@@ -142,4 +142,4 @@ async function runCli(options) {
142
142
  export {
143
143
  runCli
144
144
  };
145
- //# sourceMappingURL=chunk-QYRLQ3NK.js.map
145
+ //# sourceMappingURL=chunk-MWCDIGQJ.js.map
@@ -13,7 +13,7 @@ import {
13
13
  getToolRegistryForAgent,
14
14
  loadAllAgentsDefault,
15
15
  runTopLevelAgentLoop
16
- } from "./chunk-36AJGM6G.js";
16
+ } from "./chunk-4JBBQQOD.js";
17
17
  import {
18
18
  getCurrentContextWindowId,
19
19
  getEventStore
@@ -311,4 +311,4 @@ export {
311
311
  runBuilderTurn,
312
312
  runVerifierTurn
313
313
  };
314
- //# sourceMappingURL=chunk-NIQ4X7Y7.js.map
314
+ //# sourceMappingURL=chunk-O7O3XMWO.js.map
@@ -2,7 +2,7 @@ import {
2
2
  createVerifierNudgeConfig,
3
3
  runBuilderTurn,
4
4
  runChatTurn
5
- } from "./chunk-NIQ4X7Y7.js";
5
+ } from "./chunk-O7O3XMWO.js";
6
6
  import {
7
7
  TurnMetrics,
8
8
  agentExists,
@@ -40,7 +40,7 @@ import {
40
40
  saveSkill,
41
41
  setSkillEnabled,
42
42
  skillExists
43
- } from "./chunk-36AJGM6G.js";
43
+ } from "./chunk-4JBBQQOD.js";
44
44
  import {
45
45
  generateSessionName,
46
46
  needsNameGeneration
@@ -5853,7 +5853,7 @@ async function createServerHandle(config) {
5853
5853
  if (!callId || approved === void 0) {
5854
5854
  return res.status(400).json({ error: "callId and approved are required" });
5855
5855
  }
5856
- const { providePathConfirmation: providePathConfirmation2 } = await import("./tools-4D6R2BA3.js");
5856
+ const { providePathConfirmation: providePathConfirmation2 } = await import("./tools-KTY6SVMF.js");
5857
5857
  const result = providePathConfirmation2(callId, approved, alwaysAllow);
5858
5858
  if (!result.found) {
5859
5859
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -5878,7 +5878,7 @@ async function createServerHandle(config) {
5878
5878
  if (!callId || !answer) {
5879
5879
  return res.status(400).json({ error: "callId and answer are required" });
5880
5880
  }
5881
- const { provideAnswer: provideAnswer2 } = await import("./tools-4D6R2BA3.js");
5881
+ const { provideAnswer: provideAnswer2 } = await import("./tools-KTY6SVMF.js");
5882
5882
  const found = provideAnswer2(callId, answer);
5883
5883
  if (!found) {
5884
5884
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -5914,8 +5914,8 @@ async function createServerHandle(config) {
5914
5914
  if (!session) {
5915
5915
  return res.status(404).json({ error: "Session not found" });
5916
5916
  }
5917
- const { stopSessionExecution } = await import("./chat-handler-BTU2FLJY.js");
5918
- const { cancelQuestionsForSession: cancelQuestionsForSession2, cancelPathConfirmationsForSession: cancelPathConfirmationsForSession2 } = await import("./tools-4D6R2BA3.js");
5917
+ const { stopSessionExecution } = await import("./chat-handler-34PPF43W.js");
5918
+ const { cancelQuestionsForSession: cancelQuestionsForSession2, cancelPathConfirmationsForSession: cancelPathConfirmationsForSession2 } = await import("./tools-KTY6SVMF.js");
5919
5919
  stopSessionExecution(sessionId, sessionManager);
5920
5920
  abortSession(sessionId);
5921
5921
  cancelQuestionsForSession2(sessionId, "Session stopped by user");
@@ -6239,7 +6239,7 @@ async function createServerHandle(config) {
6239
6239
  providerManager
6240
6240
  );
6241
6241
  const wss = wssExports.wss;
6242
- const { QueueProcessor } = await import("./processor-KJBVOF4W.js");
6242
+ const { QueueProcessor } = await import("./processor-V57VGPXZ.js");
6243
6243
  const queueProcessor = new QueueProcessor({
6244
6244
  sessionManager,
6245
6245
  providerManager,
@@ -6309,4 +6309,4 @@ export {
6309
6309
  createServerHandle,
6310
6310
  createServer
6311
6311
  };
6312
- //# sourceMappingURL=chunk-47TNOR2U.js.map
6312
+ //# sourceMappingURL=chunk-ON2IR3E4.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-QYRLQ3NK.js";
4
+ } from "../chunk-MWCDIGQJ.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-PNBH3RAX.js";
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-QYRLQ3NK.js";
4
+ } from "../chunk-MWCDIGQJ.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-PNBH3RAX.js";
@@ -3,7 +3,7 @@ import {
3
3
  runBuilderTurn,
4
4
  runChatTurn,
5
5
  runVerifierTurn
6
- } from "./chunk-NIQ4X7Y7.js";
6
+ } from "./chunk-O7O3XMWO.js";
7
7
  import {
8
8
  TurnMetrics,
9
9
  createChatDoneEvent,
@@ -11,7 +11,7 @@ import {
11
11
  createMessageStartEvent,
12
12
  createToolCallEvent,
13
13
  createToolResultEvent
14
- } from "./chunk-36AJGM6G.js";
14
+ } from "./chunk-4JBBQQOD.js";
15
15
  import "./chunk-NW7PIZH3.js";
16
16
  import "./chunk-WQ4W5H6A.js";
17
17
  import "./chunk-S4QKTRGJ.js";
@@ -36,4 +36,4 @@ export {
36
36
  runChatTurn,
37
37
  runVerifierTurn
38
38
  };
39
- //# sourceMappingURL=orchestrator-TFJHY67A.js.map
39
+ //# sourceMappingURL=orchestrator-K6PLFOVY.js.map
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "1.2.2",
3
+ "version": "1.3.1",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -188,7 +188,7 @@ var QueueProcessor = class {
188
188
  backend: provider?.backend ?? llmClient.getBackend(),
189
189
  model: llmClient.getModel()
190
190
  };
191
- const { runChatTurn } = await import("./orchestrator-TFJHY67A.js");
191
+ const { runChatTurn } = await import("./orchestrator-K6PLFOVY.js");
192
192
  runChatTurn({
193
193
  sessionManager,
194
194
  sessionId,
@@ -233,4 +233,4 @@ var QueueProcessor = class {
233
233
  export {
234
234
  QueueProcessor
235
235
  };
236
- //# sourceMappingURL=processor-KJBVOF4W.js.map
236
+ //# sourceMappingURL=processor-V57VGPXZ.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  createServer
3
- } from "./chunk-47TNOR2U.js";
4
- import "./chunk-NIQ4X7Y7.js";
5
- import "./chunk-36AJGM6G.js";
3
+ } from "./chunk-ON2IR3E4.js";
4
+ import "./chunk-O7O3XMWO.js";
5
+ import "./chunk-4JBBQQOD.js";
6
6
  import "./chunk-QDEKU5RL.js";
7
7
  import "./chunk-YSPC6TQJ.js";
8
8
  import "./chunk-NW7PIZH3.js";
@@ -39,7 +39,7 @@ import os from "os";
39
39
  import { statSync } from "fs";
40
40
 
41
41
  // src/constants.ts
42
- var VERSION = "1.2.2";
42
+ var VERSION = "1.3.1";
43
43
 
44
44
  // src/server/utils/network.ts
45
45
  function getNetworkInterfaces() {
@@ -190,4 +190,4 @@ async function runServe(options) {
190
190
  export {
191
191
  runServe
192
192
  };
193
- //# sourceMappingURL=serve-MRW7EKGE.js.map
193
+ //# sourceMappingURL=serve-YBHJLFCY.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createServer,
3
3
  createServerHandle
4
- } from "../chunk-47TNOR2U.js";
5
- import "../chunk-NIQ4X7Y7.js";
6
- import "../chunk-36AJGM6G.js";
4
+ } from "../chunk-ON2IR3E4.js";
5
+ import "../chunk-O7O3XMWO.js";
6
+ import "../chunk-4JBBQQOD.js";
7
7
  import "../chunk-QDEKU5RL.js";
8
8
  import "../chunk-YSPC6TQJ.js";
9
9
  import "../chunk-NW7PIZH3.js";
@@ -11,7 +11,7 @@ import {
11
11
  requestPathAccess,
12
12
  stepDoneTool,
13
13
  validateToolAction
14
- } from "./chunk-36AJGM6G.js";
14
+ } from "./chunk-4JBBQQOD.js";
15
15
  import "./chunk-NW7PIZH3.js";
16
16
  import "./chunk-WQ4W5H6A.js";
17
17
  import "./chunk-S4QKTRGJ.js";
@@ -45,4 +45,4 @@ export {
45
45
  stepDoneTool,
46
46
  validateToolAction
47
47
  };
48
- //# sourceMappingURL=tools-4D6R2BA3.js.map
48
+ //# sourceMappingURL=tools-KTY6SVMF.js.map