openfox 2.0.69 → 2.0.71

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 (40) hide show
  1. package/dist/{chat-handler-K3DWIGHG.js → chat-handler-IKLQ3ZUN.js} +11 -11
  2. package/dist/{chunk-VFYNKALW.js → chunk-6V7DU7ID.js} +15 -20
  3. package/dist/{chunk-E4POUD2M.js → chunk-6XOA2WPU.js} +2 -2
  4. package/dist/chunk-7NMOWPNY.js +7 -0
  5. package/dist/{chunk-JHGKXQBO.js → chunk-EZK7CGJ7.js} +87 -30
  6. package/dist/{chunk-PK2RMVMB.js → chunk-I72ACQ6R.js} +19 -18
  7. package/dist/{chunk-64GN6OPR.js → chunk-NEL2REUM.js} +5 -5
  8. package/dist/{chunk-7OW6X764.js → chunk-OHGQILRF.js} +15 -4
  9. package/dist/{chunk-WHVCGVQX.js → chunk-OLXHRPAD.js} +43 -38
  10. package/dist/{chunk-TFCHWMOJ.js → chunk-PVUBCGAT.js} +2 -2
  11. package/dist/{chunk-QFSDJIUS.js → chunk-RKD2FML3.js} +2 -2
  12. package/dist/{chunk-YQ3MEZJL.js → chunk-TQGGMWS6.js} +2 -2
  13. package/dist/{chunk-UTSSFPYA.js → chunk-X7OCC37J.js} +5 -5
  14. package/dist/{chunk-PVWAE43V.js → chunk-Y4YESMVA.js} +50 -22
  15. package/dist/{chunk-46OR4W3L.js → chunk-Z42YTK3O.js} +17 -14
  16. package/dist/cli/dev.js +1 -1
  17. package/dist/cli/index.js +1 -1
  18. package/dist/{client-63U5CTPE.js → client-SC6X65GY.js} +3 -3
  19. package/dist/{client-pure-XHH4RRLB.js → client-pure-NMLDKRDN.js} +6 -4
  20. package/dist/{compactor-IPMMFFHM.js → compactor-MXXF5WQR.js} +4 -4
  21. package/dist/{manager-JXYRGR6B.js → manager-EHIQCIUP.js} +3 -3
  22. package/dist/{orchestrator-PUV4WG77.js → orchestrator-YGCZZNNV.js} +10 -10
  23. package/dist/package.json +2 -2
  24. package/dist/plugins-registry.json +14 -0
  25. package/dist/{processor-O2QW27BD.js → processor-K6UPVMIP.js} +11 -11
  26. package/dist/{provider-IBIWR4AI.js → provider-OJUCZ5RN.js} +4 -4
  27. package/dist/{provider-manager-7C3JVOLW.js → provider-manager-MAKXSL6L.js} +4 -4
  28. package/dist/{pwa-T6JRAYJB.js → pwa-SEWCVKZX.js} +7 -8
  29. package/dist/{serve-Q34XBLR5.js → serve-5IOKFKGL.js} +18 -16
  30. package/dist/server/index.js +15 -14
  31. package/dist/{server-RLNPHLY2.js → server-T5QDCUBN.js} +12 -12
  32. package/dist/{service-6DL3MJZD.js → service-2PW2V25M.js} +6 -1
  33. package/dist/{store-FXTCHBI4.js → store-SARB6V2N.js} +2 -2
  34. package/dist/{tools-CALGWIV2.js → tools-K3SNGBI2.js} +14 -14
  35. package/dist/update-734IDLKT.js +40 -0
  36. package/dist/web/assets/{index-oKJVe9Cz.js → index-HTzupfR0.js} +72 -72
  37. package/dist/web/index.html +1 -1
  38. package/dist/web/sw.js +1 -1
  39. package/package.json +2 -2
  40. package/dist/cli/update.sh +0 -16
@@ -21,7 +21,7 @@ import {
21
21
  tokenFromPassword,
22
22
  verifyPassword,
23
23
  workflowExists
24
- } from "./chunk-46OR4W3L.js";
24
+ } from "./chunk-Z42YTK3O.js";
25
25
  import {
26
26
  agentExists,
27
27
  createToolRegistry,
@@ -66,12 +66,19 @@ import {
66
66
  setSkillEnabled,
67
67
  skillExists,
68
68
  updateOwnedSkill
69
- } from "./chunk-PVWAE43V.js";
69
+ } from "./chunk-Y4YESMVA.js";
70
+ import {
71
+ ensureWorktree,
72
+ syncIgnoredAssets
73
+ } from "./chunk-VLV3XWZS.js";
74
+ import {
75
+ EventEmitter
76
+ } from "./chunk-EU3WWTFH.js";
70
77
  import {
71
78
  ALWAYS_ALLOWED,
72
79
  ALWAYS_ALLOWED_FOR_SUBAGENTS,
73
80
  TOP_LEVEL_ONLY_TOOLS
74
- } from "./chunk-QFSDJIUS.js";
81
+ } from "./chunk-RKD2FML3.js";
75
82
  import {
76
83
  getProject
77
84
  } from "./chunk-KXVFHMSM.js";
