openfox 2.0.136 → 2.0.137

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/CHANGELOG.md +6 -0
  3. package/dist/{chat-handler-SYU4HJMI.js → chat-handler-ZCPFNHTE.js} +9 -9
  4. package/dist/{chunk-342BKOTE.js → chunk-2OO46UAW.js} +2 -2
  5. package/dist/{chunk-YDPC4FLR.js → chunk-6TQNTFJW.js} +4 -4
  6. package/dist/chunk-FG4G4EWB.js +7 -0
  7. package/dist/{chunk-5YPHN5NC.js → chunk-FIQPKLDY.js} +3 -3
  8. package/dist/{chunk-UL7776XB.js → chunk-JIS6C6PA.js} +7 -7
  9. package/dist/{chunk-CPVEONNS.js → chunk-LQPAM55V.js} +4 -4
  10. package/dist/{chunk-XGG4XCKP.js → chunk-MMGHIPBU.js} +71 -53
  11. package/dist/{chunk-QQQBNL7A.js → chunk-RS7I4W5A.js} +49 -49
  12. package/dist/{chunk-VA2TYWQR.js → chunk-U7XCK7WL.js} +2 -2
  13. package/dist/{chunk-MILEZY2J.js → chunk-WOIQO7ZC.js} +3 -3
  14. package/dist/{chunk-U6FHHT2B.js → chunk-WQUCCHOY.js} +3 -3
  15. package/dist/{chunk-PQKLOLGC.js → chunk-XWWRZSK7.js} +2 -2
  16. package/dist/{chunk-GP5BYQMF.js → chunk-ZJ2IHOVN.js} +11 -11
  17. package/dist/{chunk-EXLCFEML.js → chunk-ZQENKB7X.js} +9 -9
  18. package/dist/cli/dev.js +1 -1
  19. package/dist/cli/index.js +1 -1
  20. package/dist/{compactor-LBK53WAK.js → compactor-KDTY4ERE.js} +4 -4
  21. package/dist/{describe-image-4XDLSKAB.js → describe-image-EFHMWGWI.js} +5 -5
  22. package/dist/{dynamic-context-RDBNQPPA.js → dynamic-context-HL4RGNHK.js} +4 -4
  23. package/dist/{events-YTYYT3PR.js → events-ADE2KEHI.js} +4 -6
  24. package/dist/{export-import-GHRCOQHF.js → export-import-6OUEANYH.js} +4 -4
  25. package/dist/{folding-3MMOPS4W.js → folding-CM63AVSB.js} +4 -4
  26. package/dist/{launch-YZ46OEFP.js → launch-L5NSPAAX.js} +9 -9
  27. package/dist/{orchestrator-6QGQ55NT.js → orchestrator-FMWKMD54.js} +8 -8
  28. package/dist/package.json +1 -1
  29. package/dist/{path-security-EC4Z2ZZG.js → path-security-DND2R3RP.js} +4 -4
  30. package/dist/{processor-B2RV7MVC.js → processor-SB5X44PX.js} +8 -8
  31. package/dist/{serve-EWA5HXC7.js → serve-VONTGJCK.js} +14 -14
  32. package/dist/server/index.js +13 -13
  33. package/dist/{server-ZAPAB3FS.js → server-MI2LZK3W.js} +12 -12
  34. package/dist/{tools-EJOABHVO.js → tools-WLJJ3ILO.js} +6 -6
  35. package/dist/{update-IPHJMRQZ.js → update-6ZSQJQJB.js} +2 -2
  36. package/package.json +1 -1
  37. package/dist/chunk-VWBPQZLO.js +0 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.137 - 2026-09-03
4
+
5
+ ### Bug Fixes
6
+
7
+ - **Image descriptions survive reloads** — vision details no longer drop from tool results after a page reload
8
+
3
9
  ## 2.0.136 - 2026-09-02
4
10
 
5
11
  ### Features
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.137 - 2026-09-03
4
+
5
+ ### Bug Fixes
6
+
7
+ - **Image descriptions survive reloads** — vision details no longer drop from tool results after a page reload
8
+
3
9
  ## 2.0.136 - 2026-09-02
4
10
 
5
11
  ### Features
