openfox 2.0.57 → 2.0.58

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 (37) hide show
  1. package/dist/{auto-config-F5Y6KAQ6.js → auto-config-T5GR2N6X.js} +20 -1
  2. package/dist/{backend-B23GIKKD.js → backend-P3GHHLHJ.js} +2 -2
  3. package/dist/{chat-handler-QO4XB66I.js → chat-handler-W5D5LKKU.js} +7 -7
  4. package/dist/{chunk-F7M2W46Q.js → chunk-55VITQP3.js} +6 -6
  5. package/dist/{chunk-VZHN46NW.js → chunk-6VDCH5ML.js} +2 -2
  6. package/dist/{chunk-DQCEXCDD.js → chunk-CFLGVCYT.js} +6 -6
  7. package/dist/{chunk-4566MTWM.js → chunk-GJU35MDV.js} +2 -2
  8. package/dist/{chunk-R2QCDYYR.js → chunk-H774GQJW.js} +53 -2
  9. package/dist/{chunk-ZZLCX7YT.js → chunk-JKLPWTUN.js} +2 -2
  10. package/dist/{chunk-AGXBUC4M.js → chunk-LAWUUAN7.js} +9 -9
  11. package/dist/{chunk-UOKVBO67.js → chunk-NVPVDDQZ.js} +2 -2
  12. package/dist/{chunk-5HOP4QF7.js → chunk-UDZNMYWN.js} +40 -35
  13. package/dist/{chunk-WI6HGJ27.js → chunk-XR2XC7WM.js} +3 -3
  14. package/dist/{chunk-PSJON33Y.js → chunk-YHEQTVFV.js} +7 -1
  15. package/dist/{chunk-QQ5XY6BH.js → chunk-YMEZFRY2.js} +12 -2
  16. package/dist/cli/dev.js +1 -1
  17. package/dist/cli/index.js +1 -1
  18. package/dist/{client-Y3ESMMZA.js → client-KRFGMNGN.js} +3 -3
  19. package/dist/{compactor-ZKZYSNMD.js → compactor-Q33AJPCQ.js} +4 -4
  20. package/dist/{config-5ZHFKWOW.js → config-C2YDEF3N.js} +2 -2
  21. package/dist/{orchestrator-YMNKXVDF.js → orchestrator-Q47D6JXG.js} +6 -6
  22. package/dist/package.json +1 -1
  23. package/dist/{processor-2BB65JWR.js → processor-2YJ33KUH.js} +7 -7
  24. package/dist/{protocol-DRe5K6Id.d.ts → protocol-PSKVUhdN.d.ts} +1 -1
  25. package/dist/{provider-V6Q6WJAF.js → provider-SNXYPSPH.js} +6 -6
  26. package/dist/{provider-manager-PR64DEN2.js → provider-manager-ABEUYU3K.js} +4 -4
  27. package/dist/{serve-WFQT6BP6.js → serve-LOPGRMFP.js} +11 -11
  28. package/dist/server/index.d.ts +2 -2
  29. package/dist/server/index.js +10 -10
  30. package/dist/{server-V32ZOVU4.js → server-XUDZRBD3.js} +9 -9
  31. package/dist/shared/index.d.ts +2 -2
  32. package/dist/{tools-L2SMYKJZ.js → tools-YJLXW3QS.js} +5 -5
  33. package/dist/web/assets/{index-CvIUuius.css → index-DjfRXOO7.css} +1 -1
  34. package/dist/web/assets/{index-CRW5qofP.js → index-Dqqp_j-f.js} +71 -71
  35. package/dist/web/index.html +2 -2
  36. package/dist/web/sw.js +1 -1
  37. package/package.json +1 -1
@@ -21,7 +21,7 @@ import {
21
21
  tokenFromPassword,
22
22
  verifyPassword,
23
23
  workflowExists
24
- } from "./chunk-DQCEXCDD.js";
24
+ } from "./chunk-CFLGVCYT.js";
25
25
  import {
26
26
  agentExists,
27
27
  createToolRegistry,
@@ -61,7 +61,7 @@ import {
61
61
  setMcpTools,
62
62
  setNotifyMcpServersChanged,
63
63
  skillExists
64
- } from "./chunk-AGXBUC4M.js";
64
+ } from "./chunk-LAWUUAN7.js";
65
65
  import {
66
66
  getPathSeparator,
67
67
  isAbsolutePath
@@ -82,7 +82,7 @@ import {
82
82
  ALWAYS_ALLOWED,
83
83
  ALWAYS_ALLOWED_FOR_SUBAGENTS,
84
84
  TOP_LEVEL_ONLY_TOOLS
85
- } from "./chunk-VZHN46NW.js";
85
+ } from "./chunk-6VDCH5ML.js";
86
86
  import {
87
87
  createSession,
88
88
  deleteSession,
@@ -116,14 +116,14 @@ import {
116
116
  import {
117
117
  createProviderManager,
118
118
  parseDefaultModelSelection
119
- } from "./chunk-R2QCDYYR.js";
119
+ } from "./chunk-H774GQJW.js";
120
120
  import {
121
121
  detectModel,
122
122
  getLlmStatus
123
123
  } from "./chunk-M3RB4IF6.js";
124
124
  import {
125
125
  getBackendDisplayName
126
- } from "./chunk-PSJON33Y.js";
126
+ } from "./chunk-YHEQTVFV.js";
127
127
  import {
128
128
  buildModelsUrl
129
129
  } from "./chunk-HNCM3D7Y.js";