@@ -79,9 +86,8 @@ import {
79
86
  createMcpTools
80
87
  } from "./chunk-NWO6GRYE.js";
81
88
  import {
82
- ensureWorktree,
83
- syncIgnoredAssets
84
- } from "./chunk-VLV3XWZS.js";
89
+ VERSION
90
+ } from "./chunk-7NMOWPNY.js";
85
91
  import {
86
92
  createSession,
87
93
  deleteSession,
@@ -125,15 +131,12 @@ import {
125
131
  import {
126
132
  initDatabase
127
133
  } from "./chunk-GMXKJGJ2.js";
128
- import {
129
- EventEmitter
130
- } from "./chunk-EU3WWTFH.js";
131
134
  import {
132
135
  createProviderManager,
133
136
  detectModel,
134
137
  getLlmStatus,
135
138
  parseDefaultModelSelection
136
- } from "./chunk-7OW6X764.js";
139
+ } from "./chunk-OHGQILRF.js";
137
140
  import {
138
141
  getModelProfile
139
142
  } from "./chunk-V4IE7HJY.js";
@@ -4282,11 +4285,6 @@ function fuzzyScore(filePath, query) {
4282
4285
  // src/server/routes/auto-update.ts
4283
4286
  import { Router as Router9 } from "express";
4284
4287
  import { spawn as spawn2 } from "child_process";
4285
-
4286
- // src/constants.ts
4287
- var VERSION = "2.0.69";
4288
-
4289
- // src/server/routes/auto-update.ts
4290
4288
  var updateInProgress = false;
4291
4289
  function isRunningAsService() {
4292
4290
  return process.env["OPENFOX_SERVICE"] === "true";
@@ -4308,8 +4306,10 @@ function createAutoUpdateRoutes(options = {}) {
4308
4306
  const current = VERSION;
4309
4307
  try {
4310
4308
  const latest = await new Promise((resolve8, reject) => {
4311
- const child = spawn2("npm", ["view", "openfox", "version"], {
4309
+ const win = process.platform === "win32";
4310
+ const child = spawn2(win ? "npm view openfox version" : "npm", win ? [] : ["view", "openfox", "version"], {
4312
4311
  stdio: ["ignore", "pipe", "pipe"],
4312
+ shell: win,
4313
4313
  windowsHide: true
4314
4314
  });
4315
4315
  let stdout = "";
@@ -4347,8 +4347,9 @@ function createAutoUpdateRoutes(options = {}) {
4347
4347
  updateInProgress = true;
4348
4348
  try {
4349
4349
  const isService = isRunningAsService();
4350
- const child = spawn2("bash", ["-c", "openfox update"], {
4350
+ const child = spawn2("openfox update", {
4351
4351
  stdio: ["ignore", "pipe", "pipe"],
4352
+ shell: true,
4352
4353
  windowsHide: true
4353
4354
  });
4354
4355
  let stdout = "";
@@ -4387,9 +4388,10 @@ function createAutoUpdateRoutes(options = {}) {
4387
4388
  return;
4388
4389
  }
4389
4390
  try {
4390
- const child = spawn2("bash", ["-c", "openfox service restart"], {
4391
+ const child = spawn2("openfox service restart", {
4391
4392
  detached: true,
4392
4393
  stdio: "ignore",
4394
+ shell: true,
4393
4395
  windowsHide: true
4394
4396
  });
4395
4397
  child.unref();
@@ -4632,6 +4634,7 @@ async function loadProviderPlugins(options) {
4632
4634
  import { Router as Router11 } from "express";
4633
4635
  import { fileURLToPath as fileURLToPath6, pathToFileURL as pathToFileURL2 } from "url";
4634
4636
  import { dirname as dirname7, resolve as resolve6, join as join9 } from "path";
4637
+ import { existsSync } from "fs";
4635
4638
  import { readFile as readFile4, readdir as readdir3, rm as rm2, rename as rename2 } from "fs/promises";
4636
4639
  import { platform } from "os";
4637
4640
  import { execFile } from "child_process";
@@ -4658,7 +4661,10 @@ function createPluginRoutes(options) {
4658
4661
  return res.json({ plugins: registryCache.data });
4659
4662
  }
4660
4663
  const moduleDir = dirname7(fileURLToPath6(import.meta.url));
4661
- const registryPath = resolve6(moduleDir, "../../../plugins-registry.json");
4664
+ let registryPath = resolve6(moduleDir, "../plugins-registry.json");
4665
+ if (!existsSync(registryPath)) {
4666
+ registryPath = resolve6(moduleDir, "../../../plugins-registry.json");
4667
+ }
4662
4668
  const data = JSON.parse(await readFile4(registryPath, "utf8"));
4663
4669
  registryCache = { data, ts: now };
4664
4670
  res.json({ plugins: data });
@@ -4917,7 +4923,7 @@ async function createServerHandle(config3) {
4917
4923
  setMcpTools(mcpTools);
4918
4924
  logger.info("MCP tools registered", { count: mcpTools.length });
4919
4925
  }
4920
- const { signalMcpReady } = await import("./server-RLNPHLY2.js");
4926
+ const { signalMcpReady } = await import("./server-T5QDCUBN.js");
4921
4927
  signalMcpReady();
4922
4928
  });
4923
4929
  const app = express();
@@ -5189,7 +5195,7 @@ async function createServerHandle(config3) {
5189
5195
  app.get("/api/sessions/:id", async (req, res) => {
5190
5196
  const { getEventStore: getEventStore2 } = await import("./events-CDQ4HASP.js");
5191
5197
  const { buildMessagesFromStoredEvents } = await import("./folding-V2K34EGN.js");
5192
- const { getPendingQuestionsForSession } = await import("./tools-CALGWIV2.js");
5198
+ const { getPendingQuestionsForSession } = await import("./tools-K3SNGBI2.js");
5193
5199
  const session = sessionManager.getSession(req.params.id);
5194
5200
  if (!session) {
5195
5201
  return res.status(404).json({ error: "Session not found" });
@@ -5208,8 +5214,8 @@ async function createServerHandle(config3) {
5208
5214
  if (!session) {
5209
5215
  return res.status(404).json({ error: "Session not found" });
5210
5216
  }
5211
- const { stopSessionExecution } = await import("./chat-handler-K3DWIGHG.js");
5212
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-CALGWIV2.js");
5217
+ const { stopSessionExecution } = await import("./chat-handler-IKLQ3ZUN.js");
5218
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-K3SNGBI2.js");
5213
5219
  sessionManager.clearMessageQueue(sessionId);
5214
5220
  stopSessionExecution(sessionId, sessionManager);
5215
5221
  abortSession(sessionId);
@@ -5395,7 +5401,7 @@ async function createServerHandle(config3) {
5395
5401
  if (!callId || approved === void 0) {
5396
5402
  return res.status(400).json({ error: "callId and approved are required" });
5397
5403
  }
5398
- const { providePathConfirmation } = await import("./tools-CALGWIV2.js");
5404
+ const { providePathConfirmation } = await import("./tools-K3SNGBI2.js");
5399
5405
  const result = providePathConfirmation(callId, approved, alwaysAllow);
5400
5406
  if (!result.found) {
5401
5407
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -5403,7 +5409,7 @@ async function createServerHandle(config3) {
5403
5409
  const { getEventStore: getEventStore2 } = await import("./events-CDQ4HASP.js");
5404
5410
  const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-V2K34EGN.js");
5405
5411
  const { createSessionStateMessage } = await import("./protocol-CTNE3ANP.js");
5406
- const { getPendingQuestionsForSession } = await import("./tools-CALGWIV2.js");
5412
+ const { getPendingQuestionsForSession } = await import("./tools-K3SNGBI2.js");
5407
5413
  const eventStore = getEventStore2();
5408
5414
  const events = eventStore.getEvents(sessionId);
5409
5415
  const messages = buildMessagesFromStoredEvents(events);
@@ -5424,7 +5430,7 @@ async function createServerHandle(config3) {
5424
5430
  if (!skip && typeof answer !== "string") {
5425
5431
  return res.status(400).json({ error: "answer is required when not skipping" });
5426
5432
  }
5427
- const { provideAnswer } = await import("./tools-CALGWIV2.js");
5433
+ const { provideAnswer } = await import("./tools-K3SNGBI2.js");
5428
5434
  const found = provideAnswer(callId, answer ?? "", skip ?? false);
5429
5435
  if (!found) {
5430
5436
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -5484,7 +5490,7 @@ async function createServerHandle(config3) {
5484
5490
  backend: activeProvider?.backend ?? llmClient.getBackend(),
5485
5491
  model: llmClient.getModel()
5486
5492
  };
5487
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-PUV4WG77.js");
5493
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-YGCZZNNV.js");
5488
5494
  runAgentTurn(
5489
5495
  {
5490
5496
  sessionManager,
@@ -5522,8 +5528,8 @@ async function createServerHandle(config3) {
5522
5528
  if (!session) {
5523
5529
  return res.status(404).json({ error: "Session not found" });
5524
5530
  }
5525
- const { stopSessionExecution } = await import("./chat-handler-K3DWIGHG.js");
5526
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-CALGWIV2.js");
5531
+ const { stopSessionExecution } = await import("./chat-handler-IKLQ3ZUN.js");
5532
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-K3SNGBI2.js");
5527
5533
  const queuedMessages = sessionManager.getQueueState(sessionId);
5528
5534
  sessionManager.clearMessageQueue(sessionId);
5529
5535
  stopSessionExecution(sessionId, sessionManager);
@@ -5817,7 +5823,7 @@ async function createServerHandle(config3) {
5817
5823
  const backend = req.query["backend"];
5818
5824
  if (!url) return res.status(400).json({ error: "url is required" });
5819
5825
  try {
5820
- const { fetchModelsWithContext } = await import("./provider-manager-7C3JVOLW.js");
5826
+ const { fetchModelsWithContext } = await import("./provider-manager-MAKXSL6L.js");
5821
5827
  const { getModelProfile: getModelProfile2 } = await import("./profiles-5J7F4BML.js");
5822
5828
  const models = await fetchModelsWithContext(
5823
5829
  url,
@@ -5887,7 +5893,7 @@ async function createServerHandle(config3) {
5887
5893
  }
5888
5894
  const { getModelProfile: getModelProfile2 } = await import("./profiles-5J7F4BML.js");
5889
5895
  const { getBackendCapabilities } = await import("./backend-P3GHHLHJ.js");
5890
- const { buildNonStreamingCreateParams } = await import("./client-pure-XHH4RRLB.js");
5896
+ const { buildNonStreamingCreateParams } = await import("./client-pure-NMLDKRDN.js");
5891
5897
  const { OpenAIHttpClient } = await import("./http-client-PIWB7BXK.js");
5892
5898
  const { ensureVersionPrefix } = await import("./url-utils-SAJP7AEX.js");
5893
5899
  const profile = getModelProfile2(model);
@@ -6146,7 +6152,7 @@ async function createServerHandle(config3) {
6146
6152
  });
6147
6153
  async function rebuildMcpTools() {
6148
6154
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-MOGEI6TP.js");
6149
- const { setMcpTools: setMcpTools2 } = await import("./tools-CALGWIV2.js");
6155
+ const { setMcpTools: setMcpTools2 } = await import("./tools-K3SNGBI2.js");
6150
6156
  const mcpTools = createMcpTools2(mcpManager);
6151
6157
  setMcpTools2(mcpTools);
6152
6158
  }
@@ -6381,13 +6387,13 @@ async function createServerHandle(config3) {
6381
6387
  })
6382
6388
  );
6383
6389
  app.get("/api/sessions/:id/background-processes", async (req, res) => {
6384
- const { getSessionProcesses } = await import("./manager-JXYRGR6B.js");
6390
+ const { getSessionProcesses } = await import("./manager-EHIQCIUP.js");
6385
6391
  const sessionId = req.params.id;
6386
6392
  const processes = getSessionProcesses(sessionId);
6387
6393
  res.json({ processes });
6388
6394
  });
6389
6395
  app.post("/api/sessions/:id/background-process/:processId/stop", async (req, res) => {
6390
- const { stopProcess } = await import("./manager-JXYRGR6B.js");
6396
+ const { stopProcess } = await import("./manager-EHIQCIUP.js");
6391
6397
  const sessionId = req.params.id;
6392
6398
  const processId = req.params.processId;
6393
6399
  const session = sessionManager.getSession(sessionId);
@@ -6530,7 +6536,7 @@ async function createServerHandle(config3) {
6530
6536
  const state = sessionManager.getContextState(sessionId);
6531
6537
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
6532
6538
  });
6533
- const { QueueProcessor } = await import("./processor-O2QW27BD.js");
6539
+ const { QueueProcessor } = await import("./processor-K6UPVMIP.js");
6534
6540
  const queueProcessor = new QueueProcessor({
6535
6541
  sessionManager,
6536
6542
  providerManager,
@@ -6574,7 +6580,7 @@ async function createServerHandle(config3) {
6574
6580
  await mcpManager.disconnectAll();
6575
6581
  const { stopAllInspectProxies } = await import("./inspect-proxy-OVEFBJ26.js");
6576
6582
  stopAllInspectProxies();
6577
- const { cleanupAllProcesses } = await import("./store-FXTCHBI4.js");
6583
+ const { cleanupAllProcesses } = await import("./store-SARB6V2N.js");
6578
6584
  cleanupAllProcesses();
6579
6585
  viteServer?.close();
6580
6586
  if (config3.globalConfigPath) {
@@ -6607,8 +6613,7 @@ async function createServer(config3) {
6607
6613
  }
6608
6614
 
6609
6615
  export {
6610
- VERSION,
6611
6616
  createServerHandle,
6612
6617
  createServer
6613
6618
  };
6614
- //# sourceMappingURL=chunk-WHVCGVQX.js.map
6619
+ //# sourceMappingURL=chunk-OLXHRPAD.js.map
@@ -8,7 +8,7 @@ import {
8
8
  removeProcess,
9
9
  startProcess,
10
10
  updateStatus
11
- } from "./chunk-PK2RMVMB.js";
11
+ } from "./chunk-I72ACQ6R.js";
12
12
  import {
13
13
  getPlatformShell
14
14
  } from "./chunk-X5DOUA3Z.js";
@@ -147,4 +147,4 @@ export {
147
147
  getSessionProcesses2 as getSessionProcesses,
148
148
  getProcessLogs
149
149
  };
150
- //# sourceMappingURL=chunk-TFCHWMOJ.js.map
150
+ //# sourceMappingURL=chunk-PVUBCGAT.js.map
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-YHEQTVFV.js";
13
13
  import {
14
14
  buildModelParams
15
- } from "./chunk-JHGKXQBO.js";
15
+ } from "./chunk-EZK7CGJ7.js";
16
16
  import {
17
17
  logger
18
18
  } from "./chunk-K44MW7JJ.js";
@@ -678,4 +678,4 @@ export {
678
678
  createChatDoneEvent,
679
679
  consumeStreamGenerator
680
680
  };
681
- //# sourceMappingURL=chunk-QFSDJIUS.js.map
681
+ //# sourceMappingURL=chunk-RKD2FML3.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  COMPACTION_PROMPT,
3
3
  createMessageStartEvent
4
- } from "./chunk-QFSDJIUS.js";
4
+ } from "./chunk-RKD2FML3.js";
5
5
  import {
6
6
  getCurrentWindowMessageOptions
7
7
  } from "./chunk-TFDK6VSG.js";
@@ -31,4 +31,4 @@ export {
31
31
  shouldCompact,
32
32
  getCompactionTarget
33
33
  };
34
- //# sourceMappingURL=chunk-YQ3MEZJL.js.map
34
+ //# sourceMappingURL=chunk-TQGGMWS6.js.map
@@ -10,7 +10,7 @@ import {
10
10
  loadAllAgentsDefault,
11
11
  processEventsForConversation,
12
12
  runTopLevelAgentLoop
13
- } from "./chunk-PVWAE43V.js";
13
+ } from "./chunk-Y4YESMVA.js";
14
14
  import {
15
15
  TurnMetrics,
16
16
  buildAgentReminder,
@@ -18,7 +18,7 @@ import {
18
18
  buildTopLevelSystemPrompt,
19
19
  createChatDoneEvent,
20
20
  createMessageStartEvent
21
- } from "./chunk-QFSDJIUS.js";
21
+ } from "./chunk-RKD2FML3.js";
22
22
  import {
23
23
  getCurrentContextWindowId,
24
24
  getCurrentWindowMessageOptions,
@@ -64,7 +64,7 @@ function resolveAgentDef(sessionManager, sessionId) {
64
64
  }
65
65
  async function buildCachedPrompt(sessionManager, sessionId, agentDef) {
66
66
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
67
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-CALGWIV2.js");
67
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-K3SNGBI2.js");
68
68
  const tools = getToolRegistryForAgent2(agentDef).definitions;
69
69
  const toolFingerprint = getToolFingerprint(tools);
70
70
  const allAgents = await loadAllAgentsDefault();
@@ -77,7 +77,7 @@ async function buildCachedPrompt(sessionManager, sessionId, agentDef) {
77
77
  async function computeSessionHash(sessionManager, sessionId) {
78
78
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
79
79
  const agentDef = await resolveAgentDef(sessionManager, sessionId);
80
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-CALGWIV2.js");
80
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-K3SNGBI2.js");
81
81
  const tools = getToolRegistryForAgent2(agentDef).definitions;
82
82
  const toolFingerprint = getToolFingerprint(tools);
83
83
  return computeDynamicContextHash(instructionContent, skills, toolFingerprint);
@@ -357,4 +357,4 @@ export {
357
357
  runChatTurn,
358
358
  runAgentTurn
359
359
  };
360
- //# sourceMappingURL=chunk-UTSSFPYA.js.map
360
+ //# sourceMappingURL=chunk-X7OCC37J.js.map
@@ -1,3 +1,10 @@
1
+ import {
2
+ listBranches
3
+ } from "./chunk-VLV3XWZS.js";
4
+ import {
5
+ AskUserInterrupt,
6
+ askUserTool
7
+ } from "./chunk-EU3WWTFH.js";
1
8
  import {
2
9
  COMPACTION_PROMPT,
3
10
  TurnMetrics,
@@ -10,7 +17,7 @@ import {
10
17
  createToolCallEvent,
11
18
  createToolResultEvent,
12
19
  streamLLMPure
13
- } from "./chunk-QFSDJIUS.js";
20
+ } from "./chunk-RKD2FML3.js";
14
21
  import {
15
22
  startInspectProxy
16
23
  } from "./chunk-4QBDV6LX.js";
@@ -27,21 +34,18 @@ import {
27
34
  spawnShellProcess,
28
35
  startProcessCommand,
29
36
  stopProcess
30
- } from "./chunk-TFCHWMOJ.js";
37
+ } from "./chunk-PVUBCGAT.js";
31
38
  import {
32
39
  getMaxPerSession,
33
40
  getSessionProcessCount,
34
41
  terminateProcessTree
35
- } from "./chunk-PK2RMVMB.js";
42
+ } from "./chunk-I72ACQ6R.js";
36
43
  import {
37
44
  createMcpTools
38
45
  } from "./chunk-NWO6GRYE.js";
39
46
  import {
40
47
  applyMcpServerUpdate
41
48
  } from "./chunk-UN26GIQG.js";
42
- import {
43
- listBranches
44
- } from "./chunk-VLV3XWZS.js";
45
49
  import {
46
50
  getCurrentContextWindowId,
47
51
  getCurrentWindowMessageOptions,
@@ -71,10 +75,6 @@ import {
71
75
  getSetting,
72
76
  setSetting
73
77
  } from "./chunk-XUPKS5FL.js";
74
- import {
75
- AskUserInterrupt,
76
- askUserTool
77
- } from "./chunk-EU3WWTFH.js";
78
78
  import {
79
79
  modelSupportsVision
80
80
  } from "./chunk-V4IE7HJY.js";
@@ -84,7 +84,7 @@ import {
84
84
  formatPdfErrorMessage,
85
85
  isPdfBuffer,
86
86
  processPdfContent
87
- } from "./chunk-JHGKXQBO.js";
87
+ } from "./chunk-EZK7CGJ7.js";
88
88
  import {
89
89
  logger
90
90
  } from "./chunk-K44MW7JJ.js";
@@ -1444,13 +1444,14 @@ async function checkRtkAvailability() {
1444
1444
  return rtkAvailable;
1445
1445
  }
1446
1446
  function hasBackgroundAmpersand(command) {
1447
- const trimmed = command.replace(/[;\s]+$/, "");
1448
- if (trimmed.endsWith("&")) {
1449
- const before = trimmed[trimmed.length - 2];
1450
- if (before === "&" || before === "|") return false;
1451
- return true;
1452
- }
1453
- return false;
1447
+ let processed = command.replace(/'[^']*'/g, " ").replace(/"[^"]*"/g, " ");
1448
+ processed = processed.replace(/\\./g, " ");
1449
+ processed = processed.replace(/&&/g, " ");
1450
+ processed = processed.replace(/\|&/g, " ");
1451
+ processed = processed.replace(/&>/g, " ");
1452
+ processed = processed.replace(/>&\d/g, " ");
1453
+ processed = processed.replace(/>&/g, " ");
1454
+ return processed.includes("&");
1454
1455
  }
1455
1456
  var runCommandTool = createTool(
1456
1457
  "run_command",
@@ -1598,6 +1599,32 @@ function executeCommand(command, cwd, timeout, signal, onProgress) {
1598
1599
  stderr += chunk;
1599
1600
  onProgress?.(`[stderr] ${chunk}`);
1600
1601
  });
1602
+ proc.on("exit", () => {
1603
+ if (aborted) {
1604
+ clearTimeout(timer);
1605
+ signal?.removeEventListener("abort", onAbort);
1606
+ let output = stdout.trim();
1607
+ if (output) output += "\n\n";
1608
+ output += "[interrupted by user]";
1609
+ resolve6({
1610
+ stdout: output,
1611
+ stderr: stderr.trim(),
1612
+ exitCode: 130
1613
+ });
1614
+ } else if (timedOut) {
1615
+ clearTimeout(timer);
1616
+ signal?.removeEventListener("abort", onAbort);
1617
+ let output = stdout.trim();
1618
+ if (output) output += "\n\n";
1619
+ output += `[Exit code: 124]
1620
+ [Process timed out after ${timeout}ms]`;
1621
+ resolve6({
1622
+ stdout: output,
1623
+ stderr: stderr.trim(),
1624
+ exitCode: 124
1625
+ });
1626
+ }
1627
+ });
1601
1628
  proc.on("close", (code) => {
1602
1629
  exited = true;
1603
1630
  clearTimeout(timer);
@@ -2523,6 +2550,7 @@ async function executeTools(assistantMsgId, toolCalls, ctx, append) {
2523
2550
  type: "chat.ask_user",
2524
2551
  data: { callId: error.callId, question: error.question, type: error.type, options: error.options }
2525
2552
  });
2553
+ append(createChatDoneEvent(assistantMsgId, "waiting_for_user"));
2526
2554
  const { awaitAnswer } = await import("./ask-TOBEA6KD.js");
2527
2555
  const answerPromise = awaitAnswer(error.callId);
2528
2556
  if (!answerPromise) {
@@ -2877,7 +2905,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
2877
2905
  sessionManager.setCurrentContextSize(sessionId, result.usage.promptTokens);
2878
2906
  if (!compacting) {
2879
2907
  const contextState2 = sessionManager.getContextState(sessionId);
2880
- const { shouldCompact, appendCompactionPrompt } = await import("./compactor-IPMMFFHM.js");
2908
+ const { shouldCompact, appendCompactionPrompt } = await import("./compactor-MXXF5WQR.js");
2881
2909
  if (shouldCompact(contextState2.currentTokens, contextState2.maxTokens, runtimeConfig.context.compactionThreshold)) {
2882
2910
  appendCompactionPrompt(sessionId, append);
2883
2911
  compacting = true;
@@ -3782,7 +3810,7 @@ var callSubAgentTool = {
3782
3810
  };
3783
3811
  }
3784
3812
  try {
3785
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-CALGWIV2.js");
3813
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-K3SNGBI2.js");
3786
3814
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3787
3815
  const turnMetrics = new TurnMetrics();
3788
3816
  const result = await executeSubAgent({
@@ -4781,7 +4809,7 @@ var mcpConfigTool = createTool(
4781
4809
  mcpNotifyChanged?.(sessionId);
4782
4810
  }
4783
4811
  async function rebuildTools() {
4784
- const { setMcpTools: setMcpTools2 } = await import("./tools-CALGWIV2.js");
4812
+ const { setMcpTools: setMcpTools2 } = await import("./tools-K3SNGBI2.js");
4785
4813
  const mcpTools = createMcpTools(mcpManagerForTools);
4786
4814
  setMcpTools2(mcpTools);
4787
4815
  }
@@ -5476,4 +5504,4 @@ export {
5476
5504
  getToolRegistryForAgent,
5477
5505
  createToolRegistry
5478
5506
  };
5479
- //# sourceMappingURL=chunk-PVWAE43V.js.map
5507
+ //# sourceMappingURL=chunk-Y4YESMVA.js.map
@@ -3,7 +3,7 @@ import {
3
3
  computeSessionHash,
4
4
  runAgentTurn,
5
5
  runChatTurn
6
- } from "./chunk-UTSSFPYA.js";
6
+ } from "./chunk-X7OCC37J.js";
7
7
  import {
8
8
  deleteItemFromDir,
9
9
  devServerManager,
@@ -13,22 +13,29 @@ import {
13
13
  jsonSerializer,
14
14
  loadAllAgentsDefault,
15
15
  saveItemToDir
16
- } from "./chunk-PVWAE43V.js";
16
+ } from "./chunk-Y4YESMVA.js";
17
+ import {
18
+ gitSpawnEnv
19
+ } from "./chunk-WGMJCFCE.js";
20
+ import {
21
+ getPendingQuestionsForSession,
22
+ provideAnswer
23
+ } from "./chunk-EU3WWTFH.js";
17
24
  import {
18
25
  appendCompactionPrompt
19
- } from "./chunk-YQ3MEZJL.js";
26
+ } from "./chunk-TQGGMWS6.js";
20
27
  import {
21
28
  TurnMetrics,
22
29
  createMessageStartEvent
23
- } from "./chunk-QFSDJIUS.js";
30
+ } from "./chunk-RKD2FML3.js";
24
31
  import {
25
32
  checkAborted,
26
33
  onProcessEvent,
27
34
  spawnShellProcess
28
- } from "./chunk-TFCHWMOJ.js";
35
+ } from "./chunk-PVUBCGAT.js";
29
36
  import {
30
- gitSpawnEnv
31
- } from "./chunk-WGMJCFCE.js";
37
+ terminateProcessTree
38
+ } from "./chunk-I72ACQ6R.js";
32
39
  import {
33
40
  getCurrentContextWindowId,
34
41
  getEventStore,
@@ -56,10 +63,6 @@ import {
56
63
  import {
57
64
  getPlatformShell
58
65
  } from "./chunk-X5DOUA3Z.js";
59
- import {
60
- getPendingQuestionsForSession,
61
- provideAnswer
62
- } from "./chunk-EU3WWTFH.js";
63
66
  import {
64
67
  logger
65
68
  } from "./chunk-K44MW7JJ.js";
@@ -548,13 +551,13 @@ function executeShellCommand(command, cwd, timeout, signal) {
548
551
  let killed = false;
549
552
  const timer = setTimeout(() => {
550
553
  killed = true;
551
- proc.kill("SIGTERM");
554
+ void terminateProcessTree(proc);
552
555
  resolve({ exitCode: 1, stdout, stderr: stderr + "\nCommand timed out", success: false });
553
556
  }, timeout);
554
557
  const onAbort = () => {
555
558
  if (!killed) {
556
559
  killed = true;
557
- proc.kill("SIGTERM");
560
+ void terminateProcessTree(proc, { immediate: true });
558
561
  clearTimeout(timer);
559
562
  reject(new Error("Aborted"));
560
563
  }
@@ -2158,4 +2161,4 @@ export {
2158
2161
  signalMcpReady,
2159
2162
  createWebSocketServer
2160
2163
  };
2161
- //# sourceMappingURL=chunk-46OR4W3L.js.map
2164
+ //# sourceMappingURL=chunk-Z42YTK3O.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-VFYNKALW.js";
4
+ } from "../chunk-6V7DU7ID.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-VFYNKALW.js";
4
+ } from "../chunk-6V7DU7ID.js";
5
5
  import "../chunk-XY3LESVZ.js";
6
6
  import {
7
7
  logger
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  createLLMClient
3
- } from "./chunk-E4POUD2M.js";
3
+ } from "./chunk-6XOA2WPU.js";
4
4
  import "./chunk-V4IE7HJY.js";
5
5
  import "./chunk-YHEQTVFV.js";
6
6
  import "./chunk-HNCM3D7Y.js";
7
- import "./chunk-JHGKXQBO.js";
7
+ import "./chunk-EZK7CGJ7.js";
8
8
  import "./chunk-ZO5EXQMG.js";
9
9
  import "./chunk-K44MW7JJ.js";
10
10
  import "./chunk-5WRI5ZAA.js";
11
11
  export {
12
12
  createLLMClient
13
13
  };
14
- //# sourceMappingURL=client-63U5CTPE.js.map
14
+ //# sourceMappingURL=client-SC6X65GY.js.map
@@ -6,8 +6,9 @@ import {
6
6
  convertTools,
7
7
  getThinking,
8
8
  mapFinishReason,
9
- parseToolArguments
10
- } from "./chunk-JHGKXQBO.js";
9
+ parseToolArguments,
10
+ resolveAttachmentsInMessages
11
+ } from "./chunk-EZK7CGJ7.js";
11
12
  import "./chunk-5WRI5ZAA.js";
12
13
  export {
13
14
  buildModelParams,
@@ -17,6 +18,7 @@ export {
17
18
  convertTools,
18
19
  getThinking,
19
20
  mapFinishReason,
20
- parseToolArguments
21
+ parseToolArguments,
22
+ resolveAttachmentsInMessages
21
23
  };
22
- //# sourceMappingURL=client-pure-XHH4RRLB.js.map
24
+ //# sourceMappingURL=client-pure-NMLDKRDN.js.map
@@ -2,8 +2,8 @@ import {
2
2
  appendCompactionPrompt,
3
3
  getCompactionTarget,
4
4
  shouldCompact
5
- } from "./chunk-YQ3MEZJL.js";
6
- import "./chunk-QFSDJIUS.js";
5
+ } from "./chunk-TQGGMWS6.js";
6
+ import "./chunk-RKD2FML3.js";
7
7
  import "./chunk-TFDK6VSG.js";
8
8
  import "./chunk-C3VLGVSQ.js";
9
9
  import "./chunk-X5DOUA3Z.js";
@@ -12,7 +12,7 @@ import "./chunk-GMXKJGJ2.js";
12
12
  import "./chunk-J2GP3J3X.js";
13
13
  import "./chunk-V4IE7HJY.js";
14
14
  import "./chunk-YHEQTVFV.js";
15
- import "./chunk-JHGKXQBO.js";
15
+ import "./chunk-EZK7CGJ7.js";
16
16
  import "./chunk-K44MW7JJ.js";
17
17
  import "./chunk-5WRI5ZAA.js";
18
18
  export {
@@ -20,4 +20,4 @@ export {
20
20
  getCompactionTarget,
21
21
  shouldCompact
22
22
  };
23
- //# sourceMappingURL=compactor-IPMMFFHM.js.map
23
+ //# sourceMappingURL=compactor-MXXF5WQR.js.map