@@ -2,18 +2,18 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-5YPHN5NC.js";
5
+ } from "./chunk-FIQPKLDY.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-UL7776XB.js";
9
- import "./chunk-YDPC4FLR.js";
10
- import "./chunk-EXLCFEML.js";
8
+ } from "./chunk-JIS6C6PA.js";
9
+ import "./chunk-6TQNTFJW.js";
10
+ import "./chunk-ZQENKB7X.js";
11
11
  import "./chunk-Q33DL67W.js";
12
12
  import "./chunk-XE6UC5Z3.js";
13
13
  import "./chunk-J7GAZGZT.js";
14
14
  import "./chunk-QBWJCO5K.js";
15
15
  import "./chunk-DG2YSWMC.js";
16
- import "./chunk-U6FHHT2B.js";
16
+ import "./chunk-WQUCCHOY.js";
17
17
  import "./chunk-4SBVW4UH.js";
18
18
  import "./chunk-HEYU7FAY.js";
19
19
  import "./chunk-4LLGI372.js";
@@ -23,11 +23,11 @@ import "./chunk-I72ACQ6R.js";
23
23
  import "./chunk-VIJVLLPT.js";
24
24
  import "./chunk-OAN4BXEW.js";
25
25
  import "./chunk-V5AC2TV7.js";
26
- import "./chunk-PQKLOLGC.js";
26
+ import "./chunk-XWWRZSK7.js";
27
27
  import {
28
28
  getEventStore
29
- } from "./chunk-342BKOTE.js";
30
- import "./chunk-XGG4XCKP.js";
29
+ } from "./chunk-2OO46UAW.js";
30
+ import "./chunk-MMGHIPBU.js";
31
31
  import "./chunk-X4PVR6AW.js";
32
32
  import "./chunk-BHVR2YS5.js";
33
33
  import "./chunk-OSXPQSLW.js";
@@ -179,4 +179,4 @@ export {
179
179
  startChatSession,
180
180
  stopSessionExecution
181
181
  };
182
- //# sourceMappingURL=chat-handler-SYU4HJMI.js.map
182
+ //# sourceMappingURL=chat-handler-ZCPFNHTE.js.map
@@ -6,7 +6,7 @@ import {
6
6
  foldSessionState,
7
7
  spreadOptionalMessageFields,
8
8
  trimSnapshotStreamingOutput
9
- } from "./chunk-XGG4XCKP.js";
9
+ } from "./chunk-MMGHIPBU.js";
10
10
  import {
11
11
  updateSessionMessageCount
12
12
  } from "./chunk-X4PVR6AW.js";
@@ -1489,4 +1489,4 @@ export {
1489
1489
  truncateSessionMessages,
1490
1490
  getRecentUserPromptsForSession
1491
1491
  };
1492
- //# sourceMappingURL=chunk-342BKOTE.js.map
1492
+ //# sourceMappingURL=chunk-2OO46UAW.js.map
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  getCurrentContextWindowId,
10
10
  getEventStore
11
- } from "./chunk-342BKOTE.js";
11
+ } from "./chunk-2OO46UAW.js";
12
12
  import {
13
13
  findAgentById,
14
14
  getRuntimeConfig,
@@ -327,8 +327,8 @@ function resolveAgentDef(sessionManager, sessionId) {
327
327
  });
328
328
  }
329
329
  async function getEffectiveToolDefinitions(agentDef, sessionId, modelName) {
330
- const { getToolRegistryForAgent } = await import("./tools-EJOABHVO.js");
331
- const { isDescribeImageEligible } = await import("./describe-image-4XDLSKAB.js");
330
+ const { getToolRegistryForAgent } = await import("./tools-WLJJ3ILO.js");
331
+ const { isDescribeImageEligible } = await import("./describe-image-EFHMWGWI.js");
332
332
  const all = getToolRegistryForAgent(agentDef, sessionId).definitions;
333
333
  const eligible = await isDescribeImageEligible(modelName);
334
334
  if (eligible) return all;
@@ -396,4 +396,4 @@ export {
396
396
  computeSessionHash,
397
397
  applyDynamicContext
398
398
  };
399
- //# sourceMappingURL=chunk-YDPC4FLR.js.map
399
+ //# sourceMappingURL=chunk-6TQNTFJW.js.map
@@ -0,0 +1,7 @@
1
+ // src/constants.ts
2
+ var VERSION = "2.0.137";
3
+
4
+ export {
5
+ VERSION
6
+ };
7
+ //# sourceMappingURL=chunk-FG4G4EWB.js.map
@@ -4,11 +4,11 @@ import {
4
4
  import {
5
5
  combineEventsWithSnapshot,
6
6
  getEventStore
7
- } from "./chunk-342BKOTE.js";
7
+ } from "./chunk-2OO46UAW.js";
8
8
  import {
9
9
  buildMessagesFromStoredEvents,
10
10
  foldPendingConfirmations
11
- } from "./chunk-XGG4XCKP.js";
11
+ } from "./chunk-MMGHIPBU.js";
12
12
  import {
13
13
  updateSessionMetadata
14
14
  } from "./chunk-X4PVR6AW.js";
