openfox 2.0.124 → 2.0.125

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 (56) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +1 -0
  3. package/dist/CHANGELOG.md +17 -0
  4. package/dist/{backend-67OLCS5O.js → backend-4YPEC3J2.js} +2 -2
  5. package/dist/{chat-handler-N43TBYLV.js → chat-handler-HJ2RBGNV.js} +13 -13
  6. package/dist/{chunk-KGFERMCV.js → chunk-7DO4JMGT.js} +6 -6
  7. package/dist/{chunk-UGEFD67O.js → chunk-CTHRGR4O.js} +2 -2
  8. package/dist/{chunk-SYTEO5LA.js → chunk-FNXTJLCZ.js} +197 -8
  9. package/dist/chunk-GZUD5E6E.js +7 -0
  10. package/dist/{chunk-W4SM4FFZ.js → chunk-HOSFRPPI.js} +14 -10
  11. package/dist/{chunk-MIPQOHWS.js → chunk-KAZWU73N.js} +26 -2
  12. package/dist/{chunk-FAL4WO4V.js → chunk-KETVPTMI.js} +3 -3
  13. package/dist/{chunk-62GUO2EG.js → chunk-LJX7KXRU.js} +3 -3
  14. package/dist/{chunk-QJNBQCAF.js → chunk-NBOSTFTS.js} +4 -4
  15. package/dist/{chunk-5CCM655F.js → chunk-O5A3XKE5.js} +18 -9
  16. package/dist/{chunk-AZHWLLPP.js → chunk-PBFGJFGC.js} +28 -10
  17. package/dist/{chunk-VUBFPRKT.js → chunk-T2RDFRNK.js} +56 -49
  18. package/dist/{chunk-A6EZBX62.js → chunk-T3JVYO3Z.js} +16 -6
  19. package/dist/{chunk-JEZN37KV.js → chunk-UAAFZEIS.js} +2 -2
  20. package/dist/{chunk-57UCBFBD.js → chunk-WMAW37GV.js} +9 -9
  21. package/dist/{chunk-RXLAFEZB.js → chunk-X2J6BAU7.js} +4 -4
  22. package/dist/{chunk-3NMLSANH.js → chunk-Y3BSBKHY.js} +31 -17
  23. package/dist/chunk-ZFNBATE3.js +196 -0
  24. package/dist/cli/dev.js +1 -1
  25. package/dist/cli/index.js +1 -1
  26. package/dist/{client-XHJHOFMU.js → client-YHYIWZY7.js} +5 -5
  27. package/dist/{client-pure-QSY7TJGK.js → client-pure-CJKM3ACP.js} +2 -2
  28. package/dist/{compactor-VTATJTPN.js → compactor-7KPBTFZF.js} +5 -5
  29. package/dist/{dynamic-context-KTQCAPTK.js → dynamic-context-5MQWJTJC.js} +2 -2
  30. package/dist/{http-client-N4ASJEKJ.js → http-client-ROVNSHF6.js} +2 -2
  31. package/dist/{launch-Z5D5YFRJ.js → launch-ZHAFPRCP.js} +13 -13
  32. package/dist/{orchestrator-BQBBO4US.js → orchestrator-KKUXIE3Q.js} +12 -12
  33. package/dist/package.json +1 -1
  34. package/dist/plugins-registry.json +6 -0
  35. package/dist/{processor-WTRVYXAO.js → processor-HETUXJFH.js} +12 -12
  36. package/dist/provider/index.d.ts +2 -2
  37. package/dist/{provider-LICG53GG.js → provider-6LUA73HF.js} +6 -6
  38. package/dist/{provider-manager-3QC2MSSR.js → provider-manager-OQTEXZ7X.js} +6 -6
  39. package/dist/{serve-75G5Z7UQ.js → serve-UVHJHYF3.js} +18 -18
  40. package/dist/server/index.d.ts +6 -1
  41. package/dist/server/index.js +17 -17
  42. package/dist/{server-N3VATHIA.js → server-E4DOH4OF.js} +16 -16
  43. package/dist/{service-OURGS2SI.js → service-BRKMLM4C.js} +7 -7
  44. package/dist/{tasks-4SOLTX6A.js → tasks-DEUZ6BNS.js} +7 -7
  45. package/dist/{tools-G44LBKD4.js → tools-AUHL5MPG.js} +10 -10
  46. package/dist/{types-Cr4EgGwK.d.ts → types-BWuVnaBw.d.ts} +3 -1
  47. package/dist/{update-R2TEHD7V.js → update-45ZRDWUB.js} +2 -2
  48. package/dist/web/assets/index-DQ3Wg2OF.js +324 -0
  49. package/dist/web/index.html +1 -1
  50. package/dist/web/sw.js +1 -1
  51. package/dist/{workspace-J3JEGF6U.js → workspace-6CUE26YA.js} +2 -2
  52. package/package.json +1 -1
  53. package/plugins-registry.json +6 -0
  54. package/dist/chunk-SBADOWVC.js +0 -7
  55. package/dist/chunk-VPRB5FNR.js +0 -167
  56. package/dist/web/assets/index-GZTGHRRr.js +0 -324
