openfox 2.0.142 → 2.0.144

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 (81) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/CHANGELOG.md +27 -0
  3. package/dist/auto-continue-M3RPFGFI.js +111 -0
  4. package/dist/{backend-EPISSWLB.js → backend-2VSDPCWS.js} +2 -2
  5. package/dist/{chat-handler-OFB4426F.js → chat-handler-QOOQOHHR.js} +28 -27
  6. package/dist/{chunk-CSUMZAYY.js → chunk-2DBWCXAQ.js} +3 -3
  7. package/dist/chunk-2DVAF6HY.js +447 -0
  8. package/dist/{chunk-ACILWRPU.js → chunk-3IVJ65IG.js} +12 -10
  9. package/dist/{chunk-VK2BSIJP.js → chunk-5ONERSDK.js} +146 -129
  10. package/dist/{chunk-5CZAKVGZ.js → chunk-5XKWYLBX.js} +18 -16
  11. package/dist/{chunk-R5FAEKXQ.js → chunk-73BO5OT3.js} +2 -1
  12. package/dist/{chunk-J556QIRD.js → chunk-AWBV2VXO.js} +3 -3
  13. package/dist/{chunk-RM4ZBI2B.js → chunk-C4LI5U6L.js} +45 -42
  14. package/dist/{chunk-F3R4YS3F.js → chunk-CCIG3YLG.js} +2 -2
  15. package/dist/{chunk-2CEZQAGQ.js → chunk-DJH6LMBT.js} +2 -2
  16. package/dist/{chunk-EFEHIJXF.js → chunk-E4F32L4Q.js} +2 -2
  17. package/dist/{chunk-OA7KBQ2O.js → chunk-FAN4P45J.js} +3 -3
  18. package/dist/{chunk-XADIBENX.js → chunk-FLTNKZNQ.js} +10 -10
  19. package/dist/{chunk-VLQ6BMU7.js → chunk-FTPQI5TA.js} +11 -1
  20. package/dist/{chunk-DNL2NUDB.js → chunk-GZ4EK4LZ.js} +2 -2
  21. package/dist/{chunk-5HDPFHHJ.js → chunk-L2RESXUF.js} +3 -3
  22. package/dist/{chunk-TRZZCMJ3.js → chunk-MBDYJ35W.js} +14 -11
  23. package/dist/{chunk-DQEANXXF.js → chunk-ODETQHMI.js} +3 -3
  24. package/dist/{chunk-HQDKHNWS.js → chunk-OSUEWIVU.js} +10 -8
  25. package/dist/{chunk-FFVIO6GL.js → chunk-QURYQA4D.js} +8 -8
  26. package/dist/{chunk-N5AJHJG5.js → chunk-STVJA7IX.js} +3 -3
  27. package/dist/{chunk-WSDR27YV.js → chunk-UO4X2ENE.js} +2 -2
  28. package/dist/{chunk-Q5JCBAQF.js → chunk-VFHGN3IS.js} +4 -4
  29. package/dist/{chunk-SKNPOZYP.js → chunk-X6SWZEK7.js} +3 -1
  30. package/dist/{chunk-TIIWXMGE.js → chunk-X7ZAP6YW.js} +2 -2
  31. package/dist/{chunk-MEPTCUYN.js → chunk-YEFZ5HBD.js} +2 -2
  32. package/dist/{chunk-DRIR2IZR.js → chunk-YEW4YEJU.js} +2 -2
  33. package/dist/{chunk-NJFXYSXP.js → chunk-YRSZJ7IZ.js} +11 -441
  34. package/dist/{chunk-TEUVZCPS.js → chunk-Z3C3D4IR.js} +24 -22
  35. package/dist/{chunk-Z7IT3V22.js → chunk-ZONLEX2F.js} +8 -4
  36. package/dist/chunk-ZSGELOTW.js +7 -0
  37. package/dist/cli/dev.js +1 -1
  38. package/dist/cli/index.js +1 -1
  39. package/dist/{client-2A766XZK.js → client-L4PANCG4.js} +5 -5
  40. package/dist/{compactor-3BVVHO4M.js → compactor-53WDNC2S.js} +12 -11
  41. package/dist/{config-LOK3LXFH.js → config-AJSENHBC.js} +2 -2
  42. package/dist/{describe-image-F22VNBWY.js → describe-image-IGLGVEOJ.js} +12 -11
  43. package/dist/{dynamic-context-5SFXTEAP.js → dynamic-context-CR4RUXOX.js} +11 -10
  44. package/dist/{events-UAUOGRSV.js → events-ODZ4SSBW.js} +11 -9
  45. package/dist/{export-import-PBEX3KWU.js → export-import-3WOHC7PI.js} +10 -8
  46. package/dist/{folding-IHD244OU.js → folding-V2R2MZ6Y.js} +4 -4
  47. package/dist/{http-client-RA7XFYPO.js → http-client-SZZBSL4U.js} +3 -3
  48. package/dist/{launch-L5NL75KK.js → launch-4COI5RGL.js} +28 -27
  49. package/dist/{manager-4SMHCFXY.js → manager-PDG7RKPA.js} +4 -4
  50. package/dist/{mcp-SQ4DOGPT.js → mcp-C7PNGP25.js} +2 -2
  51. package/dist/{orchestrator-53SS74LD.js → orchestrator-AMTWA6JO.js} +27 -26
  52. package/dist/package.json +1 -1
  53. package/dist/{path-security-WOA6MTWQ.js → path-security-3YFS3GJQ.js} +9 -8
  54. package/dist/{platform-EAZNZDAE.js → platform-WCXMN4NM.js} +3 -3
  55. package/dist/{processor-T4VWZMXT.js → processor-UZ7OBCAK.js} +27 -26
  56. package/dist/{protocol-Dpf4FBF2.d.ts → protocol-Ch2s26bR.d.ts} +1 -1
  57. package/dist/provider/index.d.ts +4 -4
  58. package/dist/{provider-5XNJEDKW.js → provider-QE7XSGYA.js} +8 -8
  59. package/dist/{provider-manager-RHJYUU5W.js → provider-manager-WW2EF76W.js} +6 -6
  60. package/dist/{registry-C7RKKHZB.js → registry-24U5BZAJ.js} +3 -3
  61. package/dist/{serve-LP3ZX6CW.js → serve-NLQ6IB2V.js} +33 -32
  62. package/dist/server/index.d.ts +4 -4
  63. package/dist/server/index.js +32 -31
  64. package/dist/{server-IGZLCNZG.js → server-YXKUQ3DD.js} +31 -30
  65. package/dist/{service-AZU4YTS2.js → service-KMOSB6SU.js} +8 -8
  66. package/dist/{session-overrides-CKS2AVE5.js → session-overrides-GQKE7WGE.js} +5 -5
  67. package/dist/{sessions-DAHLRQE2.js → sessions-A3IZYL6X.js} +4 -4
  68. package/dist/{settings-TR4BF2C4.js → settings-FQUDSGZF.js} +2 -2
  69. package/dist/shared/index.d.ts +3 -3
  70. package/dist/store-AOZ46PBS.js +23 -0
  71. package/dist/{tasks-T5KZXKMD.js → tasks-X5DM553T.js} +8 -8
  72. package/dist/{tools-BL6XCTUV.js → tools-7L63ZMNU.js} +32 -31
  73. package/dist/{types-LO8296aY.d.ts → types-BajWwfkt.d.ts} +1 -1
  74. package/dist/{types-CZJf6Fnb.d.ts → types-BiHNYUUI.d.ts} +1 -1
  75. package/dist/{update-M5DMX3FC.js → update-IBN2GJUI.js} +2 -2
  76. package/dist/web/assets/{index-2WvLd7SC.css → index--zSmgMW5.css} +1 -1
  77. package/dist/web/assets/{index-BPhet33M.js → index-DL26wmhi.js} +78 -75
  78. package/dist/web/index.html +2 -2
  79. package/dist/web/sw.js +1 -1
  80. package/package.json +1 -1
  81. package/dist/chunk-EPZO3MGM.js +0 -7
