openfox 2.0.73 → 2.0.75

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 (42) hide show
  1. package/dist/{chat-handler-LK5RUAGO.js → chat-handler-QLMBYRDY.js} +15 -14
  2. package/dist/{chunk-YD6NDTKF.js → chunk-5GOOSZX7.js} +1 -1
  3. package/dist/chunk-6COWK53A.js +7 -0
  4. package/dist/{chunk-GMF36EZ3.js → chunk-6ZMGWDOD.js} +87 -506
  5. package/dist/{chunk-2DCJERYX.js → chunk-CJ2AJ7HU.js} +3 -3
  6. package/dist/{chunk-O2BE7KVQ.js → chunk-J3VQBVGO.js} +8 -6
  7. package/dist/chunk-KEVRZWL3.js +495 -0
  8. package/dist/{chunk-TK4BZIXA.js → chunk-LKUAKQZY.js} +42 -20
  9. package/dist/{chunk-PYB2UEC3.js → chunk-LTFB2WWE.js} +4 -4
  10. package/dist/{chunk-CHPRGEY5.js → chunk-LUG5QTFC.js} +2 -2
  11. package/dist/{chunk-X2Y3AJPP.js → chunk-MF3UW36X.js} +10 -2
  12. package/dist/{chunk-EYXDM2FY.js → chunk-MIJX54CG.js} +395 -116
  13. package/dist/{chunk-NOU2QIL5.js → chunk-O3NUNU4H.js} +5 -2
  14. package/dist/{chunk-KKRLQH6F.js → chunk-PJQW6TYI.js} +17 -7
  15. package/dist/{chunk-6XKM25OT.js → chunk-YFFP4DR4.js} +4 -4
  16. package/dist/cli/dev.js +1 -1
  17. package/dist/cli/index.js +1 -1
  18. package/dist/{compactor-4UKYWC5F.js → compactor-AERNYEMP.js} +4 -4
  19. package/dist/{events-AEQ6GQXI.js → events-X353XCPN.js} +3 -3
  20. package/dist/install-CPOPMCSE.js +120 -0
  21. package/dist/{manager-24C2AXVF.js → manager-5GILDCVD.js} +3 -3
  22. package/dist/{orchestrator-RTZVMWQV.js → orchestrator-BIFTALBG.js} +13 -12
  23. package/dist/package.json +1 -1
  24. package/dist/path-security-3FAIPJSV.js +50 -0
  25. package/dist/{processor-3O26I7DO.js → processor-MQ47QSDR.js} +15 -14
  26. package/dist/{protocol-4QFU7WAI.js → protocol-EWEVW65B.js} +3 -3
  27. package/dist/{protocol-DGQWVFcP.d.ts → protocol-Sr6Jr4ZS.d.ts} +5 -2
  28. package/dist/{serve-I6K7A7RL.js → serve-UD27KOL2.js} +18 -17
  29. package/dist/server/index.d.ts +5 -1
  30. package/dist/server/index.js +16 -15
  31. package/dist/{server-G2J4RAXL.js → server-TJ3PP5EW.js} +15 -14
  32. package/dist/shared/index.d.ts +1 -1
  33. package/dist/shared/index.js +1 -1
  34. package/dist/{tools-X52DFUS6.js → tools-RZ464GUJ.js} +17 -15
  35. package/dist/{update-RJB4GPHE.js → update-MWIZH4P2.js} +12 -3
  36. package/dist/web/assets/{index-CmechlaK.css → index-BNVBxKnB.css} +1 -1
  37. package/dist/web/assets/{index-C7SW16F7.js → index-Bn4hwZeP.js} +74 -74
  38. package/dist/web/index.html +2 -2
  39. package/dist/web/sw.js +1 -1
  40. package/dist/{workspace-ET3FHZYN.js → workspace-6QTTUMMW.js} +4 -2
  41. package/package.json +1 -1
  42. package/dist/chunk-NE7OWIIO.js +0 -7
