openfox 2.0.103 → 2.0.105

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 (79) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/CHANGELOG.md +32 -0
  3. package/dist/{ask-TOBEA6KD.js → ask-CJMU6EW7.js} +2 -2
  4. package/dist/{chat-handler-IBFSBSGV.js → chat-handler-CQIDZUR7.js} +20 -20
  5. package/dist/chunk-4H427UBV.js +1298 -0
  6. package/dist/{chunk-5ZJYEINJ.js → chunk-5M45NHQ2.js} +2 -2
  7. package/dist/{chunk-W5FTCTGY.js → chunk-5VKT34HE.js} +2 -2
  8. package/dist/{chunk-W5RC44R6.js → chunk-6IXRISXA.js} +8 -8
  9. package/dist/{chunk-FQS7A5M4.js → chunk-6SIX7P6O.js} +2 -2
  10. package/dist/{chunk-REQIAJTV.js → chunk-6XDKVVYS.js} +75 -70
  11. package/dist/{chunk-DPRJYQ5U.js → chunk-AKUTOOSV.js} +25 -25
  12. package/dist/{chunk-MGKS2NG2.js → chunk-B76OP3OE.js} +3 -3
  13. package/dist/{chunk-WPCYFH6X.js → chunk-DMI2BXHA.js} +4 -4
  14. package/dist/{chunk-KKEBXFB3.js → chunk-EF7KGWF6.js} +2 -2
  15. package/dist/{chunk-Z753S3X7.js → chunk-EIJFYENT.js} +22 -15
  16. package/dist/{chunk-MR7ZEGOF.js → chunk-ERKPMNC7.js} +5 -2
  17. package/dist/{chunk-ZLCPNTRT.js → chunk-ERTTKKCE.js} +6 -2
  18. package/dist/{chunk-73EV6QYX.js → chunk-FGYOSQUR.js} +4 -4
  19. package/dist/{chunk-4Z2ARCY3.js → chunk-J27BLIPY.js} +2 -2
  20. package/dist/{chunk-EU3WWTFH.js → chunk-JAX5OEMM.js} +5 -1
  21. package/dist/{chunk-QL2G5UWE.js → chunk-KDJZGHSZ.js} +23 -13
  22. package/dist/{chunk-JL657X72.js → chunk-LG57PZYL.js} +16 -16
  23. package/dist/{chunk-RZC6DAT2.js → chunk-OUMHR7LR.js} +2 -2
  24. package/dist/{chunk-BJDQPILB.js → chunk-PP3WNUA6.js} +3 -3
  25. package/dist/{chunk-2EYTYXWN.js → chunk-S5HDT5RQ.js} +2 -2
  26. package/dist/{chunk-K6VVTE6C.js → chunk-SGGFVTMP.js} +30 -20
  27. package/dist/{chunk-YZSBJUGC.js → chunk-SPA7PQPJ.js} +3 -1
  28. package/dist/{chunk-KLK5N4OX.js → chunk-TFQSCHVU.js} +3 -3
  29. package/dist/{chunk-7HIJP4PC.js → chunk-UADZ2LZJ.js} +2 -2
  30. package/dist/chunk-UBF62JJI.js +7 -0
  31. package/dist/{chunk-AI27N57J.js → chunk-UUMJ5PAW.js} +4 -8
  32. package/dist/{chunk-KCED2X4H.js → chunk-WDJOSRIB.js} +12 -5
  33. package/dist/cli/dev.js +2 -2
  34. package/dist/cli/index.js +2 -2
  35. package/dist/{client-Q7BHKOCD.js → client-XT4VHS7E.js} +5 -5
  36. package/dist/{client-pure-ONSVWEG5.js → client-pure-USVHN4WG.js} +2 -2
  37. package/dist/{compactor-43P3LGDU.js → compactor-JMO7FHYA.js} +11 -11
  38. package/dist/{dynamic-context-AMPVZXUU.js → dynamic-context-UJE6F7XT.js} +7 -7
  39. package/dist/{events-RCC32JOA.js → events-BGVLDGLK.js} +6 -6
  40. package/dist/{folding-ZNUXPQUD.js → folding-AJMZBHNR.js} +4 -4
  41. package/dist/{http-client-WGNBG7PC.js → http-client-A7A4XWNK.js} +3 -3
  42. package/dist/{manager-HFGJLW7Q.js → manager-GGIIENDX.js} +4 -4
  43. package/dist/{model-overrides-DQDT5Y7R.js → model-overrides-BLEFI7FQ.js} +3 -3
  44. package/dist/{orchestrator-QDXKDLOW.js → orchestrator-Y2MBWVOB.js} +19 -19
  45. package/dist/package.json +1 -1
  46. package/dist/{path-security-SUFEIBTC.js → path-security-JCDBLFIE.js} +7 -7
  47. package/dist/{platform-2RLL7RAE.js → platform-GZ2WIDS5.js} +3 -3
  48. package/dist/{processor-YWNLWAZW.js → processor-3IURFW2N.js} +19 -19
  49. package/dist/{protocol-BXgdUKgZ.d.ts → protocol-rfiBDoXm.d.ts} +1 -1
  50. package/dist/provider/index.d.ts +4 -4
  51. package/dist/{provider-FX3QCGAF.js → provider-ZXYITGFU.js} +69 -69
  52. package/dist/{provider-manager-GLG6BA32.js → provider-manager-QH5IIGHB.js} +6 -6
  53. package/dist/{pwa-SEWCVKZX.js → pwa-XPHP3PY2.js} +35 -35
  54. package/dist/{registry-GBNLVWYQ.js → registry-M2QVGRNK.js} +3 -3
  55. package/dist/{serve-FE4UAXGE.js → serve-OYLEY3HD.js} +27 -27
  56. package/dist/server/index.d.ts +3 -3
  57. package/dist/server/index.js +26 -26
  58. package/dist/server-L6YS6A6J.js +47 -0
  59. package/dist/{session-overrides-MBGBX6TM.js → session-overrides-HA5IQYLI.js} +5 -5
  60. package/dist/{sessions-FEIFYGH7.js → sessions-ZV2WRC6K.js} +4 -4
  61. package/dist/{settings-FT7HF7ZB.js → settings-TGCITCVA.js} +2 -2
  62. package/dist/shared/index.d.ts +3 -3
  63. package/dist/skill-defaults/browser/SKILL.md +36 -22
  64. package/dist/{tools-M5DKWCJJ.js → tools-BG44DIYU.js} +17 -17
  65. package/dist/{types-DBftgbfl.d.ts → types-o-YQ3Bfq.d.ts} +1 -1
  66. package/dist/{types-7idXD8Bq.d.ts → types-o0v5xVxu.d.ts} +1 -1
  67. package/dist/{update-KMPQUPQT.js → update-SOCIS7KO.js} +2 -2
  68. package/dist/web/assets/index-B7wjVPjL.css +40 -0
  69. package/dist/web/assets/index-BHIT-lGU.js +323 -0
  70. package/dist/web/index.html +2 -2
  71. package/dist/web/sw.js +1 -1
  72. package/dist/web/workbox-9c191d2f.js +1 -0
  73. package/package.json +1 -1
  74. package/dist/chunk-SQYMFWY7.js +0 -7
  75. package/dist/chunk-XY3LESVZ.js +0 -1000
  76. package/dist/server-QGQGSHW6.js +0 -47
  77. package/dist/web/assets/index-B0CNNl1k.css +0 -32
  78. package/dist/web/assets/index-FWViKQkM.js +0 -324
  79. package/dist/web/workbox-8c29f6e4.js +0 -1
