openfox 2.0.130 → 2.0.132

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 +23 -0
  2. package/dist/CHANGELOG.md +23 -0
  3. package/dist/{chat-handler-4WCKNCQV.js → chat-handler-T47GATL5.js} +24 -24
  4. package/dist/chunk-55RHB5JB.js +7 -0
  5. package/dist/{chunk-CYQUM42E.js → chunk-5JWJEZJ3.js} +2 -2
  6. package/dist/{chunk-OXMOKQPW.js → chunk-6EZDW4JS.js} +2 -2
  7. package/dist/{chunk-CGCEAKG5.js → chunk-7JVBDBXE.js} +2 -2
  8. package/dist/{chunk-64N4CZFT.js → chunk-BKMWZTNO.js} +3 -3
  9. package/dist/{chunk-DHDIKVRT.js → chunk-CLDCHOEA.js} +3 -3
  10. package/dist/{chunk-3B232XG4.js → chunk-DPFET73G.js} +2 -2
  11. package/dist/{chunk-JHA2SPCU.js → chunk-ELYHHEYL.js} +3 -3
  12. package/dist/{chunk-KHKRHGA6.js → chunk-EOHEDEIH.js} +4 -4
  13. package/dist/{chunk-JSONBGSY.js → chunk-FEIRWXLX.js} +4 -4
  14. package/dist/{chunk-AYCB32NI.js → chunk-FGNJMKDV.js} +5 -5
  15. package/dist/{chunk-EVVWDRM5.js → chunk-GFW2HWJ6.js} +18 -12
  16. package/dist/{chunk-2OMXXCJJ.js → chunk-GVOOOV7M.js} +8 -8
  17. package/dist/{chunk-X24XN2M2.js → chunk-HXHPKGJE.js} +19 -19
  18. package/dist/{chunk-OYBUJIC3.js → chunk-JU757HVI.js} +5 -1
  19. package/dist/{chunk-X3FHIDLT.js → chunk-KWAHD2JA.js} +13 -8
  20. package/dist/{chunk-3DZSHRXE.js → chunk-LQKXJPKP.js} +2 -2
  21. package/dist/{chunk-EHFIUXWZ.js → chunk-LW6MMSTD.js} +2 -2
  22. package/dist/{chunk-JKRMMNUR.js → chunk-M5T4RDPJ.js} +2 -2
  23. package/dist/{chunk-6QZVAOSA.js → chunk-MGEYAYGU.js} +2 -2
  24. package/dist/{chunk-DQTXXHD2.js → chunk-MQMPIXON.js} +3 -3
  25. package/dist/{chunk-35GQEIH2.js → chunk-RRUSYVQD.js} +7 -7
  26. package/dist/{chunk-DYIDDGMN.js → chunk-RUFXKUOL.js} +16 -16
  27. package/dist/{chunk-ZRCRGPGT.js → chunk-TACWRDDC.js} +3 -3
  28. package/dist/{chunk-25DAVVTP.js → chunk-VXG3AFFY.js} +46 -48
  29. package/dist/{chunk-Y3BSBKHY.js → chunk-XE6UC5Z3.js} +2 -2
  30. package/dist/{chunk-VJNA5AOB.js → chunk-Y6ZGHOKM.js} +3 -3
  31. package/dist/{chunk-VUIXQ6X4.js → chunk-ZL4IAFF3.js} +3 -3
  32. package/dist/{chunk-DI5GTIAU.js → chunk-ZSBNXJZ5.js} +132 -115
  33. package/dist/cli/dev.js +1 -1
  34. package/dist/cli/index.js +1 -1
  35. package/dist/{client-26RSMUAX.js → client-2K6PPPJJ.js} +5 -5
  36. package/dist/{compactor-HYBSSFKP.js → compactor-OEJAA2YP.js} +11 -11
  37. package/dist/{dynamic-context-2VLACYK4.js → dynamic-context-NJZKAZE3.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-6I5ADTVT.js} +24 -24
  43. package/dist/{manager-VRHX7BVI.js → manager-TMBFBCQL.js} +5 -5
  44. package/dist/{orchestrator-PLTAEOMR.js → orchestrator-GX22Y5EM.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-FMEULCNQ.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-NWRGNGS3.js} +6 -6
  52. package/dist/{provider-manager-7NL5EQLG.js → provider-manager-BO5ZBG3T.js} +6 -6
  53. package/dist/{registry-KFFZFIZT.js → registry-CMSSZHDC.js} +5 -5
  54. package/dist/{serve-KQAPXO5X.js → serve-BFGHUM4Y.js} +29 -29
  55. package/dist/server/index.d.ts +10 -1
  56. package/dist/server/index.js +28 -28
  57. package/dist/server-WPWUYB6I.js +56 -0
  58. package/dist/{service-7TLOSFAO.js → service-O3LCO3TQ.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-WOC3QUFA.js} +8 -8
  63. package/dist/{tools-SSPC3UQZ.js → tools-CW6POKUL.js} +21 -21
  64. package/dist/{update-QRGK67DB.js → update-VPCDKFLD.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-RUFXKUOL.js";
28
28
  import {
29
29
  TEMPLATE_VARIABLES
30
- } from "./chunk-2OMXXCJJ.js";
30
+ } from "./chunk-GVOOOV7M.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-HXHPKGJE.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-FEIRWXLX.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-5JWJEZJ3.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-55RHB5JB.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";
@@ -2801,11 +2801,14 @@ function canCompact(currentTokens, maxTokens) {
2801
2801
 
2802
2802
  // src/server/session/manager.ts
2803
2803
  var WORKSPACE_COMMIT_RECIPE = `
2804
- To land changes from this workspace into the original repo (its origin is the local repo itself):
2804
+ To land changes from this workspace when the user asks to commit and push:
2805
2805
  1. Commit your work.
2806
- 2. If the original repo has this branch checked out, a direct push is refused \u2014 push to a temp branch, then in the original repo merge it back and clean up: \`git push origin HEAD:<feature-slug>\` then \`git merge --ff-only <feature-slug> && git branch -d <feature-slug>\`
2807
- 3. If the original repo is on a different branch, push directly instead: \`git push origin <branch>\`
2808
- 4. To reach the remote, push from the original repo: \`git push origin <branch>\``;
2806
+ 2. Push to the original repo on a temporary branch (its origin is the local repo itself): \`git push origin HEAD:<feature-slug>\`
2807
+ 3. Switch back to the original project: \`workspace switch original\`
2808
+ 4. Merge the temporary branch and delete it: \`git merge --ff-only <feature-slug> && git branch -d <feature-slug>\`
2809
+ 5. Verify the work is present in the original repo.
2810
+ 6. Delete the workspace \u2014 it can be recreated at any time: \`workspace delete <name> force=true\`
2811
+ 7. Push to the remote from the original repo: \`git push origin <branch>\``;
2809
2812
  var SessionManager = class {
2810
2813
  events = new EventEmitter();
2811
2814
  activeSessionId = null;
@@ -2813,6 +2816,7 @@ var SessionManager = class {
2813
2816
  dynamicContextChangedStore = /* @__PURE__ */ new Map();
2814
2817
  debugDumpStore = /* @__PURE__ */ new Map();
2815
2818
  announcedPromptHashStore = /* @__PURE__ */ new Map();
2819
+ announcedToolFingerprintStore = /* @__PURE__ */ new Map();
2816
2820
  warmedUpSessions = /* @__PURE__ */ new Set();
2817
2821
  switchLocks = /* @__PURE__ */ new Map();
2818
2822
  workspaceCreationLocks = /* @__PURE__ */ new Map();
@@ -3079,7 +3083,7 @@ var SessionManager = class {
3079
3083
  updateSessionMessageCount(newSession.id, messages.length);
3080
3084
  const cached2 = getSessionCachedPrompt(originalSessionId);
3081
3085
  if (cached2) {
3082
- updateSessionCachedPrompt(newSession.id, cached2.systemPrompt, cached2.tools, cached2.hash);
3086
+ updateSessionCachedPrompt(newSession.id, cached2.systemPrompt, cached2.tools, cached2.hash, cached2.promptHash);
3083
3087
  this.markWarmedUp(newSession.id);
3084
3088
  }
3085
3089
  this.emit({ type: "session_updated", session: this.requireSession(newSession.id) });
@@ -3149,6 +3153,8 @@ var SessionManager = class {
3149
3153
  eventStore.deleteSession(id);
3150
3154
  this.messageQueues.delete(id);
3151
3155
  this.warmedUpSessions.delete(id);
3156
+ this.announcedPromptHashStore.delete(id);
3157
+ this.announcedToolFingerprintStore.delete(id);
3152
3158
  deleteSession(id);
3153
3159
  if (this.activeSessionId === id) {
3154
3160
  this.activeSessionId = null;
@@ -3871,8 +3877,8 @@ var SessionManager = class {
3871
3877
  resetWarmup(sessionId) {
3872
3878
  this.warmedUpSessions.delete(sessionId);
3873
3879
  }
3874
- setCachedPrompt(sessionId, systemPrompt, tools, hash) {
3875
- updateSessionCachedPrompt(sessionId, systemPrompt, tools, hash);
3880
+ setCachedPrompt(sessionId, systemPrompt, tools, hash, promptHash) {
3881
+ updateSessionCachedPrompt(sessionId, systemPrompt, tools, hash, promptHash);
3876
3882
  this.resetWarmup(sessionId);
3877
3883
  }
3878
3884
  getCachedPrompt(sessionId) {
@@ -3901,6 +3907,17 @@ var SessionManager = class {
3901
3907
  setAnnouncedPromptHash(sessionId, hash) {
3902
3908
  this.announcedPromptHashStore.set(sessionId, hash);
3903
3909
  }
3910
+ /**
3911
+ * The tool fingerprint last announced to the model via a tool-change
3912
+ * reminder. Drives exactly-once tool-drift reminders WITHOUT mutating the
3913
+ * cached prefix (the cached tools stay frozen until a manual rebase).
3914
+ */
3915
+ getAnnouncedToolFingerprint(sessionId) {
3916
+ return this.announcedToolFingerprintStore.get(sessionId);
3917
+ }
3918
+ setAnnouncedToolFingerprint(sessionId, fingerprint) {
3919
+ this.announcedToolFingerprintStore.set(sessionId, fingerprint);
3920
+ }
3904
3921
  /**
3905
3922
  * @deprecated Use addTokensUsed instead
3906
3923
  */
@@ -6787,7 +6804,7 @@ function detectWsl() {
6787
6804
  // src/server/index.ts
6788
6805
  var __dirname3 = dirname7(fileURLToPath6(import.meta.url));
6789
6806
  async function announceContextDrift(sessionManager, sessionIds) {
6790
- const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-2VLACYK4.js");
6807
+ const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-NJZKAZE3.js");
6791
6808
  await injectContextDriftRemindersForSessions(sessionManager, sessionIds);
6792
6809
  }
6793
6810
  async function createServerHandle(config3) {
@@ -6894,7 +6911,7 @@ async function createServerHandle(config3) {
6894
6911
  toolRegistry = createToolRegistry();
6895
6912
  logger.info("MCP tools registered", { count: mcpTools.length });
6896
6913
  }
6897
- const { signalMcpReady } = await import("./server-RPKVKMDD.js");
6914
+ const { signalMcpReady } = await import("./server-WPWUYB6I.js");
6898
6915
  signalMcpReady();
6899
6916
  });
6900
6917
  const app = express();
@@ -6996,7 +7013,7 @@ async function createServerHandle(config3) {
6996
7013
  res.json({ tools });
6997
7014
  });
6998
7015
  app.get("/api/projects", async (_req, res) => {
6999
- const { listProjects: listProjects2 } = await import("./projects-TPSLCJP2.js");
7016
+ const { listProjects: listProjects2 } = await import("./projects-5U37RUTL.js");
7000
7017
  const projects = listProjects2();
7001
7018
  res.json({ projects });
7002
7019
  });
@@ -7005,7 +7022,7 @@ async function createServerHandle(config3) {
7005
7022
  if (!name || !workdir) {
7006
7023
  return res.status(400).json({ error: "name and workdir are required" });
7007
7024
  }
7008
- const { createDirectoryWithGit } = await import("./project-creator-JF3YVQAH.js");
7025
+ const { createDirectoryWithGit } = await import("./project-creator-6AGQTNXB.js");
7009
7026
  try {
7010
7027
  const project = await createDirectoryWithGit(name, workdir);
7011
7028
  res.status(201).json({ project });
@@ -7050,7 +7067,7 @@ async function createServerHandle(config3) {
7050
7067
  }
7051
7068
  });
7052
7069
  app.get("/api/projects/:id", async (req, res) => {
7053
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7070
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7054
7071
  const project = getProject2(req.params.id);
7055
7072
  if (!project) {
7056
7073
  return res.status(404).json({ error: "Project not found" });
@@ -7058,7 +7075,7 @@ async function createServerHandle(config3) {
7058
7075
  res.json({ project });
7059
7076
  });
7060
7077
  app.get("/api/projects/:id/open-folder", async (req, res) => {
7061
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7078
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7062
7079
  const project = getProject2(req.params.id);
7063
7080
  if (!project) {
7064
7081
  return res.status(404).json({ error: "Project not found" });
@@ -7072,7 +7089,7 @@ async function createServerHandle(config3) {
7072
7089
  }
7073
7090
  });
7074
7091
  app.put("/api/projects/:id", async (req, res) => {
7075
- const { updateProject: updateProject2 } = await import("./projects-TPSLCJP2.js");
7092
+ const { updateProject: updateProject2 } = await import("./projects-5U37RUTL.js");
7076
7093
  const { name, customInstructions, dangerLevel, defaultAgent } = req.body;
7077
7094
  const updates = {};
7078
7095
  if (name !== void 0) updates.name = name;
@@ -7086,7 +7103,7 @@ async function createServerHandle(config3) {
7086
7103
  res.json({ project: updated });
7087
7104
  });
7088
7105
  app.delete("/api/projects/:id", async (req, res) => {
7089
- const { getProject: getProject2, deleteProject: deleteProject2 } = await import("./projects-TPSLCJP2.js");
7106
+ const { getProject: getProject2, deleteProject: deleteProject2 } = await import("./projects-5U37RUTL.js");
7090
7107
  const project = getProject2(req.params.id);
7091
7108
  if (!project) {
7092
7109
  return res.status(404).json({ error: "Project not found" });
@@ -7095,7 +7112,7 @@ async function createServerHandle(config3) {
7095
7112
  res.json({ success: true });
7096
7113
  });
7097
7114
  app.put("/api/projects/:id/star", async (req, res) => {
7098
- const { toggleStar } = await import("./projects-TPSLCJP2.js");
7115
+ const { toggleStar } = await import("./projects-5U37RUTL.js");
7099
7116
  const { isStarred } = req.body;
7100
7117
  if (typeof isStarred !== "boolean") {
7101
7118
  return res.status(400).json({ error: "isStarred is required and must be a boolean" });
@@ -7109,9 +7126,9 @@ async function createServerHandle(config3) {
7109
7126
  const sessionFavoriteRouter = express.Router();
7110
7127
  registerSessionFavoriteRoute(sessionFavoriteRouter, sessionManager);
7111
7128
  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");
7129
+ const { createTasksService } = await import("./service-O3LCO3TQ.js");
7130
+ const { registerTaskRoutes } = await import("./tasks-WOC3QUFA.js");
7131
+ const { setTasksService } = await import("./tools-CW6POKUL.js");
7115
7132
  const tasksService = createTasksService({
7116
7133
  sessionManager,
7117
7134
  config: config3,
@@ -7124,26 +7141,26 @@ async function createServerHandle(config3) {
7124
7141
  registerTaskRoutes(tasksRouter, tasksService);
7125
7142
  app.use("/api", tasksRouter);
7126
7143
  app.get("/api/projects/:id/branches", async (req, res) => {
7127
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7144
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7128
7145
  const project = getProject2(req.params.id);
7129
7146
  if (!project) return res.status(404).json({ error: "Project not found" });
7130
- const { listBranches } = await import("./workspace-6CUE26YA.js");
7147
+ const { listBranches } = await import("./workspace-LM646OHC.js");
7131
7148
  const branches = await listBranches(project.workdir);
7132
7149
  res.json({ branches });
7133
7150
  });
7134
7151
  app.post("/api/projects/:id/checkout", async (req, res) => {
7135
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7152
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7136
7153
  const project = getProject2(req.params.id);
7137
7154
  if (!project) return res.status(404).json({ error: "Project not found" });
7138
7155
  const { branch } = req.body;
7139
7156
  if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
7140
- const { checkoutBranch, isGitRepository } = await import("./workspace-6CUE26YA.js");
7157
+ const { checkoutBranch, isGitRepository } = await import("./workspace-LM646OHC.js");
7141
7158
  if (!await isGitRepository(project.workdir)) {
7142
7159
  return res.status(400).json({ error: "Project is not a git repository" });
7143
7160
  }
7144
7161
  try {
7145
7162
  await checkoutBranch(project.workdir, branch);
7146
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-LUVWWRFO.js");
7163
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-NMPX5ICI.js");
7147
7164
  const allSessions = sessionManager.listSessions();
7148
7165
  for (const s of allSessions) {
7149
7166
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -7157,12 +7174,12 @@ async function createServerHandle(config3) {
7157
7174
  }
7158
7175
  });
7159
7176
  app.post("/api/projects/:id/checkout-new", async (req, res) => {
7160
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7177
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7161
7178
  const project = getProject2(req.params.id);
7162
7179
  if (!project) return res.status(404).json({ error: "Project not found" });
7163
7180
  const { name, sourceBranch } = req.body;
7164
7181
  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");
7182
+ const { createBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, validateRef: validateRef2, getDefaultBranch, isGitRepository } = await import("./workspace-LM646OHC.js");
7166
7183
  if (!await isGitRepository(project.workdir)) {
7167
7184
  return res.status(400).json({ error: "Project is not a git repository" });
7168
7185
  }
@@ -7179,7 +7196,7 @@ async function createServerHandle(config3) {
7179
7196
  );
7180
7197
  }
7181
7198
  await createBranch(project.workdir, name, sb);
7182
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-LUVWWRFO.js");
7199
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-NMPX5ICI.js");
7183
7200
  const allSessions = sessionManager.listSessions();
7184
7201
  for (const s of allSessions) {
7185
7202
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -7196,7 +7213,7 @@ async function createServerHandle(config3) {
7196
7213
  const session = sessionManager.getSession(req.params.id);
7197
7214
  if (!session) return res.status(404).json({ error: "Session not found" });
7198
7215
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
7199
- const { listBranches, getDefaultBranch } = await import("./workspace-6CUE26YA.js");
7216
+ const { listBranches, getDefaultBranch } = await import("./workspace-LM646OHC.js");
7200
7217
  const [branches, defaultBranch] = await Promise.all([
7201
7218
  listBranches(effectiveWorkdir),
7202
7219
  getDefaultBranch(session.workdir)
@@ -7210,8 +7227,8 @@ async function createServerHandle(config3) {
7210
7227
  const { branch } = req.body;
7211
7228
  if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
7212
7229
  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");
7230
+ const { checkoutBranch, validateRef: validateRef2 } = await import("./workspace-LM646OHC.js");
7231
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-NMPX5ICI.js");
7215
7232
  try {
7216
7233
  await validateRef2(effectiveWorkdir, branch);
7217
7234
  await checkoutBranch(effectiveWorkdir, branch);
@@ -7253,16 +7270,16 @@ All file and git operations should use this branch.
7253
7270
  const { name, sourceBranch } = req.body;
7254
7271
  if (!name || typeof name !== "string") return res.status(400).json({ error: "name is required" });
7255
7272
  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");
7273
+ const { validateRef: validateRef2 } = await import("./workspace-LM646OHC.js");
7274
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-NMPX5ICI.js");
7258
7275
  try {
7259
7276
  await validateRef2(effectiveWorkdir, name);
7260
7277
  if (sourceBranch) {
7261
- const { resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, createBranch } = await import("./workspace-6CUE26YA.js");
7278
+ const { resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, createBranch } = await import("./workspace-LM646OHC.js");
7262
7279
  const sb = await resolveAndValidateSourceBranch2(effectiveWorkdir, sourceBranch, session.workdir);
7263
7280
  await createBranch(effectiveWorkdir, name, sb);
7264
7281
  } else {
7265
- const { createBranch, getDefaultBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2 } = await import("./workspace-6CUE26YA.js");
7282
+ const { createBranch, getDefaultBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2 } = await import("./workspace-LM646OHC.js");
7266
7283
  const defaultBranch = await getDefaultBranch(session.workdir);
7267
7284
  const sb = await resolveAndValidateSourceBranch2(effectiveWorkdir, defaultBranch, session.workdir);
7268
7285
  await createBranch(effectiveWorkdir, name, sb);
@@ -7300,17 +7317,17 @@ All file and git operations should use this branch.
7300
7317
  }
7301
7318
  });
7302
7319
  app.get("/api/projects/:id/workspaces", async (req, res) => {
7303
- const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
7320
+ const { getProject: getProject2 } = await import("./projects-5U37RUTL.js");
7304
7321
  const project = getProject2(req.params.id);
7305
7322
  if (!project) return res.status(404).json({ error: "Project not found" });
7306
- const { listWorkspaces } = await import("./workspace-6CUE26YA.js");
7323
+ const { listWorkspaces } = await import("./workspace-LM646OHC.js");
7307
7324
  const all = await listWorkspaces(project.name, project.workdir);
7308
7325
  const workspacesList = all.filter((ws) => ws.path !== project.workdir);
7309
7326
  res.json({ workspaces: workspacesList });
7310
7327
  });
7311
7328
  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");
7329
+ const { getRecentUserPromptsForSession } = await import("./events-ZJPRGVL2.js");
7330
+ const { getPendingConfirmationsBySession: getPendingConfirmationsBySession2 } = await import("./path-security-CBACXAMS.js");
7314
7331
  const projectId = req.query["projectId"];
7315
7332
  const rawLimit = req.query["limit"];
7316
7333
  const offset = parseInt(req.query["offset"]) || 0;
@@ -7365,7 +7382,7 @@ All file and git operations should use this branch.
7365
7382
  disabledServers = mcpManager.getAllServers().filter((s) => s.config.disabled).map((s) => s.name);
7366
7383
  }
7367
7384
  if (disabledServers.length > 0) {
7368
- const { setSessionDisabledServers: setSessionDisabledServers2 } = await import("./session-overrides-U573CU2V.js");
7385
+ const { setSessionDisabledServers: setSessionDisabledServers2 } = await import("./session-overrides-OECQYRDK.js");
7369
7386
  setSessionDisabledServers2(session.id, disabledServers);
7370
7387
  }
7371
7388
  } catch {
@@ -7402,7 +7419,7 @@ All file and git operations should use this branch.
7402
7419
  if (!target || typeof target !== "string") return res.status(400).json({ error: "target is required" });
7403
7420
  const project = sessionManager.getProject(session.projectId);
7404
7421
  if (!project) return res.status(404).json({ error: "Project not found" });
7405
- const { isGitRepository } = await import("./workspace-6CUE26YA.js");
7422
+ const { isGitRepository } = await import("./workspace-LM646OHC.js");
7406
7423
  if (!await isGitRepository(project.workdir)) {
7407
7424
  return res.status(400).json({ error: "Project is not a git repository" });
7408
7425
  }
@@ -7420,7 +7437,7 @@ All file and git operations should use this branch.
7420
7437
  if (!target || typeof target !== "string") return res.status(400).json({ error: "target is required" });
7421
7438
  const project = sessionManager.getProject(session.projectId);
7422
7439
  if (!project) return res.status(404).json({ error: "Project not found" });
7423
- const { isGitRepository } = await import("./workspace-6CUE26YA.js");
7440
+ const { isGitRepository } = await import("./workspace-LM646OHC.js");
7424
7441
  if (!await isGitRepository(project.workdir)) {
7425
7442
  return res.status(400).json({ error: "Project is not a git repository" });
7426
7443
  }
@@ -7438,10 +7455,10 @@ All file and git operations should use this branch.
7438
7455
  }
7439
7456
  });
7440
7457
  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");
7458
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-ZJPRGVL2.js");
7459
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-QRZOHY2I.js");
7460
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-CW6POKUL.js");
7461
+ const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
7445
7462
  const session = sessionManager.getSession(req.params.id);
7446
7463
  if (!session) {
7447
7464
  return res.status(404).json({ error: "Session not found" });
@@ -7469,9 +7486,9 @@ All file and git operations should use this branch.
7469
7486
  });
7470
7487
  app.get("/api/sessions/:id/status", async (req, res) => {
7471
7488
  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");
7489
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-CW6POKUL.js");
7490
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-ZJPRGVL2.js");
7491
+ const { foldPendingConfirmations } = await import("./folding-QRZOHY2I.js");
7475
7492
  const sessionId = req.params["id"];
7476
7493
  if (!sessionId) {
7477
7494
  return res.status(400).json({ error: "Session id is required" });
@@ -7501,8 +7518,8 @@ All file and git operations should use this branch.
7501
7518
  if (!session) {
7502
7519
  return res.status(404).json({ error: "Session not found" });
7503
7520
  }
7504
- const { stopSessionExecution } = await import("./chat-handler-4WCKNCQV.js");
7505
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-SSPC3UQZ.js");
7521
+ const { stopSessionExecution } = await import("./chat-handler-T47GATL5.js");
7522
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-CW6POKUL.js");
7506
7523
  sessionManager.clearMessageQueue(sessionId);
7507
7524
  stopSessionExecution(sessionId, sessionManager);
7508
7525
  abortSession(sessionId);
@@ -7531,9 +7548,9 @@ All file and git operations should use this branch.
7531
7548
  res.json({ success: true });
7532
7549
  });
7533
7550
  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");
7551
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-ZJPRGVL2.js");
7552
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QRZOHY2I.js");
7553
+ const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
7537
7554
  const sessionId = req.params.id;
7538
7555
  const session = sessionManager.getSession(sessionId);
7539
7556
  if (!session) {
@@ -7561,9 +7578,9 @@ All file and git operations should use this branch.
7561
7578
  res.json({ session: toClientSession(updatedSession), messages, hiddenCount, contextState });
7562
7579
  });
7563
7580
  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");
7581
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-ZJPRGVL2.js");
7582
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QRZOHY2I.js");
7583
+ const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
7567
7584
  const sessionId = req.params.id;
7568
7585
  const session = sessionManager.getSession(sessionId);
7569
7586
  if (!session) {
@@ -7693,9 +7710,9 @@ All file and git operations should use this branch.
7693
7710
  res.json({ success: true });
7694
7711
  });
7695
7712
  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");
7713
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-ZJPRGVL2.js");
7714
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QRZOHY2I.js");
7715
+ const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
7699
7716
  const sessionId = req.params.id;
7700
7717
  const session = sessionManager.getSession(sessionId);
7701
7718
  if (!session) {
@@ -7755,7 +7772,7 @@ All file and git operations should use this branch.
7755
7772
  setSessionDisabledServers(sessionId, disabledServers);
7756
7773
  const messages = session.messages ?? [];
7757
7774
  if (messages.length === 0) {
7758
- const { applyDynamicContext } = await import("./dynamic-context-2VLACYK4.js");
7775
+ const { applyDynamicContext } = await import("./dynamic-context-NJZKAZE3.js");
7759
7776
  const modelName = session.providerModel ?? providerManager.getCurrentModel();
7760
7777
  await applyDynamicContext(sessionManager, sessionId, modelName);
7761
7778
  } else {
@@ -7789,7 +7806,7 @@ All file and git operations should use this branch.
7789
7806
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
7790
7807
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
7791
7808
  }
7792
- const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-SSPC3UQZ.js");
7809
+ const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-CW6POKUL.js");
7793
7810
  const pendingSessionId = getConfirmationSessionId(callId);
7794
7811
  if (!pendingSessionId) {
7795
7812
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -7801,11 +7818,11 @@ All file and git operations should use this branch.
7801
7818
  if (!result.found) {
7802
7819
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
7803
7820
  }
7804
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-D33QXGSX.js");
7805
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-QOKBKUU6.js");
7821
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-ZJPRGVL2.js");
7822
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-QRZOHY2I.js");
7806
7823
  const { createSessionStateMessage } = await import("./protocol-Y7MRKRUO.js");
7807
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-SSPC3UQZ.js");
7808
- const { getMaxVisibleItems } = await import("./settings-LMAMF2X7.js");
7824
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-CW6POKUL.js");
7825
+ const { getMaxVisibleItems } = await import("./settings-MDCRNQBY.js");
7809
7826
  const eventStore = getEventStore2();
7810
7827
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
7811
7828
  const events = combineEvents(sessionId, snapshot, eventsSinceSnapshot);
@@ -7842,7 +7859,7 @@ All file and git operations should use this branch.
7842
7859
  if (!skip && typeof answer !== "string") {
7843
7860
  return res.status(400).json({ error: "answer is required when not skipping" });
7844
7861
  }
7845
- const { provideAnswer: provideAnswer2 } = await import("./tools-SSPC3UQZ.js");
7862
+ const { provideAnswer: provideAnswer2 } = await import("./tools-CW6POKUL.js");
7846
7863
  const found = provideAnswer2(callId, answer ?? "", skip ?? false);
7847
7864
  if (!found) {
7848
7865
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -7875,7 +7892,7 @@ All file and git operations should use this branch.
7875
7892
  if (!session) {
7876
7893
  return res.status(404).json({ error: "Session not found" });
7877
7894
  }
7878
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-LMAMF2X7.js");
7895
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-MDCRNQBY.js");
7879
7896
  if (getSetting2(SETTINGS_KEYS.CACHE_WARMING) !== "true") {
7880
7897
  return res.json({ success: false, reason: "disabled" });
7881
7898
  }
@@ -7908,7 +7925,7 @@ All file and git operations should use this branch.
7908
7925
  backend: activeProvider?.backend ?? llmClient.getBackend(),
7909
7926
  model: llmClient.getModel()
7910
7927
  };
7911
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-PLTAEOMR.js");
7928
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-GX22Y5EM.js");
7912
7929
  runAgentTurn(
7913
7930
  {
7914
7931
  sessionManager,
@@ -7946,15 +7963,15 @@ All file and git operations should use this branch.
7946
7963
  if (!session) {
7947
7964
  return res.status(404).json({ error: "Session not found" });
7948
7965
  }
7949
- const { stopSessionExecution } = await import("./chat-handler-4WCKNCQV.js");
7950
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-SSPC3UQZ.js");
7966
+ const { stopSessionExecution } = await import("./chat-handler-T47GATL5.js");
7967
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-CW6POKUL.js");
7951
7968
  const queuedMessages = sessionManager.getQueueState(sessionId);
7952
7969
  sessionManager.clearMessageQueue(sessionId);
7953
7970
  stopSessionExecution(sessionId, sessionManager);
7954
7971
  abortSession(sessionId);
7955
7972
  cancelQuestionsForSession(sessionId, "Session stopped by user");
7956
7973
  cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
7957
- const eventStore = (await import("./events-D33QXGSX.js")).getEventStore();
7974
+ const eventStore = (await import("./events-ZJPRGVL2.js")).getEventStore();
7958
7975
  eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
7959
7976
  res.json({ success: true, queuedMessages });
7960
7977
  });
@@ -7968,7 +7985,7 @@ All file and git operations should use this branch.
7968
7985
  if (typeof messageIndex !== "number" || messageIndex < 0) {
7969
7986
  return res.status(400).json({ error: "messageIndex must be a non-negative number" });
7970
7987
  }
7971
- const { truncateSessionMessages } = await import("./events-D33QXGSX.js");
7988
+ const { truncateSessionMessages } = await import("./events-ZJPRGVL2.js");
7972
7989
  truncateSessionMessages(sessionId, messageIndex);
7973
7990
  res.json({ success: true });
7974
7991
  });
@@ -7988,8 +8005,8 @@ All file and git operations should use this branch.
7988
8005
  if (attachments !== void 0 && !Array.isArray(attachments)) {
7989
8006
  return res.status(400).json({ error: "attachments must be an array if provided" });
7990
8007
  }
7991
- const { getEventStore: getEventStore2 } = await import("./events-D33QXGSX.js");
7992
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QOKBKUU6.js");
8008
+ const { getEventStore: getEventStore2 } = await import("./events-ZJPRGVL2.js");
8009
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-QRZOHY2I.js");
7993
8010
  const eventStore = getEventStore2();
7994
8011
  const events = eventStore.getEvents(sessionId);
7995
8012
  const { messages } = buildMessagesFromStoredEvents2(events);
@@ -8001,7 +8018,7 @@ All file and git operations should use this branch.
8001
8018
  if (msg.role !== "user" || msg.isSystemGenerated) {
8002
8019
  return res.status(400).json({ error: "Can only replay user messages" });
8003
8020
  }
8004
- const { truncateSessionMessages } = await import("./events-D33QXGSX.js");
8021
+ const { truncateSessionMessages } = await import("./events-ZJPRGVL2.js");
8005
8022
  truncateSessionMessages(sessionId, msgIndex - 1);
8006
8023
  sessionManager.queueMessage(
8007
8024
  sessionId,
@@ -8063,7 +8080,7 @@ All file and git operations should use this branch.
8063
8080
  res.json({ accepted: true });
8064
8081
  });
8065
8082
  app.get("/api/settings", async (req, res) => {
8066
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-LMAMF2X7.js");
8083
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-MDCRNQBY.js");
8067
8084
  const keysParam = req.query["keys"];
8068
8085
  if (!keysParam) {
8069
8086
  return res.status(400).json({ error: "keys query parameter is required" });
@@ -8076,19 +8093,19 @@ All file and git operations should use this branch.
8076
8093
  res.json(result);
8077
8094
  });
8078
8095
  app.get("/api/settings/:key", async (req, res) => {
8079
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-LMAMF2X7.js");
8096
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-MDCRNQBY.js");
8080
8097
  const key = req.params.key;
8081
8098
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
8082
8099
  res.json({ key, value });
8083
8100
  });
8084
8101
  app.get("/api/settings/:key", async (req, res) => {
8085
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-LMAMF2X7.js");
8102
+ const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-MDCRNQBY.js");
8086
8103
  const key = req.params.key;
8087
8104
  const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
8088
8105
  res.json({ key, value });
8089
8106
  });
8090
8107
  app.put("/api/settings/:key", async (req, res) => {
8091
- const { setSetting: setSetting2 } = await import("./settings-LMAMF2X7.js");
8108
+ const { setSetting: setSetting2 } = await import("./settings-MDCRNQBY.js");
8092
8109
  const key = req.params.key;
8093
8110
  const { value } = req.body;
8094
8111
  if (value === void 0) {
@@ -8115,7 +8132,7 @@ All file and git operations should use this branch.
8115
8132
  }
8116
8133
  });
8117
8134
  app.get("/api/tools/shells", async (_req, res) => {
8118
- const { listAvailableShells } = await import("./platform-MWWJ6OKV.js");
8135
+ const { listAvailableShells } = await import("./platform-5LQXOZO3.js");
8119
8136
  res.json({ shells: listAvailableShells() });
8120
8137
  });
8121
8138
  app.get("/api/config", async (_req, res) => {
@@ -8208,7 +8225,7 @@ All file and git operations should use this branch.
8208
8225
  }));
8209
8226
  }
8210
8227
  app.post("/api/proxy/test", async (_req, res) => {
8211
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-LMAMF2X7.js");
8228
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-MDCRNQBY.js");
8212
8229
  const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
8213
8230
  if (!proxyUrl) {
8214
8231
  return res.status(400).json({ success: false, error: "No proxy URL configured" });
@@ -8300,7 +8317,7 @@ All file and git operations should use this branch.
8300
8317
  }
8301
8318
  });
8302
8319
  app.post("/api/proxy/test", async (_req, res) => {
8303
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-LMAMF2X7.js");
8320
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-MDCRNQBY.js");
8304
8321
  const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
8305
8322
  if (!proxyUrl) {
8306
8323
  return res.status(400).json({ success: false, error: "No proxy URL configured" });
@@ -8327,7 +8344,7 @@ All file and git operations should use this branch.
8327
8344
  const backend = req.query["backend"];
8328
8345
  if (!url) return res.status(400).json({ error: "url is required" });
8329
8346
  try {
8330
- const { fetchModelsWithContext } = await import("./provider-manager-7NL5EQLG.js");
8347
+ const { fetchModelsWithContext } = await import("./provider-manager-BO5ZBG3T.js");
8331
8348
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8332
8349
  const { getCatalogEntry } = await import("./model-catalog-2PCKTYGW.js");
8333
8350
  const models = await fetchModelsWithContext(
@@ -8402,7 +8419,7 @@ All file and git operations should use this branch.
8402
8419
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8403
8420
  const { getBackendCapabilities } = await import("./backend-NDBY3DAQ.js");
8404
8421
  const { buildNonStreamingCreateParams } = await import("./client-pure-FLKP6PTI.js");
8405
- const { OpenAIHttpClient } = await import("./http-client-MGAJTGPR.js");
8422
+ const { OpenAIHttpClient } = await import("./http-client-P4XTKAZA.js");
8406
8423
  const { ensureVersionPrefix } = await import("./url-utils-C5BM7NF7.js");
8407
8424
  const profile = getModelProfile2(model);
8408
8425
  const capabilities = getBackendCapabilities(backend || "unknown");
@@ -8819,7 +8836,7 @@ All file and git operations should use this branch.
8819
8836
  });
8820
8837
  async function rebuildMcpTools() {
8821
8838
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-FJAFLDZA.js");
8822
- const { setMcpTools: setMcpTools2 } = await import("./tools-SSPC3UQZ.js");
8839
+ const { setMcpTools: setMcpTools2 } = await import("./tools-CW6POKUL.js");
8823
8840
  const mcpTools = createMcpTools2(mcpManager);
8824
8841
  setMcpTools2(mcpTools);
8825
8842
  toolRegistry = createToolRegistry();
@@ -9222,7 +9239,7 @@ All file and git operations should use this branch.
9222
9239
  res.status(400).json({ error: error instanceof Error ? error.message : String(error) });
9223
9240
  }
9224
9241
  });
9225
- const { listProjects } = await import("./projects-TPSLCJP2.js");
9242
+ const { listProjects } = await import("./projects-5U37RUTL.js");
9226
9243
  const allProjects = listProjects();
9227
9244
  const projectDir = allProjects.find(
9228
9245
  (p) => p.workdir === config3.workdir || config3.workdir && p.workdir.startsWith(config3.workdir + "/")
@@ -9249,13 +9266,13 @@ All file and git operations should use this branch.
9249
9266
  })
9250
9267
  );
9251
9268
  app.get("/api/sessions/:id/background-processes", async (req, res) => {
9252
- const { getSessionProcesses } = await import("./manager-VRHX7BVI.js");
9269
+ const { getSessionProcesses } = await import("./manager-TMBFBCQL.js");
9253
9270
  const sessionId = req.params.id;
9254
9271
  const processes = getSessionProcesses(sessionId);
9255
9272
  res.json({ processes });
9256
9273
  });
9257
9274
  app.post("/api/sessions/:id/background-process/:processId/stop", async (req, res) => {
9258
- const { stopProcess } = await import("./manager-VRHX7BVI.js");
9275
+ const { stopProcess } = await import("./manager-TMBFBCQL.js");
9259
9276
  const sessionId = req.params.id;
9260
9277
  const processId = req.params.processId;
9261
9278
  const session = sessionManager.getSession(sessionId);
@@ -9395,7 +9412,7 @@ All file and git operations should use this branch.
9395
9412
  );
9396
9413
  const wss = wssExports.wss;
9397
9414
  deferTasksBroadcast = (projectId, payload) => wssExports.broadcastForProject(projectId, "", { type: "tasks.update", payload });
9398
- const { launchWorkflowRun, abortRunnerRun } = await import("./launch-KFENN5GS.js");
9415
+ const { launchWorkflowRun, abortRunnerRun } = await import("./launch-6I5ADTVT.js");
9399
9416
  deferTasksLaunchWorkflow = (sessionId, launch) => {
9400
9417
  const effective = sessionManager.resolveEffectiveProviderModel(sessionId);
9401
9418
  let llmClient = getLLMClient();
@@ -9440,7 +9457,7 @@ All file and git operations should use this branch.
9440
9457
  const state = sessionManager.getContextState(sessionId);
9441
9458
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
9442
9459
  });
9443
- const { QueueProcessor } = await import("./processor-K4WHZKE6.js");
9460
+ const { QueueProcessor } = await import("./processor-FMEULCNQ.js");
9444
9461
  const queueProcessor = new QueueProcessor({
9445
9462
  sessionManager,
9446
9463
  providerManager,
@@ -9465,7 +9482,7 @@ All file and git operations should use this branch.
9465
9482
  sessionManager,
9466
9483
  listProjects: () => listProjects(),
9467
9484
  createProject: async (name, workdir) => {
9468
- const { createDirectoryWithGit } = await import("./project-creator-JF3YVQAH.js");
9485
+ const { createDirectoryWithGit } = await import("./project-creator-6AGQTNXB.js");
9469
9486
  return createDirectoryWithGit(name, workdir);
9470
9487
  },
9471
9488
  deleteProject: (projectId) => {
@@ -9482,8 +9499,8 @@ All file and git operations should use this branch.
9482
9499
  launchWorkflow: (sessionId, launch) => deferTasksLaunchWorkflow(sessionId, launch),
9483
9500
  stopSession: (sessionId) => {
9484
9501
  void (async () => {
9485
- const { stopSessionExecution } = await import("./chat-handler-4WCKNCQV.js");
9486
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-SSPC3UQZ.js");
9502
+ const { stopSessionExecution } = await import("./chat-handler-T47GATL5.js");
9503
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-CW6POKUL.js");
9487
9504
  sessionManager.clearMessageQueue(sessionId);
9488
9505
  stopSessionExecution(sessionId, sessionManager);
9489
9506
  abortSession(sessionId);
@@ -9562,7 +9579,7 @@ All file and git operations should use this branch.
9562
9579
  void (async () => {
9563
9580
  await devServerManager.stopAll();
9564
9581
  await mcpManager.disconnectAll();
9565
- const { stopAllInspectProxies } = await import("./inspect-proxy-UKPU3Z64.js");
9582
+ const { stopAllInspectProxies } = await import("./inspect-proxy-A3OROWPG.js");
9566
9583
  stopAllInspectProxies();
9567
9584
  const { cleanupAllProcesses } = await import("./store-JYPZ2RXB.js");
9568
9585
  cleanupAllProcesses();
@@ -9604,4 +9621,4 @@ export {
9604
9621
  createServerHandle,
9605
9622
  createServer
9606
9623
  };
9607
- //# sourceMappingURL=chunk-DI5GTIAU.js.map
9624
+ //# sourceMappingURL=chunk-ZSBNXJZ5.js.map