openfox 2.0.139 → 2.0.140

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 (49) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/CHANGELOG.md +17 -0
  3. package/dist/{backend-24FTDSHF.js → backend-EPISSWLB.js} +2 -2
  4. package/dist/{chat-handler-KGITQAXC.js → chat-handler-JWRCPG72.js} +11 -11
  5. package/dist/{chunk-CXB4HJAM.js → chunk-5EKBZXCU.js} +2 -2
  6. package/dist/{chunk-TG65PHHY.js → chunk-5F7LNEEP.js} +2 -2
  7. package/dist/{chunk-N4RAVCLZ.js → chunk-5MGCTRKM.js} +9 -7
  8. package/dist/{chunk-EGF3PREY.js → chunk-66XJC5TA.js} +6 -6
  9. package/dist/chunk-6RYTDRUR.js +7 -0
  10. package/dist/{chunk-LSO3IGJ4.js → chunk-EE6VFEE6.js} +2 -2
  11. package/dist/{chunk-AM5FAZJK.js → chunk-GZJRXVVJ.js} +5 -5
  12. package/dist/{chunk-EJ5GFSD4.js → chunk-H7YL7PH3.js} +8 -4
  13. package/dist/{chunk-TVSIWRKE.js → chunk-IFARTQOK.js} +10 -10
  14. package/dist/{chunk-YIEIVHCQ.js → chunk-K227HOLU.js} +3 -2
  15. package/dist/{chunk-HEYU7FAY.js → chunk-OA7KBQ2O.js} +7 -5
  16. package/dist/{chunk-C543DUKL.js → chunk-QIGVYXMH.js} +37 -37
  17. package/dist/{chunk-VCLAPTWM.js → chunk-SSHXYKW3.js} +34 -9
  18. package/dist/{chunk-22DV5XO7.js → chunk-TJOKDC34.js} +2 -2
  19. package/dist/{chunk-AKWJMMEJ.js → chunk-VLQ6BMU7.js} +7 -2
  20. package/dist/{chunk-EXQI5TVW.js → chunk-WD354R3H.js} +4 -4
  21. package/dist/cli/dev.js +1 -1
  22. package/dist/cli/index.js +1 -1
  23. package/dist/{client-6KC6SP2U.js → client-KJS7QIIV.js} +4 -4
  24. package/dist/{compactor-T7S4DIR3.js → compactor-UREBHSZQ.js} +4 -4
  25. package/dist/{dynamic-context-3MAA4AQR.js → dynamic-context-KGSZ7TRQ.js} +2 -2
  26. package/dist/{export-import-ZJFYZJOP.js → export-import-CJT33IO6.js} +2 -2
  27. package/dist/{http-client-VMRQHMF7.js → http-client-JVJ43TBY.js} +2 -2
  28. package/dist/{launch-73LDMGCT.js → launch-7NKOCT5A.js} +11 -11
  29. package/dist/{orchestrator-MMHV6SZY.js → orchestrator-VSVDUGBT.js} +10 -10
  30. package/dist/package.json +1 -1
  31. package/dist/{processor-2M7N26QG.js → processor-ACZM62WO.js} +10 -10
  32. package/dist/provider/index.d.ts +2 -2
  33. package/dist/{provider-MEENS4SB.js → provider-7LNTLWRB.js} +5 -5
  34. package/dist/{provider-manager-3MV7KDAD.js → provider-manager-TV5I5YJH.js} +5 -5
  35. package/dist/{serve-FN5XKUTC.js → serve-36D5HXWE.js} +16 -16
  36. package/dist/server/index.d.ts +1 -1
  37. package/dist/server/index.js +15 -15
  38. package/dist/{server-B4AJ7ETE.js → server-R3J26IP2.js} +14 -14
  39. package/dist/{service-JL55SFPL.js → service-7QKWUNU4.js} +6 -6
  40. package/dist/{tasks-ZMJCHW7E.js → tasks-E7EG7344.js} +6 -6
  41. package/dist/{tools-LZHSSSK4.js → tools-AY6XEVJK.js} +8 -8
  42. package/dist/{types-CmiWoQ7p.d.ts → types-ofYNpiqi.d.ts} +2 -0
  43. package/dist/{update-L2XK6UDC.js → update-JHFZMW3T.js} +2 -2
  44. package/dist/web/assets/{index-dJREs6rO.js → index-Bm0_ekvt.js} +82 -82
  45. package/dist/web/assets/{index-D3bx1-1j.css → index-BtkaULxJ.css} +1 -1
  46. package/dist/web/index.html +6 -3
  47. package/dist/web/sw.js +1 -1
  48. package/package.json +1 -1
  49. package/dist/chunk-Z7MGLDLK.js +0 -7