@@ -3,7 +3,7 @@ import {
3
3
  computeSessionHash,
4
4
  runAgentTurn,
5
5
  runChatTurn
6
- } from "./chunk-O2BE7KVQ.js";
6
+ } from "./chunk-J3VQBVGO.js";
7
7
  import {
8
8
  deleteItemFromDir,
9
9
  devServerManager,
@@ -13,7 +13,7 @@ import {
13
13
  jsonSerializer,
14
14
  loadAllAgentsDefault,
15
15
  saveItemToDir
16
- } from "./chunk-GMF36EZ3.js";
16
+ } from "./chunk-6ZMGWDOD.js";
17
17
  import {
18
18
  gitSpawnEnv
19
19
  } from "./chunk-WGMJCFCE.js";
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-EU3WWTFH.js";
24
24
  import {
25
25
  appendCompactionPrompt
26
- } from "./chunk-CHPRGEY5.js";
26
+ } from "./chunk-LUG5QTFC.js";
27
27
  import {
28
28
  TurnMetrics,
29
29
  createMessageStartEvent
@@ -32,7 +32,10 @@ import {
32
32
  checkAborted,
33
33
  onProcessEvent,
34
34
  spawnShellProcess
35
- } from "./chunk-PYB2UEC3.js";
35
+ } from "./chunk-LTFB2WWE.js";
36
+ import {
37
+ getPlatformShell
38
+ } from "./chunk-S7O77CVO.js";
36
39
  import {
37
40
  killProcessTree,
38
41
  terminateProcessTree
@@ -41,7 +44,7 @@ import {
41
44
  getCurrentContextWindowId,
42
45
  getEventStore,
43
46
  getRuntimeConfig
44
- } from "./chunk-6XKM25OT.js";
47
+ } from "./chunk-YFFP4DR4.js";
45
48
  import {
46
49
  buildMessagesFromStoredEvents,
47
50
  foldPendingConfirmations
@@ -60,10 +63,7 @@ import {
60
63
  parseClientMessage,
61
64
  serializeServerMessage,
62
65
  storedEventToServerMessage
63
- } from "./chunk-NOU2QIL5.js";
64
- import {
65
- getPlatformShell
66
- } from "./chunk-S7O77CVO.js";
66
+ } from "./chunk-O3NUNU4H.js";
67
67
  import {
68
68
  logger
69
69
  } from "./chunk-K44MW7JJ.js";
@@ -72,7 +72,7 @@ import {
72
72
  } from "./chunk-VUQCQXXJ.js";
73
73
  import {
74
74
  createServerMessage
75
- } from "./chunk-YD6NDTKF.js";
75
+ } from "./chunk-5GOOSZX7.js";
76
76
  import {
77
77
  getGlobalConfigDir
78
78
  } from "./chunk-CQGTEGKL.js";
