openfox 2.0.0-beta.4 → 2.0.0-beta.6

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 (50) hide show
  1. package/dist/{chat-handler-IUWEBZG7.js → chat-handler-27FY5TEH.js} +15 -29
  2. package/dist/{chunk-WBYS7AQN.js → chunk-3FFHHYWP.js} +178 -99
  3. package/dist/{chunk-HGAMIPFO.js → chunk-7FDY3EOH.js} +18 -176
  4. package/dist/{chunk-CEZNMLOO.js → chunk-7TTEGAO6.js} +12 -13
  5. package/dist/{chunk-FQLK5GL5.js → chunk-BVHFMAVN.js} +1 -1
  6. package/dist/{chunk-HW3U4XSZ.js → chunk-CDDMHSZF.js} +4 -4
  7. package/dist/{chunk-HHAJ3QF6.js → chunk-EMJGF3A7.js} +9 -24
  8. package/dist/{chunk-KEF4O3UM.js → chunk-FRCLNAE2.js} +2952 -3256
  9. package/dist/{chunk-RF2JGDSS.js → chunk-IGSZUXQP.js} +3 -3
  10. package/dist/{chunk-HLZV4S2I.js → chunk-NPHYEUYE.js} +127 -35
  11. package/dist/{chunk-NNEHZT3V.js → chunk-QUSUEN5R.js} +3 -3
  12. package/dist/{chunk-EYCCASW3.js → chunk-R3EK3ODJ.js} +6 -6
  13. package/dist/{chunk-7IKUIYFZ.js → chunk-RBJ25FIR.js} +135 -147
  14. package/dist/{chunk-PSJIT5LZ.js → chunk-RFNEDBVO.js} +4 -4
  15. package/dist/chunk-RI6GAMNP.js +13 -0
  16. package/dist/{chunk-26DZZZDC.js → chunk-XJEOP6XU.js} +5 -11
  17. package/dist/cli/dev.js +1 -1
  18. package/dist/cli/index.js +1 -1
  19. package/dist/compactor-TDNRM3A7.js +9 -0
  20. package/dist/{config-YU7NYZYG.js → config-VBBMTXJZ.js} +5 -6
  21. package/dist/{events-YO52472Q.js → events-PQ3KTI5H.js} +8 -8
  22. package/dist/{folding-K5L6M4WK.js → folding-CXORTBAU.js} +2 -3
  23. package/dist/{orchestrator-F75DNQKQ.js → orchestrator-QDCVUBCL.js} +18 -23
  24. package/dist/package.json +1 -1
  25. package/dist/{processor-FTEASNGS.js → processor-K4B7QRO2.js} +8 -10
  26. package/dist/{protocol-K62EPEGS.js → protocol-CN24IKQN.js} +3 -5
  27. package/dist/{protocol-BQ12Aw5J.d.ts → protocol-De-Pzgry.d.ts} +12 -38
  28. package/dist/{provider-HTJEB3ON.js → provider-NRWSSO55.js} +9 -10
  29. package/dist/{serve-CEQ2QMM5.js → serve-J6EM3G6N.js} +25 -27
  30. package/dist/server/index.d.ts +1 -6
  31. package/dist/server/index.js +15 -17
  32. package/dist/{settings-VRAOAPLA.js → settings-6XX56F3F.js} +2 -2
  33. package/dist/shared/index.d.ts +2 -2
  34. package/dist/shared/index.js +1 -1
  35. package/dist/{tools-OPEU2E5M.js → tools-GCANYSB7.js} +12 -15
  36. package/dist/web/assets/{index-bDyDeCAz.css → index-aa3jRAZ9.css} +2 -2
  37. package/dist/web/assets/index-ntDiC8b_.js +299 -0
  38. package/dist/web/index.html +2 -2
  39. package/dist/web/sw.js +1 -1
  40. package/dist/workflow-defaults/default.workflow.json +3 -3
  41. package/package.json +1 -1
  42. package/dist/auto-compaction-A3PIMGLF.js +0 -28
  43. package/dist/chunk-CGZHLM3K.js +0 -70
  44. package/dist/chunk-MCPID4EJ.js +0 -28
  45. package/dist/chunk-SZKEGZIB.js +0 -140
  46. package/dist/optimize-storage-2N6BY5KZ.js +0 -7
  47. package/dist/runtime-config-NPSPMRDA.js +0 -9
  48. package/dist/vision-fallback-3MIZZ6NQ.js +0 -22
  49. package/dist/web/assets/index-ZTEHxmVW.js +0 -317
  50. /package/dist/web/{workbox-7fc22fbe.js → workbox-8c29f6e4.js} +0 -0
@@ -1,14 +1,19 @@
1
1
  import {
2
- createVerifierNudgeConfig,
3
- runBuilderTurn,
2
+ computeDynamicContextHash,
3
+ injectWorkflowKickoffIfNeeded,
4
+ runAgentTurn,
4
5
  runChatTurn
5
- } from "./chunk-7IKUIYFZ.js";
6
+ } from "./chunk-RBJ25FIR.js";
6
7
  import {
8
+ COMPACTION_PROMPT,
7
9
  TurnMetrics,
8
10
  agentExists,
11
+ buildBasePrompt,
9
12
  buildTopLevelSystemPrompt,
10
13
  checkAborted,
11
- computeDynamicContextHash,
14
+ consumeStreamGenerator,
15
+ createChatDoneEvent,
16
+ createMessageDoneEvent,
12
17
  createMessageStartEvent,
13
18
  createToolRegistry,
14
19
  deleteAgent,
@@ -21,6 +26,7 @@ import {
21
26
  findAgentById,
22
27
  findSkillById,
23
28
  getAllInstructions,
29
+ getConversationMessages,
24
30
  getDefaultAgentIds,
25
31
  getDefaultIds,
26
32
  getDefaultSkillIds,
@@ -42,44 +48,24 @@ import {
42
48
  loadProjectSkills,
43
49
  loadUserAgents,
44
50
  loadUserSkills,
51
+ loadVisionModelFromGlobalConfig,
45
52
  pathExists,
46
- performManualContextCompaction,
53
+ processContextImages,
47
54
  saveAgent,
48
55
  saveAgentToProject,
49
56
  saveItemToDir,
50
57
  saveSkill,
51
58
  saveSkillToProject,
52
59
  skillExists,
53
- spawnShellProcess
54
- } from "./chunk-KEF4O3UM.js";
55
- import {
56
- EventEmitter,
57
- provideAnswer
58
- } from "./chunk-BJYPTN5S.js";
59
- import {
60
- getProject
61
- } from "./chunk-XAMAYRDA.js";
60
+ spawnShellProcess,
61
+ streamLLMPure
62
+ } from "./chunk-FRCLNAE2.js";
62
63
  import {
63
64
  getPathSeparator,
64
65
  getPlatformShell,
65
66
  isAbsolutePath,
66
67
  onProcessEvent
67
68
  } from "./chunk-PBGOZMVY.js";
68
- import {
69
- createProviderManager,
70
- parseDefaultModelSelection
71
- } from "./chunk-RF2JGDSS.js";
72
- import {
73
- SessionNotFoundError,
74
- createLLMClient,
75
- detectModel,
76
- getLlmStatus
77
- } from "./chunk-HHAJ3QF6.js";
78
- import {
79
- detectBackend,
80
- getBackendDisplayName,
81
- getModelProfile
82
- } from "./chunk-HGAMIPFO.js";
83
69
  import {
84
70
  createSession,
85
71
  deleteSession,
@@ -95,24 +81,24 @@ import {
95
81
  emitSessionInitialized,
96
82
  emitUserMessage,
97
83
  getCurrentContextWindowId,
84
+ getCurrentWindowMessageOptions,
98
85
  getEventStore,
86
+ getRuntimeConfig,
99
87
  getSession,
100
88
  getSessionState,
101
89
  initEventStore,
102
90
  listSessions,
103
91
  listSessionsByProject,
92
+ setRuntimeConfig,
104
93
  updateSessionDangerLevel,
105
94
  updateSessionMetadata,
106
95
  updateSessionProvider,
107
96
  updateSessionRunning
108
- } from "./chunk-HLZV4S2I.js";
109
- import {
110
- initDatabase
111
- } from "./chunk-FBGWG4N6.js";
97
+ } from "./chunk-NPHYEUYE.js";
112
98
  import {
113
99
  buildMessagesFromStoredEvents,
114
100
  foldPendingConfirmations
115
- } from "./chunk-26DZZZDC.js";
101
+ } from "./chunk-XJEOP6XU.js";
116
102
  import {
117
103
  createChatErrorMessage,
118
104
  createChatMessageMessage,
@@ -127,24 +113,46 @@ import {
127
113
  parseClientMessage,
128
114
  serializeServerMessage,
129
115
  storedEventToServerMessage
130
- } from "./chunk-CEZNMLOO.js";
116
+ } from "./chunk-7TTEGAO6.js";
117
+ import {
118
+ EventEmitter,
119
+ provideAnswer
120
+ } from "./chunk-BJYPTN5S.js";
121
+ import {
122
+ getProject
123
+ } from "./chunk-XAMAYRDA.js";
124
+ import {
125
+ initDatabase
126
+ } from "./chunk-FBGWG4N6.js";
131
127
  import {
132
128
  computeSessionStats
133
129
  } from "./chunk-VUQCQXXJ.js";
134
130
  import {
135
131
  createServerMessage
136
- } from "./chunk-FQLK5GL5.js";
132
+ } from "./chunk-BVHFMAVN.js";
137
133
  import {
138
- getGlobalConfigDir
139
- } from "./chunk-CQGTEGKL.js";
134
+ createProviderManager,
135
+ parseDefaultModelSelection
136
+ } from "./chunk-IGSZUXQP.js";
140
137
  import {
141
- getRuntimeConfig,
142
- setRuntimeConfig
143
- } from "./chunk-CGZHLM3K.js";
138
+ SessionNotFoundError,
139
+ createLLMClient,
140
+ detectModel,
141
+ getLlmStatus
142
+ } from "./chunk-EMJGF3A7.js";
143
+ import {
144
+ detectBackend,
145
+ getBackendDisplayName,
146
+ getModelProfile,
147
+ modelSupportsVision
148
+ } from "./chunk-7FDY3EOH.js";
144
149
  import {
145
150
  logger,
146
151
  setLogLevel
147
152
  } from "./chunk-K44MW7JJ.js";
153
+ import {
154
+ getGlobalConfigDir
155
+ } from "./chunk-CQGTEGKL.js";
148
156
 
149
157
  // src/server/index.ts
150
158
  import express from "express";
@@ -2041,7 +2049,7 @@ function emitWorkflowMessage(eventStore, sessionId, content, windowOptions, onMe
2041
2049
  }
2042
2050
  return msgId;
2043
2051
  }
2044
- function getCurrentWindowMessageOptions(sessionId) {
2052
+ function getCurrentWindowMessageOptions2(sessionId) {
2045
2053
  const contextWindowId = getCurrentContextWindowId(sessionId);
2046
2054
  return contextWindowId ? { contextWindowId } : void 0;
2047
2055
  }
@@ -2087,7 +2095,7 @@ async function executeWorkflow(workflow, options, subGroup) {
2087
2095
  }
2088
2096
  }
2089
2097
  const startMsgId = crypto.randomUUID();
2090
- const startWindowOpts = getCurrentWindowMessageOptions(sessionId);
2098
+ const startWindowOpts = getCurrentWindowMessageOptions2(sessionId);
2091
2099
  eventStore.append(
2092
2100
  sessionId,
2093
2101
  createMessageStartEvent(
@@ -2129,7 +2137,7 @@ async function executeWorkflow(workflow, options, subGroup) {
2129
2137
  };
2130
2138
  }
2131
2139
  const session = sessionManager.requireSession(sessionId);
2132
- const currentWindowMessageOptions = getCurrentWindowMessageOptions(sessionId);
2140
+ const currentWindowMessageOptions = getCurrentWindowMessageOptions2(sessionId);
2133
2141
  const criteriaEntries = session.metadataEntries["criteria"] ?? [];
2134
2142
  const templateCtx = {
2135
2143
  workdir: session.workdir,
@@ -2191,22 +2199,36 @@ async function executeWorkflow(workflow, options, subGroup) {
2191
2199
  emitWorkflowMessage(eventStore, sessionId, nudgeContent, currentWindowMessageOptions, onMessage);
2192
2200
  }
2193
2201
  const turnMetrics = new TurnMetrics();
2194
- const agentResult = await runBuilderTurn(
2202
+ const es = getEventStore();
2203
+ const append = (event) => es.append(sessionId, event);
2204
+ let stepDoneCalled = false;
2205
+ const agentResult = await runAgentTurn(
2195
2206
  {
2196
2207
  sessionManager,
2197
2208
  sessionId,
2198
2209
  llmClient,
2199
- injectStepDone: true,
2200
2210
  ...options.statsIdentity ? { statsIdentity: options.statsIdentity } : {},
2201
- ...!firstEntryForStep.has(step.id) && !agentStep.prompt && options.injectBuilderKickoff === true ? { injectBuilderKickoff: true } : {},
2202
2211
  ...signal ? { signal } : {},
2203
2212
  ...onMessage ? { onMessage } : {}
2204
2213
  },
2205
- turnMetrics
2214
+ turnMetrics,
2215
+ agentStep.agentId ?? "planner",
2216
+ append,
2217
+ {
2218
+ ...!firstEntryForStep.has(step.id) && !agentStep.prompt && options.injectWorkflowKickoff === true ? { injectKickoff: () => injectWorkflowKickoffIfNeeded(sessionManager, sessionId, es) } : {},
2219
+ onToolExecuted: (toolCall, toolResult) => {
2220
+ if (toolCall.name === "step_done" && toolResult.success) {
2221
+ stepDoneCalled = true;
2222
+ }
2223
+ if (toolResult.success && ["write_file", "edit_file"].includes(toolCall.name)) {
2224
+ const path = toolCall.arguments["path"];
2225
+ sessionManager.addModifiedFile(sessionId, path);
2226
+ }
2227
+ }
2228
+ }
2206
2229
  );
2207
2230
  firstEntryForStep.add(step.id);
2208
2231
  const agentReturnValue = agentResult.returnValueResult ?? "completed";
2209
- const stepDoneCalled = agentResult.stepDoneCalled ?? false;
2210
2232
  lastStepOutput = {
2211
2233
  ...agentResult.returnValueContent ? { content: agentResult.returnValueContent } : {},
2212
2234
  ...agentResult.returnValueResult ? { result: agentResult.returnValueResult } : {},
@@ -2241,7 +2263,6 @@ async function executeWorkflow(workflow, options, subGroup) {
2241
2263
  definitions: toolRegistry.definitions.filter((d) => d.type === "function" && d.function.name !== "step_done"),
2242
2264
  execute: toolRegistry.execute
2243
2265
  };
2244
- const nudgeConfig = subStep.subAgentType === "verifier" && !subStep.nudgePrompt ? createVerifierNudgeConfig() : void 0;
2245
2266
  const result = await executeSubAgent({
2246
2267
  subAgentType: subStep.subAgentType,
2247
2268
  prompt: resolvedPrompt,
@@ -2257,8 +2278,7 @@ async function executeWorkflow(workflow, options, subGroup) {
2257
2278
  model: llmClient.getModel()
2258
2279
  },
2259
2280
  ...signal ? { signal } : {},
2260
- ...onMessage ? { onMessage } : {},
2261
- nudgeConfig
2281
+ ...onMessage ? { onMessage } : {}
2262
2282
  });
2263
2283
  lastStepOutput = { content: result.content ?? "", ...result.result ? { result: result.result } : {} };
2264
2284
  stepOutcome = { result: result.result ?? "success", output: lastStepOutput };
@@ -2414,6 +2434,76 @@ async function runOrchestrator(options) {
2414
2434
  return executeWorkflow(workflow, options, options.subGroup);
2415
2435
  }
2416
2436
 
2437
+ // src/server/context/auto-compaction.ts
2438
+ async function compactContext(options) {
2439
+ const { sessionManager, sessionId, llmClient, signal } = options;
2440
+ const eventStore = getEventStore();
2441
+ const session = sessionManager.requireSession(sessionId);
2442
+ const compactPromptMsgId = crypto.randomUUID();
2443
+ eventStore.append(
2444
+ sessionId,
2445
+ createMessageStartEvent(compactPromptMsgId, "user", COMPACTION_PROMPT, {
2446
+ ...getCurrentWindowMessageOptions(sessionId) ?? {},
2447
+ isSystemGenerated: true,
2448
+ messageKind: "auto-prompt",
2449
+ metadata: { type: "compaction", name: "Compaction", color: "#64748b" }
2450
+ })
2451
+ );
2452
+ eventStore.append(sessionId, { type: "message.done", data: { messageId: compactPromptMsgId } });
2453
+ const rawEvents = eventStore.getEvents(sessionId);
2454
+ const modelVision = modelSupportsVision(llmClient.getModel());
2455
+ const runtimeConfig = getRuntimeConfig();
2456
+ const visionModel = runtimeConfig.llm.visionModel ? { baseUrl: runtimeConfig.llm.baseUrl, model: runtimeConfig.llm.visionModel, timeout: runtimeConfig.llm.timeout } : await loadVisionModelFromGlobalConfig();
2457
+ const { events: processedEvents } = await processContextImages(rawEvents, {
2458
+ modelSupportsVision: modelVision,
2459
+ ...visionModel ? { visionModel } : {},
2460
+ onEvent: (event) => eventStore.append(sessionId, event)
2461
+ });
2462
+ const messages = getConversationMessages({ type: "toplevel", sessionId }, { events: processedEvents });
2463
+ const systemPrompt = buildBasePrompt(session.workdir);
2464
+ const assistantMsgId = crypto.randomUUID();
2465
+ const streamGen = streamLLMPure({
2466
+ messageId: assistantMsgId,
2467
+ systemPrompt,
2468
+ llmClient,
2469
+ messages,
2470
+ tools: [],
2471
+ toolChoice: "none",
2472
+ signal
2473
+ });
2474
+ const result = await consumeStreamGenerator(streamGen, (event) => {
2475
+ eventStore.append(sessionId, event);
2476
+ });
2477
+ const summary = result.content?.trim() || result.thinkingContent?.trim() || "";
2478
+ if (!summary) {
2479
+ eventStore.append(sessionId, {
2480
+ type: "chat.error",
2481
+ data: { error: "Compaction produced empty summary, continuing with full context", recoverable: true }
2482
+ });
2483
+ logger.warn("Compaction produced empty summary", { sessionId });
2484
+ return;
2485
+ }
2486
+ const closedWindowId = getCurrentContextWindowId(sessionId) ?? "";
2487
+ const newWindowId = crypto.randomUUID();
2488
+ eventStore.append(sessionId, {
2489
+ type: "context.compacted",
2490
+ data: { closedWindowId, newWindowId, beforeTokens: result.usage.promptTokens, afterTokens: 0, summary }
2491
+ });
2492
+ eventStore.append(sessionId, {
2493
+ type: "message.start",
2494
+ data: {
2495
+ messageId: assistantMsgId,
2496
+ role: "assistant",
2497
+ content: summary,
2498
+ contextWindowId: newWindowId,
2499
+ isCompactionSummary: true
2500
+ }
2501
+ });
2502
+ eventStore.append(sessionId, createMessageDoneEvent(assistantMsgId, {}));
2503
+ eventStore.append(sessionId, createChatDoneEvent(assistantMsgId, "complete"));
2504
+ logger.info("Manual compaction complete", { sessionId });
2505
+ }
2506
+
2417
2507
  // src/server/auth.ts
2418
2508
  import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2 } from "fs/promises";
2419
2509
  import { join as join2, dirname as dirname2 } from "path";
@@ -2862,7 +2952,6 @@ function createWebSocketServer(httpServer, config4, getLLMClient, getActiveProvi
2862
2952
  return;
2863
2953
  }
2864
2954
  sessionManager.clearMessageQueue(sessionId);
2865
- sessionManager.setRunning(sessionId, false);
2866
2955
  const contextState = sessionManager.getContextState(sessionId);
2867
2956
  sendFn(sessionId, createContextStateMessage(contextState));
2868
2957
  }
@@ -3157,17 +3246,14 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
3157
3246
  send(createErrorMessage("SESSION_RUNNING", "Cannot compact while session is running", message.id));
3158
3247
  return;
3159
3248
  }
3160
- const contextState = sessionManager.getContextState(sessionId);
3161
- const tokensBefore = contextState.currentTokens;
3162
3249
  send({ type: "ack", payload: {}, id: message.id });
3163
3250
  (async () => {
3164
3251
  try {
3165
- await performManualContextCompaction({
3252
+ await compactContext({
3166
3253
  sessionManager,
3167
3254
  sessionId,
3168
3255
  llmClient: llmForSession(sessionId),
3169
- statsIdentity: statsForSession(sessionId),
3170
- tokenCountAtClose: tokensBefore
3256
+ statsIdentity: statsForSession(sessionId)
3171
3257
  });
3172
3258
  const newContextState = sessionManager.getContextState(sessionId);
3173
3259
  sendForSession(sessionId, createContextStateMessage(newContextState));
@@ -3302,10 +3388,6 @@ ${content}` : workflowInfo;
3302
3388
  });
3303
3389
  return;
3304
3390
  }
3305
- if (session.mode !== "builder") {
3306
- send(createErrorMessage("INVALID_MODE", "Runner can only be launched in builder mode", message.id));
3307
- return;
3308
- }
3309
3391
  const launchPayloadEarly = message.payload;
3310
3392
  const pendingCriteria = session.criteria.filter((c) => c.status.type !== "passed");
3311
3393
  if (!launchPayloadEarly?.workflowId && pendingCriteria.length === 0) {
@@ -3339,7 +3421,7 @@ ${content}` : workflowInfo;
3339
3421
  sessionId,
3340
3422
  llmClient: llmForSession(sessionId),
3341
3423
  statsIdentity: statsForSession(sessionId),
3342
- injectBuilderKickoff: !hasUserMessage,
3424
+ injectWorkflowKickoff: !hasUserMessage,
3343
3425
  ...launchPayload?.workflowId ? { workflowId: launchPayload.workflowId } : {},
3344
3426
  ...launchPayload?.subGroup ? { subGroup: launchPayload.subGroup } : {},
3345
3427
  ...hasUserMessage ? {
@@ -3357,6 +3439,8 @@ ${content}` : workflowInfo;
3357
3439
  }
3358
3440
  logger.error("Runner error", { error, sessionId });
3359
3441
  }).finally(() => {
3442
+ sessionManager.setRunning(sessionId, false);
3443
+ sendForSession(sessionId, createSessionRunningMessage(false));
3360
3444
  cleanupAfterTurn(sessionId, controller, sendForSession, true);
3361
3445
  });
3362
3446
  break;
@@ -4756,7 +4840,6 @@ var SessionManager = class {
4756
4840
  if (m.isSystemGenerated !== void 0) msg.isSystemGenerated = m.isSystemGenerated;
4757
4841
  if (m.messageKind !== void 0) msg.messageKind = m.messageKind;
4758
4842
  if (m.isCompactionSummary !== void 0) msg.isCompactionSummary = m.isCompactionSummary;
4759
- if (m.promptContext !== void 0) msg.promptContext = m.promptContext;
4760
4843
  return msg;
4761
4844
  });
4762
4845
  }
@@ -5174,7 +5257,6 @@ ${summary}`,
5174
5257
  if (m.messageKind !== void 0) msg.messageKind = m.messageKind;
5175
5258
  if (m.contextWindowId !== void 0) msg.contextWindowId = m.contextWindowId;
5176
5259
  if (m.isCompactionSummary !== void 0) msg.isCompactionSummary = m.isCompactionSummary;
5177
- if (m.promptContext !== void 0) msg.promptContext = m.promptContext;
5178
5260
  return msg;
5179
5261
  });
5180
5262
  const isRunning = dbSession.isRunning;
@@ -5748,7 +5830,7 @@ import { Router as Router6 } from "express";
5748
5830
  import { spawn as spawn5 } from "child_process";
5749
5831
 
5750
5832
  // src/constants.ts
5751
- var VERSION = "2.0.0-beta.4";
5833
+ var VERSION = "2.0.0-beta.6";
5752
5834
 
5753
5835
  // src/server/routes/auto-update.ts
5754
5836
  var updateInProgress = false;
@@ -6051,7 +6133,7 @@ async function createServerHandle(config4) {
6051
6133
  res.json({ project });
6052
6134
  });
6053
6135
  app.get("/api/sessions", async (req, res) => {
6054
- const { getRecentUserPromptsForSession } = await import("./events-YO52472Q.js");
6136
+ const { getRecentUserPromptsForSession } = await import("./events-PQ3KTI5H.js");
6055
6137
  const projectId = req.query["projectId"];
6056
6138
  const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
6057
6139
  const offset = parseInt(req.query["offset"]) || 0;
@@ -6084,9 +6166,8 @@ async function createServerHandle(config4) {
6084
6166
  res.status(201).json({ session });
6085
6167
  });
6086
6168
  app.get("/api/sessions/:id", async (req, res) => {
6087
- const { getEventStore: getEventStore2 } = await import("./events-YO52472Q.js");
6088
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-K5L6M4WK.js");
6089
- const { stripPromptContextMessages } = await import("./optimize-storage-2N6BY5KZ.js");
6169
+ const { getEventStore: getEventStore2 } = await import("./events-PQ3KTI5H.js");
6170
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-CXORTBAU.js");
6090
6171
  const session = sessionManager.getSession(req.params.id);
6091
6172
  if (!session) {
6092
6173
  return res.status(404).json({ error: "Session not found" });
@@ -6096,8 +6177,6 @@ async function createServerHandle(config4) {
6096
6177
  const messages = buildMessagesFromStoredEvents2(events);
6097
6178
  const contextState = sessionManager.getContextState(req.params.id);
6098
6179
  const queueState = sessionManager.getQueueState(req.params.id);
6099
- stripPromptContextMessages(session.messages);
6100
- stripPromptContextMessages(messages);
6101
6180
  res.json({ session, messages, contextState, queueState });
6102
6181
  });
6103
6182
  app.delete("/api/sessions/:id", (req, res) => {
@@ -6118,8 +6197,8 @@ async function createServerHandle(config4) {
6118
6197
  res.json({ success: true });
6119
6198
  });
6120
6199
  app.post("/api/sessions/:id/provider", async (req, res) => {
6121
- const { getEventStore: getEventStore2 } = await import("./events-YO52472Q.js");
6122
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-K5L6M4WK.js");
6200
+ const { getEventStore: getEventStore2 } = await import("./events-PQ3KTI5H.js");
6201
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-CXORTBAU.js");
6123
6202
  const sessionId = req.params.id;
6124
6203
  const session = sessionManager.getSession(sessionId);
6125
6204
  if (!session) {
@@ -6130,7 +6209,7 @@ async function createServerHandle(config4) {
6130
6209
  return res.status(400).json({ error: "providerId is required" });
6131
6210
  }
6132
6211
  sessionManager.setSessionProvider(sessionId, providerId, model ?? "auto");
6133
- const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-YU7NYZYG.js");
6212
+ const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-VBBMTXJZ.js");
6134
6213
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
6135
6214
  const updatedConfig = setDefaultModelSelection(globalConfig, providerId, model ?? "auto");
6136
6215
  await saveGlobalConfig(config4.mode ?? "production", updatedConfig);
@@ -6161,8 +6240,8 @@ async function createServerHandle(config4) {
6161
6240
  res.json({ success: true });
6162
6241
  });
6163
6242
  app.put("/api/sessions/:id/mode", async (req, res) => {
6164
- const { getEventStore: getEventStore2 } = await import("./events-YO52472Q.js");
6165
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-K5L6M4WK.js");
6243
+ const { getEventStore: getEventStore2 } = await import("./events-PQ3KTI5H.js");
6244
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-CXORTBAU.js");
6166
6245
  const sessionId = req.params.id;
6167
6246
  const session = sessionManager.getSession(sessionId);
6168
6247
  if (!session) {
@@ -6218,14 +6297,14 @@ async function createServerHandle(config4) {
6218
6297
  if (!callId || approved === void 0) {
6219
6298
  return res.status(400).json({ error: "callId and approved are required" });
6220
6299
  }
6221
- const { providePathConfirmation } = await import("./tools-OPEU2E5M.js");
6300
+ const { providePathConfirmation } = await import("./tools-GCANYSB7.js");
6222
6301
  const result = providePathConfirmation(callId, approved, alwaysAllow);
6223
6302
  if (!result.found) {
6224
6303
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
6225
6304
  }
6226
- const { getEventStore: getEventStore2 } = await import("./events-YO52472Q.js");
6227
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-K5L6M4WK.js");
6228
- const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-K62EPEGS.js");
6305
+ const { getEventStore: getEventStore2 } = await import("./events-PQ3KTI5H.js");
6306
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-CXORTBAU.js");
6307
+ const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-CN24IKQN.js");
6229
6308
  const eventStore = getEventStore2();
6230
6309
  const events = eventStore.getEvents(sessionId);
6231
6310
  const messages = buildMessagesFromStoredEvents2(events);
@@ -6242,7 +6321,7 @@ async function createServerHandle(config4) {
6242
6321
  if (!callId || !answer) {
6243
6322
  return res.status(400).json({ error: "callId and answer are required" });
6244
6323
  }
6245
- const { provideAnswer: provideAnswer2 } = await import("./tools-OPEU2E5M.js");
6324
+ const { provideAnswer: provideAnswer2 } = await import("./tools-GCANYSB7.js");
6246
6325
  const found = provideAnswer2(callId, answer);
6247
6326
  if (!found) {
6248
6327
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -6278,14 +6357,14 @@ async function createServerHandle(config4) {
6278
6357
  if (!session) {
6279
6358
  return res.status(404).json({ error: "Session not found" });
6280
6359
  }
6281
- const { stopSessionExecution } = await import("./chat-handler-IUWEBZG7.js");
6282
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-OPEU2E5M.js");
6360
+ const { stopSessionExecution } = await import("./chat-handler-27FY5TEH.js");
6361
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-GCANYSB7.js");
6283
6362
  stopSessionExecution(sessionId, sessionManager);
6284
6363
  abortSession(sessionId);
6285
6364
  cancelQuestionsForSession(sessionId, "Session stopped by user");
6286
6365
  cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
6287
6366
  sessionManager.clearMessageQueue(sessionId);
6288
- const eventStore = (await import("./events-YO52472Q.js")).getEventStore();
6367
+ const eventStore = (await import("./events-PQ3KTI5H.js")).getEventStore();
6289
6368
  eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
6290
6369
  res.json({ success: true });
6291
6370
  });
@@ -6299,7 +6378,7 @@ async function createServerHandle(config4) {
6299
6378
  if (typeof messageIndex !== "number" || messageIndex < 0) {
6300
6379
  return res.status(400).json({ error: "messageIndex must be a non-negative number" });
6301
6380
  }
6302
- const { truncateSessionMessages } = await import("./events-YO52472Q.js");
6381
+ const { truncateSessionMessages } = await import("./events-PQ3KTI5H.js");
6303
6382
  truncateSessionMessages(sessionId, messageIndex);
6304
6383
  res.json({ success: true });
6305
6384
  });
@@ -6317,7 +6396,7 @@ async function createServerHandle(config4) {
6317
6396
  if (!msg) {
6318
6397
  return res.status(400).json({ error: "Message not found at this index" });
6319
6398
  }
6320
- const { truncateSessionMessages } = await import("./events-YO52472Q.js");
6399
+ const { truncateSessionMessages } = await import("./events-PQ3KTI5H.js");
6321
6400
  truncateSessionMessages(sessionId, messageIndex - 1);
6322
6401
  sessionManager.queueMessage(sessionId, "asap", msg.content, msg.attachments, msg.messageKind);
6323
6402
  res.json({ success: true });
@@ -6349,7 +6428,7 @@ async function createServerHandle(config4) {
6349
6428
  res.json({ accepted: true });
6350
6429
  });
6351
6430
  app.get("/api/settings", async (req, res) => {
6352
- const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-VRAOAPLA.js");
6431
+ const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-6XX56F3F.js");
6353
6432
  const keysParam = req.query["keys"];
6354
6433
  if (!keysParam) {
6355
6434
  return res.status(400).json({ error: "keys query parameter is required" });
@@ -6362,19 +6441,19 @@ async function createServerHandle(config4) {
6362
6441
  res.json(result);
6363
6442
  });
6364
6443
  app.get("/api/settings/:key", async (req, res) => {
6365
- const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-VRAOAPLA.js");
6444
+ const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-6XX56F3F.js");
6366
6445
  const key = req.params.key;
6367
6446
  const value = getSetting(key) ?? SETTINGS_DEFAULTS[key] ?? null;
6368
6447
  res.json({ key, value });
6369
6448
  });
6370
6449
  app.get("/api/settings/:key", async (req, res) => {
6371
- const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-VRAOAPLA.js");
6450
+ const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-6XX56F3F.js");
6372
6451
  const key = req.params.key;
6373
6452
  const value = getSetting(key) ?? SETTINGS_DEFAULTS[key] ?? null;
6374
6453
  res.json({ key, value });
6375
6454
  });
6376
6455
  app.put("/api/settings/:key", async (req, res) => {
6377
- const { setSetting } = await import("./settings-VRAOAPLA.js");
6456
+ const { setSetting } = await import("./settings-6XX56F3F.js");
6378
6457
  const key = req.params.key;
6379
6458
  const { value } = req.body;
6380
6459
  if (value === void 0) {
@@ -6389,7 +6468,7 @@ async function createServerHandle(config4) {
6389
6468
  let visionFallback;
6390
6469
  let globalWorkdir;
6391
6470
  try {
6392
- const { loadGlobalConfig, getVisionFallback } = await import("./config-YU7NYZYG.js");
6471
+ const { loadGlobalConfig, getVisionFallback } = await import("./config-VBBMTXJZ.js");
6393
6472
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
6394
6473
  const fallback = getVisionFallback(globalConfig);
6395
6474
  if (fallback) {
@@ -6468,7 +6547,7 @@ async function createServerHandle(config4) {
6468
6547
  return res.status(400).json({ error: "name, url, and backend are required" });
6469
6548
  }
6470
6549
  try {
6471
- const { loadGlobalConfig, saveGlobalConfig, addProvider, setDefaultModelSelection } = await import("./config-YU7NYZYG.js");
6550
+ const { loadGlobalConfig, saveGlobalConfig, addProvider, setDefaultModelSelection } = await import("./config-VBBMTXJZ.js");
6472
6551
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
6473
6552
  const providerBackend = backend;
6474
6553
  const configWithProvider = addProvider(globalConfig, {
@@ -6501,7 +6580,7 @@ async function createServerHandle(config4) {
6501
6580
  app.post("/api/init/config", async (req, res) => {
6502
6581
  const { workdir, visionFallback } = req.body;
6503
6582
  try {
6504
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-YU7NYZYG.js");
6583
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-VBBMTXJZ.js");
6505
6584
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
6506
6585
  const updatedConfig = {
6507
6586
  ...globalConfig,
@@ -6529,7 +6608,7 @@ async function createServerHandle(config4) {
6529
6608
  });
6530
6609
  app.delete("/api/providers/:id", async (req, res) => {
6531
6610
  const { id } = req.params;
6532
- const { loadGlobalConfig, saveGlobalConfig, removeProvider } = await import("./config-YU7NYZYG.js");
6611
+ const { loadGlobalConfig, saveGlobalConfig, removeProvider } = await import("./config-VBBMTXJZ.js");
6533
6612
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
6534
6613
  const updatedConfig = removeProvider(globalConfig, id);
6535
6614
  await saveGlobalConfig(config4.mode ?? "production", updatedConfig);
@@ -6549,7 +6628,7 @@ async function createServerHandle(config4) {
6549
6628
  return res.status(400).json({ error: result.error });
6550
6629
  }
6551
6630
  const llmClient = getLLMClient();
6552
- const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-YU7NYZYG.js");
6631
+ const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-VBBMTXJZ.js");
6553
6632
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
6554
6633
  const updatedConfig = setDefaultModelSelection(globalConfig, id, llmClient.getModel());
6555
6634
  await saveGlobalConfig(config4.mode ?? "production", updatedConfig);
@@ -6580,7 +6659,7 @@ async function createServerHandle(config4) {
6580
6659
  if (!result.success) {
6581
6660
  return res.status(400).json({ error: result.error });
6582
6661
  }
6583
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-YU7NYZYG.js");
6662
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-VBBMTXJZ.js");
6584
6663
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
6585
6664
  const updatedProviders = providerManager.getProviders();
6586
6665
  const updatedConfig = {
@@ -6794,7 +6873,7 @@ async function createServerHandle(config4) {
6794
6873
  providerManager
6795
6874
  );
6796
6875
  const wss = wssExports.wss;
6797
- const { QueueProcessor } = await import("./processor-FTEASNGS.js");
6876
+ const { QueueProcessor } = await import("./processor-K4B7QRO2.js");
6798
6877
  const queueProcessor = new QueueProcessor({
6799
6878
  sessionManager,
6800
6879
  providerManager,
@@ -6866,4 +6945,4 @@ export {
6866
6945
  createServerHandle,
6867
6946
  createServer
6868
6947
  };
6869
- //# sourceMappingURL=chunk-WBYS7AQN.js.map
6948
+ //# sourceMappingURL=chunk-3FFHHYWP.js.map