openfox 2.0.89 → 2.0.90

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 (52) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/CHANGELOG.md +13 -0
  3. package/dist/{chat-handler-NOTXEOLF.js → chat-handler-JJQ3JBNF.js} +13 -13
  4. package/dist/{chunk-VFMHWU3E.js → chunk-2J7SLQXL.js} +3 -1
  5. package/dist/{chunk-RNXMN5QY.js → chunk-2QIYPQQH.js} +4 -4
  6. package/dist/{chunk-E5D7V7XC.js → chunk-3HH5UDVQ.js} +7 -7
  7. package/dist/{chunk-4S76VMPH.js → chunk-54LPSOO3.js} +3 -3
  8. package/dist/{chunk-5OGOPB3I.js → chunk-6PHUBUVH.js} +58 -58
  9. package/dist/{chunk-3QHXJ3DJ.js → chunk-74P4DTCU.js} +2 -2
  10. package/dist/{chunk-U2ECZUAX.js → chunk-7GF45BJV.js} +10 -10
  11. package/dist/{chunk-NTYWC6PD.js → chunk-BCVM2SPJ.js} +3 -3
  12. package/dist/{chunk-ANYBIATF.js → chunk-FIXFSGGZ.js} +2 -2
  13. package/dist/{chunk-J7R25K6N.js → chunk-GJN622K4.js} +4 -4
  14. package/dist/{chunk-SYU5GNPN.js → chunk-GR63QQFE.js} +2 -2
  15. package/dist/{chunk-7JC5YWST.js → chunk-KFKDFZJB.js} +12 -12
  16. package/dist/{chunk-7TFKWFY3.js → chunk-L6B6R5SN.js} +2 -2
  17. package/dist/{chunk-OVSB5SFF.js → chunk-LRTHLIRH.js} +11 -11
  18. package/dist/{chunk-AGYP7AUV.js → chunk-NJ3XNK3V.js} +2 -2
  19. package/dist/{chunk-2GQ7X2NP.js → chunk-OTKOSY6B.js} +2 -2
  20. package/dist/{chunk-TAHZHEJ4.js → chunk-VX5NASLY.js} +2 -2
  21. package/dist/{chunk-NGIOAASU.js → chunk-VXKY7J7W.js} +2 -2
  22. package/dist/{chunk-Q4OPCXV4.js → chunk-XKZZHAEZ.js} +2 -2
  23. package/dist/chunk-XMJLSFY5.js +7 -0
  24. package/dist/cli/dev.js +1 -1
  25. package/dist/cli/index.js +1 -1
  26. package/dist/{client-2KVPLIV4.js → client-2JELOQF7.js} +4 -4
  27. package/dist/{compactor-W2CUKE22.js → compactor-OW343YIO.js} +9 -9
  28. package/dist/{events-OD7MN3FL.js → events-U2BYC5MN.js} +6 -6
  29. package/dist/{folding-TDDQ5CXT.js → folding-RE7ZL7H7.js} +4 -4
  30. package/dist/{http-client-IPJGJXNJ.js → http-client-7QCN2R44.js} +3 -3
  31. package/dist/{manager-6UIC3QKJ.js → manager-X665RYDA.js} +4 -4
  32. package/dist/{orchestrator-NQDWCULY.js → orchestrator-BMU7DZ6F.js} +12 -12
  33. package/dist/package.json +1 -1
  34. package/dist/{path-security-M2JDUBKK.js → path-security-3BTT5ZCM.js} +7 -7
  35. package/dist/{platform-55N6FRRU.js → platform-2XTX4MRW.js} +3 -3
  36. package/dist/{processor-FE4ZJ7GS.js → processor-YIVQO2OY.js} +13 -13
  37. package/dist/{provider-I2P3NYUI.js → provider-IKKXQW6S.js} +5 -5
  38. package/dist/{provider-manager-OLDOHCR2.js → provider-manager-I35NHMOO.js} +5 -5
  39. package/dist/{serve-UMPDBCVG.js → serve-Q45HTS4J.js} +19 -19
  40. package/dist/server/index.js +18 -18
  41. package/dist/{server-4PB7BNE6.js → server-OP2Q2F3S.js} +14 -14
  42. package/dist/{sessions-Q6SYLG6U.js → sessions-SFM7XA3R.js} +4 -4
  43. package/dist/{settings-PFZWX6VY.js → settings-TCNHSYFX.js} +2 -2
  44. package/dist/{tools-NLKP65HF.js → tools-X7NAB4LZ.js} +11 -11
  45. package/dist/{update-BHTE5TMY.js → update-HHQGMX7P.js} +2 -2
  46. package/dist/web/assets/{index-C5sTYb--.js → index-BB8bp4oL.js} +87 -77
  47. package/dist/web/assets/index-flzB-55v.css +32 -0
  48. package/dist/web/index.html +2 -2
  49. package/dist/web/sw.js +1 -1
  50. package/package.json +1 -1
  51. package/dist/chunk-TH4JF6XP.js +0 -7
  52. package/dist/web/assets/index-BQfVUhSC.css +0 -32
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.90 - 2026-07-24
4
+
5
+ ### Features
6
+
7
+ - **Compact sidebar summary header** — when the right sidebar is hidden, a compact bar shows workspace/branch, metadata status, token context, and dev server controls with clickable popovers for full details.
8
+ - **Scroll-to-top button in chat feed** — hover to reveal at the top of the message list; click to scroll up and disable auto-scroll.
9
+ - **Scrollbar preset picker with Custom CSS editor** — choose from built-in scrollbar styles or write your own CSS in the Display settings.
10
+
11
+ ### Enhancements
12
+
13
+ - **Native browser scrollbars by default** — replaced custom scrollbar CSS with native scrollbars for better platform consistency; power users can customize via the new CSS editor.
14
+ - **Long session names truncated at 50 characters** — header dropdown, session list, and mobile nav now cap overly long names.
15
+
3
16
  ## 2.0.89 - 2026-07-23
