openfox 2.0.87 → 2.0.88

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 (53) hide show
  1. package/CHANGELOG.md +1048 -0
  2. package/dist/CHANGELOG.md +1048 -0
  3. package/dist/{chat-handler-AVGJQSYW.js → chat-handler-HB3XN6YE.js} +13 -13
  4. package/dist/{chunk-L4S5N3WV.js → chunk-2DWWLQVQ.js} +2 -2
  5. package/dist/{chunk-FY6FQTNN.js → chunk-5UHHGQ7Q.js} +4 -4
  6. package/dist/{chunk-VGYV5EH6.js → chunk-6YJ5W4KV.js} +75 -59
  7. package/dist/{chunk-BKH4SIWV.js → chunk-76ADL7EV.js} +7 -7
  8. package/dist/{chunk-5W2FIWDH.js → chunk-B53QORTX.js} +2 -2
  9. package/dist/{chunk-STFIEU5F.js → chunk-BNQTJFHQ.js} +3 -1
  10. package/dist/{chunk-FYYPQ27K.js → chunk-BOO6VR2T.js} +2 -2
  11. package/dist/{chunk-V5LOH363.js → chunk-DZGVDT2F.js} +4 -4
  12. package/dist/{chunk-B6VZS5SC.js → chunk-EWUDWUE3.js} +10 -10
  13. package/dist/chunk-FGK7QLCZ.js +7 -0
  14. package/dist/{chunk-3JYPDZT2.js → chunk-GLRBRQGJ.js} +2 -2
  15. package/dist/{chunk-CK7G2JLY.js → chunk-GO54OTGE.js} +11 -11
  16. package/dist/{chunk-ACL4YUJH.js → chunk-LD46ASP5.js} +2 -2
  17. package/dist/{chunk-SBVKT4GT.js → chunk-QMSTCWYK.js} +12 -12
  18. package/dist/{chunk-M6X72DYZ.js → chunk-SUT4OSXR.js} +3 -3
  19. package/dist/{chunk-OHKBGMLO.js → chunk-TW3PNLMA.js} +2 -2
  20. package/dist/{chunk-H765CIHN.js → chunk-TXGW36XL.js} +2 -2
  21. package/dist/{chunk-WVMOGE7U.js → chunk-V4V6UGZZ.js} +3 -3
  22. package/dist/{chunk-MTZ3PC6K.js → chunk-WWOZHM6D.js} +2 -2
  23. package/dist/{chunk-W23S3TU5.js → chunk-XNPVKFOJ.js} +2 -2
  24. package/dist/cli/dev.js +1 -1
  25. package/dist/cli/index.js +1 -1
  26. package/dist/{client-C2P67MA4.js → client-W3AYWMJM.js} +4 -4
  27. package/dist/{compactor-2YT66FDZ.js → compactor-7JU5CXSG.js} +9 -9
  28. package/dist/{events-OEDAFNEI.js → events-Z3AJVFSP.js} +6 -6
  29. package/dist/{folding-FGTCP73N.js → folding-LWKKC4RQ.js} +4 -4
  30. package/dist/{http-client-I52X7GQB.js → http-client-LITXNO6R.js} +3 -3
  31. package/dist/{manager-TD2UT62O.js → manager-657CWC5Z.js} +4 -4
  32. package/dist/{orchestrator-AGJ7EMFZ.js → orchestrator-KTOC65UU.js} +12 -12
  33. package/dist/package.json +3 -2
  34. package/dist/{path-security-DWL3R2SF.js → path-security-XXWK5ZCL.js} +7 -7
  35. package/dist/{platform-OYKGQ7Z3.js → platform-MVVEGKPE.js} +3 -3
  36. package/dist/{processor-VCDVG7RV.js → processor-3UTJE7EQ.js} +13 -13
  37. package/dist/{provider-YNYYAR6C.js → provider-YRNABOCC.js} +5 -5
  38. package/dist/{provider-manager-3DW3A2VC.js → provider-manager-W4MEPXB5.js} +5 -5
  39. package/dist/{serve-IGWUSQDZ.js → serve-AZ5QSSHE.js} +19 -19
  40. package/dist/server/index.js +18 -18
  41. package/dist/{server-3X46OIYC.js → server-T4YPLZDF.js} +14 -14
  42. package/dist/{sessions-V3BF2OTU.js → sessions-KDQ5TMHX.js} +4 -4
  43. package/dist/{settings-AGNYWEIE.js → settings-SM3K6S74.js} +2 -2
  44. package/dist/{tools-X65P65KF.js → tools-A2XBFPRO.js} +11 -11
  45. package/dist/{update-6GITMIFG.js → update-4D76LEVO.js} +2 -2
  46. package/dist/web/assets/index-BRy1cx3_.js +306 -0
  47. package/dist/web/assets/index-D8gCHkwE.css +32 -0
  48. package/dist/web/index.html +2 -2
  49. package/dist/web/sw.js +1 -1
  50. package/package.json +3 -2
  51. package/dist/chunk-3USWJ6MR.js +0 -7
  52. package/dist/web/assets/index-CsWZt1m8.css +0 -32
  53. package/dist/web/assets/index-D-r8G7Tf.js +0 -305
