openfox 2.0.121 → 2.0.122

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 (31) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/CHANGELOG.md +12 -0
  3. package/dist/{chat-handler-A5ORR5BB.js → chat-handler-JQUVSZT3.js} +5 -5
  4. package/dist/{chunk-ZELEYSTY.js → chunk-22D7ZR2X.js} +6 -6
  5. package/dist/{chunk-5QTERLHH.js → chunk-AIXVERRI.js} +3 -3
  6. package/dist/{chunk-VUANU5A5.js → chunk-KDC4QHE7.js} +3 -3
  7. package/dist/{chunk-TR4DQZIG.js → chunk-SCP5KBNB.js} +5 -5
  8. package/dist/{chunk-O63CDVNI.js → chunk-STYGFTEB.js} +3 -2
  9. package/dist/{chunk-W3WZ54KP.js → chunk-UOEAKQBH.js} +4 -4
  10. package/dist/chunk-VC3YCHDO.js +7 -0
  11. package/dist/{chunk-KD7JTG42.js → chunk-WIZUASFY.js} +23 -23
  12. package/dist/{chunk-F2IM5J4I.js → chunk-ZT7YTM2U.js} +3 -3
  13. package/dist/cli/dev.js +1 -1
  14. package/dist/cli/index.js +1 -1
  15. package/dist/{dynamic-context-KPZECHZH.js → dynamic-context-IWFD7U3D.js} +2 -2
  16. package/dist/{launch-YWXQQWZN.js → launch-FOUIDMGW.js} +6 -6
  17. package/dist/{orchestrator-SM3IHZFP.js → orchestrator-PEXLQK3T.js} +5 -5
  18. package/dist/package.json +1 -1
  19. package/dist/{processor-EUJRA5GW.js → processor-2GEVRLJP.js} +4 -4
  20. package/dist/{serve-DEY45HQS.js → serve-3BPQGWYE.js} +9 -9
  21. package/dist/server/index.js +8 -8
  22. package/dist/{server-EIRLWSBZ.js → server-HPIR55OH.js} +7 -7
  23. package/dist/{service-HX5NFX2D.js → service-2IOCVEXQ.js} +2 -2
  24. package/dist/{tasks-A25JQ4TV.js → tasks-G7ACMQM2.js} +2 -2
  25. package/dist/{tools-YGJXEEBI.js → tools-IKMNLLAY.js} +3 -3
  26. package/dist/{update-CE3XSZXE.js → update-QX6IIUKB.js} +2 -2
  27. package/dist/web/assets/{index-oiZlWLY7.js → index-CJuw9bwD.js} +75 -75
  28. package/dist/web/index.html +1 -1
  29. package/dist/web/sw.js +1 -1
  30. package/package.json +1 -1
  31. package/dist/chunk-OBB3JYMK.js +0 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.122 - 2026-08-16
4
+
5
+ ### Features
6
+
7
+ - **Live "time since your last prompt" counter** — the status bar ticks every second while the agent works
8
+ - **Right-click a message for its timestamp** — sent/received time in 24h format (2026/08/16 14:44)
9
+
10
+ ### Enhancements
11
+
12
+ - **Task moves and gate fills need your approval** — the agent no longer advances the board on its own
13
+ - **Status label is cleaner** — dropped the redundant phase suffix (it was always "Plan" outside workflows)
14
+
3
15
  ## 2.0.121 - 2026-08-16
4
16
 
5
17
  ### Features
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.122 - 2026-08-16
4
+
5
+ ### Features
6
+
7
+ - **Live "time since your last prompt" counter** — the status bar ticks every second while the agent works
8
+ - **Right-click a message for its timestamp** — sent/received time in 24h format (2026/08/16 14:44)
9
+
10
+ ### Enhancements
11
+
12
+ - **Task moves and gate fills need your approval** — the agent no longer advances the board on its own
13
+ - **Status label is cleaner** — dropped the redundant phase suffix (it was always "Plan" outside workflows)
14
+
3
15
  ## 2.0.121 - 2026-08-16
4
16
 
5
17
  ### Features
@@ -5,9 +5,9 @@ import {
5
5
  } from "./chunk-YDDBPKVP.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-VUANU5A5.js";
9
- import "./chunk-5QTERLHH.js";
10
- import "./chunk-TR4DQZIG.js";
8
+ } from "./chunk-KDC4QHE7.js";
9
+ import "./chunk-AIXVERRI.js";
10
+ import "./chunk-SCP5KBNB.js";
11
11
  import "./chunk-LSEHJ2WI.js";
12
12
  import "./chunk-OXANSWVZ.js";
