openfox 2.0.130 → 2.0.131

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 (73) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/CHANGELOG.md +12 -0
  3. package/dist/{chat-handler-4WCKNCQV.js → chat-handler-RAIMQU7F.js} +24 -24
  4. package/dist/{chunk-KHKRHGA6.js → chunk-55DGZIZ6.js} +4 -4
  5. package/dist/{chunk-X24XN2M2.js → chunk-5AI3LHRQ.js} +19 -19
  6. package/dist/{chunk-OXMOKQPW.js → chunk-6EZDW4JS.js} +2 -2
  7. package/dist/{chunk-DI5GTIAU.js → chunk-6MUSEPV7.js} +125 -111
  8. package/dist/{chunk-35GQEIH2.js → chunk-6SUBBT2M.js} +7 -7
  9. package/dist/{chunk-CGCEAKG5.js → chunk-7JVBDBXE.js} +2 -2
  10. package/dist/{chunk-DYIDDGMN.js → chunk-7LGMQ5KS.js} +16 -16
  11. package/dist/{chunk-64N4CZFT.js → chunk-BKMWZTNO.js} +3 -3
  12. package/dist/chunk-BMBOSVRM.js +7 -0
  13. package/dist/{chunk-3B232XG4.js → chunk-DPFET73G.js} +2 -2
  14. package/dist/{chunk-JHA2SPCU.js → chunk-ELYHHEYL.js} +3 -3
  15. package/dist/{chunk-AYCB32NI.js → chunk-FGNJMKDV.js} +5 -5
  16. package/dist/{chunk-OYBUJIC3.js → chunk-JU757HVI.js} +5 -1
  17. package/dist/{chunk-X3FHIDLT.js → chunk-KWAHD2JA.js} +13 -8
  18. package/dist/{chunk-3DZSHRXE.js → chunk-LQKXJPKP.js} +2 -2
  19. package/dist/{chunk-EHFIUXWZ.js → chunk-LW6MMSTD.js} +2 -2
  20. package/dist/{chunk-JKRMMNUR.js → chunk-M5T4RDPJ.js} +2 -2
  21. package/dist/{chunk-6QZVAOSA.js → chunk-MGEYAYGU.js} +2 -2
  22. package/dist/{chunk-DQTXXHD2.js → chunk-MQMPIXON.js} +3 -3
  23. package/dist/{chunk-DHDIKVRT.js → chunk-QJG5K3X2.js} +2 -2
  24. package/dist/{chunk-2OMXXCJJ.js → chunk-RQPHGBWI.js} +8 -8
  25. package/dist/{chunk-25DAVVTP.js → chunk-SVALN5KE.js} +44 -45
  26. package/dist/{chunk-ZRCRGPGT.js → chunk-TACWRDDC.js} +3 -3
  27. package/dist/{chunk-EVVWDRM5.js → chunk-WCM5ZW5N.js} +18 -12
  28. package/dist/{chunk-Y3BSBKHY.js → chunk-XE6UC5Z3.js} +2 -2
  29. package/dist/{chunk-VJNA5AOB.js → chunk-Y6ZGHOKM.js} +3 -3
  30. package/dist/{chunk-JSONBGSY.js → chunk-ZCFQOC3C.js} +4 -4
  31. package/dist/{chunk-VUIXQ6X4.js → chunk-ZL4IAFF3.js} +3 -3
  32. package/dist/{chunk-CYQUM42E.js → chunk-ZVHUISW7.js} +2 -2
  33. package/dist/cli/dev.js +1 -1
  34. package/dist/cli/index.js +1 -1
  35. package/dist/{client-26RSMUAX.js → client-E6QLHPHD.js} +5 -5
  36. package/dist/{compactor-HYBSSFKP.js → compactor-OEJAA2YP.js} +11 -11
  37. package/dist/{dynamic-context-2VLACYK4.js → dynamic-context-Y555VDLA.js} +14 -12
  38. package/dist/{events-D33QXGSX.js → events-ZJPRGVL2.js} +8 -8
  39. package/dist/{folding-QOKBKUU6.js → folding-QRZOHY2I.js} +6 -6
  40. package/dist/http-client-P4XTKAZA.js +11 -0
  41. package/dist/{inspect-proxy-UKPU3Z64.js → inspect-proxy-A3OROWPG.js} +4 -4
  42. package/dist/{launch-KFENN5GS.js → launch-Y4H7FDU2.js} +24 -24
  43. package/dist/{manager-VRHX7BVI.js → manager-TMBFBCQL.js} +5 -5
  44. package/dist/{orchestrator-PLTAEOMR.js → orchestrator-SQN2SJ2A.js} +23 -23
  45. package/dist/package.json +1 -1
  46. package/dist/{path-security-4WQJGU3Z.js → path-security-CBACXAMS.js} +10 -10
  47. package/dist/{platform-MWWJ6OKV.js → platform-5LQXOZO3.js} +4 -4
  48. package/dist/{processor-K4WHZKE6.js → processor-MEHODYNE.js} +23 -23
  49. package/dist/{project-creator-JF3YVQAH.js → project-creator-6AGQTNXB.js} +3 -3
  50. package/dist/{projects-TPSLCJP2.js → projects-5U37RUTL.js} +3 -3
  51. package/dist/{provider-CVM33XHW.js → provider-6YRII4IV.js} +6 -6
  52. package/dist/{provider-manager-7NL5EQLG.js → provider-manager-URNJBK5Q.js} +6 -6
  53. package/dist/{registry-KFFZFIZT.js → registry-CMSSZHDC.js} +5 -5
  54. package/dist/{serve-KQAPXO5X.js → serve-NPADSJG7.js} +29 -29
  55. package/dist/server/index.d.ts +10 -1
  56. package/dist/server/index.js +28 -28
  57. package/dist/server-5TY22HDN.js +56 -0
  58. package/dist/{service-7TLOSFAO.js → service-VPXGREXF.js} +8 -8
  59. package/dist/{session-overrides-U573CU2V.js → session-overrides-OECQYRDK.js} +7 -7
  60. package/dist/{sessions-LUVWWRFO.js → sessions-NMPX5ICI.js} +6 -6
  61. package/dist/{settings-LMAMF2X7.js → settings-MDCRNQBY.js} +3 -3
  62. package/dist/{tasks-FA6Z52H2.js → tasks-MNPXK2S5.js} +8 -8
  63. package/dist/{tools-SSPC3UQZ.js → tools-6BDT5YMT.js} +21 -21
  64. package/dist/{update-QRGK67DB.js → update-XKCOBE47.js} +2 -2
  65. package/dist/web/assets/{index-0PVQNOfW.js → index-Bx5r3aJx.js} +70 -70
  66. package/dist/web/assets/{index-Ds94aclE.css → index-Y300llHY.css} +1 -1
  67. package/dist/web/index.html +2 -2
  68. package/dist/web/sw.js +1 -1
  69. package/dist/{workspace-6CUE26YA.js → workspace-LM646OHC.js} +4 -4
  70. package/package.json +1 -1
  71. package/dist/chunk-3OBZ55SX.js +0 -7
  72. package/dist/http-client-MGAJTGPR.js +0 -11
  73. package/dist/server-RPKVKMDD.js +0 -56
