openfox 2.0.80 → 2.0.81

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 (32) hide show
  1. package/dist/{chat-handler-2ZEI2WBE.js → chat-handler-NRJWHZB2.js} +8 -8
  2. package/dist/{chunk-GBVS4LCP.js → chunk-3Q5WQMPA.js} +2 -2
  3. package/dist/{chunk-5CQRB7AD.js → chunk-AIIFQYU5.js} +2 -2
  4. package/dist/{chunk-MAGDRXHW.js → chunk-D25OSL6V.js} +17 -77
  5. package/dist/{chunk-LYZ3LQRX.js → chunk-E3MS5CF7.js} +2 -2
  6. package/dist/{chunk-V77VNKN6.js → chunk-EZDTCQMR.js} +6 -6
  7. package/dist/{chunk-PXF4KHAP.js → chunk-NLMT2HII.js} +8 -8
  8. package/dist/{chunk-YZUZHWXM.js → chunk-PVO2XVLV.js} +31 -31
  9. package/dist/{chunk-EHVDAVYG.js → chunk-QHLWWQRC.js} +2 -2
  10. package/dist/chunk-UP5CYTEC.js +7 -0
  11. package/dist/{chunk-MTUYDBSL.js → chunk-VZYC5OLW.js} +2 -2
  12. package/dist/{chunk-AFJLY43Z.js → chunk-WYJTY63G.js} +5 -3
  13. package/dist/{chunk-F56O4B67.js → chunk-XW7BCI3O.js} +3 -3
  14. package/dist/cli/dev.js +1 -1
  15. package/dist/cli/index.js +1 -1
  16. package/dist/{compactor-LJFUIKWB.js → compactor-3UHLN554.js} +5 -5
  17. package/dist/{manager-ATWZUL3O.js → manager-FIE2LCGJ.js} +4 -4
  18. package/dist/{orchestrator-SSTGBBOU.js → orchestrator-KOL34NS2.js} +7 -7
  19. package/dist/package.json +1 -1
  20. package/dist/{platform-VBNNMTR5.js → platform-KME5DVX5.js} +3 -3
  21. package/dist/{processor-YLPZJMXH.js → processor-S3SDZHQC.js} +8 -8
  22. package/dist/{serve-U53R54PO.js → serve-PESDYZZP.js} +11 -11
  23. package/dist/server/index.js +10 -10
  24. package/dist/{server-2TQ3DFYA.js → server-LWXTOEIJ.js} +9 -9
  25. package/dist/{settings-6M55N4Q2.js → settings-DMYBLBDQ.js} +2 -2
  26. package/dist/{tools-APH5FLYT.js → tools-FZ7HWHOW.js} +6 -6
  27. package/dist/{update-6OFFUWZN.js → update-SVJRA6YZ.js} +2 -2
  28. package/dist/web/assets/{index-DHsXL2KP.js → index-BkC11Dy_.js} +52 -52
  29. package/dist/web/index.html +1 -1
  30. package/dist/web/sw.js +1 -1
  31. package/package.json +1 -1
  32. package/dist/chunk-RJWYZ6KK.js +0 -7
@@ -2,21 +2,21 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-GBVS4LCP.js";
5
+ } from "./chunk-3Q5WQMPA.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-V77VNKN6.js";
9
- import "./chunk-MAGDRXHW.js";
10
- import "./chunk-5CQRB7AD.js";
8
+ } from "./chunk-EZDTCQMR.js";
9
+ import "./chunk-D25OSL6V.js";
10
+ import "./chunk-AIIFQYU5.js";
11
11
  import "./chunk-NWO6GRYE.js";
12
12
  import "./chunk-VPFUXGMM.js";
13
13
  import "./chunk-37WF2Z3T.js";
14
14
  import "./chunk-WGMJCFCE.js";
15
15
  import "./chunk-4GMRZU7A.js";
16
16
  import "./chunk-EU3WWTFH.js";
17
- import "./chunk-EHVDAVYG.js";
18
- import "./chunk-MTUYDBSL.js";
19
- import "./chunk-AFJLY43Z.js";
17
+ import "./chunk-QHLWWQRC.js";
18
+ import "./chunk-VZYC5OLW.js";
19
+ import "./chunk-WYJTY63G.js";
20
20
  import "./chunk-EYIWUONA.js";
21
21
  import "./chunk-6AE3JPDJ.js";
22
22
  import "./chunk-I72ACQ6R.js";
@@ -160,4 +160,4 @@ export {
160
160
  startChatSession,
161
161
  stopSessionExecution
162
162
  };
