openfox 2.0.148 → 2.0.149

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 (44) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/CHANGELOG.md +15 -0
  3. package/dist/{auto-continue-NODN37EK.js → auto-continue-AZRNVDV5.js} +7 -7
  4. package/dist/{chat-handler-PETIVNGQ.js → chat-handler-NJGT2L65.js} +10 -10
  5. package/dist/{chunk-EJKAN7HK.js → chunk-2GIY77DT.js} +184 -10
  6. package/dist/chunk-2IK5KDVV.js +7 -0
  7. package/dist/{chunk-V4BEYGBJ.js → chunk-7HNACZXD.js} +10 -10
  8. package/dist/{chunk-2DBWCXAQ.js → chunk-A6YTJZAO.js} +2 -2
  9. package/dist/{chunk-FAN4P45J.js → chunk-BAN2F7TG.js} +18 -2
  10. package/dist/{chunk-P7KUU5VB.js → chunk-E4RD42PU.js} +2 -2
  11. package/dist/{chunk-L2RESXUF.js → chunk-EBMHUSMZ.js} +2 -2
  12. package/dist/{chunk-6UU3W3XO.js → chunk-I46WU3NP.js} +4 -4
  13. package/dist/{chunk-QMU3ZY2C.js → chunk-JRWG4KWV.js} +3 -1
  14. package/dist/{chunk-LNJOQAXT.js → chunk-MA4NG3F7.js} +2 -2
  15. package/dist/{chunk-AWBV2VXO.js → chunk-MICSOCCE.js} +3 -3
  16. package/dist/{chunk-F6QMFCHQ.js → chunk-N342GU3N.js} +19 -8
  17. package/dist/{chunk-772W5PF7.js → chunk-RXKZVMKL.js} +67 -54
  18. package/dist/{chunk-ORIPUMOQ.js → chunk-XWKX5IAU.js} +2 -2
  19. package/dist/{chunk-NELDQCPC.js → chunk-ZWI4T4WF.js} +5 -5
  20. package/dist/cli/dev.js +1 -1
  21. package/dist/cli/index.js +1 -1
  22. package/dist/{client-L4PANCG4.js → client-WQFM3PDL.js} +3 -3
  23. package/dist/{client-pure-YZ4IGCU4.js → client-pure-EM26AITO.js} +2 -2
  24. package/dist/{compactor-YY7PO2XE.js → compactor-JDR6AGEW.js} +4 -4
  25. package/dist/{dynamic-context-CM3M2EJC.js → dynamic-context-SS3AVCVM.js} +2 -2
  26. package/dist/{export-import-UITAIBU5.js → export-import-QT7CV7ZU.js} +2 -2
  27. package/dist/{launch-E6SDDTHE.js → launch-2DPUISQR.js} +10 -10
  28. package/dist/{orchestrator-MVQIPITF.js → orchestrator-2BBZC4VH.js} +11 -9
  29. package/dist/package.json +1 -1
  30. package/dist/{processor-UTBTJVV5.js → processor-N3EIGT4S.js} +9 -9
  31. package/dist/{provider-QE7XSGYA.js → provider-52J4WIIQ.js} +4 -4
  32. package/dist/{provider-manager-WW2EF76W.js → provider-manager-6EACWIDV.js} +4 -4
  33. package/dist/{serve-XGIHFEC6.js → serve-O44ZIZ7N.js} +15 -15
  34. package/dist/server/index.js +14 -14
  35. package/dist/{server-F66GXJUS.js → server-Q5PTCS4G.js} +13 -13
  36. package/dist/{service-KMOSB6SU.js → service-ALXVEWCE.js} +5 -5
  37. package/dist/{tasks-X5DM553T.js → tasks-LD3VJYFH.js} +5 -5
  38. package/dist/{tools-NIOESJYT.js → tools-SK4EU3D5.js} +7 -7
  39. package/dist/{update-X6BS6MUF.js → update-32UNL44B.js} +2 -2
  40. package/dist/web/assets/{index-CkVmYTBd.js → index-Cith3wH6.js} +55 -55
  41. package/dist/web/index.html +1 -1
  42. package/dist/web/sw.js +1 -1
  43. package/package.json +1 -1
  44. package/dist/chunk-DKHY5UNR.js +0 -7
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-OA2FURC3.js";
5
5
  import {
6
6
  createLLMClient
7
- } from "./chunk-L2RESXUF.js";
7
+ } from "./chunk-EBMHUSMZ.js";
8
8
  import {
9
9
  getModelProfile
10
10
  } from "./chunk-TS5WKTFB.js";
@@ -20,7 +20,7 @@ import {
20
20
  } from "./chunk-HNCM3D7Y.js";
21
21
  import {
22
22
  resolveAttachmentsInMessages
23
- } from "./chunk-QMU3ZY2C.js";
23
+ } from "./chunk-JRWG4KWV.js";
24
24
  import {
25
25
  sanitizeToolSchema
26
26
  } from "./chunk-XG3AUMPI.js";