@@ -24,10 +24,10 @@ import {
24
24
  terminalManager,
25
25
  tokenFromPassword,
26
26
  verifyPassword
27
- } from "./chunk-DYIDDGMN.js";
27
+ } from "./chunk-7LGMQ5KS.js";
28
28
  import {
29
29
  TEMPLATE_VARIABLES
30
- } from "./chunk-2OMXXCJJ.js";
30
+ } from "./chunk-RQPHGBWI.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-X24XN2M2.js";
45
+ } from "./chunk-5AI3LHRQ.js";
46
46
  import {
47
47
  checkoutBranchFromSharedSource,
48
48
  deleteWorkspace,
@@ -59,7 +59,7 @@ import {
59
59
  validateRef,
60
60
  validateWorkspaceName,
61
61
  workspaceExists
62
- } from "./chunk-Y3BSBKHY.js";
62
+ } from "./chunk-XE6UC5Z3.js";
63
63
  import {
64
64
  commandExists,
65
65
  deleteCommand,
@@ -87,11 +87,11 @@ import {
87
87
  saveWorkflow,
88
88
  saveWorkflowToProject,
89
89
  workflowExists
90
- } from "./chunk-JSONBGSY.js";
90
+ } from "./chunk-ZCFQOC3C.js";
91
91
  import {
92
92
  getSessionDisabledServers,
93
93
  setSessionDisabledServers
94
- } from "./chunk-ZRCRGPGT.js";
94
+ } from "./chunk-TACWRDDC.js";
95
95
  import {
96
96
  createMcpTools
97
97
  } from "./chunk-JE7LW7Y6.js";
@@ -113,12 +113,12 @@ import {
113
113
  setSkillEnabled,
114
114
  skillExists,
115
115
  updateOwnedSkill
116
- } from "./chunk-64N4CZFT.js";
116
+ } from "./chunk-BKMWZTNO.js";
117
117
  import {
118
118
  ALWAYS_ALLOWED,
119
119
  ALWAYS_ALLOWED_FOR_SUBAGENTS,
120
120
  TOP_LEVEL_ONLY_TOOLS
121
- } from "./chunk-CGCEAKG5.js";
121
+ } from "./chunk-7JVBDBXE.js";
122
122
  import {
123
123
  EventEmitter,
124
124
  getPendingQuestionsForSession,
@@ -127,7 +127,7 @@ import {
127
127
  import {
128
128
  getPendingConfirmationsBySession,
129
129
  providePathConfirmation
130
- } from "./chunk-VJNA5AOB.js";
130
+ } from "./chunk-Y6ZGHOKM.js";
131
131
  import {
132
132
  combineEventsWithSnapshot,
133
133
  emitAssistantMessageStart,
@@ -145,10 +145,10 @@ import {
145
145
  getEventStore,
146
146
  getSessionState,
147
147
  initEventStore
148
- } from "./chunk-AYCB32NI.js";
148
+ } from "./chunk-FGNJMKDV.js";
149
149
  import {
150
150
  buildMessagesFromStoredEvents
151
- } from "./chunk-JKRMMNUR.js";
151
+ } from "./chunk-M5T4RDPJ.js";
152
152
  import {
153
153
  clearWorkflowExecution,
154
154
  createSession,
@@ -174,7 +174,7 @@ import {
174
174
  updateSessionRunning,
175
175
  updateSessionWorkdir,
176
176
  updateWorkflowExecutionStatus
177
- } from "./chunk-X3FHIDLT.js";
177
+ } from "./chunk-KWAHD2JA.js";
178
178
  import {
179
179
  agentExists,
180
180
  deleteAgent,
@@ -191,7 +191,7 @@ import {
191
191
  saveAgent,
192
192
  saveAgentToProject,
193
193
  setRuntimeConfig
194
- } from "./chunk-JHA2SPCU.js";
194
+ } from "./chunk-ELYHHEYL.js";
195
195
  import {
196
196
  findFileByInternalId,
197
197
  pathExists
@@ -203,25 +203,25 @@ import {
203
203
  import {
204
204
  getPathSeparator,
205
205
  isAbsolutePath
206
- } from "./chunk-6QZVAOSA.js";
206
+ } from "./chunk-MGEYAYGU.js";
207
207
  import {
208
208
  createProviderManager,
209
209
  detectModel,
210
210
  getLlmStatus,
211
211
  parseDefaultModelSelection
212
- } from "./chunk-CYQUM42E.js";
212
+ } from "./chunk-ZVHUISW7.js";
213
213
  import {
214
214
  buildOpenFoxMcpBootstrap
215
215
  } from "./chunk-YNMP647F.js";
216
216
  import {
217
217
  VERSION
218
- } from "./chunk-3OBZ55SX.js";
218
+ } from "./chunk-BMBOSVRM.js";
219
219
  import {
220
220
  deleteProject,
221
221
  getProject,
222
222
  getProjectByWorkdir,
223
223
  updateProject
224
- } from "./chunk-3B232XG4.js";
224
+ } from "./chunk-DPFET73G.js";
225
225
  import {
226
226
  getModelProfile
227
227
  } from "./chunk-TS5WKTFB.js";
@@ -235,15 +235,15 @@ import {
235
235
  import {
236
236
  SessionNotFoundError,
237
237
  WorkspaceInUseError
238
- } from "./chunk-OXMOKQPW.js";
238
+ } from "./chunk-6EZDW4JS.js";
239
239
  import {
240
240
  deleteSetting,
241
241
  getSetting,
242
242
  setSetting
243
- } from "./chunk-3DZSHRXE.js";
243
+ } from "./chunk-LQKXJPKP.js";
244
244
  import {
245
245
  initDatabase
246
- } from "./chunk-OYBUJIC3.js";
246
+ } from "./chunk-JU757HVI.js";
247
247
  import {
248
248
  isReasoningEffortValue
249
249
  } from "./chunk-2AI7VYPN.js";