@@ -4,7 +4,7 @@ import {
4
4
  getEnabledSkillMetadata,
5
5
  isSkillEnabled,
6
6
  loadAllSkills
7
- } from "./chunk-MGKS2NG2.js";
7
+ } from "./chunk-B76OP3OE.js";
8
8
  import {
9
9
  TurnMetrics,
10
10
  consumeStreamGenerator,
@@ -14,12 +14,12 @@ import {
14
14
  createToolCallEvent,
15
15
  createToolResultEvent,
16
16
  streamLLMPure
17
- } from "./chunk-5ZJYEINJ.js";
17
+ } from "./chunk-5M45NHQ2.js";
18
18
  import {
19
19
  COMPACTION_PROMPT,
20
20
  buildBasePrompt,
21
21
  computeEffectiveTools
22
- } from "./chunk-4Z2ARCY3.js";
22
+ } from "./chunk-J27BLIPY.js";
23
23
  import {
24
24
  startInspectProxy
25
25
  } from "./chunk-ZASSAZ73.js";
@@ -33,7 +33,7 @@ import {
33
33
  spawnShellProcess,
34
34
  startProcessCommand,
35
35
  stopProcess
36
- } from "./chunk-KLK5N4OX.js";
36
+ } from "./chunk-TFQSCHVU.js";
37
37
  import {
38
38
  getMaxPerSession,
39
39
  getSessionProcessCount,
@@ -52,19 +52,19 @@ import {
52
52
  } from "./chunk-D3SXT3BL.js";
53
53
  import {
54
54
  getSessionDisabledServers
55
- } from "./chunk-7HIJP4PC.js";
55
+ } from "./chunk-UADZ2LZJ.js";
56
56
  import {
57
57
  PathAccessDeniedError,
58
58
  extractAbsolutePathsFromCommand,
59
59
  extractSensitivePathsFromCommand,
60
60
  registerPathConfirmation,
61
61
  requestPathAccess
62
- } from "./chunk-ZLCPNTRT.js";
62
+ } from "./chunk-ERTTKKCE.js";
63
63
  import {
64
64
  getCurrentContextWindowId,
65
65
  getCurrentWindowMessageOptions,
66
66
  getEventStore
67
- } from "./chunk-WPCYFH6X.js";
67
+ } from "./chunk-DMI2BXHA.js";
68
68
  import {
69
69
  createChatDoneMessage,
70
70
  createChatMessageMessage,
@@ -75,10 +75,10 @@ import {
75
75
  import {
76
76
  AskUserInterrupt,
77
77
  askUserTool
78
- } from "./chunk-EU3WWTFH.js";
78
+ } from "./chunk-JAX5OEMM.js";
79
79
  import {
80
80
  resolveLLMClientForAgent
81
- } from "./chunk-W5FTCTGY.js";
81
+ } from "./chunk-5VKT34HE.js";
82
82
  import {
83
83
  buildContextMessagesFromEventHistory,
84
84
  foldContextState,
@@ -88,13 +88,13 @@ import {
88
88
  handleToolResult,
89
89
  reorderToolMessages,
90
90
  stripOrphanedToolCalls
91
- } from "./chunk-2EYTYXWN.js";
91
+ } from "./chunk-S5HDT5RQ.js";
92
92
  import {
93
93
  findAgentById,
94
94
  getRuntimeConfig,
95
95
  getSubAgents,
96
96
  loadAllAgentsDefault
97
- } from "./chunk-FQS7A5M4.js";
97
+ } from "./chunk-6SIX7P6O.js";
98
98
  import {
99
99
  modelSupportsVision
100
100
  } from "./chunk-V4IE7HJY.js";