@@ -9,7 +9,7 @@ import {
9
9
  terminalManager,
10
10
  tokenFromPassword,
11
11
  verifyPassword
12
- } from "./chunk-TVSIWRKE.js";
12
+ } from "./chunk-IFARTQOK.js";
13
13
  import {
14
14
  projectSessionStatus
15
15
  } from "./chunk-T3S5MTMD.js";
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-IJ53Y77N.js";
28
28
  import {
29
29
  TEMPLATE_VARIABLES
30
- } from "./chunk-EGF3PREY.js";
30
+ } from "./chunk-66XJC5TA.js";
31
31
  import {
32
32
  createToolRegistry,
33
33
  devServerManager,
@@ -42,7 +42,7 @@ import {
42
42
  setMcpManagerForTools,
43
43
  setMcpTools,
44
44
  setNotifyMcpServersChanged
45
- } from "./chunk-N4RAVCLZ.js";
45
+ } from "./chunk-5MGCTRKM.js";
46
46
  import {
47
47
  deleteOwnedSkill,
48
48
  deleteProjectSkill,
@@ -106,7 +106,7 @@ import {
106
106
  saveWorkflow,
107
107
  saveWorkflowToProject,
108
108
  workflowExists
109
- } from "./chunk-22DV5XO7.js";
109
+ } from "./chunk-TJOKDC34.js";
110
110
  import {
111
111
  clearSessionOverrides,
112
112
  computeDisabledServersForProject,
@@ -216,13 +216,13 @@ import {
216
216
  detectModel,
217
217
  getLlmStatus,
218
218
  parseDefaultModelSelection
219
- } from "./chunk-EJ5GFSD4.js";
219
+ } from "./chunk-H7YL7PH3.js";
220
220
  import {
221
221
  buildOpenFoxMcpBootstrap
222
222
  } from "./chunk-YNMP647F.js";