@@ -920,4 +920,4 @@ export {
920
920
  parseDefaultModelSelection,
921
921
  createProviderManager
922
922
  };
923
- //# sourceMappingURL=chunk-AWBV2VXO.js.map
923
+ //# sourceMappingURL=chunk-MICSOCCE.js.map
@@ -3,14 +3,14 @@ import {
3
3
  checkToolChangesAndInject,
4
4
  computeDynamicContextHash,
5
5
  getToolFingerprint
6
- } from "./chunk-LNJOQAXT.js";
6
+ } from "./chunk-MA4NG3F7.js";
7
7
  import {
8
8
  createAssemblyResult,
9
9
  getConversationMessages,
10
10
  getToolRegistryForAgent,
11
11
  processEventsForConversation,
12
12
  runTopLevelAgentLoop
13
- } from "./chunk-EJKAN7HK.js";
13
+ } from "./chunk-2GIY77DT.js";
14
14
  import {
15
15
  getAllInstructions,
16
16
  getEnabledSkillMetadata
@@ -24,8 +24,9 @@ import {
24
24
  import {
25
25
  TurnMetrics,
26
26
  createChatDoneEvent,
27
- createMessageStartEvent
28
- } from "./chunk-FAN4P45J.js";
27
+ createMessageStartEvent,
28
+ sanitizeRetryPatterns
29
+ } from "./chunk-BAN2F7TG.js";
29
30
  import {
30
31
  buildAgentReminder,
31
32
  buildAgentSmallReminder,
@@ -64,7 +65,16 @@ async function buildRetryPatterns() {
64
65
  if (oldXmlProtection !== null) {
65
66
  const disabled = oldXmlProtection === "true";
66
67
  return {
67
- retryPatterns: disabled ? [] : [{ field: "both", pattern: "<(tool_call|function=|/tool_call|parameter=)", action: "retry", active: true }],
68
+ retryPatterns: sanitizeRetryPatterns(
69
+ disabled ? [] : [
70
+ {
71
+ field: "both",
72
+ pattern: "<(tool_call|function=|/tool_call|parameter=)",
73
+ action: "retry",
74
+ active: true
75
+ }
76
+ ]
77
+ ),
68
78
  maxRetriesPerTurn: 10
69
79
  };
70
80
  }
@@ -73,7 +83,7 @@ async function buildRetryPatterns() {
73
83
  try {
74
84
  const parsed = JSON.parse(raw);
75
85
  return {
76
- retryPatterns: Array.isArray(parsed.patterns) ? parsed.patterns : [],
86
+ retryPatterns: sanitizeRetryPatterns(Array.isArray(parsed.patterns) ? parsed.patterns : []),
77
87
  maxRetriesPerTurn: typeof parsed.maxRetriesPerTurn === "number" ? parsed.maxRetriesPerTurn : 10
78
88
  };
79
89
  } catch {
@@ -357,7 +367,7 @@ async function runAgentTurn(options, turnMetrics, agentId, append, callbacks) {
357
367
  getConversationMessages: buildGetConversationMessages(options.sessionId, resolveAgentClient, append),
358
368
  injectAgentReminder: () => injectAgentReminder(options.sessionId, agentDef),
359
369
  rebuildCachedContext: async () => {
360
- const { applyDynamicContext } = await import("./dynamic-context-CM3M2EJC.js");
370
+ const { applyDynamicContext } = await import("./dynamic-context-SS3AVCVM.js");
361
371
  await applyDynamicContext(options.sessionManager, options.sessionId, agentLlmClient.getModel());
362
372
  },
363
373
  ...options.initialCompacting ? { initialCompacting: true } : {},
@@ -384,7 +394,8 @@ function buildSnapshot(sessionManager, sessionId, _lastStats) {
384
394
  }
385
395
 
386
396
  export {
397
+ buildRetryPatterns,
387
398
  runChatTurn,
388
399
  runAgentTurn
389
400
  };
390
- //# sourceMappingURL=chunk-F6QMFCHQ.js.map
401
+ //# sourceMappingURL=chunk-N342GU3N.js.map
@@ -9,10 +9,10 @@ import {
9
9
  terminalManager,
10
10
  tokenFromPassword,
11
11
  verifyPassword
12
- } from "./chunk-V4BEYGBJ.js";
12
+ } from "./chunk-7HNACZXD.js";
13
13
  import {
14
14
  TEMPLATE_VARIABLES
15
- } from "./chunk-NELDQCPC.js";
15
+ } from "./chunk-ZWI4T4WF.js";
16
16
  import {
17
17
  projectSessionStatus
18
18
  } from "./chunk-T3S5MTMD.js";
@@ -42,7 +42,7 @@ import {
42
42
  setMcpManagerForTools,
43
43
  setMcpTools,
44
44
  setNotifyMcpServersChanged
45
- } from "./chunk-EJKAN7HK.js";
45
+ } from "./chunk-2GIY77DT.js";
46
46
  import {
47
47
  deleteOwnedSkill,
48
48
  deleteProjectSkill,
@@ -106,7 +106,7 @@ import {
106
106
  saveWorkflow,
107
107
  saveWorkflowToProject,
108
108
  workflowExists
109
- } from "./chunk-2DBWCXAQ.js";
109
+ } from "./chunk-A6YTJZAO.js";
110
110
  import {
111
111
  clearSessionOverrides,
112
112
  computeDisabledServersForProject,
@@ -218,13 +218,13 @@ import {
218
218
  detectModel,
219
219
  getLlmStatus,
220
220
  parseDefaultModelSelection
221
- } from "./chunk-AWBV2VXO.js";
221
+ } from "./chunk-MICSOCCE.js";
222
222
  import {
223
223
  buildOpenFoxMcpBootstrap
224
224
  } from "./chunk-YNMP647F.js";
225
225
  import {
226
226
  VERSION
227
- } from "./chunk-DKHY5UNR.js";
227
+ } from "./chunk-2IK5KDVV.js";
228
228
  import {
229
229
  deleteProject,
230
230
  getProject,
@@ -1576,6 +1576,17 @@ function createMockLLMClient() {
1576
1576
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
1577
1577
  import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
1578
1578
  import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
1579
+ var TOOL_CALL_TIMEOUT_MARGIN_SECONDS = 30;
1580
+ var TOOL_CALL_TIMEOUT_DEFAULT_SECONDS = 60;
1581
+ var TOOL_CALL_TIMEOUT_MAX_SECONDS = 3600;
1582
+ function effectiveRequestTimeoutSeconds(configTimeout, args) {
1583
+ const configSeconds = typeof configTimeout === "number" && Number.isFinite(configTimeout) && configTimeout > 0 ? configTimeout : 0;
1584
+ const arg = args["timeout"];
1585
+ const argSeconds = typeof arg === "number" && Number.isFinite(arg) && arg > 0 ? arg : 0;
1586
+ const argCandidate = argSeconds > 0 ? Math.min(argSeconds + TOOL_CALL_TIMEOUT_MARGIN_SECONDS, TOOL_CALL_TIMEOUT_MAX_SECONDS) : 0;
1587
+ const effective = Math.max(configSeconds, argCandidate);
1588
+ return effective > 0 ? effective : TOOL_CALL_TIMEOUT_DEFAULT_SECONDS;
1589
+ }
1579
1590
  function withoutAuthorizationHeader(headers) {
1580
1591
  if (!headers) return void 0;
1581
1592
  const kept = Object.entries(headers).filter(([key]) => key.trim().toLowerCase() !== "authorization");
@@ -1766,27 +1777,29 @@ var McpManager = class {
1766
1777
  const entry = this.servers.get(serverName);
1767
1778
  if (!entry) return { success: false, error: `MCP server '${serverName}' not found` };
1768
1779
  if (!entry.client) return { success: false, error: `MCP server '${serverName}' is not connected` };
1780
+ const timeoutSeconds = effectiveRequestTimeoutSeconds(entry.config.timeout, args);
1781
+ const timeoutMs = timeoutSeconds * 1e3;
1782
+ const controller = new AbortController();
1783
+ let timer;
1784
+ const timeoutPromise = new Promise((_, reject) => {
1785
+ timer = setTimeout(() => {
1786
+ const reason = new Error(`MCP tool call timed out after ${timeoutSeconds} seconds`);
1787
+ controller.abort(reason);
1788
+ reject(reason);
1789
+ }, timeoutMs);
1790
+ });
1769
1791
  try {
1770
- const timeout = entry.config.timeout;
1771
- const requestOptions = timeout !== void 0 && timeout > 0 ? { timeout: timeout * 1e3 } : void 0;
1772
1792
  let result;
1773
- if (timeout !== void 0 && timeout > 0) {
1774
- let timer;
1775
- const timeoutPromise = new Promise((_, reject) => {
1776
- timer = setTimeout(() => {
1777
- reject(new Error(`MCP tool call timed out after ${timeout} seconds`));
1778
- }, timeout * 1e3);
1779
- });
1780
- try {
1781
- result = await Promise.race([
1782
- entry.client.callTool({ name: toolName, arguments: args }, void 0, requestOptions),
1783
- timeoutPromise
1784
- ]);
1785
- } finally {
1786
- if (timer) clearTimeout(timer);
1787
- }
1788
- } else {
1789
- result = await entry.client.callTool({ name: toolName, arguments: args });
1793
+ try {
1794
+ result = await Promise.race([
1795
+ entry.client.callTool({ name: toolName, arguments: args }, void 0, {
1796
+ timeout: timeoutMs,
1797
+ signal: controller.signal
1798
+ }),
1799
+ timeoutPromise
1800
+ ]);
1801
+ } finally {
1802
+ if (timer) clearTimeout(timer);
1790
1803
  }
1791
1804
  const content = result.content;
1792
1805
  const textParts = content.filter((c) => c.type === "text").map((c) => c.text);
@@ -3148,8 +3161,8 @@ var SessionManager = class {
3148
3161
  * @throws Error for invalid payloads or unknown project
3149
3162
  */
3150
3163
  async importSession(projectId, rawPayload) {
3151
- const { parseSessionExport, IMPORTED_SESSION_REMINDER, SESSION_EXPORT_VERSION } = await import("./export-import-UITAIBU5.js");
3152
- const { injectContextDriftReminders, getToolSetFingerprint } = await import("./dynamic-context-CM3M2EJC.js");
3164
+ const { parseSessionExport, IMPORTED_SESSION_REMINDER, SESSION_EXPORT_VERSION } = await import("./export-import-QT7CV7ZU.js");
3165
+ const { injectContextDriftReminders, getToolSetFingerprint } = await import("./dynamic-context-SS3AVCVM.js");
3153
3166
  const { loadAllAgentsDefault: loadAllAgentsDefault2, resolveDefaultAgentId } = await import("./registry-24U5BZAJ.js");
3154
3167
  const payload = parseSessionExport(rawPayload);
3155
3168
  if (payload.version !== SESSION_EXPORT_VERSION) {
@@ -7256,7 +7269,7 @@ function detectWsl() {
7256
7269
  // src/server/index.ts
7257
7270
  var __dirname3 = dirname7(fileURLToPath6(import.meta.url));
7258
7271
  async function announceContextDrift(sessionManager, sessionIds) {
7259
- const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-CM3M2EJC.js");
7272
+ const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-SS3AVCVM.js");
7260
7273
  await injectContextDriftRemindersForSessions(sessionManager, sessionIds);
7261
7274
  }
7262
7275
  async function createServerHandle(config3) {
@@ -7372,7 +7385,7 @@ async function createServerHandle(config3) {
7372
7385
  toolRegistry = createToolRegistry();
7373
7386
  logger.info("MCP tools registered", { count: mcpTools.length });
7374
7387
  }
7375
- const { signalMcpReady } = await import("./server-F66GXJUS.js");
7388
+ const { signalMcpReady } = await import("./server-Q5PTCS4G.js");
7376
7389
  signalMcpReady();
7377
7390
  }
7378
7391
  const app = express();
@@ -7587,9 +7600,9 @@ async function createServerHandle(config3) {
7587
7600
  const sessionFavoriteRouter = express.Router();
7588
7601
  registerSessionFavoriteRoute(sessionFavoriteRouter, sessionManager);
7589
7602
  app.use("/api", sessionFavoriteRouter);
7590
- const { createTasksService } = await import("./service-KMOSB6SU.js");
7591
- const { registerTaskRoutes } = await import("./tasks-X5DM553T.js");
7592
- const { setTasksService } = await import("./tools-NIOESJYT.js");
7603
+ const { createTasksService } = await import("./service-ALXVEWCE.js");
7604
+ const { registerTaskRoutes } = await import("./tasks-LD3VJYFH.js");
7605
+ const { setTasksService } = await import("./tools-SK4EU3D5.js");
7593
7606
  const tasksService = createTasksService({
7594
7607
  sessionManager,
7595
7608
  config: config3,
@@ -7912,7 +7925,7 @@ All file and git operations should use this branch.
7912
7925
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-FTS5W6FX.js");
7913
7926
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, buildSessionStatsMessages, foldPendingConfirmations } = await import("./folding-VWRMYZ5T.js");
7914
7927
  const { computeSessionStatsSummary } = await import("./stats-2QMXP6G4.js");
7915
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-NIOESJYT.js");
7928
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-SK4EU3D5.js");
7916
7929
  const { getMaxVisibleItems } = await import("./settings-FQUDSGZF.js");
7917
7930
  const session = sessionManager.getSession(req.params.id);
7918
7931
  if (!session) {
@@ -7943,7 +7956,7 @@ All file and git operations should use this branch.
7943
7956
  });
7944
7957
  app.get("/api/sessions/:id/status", async (req, res) => {
7945
7958
  const { projectSessionStatus: projectSessionStatus2 } = await import("./session-status-UFO5IFI7.js");
7946
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-NIOESJYT.js");
7959
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-SK4EU3D5.js");
7947
7960
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-FTS5W6FX.js");
7948
7961
  const { foldPendingConfirmations } = await import("./folding-VWRMYZ5T.js");
7949
7962
  const sessionId = req.params["id"];
@@ -7979,8 +7992,8 @@ All file and git operations should use this branch.
7979
7992
  if (!session) {
7980
7993
  return res.status(404).json({ error: "Session not found" });
7981
7994
  }
7982
- const { stopSessionExecution } = await import("./chat-handler-PETIVNGQ.js");
7983
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-NIOESJYT.js");
7995
+ const { stopSessionExecution } = await import("./chat-handler-NJGT2L65.js");
7996
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-SK4EU3D5.js");
7984
7997
  sessionManager.clearMessageQueue(sessionId);
7985
7998
  stopSessionExecution(sessionId, sessionManager);
7986
7999
  abortSession(sessionId);
@@ -8212,7 +8225,7 @@ All file and git operations should use this branch.
8212
8225
  }
8213
8226
  sessionManager.setDangerLevel(sessionId, dangerLevel);
8214
8227
  if (dangerLevel === "dangerous") {
8215
- const { autoApprovePendingConfirmationsForSession } = await import("./tools-NIOESJYT.js");
8228
+ const { autoApprovePendingConfirmationsForSession } = await import("./tools-SK4EU3D5.js");
8216
8229
  const approvedCallIds = autoApprovePendingConfirmationsForSession(sessionId);
8217
8230
  for (const callId of approvedCallIds) {
8218
8231
  wssExports.broadcastForSession(sessionId, {
@@ -8247,7 +8260,7 @@ All file and git operations should use this branch.
8247
8260
  setSessionDisabledServers(sessionId, disabledServers);
8248
8261
  const messages = session.messages ?? [];
8249
8262
  if (messages.length === 0) {
8250
- const { applyDynamicContext } = await import("./dynamic-context-CM3M2EJC.js");
8263
+ const { applyDynamicContext } = await import("./dynamic-context-SS3AVCVM.js");
8251
8264
  const modelName = session.providerModel ?? providerManager.getCurrentModel();
8252
8265
  await applyDynamicContext(sessionManager, sessionId, modelName);
8253
8266
  } else {
@@ -8281,7 +8294,7 @@ All file and git operations should use this branch.
8281
8294
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
8282
8295
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
8283
8296
  }
8284
- const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-NIOESJYT.js");
8297
+ const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-SK4EU3D5.js");
8285
8298
  const pendingSessionId = getConfirmationSessionId(callId);
8286
8299
  if (!pendingSessionId) {
8287
8300
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -8296,7 +8309,7 @@ All file and git operations should use this branch.
8296
8309
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-FTS5W6FX.js");
8297
8310
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-VWRMYZ5T.js");
8298
8311
  const { createSessionStateMessage } = await import("./protocol-M4DFHA32.js");
8299
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-NIOESJYT.js");
8312
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-SK4EU3D5.js");
8300
8313
  const { getMaxVisibleItems } = await import("./settings-FQUDSGZF.js");
8301
8314
  const eventStore = getEventStore2();
8302
8315
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
@@ -8334,7 +8347,7 @@ All file and git operations should use this branch.
8334
8347
  if (!skip && typeof answer !== "string") {
8335
8348
  return res.status(400).json({ error: "answer is required when not skipping" });
8336
8349
  }
8337
- const { provideAnswer: provideAnswer2 } = await import("./tools-NIOESJYT.js");
8350
+ const { provideAnswer: provideAnswer2 } = await import("./tools-SK4EU3D5.js");
8338
8351
  const found = provideAnswer2(callId, answer ?? "", skip ?? false);
8339
8352
  if (!found) {
8340
8353
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -8400,7 +8413,7 @@ All file and git operations should use this branch.
8400
8413
  backend: activeProvider?.backend ?? llmClient.getBackend(),
8401
8414
  model: llmClient.getModel()
8402
8415
  };
8403
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-MVQIPITF.js");
8416
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-2BBZC4VH.js");
8404
8417
  runAgentTurn(
8405
8418
  {
8406
8419
  sessionManager,
@@ -8438,8 +8451,8 @@ All file and git operations should use this branch.
8438
8451
  if (!session) {
8439
8452
  return res.status(404).json({ error: "Session not found" });
8440
8453
  }
8441
- const { stopSessionExecution } = await import("./chat-handler-PETIVNGQ.js");
8442
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-NIOESJYT.js");
8454
+ const { stopSessionExecution } = await import("./chat-handler-NJGT2L65.js");
8455
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-SK4EU3D5.js");
8443
8456
  const queuedMessages = sessionManager.getQueueState(sessionId);
8444
8457
  sessionManager.clearMessageQueue(sessionId);
8445
8458
  stopSessionExecution(sessionId, sessionManager);
@@ -8562,7 +8575,7 @@ All file and git operations should use this branch.
8562
8575
  return res.status(404).json({ error: "Session not found" });
8563
8576
  }
8564
8577
  try {
8565
- const { buildSessionExport } = await import("./export-import-UITAIBU5.js");
8578
+ const { buildSessionExport } = await import("./export-import-QT7CV7ZU.js");
8566
8579
  const payload = buildSessionExport(sessionManager, sessionId);
8567
8580
  const filename = `${(payload.session.title ?? "session").replace(/[^a-zA-Z0-9-_]/g, "_")}.openfox-session.json`;
8568
8581
  res.setHeader("Content-Disposition", `attachment; filename="${filename}"`);
@@ -8884,7 +8897,7 @@ All file and git operations should use this branch.
8884
8897
  const backend = req.query["backend"];
8885
8898
  if (!url) return res.status(400).json({ error: "url is required" });
8886
8899
  try {
8887
- const { fetchModelsWithContext } = await import("./provider-manager-WW2EF76W.js");
8900
+ const { fetchModelsWithContext } = await import("./provider-manager-6EACWIDV.js");
8888
8901
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8889
8902
  const { getCatalogEntry } = await import("./model-catalog-Y5MA5OZP.js");
8890
8903
  const models = await fetchModelsWithContext(
@@ -8958,7 +8971,7 @@ All file and git operations should use this branch.
8958
8971
  }
8959
8972
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8960
8973
  const { getBackendCapabilities } = await import("./backend-2VSDPCWS.js");
8961
- const { buildNonStreamingCreateParams } = await import("./client-pure-YZ4IGCU4.js");
8974
+ const { buildNonStreamingCreateParams } = await import("./client-pure-EM26AITO.js");
8962
8975
  const { OpenAIHttpClient } = await import("./http-client-SZZBSL4U.js");
8963
8976
  const { ensureVersionPrefix } = await import("./url-utils-C5BM7NF7.js");
8964
8977
  const profile = getModelProfile2(model);
@@ -9385,7 +9398,7 @@ All file and git operations should use this branch.
9385
9398
  });
9386
9399
  async function rebuildMcpTools() {
9387
9400
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-ZY4FC4C4.js");
9388
- const { setMcpTools: setMcpTools2 } = await import("./tools-NIOESJYT.js");
9401
+ const { setMcpTools: setMcpTools2 } = await import("./tools-SK4EU3D5.js");
9389
9402
  const mcpTools = createMcpTools2(mcpManager);
9390
9403
  setMcpTools2(mcpTools);
9391
9404
  toolRegistry = createToolRegistry();
@@ -9961,7 +9974,7 @@ All file and git operations should use this branch.
9961
9974
  );
9962
9975
  const wss = wssExports.wss;
9963
9976
  deferTasksBroadcast = (_projectId, payload) => wssExports.broadcastAll({ type: "tasks.update", payload });
9964
- const { launchWorkflowRun, abortRunnerRun } = await import("./launch-E6SDDTHE.js");
9977
+ const { launchWorkflowRun, abortRunnerRun } = await import("./launch-2DPUISQR.js");
9965
9978
  deferTasksLaunchWorkflow = (sessionId, launch) => {
9966
9979
  const effective = sessionManager.resolveEffectiveProviderModel(sessionId);
9967
9980
  let llmClient = getLLMClient();
@@ -10006,7 +10019,7 @@ All file and git operations should use this branch.
10006
10019
  const state = sessionManager.getContextState(sessionId);
10007
10020
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
10008
10021
  });
10009
- const { QueueProcessor } = await import("./processor-UTBTJVV5.js");
10022
+ const { QueueProcessor } = await import("./processor-N3EIGT4S.js");
10010
10023
  const queueProcessor = new QueueProcessor({
10011
10024
  sessionManager,
10012
10025
  providerManager,
@@ -10019,7 +10032,7 @@ All file and git operations should use this branch.
10019
10032
  const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-FQUDSGZF.js");
10020
10033
  if (getSetting2(SETTINGS_KEYS.AUTO_CONTINUE_ON_BOOT) === "true") {
10021
10034
  const { getStaleRunningSessionIds } = await import("./store-OWOLXB74.js");
10022
- const { runBootAutoContinuations } = await import("./auto-continue-NODN37EK.js");
10035
+ const { runBootAutoContinuations } = await import("./auto-continue-AZRNVDV5.js");
10023
10036
  const staleIds = getStaleRunningSessionIds();
10024
10037
  if (staleIds.length > 0) {
10025
10038
  const continued = runBootAutoContinuations(staleIds, {
@@ -10063,8 +10076,8 @@ All file and git operations should use this branch.
10063
10076
  launchWorkflow: (sessionId, launch) => deferTasksLaunchWorkflow(sessionId, launch),
10064
10077
  stopSession: (sessionId) => {
10065
10078
  void (async () => {
10066
- const { stopSessionExecution } = await import("./chat-handler-PETIVNGQ.js");
10067
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-NIOESJYT.js");
10079
+ const { stopSessionExecution } = await import("./chat-handler-NJGT2L65.js");
10080
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-SK4EU3D5.js");
10068
10081
  sessionManager.clearMessageQueue(sessionId);
10069
10082
  stopSessionExecution(sessionId, sessionManager);
10070
10083
  abortSession(sessionId);
@@ -10191,4 +10204,4 @@ export {
10191
10204
  createServerHandle,
10192
10205
  createServer
10193
10206
  };
10194
- //# sourceMappingURL=chunk-772W5PF7.js.map
10207
+ //# sourceMappingURL=chunk-RXKZVMKL.js.map
@@ -164,7 +164,7 @@ async function generateSessionNameForSession(sessionId, userMessage, deps, signa
164
164
  client = deps.getLLMClient();
165
165
  client.setModel(providerConfig.model);
166
166
  } else if (providerConfig) {
167
- const { createLLMClient } = await import("./client-L4PANCG4.js");
167
+ const { createLLMClient } = await import("./client-WQFM3PDL.js");
168
168
  client = createLLMClient(
169
169
  {
170
170
  llm: {
@@ -219,4 +219,4 @@ export {
219
219
  needsNameGeneration,
220
220
  generateSessionNameForSession
221
221
  };
222
- //# sourceMappingURL=chunk-ORIPUMOQ.js.map
222
+ //# sourceMappingURL=chunk-XWKX5IAU.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  runAgentTurn
3
- } from "./chunk-F6QMFCHQ.js";
3
+ } from "./chunk-N342GU3N.js";
4
4
  import {
5
5
  buildAgentOverrideStatsIdentity,
6
6
  executeSubAgent,
7
7
  getToolRegistryForAgent,
8
8
  resolveLLMClientForAgent
9
- } from "./chunk-EJKAN7HK.js";
9
+ } from "./chunk-2GIY77DT.js";
10
10
  import {
11
11
  gitSpawnEnv
12
12
  } from "./chunk-J7GAZGZT.js";
@@ -17,14 +17,14 @@ import {
17
17
  loadProjectWorkflows,
18
18
  loadUserWorkflows,
19
19
  normalizeWorkflowScope
20
- } from "./chunk-2DBWCXAQ.js";
20
+ } from "./chunk-A6YTJZAO.js";
21
21
  import {
22
22
  serverT
23
23
  } from "./chunk-X7ZAP6YW.js";
24
24
  import {
25
25
  TurnMetrics,
26
26
  createMessageStartEvent
27
- } from "./chunk-FAN4P45J.js";
27
+ } from "./chunk-BAN2F7TG.js";
28
28
  import {
29
29
  checkAborted,
30
30
  decodeUtf8,
@@ -1196,4 +1196,4 @@ export {
1196
1196
  abortRunnerRun,
1197
1197
  launchWorkflowRun
1198
1198
  };
1199
- //# sourceMappingURL=chunk-NELDQCPC.js.map
1199
+ //# sourceMappingURL=chunk-ZWI4T4WF.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-6UU3W3XO.js";
4
+ } from "../chunk-I46WU3NP.js";
5
5
  import "../chunk-AGXJ5O63.js";
6
6
  import "../chunk-2OMGR7LN.js";
7
7
  import {
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-6UU3W3XO.js";
4
+ } from "../chunk-I46WU3NP.js";
5
5
  import "../chunk-AGXJ5O63.js";
6
6
  import "../chunk-2OMGR7LN.js";
7
7
  import {
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createLLMClient
3
- } from "./chunk-L2RESXUF.js";
3
+ } from "./chunk-EBMHUSMZ.js";
4
4
  import "./chunk-TS5WKTFB.js";
5
5
  import "./chunk-FTPQI5TA.js";
6
6
  import "./chunk-HNCM3D7Y.js";
7
- import "./chunk-QMU3ZY2C.js";
7
+ import "./chunk-JRWG4KWV.js";
8
8
  import "./chunk-FSSUPWYO.js";
9
9
  import "./chunk-XG3AUMPI.js";
10
10
  import "./chunk-GZ4EK4LZ.js";
@@ -15,4 +15,4 @@ import "./chunk-YLJ4XMA6.js";
15
15
  export {
16
16
  createLLMClient
17
17
  };
18
- //# sourceMappingURL=client-L4PANCG4.js.map
18
+ //# sourceMappingURL=client-WQFM3PDL.js.map
@@ -8,7 +8,7 @@ import {
8
8
  mapFinishReason,
9
9
  parseToolArguments,
10
10
  resolveAttachmentsInMessages
11
- } from "./chunk-QMU3ZY2C.js";
11
+ } from "./chunk-JRWG4KWV.js";
12
12
  import "./chunk-FSSUPWYO.js";
13
13
  import "./chunk-XG3AUMPI.js";
14
14
  import "./chunk-YLJ4XMA6.js";
@@ -23,4 +23,4 @@ export {
23
23
  parseToolArguments,
24
24
  resolveAttachmentsInMessages
25
25
  };
26
- //# sourceMappingURL=client-pure-YZ4IGCU4.js.map
26
+ //# sourceMappingURL=client-pure-EM26AITO.js.map
@@ -3,8 +3,8 @@ import {
3
3
  COMPACTION_MAX_RATIO,
4
4
  appendCompactionPrompt,
5
5
  shouldCompact
6
- } from "./chunk-P7KUU5VB.js";
7
- import "./chunk-FAN4P45J.js";
6
+ } from "./chunk-E4RD42PU.js";
7
+ import "./chunk-BAN2F7TG.js";
8
8
  import "./chunk-ZONLEX2F.js";
9
9
  import "./chunk-5JGRKNMS.js";
10
10
  import "./chunk-NZBO3A3W.js";
@@ -18,7 +18,7 @@ import "./chunk-J2GP3J3X.js";
18
18
  import "./chunk-JYYBSODN.js";
19
19
  import "./chunk-TS5WKTFB.js";
20
20
  import "./chunk-FTPQI5TA.js";
21
- import "./chunk-QMU3ZY2C.js";
21
+ import "./chunk-JRWG4KWV.js";
22
22
  import "./chunk-FSSUPWYO.js";
23
23
  import "./chunk-XG3AUMPI.js";
24
24
  import "./chunk-X6SWZEK7.js";
@@ -32,4 +32,4 @@ export {
32
32
  appendCompactionPrompt,
33
33
  shouldCompact
34
34
  };
35
- //# sourceMappingURL=compactor-YY7PO2XE.js.map
35
+ //# sourceMappingURL=compactor-JDR6AGEW.js.map
@@ -16,7 +16,7 @@ import {
16
16
  injectContextDriftRemindersForSessions,
17
17
  renderSystemPromptDiff,
18
18
  renderToolChangeReminder
19
- } from "./chunk-LNJOQAXT.js";
19
+ } from "./chunk-MA4NG3F7.js";
20
20
  import "./chunk-DJH6LMBT.js";
21
21
  import "./chunk-ZONLEX2F.js";
22
22
  import "./chunk-5JGRKNMS.js";
@@ -52,4 +52,4 @@ export {
52
52
  renderSystemPromptDiff,
53
53
  renderToolChangeReminder
54
54
  };
55
- //# sourceMappingURL=dynamic-context-CM3M2EJC.js.map
55
+ //# sourceMappingURL=dynamic-context-SS3AVCVM.js.map
@@ -11,7 +11,7 @@ import "./chunk-OSXPQSLW.js";
11
11
  import "./chunk-LCLH6ZUL.js";
12
12
  import {
13
13
  VERSION
14
- } from "./chunk-DKHY5UNR.js";
14
+ } from "./chunk-2IK5KDVV.js";
15
15
  import {
16
16
  getProject
17
17
  } from "./chunk-JYYBSODN.js";
@@ -136,4 +136,4 @@ export {
136
136
  buildSessionExport,
137
137
  parseSessionExport
138
138
  };
139
- //# sourceMappingURL=export-import-UITAIBU5.js.map
139
+ //# sourceMappingURL=export-import-QT7CV7ZU.js.map
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  abortRunnerRun,
3
3
  launchWorkflowRun
4
- } from "./chunk-NELDQCPC.js";
5
- import "./chunk-F6QMFCHQ.js";
6
- import "./chunk-LNJOQAXT.js";
7
- import "./chunk-EJKAN7HK.js";
4
+ } from "./chunk-ZWI4T4WF.js";
5
+ import "./chunk-N342GU3N.js";
6
+ import "./chunk-MA4NG3F7.js";
7
+ import "./chunk-2GIY77DT.js";
8
8
  import "./chunk-OAN4BXEW.js";
9
9
  import "./chunk-DJH6LMBT.js";
10
10
  import "./chunk-PHR64A6U.js";
11
11
  import "./chunk-J7GAZGZT.js";
12
- import "./chunk-2DBWCXAQ.js";
12
+ import "./chunk-A6YTJZAO.js";
13
13
  import "./chunk-UO4X2ENE.js";
14
14
  import "./chunk-KJEOKIH2.js";
15
15
  import "./chunk-X7ZAP6YW.js";
16
16
  import "./chunk-CVQYCAMY.js";
17
- import "./chunk-FAN4P45J.js";
17
+ import "./chunk-BAN2F7TG.js";
18
18
  import "./chunk-ZONLEX2F.js";
19
19
  import "./chunk-VGE6UYND.js";
20
20
  import "./chunk-ODETQHMI.js";
@@ -30,15 +30,15 @@ import "./chunk-V5AC2TV7.js";
30
30
  import "./chunk-2PGRX4RH.js";
31
31
  import "./chunk-LCLH6ZUL.js";
32
32
  import "./chunk-YEFZ5HBD.js";
33
- import "./chunk-AWBV2VXO.js";
33
+ import "./chunk-MICSOCCE.js";
34
34
  import "./chunk-OA2FURC3.js";
35
35
  import "./chunk-J2GP3J3X.js";
36
36
  import "./chunk-JYYBSODN.js";
37
- import "./chunk-L2RESXUF.js";
37
+ import "./chunk-EBMHUSMZ.js";
38
38
  import "./chunk-TS5WKTFB.js";
39
39
  import "./chunk-FTPQI5TA.js";
40
40
  import "./chunk-HNCM3D7Y.js";
41
- import "./chunk-QMU3ZY2C.js";
41
+ import "./chunk-JRWG4KWV.js";
42
42
  import "./chunk-FSSUPWYO.js";
43
43
  import "./chunk-XG3AUMPI.js";
44
44
  import "./chunk-GZ4EK4LZ.js";
@@ -56,4 +56,4 @@ export {
56
56
  abortRunnerRun,
57
57
  launchWorkflowRun
58
58
  };
59
- //# sourceMappingURL=launch-E6SDDTHE.js.map
59
+ //# sourceMappingURL=launch-2DPUISQR.js.map