@@ -108,11 +108,11 @@ import {
108
108
  formatPdfErrorMessage,
109
109
  isPdfBuffer,
110
110
  processPdfContent
111
- } from "./chunk-KCED2X4H.js";
111
+ } from "./chunk-WDJOSRIB.js";
112
112
  import {
113
113
  SETTINGS_KEYS,
114
114
  getSetting
115
- } from "./chunk-YZSBJUGC.js";
115
+ } from "./chunk-SPA7PQPJ.js";
116
116
  import {
117
117
  logger
118
118
  } from "./chunk-K44MW7JJ.js";
@@ -136,7 +136,7 @@ async function requestUserConfirmation(context, toolLabel, desc) {
136
136
  if (context.dangerLevel === "dangerous") return Promise.resolve(true);
137
137
  if (toolLabel === "workspace" || toolLabel === "command") {
138
138
  try {
139
- const { getSetting: getSetting2, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-FT7HF7ZB.js");
139
+ const { getSetting: getSetting2, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-TGCITCVA.js");
140
140
  if (getSetting2(SETTINGS_KEYS2.CONFIRM_ON_WORKSPACE_ACTIONS) !== "true") {
141
141
  return Promise.resolve(true);
142
142
  }
@@ -1559,7 +1559,7 @@ async function executeTools(assistantMsgId, toolCalls, ctx, append) {
1559
1559
  data: { callId: error.callId, question: error.question, type: error.type, options: error.options }
1560
1560
  });
1561
1561
  append(createChatDoneEvent(assistantMsgId, "waiting_for_user"));
1562
- const { awaitAnswer } = await import("./ask-TOBEA6KD.js");
1562
+ const { awaitAnswer } = await import("./ask-CJMU6EW7.js");
1563
1563
  const answerPromise = awaitAnswer(error.callId);
1564
1564
  if (!answerPromise) {
1565
1565
  throw new Error(`No pending question found for callId: ${error.callId}`);
@@ -1919,7 +1919,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
1919
1919
  sessionManager.setCurrentContextSize(sessionId, result.usage.promptTokens, config.subAgentMetadata?.subAgentId);
1920
1920
  if (!compacting) {
1921
1921
  const contextState2 = sessionManager.getContextState(sessionId);
1922
- const { shouldCompact, appendCompactionPrompt } = await import("./compactor-43P3LGDU.js");
1922
+ const { shouldCompact, appendCompactionPrompt } = await import("./compactor-JMO7FHYA.js");
1923
1923
  if (shouldCompact(
1924
1924
  contextState2.currentTokens,
1925
1925
  contextState2.maxTokens,
@@ -2185,13 +2185,13 @@ function createAssemblyResult(input) {
2185
2185
  }
2186
2186
 
2187
2187
  // src/server/llm/vision-fallback.ts
2188
- var IMAGE_PROMPT = `Describe this image in detail. Focus on:
2189
- - What the image shows (UI, diagram, photo, etc.)
2190
- - Any text visible in the image
2191
- - Layout and visual structure
2192
- - Key elements and their relationships
2188
+ var IMAGE_PROMPT = `Describe this image thoroughly and accurately. Include:
2189
+ - What the image shows (UI, diagram, photo, illustration, etc.)
2190
+ - All visible text, transcribed verbatim \u2014 every label, heading, number, and value
2191
+ - Spatial layout: where elements are positioned and how they relate
2192
+ - Colors, visual hierarchy, and any distinctive visual features
2193
2193
 
2194
- Provide a concise but comprehensive description.`;
2194
+ Be exhaustive rather than concise. Prioritize precision \u2014 if there are numbers, lists, or structured data, capture them completely. If the image contains a table or grid, reproduce it as a markdown table with exact values.`;
2195
2195
  function buildPrompt(context) {
2196
2196
  return context ? `${IMAGE_PROMPT}
2197
2197
 
@@ -2907,7 +2907,7 @@ var callSubAgentTool = {
2907
2907
  };
2908
2908
  }
2909
2909
  try {
2910
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-M5DKWCJJ.js");
2910
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-BG44DIYU.js");
2911
2911
  const toolRegistry = getToolRegistryForAgent2(agentDef);
2912
2912
  const turnMetrics = new TurnMetrics();
2913
2913
  const result = await executeSubAgent({
@@ -3929,7 +3929,7 @@ var mcpConfigTool = createTool(
3929
3929
  mcpNotifyChanged?.(sessionId);
3930
3930
  }
3931
3931
  async function rebuildTools() {
3932
- const { setMcpTools: setMcpTools2 } = await import("./tools-M5DKWCJJ.js");
3932
+ const { setMcpTools: setMcpTools2 } = await import("./tools-BG44DIYU.js");
3933
3933
  const mcpTools = createMcpTools(mcpManagerForTools);
3934
3934
  setMcpTools2(mcpTools);
3935
3935
  }
@@ -4604,4 +4604,4 @@ export {
4604
4604
  getToolRegistryForAgent,
4605
4605
  createToolRegistry
4606
4606
  };
4607
- //# sourceMappingURL=chunk-DPRJYQ5U.js.map
4607
+ //# sourceMappingURL=chunk-AKUTOOSV.js.map
@@ -5,13 +5,13 @@ import {
5
5
  deleteItemFromDir,
6
6
  loadItemsFromDir,
7
7
  pathExists
8
- } from "./chunk-FQS7A5M4.js";
8
+ } from "./chunk-6SIX7P6O.js";
9
9
  import {
10
10
  SETTINGS_KEYS,
11
11
  deleteSetting,
12
12
  getSetting,
13
13
  setSetting
14
- } from "./chunk-YZSBJUGC.js";
14
+ } from "./chunk-SPA7PQPJ.js";
15
15
 
16
16
  // src/server/context/instructions.ts
17
17
  import { readFile, access } from "fs/promises";
@@ -440,4 +440,4 @@ export {
440
440
  deleteSkill,
441
441
  deleteProjectSkill
442
442
  };
443
- //# sourceMappingURL=chunk-MGKS2NG2.js.map
443
+ //# sourceMappingURL=chunk-B76OP3OE.js.map
@@ -5,13 +5,13 @@ import {
5
5
  foldContextState,
6
6
  foldSessionState,
7
7
  spreadOptionalMessageFields
8
- } from "./chunk-2EYTYXWN.js";
8
+ } from "./chunk-S5HDT5RQ.js";
9
9
  import {
10
10
  updateSessionMessageCount
11
- } from "./chunk-RZC6DAT2.js";
11
+ } from "./chunk-OUMHR7LR.js";
12
12
  import {
13
13
  getRuntimeConfig
14
- } from "./chunk-FQS7A5M4.js";
14
+ } from "./chunk-6SIX7P6O.js";
15
15
  import {
16
16
  logger
17
17
  } from "./chunk-K44MW7JJ.js";
@@ -1175,4 +1175,4 @@ export {
1175
1175
  truncateSessionMessages,
1176
1176
  getRecentUserPromptsForSession
1177
1177
  };
1178
- //# sourceMappingURL=chunk-WPCYFH6X.js.map
1178
+ //# sourceMappingURL=chunk-DMI2BXHA.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SETTINGS_KEYS,
3
3
  getSetting
4
- } from "./chunk-YZSBJUGC.js";
4
+ } from "./chunk-SPA7PQPJ.js";
5
5
 
6
6
  // src/server/utils/platform.ts
7
7
  import os from "os";
@@ -63,4 +63,4 @@ export {
63
63
  isWindowsPath,
64
64
  isAbsolutePath
65
65
  };
66
- //# sourceMappingURL=chunk-KKEBXFB3.js.map
66
+ //# sourceMappingURL=chunk-EF7KGWF6.js.map
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  getAllInstructions,
3
3
  getEnabledSkillMetadata
4
- } from "./chunk-MGKS2NG2.js";
4
+ } from "./chunk-B76OP3OE.js";
5
5
  import {
6
6
  buildTopLevelSystemPrompt
7
- } from "./chunk-4Z2ARCY3.js";
7
+ } from "./chunk-J27BLIPY.js";
8
8
  import {
9
9
  findAgentById,
10
10
  getRuntimeConfig,
11
11
  getSubAgents,
12
12
  loadAllAgentsDefault,
13
13
  resolveDefaultAgentId
14
- } from "./chunk-FQS7A5M4.js";
14
+ } from "./chunk-6SIX7P6O.js";
15
15
  import {
16
16
  logger
17
17
  } from "./chunk-K44MW7JJ.js";
@@ -77,11 +77,12 @@ function computeUnifiedDiff(oldText, newText) {
77
77
  }
78
78
  return result;
79
79
  }
80
- function computeDynamicContextHash(instructionContent, skills, toolFingerprint) {
80
+ function computeDynamicContextHash(instructionContent, skills, toolFingerprint, modelName) {
81
81
  const dynamicInputs = JSON.stringify({
82
82
  instructions: instructionContent,
83
83
  skills: skills.map((s) => s.id).sort(),
84
- ...toolFingerprint ? { tools: toolFingerprint } : {}
84
+ ...toolFingerprint ? { tools: toolFingerprint } : {},
85
+ ...modelName ? { model: modelName } : {}
85
86
  });
86
87
  return createHash("sha256").update(dynamicInputs).digest("hex");
87
88
  }
@@ -102,31 +103,37 @@ function resolveAgentDef(sessionManager, sessionId) {
102
103
  return findAgentById(session.mode, allAgents) ?? findAgentById(resolveDefaultAgentId(), allAgents);
103
104
  });
104
105
  }
105
- async function buildCachedPrompt(sessionManager, sessionId, agentDef) {
106
+ async function buildCachedPrompt(sessionManager, sessionId, agentDef, modelName) {
106
107
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
107
- const { getToolRegistryForAgent } = await import("./tools-M5DKWCJJ.js");
108
+ const { getToolRegistryForAgent } = await import("./tools-BG44DIYU.js");
108
109
  const tools = getToolRegistryForAgent(agentDef, sessionId).definitions;
109
110
  const toolFingerprint = getToolFingerprint(tools);
110
111
  const allAgents = await loadAllAgentsDefault();
111
112
  const subAgentDefs = getSubAgents(allAgents);
112
113
  const session = sessionManager.requireSession(sessionId);
113
- const systemPrompt = buildTopLevelSystemPrompt(session.workdir, instructionContent || void 0, skills, subAgentDefs);
114
- const hash = computeDynamicContextHash(instructionContent, skills, toolFingerprint);
114
+ const systemPrompt = buildTopLevelSystemPrompt(
115
+ session.workdir,
116
+ instructionContent || void 0,
117
+ skills,
118
+ subAgentDefs,
119
+ modelName
120
+ );
121
+ const hash = computeDynamicContextHash(instructionContent, skills, toolFingerprint, modelName);
115
122
  return { systemPrompt, tools, hash };
116
123
  }
117
- async function computeSessionHash(sessionManager, sessionId) {
124
+ async function computeSessionHash(sessionManager, sessionId, modelName) {
118
125
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
119
126
  const agentDef = await resolveAgentDef(sessionManager, sessionId);
120
- const { getToolRegistryForAgent } = await import("./tools-M5DKWCJJ.js");
127
+ const { getToolRegistryForAgent } = await import("./tools-BG44DIYU.js");
121
128
  const tools = getToolRegistryForAgent(agentDef, sessionId).definitions;
122
129
  const toolFingerprint = getToolFingerprint(tools);
123
- return computeDynamicContextHash(instructionContent, skills, toolFingerprint);
130
+ return computeDynamicContextHash(instructionContent, skills, toolFingerprint, modelName);
124
131
  }
125
- async function applyDynamicContext(sessionManager, sessionId) {
132
+ async function applyDynamicContext(sessionManager, sessionId, modelName) {
126
133
  const session = sessionManager.requireSession(sessionId);
127
134
  const allAgents = await loadAllAgentsDefault();
128
135
  const agentDef = findAgentById(session.mode, allAgents) ?? findAgentById(resolveDefaultAgentId(), allAgents);
129
- const { systemPrompt, tools, hash } = await buildCachedPrompt(sessionManager, sessionId, agentDef);
136
+ const { systemPrompt, tools, hash } = await buildCachedPrompt(sessionManager, sessionId, agentDef, modelName);
130
137
  sessionManager.setCachedPrompt(sessionId, systemPrompt, tools, hash);
131
138
  sessionManager.setDynamicContextChanged(sessionId, false);
132
139
  sessionManager.clearDebugDump(sessionId);
@@ -141,4 +148,4 @@ export {
141
148
  computeSessionHash,
142
149
  applyDynamicContext
143
150
  };
144
- //# sourceMappingURL=chunk-Z753S3X7.js.map
151
+ //# sourceMappingURL=chunk-EIJFYENT.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SETTINGS_KEYS,
3
3
  getSetting
4
- } from "./chunk-YZSBJUGC.js";
4
+ } from "./chunk-SPA7PQPJ.js";
5
5
  import {
6
6
  logger
7
7
  } from "./chunk-K44MW7JJ.js";
@@ -14,6 +14,8 @@ var OpenFoxError = class extends Error {
14
14
  this.details = details;
15
15
  this.name = "OpenFoxError";
16
16
  }
17
+ code;
18
+ details;
17
19
  };
18
20
  var SessionNotFoundError = class extends OpenFoxError {
19
21
  constructor(sessionId) {
@@ -33,6 +35,7 @@ var WorkspaceInUseError = class extends OpenFoxError {
33
35
  this.conflictingSessionIds = conflictingSessionIds;
34
36
  this.name = "WorkspaceInUseError";
35
37
  }
38
+ conflictingSessionIds;
36
39
  };
37
40
 
38
41
  // src/server/llm/proxy.ts
@@ -161,4 +164,4 @@ export {
161
164
  WorkspaceInUseError,
162
165
  OpenAIHttpClient
163
166
  };
164
- //# sourceMappingURL=chunk-MR7ZEGOF.js.map
167
+ //# sourceMappingURL=chunk-ERKPMNC7.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getEventStore
3
- } from "./chunk-WPCYFH6X.js";
3
+ } from "./chunk-DMI2BXHA.js";
4
4
  import {
5
5
  createChatPathConfirmationMessage
6
6
  } from "./chunk-27SDWNKL.js";
@@ -396,6 +396,10 @@ var PathAccessDeniedError = class extends Error {
396
396
  this.customMessage = customMessage;
397
397
  this.name = "PathAccessDeniedError";
398
398
  }
399
+ paths;
400
+ tool;
401
+ reason;
402
+ customMessage;
399
403
  };
400
404
  var pendingConfirmations = /* @__PURE__ */ new Map();
401
405
  function registerPathConfirmation(callId, paths, sessionId, tool, workdir, reason) {
@@ -494,4 +498,4 @@ export {
494
498
  getConfirmationSessionId,
495
499
  getPendingConfirmationsBySession
496
500
  };
497
- //# sourceMappingURL=chunk-ZLCPNTRT.js.map
501
+ //# sourceMappingURL=chunk-ERTTKKCE.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createMessageStartEvent
3
- } from "./chunk-5ZJYEINJ.js";
3
+ } from "./chunk-5M45NHQ2.js";
4
4
  import {
5
5
  COMPACTION_PROMPT
6
- } from "./chunk-4Z2ARCY3.js";
6
+ } from "./chunk-J27BLIPY.js";
7
7
  import {
8
8
  getCurrentWindowMessageOptions
9
- } from "./chunk-WPCYFH6X.js";
9
+ } from "./chunk-DMI2BXHA.js";
10
10
 
11
11
  // src/server/context/compactor.ts
12
12
  function appendCompactionPrompt(sessionId, append) {
@@ -36,4 +36,4 @@ export {
36
36
  COMPACTION_MAX_RATIO,
37
37
  shouldCompact
38
38
  };
39
- //# sourceMappingURL=chunk-73EV6QYX.js.map
39
+ //# sourceMappingURL=chunk-FGYOSQUR.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getPlatformShell
3
- } from "./chunk-KKEBXFB3.js";
3
+ } from "./chunk-EF7KGWF6.js";
4
4
 
5
5
  // src/server/tools/tool-policy.ts
6
6
  var ALWAYS_ALLOWED = /* @__PURE__ */ new Set(["step_done"]);
@@ -245,4 +245,4 @@ export {
245
245
  buildAgentSmallReminder,
246
246
  COMPACTION_PROMPT
247
247
  };
248
- //# sourceMappingURL=chunk-4Z2ARCY3.js.map
248
+ //# sourceMappingURL=chunk-J27BLIPY.js.map
@@ -93,6 +93,10 @@ var AskUserInterrupt = class extends Error {
93
93
  this.options = options;
94
94
  this.name = "AskUserInterrupt";
95
95
  }
96
+ callId;
97
+ question;
98
+ type;
99
+ options;
96
100
  };
97
101
  function provideAnswer(callId, answer, skip) {
98
102
  const pending = pendingQuestions.get(callId);
@@ -152,4 +156,4 @@ export {
152
156
  awaitAnswer,
153
157
  getPendingQuestionsForSession
154
158
  };
155
- //# sourceMappingURL=chunk-EU3WWTFH.js.map
159
+ //# sourceMappingURL=chunk-JAX5OEMM.js.map
@@ -2,44 +2,44 @@ import {
2
2
  buildCachedPrompt,
3
3
  computeDynamicContextHash,
4
4
  getToolFingerprint
5
- } from "./chunk-Z753S3X7.js";
5
+ } from "./chunk-EIJFYENT.js";
6
6
  import {
7
7
  createAssemblyResult,
8
8
  getConversationMessages,
9
9
  getToolRegistryForAgent,
10
10
  processEventsForConversation,
11
11
  runTopLevelAgentLoop
12
- } from "./chunk-DPRJYQ5U.js";
12
+ } from "./chunk-AKUTOOSV.js";
13
13
  import {
14
14
  getAllInstructions,
15
15
  getEnabledSkillMetadata
16
- } from "./chunk-MGKS2NG2.js";
16
+ } from "./chunk-B76OP3OE.js";
17
17
  import {
18
18
  TurnMetrics,
19
19
  createChatDoneEvent,
20
20
  createMessageStartEvent
21
- } from "./chunk-5ZJYEINJ.js";
21
+ } from "./chunk-5M45NHQ2.js";
22
22
  import {
23
23
  buildAgentReminder,
24
24
  buildAgentSmallReminder
25
- } from "./chunk-4Z2ARCY3.js";
25
+ } from "./chunk-J27BLIPY.js";
26
26
  import {
27
27
  PathAccessDeniedError
28
- } from "./chunk-ZLCPNTRT.js";
28
+ } from "./chunk-ERTTKKCE.js";
29
29
  import {
30
30
  getCurrentContextWindowId,
31
31
  getCurrentWindowMessageOptions,
32
32
  getEventStore
33
- } from "./chunk-WPCYFH6X.js";
33
+ } from "./chunk-DMI2BXHA.js";
34
34
  import {
35
35
  buildSnapshotFromSessionState
36
- } from "./chunk-2EYTYXWN.js";
36
+ } from "./chunk-S5HDT5RQ.js";
37
37
  import {
38
38
  findAgentById,
39
39
  getRuntimeConfig,
40
40
  loadAllAgentsDefault,
41
41
  resolveDefaultAgentId
42
- } from "./chunk-FQS7A5M4.js";
42
+ } from "./chunk-6SIX7P6O.js";
43
43
  import {
44
44
  logger
45
45
  } from "./chunk-K44MW7JJ.js";
@@ -49,7 +49,7 @@ import {
49
49
 
50
50
  // src/server/chat/orchestrator.ts
51
51
  async function buildRetryPatterns() {
52
- const { getSetting, SETTINGS_KEYS } = await import("./settings-FT7HF7ZB.js");
52
+ const { getSetting, SETTINGS_KEYS } = await import("./settings-TGCITCVA.js");
53
53
  const raw = getSetting(SETTINGS_KEYS.RETRY_PATTERNS);
54
54
  if (!raw) {
55
55
  const oldXmlProtection = getSetting("llm.disableXmlProtection");
@@ -254,7 +254,12 @@ async function runAgentTurn(options, turnMetrics, agentId, append, callbacks) {
254
254
  const cached = options.sessionManager.getCachedPrompt(options.sessionId);
255
255
  if (cached) {
256
256
  const toolFingerprint = getToolFingerprint(cached.tools);
257
- const currentHash = computeDynamicContextHash(instructionContent ?? "", skills, toolFingerprint);
257
+ const currentHash = computeDynamicContextHash(
258
+ instructionContent ?? "",
259
+ skills,
260
+ toolFingerprint,
261
+ agentLlmClient.getModel()
262
+ );
258
263
  if (cached.hash !== currentHash) {
259
264
  logger.debug("assembleRequest: hash mismatch", {
260
265
  sessionId: options.sessionId,
@@ -272,7 +277,12 @@ async function runAgentTurn(options, turnMetrics, agentId, append, callbacks) {
272
277
  toolChoice: input.toolChoice
273
278
  });
274
279
  }
275
- const result = await buildCachedPrompt(options.sessionManager, options.sessionId, agentDef);
280
+ const result = await buildCachedPrompt(
281
+ options.sessionManager,
282
+ options.sessionId,
283
+ agentDef,
284
+ agentLlmClient.getModel()
285
+ );
276
286
  options.sessionManager.setCachedPrompt(options.sessionId, result.systemPrompt, result.tools, result.hash);
277
287
  return createAssemblyResult({
278
288
  systemPrompt: result.systemPrompt,
@@ -311,4 +321,4 @@ export {
311
321
  runChatTurn,
312
322
  runAgentTurn
313
323
  };
314
- //# sourceMappingURL=chunk-QL2G5UWE.js.map
324
+ //# sourceMappingURL=chunk-KDJZGHSZ.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
- Ct,
3
- Ht,
4
- Jt,
5
- Nt
6
- } from "./chunk-XY3LESVZ.js";
2
+ cancel,
3
+ isCancel,
4
+ password,
5
+ select
6
+ } from "./chunk-4H427UBV.js";
7
7
 
8
8
  // src/cli/main.ts
9
9
  import { parseArgs } from "util";
@@ -44,26 +44,26 @@ async function runNetworkSetup(mode) {
44
44
  return;
45
45
  }
46
46
  console.log("\nOpenFox Setup\n");
47
- const networkChoice = await Jt({
47
+ const networkChoice = await select({
48
48
  message: "How should OpenFox be accessible?",
49
49
  options: [
50
50
  { value: "localhost", label: "Secure (localhost only)" },
51
51
  { value: "network", label: "Accessible from local network" }
52
52
  ]
53
53
  });
54
- if (Ct(networkChoice)) {
55
- Nt();
54
+ if (isCancel(networkChoice)) {
55
+ cancel();
56
56
  process.exit(1);
57
57
  }
58
58
  const isNetwork = networkChoice === "network";
59
59
  const host = isNetwork ? "0.0.0.0" : "127.0.0.1";
60
60
  let passwordValue;
61
61
  if (isNetwork) {
62
- const pwd = await Ht({
62
+ const pwd = await password({
63
63
  message: "Set a password? (optional, press Enter to skip)"
64
64
  });
65
- if (Ct(pwd)) {
66
- Nt();
65
+ if (isCancel(pwd)) {
66
+ cancel();
67
67
  process.exit(1);
68
68
  }
69
69
  passwordValue = typeof pwd === "string" ? pwd : void 0;
@@ -163,7 +163,7 @@ async function runCli(options) {
163
163
  break;
164
164
  }
165
165
  case "provider": {
166
- const { runProviderCommand } = await import("./provider-FX3QCGAF.js");
166
+ const { runProviderCommand } = await import("./provider-ZXYITGFU.js");
167
167
  const [, subcommand] = positionals;
168
168
  await runProviderCommand(mode, subcommand);
169
169
  break;
@@ -182,7 +182,7 @@ async function runCli(options) {
182
182
  break;
183
183
  }
184
184
  case "pwa": {
185
- const { runPwaCommand, printPwaHelp } = await import("./pwa-SEWCVKZX.js");
185
+ const { runPwaCommand, printPwaHelp } = await import("./pwa-XPHP3PY2.js");
186
186
  const [, subcommand] = positionals;
187
187
  if (subcommand === "--help" || subcommand === "-h" || values.help) {
188
188
  printPwaHelp();
@@ -200,7 +200,7 @@ async function runCli(options) {
200
200
  break;
201
201
  }
202
202
  case "update": {
203
- const { runUpdate } = await import("./update-KMPQUPQT.js");
203
+ const { runUpdate } = await import("./update-SOCIS7KO.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-FE4UAXGE.js");
216
+ const { runServe } = await import("./serve-OYLEY3HD.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-JL657X72.js.map
228
+ //# sourceMappingURL=chunk-LG57PZYL.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveDefaultAgentId
3
- } from "./chunk-FQS7A5M4.js";
3
+ } from "./chunk-6SIX7P6O.js";
4
4
  import {
5
5
  getDatabase
6
6
  } from "./chunk-GLF65XDS.js";
@@ -367,4 +367,4 @@ export {
367
367
  getActiveWorkflowExecution,
368
368
  clearWorkflowExecution
369
369
  };
370
- //# sourceMappingURL=chunk-RZC6DAT2.js.map
370
+ //# sourceMappingURL=chunk-OUMHR7LR.js.map
@@ -13,11 +13,11 @@ import {
13
13
  getThinking,
14
14
  mapFinishReason,
15
15
  parseToolArguments
16
- } from "./chunk-KCED2X4H.js";
16
+ } from "./chunk-WDJOSRIB.js";
17
17
  import {
18
18
  LLMError,
19
19
  OpenAIHttpClient
20
- } from "./chunk-MR7ZEGOF.js";
20
+ } from "./chunk-ERKPMNC7.js";
21
21
  import {
22
22
  logger
23
23
  } from "./chunk-K44MW7JJ.js";
@@ -310,4 +310,4 @@ function createLLMClient(config, initialBackend = "unknown") {
310
310
  export {
311
311
  createLLMClient
312
312
  };
313
- //# sourceMappingURL=chunk-BJDQPILB.js.map
313
+ //# sourceMappingURL=chunk-PP3WNUA6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveDefaultAgentId
3
- } from "./chunk-FQS7A5M4.js";
3
+ } from "./chunk-6SIX7P6O.js";
4
4
 
5
5
  // src/server/events/apply-events.ts
6
6
  function markComplete(msg, reason) {
@@ -929,4 +929,4 @@ export {
929
929
  buildSnapshot,
930
930
  buildSnapshotFromSessionState
931
931
  };
932
- //# sourceMappingURL=chunk-2EYTYXWN.js.map
932
+ //# sourceMappingURL=chunk-S5HDT5RQ.js.map