223
223
  import {
224
224
  VERSION
225
- } from "./chunk-Z7MGLDLK.js";
225
+ } from "./chunk-6RYTDRUR.js";
226
226
  import {
227
227
  deleteProject,
228
228
  getProject,
@@ -235,7 +235,7 @@ import {
235
235
  import {
236
236
  detectBackendFromUrl,
237
237
  getBackendDisplayName
238
- } from "./chunk-AKWJMMEJ.js";
238
+ } from "./chunk-VLQ6BMU7.js";
239
239
  import {
240
240
  buildModelsUrl
241
241
  } from "./chunk-HNCM3D7Y.js";
@@ -245,7 +245,7 @@ import {
245
245
  import {
246
246
  SessionNotFoundError,
247
247
  WorkspaceInUseError
248
- } from "./chunk-LSO3IGJ4.js";
248
+ } from "./chunk-EE6VFEE6.js";
249
249
  import {
250
250
  deleteSetting,
251
251
  getSetting,
@@ -3145,8 +3145,8 @@ var SessionManager = class {
3145
3145
  * @throws Error for invalid payloads or unknown project
3146
3146
  */
3147
3147
  async importSession(projectId, rawPayload) {
3148
- const { parseSessionExport, IMPORTED_SESSION_REMINDER, SESSION_EXPORT_VERSION } = await import("./export-import-ZJFYZJOP.js");
3149
- const { injectContextDriftReminders, getToolSetFingerprint } = await import("./dynamic-context-3MAA4AQR.js");
3148
+ const { parseSessionExport, IMPORTED_SESSION_REMINDER, SESSION_EXPORT_VERSION } = await import("./export-import-CJT33IO6.js");
3149
+ const { injectContextDriftReminders, getToolSetFingerprint } = await import("./dynamic-context-KGSZ7TRQ.js");
3150
3150
  const { loadAllAgentsDefault: loadAllAgentsDefault2, resolveDefaultAgentId } = await import("./registry-PVJAAL2Y.js");
3151
3151
  const payload = parseSessionExport(rawPayload);
3152
3152
  if (payload.version !== SESSION_EXPORT_VERSION) {
@@ -7246,7 +7246,7 @@ function detectWsl() {
7246
7246
  // src/server/index.ts
7247
7247
  var __dirname3 = dirname7(fileURLToPath6(import.meta.url));
7248
7248
  async function announceContextDrift(sessionManager, sessionIds) {
7249
- const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-3MAA4AQR.js");
7249
+ const { injectContextDriftRemindersForSessions } = await import("./dynamic-context-KGSZ7TRQ.js");
7250
7250
  await injectContextDriftRemindersForSessions(sessionManager, sessionIds);
7251
7251
  }
7252
7252
  async function createServerHandle(config3) {
@@ -7361,7 +7361,7 @@ async function createServerHandle(config3) {
7361
7361
  toolRegistry = createToolRegistry();
7362
7362
  logger.info("MCP tools registered", { count: mcpTools.length });
7363
7363
  }
7364
- const { signalMcpReady } = await import("./server-B4AJ7ETE.js");
7364
+ const { signalMcpReady } = await import("./server-R3J26IP2.js");
7365
7365
  signalMcpReady();
7366
7366
  });
7367
7367
  const app = express();
@@ -7576,9 +7576,9 @@ async function createServerHandle(config3) {
7576
7576
  const sessionFavoriteRouter = express.Router();
7577
7577
  registerSessionFavoriteRoute(sessionFavoriteRouter, sessionManager);
7578
7578
  app.use("/api", sessionFavoriteRouter);
7579
- const { createTasksService } = await import("./service-JL55SFPL.js");
7580
- const { registerTaskRoutes } = await import("./tasks-ZMJCHW7E.js");
7581
- const { setTasksService } = await import("./tools-LZHSSSK4.js");
7579
+ const { createTasksService } = await import("./service-7QKWUNU4.js");
7580
+ const { registerTaskRoutes } = await import("./tasks-E7EG7344.js");
7581
+ const { setTasksService } = await import("./tools-AY6XEVJK.js");
7582
7582
  const tasksService = createTasksService({
7583
7583
  sessionManager,
7584
7584
  config: config3,
@@ -7897,7 +7897,7 @@ All file and git operations should use this branch.
7897
7897
  app.get("/api/sessions/:id", async (req, res) => {
7898
7898
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-ZLP5V2YU.js");
7899
7899
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-BXMVJIFF.js");
7900
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-LZHSSSK4.js");
7900
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-AY6XEVJK.js");
7901
7901
  const { getMaxVisibleItems } = await import("./settings-HCSHADP5.js");
7902
7902
  const session = sessionManager.getSession(req.params.id);
7903
7903
  if (!session) {
@@ -7926,7 +7926,7 @@ All file and git operations should use this branch.
7926
7926
  });
7927
7927
  app.get("/api/sessions/:id/status", async (req, res) => {
7928
7928
  const { projectSessionStatus: projectSessionStatus2 } = await import("./session-status-UFO5IFI7.js");
7929
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-LZHSSSK4.js");
7929
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-AY6XEVJK.js");
7930
7930
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEventsWithSnapshot2 } = await import("./events-ZLP5V2YU.js");
7931
7931
  const { foldPendingConfirmations } = await import("./folding-BXMVJIFF.js");
7932
7932
  const sessionId = req.params["id"];
@@ -7958,8 +7958,8 @@ All file and git operations should use this branch.
7958
7958
  if (!session) {
7959
7959
  return res.status(404).json({ error: "Session not found" });
7960
7960
  }
7961
- const { stopSessionExecution } = await import("./chat-handler-KGITQAXC.js");
7962
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-LZHSSSK4.js");
7961
+ const { stopSessionExecution } = await import("./chat-handler-JWRCPG72.js");
7962
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-AY6XEVJK.js");
7963
7963
  sessionManager.clearMessageQueue(sessionId);
7964
7964
  stopSessionExecution(sessionId, sessionManager);
7965
7965
  abortSession(sessionId);
@@ -8191,7 +8191,7 @@ All file and git operations should use this branch.
8191
8191
  }
8192
8192
  sessionManager.setDangerLevel(sessionId, dangerLevel);
8193
8193
  if (dangerLevel === "dangerous") {
8194
- const { autoApprovePendingConfirmationsForSession } = await import("./tools-LZHSSSK4.js");
8194
+ const { autoApprovePendingConfirmationsForSession } = await import("./tools-AY6XEVJK.js");
8195
8195
  const approvedCallIds = autoApprovePendingConfirmationsForSession(sessionId);
8196
8196
  for (const callId of approvedCallIds) {
8197
8197
  wssExports.broadcastForSession(sessionId, {
@@ -8226,7 +8226,7 @@ All file and git operations should use this branch.
8226
8226
  setSessionDisabledServers(sessionId, disabledServers);
8227
8227
  const messages = session.messages ?? [];
8228
8228
  if (messages.length === 0) {
8229
- const { applyDynamicContext } = await import("./dynamic-context-3MAA4AQR.js");
8229
+ const { applyDynamicContext } = await import("./dynamic-context-KGSZ7TRQ.js");
8230
8230
  const modelName = session.providerModel ?? providerManager.getCurrentModel();
8231
8231
  await applyDynamicContext(sessionManager, sessionId, modelName);
8232
8232
  } else {
@@ -8260,7 +8260,7 @@ All file and git operations should use this branch.
8260
8260
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
8261
8261
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
8262
8262
  }
8263
- const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-LZHSSSK4.js");
8263
+ const { providePathConfirmation: providePathConfirmation2, getConfirmationSessionId } = await import("./tools-AY6XEVJK.js");
8264
8264
  const pendingSessionId = getConfirmationSessionId(callId);
8265
8265
  if (!pendingSessionId) {
8266
8266
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -8275,7 +8275,7 @@ All file and git operations should use this branch.
8275
8275
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-ZLP5V2YU.js");
8276
8276
  const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations } = await import("./folding-BXMVJIFF.js");
8277
8277
  const { createSessionStateMessage } = await import("./protocol-MRMOB3P4.js");
8278
- const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-LZHSSSK4.js");
8278
+ const { getPendingQuestionsForSession: getPendingQuestionsForSession2 } = await import("./tools-AY6XEVJK.js");
8279
8279
  const { getMaxVisibleItems } = await import("./settings-HCSHADP5.js");
8280
8280
  const eventStore = getEventStore2();
8281
8281
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
@@ -8313,7 +8313,7 @@ All file and git operations should use this branch.
8313
8313
  if (!skip && typeof answer !== "string") {
8314
8314
  return res.status(400).json({ error: "answer is required when not skipping" });
8315
8315
  }
8316
- const { provideAnswer: provideAnswer2 } = await import("./tools-LZHSSSK4.js");
8316
+ const { provideAnswer: provideAnswer2 } = await import("./tools-AY6XEVJK.js");
8317
8317
  const found = provideAnswer2(callId, answer ?? "", skip ?? false);
8318
8318
  if (!found) {
8319
8319
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -8379,7 +8379,7 @@ All file and git operations should use this branch.
8379
8379
  backend: activeProvider?.backend ?? llmClient.getBackend(),
8380
8380
  model: llmClient.getModel()
8381
8381
  };
8382
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-MMHV6SZY.js");
8382
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-VSVDUGBT.js");
8383
8383
  runAgentTurn(
8384
8384
  {
8385
8385
  sessionManager,
@@ -8417,8 +8417,8 @@ All file and git operations should use this branch.
8417
8417
  if (!session) {
8418
8418
  return res.status(404).json({ error: "Session not found" });
8419
8419
  }
8420
- const { stopSessionExecution } = await import("./chat-handler-KGITQAXC.js");
8421
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-LZHSSSK4.js");
8420
+ const { stopSessionExecution } = await import("./chat-handler-JWRCPG72.js");
8421
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-AY6XEVJK.js");
8422
8422
  const queuedMessages = sessionManager.getQueueState(sessionId);
8423
8423
  sessionManager.clearMessageQueue(sessionId);
8424
8424
  stopSessionExecution(sessionId, sessionManager);
@@ -8541,7 +8541,7 @@ All file and git operations should use this branch.
8541
8541
  return res.status(404).json({ error: "Session not found" });
8542
8542
  }
8543
8543
  try {
8544
- const { buildSessionExport } = await import("./export-import-ZJFYZJOP.js");
8544
+ const { buildSessionExport } = await import("./export-import-CJT33IO6.js");
8545
8545
  const payload = buildSessionExport(sessionManager, sessionId);
8546
8546
  const filename = `${(payload.session.title ?? "session").replace(/[^a-zA-Z0-9-_]/g, "_")}.openfox-session.json`;
8547
8547
  res.setHeader("Content-Disposition", `attachment; filename="${filename}"`);
@@ -8863,7 +8863,7 @@ All file and git operations should use this branch.
8863
8863
  const backend = req.query["backend"];
8864
8864
  if (!url) return res.status(400).json({ error: "url is required" });
8865
8865
  try {
8866
- const { fetchModelsWithContext } = await import("./provider-manager-3MV7KDAD.js");
8866
+ const { fetchModelsWithContext } = await import("./provider-manager-TV5I5YJH.js");
8867
8867
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8868
8868
  const { getCatalogEntry } = await import("./model-catalog-Y5MA5OZP.js");
8869
8869
  const models = await fetchModelsWithContext(
@@ -8936,9 +8936,9 @@ All file and git operations should use this branch.
8936
8936
  return res.json({ success: true, message: { content: response2.content }, raw: response2 });
8937
8937
  }
8938
8938
  const { getModelProfile: getModelProfile2 } = await import("./profiles-EBCVFYG7.js");
8939
- const { getBackendCapabilities } = await import("./backend-24FTDSHF.js");
8939
+ const { getBackendCapabilities } = await import("./backend-EPISSWLB.js");
8940
8940
  const { buildNonStreamingCreateParams } = await import("./client-pure-YZ4IGCU4.js");
8941
- const { OpenAIHttpClient } = await import("./http-client-VMRQHMF7.js");
8941
+ const { OpenAIHttpClient } = await import("./http-client-JVJ43TBY.js");
8942
8942
  const { ensureVersionPrefix } = await import("./url-utils-C5BM7NF7.js");
8943
8943
  const profile = getModelProfile2(model);
8944
8944
  const capabilities = getBackendCapabilities(backend || "unknown");
@@ -9364,7 +9364,7 @@ All file and git operations should use this branch.
9364
9364
  });
9365
9365
  async function rebuildMcpTools() {
9366
9366
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-ZY4FC4C4.js");
9367
- const { setMcpTools: setMcpTools2 } = await import("./tools-LZHSSSK4.js");
9367
+ const { setMcpTools: setMcpTools2 } = await import("./tools-AY6XEVJK.js");
9368
9368
  const mcpTools = createMcpTools2(mcpManager);
9369
9369
  setMcpTools2(mcpTools);
9370
9370
  toolRegistry = createToolRegistry();
@@ -9940,7 +9940,7 @@ All file and git operations should use this branch.
9940
9940
  );
9941
9941
  const wss = wssExports.wss;
9942
9942
  deferTasksBroadcast = (projectId, payload) => wssExports.broadcastForProject(projectId, "", { type: "tasks.update", payload });
9943
- const { launchWorkflowRun, abortRunnerRun } = await import("./launch-73LDMGCT.js");
9943
+ const { launchWorkflowRun, abortRunnerRun } = await import("./launch-7NKOCT5A.js");
9944
9944
  deferTasksLaunchWorkflow = (sessionId, launch) => {
9945
9945
  const effective = sessionManager.resolveEffectiveProviderModel(sessionId);
9946
9946
  let llmClient = getLLMClient();
@@ -9985,7 +9985,7 @@ All file and git operations should use this branch.
9985
9985
  const state = sessionManager.getContextState(sessionId);
9986
9986
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
9987
9987
  });
9988
- const { QueueProcessor } = await import("./processor-2M7N26QG.js");
9988
+ const { QueueProcessor } = await import("./processor-ACZM62WO.js");
9989
9989
  const queueProcessor = new QueueProcessor({
9990
9990
  sessionManager,
9991
9991
  providerManager,
@@ -10027,8 +10027,8 @@ All file and git operations should use this branch.
10027
10027
  launchWorkflow: (sessionId, launch) => deferTasksLaunchWorkflow(sessionId, launch),
10028
10028
  stopSession: (sessionId) => {
10029
10029
  void (async () => {
10030
- const { stopSessionExecution } = await import("./chat-handler-KGITQAXC.js");
10031
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-LZHSSSK4.js");
10030
+ const { stopSessionExecution } = await import("./chat-handler-JWRCPG72.js");
10031
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-AY6XEVJK.js");
10032
10032
  sessionManager.clearMessageQueue(sessionId);
10033
10033
  stopSessionExecution(sessionId, sessionManager);
10034
10034
  abortSession(sessionId);
@@ -10149,4 +10149,4 @@ export {
10149
10149
  createServerHandle,
10150
10150
  createServer
10151
10151
  };
10152
- //# sourceMappingURL=chunk-C543DUKL.js.map
10152
+ //# sourceMappingURL=chunk-QIGVYXMH.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-TS5WKTFB.js";
4
4
  import {
5
5
  getBackendCapabilities
6
- } from "./chunk-AKWJMMEJ.js";
6
+ } from "./chunk-VLQ6BMU7.js";
7
7
  import {
8
8
  ensureVersionPrefix,
9
9
  stripVersionPrefix
@@ -20,7 +20,7 @@ import {
20
20
  DONE,
21
21
  LLMError,
22
22
  OpenAIHttpClient
23
- } from "./chunk-LSO3IGJ4.js";
23
+ } from "./chunk-EE6VFEE6.js";
24
24
  import {
25
25
  logger
26
26
  } from "./chunk-K44MW7JJ.js";
@@ -464,16 +464,22 @@ function parseOllamaChatChunk(data) {
464
464
  }
465
465
  var OllamaHttpClient = class extends ChatHttpClient {
466
466
  baseURL;
467
+ apiKey;
467
468
  constructor(options) {
468
469
  super();
469
470
  this.baseURL = options.baseURL;
471
+ this.apiKey = options.apiKey;
470
472
  }
471
473
  buildRequest(params) {
474
+ const headers = {
475
+ "Content-Type": "application/json"
476
+ };
477
+ if (this.apiKey) {
478
+ headers["Authorization"] = `Bearer ${this.apiKey}`;
479
+ }
472
480
  return {
473
481
  url: `${this.baseURL}/api/chat`,
474
- headers: {
475
- "Content-Type": "application/json"
476
- },
482
+ headers,
477
483
  body: JSON.stringify(buildOllamaChatRequest(params))
478
484
  };
479
485
  }
@@ -507,14 +513,31 @@ function extractContentFromBlocks(blocks) {
507
513
  }
508
514
  return { text, thinking };
509
515
  }
516
+ function isOpenCodeEndpoint(baseUrl) {
517
+ try {
518
+ const url = new URL(baseUrl);
519
+ return url.protocol === "https:" && url.hostname.replace(/\.$/, "") === "opencode.ai";
520
+ } catch {
521
+ return false;
522
+ }
523
+ }
524
+ function openCodeSessionHeaders(sessionId) {
525
+ return {
526
+ "x-opencode-session": sessionId,
527
+ "x-opencode-client": "openfox",
528
+ "User-Agent": "openfox"
529
+ };
530
+ }
510
531
  function createLLMClient(config, initialBackend = config.llm.backend ?? "unknown") {
511
532
  const baseURL = ensureVersionPrefix(config.llm.baseUrl);
533
+ const isOpencode = isOpenCodeEndpoint(baseURL);
512
534
  const httpClient = new OpenAIHttpClient({
513
535
  baseURL,
514
536
  apiKey: config.llm.apiKey ?? "not-needed"
515
537
  });
516
538
  const ollamaHttpClient = new OllamaHttpClient({
517
- baseURL: stripVersionPrefix(baseURL)
539
+ baseURL: stripVersionPrefix(baseURL),
540
+ ...config.llm.apiKey ? { apiKey: config.llm.apiKey } : {}
518
541
  });
519
542
  const responsesHttpClient = new OpenAIResponsesHttpClient({
520
543
  baseURL,
@@ -589,7 +612,8 @@ function createLLMClient(config, initialBackend = config.llm.backend ?? "unknown
589
612
  const httpResponse = await httpFor(backend).createChatCompletion(
590
613
  createParams,
591
614
  {
592
- signal: request.signal
615
+ signal: request.signal,
616
+ ...request.sessionId && isOpencode && { headers: openCodeSessionHeaders(request.sessionId) }
593
617
  },
594
618
  request.returnRaw
595
619
  );
@@ -664,7 +688,8 @@ function createLLMClient(config, initialBackend = config.llm.backend ?? "unknown
664
688
  }, 100);
665
689
  const streamSignal = request.signal ? AbortSignal.any([request.signal, idleTimeoutController.signal]) : idleTimeoutController.signal;
666
690
  const stream = httpFor(backend).createChatCompletionStream(streamingParams, {
667
- signal: streamSignal
691
+ signal: streamSignal,
692
+ ...request.sessionId && isOpencode && { headers: openCodeSessionHeaders(request.sessionId) }
668
693
  });
669
694
  let fullContent = "";
670
695
  let fullThinking = "";
@@ -800,4 +825,4 @@ function createLLMClient(config, initialBackend = config.llm.backend ?? "unknown
800
825
  export {
801
826
  createLLMClient
802
827
  };
803
- //# sourceMappingURL=chunk-VCLAPTWM.js.map
828
+ //# sourceMappingURL=chunk-SSHXYKW3.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-OSXPQSLW.js";
12
12
  import {
13
13
  parseDefaultModelSelection
14
- } from "./chunk-EJ5GFSD4.js";
14
+ } from "./chunk-H7YL7PH3.js";
15
15
  import {
16
16
  getProject
17
17
  } from "./chunk-DPFET73G.js";
@@ -1149,4 +1149,4 @@ export {
1149
1149
  isTaskGateError,
1150
1150
  createTasksService
1151
1151
  };
1152
- //# sourceMappingURL=chunk-22DV5XO7.js.map
1152
+ //# sourceMappingURL=chunk-TJOKDC34.js.map
@@ -82,7 +82,12 @@ function detectBackendFromUrl(url) {
82
82
  var HOST_PROVIDER_DEFAULTS = {
83
83
  // DeepSeek's official API requires reasoning echoed under `reasoning_content`
84
84
  // (its own output field) — anything else is ignored or 400s on tool calls.
85
- "api.deepseek.com": { thinkingField: "reasoning_content" }
85
+ "api.deepseek.com": { thinkingField: "reasoning_content" },
86
+ // OpenCode Go's gateway forwards requests raw to upstreams whose strict
87
+ // schemas reject reasoning echoes on assistant history (e.g. GLM 400s with
88
+ // "Extra inputs are not permitted, field: messages[N].reasoning"). This
89
+ // overrides a persisted true so existing configs are rescued too.
90
+ "opencode.ai": { sendReasoningInMessages: false }
86
91
  };
87
92
  function detectProviderDefaultsFromUrl(url) {
88
93
  try {
@@ -121,4 +126,4 @@ export {
121
126
  detectProviderDefaultsFromUrl,
122
127
  getBackendDisplayName
123
128
  };
124
- //# sourceMappingURL=chunk-AKWJMMEJ.js.map
129
+ //# sourceMappingURL=chunk-VLQ6BMU7.js.map
@@ -207,7 +207,7 @@ async function runCli(options) {
207
207
  break;
208
208
  }
209
209
  case "provider": {
210
- const { runProviderCommand } = await import("./provider-MEENS4SB.js");
210
+ const { runProviderCommand } = await import("./provider-7LNTLWRB.js");
211
211
  const [, subcommand] = positionals;
212
212
  await runProviderCommand(mode, subcommand);
213
213
  break;
@@ -252,7 +252,7 @@ async function runCli(options) {
252
252
  break;
253
253
  }
254
254
  case "update": {
255
- const { runUpdate } = await import("./update-L2XK6UDC.js");
255
+ const { runUpdate } = await import("./update-JHFZMW3T.js");
256
256
  const code = await runUpdate();
257
257
  if (code !== 0) {
258
258
  process.exit(code);
@@ -265,7 +265,7 @@ async function runCli(options) {
265
265
  if (!configExists) {
266
266
  await runNetworkSetup(mode);
267
267
  }
268
- const { runServe } = await import("./serve-FN5XKUTC.js");
268
+ const { runServe } = await import("./serve-36D5HXWE.js");
269
269
  const serveOptions = { mode };
270
270
  if (values.port) serveOptions.port = parseInt(values.port);
271
271
  if (values["no-browser"] === true) serveOptions.openBrowser = false;
@@ -277,4 +277,4 @@ async function runCli(options) {
277
277
  export {
278
278
  runCli
279
279
  };
280
- //# sourceMappingURL=chunk-EXQI5TVW.js.map
280
+ //# sourceMappingURL=chunk-WD354R3H.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-EXQI5TVW.js";
4
+ } from "../chunk-WD354R3H.js";
5
5
  import "../chunk-AGXJ5O63.js";
6
6
  import "../chunk-2OMGR7LN.js";
7
7
  import {
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-EXQI5TVW.js";
4
+ } from "../chunk-WD354R3H.js";
5
5
  import "../chunk-AGXJ5O63.js";
6
6
  import "../chunk-2OMGR7LN.js";
7
7
  import {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createLLMClient
3
- } from "./chunk-VCLAPTWM.js";
3
+ } from "./chunk-SSHXYKW3.js";
4
4
  import "./chunk-TS5WKTFB.js";
5
- import "./chunk-AKWJMMEJ.js";
5
+ import "./chunk-VLQ6BMU7.js";
6
6
  import "./chunk-HNCM3D7Y.js";
7
7
  import "./chunk-QMU3ZY2C.js";
8
8
  import "./chunk-FSSUPWYO.js";
9
9
  import "./chunk-XG3AUMPI.js";
10
- import "./chunk-LSO3IGJ4.js";
10
+ import "./chunk-EE6VFEE6.js";
11
11
  import "./chunk-EMXMTCSY.js";
12
12
  import "./chunk-JU757HVI.js";
13
13
  import "./chunk-K44MW7JJ.js";
@@ -15,4 +15,4 @@ import "./chunk-YLJ4XMA6.js";
15
15
  export {
16
16
  createLLMClient
17
17
  };
18
- //# sourceMappingURL=client-6KC6SP2U.js.map
18
+ //# sourceMappingURL=client-KJS7QIIV.js.map
@@ -3,8 +3,8 @@ import {
3
3
  COMPACTION_MAX_RATIO,
4
4
  appendCompactionPrompt,
5
5
  shouldCompact
6
- } from "./chunk-TG65PHHY.js";
7
- import "./chunk-HEYU7FAY.js";
6
+ } from "./chunk-5F7LNEEP.js";
7
+ import "./chunk-OA7KBQ2O.js";
8
8
  import "./chunk-GKRYQ56N.js";
9
9
  import "./chunk-JTR3PC5I.js";
10
10
  import "./chunk-AE2IBEUH.js";
@@ -16,7 +16,7 @@ import "./chunk-46Q2SHGJ.js";
16
16
  import "./chunk-J2GP3J3X.js";
17
17
  import "./chunk-DPFET73G.js";
18
18
  import "./chunk-TS5WKTFB.js";
19
- import "./chunk-AKWJMMEJ.js";
19
+ import "./chunk-VLQ6BMU7.js";
20
20
  import "./chunk-QMU3ZY2C.js";
21
21
  import "./chunk-FSSUPWYO.js";
22
22
  import "./chunk-XG3AUMPI.js";
@@ -31,4 +31,4 @@ export {
31
31
  appendCompactionPrompt,
32
32
  shouldCompact
33
33
  };
34
- //# sourceMappingURL=compactor-T7S4DIR3.js.map
34
+ //# sourceMappingURL=compactor-UREBHSZQ.js.map
@@ -16,7 +16,7 @@ import {
16
16
  injectContextDriftRemindersForSessions,
17
17
  renderSystemPromptDiff,
18
18
  renderToolChangeReminder
19
- } from "./chunk-CXB4HJAM.js";
19
+ } from "./chunk-5EKBZXCU.js";
20
20
  import "./chunk-CRJ5J7U5.js";
21
21
  import "./chunk-GKRYQ56N.js";
22
22
  import "./chunk-JTR3PC5I.js";
@@ -51,4 +51,4 @@ export {
51
51
  renderSystemPromptDiff,
52
52
  renderToolChangeReminder
53
53
  };
54
- //# sourceMappingURL=dynamic-context-3MAA4AQR.js.map
54
+ //# sourceMappingURL=dynamic-context-KGSZ7TRQ.js.map
@@ -9,7 +9,7 @@ import "./chunk-OSXPQSLW.js";
9
9
  import "./chunk-LCLH6ZUL.js";
10
10
  import {
11
11
  VERSION
12
- } from "./chunk-Z7MGLDLK.js";
12
+ } from "./chunk-6RYTDRUR.js";
13
13
  import {
14
14
  getProject
15
15
  } from "./chunk-DPFET73G.js";
@@ -134,4 +134,4 @@ export {
134
134
  buildSessionExport,
135
135
  parseSessionExport
136
136
  };
137
- //# sourceMappingURL=export-import-ZJFYZJOP.js.map
137
+ //# sourceMappingURL=export-import-CJT33IO6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  OpenAIHttpClient
3
- } from "./chunk-LSO3IGJ4.js";
3
+ } from "./chunk-EE6VFEE6.js";
4
4
  import "./chunk-EMXMTCSY.js";
5
5
  import "./chunk-JU757HVI.js";
6
6
  import "./chunk-K44MW7JJ.js";
@@ -8,4 +8,4 @@ import "./chunk-YLJ4XMA6.js";
8
8
  export {
9
9
  OpenAIHttpClient
10
10
  };
11
- //# sourceMappingURL=http-client-VMRQHMF7.js.map
11
+ //# sourceMappingURL=http-client-JVJ43TBY.js.map
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  abortRunnerRun,
3
3
  launchWorkflowRun
4
- } from "./chunk-EGF3PREY.js";
5
- import "./chunk-AM5FAZJK.js";
6
- import "./chunk-CXB4HJAM.js";
7
- import "./chunk-N4RAVCLZ.js";
4
+ } from "./chunk-66XJC5TA.js";
5
+ import "./chunk-GZJRXVVJ.js";
6
+ import "./chunk-5EKBZXCU.js";
7
+ import "./chunk-5MGCTRKM.js";
8
8
  import "./chunk-CRJ5J7U5.js";
9
9
  import "./chunk-XE6UC5Z3.js";
10
10
  import "./chunk-J7GAZGZT.js";
11
- import "./chunk-22DV5XO7.js";
11
+ import "./chunk-TJOKDC34.js";
12
12
  import "./chunk-FIEFBRTQ.js";
13
13
  import "./chunk-MAUQ6AW4.js";
14
14
  import "./chunk-JLHYB445.js";
15
- import "./chunk-HEYU7FAY.js";
15
+ import "./chunk-OA7KBQ2O.js";
16
16
  import "./chunk-GKRYQ56N.js";
17
17
  import "./chunk-LW6MMSTD.js";
18
18
  import "./chunk-UA2ATO3B.js";
@@ -29,18 +29,18 @@ import "./chunk-OSXPQSLW.js";
29
29
  import "./chunk-OVAHNEFG.js";
30
30
  import "./chunk-LCLH6ZUL.js";
31
31
  import "./chunk-46Q2SHGJ.js";
32
- import "./chunk-EJ5GFSD4.js";
32
+ import "./chunk-H7YL7PH3.js";
33
33
  import "./chunk-OA2FURC3.js";
34
34
  import "./chunk-J2GP3J3X.js";
35
35
  import "./chunk-DPFET73G.js";
36
- import "./chunk-VCLAPTWM.js";
36
+ import "./chunk-SSHXYKW3.js";
37
37
  import "./chunk-TS5WKTFB.js";
38
- import "./chunk-AKWJMMEJ.js";
38
+ import "./chunk-VLQ6BMU7.js";
39
39
  import "./chunk-HNCM3D7Y.js";
40
40
  import "./chunk-QMU3ZY2C.js";
41
41
  import "./chunk-FSSUPWYO.js";
42
42
  import "./chunk-XG3AUMPI.js";
43
- import "./chunk-LSO3IGJ4.js";
43
+ import "./chunk-EE6VFEE6.js";
44
44
  import "./chunk-EMXMTCSY.js";
45
45
  import "./chunk-JU757HVI.js";
46
46
  import "./chunk-VKMPR25F.js";
@@ -55,4 +55,4 @@ export {
55
55
  abortRunnerRun,
56
56
  launchWorkflowRun
57
57
  };
58
- //# sourceMappingURL=launch-73LDMGCT.js.map
58
+ //# sourceMappingURL=launch-7NKOCT5A.js.map