@@ -2813,6 +2813,7 @@ var SessionManager = class {
2813
2813
  dynamicContextChangedStore = /* @__PURE__ */ new Map();
2814
2814
  debugDumpStore = /* @__PURE__ */ new Map();
2815
2815
  announcedPromptHashStore = /* @__PURE__ */ new Map();
2816
+ announcedToolFingerprintStore = /* @__PURE__ */ new Map();
2816
2817
  warmedUpSessions = /* @__PURE__ */ new Set();
2817
2818
  switchLocks = /* @__PURE__ */ new Map();
2818
2819
  workspaceCreationLocks = /* @__PURE__ */ new Map();
@@ -3079,7 +3080,7 @@ var SessionManager = class {
3079
3080
  updateSessionMessageCount(newSession.id, messages.length);
3080
3081
  const cached2 = getSessionCachedPrompt(originalSessionId);
3081
3082
  if (cached2) {
3082
- updateSessionCachedPrompt(newSession.id, cached2.systemPrompt, cached2.tools, cached2.hash);
3083
+ updateSessionCachedPrompt(newSession.id, cached2.systemPrompt, cached2.tools, cached2.hash, cached2.promptHash);
3083
3084
  this.markWarmedUp(newSession.id);
3084
3085
  }
3085
3086
  this.emit({ type: "session_updated", session: this.requireSession(newSession.id) });
@@ -3149,6 +3150,8 @@ var SessionManager = class {
3149
3150
  eventStore.deleteSession(id);
3150
3151
  this.messageQueues.delete(id);
3151
3152
  this.warmedUpSessions.delete(id);
3153
+ this.announcedPromptHashStore.delete(id);
3154
+ this.announcedToolFingerprintStore.delete(id);
3152
3155
  deleteSession(id);
3153
3156
  if (this.activeSessionId === id) {
3154
3157
  this.activeSessionId = null;
@@ -3871,8 +3874,8 @@ var SessionManager = class {
3871
3874
  resetWarmup(sessionId) {
3872
3875
  this.warmedUpSessions.delete(sessionId);
3873
3876
  }
3874
- setCachedPrompt(sessionId, systemPrompt, tools, hash) {
3875
- updateSessionCachedPrompt(sessionId, systemPrompt, tools, hash);
3877
+ setCachedPrompt(sessionId, systemPrompt, tools, hash, promptHash) {
3878
+ updateSessionCachedPrompt(sessionId, systemPrompt, tools, hash, promptHash);
3876
3879
  this.resetWarmup(sessionId);
3877
3880
  }
3878
3881
  getCachedPrompt(sessionId) {
@@ -3901,6 +3904,17 @@ var SessionManager = class {
3901
3904
  setAnnouncedPromptHash(sessionId, hash) {
3902
3905
  this.announcedPromptHashStore.set(sessionId, hash);
3903
3906
  }
3907
+ /**
3908
+ * The tool fingerprint last announced to the model via a tool-change
3909
+ * reminder. Drives exactly-once tool-drift reminders WITHOUT mutating the
3910
+ * cached prefix (the cached tools stay frozen until a manual rebase).
3911
+ */
3912
+ getAnnouncedToolFingerprint(sessionId) {
3913
+ return this.announcedToolFingerprintStore.get(sessionId);
3914
+ }
3915
+ setAnnouncedToolFingerprint(sessionId, fingerprint) {
3916
+ this.announcedToolFingerprintStore.set(sessionId, fingerprint);
3917
+ }
3904
3918
  /**
3905
3919
  * @deprecated Use addTokensUsed instead
3906
3920
  */
@@ -6787,7 +6801,7 @@ function detectWsl() {
6787
6801
  // src/server/index.ts
6788
6802
  var __dirname3 = dirname7(fileURLToPath6(import.meta.url));
6789
6803
  async function announceContextDrift(sessionManager, sessionIds) {
6790
- const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-2VLACYK4.js");
6804
+ const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-Y555VDLA.js");
6791
6805
  await injectContextDriftRemindersForSessions(sessionManager, sessionIds);
6792
6806
  }
6793
6807
  async function createServerHandle(config3) {
@@ -6894,7 +6908,7 @@ async function createServerHandle(config3) {
6894
6908
  toolRegistry = createToolRegistry();
6895
6909
  logger.info("MCP tools registered", { count: mcpTools.length });
6896
6910
  }
6897
- const { signalMcpReady } = await import("./server-RPKVKMDD.js");
6911
+ const { signalMcpReady } = await import("./server-5TY22HDN.js");
6898
6912
  signalMcpReady();
6899
6913
  });
6900
6914
  const app = express();
@@ -6996,7 +7010,7 @@ async function createServerHandle(config3) {
6996
7010
  res.json({ tools });
6997
7011
  });
6998
7012
  app.get("/api/projects", async (_req, res) => {
6999
- const { listProjects: listProjects2 } = await import("./projects-TPSLCJP2.js");
7013
+ const { listProjects: listProjects2 } = await import("./projects-5U37RUTL.js");
7000
7014
  const projects = listProjects2();
7001
7015
  res.json({ projects });
7002
7016
  });
@@ -7005,7 +7019,7 @@ async function createServerHandle(config3) {
7005
7019
  if (!name || !workdir) {
7006
7020
  return res.status(400).json({ error: "name and workdir are required" });
7007
7021
  }
7008
- const { createDirectoryWithGit } = await import("./project-creator-JF3YVQAH.js");
7022
+ const { createDirectoryWithGit } = await import("./project-creator-6AGQTNXB.js");
7009
7023
  try {
7010
7024
  const project = await createDirectoryWithGit(name, workdir);
7011
7025
  res.status(201).json({ project });
@@ -7050,7 +7064,7 @@ async function createServerHandle(config3) {
7050
7064
  }
7051
7065
  });
7052
7066
  app.get("/api/projects/:id", async (req, res) => {
7053
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7067
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7054
7068
  const project = getProject2(req.params.id);
7055
7069
  if (!project) {
7056
7070
  return res.status(404).json({ error: "Project not found" });
@@ -7058,7 +7072,7 @@ async function createServerHandle(config3) {
7058
7072
  res.json({ project });
7059
7073
  });
7060
7074
  app.get("/api/projects/:id/open-folder", async (req, res) => {
7061
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7075
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7062
7076
  const project = getProject2(req.params.id);
7063
7077
  if (!project) {
7064
7078
  return res.status(404).json({ error: "Project not found" });
@@ -7072,7 +7086,7 @@ async function createServerHandle(config3) {
7072
7086
  }
7073
7087
  });
7074
7088
  app.put("/api/projects/:id", async (req, res) => {
7075
- const { updateProject: updateProject2 } = await import("./projects-TPSLCJP2.js");
7089
+ const { updateProject: updateProject2 } = await import("./projects-5U37RUTL.js");
7076
7090
  const { name, customInstructions, dangerLevel, defaultAgent } = req.body;
7077
7091
  const updates = {};
7078
7092
  if (name !== void 0) updates.name = name;
@@ -7086,7 +7100,7 @@ async function createServerHandle(config3) {
7086
7100
  res.json({ project: updated });
7087
7101
  });
7088
7102
  app.delete("/api/projects/:id", async (req, res) => {
7089
- const { getProject: getProject2, deleteProject: deleteProject2 } = await import("./projects-TPSLCJP2.js");
7103
+ const { getProject: getProject2, deleteProject: deleteProject2 } = await import("./projects-5U37RUTL.js");
7090
7104
  const project = getProject2(req.params.id);
7091
7105
  if (!project) {
7092
7106
  return res.status(404).json({ error: "Project not found" });
@@ -7095,7 +7109,7 @@ async function createServerHandle(config3) {
7095
7109
  res.json({ success: true });
7096
7110
  });
7097
7111
  app.put("/api/projects/:id/star", async (req, res) => {
7098
- const { toggleStar } = await import("./projects-TPSLCJP2.js");
7112
+ const { toggleStar } = await import("./projects-5U37RUTL.js");
7099
7113
  const { isStarred } = req.body;
7100
7114
  if (typeof isStarred !== "boolean") {
7101
7115
  return res.status(400).json({ error: "isStarred is required and must be a boolean" });
@@ -7109,9 +7123,9 @@ async function createServerHandle(config3) {
7109
7123
  const sessionFavoriteRouter = express.Router();
7110
7124
  registerSessionFavoriteRoute(sessionFavoriteRouter, sessionManager);
7111
7125
  app.use("/api", sessionFavoriteRouter);
7112
- const { createTasksService } = await import("./service-7TLOSFAO.js");
7113
- const { registerTaskRoutes } = await import("./tasks-FA6Z52H2.js");
7114
- const { setTasksService } = await import("./tools-SSPC3UQZ.js");
7126
+ const { createTasksService } = await import("./service-VPXGREXF.js");
7127
+ const { registerTaskRoutes } = await import("./tasks-MNPXK2S5.js");
7128
+ const { setTasksService } = await import("./tools-6BDT5YMT.js");
7115
7129
  const tasksService = createTasksService({
7116
7130
  sessionManager,
7117
7131
  config: config3,
@@ -7124,26 +7138,26 @@ async function createServerHandle(config3) {
7124
7138
  registerTaskRoutes(tasksRouter, tasksService);
7125
7139
  app.use("/api", tasksRouter);
7126
7140
  app.get("/api/projects/:id/branches", async (req, res) => {
7127
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7141
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7128
7142
  const project = getProject2(req.params.id);
7129
7143
  if (!project) return res.status(404).json({ error: "Project not found" });
7130
- const { listBranches } = await import("./workspace-6CUE26YA.js");
7144
+ const { listBranches } = await import("./workspace-LM646OHC.js");
7131
7145
  const branches = await listBranches(project.workdir);
7132
7146
  res.json({ branches });
7133
7147
  });
7134
7148
  app.post("/api/projects/:id/checkout", async (req, res) => {
7135
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7149
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7136
7150
  const project = getProject2(req.params.id);
7137
7151
  if (!project) return res.status(404).json({ error: "Project not found" });
7138
7152
  const { branch } = req.body;
7139
7153
  if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
7140
- const { checkoutBranch, isGitRepository } = await import("./workspace-6CUE26YA.js");
7154
+ const { checkoutBranch, isGitRepository } = await import("./workspace-LM646OHC.js");
7141
7155
  if (!await isGitRepository(project.workdir)) {
7142
7156
  return res.status(400).json({ error: "Project is not a git repository" });
7143
7157
  }
7144
7158
  try {
7145
7159
  await checkoutBranch(project.workdir, branch);
7146
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-LUVWWRFO.js");
7160
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-NMPX5ICI.js");
7147
7161
  const allSessions = sessionManager.listSessions();
7148
7162
  for (const s of allSessions) {
7149
7163
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -7157,12 +7171,12 @@ async function createServerHandle(config3) {
7157
7171
  }
7158
7172
  });
7159
7173
  app.post("/api/projects/:id/checkout-new", async (req, res) => {
7160
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7174
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7161
7175
  const project = getProject2(req.params.id);
7162
7176
  if (!project) return res.status(404).json({ error: "Project not found" });
7163
7177
  const { name, sourceBranch } = req.body;
7164
7178
  if (!name || typeof name !== "string") return res.status(400).json({ error: "name is required" });
7165
- const { createBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, validateRef: validateRef2, getDefaultBranch, isGitRepository } = await import("./workspace-6CUE26YA.js");
7179
+ const { createBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, validateRef: validateRef2, getDefaultBranch, isGitRepository } = await import("./workspace-LM646OHC.js");
7166
7180
  if (!await isGitRepository(project.workdir)) {
7167
7181
  return res.status(400).json({ error: "Project is not a git repository" });
7168
7182
  }
@@ -7179,7 +7193,7 @@ async function createServerHandle(config3) {
7179
7193
  );
7180
7194
  }
7181
7195
  await createBranch(project.workdir, name, sb);
7182
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-LUVWWRFO.js");
7196
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-NMPX5ICI.js");
7183
7197
  const allSessions = sessionManager.listSessions();
7184
7198
  for (const s of allSessions) {
7185
7199
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -7196,7 +7210,7 @@ async function createServerHandle(config3) {
7196
7210
  const session = sessionManager.getSession(req.params.id);
7197
7211
  if (!session) return res.status(404).json({ error: "Session not found" });
7198
7212
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
7199
- const { listBranches, getDefaultBranch } = await import("./workspace-6CUE26YA.js");
7213
+ const { listBranches, getDefaultBranch } = await import("./workspace-LM646OHC.js");
7200
7214
  const [branches, defaultBranch] = await Promise.all([
7201
7215
  listBranches(effectiveWorkdir),
7202
7216
  getDefaultBranch(session.workdir)
@@ -7210,8 +7224,8 @@ async function createServerHandle(config3) {
7210
7224
  const { branch } = req.body;
7211
7225
  if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
7212
7226
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
7213
- const { checkoutBranch, validateRef: validateRef2 } = await import("./workspace-6CUE26YA.js");
7214
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-LUVWWRFO.js");
7227
+ const { checkoutBranch, validateRef: validateRef2 } = await import("./workspace-LM646OHC.js");
7228
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-NMPX5ICI.js");
7215
7229
  try {
7216
7230
  await validateRef2(effectiveWorkdir, branch);
7217
7231
  await checkoutBranch(effectiveWorkdir, branch);
@@ -7253,16 +7267,16 @@ All file and git operations should use this branch.
7253
7267
  const { name, sourceBranch } = req.body;
7254
7268
  if (!name || typeof name !== "string") return res.status(400).json({ error: "name is required" });
7255
7269
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
7256
- const { validateRef: validateRef2 } = await import("./workspace-6CUE26YA.js");
7257
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-LUVWWRFO.js");
7270
+ const { validateRef: validateRef2 } = await import("./workspace-LM646OHC.js");
7271
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-NMPX5ICI.js");
7258
7272
  try {
7259
7273
  await validateRef2(effectiveWorkdir, name);
7260
7274
  if (sourceBranch) {
7261
- const { resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, createBranch } = await import("./workspace-6CUE26YA.js");
7275
+ const { resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, createBranch } = await import("./workspace-LM646OHC.js");
7262
7276
  const sb = await resolveAndValidateSourceBranch2(effectiveWorkdir, sourceBranch, session.workdir);
7263
7277
  await createBranch(effectiveWorkdir, name, sb);
7264
7278
  } else {
7265
- const { createBranch, getDefaultBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2 } = await import("./workspace-6CUE26YA.js");
7279
+ const { createBranch, getDefaultBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2 } = await import("./workspace-LM646OHC.js");
7266
7280
  const defaultBranch = await getDefaultBranch(session.workdir);
7267
7281
  const sb = await resolveAndValidateSourceBranch2(effectiveWorkdir, defaultBranch, session.workdir);
7268
7282
  await createBranch(effectiveWorkdir, name, sb);
@@ -7300,17 +7314,17 @@ All file and git operations should use this branch.
7300
7314
  }
7301
7315
  });
7302
7316
  app.get("/api/projects/:id/workspaces", async (req, res) => {
7303
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7317
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7304
7318
  const project = getProject2(req.params.id);
7305
7319
  if (!project) return res.status(404).json({ error: "Project not found" });
7306
- const { listWorkspaces } = await import("./workspace-6CUE26YA.js");
7320
+ const { listWorkspaces } = await import("./workspace-LM646OHC.js");
7307
7321
  const all = await listWorkspaces(project.name, project.workdir);
7308
7322
  const workspacesList = all.filter((ws) => ws.path !== project.workdir);
7309
7323
  res.json({ workspaces: workspacesList });
7310
7324
  });
7311
7325
  app.get("/api/sessions", async (req, res) => {
7312
- const { getRecentUserPromptsForSession } = await import("./events-D33QXGSX.js");
7313
- const { getPendingConfirmationsBySession: getPendingConfirmationsBySession2 } = await import("./path-security-4WQJGU3Z.js");
7326
+ const { getRecentUserPromptsForSession } = await import("./events-ZJPRGVL2.js");
7327
+ const { getPendingConfirmationsBySession: getPendingConfirmationsBySession2 } = await import("./path-security-CBACXAMS.js");
7314
7328
  const projectId = req.query["projectId"];
7315
7329
  const rawLimit = req.query["limit"];
7316
7330
  const offset = parseInt(req.query["offset"]) || 0;
@@ -7365,7 +7379,7 @@ All file and git operations should use this branch.
7365
7379
  disabledServers = mcpManager.getAllServers().filter((s) => s.config.disabled).map((s) => s.name);
7366
7380
  }
7367
7381
  if (disabledServers.length > 0) {
7368
- const { setSessionDisabledServers: setSessionDisabledServers2 } = await import("./session-overrides-U573CU2V.js");
7382
+ const { setSessionDisabledServers: setSessionDisabledServers2 } = await import("./session-overrides-OECQYRDK.js");
7369
7383
  setSessionDisabledServers2(session.id, disabledServers);
7370
7384
  }
7371
7385
  } catch {
@@ -7402,7 +7416,7 @@ All file and git operations should use this branch.
7402
7416
  if (!target || typeof target !== "string") return res.status(400).json({ error: "target is required" });
7403
7417
  const project = sessionManager.getProject(session.projectId);
7404
7418
  if (!project) return res.status(404).json({ error: "Project not found" });
7405
- const { isGitRepository } = await import("./workspace-6CUE26YA.js");
7419
+ const { isGitRepository } = await import("./workspace-LM646OHC.js");
7406
7420
  if (!await isGitRepository(project.workdir)) {
7407
7421
  return res.status(400).json({ error: "Project is not a git repository" });
7408
7422
  }
@@ -7420,7 +7434,7 @@ All file and git operations should use this branch.
7420
7434
  if (!target || typeof target !== "string") return res.status(400).json({ error: "target is required" });
7421
7435
  const project = sessionManager.getProject(session.projectId);
7422
7436
  if (!project) return res.status(404).json({ error: "Project not found" });
7423
- const { isGitRepository } = await import("./workspace-6CUE26YA.js");
7437
+ const { isGitRepository } = await import("./workspace-LM646OHC.js");
7424
7438
  if (!await isGitRepository(project.workdir)) {
7425
7439
  return res.status(400).json({ error: "Project is not a git repository" });
7426
7440
  }
@@ -7438,10 +7452,10 @@ All file and git operations should use this branch.
7438
7452
  }
7439
7453
  });
7440
7454
  app.get("/api/sessions/:id", async (req, res) => {
7441
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-D33QXGSX.js");
7442
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-QOKBKUU6.js");
7443
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-SSPC3UQZ.js");
7444
- const { getMaxVisibleItems } = await import("./settings-LMAMF2X7.js");
7455
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-ZJPRGVL2.js");
7456
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-QRZOHY2I.js");
7457
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-6BDT5YMT.js");
7458
+ const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
7445
7459
  const session = sessionManager.getSession(req.params.id);
7446
7460
  if (!session) {
7447
7461
  return res.status(404).json({ error: "Session not found" });
@@ -7469,9 +7483,9 @@ All file and git operations should use this branch.
7469
7483
  });
7470
7484
  app.get("/api/sessions/:id/status", async (req, res) => {
7471
7485
  const { projectSessionStatus: projectSessionStatus2 } = await import("./session-status-UFO5IFI7.js");
7472
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-SSPC3UQZ.js");
7473
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-D33QXGSX.js");
7474
- const { foldPendingConfirmations } = await import("./folding-QOKBKUU6.js");
7486
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-6BDT5YMT.js");
7487
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-ZJPRGVL2.js");
7488
+ const { foldPendingConfirmations } = await import("./folding-QRZOHY2I.js");
7475
7489
  const sessionId = req.params["id"];
7476
7490
  if (!sessionId) {
7477
7491
  return res.status(400).json({ error: "Session id is required" });
@@ -7501,8 +7515,8 @@ All file and git operations should use this branch.
7501
7515
  if (!session) {
7502
7516
  return res.status(404).json({ error: "Session not found" });
7503
7517
  }
7504
- const { stopSessionExecution } = await import("./chat-handler-4WCKNCQV.js");
7505
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-SSPC3UQZ.js");
7518
+ const { stopSessionExecution } = await import("./chat-handler-RAIMQU7F.js");
7519
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-6BDT5YMT.js");
7506
7520
  sessionManager.clearMessageQueue(sessionId);
7507
7521
  stopSessionExecution(sessionId, sessionManager);
7508
7522
  abortSession(sessionId);
@@ -7531,9 +7545,9 @@ All file and git operations should use this branch.
7531
7545
  res.json({ success: true });
7532
7546
  });
7533
7547
  app.post("/api/sessions/:id/provider", async (req, res) => {
7534
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-D33QXGSX.js");
7535
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QOKBKUU6.js");
7536
- const { getMaxVisibleItems } = await import("./settings-LMAMF2X7.js");
7548
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-ZJPRGVL2.js");
7549
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QRZOHY2I.js");
7550
+ const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
7537
7551
  const sessionId = req.params.id;
7538
7552
  const session = sessionManager.getSession(sessionId);
7539
7553
  if (!session) {
@@ -7561,9 +7575,9 @@ All file and git operations should use this branch.
7561
7575
  res.json({ session: toClientSession(updatedSession), messages, hiddenCount, contextState });
7562
7576
  });
7563
7577
  app.delete("/api/sessions/:id/provider", async (req, res) => {
7564
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-D33QXGSX.js");
7565
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QOKBKUU6.js");
7566
- const { getMaxVisibleItems } = await import("./settings-LMAMF2X7.js");
7578
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-ZJPRGVL2.js");
7579
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QRZOHY2I.js");
7580
+ const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
7567
7581
  const sessionId = req.params.id;
7568
7582
  const session = sessionManager.getSession(sessionId);
7569
7583
  if (!session) {
@@ -7693,9 +7707,9 @@ All file and git operations should use this branch.
7693
7707
  res.json({ success: true });
7694
7708
  });
7695
7709
  app.put("/api/sessions/:id/mode", async (req, res) => {
7696
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-D33QXGSX.js");
7697
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QOKBKUU6.js");
7698
- const { getMaxVisibleItems } = await import("./settings-LMAMF2X7.js");
7710
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-ZJPRGVL2.js");
7711
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QRZOHY2I.js");
7712
+ const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
7699
7713
  const sessionId = req.params.id;
7700
7714
  const session = sessionManager.getSession(sessionId);
7701
7715
  if (!session) {
@@ -7755,7 +7769,7 @@ All file and git operations should use this branch.
7755
7769
  setSessionDisabledServers(sessionId, disabledServers);
7756
7770
  const messages = session.messages ?? [];
7757
7771
  if (messages.length === 0) {
7758
- const { applyDynamicContext } = await import("./dynamic-context-2VLACYK4.js");
7772
+ const { applyDynamicContext } = await import("./dynamic-context-Y555VDLA.js");
7759
7773
  const modelName = session.providerModel ?? providerManager.getCurrentModel();
7760
7774
  await applyDynamicContext(sessionManager, sessionId, modelName);
7761
7775
  } else {
@@ -7789,7 +7803,7 @@ All file and git operations should use this branch.
7789
7803
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
7790
7804
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
7791
7805
  }
7792
- const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-SSPC3UQZ.js");
7806
+ const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-6BDT5YMT.js");
7793
7807
  const pendingSessionId = getConfirmationSessionId(callId);
7794
7808
  if (!pendingSessionId) {
7795
7809
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -7801,11 +7815,11 @@ All file and git operations should use this branch.
7801
7815
  if (!result.found) {
7802
7816
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
7803
7817
  }
7804
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-D33QXGSX.js");
7805
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-QOKBKUU6.js");
7818
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-ZJPRGVL2.js");
7819
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-QRZOHY2I.js");
7806
7820
  const { createSessionStateMessage } = await import("./protocol-Y7MRKRUO.js");
7807
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-SSPC3UQZ.js");
7808
- const { getMaxVisibleItems } = await import("./settings-LMAMF2X7.js");
7821
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-6BDT5YMT.js");
7822
+ const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
7809
7823
  const eventStore = getEventStore2();
7810
7824
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
7811
7825
  const events = combineEvents(sessionId, snapshot, eventsSinceSnapshot);
@@ -7842,7 +7856,7 @@ All file and git operations should use this branch.
7842
7856
  if (!skip && typeof answer !== "string") {
7843
7857
  return res.status(400).json({ error: "answer is required when not skipping" });
7844
7858
  }
7845
- const { provideAnswer: provideAnswer2 } = await import("./tools-SSPC3UQZ.js");
7859
+ const { provideAnswer: provideAnswer2 } = await import("./tools-6BDT5YMT.js");
7846
7860
  const found = provideAnswer2(callId, answer ?? "", skip ?? false);
7847
7861
  if (!found) {
7848
7862
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -7875,7 +7889,7 @@ All file and git operations should use this branch.
7875
7889
  if (!session) {
7876
7890
  return res.status(404).json({ error: "Session not found" });
7877
7891
  }
7878
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-LMAMF2X7.js");
7892
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-MDCRNQBY.js");
7879
7893
  if (getSetting2(SETTINGS_KEYS.CACHE_WARMING) !== "true") {
7880
7894
  return res.json({ success: false, reason: "disabled" });
7881
7895
  }
@@ -7908,7 +7922,7 @@ All file and git operations should use this branch.
7908
7922
  backend: activeProvider?.backend ?? llmClient.getBackend(),
7909
7923
  model: llmClient.getModel()
7910
7924
  };
7911
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-PLTAEOMR.js");
7925
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-SQN2SJ2A.js");
7912
7926
  runAgentTurn(
7913
7927
  {
7914
7928
  sessionManager,
@@ -7946,15 +7960,15 @@ All file and git operations should use this branch.
7946
7960
  if (!session) {
7947
7961
  return res.status(404).json({ error: "Session not found" });
7948
7962
  }
7949
- const { stopSessionExecution } = await import("./chat-handler-4WCKNCQV.js");
7950
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-SSPC3UQZ.js");
7963
+ const { stopSessionExecution } = await import("./chat-handler-RAIMQU7F.js");
7964
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-6BDT5YMT.js");
7951
7965
  const queuedMessages = sessionManager.getQueueState(sessionId);
7952
7966
  sessionManager.clearMessageQueue(sessionId);
7953
7967
  stopSessionExecution(sessionId, sessionManager);
7954
7968
  abortSession(sessionId);
7955
7969
  cancelQuestionsForSession(sessionId, "Session stopped by user");
7956
7970
  cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
7957
- const eventStore = (await import("./events-D33QXGSX.js")).getEventStore();
7971
+ const eventStore = (await import("./events-ZJPRGVL2.js")).getEventStore();
7958
7972
  eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
7959
7973
  res.json({ success: true, queuedMessages });
7960
7974
  });
@@ -7968,7 +7982,7 @@ All file and git operations should use this branch.
7968
7982
  if (typeof messageIndex !== "number" || messageIndex < 0) {
7969
7983
  return res.status(400).json({ error: "messageIndex must be a non-negative number" });
7970
7984
  }
7971
- const { truncateSessionMessages } = await import("./events-D33QXGSX.js");
7985
+ const { truncateSessionMessages } = await import("./events-ZJPRGVL2.js");
7972
7986
  truncateSessionMessages(sessionId, messageIndex);
7973
7987
  res.json({ success: true });
7974
7988
  });
@@ -7988,8 +8002,8 @@ All file and git operations should use this branch.
7988
8002
  if (attachments !== void 0 && !Array.isArray(attachments)) {
7989
8003
  return res.status(400).json({ error: "attachments must be an array if provided" });
7990
8004
  }
7991
- const { getEventStore: getEventStore2 } = await import("./events-D33QXGSX.js");
7992
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QOKBKUU6.js");
8005
+ const { getEventStore: getEventStore2 } = await import("./events-ZJPRGVL2.js");
8006
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QRZOHY2I.js");
7993
8007
  const eventStore = getEventStore2();
7994
8008
  const events = eventStore.getEvents(sessionId);
7995
8009
  const { messages } = buildMessagesFromStoredEvents2(events);
@@ -8001,7 +8015,7 @@ All file and git operations should use this branch.
8001
8015
  if (msg.role !== "user" || msg.isSystemGenerated) {
8002
8016
  return res.status(400).json({ error: "Can only replay user messages" });
8003
8017
  }
8004
- const { truncateSessionMessages } = await import("./events-D33QXGSX.js");
8018
+ const { truncateSessionMessages } = await import("./events-ZJPRGVL2.js");
8005
8019
  truncateSessionMessages(sessionId, msgIndex - 1);
8006
8020
  sessionManager.queueMessage(
8007
8021
  sessionId,
@@ -8063,7 +8077,7 @@ All file and git operations should use this branch.
8063
8077
  res.json({ accepted: true });
8064
8078
  });
8065
8079
  app.get("/api/settings", async (req, res) => {
8066
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-LMAMF2X7.js");
8080
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-MDCRNQBY.js");
8067
8081
  const keysParam = req.query["keys"];
8068
8082
  if (!keysParam) {
8069
8083
  return res.status(400).json({ error: "keys query parameter is required" });
@@ -8076,19 +8090,19 @@ All file and git operations should use this branch.
8076
8090
  res.json(result);
8077
8091
  });
8078
8092
  app.get("/api/settings/:key", async (req, res) => {
8079
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-LMAMF2X7.js");
8093
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-MDCRNQBY.js");
8080
8094
  const key = req.params.key;
8081
8095
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
8082
8096
  res.json({ key, value });
8083
8097
  });
8084
8098
  app.get("/api/settings/:key", async (req, res) => {
8085
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-LMAMF2X7.js");
8099
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-MDCRNQBY.js");
8086
8100
  const key = req.params.key;
8087
8101
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
8088
8102
  res.json({ key, value });
8089
8103
  });
8090
8104
  app.put("/api/settings/:key", async (req, res) => {
8091
- const { setSetting: setSetting2 } = await import("./settings-LMAMF2X7.js");
8105
+ const { setSetting: setSetting2 } = await import("./settings-MDCRNQBY.js");
8092
8106
  const key = req.params.key;
8093
8107
  const { value } = req.body;
8094
8108
  if (value === void 0) {
@@ -8115,7 +8129,7 @@ All file and git operations should use this branch.
8115
8129
  }
8116
8130
  });
8117
8131
  app.get("/api/tools/shells", async (_req, res) => {
8118
- const { listAvailableShells } = await import("./platform-MWWJ6OKV.js");
8132
+ const { listAvailableShells } = await import("./platform-5LQXOZO3.js");
8119
8133
  res.json({ shells: listAvailableShells() });
8120
8134
  });
8121
8135
  app.get("/api/config", async (_req, res) => {
@@ -8208,7 +8222,7 @@ All file and git operations should use this branch.
8208
8222
  }));
8209
8223
  }
8210
8224
  app.post("/api/proxy/test", async (_req, res) => {
8211
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-LMAMF2X7.js");
8225
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-MDCRNQBY.js");
8212
8226
  const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
8213
8227
  if (!proxyUrl) {
8214
8228
  return res.status(400).json({ success: false, error: "No proxy URL configured" });
@@ -8300,7 +8314,7 @@ All file and git operations should use this branch.
8300
8314
  }
8301
8315
  });
8302
8316
  app.post("/api/proxy/test", async (_req, res) => {
8303
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-LMAMF2X7.js");
8317
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-MDCRNQBY.js");
8304
8318
  const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
8305
8319
  if (!proxyUrl) {
8306
8320
  return res.status(400).json({ success: false, error: "No proxy URL configured" });
@@ -8327,7 +8341,7 @@ All file and git operations should use this branch.
8327
8341
  const backend = req.query["backend"];
8328
8342
  if (!url) return res.status(400).json({ error: "url is required" });
8329
8343
  try {
8330
- const { fetchModelsWithContext } = await import("./provider-manager-7NL5EQLG.js");
8344
+ const { fetchModelsWithContext } = await import("./provider-manager-URNJBK5Q.js");
8331
8345
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8332
8346
  const { getCatalogEntry } = await import("./model-catalog-2PCKTYGW.js");
8333
8347
  const models = await fetchModelsWithContext(
@@ -8402,7 +8416,7 @@ All file and git operations should use this branch.
8402
8416
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8403
8417
  const { getBackendCapabilities } = await import("./backend-NDBY3DAQ.js");
8404
8418
  const { buildNonStreamingCreateParams } = await import("./client-pure-FLKP6PTI.js");
8405
- const { OpenAIHttpClient } = await import("./http-client-MGAJTGPR.js");
8419
+ const { OpenAIHttpClient } = await import("./http-client-P4XTKAZA.js");
8406
8420
  const { ensureVersionPrefix } = await import("./url-utils-C5BM7NF7.js");
8407
8421
  const profile = getModelProfile2(model);
8408
8422
  const capabilities = getBackendCapabilities(backend || "unknown");
@@ -8819,7 +8833,7 @@ All file and git operations should use this branch.
8819
8833
  });
8820
8834
  async function rebuildMcpTools() {
8821
8835
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-FJAFLDZA.js");
8822
- const { setMcpTools: setMcpTools2 } = await import("./tools-SSPC3UQZ.js");
8836
+ const { setMcpTools: setMcpTools2 } = await import("./tools-6BDT5YMT.js");
8823
8837
  const mcpTools = createMcpTools2(mcpManager);
8824
8838
  setMcpTools2(mcpTools);
8825
8839
  toolRegistry = createToolRegistry();
@@ -9222,7 +9236,7 @@ All file and git operations should use this branch.
9222
9236
  res.status(400).json({ error: error instanceof Error ? error.message : String(error) });
9223
9237
  }
9224
9238
  });
9225
- const { listProjects } = await import("./projects-TPSLCJP2.js");
9239
+ const { listProjects } = await import("./projects-5U37RUTL.js");
9226
9240
  const allProjects = listProjects();
9227
9241
  const projectDir = allProjects.find(
9228
9242
  (p) => p.workdir === config3.workdir || config3.workdir && p.workdir.startsWith(config3.workdir + "/")
@@ -9249,13 +9263,13 @@ All file and git operations should use this branch.
9249
9263
  })
9250
9264
  );
9251
9265
  app.get("/api/sessions/:id/background-processes", async (req, res) => {
9252
- const { getSessionProcesses } = await import("./manager-VRHX7BVI.js");
9266
+ const { getSessionProcesses } = await import("./manager-TMBFBCQL.js");
9253
9267
  const sessionId = req.params.id;
9254
9268
  const processes = getSessionProcesses(sessionId);
9255
9269
  res.json({ processes });
9256
9270
  });
9257
9271
  app.post("/api/sessions/:id/background-process/:processId/stop", async (req, res) => {
9258
- const { stopProcess } = await import("./manager-VRHX7BVI.js");
9272
+ const { stopProcess } = await import("./manager-TMBFBCQL.js");
9259
9273
  const sessionId = req.params.id;
9260
9274
  const processId = req.params.processId;
9261
9275
  const session = sessionManager.getSession(sessionId);
@@ -9395,7 +9409,7 @@ All file and git operations should use this branch.
9395
9409
  );
9396
9410
  const wss = wssExports.wss;
9397
9411
  deferTasksBroadcast = (projectId, payload) => wssExports.broadcastForProject(projectId, "", { type: "tasks.update", payload });
9398
- const { launchWorkflowRun, abortRunnerRun } = await import("./launch-KFENN5GS.js");
9412
+ const { launchWorkflowRun, abortRunnerRun } = await import("./launch-Y4H7FDU2.js");
9399
9413
  deferTasksLaunchWorkflow = (sessionId, launch) => {
9400
9414
  const effective = sessionManager.resolveEffectiveProviderModel(sessionId);
9401
9415
  let llmClient = getLLMClient();
@@ -9440,7 +9454,7 @@ All file and git operations should use this branch.
9440
9454
  const state = sessionManager.getContextState(sessionId);
9441
9455
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
9442
9456
  });
9443
- const { QueueProcessor } = await import("./processor-K4WHZKE6.js");
9457
+ const { QueueProcessor } = await import("./processor-MEHODYNE.js");
9444
9458
  const queueProcessor = new QueueProcessor({
9445
9459
  sessionManager,
9446
9460
  providerManager,
@@ -9465,7 +9479,7 @@ All file and git operations should use this branch.
9465
9479
  sessionManager,
9466
9480
  listProjects: () => listProjects(),
9467
9481
  createProject: async (name, workdir) => {
9468
- const { createDirectoryWithGit } = await import("./project-creator-JF3YVQAH.js");
9482
+ const { createDirectoryWithGit } = await import("./project-creator-6AGQTNXB.js");
9469
9483
  return createDirectoryWithGit(name, workdir);
9470
9484
  },
9471
9485
  deleteProject: (projectId) => {
@@ -9482,8 +9496,8 @@ All file and git operations should use this branch.
9482
9496
  launchWorkflow: (sessionId, launch) => deferTasksLaunchWorkflow(sessionId, launch),
9483
9497
  stopSession: (sessionId) => {
9484
9498
  void (async () => {
9485
- const { stopSessionExecution } = await import("./chat-handler-4WCKNCQV.js");
9486
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-SSPC3UQZ.js");
9499
+ const { stopSessionExecution } = await import("./chat-handler-RAIMQU7F.js");
9500
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-6BDT5YMT.js");
9487
9501
  sessionManager.clearMessageQueue(sessionId);
9488
9502
  stopSessionExecution(sessionId, sessionManager);
9489
9503
  abortSession(sessionId);
@@ -9562,7 +9576,7 @@ All file and git operations should use this branch.
9562
9576
  void (async () => {
9563
9577
  await devServerManager.stopAll();
9564
9578
  await mcpManager.disconnectAll();
9565
- const { stopAllInspectProxies } = await import("./inspect-proxy-UKPU3Z64.js");
9579
+ const { stopAllInspectProxies } = await import("./inspect-proxy-A3OROWPG.js");
9566
9580
  stopAllInspectProxies();
9567
9581
  const { cleanupAllProcesses } = await import("./store-JYPZ2RXB.js");
9568
9582
  cleanupAllProcesses();
@@ -9604,4 +9618,4 @@ export {
9604
9618
  createServerHandle,
9605
9619
  createServer
9606
9620
  };
9607
- //# sourceMappingURL=chunk-DI5GTIAU.js.map
9621
+ //# sourceMappingURL=chunk-6MUSEPV7.js.map