@@ -9,7 +9,10 @@ import {
9
9
  terminalManager,
10
10
  tokenFromPassword,
11
11
  verifyPassword
12
- } from "./chunk-TEUVZCPS.js";
12
+ } from "./chunk-Z3C3D4IR.js";
13
+ import {
14
+ TEMPLATE_VARIABLES
15
+ } from "./chunk-MBDYJ35W.js";
13
16
  import {
14
17
  projectSessionStatus
15
18
  } from "./chunk-T3S5MTMD.js";
@@ -25,9 +28,6 @@ import {
25
28
  setMcpOAuthStoreMode,
26
29
  setMcpOAuthStorePath
27
30
  } from "./chunk-IJ53Y77N.js";
28
- import {
29
- TEMPLATE_VARIABLES
30
- } from "./chunk-TRZZCMJ3.js";
31
31
  import {
32
32
  createToolRegistry,
33
33
  devServerManager,
@@ -42,7 +42,7 @@ import {
42
42
  setMcpManagerForTools,
43
43
  setMcpTools,
44
44
  setNotifyMcpServersChanged
45
- } from "./chunk-RM4ZBI2B.js";
45
+ } from "./chunk-C4LI5U6L.js";
46
46
  import {
47
47
  deleteOwnedSkill,
48
48
  deleteProjectSkill,
@@ -61,7 +61,7 @@ import {
61
61
  setSkillEnabled,
62
62
  skillExists,
63
63
  updateOwnedSkill
64
- } from "./chunk-2CEZQAGQ.js";
64
+ } from "./chunk-DJH6LMBT.js";
65
65
  import {
66
66
  checkoutBranchFromSharedSource,
67
67
  deleteWorkspace,
@@ -106,34 +106,29 @@ import {
106
106
  saveWorkflow,
107
107
  saveWorkflowToProject,
108
108
  workflowExists
109
- } from "./chunk-CSUMZAYY.js";
109
+ } from "./chunk-2DBWCXAQ.js";
110
110
  import {
111
111
  clearSessionOverrides,
112
112
  computeDisabledServersForProject,
113
113
  getSessionDisabledServers,
114
114
  initSessionMcpOverrides,
115
115
  setSessionDisabledServers
116
- } from "./chunk-WSDR27YV.js";
116
+ } from "./chunk-UO4X2ENE.js";
117
117
  import {
118
118
  serverT
119
- } from "./chunk-TIIWXMGE.js";
119
+ } from "./chunk-X7ZAP6YW.js";
120
+ import {
121
+ getPendingConfirmationsBySession,
122
+ providePathConfirmation
123
+ } from "./chunk-STVJA7IX.js";
120
124
  import {
121
125
  ALWAYS_ALLOWED,
122
126
  ALWAYS_ALLOWED_FOR_SUBAGENTS,
123
127
  TOP_LEVEL_ONLY_TOOLS
124
- } from "./chunk-Z7IT3V22.js";
128
+ } from "./chunk-ZONLEX2F.js";
125
129
  import {
126
130
  createMcpTools
127
131
  } from "./chunk-VIJVLLPT.js";
128
- import {
129
- EventEmitter,
130
- getPendingQuestionsForSession,
131
- provideAnswer
132
- } from "./chunk-V5AC2TV7.js";
133
- import {
134
- getPendingConfirmationsBySession,
135
- providePathConfirmation
136
- } from "./chunk-N5AJHJG5.js";
137
132
  import {
138
133
  combineEventsWithSnapshot,
139
134
  emitAssistantMessageStart,
@@ -148,13 +143,15 @@ import {
148
143
  emitUserMessage,
149
144
  emitWorkflowExecutionChanged,
150
145
  getCurrentContextWindowId,
146
+ getSessionState
147
+ } from "./chunk-2DVAF6HY.js";
148
+ import {
151
149
  getEventStore,
152
- getSessionState,
153
150
  initEventStore
154
- } from "./chunk-NJFXYSXP.js";
151
+ } from "./chunk-YRSZJ7IZ.js";
155
152
  import {
156
153
  buildMessagesFromStoredEvents
157
- } from "./chunk-EFEHIJXF.js";
154
+ } from "./chunk-E4F32L4Q.js";
158
155
  import {
159
156
  clearWorkflowExecution,
160
157
  createSession,
@@ -181,7 +178,7 @@ import {
181
178
  updateSessionRunning,
182
179
  updateSessionWorkdir,
183
180
  updateWorkflowExecutionStatus
184
- } from "./chunk-F3R4YS3F.js";
181
+ } from "./chunk-CCIG3YLG.js";
185
182
  import {
186
183
  agentExists,
187
184
  deleteAgent,
@@ -198,11 +195,16 @@ import {
198
195
  saveAgent,
199
196
  saveAgentToProject,
200
197
  setRuntimeConfig
201
- } from "./chunk-DRIR2IZR.js";
198
+ } from "./chunk-YEW4YEJU.js";
202
199
  import {
203
200
  findFileByInternalId,
204
201
  pathExists
205
202
  } from "./chunk-OSXPQSLW.js";
203
+ import {
204
+ EventEmitter,
205
+ getPendingQuestionsForSession,
206
+ provideAnswer
207
+ } from "./chunk-V5AC2TV7.js";
206
208
  import {
207
209
  createContextStateMessage,
208
210
  toClientSession
@@ -210,19 +212,19 @@ import {
210
212
  import {
211
213
  getPathSeparator,
212
214
  isAbsolutePath
213
- } from "./chunk-MEPTCUYN.js";
215
+ } from "./chunk-YEFZ5HBD.js";
214
216
  import {
215
217
  createProviderManager,
216
218
  detectModel,
217
219
  getLlmStatus,
218
220
  parseDefaultModelSelection
219
- } from "./chunk-J556QIRD.js";
221
+ } from "./chunk-AWBV2VXO.js";
220
222
  import {
221
223
  buildOpenFoxMcpBootstrap
222
224
  } from "./chunk-YNMP647F.js";
223
225
  import {
224
226
  VERSION
225
- } from "./chunk-EPZO3MGM.js";
227
+ } from "./chunk-ZSGELOTW.js";
226
228
  import {
227
229
  deleteProject,
228
230
  getProject,
@@ -235,7 +237,7 @@ import {
235
237
  import {
236
238
  detectBackendFromUrl,
237
239
  getBackendDisplayName
238
- } from "./chunk-VLQ6BMU7.js";
240
+ } from "./chunk-FTPQI5TA.js";
239
241
  import {
240
242
  buildModelsUrl
241
243
  } from "./chunk-HNCM3D7Y.js";
@@ -245,12 +247,12 @@ import {
245
247
  import {
246
248
  SessionNotFoundError,
247
249
  WorkspaceInUseError
248
- } from "./chunk-DNL2NUDB.js";
250
+ } from "./chunk-GZ4EK4LZ.js";
249
251
  import {
250
252
  deleteSetting,
251
253
  getSetting,
252
254
  setSetting
253
- } from "./chunk-SKNPOZYP.js";
255
+ } from "./chunk-X6SWZEK7.js";
254
256
  import {
255
257
  initDatabase
256
258
  } from "./chunk-WOVWVB5J.js";
