openfox 2.0.3 → 2.0.4

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 (27) hide show
  1. package/dist/{chat-handler-HXCAXFEV.js → chat-handler-WHE75FCD.js} +8 -8
  2. package/dist/{chunk-ITWVFGFV.js → chunk-4HBWSC6K.js} +1 -1
  3. package/dist/{chunk-7TTEGAO6.js → chunk-DTJJZZOC.js} +2 -2
  4. package/dist/{chunk-OP22QEB3.js → chunk-FRJQC77Y.js} +2 -2
  5. package/dist/{chunk-PK7CBACL.js → chunk-KXJWTSOS.js} +4 -4
  6. package/dist/{chunk-BVHFMAVN.js → chunk-LVS5YGTX.js} +1 -1
  7. package/dist/{chunk-FCFCBOWR.js → chunk-N374WCXC.js} +51 -23
  8. package/dist/{chunk-ZHK4XSLM.js → chunk-O2MR653P.js} +26 -26
  9. package/dist/{chunk-3YK3INGL.js → chunk-RVXAYREQ.js} +5 -5
  10. package/dist/{chunk-MSUES6A3.js → chunk-STJJDIXV.js} +4 -4
  11. package/dist/cli/dev.js +1 -1
  12. package/dist/cli/index.js +1 -1
  13. package/dist/{events-4T6IO56V.js → events-5SWEG62X.js} +3 -3
  14. package/dist/{folding-YOCGTZYH.js → folding-NUBDA4HS.js} +2 -2
  15. package/dist/{orchestrator-KQROHCQ7.js → orchestrator-X2ECL42Y.js} +7 -7
  16. package/dist/package.json +1 -1
  17. package/dist/{processor-YXAPERVZ.js → processor-7TYZNS4I.js} +7 -7
  18. package/dist/{protocol-49SJtN_P.d.ts → protocol-BljtHZrx.d.ts} +2 -2
  19. package/dist/{protocol-CN24IKQN.js → protocol-X53W2J73.js} +3 -3
  20. package/dist/{serve-WHN52MAF.js → serve-XPCJSKXX.js} +8 -8
  21. package/dist/server/index.d.ts +1 -1
  22. package/dist/server/index.js +7 -7
  23. package/dist/{service-GB7AIOG5.js → service-FJ4TW5L7.js} +14 -9
  24. package/dist/shared/index.d.ts +2 -2
  25. package/dist/shared/index.js +1 -1
  26. package/dist/{tools-ESHH53EB.js → tools-22OPY2O7.js} +6 -6
  27. package/package.json +1 -1
@@ -5,28 +5,28 @@ import {
5
5
  generateSessionName,
6
6
  getSessionMessageCount,
7
7
  needsNameGenerationCheck
8
- } from "./chunk-PK7CBACL.js";
8
+ } from "./chunk-KXJWTSOS.js";
9
9
  import {
10
10
  runChatTurn
11
- } from "./chunk-MSUES6A3.js";
12
- import "./chunk-FCFCBOWR.js";
11
+ } from "./chunk-STJJDIXV.js";
12
+ import "./chunk-N374WCXC.js";
13
13
  import "./chunk-DL6ZILAF.js";
14
14
  import "./chunk-PBGOZMVY.js";
15
15
  import "./chunk-VRGRAQDG.js";
16
16
  import "./chunk-XAMAYRDA.js";
17
17
  import {
18
18
  getEventStore
19
- } from "./chunk-OP22QEB3.js";
20
- import "./chunk-ITWVFGFV.js";
19
+ } from "./chunk-FRJQC77Y.js";
20
+ import "./chunk-4HBWSC6K.js";
21
21
  import {
22
22
  createChatMessageMessage,
23
23
  createPhaseChangedMessage,
24
24
  createSessionRunningMessage
25
- } from "./chunk-7TTEGAO6.js";
25
+ } from "./chunk-DTJJZZOC.js";
26
26
  import "./chunk-BJYPTN5S.js";
27
27
  import "./chunk-RFNEDBVO.js";
28
28
  import "./chunk-FBGWG4N6.js";
29
- import "./chunk-BVHFMAVN.js";
29
+ import "./chunk-LVS5YGTX.js";
30
30
  import "./chunk-CQGTEGKL.js";
31
31
  import "./chunk-Z4SWOUWC.js";
32
32
  import {
@@ -161,4 +161,4 @@ export {
161
161
  startChatSession,
162
162
  stopSessionExecution
163
163
  };
164
- //# sourceMappingURL=chat-handler-HXCAXFEV.js.map
164
+ //# sourceMappingURL=chat-handler-WHE75FCD.js.map
@@ -856,4 +856,4 @@ export {
856
856
  getMessagesForWindow,
857
857
  buildContextMessagesFromMessages
858
858
  };
859
- //# sourceMappingURL=chunk-ITWVFGFV.js.map
859
+ //# sourceMappingURL=chunk-4HBWSC6K.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createServerMessage,
3
3
  isClientMessage
4
- } from "./chunk-BVHFMAVN.js";
4
+ } from "./chunk-LVS5YGTX.js";
5
5
 
6
6
  // src/server/ws/protocol.ts
7
7
  function enrichMessagesWithToolResults(messages) {
@@ -333,4 +333,4 @@ export {
333
333
  createQueueStateMessage,
334
334
  storedEventToServerMessage
335
335
  };
336
- //# sourceMappingURL=chunk-7TTEGAO6.js.map
336
+ //# sourceMappingURL=chunk-DTJJZZOC.js.map
@@ -5,7 +5,7 @@ import {
5
5
  foldContextState,
6
6
  foldSessionState,
7
7
  spreadOptionalMessageFields
8
- } from "./chunk-ITWVFGFV.js";
8
+ } from "./chunk-4HBWSC6K.js";
9
9
  import {
10
10
  getDatabase
11
11
  } from "./chunk-FBGWG4N6.js";
@@ -1397,4 +1397,4 @@ export {
1397
1397
  truncateSessionMessages,
1398
1398
  getRecentUserPromptsForSession
1399
1399
  };
1400
- //# sourceMappingURL=chunk-OP22QEB3.js.map
1400
+ //# sourceMappingURL=chunk-FRJQC77Y.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  getEventStore,
3
3
  updateSessionMetadata