163
- //# sourceMappingURL=chat-handler-2ZEI2WBE.js.map
163
+ //# sourceMappingURL=chat-handler-NRJWHZB2.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-EU3WWTFH.js";
4
4
  import {
5
5
  getMaxVisibleItems
6
- } from "./chunk-AFJLY43Z.js";
6
+ } from "./chunk-WYJTY63G.js";
7
7
  import {
8
8
  combineEventsWithSnapshot,
9
9
  getEventStore,
@@ -200,4 +200,4 @@ export {
200
200
  buildRunChatTurnParams,
201
201
  generateSessionNameForSession
202
202
  };
203
- //# sourceMappingURL=chunk-GBVS4LCP.js.map
203
+ //# sourceMappingURL=chunk-3Q5WQMPA.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getPlatformShell
3
- } from "./chunk-MTUYDBSL.js";
3
+ } from "./chunk-VZYC5OLW.js";
4
4
  import {
5
5
  appendLog,
6
6
  createProcess,
@@ -153,4 +153,4 @@ export {
153
153
  getSessionProcesses2 as getSessionProcesses,
154
154
  getProcessLogs
155
155
  };
156
- //# sourceMappingURL=chunk-5CQRB7AD.js.map
156
+ //# sourceMappingURL=chunk-AIIFQYU5.js.map
@@ -8,7 +8,7 @@ import {
8
8
  spawnShellProcess,
9
9
  startProcessCommand,
10
10
  stopProcess
11
- } from "./chunk-5CQRB7AD.js";
11
+ } from "./chunk-AIIFQYU5.js";
12
12
  import {
13
13
  createMcpTools
14
14
  } from "./chunk-NWO6GRYE.js";
@@ -42,13 +42,13 @@ import {
42
42
  createToolCallEvent,
43
43
  createToolResultEvent,
44
44
  streamLLMPure
45
- } from "./chunk-EHVDAVYG.js";
45
+ } from "./chunk-QHLWWQRC.js";
46
46
  import {
47
47
  SETTINGS_KEYS,
48
48
  deleteSetting,
49
49
  getSetting,
50
50
  setSetting
51
- } from "./chunk-AFJLY43Z.js";
51
+ } from "./chunk-WYJTY63G.js";
52
52
  import {
53
53
  startInspectProxy
54
54
  } from "./chunk-EYIWUONA.js";
@@ -116,8 +116,17 @@ import { extname, join } from "path";
116
116
  import { randomUUID } from "crypto";
117
117
  import { resolve, isAbsolute } from "path";
118
118
  var confirmationSeqCounter = 0;