@@ -3145,9 +3147,9 @@ var SessionManager = class {
3145
3147
  * @throws Error for invalid payloads or unknown project
3146
3148
  */
3147
3149
  async importSession(projectId, rawPayload) {
3148
- const { parseSessionExport, IMPORTED_SESSION_REMINDER, SESSION_EXPORT_VERSION } = await import("./export-import-PBEX3KWU.js");
3149
- const { injectContextDriftReminders, getToolSetFingerprint } = await import("./dynamic-context-5SFXTEAP.js");
3150
- const { loadAllAgentsDefault: loadAllAgentsDefault2, resolveDefaultAgentId } = await import("./registry-C7RKKHZB.js");
3150
+ const { parseSessionExport, IMPORTED_SESSION_REMINDER, SESSION_EXPORT_VERSION } = await import("./export-import-3WOHC7PI.js");
3151
+ const { injectContextDriftReminders, getToolSetFingerprint } = await import("./dynamic-context-CR4RUXOX.js");
3152
+ const { loadAllAgentsDefault: loadAllAgentsDefault2, resolveDefaultAgentId } = await import("./registry-24U5BZAJ.js");
3151
3153
  const payload = parseSessionExport(rawPayload);
3152
3154
  if (payload.version !== SESSION_EXPORT_VERSION) {
3153
3155
  throw new Error(`Unsupported session export version: ${payload.version}`);
@@ -6676,7 +6678,7 @@ function createAutoUpdateRoutes(options = {}) {
6676
6678
  });
6677
6679
  clearTimeout(timeout);
6678
6680
  if (exitCode === 0) {
6679
- const versionMatch = stdout.match(/Updated: ([\d.]+)/);
6681
+ const versionMatch = stdout.match(/(?:Updated|Mis à jour) ?: ([\d.]+)/);
6680
6682
  const version = versionMatch?.[1] ?? VERSION;
6681
6683
  res.json({ success: true, version, isService });
6682
6684
  } else {
@@ -6740,7 +6742,7 @@ function createProviderAuthRoutes(config3, providerManager, registry) {
6740
6742
  try {
6741
6743
  const { challenge, completion } = await adapter.beginLogin({ providerId: provider.id });
6742
6744
  void completion.then(async ({ credentialRef }) => {
6743
- const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-LOK3LXFH.js");
6745
+ const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-AJSENHBC.js");
6744
6746
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
6745
6747
  const updatedConfig = updateProvider(globalConfig, provider.id, { credentialRef, authAdapter: adapter.id });
6746
6748
  await saveGlobalConfig(config3.mode ?? "production", updatedConfig, config3.globalConfigPath);
@@ -6782,7 +6784,7 @@ function createProviderAuthRoutes(config3, providerManager, registry) {
6782
6784
  const ref = provider.credentialRef ?? provider.id;
6783
6785
  await adapter.logout(ref);
6784
6786
  }
6785
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-LOK3LXFH.js");
6787
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-AJSENHBC.js");
6786
6788
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
6787
6789
  const updatedConfig = {
6788
6790
  ...globalConfig,
@@ -7246,7 +7248,7 @@ function detectWsl() {
7246
7248
  // src/server/index.ts
7247
7249
  var __dirname3 = dirname7(fileURLToPath6(import.meta.url));
7248
7250
  async function announceContextDrift(sessionManager, sessionIds) {
7249
- const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-5SFXTEAP.js");
7251
+ const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-CR4RUXOX.js");
7250
7252
  await injectContextDriftRemindersForSessions(sessionManager, sessionIds);
7251
7253
  }
7252
7254
  async function createServerHandle(config3) {
@@ -7323,7 +7325,7 @@ async function createServerHandle(config3) {
7323
7325
  const mcpManager = new McpManager({
7324
7326
  onToolsDiscovered: async (name, tools) => {
7325
7327
  try {
7326
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-LOK3LXFH.js");
7328
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-AJSENHBC.js");
7327
7329
  const mode = config3.mode ?? "production";
7328
7330
  const globalConfig = await loadGlobalConfig(mode, config3.globalConfigPath);
7329
7331
  const mcpServers2 = {
@@ -7339,7 +7341,7 @@ async function createServerHandle(config3) {
7339
7341
  }
7340
7342
  });
7341
7343
  setMcpManagerForTools(mcpManager);
7342
- const { setGlobalMcpServersProvider } = await import("./session-overrides-CKS2AVE5.js");
7344
+ const { setGlobalMcpServersProvider } = await import("./session-overrides-GQKE7WGE.js");
7343
7345
  setGlobalMcpServersProvider(
7344
7346
  () => mcpManager.getAllServers().map((s) => ({ name: s.name, disabled: s.config.disabled }))
7345
7347
  );
@@ -7362,7 +7364,7 @@ async function createServerHandle(config3) {
7362
7364
  toolRegistry = createToolRegistry();
7363
7365
  logger.info("MCP tools registered", { count: mcpTools.length });
7364
7366
  }
7365
- const { signalMcpReady } = await import("./server-IGZLCNZG.js");
7367
+ const { signalMcpReady } = await import("./server-YXKUQ3DD.js");
7366
7368
  signalMcpReady();
7367
7369
  }
7368
7370
  const app = express();
@@ -7577,9 +7579,9 @@ async function createServerHandle(config3) {
7577
7579
  const sessionFavoriteRouter = express.Router();
7578
7580
  registerSessionFavoriteRoute(sessionFavoriteRouter, sessionManager);
7579
7581
  app.use("/api", sessionFavoriteRouter);
7580
- const { createTasksService } = await import("./service-AZU4YTS2.js");
7581
- const { registerTaskRoutes } = await import("./tasks-T5KZXKMD.js");
7582
- const { setTasksService } = await import("./tools-BL6XCTUV.js");
7582
+ const { createTasksService } = await import("./service-KMOSB6SU.js");
7583
+ const { registerTaskRoutes } = await import("./tasks-X5DM553T.js");
7584
+ const { setTasksService } = await import("./tools-7L63ZMNU.js");
7583
7585
  const tasksService = createTasksService({
7584
7586
  sessionManager,
7585
7587
  config: config3,
@@ -7614,7 +7616,7 @@ async function createServerHandle(config3) {
7614
7616
  }
7615
7617
  try {
7616
7618
  await checkoutBranch(project.workdir, branch);
7617
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-DAHLRQE2.js");
7619
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-A3IZYL6X.js");
7618
7620
  const allSessions = sessionManager.listSessions();
7619
7621
  for (const s of allSessions) {
7620
7622
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -7650,7 +7652,7 @@ async function createServerHandle(config3) {
7650
7652
  );
7651
7653
  }
7652
7654
  await createBranch(project.workdir, name, sb);
7653
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-DAHLRQE2.js");
7655
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-A3IZYL6X.js");
7654
7656
  const allSessions = sessionManager.listSessions();
7655
7657
  for (const s of allSessions) {
7656
7658
  if (sessionManager.getEffectiveWorkdir(s.id) === project.workdir) {
@@ -7682,7 +7684,7 @@ async function createServerHandle(config3) {
7682
7684
  if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
7683
7685
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
7684
7686
  const { checkoutBranch, validateRef: validateRef2 } = await import("./workspace-ENN27P56.js");
7685
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-DAHLRQE2.js");
7687
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-A3IZYL6X.js");
7686
7688
  try {
7687
7689
  await validateRef2(effectiveWorkdir, branch);
7688
7690
  await checkoutBranch(effectiveWorkdir, branch);
@@ -7725,7 +7727,7 @@ All file and git operations should use this branch.
7725
7727
  if (!name || typeof name !== "string") return res.status(400).json({ error: "name is required" });
7726
7728
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
7727
7729
  const { validateRef: validateRef2 } = await import("./workspace-ENN27P56.js");
7728
- const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-DAHLRQE2.js");
7730
+ const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-A3IZYL6X.js");
7729
7731
  try {
7730
7732
  await validateRef2(effectiveWorkdir, name);
7731
7733
  if (sourceBranch) {
@@ -7780,8 +7782,8 @@ All file and git operations should use this branch.
7780
7782
  res.json({ workspaces: workspacesList });
7781
7783
  });
7782
7784
  app.get("/api/sessions", async (req, res) => {
7783
- const { getRecentUserPromptsForSession } = await import("./events-UAUOGRSV.js");
7784
- const { getPendingConfirmationsBySession: getPendingConfirmationsBySession2 } = await import("./path-security-WOA6MTWQ.js");
7785
+ const { getRecentUserPromptsForSession } = await import("./events-ODZ4SSBW.js");
7786
+ const { getPendingConfirmationsBySession: getPendingConfirmationsBySession2 } = await import("./path-security-3YFS3GJQ.js");
7785
7787
  const projectId = req.query["projectId"];
7786
7788
  const rawLimit = req.query["limit"];
7787
7789
  const offset = parseInt(req.query["offset"]) || 0;
@@ -7899,10 +7901,10 @@ All file and git operations should use this branch.
7899
7901
  }
7900
7902
  });
7901
7903
  app.get("/api/sessions/:id", async (req, res) => {
7902
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-UAUOGRSV.js");
7903
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-IHD244OU.js");
7904
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-BL6XCTUV.js");
7905
- const { getMaxVisibleItems } = await import("./settings-TR4BF2C4.js");
7904
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-ODZ4SSBW.js");
7905
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-V2R2MZ6Y.js");
7906
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-7L63ZMNU.js");
7907
+ const { getMaxVisibleItems } = await import("./settings-FQUDSGZF.js");
7906
7908
  const session = sessionManager.getSession(req.params.id);
7907
7909
  if (!session) {
7908
7910
  return res.status(404).json({ error: "Session not found" });
@@ -7930,9 +7932,9 @@ All file and git operations should use this branch.
7930
7932
  });
7931
7933
  app.get("/api/sessions/:id/status", async (req, res) => {
7932
7934
  const { projectSessionStatus: projectSessionStatus2 } = await import("./session-status-UFO5IFI7.js");
7933
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-BL6XCTUV.js");
7934
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-UAUOGRSV.js");
7935
- const { foldPendingConfirmations } = await import("./folding-IHD244OU.js");
7935
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-7L63ZMNU.js");
7936
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-ODZ4SSBW.js");
7937
+ const { foldPendingConfirmations } = await import("./folding-V2R2MZ6Y.js");
7936
7938
  const sessionId = req.params["id"];
7937
7939
  if (!sessionId) {
7938
7940
  return res.status(400).json({ error: "Session id is required" });
@@ -7962,8 +7964,8 @@ All file and git operations should use this branch.
7962
7964
  if (!session) {
7963
7965
  return res.status(404).json({ error: "Session not found" });
7964
7966
  }
7965
- const { stopSessionExecution } = await import("./chat-handler-OFB4426F.js");
7966
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-BL6XCTUV.js");
7967
+ const { stopSessionExecution } = await import("./chat-handler-QOOQOHHR.js");
7968
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-7L63ZMNU.js");
7967
7969
  sessionManager.clearMessageQueue(sessionId);
7968
7970
  stopSessionExecution(sessionId, sessionManager);
7969
7971
  abortSession(sessionId);
@@ -7992,9 +7994,9 @@ All file and git operations should use this branch.
7992
7994
  res.json({ success: true });
7993
7995
  });
7994
7996
  app.post("/api/sessions/:id/provider", async (req, res) => {
7995
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-UAUOGRSV.js");
7996
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-IHD244OU.js");
7997
- const { getMaxVisibleItems } = await import("./settings-TR4BF2C4.js");
7997
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-ODZ4SSBW.js");
7998
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-V2R2MZ6Y.js");
7999
+ const { getMaxVisibleItems } = await import("./settings-FQUDSGZF.js");
7998
8000
  const sessionId = req.params.id;
7999
8001
  const session = sessionManager.getSession(sessionId);
8000
8002
  if (!session) {
@@ -8023,9 +8025,9 @@ All file and git operations should use this branch.
8023
8025
  res.json({ session: toClientSession(updatedSession), messages, hiddenCount, contextState });
8024
8026
  });
8025
8027
  app.delete("/api/sessions/:id/provider", async (req, res) => {
8026
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-UAUOGRSV.js");
8027
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-IHD244OU.js");
8028
- const { getMaxVisibleItems } = await import("./settings-TR4BF2C4.js");
8028
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-ODZ4SSBW.js");
8029
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-V2R2MZ6Y.js");
8030
+ const { getMaxVisibleItems } = await import("./settings-FQUDSGZF.js");
8029
8031
  const sessionId = req.params.id;
8030
8032
  const session = sessionManager.getSession(sessionId);
8031
8033
  if (!session) {
@@ -8079,7 +8081,7 @@ All file and git operations should use this branch.
8079
8081
  if (!result.success) {
8080
8082
  return res.status(500).json({ error: result.error ?? "Failed to set default model" });
8081
8083
  }
8082
- const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-LOK3LXFH.js");
8084
+ const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-AJSENHBC.js");
8083
8085
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
8084
8086
  const updatedConfig = setDefaultModelSelection(globalConfig, providerId, model);
8085
8087
  await saveGlobalConfig(config3.mode ?? "production", updatedConfig, config3.globalConfigPath);
@@ -8157,9 +8159,9 @@ All file and git operations should use this branch.
8157
8159
  res.json({ success: true });
8158
8160
  });
8159
8161
  app.put("/api/sessions/:id/mode", async (req, res) => {
8160
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-UAUOGRSV.js");
8161
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-IHD244OU.js");
8162
- const { getMaxVisibleItems } = await import("./settings-TR4BF2C4.js");
8162
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEv } = await import("./events-ODZ4SSBW.js");
8163
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-V2R2MZ6Y.js");
8164
+ const { getMaxVisibleItems } = await import("./settings-FQUDSGZF.js");
8163
8165
  const sessionId = req.params.id;
8164
8166
  const session = sessionManager.getSession(sessionId);
8165
8167
  if (!session) {
@@ -8195,7 +8197,7 @@ All file and git operations should use this branch.
8195
8197
  }
8196
8198
  sessionManager.setDangerLevel(sessionId, dangerLevel);
8197
8199
  if (dangerLevel === "dangerous") {
8198
- const { autoApprovePendingConfirmationsForSession } = await import("./tools-BL6XCTUV.js");
8200
+ const { autoApprovePendingConfirmationsForSession } = await import("./tools-7L63ZMNU.js");
8199
8201
  const approvedCallIds = autoApprovePendingConfirmationsForSession(sessionId);
8200
8202
  for (const callId of approvedCallIds) {
8201
8203
  wssExports.broadcastForSession(sessionId, {
@@ -8230,7 +8232,7 @@ All file and git operations should use this branch.
8230
8232
  setSessionDisabledServers(sessionId, disabledServers);
8231
8233
  const messages = session.messages ?? [];
8232
8234
  if (messages.length === 0) {
8233
- const { applyDynamicContext } = await import("./dynamic-context-5SFXTEAP.js");
8235
+ const { applyDynamicContext } = await import("./dynamic-context-CR4RUXOX.js");
8234
8236
  const modelName = session.providerModel ?? providerManager.getCurrentModel();
8235
8237
  await applyDynamicContext(sessionManager, sessionId, modelName);
8236
8238
  } else {
@@ -8264,7 +8266,7 @@ All file and git operations should use this branch.
8264
8266
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
8265
8267
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
8266
8268
  }
8267
- const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-BL6XCTUV.js");
8269
+ const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-7L63ZMNU.js");
8268
8270
  const pendingSessionId = getConfirmationSessionId(callId);
8269
8271
  if (!pendingSessionId) {
8270
8272
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -8276,11 +8278,11 @@ All file and git operations should use this branch.
8276
8278
  if (!result.found) {
8277
8279
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
8278
8280
  }
8279
- const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-UAUOGRSV.js");
8280
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-IHD244OU.js");
8281
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-ODZ4SSBW.js");
8282
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-V2R2MZ6Y.js");
8281
8283
  const { createSessionStateMessage } = await import("./protocol-MRMOB3P4.js");
8282
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-BL6XCTUV.js");
8283
- const { getMaxVisibleItems } = await import("./settings-TR4BF2C4.js");
8284
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-7L63ZMNU.js");
8285
+ const { getMaxVisibleItems } = await import("./settings-FQUDSGZF.js");
8284
8286
  const eventStore = getEventStore2();
8285
8287
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
8286
8288
  const events = combineEvents(sessionId, snapshot, eventsSinceSnapshot);
@@ -8317,7 +8319,7 @@ All file and git operations should use this branch.
8317
8319
  if (!skip && typeof answer !== "string") {
8318
8320
  return res.status(400).json({ error: "answer is required when not skipping" });
8319
8321
  }
8320
- const { provideAnswer: provideAnswer2 } = await import("./tools-BL6XCTUV.js");
8322
+ const { provideAnswer: provideAnswer2 } = await import("./tools-7L63ZMNU.js");
8321
8323
  const found = provideAnswer2(callId, answer ?? "", skip ?? false);
8322
8324
  if (!found) {
8323
8325
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -8350,8 +8352,8 @@ All file and git operations should use this branch.
8350
8352
  if (!session) {
8351
8353
  return res.status(404).json({ error: "Session not found" });
8352
8354
  }
8353
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-TR4BF2C4.js");
8354
- if (getSetting2(SETTINGS_KEYS.CACHE_WARMING) !== "true") {
8355
+ const { getSetting: getSetting3, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-FQUDSGZF.js");
8356
+ if (getSetting3(SETTINGS_KEYS2.CACHE_WARMING) !== "true") {
8355
8357
  return res.json({ success: false, reason: "disabled" });
8356
8358
  }
8357
8359
  if (session.messages.length > 0) {
@@ -8383,7 +8385,7 @@ All file and git operations should use this branch.
8383
8385
  backend: activeProvider?.backend ?? llmClient.getBackend(),
8384
8386
  model: llmClient.getModel()
8385
8387
  };
8386
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-53SS74LD.js");
8388
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-AMTWA6JO.js");
8387
8389
  runAgentTurn(
8388
8390
  {
8389
8391
  sessionManager,
@@ -8421,15 +8423,15 @@ All file and git operations should use this branch.
8421
8423
  if (!session) {
8422
8424
  return res.status(404).json({ error: "Session not found" });
8423
8425
  }
8424
- const { stopSessionExecution } = await import("./chat-handler-OFB4426F.js");
8425
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-BL6XCTUV.js");
8426
+ const { stopSessionExecution } = await import("./chat-handler-QOOQOHHR.js");
8427
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-7L63ZMNU.js");
8426
8428
  const queuedMessages = sessionManager.getQueueState(sessionId);
8427
8429
  sessionManager.clearMessageQueue(sessionId);
8428
8430
  stopSessionExecution(sessionId, sessionManager);
8429
8431
  abortSession(sessionId);
8430
8432
  cancelQuestionsForSession(sessionId, "Session stopped by user");
8431
8433
  cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
8432
- const eventStore = (await import("./events-UAUOGRSV.js")).getEventStore();
8434
+ const eventStore = (await import("./events-ODZ4SSBW.js")).getEventStore();
8433
8435
  eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
8434
8436
  res.json({ success: true, queuedMessages });
8435
8437
  });
@@ -8470,7 +8472,7 @@ All file and git operations should use this branch.
8470
8472
  if (typeof messageIndex !== "number" || messageIndex < 0) {
8471
8473
  return res.status(400).json({ error: "messageIndex must be a non-negative number" });
8472
8474
  }
8473
- const { truncateSessionMessages } = await import("./events-UAUOGRSV.js");
8475
+ const { truncateSessionMessages } = await import("./events-ODZ4SSBW.js");
8474
8476
  truncateSessionMessages(sessionId, messageIndex);
8475
8477
  res.json({ success: true });
8476
8478
  });
@@ -8490,8 +8492,8 @@ All file and git operations should use this branch.
8490
8492
  if (attachments !== void 0 && !Array.isArray(attachments)) {
8491
8493
  return res.status(400).json({ error: "attachments must be an array if provided" });
8492
8494
  }
8493
- const { getEventStore: getEventStore2 } = await import("./events-UAUOGRSV.js");
8494
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-IHD244OU.js");
8495
+ const { getEventStore: getEventStore2 } = await import("./events-ODZ4SSBW.js");
8496
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-V2R2MZ6Y.js");
8495
8497
  const eventStore = getEventStore2();
8496
8498
  const events = eventStore.getEvents(sessionId);
8497
8499
  const { messages } = buildMessagesFromStoredEvents2(events);
@@ -8503,7 +8505,7 @@ All file and git operations should use this branch.
8503
8505
  if (msg.role !== "user" || msg.isSystemGenerated) {
8504
8506
  return res.status(400).json({ error: "Can only replay user messages" });
8505
8507
  }
8506
- const { truncateSessionMessages } = await import("./events-UAUOGRSV.js");
8508
+ const { truncateSessionMessages } = await import("./events-ODZ4SSBW.js");
8507
8509
  truncateSessionMessages(sessionId, msgIndex - 1);
8508
8510
  sessionManager.queueMessage(
8509
8511
  sessionId,
@@ -8545,7 +8547,7 @@ All file and git operations should use this branch.
8545
8547
  return res.status(404).json({ error: "Session not found" });
8546
8548
  }
8547
8549
  try {
8548
- const { buildSessionExport } = await import("./export-import-PBEX3KWU.js");
8550
+ const { buildSessionExport } = await import("./export-import-3WOHC7PI.js");
8549
8551
  const payload = buildSessionExport(sessionManager, sessionId);
8550
8552
  const filename = `${(payload.session.title ?? "session").replace(/[^a-zA-Z0-9-_]/g, "_")}.openfox-session.json`;
8551
8553
  res.setHeader("Content-Disposition", `attachment; filename="${filename}"`);
@@ -8602,7 +8604,7 @@ All file and git operations should use this branch.
8602
8604
  res.json({ accepted: true });
8603
8605
  });
8604
8606
  app.get("/api/settings", async (req, res) => {
8605
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-TR4BF2C4.js");
8607
+ const { getSetting: getSetting3, SETTINGS_DEFAULTS } = await import("./settings-FQUDSGZF.js");
8606
8608
  const keysParam = req.query["keys"];
8607
8609
  if (!keysParam) {
8608
8610
  return res.status(400).json({ error: "keys query parameter is required" });
@@ -8610,24 +8612,24 @@ All file and git operations should use this branch.
8610
8612
  const keys = keysParam.split(",").map((k) => k.trim());
8611
8613
  const result = {};
8612
8614
  for (const key of keys) {
8613
- result[key] = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? "";
8615
+ result[key] = getSetting3(key) ?? SETTINGS_DEFAULTS[key] ?? "";
8614
8616
  }
8615
8617
  res.json(result);
8616
8618
  });
8617
8619
  app.get("/api/settings/:key", async (req, res) => {
8618
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-TR4BF2C4.js");
8620
+ const { getSetting: getSetting3, SETTINGS_DEFAULTS } = await import("./settings-FQUDSGZF.js");
8619
8621
  const key = req.params.key;
8620
- const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
8622
+ const value = getSetting3(key) ?? SETTINGS_DEFAULTS[key] ?? null;
8621
8623
  res.json({ key, value });
8622
8624
  });
8623
8625
  app.get("/api/settings/:key", async (req, res) => {
8624
- const { getSetting: getSetting2, SETTINGS_DEFAULTS } = await import("./settings-TR4BF2C4.js");
8626
+ const { getSetting: getSetting3, SETTINGS_DEFAULTS } = await import("./settings-FQUDSGZF.js");
8625
8627
  const key = req.params.key;
8626
- const value = getSetting2(key) ?? SETTINGS_DEFAULTS[key] ?? null;
8628
+ const value = getSetting3(key) ?? SETTINGS_DEFAULTS[key] ?? null;
8627
8629
  res.json({ key, value });
8628
8630
  });
8629
8631
  app.put("/api/settings/:key", async (req, res) => {
8630
- const { setSetting: setSetting2 } = await import("./settings-TR4BF2C4.js");
8632
+ const { setSetting: setSetting2 } = await import("./settings-FQUDSGZF.js");
8631
8633
  const key = req.params.key;
8632
8634
  const { value } = req.body;
8633
8635
  if (value === void 0) {
@@ -8654,7 +8656,7 @@ All file and git operations should use this branch.
8654
8656
  }
8655
8657
  });
8656
8658
  app.get("/api/tools/shells", async (_req, res) => {
8657
- const { listAvailableShells } = await import("./platform-EAZNZDAE.js");
8659
+ const { listAvailableShells } = await import("./platform-WCXMN4NM.js");
8658
8660
  res.json({ shells: listAvailableShells() });
8659
8661
  });
8660
8662
  app.get("/api/config", async (_req, res) => {
@@ -8663,7 +8665,7 @@ All file and git operations should use this branch.
8663
8665
  let visionFallback;
8664
8666
  let globalWorkdir;
8665
8667
  try {
8666
- const { loadGlobalConfig, getVisionFallback } = await import("./config-LOK3LXFH.js");
8668
+ const { loadGlobalConfig, getVisionFallback } = await import("./config-AJSENHBC.js");
8667
8669
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
8668
8670
  const fallback = getVisionFallback(globalConfig);
8669
8671
  if (fallback) {
@@ -8692,7 +8694,7 @@ All file and git operations should use this branch.
8692
8694
  defaultModelSelection: config3.defaultModelSelection,
8693
8695
  visionFallback,
8694
8696
  platform: platformInfo,
8695
- locale: (await import("./settings-TR4BF2C4.js")).getSetting("display.locale") ?? "automatic"
8697
+ locale: (await import("./settings-FQUDSGZF.js")).getSetting("display.locale") ?? "automatic"
8696
8698
  });
8697
8699
  });
8698
8700
  app.post("/api/model/refresh", async (_req, res) => {
@@ -8748,8 +8750,8 @@ All file and git operations should use this branch.
8748
8750
  }));
8749
8751
  }
8750
8752
  app.post("/api/proxy/test", async (_req, res) => {
8751
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-TR4BF2C4.js");
8752
- const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
8753
+ const { getSetting: getSetting3, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-FQUDSGZF.js");
8754
+ const proxyUrl = getSetting3(SETTINGS_KEYS2.PROXY_URL);
8753
8755
  if (!proxyUrl) {
8754
8756
  return res.status(400).json({ success: false, error: "No proxy URL configured" });
8755
8757
  }
@@ -8840,8 +8842,8 @@ All file and git operations should use this branch.
8840
8842
  }
8841
8843
  });
8842
8844
  app.post("/api/proxy/test", async (_req, res) => {
8843
- const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-TR4BF2C4.js");
8844
- const proxyUrl = getSetting2(SETTINGS_KEYS.PROXY_URL);
8845
+ const { getSetting: getSetting3, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-FQUDSGZF.js");
8846
+ const proxyUrl = getSetting3(SETTINGS_KEYS2.PROXY_URL);
8845
8847
  if (!proxyUrl) {
8846
8848
  return res.status(400).json({ success: false, error: "No proxy URL configured" });
8847
8849
  }
@@ -8867,7 +8869,7 @@ All file and git operations should use this branch.
8867
8869
  const backend = req.query["backend"];
8868
8870
  if (!url) return res.status(400).json({ error: "url is required" });
8869
8871
  try {
8870
- const { fetchModelsWithContext } = await import("./provider-manager-RHJYUU5W.js");
8872
+ const { fetchModelsWithContext } = await import("./provider-manager-WW2EF76W.js");
8871
8873
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8872
8874
  const { getCatalogEntry } = await import("./model-catalog-Y5MA5OZP.js");
8873
8875
  const models = await fetchModelsWithContext(
@@ -8940,9 +8942,9 @@ All file and git operations should use this branch.
8940
8942
  return res.json({ success: true, message: { content: response2.content }, raw: response2 });
8941
8943
  }
8942
8944
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8943
- const { getBackendCapabilities } = await import("./backend-EPISSWLB.js");
8945
+ const { getBackendCapabilities } = await import("./backend-2VSDPCWS.js");
8944
8946
  const { buildNonStreamingCreateParams } = await import("./client-pure-YZ4IGCU4.js");
8945
- const { OpenAIHttpClient } = await import("./http-client-RA7XFYPO.js");
8947
+ const { OpenAIHttpClient } = await import("./http-client-SZZBSL4U.js");
8946
8948
  const { ensureVersionPrefix } = await import("./url-utils-C5BM7NF7.js");
8947
8949
  const profile = getModelProfile2(model);
8948
8950
  const capabilities = getBackendCapabilities(backend || "unknown");
@@ -9013,7 +9015,7 @@ All file and git operations should use this branch.
9013
9015
  return res.status(400).json({ error: "name, url, and backend are required" });
9014
9016
  }
9015
9017
  try {
9016
- const { loadGlobalConfig, saveGlobalConfig, addProvider, setDefaultModelSelection } = await import("./config-LOK3LXFH.js");
9018
+ const { loadGlobalConfig, saveGlobalConfig, addProvider, setDefaultModelSelection } = await import("./config-AJSENHBC.js");
9017
9019
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9018
9020
  const providerBackend = backend === "unknown" ? detectBackendFromUrl(url) ?? "unknown" : backend;
9019
9021
  const providerModels = modelConfigs?.length ? buildModelConfigs(modelConfigs) : model ? [{ id: model, contextWindow: 2e5, source: "user" }] : [];
@@ -9054,7 +9056,7 @@ All file and git operations should use this branch.
9054
9056
  app.post("/api/init/config", async (req, res) => {
9055
9057
  const { workdir, visionFallback } = req.body;
9056
9058
  try {
9057
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-LOK3LXFH.js");
9059
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-AJSENHBC.js");
9058
9060
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9059
9061
  const updatedVf = visionFallback ? { ...globalConfig.visionFallback, ...visionFallback } : globalConfig.visionFallback;
9060
9062
  const updatedConfig = {
@@ -9089,7 +9091,7 @@ All file and git operations should use this branch.
9089
9091
  }
9090
9092
  const updates = parsed.data;
9091
9093
  try {
9092
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-LOK3LXFH.js");
9094
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-AJSENHBC.js");
9093
9095
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9094
9096
  const filteredUpdates = Object.fromEntries(Object.entries(updates).filter(([, v]) => v !== void 0));
9095
9097
  const updatedConfig = {
@@ -9131,8 +9133,8 @@ All file and git operations should use this branch.
9131
9133
  }
9132
9134
  const testConfig = parsed.data;
9133
9135
  try {
9134
- const { resolveVisionFallback } = await import("./config-LOK3LXFH.js");
9135
- const { loadGlobalConfig } = await import("./config-LOK3LXFH.js");
9136
+ const { resolveVisionFallback } = await import("./config-AJSENHBC.js");
9137
+ const { loadGlobalConfig } = await import("./config-AJSENHBC.js");
9136
9138
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9137
9139
  const filteredTestConfig = Object.fromEntries(Object.entries(testConfig).filter(([, v]) => v !== void 0));
9138
9140
  const testVisionFallback = {
@@ -9187,7 +9189,7 @@ All file and git operations should use this branch.
9187
9189
  return res.status(400).json({ error: "providerIds must be a non-empty array" });
9188
9190
  }
9189
9191
  try {
9190
- const { loadGlobalConfig, saveGlobalConfig, reorderProviders } = await import("./config-LOK3LXFH.js");
9192
+ const { loadGlobalConfig, saveGlobalConfig, reorderProviders } = await import("./config-AJSENHBC.js");
9191
9193
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9192
9194
  let updatedConfig;
9193
9195
  try {
@@ -9209,7 +9211,7 @@ All file and git operations should use this branch.
9209
9211
  });
9210
9212
  app.delete("/api/providers/:id", async (req, res) => {
9211
9213
  const { id } = req.params;
9212
- const { loadGlobalConfig, saveGlobalConfig, removeProvider } = await import("./config-LOK3LXFH.js");
9214
+ const { loadGlobalConfig, saveGlobalConfig, removeProvider } = await import("./config-AJSENHBC.js");
9213
9215
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9214
9216
  const updatedConfig = removeProvider(globalConfig, id);
9215
9217
  await saveGlobalConfig(config3.mode ?? "production", updatedConfig, config3.globalConfigPath);
@@ -9219,7 +9221,7 @@ All file and git operations should use this branch.
9219
9221
  if (clearedSessions > 0) {
9220
9222
  logger.info("Cleared provider from sessions of deleted provider", { providerId: id, sessions: clearedSessions });
9221
9223
  }
9222
- const { pruneFavoriteModels } = await import("./settings-TR4BF2C4.js");
9224
+ const { pruneFavoriteModels } = await import("./settings-FQUDSGZF.js");
9223
9225
  pruneFavoriteModels(updatedConfig.providers);
9224
9226
  res.json({ success: true });
9225
9227
  });
@@ -9227,7 +9229,7 @@ All file and git operations should use this branch.
9227
9229
  const { id } = req.params;
9228
9230
  const { isLocal } = req.body;
9229
9231
  try {
9230
- const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-LOK3LXFH.js");
9232
+ const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-AJSENHBC.js");
9231
9233
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9232
9234
  const provider = globalConfig.providers.find((p) => p.id === id);
9233
9235
  if (!provider) {
@@ -9259,7 +9261,7 @@ All file and git operations should use this branch.
9259
9261
  transportAdapter
9260
9262
  } = req.body;
9261
9263
  try {
9262
- const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-LOK3LXFH.js");
9264
+ const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-AJSENHBC.js");
9263
9265
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9264
9266
  const provider = globalConfig.providers.find((p) => p.id === id);
9265
9267
  if (!provider) {
@@ -9282,7 +9284,7 @@ All file and git operations should use this branch.
9282
9284
  await saveGlobalConfig(config3.mode ?? "production", updatedConfig, config3.globalConfigPath);
9283
9285
  providerManager.setProviders(updatedConfig.providers, updatedConfig.defaultModelSelection ?? void 0);
9284
9286
  config3.defaultModelSelection = updatedConfig.defaultModelSelection;
9285
- const { pruneFavoriteModels } = await import("./settings-TR4BF2C4.js");
9287
+ const { pruneFavoriteModels } = await import("./settings-FQUDSGZF.js");
9286
9288
  pruneFavoriteModels(updatedConfig.providers);
9287
9289
  res.json({ success: true, provider: updatedConfig.providers.find((p) => p.id === id) });
9288
9290
  } catch (error) {
@@ -9301,7 +9303,7 @@ All file and git operations should use this branch.
9301
9303
  return res.status(400).json({ error: "thinkingEnabled must be a boolean" });
9302
9304
  }
9303
9305
  try {
9304
- const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-LOK3LXFH.js");
9306
+ const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-AJSENHBC.js");
9305
9307
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9306
9308
  const provider = globalConfig.providers.find((p) => p.id === id);
9307
9309
  if (!provider) {
@@ -9341,7 +9343,7 @@ All file and git operations should use this branch.
9341
9343
  return res.status(400).json({ error: result.error });
9342
9344
  }
9343
9345
  const llmClient = getLLMClient();
9344
- const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-LOK3LXFH.js");
9346
+ const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-AJSENHBC.js");
9345
9347
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9346
9348
  const updatedConfig = setDefaultModelSelection(globalConfig, id, llmClient.getModel());
9347
9349
  await saveGlobalConfig(config3.mode ?? "production", updatedConfig, config3.globalConfigPath);
@@ -9368,7 +9370,7 @@ All file and git operations should use this branch.
9368
9370
  });
9369
9371
  async function rebuildMcpTools() {
9370
9372
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-ZY4FC4C4.js");
9371
- const { setMcpTools: setMcpTools2 } = await import("./tools-BL6XCTUV.js");
9373
+ const { setMcpTools: setMcpTools2 } = await import("./tools-7L63ZMNU.js");
9372
9374
  const mcpTools = createMcpTools2(mcpManager);
9373
9375
  setMcpTools2(mcpTools);
9374
9376
  toolRegistry = createToolRegistry();
@@ -9443,7 +9445,7 @@ All file and git operations should use this branch.
9443
9445
  };
9444
9446
  await mcpManager.addServer(name, serverCfg);
9445
9447
  const server = mcpManager.getServer(name);
9446
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-LOK3LXFH.js");
9448
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-AJSENHBC.js");
9447
9449
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9448
9450
  const updatedMcpServers = { ...globalConfig.mcpServers ?? {}, [name]: serverCfg };
9449
9451
  await saveGlobalConfig(
@@ -9508,7 +9510,7 @@ All file and git operations should use this branch.
9508
9510
  return res.status(400).json({ error: "oauth must be a boolean" });
9509
9511
  }
9510
9512
  try {
9511
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-LOK3LXFH.js");
9513
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-AJSENHBC.js");
9512
9514
  const { applyMcpServerUpdate } = await import("./update-server-SVPV6ZJZ.js");
9513
9515
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9514
9516
  const mcpServers2 = { ...globalConfig.mcpServers ?? {} };
@@ -9561,7 +9563,7 @@ All file and git operations should use this branch.
9561
9563
  mcpManager.removeServer(name);
9562
9564
  const { clearMcpOAuthEntry } = await import("./oauth-store-KECHUT54.js");
9563
9565
  await clearMcpOAuthEntry(name);
9564
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-LOK3LXFH.js");
9566
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-AJSENHBC.js");
9565
9567
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9566
9568
  const updatedMcpServers = { ...globalConfig.mcpServers ?? {} };
9567
9569
  delete updatedMcpServers[name];
@@ -9738,7 +9740,7 @@ All file and git operations should use this branch.
9738
9740
  await mcpManager.setToolEnabled(name, toolName, enabled);
9739
9741
  const server = mcpManager.getServer(name);
9740
9742
  if (server) {
9741
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-LOK3LXFH.js");
9743
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-AJSENHBC.js");
9742
9744
  const globalConfig = await loadGlobalConfig(config3.mode ?? "production", config3.globalConfigPath);
9743
9745
  const mcpServers2 = { ...globalConfig.mcpServers ?? {} };
9744
9746
  const serverCfg = mcpServers2[name];
@@ -9798,13 +9800,13 @@ All file and git operations should use this branch.
9798
9800
  })
9799
9801
  );
9800
9802
  app.get("/api/sessions/:id/background-processes", async (req, res) => {
9801
- const { getSessionProcesses } = await import("./manager-4SMHCFXY.js");
9803
+ const { getSessionProcesses } = await import("./manager-PDG7RKPA.js");
9802
9804
  const sessionId = req.params.id;
9803
9805
  const processes = getSessionProcesses(sessionId);
9804
9806
  res.json({ processes });
9805
9807
  });
9806
9808
  app.post("/api/sessions/:id/background-process/:processId/stop", async (req, res) => {
9807
- const { stopProcess } = await import("./manager-4SMHCFXY.js");
9809
+ const { stopProcess } = await import("./manager-PDG7RKPA.js");
9808
9810
  const sessionId = req.params.id;
9809
9811
  const processId = req.params.processId;
9810
9812
  const session = sessionManager.getSession(sessionId);
@@ -9944,7 +9946,7 @@ All file and git operations should use this branch.
9944
9946
  );
9945
9947
  const wss = wssExports.wss;
9946
9948
  deferTasksBroadcast = (_projectId, payload) => wssExports.broadcastAll({ type: "tasks.update", payload });
9947
- const { launchWorkflowRun, abortRunnerRun } = await import("./launch-L5NL75KK.js");
9949
+ const { launchWorkflowRun, abortRunnerRun } = await import("./launch-4COI5RGL.js");
9948
9950
  deferTasksLaunchWorkflow = (sessionId, launch) => {
9949
9951
  const effective = sessionManager.resolveEffectiveProviderModel(sessionId);
9950
9952
  let llmClient = getLLMClient();
@@ -9989,7 +9991,7 @@ All file and git operations should use this branch.
9989
9991
  const state = sessionManager.getContextState(sessionId);
9990
9992
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
9991
9993
  });
9992
- const { QueueProcessor } = await import("./processor-T4VWZMXT.js");
9994
+ const { QueueProcessor } = await import("./processor-UZ7OBCAK.js");
9993
9995
  const queueProcessor = new QueueProcessor({
9994
9996
  sessionManager,
9995
9997
  providerManager,
@@ -9999,6 +10001,21 @@ All file and git operations should use this branch.
9999
10001
  broadcastForSession: wssExports.broadcastForSession
10000
10002
  });
10001
10003
  queueProcessor.start();
10004
+ const { getSetting: getSetting2, SETTINGS_KEYS } = await import("./settings-FQUDSGZF.js");
10005
+ if (getSetting2(SETTINGS_KEYS.AUTO_CONTINUE_ON_BOOT) === "true") {
10006
+ const { getStaleRunningSessionIds } = await import("./store-AOZ46PBS.js");
10007
+ const { runBootAutoContinuations } = await import("./auto-continue-M3RPFGFI.js");
10008
+ const staleIds = getStaleRunningSessionIds();
10009
+ if (staleIds.length > 0) {
10010
+ const continued = runBootAutoContinuations(staleIds, {
10011
+ getEvents: (sessionId) => getEventStore().getEvents(sessionId),
10012
+ hasActiveWorkflow: (sessionId) => sessionManager.getActiveWorkflowExecution(sessionId) !== null,
10013
+ appendEvent: (sessionId, event) => getEventStore().append(sessionId, event),
10014
+ queueMessage: (sessionId, content) => sessionManager.queueMessage(sessionId, "asap", content, void 0, "auto-prompt")
10015
+ });
10016
+ logger.info("Boot auto-continuation queued", { sessions: staleIds.length, continued });
10017
+ }
10018
+ }
10002
10019
  const abortSession = (sessionId) => {
10003
10020
  const wsAborted = wssExports.abortSession(sessionId);
10004
10021
  const qpAborted = queueProcessor.abortSession(sessionId);
@@ -10031,8 +10048,8 @@ All file and git operations should use this branch.
10031
10048
  launchWorkflow: (sessionId, launch) => deferTasksLaunchWorkflow(sessionId, launch),
10032
10049
  stopSession: (sessionId) => {
10033
10050
  void (async () => {
10034
- const { stopSessionExecution } = await import("./chat-handler-OFB4426F.js");
10035
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-BL6XCTUV.js");
10051
+ const { stopSessionExecution } = await import("./chat-handler-QOOQOHHR.js");
10052
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-7L63ZMNU.js");
10036
10053
  sessionManager.clearMessageQueue(sessionId);
10037
10054
  stopSessionExecution(sessionId, sessionManager);
10038
10055
  abortSession(sessionId);
@@ -10159,4 +10176,4 @@ export {
10159
10176
  createServerHandle,
10160
10177
  createServer
10161
10178
  };
10162
- //# sourceMappingURL=chunk-VK2BSIJP.js.map
10179
+ //# sourceMappingURL=chunk-5ONERSDK.js.map