4
- } from "./chunk-OP22QEB3.js";
4
+ } from "./chunk-FRJQC77Y.js";
5
5
  import {
6
6
  buildMessagesFromStoredEvents,
7
7
  foldPendingConfirmations
8
- } from "./chunk-ITWVFGFV.js";
8
+ } from "./chunk-4HBWSC6K.js";
9
9
  import {
10
10
  createContextStateMessage,
11
11
  createSessionStateMessage
12
- } from "./chunk-7TTEGAO6.js";
12
+ } from "./chunk-DTJJZZOC.js";
13
13
  import {
14
14
  logger
15
15
  } from "./chunk-K44MW7JJ.js";
@@ -147,4 +147,4 @@ export {
147
147
  needsNameGenerationCheck,
148
148
  applyGeneratedSessionName
149
149
  };
150
- //# sourceMappingURL=chunk-PK7CBACL.js.map
150
+ //# sourceMappingURL=chunk-KXJWTSOS.js.map
@@ -26,4 +26,4 @@ export {
26
26
  isClientMessage,
27
27
  isServerMessage
28
28
  };
29
- //# sourceMappingURL=chunk-BVHFMAVN.js.map
29
+ //# sourceMappingURL=chunk-LVS5YGTX.js.map
@@ -22,7 +22,7 @@ import {
22
22
  getCurrentWindowMessageOptions,
23
23
  getEventStore,
24
24
  getRuntimeConfig
25
- } from "./chunk-OP22QEB3.js";
25
+ } from "./chunk-FRJQC77Y.js";
26
26
  import {
27
27
  buildContextMessagesFromEventHistory,
28
28
  foldContextState,
@@ -31,14 +31,14 @@ import {
31
31
  handleToolCall,
32
32
  handleToolResult,
33
33
  stripOrphanedToolCalls
34
- } from "./chunk-ITWVFGFV.js";
34
+ } from "./chunk-4HBWSC6K.js";
35
35
  import {
36
36
  createChatDoneMessage,
37
37
  createChatMessageMessage,
38
38
  createChatMessageUpdatedMessage,
39
39
  createChatPathConfirmationMessage,
40
40
  createQueueStateMessage
41
- } from "./chunk-7TTEGAO6.js";
41
+ } from "./chunk-DTJJZZOC.js";
42
42
  import {
43
43
  AskUserInterrupt,
44
44
  askUserTool
@@ -2629,6 +2629,7 @@ async function executeTools(assistantMsgId, toolCalls, ctx, append) {
2629
2629
  const toolMessages = [];
2630
2630
  let returnValueContent;
2631
2631
  let returnValueResult;
2632
+ let stepDoneCalled = false;
2632
2633
  if (ctx.signal?.aborted) {
2633
2634
  throw new Error("Aborted");
2634
2635
  }
@@ -2713,6 +2714,9 @@ async function executeTools(assistantMsgId, toolCalls, ctx, append) {
2713
2714
  returnValueContent = toolCall.arguments["content"];
2714
2715
  returnValueResult = toolCall.arguments["result"];
2715
2716
  }
2717
+ if (toolCall.name === "step_done" && toolResult.success) {
2718
+ stepDoneCalled = true;
2719
+ }
2716
2720
  const content = stripAnsi(
2717
2721
  toolResult.success ? toolResult.output ?? "Success" : toolResult.output ? `${toolResult.output}
2718
2722
 
@@ -2737,7 +2741,7 @@ Error: ${toolResult.error}` : `Error: ${toolResult.error}`
2737
2741
  toolCallId: result.toolCall.id
2738
2742
  });
2739
2743
  }
2740
- return { toolMessages, criteriaChanged: false, returnValueContent, returnValueResult };
2744
+ return { toolMessages, criteriaChanged: false, returnValueContent, returnValueResult, stepDoneCalled };
2741
2745
  }
2742
2746
 
2743
2747
  // src/server/chat/retry-limiter.ts
@@ -2795,6 +2799,25 @@ function emitPartialDoneEvents(_sessionId, assistantMsgId, statsIdentity, mode,
2795
2799
  );
2796
2800
  append(createChatDoneEvent(assistantMsgId, "stopped", stats));
2797
2801
  }
2802
+ function emitDoneAndBreak(assistantMsgId, segments, statsIdentity, mode, turnMetrics, append, onMessage, reason) {
2803
+ const stats = turnMetrics.buildStats(statsIdentity, mode);
2804
+ append(
2805
+ createMessageDoneEvent(assistantMsgId, {
2806
+ ...segments ? { segments } : {},
2807
+ stats
2808
+ })
2809
+ );
2810
+ append(createChatDoneEvent(assistantMsgId, reason, stats));
2811
+ if (onMessage) {
2812
+ onMessage(
2813
+ createChatMessageUpdatedMessage(assistantMsgId, {
2814
+ isStreaming: false,
2815
+ stats
2816
+ })
2817
+ );
2818
+ onMessage(createChatDoneMessage(assistantMsgId, reason, stats));
2819
+ }
2820
+ }
2798
2821
  var MAX_TRUNCATION_RETRIES = 3;
2799
2822
  var CONTINUE_PROMPT = "Continue your previous response. Do NOT repeat what you already wrote.";