@@ -2,39 +2,39 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-BKH4SIWV.js";
5
+ } from "./chunk-76ADL7EV.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-B6VZS5SC.js";
9
- import "./chunk-SBVKT4GT.js";
10
- import "./chunk-3JYPDZT2.js";
8
+ } from "./chunk-EWUDWUE3.js";
9
+ import "./chunk-QMSTCWYK.js";
10
+ import "./chunk-GLRBRQGJ.js";
11
11
  import "./chunk-NWO6GRYE.js";
12
12
  import "./chunk-VPFUXGMM.js";
13
13
  import "./chunk-7PZBCATU.js";
14
14
  import "./chunk-J7GAZGZT.js";
15
- import "./chunk-5W2FIWDH.js";
15
+ import "./chunk-B53QORTX.js";
16
16
  import {
17
17
  createChatMessageMessage,
18
18
  createPhaseChangedMessage,
19
19
  createSessionRunningMessage
20
20
  } from "./chunk-47WNBFDO.js";
21
21
  import "./chunk-EU3WWTFH.js";
22
- import "./chunk-H765CIHN.js";
23
- import "./chunk-W23S3TU5.js";
22
+ import "./chunk-TXGW36XL.js";
23
+ import "./chunk-XNPVKFOJ.js";
24
24
  import "./chunk-EYIWUONA.js";
25
25
  import "./chunk-6AE3JPDJ.js";
26
26
  import "./chunk-I72ACQ6R.js";
27
27
  import {
28
28
  getEventStore
29
- } from "./chunk-V5LOH363.js";
30
- import "./chunk-OHKBGMLO.js";
31
- import "./chunk-L4S5N3WV.js";
32
- import "./chunk-FYYPQ27K.js";
29
+ } from "./chunk-DZGVDT2F.js";
30
+ import "./chunk-TW3PNLMA.js";
31
+ import "./chunk-2DWWLQVQ.js";
32
+ import "./chunk-BOO6VR2T.js";
33
33
  import "./chunk-J2GP3J3X.js";
34
34
  import "./chunk-V4IE7HJY.js";
35
35
  import "./chunk-YHEQTVFV.js";
36
36
  import "./chunk-RMXPVQP4.js";
37
- import "./chunk-STFIEU5F.js";
37
+ import "./chunk-BNQTJFHQ.js";
38
38
  import "./chunk-RGUUZD5B.js";
39
39
  import "./chunk-K44MW7JJ.js";
40
40
  import "./chunk-U7RLUZBP.js";
@@ -161,4 +161,4 @@ export {
161
161
  startChatSession,
162
162
  stopSessionExecution
163
163
  };
164
- //# sourceMappingURL=chat-handler-AVGJQSYW.js.map
164
+ //# sourceMappingURL=chat-handler-HB3XN6YE.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveDefaultAgentId
3
- } from "./chunk-FYYPQ27K.js";
3
+ } from "./chunk-BOO6VR2T.js";
4
4
  import {
5
5
  getDatabase
6
6
  } from "./chunk-RGUUZD5B.js";
@@ -329,4 +329,4 @@ export {
329
329
  updateSessionBranch,
330
330
  deleteSession
331
331
  };
332
- //# sourceMappingURL=chunk-L4S5N3WV.js.map
332
+ //# sourceMappingURL=chunk-2DWWLQVQ.js.map
@@ -163,7 +163,7 @@ async function runCli(options) {
163
163
  break;
164
164
  }
165
165
  case "provider": {
166
- const { runProviderCommand } = await import("./provider-YNYYAR6C.js");
166
+ const { runProviderCommand } = await import("./provider-YRNABOCC.js");
167
167
  const [, subcommand] = positionals;
168
168
  await runProviderCommand(mode, subcommand);
169
169
  break;
@@ -200,7 +200,7 @@ async function runCli(options) {
200
200
  break;
201
201
  }
202
202
  case "update": {
203
- const { runUpdate } = await import("./update-6GITMIFG.js");
203
+ const { runUpdate } = await import("./update-4D76LEVO.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-IGWUSQDZ.js");
216
+ const { runServe } = await import("./serve-AZ5QSSHE.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-FY6FQTNN.js.map
228
+ //# sourceMappingURL=chunk-5UHHGQ7Q.js.map
@@ -21,7 +21,7 @@ import {
21
21
  tokenFromPassword,
22
22
  verifyPassword,
23
23
  workflowExists
24
- } from "./chunk-CK7G2JLY.js";
24
+ } from "./chunk-GO54OTGE.js";
25
25
  import {
26
26
  createToolRegistry,
27
27
  deleteOwnedSkill,
@@ -47,7 +47,7 @@ import {
47
47
  setSkillEnabled,
48
48
  skillExists,
49
49
  updateOwnedSkill
50
- } from "./chunk-SBVKT4GT.js";
50
+ } from "./chunk-QMSTCWYK.js";
51
51
  import {
52
52
  createMcpTools
53
53
  } from "./chunk-NWO6GRYE.js";
@@ -77,17 +77,17 @@ import {
77
77
  ALWAYS_ALLOWED,
78
78
  ALWAYS_ALLOWED_FOR_SUBAGENTS,
79
79
  TOP_LEVEL_ONLY_TOOLS
80
- } from "./chunk-H765CIHN.js";
80
+ } from "./chunk-TXGW36XL.js";
81
81
  import {
82
82
  getPathSeparator,
83
83
  isAbsolutePath
84
- } from "./chunk-W23S3TU5.js";
84
+ } from "./chunk-XNPVKFOJ.js";
85
85
  import {
86
86
  getProject
87
87
  } from "./chunk-6AE3JPDJ.js";