4
17
 
5
18
  ### Features
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.90 - 2026-07-24
4
+
5
+ ### Features
6
+
7
+ - **Compact sidebar summary header** — when the right sidebar is hidden, a compact bar shows workspace/branch, metadata status, token context, and dev server controls with clickable popovers for full details.
8
+ - **Scroll-to-top button in chat feed** — hover to reveal at the top of the message list; click to scroll up and disable auto-scroll.
9
+ - **Scrollbar preset picker with Custom CSS editor** — choose from built-in scrollbar styles or write your own CSS in the Display settings.
10
+
11
+ ### Enhancements
12
+
13
+ - **Native browser scrollbars by default** — replaced custom scrollbar CSS with native scrollbars for better platform consistency; power users can customize via the new CSS editor.
14
+ - **Long session names truncated at 50 characters** — header dropdown, session list, and mobile nav now cap overly long names.
15
+
3
16
  ## 2.0.89 - 2026-07-23
4
17
 
5
18
  ### Features
@@ -2,39 +2,39 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-E5D7V7XC.js";
5
+ } from "./chunk-3HH5UDVQ.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-U2ECZUAX.js";
9
- import "./chunk-7JC5YWST.js";
10
- import "./chunk-2GQ7X2NP.js";
8
+ } from "./chunk-7GF45BJV.js";
9
+ import "./chunk-KFKDFZJB.js";
10
+ import "./chunk-OTKOSY6B.js";
11
11
  import "./chunk-NWO6GRYE.js";
12
12
  import "./chunk-VPFUXGMM.js";
13
13
  import "./chunk-67AVIA5G.js";
14
14
  import "./chunk-J7GAZGZT.js";
15
- import "./chunk-3QHXJ3DJ.js";
15
+ import "./chunk-74P4DTCU.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-NGIOAASU.js";
23
- import "./chunk-ANYBIATF.js";
22
+ import "./chunk-VXKY7J7W.js";
23
+ import "./chunk-FIXFSGGZ.js";
24
24
  import "./chunk-J2IVK667.js";
25
25
  import "./chunk-Q6AKRIM2.js";
26
26
  import "./chunk-I72ACQ6R.js";
27
27
  import {
28
28
  getEventStore
29
- } from "./chunk-RNXMN5QY.js";
30
- import "./chunk-AGYP7AUV.js";
31
- import "./chunk-TAHZHEJ4.js";
32
- import "./chunk-7TFKWFY3.js";
29
+ } from "./chunk-2QIYPQQH.js";
30
+ import "./chunk-NJ3XNK3V.js";
31
+ import "./chunk-VX5NASLY.js";
32
+ import "./chunk-L6B6R5SN.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-VFMHWU3E.js";
37
+ import "./chunk-2J7SLQXL.js";
38
38
  import "./chunk-EZWSS7LG.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-NOTXEOLF.js.map
164
+ //# sourceMappingURL=chat-handler-JJQ3JBNF.js.map
@@ -17,6 +17,7 @@ var SETTINGS_KEYS = {
17
17
  DISPLAY_SHOW_OPEN_IN_EDITOR: "display.showOpenInEditorLinks",
18
18
  DISPLAY_SHOW_CHANGELOG_ON_UPDATE: "display.showChangelogOnUpdate",
19
19
  DISPLAY_MAX_VISIBLE_ITEMS: "display.maxVisibleItems",
20
+ DISPLAY_CUSTOM_CSS: "display.customCss",
20
21
  LLM_DYNAMIC_SYSTEM_PROMPT: "llm.dynamicSystemPrompt",
21
22
  CACHE_WARMING: "cache.warming",
22
23
  KEYBINDINGS: "keybindings",
@@ -44,6 +45,7 @@ var SETTINGS_DEFAULTS = {
44
45
  [SETTINGS_KEYS.DISPLAY_SHOW_OPEN_IN_EDITOR]: "false",
45
46
  [SETTINGS_KEYS.DISPLAY_SHOW_CHANGELOG_ON_UPDATE]: "true",
46
47
  [SETTINGS_KEYS.DISPLAY_MAX_VISIBLE_ITEMS]: "300",
48
+ [SETTINGS_KEYS.DISPLAY_CUSTOM_CSS]: "",
47
49
  [SETTINGS_KEYS.LLM_DYNAMIC_SYSTEM_PROMPT]: "false",
48
50
  [SETTINGS_KEYS.CACHE_WARMING]: "false",
49
51
  [SETTINGS_KEYS.RETRY_PATTERNS]: JSON.stringify({ patterns: [], maxRetriesPerTurn: 10 }),
@@ -112,4 +114,4 @@ export {
112
114
  getAllSettings,
113
115
  getMaxVisibleItems
114
116
  };
115
- //# sourceMappingURL=chunk-VFMHWU3E.js.map
117
+ //# sourceMappingURL=chunk-2J7SLQXL.js.map
@@ -5,13 +5,13 @@ import {
5
5
  foldContextState,
6
6
  foldSessionState,
7
7
  spreadOptionalMessageFields
8
- } from "./chunk-AGYP7AUV.js";
8
+ } from "./chunk-NJ3XNK3V.js";
9
9
  import {
10
10
  updateSessionMessageCount
11
- } from "./chunk-TAHZHEJ4.js";
11
+ } from "./chunk-VX5NASLY.js";
12
12
  import {
13
13
  getRuntimeConfig
14
- } from "./chunk-7TFKWFY3.js";
14
+ } from "./chunk-L6B6R5SN.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-RNXMN5QY.js.map
1162
+ //# sourceMappingURL=chunk-2QIYPQQH.js.map
@@ -8,20 +8,20 @@ import {
8
8
  import {
9
9
  combineEventsWithSnapshot,
10
10
  getEventStore
11
- } from "./chunk-RNXMN5QY.js";
11
+ } from "./chunk-2QIYPQQH.js";
12
12
  import {
13
13
  buildMessagesFromStoredEvents,
14
14
  foldPendingConfirmations
15
- } from "./chunk-AGYP7AUV.js";
15
+ } from "./chunk-NJ3XNK3V.js";
16
16
  import {
17
17
  updateSessionMetadata
18
- } from "./chunk-TAHZHEJ4.js";
18
+ } from "./chunk-VX5NASLY.js";
19
19
  import {
20
20
  getRuntimeConfig
21
- } from "./chunk-7TFKWFY3.js";
21
+ } from "./chunk-L6B6R5SN.js";
22
22
  import {
23
23
  getMaxVisibleItems
24
- } from "./chunk-VFMHWU3E.js";
24
+ } from "./chunk-2J7SLQXL.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-2KVPLIV4.js");
156
+ const { createLLMClient } = await import("./client-2JELOQF7.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-E5D7V7XC.js.map
205
+ //# sourceMappingURL=chunk-3HH5UDVQ.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  COMPACTION_PROMPT,
3
3
  createMessageStartEvent
4
- } from "./chunk-NGIOAASU.js";
4
+ } from "./chunk-VXKY7J7W.js";
5
5
  import {
6
6
  getCurrentWindowMessageOptions
7
- } from "./chunk-RNXMN5QY.js";
7
+ } from "./chunk-2QIYPQQH.js";
8
8
 
9
9
  // src/server/context/compactor.ts