2800
2823
  async function runTopLevelAgentLoop(config, turnMetrics) {
@@ -3032,28 +3055,33 @@ ${COMPACTION_PROMPT}`,
3032
3055
  }
3033
3056
  batchContext.agentTimeout = getRuntimeConfig().agent.toolTimeout;
3034
3057
  const batchResult = await executeTools(assistantMsgId, result.toolCalls, batchContext, append);
3058
+ if (batchResult.stepDoneCalled) {
3059
+ emitDoneAndBreak(
3060
+ assistantMsgId,
3061
+ result.segments,
3062
+ statsIdentity,
3063
+ mode,
3064
+ turnMetrics,
3065
+ append,
3066
+ onMessage,
3067
+ "step_done"
3068
+ );
3069
+ break;
3070
+ }
3035
3071
  if (batchResult.returnValueContent) {
3036
3072
  returnValueContent = batchResult.returnValueContent;
3037
3073
  returnValueResult = batchResult.returnValueResult;
3038
3074
  if (config.breakOnReturnValue) {
3039
- const stats2 = turnMetrics.buildStats(statsIdentity, mode);
3040
- append(
3041
- createMessageDoneEvent(assistantMsgId, {
3042
- segments: result.segments,
3043
- stats: stats2
3044
- })
3075
+ emitDoneAndBreak(
3076
+ assistantMsgId,
3077
+ result.segments,
3078
+ statsIdentity,
3079
+ mode,
3080
+ turnMetrics,
3081
+ append,
3082
+ onMessage,
3083
+ "complete"
3045
3084
  );
3046
- append(createChatDoneEvent(assistantMsgId, "complete", stats2));
3047
- if (onMessage) {
3048
- onMessage(
3049
- createChatMessageUpdatedMessage(assistantMsgId, {
3050
- isStreaming: false,
3051
- stats: stats2
3052
- })
3053
- );
3054
- const { createChatDoneMessage: createChatDoneMessage2 } = await import("./protocol-CN24IKQN.js");
3055
- onMessage(createChatDoneMessage2(assistantMsgId, "complete", stats2));
3056
- }
3057
3085
  break;
3058
3086
  }
3059
3087
  }
@@ -3733,7 +3761,7 @@ var callSubAgentTool = {
3733
3761
  };
3734
3762
  }
3735
3763
  try {
3736
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-ESHH53EB.js");
3764
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-22OPY2O7.js");
3737
3765
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3738
3766
  const turnMetrics = new TurnMetrics();
3739
3767
  const result = await executeSubAgent({
@@ -4783,4 +4811,4 @@ export {
4783
4811
  getToolRegistryForAgent,
4784
4812
  createToolRegistry
4785
4813
  };
4786
- //# sourceMappingURL=chunk-FCFCBOWR.js.map
4814
+ //# sourceMappingURL=chunk-N374WCXC.js.map
@@ -3,7 +3,7 @@ import {
3
3
  injectWorkflowKickoffIfNeeded,
4
4
  runAgentTurn,
5
5
  runChatTurn
6
- } from "./chunk-MSUES6A3.js";
6
+ } from "./chunk-STJJDIXV.js";
7
7
  import {
8
8
  COMPACTION_PROMPT,
9
9
  TurnMetrics,
@@ -58,7 +58,7 @@ import {
58
58
  skillExists,
59
59
  spawnShellProcess,
60
60
  streamLLMPure
61
- } from "./chunk-FCFCBOWR.js";
61
+ } from "./chunk-N374WCXC.js";
62
62
  import {
63
63
  getPathSeparator,
64
64
  getPlatformShell,
@@ -95,11 +95,11 @@ import {
95
95
  updateSessionMetadata,
96
96
  updateSessionProvider,
97
97
  updateSessionRunning
98
- } from "./chunk-OP22QEB3.js";
98
+ } from "./chunk-FRJQC77Y.js";
99
99
  import {
100
100
  buildMessagesFromStoredEvents,
101
101
  foldPendingConfirmations
102
- } from "./chunk-ITWVFGFV.js";
102
+ } from "./chunk-4HBWSC6K.js";
103
103
  import {
104
104
  createChatErrorMessage,
105
105
  createChatMessageMessage,
@@ -114,7 +114,7 @@ import {
114
114
  parseClientMessage,
115
115
  serializeServerMessage,
116
116
  storedEventToServerMessage
117
- } from "./chunk-7TTEGAO6.js";
117
+ } from "./chunk-DTJJZZOC.js";
118
118
  import {
119
119
  EventEmitter,
120
120
  provideAnswer
@@ -127,7 +127,7 @@ import {
127
127
  } from "./chunk-VUQCQXXJ.js";
128
128
  import {
129
129
  createServerMessage
130
- } from "./chunk-BVHFMAVN.js";
130
+ } from "./chunk-LVS5YGTX.js";
131
131
  import {
132
132
  getGlobalConfigDir
133
133
  } from "./chunk-CQGTEGKL.js";
@@ -5793,7 +5793,7 @@ import { Router as Router6 } from "express";
5793
5793
  import { spawn as spawn5 } from "child_process";
5794
5794
 
5795
5795
  // src/constants.ts
5796
- var VERSION = "2.0.3";
5796
+ var VERSION = "2.0.4";
5797
5797
 
5798
5798
  // src/server/routes/auto-update.ts
5799
5799
  var updateInProgress = false;
@@ -6086,7 +6086,7 @@ async function createServerHandle(config4) {
6086
6086
  res.json({ project });
6087
6087
  });
6088
6088
  app.get("/api/sessions", async (req, res) => {
6089
- const { getRecentUserPromptsForSession } = await import("./events-4T6IO56V.js");
6089
+ const { getRecentUserPromptsForSession } = await import("./events-5SWEG62X.js");
6090
6090
  const projectId = req.query["projectId"];
6091
6091
  const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
6092
6092
  const offset = parseInt(req.query["offset"]) || 0;
@@ -6119,8 +6119,8 @@ async function createServerHandle(config4) {
6119
6119
  res.status(201).json({ session });
6120
6120
  });
6121
6121
  app.get("/api/sessions/:id", async (req, res) => {
6122
- const { getEventStore: getEventStore2 } = await import("./events-4T6IO56V.js");
6123
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-YOCGTZYH.js");
6122
+ const { getEventStore: getEventStore2 } = await import("./events-5SWEG62X.js");
6123
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-NUBDA4HS.js");
6124
6124
  const session = sessionManager.getSession(req.params.id);
6125
6125
  if (!session) {
6126
6126
  return res.status(404).json({ error: "Session not found" });
@@ -6150,8 +6150,8 @@ async function createServerHandle(config4) {
6150
6150
  res.json({ success: true });
6151
6151
  });
6152
6152
  app.post("/api/sessions/:id/provider", async (req, res) => {
6153
- const { getEventStore: getEventStore2 } = await import("./events-4T6IO56V.js");
6154
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-YOCGTZYH.js");
6153
+ const { getEventStore: getEventStore2 } = await import("./events-5SWEG62X.js");
6154
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-NUBDA4HS.js");
6155
6155
  const sessionId = req.params.id;
6156
6156
  const session = sessionManager.getSession(sessionId);
6157
6157
  if (!session) {
@@ -6193,8 +6193,8 @@ async function createServerHandle(config4) {
6193
6193
  res.json({ success: true });
6194
6194
  });
6195
6195
  app.put("/api/sessions/:id/mode", async (req, res) => {
6196
- const { getEventStore: getEventStore2 } = await import("./events-4T6IO56V.js");
6197
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-YOCGTZYH.js");
6196
+ const { getEventStore: getEventStore2 } = await import("./events-5SWEG62X.js");
6197
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-NUBDA4HS.js");
6198
6198
  const sessionId = req.params.id;
6199
6199
  const session = sessionManager.getSession(sessionId);
6200
6200
  if (!session) {
@@ -6250,14 +6250,14 @@ async function createServerHandle(config4) {
6250
6250
  if (!callId || approved === void 0) {
6251
6251
  return res.status(400).json({ error: "callId and approved are required" });
6252
6252
  }
6253
- const { providePathConfirmation } = await import("./tools-ESHH53EB.js");
6253
+ const { providePathConfirmation } = await import("./tools-22OPY2O7.js");
6254
6254
  const result = providePathConfirmation(callId, approved, alwaysAllow);
6255
6255
  if (!result.found) {
6256
6256
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
6257
6257
  }
6258
- const { getEventStore: getEventStore2 } = await import("./events-4T6IO56V.js");
6259
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-YOCGTZYH.js");
6260
- const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-CN24IKQN.js");
6258
+ const { getEventStore: getEventStore2 } = await import("./events-5SWEG62X.js");
6259
+ const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-NUBDA4HS.js");
6260
+ const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-X53W2J73.js");
6261
6261
  const eventStore = getEventStore2();
6262
6262
  const events = eventStore.getEvents(sessionId);
6263
6263
  const messages = buildMessagesFromStoredEvents2(events);
@@ -6274,7 +6274,7 @@ async function createServerHandle(config4) {
6274
6274
  if (!callId || !answer) {
6275
6275
  return res.status(400).json({ error: "callId and answer are required" });
6276
6276
  }
6277
- const { provideAnswer: provideAnswer2 } = await import("./tools-ESHH53EB.js");
6277
+ const { provideAnswer: provideAnswer2 } = await import("./tools-22OPY2O7.js");
6278
6278
  const found = provideAnswer2(callId, answer);
6279
6279
  if (!found) {
6280
6280
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -6310,15 +6310,15 @@ async function createServerHandle(config4) {
6310
6310
  if (!session) {
6311
6311
  return res.status(404).json({ error: "Session not found" });
6312
6312
  }
6313
- const { stopSessionExecution } = await import("./chat-handler-HXCAXFEV.js");
6314
- const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-ESHH53EB.js");
6313
+ const { stopSessionExecution } = await import("./chat-handler-WHE75FCD.js");
6314
+ const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-22OPY2O7.js");
6315
6315
  const queuedMessages = sessionManager.getQueueState(sessionId);
6316
6316
  sessionManager.clearMessageQueue(sessionId);
6317
6317
  stopSessionExecution(sessionId, sessionManager);
6318
6318
  abortSession(sessionId);
6319
6319
  cancelQuestionsForSession(sessionId, "Session stopped by user");
6320
6320
  cancelPathConfirmationsForSession(sessionId, "Session stopped by user");
6321
- const eventStore = (await import("./events-4T6IO56V.js")).getEventStore();
6321
+ const eventStore = (await import("./events-5SWEG62X.js")).getEventStore();
6322
6322
  eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
6323
6323
  res.json({ success: true, queuedMessages });
6324
6324
  });
@@ -6332,7 +6332,7 @@ async function createServerHandle(config4) {
6332
6332
  if (typeof messageIndex !== "number" || messageIndex < 0) {
6333
6333
  return res.status(400).json({ error: "messageIndex must be a non-negative number" });
6334
6334
  }
6335
- const { truncateSessionMessages } = await import("./events-4T6IO56V.js");
6335
+ const { truncateSessionMessages } = await import("./events-5SWEG62X.js");
6336
6336
  truncateSessionMessages(sessionId, messageIndex);
6337
6337
  res.json({ success: true });
6338
6338
  });
@@ -6350,7 +6350,7 @@ async function createServerHandle(config4) {
6350
6350
  if (!msg) {
6351
6351
  return res.status(400).json({ error: "Message not found at this index" });
6352
6352
  }
6353
- const { truncateSessionMessages } = await import("./events-4T6IO56V.js");
6353
+ const { truncateSessionMessages } = await import("./events-5SWEG62X.js");
6354
6354
  truncateSessionMessages(sessionId, messageIndex - 1);
6355
6355
  sessionManager.queueMessage(sessionId, "asap", msg.content, msg.attachments, msg.messageKind);
6356
6356
  res.json({ success: true });
@@ -6921,7 +6921,7 @@ async function createServerHandle(config4) {
6921
6921
  providerManager
6922
6922
  );
6923
6923
  const wss = wssExports.wss;
6924
- const { QueueProcessor } = await import("./processor-YXAPERVZ.js");
6924
+ const { QueueProcessor } = await import("./processor-7TYZNS4I.js");
6925
6925
  const queueProcessor = new QueueProcessor({
6926
6926
  sessionManager,
6927
6927
  providerManager,
@@ -6995,4 +6995,4 @@ export {
6995
6995
  createServerHandle,
6996
6996
  createServer
6997
6997
  };
6998
- //# sourceMappingURL=chunk-ZHK4XSLM.js.map
6998
+ //# sourceMappingURL=chunk-O2MR653P.js.map
@@ -157,12 +157,12 @@ async function runCli(options) {
157
157
  break;
158
158
  }
159
159
  case "service": {
160
- const { runServiceCommand } = await import("./service-GB7AIOG5.js");
161
- const [, subcommand] = positionals;
160
+ const { runServiceCommand } = await import("./service-FJ4TW5L7.js");
161
+ const [, subcommand, ...serviceArgs] = positionals;
162
162
  if (subcommand === "--help" || subcommand === "-h" || values.help) {
163
163
  runServiceCommand(mode, void 0);
164
164
  } else {
165
- await runServiceCommand(mode, subcommand);
165
+ await runServiceCommand(mode, subcommand, ...serviceArgs);
166
166
  }
167
167
  break;
168
168
  }
@@ -193,7 +193,7 @@ async function runCli(options) {
193
193
  if (!configExists) {
194
194
  await runNetworkSetup(mode);
195
195
  }
196
- const { runServe } = await import("./serve-WHN52MAF.js");
196
+ const { runServe } = await import("./serve-XPCJSKXX.js");
197
197
  const serveOptions = { mode };
198
198
  if (values.port) serveOptions.port = parseInt(values.port);
199
199
  if (values["no-browser"] === true) serveOptions.openBrowser = false;
@@ -205,4 +205,4 @@ async function runCli(options) {
205
205
  export {
206
206
  runCli
207
207
  };
208
- //# sourceMappingURL=chunk-3YK3INGL.js.map
208
+ //# sourceMappingURL=chunk-RVXAYREQ.js.map
@@ -17,16 +17,16 @@ import {
17
17
  loadAllAgentsDefault,
18
18
  processEventsForConversation,
19
19
  runTopLevelAgentLoop
20
- } from "./chunk-FCFCBOWR.js";
20
+ } from "./chunk-N374WCXC.js";
21
21
  import {
22
22
  getCurrentContextWindowId,
23
23
  getCurrentWindowMessageOptions,
24
24
  getEventStore,
25
25
  getRuntimeConfig
26
- } from "./chunk-OP22QEB3.js";
26
+ } from "./chunk-FRJQC77Y.js";
27
27
  import {
28
28
  buildSnapshotFromSessionState
29
- } from "./chunk-ITWVFGFV.js";
29
+ } from "./chunk-4HBWSC6K.js";
30
30
  import {
31
31
  getGlobalConfigDir
32
32
  } from "./chunk-CQGTEGKL.js";
@@ -311,4 +311,4 @@ export {
311
311
  runAgentTurn,
312
312
  injectWorkflowKickoffIfNeeded
313
313
  };
314
- //# sourceMappingURL=chunk-MSUES6A3.js.map
314
+ //# sourceMappingURL=chunk-STJJDIXV.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-3YK3INGL.js";
4
+ } from "../chunk-RVXAYREQ.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-K44MW7JJ.js";
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-3YK3INGL.js";
4
+ } from "../chunk-RVXAYREQ.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-K44MW7JJ.js";
@@ -38,7 +38,7 @@ import {
38
38
  isStoredEvent,
39
39
  isTurnEvent,
40
40
  truncateSessionMessages
41
- } from "./chunk-OP22QEB3.js";
41
+ } from "./chunk-FRJQC77Y.js";
42
42
  import {
43
43
  buildContextMessagesFromEventHistory,
44
44
  buildContextMessagesFromMessages,
@@ -55,7 +55,7 @@ import {
55
55
  foldTodos,
56
56
  foldTurnEventsToSnapshotMessages,
57
57
  getMessagesForWindow
58
- } from "./chunk-ITWVFGFV.js";
58
+ } from "./chunk-4HBWSC6K.js";
59
59
  import "./chunk-FBGWG4N6.js";
60
60
  import "./chunk-K44MW7JJ.js";
61
61
  export {
@@ -114,4 +114,4 @@ export {
114
114
  isTurnEvent,
115
115
  truncateSessionMessages
116
116
  };
117
- //# sourceMappingURL=events-4T6IO56V.js.map
117
+ //# sourceMappingURL=events-5SWEG62X.js.map
@@ -23,7 +23,7 @@ import {
23
23
  handleToolResult,
24
24
  spreadOptionalMessageFields,
25
25
  stripOrphanedToolCalls
26
- } from "./chunk-ITWVFGFV.js";
26
+ } from "./chunk-4HBWSC6K.js";
27
27
  export {
28
28
  buildContextMessagesFromEventHistory,
29
29
  buildContextMessagesFromMessages,
@@ -50,4 +50,4 @@ export {
50
50
  spreadOptionalMessageFields,
51
51
  stripOrphanedToolCalls
52
52
  };
53
- //# sourceMappingURL=folding-YOCGTZYH.js.map
53
+ //# sourceMappingURL=folding-NUBDA4HS.js.map
@@ -2,7 +2,7 @@ import {
2
2
  injectWorkflowKickoffIfNeeded,
3
3
  runAgentTurn,
4
4
  runChatTurn
5
- } from "./chunk-MSUES6A3.js";
5
+ } from "./chunk-STJJDIXV.js";
6
6
  import {
7
7
  TurnMetrics,
8
8
  createChatDoneEvent,
@@ -10,18 +10,18 @@ import {
10
10
  createMessageStartEvent,
11
11
  createToolCallEvent,
12
12
  createToolResultEvent
13
- } from "./chunk-FCFCBOWR.js";
13
+ } from "./chunk-N374WCXC.js";
14
14
  import "./chunk-DL6ZILAF.js";
15
15
  import "./chunk-PBGOZMVY.js";
16
16
  import "./chunk-VRGRAQDG.js";
17
17
  import "./chunk-XAMAYRDA.js";
18
- import "./chunk-OP22QEB3.js";
19
- import "./chunk-ITWVFGFV.js";
20
- import "./chunk-7TTEGAO6.js";
18
+ import "./chunk-FRJQC77Y.js";
19
+ import "./chunk-4HBWSC6K.js";
20
+ import "./chunk-DTJJZZOC.js";
21
21
  import "./chunk-BJYPTN5S.js";
22
22
  import "./chunk-RFNEDBVO.js";
23
23
  import "./chunk-FBGWG4N6.js";
24
- import "./chunk-BVHFMAVN.js";
24
+ import "./chunk-LVS5YGTX.js";
25
25
  import "./chunk-CQGTEGKL.js";
26
26
  import "./chunk-Z4SWOUWC.js";
27
27
  import "./chunk-K44MW7JJ.js";
@@ -36,4 +36,4 @@ export {
36
36
  runAgentTurn,
37
37
  runChatTurn
38
38
  };
39
- //# sourceMappingURL=orchestrator-KQROHCQ7.js.map
39
+ //# sourceMappingURL=orchestrator-X2ECL42Y.js.map
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -5,17 +5,17 @@ import {
5
5
  generateSessionName,
6
6
  getSessionMessageCount,
7
7
  needsNameGenerationCheck
8
- } from "./chunk-PK7CBACL.js";
8
+ } from "./chunk-KXJWTSOS.js";
9
9
  import {
10
10
  getEventStore
11
- } from "./chunk-OP22QEB3.js";
12
- import "./chunk-ITWVFGFV.js";
11
+ } from "./chunk-FRJQC77Y.js";
12
+ import "./chunk-4HBWSC6K.js";
13
13
  import {
14
14
  createChatMessageMessage,
15
15
  createSessionRunningMessage
16
- } from "./chunk-7TTEGAO6.js";
16
+ } from "./chunk-DTJJZZOC.js";
17
17
  import "./chunk-FBGWG4N6.js";
18
- import "./chunk-BVHFMAVN.js";
18
+ import "./chunk-LVS5YGTX.js";
19
19
  import {
20
20
  logger
21
21
  } from "./chunk-K44MW7JJ.js";
@@ -181,7 +181,7 @@ var QueueProcessor = class {
181
181
  backend: provider?.backend ?? llmClient.getBackend(),
182
182
  model: llmClient.getModel()
183
183
  };
184
- const { runChatTurn } = await import("./orchestrator-KQROHCQ7.js");
184
+ const { runChatTurn } = await import("./orchestrator-X2ECL42Y.js");
185
185
  const runChatTurnParams = buildRunChatTurnParams({
186
186
  sessionManager,
187
187
  sessionId,
@@ -225,4 +225,4 @@ var QueueProcessor = class {
225
225
  export {
226
226
  QueueProcessor
227
227
  };
228
- //# sourceMappingURL=processor-YXAPERVZ.js.map
228
+ //# sourceMappingURL=processor-7TYZNS4I.js.map
@@ -226,7 +226,7 @@ interface Message {
226
226
  segments?: MessageSegment[];
227
227
  stats?: MessageStats;
228
228
  partial?: boolean;
229
- completeReason?: 'complete' | 'stopped' | 'error' | 'waiting_for_user' | 'truncated';
229
+ completeReason?: 'complete' | 'stopped' | 'error' | 'waiting_for_user' | 'truncated' | 'step_done';
230
230
  isSystemGenerated?: boolean;
231
231
  isStreaming?: boolean;
232
232
  messageKind?: 'correction' | 'auto-prompt' | 'context-reset' | 'task-completed' | 'workflow-started' | 'command';
@@ -624,7 +624,7 @@ interface ChatMessageUpdatedPayload {
624
624
  }
625
625
  interface ChatDonePayload {
626
626
  messageId: string;
627
- reason: 'complete' | 'stopped' | 'error' | 'waiting_for_user' | 'truncated';
627
+ reason: 'complete' | 'stopped' | 'error' | 'waiting_for_user' | 'truncated' | 'step_done';
628
628
  agentType?: 'sub-agent';
629
629
  stats?: {
630
630
  model: string;
@@ -35,8 +35,8 @@ import {
35
35
  parseClientMessage,
36
36
  serializeServerMessage,
37
37
  storedEventToServerMessage
38
- } from "./chunk-7TTEGAO6.js";
39
- import "./chunk-BVHFMAVN.js";
38
+ } from "./chunk-DTJJZZOC.js";
39
+ import "./chunk-LVS5YGTX.js";
40
40
  export {
41
41
  createChatAskUserMessage,
42
42
  createChatDeltaMessage,
@@ -75,4 +75,4 @@ export {
75
75
  serializeServerMessage,
76
76
  storedEventToServerMessage
77
77
  };
78
- //# sourceMappingURL=protocol-CN24IKQN.js.map
78
+ //# sourceMappingURL=protocol-X53W2J73.js.map
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  VERSION,
3
3
  createServer
4
- } from "./chunk-ZHK4XSLM.js";
4
+ } from "./chunk-O2MR653P.js";
5
5
  import "./chunk-NZCKCJH5.js";
6
- import "./chunk-MSUES6A3.js";
7
- import "./chunk-FCFCBOWR.js";
6
+ import "./chunk-STJJDIXV.js";
7
+ import "./chunk-N374WCXC.js";
8
8
  import "./chunk-DL6ZILAF.js";
9
9
  import "./chunk-PBGOZMVY.js";
10
10
  import "./chunk-VRGRAQDG.js";
11
11
  import "./chunk-XAMAYRDA.js";
12
12
  import {
13
13
  loadConfig
14
- } from "./chunk-OP22QEB3.js";
15
- import "./chunk-ITWVFGFV.js";
16
- import "./chunk-7TTEGAO6.js";
14
+ } from "./chunk-FRJQC77Y.js";
15
+ import "./chunk-4HBWSC6K.js";
16
+ import "./chunk-DTJJZZOC.js";
17
17
  import "./chunk-BJYPTN5S.js";
18
18
  import "./chunk-RFNEDBVO.js";
19
19
  import "./chunk-FBGWG4N6.js";
20
20
  import "./chunk-VUQCQXXJ.js";
21
- import "./chunk-BVHFMAVN.js";
21
+ import "./chunk-LVS5YGTX.js";
22
22
  import {
23
23
  getActiveProvider,
24
24
  getDefaultModel,
@@ -188,4 +188,4 @@ async function runServe(options) {
188
188
  export {
189
189
  runServe
190
190
  };
191
- //# sourceMappingURL=serve-WHN52MAF.js.map
191
+ //# sourceMappingURL=serve-XPCJSKXX.js.map
@@ -1,4 +1,4 @@
1
- import { aN as ToolCall, c as Attachment, R as Diagnostic, am as Provider, ab as ModelConfig, az as Session, aI as SessionSummary, ai as Project, aD as SessionMode, aF as SessionPhase, M as Message, J as Criterion, L as CriterionStatus, a8 as MetadataEntry, av as QueuedMessage, F as ContextState, O as DangerLevel$1, ax as ServerMessage, aK as StatsIdentity, aQ as ToolResult, D as Config } from '../protocol-49SJtN_P.js';
1
+ import { aN as ToolCall, c as Attachment, R as Diagnostic, am as Provider, ab as ModelConfig, az as Session, aI as SessionSummary, ai as Project, aD as SessionMode, aF as SessionPhase, M as Message, J as Criterion, L as CriterionStatus, a8 as MetadataEntry, av as QueuedMessage, F as ContextState, O as DangerLevel$1, ax as ServerMessage, aK as StatsIdentity, aQ as ToolResult, D as Config } from '../protocol-BljtHZrx.js';
2
2
  import { Server } from 'node:http';
3
3
 
4
4
  interface LLMMessage {
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  createServer,
3
3
  createServerHandle
4
- } from "../chunk-ZHK4XSLM.js";
4
+ } from "../chunk-O2MR653P.js";
5
5
  import "../chunk-NZCKCJH5.js";
6
- import "../chunk-MSUES6A3.js";
7
- import "../chunk-FCFCBOWR.js";
6
+ import "../chunk-STJJDIXV.js";
7
+ import "../chunk-N374WCXC.js";
8
8
  import "../chunk-DL6ZILAF.js";
9
9
  import "../chunk-PBGOZMVY.js";
10
10
  import "../chunk-VRGRAQDG.js";
11
11
  import "../chunk-XAMAYRDA.js";
12
- import "../chunk-OP22QEB3.js";
13
- import "../chunk-ITWVFGFV.js";
14
- import "../chunk-7TTEGAO6.js";
12
+ import "../chunk-FRJQC77Y.js";
13
+ import "../chunk-4HBWSC6K.js";
14
+ import "../chunk-DTJJZZOC.js";
15
15
  import "../chunk-BJYPTN5S.js";
16
16
  import "../chunk-RFNEDBVO.js";
17
17
  import "../chunk-FBGWG4N6.js";
18
18
  import "../chunk-VUQCQXXJ.js";
19
- import "../chunk-BVHFMAVN.js";
19
+ import "../chunk-LVS5YGTX.js";
20
20
  import "../chunk-CQGTEGKL.js";
21
21
  import "../chunk-A52FXWJX.js";
22
22
  import "../chunk-Z4SWOUWC.js";
@@ -122,7 +122,7 @@ WantedBy=graphical-session.target
122
122
  await writeFile(servicePath, serviceContent, "utf-8");
123
123
  console.log(`Created: ${servicePath}`);
124
124
  }
125
- async function runServiceCommand(_mode, subcommand) {
125
+ async function runServiceCommand(_mode, subcommand, ...args) {
126
126
  if (!subcommand) {
127
127
  printServiceHelp();
128
128
  return;
@@ -144,7 +144,7 @@ async function runServiceCommand(_mode, subcommand) {
144
144
  await serviceStatus();
145
145
  break;
146
146
  case "logs":
147
- await serviceLogs();
147
+ await serviceLogs(args);
148
148
  break;
149
149
  case "uninstall":
150
150
  await serviceUninstall();
@@ -168,7 +168,7 @@ Commands:
168
168
  stop Stop the service (if installed)
169
169
  restart Restart the service (if installed)
170
170
  status Show service status
171
- logs Show recent service logs
171
+ logs [-f] Show recent service logs (use -f or --follow to tail)
172
172
  uninstall Disable and remove the service files
173
173
  `);
