openfox 2.0.118 → 2.0.119

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 (55) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/CHANGELOG.md +26 -0
  3. package/dist/agent-defaults/code-reviewer.agent.md +8 -3
  4. package/dist/{auto-config-AAUO4PKW.js → auto-config-YXNCBYEY.js} +125 -11
  5. package/dist/{chat-handler-KNBP6WVI.js → chat-handler-M54IWF5Y.js} +11 -10
  6. package/dist/{chunk-HZSKKJHQ.js → chunk-5FAPM2GM.js} +28 -9
  7. package/dist/{chunk-CX7UJZA5.js → chunk-6DDB67FN.js} +4 -4
  8. package/dist/{chunk-5ZR5O5GC.js → chunk-AIFZNTUJ.js} +4 -4
  9. package/dist/{chunk-45OS4H3L.js → chunk-AVQCOSOF.js} +7 -7
  10. package/dist/chunk-EW25UQG3.js +7 -0
  11. package/dist/{chunk-MKWS7TQH.js → chunk-J6KFWVZ3.js} +21 -15
  12. package/dist/chunk-K2QKX4ZJ.js +31 -0
  13. package/dist/{chunk-TOKQ2UVG.js → chunk-MIPQOHWS.js} +20 -6
  14. package/dist/{chunk-NP2SV2CX.js → chunk-SE62ZBNX.js} +9 -3
  15. package/dist/{chunk-GZTMCTUS.js → chunk-U6JMRMBW.js} +17 -21
  16. package/dist/{chunk-5E5G3DLI.js → chunk-UNNCD7A3.js} +3 -3
  17. package/dist/{chunk-IDUXGSQV.js → chunk-V5XWUVF5.js} +13 -9
  18. package/dist/{chunk-MTFLMNLN.js → chunk-VFS7TFA7.js} +2 -2
  19. package/dist/{chunk-Y6WWEQPC.js → chunk-XB7IXMUI.js} +11 -11
  20. package/dist/{chunk-RXIDGWNV.js → chunk-XZ2WAI66.js} +56 -26
  21. package/dist/{chunk-CIYA6BNB.js → chunk-YHAE2SJI.js} +2 -2
  22. package/dist/cli/dev.js +1 -1
  23. package/dist/cli/index.js +1 -1
  24. package/dist/{client-KCNTDTIR.js → client-R4PI64IL.js} +3 -3
  25. package/dist/{client-pure-B5DHEKQJ.js → client-pure-QSY7TJGK.js} +2 -2
  26. package/dist/{compactor-5ATICQ2A.js → compactor-F6XMYVHL.js} +4 -4
  27. package/dist/{dynamic-context-4SKLIPJ4.js → dynamic-context-NXQ2TFAZ.js} +2 -2
  28. package/dist/{launch-Q6GUJ22H.js → launch-I5XBYRSJ.js} +11 -10
  29. package/dist/{orchestrator-DVCGWWNA.js → orchestrator-MNON5G7R.js} +10 -9
  30. package/dist/package.json +1 -1
  31. package/dist/{processor-G6UJGA2K.js → processor-OZSK7RUD.js} +10 -9
  32. package/dist/{protocol-DzJrspsl.d.ts → protocol-D5kJLGWy.d.ts} +1 -1
  33. package/dist/provider/index.d.ts +4 -4
  34. package/dist/{provider-Q7J4UFTS.js → provider-7YF42S7C.js} +5 -4
  35. package/dist/{provider-manager-TMBO4DFG.js → provider-manager-FJIPQJMX.js} +5 -4
  36. package/dist/{serve-23YIIMXH.js → serve-V34QG72C.js} +16 -15
  37. package/dist/server/index.d.ts +5 -3
  38. package/dist/server/index.js +15 -14
  39. package/dist/{server-IDXIAC5L.js → server-XZQLWIVD.js} +14 -13
  40. package/dist/{service-M7XJHAK4.js → service-ZKH465DA.js} +6 -5
  41. package/dist/session-status-6Q5B5PEN.js +35 -0
  42. package/dist/shared/index.d.ts +3 -3
  43. package/dist/{tasks-X5H5HM4J.js → tasks-I766NBPW.js} +8 -6
  44. package/dist/{tools-GOGLGTNV.js → tools-ZJXDZLRH.js} +8 -7
  45. package/dist/{types-CIVhQMvD.d.ts → types-B5CI_Ql3.d.ts} +3 -1
  46. package/dist/{types-Df7NM9b5.d.ts → types-CZlj7ufS.d.ts} +2 -0
  47. package/dist/{update-T3YMIWQO.js → update-C3YVPKCR.js} +2 -2
  48. package/dist/web/assets/index-BlYcAqzD.js +324 -0
  49. package/dist/web/assets/{index-XTp1QlHA.css → index-D9sfxcRH.css} +1 -1
  50. package/dist/web/index.html +2 -2
  51. package/dist/web/sw.js +1 -1
  52. package/dist/workflow-defaults/default.workflow.json +1 -1
  53. package/package.json +1 -1
  54. package/dist/chunk-BSULZIPW.js +0 -7
  55. package/dist/web/assets/index-BgENxR9h.js +0 -324
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-AZHWLLPP.js";
10
10
  import {
11
11
  buildModelParams
12
- } from "./chunk-TOKQ2UVG.js";
12
+ } from "./chunk-MIPQOHWS.js";
13
13
  import {
14
14
  logger
15
15
  } from "./chunk-K44MW7JJ.js";
@@ -111,7 +111,13 @@ async function* streamLLMPure(options) {
111
111
  const maxTokens = userMaxTokens ?? profile.defaultMaxTokens;
112
112
  const topP = userTopP ?? profile.topP;
113
113
  const topK = userTopK ?? (backend.supportsTopK ? profile.topK : void 0);
114
- const modelParams = buildModelParams({ temperature, topP, topK, maxTokens });
114
+ const modelParams = buildModelParams({
115
+ temperature,
116
+ topP,
117
+ topK,
118
+ maxTokens,
119
+ ...options.modelSettings?.omitParams !== void 0 && { omitParams: options.modelSettings.omitParams }
120
+ });
115
121
  logger.debug("LLM request settings", {
116
122
  model: llmClient.getModel(),
117
123
  profile: profile.name,
@@ -510,4 +516,4 @@ export {
510
516
  createChatDoneEvent,
511
517
  consumeStreamGenerator
512
518
  };
513
- //# sourceMappingURL=chunk-NP2SV2CX.js.map
519
+ //# sourceMappingURL=chunk-SE62ZBNX.js.map
@@ -1,6 +1,9 @@
1
+ import {
2
+ parseLmStudioModels
3
+ } from "./chunk-K2QKX4ZJ.js";
1
4
  import {
2
5
  createLLMClient
3
- } from "./chunk-MKWS7TQH.js";
6
+ } from "./chunk-J6KFWVZ3.js";
4
7
  import {
5
8
  getModelProfile
6
9
  } from "./chunk-W7VIYHPQ.js";
@@ -14,7 +17,7 @@ import {
14
17
  } from "./chunk-HNCM3D7Y.js";
15
18
  import {
16
19
  resolveAttachmentsInMessages
17
- } from "./chunk-TOKQ2UVG.js";
20
+ } from "./chunk-MIPQOHWS.js";
18
21
  import {
19
22
  logger
20
23
  } from "./chunk-K44MW7JJ.js";
@@ -328,29 +331,18 @@ async function fetchLmStudioModelsWithContext(baseUrl, _apiKey) {
328
331
  logger.info("LM Studio native endpoint returned error", { url: nativeUrl, status: response.status });
329
332
  return [];
330
333
  }
331
- const raw = await response.json();
332
- const rawArray = Array.isArray(raw) ? raw : Array.isArray(raw.models) ? raw.models : Array.isArray(raw.data) ? raw.data : [];
333
- const modelList = rawArray;
334
+ const modelList = parseLmStudioModels(await response.json());
334
335
  if (modelList.length === 0) {
335
336
  logger.info("LM Studio native endpoint returned no models", { url: nativeUrl });
336
337
  return [];
337
338
  }
338
339
  logger.info("LM Studio native models found", { count: modelList.length });
339
340
  return modelList.map((model) => {
340
- const modelId = model.key ?? model.id ?? "";
341
- const loadedContext = model.loaded_instances?.[0]?.config?.context_length;
342
- const maxContext = model.max_context_length;
343
- const contextWindow = loadedContext ?? maxContext ?? 2e5;
344
- logger.info("LM Studio model detected", {
345
- modelId,
346
- loadedContext,
347
- maxContext,
348
- contextWindow
349
- });
341
+ logger.info("LM Studio model detected", { modelId: model.id, contextWindow: model.contextWindow });
350
342
  return {
351
- id: modelId,
352
- contextWindow,
353
- source: loadedContext || maxContext ? "backend" : "default"
343
+ id: model.id,
344
+ contextWindow: model.contextWindow ?? 2e5,
345
+ source: model.contextWindow ? "backend" : "default"
354
346
  };
355
347
  });
356
348
  } catch (error) {
@@ -703,7 +695,8 @@ function createProviderManager(config, options = {}) {
703
695
  ...settings.thinkingExtraKwargs !== void 0 ? { thinkingExtraKwargs: settings.thinkingExtraKwargs } : existingModel?.thinkingExtraKwargs !== void 0 ? { thinkingExtraKwargs: existingModel.thinkingExtraKwargs } : {},
704
696
  ...settings.nonThinkingExtraKwargs !== void 0 ? { nonThinkingExtraKwargs: settings.nonThinkingExtraKwargs } : existingModel?.nonThinkingExtraKwargs !== void 0 ? { nonThinkingExtraKwargs: existingModel.nonThinkingExtraKwargs } : {},
705
697
  ...settings.thinkingQueryParams !== void 0 ? { thinkingQueryParams: settings.thinkingQueryParams } : existingModel?.thinkingQueryParams !== void 0 ? { thinkingQueryParams: existingModel.thinkingQueryParams } : {},
706
- ...settings.nonThinkingQueryParams !== void 0 ? { nonThinkingQueryParams: settings.nonThinkingQueryParams } : existingModel?.nonThinkingQueryParams !== void 0 ? { nonThinkingQueryParams: existingModel.nonThinkingQueryParams } : {}
698
+ ...settings.nonThinkingQueryParams !== void 0 ? { nonThinkingQueryParams: settings.nonThinkingQueryParams } : existingModel?.nonThinkingQueryParams !== void 0 ? { nonThinkingQueryParams: existingModel.nonThinkingQueryParams } : {},
699
+ ...settings.omitParams !== void 0 ? { omitParams: settings.omitParams } : existingModel?.omitParams !== void 0 ? { omitParams: existingModel.omitParams } : {}
707
700
  });