@@ -1485,13 +1485,6 @@ function createWebSocketServer(httpServer, _config, getLLMClient, getActiveProvi
1485
1485
  const isSubscribedToSession = (client, sessionId) => {
1486
1486
  return client.activeSessionId === sessionId;
1487
1487
  };
1488
- const broadcastForSession = (sessionId, msg) => {
1489
- for (const [clientWs, client] of clients) {
1490
- if (isSubscribedToSession(client, sessionId) && clientWs.readyState === WebSocket2.OPEN) {
1491
- clientWs.send(serializeServerMessage({ ...msg, sessionId }));
1492
- }
1493
- }
1494
- };
1495
1488
  function enqueueSend(client, data, seq) {
1496
1489
  if (client.sendQueue.length >= MAX_SEND_QUEUE_SIZE) {
1497
1490
  logger.warn("WebSocket send queue full, dropping message", {
@@ -1598,6 +1591,30 @@ function createWebSocketServer(httpServer, _config, getLLMClient, getActiveProvi
1598
1591
  }
1599
1592
  }
1600
1593
  };
1594
+ const broadcastForSession = (sessionId, msg) => {
1595
+ const session = sessionManager.getSession(sessionId);
1596
+ const projectId = session?.projectId;
1597
+ for (const [clientWs, client] of clients) {
1598
+ if (clientWs.readyState !== WebSocket2.OPEN) continue;
1599
+ if (!isSubscribedToSession(client, sessionId)) continue;
1600
+ const seq = client.lastSentSeq + 1;
1601
+ enqueueSend(client, serializeServerMessage({ ...msg, sessionId }), seq);
1602
+ }
1603
+ if (msg.type === "chat.path_confirmation" && projectId) {
1604
+ for (const [clientWs, client] of clients) {
1605
+ if (clientWs.readyState !== WebSocket2.OPEN) continue;
1606
+ if (isSubscribedToSession(client, sessionId)) continue;
1607
+ const clientProjectId = client.activeSessionId ? sessionManager.getSession(client.activeSessionId)?.projectId : void 0;
1608
+ if (clientProjectId !== projectId) continue;
1609
+ const seq = client.lastSentSeq + 1;
1610
+ enqueueSend(
1611
+ client,
1612
+ serializeServerMessage({ type: "session.confirmation_pending", sessionId, payload: msg.payload }),
1613
+ seq
1614
+ );
1615
+ }
1616
+ }
1617
+ };
1601
1618
  devServerManager.onOutput((workdir, chunk) => {
1602
1619
  broadcastAll(
1603
1620
  createServerMessage("devServer.output", {
@@ -1631,7 +1648,12 @@ function createWebSocketServer(httpServer, _config, getLLMClient, getActiveProvi
1631
1648
  workspaceChanged = true;
1632
1649
  const prevWorkdir = client.activeWorkdir;
1633
1650
  client.activeWorkdir = effectiveWorkdir;
1634
- if (prevWorkdir) moduleStopGitPolling(prevWorkdir);
1651
+ if (prevWorkdir) {
1652
+ const hasOtherClients = [...clients.values()].some((c) => c !== client && c.activeWorkdir === prevWorkdir);
1653
+ if (!hasOtherClients) {
1654
+ moduleStopGitPolling(prevWorkdir);
1655
+ }
1656
+ }
1635
1657
  }
1636
1658
  }
1637
1659
  if (effectiveWorkdir) moduleStartGitPolling(effectiveWorkdir);
@@ -2085,7 +2107,7 @@ ${content}` : workflowInfo;
2085
2107
  }
2086
2108
  } : {},
2087
2109
  signal: controller.signal,
2088
- onMessage: (msg) => sendForSession(sessionId, msg)
2110
+ onMessage: (msg) => _broadcastForSession(sessionId, msg)
2089
2111
  // For path confirmation dialogs
2090
2112
  }).catch((error) => {
2091
2113
  if (error instanceof Error && error.message === "Aborted") {
@@ -2172,4 +2194,4 @@ export {
2172
2194
  signalMcpReady,
2173
2195
  createWebSocketServer
2174
2196
  };
2175
- //# sourceMappingURL=chunk-TK4BZIXA.js.map
2197
+ //# sourceMappingURL=chunk-LKUAKQZY.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ getPlatformShell
3
+ } from "./chunk-S7O77CVO.js";
1
4
  import {
2
5
  appendLog,
3
6
  createProcess,
@@ -9,9 +12,6 @@ import {
9
12
  startProcess,
10
13
  updateStatus
11
14
  } from "./chunk-I72ACQ6R.js";
12
- import {
13
- getPlatformShell
14
- } from "./chunk-S7O77CVO.js";
15
15
 
16
16
  // src/server/utils/shell.ts
17
17
  import { spawn } from "child_process";
@@ -153,4 +153,4 @@ export {
153
153
  getSessionProcesses2 as getSessionProcesses,
154
154
  getProcessLogs
155
155
  };
156
- //# sourceMappingURL=chunk-PYB2UEC3.js.map
156
+ //# sourceMappingURL=chunk-LTFB2WWE.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-XWBNYU2L.js";
5
5
  import {
6
6
  getCurrentWindowMessageOptions
7
- } from "./chunk-6XKM25OT.js";
7
+ } from "./chunk-YFFP4DR4.js";
8
8
 
9
9
  // src/server/context/compactor.ts
10
10
  function appendCompactionPrompt(sessionId, append) {
@@ -31,4 +31,4 @@ export {
31
31
  shouldCompact,
32
32
  getCompactionTarget
33
33
  };
34
- //# sourceMappingURL=chunk-CHPRGEY5.js.map
34
+ //# sourceMappingURL=chunk-LUG5QTFC.js.map
@@ -8,7 +8,7 @@ import {
8
8
  // src/server/git/workspace.ts
9
9
  import { spawn, execSync } from "child_process";
10
10
  import { mkdir as mkdir2 } from "fs/promises";
11
- import { resolve as resolve2, join as join2 } from "path";
11
+ import { resolve as resolve2, join as join2, isAbsolute } from "path";
12
12
  import { homedir, platform } from "os";
13
13
 
14
14
  // src/server/git/workspace-config.ts
@@ -106,6 +106,13 @@ async function getCommitsBehind(cwd, branch) {
106
106
  function validateRef(cwd, name) {
107
107
  return runGit(cwd, ["check-ref-format", `refs/heads/${name}`]);
108
108
  }
109
+ function validateWorkspaceName(name) {
110
+ if (!name || typeof name !== "string") throw new Error("Workspace name is required");
111
+ if (name.includes("/") || name.includes("\\")) throw new Error("Workspace name cannot contain path separators");
112
+ if (name === "." || name === "..") throw new Error('Workspace name cannot be "." or ".."');
113
+ if (isAbsolute(name)) throw new Error("Workspace name cannot be an absolute path");
114
+ if (name.length > 255) throw new Error("Workspace name is too long");
115
+ }
109
116
  function checkoutBranch(cwd, name) {
110
117
  return runGit(cwd, ["checkout", name]);
111
118
  }
@@ -206,6 +213,7 @@ export {
206
213
  listBranches,
207
214
  getCommitsBehind,
208
215
  validateRef,
216
+ validateWorkspaceName,
209
217
  checkoutBranch,
210
218
  createBranch,
211
219
  workspaceExists,
@@ -213,4 +221,4 @@ export {
213
221
  ensureWorkspace,
214
222
  deleteWorkspace
215
223
  };
216
- //# sourceMappingURL=chunk-X2Y3AJPP.js.map
224
+ //# sourceMappingURL=chunk-MF3UW36X.js.map