174
174
  }
@@ -243,16 +243,21 @@ async function serviceStatus() {
243
243
  systemctl(["is-active", SERVICE_NAME], false);
244
244
  systemctl(["is-enabled", SERVICE_NAME], false);
245
245
  }
246
- async function serviceLogs() {
246
+ async function serviceLogs(args) {
247
247
  const installed = await pathExists(SERVICE_PATH);
248
248
  if (!installed) {
249
249
  console.log("Service not installed.");
250
250
  return;
251
251
  }
252
- const result = spawnSync("journalctl", ["--user", "-u", SERVICE_NAME, "-n", "50", "--no-pager"], {
253
- encoding: "utf-8"
254
- });
255
- console.log(result.stdout || result.stderr || "No logs");
252
+ const follow = args.includes("-f") || args.includes("--follow");
253
+ if (follow) {
254
+ spawn("journalctl", ["--user", "-u", SERVICE_NAME, "-f", "--no-pager"], { stdio: "inherit" });
255
+ } else {
256
+ const result = spawnSync("journalctl", ["--user", "-u", SERVICE_NAME, "-n", "50", "--no-pager"], {
257
+ encoding: "utf-8"
258
+ });
259
+ console.log(result.stdout || result.stderr || "No logs");
260
+ }
256
261
  }
257
262
  async function serviceUninstall() {
258
263
  console.log("Uninstalling OpenFox service...\n");
@@ -282,4 +287,4 @@ async function serviceUninstall() {
282
287
  export {
283
288
  runServiceCommand
284
289
  };
285
- //# sourceMappingURL=service-GB7AIOG5.js.map
290
+ //# sourceMappingURL=service-FJ4TW5L7.js.map
@@ -1,5 +1,5 @@
1
- import { M as Message, S as SessionStats } from '../protocol-49SJtN_P.js';
2
- export { A as AgentEvent, a as AskAnswerPayload, b as AskUserEvent, c as Attachment, B as BackgroundProcess, d as BackgroundProcessExitedPayload, e as BackgroundProcessOutputPayload, f as BackgroundProcessRemovedPayload, g as BackgroundProcessStartedPayload, h as BackgroundProcessStatus, C as CallStatsDataPoint, i as ChatAskUserPayload, j as ChatDeltaPayload, k as ChatDonePayload, l as ChatErrorPayload, m as ChatFormatRetryPayload, n as ChatMessagePayload, o as ChatMessageUpdatedPayload, p as ChatPathConfirmationPayload, q as ChatProgressPayload, r as ChatThinkingPayload, s as ChatTodoPayload, t as ChatToolCallPayload, u as ChatToolOutputPayload, v as ChatToolPreparingPayload, w as ChatToolResultPayload, x as ChatVisionFallbackPayload, y as ClientMessage, z as ClientMessageType, D as Config, E as ContextCompactionEvent, F as ContextState, G as ContextStatePayload, H as ContextWindow, I as CriteriaUpdatedPayload, J as Criterion, K as CriterionAttempt, L as CriterionStatus, N as CriterionValidation, O as DangerLevel, P as DevServerOutputPayload, Q as DevServerStatePayload, R as Diagnostic, T as EditContextEdit, U as EditContextLine, V as EditContextRegion, W as ElementData, X as ErrorPayload, Y as ExecutionState, Z as FileReadEntry, _ as GitDiffFile, $ as GitStatusPayload, a0 as InjectedFile, a1 as LLMCallStats, a2 as LlmBackend, a3 as LogLine, a4 as LspDiagnosticsPayload, a5 as MessageRole, a6 as MessageSegment, a7 as MessageStats, a8 as MetadataEntry, a9 as MetadataUpdatedPayload, aa as ModeChangedPayload, ab as ModelConfig, ac as ModelSessionStats, ad as PathConfirmPayload, ae as PathConfirmationReason, af as PendingPathConfirmationPayload, ag as PhaseChangedPayload, ah as PreparingToolCall, ai as Project, aj as ProjectDeletedPayload, ak as ProjectListPayload, al as ProjectStatePayload, am as Provider, an as ProviderBackend, ao as ProviderChangedPayload, ap as QueueAddedEvent, aq as QueueCancelledEvent, ar as QueueDrainedEvent, as as QueueEvent, at as QueueEventType, au as QueueStatePayload, av as QueuedMessage, aw as RecentUserPrompt, ax as ServerMessage, ay as ServerMessageType, az as Session, aA as SessionListPayload, aB as SessionLoadPayload, aC as SessionMetadata, aD as SessionMode, aE as SessionNameGeneratedPayload, aF as SessionPhase, aG as SessionRunningPayload, aH as SessionStatePayload, aI as SessionSummary, aJ as StatsDataPoint, aK as StatsIdentity, aL as TaskCompletedPayload, aM as Todo, aN as ToolCall, aO as ToolMode, aP as ToolName, aQ as ToolResult, aR as ValidationResult, aS as createClientMessage, aT as createServerMessage, aU as isClientMessage, aV as isServerMessage } from '../protocol-49SJtN_P.js';
1
+ import { M as Message, S as SessionStats } from '../protocol-BljtHZrx.js';
2
+ export { A as AgentEvent, a as AskAnswerPayload, b as AskUserEvent, c as Attachment, B as BackgroundProcess, d as BackgroundProcessExitedPayload, e as BackgroundProcessOutputPayload, f as BackgroundProcessRemovedPayload, g as BackgroundProcessStartedPayload, h as BackgroundProcessStatus, C as CallStatsDataPoint, i as ChatAskUserPayload, j as ChatDeltaPayload, k as ChatDonePayload, l as ChatErrorPayload, m as ChatFormatRetryPayload, n as ChatMessagePayload, o as ChatMessageUpdatedPayload, p as ChatPathConfirmationPayload, q as ChatProgressPayload, r as ChatThinkingPayload, s as ChatTodoPayload, t as ChatToolCallPayload, u as ChatToolOutputPayload, v as ChatToolPreparingPayload, w as ChatToolResultPayload, x as ChatVisionFallbackPayload, y as ClientMessage, z as ClientMessageType, D as Config, E as ContextCompactionEvent, F as ContextState, G as ContextStatePayload, H as ContextWindow, I as CriteriaUpdatedPayload, J as Criterion, K as CriterionAttempt, L as CriterionStatus, N as CriterionValidation, O as DangerLevel, P as DevServerOutputPayload, Q as DevServerStatePayload, R as Diagnostic, T as EditContextEdit, U as EditContextLine, V as EditContextRegion, W as ElementData, X as ErrorPayload, Y as ExecutionState, Z as FileReadEntry, _ as GitDiffFile, $ as GitStatusPayload, a0 as InjectedFile, a1 as LLMCallStats, a2 as LlmBackend, a3 as LogLine, a4 as LspDiagnosticsPayload, a5 as MessageRole, a6 as MessageSegment, a7 as MessageStats, a8 as MetadataEntry, a9 as MetadataUpdatedPayload, aa as ModeChangedPayload, ab as ModelConfig, ac as ModelSessionStats, ad as PathConfirmPayload, ae as PathConfirmationReason, af as PendingPathConfirmationPayload, ag as PhaseChangedPayload, ah as PreparingToolCall, ai as Project, aj as ProjectDeletedPayload, ak as ProjectListPayload, al as ProjectStatePayload, am as Provider, an as ProviderBackend, ao as ProviderChangedPayload, ap as QueueAddedEvent, aq as QueueCancelledEvent, ar as QueueDrainedEvent, as as QueueEvent, at as QueueEventType, au as QueueStatePayload, av as QueuedMessage, aw as RecentUserPrompt, ax as ServerMessage, ay as ServerMessageType, az as Session, aA as SessionListPayload, aB as SessionLoadPayload, aC as SessionMetadata, aD as SessionMode, aE as SessionNameGeneratedPayload, aF as SessionPhase, aG as SessionRunningPayload, aH as SessionStatePayload, aI as SessionSummary, aJ as StatsDataPoint, aK as StatsIdentity, aL as TaskCompletedPayload, aM as Todo, aN as ToolCall, aO as ToolMode, aP as ToolName, aQ as ToolResult, aR as ValidationResult, aS as createClientMessage, aT as createServerMessage, aU as isClientMessage, aV as isServerMessage } from '../protocol-BljtHZrx.js';
3
3
 
4
4
  /**
5
5
  * Session stats computation - aggregates response-level MessageStats from
@@ -6,7 +6,7 @@ import {
6
6
  createServerMessage,
7
7
  isClientMessage,
8
8
  isServerMessage
9
- } from "../chunk-BVHFMAVN.js";
9
+ } from "../chunk-LVS5YGTX.js";
10
10
  export {
11
11
  computeSessionStats,
12
12
  createClientMessage,
@@ -11,14 +11,14 @@ import {
11
11
  requestPathAccess,
12
12
  stepDoneTool,
13
13
  validateToolAction
14
- } from "./chunk-FCFCBOWR.js";
14
+ } from "./chunk-N374WCXC.js";
15
15
  import "./chunk-DL6ZILAF.js";
16
16
  import "./chunk-PBGOZMVY.js";
17
17
  import "./chunk-VRGRAQDG.js";
18
18
  import "./chunk-XAMAYRDA.js";
19
- import "./chunk-OP22QEB3.js";
20
- import "./chunk-ITWVFGFV.js";
21
- import "./chunk-7TTEGAO6.js";
19
+ import "./chunk-FRJQC77Y.js";
20
+ import "./chunk-4HBWSC6K.js";
21
+ import "./chunk-DTJJZZOC.js";
22
22
  import {
23
23
  AskUserInterrupt,
24
24
  cancelQuestionsForSession,
@@ -26,7 +26,7 @@ import {
26
26
  } from "./chunk-BJYPTN5S.js";
27
27
  import "./chunk-RFNEDBVO.js";
28
28
  import "./chunk-FBGWG4N6.js";
29
- import "./chunk-BVHFMAVN.js";
29
+ import "./chunk-LVS5YGTX.js";
30
30
  import "./chunk-CQGTEGKL.js";
31
31
  import "./chunk-Z4SWOUWC.js";
32
32
  import "./chunk-K44MW7JJ.js";
@@ -47,4 +47,4 @@ export {
47
47
  stepDoneTool,
48
48
  validateToolAction
49
49
  };
50
- //# sourceMappingURL=tools-ESHH53EB.js.map
50
+ //# sourceMappingURL=tools-22OPY2O7.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {