openfox 2.0.141 → 2.0.142

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 (83) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/CHANGELOG.md +16 -0
  3. package/dist/{chat-handler-F7QRNO2E.js → chat-handler-OFB4426F.js} +26 -26
  4. package/dist/{chunk-CRJ5J7U5.js → chunk-2CEZQAGQ.js} +3 -3
  5. package/dist/{chunk-BB67GW5P.js → chunk-5CZAKVGZ.js} +12 -12
  6. package/dist/{chunk-SSHXYKW3.js → chunk-5HDPFHHJ.js} +2 -2
  7. package/dist/{chunk-CEEBKCGX.js → chunk-ACILWRPU.js} +7 -7
  8. package/dist/{chunk-TJOKDC34.js → chunk-CSUMZAYY.js} +399 -86
  9. package/dist/{chunk-EE6VFEE6.js → chunk-DNL2NUDB.js} +2 -2
  10. package/dist/{chunk-UA2ATO3B.js → chunk-DQEANXXF.js} +3 -3
  11. package/dist/{chunk-4F4ARGAM.js → chunk-DRIR2IZR.js} +3 -3
  12. package/dist/{chunk-AE2IBEUH.js → chunk-EFEHIJXF.js} +2 -2
  13. package/dist/chunk-EPZO3MGM.js +7 -0
  14. package/dist/{chunk-DBF5GKZF.js → chunk-F3R4YS3F.js} +3 -3
  15. package/dist/{chunk-RHUZLWZV.js → chunk-FFVIO6GL.js} +4 -4
  16. package/dist/{chunk-RCEGPT57.js → chunk-HQDKHNWS.js} +7 -7
  17. package/dist/{chunk-H7YL7PH3.js → chunk-J556QIRD.js} +2 -2
  18. package/dist/{chunk-DPFET73G.js → chunk-JYYBSODN.js} +2 -2
  19. package/dist/{chunk-46Q2SHGJ.js → chunk-MEPTCUYN.js} +2 -2
  20. package/dist/{chunk-YFTCFJJM.js → chunk-N5AJHJG5.js} +3 -3
  21. package/dist/{chunk-2OTUYNXD.js → chunk-NJFXYSXP.js} +5 -5
  22. package/dist/{chunk-XE6UC5Z3.js → chunk-PHR64A6U.js} +2 -2
  23. package/dist/{chunk-G7BQWMV7.js → chunk-Q5JCBAQF.js} +3 -3
  24. package/dist/{chunk-NDAXMOD2.js → chunk-RM4ZBI2B.js} +20 -20
  25. package/dist/{chunk-EMXMTCSY.js → chunk-SKNPOZYP.js} +4 -2
  26. package/dist/{chunk-PS5CHS7S.js → chunk-TEUVZCPS.js} +17 -17
  27. package/dist/{chunk-JLHYB445.js → chunk-TIIWXMGE.js} +2 -2
  28. package/dist/{chunk-UJO67GFD.js → chunk-TRZZCMJ3.js} +9 -9
  29. package/dist/{chunk-LW6MMSTD.js → chunk-VGE6UYND.js} +2 -2
  30. package/dist/{chunk-SKHU4M6L.js → chunk-VK2BSIJP.js} +121 -117
  31. package/dist/{chunk-JU757HVI.js → chunk-WOVWVB5J.js} +11 -1
  32. package/dist/{chunk-FBOIDBPA.js → chunk-WSDR27YV.js} +4 -4
  33. package/dist/{chunk-IZVIN7XC.js → chunk-XADIBENX.js} +6 -6
  34. package/dist/{chunk-GKRYQ56N.js → chunk-Z7IT3V22.js} +3 -3
  35. package/dist/cli/dev.js +1 -1
  36. package/dist/cli/index.js +1 -1
  37. package/dist/{client-KJS7QIIV.js → client-2A766XZK.js} +5 -5
  38. package/dist/{compactor-QDTK3SZI.js → compactor-3BVVHO4M.js} +11 -11
  39. package/dist/{describe-image-UFOHQIPB.js → describe-image-F22VNBWY.js} +12 -12
  40. package/dist/{dynamic-context-UEC6MMEV.js → dynamic-context-5SFXTEAP.js} +12 -12
  41. package/dist/{events-73MLUDTX.js → events-UAUOGRSV.js} +8 -8
  42. package/dist/{export-import-7I7EJKTE.js → export-import-PBEX3KWU.js} +9 -9
  43. package/dist/{folding-BXMVJIFF.js → folding-IHD244OU.js} +6 -6
  44. package/dist/http-client-RA7XFYPO.js +11 -0
  45. package/dist/{inspect-proxy-A3OROWPG.js → inspect-proxy-24Q2CNCZ.js} +4 -4
  46. package/dist/{launch-77CO4C7W.js → launch-L5NL75KK.js} +26 -26
  47. package/dist/{manager-JZNNVDYR.js → manager-4SMHCFXY.js} +5 -5
  48. package/dist/{orchestrator-IRUEM4R4.js → orchestrator-53SS74LD.js} +25 -25
  49. package/dist/package.json +1 -1
  50. package/dist/{path-security-MQXMTFRU.js → path-security-WOA6MTWQ.js} +10 -10
  51. package/dist/{platform-DBPLSLE4.js → platform-EAZNZDAE.js} +4 -4
  52. package/dist/{processor-VMUKAMG6.js → processor-T4VWZMXT.js} +25 -25
  53. package/dist/{project-creator-T3A4H3YV.js → project-creator-K5EGKY2P.js} +3 -3
  54. package/dist/{projects-5U37RUTL.js → projects-VDWCFPVE.js} +3 -3
  55. package/dist/{protocol-D6DZzkSH.d.ts → protocol-Dpf4FBF2.d.ts} +1 -1
  56. package/dist/provider/index.d.ts +4 -4
  57. package/dist/{provider-7LNTLWRB.js → provider-5XNJEDKW.js} +6 -6
  58. package/dist/{provider-manager-TV5I5YJH.js → provider-manager-RHJYUU5W.js} +6 -6
  59. package/dist/{registry-PVJAAL2Y.js → registry-C7RKKHZB.js} +5 -5
  60. package/dist/scheduler-VLTPMGGJ.js +25 -0
  61. package/dist/{serve-HTJREJEC.js → serve-LP3ZX6CW.js} +31 -31
  62. package/dist/server/index.d.ts +3 -3
  63. package/dist/server/index.js +30 -30
  64. package/dist/server-IGZLCNZG.js +61 -0
  65. package/dist/{service-7QKWUNU4.js → service-AZU4YTS2.js} +9 -9
  66. package/dist/{session-overrides-WYOY7PVC.js → session-overrides-CKS2AVE5.js} +7 -7
  67. package/dist/{sessions-U6D2T5QP.js → sessions-DAHLRQE2.js} +6 -6
  68. package/dist/{settings-HCSHADP5.js → settings-TR4BF2C4.js} +3 -3
  69. package/dist/shared/index.d.ts +3 -3
  70. package/dist/{tasks-E7EG7344.js → tasks-T5KZXKMD.js} +18 -12
  71. package/dist/{tools-F4COIAZR.js → tools-BL6XCTUV.js} +23 -23
  72. package/dist/{types-ofYNpiqi.d.ts → types-CZJf6Fnb.d.ts} +1 -1
  73. package/dist/{types-CLcL33hJ.d.ts → types-LO8296aY.d.ts} +34 -1
  74. package/dist/{update-5TGZTHLD.js → update-M5DMX3FC.js} +2 -2
  75. package/dist/web/assets/index-BPhet33M.js +313 -0
  76. package/dist/web/index.html +1 -1
  77. package/dist/web/sw.js +1 -1
  78. package/dist/{workspace-LM646OHC.js → workspace-ENN27P56.js} +4 -4
  79. package/package.json +1 -1
  80. package/dist/chunk-LDWWVUW7.js +0 -7
  81. package/dist/http-client-JVJ43TBY.js +0 -11
  82. package/dist/server-5FECIKQK.js +0 -61
  83. package/dist/web/assets/index-A0-uewf7.js +0 -313
@@ -9,7 +9,7 @@ import {
9
9
  terminalManager,
10
10
  tokenFromPassword,
11
11
  verifyPassword
12
- } from "./chunk-PS5CHS7S.js";
12
+ } from "./chunk-TEUVZCPS.js";
13
13
  import {
14
14
  projectSessionStatus
15
15
  } from "./chunk-T3S5MTMD.js";
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-IJ53Y77N.js";
28
28
  import {
29
29
  TEMPLATE_VARIABLES
30
- } from "./chunk-UJO67GFD.js";
30
+ } from "./chunk-TRZZCMJ3.js";
31
31
  import {
32
32
  createToolRegistry,
33
33
  devServerManager,
@@ -42,7 +42,7 @@ import {
42
42
  setMcpManagerForTools,
43
43
  setMcpTools,
44
44
  setNotifyMcpServersChanged
45
- } from "./chunk-NDAXMOD2.js";
45
+ } from "./chunk-RM4ZBI2B.js";
46
46
  import {
47
47
  deleteOwnedSkill,
48
48
  deleteProjectSkill,
@@ -61,7 +61,7 @@ import {
61
61
  setSkillEnabled,
62
62
  skillExists,
63
63
  updateOwnedSkill
64
- } from "./chunk-CRJ5J7U5.js";
64
+ } from "./chunk-2CEZQAGQ.js";
65
65
  import {
66
66
  checkoutBranchFromSharedSource,
67
67
  deleteWorkspace,
@@ -78,7 +78,7 @@ import {
78
78
  validateRef,
79
79
  validateWorkspaceName,
80
80
  workspaceExists
81
- } from "./chunk-XE6UC5Z3.js";
81
+ } from "./chunk-PHR64A6U.js";
82
82
  import {
83
83
  commandExists,
84
84
  deleteCommand,
@@ -106,22 +106,22 @@ import {
106
106
  saveWorkflow,
107
107
  saveWorkflowToProject,
108
108
  workflowExists
109
- } from "./chunk-TJOKDC34.js";
109
+ } from "./chunk-CSUMZAYY.js";
110
110
  import {
111
111
  clearSessionOverrides,
112
112
  computeDisabledServersForProject,
113
113
  getSessionDisabledServers,
114
114
  initSessionMcpOverrides,
115
115
  setSessionDisabledServers
116
- } from "./chunk-FBOIDBPA.js";
116
+ } from "./chunk-WSDR27YV.js";
117
117
  import {
118
118
  serverT
119
- } from "./chunk-JLHYB445.js";
119
+ } from "./chunk-TIIWXMGE.js";
120
120
  import {
121
121
  ALWAYS_ALLOWED,
122
122
  ALWAYS_ALLOWED_FOR_SUBAGENTS,
123
123
  TOP_LEVEL_ONLY_TOOLS
124
- } from "./chunk-GKRYQ56N.js";
124
+ } from "./chunk-Z7IT3V22.js";
125
125
  import {
126
126
  createMcpTools
127
127
  } from "./chunk-VIJVLLPT.js";
@@ -133,7 +133,7 @@ import {
133
133
  import {
134
134
  getPendingConfirmationsBySession,
135
135
  providePathConfirmation
136
- } from "./chunk-YFTCFJJM.js";
136
+ } from "./chunk-N5AJHJG5.js";
137
137
  import {
138
138
  combineEventsWithSnapshot,
139
139
  emitAssistantMessageStart,
@@ -151,10 +151,10 @@ import {
151
151
  getEventStore,
152
152
  getSessionState,
153
153
  initEventStore
154
- } from "./chunk-2OTUYNXD.js";
154
+ } from "./chunk-NJFXYSXP.js";
155
155
  import {
156
156
  buildMessagesFromStoredEvents
157
- } from "./chunk-AE2IBEUH.js";
157
+ } from "./chunk-EFEHIJXF.js";
158
158
  import {
159
159
  clearWorkflowExecution,
160
160
  createSession,
@@ -181,7 +181,7 @@ import {
181
181
  updateSessionRunning,
182
182
  updateSessionWorkdir,
183
183
  updateWorkflowExecutionStatus
184
- } from "./chunk-DBF5GKZF.js";
184
+ } from "./chunk-F3R4YS3F.js";
185
185
  import {
186
186
  agentExists,
187
187
  deleteAgent,
@@ -198,7 +198,7 @@ import {
198
198
  saveAgent,
199
199
  saveAgentToProject,
200
200
  setRuntimeConfig
201
- } from "./chunk-4F4ARGAM.js";
201
+ } from "./chunk-DRIR2IZR.js";
202
202
  import {
203
203
  findFileByInternalId,
204
204
  pathExists
@@ -210,25 +210,25 @@ import {
210
210
  import {
211
211
  getPathSeparator,
212
212
  isAbsolutePath
213
- } from "./chunk-46Q2SHGJ.js";
213
+ } from "./chunk-MEPTCUYN.js";
214
214
  import {
215
215
  createProviderManager,
216
216
  detectModel,
217
217
  getLlmStatus,
218
218
  parseDefaultModelSelection
219
- } from "./chunk-H7YL7PH3.js";
219
+ } from "./chunk-J556QIRD.js";
220
220
  import {
221
221
  buildOpenFoxMcpBootstrap
222
222
  } from "./chunk-YNMP647F.js";
223
223
  import {
224
224
  VERSION
225
- } from "./chunk-LDWWVUW7.js";
225
+ } from "./chunk-EPZO3MGM.js";
226
226
  import {
227
227
  deleteProject,
228
228
  getProject,
229
229
  getProjectByWorkdir,
230
230
  updateProject
231
- } from "./chunk-DPFET73G.js";
231
+ } from "./chunk-JYYBSODN.js";
232
232
  import {
233
233
  getModelProfile
234
234
  } from "./chunk-TS5WKTFB.js";
@@ -245,15 +245,15 @@ import {
245
245
  import {
246
246
  SessionNotFoundError,
247
247
  WorkspaceInUseError
248
- } from "./chunk-EE6VFEE6.js";
248
+ } from "./chunk-DNL2NUDB.js";
249
249
  import {
250
250
  deleteSetting,
251
251
  getSetting,
252
252
  setSetting
253
- } from "./chunk-EMXMTCSY.js";
253
+ } from "./chunk-SKNPOZYP.js";
254
254
  import {
255
255
  initDatabase
256
- } from "./chunk-JU757HVI.js";
256
+ } from "./chunk-WOVWVB5J.js";
257
257
  import {
258
258
  isReasoningEffortValidForModel,
259
259
  isReasoningEffortValue
@@ -3145,9 +3145,9 @@ var SessionManager = class {
3145
3145
  * @throws Error for invalid payloads or unknown project
3146
3146
  */
3147
3147
  async importSession(projectId, rawPayload) {
3148
- const { parseSessionExport, IMPORTED_SESSION_REMINDER, SESSION_EXPORT_VERSION } = await import("./export-import-7I7EJKTE.js");
3149
- const { injectContextDriftReminders, getToolSetFingerprint } = await import("./dynamic-context-UEC6MMEV.js");
3150
- const { loadAllAgentsDefault: loadAllAgentsDefault2, resolveDefaultAgentId } = await import("./registry-PVJAAL2Y.js");
3148
+ const { parseSessionExport, IMPORTED_SESSION_REMINDER, SESSION_EXPORT_VERSION } = await import("./export-import-PBEX3KWU.js");
3149
+ const { injectContextDriftReminders, getToolSetFingerprint } = await import("./dynamic-context-5SFXTEAP.js");
3150
+ const { loadAllAgentsDefault: loadAllAgentsDefault2, resolveDefaultAgentId } = await import("./registry-C7RKKHZB.js");
3151
3151
  const payload = parseSessionExport(rawPayload);
3152
3152
  if (payload.version !== SESSION_EXPORT_VERSION) {
3153
3153
  throw new Error(`Unsupported session export version: ${payload.version}`);
@@ -7246,7 +7246,7 @@ function detectWsl() {
7246
7246
  // src/server/index.ts
7247
7247
  var __dirname3 = dirname7(fileURLToPath6(import.meta.url));
7248
7248
  async function announceContextDrift(sessionManager, sessionIds) {
7249
- const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-UEC6MMEV.js");
7249
+ const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-5SFXTEAP.js");
7250
7250
  await injectContextDriftRemindersForSessions(sessionManager, sessionIds);
7251
7251
  }
7252
7252
  async function createServerHandle(config3) {
@@ -7339,7 +7339,7 @@ async function createServerHandle(config3) {
7339
7339
  }
7340
7340
  });
7341
7341
  setMcpManagerForTools(mcpManager);
7342
- const { setGlobalMcpServersProvider } = await import("./session-overrides-WYOY7PVC.js");
7342
+ const { setGlobalMcpServersProvider } = await import("./session-overrides-CKS2AVE5.js");
7343
7343
  setGlobalMcpServersProvider(
7344
7344
  () => mcpManager.getAllServers().map((s) => ({ name: s.name, disabled: s.config.disabled }))
7345
7345
  );
@@ -7362,7 +7362,7 @@ async function createServerHandle(config3) {
7362
7362
  toolRegistry = createToolRegistry();
7363
7363
  logger.info("MCP tools registered", { count: mcpTools.length });
7364
7364
  }
7365
- const { signalMcpReady } = await import("./server-5FECIKQK.js");
7365
+ const { signalMcpReady } = await import("./server-IGZLCNZG.js");
7366
7366
  signalMcpReady();
7367
7367
  }
7368
7368
  const app = express();
@@ -7464,7 +7464,7 @@ async function createServerHandle(config3) {
7464
7464
  res.json({ tools });
7465
7465
  });
7466
7466
  app.get("/api/projects", async (_req, res) => {
7467
- const { listProjects: listProjects2 } = await import("./projects-5U37RUTL.js");
7467
+ const { listProjects: listProjects2 } = await import("./projects-VDWCFPVE.js");
7468
7468
  const projects = listProjects2();
7469
7469
  res.json({ projects });
7470
7470
  });
@@ -7473,7 +7473,7 @@ async function createServerHandle(config3) {
7473
7473
  if (!name || !workdir) {
7474
7474
  return res.status(400).json({ error: "name and workdir are required" });
7475
7475
  }
7476
- const { createProjectDirectory } = await import("./project-creator-T3A4H3YV.js");
7476
+ const { createProjectDirectory } = await import("./project-creator-K5EGKY2P.js");
7477
7477
  try {
7478
7478
  const project = await createProjectDirectory(name, workdir);
7479
7479
  res.status(201).json({ project });
@@ -7518,7 +7518,7 @@ async function createServerHandle(config3) {
7518
7518
  }
7519
7519
  });
7520
7520
  app.get("/api/projects/:id", async (req, res) => {
7521
- const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7521
+ const { getProject: getProject2 } = await import("./projects-VDWCFPVE.js");
7522
7522
  const project = getProject2(req.params.id);
7523
7523
  if (!project) {
7524
7524
  return res.status(404).json({ error: "Project not found" });
@@ -7526,7 +7526,7 @@ async function createServerHandle(config3) {
7526
7526
  res.json({ project });
7527
7527
  });
7528
7528
  app.get("/api/projects/:id/open-folder", async (req, res) => {
7529
- const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7529
+ const { getProject: getProject2 } = await import("./projects-VDWCFPVE.js");
7530
7530
  const project = getProject2(req.params.id);
7531
7531
  if (!project) {
7532
7532
  return res.status(404).json({ error: "Project not found" });
@@ -7540,7 +7540,7 @@ async function createServerHandle(config3) {
7540
7540
  }
7541
7541
  });
7542
7542
  app.put("/api/projects/:id", async (req, res) => {
7543
- const { updateProject: updateProject2 } = await import("./projects-5U37RUTL.js");
7543
+ const { updateProject: updateProject2 } = await import("./projects-VDWCFPVE.js");
7544
7544
  const { name, customInstructions, dangerLevel, defaultAgent } = req.body;
7545
7545
  const updates = {};
7546
7546
  if (name !== void 0) updates.name = name;
@@ -7554,7 +7554,7 @@ async function createServerHandle(config3) {
7554
7554
  res.json({ project: updated });
7555
7555
  });
7556
7556
  app.delete("/api/projects/:id", async (req, res) => {
7557
- const { getProject: getProject2, deleteProject: deleteProject2 } = await import("./projects-5U37RUTL.js");
7557
+ const { getProject: getProject2, deleteProject: deleteProject2 } = await import("./projects-VDWCFPVE.js");
7558
7558
  const project = getProject2(req.params.id);
7559
7559
  if (!project) {
7560
7560
  return res.status(404).json({ error: "Project not found" });
@@ -7563,7 +7563,7 @@ async function createServerHandle(config3) {
7563
7563
  res.json({ success: true });
7564
7564
  });
7565
7565
  app.put("/api/projects/:id/star", async (req, res) => {
7566
- const { toggleStar } = await import("./projects-5U37RUTL.js");
7566
+ const { toggleStar } = await import("./projects-VDWCFPVE.js");
7567
7567
  const { isStarred } = req.body;
7568
7568
  if (typeof isStarred !== "boolean") {
7569
7569
  return res.status(400).json({ error: "isStarred is required and must be a boolean" });
@@ -7577,9 +7577,9 @@ async function createServerHandle(config3) {
7577
7577
  const sessionFavoriteRouter = express.Router();
7578
7578
  registerSessionFavoriteRoute(sessionFavoriteRouter, sessionManager);
7579
7579
  app.use("/api", sessionFavoriteRouter);
7580
- const { createTasksService } = await import("./service-7QKWUNU4.js");
7581
- const { registerTaskRoutes } = await import("./tasks-E7EG7344.js");
7582
- const { setTasksService } = await import("./tools-F4COIAZR.js");
7580
+ const { createTasksService } = await import("./service-AZU4YTS2.js");
7581
+ const { registerTaskRoutes } = await import("./tasks-T5KZXKMD.js");
7582
+ const { setTasksService } = await import("./tools-BL6XCTUV.js");
7583
7583
  const tasksService = createTasksService({
7584
7584
  sessionManager,
7585
7585
  config: config3,
@@ -7588,30 +7588,33 @@ async function createServerHandle(config3) {
7588
7588
  launchWorkflow: (sessionId, launch) => deferTasksLaunchWorkflow(sessionId, launch)
7589
7589
  });
7590
7590
  setTasksService(tasksService);
7591
+ const { createTaskScheduler } = await import("./scheduler-VLTPMGGJ.js");
7592
+ const taskScheduler = createTaskScheduler({ run: () => tasksService.runScheduled() });
7593
+ taskScheduler.start();
7591
7594
  const tasksRouter = express.Router();
7592
7595
  registerTaskRoutes(tasksRouter, tasksService);
7593
7596
  app.use("/api", tasksRouter);
7594
7597
  app.get("/api/projects/:id/branches", async (req, res) => {
7595
- const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7598
+ const { getProject: getProject2 } = await import("./projects-VDWCFPVE.js");
7596
7599
  const project = getProject2(req.params.id);
7597
7600
  if (!project) return res.status(404).json({ error: "Project not found" });
7598
- const { listBranches } = await import("./workspace-LM646OHC.js");
7601
+ const { listBranches } = await import("./workspace-ENN27P56.js");
7599
7602
  const branches = await listBranches(project.workdir);
7600
7603
  res.json({ branches });
7601
7604
  });
7602
7605
  app.post("/api/projects/:id/checkout", async (req, res) => {
7603
- const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7606
+ const { getProject: getProject2 } = await import("./projects-VDWCFPVE.js");
7604
7607
  const project = getProject2(req.params.id);
7605
7608
  if (!project) return res.status(404).json({ error: "Project not found" });
7606
7609
  const { branch } = req.body;
7607
7610
  if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
7608
- const { checkoutBranch, isGitRepository } = await import("./workspace-LM646OHC.js");
7611
+ const { checkoutBranch, isGitRepository } = await import("./workspace-ENN27P56.js");
7609
7612
  if (!await isGitRepository(project.workdir)) {
7610
7613
  return res.status(400).json({ error: "Project is not a git repository" });
7611
7614
  }
7612
7615
  try {
7613
7616
  await checkoutBranch(project.workdir, branch);
7614
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-U6D2T5QP.js");
7617
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-DAHLRQE2.js");
7615
7618
  const allSessions = sessionManager.listSessions();
7616
7619
  for (const s of allSessions) {
7617
7620
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -7625,12 +7628,12 @@ async function createServerHandle(config3) {
7625
7628
  }
7626
7629
  });
7627
7630
  app.post("/api/projects/:id/checkout-new", async (req, res) => {
7628
- const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7631
+ const { getProject: getProject2 } = await import("./projects-VDWCFPVE.js");
7629
7632
  const project = getProject2(req.params.id);
7630
7633
  if (!project) return res.status(404).json({ error: "Project not found" });
7631
7634
  const { name, sourceBranch } = req.body;
7632
7635
  if (!name || typeof name !== "string") return res.status(400).json({ error: "name is required" });
7633
- const { createBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, validateRef: validateRef2, getDefaultBranch, isGitRepository } = await import("./workspace-LM646OHC.js");
7636
+ const { createBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, validateRef: validateRef2, getDefaultBranch, isGitRepository } = await import("./workspace-ENN27P56.js");
7634
7637
  if (!await isGitRepository(project.workdir)) {
7635
7638
  return res.status(400).json({ error: "Project is not a git repository" });
7636
7639
  }
@@ -7647,7 +7650,7 @@ async function createServerHandle(config3) {
7647
7650
  );
7648
7651
  }
7649
7652
  await createBranch(project.workdir, name, sb);
7650
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-U6D2T5QP.js");
7653
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-DAHLRQE2.js");
7651
7654
  const allSessions = sessionManager.listSessions();
7652
7655
  for (const s of allSessions) {
7653
7656
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -7664,7 +7667,7 @@ async function createServerHandle(config3) {
7664
7667
  const session = sessionManager.getSession(req.params.id);
7665
7668
  if (!session) return res.status(404).json({ error: "Session not found" });
7666
7669
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
7667
- const { listBranches, getDefaultBranch } = await import("./workspace-LM646OHC.js");
7670
+ const { listBranches, getDefaultBranch } = await import("./workspace-ENN27P56.js");
7668
7671
  const [branches, defaultBranch] = await Promise.all([
7669
7672
  listBranches(effectiveWorkdir),
7670
7673
  getDefaultBranch(session.workdir)
@@ -7678,8 +7681,8 @@ async function createServerHandle(config3) {
7678
7681
  const { branch } = req.body;
7679
7682
  if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
7680
7683
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
7681
- const { checkoutBranch, validateRef: validateRef2 } = await import("./workspace-LM646OHC.js");
7682
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-U6D2T5QP.js");
7684
+ const { checkoutBranch, validateRef: validateRef2 } = await import("./workspace-ENN27P56.js");
7685
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-DAHLRQE2.js");
7683
7686
  try {
7684
7687
  await validateRef2(effectiveWorkdir, branch);
7685
7688
  await checkoutBranch(effectiveWorkdir, branch);
@@ -7721,16 +7724,16 @@ All file and git operations should use this branch.
7721
7724
  const { name, sourceBranch } = req.body;
7722
7725
  if (!name || typeof name !== "string") return res.status(400).json({ error: "name is required" });
7723
7726
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
7724
- const { validateRef: validateRef2 } = await import("./workspace-LM646OHC.js");
7725
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-U6D2T5QP.js");
7727
+ const { validateRef: validateRef2 } = await import("./workspace-ENN27P56.js");
7728
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-DAHLRQE2.js");
7726
7729
  try {
7727
7730
  await validateRef2(effectiveWorkdir, name);
7728
7731
  if (sourceBranch) {
7729
- const { resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, createBranch } = await import("./workspace-LM646OHC.js");
7732
+ const { resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, createBranch } = await import("./workspace-ENN27P56.js");
7730
7733
  const sb = await resolveAndValidateSourceBranch2(effectiveWorkdir, sourceBranch, session.workdir);
7731
7734
  await createBranch(effectiveWorkdir, name, sb);
7732
7735
  } else {
7733
- const { createBranch, getDefaultBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2 } = await import("./workspace-LM646OHC.js");
7736
+ const { createBranch, getDefaultBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2 } = await import("./workspace-ENN27P56.js");
7734
7737
  const defaultBranch = await getDefaultBranch(session.workdir);
7735
7738
  const sb = await resolveAndValidateSourceBranch2(effectiveWorkdir, defaultBranch, session.workdir);
7736
7739
  await createBranch(effectiveWorkdir, name, sb);
@@ -7768,17 +7771,17 @@ All file and git operations should use this branch.
7768
7771
  }
7769
7772
  });
7770
7773
  app.get("/api/projects/:id/workspaces", async (req, res) => {
7771
- const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7774
+ const { getProject: getProject2 } = await import("./projects-VDWCFPVE.js");
7772
7775
  const project = getProject2(req.params.id);
7773
7776
  if (!project) return res.status(404).json({ error: "Project not found" });
7774
- const { listWorkspaces } = await import("./workspace-LM646OHC.js");
7777
+ const { listWorkspaces } = await import("./workspace-ENN27P56.js");
7775
7778
  const all = await listWorkspaces(project.name, project.workdir);
7776
7779
  const workspacesList = all.filter((ws) => ws.path !== project.workdir);
7777
7780
  res.json({ workspaces: workspacesList });
7778
7781
  });
7779
7782
  app.get("/api/sessions", async (req, res) => {
7780
- const { getRecentUserPromptsForSession } = await import("./events-73MLUDTX.js");
7781
- const { getPendingConfirmationsBySession: getPendingConfirmationsBySession2 } = await import("./path-security-MQXMTFRU.js");
7783
+ const { getRecentUserPromptsForSession } = await import("./events-UAUOGRSV.js");
7784
+ const { getPendingConfirmationsBySession: getPendingConfirmationsBySession2 } = await import("./path-security-WOA6MTWQ.js");
7782
7785
  const projectId = req.query["projectId"];
7783
7786
  const rawLimit = req.query["limit"];
7784
7787
  const offset = parseInt(req.query["offset"]) || 0;
@@ -7860,7 +7863,7 @@ All file and git operations should use this branch.
7860
7863
  if (!target || typeof target !== "string") return res.status(400).json({ error: "target is required" });
7861
7864
  const project = sessionManager.getProject(session.projectId);
7862
7865
  if (!project) return res.status(404).json({ error: "Project not found" });
7863
- const { isGitRepository } = await import("./workspace-LM646OHC.js");
7866
+ const { isGitRepository } = await import("./workspace-ENN27P56.js");
7864
7867
  if (!await isGitRepository(project.workdir)) {
7865
7868
  return res.status(400).json({ error: "Project is not a git repository" });
7866
7869
  }
@@ -7878,7 +7881,7 @@ All file and git operations should use this branch.
7878
7881
  if (!target || typeof target !== "string") return res.status(400).json({ error: "target is required" });
7879
7882
  const project = sessionManager.getProject(session.projectId);
7880
7883
  if (!project) return res.status(404).json({ error: "Project not found" });
7881
- const { isGitRepository } = await import("./workspace-LM646OHC.js");
7884
+ const { isGitRepository } = await import("./workspace-ENN27P56.js");
7882
7885
  if (!await isGitRepository(project.workdir)) {
7883
7886
  return res.status(400).json({ error: "Project is not a git repository" });
7884
7887
  }
@@ -7896,10 +7899,10 @@ All file and git operations should use this branch.
7896
7899
  }
7897
7900
  });
7898
7901
  app.get("/api/sessions/:id", async (req, res) => {
7899
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-73MLUDTX.js");
7900
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-BXMVJIFF.js");
7901
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-F4COIAZR.js");
7902
- const { getMaxVisibleItems } = await import("./settings-HCSHADP5.js");
7902
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-UAUOGRSV.js");
7903
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-IHD244OU.js");
7904
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-BL6XCTUV.js");
7905
+ const { getMaxVisibleItems } = await import("./settings-TR4BF2C4.js");
7903
7906
  const session = sessionManager.getSession(req.params.id);
7904
7907
  if (!session) {
7905
7908
  return res.status(404).json({ error: "Session not found" });
@@ -7927,9 +7930,9 @@ All file and git operations should use this branch.
7927
7930
  });
7928
7931
  app.get("/api/sessions/:id/status", async (req, res) => {
7929
7932
  const { projectSessionStatus: projectSessionStatus2 } = await import("./session-status-UFO5IFI7.js");
7930
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-F4COIAZR.js");
7931
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-73MLUDTX.js");
7932
- const { foldPendingConfirmations } = await import("./folding-BXMVJIFF.js");
7933
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-BL6XCTUV.js");
7934
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-UAUOGRSV.js");
7935
+ const { foldPendingConfirmations } = await import("./folding-IHD244OU.js");
7933
7936
  const sessionId = req.params["id"];
7934
7937
  if (!sessionId) {
7935
7938
  return res.status(400).json({ error: "Session id is required" });
@@ -7959,8 +7962,8 @@ All file and git operations should use this branch.
7959
7962
  if (!session) {
7960
7963
  return res.status(404).json({ error: "Session not found" });
7961
7964
  }
7962
- const { stopSessionExecution } = await import("./chat-handler-F7QRNO2E.js");
7963
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-F4COIAZR.js");
7965
+ const { stopSessionExecution } = await import("./chat-handler-OFB4426F.js");
7966
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-BL6XCTUV.js");
7964
7967
  sessionManager.clearMessageQueue(sessionId);
7965
7968
  stopSessionExecution(sessionId, sessionManager);
7966
7969
  abortSession(sessionId);
@@ -7989,9 +7992,9 @@ All file and git operations should use this branch.
7989
7992
  res.json({ success: true });
7990
7993
  });
7991
7994
  app.post("/api/sessions/:id/provider", async (req, res) => {
7992
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-73MLUDTX.js");
7993
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-BXMVJIFF.js");
7994
- const { getMaxVisibleItems } = await import("./settings-HCSHADP5.js");
7995
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-UAUOGRSV.js");
7996
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-IHD244OU.js");
7997
+ const { getMaxVisibleItems } = await import("./settings-TR4BF2C4.js");
7995
7998
  const sessionId = req.params.id;
7996
7999
  const session = sessionManager.getSession(sessionId);
7997
8000
  if (!session) {
@@ -8020,9 +8023,9 @@ All file and git operations should use this branch.
8020
8023
  res.json({ session: toClientSession(updatedSession), messages, hiddenCount, contextState });
8021
8024
  });
8022
8025
  app.delete("/api/sessions/:id/provider", async (req, res) => {
8023
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-73MLUDTX.js");
8024
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-BXMVJIFF.js");
8025
- const { getMaxVisibleItems } = await import("./settings-HCSHADP5.js");
8026
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-UAUOGRSV.js");
8027
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-IHD244OU.js");
8028
+ const { getMaxVisibleItems } = await import("./settings-TR4BF2C4.js");
8026
8029
  const sessionId = req.params.id;
8027
8030
  const session = sessionManager.getSession(sessionId);
8028
8031
  if (!session) {
@@ -8154,9 +8157,9 @@ All file and git operations should use this branch.
8154
8157
  res.json({ success: true });
8155
8158
  });
8156
8159
  app.put("/api/sessions/:id/mode", async (req, res) => {
8157
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-73MLUDTX.js");
8158
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-BXMVJIFF.js");
8159
- const { getMaxVisibleItems } = await import("./settings-HCSHADP5.js");
8160
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-UAUOGRSV.js");
8161
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-IHD244OU.js");
8162
+ const { getMaxVisibleItems } = await import("./settings-TR4BF2C4.js");
8160
8163
  const sessionId = req.params.id;
8161
8164
  const session = sessionManager.getSession(sessionId);
8162
8165
  if (!session) {
@@ -8192,7 +8195,7 @@ All file and git operations should use this branch.
8192
8195
  }
8193
8196
  sessionManager.setDangerLevel(sessionId, dangerLevel);
8194
8197
  if (dangerLevel === "dangerous") {
8195
- const { autoApprovePendingConfirmationsForSession } = await import("./tools-F4COIAZR.js");
8198
+ const { autoApprovePendingConfirmationsForSession } = await import("./tools-BL6XCTUV.js");
8196
8199
  const approvedCallIds = autoApprovePendingConfirmationsForSession(sessionId);
8197
8200
  for (const callId of approvedCallIds) {
8198
8201
  wssExports.broadcastForSession(sessionId, {
@@ -8227,7 +8230,7 @@ All file and git operations should use this branch.
8227
8230
  setSessionDisabledServers(sessionId, disabledServers);
8228
8231
  const messages = session.messages ?? [];
8229
8232
  if (messages.length === 0) {
8230
- const { applyDynamicContext } = await import("./dynamic-context-UEC6MMEV.js");
8233
+ const { applyDynamicContext } = await import("./dynamic-context-5SFXTEAP.js");
8231
8234
  const modelName = session.providerModel ?? providerManager.getCurrentModel();
8232
8235
  await applyDynamicContext(sessionManager, sessionId, modelName);
8233
8236
  } else {
@@ -8261,7 +8264,7 @@ All file and git operations should use this branch.
8261
8264
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
8262
8265
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
8263
8266
  }
8264
- const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-F4COIAZR.js");
8267
+ const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-BL6XCTUV.js");
8265
8268
  const pendingSessionId = getConfirmationSessionId(callId);
8266
8269
  if (!pendingSessionId) {
8267
8270
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -8273,11 +8276,11 @@ All file and git operations should use this branch.
8273
8276
  if (!result.found) {
8274
8277
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
8275
8278
  }
8276
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-73MLUDTX.js");
8277
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-BXMVJIFF.js");
8279
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-UAUOGRSV.js");
8280
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-IHD244OU.js");
8278
8281
  const { createSessionStateMessage } = await import("./protocol-MRMOB3P4.js");
8279
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-F4COIAZR.js");
8280
- const { getMaxVisibleItems } = await import("./settings-HCSHADP5.js");
8282
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-BL6XCTUV.js");
8283
+ const { getMaxVisibleItems } = await import("./settings-TR4BF2C4.js");
8281
8284
  const eventStore = getEventStore2();
8282
8285
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
8283
8286
  const events = combineEvents(sessionId, snapshot, eventsSinceSnapshot);
@@ -8314,7 +8317,7 @@ All file and git operations should use this branch.
8314
8317
  if (!skip && typeof answer !== "string") {
8315
8318
  return res.status(400).json({ error: "answer is required when not skipping" });
8316
8319
  }
8317
- const { provideAnswer: provideAnswer2 } = await import("./tools-F4COIAZR.js");
8320
+ const { provideAnswer: provideAnswer2 } = await import("./tools-BL6XCTUV.js");
8318
8321
  const found = provideAnswer2(callId, answer ?? "", skip ?? false);
8319
8322
  if (!found) {
8320
8323
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -8347,7 +8350,7 @@ All file and git operations should use this branch.
8347
8350
  if (!session) {
8348
8351
  return res.status(404).json({ error: "Session not found" });
8349
8352
  }
8350
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-HCSHADP5.js");
8353
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-TR4BF2C4.js");
8351
8354
  if (getSetting2(SETTINGS_KEYS.CACHE_WARMING) !== "true") {
8352
8355
  return res.json({ success: false, reason: "disabled" });
8353
8356
  }
@@ -8380,7 +8383,7 @@ All file and git operations should use this branch.
8380
8383
  backend: activeProvider?.backend ?? llmClient.getBackend(),
8381
8384
  model: llmClient.getModel()
8382
8385
  };
8383
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-IRUEM4R4.js");
8386
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-53SS74LD.js");
8384
8387
  runAgentTurn(
8385
8388
  {
8386
8389
  sessionManager,
@@ -8418,15 +8421,15 @@ All file and git operations should use this branch.
8418
8421
  if (!session) {
8419
8422
  return res.status(404).json({ error: "Session not found" });
8420
8423
  }
8421
- const { stopSessionExecution } = await import("./chat-handler-F7QRNO2E.js");
8422
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-F4COIAZR.js");
8424
+ const { stopSessionExecution } = await import("./chat-handler-OFB4426F.js");
8425
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-BL6XCTUV.js");
8423
8426
  const queuedMessages = sessionManager.getQueueState(sessionId);
8424
8427
  sessionManager.clearMessageQueue(sessionId);
8425
8428
  stopSessionExecution(sessionId, sessionManager);
8426
8429
  abortSession(sessionId);
8427
8430
  cancelQuestionsForSession(sessionId, "Session stopped by user");
8428
8431
  cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
8429
- const eventStore = (await import("./events-73MLUDTX.js")).getEventStore();
8432
+ const eventStore = (await import("./events-UAUOGRSV.js")).getEventStore();
8430
8433
  eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
8431
8434
  res.json({ success: true, queuedMessages });
8432
8435
  });
@@ -8467,7 +8470,7 @@ All file and git operations should use this branch.
8467
8470
  if (typeof messageIndex !== "number" || messageIndex < 0) {
8468
8471
  return res.status(400).json({ error: "messageIndex must be a non-negative number" });
8469
8472
  }
8470
- const { truncateSessionMessages } = await import("./events-73MLUDTX.js");
8473
+ const { truncateSessionMessages } = await import("./events-UAUOGRSV.js");
8471
8474
  truncateSessionMessages(sessionId, messageIndex);
8472
8475
  res.json({ success: true });
8473
8476
  });
@@ -8487,8 +8490,8 @@ All file and git operations should use this branch.
8487
8490
  if (attachments !== void 0 && !Array.isArray(attachments)) {
8488
8491
  return res.status(400).json({ error: "attachments must be an array if provided" });
8489
8492
  }
8490
- const { getEventStore: getEventStore2 } = await import("./events-73MLUDTX.js");
8491
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-BXMVJIFF.js");
8493
+ const { getEventStore: getEventStore2 } = await import("./events-UAUOGRSV.js");
8494
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-IHD244OU.js");
8492
8495
  const eventStore = getEventStore2();
8493
8496
  const events = eventStore.getEvents(sessionId);
8494
8497
  const { messages } = buildMessagesFromStoredEvents2(events);
@@ -8500,7 +8503,7 @@ All file and git operations should use this branch.
8500
8503
  if (msg.role !== "user" || msg.isSystemGenerated) {
8501
8504
  return res.status(400).json({ error: "Can only replay user messages" });
8502
8505
  }
8503
- const { truncateSessionMessages } = await import("./events-73MLUDTX.js");
8506
+ const { truncateSessionMessages } = await import("./events-UAUOGRSV.js");
8504
8507
  truncateSessionMessages(sessionId, msgIndex - 1);
8505
8508
  sessionManager.queueMessage(
8506
8509
  sessionId,
@@ -8542,7 +8545,7 @@ All file and git operations should use this branch.
8542
8545
  return res.status(404).json({ error: "Session not found" });
8543
8546
  }
8544
8547
  try {
8545
- const { buildSessionExport } = await import("./export-import-7I7EJKTE.js");
8548
+ const { buildSessionExport } = await import("./export-import-PBEX3KWU.js");
8546
8549
  const payload = buildSessionExport(sessionManager, sessionId);
8547
8550
  const filename = `${(payload.session.title ?? "session").replace(/[^a-zA-Z0-9-_]/g, "_")}.openfox-session.json`;
8548
8551
  res.setHeader("Content-Disposition", `attachment; filename="${filename}"`);
@@ -8599,7 +8602,7 @@ All file and git operations should use this branch.
8599
8602
  res.json({ accepted: true });
8600
8603
  });
8601
8604
  app.get("/api/settings", async (req, res) => {
8602
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-HCSHADP5.js");
8605
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-TR4BF2C4.js");
8603
8606
  const keysParam = req.query["keys"];
8604
8607
  if (!keysParam) {
8605
8608
  return res.status(400).json({ error: "keys query parameter is required" });
@@ -8612,19 +8615,19 @@ All file and git operations should use this branch.
8612
8615
  res.json(result);
8613
8616
  });
8614
8617
  app.get("/api/settings/:key", async (req, res) => {
8615
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-HCSHADP5.js");
8618
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-TR4BF2C4.js");
8616
8619
  const key = req.params.key;
8617
8620
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
8618
8621
  res.json({ key, value });
8619
8622
  });
8620
8623
  app.get("/api/settings/:key", async (req, res) => {
8621
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-HCSHADP5.js");
8624
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-TR4BF2C4.js");
8622
8625
  const key = req.params.key;
8623
8626
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
8624
8627
  res.json({ key, value });
8625
8628
  });
8626
8629
  app.put("/api/settings/:key", async (req, res) => {
8627
- const { setSetting: setSetting2 } = await import("./settings-HCSHADP5.js");
8630
+ const { setSetting: setSetting2 } = await import("./settings-TR4BF2C4.js");
8628
8631
  const key = req.params.key;
8629
8632
  const { value } = req.body;
8630
8633
  if (value === void 0) {
@@ -8651,7 +8654,7 @@ All file and git operations should use this branch.
8651
8654
  }
8652
8655
  });
8653
8656
  app.get("/api/tools/shells", async (_req, res) => {
8654
- const { listAvailableShells } = await import("./platform-DBPLSLE4.js");
8657
+ const { listAvailableShells } = await import("./platform-EAZNZDAE.js");
8655
8658
  res.json({ shells: listAvailableShells() });
8656
8659
  });
8657
8660
  app.get("/api/config", async (_req, res) => {
@@ -8689,7 +8692,7 @@ All file and git operations should use this branch.
8689
8692
  defaultModelSelection: config3.defaultModelSelection,
8690
8693
  visionFallback,
8691
8694
  platform: platformInfo,
8692
- locale: (await import("./settings-HCSHADP5.js")).getSetting("display.locale") ?? "automatic"
8695
+ locale: (await import("./settings-TR4BF2C4.js")).getSetting("display.locale") ?? "automatic"
8693
8696
  });
8694
8697
  });
8695
8698
  app.post("/api/model/refresh", async (_req, res) => {
@@ -8745,7 +8748,7 @@ All file and git operations should use this branch.
8745
8748
  }));
8746
8749
  }
8747
8750
  app.post("/api/proxy/test", async (_req, res) => {
8748
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-HCSHADP5.js");
8751
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-TR4BF2C4.js");
8749
8752
  const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
8750
8753
  if (!proxyUrl) {
8751
8754
  return res.status(400).json({ success: false, error: "No proxy URL configured" });
@@ -8837,7 +8840,7 @@ All file and git operations should use this branch.
8837
8840
  }
8838
8841
  });
8839
8842
  app.post("/api/proxy/test", async (_req, res) => {
8840
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-HCSHADP5.js");
8843
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-TR4BF2C4.js");
8841
8844
  const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
8842
8845
  if (!proxyUrl) {
8843
8846
  return res.status(400).json({ success: false, error: "No proxy URL configured" });
@@ -8864,7 +8867,7 @@ All file and git operations should use this branch.
8864
8867
  const backend = req.query["backend"];
8865
8868
  if (!url) return res.status(400).json({ error: "url is required" });
8866
8869
  try {
8867
- const { fetchModelsWithContext } = await import("./provider-manager-TV5I5YJH.js");
8870
+ const { fetchModelsWithContext } = await import("./provider-manager-RHJYUU5W.js");
8868
8871
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8869
8872
  const { getCatalogEntry } = await import("./model-catalog-Y5MA5OZP.js");
8870
8873
  const models = await fetchModelsWithContext(
@@ -8939,7 +8942,7 @@ All file and git operations should use this branch.
8939
8942
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8940
8943
  const { getBackendCapabilities } = await import("./backend-EPISSWLB.js");
8941
8944
  const { buildNonStreamingCreateParams } = await import("./client-pure-YZ4IGCU4.js");
8942
- const { OpenAIHttpClient } = await import("./http-client-JVJ43TBY.js");
8945
+ const { OpenAIHttpClient } = await import("./http-client-RA7XFYPO.js");
8943
8946
  const { ensureVersionPrefix } = await import("./url-utils-C5BM7NF7.js");
8944
8947
  const profile = getModelProfile2(model);
8945
8948
  const capabilities = getBackendCapabilities(backend || "unknown");
@@ -9216,7 +9219,7 @@ All file and git operations should use this branch.
9216
9219
  if (clearedSessions > 0) {
9217
9220
  logger.info("Cleared provider from sessions of deleted provider", { providerId: id, sessions: clearedSessions });
9218
9221
  }
9219
- const { pruneFavoriteModels } = await import("./settings-HCSHADP5.js");
9222
+ const { pruneFavoriteModels } = await import("./settings-TR4BF2C4.js");
9220
9223
  pruneFavoriteModels(updatedConfig.providers);
9221
9224
  res.json({ success: true });
9222
9225
  });
@@ -9279,7 +9282,7 @@ All file and git operations should use this branch.
9279
9282
  await saveGlobalConfig(config3.mode ?? "production", updatedConfig, config3.globalConfigPath);
9280
9283
  providerManager.setProviders(updatedConfig.providers, updatedConfig.defaultModelSelection ?? void 0);
9281
9284
  config3.defaultModelSelection = updatedConfig.defaultModelSelection;
9282
- const { pruneFavoriteModels } = await import("./settings-HCSHADP5.js");
9285
+ const { pruneFavoriteModels } = await import("./settings-TR4BF2C4.js");
9283
9286
  pruneFavoriteModels(updatedConfig.providers);
9284
9287
  res.json({ success: true, provider: updatedConfig.providers.find((p) => p.id === id) });
9285
9288
  } catch (error) {
@@ -9365,7 +9368,7 @@ All file and git operations should use this branch.
9365
9368
  });
9366
9369
  async function rebuildMcpTools() {
9367
9370
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-ZY4FC4C4.js");
9368
- const { setMcpTools: setMcpTools2 } = await import("./tools-F4COIAZR.js");
9371
+ const { setMcpTools: setMcpTools2 } = await import("./tools-BL6XCTUV.js");
9369
9372
  const mcpTools = createMcpTools2(mcpManager);
9370
9373
  setMcpTools2(mcpTools);
9371
9374
  toolRegistry = createToolRegistry();
@@ -9768,7 +9771,7 @@ All file and git operations should use this branch.
9768
9771
  res.status(400).json({ error: error instanceof Error ? error.message : String(error) });
9769
9772
  }
9770
9773
  });
9771
- const { listProjects } = await import("./projects-5U37RUTL.js");
9774
+ const { listProjects } = await import("./projects-VDWCFPVE.js");
9772
9775
  const allProjects = listProjects();
9773
9776
  const projectDir = allProjects.find(
9774
9777
  (p) => p.workdir === config3.workdir || config3.workdir && p.workdir.startsWith(config3.workdir + "/")
@@ -9795,13 +9798,13 @@ All file and git operations should use this branch.
9795
9798
  })
9796
9799
  );
9797
9800
  app.get("/api/sessions/:id/background-processes", async (req, res) => {
9798
- const { getSessionProcesses } = await import("./manager-JZNNVDYR.js");
9801
+ const { getSessionProcesses } = await import("./manager-4SMHCFXY.js");
9799
9802
  const sessionId = req.params.id;
9800
9803
  const processes = getSessionProcesses(sessionId);
9801
9804
  res.json({ processes });
9802
9805
  });
9803
9806
  app.post("/api/sessions/:id/background-process/:processId/stop", async (req, res) => {
9804
- const { stopProcess } = await import("./manager-JZNNVDYR.js");
9807
+ const { stopProcess } = await import("./manager-4SMHCFXY.js");
9805
9808
  const sessionId = req.params.id;
9806
9809
  const processId = req.params.processId;
9807
9810
  const session = sessionManager.getSession(sessionId);
@@ -9941,7 +9944,7 @@ All file and git operations should use this branch.
9941
9944
  );
9942
9945
  const wss = wssExports.wss;
9943
9946
  deferTasksBroadcast = (_projectId, payload) => wssExports.broadcastAll({ type: "tasks.update", payload });
9944
- const { launchWorkflowRun, abortRunnerRun } = await import("./launch-77CO4C7W.js");
9947
+ const { launchWorkflowRun, abortRunnerRun } = await import("./launch-L5NL75KK.js");
9945
9948
  deferTasksLaunchWorkflow = (sessionId, launch) => {
9946
9949
  const effective = sessionManager.resolveEffectiveProviderModel(sessionId);
9947
9950
  let llmClient = getLLMClient();
@@ -9986,7 +9989,7 @@ All file and git operations should use this branch.
9986
9989
  const state = sessionManager.getContextState(sessionId);
9987
9990
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
9988
9991
  });
9989
- const { QueueProcessor } = await import("./processor-VMUKAMG6.js");
9992
+ const { QueueProcessor } = await import("./processor-T4VWZMXT.js");
9990
9993
  const queueProcessor = new QueueProcessor({
9991
9994
  sessionManager,
9992
9995
  providerManager,
@@ -10011,7 +10014,7 @@ All file and git operations should use this branch.
10011
10014
  sessionManager,
10012
10015
  listProjects: () => listProjects(),
10013
10016
  createProject: async (name, workdir) => {
10014
- const { createProjectDirectory } = await import("./project-creator-T3A4H3YV.js");
10017
+ const { createProjectDirectory } = await import("./project-creator-K5EGKY2P.js");
10015
10018
  return createProjectDirectory(name, workdir);
10016
10019
  },
10017
10020
  deleteProject: (projectId) => {
@@ -10028,8 +10031,8 @@ All file and git operations should use this branch.
10028
10031
  launchWorkflow: (sessionId, launch) => deferTasksLaunchWorkflow(sessionId, launch),
10029
10032
  stopSession: (sessionId) => {
10030
10033
  void (async () => {
10031
- const { stopSessionExecution } = await import("./chat-handler-F7QRNO2E.js");
10032
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-F4COIAZR.js");
10034
+ const { stopSessionExecution } = await import("./chat-handler-OFB4426F.js");
10035
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-BL6XCTUV.js");
10033
10036
  sessionManager.clearMessageQueue(sessionId);
10034
10037
  stopSessionExecution(sessionId, sessionManager);
10035
10038
  abortSession(sessionId);
@@ -10113,7 +10116,8 @@ All file and git operations should use this branch.
10113
10116
  void (async () => {
10114
10117
  await devServerManager.stopAll();
10115
10118
  await mcpManager.disconnectAll();
10116
- const { stopAllInspectProxies } = await import("./inspect-proxy-A3OROWPG.js");
10119
+ taskScheduler.stop();
10120
+ const { stopAllInspectProxies } = await import("./inspect-proxy-24Q2CNCZ.js");
10117
10121
  stopAllInspectProxies();
10118
10122
  const { cleanupAllProcesses } = await import("./store-JYPZ2RXB.js");
10119
10123
  cleanupAllProcesses();
@@ -10155,4 +10159,4 @@ export {
10155
10159
  createServerHandle,
10156
10160
  createServer
10157
10161
  };
10158
- //# sourceMappingURL=chunk-SKHU4M6L.js.map
10162
+ //# sourceMappingURL=chunk-VK2BSIJP.js.map