13
13
  import "./chunk-I22B6KWV.js";
@@ -16,7 +16,7 @@ import "./chunk-JE7LW7Y6.js";
16
16
  import "./chunk-OAN4BXEW.js";
17
17
  import "./chunk-RMOKNQAS.js";
18
18
  import "./chunk-J7GAZGZT.js";
19
- import "./chunk-O63CDVNI.js";
19
+ import "./chunk-STYGFTEB.js";
20
20
  import "./chunk-YBOU4ZFD.js";
21
21
  import "./chunk-5A4YN6I7.js";
22
22
  import {
@@ -173,4 +173,4 @@ export {
173
173
  startChatSession,
174
174
  stopSessionExecution
175
175
  };
176
- //# sourceMappingURL=chat-handler-A5ORR5BB.js.map
176
+ //# sourceMappingURL=chat-handler-JQUVSZT3.js.map
@@ -5,18 +5,18 @@ import {
5
5
  } from "./chunk-YDDBPKVP.js";
6
6
  import {
7
7
  launchWorkflowRun
8
- } from "./chunk-W3WZ54KP.js";
8
+ } from "./chunk-UOEAKQBH.js";
9
9
  import {
10
10
  runChatTurn
11
- } from "./chunk-VUANU5A5.js";
11
+ } from "./chunk-KDC4QHE7.js";
12
12
  import {
13
13
  applyDynamicContext,
14
14
  computeSessionHash,
15
15
  computeUnifiedDiff
16
- } from "./chunk-5QTERLHH.js";
16
+ } from "./chunk-AIXVERRI.js";
17
17
  import {
18
18
  devServerManager
19
- } from "./chunk-TR4DQZIG.js";
19
+ } from "./chunk-SCP5KBNB.js";
20
20
  import {
21
21
  onProcessEvent
22
22
  } from "./chunk-I22B6KWV.js";
@@ -1286,7 +1286,7 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1286
1286
  }
1287
1287
  const session = sessionManager.requireSession(sessionId);
1288
1288
  try {
1289
- const { buildCachedPrompt } = await import("./dynamic-context-KPZECHZH.js");
1289
+ const { buildCachedPrompt } = await import("./dynamic-context-IWFD7U3D.js");
1290
1290
  const allAgents = await import("./registry-37GL3DAP.js");
1291
1291
  const agentDef = allAgents.findAgentById(session.mode, await allAgents.loadAllAgentsDefault()) ?? allAgents.findAgentById("planner", await allAgents.loadAllAgentsDefault());
1292
1292
  const modelName = session.providerModel ?? _providerManager?.getCurrentModel();
@@ -1611,4 +1611,4 @@ export {
1611
1611
  signalMcpReady,
1612
1612
  createWebSocketServer
1613
1613
  };
1614
- //# sourceMappingURL=chunk-ZELEYSTY.js.map
1614
+ //# sourceMappingURL=chunk-22D7ZR2X.js.map
@@ -105,7 +105,7 @@ function resolveAgentDef(sessionManager, sessionId) {
105
105
  }
106
106
  async function buildCachedPrompt(sessionManager, sessionId, agentDef, modelName) {
107
107
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
108
- const { getToolRegistryForAgent } = await import("./tools-YGJXEEBI.js");
108
+ const { getToolRegistryForAgent } = await import("./tools-IKMNLLAY.js");
109
109
  const tools = getToolRegistryForAgent(agentDef, sessionId).definitions;
110
110
  const toolFingerprint = getToolFingerprint(tools);
111
111
  const allAgents = await loadAllAgentsDefault(sessionManager.getProjectWorkdir(sessionId));
@@ -124,7 +124,7 @@ async function buildCachedPrompt(sessionManager, sessionId, agentDef, modelName)
124
124
  async function computeSessionHash(sessionManager, sessionId, modelName) {
125
125
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
126
126
  const agentDef = await resolveAgentDef(sessionManager, sessionId);
127
- const { getToolRegistryForAgent } = await import("./tools-YGJXEEBI.js");
127
+ const { getToolRegistryForAgent } = await import("./tools-IKMNLLAY.js");
128
128
  const tools = getToolRegistryForAgent(agentDef, sessionId).definitions;
129
129
  const toolFingerprint = getToolFingerprint(tools);
130
130
  return computeDynamicContextHash(instructionContent, skills, toolFingerprint, modelName);
@@ -148,4 +148,4 @@ export {
148
148
  computeSessionHash,
149
149
  applyDynamicContext
150
150
  };
151
- //# sourceMappingURL=chunk-5QTERLHH.js.map
151
+ //# sourceMappingURL=chunk-AIXVERRI.js.map
@@ -2,14 +2,14 @@ import {
2
2
  buildCachedPrompt,
3
3
  computeDynamicContextHash,
4
4
  getToolFingerprint
5
- } from "./chunk-5QTERLHH.js";
5
+ } from "./chunk-AIXVERRI.js";
6
6
  import {
7
7
  createAssemblyResult,
8
8
  getConversationMessages,
9
9
  getToolRegistryForAgent,
10
10
  processEventsForConversation,
11
11
  runTopLevelAgentLoop
12
- } from "./chunk-TR4DQZIG.js";
12
+ } from "./chunk-SCP5KBNB.js";
13
13
  import {
14
14
  getAllInstructions,
15
15
  getEnabledSkillMetadata
@@ -325,4 +325,4 @@ export {
325
325
  runChatTurn,
326
326
  runAgentTurn
327
327
  };
328
- //# sourceMappingURL=chunk-VUANU5A5.js.map
328
+ //# sourceMappingURL=chunk-KDC4QHE7.js.map
@@ -42,7 +42,7 @@ import {
42
42
  getGateConfig,
43
43
  isTaskConflictError,
44
44
  isTaskGateError
45
- } from "./chunk-O63CDVNI.js";
45
+ } from "./chunk-STYGFTEB.js";
46
46
  import {
47
47
  getSessionDisabledServers
48
48
  } from "./chunk-YBOU4ZFD.js";
@@ -3103,7 +3103,7 @@ var callSubAgentTool = {
3103
3103
  };
3104
3104
  }