10
10
  function appendCompactionPrompt(sessionId, append) {
@@ -34,4 +34,4 @@ export {
34
34
  COMPACTION_MAX_RATIO,
35
35
  shouldCompact
36
36
  };
37
- //# sourceMappingURL=chunk-4S76VMPH.js.map
37
+ //# sourceMappingURL=chunk-54LPSOO3.js.map
@@ -21,7 +21,7 @@ import {
21
21
  tokenFromPassword,
22
22
  verifyPassword,
23
23
  workflowExists
24
- } from "./chunk-OVSB5SFF.js";
24
+ } from "./chunk-LRTHLIRH.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-7JC5YWST.js";
50
+ } from "./chunk-KFKDFZJB.js";
51
51
  import {
52
52
  createMcpTools
53
53
  } from "./chunk-NWO6GRYE.js";
@@ -76,11 +76,11 @@ import {
76
76
  ALWAYS_ALLOWED,
77
77
  ALWAYS_ALLOWED_FOR_SUBAGENTS,
78
78
  TOP_LEVEL_ONLY_TOOLS
79
- } from "./chunk-NGIOAASU.js";
79
+ } from "./chunk-VXKY7J7W.js";
80
80
  import {
81
81
  getPathSeparator,
82
82
  isAbsolutePath
83
- } from "./chunk-ANYBIATF.js";
83
+ } from "./chunk-FIXFSGGZ.js";
84
84
  import {
85
85
  getProject,
86
86
  getProjectByWorkdir,
@@ -88,7 +88,7 @@ import {
88
88
  } from "./chunk-Q6AKRIM2.js";
89
89
  import {
90
90
  VERSION
91
- } from "./chunk-TH4JF6XP.js";
91
+ } from "./chunk-XMJLSFY5.js";
92
92
  import {
93
93
  emitAssistantMessageStart,
94
94
  emitContextState,
@@ -104,7 +104,7 @@ import {
104
104
  getEventStore,
105
105
  getSessionState,
106
106
  initEventStore
107
- } from "./chunk-RNXMN5QY.js";
107
+ } from "./chunk-2QIYPQQH.js";
108
108
  import {
109
109
  createSession,
110
110
  deleteSession,
@@ -120,7 +120,7 @@ import {
120
120
  updateSessionProvider,
121
121
  updateSessionRunning,
122
122
  updateSessionWorkdir
123
- } from "./chunk-TAHZHEJ4.js";
123
+ } from "./chunk-VX5NASLY.js";
124
124
  import {
125
125
  agentExists,
126
126
  deleteAgent,
@@ -142,13 +142,13 @@ import {
142
142
  saveAgentToProject,
143
143
  saveItemToDir,
144
144
  setRuntimeConfig
145
- } from "./chunk-7TFKWFY3.js";
145
+ } from "./chunk-L6B6R5SN.js";
146
146
  import {
147
147
  createProviderManager,
148
148
  detectModel,
149
149
  getLlmStatus,
150
150
  parseDefaultModelSelection
151
- } from "./chunk-NTYWC6PD.js";
151
+ } from "./chunk-BCVM2SPJ.js";
152
152
  import {
153
153
  getModelProfile
154
154
  } from "./chunk-V4IE7HJY.js";
@@ -162,12 +162,12 @@ import {
162
162
  SessionNotFoundError,
163
163
  WorkspaceInUseError,
164
164
  proxyFetch
165
- } from "./chunk-SYU5GNPN.js";
165
+ } from "./chunk-GR63QQFE.js";
166
166
  import {
167
167
  deleteSetting,
168
168
  getSetting,
169
169
  setSetting
170
- } from "./chunk-VFMHWU3E.js";
170
+ } from "./chunk-2J7SLQXL.js";
171
171
  import {
172
172
  initDatabase
173
173
  } from "./chunk-EZWSS7LG.js";
@@ -5516,7 +5516,7 @@ async function createServerHandle(config3) {
5516
5516
  setMcpTools(mcpTools);
5517
5517
  logger.info("MCP tools registered", { count: mcpTools.length });
5518
5518
  }
5519
- const { signalMcpReady } = await import("./server-4PB7BNE6.js");
5519
+ const { signalMcpReady } = await import("./server-OP2Q2F3S.js");
5520
5520
  signalMcpReady();
5521
5521
  });
5522
5522
  const app = express();
@@ -5709,7 +5709,7 @@ async function createServerHandle(config3) {
5709
5709
  }