@@ -216,4 +216,4 @@ export {
216
216
  needsNameGeneration,
217
217
  generateSessionNameForSession
218
218
  };
219
- //# sourceMappingURL=chunk-5YPHN5NC.js.map
219
+ //# sourceMappingURL=chunk-FIQPKLDY.js.map
@@ -3,14 +3,14 @@ import {
3
3
  checkToolChangesAndInject,
4
4
  computeDynamicContextHash,
5
5
  getToolFingerprint
6
- } from "./chunk-YDPC4FLR.js";
6
+ } from "./chunk-6TQNTFJW.js";
7
7
  import {
8
8
  createAssemblyResult,
9
9
  getConversationMessages,
10
10
  getToolRegistryForAgent,
11
11
  processEventsForConversation,
12
12
  runTopLevelAgentLoop
13
- } from "./chunk-EXLCFEML.js";
13
+ } from "./chunk-ZQENKB7X.js";
14
14
  import {
15
15
  getAllInstructions,
16
16
  getEnabledSkillMetadata
@@ -30,15 +30,15 @@ import {
30
30
  } from "./chunk-4LLGI372.js";
31
31
  import {
32
32
  PathAccessDeniedError
33
- } from "./chunk-PQKLOLGC.js";
33
+ } from "./chunk-XWWRZSK7.js";
34
34
  import {
35
35
  getCurrentContextWindowId,
36
36
  getCurrentWindowMessageOptions,
37
37
  getEventStore
38
- } from "./chunk-342BKOTE.js";
38
+ } from "./chunk-2OO46UAW.js";
39
39
  import {
40
40
  buildSnapshotFromSessionState
41
- } from "./chunk-XGG4XCKP.js";
41
+ } from "./chunk-MMGHIPBU.js";
42
42
  import {
43
43
  findAgentById,
44
44
  getRuntimeConfig,
@@ -355,7 +355,7 @@ async function runAgentTurn(options, turnMetrics, agentId, append, callbacks) {
355
355
  getConversationMessages: buildGetConversationMessages(options.sessionId, resolveAgentClient, append),
356
356
  injectAgentReminder: () => injectAgentReminder(options.sessionId, agentDef),
357
357
  rebuildCachedContext: async () => {
358
- const { applyDynamicContext } = await import("./dynamic-context-RDBNQPPA.js");
358
+ const { applyDynamicContext } = await import("./dynamic-context-HL4RGNHK.js");
359
359
  await applyDynamicContext(options.sessionManager, options.sessionId, agentLlmClient.getModel());
360
360
  },
361
361
  ...options.initialCompacting ? { initialCompacting: true } : {},
@@ -385,4 +385,4 @@ export {
385
385
  runChatTurn,
386
386
  runAgentTurn
387
387
  };
388
- //# sourceMappingURL=chunk-UL7776XB.js.map
388
+ //# sourceMappingURL=chunk-JIS6C6PA.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  runAgentTurn
3
- } from "./chunk-UL7776XB.js";
3
+ } from "./chunk-JIS6C6PA.js";
4
4
  import {
5
5
  executeSubAgent,
6
6
  getToolRegistryForAgent
7
- } from "./chunk-EXLCFEML.js";
7
+ } from "./chunk-ZQENKB7X.js";
8
8
  import {
9
9
  gitSpawnEnv
10
10
  } from "./chunk-J7GAZGZT.js";