@@ -3860,7 +3860,7 @@ import { Router as Router7 } from "express";
3860
3860
  import { spawn as spawn2 } from "child_process";
3861
3861
 
3862
3862
  // src/constants.ts
3863
- var VERSION = "2.0.57";
3863
+ var VERSION = "2.0.58";
3864
3864
 
3865
3865
  // src/server/routes/auto-update.ts
3866
3866
  var updateInProgress = false;
@@ -4031,7 +4031,7 @@ async function createServerHandle(config4) {
4031
4031
  const mcpManager = new McpManager({
4032
4032
  onToolsDiscovered: async (name, tools) => {
4033
4033
  try {
4034
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-5ZHFKWOW.js");
4034
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-C2YDEF3N.js");
4035
4035
  const mode = config4.mode ?? "production";
4036
4036
  const globalConfig = await loadGlobalConfig(mode);
4037
4037
  const mcpServers2 = {
@@ -4061,7 +4061,7 @@ async function createServerHandle(config4) {
4061
4061
  setMcpTools(mcpTools);
4062
4062
  logger.info("MCP tools registered", { count: mcpTools.length });
4063
4063
  }
4064
- const { signalMcpReady } = await import("./server-V32ZOVU4.js");
4064
+ const { signalMcpReady } = await import("./server-XUDZRBD3.js");
4065
4065
  signalMcpReady();
4066
4066
  });
4067
4067
  const app = express();
@@ -4254,7 +4254,7 @@ async function createServerHandle(config4) {
4254
4254
  app.get("/api/sessions/:id", async (req, res) => {
4255
4255
  const { getEventStore: getEventStore2 } = await import("./events-52XADT6Y.js");
4256
4256
  const { buildMessagesFromStoredEvents } = await import("./folding-2BGFLV5J.js");
4257
- const { getPendingQuestionsForSession } = await import("./tools-L2SMYKJZ.js");
4257
+ const { getPendingQuestionsForSession } = await import("./tools-YJLXW3QS.js");
4258
4258
  const session = sessionManager.getSession(req.params.id);
4259
4259
  if (!session) {
4260
4260
  return res.status(404).json({ error: "Session not found" });
@@ -4273,8 +4273,8 @@ async function createServerHandle(config4) {
4273
4273
  if (!session) {
4274
4274
  return res.status(404).json({ error: "Session not found" });
4275
4275
  }
4276
- const { stopSessionExecution } = await import("./chat-handler-QO4XB66I.js");
4277
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-L2SMYKJZ.js");
4276
+ const { stopSessionExecution } = await import("./chat-handler-W5D5LKKU.js");
4277
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-YJLXW3QS.js");
4278
4278
  sessionManager.clearMessageQueue(sessionId);
4279
4279
  stopSessionExecution(sessionId, sessionManager);
4280
4280
  abortSession(sessionId);
@@ -4327,7 +4327,7 @@ async function createServerHandle(config4) {
4327
4327
  if (!result.success) {
4328
4328
  return res.status(500).json({ error: result.error ?? "Failed to set default model" });
4329
4329
  }
4330
- const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-5ZHFKWOW.js");
4330
+ const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-C2YDEF3N.js");
4331
4331
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
4332
4332
  const updatedConfig = setDefaultModelSelection(globalConfig, providerId, model);
4333
4333
  await saveGlobalConfig(config4.mode ?? "production", updatedConfig);
@@ -4428,7 +4428,7 @@ async function createServerHandle(config4) {
4428
4428
  if (!callId || approved === void 0) {
4429
4429
  return res.status(400).json({ error: "callId and approved are required" });
4430
4430
  }
4431
- const { providePathConfirmation } = await import("./tools-L2SMYKJZ.js");
4431
+ const { providePathConfirmation } = await import("./tools-YJLXW3QS.js");
4432
4432
  const result = providePathConfirmation(callId, approved, alwaysAllow);
4433
4433
  if (!result.found) {
4434
4434
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -4436,7 +4436,7 @@ async function createServerHandle(config4) {
4436
4436
  const { getEventStore: getEventStore2 } = await import("./events-52XADT6Y.js");
4437
4437
  const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-2BGFLV5J.js");
4438
4438
  const { createSessionStateMessage } = await import("./protocol-CTNE3ANP.js");
4439
- const { getPendingQuestionsForSession } = await import("./tools-L2SMYKJZ.js");
4439
+ const { getPendingQuestionsForSession } = await import("./tools-YJLXW3QS.js");
4440
4440
  const eventStore = getEventStore2();
4441
4441
  const events = eventStore.getEvents(sessionId);
4442
4442
  const messages = buildMessagesFromStoredEvents(events);
@@ -4457,7 +4457,7 @@ async function createServerHandle(config4) {
4457
4457
  if (!skip && typeof answer !== "string") {
4458
4458
  return res.status(400).json({ error: "answer is required when not skipping" });
4459
4459
  }
4460
- const { provideAnswer } = await import("./tools-L2SMYKJZ.js");
4460
+ const { provideAnswer } = await import("./tools-YJLXW3QS.js");
4461
4461
  const found = provideAnswer(callId, answer ?? "", skip ?? false);
4462
4462
  if (!found) {
4463
4463
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -4517,7 +4517,7 @@ async function createServerHandle(config4) {
4517
4517
  backend: activeProvider?.backend ?? llmClient.getBackend(),
4518
4518
  model: llmClient.getModel()
4519
4519
  };
4520
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-YMNKXVDF.js");
4520
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-Q47D6JXG.js");
4521
4521
  runAgentTurn(
4522
4522
  {
4523
4523
  sessionManager,
@@ -4555,8 +4555,8 @@ async function createServerHandle(config4) {
4555
4555
  if (!session) {
4556
4556
  return res.status(404).json({ error: "Session not found" });
4557
4557
  }
4558
- const { stopSessionExecution } = await import("./chat-handler-QO4XB66I.js");
4559
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-L2SMYKJZ.js");
4558
+ const { stopSessionExecution } = await import("./chat-handler-W5D5LKKU.js");
4559
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-YJLXW3QS.js");
4560
4560
  const queuedMessages = sessionManager.getQueueState(sessionId);
4561
4561
  sessionManager.clearMessageQueue(sessionId);
4562
4562
  stopSessionExecution(sessionId, sessionManager);
@@ -4676,7 +4676,7 @@ async function createServerHandle(config4) {
4676
4676
  let visionFallback;
4677
4677
  let globalWorkdir;
4678
4678
  try {
4679
- const { loadGlobalConfig, getVisionFallback } = await import("./config-5ZHFKWOW.js");
4679
+ const { loadGlobalConfig, getVisionFallback } = await import("./config-C2YDEF3N.js");
4680
4680
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
4681
4681
  const fallback = getVisionFallback(globalConfig);
4682
4682
  if (fallback) {
@@ -4772,11 +4772,16 @@ async function createServerHandle(config4) {
4772
4772
  app.get("/api/providers/models", async (req, res) => {
4773
4773
  const url = req.query["url"];
4774
4774
  const apiKey = req.query["apiKey"];
4775
+ const backend = req.query["backend"];
4775
4776
  if (!url) return res.status(400).json({ error: "url is required" });
4776
4777
  try {
4777
- const { fetchModelsWithContext } = await import("./provider-manager-PR64DEN2.js");
4778
+ const { fetchModelsWithContext } = await import("./provider-manager-ABEUYU3K.js");
4778
4779
  const { getModelProfile: getModelProfile2 } = await import("./profiles-5J7F4BML.js");
4779
- const models = await fetchModelsWithContext(url, apiKey);
4780
+ const models = await fetchModelsWithContext(
4781
+ url,
4782
+ apiKey,
4783
+ backend
4784
+ );
4780
4785
  if (models.length === 0) {
4781
4786
  return res.status(404).json({ error: `No models found at ${buildModelsUrl(url)}`, url });
4782
4787
  }
@@ -4806,7 +4811,7 @@ async function createServerHandle(config4) {
4806
4811
  if (!url) return res.status(400).json({ error: "url is required" });
4807
4812
  if (!models?.length) return res.status(400).json({ error: "models is required" });
4808
4813
  try {
4809
- const { autoConfig } = await import("./auto-config-F5Y6KAQ6.js");
4814
+ const { autoConfig } = await import("./auto-config-T5GR2N6X.js");
4810
4815
  const result = await autoConfig({
4811
4816
  url,
4812
4817
  ...apiKey ? { apiKey } : {},
@@ -4825,7 +4830,7 @@ async function createServerHandle(config4) {
4825
4830
  if (!mode) return res.status(400).json({ error: "mode is required" });
4826
4831
  try {
4827
4832
  const { getModelProfile: getModelProfile2 } = await import("./profiles-5J7F4BML.js");
4828
- const { getBackendCapabilities } = await import("./backend-B23GIKKD.js");
4833
+ const { getBackendCapabilities } = await import("./backend-P3GHHLHJ.js");
4829
4834
  const { buildNonStreamingCreateParams } = await import("./client-pure-DO3S675T.js");
4830
4835
  const { OpenAIHttpClient } = await import("./http-client-PIWB7BXK.js");
4831
4836
  const { ensureVersionPrefix } = await import("./url-utils-SAJP7AEX.js");
@@ -4894,7 +4899,7 @@ async function createServerHandle(config4) {
4894
4899
  return res.status(400).json({ error: "name, url, and backend are required" });
4895
4900
  }
4896
4901
  try {
4897
- const { loadGlobalConfig, saveGlobalConfig, addProvider, setDefaultModelSelection } = await import("./config-5ZHFKWOW.js");
4902
+ const { loadGlobalConfig, saveGlobalConfig, addProvider, setDefaultModelSelection } = await import("./config-C2YDEF3N.js");
4898
4903
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
4899
4904
  const providerBackend = backend;
4900
4905
  const providerModels = modelConfigs?.length ? buildModelConfigs(modelConfigs) : model ? [{ id: model, contextWindow: 2e5, source: "user" }] : [];
@@ -4932,7 +4937,7 @@ async function createServerHandle(config4) {
4932
4937
  app.post("/api/init/config", async (req, res) => {
4933
4938
  const { workdir, visionFallback } = req.body;
4934
4939
  try {
4935
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-5ZHFKWOW.js");
4940
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-C2YDEF3N.js");
4936
4941
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
4937
4942
  const updatedConfig = {
4938
4943
  ...globalConfig,
@@ -4960,7 +4965,7 @@ async function createServerHandle(config4) {
4960
4965
  });
4961
4966
  app.delete("/api/providers/:id", async (req, res) => {
4962
4967
  const { id } = req.params;
4963
- const { loadGlobalConfig, saveGlobalConfig, removeProvider } = await import("./config-5ZHFKWOW.js");
4968
+ const { loadGlobalConfig, saveGlobalConfig, removeProvider } = await import("./config-C2YDEF3N.js");
4964
4969
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
4965
4970
  const updatedConfig = removeProvider(globalConfig, id);
4966
4971
  await saveGlobalConfig(config4.mode ?? "production", updatedConfig);
@@ -4972,7 +4977,7 @@ async function createServerHandle(config4) {
4972
4977
  const { id } = req.params;
4973
4978
  const { isLocal } = req.body;
4974
4979
  try {
4975
- const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-5ZHFKWOW.js");
4980
+ const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-C2YDEF3N.js");
4976
4981
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
4977
4982
  const provider = globalConfig.providers.find((p) => p.id === id);
4978
4983
  if (!provider) {
@@ -5001,7 +5006,7 @@ async function createServerHandle(config4) {
5001
5006
  models: modelConfigs
5002
5007
  } = req.body;
5003
5008
  try {
5004
- const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-5ZHFKWOW.js");
5009
+ const { loadGlobalConfig, saveGlobalConfig, updateProvider } = await import("./config-C2YDEF3N.js");
5005
5010
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
5006
5011
  const provider = globalConfig.providers.find((p) => p.id === id);
5007
5012
  if (!provider) {
@@ -5039,7 +5044,7 @@ async function createServerHandle(config4) {
5039
5044
  return res.status(400).json({ error: result.error });
5040
5045
  }
5041
5046
  const llmClient = getLLMClient();
5042
- const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-5ZHFKWOW.js");
5047
+ const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-C2YDEF3N.js");
5043
5048
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
5044
5049
  const updatedConfig = setDefaultModelSelection(globalConfig, id, llmClient.getModel());
5045
5050
  await saveGlobalConfig(config4.mode ?? "production", updatedConfig);
@@ -5066,7 +5071,7 @@ async function createServerHandle(config4) {
5066
5071
  });
5067
5072
  async function rebuildMcpTools() {
5068
5073
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-MOGEI6TP.js");
5069
- const { setMcpTools: setMcpTools2 } = await import("./tools-L2SMYKJZ.js");
5074
+ const { setMcpTools: setMcpTools2 } = await import("./tools-YJLXW3QS.js");
5070
5075
  const mcpTools = createMcpTools2(mcpManager);
5071
5076
  setMcpTools2(mcpTools);
5072
5077
  }
@@ -5128,7 +5133,7 @@ async function createServerHandle(config4) {
5128
5133
  };
5129
5134
  await mcpManager.addServer(name, serverCfg);
5130
5135
  const server = mcpManager.getServer(name);
5131
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-5ZHFKWOW.js");
5136
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-C2YDEF3N.js");
5132
5137
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
5133
5138
  const updatedMcpServers = { ...globalConfig.mcpServers ?? {}, [name]: serverCfg };
5134
5139
  await saveGlobalConfig(config4.mode ?? "production", {
@@ -5154,7 +5159,7 @@ async function createServerHandle(config4) {
5154
5159
  return res.status(404).json({ error: `MCP server '${name}' not found` });
5155
5160
  }
5156
5161
  mcpManager.removeServer(name);
5157
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-5ZHFKWOW.js");
5162
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-C2YDEF3N.js");
5158
5163
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
5159
5164
  const updatedMcpServers = { ...globalConfig.mcpServers ?? {} };
5160
5165
  delete updatedMcpServers[name];
@@ -5179,7 +5184,7 @@ async function createServerHandle(config4) {
5179
5184
  await mcpManager.setToolEnabled(name, toolName, enabled);
5180
5185
  const server = mcpManager.getServer(name);
5181
5186
  if (server) {
5182
- const { loadGlobalConfig, saveGlobalConfig } = await import("./config-5ZHFKWOW.js");
5187
+ const { loadGlobalConfig, saveGlobalConfig } = await import("./config-C2YDEF3N.js");
5183
5188
  const globalConfig = await loadGlobalConfig(config4.mode ?? "production");
5184
5189
  const mcpServers2 = { ...globalConfig.mcpServers ?? {} };
5185
5190
  const serverCfg = mcpServers2[name];
@@ -5374,7 +5379,7 @@ async function createServerHandle(config4) {
5374
5379
  const state = sessionManager.getContextState(sessionId);
5375
5380
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
5376
5381
  });
5377
- const { QueueProcessor } = await import("./processor-2BB65JWR.js");
5382
+ const { QueueProcessor } = await import("./processor-2YJ33KUH.js");
5378
5383
  const queueProcessor = new QueueProcessor({
5379
5384
  sessionManager,
5380
5385
  providerManager,
@@ -5449,4 +5454,4 @@ export {
5449
5454
  createServerHandle,
5450
5455
  createServer
5451
5456
  };
5452
- //# sourceMappingURL=chunk-5HOP4QF7.js.map
5457
+ //# sourceMappingURL=chunk-UDZNMYWN.js.map
@@ -12,7 +12,7 @@ import {
12
12
  loadAllAgentsDefault,
13
13
  processEventsForConversation,
14
14
  runTopLevelAgentLoop
15
- } from "./chunk-AGXBUC4M.js";
15
+ } from "./chunk-LAWUUAN7.js";
16
16
  import {
17
17
  TurnMetrics,
18
18
  WORKFLOW_KICKOFF_PROMPT,
@@ -20,7 +20,7 @@ import {
20
20
  buildAgentSmallReminder,
21
21
  createChatDoneEvent,
22
22
  createMessageStartEvent
23
- } from "./chunk-VZHN46NW.js";
23
+ } from "./chunk-6VDCH5ML.js";
24
24
  import {
25
25
  getCurrentContextWindowId,
26
26
  getCurrentWindowMessageOptions,
@@ -324,4 +324,4 @@ export {
324
324
  runAgentTurn,
325
325
  injectWorkflowKickoffIfNeeded
326
326
  };
327
- //# sourceMappingURL=chunk-WI6HGJ27.js.map
327
+ //# sourceMappingURL=chunk-XR2XC7WM.js.map
@@ -24,6 +24,10 @@ var BACKEND_CAPABILITIES = {
24
24
  supportsChatTemplateKwargs: false,
25
25
  supportsTopK: true
26
26
  },
27
+ lmstudio: {
28
+ supportsChatTemplateKwargs: false,
29
+ supportsTopK: true
30
+ },
27
31
  "opencode-go": {
28
32
  supportsChatTemplateKwargs: false,
29
33
  supportsTopK: true
@@ -46,6 +50,8 @@ function getBackendDisplayName(backend) {
46
50
  return "Ollama";
47
51
  case "llamacpp":
48
52
  return "llama.cpp";
53
+ case "lmstudio":
54
+ return "LM Studio";
49
55
  case "opencode-go":
50
56
  return "OpenCode Go";
51
57
  case "openai":
@@ -61,4 +67,4 @@ export {
61
67
  getBackendCapabilities,
62
68
  getBackendDisplayName
63
69
  };
64
- //# sourceMappingURL=chunk-PSJON33Y.js.map
70
+ //# sourceMappingURL=chunk-YHEQTVFV.js.map
@@ -16,7 +16,17 @@ async function configFileExists(mode) {
16
16
  return false;
17
17
  }
18
18
  }
19
- var backendSchema = z.enum(["vllm", "sglang", "ollama", "llamacpp", "openai", "anthropic", "opencode-go", "unknown"]);
19
+ var backendSchema = z.enum([
20
+ "vllm",
21
+ "sglang",
22
+ "ollama",
23
+ "llamacpp",
24
+ "lmstudio",
25
+ "openai",
26
+ "anthropic",
27
+ "opencode-go",
28
+ "unknown"
29
+ ]);
20
30
  var modelConfigSchema = z.object({
21
31
  id: z.string(),
22
32
  contextWindow: z.number(),
@@ -281,4 +291,4 @@ export {
281
291
  removeProvider,
282
292
  activateProvider
283
293
  };
284
- //# sourceMappingURL=chunk-QQ5XY6BH.js.map
294
+ //# sourceMappingURL=chunk-YMEZFRY2.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-F7M2W46Q.js";
4
+ } from "../chunk-55VITQP3.js";
5
5
  import "../chunk-XY3LESVZ.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-F7M2W46Q.js";
4
+ } from "../chunk-55VITQP3.js";
5
5
  import "../chunk-XY3LESVZ.js";
6
6
  import {
7
7
  logger
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createLLMClient
3
- } from "./chunk-ZZLCX7YT.js";
4
- import "./chunk-PSJON33Y.js";
3
+ } from "./chunk-JKLPWTUN.js";
4
+ import "./chunk-YHEQTVFV.js";
5
5
  import "./chunk-HNCM3D7Y.js";
6
6
  import "./chunk-Z6W4YHJB.js";
7
7
  import "./chunk-ZO5EXQMG.js";
@@ -11,4 +11,4 @@ import "./chunk-5WRI5ZAA.js";
11
11
  export {
12
12
  createLLMClient
13
13
  };
14
- //# sourceMappingURL=client-Y3ESMMZA.js.map
14
+ //# sourceMappingURL=client-KRFGMNGN.js.map
@@ -2,13 +2,13 @@ import {
2
2
  appendCompactionPrompt,
3
3
  getCompactionTarget,
4
4
  shouldCompact
5
- } from "./chunk-4566MTWM.js";
6
- import "./chunk-VZHN46NW.js";
5
+ } from "./chunk-GJU35MDV.js";
6
+ import "./chunk-6VDCH5ML.js";
7
7
  import "./chunk-AIJE3RYH.js";
8
8
  import "./chunk-TMUBLQFC.js";
9
9
  import "./chunk-ZPIZLTWU.js";
10
10
  import "./chunk-J2GP3J3X.js";
11
- import "./chunk-PSJON33Y.js";
11
+ import "./chunk-YHEQTVFV.js";
12
12
  import "./chunk-Z6W4YHJB.js";
13
13
  import "./chunk-K44MW7JJ.js";
14
14
  import "./chunk-V4IE7HJY.js";
@@ -18,4 +18,4 @@ export {
18
18
  getCompactionTarget,
19
19
  shouldCompact
20
20
  };
21
- //# sourceMappingURL=compactor-ZKZYSNMD.js.map
21
+ //# sourceMappingURL=compactor-Q33AJPCQ.js.map
@@ -11,7 +11,7 @@ import {
11
11
  saveGlobalConfig,
12
12
  setDefaultModelSelection,
13
13
  updateProvider
14
- } from "./chunk-QQ5XY6BH.js";
14
+ } from "./chunk-YMEZFRY2.js";
15
15
  import "./chunk-CQGTEGKL.js";
16
16
  import "./chunk-5WRI5ZAA.js";
17
17
  export {
@@ -28,4 +28,4 @@ export {
28
28
  setDefaultModelSelection,
29
29
  updateProvider
30
30
  };
31
- //# sourceMappingURL=config-5ZHFKWOW.js.map
31
+ //# sourceMappingURL=config-C2YDEF3N.js.map
@@ -2,8 +2,8 @@ import {
2
2
  injectWorkflowKickoffIfNeeded,
3
3
  runAgentTurn,
4
4
  runChatTurn
5
- } from "./chunk-WI6HGJ27.js";
6
- import "./chunk-AGXBUC4M.js";
5
+ } from "./chunk-XR2XC7WM.js";
6
+ import "./chunk-LAWUUAN7.js";
7
7
  import "./chunk-LBGHZLLH.js";
8
8
  import "./chunk-BIWVYBIE.js";
9
9
  import "./chunk-ADOXTORQ.js";
@@ -19,16 +19,16 @@ import {
19
19
  createMessageStartEvent,
20
20
  createToolCallEvent,
21
21
  createToolResultEvent
22
- } from "./chunk-VZHN46NW.js";
22
+ } from "./chunk-6VDCH5ML.js";
23
23
  import "./chunk-AIJE3RYH.js";
24
24
  import "./chunk-TMUBLQFC.js";
25
25
  import "./chunk-ZPIZLTWU.js";
26
26
  import "./chunk-J2GP3J3X.js";
27
- import "./chunk-PSJON33Y.js";
27
+ import "./chunk-YHEQTVFV.js";
28
28
  import "./chunk-Z6W4YHJB.js";
29
29
  import "./chunk-K44MW7JJ.js";
30
30
  import "./chunk-YD6NDTKF.js";
31
- import "./chunk-QQ5XY6BH.js";
31
+ import "./chunk-YMEZFRY2.js";
32
32
  import "./chunk-CQGTEGKL.js";
33
33
  import "./chunk-V4IE7HJY.js";
34
34
  import "./chunk-5WRI5ZAA.js";
@@ -43,4 +43,4 @@ export {
43
43
  runAgentTurn,
44
44
  runChatTurn
45
45
  };
46
- //# sourceMappingURL=orchestrator-YMNKXVDF.js.map
46
+ //# sourceMappingURL=orchestrator-Q47D6JXG.js.map
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "2.0.57",
3
+ "version": "2.0.58",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -2,8 +2,8 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-UOKVBO67.js";
6
- import "./chunk-AGXBUC4M.js";
5
+ } from "./chunk-NVPVDDQZ.js";
6
+ import "./chunk-LAWUUAN7.js";
7
7
  import "./chunk-LBGHZLLH.js";
8
8
  import "./chunk-BIWVYBIE.js";
9
9
  import "./chunk-ADOXTORQ.js";
@@ -15,20 +15,20 @@ import {
15
15
  import "./chunk-EU3WWTFH.js";
16
16
  import "./chunk-CDRQJDSJ.js";
17
17
  import "./chunk-YQ3SOPBI.js";
18
- import "./chunk-VZHN46NW.js";
18
+ import "./chunk-6VDCH5ML.js";
19
19
  import {
20
20
  getEventStore
21
21
  } from "./chunk-AIJE3RYH.js";
22
22
  import "./chunk-TMUBLQFC.js";
23
23
  import "./chunk-ZPIZLTWU.js";
24
24
  import "./chunk-J2GP3J3X.js";
25
- import "./chunk-PSJON33Y.js";
25
+ import "./chunk-YHEQTVFV.js";
26
26
  import "./chunk-Z6W4YHJB.js";
27
27
  import {
28
28
  logger
29
29
  } from "./chunk-K44MW7JJ.js";
30
30
  import "./chunk-YD6NDTKF.js";
31
- import "./chunk-QQ5XY6BH.js";
31
+ import "./chunk-YMEZFRY2.js";
32
32
  import "./chunk-CQGTEGKL.js";
33
33
  import "./chunk-V4IE7HJY.js";
34
34
  import "./chunk-5WRI5ZAA.js";
@@ -174,7 +174,7 @@ var QueueProcessor = class {
174
174
  backend: provider?.backend ?? llmClient.getBackend(),
175
175
  model: llmClient.getModel()
176
176
  };
177
- const { runChatTurn } = await import("./orchestrator-YMNKXVDF.js");
177
+ const { runChatTurn } = await import("./orchestrator-Q47D6JXG.js");
178
178
  const runChatTurnParams = buildRunChatTurnParams({
179
179
  sessionManager,
180
180
  sessionId,
@@ -222,4 +222,4 @@ var QueueProcessor = class {
222
222
  export {
223
223
  QueueProcessor
224
224
  };
225
- //# sourceMappingURL=processor-2BB65JWR.js.map
225
+ //# sourceMappingURL=processor-2YJ33KUH.js.map
@@ -394,7 +394,7 @@ interface Diagnostic {
394
394
  code?: string | number;
395
395
  }
396
396
  /** Supported LLM inference backends */
397
- type LlmBackend = 'vllm' | 'sglang' | 'ollama' | 'llamacpp' | 'opencode-go' | 'unknown';
397
+ type LlmBackend = 'vllm' | 'sglang' | 'ollama' | 'llamacpp' | 'lmstudio' | 'opencode-go' | 'unknown';
398
398
  /** Extended backend type including cloud providers */
399
399
  type ProviderBackend = LlmBackend | 'openai' | 'anthropic';
400
400
  /** Model configuration with context window */
@@ -10,13 +10,13 @@ import {
10
10
  } from "./chunk-XY3LESVZ.js";
11
11
  import {
12
12
  fetchAvailableModelsFromBackend
13
- } from "./chunk-R2QCDYYR.js";
13
+ } from "./chunk-H774GQJW.js";
14
14
  import {
15
15
  detectModel
16
16
  } from "./chunk-M3RB4IF6.js";
17
17
  import "./chunk-J2GP3J3X.js";
18
- import "./chunk-ZZLCX7YT.js";
19
- import "./chunk-PSJON33Y.js";
18
+ import "./chunk-JKLPWTUN.js";
19
+ import "./chunk-YHEQTVFV.js";
20
20
  import "./chunk-HNCM3D7Y.js";
21
21
  import "./chunk-Z6W4YHJB.js";
22
22
  import "./chunk-ZO5EXQMG.js";
@@ -28,7 +28,7 @@ import {
28
28
  loadGlobalConfig,
29
29
  removeProvider,
30
30
  saveGlobalConfig
31
- } from "./chunk-QQ5XY6BH.js";
31
+ } from "./chunk-YMEZFRY2.js";
32
32
  import "./chunk-CQGTEGKL.js";
33
33
  import "./chunk-V4IE7HJY.js";
34
34
  import "./chunk-5WRI5ZAA.js";
@@ -270,7 +270,7 @@ async function runProviderAdd(mode) {
270
270
  isActive: makeActive
271
271
  });
272
272
  if (makeActive) {
273
- const { setDefaultModelSelection } = await import("./config-5ZHFKWOW.js");
273
+ const { setDefaultModelSelection } = await import("./config-C2YDEF3N.js");
274
274
  newConfig = setDefaultModelSelection(
275
275
  newConfig,
276
276
  newConfig.providers[newConfig.providers.length - 1].id,
@@ -398,4 +398,4 @@ export {
398
398
  runProviderRemove,
399
399
  runProviderUse
400
400
  };
401
- //# sourceMappingURL=provider-V6Q6WJAF.js.map
401
+ //# sourceMappingURL=provider-SNXYPSPH.js.map
@@ -3,11 +3,11 @@ import {
3
3
  fetchAvailableModelsFromBackend,
4
4
  fetchModelsWithContext,
5
5
  parseDefaultModelSelection
6
- } from "./chunk-R2QCDYYR.js";
6
+ } from "./chunk-H774GQJW.js";
7
7
  import "./chunk-M3RB4IF6.js";
8
8
  import "./chunk-J2GP3J3X.js";
9
- import "./chunk-ZZLCX7YT.js";
10
- import "./chunk-PSJON33Y.js";
9
+ import "./chunk-JKLPWTUN.js";
10
+ import "./chunk-YHEQTVFV.js";
11
11
  import "./chunk-HNCM3D7Y.js";
12
12
  import "./chunk-Z6W4YHJB.js";
13
13
  import "./chunk-ZO5EXQMG.js";
@@ -20,4 +20,4 @@ export {
20
20
  fetchModelsWithContext,
21
21
  parseDefaultModelSelection
22
22
  };
23
- //# sourceMappingURL=provider-manager-PR64DEN2.js.map
23
+ //# sourceMappingURL=provider-manager-ABEUYU3K.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  VERSION,
3
3
  createServer
4
- } from "./chunk-5HOP4QF7.js";
5
- import "./chunk-DQCEXCDD.js";
6
- import "./chunk-WI6HGJ27.js";
7
- import "./chunk-AGXBUC4M.js";
4
+ } from "./chunk-UDZNMYWN.js";
5
+ import "./chunk-CFLGVCYT.js";
6
+ import "./chunk-XR2XC7WM.js";
7
+ import "./chunk-LAWUUAN7.js";
8
8
  import "./chunk-LBGHZLLH.js";
9
9
  import "./chunk-BIWVYBIE.js";
10
10
  import "./chunk-ADOXTORQ.js";
@@ -13,18 +13,18 @@ import "./chunk-F4PMNP7S.js";
13
13
  import "./chunk-EU3WWTFH.js";
14
14
  import "./chunk-CDRQJDSJ.js";
15
15
  import "./chunk-YQ3SOPBI.js";
16
- import "./chunk-4566MTWM.js";
17
- import "./chunk-VZHN46NW.js";
16
+ import "./chunk-GJU35MDV.js";
17
+ import "./chunk-6VDCH5ML.js";
18
18
  import {
19
19
  loadConfig
20
20
  } from "./chunk-AIJE3RYH.js";
21
21
  import "./chunk-TMUBLQFC.js";
22
22
  import "./chunk-ZPIZLTWU.js";
23
- import "./chunk-R2QCDYYR.js";
23
+ import "./chunk-H774GQJW.js";
24
24
  import "./chunk-M3RB4IF6.js";
25
25
  import "./chunk-J2GP3J3X.js";
26
- import "./chunk-ZZLCX7YT.js";
27
- import "./chunk-PSJON33Y.js";
26
+ import "./chunk-JKLPWTUN.js";
27
+ import "./chunk-YHEQTVFV.js";
28
28
  import "./chunk-HNCM3D7Y.js";
29
29
  import "./chunk-Z6W4YHJB.js";
30
30
  import "./chunk-ZO5EXQMG.js";
@@ -37,7 +37,7 @@ import {
37
37
  getActiveProvider,
38
38
  getDefaultModel,
39
39
  loadGlobalConfig
40
- } from "./chunk-QQ5XY6BH.js";
40
+ } from "./chunk-YMEZFRY2.js";
41
41
  import {
42
42
  ensureDataDirExists,
43
43
  getDatabasePath,
@@ -205,4 +205,4 @@ async function runServe(options) {
205
205
  export {
206
206
  runServe
207
207
  };
208
- //# sourceMappingURL=serve-WFQT6BP6.js.map
208
+ //# sourceMappingURL=serve-LOPGRMFP.js.map