119
- function requestUserConfirmation(context, toolLabel, desc) {
119
+ async function requestUserConfirmation(context, toolLabel, desc) {
120
120
  if (context.dangerLevel === "dangerous") return Promise.resolve(true);
121
+ if (toolLabel === "workspace" || toolLabel === "command") {
122
+ try {
123
+ const { getSetting: getSetting2, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-DMYBLBDQ.js");
124
+ if (getSetting2(SETTINGS_KEYS2.CONFIRM_ON_WORKSPACE_ACTIONS) !== "true") {
125
+ return Promise.resolve(true);
126
+ }
127
+ } catch {
128
+ }
129
+ }
121
130
  if (context.isSubAgent) return Promise.resolve(false);
122
131
  if (typeof context.onEvent !== "function") return Promise.resolve(false);
123
132
  const seq = ++confirmationSeqCounter;
@@ -1040,65 +1049,6 @@ function stripTailPipe(command) {
1040
1049
  }
1041
1050
 
1042
1051
  // src/server/tools/shell.ts
1043
- var ESCAPE_PATTERNS = [
1044
- /\bcd\s+['"]?(?:\.\.|\/|~)/,
1045
- /\bcd\s+\$/,
1046
- // cd with variable expansion ($HOME, ${HOME})
1047
- /\bcd\s+\$\(/,
1048
- // cd with command substitution $(...)
1049
- /\bcd\s+`/,
1050
- // cd with backtick substitution
1051
- /\bgit\s+-C\s+/,
1052
- /GIT_DIR=/,
1053
- /\bgit\s+--work-tree[\s=]/,
1054
- /\bgit\s+--git-dir[\s=]/
1055
- ];
1056
- function extractCdTarget(segment) {
1057
- const trimmed = segment.trim();
1058
- const match = trimmed.match(/^cd\s+(.+)$/);
1059
- if (!match) return null;
1060
- return match[1].replace(/^['"]|['"]$/g, "").trim();
1061
- }
1062
- function isCdTargetWithinWorkdir(cdTarget, workdir) {
1063
- if (!cdTarget.startsWith("/")) return false;
1064
- const resolvedTarget = resolve3(cdTarget);
1065
- const normalizedWorkdir = resolve3(workdir).replace(/\/+$/, "");
1066
- return resolvedTarget === normalizedWorkdir || resolvedTarget.startsWith(normalizedWorkdir + "/");
1067
- }
1068
- function isCdToWithinWorkdir(segment, workdir) {
1069
- const trimmed = segment.trim();
1070
- if (!/^cd\s+['"]?\//.test(trimmed)) return false;
1071
- const cdTarget = extractCdTarget(trimmed);
1072
- return cdTarget !== null && isCdTargetWithinWorkdir(cdTarget, workdir);
1073
- }
1074
- function detectEscapePattern(command, workdir) {
1075
- const normalized = command.replace(/'[^']*'/g, " ").replace(/"[^"]*"/g, " ");
1076
- for (const pattern of ESCAPE_PATTERNS) {
1077
- const match = normalized.match(pattern);
1078
- if (match) {
1079
- const matched = match[0].trim();
1080
- if (workdir && (matched.startsWith("cd /") || matched.startsWith('cd "'))) {
1081
- const segments2 = command.split(/[;&|]|&&|\|\|/);
1082
- const allCdsWithinWorkdir = segments2.every(
1083
- (seg) => !/^cd\s+['"]?\//.test(seg.trim()) || isCdToWithinWorkdir(seg, workdir)
1084
- );
1085
- if (allCdsWithinWorkdir) continue;
1086
- }
1087
- return matched;
1088
- }
1089
- }
1090
- const segments = command.split(/[;&|]|&&|\|\|/);
1091
- for (const segment of segments) {
1092
- const trimmed = segment.trim();
1093
- if (/^cd\s+.+\.\./.test(trimmed) || /^cd\s+['"]?\//.test(trimmed) || /^cd\s+['"]?~/.test(trimmed) || /^cd\s+['"]?\.\./.test(trimmed) || /^cd\s+.*\$\(/.test(trimmed) || // cd with $(...) substitution
1094
- /^cd\s+.*`/.test(trimmed) || // cd with backtick substitution
1095
- /^cd\s+.*\$\{?[A-Za-z_]/.test(trimmed)) {
1096
- if (workdir && isCdToWithinWorkdir(trimmed, workdir)) continue;
1097
- return trimmed;
1098
- }
1099
- }
1100
- return null;
1101
- }
1102
1052
  function detectGitMutation(command) {
1103
1053
  const gitMatch = command.match(
1104
1054
  /\bgit\s+['"]?(?:checkout|switch|branch\s+(-[dDmcMC]|--delete|--move|--copy|--force|-f)|-b\s+\S+|merge|rebase|reset|cherry-pick|worktree|clone|pull|push|fetch|update-ref|symbolic-ref)/
@@ -1179,16 +1129,6 @@ var runCommandTool = createTool(
1179
1129
  `Use background_process tool (action: "start") for background/long-running commands instead of '&'. See the tool description for details.`
1180
1130
  );
1181
1131
  }
1182
- const escapeMatch = detectEscapePattern(args.command, context.workdir);
1183
- if (escapeMatch) {
1184
- const desc = `Command "${args.command}" contains workspace escape pattern "${escapeMatch}". Allow this command?`;
1185
- const approved = await requestUserConfirmation(context, "command", desc);
1186
- if (!approved) {
1187
- return helpers.error(
1188
- `User denied: command "${escapeMatch}" would escape the workspace. Use the workspace tool to switch workspaces directly.`
1189
- );
1190
- }
1191
- }
1192
1132
  const mutationMatch = detectGitMutation(args.command);
1193
1133
  if (mutationMatch) {
1194
1134
  const desc = `Command "${args.command}" modifies Git state (${mutationMatch}). Allow this Git operation?`;
@@ -2636,7 +2576,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
2636
2576
  sessionManager.setCurrentContextSize(sessionId, result.usage.promptTokens, config.subAgentMetadata?.subAgentId);
2637
2577
  if (!compacting) {
2638
2578
  const contextState2 = sessionManager.getContextState(sessionId);
2639
- const { shouldCompact, appendCompactionPrompt } = await import("./compactor-LJFUIKWB.js");
2579
+ const { shouldCompact, appendCompactionPrompt } = await import("./compactor-3UHLN554.js");
2640
2580
  if (shouldCompact(
2641
2581
  contextState2.currentTokens,
2642
2582
  contextState2.maxTokens,
@@ -3575,7 +3515,7 @@ var callSubAgentTool = {
3575
3515
  };
3576
3516
  }
3577
3517
  try {
3578
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-APH5FLYT.js");
3518
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-FZ7HWHOW.js");
3579
3519
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3580
3520
  const turnMetrics = new TurnMetrics();
3581
3521
  const result = await executeSubAgent({
@@ -4578,7 +4518,7 @@ var mcpConfigTool = createTool(
4578
4518
  mcpNotifyChanged?.(sessionId);
4579
4519
  }
4580
4520
  async function rebuildTools() {
4581
- const { setMcpTools: setMcpTools2 } = await import("./tools-APH5FLYT.js");
4521
+ const { setMcpTools: setMcpTools2 } = await import("./tools-FZ7HWHOW.js");
4582
4522
  const mcpTools = createMcpTools(mcpManagerForTools);
4583
4523
  setMcpTools2(mcpTools);
4584
4524
  }
@@ -5241,4 +5181,4 @@ export {
5241
5181
  getToolRegistryForAgent,
5242
5182
  createToolRegistry
5243
5183
  };
5244
- //# sourceMappingURL=chunk-MAGDRXHW.js.map
5184
+ //# sourceMappingURL=chunk-D25OSL6V.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  COMPACTION_PROMPT,
3
3
  createMessageStartEvent
4
- } from "./chunk-EHVDAVYG.js";
4
+ } from "./chunk-QHLWWQRC.js";
5
5
  import {
6
6
  getCurrentWindowMessageOptions
7
7
  } from "./chunk-BUXIESO5.js";
@@ -34,4 +34,4 @@ export {
34
34
  COMPACTION_MAX_RATIO,
35
35
  shouldCompact
36
36
  };
37
- //# sourceMappingURL=chunk-LYZ3LQRX.js.map
37
+ //# sourceMappingURL=chunk-E3MS5CF7.js.map
@@ -9,7 +9,7 @@ import {
9
9
  loadAllAgentsDefault,
10
10
  processEventsForConversation,
11
11
  runTopLevelAgentLoop
12
- } from "./chunk-MAGDRXHW.js";
12
+ } from "./chunk-D25OSL6V.js";
13
13
  import {
14
14
  PathAccessDeniedError
15
15
  } from "./chunk-4GMRZU7A.js";
@@ -20,7 +20,7 @@ import {
20
20
  buildTopLevelSystemPrompt,
21
21
  createChatDoneEvent,
22
22
  createMessageStartEvent
23
- } from "./chunk-EHVDAVYG.js";
23
+ } from "./chunk-QHLWWQRC.js";
24
24
  import {
25
25
  getCurrentContextWindowId,
26
26
  getCurrentWindowMessageOptions,
@@ -66,7 +66,7 @@ function resolveAgentDef(sessionManager, sessionId) {
66
66
  }
67
67
  async function buildCachedPrompt(sessionManager, sessionId, agentDef) {
68
68
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
69
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-APH5FLYT.js");
69
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-FZ7HWHOW.js");
70
70
  const tools = getToolRegistryForAgent2(agentDef).definitions;
71
71
  const toolFingerprint = getToolFingerprint(tools);
72
72
  const allAgents = await loadAllAgentsDefault();
@@ -79,7 +79,7 @@ async function buildCachedPrompt(sessionManager, sessionId, agentDef) {
79
79
  async function computeSessionHash(sessionManager, sessionId) {
80
80
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
81
81
  const agentDef = await resolveAgentDef(sessionManager, sessionId);
82
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-APH5FLYT.js");
82
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-FZ7HWHOW.js");
83
83
  const tools = getToolRegistryForAgent2(agentDef).definitions;
84
84
  const toolFingerprint = getToolFingerprint(tools);
85
85
  return computeDynamicContextHash(instructionContent, skills, toolFingerprint);
@@ -97,7 +97,7 @@ async function applyDynamicContext(sessionManager, sessionId) {
97
97
 
98
98
  // src/server/chat/orchestrator.ts
99
99
  async function buildRetryPatterns() {
100
- const { getSetting, SETTINGS_KEYS } = await import("./settings-6M55N4Q2.js");
100
+ const { getSetting, SETTINGS_KEYS } = await import("./settings-DMYBLBDQ.js");
101
101
  const raw = getSetting(SETTINGS_KEYS.RETRY_PATTERNS);
102
102
  if (!raw) {
103
103
  const oldXmlProtection = getSetting("llm.disableXmlProtection");
@@ -371,4 +371,4 @@ export {
371
371
  runChatTurn,
372
372
  runAgentTurn
373
373
  };
374
- //# sourceMappingURL=chunk-V77VNKN6.js.map
374
+ //# sourceMappingURL=chunk-EZDTCQMR.js.map
@@ -3,7 +3,7 @@ import {
3
3
  computeSessionHash,
4
4
  runAgentTurn,
5
5
  runChatTurn
6
- } from "./chunk-V77VNKN6.js";
6
+ } from "./chunk-EZDTCQMR.js";
7
7
  import {
8
8
  deleteItemFromDir,
9
9
  devServerManager,
@@ -13,12 +13,12 @@ import {
13
13
  jsonSerializer,
14
14
  loadAllAgentsDefault,
15
15
  saveItemToDir
16
- } from "./chunk-MAGDRXHW.js";
16
+ } from "./chunk-D25OSL6V.js";
17
17
  import {
18
18
  checkAborted,
19
19
  onProcessEvent,
20
20
  spawnShellProcess
21
- } from "./chunk-5CQRB7AD.js";
21
+ } from "./chunk-AIIFQYU5.js";
22
22
  import {
23
23
  gitSpawnEnv
24
24
  } from "./chunk-WGMJCFCE.js";
@@ -28,17 +28,17 @@ import {
28
28
  } from "./chunk-EU3WWTFH.js";
29
29
  import {
30
30
  appendCompactionPrompt
31
- } from "./chunk-LYZ3LQRX.js";
31
+ } from "./chunk-E3MS5CF7.js";
32
32
  import {
33
33
  TurnMetrics,
34
34
  createMessageStartEvent
35
- } from "./chunk-EHVDAVYG.js";
35
+ } from "./chunk-QHLWWQRC.js";
36
36
  import {
37
37
  getPlatformShell
38
- } from "./chunk-MTUYDBSL.js";
38
+ } from "./chunk-VZYC5OLW.js";
39
39
  import {
40
40
  getMaxVisibleItems
41
- } from "./chunk-AFJLY43Z.js";
41
+ } from "./chunk-WYJTY63G.js";
42
42
  import {
43
43
  killProcessTree,
44
44
  terminateProcessTree
@@ -2213,4 +2213,4 @@ export {
2213
2213
  signalMcpReady,
2214
2214
  createWebSocketServer
2215
2215
  };
2216
- //# sourceMappingURL=chunk-PXF4KHAP.js.map
2216
+ //# sourceMappingURL=chunk-NLMT2HII.js.map
@@ -21,7 +21,7 @@ import {
21
21
  tokenFromPassword,
22
22
  verifyPassword,
23
23
  workflowExists
24
- } from "./chunk-PXF4KHAP.js";
24
+ } from "./chunk-NLMT2HII.js";
25
25
  import {
26
26
  agentExists,
27
27
  createToolRegistry,
@@ -66,7 +66,7 @@ import {
66
66
  setSkillEnabled,
67
67
  skillExists,
68
68
  updateOwnedSkill
69
- } from "./chunk-MAGDRXHW.js";
69
+ } from "./chunk-D25OSL6V.js";
70
70
  import {
71
71
  createMcpTools
72
72
  } from "./chunk-NWO6GRYE.js";
@@ -93,22 +93,22 @@ import {
93
93
  ALWAYS_ALLOWED,
94
94
  ALWAYS_ALLOWED_FOR_SUBAGENTS,
95
95
  TOP_LEVEL_ONLY_TOOLS
96
- } from "./chunk-EHVDAVYG.js";
96
+ } from "./chunk-QHLWWQRC.js";
97
97
  import {
98
98
  getPathSeparator,
99
99
  isAbsolutePath
100
- } from "./chunk-MTUYDBSL.js";
100
+ } from "./chunk-VZYC5OLW.js";
101
101
  import {
102
102
  deleteSetting,
103
103
  getSetting,
104
104
  setSetting
105
- } from "./chunk-AFJLY43Z.js";
105
+ } from "./chunk-WYJTY63G.js";
106
106
  import {
107
107
  getProject
108
108
  } from "./chunk-6AE3JPDJ.js";
109
109
  import {
110
110
  VERSION
111
- } from "./chunk-RJWYZ6KK.js";
111
+ } from "./chunk-UP5CYTEC.js";
112
112
  import {
113
113
  emitAssistantMessageStart,
114
114
  emitContextState,
@@ -5409,7 +5409,7 @@ async function createServerHandle(config3) {
5409
5409
  setMcpTools(mcpTools);
5410
5410
  logger.info("MCP tools registered", { count: mcpTools.length });
5411
5411
  }
5412
- const { signalMcpReady } = await import("./server-2TQ3DFYA.js");
5412
+ const { signalMcpReady } = await import("./server-LWXTOEIJ.js");
5413
5413
  signalMcpReady();
5414
5414
  });
5415
5415
  const app = express();
@@ -5797,8 +5797,8 @@ async function createServerHandle(config3) {
5797
5797
  app.get("/api/sessions/:id", async (req, res) => {
5798
5798
  const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-GF2WNELM.js");
5799
5799
  const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-UACKBHUZ.js");
5800
- const { getPendingQuestionsForSession } = await import("./tools-APH5FLYT.js");
5801
- const { getMaxVisibleItems } = await import("./settings-6M55N4Q2.js");
5800
+ const { getPendingQuestionsForSession } = await import("./tools-FZ7HWHOW.js");
5801
+ const { getMaxVisibleItems } = await import("./settings-DMYBLBDQ.js");
5802
5802
  const session = sessionManager.getSession(req.params.id);
5803
5803
  if (!session) {
5804
5804
  return res.status(404).json({ error: "Session not found" });
@@ -5828,8 +5828,8 @@ async function createServerHandle(config3) {
5828
5828
  if (!session) {
5829
5829
  return res.status(404).json({ error: "Session not found" });
5830
5830
  }
5831
- const { stopSessionExecution } = await import("./chat-handler-2ZEI2WBE.js");
5832
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-APH5FLYT.js");
5831
+ const { stopSessionExecution } = await import("./chat-handler-NRJWHZB2.js");
5832
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-FZ7HWHOW.js");
5833
5833
  sessionManager.clearMessageQueue(sessionId);
5834
5834
  stopSessionExecution(sessionId, sessionManager);
5835
5835
  abortSession(sessionId);
@@ -5860,7 +5860,7 @@ async function createServerHandle(config3) {
5860
5860
  app.post("/api/sessions/:id/provider", async (req, res) => {
5861
5861
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-GF2WNELM.js");
5862
5862
  const { buildMessagesFromStoredEvents } = await import("./folding-UACKBHUZ.js");
5863
- const { getMaxVisibleItems } = await import("./settings-6M55N4Q2.js");
5863
+ const { getMaxVisibleItems } = await import("./settings-DMYBLBDQ.js");
5864
5864
  const sessionId = req.params.id;
5865
5865
  const session = sessionManager.getSession(sessionId);
5866
5866
  if (!session) {
@@ -5975,7 +5975,7 @@ async function createServerHandle(config3) {
5975
5975
  app.put("/api/sessions/:id/mode", async (req, res) => {
5976
5976
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-GF2WNELM.js");
5977
5977
  const { buildMessagesFromStoredEvents } = await import("./folding-UACKBHUZ.js");
5978
- const { getMaxVisibleItems } = await import("./settings-6M55N4Q2.js");
5978
+ const { getMaxVisibleItems } = await import("./settings-DMYBLBDQ.js");
5979
5979
  const sessionId = req.params.id;
5980
5980
  const session = sessionManager.getSession(sessionId);
5981
5981
  if (!session) {
@@ -6036,7 +6036,7 @@ async function createServerHandle(config3) {
6036
6036
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
6037
6037
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
6038
6038
  }
6039
- const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-APH5FLYT.js");
6039
+ const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-FZ7HWHOW.js");
6040
6040
  const pendingSessionId = getConfirmationSessionId(callId);
6041
6041
  if (!pendingSessionId) {
6042
6042
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -6051,8 +6051,8 @@ async function createServerHandle(config3) {
6051
6051
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-GF2WNELM.js");
6052
6052
  const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-UACKBHUZ.js");
6053
6053
  const { createSessionStateMessage } = await import("./protocol-Q7X4NEME.js");
6054
- const { getPendingQuestionsForSession } = await import("./tools-APH5FLYT.js");
6055
- const { getMaxVisibleItems } = await import("./settings-6M55N4Q2.js");
6054
+ const { getPendingQuestionsForSession } = await import("./tools-FZ7HWHOW.js");
6055
+ const { getMaxVisibleItems } = await import("./settings-DMYBLBDQ.js");
6056
6056
  const eventStore = getEventStore2();
6057
6057
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
6058
6058
  const events = combineEvents(sessionId, snapshot, eventsSinceSnapshot);
@@ -6088,7 +6088,7 @@ async function createServerHandle(config3) {
6088
6088
  if (!skip && typeof answer !== "string") {
6089
6089
  return res.status(400).json({ error: "answer is required when not skipping" });
6090
6090
  }
6091
- const { provideAnswer } = await import("./tools-APH5FLYT.js");
6091
+ const { provideAnswer } = await import("./tools-FZ7HWHOW.js");
6092
6092
  const found = provideAnswer(callId, answer ?? "", skip ?? false);
6093
6093
  if (!found) {
6094
6094
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -6116,7 +6116,7 @@ async function createServerHandle(config3) {
6116
6116
  if (!session) {
6117
6117
  return res.status(404).json({ error: "Session not found" });
6118
6118
  }
6119
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-6M55N4Q2.js");
6119
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-DMYBLBDQ.js");
6120
6120
  if (getSetting2(SETTINGS_KEYS.CACHE_WARMING) !== "true") {
6121
6121
  return res.json({ success: false, reason: "disabled" });
6122
6122
  }
@@ -6148,7 +6148,7 @@ async function createServerHandle(config3) {
6148
6148
  backend: activeProvider?.backend ?? llmClient.getBackend(),
6149
6149
  model: llmClient.getModel()
6150
6150
  };
6151
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-SSTGBBOU.js");
6151
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-KOL34NS2.js");
6152
6152
  runAgentTurn(
6153
6153
  {
6154
6154
  sessionManager,
@@ -6186,8 +6186,8 @@ async function createServerHandle(config3) {
6186
6186
  if (!session) {
6187
6187
  return res.status(404).json({ error: "Session not found" });
6188
6188
  }
6189
- const { stopSessionExecution } = await import("./chat-handler-2ZEI2WBE.js");
6190
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-APH5FLYT.js");
6189
+ const { stopSessionExecution } = await import("./chat-handler-NRJWHZB2.js");
6190
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-FZ7HWHOW.js");
6191
6191
  const queuedMessages = sessionManager.getQueueState(sessionId);
6192
6192
  sessionManager.clearMessageQueue(sessionId);
6193
6193
  stopSessionExecution(sessionId, sessionManager);
@@ -6270,7 +6270,7 @@ async function createServerHandle(config3) {
6270
6270
  res.json({ accepted: true });
6271
6271
  });
6272
6272
  app.get("/api/settings", async (req, res) => {
6273
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-6M55N4Q2.js");
6273
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-DMYBLBDQ.js");
6274
6274
  const keysParam = req.query["keys"];
6275
6275
  if (!keysParam) {
6276
6276
  return res.status(400).json({ error: "keys query parameter is required" });
@@ -6283,19 +6283,19 @@ async function createServerHandle(config3) {
6283
6283
  res.json(result);
6284
6284
  });
6285
6285
  app.get("/api/settings/:key", async (req, res) => {
6286
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-6M55N4Q2.js");
6286
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-DMYBLBDQ.js");
6287
6287
  const key = req.params.key;
6288
6288
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
6289
6289
  res.json({ key, value });
6290
6290
  });
6291
6291
  app.get("/api/settings/:key", async (req, res) => {
6292
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-6M55N4Q2.js");
6292
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-DMYBLBDQ.js");
6293
6293
  const key = req.params.key;
6294
6294
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
6295
6295
  res.json({ key, value });
6296
6296
  });
6297
6297
  app.put("/api/settings/:key", async (req, res) => {
6298
- const { setSetting: setSetting2 } = await import("./settings-6M55N4Q2.js");
6298
+ const { setSetting: setSetting2 } = await import("./settings-DMYBLBDQ.js");
6299
6299
  const key = req.params.key;
6300
6300
  const { value } = req.body;
6301
6301
  if (value === void 0) {
@@ -6322,7 +6322,7 @@ async function createServerHandle(config3) {
6322
6322
  }
6323
6323
  });
6324
6324
  app.get("/api/tools/shells", async (_req, res) => {
6325
- const { listAvailableShells } = await import("./platform-VBNNMTR5.js");
6325
+ const { listAvailableShells } = await import("./platform-KME5DVX5.js");
6326
6326
  res.json({ shells: listAvailableShells() });
6327
6327
  });
6328
6328
  app.get("/api/config", async (_req, res) => {
@@ -6815,7 +6815,7 @@ async function createServerHandle(config3) {
6815
6815
  });
6816
6816
  async function rebuildMcpTools() {
6817
6817
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-MOGEI6TP.js");
6818
- const { setMcpTools: setMcpTools2 } = await import("./tools-APH5FLYT.js");
6818
+ const { setMcpTools: setMcpTools2 } = await import("./tools-FZ7HWHOW.js");
6819
6819
  const mcpTools = createMcpTools2(mcpManager);
6820
6820
  setMcpTools2(mcpTools);
6821
6821
  }
@@ -7062,13 +7062,13 @@ async function createServerHandle(config3) {
7062
7062
  })
7063
7063
  );
7064
7064
  app.get("/api/sessions/:id/background-processes", async (req, res) => {
7065
- const { getSessionProcesses } = await import("./manager-ATWZUL3O.js");
7065
+ const { getSessionProcesses } = await import("./manager-FIE2LCGJ.js");
7066
7066
  const sessionId = req.params.id;
7067
7067
  const processes = getSessionProcesses(sessionId);
7068
7068
  res.json({ processes });
7069
7069
  });
7070
7070
  app.post("/api/sessions/:id/background-process/:processId/stop", async (req, res) => {
7071
- const { stopProcess } = await import("./manager-ATWZUL3O.js");
7071
+ const { stopProcess } = await import("./manager-FIE2LCGJ.js");
7072
7072
  const sessionId = req.params.id;
7073
7073
  const processId = req.params.processId;
7074
7074
  const session = sessionManager.getSession(sessionId);
@@ -7211,7 +7211,7 @@ async function createServerHandle(config3) {
7211
7211
  const state = sessionManager.getContextState(sessionId);
7212
7212
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
7213
7213
  });
7214
- const { QueueProcessor } = await import("./processor-YLPZJMXH.js");
7214
+ const { QueueProcessor } = await import("./processor-S3SDZHQC.js");
7215
7215
  const queueProcessor = new QueueProcessor({
7216
7216
  sessionManager,
7217
7217
  providerManager,
@@ -7291,4 +7291,4 @@ export {
7291
7291
  createServerHandle,
7292
7292
  createServer
7293
7293
  };
7294
- //# sourceMappingURL=chunk-YZUZHWXM.js.map
7294
+ //# sourceMappingURL=chunk-PVO2XVLV.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getPlatformShell
3
- } from "./chunk-MTUYDBSL.js";
3
+ } from "./chunk-VZYC5OLW.js";
4
4
  import {
5
5
  streamWithSegments
6
6
  } from "./chunk-J2GP3J3X.js";
@@ -680,4 +680,4 @@ export {
680
680
  createChatDoneEvent,
681
681
  consumeStreamGenerator
682
682
  };
683
- //# sourceMappingURL=chunk-EHVDAVYG.js.map
683
+ //# sourceMappingURL=chunk-QHLWWQRC.js.map
@@ -0,0 +1,7 @@
1
+ // src/constants.ts
2
+ var VERSION = "2.0.81";
3
+
4
+ export {
5
+ VERSION
6
+ };
7
+ //# sourceMappingURL=chunk-UP5CYTEC.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SETTINGS_KEYS,
3
3
  getSetting
4
- } from "./chunk-AFJLY43Z.js";
4
+ } from "./chunk-WYJTY63G.js";
5
5
 
6
6
  // src/server/utils/platform.ts
7
7
  import os from "os";
@@ -63,4 +63,4 @@ export {
63
63
  isWindowsPath,
64
64
  isAbsolutePath
65
65
  };
66
- //# sourceMappingURL=chunk-MTUYDBSL.js.map
66
+ //# sourceMappingURL=chunk-VZYC5OLW.js.map
@@ -26,7 +26,8 @@ var SETTINGS_KEYS = {
26
26
  SEARCH_SEARXNG_URL: "search.searxngUrl",
27
27
  SEARCH_SEARXNG_API_KEY: "search.searxngApiKey",
28
28
  TOOLS_USE_RTK: "tools.useRtk",
29
- TOOLS_SHELL: "tools.shell"
29
+ TOOLS_SHELL: "tools.shell",
30
+ CONFIRM_ON_WORKSPACE_ACTIONS: "tools.confirmOnWorkspaceActions"
30
31
  };
31
32
  var SETTINGS_DEFAULTS = {
32
33
  [SETTINGS_KEYS.DISPLAY_SHOW_THINKING]: "true",
@@ -53,7 +54,8 @@ var SETTINGS_DEFAULTS = {
53
54
  ]
54
55
  }),
55
56
  [SETTINGS_KEYS.TOOLS_USE_RTK]: "false",
56
- [SETTINGS_KEYS.TOOLS_SHELL]: "cmd"
57
+ [SETTINGS_KEYS.TOOLS_SHELL]: "cmd",
58
+ [SETTINGS_KEYS.CONFIRM_ON_WORKSPACE_ACTIONS]: "false"
57
59
  };
58
60
  function getSetting(key) {
59
61
  try {
@@ -106,4 +108,4 @@ export {
106
108
  getAllSettings,
107
109
  getMaxVisibleItems
108
110
  };
109
- //# sourceMappingURL=chunk-AFJLY43Z.js.map
111
+ //# sourceMappingURL=chunk-WYJTY63G.js.map
@@ -200,7 +200,7 @@ async function runCli(options) {
200
200
  break;
201
201
  }
202
202
  case "update": {
203
- const { runUpdate } = await import("./update-6OFFUWZN.js");
203
+ const { runUpdate } = await import("./update-SVJRA6YZ.js");
204
204
  const code = await runUpdate();
205
205
  if (code !== 0) {
206
206
  process.exit(code);
@@ -213,7 +213,7 @@ async function runCli(options) {
213
213
  if (!configExists) {
214
214
  await runNetworkSetup(mode);
215
215
  }
216
- const { runServe } = await import("./serve-U53R54PO.js");
216
+ const { runServe } = await import("./serve-PESDYZZP.js");
217
217
  const serveOptions = { mode };
218
218
  if (values.port) serveOptions.port = parseInt(values.port);
219
219
  if (values["no-browser"] === true) serveOptions.openBrowser = false;
@@ -225,4 +225,4 @@ async function runCli(options) {
225
225
  export {
226
226
  runCli
227
227
  };
228
- //# sourceMappingURL=chunk-F56O4B67.js.map
228
+ //# sourceMappingURL=chunk-XW7BCI3O.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-F56O4B67.js";
4
+ } from "../chunk-XW7BCI3O.js";
5
5
  import "../chunk-XY3LESVZ.js";
6
6
  import {
7
7
  logger