@@ -34,7 +34,7 @@ import {
34
34
  import {
35
35
  getCurrentContextWindowId,
36
36
  getEventStore
37
- } from "./chunk-342BKOTE.js";
37
+ } from "./chunk-2OO46UAW.js";
38
38
  import {
39
39
  findAgentById,
40
40
  getRuntimeConfig,
@@ -1023,4 +1023,4 @@ export {
1023
1023
  abortRunnerRun,
1024
1024
  launchWorkflowRun
1025
1025
  };
1026
- //# sourceMappingURL=chunk-CPVEONNS.js.map
1026
+ //# sourceMappingURL=chunk-LQPAM55V.js.map
@@ -263,45 +263,68 @@ function snapshotMessageToMessage(message) {
263
263
  ...spreadOptionalMessageFields(message)
264
264
  });
265
265
  }
266
- function shouldIncludeContextMessage(message, windowId, options) {
267
- const includeVerifier = options?.includeVerifier ?? true;
268
- return message.role !== "system" && (windowId === void 0 || message.contextWindowId === windowId) && (includeVerifier || message.subAgentType !== "verifier") && !message.subAgentId;
269
- }
270
- function appendSnapshotMessageContext(result, message) {
271
- const contextMsg = {
272
- role: message.role,
273
- content: message.content
274
- };
275
- if (message.thinkingContent) {
276
- contextMsg.thinkingContent = message.thinkingContent;
277
- }
278
- if (message.toolCalls && message.toolCalls.length > 0) {
279
- const fulfilledToolCalls = message.toolCalls.filter((tc) => tc.result);
280
- if (fulfilledToolCalls.length > 0) {
281
- contextMsg.toolCalls = fulfilledToolCalls.map((toolCall) => ({
282
- id: toolCall.id,
283
- name: toolCall.name,
284
- arguments: toolCall.arguments
285
- }));
266
+ function snapshotMessagesToEvents(messages, sessionId = "") {
267
+ const events = [];
268
+ let syntheticSeq = -1;
269
+ const nextSeq = () => syntheticSeq--;
270
+ for (const message of messages) {
271
+ events.push({
272
+ seq: nextSeq(),
273
+ timestamp: message.timestamp,
274
+ sessionId,
275
+ type: "message.start",
276
+ data: {
277
+ messageId: message.id,
278
+ role: message.role,
279
+ // Only the fields the context fold consumes (window/subagent filtering,
280
+ // content, attachments) are carried — the rest are UI-only concerns.
281
+ ...message.content !== void 0 && { content: message.content },
282
+ ...message.contextWindowId !== void 0 && { contextWindowId: message.contextWindowId },
283
+ ...message.subAgentId !== void 0 && { subAgentId: message.subAgentId },
284
+ ...message.subAgentType !== void 0 && { subAgentType: message.subAgentType },
285
+ ...message.attachments !== void 0 && { attachments: message.attachments }
286
+ }
287
+ });
288
+ if (message.thinkingContent) {
289
+ events.push({
290
+ seq: nextSeq(),
291
+ timestamp: message.timestamp,
292
+ sessionId: "",
293
+ type: "message.thinking",
294
+ data: { messageId: message.id, content: message.thinkingContent }
295
+ });
286
296
  }
287
- }
288
- if (message.attachments !== void 0) {
289
- contextMsg.attachments = message.attachments;
290
- }
291
- result.push(contextMsg);
292
- if (!message.toolCalls) return;
293
- for (const toolCall of message.toolCalls) {
294
- if (!toolCall.result) continue;
295
- result.push({
296
- role: "tool",
297
- content: stripAnsi(
298
- toolCall.result.success ? toolCall.result.output ?? "Success" : toolCall.result.output ? `${toolCall.result.output}
299
-
300
- Error: ${toolCall.result.error}` : `Error: ${toolCall.result.error}`
301
- ),
302
- toolCallId: toolCall.id
297
+ for (const toolCall of message.toolCalls ?? []) {
298
+ events.push({
299
+ seq: nextSeq(),
300
+ timestamp: message.timestamp,
301
+ sessionId: "",
302
+ type: "tool.call",
303
+ data: {
304
+ messageId: message.id,
305
+ toolCall: { id: toolCall.id, name: toolCall.name, arguments: toolCall.arguments }
306
+ }
307
+ });
308
+ }
309
+ for (const toolCall of message.toolCalls ?? []) {
310
+ if (!toolCall.result) continue;
311
+ events.push({
312
+ seq: nextSeq(),
313
+ timestamp: message.timestamp,
314
+ sessionId: "",
315
+ type: "tool.result",
316
+ data: { messageId: message.id, toolCallId: toolCall.id, result: toolCall.result }
317
+ });
318
+ }
319
+ events.push({
320
+ seq: nextSeq(),
321
+ timestamp: message.timestamp,
322
+ sessionId: "",
323
+ type: "message.done",
324
+ data: { messageId: message.id }
303
325
  });
304
326
  }
327
+ return events;
305
328
  }
306
329
  function applyStoredMessageEvents(initialMessages, events) {
307
330
  return applyEvents(initialMessages, events, { timestampAsNumber: false });
@@ -497,13 +520,15 @@ function buildContextMessagesFromEventHistory(events, windowId, options) {
497
520
  return buildContextMessagesFromStoredEvents(events, windowId, options);
498
521
  }
499
522
  const snapshot = snapshotEvent.data;
500
- const snapshotMessages = snapshot.messages.reduce((result, message) => {
501
- if (!shouldIncludeContextMessage(message, windowId, options)) return result;
502
- appendSnapshotMessageContext(result, message);
503
- return result;
504
- }, []);
505
- const laterEvents = events.filter((event) => event.seq > snapshotEvent.seq);
506
- return [...snapshotMessages, ...buildContextMessagesFromStoredEvents(laterEvents, windowId, options)];
523
+ const snapshotMessageIds = new Set(snapshot.messages.map((message) => message.id));
524
+ const laterEvents = events.filter(
525
+ (event) => event.seq > snapshotEvent.seq && !("messageId" in event.data && snapshotMessageIds.has(event.data.messageId))
526
+ );
527
+ return buildContextMessagesFromStoredEvents(
528
+ [...snapshotMessagesToEvents(snapshot.messages, snapshotEvent.sessionId), ...laterEvents],
529
+ windowId,
530
+ options
531
+ );
507
532
  }
508
533
  function foldTurnEventsToSnapshotMessages(events) {
509
534
  return applyTurnEventsToSnapshotMessages([], events);
@@ -511,15 +536,8 @@ function foldTurnEventsToSnapshotMessages(events) {
511
536
  function foldTurnEventsToSnapshotMessagesFromInitial(events, initialMessages) {
512
537
  return applyTurnEventsToSnapshotMessages(initialMessages, events);
513
538
  }
514
- function getMessagesForWindow(messages, windowId) {
515
- return messages.filter((m) => m.contextWindowId === windowId);
516
- }
517
539
  function buildContextMessagesFromMessages(messages, windowId) {
518
- return getMessagesForWindow(messages, windowId).reduce((result, message) => {
519
- if (!shouldIncludeContextMessage(message, windowId)) return result;
520
- appendSnapshotMessageContext(result, message);
521
- return result;
522
- }, []);
540
+ return buildContextMessagesFromStoredEvents(snapshotMessagesToEvents(messages), windowId);
523
541
  }
524
542
 
525
543
  // src/server/events/fold-state.ts
@@ -938,6 +956,7 @@ function buildSnapshotFromSessionState(input) {
938
956
 
939
957
  export {
940
958
  spreadOptionalMessageFields,
959
+ snapshotMessagesToEvents,
941
960
  buildMessagesFromStoredEvents,
942
961
  buildContextMessagesFromStoredEvents,
943
962
  handleMessageThinking,
@@ -949,7 +968,6 @@ export {
949
968
  buildContextMessagesFromEventHistory,
950
969
  foldTurnEventsToSnapshotMessages,
951
970
  foldTurnEventsToSnapshotMessagesFromInitial,
952
- getMessagesForWindow,
953
971
  buildContextMessagesFromMessages,
954
972
  foldCriteria,
955
973
  foldTodos,
@@ -965,4 +983,4 @@ export {
965
983
  buildSnapshot,
966
984
  buildSnapshotFromSessionState
967
985
  };
968
- //# sourceMappingURL=chunk-XGG4XCKP.js.map
986
+ //# sourceMappingURL=chunk-MMGHIPBU.js.map