708
701
  if (existingModel) {
709
702
  providers = providers.map(
@@ -725,6 +718,7 @@ function createProviderManager(config, options = {}) {
725
718
  if (model["topK"] !== void 0) baseSettings["topK"] = model["topK"];
726
719
  if (model["maxTokens"] !== void 0) baseSettings["maxTokens"] = model["maxTokens"];
727
720
  if (model["supportsVision"] !== void 0) baseSettings["supportsVision"] = model["supportsVision"];
721
+ if (model["omitParams"] !== void 0) baseSettings["omitParams"] = model["omitParams"];
728
722
  const rawQueryParams = mode === "thinking" ? model.thinkingQueryParams : model.nonThinkingQueryParams;
729
723
  if (rawQueryParams) {
730
724
  return { ...baseSettings, queryParams: JSON.parse(rawQueryParams) };
@@ -740,6 +734,7 @@ function createProviderManager(config, options = {}) {
740
734
  if (fallbackRawQP) {
741
735
  return { ...baseSettings, queryParams: JSON.parse(fallbackRawQP) };
742
736
  }
737
+ if (model["omitParams"] !== void 0) return baseSettings;
743
738
  return void 0;
744
739
  },
745
740
  async refreshProviderModels(providerId) {
@@ -762,8 +757,8 @@ function createProviderManager(config, options = {}) {
762
757
  backendModelsCount: modelsWithContext.length
763
758
  });
764
759
  if (modelsWithContext.length === 0) {
765
- providerStatus.set(providerId, "disconnected");
766
760
  if (userModels.length > 0) {
761
+ providerStatus.set(providerId, "unknown");
767
762
  logger.debug("Backend unavailable, preserving user models", {
768
763
  providerId,
769
764
  userModels: userModels.map((m) => ({ id: m.id, contextWindow: m.contextWindow }))
@@ -771,6 +766,7 @@ function createProviderManager(config, options = {}) {
771
766
  providers = providers.map((p) => p.id === providerId ? { ...p, models: userModels } : p);
772
767
  return { success: true };
773
768
  }
769
+ providerStatus.set(providerId, "disconnected");
774
770
  return { success: false, error: "No models returned from backend" };
775
771
  }
776
772
  providerStatus.set(providerId, "connected");
@@ -803,4 +799,4 @@ export {
803
799
  parseDefaultModelSelection,
804
800
  createProviderManager
805
801
  };
806
- //# sourceMappingURL=chunk-GZTMCTUS.js.map
802
+ //# sourceMappingURL=chunk-U6JMRMBW.js.map
@@ -105,7 +105,7 @@ function resolveAgentDef(sessionManager, sessionId) {
105
105
  }
106
106
  async function buildCachedPrompt(sessionManager, sessionId, agentDef, modelName) {
107
107
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
108
- const { getToolRegistryForAgent } = await import("./tools-GOGLGTNV.js");
108
+ const { getToolRegistryForAgent } = await import("./tools-ZJXDZLRH.js");
109
109
  const tools = getToolRegistryForAgent(agentDef, sessionId).definitions;
110
110
  const toolFingerprint = getToolFingerprint(tools);
111
111
  const allAgents = await loadAllAgentsDefault(sessionManager.getProjectWorkdir(sessionId));
@@ -124,7 +124,7 @@ async function buildCachedPrompt(sessionManager, sessionId, agentDef, modelName)
124
124
  async function computeSessionHash(sessionManager, sessionId, modelName) {
125
125
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
126
126
  const agentDef = await resolveAgentDef(sessionManager, sessionId);
127
- const { getToolRegistryForAgent } = await import("./tools-GOGLGTNV.js");
127
+ const { getToolRegistryForAgent } = await import("./tools-ZJXDZLRH.js");
128
128
  const tools = getToolRegistryForAgent(agentDef, sessionId).definitions;
129
129
  const toolFingerprint = getToolFingerprint(tools);
130
130
  return computeDynamicContextHash(instructionContent, skills, toolFingerprint, modelName);
@@ -148,4 +148,4 @@ export {
148
148
  computeSessionHash,
149
149
  applyDynamicContext
150
150
  };
151
- //# sourceMappingURL=chunk-5E5G3DLI.js.map
151
+ //# sourceMappingURL=chunk-UNNCD7A3.js.map
@@ -18,7 +18,7 @@ import {
18
18
  recordLLMFailure,
19
19
  sleepThroughRetryBackoff,
20
20
  streamLLMPure
21
- } from "./chunk-NP2SV2CX.js";
21
+ } from "./chunk-SE62ZBNX.js";
22
22
  import {
23
23
  COMPACTION_PROMPT,
24
24
  buildBasePrompt,
@@ -61,7 +61,7 @@ import {
61
61
  getGateConfig,
62
62
  isTaskConflictError,
63
63
  isTaskGateError
64
- } from "./chunk-HZSKKJHQ.js";
64
+ } from "./chunk-5FAPM2GM.js";
65
65
  import {
66
66
  getSessionDisabledServers
67
67
  } from "./chunk-EQ5CGNOT.js";
@@ -122,7 +122,7 @@ import {
122
122
  formatPdfErrorMessage,
123
123
  isPdfBuffer,
124
124
  processPdfContent
125
- } from "./chunk-TOKQ2UVG.js";
125
+ } from "./chunk-MIPQOHWS.js";
126
126
  import {
127
127
  SETTINGS_KEYS,
128
128
  getSetting
@@ -1805,6 +1805,7 @@ function emitDoneAndBreak(assistantMsgId, segments, statsIdentity, mode, turnMet
1805
1805
  }
1806
1806
  }
1807
1807
  var MAX_TRUNCATION_RETRIES = 3;
1808
+ var OUTPUT_RESERVE_TOKENS = 2048;
1808
1809
  var CONTINUE_PROMPT = "Continue your previous response. Do NOT repeat what you already wrote.";
1809
1810
  var CONTINUE_AFTER_STREAM_ERROR_PROMPT = "The LLM stream was interrupted mid-response. Continue exactly where you left off \u2014 do not repeat what was already written.";
1810
1811
  async function runTopLevelAgentLoop(config, turnMetrics) {
@@ -1916,7 +1917,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
1916
1917
  const contextState = sessionManager.getContextState(sessionId);
1917
1918
  previousContextTokens = contextState.currentTokens;
1918
1919
  const contextWindow = sessionManager.getCurrentModelContext();
1919
- const availableForOutput = Math.max(256, contextWindow - contextState.currentTokens);
1920
+ const availableForOutput = Math.max(256, contextWindow - contextState.currentTokens - OUTPUT_RESERVE_TOKENS);
1920
1921
  let modelSettings = config.modelSettings ?? (currentMaxTokensOverride !== void 0 ? { ...sessionManager.getCurrentModelSettings(sessionId), maxTokens: currentMaxTokensOverride } : sessionManager.getCurrentModelSettings(sessionId));
1921
1922
  if (modelSettings) {
1922
1923
  const requestedMaxTokens = modelSettings.maxTokens ?? 16384;
@@ -2039,7 +2040,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
2039
2040
  );
2040
2041
  if (!compacting) {
2041
2042
  const contextState = sessionManager.getContextState(sessionId);
2042
- const { shouldCompact, appendCompactionPrompt } = await import("./compactor-5ATICQ2A.js");
2043
+ const { shouldCompact, appendCompactionPrompt } = await import("./compactor-F6XMYVHL.js");
2043
2044
  if (shouldCompact(
2044
2045
  contextState.currentTokens,
2045
2046
  contextState.maxTokens,
@@ -2056,7 +2057,10 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
2056
2057
  const currentMaxTokens = result.modelParams?.maxTokens ?? 16384;
2057
2058
  const promptTokens = result.usage.promptTokens;
2058
2059
  const contextWindow = sessionManager.getCurrentModelContext();
2059
- const newMaxTokens = Math.min(Math.floor(currentMaxTokens * 1.5), contextWindow - promptTokens - 2048);
2060
+ const newMaxTokens = Math.min(
2061
+ Math.floor(currentMaxTokens * 1.5),
2062
+ contextWindow - promptTokens - OUTPUT_RESERVE_TOKENS
2063
+ );
2060
2064
  currentMaxTokensOverride = newMaxTokens;
2061
2065
  const interimStats = turnMetrics.buildStats(statsIdentity, mode);
2062
2066
  append(
@@ -3029,7 +3033,7 @@ var callSubAgentTool = {
3029
3033
  };
3030
3034
  }
3031
3035
  try {
3032
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-GOGLGTNV.js");
3036
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-ZJXDZLRH.js");
3033
3037
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3034
3038
  const turnMetrics = new TurnMetrics();
3035
3039
  const result = await executeSubAgent({
@@ -4051,7 +4055,7 @@ var mcpConfigTool = createTool(
4051
4055
  mcpNotifyChanged?.(sessionId);
4052
4056
  }
4053
4057
  async function rebuildTools() {
4054
- const { setMcpTools: setMcpTools2 } = await import("./tools-GOGLGTNV.js");
4058
+ const { setMcpTools: setMcpTools2 } = await import("./tools-ZJXDZLRH.js");
4055
4059
  const mcpTools = createMcpTools(mcpManagerForTools);
4056
4060
  setMcpTools2(mcpTools);
4057
4061
  }
@@ -4935,4 +4939,4 @@ export {
4935
4939
  getToolRegistryForAgent,
4936
4940
  createToolRegistry
4937
4941
  };
4938
- //# sourceMappingURL=chunk-IDUXGSQV.js.map
4942
+ //# sourceMappingURL=chunk-V5XWUVF5.js.map
@@ -156,7 +156,7 @@ async function generateSessionNameForSession(sessionId, userMessage, deps, signa
156
156
  client = deps.getLLMClient();
157
157
  client.setModel(providerConfig.model);
158
158
  } else if (providerConfig) {
159
- const { createLLMClient } = await import("./client-KCNTDTIR.js");
159
+ const { createLLMClient } = await import("./client-R4PI64IL.js");
160
160
  client = createLLMClient({
161
161
  llm: {
162
162
  baseUrl: providerConfig.baseUrl,
@@ -207,4 +207,4 @@ export {
207
207
  needsNameGeneration,
208
208
  generateSessionNameForSession
209
209
  };
210
- //# sourceMappingURL=chunk-MTFLMNLN.js.map
210
+ //# sourceMappingURL=chunk-VFS7TFA7.js.map
@@ -2,28 +2,28 @@ import {
2
2
  generateSessionNameForSession,
3
3
  getSessionMessageCount,
4
4
  needsNameGeneration
5
- } from "./chunk-MTFLMNLN.js";
5
+ } from "./chunk-VFS7TFA7.js";
6
6
  import {
7
7
  launchWorkflowRun
8
- } from "./chunk-45OS4H3L.js";
8
+ } from "./chunk-AVQCOSOF.js";
9
9
  import {
10
10
  runChatTurn
11
- } from "./chunk-CX7UJZA5.js";
11
+ } from "./chunk-6DDB67FN.js";
12
12
  import {
13
13
  devServerManager
14
- } from "./chunk-IDUXGSQV.js";
14
+ } from "./chunk-V5XWUVF5.js";
15
15
  import {
16
16
  applyDynamicContext,
17
17
  computeSessionHash,
18
18
  computeUnifiedDiff
19
- } from "./chunk-5E5G3DLI.js";
19
+ } from "./chunk-UNNCD7A3.js";
20
20
  import {
21
21
  appendCompactionPrompt
22
- } from "./chunk-CIYA6BNB.js";
22
+ } from "./chunk-YHAE2SJI.js";
23
23
  import {
24
24
  hasRecentLLMFailure,
25
25
  interruptLLMRetryWait
26
- } from "./chunk-NP2SV2CX.js";
26
+ } from "./chunk-SE62ZBNX.js";
27
27
  import {
28
28
  onProcessEvent
29
29
  } from "./chunk-ZTOG6LJD.js";
@@ -493,13 +493,13 @@ function hashContent(content) {
493
493
  function moduleGitDiff(cwd) {
494
494
  return new Promise((resolve) => {
495
495
  const env = gitSpawnEnv();
496
- const diffProc = spawn2("git", ["diff", "--name-status", "HEAD"], {
496
+ const diffProc = spawn2("git", ["diff", "--ignore-submodules=none", "--name-status", "HEAD"], {
497
497
  cwd,
498
498
  env,
499
499
  stdio: ["ignore", "pipe", "pipe"],
500
500
  windowsHide: true
501
501
  });
502
- const statusProc = spawn2("git", ["status", "--porcelain"], {
502
+ const statusProc = spawn2("git", ["status", "--porcelain", "--ignore-submodules=none"], {
503
503
  cwd,
504
504
  env,
505
505
  stdio: ["ignore", "pipe", "pipe"],
@@ -1281,7 +1281,7 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1281
1281
  }
1282
1282
  const session = sessionManager.requireSession(sessionId);
1283
1283
  try {
1284
- const { buildCachedPrompt } = await import("./dynamic-context-4SKLIPJ4.js");
1284
+ const { buildCachedPrompt } = await import("./dynamic-context-NXQ2TFAZ.js");
1285
1285
  const allAgents = await import("./registry-5QL3BOWN.js");
1286
1286
  const agentDef = allAgents.findAgentById(session.mode, await allAgents.loadAllAgentsDefault()) ?? allAgents.findAgentById("planner", await allAgents.loadAllAgentsDefault());
1287
1287
  const modelName = session.providerModel ?? _providerManager?.getCurrentModel();
@@ -1606,4 +1606,4 @@ export {
1606
1606
  signalMcpReady,
1607
1607
  createWebSocketServer
1608
1608
  };
1609
- //# sourceMappingURL=chunk-Y6WWEQPC.js.map
1609
+ //# sourceMappingURL=chunk-XB7IXMUI.js.map
@@ -16,10 +16,10 @@ import {
16
16
  terminalManager,
17
17
  tokenFromPassword,
18
18
  verifyPassword
19
- } from "./chunk-Y6WWEQPC.js";
19
+ } from "./chunk-XB7IXMUI.js";
20
20
  import {
21
21
  TEMPLATE_VARIABLES
22
- } from "./chunk-45OS4H3L.js";
22
+ } from "./chunk-AVQCOSOF.js";
23
23
  import {
24
24
  createToolRegistry,
25
25
  devServerManager,
@@ -29,7 +29,7 @@ import {
29
29
  setMcpManagerForTools,
30
30
  setMcpTools,
31
31
  setNotifyMcpServersChanged
32
- } from "./chunk-IDUXGSQV.js";
32
+ } from "./chunk-V5XWUVF5.js";
33
33
  import {
34
34
  deleteOwnedSkill,
35
35
  deleteProjectSkill,
@@ -102,7 +102,7 @@ import {
102
102
  saveWorkflow,
103
103
  saveWorkflowToProject,
104
104
  workflowExists
105
- } from "./chunk-HZSKKJHQ.js";
105
+ } from "./chunk-5FAPM2GM.js";
106
106
  import {
107
107
  getSessionDisabledServers,
108
108
  setSessionDisabledServers
@@ -167,7 +167,7 @@ import {
167
167
  } from "./chunk-JLAR2CMV.js";
168
168
  import {
169
169
  VERSION
170
- } from "./chunk-BSULZIPW.js";
170
+ } from "./chunk-EW25UQG3.js";
171
171
  import {
172
172
  agentExists,
173
173
  deleteAgent,
@@ -199,7 +199,7 @@ import {
199
199
  detectModel,
200
200
  getLlmStatus,
201
201
  parseDefaultModelSelection
202
- } from "./chunk-GZTMCTUS.js";
202
+ } from "./chunk-U6JMRMBW.js";
203
203
  import {
204
204
  getModelProfile
205
205
  } from "./chunk-W7VIYHPQ.js";
@@ -5947,7 +5947,7 @@ async function createServerHandle(config3) {
5947
5947
  toolRegistry = createToolRegistry();
5948
5948
  logger.info("MCP tools registered", { count: mcpTools.length });
5949
5949
  }
5950
- const { signalMcpReady } = await import("./server-IDXIAC5L.js");
5950
+ const { signalMcpReady } = await import("./server-XZQLWIVD.js");
5951
5951
  signalMcpReady();
5952
5952
  });
5953
5953
  const app = express();
@@ -6143,9 +6143,9 @@ async function createServerHandle(config3) {
6143
6143
  const sessionFavoriteRouter = express.Router();
6144
6144
  registerSessionFavoriteRoute(sessionFavoriteRouter, sessionManager);
6145
6145
  app.use("/api", sessionFavoriteRouter);
6146
- const { createTasksService } = await import("./service-M7XJHAK4.js");
6147
- const { registerTaskRoutes } = await import("./tasks-X5H5HM4J.js");
6148
- const { setTasksService } = await import("./tools-GOGLGTNV.js");
6146
+ const { createTasksService } = await import("./service-ZKH465DA.js");
6147
+ const { registerTaskRoutes } = await import("./tasks-I766NBPW.js");
6148
+ const { setTasksService } = await import("./tools-ZJXDZLRH.js");
6149
6149
  const tasksService = createTasksService({
6150
6150
  sessionManager,
6151
6151
  config: config3,
@@ -6474,7 +6474,7 @@ All file and git operations should use this branch.
6474
6474
  app.get("/api/sessions/:id", async (req, res) => {
6475
6475
  const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-KDFMBVP5.js");
6476
6476
  const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-RTGU63BW.js");
6477
- const { getPendingQuestionsForSession } = await import("./tools-GOGLGTNV.js");
6477
+ const { getPendingQuestionsForSession } = await import("./tools-ZJXDZLRH.js");
6478
6478
  const { getMaxVisibleItems } = await import("./settings-FGXQHKUH.js");
6479
6479
  const { getAgentModelOverride: getAgentModelOverride2 } = await import("./model-overrides-7F2EOA4U.js");
6480
6480
  const { updateSessionProvider: updateSessionProvider2 } = await import("./sessions-I7ELDIIP.js");
@@ -6510,14 +6510,42 @@ All file and git operations should use this branch.
6510
6510
  activeWorkflowExecution
6511
6511
  });
6512
6512
  });
6513
+ app.get("/api/sessions/:id/status", async (req, res) => {
6514
+ const { projectSessionStatus } = await import("./session-status-6Q5B5PEN.js");
6515
+ const { getPendingQuestionsForSession } = await import("./tools-ZJXDZLRH.js");
6516
+ const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-KDFMBVP5.js");
6517
+ const { foldPendingConfirmations } = await import("./folding-RTGU63BW.js");
6518
+ const sessionId = req.params["id"];
6519
+ if (!sessionId) {
6520
+ return res.status(400).json({ error: "Session id is required" });
6521
+ }
6522
+ const session = sessionManager.getSession(sessionId);
6523
+ if (!session) {
6524
+ return res.status(404).json({ error: "Session not found" });
6525
+ }
6526
+ const activeWorkflowExecution = sessionManager.getActiveWorkflowExecution(sessionId);
6527
+ const activeWorkflowStepName = activeWorkflowExecution?.currentStepName ?? null;
6528
+ const pendingQuestions = getPendingQuestionsForSession(sessionId);
6529
+ const eventStore = getEventStore2();
6530
+ const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
6531
+ const events = combineEventsWithSnapshot(sessionId, snapshot, eventsSinceSnapshot);
6532
+ const pendingConfirmations = foldPendingConfirmations(events);
6533
+ const status = projectSessionStatus({
6534
+ session,
6535
+ pendingQuestionsCount: pendingQuestions.length,
6536
+ pendingConfirmationsCount: pendingConfirmations.length,
6537
+ activeWorkflowStepName
6538
+ });
6539
+ res.json(status);
6540
+ });
6513
6541
  app.delete("/api/sessions/:id", async (req, res) => {
6514
6542
  const sessionId = req.params["id"];
6515
6543
  const session = sessionManager.getSession(sessionId);
6516
6544
  if (!session) {
6517
6545
  return res.status(404).json({ error: "Session not found" });
6518
6546
  }
6519
- const { stopSessionExecution } = await import("./chat-handler-KNBP6WVI.js");
6520
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-GOGLGTNV.js");
6547
+ const { stopSessionExecution } = await import("./chat-handler-M54IWF5Y.js");
6548
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-ZJXDZLRH.js");
6521
6549
  sessionManager.clearMessageQueue(sessionId);
6522
6550
  stopSessionExecution(sessionId, sessionManager);
6523
6551
  abortSession(sessionId);
@@ -6767,7 +6795,7 @@ All file and git operations should use this branch.
6767
6795
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
6768
6796
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
6769
6797
  }
6770
- const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-GOGLGTNV.js");
6798
+ const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-ZJXDZLRH.js");
6771
6799
  const pendingSessionId = getConfirmationSessionId(callId);
6772
6800
  if (!pendingSessionId) {
6773
6801
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -6782,7 +6810,7 @@ All file and git operations should use this branch.
6782
6810
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-KDFMBVP5.js");
6783
6811
  const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-RTGU63BW.js");
6784
6812
  const { createSessionStateMessage } = await import("./protocol-TLODRZSB.js");
6785
- const { getPendingQuestionsForSession } = await import("./tools-GOGLGTNV.js");
6813
+ const { getPendingQuestionsForSession } = await import("./tools-ZJXDZLRH.js");
6786
6814
  const { getMaxVisibleItems } = await import("./settings-FGXQHKUH.js");
6787
6815
  const eventStore = getEventStore2();
6788
6816
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
@@ -6820,7 +6848,7 @@ All file and git operations should use this branch.
6820
6848
  if (!skip && typeof answer !== "string") {
6821
6849
  return res.status(400).json({ error: "answer is required when not skipping" });
6822
6850
  }
6823
- const { provideAnswer } = await import("./tools-GOGLGTNV.js");
6851
+ const { provideAnswer } = await import("./tools-ZJXDZLRH.js");
6824
6852
  const found = provideAnswer(callId, answer ?? "", skip ?? false);
6825
6853
  if (!found) {
6826
6854
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -6885,7 +6913,7 @@ All file and git operations should use this branch.
6885
6913
  backend: activeProvider?.backend ?? llmClient.getBackend(),
6886
6914
  model: llmClient.getModel()
6887
6915
  };
6888
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-DVCGWWNA.js");
6916
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-MNON5G7R.js");
6889
6917
  runAgentTurn(
6890
6918
  {
6891
6919
  sessionManager,
@@ -6923,8 +6951,8 @@ All file and git operations should use this branch.
6923
6951
  if (!session) {
6924
6952
  return res.status(404).json({ error: "Session not found" });
6925
6953
  }
6926
- const { stopSessionExecution } = await import("./chat-handler-KNBP6WVI.js");
6927
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-GOGLGTNV.js");
6954
+ const { stopSessionExecution } = await import("./chat-handler-M54IWF5Y.js");
6955
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-ZJXDZLRH.js");
6928
6956
  const queuedMessages = sessionManager.getQueueState(sessionId);
6929
6957
  sessionManager.clearMessageQueue(sessionId);
6930
6958
  stopSessionExecution(sessionId, sessionManager);
@@ -7173,6 +7201,7 @@ All file and git operations should use this branch.
7173
7201
  ...m.nonThinkingExtraKwargs !== void 0 && { nonThinkingExtraKwargs: m.nonThinkingExtraKwargs },
7174
7202
  ...m.thinkingQueryParams !== void 0 && { thinkingQueryParams: m.thinkingQueryParams },
7175
7203
  ...m.nonThinkingQueryParams !== void 0 && { nonThinkingQueryParams: m.nonThinkingQueryParams },
7204
+ ...m.omitParams !== void 0 && { omitParams: m.omitParams },
7176
7205
  ...m.temperature !== void 0 && { temperature: m.temperature },
7177
7206
  ...m.topP !== void 0 && { topP: m.topP },
7178
7207
  ...m.topK !== void 0 && { topK: m.topK },
@@ -7301,7 +7330,7 @@ All file and git operations should use this branch.
7301
7330
  const backend = req.query["backend"];
7302
7331
  if (!url) return res.status(400).json({ error: "url is required" });
7303
7332
  try {
7304
- const { fetchModelsWithContext } = await import("./provider-manager-TMBO4DFG.js");
7333
+ const { fetchModelsWithContext } = await import("./provider-manager-FJIPQJMX.js");
7305
7334
  const { getModelProfile: getModelProfile2 } = await import("./profiles-GYHXBWPV.js");
7306
7335
  const models = await fetchModelsWithContext(
7307
7336
  url,
@@ -7337,7 +7366,7 @@ All file and git operations should use this branch.
7337
7366
  if (!url) return res.status(400).json({ error: "url is required" });
7338
7367
  if (!models?.length) return res.status(400).json({ error: "models is required" });
7339
7368
  try {
7340
- const { autoConfig } = await import("./auto-config-AAUO4PKW.js");
7369
+ const { autoConfig } = await import("./auto-config-YXNCBYEY.js");
7341
7370
  const result = await autoConfig({
7342
7371
  url,
7343
7372
  ...apiKey ? { apiKey } : {},
@@ -7371,7 +7400,7 @@ All file and git operations should use this branch.
7371
7400
  }
7372
7401
  const { getModelProfile: getModelProfile2 } = await import("./profiles-GYHXBWPV.js");
7373
7402
  const { getBackendCapabilities } = await import("./backend-67OLCS5O.js");
7374
- const { buildNonStreamingCreateParams } = await import("./client-pure-B5DHEKQJ.js");
7403
+ const { buildNonStreamingCreateParams } = await import("./client-pure-QSY7TJGK.js");
7375
7404
  const { OpenAIHttpClient } = await import("./http-client-IPUW2MSW.js");
7376
7405
  const { ensureVersionPrefix } = await import("./url-utils-C5BM7NF7.js");
7377
7406
  const profile = getModelProfile2(model);
@@ -7382,6 +7411,7 @@ All file and git operations should use this branch.
7382
7411
  if (modelConfig?.topK !== void 0) modelSettings["topK"] = modelConfig.topK;
7383
7412
  if (modelConfig?.maxTokens !== void 0) modelSettings["maxTokens"] = modelConfig.maxTokens;
7384
7413
  if (modelConfig?.supportsVision !== void 0) modelSettings["supportsVision"] = modelConfig.supportsVision;
7414
+ if (modelConfig?.omitParams !== void 0) modelSettings["omitParams"] = modelConfig.omitParams;
7385
7415
  const rawQP = mode === "thinking" ? modelConfig?.thinkingQueryParams : modelConfig?.nonThinkingQueryParams;
7386
7416
  if (rawQP) {
7387
7417
  modelSettings["queryParams"] = JSON.parse(rawQP);
@@ -7724,7 +7754,7 @@ All file and git operations should use this branch.
7724
7754
  });
7725
7755
  async function rebuildMcpTools() {
7726
7756
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-FJAFLDZA.js");
7727
- const { setMcpTools: setMcpTools2 } = await import("./tools-GOGLGTNV.js");
7757
+ const { setMcpTools: setMcpTools2 } = await import("./tools-ZJXDZLRH.js");
7728
7758
  const mcpTools = createMcpTools2(mcpManager);
7729
7759
  setMcpTools2(mcpTools);
7730
7760
  toolRegistry = createToolRegistry();
@@ -8278,7 +8308,7 @@ All file and git operations should use this branch.
8278
8308
  );
8279
8309
  const wss = wssExports.wss;
8280
8310
  deferTasksBroadcast = (projectId, payload) => wssExports.broadcastForProject(projectId, "", { type: "tasks.update", payload });
8281
- const { launchWorkflowRun, abortRunnerRun } = await import("./launch-Q6GUJ22H.js");
8311
+ const { launchWorkflowRun, abortRunnerRun } = await import("./launch-I5XBYRSJ.js");
8282
8312
  deferTasksLaunchWorkflow = (sessionId, launch) => {
8283
8313
  const session = sessionManager.getSession(sessionId);
8284
8314
  let llmClient = getLLMClient();
@@ -8316,7 +8346,7 @@ All file and git operations should use this branch.
8316
8346
  const state = sessionManager.getContextState(sessionId);
8317
8347
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
8318
8348
  });
8319
- const { QueueProcessor } = await import("./processor-G6UJGA2K.js");
8349
+ const { QueueProcessor } = await import("./processor-OZSK7RUD.js");
8320
8350
  const queueProcessor = new QueueProcessor({
8321
8351
  sessionManager,
8322
8352
  providerManager,
@@ -8402,4 +8432,4 @@ export {
8402
8432
  createServerHandle,
8403
8433
  createServer
8404
8434
  };
8405
- //# sourceMappingURL=chunk-RXIDGWNV.js.map
8435
+ //# sourceMappingURL=chunk-XZ2WAI66.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createMessageStartEvent
3
- } from "./chunk-NP2SV2CX.js";
3
+ } from "./chunk-SE62ZBNX.js";
4
4
  import {
5
5
  COMPACTION_PROMPT
6
6
  } from "./chunk-27NABDXB.js";
@@ -36,4 +36,4 @@ export {
36
36
  COMPACTION_MAX_RATIO,
37
37
  shouldCompact
38
38
  };
39
- //# sourceMappingURL=chunk-CIYA6BNB.js.map
39
+ //# sourceMappingURL=chunk-YHAE2SJI.js.map
package/dist/cli/dev.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-5ZR5O5GC.js";
4
+ } from "../chunk-AIFZNTUJ.js";
5
5
  import "../chunk-AGXJ5O63.js";
6
6
  import {
7
7
  logger
package/dist/cli/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-5ZR5O5GC.js";
4
+ } from "../chunk-AIFZNTUJ.js";
5
5
  import "../chunk-AGXJ5O63.js";
6
6
  import {
7
7
  logger
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createLLMClient
3
- } from "./chunk-MKWS7TQH.js";
3
+ } from "./chunk-J6KFWVZ3.js";
4
4
  import "./chunk-W7VIYHPQ.js";
5
5
  import "./chunk-AZHWLLPP.js";
6
6
  import "./chunk-HNCM3D7Y.js";
7
- import "./chunk-TOKQ2UVG.js";
7
+ import "./chunk-MIPQOHWS.js";
8
8
  import "./chunk-LTYL6ZGH.js";
9
9
  import "./chunk-HD6Y77RO.js";
10
10
  import "./chunk-5PT4UMRR.js";
@@ -13,4 +13,4 @@ import "./chunk-YLJ4XMA6.js";
13
13
  export {
14
14
  createLLMClient
15
15
  };
16
- //# sourceMappingURL=client-KCNTDTIR.js.map
16
+ //# sourceMappingURL=client-R4PI64IL.js.map
@@ -8,7 +8,7 @@ import {
8
8
  mapFinishReason,
9
9
  parseToolArguments,
10
10
  resolveAttachmentsInMessages
11
- } from "./chunk-TOKQ2UVG.js";
11
+ } from "./chunk-MIPQOHWS.js";
12
12
  import "./chunk-YLJ4XMA6.js";
13
13
  export {
14
14
  buildModelParams,
@@ -21,4 +21,4 @@ export {
21
21
  parseToolArguments,
22
22
  resolveAttachmentsInMessages
23
23
  };
24
- //# sourceMappingURL=client-pure-B5DHEKQJ.js.map
24
+ //# sourceMappingURL=client-pure-QSY7TJGK.js.map