88
88
  import {
89
89
  VERSION
90
- } from "./chunk-3USWJ6MR.js";
90
+ } from "./chunk-FGK7QLCZ.js";
91
91
  import {
92
92
  emitAssistantMessageStart,
93
93
  emitContextState,
@@ -102,7 +102,7 @@ import {
102
102
  getEventStore,
103
103
  getSessionState,
104
104
  initEventStore
105
- } from "./chunk-V5LOH363.js";
105
+ } from "./chunk-DZGVDT2F.js";
106
106
  import {
107
107
  createSession,
108
108
  deleteSession,
@@ -117,7 +117,7 @@ import {
117
117
  updateSessionProvider,
118
118
  updateSessionRunning,
119
119
  updateSessionWorkdir
120
- } from "./chunk-L4S5N3WV.js";
120
+ } from "./chunk-2DWWLQVQ.js";
121
121
  import {
122
122
  agentExists,
123
123
  deleteAgent,
@@ -139,13 +139,13 @@ import {
139
139
  saveAgentToProject,
140
140
  saveItemToDir,
141
141
  setRuntimeConfig
142
- } from "./chunk-FYYPQ27K.js";
142
+ } from "./chunk-BOO6VR2T.js";
143
143
  import {
144
144
  createProviderManager,
145
145
  detectModel,
146
146
  getLlmStatus,
147
147
  parseDefaultModelSelection
148
- } from "./chunk-M6X72DYZ.js";
148
+ } from "./chunk-SUT4OSXR.js";
149
149
  import {
150
150
  getModelProfile
151
151
  } from "./chunk-V4IE7HJY.js";
@@ -159,12 +159,12 @@ import {
159
159
  SessionNotFoundError,
160
160
  WorkspaceInUseError,
161
161
  proxyFetch
162
- } from "./chunk-ACL4YUJH.js";
162
+ } from "./chunk-LD46ASP5.js";
163
163
  import {
164
164
  deleteSetting,
165
165
  getSetting,
166
166
  setSetting
167
- } from "./chunk-STFIEU5F.js";
167
+ } from "./chunk-BNQTJFHQ.js";
168
168
  import {
169
169
  initDatabase
170
170
  } from "./chunk-RGUUZD5B.js";
@@ -5422,14 +5422,14 @@ async function createServerHandle(config3) {
5422
5422
  setMcpTools(mcpTools);
5423
5423
  logger.info("MCP tools registered", { count: mcpTools.length });
5424
5424
  }
5425
- const { signalMcpReady } = await import("./server-3X46OIYC.js");
5425
+ const { signalMcpReady } = await import("./server-T4YPLZDF.js");
5426
5426
  signalMcpReady();
5427
5427
  });
5428
5428
  const app = express();
5429
5429
  app.use(cors());