@@ -18,7 +18,7 @@ import {
18
18
  recordLLMFailure,
19
19
  sleepThroughRetryBackoff,
20
20
  streamLLMPure
21
- } from "./chunk-62GUO2EG.js";
21
+ } from "./chunk-LJX7KXRU.js";
22
22
  import {
23
23
  COMPACTION_PROMPT,
24
24
  buildBasePrompt,
@@ -56,12 +56,12 @@ import {
56
56
  getGitBranch,
57
57
  isGitRepository,
58
58
  listWorkspaces
59
- } from "./chunk-3NMLSANH.js";
59
+ } from "./chunk-Y3BSBKHY.js";
60
60
  import {
61
61
  getGateConfig,
62
62
  isTaskConflictError,
63
63
  isTaskGateError
64
- } from "./chunk-UGEFD67O.js";
64
+ } from "./chunk-CTHRGR4O.js";
65
65
  import {
66
66
  getSessionDisabledServers
67
67
  } from "./chunk-7YP4O4XE.js";
@@ -120,7 +120,7 @@ import {
120
120
  formatPdfErrorMessage,
121
121
  isPdfBuffer,
122
122
  processPdfContent
123
- } from "./chunk-MIPQOHWS.js";
123
+ } from "./chunk-KAZWU73N.js";
124
124
  import {
125
125
  SETTINGS_KEYS,
126
126
  getSetting,
@@ -2136,7 +2136,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
2136
2136
  currentMaxTokensOverride = void 0;
2137
2137
  if (!compacting) {
2138
2138
  const contextState = sessionManager.getContextState(sessionId);
2139
- const { shouldCompact, appendCompactionPrompt } = await import("./compactor-VTATJTPN.js");
2139
+ const { shouldCompact, appendCompactionPrompt } = await import("./compactor-7KPBTFZF.js");
2140
2140
  if (shouldCompact(
2141
2141
  contextState.currentTokens,
2142
2142
  contextState.maxTokens,
@@ -2935,7 +2935,16 @@ async function executeSubAgent(options) {
2935
2935
  model: resolved.override.model,
2936
2936
  ...resolved.override.reasoningEffort ? { reasoningEffort: resolved.override.reasoningEffort } : {}
2937
2937
  };
2938
- overrideModelSettings = providerManager.getModelSettings(resolved.override.providerId, resolved.override.model);
2938
+ const overrideEffort = providerManager.resolveModelEffort(
2939
+ resolved.override.providerId,
2940
+ resolved.override.model,
2941
+ resolved.override.reasoningEffort
2942
+ );
2943
+ overrideModelSettings = providerManager.getModelSettings(
2944
+ resolved.override.providerId,
2945
+ resolved.override.model,
2946
+ overrideEffort === "none" ? "non-thinking" : "thinking"
2947
+ );
2939
2948
  logger.info("Sub-agent using model override", { subAgentType, ...resolved.override });
2940
2949
  } else if (resolved.warning) {
2941
2950
  logger.warn("Sub-agent model override unavailable, falling back", { subAgentType, warning: resolved.warning });
@@ -3152,7 +3161,7 @@ var callSubAgentTool = {
3152
3161
  };
3153
3162
  }
3154
3163
  try {
3155
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-G44LBKD4.js");
3164
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-AUHL5MPG.js");
3156
3165
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3157
3166
  const turnMetrics = new TurnMetrics();
3158
3167
  const result = await executeSubAgent({
@@ -4174,7 +4183,7 @@ var mcpConfigTool = createTool(
4174
4183
  mcpNotifyChanged?.(sessionId);
4175
4184
  }
4176
4185
  async function rebuildTools() {
4177
- const { setMcpTools: setMcpTools2 } = await import("./tools-G44LBKD4.js");
4186
+ const { setMcpTools: setMcpTools2 } = await import("./tools-AUHL5MPG.js");
4178
4187
  const mcpTools = createMcpTools(mcpManagerForTools);
4179
4188
  setMcpTools2(mcpTools);
4180
4189
  }
@@ -5099,4 +5108,4 @@ export {
5099
5108
  getToolRegistryForAgent,
5100
5109
  createToolRegistry
5101
5110
  };
5102
- //# sourceMappingURL=chunk-5CCM655F.js.map
5111
+ //# sourceMappingURL=chunk-O5A3XKE5.js.map
@@ -2,39 +2,57 @@
2
2
  var BACKEND_CAPABILITIES = {
3
3
  vllm: {
4
4
  supportsChatTemplateKwargs: true,
5
- supportsTopK: true
5
+ supportsTopK: true,
6
+ supportsNumCtx: false,
7
+ routesEffortViaChatTemplateKwargs: false
6
8
  },
7
9
  sglang: {
8
10
  supportsChatTemplateKwargs: true,
9
- supportsTopK: true
11
+ supportsTopK: true,
12
+ supportsNumCtx: false,
13
+ routesEffortViaChatTemplateKwargs: false
10
14
  },
11
15
  openai: {
12
16
  supportsChatTemplateKwargs: false,
13
- supportsTopK: false
17
+ supportsTopK: false,
18
+ supportsNumCtx: false,
19
+ routesEffortViaChatTemplateKwargs: false
14
20
  },
15
21
  anthropic: {
16
22
  supportsChatTemplateKwargs: false,
17
- supportsTopK: false
23
+ supportsTopK: false,
24
+ supportsNumCtx: false,
25
+ routesEffortViaChatTemplateKwargs: false
18
26
  },
19
27
  ollama: {
20
28
  supportsChatTemplateKwargs: false,
21
- supportsTopK: false
29
+ supportsTopK: false,
30
+ supportsNumCtx: true,
31
+ routesEffortViaChatTemplateKwargs: false
22
32
  },
23
33
  llamacpp: {
24
34
  supportsChatTemplateKwargs: false,
25
- supportsTopK: true
35
+ supportsTopK: true,
36
+ supportsNumCtx: false,
37
+ routesEffortViaChatTemplateKwargs: true
26
38
  },
27
39
  lmstudio: {
28
40
  supportsChatTemplateKwargs: false,
29
- supportsTopK: true
41
+ supportsTopK: true,
42
+ supportsNumCtx: false,
43
+ routesEffortViaChatTemplateKwargs: false
30
44
  },
31
45
  "opencode-go": {
32
46
  supportsChatTemplateKwargs: false,
33
- supportsTopK: true
47
+ supportsTopK: true,
48
+ supportsNumCtx: false,
49
+ routesEffortViaChatTemplateKwargs: false
34
50
  },
35
51
  unknown: {
36
52
  supportsChatTemplateKwargs: true,
37
- supportsTopK: true
53
+ supportsTopK: true,
54
+ supportsNumCtx: false,
55
+ routesEffortViaChatTemplateKwargs: false
38
56
  }
39
57
  };
40
58
  function getBackendCapabilities(backend) {
@@ -67,4 +85,4 @@ export {
67
85
  getBackendCapabilities,
68
86
  getBackendDisplayName
69
87
  };
70
- //# sourceMappingURL=chunk-AZHWLLPP.js.map
88
+ //# sourceMappingURL=chunk-PBFGJFGC.js.map
@@ -16,10 +16,10 @@ import {
16
16
  terminalManager,
17
17
  tokenFromPassword,
18
18
  verifyPassword
19
- } from "./chunk-57UCBFBD.js";
19
+ } from "./chunk-WMAW37GV.js";
20
20
  import {
21
21
  TEMPLATE_VARIABLES
22
- } from "./chunk-KGFERMCV.js";
22
+ } from "./chunk-7DO4JMGT.js";
23
23
  import {
24
24
  createToolRegistry,
25
25
  devServerManager,
@@ -33,7 +33,7 @@ import {
33
33
  setMcpManagerForTools,
34
34
  setMcpTools,
35
35
  setNotifyMcpServersChanged
36
- } from "./chunk-5CCM655F.js";
36
+ } from "./chunk-O5A3XKE5.js";
37
37
  import {
38
38
  deleteOwnedSkill,
39
39
  deleteProjectSkill,
@@ -72,6 +72,7 @@ import {
72
72
  getGitBranch,
73
73
  getGlobalDataDir,
74
74
  getWorkspacesDir,
75
+ isDirectoryEntry,
75
76
  loadWorkspaceConfig,
76
77
  resolveAndValidateSourceBranch,
77
78
  runGit,
@@ -79,7 +80,7 @@ import {
79
80
  validateRef,
80
81
  validateWorkspaceName,
81
82
  workspaceExists
82
- } from "./chunk-3NMLSANH.js";
83
+ } from "./chunk-Y3BSBKHY.js";
83
84
  import {
84
85
  commandExists,
85
86
  deleteCommand,
@@ -106,7 +107,7 @@ import {
106
107
  saveWorkflow,
107
108
  saveWorkflowToProject,
108
109
  workflowExists
109
- } from "./chunk-UGEFD67O.js";
110
+ } from "./chunk-CTHRGR4O.js";
110
111
  import {
111
112
  getSessionDisabledServers,
112
113
  setSessionDisabledServers
@@ -170,10 +171,10 @@ import {
170
171
  detectModel,
171
172
  getLlmStatus,
172
173
  parseDefaultModelSelection
173
- } from "./chunk-A6EZBX62.js";
174
+ } from "./chunk-T3JVYO3Z.js";
174
175
  import {
175
176
  VERSION
176
- } from "./chunk-SBADOWVC.js";
177
+ } from "./chunk-GZUD5E6E.js";
177
178
  import {
178
179
  agentExists,
179
180
  deleteAgent,
@@ -205,14 +206,14 @@ import {
205
206
  } from "./chunk-GJL3QSMP.js";
206
207
  import {
207
208
  getBackendDisplayName
208
- } from "./chunk-AZHWLLPP.js";
209
+ } from "./chunk-PBFGJFGC.js";
209
210
  import {
210
211
  buildModelsUrl
211
212
  } from "./chunk-HNCM3D7Y.js";
212
213
  import {
213
214
  SessionNotFoundError,
214
215
  WorkspaceInUseError
215
- } from "./chunk-VPRB5FNR.js";
216
+ } from "./chunk-ZFNBATE3.js";
216
217
  import {
217
218
  deleteSetting,
218
219
  getSetting,
@@ -2848,17 +2849,21 @@ var SessionManager = class {
2848
2849
  getCurrentModelSettings(sessionId, agentId) {
2849
2850
  let providerId;
2850
2851
  let model;
2852
+ let reasoningEffort;
2851
2853
  if (sessionId) {
2852
2854
  const effective = this.resolveEffectiveProviderModel(sessionId, agentId);
2853
2855
  providerId = effective.providerId ?? void 0;
2854
2856
  model = effective.model ?? void 0;
2857
+ reasoningEffort = effective.reasoningEffort;
2855
2858
  }
2856
2859
  if (!providerId || !model) {
2857
2860
  model = this.providerManager.getCurrentModel();
2858
2861
  providerId = this.providerManager.getActiveProviderId();
2859
2862
  }
2860
2863
  if (!model || !providerId) return void 0;
2861
- return this.providerManager.getModelSettings(providerId, model);
2864
+ const effort = this.providerManager.resolveModelEffort(providerId, model, reasoningEffort);
2865
+ const mode = effort === "none" ? "non-thinking" : "thinking";
2866
+ return this.providerManager.getModelSettings(providerId, model, mode);
2862
2867
  }
2863
2868
  getCurrentModelContext(sessionId, agentId) {
2864
2869
  if (sessionId) {
@@ -4916,7 +4921,7 @@ async function findOrphanedWorkspaces(dir) {
4916
4921
  try {
4917
4922
  const entries = await readdir(dir, { withFileTypes: true });
4918
4923
  for (const entry of entries) {
4919
- if (entry.isDirectory()) {
4924
+ if (await isDirectoryEntry(dir, entry)) {
4920
4925
  try {
4921
4926
  const gitStat = await stat2(join5(dir, entry.name, ".git"));
4922
4927
  if (gitStat.isDirectory()) {
@@ -5120,10 +5125,12 @@ function createDirectoryRoutes() {
5120
5125
  try {
5121
5126
  const resolvedPath = resolve5(path);
5122
5127
  const entries = await readdir2(resolvedPath, { withFileTypes: true });
5123
- const directories = entries.filter((entry) => entry.isDirectory()).map((entry) => ({
5124
- name: entry.name,
5125
- path: join6(resolvedPath, entry.name)
5126
- })).sort((a, b) => a.name.localeCompare(b.name));
5128
+ const dirs = await Promise.all(
5129
+ entries.map(
5130
+ async (entry) => await isDirectoryEntry(resolvedPath, entry) ? { name: entry.name, path: join6(resolvedPath, entry.name) } : null
5131
+ )
5132
+ );
5133
+ const directories = dirs.filter((d) => d !== null).sort((a, b) => a.name.localeCompare(b.name));
5127
5134
  const parent = dirname4(resolvedPath);
5128
5135
  const hasParent = parent !== resolvedPath;
5129
5136
  res.json({
@@ -5843,7 +5850,7 @@ function createPluginRoutes(options) {
5843
5850
  const entries = await readdir4(pluginsDir, { withFileTypes: true });
5844
5851
  const installed = [];
5845
5852
  for (const entry of entries) {
5846
- if (!entry.isDirectory()) continue;
5853
+ if (!await isDirectoryEntry(pluginsDir, entry)) continue;
5847
5854
  const pkgPath = join8(pluginsDir, entry.name, "package.json");
5848
5855
  let version = null;
5849
5856
  try {
@@ -6058,7 +6065,7 @@ async function createServerHandle(config3) {
6058
6065
  toolRegistry = createToolRegistry();
6059
6066
  logger.info("MCP tools registered", { count: mcpTools.length });
6060
6067
  }
6061
- const { signalMcpReady } = await import("./server-N3VATHIA.js");
6068
+ const { signalMcpReady } = await import("./server-E4DOH4OF.js");
6062
6069
  signalMcpReady();
6063
6070
  });
6064
6071
  const app = express();
@@ -6254,9 +6261,9 @@ async function createServerHandle(config3) {
6254
6261
  const sessionFavoriteRouter = express.Router();
6255
6262
  registerSessionFavoriteRoute(sessionFavoriteRouter, sessionManager);
6256
6263
  app.use("/api", sessionFavoriteRouter);
6257
- const { createTasksService } = await import("./service-OURGS2SI.js");
6258
- const { registerTaskRoutes } = await import("./tasks-4SOLTX6A.js");
6259
- const { setTasksService } = await import("./tools-G44LBKD4.js");
6264
+ const { createTasksService } = await import("./service-BRKMLM4C.js");
6265
+ const { registerTaskRoutes } = await import("./tasks-DEUZ6BNS.js");
6266
+ const { setTasksService } = await import("./tools-AUHL5MPG.js");
6260
6267
  const tasksService = createTasksService({
6261
6268
  sessionManager,
6262
6269
  config: config3,
@@ -6272,7 +6279,7 @@ async function createServerHandle(config3) {
6272
6279
  const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
6273
6280
  const project = getProject2(req.params.id);
6274
6281
  if (!project) return res.status(404).json({ error: "Project not found" });
6275
- const { listBranches } = await import("./workspace-J3JEGF6U.js");
6282
+ const { listBranches } = await import("./workspace-6CUE26YA.js");
6276
6283
  const branches = await listBranches(project.workdir);
6277
6284
  res.json({ branches });
6278
6285
  });
@@ -6282,7 +6289,7 @@ async function createServerHandle(config3) {
6282
6289
  if (!project) return res.status(404).json({ error: "Project not found" });
6283
6290
  const { branch } = req.body;
6284
6291
  if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
6285
- const { checkoutBranch, isGitRepository } = await import("./workspace-J3JEGF6U.js");
6292
+ const { checkoutBranch, isGitRepository } = await import("./workspace-6CUE26YA.js");
6286
6293
  if (!await isGitRepository(project.workdir)) {
6287
6294
  return res.status(400).json({ error: "Project is not a git repository" });
6288
6295
  }
@@ -6307,7 +6314,7 @@ async function createServerHandle(config3) {
6307
6314
  if (!project) return res.status(404).json({ error: "Project not found" });
6308
6315
  const { name, sourceBranch } = req.body;
6309
6316
  if (!name || typeof name !== "string") return res.status(400).json({ error: "name is required" });
6310
- const { createBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, validateRef: validateRef2, getDefaultBranch, isGitRepository } = await import("./workspace-J3JEGF6U.js");
6317
+ const { createBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, validateRef: validateRef2, getDefaultBranch, isGitRepository } = await import("./workspace-6CUE26YA.js");
6311
6318
  if (!await isGitRepository(project.workdir)) {
6312
6319
  return res.status(400).json({ error: "Project is not a git repository" });
6313
6320
  }
@@ -6341,7 +6348,7 @@ async function createServerHandle(config3) {
6341
6348
  const session = sessionManager.getSession(req.params.id);
6342
6349
  if (!session) return res.status(404).json({ error: "Session not found" });
6343
6350
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
6344
- const { listBranches, getDefaultBranch } = await import("./workspace-J3JEGF6U.js");
6351
+ const { listBranches, getDefaultBranch } = await import("./workspace-6CUE26YA.js");
6345
6352
  const [branches, defaultBranch] = await Promise.all([
6346
6353
  listBranches(effectiveWorkdir),
6347
6354
  getDefaultBranch(session.workdir)
@@ -6355,7 +6362,7 @@ async function createServerHandle(config3) {
6355
6362
  const { branch } = req.body;
6356
6363
  if (!branch || typeof branch !== "string") return res.status(400).json({ error: "branch is required" });
6357
6364
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
6358
- const { checkoutBranch, validateRef: validateRef2 } = await import("./workspace-J3JEGF6U.js");
6365
+ const { checkoutBranch, validateRef: validateRef2 } = await import("./workspace-6CUE26YA.js");
6359
6366
  const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-D7VRCHQY.js");
6360
6367
  try {
6361
6368
  await validateRef2(effectiveWorkdir, branch);
@@ -6398,16 +6405,16 @@ All file and git operations should use this branch.
6398
6405
  const { name, sourceBranch } = req.body;
6399
6406
  if (!name || typeof name !== "string") return res.status(400).json({ error: "name is required" });
6400
6407
  const effectiveWorkdir = sessionManager.getEffectiveWorkdir(req.params.id);
6401
- const { validateRef: validateRef2 } = await import("./workspace-J3JEGF6U.js");
6408
+ const { validateRef: validateRef2 } = await import("./workspace-6CUE26YA.js");
6402
6409
  const { updateSessionBranch: updateSessionBranch2 } = await import("./sessions-D7VRCHQY.js");
6403
6410
  try {
6404
6411
  await validateRef2(effectiveWorkdir, name);
6405
6412
  if (sourceBranch) {
6406
- const { resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, createBranch } = await import("./workspace-J3JEGF6U.js");
6413
+ const { resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2, createBranch } = await import("./workspace-6CUE26YA.js");
6407
6414
  const sb = await resolveAndValidateSourceBranch2(effectiveWorkdir, sourceBranch, session.workdir);
6408
6415
  await createBranch(effectiveWorkdir, name, sb);
6409
6416
  } else {
6410
- const { createBranch, getDefaultBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2 } = await import("./workspace-J3JEGF6U.js");
6417
+ const { createBranch, getDefaultBranch, resolveAndValidateSourceBranch: resolveAndValidateSourceBranch2 } = await import("./workspace-6CUE26YA.js");
6411
6418
  const defaultBranch = await getDefaultBranch(session.workdir);
6412
6419
  const sb = await resolveAndValidateSourceBranch2(effectiveWorkdir, defaultBranch, session.workdir);
6413
6420
  await createBranch(effectiveWorkdir, name, sb);
@@ -6448,7 +6455,7 @@ All file and git operations should use this branch.
6448
6455
  const { getProject: getProject2 } = await import("./projects-TPSLCJP2.js");
6449
6456
  const project = getProject2(req.params.id);
6450
6457
  if (!project) return res.status(404).json({ error: "Project not found" });
6451
- const { listWorkspaces } = await import("./workspace-J3JEGF6U.js");
6458
+ const { listWorkspaces } = await import("./workspace-6CUE26YA.js");
6452
6459
  const all = await listWorkspaces(project.name, project.workdir);
6453
6460
  const workspacesList = all.filter((ws) => ws.path !== project.workdir);
6454
6461
  res.json({ workspaces: workspacesList });
@@ -6547,7 +6554,7 @@ All file and git operations should use this branch.
6547
6554
  if (!target || typeof target !== "string") return res.status(400).json({ error: "target is required" });
6548
6555
  const project = sessionManager.getProject(session.projectId);
6549
6556
  if (!project) return res.status(404).json({ error: "Project not found" });
6550
- const { isGitRepository } = await import("./workspace-J3JEGF6U.js");
6557
+ const { isGitRepository } = await import("./workspace-6CUE26YA.js");
6551
6558
  if (!await isGitRepository(project.workdir)) {
6552
6559
  return res.status(400).json({ error: "Project is not a git repository" });
6553
6560
  }
@@ -6565,7 +6572,7 @@ All file and git operations should use this branch.
6565
6572
  if (!target || typeof target !== "string") return res.status(400).json({ error: "target is required" });
6566
6573
  const project = sessionManager.getProject(session.projectId);
6567
6574
  if (!project) return res.status(404).json({ error: "Project not found" });
6568
- const { isGitRepository } = await import("./workspace-J3JEGF6U.js");
6575
+ const { isGitRepository } = await import("./workspace-6CUE26YA.js");
6569
6576
  if (!await isGitRepository(project.workdir)) {
6570
6577
  return res.status(400).json({ error: "Project is not a git repository" });
6571
6578
  }
@@ -6585,7 +6592,7 @@ All file and git operations should use this branch.
6585
6592
  app.get("/api/sessions/:id", async (req, res) => {
6586
6593
  const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-GMHRX4LF.js");
6587
6594
  const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-7K2GRPF4.js");
6588
- const { getPendingQuestionsForSession } = await import("./tools-G44LBKD4.js");
6595
+ const { getPendingQuestionsForSession } = await import("./tools-AUHL5MPG.js");
6589
6596
  const { getMaxVisibleItems } = await import("./settings-VOWWO4VG.js");
6590
6597
  const session = sessionManager.getSession(req.params.id);
6591
6598
  if (!session) {
@@ -6614,7 +6621,7 @@ All file and git operations should use this branch.
6614
6621
  });
6615
6622
  app.get("/api/sessions/:id/status", async (req, res) => {
6616
6623
  const { projectSessionStatus } = await import("./session-status-6Q5B5PEN.js");
6617
- const { getPendingQuestionsForSession } = await import("./tools-G44LBKD4.js");
6624
+ const { getPendingQuestionsForSession } = await import("./tools-AUHL5MPG.js");
6618
6625
  const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-GMHRX4LF.js");
6619
6626
  const { foldPendingConfirmations } = await import("./folding-7K2GRPF4.js");
6620
6627
  const sessionId = req.params["id"];
@@ -6646,8 +6653,8 @@ All file and git operations should use this branch.
6646
6653
  if (!session) {
6647
6654
  return res.status(404).json({ error: "Session not found" });
6648
6655
  }
6649
- const { stopSessionExecution } = await import("./chat-handler-N43TBYLV.js");
6650
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-G44LBKD4.js");
6656
+ const { stopSessionExecution } = await import("./chat-handler-HJ2RBGNV.js");
6657
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-AUHL5MPG.js");
6651
6658
  sessionManager.clearMessageQueue(sessionId);
6652
6659
  stopSessionExecution(sessionId, sessionManager);
6653
6660
  abortSession(sessionId);
@@ -6924,7 +6931,7 @@ All file and git operations should use this branch.
6924
6931
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
6925
6932
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
6926
6933
  }
6927
- const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-G44LBKD4.js");
6934
+ const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-AUHL5MPG.js");
6928
6935
  const pendingSessionId = getConfirmationSessionId(callId);
6929
6936
  if (!pendingSessionId) {
6930
6937
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -6939,7 +6946,7 @@ All file and git operations should use this branch.
6939
6946
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-GMHRX4LF.js");
6940
6947
  const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-7K2GRPF4.js");
6941
6948
  const { createSessionStateMessage } = await import("./protocol-TLODRZSB.js");
6942
- const { getPendingQuestionsForSession } = await import("./tools-G44LBKD4.js");
6949
+ const { getPendingQuestionsForSession } = await import("./tools-AUHL5MPG.js");
6943
6950
  const { getMaxVisibleItems } = await import("./settings-VOWWO4VG.js");
6944
6951
  const eventStore = getEventStore2();
6945
6952
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
@@ -6977,7 +6984,7 @@ All file and git operations should use this branch.
6977
6984
  if (!skip && typeof answer !== "string") {
6978
6985
  return res.status(400).json({ error: "answer is required when not skipping" });
6979
6986
  }
6980
- const { provideAnswer } = await import("./tools-G44LBKD4.js");
6987
+ const { provideAnswer } = await import("./tools-AUHL5MPG.js");
6981
6988
  const found = provideAnswer(callId, answer ?? "", skip ?? false);
6982
6989
  if (!found) {
6983
6990
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -7043,7 +7050,7 @@ All file and git operations should use this branch.
7043
7050
  backend: activeProvider?.backend ?? llmClient.getBackend(),
7044
7051
  model: llmClient.getModel()
7045
7052
  };
7046
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-BQBBO4US.js");
7053
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-KKUXIE3Q.js");
7047
7054
  runAgentTurn(
7048
7055
  {
7049
7056
  sessionManager,
@@ -7081,8 +7088,8 @@ All file and git operations should use this branch.
7081
7088
  if (!session) {
7082
7089
  return res.status(404).json({ error: "Session not found" });
7083
7090
  }
7084
- const { stopSessionExecution } = await import("./chat-handler-N43TBYLV.js");
7085
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-G44LBKD4.js");
7091
+ const { stopSessionExecution } = await import("./chat-handler-HJ2RBGNV.js");
7092
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-AUHL5MPG.js");
7086
7093
  const queuedMessages = sessionManager.getQueueState(sessionId);
7087
7094
  sessionManager.clearMessageQueue(sessionId);
7088
7095
  stopSessionExecution(sessionId, sessionManager);
@@ -7461,7 +7468,7 @@ All file and git operations should use this branch.
7461
7468
  const backend = req.query["backend"];
7462
7469
  if (!url) return res.status(400).json({ error: "url is required" });
7463
7470
  try {
7464
- const { fetchModelsWithContext } = await import("./provider-manager-3QC2MSSR.js");
7471
+ const { fetchModelsWithContext } = await import("./provider-manager-OQTEXZ7X.js");
7465
7472
  const { getModelProfile: getModelProfile2 } = await import("./profiles-3YLLEJ2B.js");
7466
7473
  const { getCatalogEntry } = await import("./model-catalog-ZLOWTQA7.js");
7467
7474
  const models = await fetchModelsWithContext(
@@ -7533,9 +7540,9 @@ All file and git operations should use this branch.
7533
7540
  return res.json({ success: true, message: { content: response2.content }, raw: response2 });
7534
7541
  }
7535
7542
  const { getModelProfile: getModelProfile2 } = await import("./profiles-3YLLEJ2B.js");
7536
- const { getBackendCapabilities } = await import("./backend-67OLCS5O.js");
7537
- const { buildNonStreamingCreateParams } = await import("./client-pure-QSY7TJGK.js");
7538
- const { OpenAIHttpClient } = await import("./http-client-N4ASJEKJ.js");
7543
+ const { getBackendCapabilities } = await import("./backend-4YPEC3J2.js");
7544
+ const { buildNonStreamingCreateParams } = await import("./client-pure-CJKM3ACP.js");
7545
+ const { OpenAIHttpClient } = await import("./http-client-ROVNSHF6.js");
7539
7546
  const { ensureVersionPrefix } = await import("./url-utils-C5BM7NF7.js");
7540
7547
  const profile = getModelProfile2(model);
7541
7548
  const capabilities = getBackendCapabilities(backend || "unknown");
@@ -7926,7 +7933,7 @@ All file and git operations should use this branch.
7926
7933
  });
7927
7934
  async function rebuildMcpTools() {
7928
7935
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-FJAFLDZA.js");
7929
- const { setMcpTools: setMcpTools2 } = await import("./tools-G44LBKD4.js");
7936
+ const { setMcpTools: setMcpTools2 } = await import("./tools-AUHL5MPG.js");
7930
7937
  const mcpTools = createMcpTools2(mcpManager);
7931
7938
  setMcpTools2(mcpTools);
7932
7939
  toolRegistry = createToolRegistry();
@@ -8480,7 +8487,7 @@ All file and git operations should use this branch.
8480
8487
  );
8481
8488
  const wss = wssExports.wss;
8482
8489
  deferTasksBroadcast = (projectId, payload) => wssExports.broadcastForProject(projectId, "", { type: "tasks.update", payload });
8483
- const { launchWorkflowRun, abortRunnerRun } = await import("./launch-Z5D5YFRJ.js");
8490
+ const { launchWorkflowRun, abortRunnerRun } = await import("./launch-ZHAFPRCP.js");
8484
8491
  deferTasksLaunchWorkflow = (sessionId, launch) => {
8485
8492
  const effective = sessionManager.resolveEffectiveProviderModel(sessionId);
8486
8493
  let llmClient = getLLMClient();
@@ -8520,7 +8527,7 @@ All file and git operations should use this branch.
8520
8527
  const state = sessionManager.getContextState(sessionId);
8521
8528
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
8522
8529
  });
8523
- const { QueueProcessor } = await import("./processor-WTRVYXAO.js");
8530
+ const { QueueProcessor } = await import("./processor-HETUXJFH.js");
8524
8531
  const queueProcessor = new QueueProcessor({
8525
8532
  sessionManager,
8526
8533
  providerManager,
@@ -8606,4 +8613,4 @@ export {
8606
8613
  createServerHandle,
8607
8614
  createServer
8608
8615
  };
8609
- //# sourceMappingURL=chunk-VUBFPRKT.js.map
8616
+ //# sourceMappingURL=chunk-T2RDFRNK.js.map
@@ -3,13 +3,13 @@ import {
3
3
  } from "./chunk-K2QKX4ZJ.js";
4
4
  import {
5
5
  createLLMClient
6
- } from "./chunk-SYTEO5LA.js";
6
+ } from "./chunk-FNXTJLCZ.js";
7
7
  import {
8
8
  getModelProfile
9
9
  } from "./chunk-GJL3QSMP.js";
10
10
  import {
11
11
  getBackendCapabilities
12
- } from "./chunk-AZHWLLPP.js";
12
+ } from "./chunk-PBFGJFGC.js";
13
13
  import {
14
14
  buildModelsUrl,
15
15
  ensureVersionPrefix,
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-HNCM3D7Y.js";
18
18
  import {
19
19
  resolveAttachmentsInMessages
20
- } from "./chunk-MIPQOHWS.js";
20
+ } from "./chunk-KAZWU73N.js";
21
21
  import {
22
22
  getCatalogEntry,
23
23
  resolveEffortForModel
@@ -456,7 +456,10 @@ function createProviderManager(config, options = {}) {
456
456
  function createClientForProvider(provider, model, reasoningEffort) {
457
457
  const resolvedModel = resolveProviderModel(provider, model);
458
458
  const transport = options.adapters?.getTransport(resolveTransportAdapter(provider));
459
- return transport ? createTransportLLMClient(provider, resolvedModel, transport, reasoningEffort) : createLLMClient(createConfigForProvider(provider, resolvedModel, reasoningEffort));
459
+ return transport ? createTransportLLMClient(provider, resolvedModel, transport, reasoningEffort) : createLLMClient(
460
+ createConfigForProvider(provider, resolvedModel, reasoningEffort),
461
+ provider.backend
462
+ );
460
463
  }
461
464
  async function fetchProviderModels(provider) {
462
465
  const transport = options.adapters?.getTransport(resolveTransportAdapter(provider));
@@ -761,6 +764,8 @@ function createProviderManager(config, options = {}) {
761
764
  if (model["maxTokens"] !== void 0) baseSettings["maxTokens"] = model["maxTokens"];
762
765
  if (model["supportsVision"] !== void 0) baseSettings["supportsVision"] = model["supportsVision"];
763
766
  if (model["omitParams"] !== void 0) baseSettings["omitParams"] = model["omitParams"];
767
+ if (typeof model["contextWindow"] === "number" && model["contextWindow"] > 0)
768
+ baseSettings["numCtx"] = model["contextWindow"];
764
769
  const rawQueryParams = mode === "thinking" ? model.thinkingQueryParams : model.nonThinkingQueryParams;
765
770
  if (rawQueryParams) {
766
771
  return { ...baseSettings, queryParams: JSON.parse(rawQueryParams) };
@@ -776,9 +781,14 @@ function createProviderManager(config, options = {}) {
776
781
  if (fallbackRawQP) {
777
782
  return { ...baseSettings, queryParams: JSON.parse(fallbackRawQP) };
778
783
  }
779
- if (model["omitParams"] !== void 0) return baseSettings;
784
+ if (Object.keys(baseSettings).length > 0) return baseSettings;
780
785
  return void 0;
781
786
  },
787
+ resolveModelEffort(providerId, modelId, explicitEffort) {
788
+ const provider = providers.find((p) => p.id === providerId);
789
+ if (!provider) return void 0;
790
+ return resolveModelThinkingConfig(provider, modelId, explicitEffort).reasoningEffort;
791
+ },
782
792
  async refreshProviderModels(providerId) {
783
793
  const provider = providers.find((p) => p.id === providerId);
784
794
  if (!provider) {
@@ -841,4 +851,4 @@ export {
841
851
  parseDefaultModelSelection,
842
852
  createProviderManager
843
853
  };
844
- //# sourceMappingURL=chunk-A6EZBX62.js.map
854
+ //# sourceMappingURL=chunk-T3JVYO3Z.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createMessageStartEvent
3
- } from "./chunk-62GUO2EG.js";
3
+ } from "./chunk-LJX7KXRU.js";
4
4
  import {
5
5
  COMPACTION_PROMPT
6
6
  } from "./chunk-GIJUWPRQ.js";
@@ -36,4 +36,4 @@ export {
36
36
  COMPACTION_MAX_RATIO,
37
37
  shouldCompact
38
38
  };
39
- //# sourceMappingURL=chunk-JEZN37KV.js.map
39
+ //# sourceMappingURL=chunk-UAAFZEIS.js.map
@@ -2,28 +2,28 @@ import {
2
2
  generateSessionNameForSession,
3
3
  getSessionMessageCount,
4
4
  needsNameGeneration
5
- } from "./chunk-W4SM4FFZ.js";
5
+ } from "./chunk-HOSFRPPI.js";
6
6
  import {
7
7
  launchWorkflowRun
8
- } from "./chunk-KGFERMCV.js";
8
+ } from "./chunk-7DO4JMGT.js";
9
9
  import {
10
10
  runChatTurn
11
- } from "./chunk-QJNBQCAF.js";
11
+ } from "./chunk-NBOSTFTS.js";
12
12
  import {
13
13
  devServerManager
14
- } from "./chunk-5CCM655F.js";
14
+ } from "./chunk-O5A3XKE5.js";
15
15
  import {
16
16
  applyDynamicContext,
17
17
  computeSessionHash,
18
18
  computeUnifiedDiff
19
- } from "./chunk-FAL4WO4V.js";
19
+ } from "./chunk-KETVPTMI.js";
20
20
  import {
21
21
  appendCompactionPrompt
22
- } from "./chunk-JEZN37KV.js";
22
+ } from "./chunk-UAAFZEIS.js";
23
23
  import {
24
24
  hasRecentLLMFailure,
25
25
  interruptLLMRetryWait
26
- } from "./chunk-62GUO2EG.js";
26
+ } from "./chunk-LJX7KXRU.js";
27
27
  import {
28
28
  onProcessEvent
29
29
  } from "./chunk-RV5G7QQU.js";
@@ -1299,7 +1299,7 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1299
1299
  }
1300
1300
  const session = sessionManager.requireSession(sessionId);
1301
1301
  try {
1302
- const { buildCachedPrompt } = await import("./dynamic-context-KTQCAPTK.js");
1302
+ const { buildCachedPrompt } = await import("./dynamic-context-5MQWJTJC.js");
1303
1303
  const allAgents = await import("./registry-Z4GVYFTV.js");
1304
1304
  const agentDef = allAgents.findAgentById(session.mode, await allAgents.loadAllAgentsDefault()) ?? allAgents.findAgentById("planner", await allAgents.loadAllAgentsDefault());
1305
1305
  const modelName = session.providerModel ?? _providerManager?.getCurrentModel();
@@ -1624,4 +1624,4 @@ export {
1624
1624
  signalMcpReady,
1625
1625
  createWebSocketServer
1626
1626
  };
1627
- //# sourceMappingURL=chunk-57UCBFBD.js.map
1627
+ //# sourceMappingURL=chunk-WMAW37GV.js.map