3105
3105
  try {
3106
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-YGJXEEBI.js");
3106
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-IKMNLLAY.js");
3107
3107
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3108
3108
  const turnMetrics = new TurnMetrics();
3109
3109
  const result = await executeSubAgent({
@@ -4125,7 +4125,7 @@ var mcpConfigTool = createTool(
4125
4125
  mcpNotifyChanged?.(sessionId);
4126
4126
  }
4127
4127
  async function rebuildTools() {
4128
- const { setMcpTools: setMcpTools2 } = await import("./tools-YGJXEEBI.js");
4128
+ const { setMcpTools: setMcpTools2 } = await import("./tools-IKMNLLAY.js");
4129
4129
  const mcpTools = createMcpTools(mcpManagerForTools);
4130
4130
  setMcpTools2(mcpTools);
4131
4131
  }
@@ -4558,7 +4558,7 @@ var projectTasksTool = createTool(
4558
4558
  type: "function",
4559
4559
  function: {
4560
4560
  name: "project_tasks",
4561
- description: "Kanban task board for this project. Core loop: list \u2192 move \u2192 set_gate_value.\n\nRules:\n- Moving to in_progress binds the task to YOUR current session.\n- Moving to done is blocked by unmet gates: the error names the missing fields \u2014 fill them via set_gate_value (that's part of the work), then retry the move.\n- Stale writes fail with CONFLICT \u2014 re-list and retry.\n\nActions:\n- list: tasks (status, gate values, queue position, bound session, audit trail); defaults to open tasks, filter via status (todo | in_progress | done | all)\n- create: add a task to To Do (prompt required)\n- edit: update prompt/attachments/agent/model (taskId + fields)\n- move: change column (to: todo | in_progress | done; optional reason)\n- set_gate_value: fill a gate field (taskId, gateId, value)\n- delete: remove a task (taskId)",
4561
+ description: "Kanban task board for this project. Core loop: list \u2192 move \u2192 set_gate_value.\n\nRules:\n- Moving to in_progress binds the task to YOUR current session.\n- Do not move tasks or fill gate values without explicit user approval or a system instruction \u2014 complete the work, then let the user review before the task advances.\n- Moving to done is blocked by unmet gates: the error names the missing fields \u2014 fill them only with user approval, then retry the move.\n- Stale writes fail with CONFLICT \u2014 re-list and retry.\n\nActions:\n- list: tasks (status, gate values, queue position, bound session, audit trail); defaults to open tasks, filter via status (todo | in_progress | done | all)\n- create: add a task to To Do (prompt required)\n- edit: update prompt/attachments/agent/model (taskId + fields)\n- move: change column (to: todo | in_progress | done; optional reason)\n- set_gate_value: fill a gate field (taskId, gateId, value)\n- delete: remove a task (taskId)",
4562
4562
  parameters: {
4563
4563
  type: "object",
4564
4564
  properties: {
@@ -5013,4 +5013,4 @@ export {
5013
5013
  getToolRegistryForAgent,
5014
5014
  createToolRegistry
5015
5015
  };
5016
- //# sourceMappingURL=chunk-TR4DQZIG.js.map
5016
+ //# sourceMappingURL=chunk-SCP5KBNB.js.map
@@ -1006,7 +1006,8 @@ ${content}
1006
1006
  return [
1007
1007
  `This session is now working on task "${promptLabel(task.prompt)}" from the project task board.`,
1008
1008
  `Previous state: ${prettyStatus(from)} \u2192 In Progress. Session: ${sessionId.slice(0, 8)}.`,
1009
- gateLine
1009
+ gateLine,
1010
+ "Do not move the task, fill gate values, or commit changes without explicit user approval or a system instruction."
1010
1011
  ].join("\n");
1011
1012
  }
1012
1013
  function reminderForDone(task) {
@@ -1098,4 +1099,4 @@ export {
1098
1099
  isTaskGateError,
1099
1100
  createTasksService
1100
1101
  };
1101
- //# sourceMappingURL=chunk-O63CDVNI.js.map
1102
+ //# sourceMappingURL=chunk-STYGFTEB.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  runAgentTurn
3
- } from "./chunk-VUANU5A5.js";
3
+ } from "./chunk-KDC4QHE7.js";
4
4
  import {
5
5
  executeSubAgent,
6
6
  getToolRegistryForAgent
7
- } from "./chunk-TR4DQZIG.js";
7
+ } from "./chunk-SCP5KBNB.js";
8
8
  import {
9
9
  checkAborted,
10
10
  decodeUtf8,
@@ -23,7 +23,7 @@ import {
23
23
  loadProjectWorkflows,
24
24
  loadUserWorkflows,
25
25
  normalizeWorkflowScope
26
- } from "./chunk-O63CDVNI.js";
26
+ } from "./chunk-STYGFTEB.js";
27
27
  import {
28
28
  createChatMessageMessage,
29
29
  createSessionRunningMessage
@@ -1002,4 +1002,4 @@ export {
1002
1002
  abortRunnerRun,
1003
1003
  launchWorkflowRun
1004
1004
  };
1005
- //# sourceMappingURL=chunk-W3WZ54KP.js.map
1005
+ //# sourceMappingURL=chunk-UOEAKQBH.js.map
@@ -0,0 +1,7 @@
1
+ // src/constants.ts
2
+ var VERSION = "2.0.122";
3
+
4
+ export {
5
+ VERSION
6
+ };
7
+ //# sourceMappingURL=chunk-VC3YCHDO.js.map
@@ -16,10 +16,10 @@ import {
16
16
  terminalManager,
17
17
  tokenFromPassword,
18
18
  verifyPassword
19
- } from "./chunk-ZELEYSTY.js";
19
+ } from "./chunk-22D7ZR2X.js";
20
20
  import {
21
21
  TEMPLATE_VARIABLES
22
- } from "./chunk-W3WZ54KP.js";
22
+ } from "./chunk-UOEAKQBH.js";
23
23
  import {
24
24
  openFolder
25
25
  } from "./chunk-WLJJRX22.js";
@@ -36,7 +36,7 @@ import {
36
36
  setMcpManagerForTools,
37
37
  setMcpTools,
38
38
  setNotifyMcpServersChanged
39
- } from "./chunk-TR4DQZIG.js";
39
+ } from "./chunk-SCP5KBNB.js";
40
40
  import {
41
41
  deleteOwnedSkill,
42
42
  deleteProjectSkill,
@@ -101,7 +101,7 @@ import {
101
101
  saveWorkflow,
102
102
  saveWorkflowToProject,
103
103
  workflowExists
104
- } from "./chunk-O63CDVNI.js";
104
+ } from "./chunk-STYGFTEB.js";
105
105
  import {
106
106
  getSessionDisabledServers,
107
107
  setSessionDisabledServers
@@ -166,7 +166,7 @@ import {
166
166
  } from "./chunk-EZ67GBEO.js";
167
167
  import {
168
168
  VERSION
169
- } from "./chunk-OBB3JYMK.js";
169
+ } from "./chunk-VC3YCHDO.js";
170
170
  import {
171
171
  agentExists,
172
172
  deleteAgent,
@@ -5991,7 +5991,7 @@ async function createServerHandle(config3) {
5991
5991
  toolRegistry = createToolRegistry();
5992
5992
  logger.info("MCP tools registered", { count: mcpTools.length });
5993
5993
  }
5994
- const { signalMcpReady } = await import("./server-EIRLWSBZ.js");
5994
+ const { signalMcpReady } = await import("./server-HPIR55OH.js");
5995
5995
  signalMcpReady();
5996
5996
  });
5997
5997
  const app = express();
@@ -6187,9 +6187,9 @@ async function createServerHandle(config3) {
6187
6187
  const sessionFavoriteRouter = express.Router();
6188
6188
  registerSessionFavoriteRoute(sessionFavoriteRouter, sessionManager);
6189
6189
  app.use("/api", sessionFavoriteRouter);
6190
- const { createTasksService } = await import("./service-HX5NFX2D.js");
6191
- const { registerTaskRoutes } = await import("./tasks-A25JQ4TV.js");
6192
- const { setTasksService } = await import("./tools-YGJXEEBI.js");
6190
+ const { createTasksService } = await import("./service-2IOCVEXQ.js");
6191
+ const { registerTaskRoutes } = await import("./tasks-G7ACMQM2.js");
6192
+ const { setTasksService } = await import("./tools-IKMNLLAY.js");
6193
6193
  const tasksService = createTasksService({
6194
6194
  sessionManager,
6195
6195
  config: config3,
@@ -6518,7 +6518,7 @@ All file and git operations should use this branch.
6518
6518
  app.get("/api/sessions/:id", async (req, res) => {
6519
6519
  const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-6P4TDTSD.js");
6520
6520
  const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-3LA2WX2B.js");
6521
- const { getPendingQuestionsForSession } = await import("./tools-YGJXEEBI.js");
6521
+ const { getPendingQuestionsForSession } = await import("./tools-IKMNLLAY.js");
6522
6522
  const { getMaxVisibleItems } = await import("./settings-SYYDPV43.js");
6523
6523
  const session = sessionManager.getSession(req.params.id);
6524
6524
  if (!session) {
@@ -6547,7 +6547,7 @@ All file and git operations should use this branch.
6547
6547
  });
6548
6548
  app.get("/api/sessions/:id/status", async (req, res) => {
6549
6549
  const { projectSessionStatus } = await import("./session-status-6Q5B5PEN.js");
6550
- const { getPendingQuestionsForSession } = await import("./tools-YGJXEEBI.js");
6550
+ const { getPendingQuestionsForSession } = await import("./tools-IKMNLLAY.js");
6551
6551
  const { getEventStore: getEventStore2, combineEventsWithSnapshot } = await import("./events-6P4TDTSD.js");
6552
6552
  const { foldPendingConfirmations } = await import("./folding-3LA2WX2B.js");
6553
6553
  const sessionId = req.params["id"];
@@ -6579,8 +6579,8 @@ All file and git operations should use this branch.
6579
6579
  if (!session) {
6580
6580
  return res.status(404).json({ error: "Session not found" });
6581
6581
  }
6582
- const { stopSessionExecution } = await import("./chat-handler-A5ORR5BB.js");
6583
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-YGJXEEBI.js");
6582
+ const { stopSessionExecution } = await import("./chat-handler-JQUVSZT3.js");
6583
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-IKMNLLAY.js");
6584
6584
  sessionManager.clearMessageQueue(sessionId);
6585
6585
  stopSessionExecution(sessionId, sessionManager);
6586
6586
  abortSession(sessionId);
@@ -6832,7 +6832,7 @@ All file and git operations should use this branch.
6832
6832
  if (alwaysAllow !== void 0 && typeof alwaysAllow !== "boolean") {
6833
6833
  return res.status(400).json({ error: "alwaysAllow must be a boolean if provided" });
6834
6834
  }
6835
- const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-YGJXEEBI.js");
6835
+ const { providePathConfirmation, getConfirmationSessionId } = await import("./tools-IKMNLLAY.js");
6836
6836
  const pendingSessionId = getConfirmationSessionId(callId);
6837
6837
  if (!pendingSessionId) {
6838
6838
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -6847,7 +6847,7 @@ All file and git operations should use this branch.
6847
6847
  const { getEventStore: getEventStore2, combineEventsWithSnapshot: combineEvents } = await import("./events-6P4TDTSD.js");
6848
6848
  const { buildMessagesFromStoredEvents, foldPendingConfirmations } = await import("./folding-3LA2WX2B.js");
6849
6849
  const { createSessionStateMessage } = await import("./protocol-TLODRZSB.js");
6850
- const { getPendingQuestionsForSession } = await import("./tools-YGJXEEBI.js");
6850
+ const { getPendingQuestionsForSession } = await import("./tools-IKMNLLAY.js");
6851
6851
  const { getMaxVisibleItems } = await import("./settings-SYYDPV43.js");
6852
6852
  const eventStore = getEventStore2();
6853
6853
  const { snapshot, events: eventsSinceSnapshot } = eventStore.getEventsSinceSnapshot(sessionId);
@@ -6885,7 +6885,7 @@ All file and git operations should use this branch.
6885
6885
  if (!skip && typeof answer !== "string") {
6886
6886
  return res.status(400).json({ error: "answer is required when not skipping" });
6887
6887
  }
6888
- const { provideAnswer } = await import("./tools-YGJXEEBI.js");
6888
+ const { provideAnswer } = await import("./tools-IKMNLLAY.js");
6889
6889
  const found = provideAnswer(callId, answer ?? "", skip ?? false);
6890
6890
  if (!found) {
6891
6891
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -6951,7 +6951,7 @@ All file and git operations should use this branch.
6951
6951
  backend: activeProvider?.backend ?? llmClient.getBackend(),
6952
6952
  model: llmClient.getModel()
6953
6953
  };
6954
- const { runAgentTurn, TurnMetrics } = await import("./orchestrator-SM3IHZFP.js");
6954
+ const { runAgentTurn, TurnMetrics } = await import("./orchestrator-PEXLQK3T.js");
6955
6955
  runAgentTurn(
6956
6956
  {
6957
6957
  sessionManager,
@@ -6989,8 +6989,8 @@ All file and git operations should use this branch.
6989
6989
  if (!session) {
6990
6990
  return res.status(404).json({ error: "Session not found" });
6991
6991
  }
6992
- const { stopSessionExecution } = await import("./chat-handler-A5ORR5BB.js");
6993
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-YGJXEEBI.js");
6992
+ const { stopSessionExecution } = await import("./chat-handler-JQUVSZT3.js");
6993
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-IKMNLLAY.js");
6994
6994
  const queuedMessages = sessionManager.getQueueState(sessionId);
6995
6995
  sessionManager.clearMessageQueue(sessionId);
6996
6996
  stopSessionExecution(sessionId, sessionManager);
@@ -7792,7 +7792,7 @@ All file and git operations should use this branch.
7792
7792
  });
7793
7793
  async function rebuildMcpTools() {
7794
7794
  const { createMcpTools: createMcpTools2 } = await import("./tool-adapter-FJAFLDZA.js");
7795
- const { setMcpTools: setMcpTools2 } = await import("./tools-YGJXEEBI.js");
7795
+ const { setMcpTools: setMcpTools2 } = await import("./tools-IKMNLLAY.js");
7796
7796
  const mcpTools = createMcpTools2(mcpManager);
7797
7797
  setMcpTools2(mcpTools);
7798
7798
  toolRegistry = createToolRegistry();
@@ -8346,7 +8346,7 @@ All file and git operations should use this branch.
8346
8346
  );
8347
8347
  const wss = wssExports.wss;
8348
8348
  deferTasksBroadcast = (projectId, payload) => wssExports.broadcastForProject(projectId, "", { type: "tasks.update", payload });
8349
- const { launchWorkflowRun, abortRunnerRun } = await import("./launch-YWXQQWZN.js");
8349
+ const { launchWorkflowRun, abortRunnerRun } = await import("./launch-FOUIDMGW.js");
8350
8350
  deferTasksLaunchWorkflow = (sessionId, launch) => {
8351
8351
  const effective = sessionManager.resolveEffectiveProviderModel(sessionId);
8352
8352
  let llmClient = getLLMClient();
@@ -8384,7 +8384,7 @@ All file and git operations should use this branch.
8384
8384
  const state = sessionManager.getContextState(sessionId);
8385
8385
  wssExports.broadcastForSession(sessionId, createContextStateMessage(state));
8386
8386
  });
8387
- const { QueueProcessor } = await import("./processor-EUJRA5GW.js");
8387
+ const { QueueProcessor } = await import("./processor-2GEVRLJP.js");
8388
8388
  const queueProcessor = new QueueProcessor({
8389
8389
  sessionManager,
8390
8390
  providerManager,
@@ -8470,4 +8470,4 @@ export {
8470
8470
  createServerHandle,
8471
8471
  createServer
8472
8472
  };
8473
- //# sourceMappingURL=chunk-KD7JTG42.js.map
8473
+ //# sourceMappingURL=chunk-WIZUASFY.js.map
@@ -200,7 +200,7 @@ async function runCli(options) {
200
200
  break;
201
201
  }
202
202
  case "update": {
203
- const { runUpdate } = await import("./update-CE3XSZXE.js");
203
+ const { runUpdate } = await import("./update-QX6IIUKB.js");
204
204
  const code = await runUpdate();
205
205
  if (code !== 0) {
206
206
  process.exit(code);
@@ -213,7 +213,7 @@ async function runCli(options) {
213
213
  if (!configExists) {
214
214
  await runNetworkSetup(mode);
215
215
  }
216
- const { runServe } = await import("./serve-DEY45HQS.js");
216
+ const { runServe } = await import("./serve-3BPQGWYE.js");
217
217
  const serveOptions = { mode };
218
218
  if (values.port) serveOptions.port = parseInt(values.port);
219
219
  if (values["no-browser"] === true) serveOptions.openBrowser = false;
@@ -225,4 +225,4 @@ async function runCli(options) {
225
225
  export {
226
226
  runCli
227
227
  };
228
- //# sourceMappingURL=chunk-F2IM5J4I.js.map
228
+ //# sourceMappingURL=chunk-ZT7YTM2U.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-F2IM5J4I.js";
4
+ } from "../chunk-ZT7YTM2U.js";
5
5
  import "../chunk-AGXJ5O63.js";
6
6
  import {
7
7
  logger
package/dist/cli/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-F2IM5J4I.js";
4
+ } from "../chunk-ZT7YTM2U.js";
5
5
  import "../chunk-AGXJ5O63.js";
6
6
  import {
7
7
  logger
@@ -5,7 +5,7 @@ import {
5
5
  computeSessionHash,
6
6
  computeUnifiedDiff,
7
7
  getToolFingerprint
8
- } from "./chunk-5QTERLHH.js";
8
+ } from "./chunk-AIXVERRI.js";
9
9
  import "./chunk-LSEHJ2WI.js";
10
10
  import "./chunk-Y7FGHKBW.js";
11
11
  import "./chunk-EZ67GBEO.js";
@@ -25,4 +25,4 @@ export {
25
25
  computeUnifiedDiff,
26
26
  getToolFingerprint
27
27
  };
28
- //# sourceMappingURL=dynamic-context-KPZECHZH.js.map
28
+ //# sourceMappingURL=dynamic-context-IWFD7U3D.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  abortRunnerRun,
3
3
  launchWorkflowRun
4
- } from "./chunk-W3WZ54KP.js";
5
- import "./chunk-VUANU5A5.js";
6
- import "./chunk-5QTERLHH.js";
7
- import "./chunk-TR4DQZIG.js";
4
+ } from "./chunk-UOEAKQBH.js";
5
+ import "./chunk-KDC4QHE7.js";
6
+ import "./chunk-AIXVERRI.js";
7
+ import "./chunk-SCP5KBNB.js";
8
8
  import "./chunk-LSEHJ2WI.js";
9
9
  import "./chunk-OXANSWVZ.js";
10
10
  import "./chunk-I22B6KWV.js";
@@ -13,7 +13,7 @@ import "./chunk-JE7LW7Y6.js";
13
13
  import "./chunk-OAN4BXEW.js";
14
14
  import "./chunk-RMOKNQAS.js";
15
15
  import "./chunk-J7GAZGZT.js";
16
- import "./chunk-O63CDVNI.js";
16
+ import "./chunk-STYGFTEB.js";
17
17
  import "./chunk-YBOU4ZFD.js";
18
18
  import "./chunk-5A4YN6I7.js";
19
19
  import "./chunk-XAAEP5XM.js";
@@ -49,4 +49,4 @@ export {
49
49
  abortRunnerRun,
50
50
  launchWorkflowRun
51
51
  };
52
- //# sourceMappingURL=launch-YWXQQWZN.js.map
52
+ //# sourceMappingURL=launch-FOUIDMGW.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  runAgentTurn,
3
3
  runChatTurn
4
- } from "./chunk-VUANU5A5.js";
5
- import "./chunk-5QTERLHH.js";
6
- import "./chunk-TR4DQZIG.js";
4
+ } from "./chunk-KDC4QHE7.js";
5
+ import "./chunk-AIXVERRI.js";
6
+ import "./chunk-SCP5KBNB.js";
7
7
  import "./chunk-LSEHJ2WI.js";
8
8
  import "./chunk-OXANSWVZ.js";
9
9
  import "./chunk-I22B6KWV.js";
@@ -12,7 +12,7 @@ import "./chunk-JE7LW7Y6.js";
12
12
  import "./chunk-OAN4BXEW.js";
13
13
  import "./chunk-RMOKNQAS.js";
14
14
  import "./chunk-J7GAZGZT.js";
15
- import "./chunk-O63CDVNI.js";
15
+ import "./chunk-STYGFTEB.js";
16
16
  import "./chunk-YBOU4ZFD.js";
17
17
  import "./chunk-5A4YN6I7.js";
18
18
  import "./chunk-XAAEP5XM.js";
@@ -60,4 +60,4 @@ export {
60
60
  runAgentTurn,
61
61
  runChatTurn
62
62
  };
63
- //# sourceMappingURL=orchestrator-SM3IHZFP.js.map
63
+ //# sourceMappingURL=orchestrator-PEXLQK3T.js.map
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "2.0.121",
3
+ "version": "2.0.122",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -3,7 +3,7 @@ import {
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
5
  } from "./chunk-YDDBPKVP.js";
6
- import "./chunk-TR4DQZIG.js";
6
+ import "./chunk-SCP5KBNB.js";
7
7
  import "./chunk-LSEHJ2WI.js";
8
8
  import "./chunk-OXANSWVZ.js";
9
9
  import "./chunk-I22B6KWV.js";
@@ -12,7 +12,7 @@ import "./chunk-JE7LW7Y6.js";
12
12
  import "./chunk-OAN4BXEW.js";
13
13
  import "./chunk-RMOKNQAS.js";
14
14
  import "./chunk-J7GAZGZT.js";
15
- import "./chunk-O63CDVNI.js";
15
+ import "./chunk-STYGFTEB.js";
16
16
  import "./chunk-YBOU4ZFD.js";
17
17
  import "./chunk-5A4YN6I7.js";
18
18
  import {
@@ -203,7 +203,7 @@ var QueueProcessor = class {
203
203
  }
204
204
  return llmClient;
205
205
  };
206
- const { runChatTurn } = await import("./orchestrator-SM3IHZFP.js");
206
+ const { runChatTurn } = await import("./orchestrator-PEXLQK3T.js");
207
207
  const runChatTurnParams = buildRunChatTurnParams({
208
208
  sessionManager,
209
209
  sessionId,
@@ -252,4 +252,4 @@ var QueueProcessor = class {
252
252
  export {
253
253
  QueueProcessor
254
254
  };
255
- //# sourceMappingURL=processor-EUJRA5GW.js.map
255
+ //# sourceMappingURL=processor-2GEVRLJP.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  createServer
3
- } from "./chunk-KD7JTG42.js";
3
+ } from "./chunk-WIZUASFY.js";
4
4
  import "./chunk-RSB4AR2A.js";
5
5
  import "./chunk-IJ53Y77N.js";
6
- import "./chunk-ZELEYSTY.js";
6
+ import "./chunk-22D7ZR2X.js";
7
7
  import "./chunk-YDDBPKVP.js";
8
- import "./chunk-W3WZ54KP.js";
9
- import "./chunk-VUANU5A5.js";
10
- import "./chunk-5QTERLHH.js";
8
+ import "./chunk-UOEAKQBH.js";
9
+ import "./chunk-KDC4QHE7.js";
10
+ import "./chunk-AIXVERRI.js";
11
11
  import "./chunk-WLJJRX22.js";
12
- import "./chunk-TR4DQZIG.js";
12
+ import "./chunk-SCP5KBNB.js";
13
13
  import "./chunk-LSEHJ2WI.js";
14
14
  import "./chunk-OXANSWVZ.js";
15
15
  import "./chunk-I22B6KWV.js";
@@ -18,7 +18,7 @@ import "./chunk-JE7LW7Y6.js";
18
18
  import "./chunk-OAN4BXEW.js";
19
19
  import "./chunk-RMOKNQAS.js";
20
20
  import "./chunk-J7GAZGZT.js";
21
- import "./chunk-O63CDVNI.js";
21
+ import "./chunk-STYGFTEB.js";
22
22
  import "./chunk-YBOU4ZFD.js";
23
23
  import "./chunk-5A4YN6I7.js";
24
24
  import "./chunk-XAAEP5XM.js";
@@ -31,7 +31,7 @@ import "./chunk-SLW3KKPP.js";
31
31
  import "./chunk-EZ67GBEO.js";
32
32
  import {
33
33
  VERSION
34
- } from "./chunk-OBB3JYMK.js";
34
+ } from "./chunk-VC3YCHDO.js";
35
35
  import "./chunk-LWXLNE6M.js";
36
36
  import "./chunk-LCLH6ZUL.js";
37
37
  import {
@@ -226,4 +226,4 @@ async function runServe(options) {
226
226
  export {
227
227
  runServe
228
228
  };
229
- //# sourceMappingURL=serve-DEY45HQS.js.map
229
+ //# sourceMappingURL=serve-3BPQGWYE.js.map