5710
5710
  try {
5711
5711
  await checkoutBranch(project.workdir, branch);
5712
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-Q6SYLG6U.js");
5712
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-SFM7XA3R.js");
5713
5713
  const allSessions = sessionManager.listSessions();
5714
5714
  for (const s of allSessions) {
5715
5715
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -5745,7 +5745,7 @@ async function createServerHandle(config3) {
5745
5745
  );
5746
5746
  }
5747
5747
  await createBranch(project.workdir, name, sb);
5748
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-Q6SYLG6U.js");
5748
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-SFM7XA3R.js");
5749
5749
  const allSessions = sessionManager.listSessions();
5750
5750
  for (const s of allSessions) {
5751
5751
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -5777,7 +5777,7 @@ async function createServerHandle(config3) {
5777
5777
  if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
5778
5778
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
5779
5779
  const { checkoutBranch, validateRef: validateRef2 } = await import("./workspace-N4QHV6J2.js");
5780
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-Q6SYLG6U.js");
5780
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-SFM7XA3R.js");
5781
5781
  try {
5782
5782
  await validateRef2(effectiveWorkdir, branch);
5783
5783
  await checkoutBranch(effectiveWorkdir, branch);
@@ -5820,7 +5820,7 @@ All file and git operations should use this branch.
5820
5820
  if (!name || typeof name !== "string") return res.status(400).json({ error: "name is required" });
5821
5821
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
5822
5822
  const { validateRef: validateRef2 } = await import("./workspace-N4QHV6J2.js");
5823
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-Q6SYLG6U.js");
5823
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-SFM7XA3R.js");
5824
5824
  try {
5825
5825
  await validateRef2(effectiveWorkdir, name);
5826
5826
  if (sourceBranch) {
@@ -5875,8 +5875,8 @@ All file and git operations should use this branch.
5875
5875
  res.json({ workspaces: workspacesList });
5876
5876
  });
5877
5877
  app.get("/api/sessions", async (req, res) => {
5878
- const { getRecentUserPromptsForSession } = await import("./events-OD7MN3FL.js");
5879
- const { getPendingConfirmationsBySession } = await import("./path-security-M2JDUBKK.js");
5878
+ const { getRecentUserPromptsForSession } = await import("./events-U2BYC5MN.js");
5879
+ const { getPendingConfirmationsBySession } = await import("./path-security-3BTT5ZCM.js");
5880
5880
  const projectId = req.query["projectId"];
5881
5881
  const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
5882
5882
  const offset = parseInt(req.query["offset"]) || 0;
@@ -5982,10 +5982,10 @@ All file and git operations should use this branch.
5982
5982
  }
5983
5983
  });
5984
5984
  app.get("/api/sessions/:id", async (req, res) => {
5985
- const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-OD7MN3FL.js");
5986
- const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-TDDQ5CXT.js");
5987
- const { getPendingQuestionsForSession } = await import("./tools-NLKP65HF.js");
5988
- const { getMaxVisibleItems } = await import("./settings-PFZWX6VY.js");
5985
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-U2BYC5MN.js");
5986
+ const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-RE7ZL7H7.js");
5987
+ const { getPendingQuestionsForSession } = await import("./tools-X7NAB4LZ.js");
5988
+ const { getMaxVisibleItems } = await import("./settings-TCNHSYFX.js");
5989
5989
  const session = sessionManager.getSession(req.params.id);
5990
5990
  if (!session) {
5991
5991
  return res.status(404).json({ error: "Session not found" });
@@ -6015,8 +6015,8 @@ All file and git operations should use this branch.
6015
6015
  if (!session) {
6016
6016
  return res.status(404).json({ error: "Session not found" });
6017
6017
  }
6018
- const { stopSessionExecution } = await import("./chat-handler-NOTXEOLF.js");
6019
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-NLKP65HF.js");
6018
+ const { stopSessionExecution } = await import("./chat-handler-JJQ3JBNF.js");
6019
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-X7NAB4LZ.js");
6020
6020
  sessionManager.clearMessageQueue(sessionId);
6021
6021
  stopSessionExecution(sessionId, sessionManager);
6022
6022
  abortSession(sessionId);
@@ -6045,9 +6045,9 @@ All file and git operations should use this branch.
6045
6045
  res.json({ success: true });
6046
6046
  });
6047
6047
  app.post("/api/sessions/:id/provider", async (req, res) => {
6048
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-OD7MN3FL.js");
6049
- const { buildMessagesFromStoredEvents } = await import("./folding-TDDQ5CXT.js");
6050
- const { getMaxVisibleItems } = await import("./settings-PFZWX6VY.js");
6048
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-U2BYC5MN.js");
6049
+ const { buildMessagesFromStoredEvents } = await import("./folding-RE7ZL7H7.js");
6050
+ const { getMaxVisibleItems } = await import("./settings-TCNHSYFX.js");
6051
6051
  const sessionId = req.params.id;
6052
6052
  const session = sessionManager.getSession(sessionId);
6053
6053
  if (!session) {
@@ -6160,9 +6160,9 @@ All file and git operations should use this branch.
6160
6160
  res.json({ success: true });
6161
6161
  });
6162
6162
  app.put("/api/sessions/:id/mode", async (req, res) => {
6163
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-OD7MN3FL.js");
6164
- const { buildMessagesFromStoredEvents } = await import("./folding-TDDQ5CXT.js");
6165
- const { getMaxVisibleItems } = await import("./settings-PFZWX6VY.js");
6163
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-U2BYC5MN.js");
6164
+ const { buildMessagesFromStoredEvents } = await import("./folding-RE7ZL7H7.js");
6165
+ const { getMaxVisibleItems } = await import("./settings-TCNHSYFX.js");
6166
6166
  const sessionId = req.params.id;
6167
6167
  const session = sessionManager.getSession(sessionId);
6168
6168
  if (!session) {
@@ -6223,7 +6223,7 @@ All file and git operations should use this branch.
6223
6223
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
6224
6224
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
6225
6225
  }
6226
- const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-NLKP65HF.js");
6226
+ const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-X7NAB4LZ.js");
6227
6227
  const pendingSessionId = getConfirmationSessionId(callId);
6228
6228
  if (!pendingSessionId) {
6229
6229
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -6235,11 +6235,11 @@ All file and git operations should use this branch.
6235
6235
  if (!result.found) {
6236
6236
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
6237
6237
  }
6238
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-OD7MN3FL.js");
6239
- const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-TDDQ5CXT.js");
6238
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-U2BYC5MN.js");
6239
+ const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-RE7ZL7H7.js");
6240
6240
  const { createSessionStateMessage } = await import("./protocol-BUA2W2KM.js");
6241
- const { getPendingQuestionsForSession } = await import("./tools-NLKP65HF.js");
6242
- const { getMaxVisibleItems } = await import("./settings-PFZWX6VY.js");
6241
+ const { getPendingQuestionsForSession } = await import("./tools-X7NAB4LZ.js");
6242
+ const { getMaxVisibleItems } = await import("./settings-TCNHSYFX.js");
6243
6243
  const eventStore = getEventStore2();
6244
6244
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
6245
6245
  const events = combineEvents(sessionId, snapshot, eventsSinceSnapshot);
@@ -6275,7 +6275,7 @@ All file and git operations should use this branch.
6275
6275
  if (!skip && typeof answer !== "string") {
6276
6276
  return res.status(400).json({ error: "answer is required when not skipping" });
6277
6277
  }
6278
- const { provideAnswer } = await import("./tools-NLKP65HF.js");
6278
+ const { provideAnswer } = await import("./tools-X7NAB4LZ.js");
6279
6279
  const found = provideAnswer(callId, answer ?? "", skip ?? false);
6280
6280
  if (!found) {
6281
6281
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -6303,7 +6303,7 @@ All file and git operations should use this branch.
6303
6303
  if (!session) {
6304
6304
  return res.status(404).json({ error: "Session not found" });
6305
6305
  }
6306
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-PFZWX6VY.js");
6306
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-TCNHSYFX.js");
6307
6307
  if (getSetting2(SETTINGS_KEYS.CACHE_WARMING) !== "true") {
6308
6308
  return res.json({ success: false, reason: "disabled" });
6309
6309
  }
@@ -6335,7 +6335,7 @@ All file and git operations should use this branch.
6335
6335
  backend: activeProvider?.backend ?? llmClient.getBackend(),
6336
6336
  model: llmClient.getModel()
6337
6337
  };
6338
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-NQDWCULY.js");
6338
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-BMU7DZ6F.js");
6339
6339
  runAgentTurn(
6340
6340
  {
6341
6341
  sessionManager,
@@ -6373,15 +6373,15 @@ All file and git operations should use this branch.
6373
6373
  if (!session) {
6374
6374
  return res.status(404).json({ error: "Session not found" });
6375
6375
  }
6376
- const { stopSessionExecution } = await import("./chat-handler-NOTXEOLF.js");
6377
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-NLKP65HF.js");
6376
+ const { stopSessionExecution } = await import("./chat-handler-JJQ3JBNF.js");
6377
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-X7NAB4LZ.js");
6378
6378
  const queuedMessages = sessionManager.getQueueState(sessionId);
6379
6379
  sessionManager.clearMessageQueue(sessionId);
6380
6380
  stopSessionExecution(sessionId, sessionManager);
6381
6381
  abortSession(sessionId);
6382
6382
  cancelQuestionsForSession(sessionId, "Session stopped by user");
6383
6383
  cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
6384
- const eventStore = (await import("./events-OD7MN3FL.js")).getEventStore();
6384
+ const eventStore = (await import("./events-U2BYC5MN.js")).getEventStore();
6385
6385
  eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
6386
6386
  res.json({ success: true, queuedMessages });
6387
6387
  });
@@ -6395,7 +6395,7 @@ All file and git operations should use this branch.
6395
6395
  if (typeof messageIndex !== "number" || messageIndex < 0) {
6396
6396
  return res.status(400).json({ error: "messageIndex must be a non-negative number" });
6397
6397
  }
6398
- const { truncateSessionMessages } = await import("./events-OD7MN3FL.js");
6398
+ const { truncateSessionMessages } = await import("./events-U2BYC5MN.js");
6399
6399
  truncateSessionMessages(sessionId, messageIndex);
6400
6400
  res.json({ success: true });
6401
6401
  });
@@ -6412,8 +6412,8 @@ All file and git operations should use this branch.
6412
6412
  if (content !== void 0 && (typeof content !== "string" || !content.trim())) {
6413
6413
  return res.status(400).json({ error: "content must be a non-empty string if provided" });
6414
6414
  }
6415
- const { getEventStore: getEventStore2 } = await import("./events-OD7MN3FL.js");
6416
- const { buildMessagesFromStoredEvents } = await import("./folding-TDDQ5CXT.js");
6415
+ const { getEventStore: getEventStore2 } = await import("./events-U2BYC5MN.js");
6416
+ const { buildMessagesFromStoredEvents } = await import("./folding-RE7ZL7H7.js");
6417
6417
  const eventStore = getEventStore2();
6418
6418
  const events = eventStore.getEvents(sessionId);
6419
6419
  const { messages } = buildMessagesFromStoredEvents(events);
@@ -6425,7 +6425,7 @@ All file and git operations should use this branch.
6425
6425
  if (msg.role !== "user" || msg.isSystemGenerated) {
6426
6426
  return res.status(400).json({ error: "Can only replay user messages" });
6427
6427
  }
6428
- const { truncateSessionMessages } = await import("./events-OD7MN3FL.js");
6428
+ const { truncateSessionMessages } = await import("./events-U2BYC5MN.js");
6429
6429
  truncateSessionMessages(sessionId, msgIndex - 1);
6430
6430
  sessionManager.queueMessage(sessionId, "asap", content ?? msg.content, msg.attachments, msg.messageKind);
6431
6431
  res.json({ success: true });
@@ -6481,7 +6481,7 @@ All file and git operations should use this branch.
6481
6481
  res.json({ accepted: true });
6482
6482
  });
6483
6483
  app.get("/api/settings", async (req, res) => {
6484
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-PFZWX6VY.js");
6484
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-TCNHSYFX.js");
6485
6485
  const keysParam = req.query["keys"];
6486
6486
  if (!keysParam) {
6487
6487
  return res.status(400).json({ error: "keys query parameter is required" });
@@ -6494,19 +6494,19 @@ All file and git operations should use this branch.
6494
6494
  res.json(result);
6495
6495
  });
6496
6496
  app.get("/api/settings/:key", async (req, res) => {
6497
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-PFZWX6VY.js");
6497
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-TCNHSYFX.js");
6498
6498
  const key = req.params.key;
6499
6499
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
6500
6500
  res.json({ key, value });
6501
6501
  });
6502
6502
  app.get("/api/settings/:key", async (req, res) => {
6503
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-PFZWX6VY.js");
6503
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-TCNHSYFX.js");
6504
6504
  const key = req.params.key;
6505
6505
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
6506
6506
  res.json({ key, value });
6507
6507
  });
6508
6508
  app.put("/api/settings/:key", async (req, res) => {
6509
- const { setSetting: setSetting2 } = await import("./settings-PFZWX6VY.js");
6509
+ const { setSetting: setSetting2 } = await import("./settings-TCNHSYFX.js");
6510
6510
  const key = req.params.key;
6511
6511
  const { value } = req.body;
6512
6512
  if (value === void 0) {
@@ -6533,7 +6533,7 @@ All file and git operations should use this branch.
6533
6533
  }
6534
6534
  });
6535
6535
  app.get("/api/tools/shells", async (_req, res) => {
6536
- const { listAvailableShells } = await import("./platform-55N6FRRU.js");
6536
+ const { listAvailableShells } = await import("./platform-2XTX4MRW.js");
6537
6537
  res.json({ shells: listAvailableShells() });
6538
6538
  });
6539
6539
  app.get("/api/config", async (_req, res) => {
@@ -6692,7 +6692,7 @@ All file and git operations should use this branch.
6692
6692
  }
6693
6693
  });
6694
6694
  app.post("/api/proxy/test", async (_req, res) => {
6695
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-PFZWX6VY.js");
6695
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-TCNHSYFX.js");
6696
6696
  const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
6697
6697
  if (!proxyUrl) {
6698
6698
  return res.status(400).json({ success: false, error: "No proxy URL configured" });
@@ -6719,7 +6719,7 @@ All file and git operations should use this branch.
6719
6719
  const backend = req.query["backend"];
6720
6720
  if (!url) return res.status(400).json({ error: "url is required" });
6721
6721
  try {
6722
- const { fetchModelsWithContext } = await import("./provider-manager-OLDOHCR2.js");
6722
+ const { fetchModelsWithContext } = await import("./provider-manager-I35NHMOO.js");
6723
6723
  const { getModelProfile: getModelProfile2 } = await import("./profiles-5J7F4BML.js");
6724
6724
  const models = await fetchModelsWithContext(
6725
6725
  url,
@@ -6790,7 +6790,7 @@ All file and git operations should use this branch.
6790
6790
  const { getModelProfile: getModelProfile2 } = await import("./profiles-5J7F4BML.js");
6791
6791
  const { getBackendCapabilities } = await import("./backend-P3GHHLHJ.js");
6792
6792
  const { buildNonStreamingCreateParams } = await import("./client-pure-5YE5WFJP.js");
6793
- const { OpenAIHttpClient } = await import("./http-client-IPJGJXNJ.js");
6793
+ const { OpenAIHttpClient } = await import("./http-client-7QCN2R44.js");
6794
6794
  const { ensureVersionPrefix } = await import("./url-utils-SAJP7AEX.js");
6795
6795
  const profile = getModelProfile2(model);
6796
6796
  const capabilities = getBackendCapabilities(backend || "unknown");
@@ -7048,7 +7048,7 @@ All file and git operations should use this branch.
7048
7048
  });
7049
7049
  async function rebuildMcpTools() {
7050
7050
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-MOGEI6TP.js");
7051
- const { setMcpTools: setMcpTools2 } = await import("./tools-NLKP65HF.js");
7051
+ const { setMcpTools: setMcpTools2 } = await import("./tools-X7NAB4LZ.js");
7052
7052
  const mcpTools = createMcpTools2(mcpManager);
7053
7053
  setMcpTools2(mcpTools);
7054
7054
  }
@@ -7295,13 +7295,13 @@ All file and git operations should use this branch.
7295
7295
  })
7296
7296
  );
7297
7297
  app.get("/api/sessions/:id/background-processes", async (req, res) => {
7298
- const { getSessionProcesses } = await import("./manager-6UIC3QKJ.js");
7298
+ const { getSessionProcesses } = await import("./manager-X665RYDA.js");
7299
7299
  const sessionId = req.params.id;
7300
7300
  const processes = getSessionProcesses(sessionId);
7301
7301
  res.json({ processes });
7302
7302
  });
7303
7303
  app.post("/api/sessions/:id/background-process/:processId/stop", async (req, res) => {
7304
- const { stopProcess } = await import("./manager-6UIC3QKJ.js");
7304
+ const { stopProcess } = await import("./manager-X665RYDA.js");
7305
7305
  const sessionId = req.params.id;
7306
7306
  const processId = req.params.processId;
7307
7307
  const session = sessionManager.getSession(sessionId);
@@ -7444,7 +7444,7 @@ All file and git operations should use this branch.
7444
7444
  const state = sessionManager.getContextState(sessionId);
7445
7445
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
7446
7446
  });
7447
- const { QueueProcessor } = await import("./processor-FE4ZJ7GS.js");
7447
+ const { QueueProcessor } = await import("./processor-YIVQO2OY.js");
7448
7448
  const queueProcessor = new QueueProcessor({
7449
7449
  sessionManager,
7450
7450
  providerManager,
@@ -7528,4 +7528,4 @@ export {
7528
7528
  createServerHandle,
7529
7529
  createServer
7530
7530
  };
7531
- //# sourceMappingURL=chunk-5OGOPB3I.js.map
7531
+ //# sourceMappingURL=chunk-6PHUBUVH.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-47WNBFDO.js";
4
4
  import {
5
5
  getEventStore
6
- } from "./chunk-RNXMN5QY.js";
6
+ } from "./chunk-2QIYPQQH.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-3QHXJ3DJ.js.map
497
+ //# sourceMappingURL=chunk-74P4DTCU.js.map