5430
5430
  const authMiddleware = async (req, res, next) => {
5431
5431
  const path = req.path;
5432
- const publicPaths = ["/health", "/auth", "/auth/login", "/auto-update/check"];
5432
+ const publicPaths = ["/health", "/auth", "/auth/login", "/auto-update/check", "/changelog"];
5433
5433
  if (publicPaths.includes(path)) {
5434
5434
  return next();
5435
5435
  }
@@ -5448,6 +5448,22 @@ async function createServerHandle(config3) {
5448
5448
  app.get("/api/health", (_req, res) => {
5449
5449
  res.json({ status: "ok", timestamp: (/* @__PURE__ */ new Date()).toISOString() });
5450
5450
  });
5451
+ app.get("/api/changelog", async (_req, res) => {
5452
+ try {
5453
+ const fs = await import("fs");
5454
+ const path = await import("path");
5455
+ const { fileURLToPath: fileURLToPath8 } = await import("url");
5456
+ const dirname9 = path.dirname(fileURLToPath8(import.meta.url));
5457
+ let changelogPath = path.resolve(dirname9, "../CHANGELOG.md");
5458
+ if (!fs.existsSync(changelogPath)) {
5459
+ changelogPath = path.resolve(dirname9, "../../CHANGELOG.md");
5460
+ }
5461
+ const content = fs.readFileSync(changelogPath, "utf-8");
5462
+ res.json({ content });
5463
+ } catch {
5464
+ res.json({ content: "# Changelog\n\nUnable to load changelog." });
5465
+ }
5466
+ });
5451
5467
  app.get("/api/auth", (_req, res) => {
5452
5468
  const authRequired = requiresAuth();
5453
5469
  const hasPwd = hasPassword();
@@ -5599,7 +5615,7 @@ async function createServerHandle(config3) {
5599
5615
  }
5600
5616
  try {
5601
5617
  await checkoutBranch(project.workdir, branch);
5602
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-V3BF2OTU.js");
5618
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-KDQ5TMHX.js");
5603
5619
  const allSessions = sessionManager.listSessions();
5604
5620
  for (const s of allSessions) {
5605
5621
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -5635,7 +5651,7 @@ async function createServerHandle(config3) {
5635
5651
  );
5636
5652
  }
5637
5653
  await createBranch(project.workdir, name, sb);
5638
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-V3BF2OTU.js");
5654
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-KDQ5TMHX.js");
5639
5655
  const allSessions = sessionManager.listSessions();
5640
5656
  for (const s of allSessions) {
5641
5657
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -5667,7 +5683,7 @@ async function createServerHandle(config3) {
5667
5683
  if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
5668
5684
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
5669
5685
  const { checkoutBranch, validateRef: validateRef2 } = await import("./workspace-MMV6V5P4.js");
5670
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-V3BF2OTU.js");
5686
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-KDQ5TMHX.js");
5671
5687
  try {
5672
5688
  await validateRef2(effectiveWorkdir, branch);
5673
5689
  await checkoutBranch(effectiveWorkdir, branch);
@@ -5710,7 +5726,7 @@ All file and git operations should use this branch.
5710
5726
  if (!name || typeof name !== "string") return res.status(400).json({ error: "name is required" });
5711
5727
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
5712
5728
  const { validateRef: validateRef2 } = await import("./workspace-MMV6V5P4.js");
5713
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-V3BF2OTU.js");
5729
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-KDQ5TMHX.js");
5714
5730
  try {
5715
5731
  await validateRef2(effectiveWorkdir, name);
5716
5732
  if (sourceBranch) {
@@ -5765,8 +5781,8 @@ All file and git operations should use this branch.
5765
5781
  res.json({ workspaces: workspacesList });
5766
5782
  });
5767
5783
  app.get("/api/sessions", async (req, res) => {
5768
- const { getRecentUserPromptsForSession } = await import("./events-OEDAFNEI.js");
5769
- const { getPendingConfirmationsBySession } = await import("./path-security-DWL3R2SF.js");
5784
+ const { getRecentUserPromptsForSession } = await import("./events-Z3AJVFSP.js");
5785
+ const { getPendingConfirmationsBySession } = await import("./path-security-XXWK5ZCL.js");
5770
5786
  const projectId = req.query["projectId"];
5771
5787
  const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
5772
5788
  const offset = parseInt(req.query["offset"]) || 0;
@@ -5872,10 +5888,10 @@ All file and git operations should use this branch.
5872
5888
  }
5873
5889
  });
5874
5890
  app.get("/api/sessions/:id", async (req, res) => {
5875
- const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-OEDAFNEI.js");
5876
- const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-FGTCP73N.js");
5877
- const { getPendingQuestionsForSession } = await import("./tools-X65P65KF.js");
5878
- const { getMaxVisibleItems } = await import("./settings-AGNYWEIE.js");
5891
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-Z3AJVFSP.js");
5892
+ const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-LWKKC4RQ.js");
5893
+ const { getPendingQuestionsForSession } = await import("./tools-A2XBFPRO.js");
5894
+ const { getMaxVisibleItems } = await import("./settings-SM3K6S74.js");
5879
5895
  const session = sessionManager.getSession(req.params.id);
5880
5896
  if (!session) {
5881
5897
  return res.status(404).json({ error: "Session not found" });
@@ -5905,8 +5921,8 @@ All file and git operations should use this branch.
5905
5921
  if (!session) {
5906
5922
  return res.status(404).json({ error: "Session not found" });
5907
5923
  }
5908
- const { stopSessionExecution } = await import("./chat-handler-AVGJQSYW.js");
5909
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-X65P65KF.js");
5924
+ const { stopSessionExecution } = await import("./chat-handler-HB3XN6YE.js");
5925
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-A2XBFPRO.js");
5910
5926
  sessionManager.clearMessageQueue(sessionId);
5911
5927
  stopSessionExecution(sessionId, sessionManager);
5912
5928
  abortSession(sessionId);
@@ -5935,9 +5951,9 @@ All file and git operations should use this branch.
5935
5951
  res.json({ success: true });
5936
5952
  });
5937
5953
  app.post("/api/sessions/:id/provider", async (req, res) => {
5938
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-OEDAFNEI.js");
5939
- const { buildMessagesFromStoredEvents } = await import("./folding-FGTCP73N.js");
5940
- const { getMaxVisibleItems } = await import("./settings-AGNYWEIE.js");
5954
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-Z3AJVFSP.js");
5955
+ const { buildMessagesFromStoredEvents } = await import("./folding-LWKKC4RQ.js");
5956
+ const { getMaxVisibleItems } = await import("./settings-SM3K6S74.js");
5941
5957
  const sessionId = req.params.id;
5942
5958
  const session = sessionManager.getSession(sessionId);
5943
5959
  if (!session) {
@@ -6050,9 +6066,9 @@ All file and git operations should use this branch.
6050
6066
  res.json({ success: true });
6051
6067
  });
6052
6068
  app.put("/api/sessions/:id/mode", async (req, res) => {
6053
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-OEDAFNEI.js");
6054
- const { buildMessagesFromStoredEvents } = await import("./folding-FGTCP73N.js");
6055
- const { getMaxVisibleItems } = await import("./settings-AGNYWEIE.js");
6069
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-Z3AJVFSP.js");
6070
+ const { buildMessagesFromStoredEvents } = await import("./folding-LWKKC4RQ.js");
6071
+ const { getMaxVisibleItems } = await import("./settings-SM3K6S74.js");
6056
6072
  const sessionId = req.params.id;
6057
6073
  const session = sessionManager.getSession(sessionId);
6058
6074
  if (!session) {
@@ -6113,7 +6129,7 @@ All file and git operations should use this branch.
6113
6129
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
6114
6130
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
6115
6131
  }
6116
- const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-X65P65KF.js");
6132
+ const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-A2XBFPRO.js");
6117
6133
  const pendingSessionId = getConfirmationSessionId(callId);
6118
6134
  if (!pendingSessionId) {
6119
6135
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -6125,11 +6141,11 @@ All file and git operations should use this branch.
6125
6141
  if (!result.found) {
6126
6142
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
6127
6143
  }
6128
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-OEDAFNEI.js");
6129
- const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-FGTCP73N.js");
6144
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-Z3AJVFSP.js");
6145
+ const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-LWKKC4RQ.js");
6130
6146
  const { createSessionStateMessage } = await import("./protocol-BUA2W2KM.js");
6131
- const { getPendingQuestionsForSession } = await import("./tools-X65P65KF.js");
6132
- const { getMaxVisibleItems } = await import("./settings-AGNYWEIE.js");
6147
+ const { getPendingQuestionsForSession } = await import("./tools-A2XBFPRO.js");
6148
+ const { getMaxVisibleItems } = await import("./settings-SM3K6S74.js");
6133
6149
  const eventStore = getEventStore2();
6134
6150
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
6135
6151
  const events = combineEvents(sessionId, snapshot, eventsSinceSnapshot);
@@ -6165,7 +6181,7 @@ All file and git operations should use this branch.
6165
6181
  if (!skip && typeof answer !== "string") {
6166
6182
  return res.status(400).json({ error: "answer is required when not skipping" });
6167
6183
  }
6168
- const { provideAnswer } = await import("./tools-X65P65KF.js");
6184
+ const { provideAnswer } = await import("./tools-A2XBFPRO.js");
6169
6185
  const found = provideAnswer(callId, answer ?? "", skip ?? false);
6170
6186
  if (!found) {
6171
6187
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -6193,7 +6209,7 @@ All file and git operations should use this branch.
6193
6209
  if (!session) {
6194
6210
  return res.status(404).json({ error: "Session not found" });
6195
6211
  }
6196
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-AGNYWEIE.js");
6212
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-SM3K6S74.js");
6197
6213
  if (getSetting2(SETTINGS_KEYS.CACHE_WARMING) !== "true") {
6198
6214
  return res.json({ success: false, reason: "disabled" });
6199
6215
  }
@@ -6225,7 +6241,7 @@ All file and git operations should use this branch.
6225
6241
  backend: activeProvider?.backend ?? llmClient.getBackend(),
6226
6242
  model: llmClient.getModel()
6227
6243
  };
6228
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-AGJ7EMFZ.js");
6244
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-KTOC65UU.js");
6229
6245
  runAgentTurn(
6230
6246
  {
6231
6247
  sessionManager,
@@ -6263,15 +6279,15 @@ All file and git operations should use this branch.
6263
6279
  if (!session) {
6264
6280
  return res.status(404).json({ error: "Session not found" });
6265
6281
  }
6266
- const { stopSessionExecution } = await import("./chat-handler-AVGJQSYW.js");
6267
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-X65P65KF.js");
6282
+ const { stopSessionExecution } = await import("./chat-handler-HB3XN6YE.js");
6283
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-A2XBFPRO.js");
6268
6284
  const queuedMessages = sessionManager.getQueueState(sessionId);
6269
6285
  sessionManager.clearMessageQueue(sessionId);
6270
6286
  stopSessionExecution(sessionId, sessionManager);
6271
6287
  abortSession(sessionId);
6272
6288
  cancelQuestionsForSession(sessionId, "Session stopped by user");
6273
6289
  cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
6274
- const eventStore = (await import("./events-OEDAFNEI.js")).getEventStore();
6290
+ const eventStore = (await import("./events-Z3AJVFSP.js")).getEventStore();
6275
6291
  eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
6276
6292
  res.json({ success: true, queuedMessages });
6277
6293
  });
@@ -6285,7 +6301,7 @@ All file and git operations should use this branch.
6285
6301
  if (typeof messageIndex !== "number" || messageIndex < 0) {
6286
6302
  return res.status(400).json({ error: "messageIndex must be a non-negative number" });
6287
6303
  }
6288
- const { truncateSessionMessages } = await import("./events-OEDAFNEI.js");
6304
+ const { truncateSessionMessages } = await import("./events-Z3AJVFSP.js");
6289
6305
  truncateSessionMessages(sessionId, messageIndex);
6290
6306
  res.json({ success: true });
6291
6307
  });
@@ -6302,8 +6318,8 @@ All file and git operations should use this branch.
6302
6318
  if (content !== void 0 && (typeof content !== "string" || !content.trim())) {
6303
6319
  return res.status(400).json({ error: "content must be a non-empty string if provided" });
6304
6320
  }
6305
- const { getEventStore: getEventStore2 } = await import("./events-OEDAFNEI.js");
6306
- const { buildMessagesFromStoredEvents } = await import("./folding-FGTCP73N.js");
6321
+ const { getEventStore: getEventStore2 } = await import("./events-Z3AJVFSP.js");
6322
+ const { buildMessagesFromStoredEvents } = await import("./folding-LWKKC4RQ.js");
6307
6323
  const eventStore = getEventStore2();
6308
6324
  const events = eventStore.getEvents(sessionId);
6309
6325
  const { messages } = buildMessagesFromStoredEvents(events);
@@ -6315,7 +6331,7 @@ All file and git operations should use this branch.
6315
6331
  if (msg.role !== "user" || msg.isSystemGenerated) {
6316
6332
  return res.status(400).json({ error: "Can only replay user messages" });
6317
6333
  }
6318
- const { truncateSessionMessages } = await import("./events-OEDAFNEI.js");
6334
+ const { truncateSessionMessages } = await import("./events-Z3AJVFSP.js");
6319
6335
  truncateSessionMessages(sessionId, msgIndex - 1);
6320
6336
  sessionManager.queueMessage(sessionId, "asap", content ?? msg.content, msg.attachments, msg.messageKind);
6321
6337
  res.json({ success: true });
@@ -6347,7 +6363,7 @@ All file and git operations should use this branch.
6347
6363
  res.json({ accepted: true });
6348
6364
  });
6349
6365
  app.get("/api/settings", async (req, res) => {
6350
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-AGNYWEIE.js");
6366
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-SM3K6S74.js");
6351
6367
  const keysParam = req.query["keys"];
6352
6368
  if (!keysParam) {
6353
6369
  return res.status(400).json({ error: "keys query parameter is required" });
@@ -6360,19 +6376,19 @@ All file and git operations should use this branch.
6360
6376
  res.json(result);
6361
6377
  });
6362
6378
  app.get("/api/settings/:key", async (req, res) => {
6363
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-AGNYWEIE.js");
6379
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-SM3K6S74.js");
6364
6380
  const key = req.params.key;
6365
6381
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
6366
6382
  res.json({ key, value });
6367
6383
  });
6368
6384
  app.get("/api/settings/:key", async (req, res) => {
6369
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-AGNYWEIE.js");
6385
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-SM3K6S74.js");
6370
6386
  const key = req.params.key;
6371
6387
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
6372
6388
  res.json({ key, value });
6373
6389
  });
6374
6390
  app.put("/api/settings/:key", async (req, res) => {
6375
- const { setSetting: setSetting2 } = await import("./settings-AGNYWEIE.js");
6391
+ const { setSetting: setSetting2 } = await import("./settings-SM3K6S74.js");
6376
6392
  const key = req.params.key;
6377
6393
  const { value } = req.body;
6378
6394
  if (value === void 0) {
@@ -6399,7 +6415,7 @@ All file and git operations should use this branch.
6399
6415
  }
6400
6416
  });
6401
6417
  app.get("/api/tools/shells", async (_req, res) => {
6402
- const { listAvailableShells } = await import("./platform-OYKGQ7Z3.js");
6418
+ const { listAvailableShells } = await import("./platform-MVVEGKPE.js");
6403
6419
  res.json({ shells: listAvailableShells() });
6404
6420
  });
6405
6421
  app.get("/api/config", async (_req, res) => {
@@ -6558,7 +6574,7 @@ All file and git operations should use this branch.
6558
6574
  }
6559
6575
  });
6560
6576
  app.post("/api/proxy/test", async (_req, res) => {
6561
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-AGNYWEIE.js");
6577
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-SM3K6S74.js");
6562
6578
  const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
6563
6579
  if (!proxyUrl) {
6564
6580
  return res.status(400).json({ success: false, error: "No proxy URL configured" });
@@ -6585,7 +6601,7 @@ All file and git operations should use this branch.
6585
6601
  const backend = req.query["backend"];
6586
6602
  if (!url) return res.status(400).json({ error: "url is required" });
6587
6603
  try {
6588
- const { fetchModelsWithContext } = await import("./provider-manager-3DW3A2VC.js");
6604
+ const { fetchModelsWithContext } = await import("./provider-manager-W4MEPXB5.js");
6589
6605
  const { getModelProfile: getModelProfile2 } = await import("./profiles-5J7F4BML.js");
6590
6606
  const models = await fetchModelsWithContext(
6591
6607
  url,
@@ -6656,7 +6672,7 @@ All file and git operations should use this branch.
6656
6672
  const { getModelProfile: getModelProfile2 } = await import("./profiles-5J7F4BML.js");
6657
6673
  const { getBackendCapabilities } = await import("./backend-P3GHHLHJ.js");
6658
6674
  const { buildNonStreamingCreateParams } = await import("./client-pure-5YE5WFJP.js");
6659
- const { OpenAIHttpClient } = await import("./http-client-I52X7GQB.js");
6675
+ const { OpenAIHttpClient } = await import("./http-client-LITXNO6R.js");
6660
6676
  const { ensureVersionPrefix } = await import("./url-utils-SAJP7AEX.js");
6661
6677
  const profile = getModelProfile2(model);
6662
6678
  const capabilities = getBackendCapabilities(backend || "unknown");
@@ -6914,7 +6930,7 @@ All file and git operations should use this branch.
6914
6930
  });
6915
6931
  async function rebuildMcpTools() {
6916
6932
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-MOGEI6TP.js");
6917
- const { setMcpTools: setMcpTools2 } = await import("./tools-X65P65KF.js");
6933
+ const { setMcpTools: setMcpTools2 } = await import("./tools-A2XBFPRO.js");
6918
6934
  const mcpTools = createMcpTools2(mcpManager);
6919
6935
  setMcpTools2(mcpTools);
6920
6936
  }
@@ -7161,13 +7177,13 @@ All file and git operations should use this branch.
7161
7177
  })
7162
7178
  );
7163
7179
  app.get("/api/sessions/:id/background-processes", async (req, res) => {
7164
- const { getSessionProcesses } = await import("./manager-TD2UT62O.js");
7180
+ const { getSessionProcesses } = await import("./manager-657CWC5Z.js");
7165
7181
  const sessionId = req.params.id;
7166
7182
  const processes = getSessionProcesses(sessionId);
7167
7183
  res.json({ processes });
7168
7184
  });
7169
7185
  app.post("/api/sessions/:id/background-process/:processId/stop", async (req, res) => {
7170
- const { stopProcess } = await import("./manager-TD2UT62O.js");
7186
+ const { stopProcess } = await import("./manager-657CWC5Z.js");
7171
7187
  const sessionId = req.params.id;
7172
7188
  const processId = req.params.processId;
7173
7189
  const session = sessionManager.getSession(sessionId);
@@ -7310,7 +7326,7 @@ All file and git operations should use this branch.
7310
7326
  const state = sessionManager.getContextState(sessionId);
7311
7327
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
7312
7328
  });
7313
- const { QueueProcessor } = await import("./processor-VCDVG7RV.js");
7329
+ const { QueueProcessor } = await import("./processor-3UTJE7EQ.js");
7314
7330
  const queueProcessor = new QueueProcessor({
7315
7331
  sessionManager,
7316
7332
  providerManager,
@@ -7390,4 +7406,4 @@ export {
7390
7406
  createServerHandle,
7391
7407
  createServer
7392
7408
  };
7393
- //# sourceMappingURL=chunk-VGYV5EH6.js.map
7409
+ //# sourceMappingURL=chunk-6YJ5W4KV.js.map
@@ -8,20 +8,20 @@ import {
8
8
  import {
9
9
  combineEventsWithSnapshot,
10
10
  getEventStore
11
- } from "./chunk-V5LOH363.js";
11
+ } from "./chunk-DZGVDT2F.js";
12
12
  import {
13
13
  buildMessagesFromStoredEvents,
14
14
  foldPendingConfirmations
15
- } from "./chunk-OHKBGMLO.js";
15
+ } from "./chunk-TW3PNLMA.js";
16
16
  import {
17
17
  updateSessionMetadata
18
- } from "./chunk-L4S5N3WV.js";
18
+ } from "./chunk-2DWWLQVQ.js";
19
19
  import {
20
20
  getRuntimeConfig
21
- } from "./chunk-FYYPQ27K.js";
21
+ } from "./chunk-BOO6VR2T.js";
22
22
  import {
23
23
  getMaxVisibleItems
24
- } from "./chunk-STFIEU5F.js";
24
+ } from "./chunk-BNQTJFHQ.js";
25
25
  import {
26
26
  logger
27
27
  } from "./chunk-K44MW7JJ.js";
@@ -153,7 +153,7 @@ async function generateSessionNameForSession(sessionId, userMessage, deps, signa
153
153
  client = deps.getLLMClient();
154
154
  client.setModel(providerConfig.model);
155
155
  } else if (providerConfig) {
156
- const { createLLMClient } = await import("./client-C2P67MA4.js");
156
+ const { createLLMClient } = await import("./client-W3AYWMJM.js");
157
157
  client = createLLMClient({
158
158
  llm: {
159
159
  baseUrl: providerConfig.baseUrl,
@@ -202,4 +202,4 @@ export {
202
202
  buildRunChatTurnParams,
203
203
  generateSessionNameForSession
204
204
  };
205
- //# sourceMappingURL=chunk-BKH4SIWV.js.map
205
+ //# sourceMappingURL=chunk-76ADL7EV.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-47WNBFDO.js";
4
4
  import {
5
5
  getEventStore
6
- } from "./chunk-V5LOH363.js";
6
+ } from "./chunk-DZGVDT2F.js";
7
7
 
8
8
  // src/server/tools/path-security.ts
9
9
  import { realpath } from "fs/promises";
@@ -494,4 +494,4 @@ export {
494
494
  getConfirmationSessionId,
495
495
  getPendingConfirmationsBySession
496
496
  };
497
- //# sourceMappingURL=chunk-5W2FIWDH.js.map
497
+ //# sourceMappingURL=chunk-B53QORTX.js.map
@@ -15,6 +15,7 @@ var SETTINGS_KEYS = {
15
15
  DISPLAY_USER_PRESETS: "display.userPresets",
16
16
  DISPLAY_FOLLOW_SYSTEM_THEME: "display.followSystemTheme",
17
17
  DISPLAY_SHOW_OPEN_IN_EDITOR: "display.showOpenInEditorLinks",
18
+ DISPLAY_SHOW_CHANGELOG_ON_UPDATE: "display.showChangelogOnUpdate",
18
19
  DISPLAY_MAX_VISIBLE_ITEMS: "display.maxVisibleItems",
19
20
  LLM_DYNAMIC_SYSTEM_PROMPT: "llm.dynamicSystemPrompt",
20
21
  CACHE_WARMING: "cache.warming",
@@ -41,6 +42,7 @@ var SETTINGS_DEFAULTS = {
41
42
  [SETTINGS_KEYS.DISPLAY_THEME]: JSON.stringify({ preset: "dark" }),
42
43
  [SETTINGS_KEYS.DISPLAY_FOLLOW_SYSTEM_THEME]: "true",
43
44
  [SETTINGS_KEYS.DISPLAY_SHOW_OPEN_IN_EDITOR]: "false",
45
+ [SETTINGS_KEYS.DISPLAY_SHOW_CHANGELOG_ON_UPDATE]: "true",
44
46
  [SETTINGS_KEYS.DISPLAY_MAX_VISIBLE_ITEMS]: "300",
45
47
  [SETTINGS_KEYS.LLM_DYNAMIC_SYSTEM_PROMPT]: "false",
46
48
  [SETTINGS_KEYS.CACHE_WARMING]: "false",
@@ -110,4 +112,4 @@ export {
110
112
  getAllSettings,
111
113
  getMaxVisibleItems
112
114
  };
113
- //# sourceMappingURL=chunk-STFIEU5F.js.map
115
+ //# sourceMappingURL=chunk-BNQTJFHQ.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SETTINGS_KEYS,
3
3
  getSetting
4
- } from "./chunk-STFIEU5F.js";
4
+ } from "./chunk-BNQTJFHQ.js";
5
5
  import {
6
6
  logger
7
7
  } from "./chunk-K44MW7JJ.js";
@@ -396,4 +396,4 @@ export {
396
396
  deleteAgent,
397
397
  resolveDefaultAgentId
398
398
  };
399
- //# sourceMappingURL=chunk-FYYPQ27K.js.map
399
+ //# sourceMappingURL=chunk-BOO6VR2T.js.map
@@ -5,13 +5,13 @@ import {
5
5
  foldContextState,
6
6
  foldSessionState,
7
7
  spreadOptionalMessageFields
8
- } from "./chunk-OHKBGMLO.js";
8
+ } from "./chunk-TW3PNLMA.js";
9
9
  import {
10
10
  updateSessionMessageCount
11
- } from "./chunk-L4S5N3WV.js";
11
+ } from "./chunk-2DWWLQVQ.js";
12
12
  import {
13
13
  getRuntimeConfig
14
- } from "./chunk-FYYPQ27K.js";
14
+ } from "./chunk-BOO6VR2T.js";
15
15
  import {
16
16
  logger
17
17
  } from "./chunk-K44MW7JJ.js";
@@ -1159,4 +1159,4 @@ export {
1159
1159
  truncateSessionMessages,
1160
1160
  getRecentUserPromptsForSession
1161
1161
  };
1162
- //# sourceMappingURL=chunk-V5LOH363.js.map
1162
+ //# sourceMappingURL=chunk-DZGVDT2F.js.map