@librechat/agents 3.7.22 → 3.8.1

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 (232) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +13 -3
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  3. package/dist/cjs/graphs/Graph.cjs +174 -53
  4. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  5. package/dist/cjs/graphs/MultiAgentGraph.cjs +15 -5
  6. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  7. package/dist/cjs/langfuse.cjs +48 -2
  8. package/dist/cjs/langfuse.cjs.map +1 -1
  9. package/dist/cjs/langfuseToolOutputTracing.cjs +42 -0
  10. package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -1
  11. package/dist/cjs/langfuseTraceShaping.cjs +7 -1
  12. package/dist/cjs/langfuseTraceShaping.cjs.map +1 -1
  13. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +5 -9
  14. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  15. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +2 -7
  16. package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
  17. package/dist/cjs/llm/contextPressureMeter.cjs +51 -10
  18. package/dist/cjs/llm/contextPressureMeter.cjs.map +1 -1
  19. package/dist/cjs/llm/init.cjs +1 -1
  20. package/dist/cjs/llm/invoke.cjs +2 -2
  21. package/dist/cjs/llm/openai/index.cjs +4 -3
  22. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  23. package/dist/cjs/llm/openai/utils/index.cjs +5 -4
  24. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  25. package/dist/cjs/llm/preempt.cjs +3 -2
  26. package/dist/cjs/llm/preempt.cjs.map +1 -1
  27. package/dist/cjs/llm/prepareProviderRequest.cjs +9 -7
  28. package/dist/cjs/llm/prepareProviderRequest.cjs.map +1 -1
  29. package/dist/cjs/llm/providers.cjs +1 -1
  30. package/dist/cjs/main.cjs +11 -5
  31. package/dist/cjs/messages/alternation.cjs +1 -5
  32. package/dist/cjs/messages/alternation.cjs.map +1 -1
  33. package/dist/cjs/messages/budget.cjs +206 -7
  34. package/dist/cjs/messages/budget.cjs.map +1 -1
  35. package/dist/cjs/messages/cache.cjs +3 -9
  36. package/dist/cjs/messages/cache.cjs.map +1 -1
  37. package/dist/cjs/messages/core.cjs +25 -37
  38. package/dist/cjs/messages/core.cjs.map +1 -1
  39. package/dist/cjs/messages/format.cjs +131 -42
  40. package/dist/cjs/messages/format.cjs.map +1 -1
  41. package/dist/cjs/messages/index.cjs +2 -0
  42. package/dist/cjs/messages/prune.cjs +12 -7
  43. package/dist/cjs/messages/prune.cjs.map +1 -1
  44. package/dist/cjs/messages/reasoningTypes.cjs +21 -0
  45. package/dist/cjs/messages/reasoningTypes.cjs.map +1 -0
  46. package/dist/cjs/messages/recency.cjs +15 -94
  47. package/dist/cjs/messages/recency.cjs.map +1 -1
  48. package/dist/cjs/messages/toolHistoryProjection.cjs +243 -0
  49. package/dist/cjs/messages/toolHistoryProjection.cjs.map +1 -0
  50. package/dist/cjs/messages/toolResultTypes.cjs +145 -4
  51. package/dist/cjs/messages/toolResultTypes.cjs.map +1 -1
  52. package/dist/cjs/run.cjs +5 -4
  53. package/dist/cjs/run.cjs.map +1 -1
  54. package/dist/cjs/session/AgentSession.cjs +6 -4
  55. package/dist/cjs/session/AgentSession.cjs.map +1 -1
  56. package/dist/cjs/session/JsonlSessionStore.cjs +3 -0
  57. package/dist/cjs/session/JsonlSessionStore.cjs.map +1 -1
  58. package/dist/cjs/session/index.cjs +1 -1
  59. package/dist/cjs/session/sessionProjection.cjs +75 -0
  60. package/dist/cjs/session/sessionProjection.cjs.map +1 -0
  61. package/dist/cjs/stream.cjs +18 -17
  62. package/dist/cjs/stream.cjs.map +1 -1
  63. package/dist/cjs/summarization/index.cjs.map +1 -1
  64. package/dist/cjs/summarization/node.cjs +18 -8
  65. package/dist/cjs/summarization/node.cjs.map +1 -1
  66. package/dist/cjs/summarization/shared.cjs +9 -0
  67. package/dist/cjs/summarization/shared.cjs.map +1 -1
  68. package/dist/cjs/tools/ArtifactDelivery.cjs +27 -0
  69. package/dist/cjs/tools/ArtifactDelivery.cjs.map +1 -0
  70. package/dist/cjs/tools/BashExecutor.cjs +6 -1
  71. package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
  72. package/dist/cjs/tools/CodeExecutor.cjs +6 -1
  73. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  74. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +5 -1
  75. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  76. package/dist/cjs/tools/local/CompileCheckTool.cjs +1 -1
  77. package/dist/cjs/tools/local/LocalCodingTools.cjs +1 -1
  78. package/dist/cjs/utils/events.cjs +13 -0
  79. package/dist/cjs/utils/events.cjs.map +1 -1
  80. package/dist/cjs/utils/tokens.cjs +105 -0
  81. package/dist/cjs/utils/tokens.cjs.map +1 -1
  82. package/dist/esm/agents/AgentContext.mjs +13 -3
  83. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  84. package/dist/esm/graphs/Graph.mjs +176 -55
  85. package/dist/esm/graphs/Graph.mjs.map +1 -1
  86. package/dist/esm/graphs/MultiAgentGraph.mjs +15 -5
  87. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  88. package/dist/esm/langfuse.mjs +49 -4
  89. package/dist/esm/langfuse.mjs.map +1 -1
  90. package/dist/esm/langfuseToolOutputTracing.mjs +41 -1
  91. package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -1
  92. package/dist/esm/langfuseTraceShaping.mjs +7 -1
  93. package/dist/esm/langfuseTraceShaping.mjs.map +1 -1
  94. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +5 -9
  95. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  96. package/dist/esm/llm/bedrock/utils/message_inputs.mjs +2 -7
  97. package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
  98. package/dist/esm/llm/contextPressureMeter.mjs +52 -11
  99. package/dist/esm/llm/contextPressureMeter.mjs.map +1 -1
  100. package/dist/esm/llm/init.mjs +1 -1
  101. package/dist/esm/llm/invoke.mjs +2 -2
  102. package/dist/esm/llm/openai/index.mjs +2 -1
  103. package/dist/esm/llm/openai/index.mjs.map +1 -1
  104. package/dist/esm/llm/openai/utils/index.mjs +5 -4
  105. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  106. package/dist/esm/llm/preempt.mjs +2 -1
  107. package/dist/esm/llm/preempt.mjs.map +1 -1
  108. package/dist/esm/llm/prepareProviderRequest.mjs +9 -7
  109. package/dist/esm/llm/prepareProviderRequest.mjs.map +1 -1
  110. package/dist/esm/llm/providers.mjs +1 -1
  111. package/dist/esm/main.mjs +10 -7
  112. package/dist/esm/messages/alternation.mjs +2 -6
  113. package/dist/esm/messages/alternation.mjs.map +1 -1
  114. package/dist/esm/messages/budget.mjs +206 -8
  115. package/dist/esm/messages/budget.mjs.map +1 -1
  116. package/dist/esm/messages/cache.mjs +3 -9
  117. package/dist/esm/messages/cache.mjs.map +1 -1
  118. package/dist/esm/messages/core.mjs +23 -33
  119. package/dist/esm/messages/core.mjs.map +1 -1
  120. package/dist/esm/messages/format.mjs +132 -43
  121. package/dist/esm/messages/format.mjs.map +1 -1
  122. package/dist/esm/messages/index.mjs +2 -0
  123. package/dist/esm/messages/prune.mjs +12 -7
  124. package/dist/esm/messages/prune.mjs.map +1 -1
  125. package/dist/esm/messages/reasoningTypes.mjs +20 -0
  126. package/dist/esm/messages/reasoningTypes.mjs.map +1 -0
  127. package/dist/esm/messages/recency.mjs +16 -95
  128. package/dist/esm/messages/recency.mjs.map +1 -1
  129. package/dist/esm/messages/toolHistoryProjection.mjs +237 -0
  130. package/dist/esm/messages/toolHistoryProjection.mjs.map +1 -0
  131. package/dist/esm/messages/toolResultTypes.mjs +141 -4
  132. package/dist/esm/messages/toolResultTypes.mjs.map +1 -1
  133. package/dist/esm/run.mjs +5 -4
  134. package/dist/esm/run.mjs.map +1 -1
  135. package/dist/esm/session/AgentSession.mjs +6 -4
  136. package/dist/esm/session/AgentSession.mjs.map +1 -1
  137. package/dist/esm/session/JsonlSessionStore.mjs +3 -0
  138. package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
  139. package/dist/esm/session/index.mjs +1 -1
  140. package/dist/esm/session/sessionProjection.mjs +72 -0
  141. package/dist/esm/session/sessionProjection.mjs.map +1 -0
  142. package/dist/esm/stream.mjs +15 -14
  143. package/dist/esm/stream.mjs.map +1 -1
  144. package/dist/esm/summarization/index.mjs.map +1 -1
  145. package/dist/esm/summarization/node.mjs +19 -9
  146. package/dist/esm/summarization/node.mjs.map +1 -1
  147. package/dist/esm/summarization/shared.mjs +9 -1
  148. package/dist/esm/summarization/shared.mjs.map +1 -1
  149. package/dist/esm/tools/ArtifactDelivery.mjs +26 -0
  150. package/dist/esm/tools/ArtifactDelivery.mjs.map +1 -0
  151. package/dist/esm/tools/BashExecutor.mjs +6 -1
  152. package/dist/esm/tools/BashExecutor.mjs.map +1 -1
  153. package/dist/esm/tools/CodeExecutor.mjs +6 -1
  154. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  155. package/dist/esm/tools/ProgrammaticToolCalling.mjs +5 -1
  156. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  157. package/dist/esm/tools/local/CompileCheckTool.mjs +1 -1
  158. package/dist/esm/tools/local/LocalCodingTools.mjs +1 -1
  159. package/dist/esm/utils/events.mjs +13 -0
  160. package/dist/esm/utils/events.mjs.map +1 -1
  161. package/dist/esm/utils/tokens.mjs +105 -1
  162. package/dist/esm/utils/tokens.mjs.map +1 -1
  163. package/dist/types/agents/AgentContext.d.ts +13 -1
  164. package/dist/types/graphs/Graph.d.ts +27 -0
  165. package/dist/types/hooks/types.d.ts +4 -2
  166. package/dist/types/index.d.ts +1 -0
  167. package/dist/types/langfuse.d.ts +10 -0
  168. package/dist/types/langfuseToolOutputTracing.d.ts +2 -0
  169. package/dist/types/llm/contextPressureMeter.d.ts +2 -1
  170. package/dist/types/llm/prepareProviderRequest.d.ts +7 -1
  171. package/dist/types/messages/budget.d.ts +15 -10
  172. package/dist/types/messages/core.d.ts +8 -17
  173. package/dist/types/messages/format.d.ts +3 -2
  174. package/dist/types/messages/index.d.ts +1 -1
  175. package/dist/types/messages/prune.d.ts +1 -1
  176. package/dist/types/messages/reasoningTypes.d.ts +7 -0
  177. package/dist/types/messages/recency.d.ts +3 -0
  178. package/dist/types/messages/toolHistoryProjection.d.ts +65 -0
  179. package/dist/types/messages/toolResultTypes.d.ts +31 -1
  180. package/dist/types/session/sessionProjection.d.ts +10 -0
  181. package/dist/types/summarization/index.d.ts +2 -1
  182. package/dist/types/summarization/node.d.ts +1 -0
  183. package/dist/types/summarization/shared.d.ts +12 -0
  184. package/dist/types/tools/ArtifactDelivery.d.ts +4 -0
  185. package/dist/types/types/graph.d.ts +28 -0
  186. package/dist/types/types/run.d.ts +4 -0
  187. package/dist/types/types/summarize.d.ts +4 -1
  188. package/dist/types/types/tools.d.ts +11 -0
  189. package/dist/types/utils/tokens.d.ts +2 -1
  190. package/package.json +1 -1
  191. package/src/agents/AgentContext.ts +34 -3
  192. package/src/graphs/Graph.ts +465 -147
  193. package/src/graphs/MultiAgentGraph.ts +28 -6
  194. package/src/hooks/types.ts +4 -1
  195. package/src/index.ts +1 -0
  196. package/src/langfuse.ts +84 -11
  197. package/src/langfuseToolOutputTracing.ts +91 -0
  198. package/src/langfuseTraceShaping.ts +17 -4
  199. package/src/llm/anthropic/utils/message_inputs.ts +5 -10
  200. package/src/llm/bedrock/utils/message_inputs.ts +2 -8
  201. package/src/llm/contextPressureMeter.ts +80 -12
  202. package/src/llm/openai/utils/index.ts +5 -4
  203. package/src/llm/prepareProviderRequest.ts +21 -16
  204. package/src/messages/alternation.ts +2 -15
  205. package/src/messages/budget.ts +439 -23
  206. package/src/messages/cache.ts +8 -9
  207. package/src/messages/core.ts +65 -95
  208. package/src/messages/format.ts +262 -78
  209. package/src/messages/index.ts +1 -1
  210. package/src/messages/prune.ts +31 -12
  211. package/src/messages/reasoningTypes.ts +23 -0
  212. package/src/messages/recency.ts +35 -179
  213. package/src/messages/toolHistoryProjection.ts +460 -0
  214. package/src/messages/toolResultTypes.ts +331 -100
  215. package/src/run.ts +10 -2
  216. package/src/session/AgentSession.ts +33 -16
  217. package/src/session/JsonlSessionStore.ts +6 -0
  218. package/src/session/sessionProjection.ts +126 -0
  219. package/src/stream.ts +14 -19
  220. package/src/summarization/index.ts +2 -0
  221. package/src/summarization/node.ts +62 -13
  222. package/src/summarization/shared.ts +23 -0
  223. package/src/tools/ArtifactDelivery.ts +50 -0
  224. package/src/tools/BashExecutor.ts +18 -1
  225. package/src/tools/CodeExecutor.ts +18 -1
  226. package/src/tools/ProgrammaticToolCalling.ts +15 -1
  227. package/src/types/graph.ts +28 -0
  228. package/src/types/run.ts +4 -0
  229. package/src/types/summarize.ts +4 -1
  230. package/src/types/tools.ts +12 -0
  231. package/src/utils/events.ts +19 -0
  232. package/src/utils/tokens.ts +183 -0
@@ -8,90 +8,10 @@ function resolveIntraTurnRetainTokens({ tokens, maxContextTokens }) {
8
8
  if (maxContextTokens == null || !Number.isFinite(maxContextTokens) || maxContextTokens <= 0) return;
9
9
  return Math.max(1, Math.floor(maxContextTokens * DEFAULT_INTRA_TURN_RETAIN_RATIO));
10
10
  }
11
- function readOwnString(value, key) {
12
- if (value == null || typeof value !== "object" || Array.isArray(value)) return;
13
- try {
14
- const descriptor = Object.getOwnPropertyDescriptor(value, key);
15
- return descriptor != null && "value" in descriptor && typeof descriptor.value === "string" && descriptor.value !== "" && descriptor.value.length <= 512 ? descriptor.value : void 0;
16
- } catch {
17
- return;
18
- }
19
- }
20
- function readOwnValue(value, key) {
21
- if (value == null || typeof value !== "object" || Array.isArray(value)) return;
22
- try {
23
- const descriptor = Object.getOwnPropertyDescriptor(value, key);
24
- return descriptor != null && "value" in descriptor ? descriptor.value : void 0;
25
- } catch {
26
- return;
27
- }
28
- }
29
- const LEGACY_FUNCTION_CALL_PREFIX = "legacy_function:";
30
- function getLegacyFunctionCallId(name) {
31
- const callId = `${LEGACY_FUNCTION_CALL_PREFIX}${name}`;
32
- return callId.length <= 512 ? callId : void 0;
33
- }
34
- function getRawToolCallDescriptor(toolCall) {
35
- const callId = readOwnString(toolCall, "id");
36
- if (callId == null) return;
37
- let name;
38
- if (toolCall != null && typeof toolCall === "object") try {
39
- const property = Object.getOwnPropertyDescriptor(toolCall, "function");
40
- name = property != null && "value" in property ? readOwnString(property.value, "name") : void 0;
41
- } catch {
42
- return;
43
- }
44
- return {
45
- callId,
46
- kind: "tool",
47
- sourceType: "raw_tool_calls",
48
- ...name == null ? {} : { name }
49
- };
50
- }
51
- function appendMessageToolCalls(message, calls) {
52
- const messageRole = message.role;
53
- if (message.getType() !== "ai" && messageRole !== "assistant") return;
54
- for (const toolCall of message.tool_calls ?? []) {
55
- const descriptor = require_toolResultTypes.getProviderAIMessageToolCallDescriptor(toolCall);
56
- if (descriptor != null) require_toolResultTypes.appendProviderToolCallDescriptor(calls, descriptor);
57
- }
58
- const rawToolCalls = require_toolResultTypes.getBoundedProviderPairingArrayProperty(message.additional_kwargs, "tool_calls");
59
- if (rawToolCalls != null) for (const toolCall of rawToolCalls) {
60
- const descriptor = getRawToolCallDescriptor(toolCall);
61
- if (descriptor != null) require_toolResultTypes.appendProviderToolCallDescriptor(calls, descriptor);
62
- }
63
- const legacyFunctionName = readOwnString(readOwnValue(message.additional_kwargs, "function_call"), "name");
64
- const legacyFunctionCallId = legacyFunctionName == null ? void 0 : getLegacyFunctionCallId(legacyFunctionName);
65
- if (legacyFunctionCallId != null) require_toolResultTypes.appendProviderToolCallDescriptor(calls, {
66
- callId: legacyFunctionCallId,
67
- kind: "tool",
68
- name: legacyFunctionName,
69
- sourceType: "legacy_function_call"
70
- });
71
- }
72
- function getToolMessageResultDescriptor(message) {
73
- if (message.getType() === "function" && message.name != null) {
74
- const toolCallId = getLegacyFunctionCallId(message.name);
75
- return toolCallId == null ? void 0 : {
76
- type: "function_message",
77
- toolCallId,
78
- compatibleCallKinds: ["tool"],
79
- expectedToolNames: [message.name]
80
- };
81
- }
82
- if (message.getType() !== "tool") return;
83
- const toolMessage = message;
84
- const toolCallId = typeof toolMessage.tool_call_id === "string" ? toolMessage.tool_call_id : toolMessage.toolCallId;
85
- return typeof toolCallId === "string" && toolCallId !== "" && toolCallId.length <= 512 ? {
86
- type: "tool_message",
87
- toolCallId,
88
- compatibleCallKinds: ["tool"]
89
- } : void 0;
90
- }
91
- function inspectMessagePairing(message, calls) {
92
- const isHuman = message.getType() === "human";
11
+ function inspectMessagePairing(message, calls, provider) {
12
+ const isHuman = require_toolResultTypes.getProviderMessageRole(message, provider) === "user";
93
13
  const candidateCalls = isHuman ? new Map(calls) : calls;
94
- if (!isHuman) appendMessageToolCalls(message, candidateCalls);
14
+ if (!isHuman) require_toolResultTypes.appendProviderMessageToolCalls(message, candidateCalls, provider);
95
15
  const content = require_toolResultTypes.getBoundedProviderPairingArray(message.content);
96
16
  let completedToolCalls = 0;
97
17
  let resultPartCount = 0;
@@ -111,7 +31,7 @@ function inspectMessagePairing(message, calls) {
111
31
  previousPart = part;
112
32
  }
113
33
  }
114
- const toolMessageResult = getToolMessageResultDescriptor(message);
34
+ const toolMessageResult = require_toolResultTypes.getProviderToolMessageResultDescriptor(message, provider);
115
35
  if (toolMessageResult != null && require_toolResultTypes.consumeProviderToolResultPair(toolMessageResult, candidateCalls)) completedToolCalls += 1;
116
36
  const trustedHumanToolResult = everyPartIsTrustedHumanResult && resultPartCount > 0 && resultPartCount === content?.length;
117
37
  if (trustedHumanToolResult) {
@@ -120,16 +40,17 @@ function inspectMessagePairing(message, calls) {
120
40
  }
121
41
  return {
122
42
  completedToolCalls: isHuman && !trustedHumanToolResult ? 0 : completedToolCalls,
123
- trustedHumanToolResult
43
+ trustedHumanToolResult,
44
+ userMessage: isHuman
124
45
  };
125
46
  }
126
- function findTurnStarts(messages) {
47
+ function findTurnStarts(messages, provider) {
127
48
  const turnStarts = [];
128
49
  const calls = /* @__PURE__ */ new Map();
129
50
  for (let i = 0; i < messages.length; i++) {
130
51
  const message = messages[i];
131
- const pairing = inspectMessagePairing(message, calls);
132
- if (message.getType() !== "human" || pairing.trustedHumanToolResult) continue;
52
+ const pairing = inspectMessagePairing(message, calls, provider);
53
+ if (!pairing.userMessage || pairing.trustedHumanToolResult) continue;
133
54
  turnStarts.push(i);
134
55
  calls.clear();
135
56
  }
@@ -141,7 +62,7 @@ function getCoverageSourceIds(message) {
141
62
  const messageId = message.id?.trim();
142
63
  return messageId != null && messageId !== "" ? [messageId] : [];
143
64
  }
144
- function findIntraTurnBoundary(messages, countMessageAt, retainTokens, earliestRetainedTurnEndIndex) {
65
+ function findIntraTurnBoundary(messages, countMessageAt, retainTokens, earliestRetainedTurnEndIndex, provider) {
145
66
  let remainingTokens = 0;
146
67
  for (let i = 0; i < messages.length; i++) remainingTokens += countMessageAt(i);
147
68
  if (remainingTokens <= retainTokens) return;
@@ -160,13 +81,13 @@ function findIntraTurnBoundary(messages, countMessageAt, retainTokens, earliestR
160
81
  for (let i = 0; i <= boundarySearchEnd; i++) {
161
82
  const message = messages[i];
162
83
  remainingTokens -= countMessageAt(i);
163
- const pairing = inspectMessagePairing(message, pendingToolCalls);
84
+ const pairing = inspectMessagePairing(message, pendingToolCalls, provider);
164
85
  completedToolCalls += pairing.completedToolCalls;
165
- if (message.getType() === "human" && !pairing.trustedHumanToolResult) pendingToolCalls.clear();
86
+ if (pairing.userMessage && !pairing.trustedHumanToolResult) pendingToolCalls.clear();
166
87
  for (const sourceId of sourceIdsByIndex[i]) if (lastIndexBySourceId.get(sourceId) === i) straddlingSourceIds.delete(sourceId);
167
88
  else straddlingSourceIds.add(sourceId);
168
89
  if (remainingTokens < retainTokens) break;
169
- if (completedToolCalls > 0 && pendingToolCalls.size === 0 && straddlingSourceIds.size === 0 && (message.getType() !== "human" || pairing.trustedHumanToolResult)) boundary = i + 1;
90
+ if (completedToolCalls > 0 && pendingToolCalls.size === 0 && straddlingSourceIds.size === 0 && (!pairing.userMessage || pairing.trustedHumanToolResult)) boundary = i + 1;
170
91
  }
171
92
  return boundary;
172
93
  }
@@ -179,7 +100,7 @@ function splitAtRecencyBoundary(messages, options = {}) {
179
100
  tailStartIndex: messages.length,
180
101
  usedIntraTurnFallback: false
181
102
  };
182
- const turnStarts = findTurnStarts(messages);
103
+ const turnStarts = findTurnStarts(messages, options.provider);
183
104
  if (turnStarts.length === 0) return {
184
105
  head: messages,
185
106
  tail: [],
@@ -219,7 +140,7 @@ function splitAtRecencyBoundary(messages, options = {}) {
219
140
  if (tailStartIndex === turnStarts[0]) {
220
141
  const intraTurnTokens = options.intraTurnTokens;
221
142
  if (intraTurnTokens != null && Number.isFinite(intraTurnTokens) && intraTurnTokens > 0 && tokenCounter != null) {
222
- const intraTurnBoundary = findIntraTurnBoundary(messages, countMessageAt, intraTurnTokens, turnStarts[1] ?? messages.length);
143
+ const intraTurnBoundary = findIntraTurnBoundary(messages, countMessageAt, intraTurnTokens, turnStarts[1] ?? messages.length, options.provider);
223
144
  if (intraTurnBoundary != null) return {
224
145
  head: messages.slice(0, intraTurnBoundary),
225
146
  tail: messages.slice(intraTurnBoundary),
@@ -1 +1 @@
1
- {"version":3,"file":"recency.cjs","names":["getProviderAIMessageToolCallDescriptor","getBoundedProviderPairingArrayProperty","getBoundedProviderPairingArray","getProviderToolCallPartDescriptor","getProviderToolResultPartDescriptor","consumeProviderToolResultPair","getProviderSourceMessageIds"],"sources":["../../../src/messages/recency.ts"],"mappings":"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"}
1
+ {"version":3,"file":"recency.cjs","names":["getProviderMessageRole","getBoundedProviderPairingArray","getProviderToolCallPartDescriptor","getProviderToolResultPartDescriptor","consumeProviderToolResultPair","getProviderToolMessageResultDescriptor","getProviderSourceMessageIds"],"sources":["../../../src/messages/recency.ts"],"mappings":"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"}
@@ -0,0 +1,243 @@
1
+ const require_toolContent = require("../utils/toolContent.cjs");
2
+ const require_toolResultTypes = require("./toolResultTypes.cjs");
3
+ let node_util_types = require("node:util/types");
4
+ //#region src/messages/toolHistoryProjection.ts
5
+ function recordToolHistoryCallMirror(mirrors, block) {
6
+ const descriptor = require_toolResultTypes.getProviderToolCallPartDescriptor(block);
7
+ if (descriptor == null) return;
8
+ if (mirrors.has(descriptor.callId)) {
9
+ mirrors.set(descriptor.callId, null);
10
+ return;
11
+ }
12
+ const call = readData(block, "tool_call") ?? readData(block, "toolUse") ?? readData(block, "toolCall") ?? block;
13
+ const serialized = require_toolContent.serializeStructuredValueBounded(readData(call, "args") ?? readData(call, "input"), 8e3);
14
+ mirrors.set(descriptor.callId, serialized.truncated ? null : {
15
+ name: descriptor.name,
16
+ arguments: serialized.content
17
+ });
18
+ }
19
+ function isToolHistoryCallMirror(mirrors, id, name, args) {
20
+ if (typeof id !== "string") return false;
21
+ const mirror = mirrors?.get(id);
22
+ if (mirror == null || mirror.name !== name) return false;
23
+ const serialized = require_toolContent.serializeStructuredValueBounded(args, 8e3);
24
+ return !serialized.truncated && serialized.content === mirror.arguments;
25
+ }
26
+ const OPENAI_RESPONSES_REPLAY_POSITIONS_KEY = "__openai_responses_replay_positions__";
27
+ function isResponsesReplayPosition(value) {
28
+ const kind = readData(value, "kind");
29
+ const itemId = readData(value, "itemId");
30
+ const outputIndex = readData(value, "outputIndex");
31
+ const contentIndex = readData(value, "contentIndex");
32
+ return (kind === "message" || kind === "output" || kind === "reasoning" || kind === "text") && typeof itemId === "string" && itemId.length > 0 && typeof outputIndex === "number" && Number.isSafeInteger(outputIndex) && outputIndex >= 0 && (contentIndex == null || typeof contentIndex === "number" && Number.isSafeInteger(contentIndex) && contentIndex >= 0);
33
+ }
34
+ function createToolHistoryPreparation() {
35
+ const projections = /* @__PURE__ */ new WeakMap();
36
+ let remainingWork = 1e5;
37
+ return { get(message) {
38
+ const cached = projections.get(message);
39
+ if (cached != null) return cached;
40
+ const source = getResponsesHistorySource(message);
41
+ if (source == null || source.items.length === 0) return;
42
+ const contributions = [];
43
+ let hasToolContent = false;
44
+ let truncated = false;
45
+ for (const contribution of projectResponsesHistory(source, () => {
46
+ if (remainingWork <= 0) {
47
+ truncated = true;
48
+ return false;
49
+ }
50
+ remainingWork--;
51
+ return true;
52
+ })) {
53
+ contributions.push(contribution);
54
+ hasToolContent ||= contribution.kind !== "text" && !(contribution.kind === "provider-item" && contribution.providerType === "reasoning");
55
+ }
56
+ const projection = {
57
+ source,
58
+ contributions,
59
+ hasToolContent: hasToolContent || truncated,
60
+ truncated
61
+ };
62
+ projections.set(message, projection);
63
+ return projection;
64
+ } };
65
+ }
66
+ function readData(value, key) {
67
+ if (value == null || typeof value !== "object" || (0, node_util_types.isProxy)(value)) return;
68
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
69
+ return descriptor != null && "value" in descriptor ? descriptor.value : void 0;
70
+ }
71
+ function readArray(value) {
72
+ return Array.isArray(value) && !(0, node_util_types.isProxy)(value) ? value : void 0;
73
+ }
74
+ function getResponsesHistorySource(message) {
75
+ const output = readArray(readData(message.response_metadata, "output"));
76
+ if (output != null && output.length > 0) return {
77
+ coverage: "complete-output",
78
+ items: output,
79
+ message
80
+ };
81
+ const sidecar = readArray(readData(message.additional_kwargs, "tool_outputs"));
82
+ return sidecar != null ? {
83
+ coverage: "tool-sidecar",
84
+ items: sidecar,
85
+ message
86
+ } : void 0;
87
+ }
88
+ function getGeneratedImageMimeType(data) {
89
+ const bytes = Buffer.from(data.slice(0, 16), "base64");
90
+ if (bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255) return "image/jpeg";
91
+ if (bytes[0] === 82 && bytes[1] === 73 && bytes[2] === 70 && bytes[3] === 70 && bytes[8] === 87 && bytes[9] === 69 && bytes[10] === 66 && bytes[11] === 80) return "image/webp";
92
+ return "image/png";
93
+ }
94
+ function* projectResponsesItems(source, consumeWork) {
95
+ for (let outputIndex = 0; outputIndex < source.items.length; outputIndex++) {
96
+ if (!consumeWork()) return;
97
+ const item = readData(source.items, String(outputIndex));
98
+ const type = readData(item, "type");
99
+ if (typeof type !== "string") continue;
100
+ const id = readData(item, "id");
101
+ const position = {
102
+ outputIndex,
103
+ ...typeof id === "string" && { itemId: id }
104
+ };
105
+ if (type === "message") {
106
+ const content = readArray(readData(item, "content"));
107
+ if (content == null) continue;
108
+ for (let contentIndex = 0; contentIndex < content.length; contentIndex++) {
109
+ if (!consumeWork()) return;
110
+ const part = readData(content, String(contentIndex));
111
+ const text = readData(part, readData(part, "type") === "refusal" ? "refusal" : "text");
112
+ if (typeof text === "string" && text.length > 0) yield {
113
+ ...position,
114
+ contentIndex,
115
+ kind: "text",
116
+ actor: "model",
117
+ text
118
+ };
119
+ }
120
+ continue;
121
+ }
122
+ if (type === "computer_call") {
123
+ const callId = readData(item, "call_id");
124
+ yield {
125
+ ...position,
126
+ kind: "call",
127
+ actor: "model",
128
+ name: "computer",
129
+ arguments: readData(item, "action"),
130
+ ...typeof callId === "string" && { callId }
131
+ };
132
+ continue;
133
+ }
134
+ if (type === "function_call" || type === "custom_tool_call") {
135
+ const name = readData(item, "name");
136
+ const args = readData(item, type === "custom_tool_call" ? "input" : "arguments");
137
+ const callId = readData(item, "call_id");
138
+ yield {
139
+ ...position,
140
+ kind: "call",
141
+ actor: "model",
142
+ name: typeof name === "string" ? name : "",
143
+ arguments: typeof args === "string" ? args : "",
144
+ ...typeof callId === "string" && { callId }
145
+ };
146
+ continue;
147
+ }
148
+ if (type === "image_generation_call") {
149
+ const data = readData(item, "result");
150
+ if (readData(item, "status") === "completed" && typeof data === "string" && data) yield {
151
+ ...position,
152
+ kind: "image",
153
+ actor: "tool",
154
+ image: {
155
+ type: "image",
156
+ mimeType: getGeneratedImageMimeType(data),
157
+ data,
158
+ ...typeof id === "string" && { id },
159
+ metadata: { status: "completed" }
160
+ }
161
+ };
162
+ if (readData(item, "status") !== "completed" || typeof data !== "string" || !data) yield {
163
+ ...position,
164
+ kind: "provider-item",
165
+ actor: "tool",
166
+ providerType: type,
167
+ value: {
168
+ type,
169
+ status: readData(item, "status"),
170
+ result: "[image unavailable]"
171
+ }
172
+ };
173
+ continue;
174
+ }
175
+ yield {
176
+ ...position,
177
+ kind: "provider-item",
178
+ actor: type === "reasoning" || type === "mcp_approval_request" ? "model" : "tool",
179
+ providerType: type,
180
+ value: item
181
+ };
182
+ }
183
+ }
184
+ function* projectResponsesHistory(source, consumeWork) {
185
+ if (source.coverage === "complete-output" || source.message == null) {
186
+ yield* projectResponsesItems(source, consumeWork);
187
+ return;
188
+ }
189
+ const positions = readArray(readData(source.message.additional_kwargs, OPENAI_RESPONSES_REPLAY_POSITIONS_KEY));
190
+ const outputPositions = /* @__PURE__ */ new Map();
191
+ const textPositions = [];
192
+ const seenPositions = /* @__PURE__ */ new Set();
193
+ for (let index = 0; positions != null && index < positions.length; index++) {
194
+ if (!consumeWork()) return;
195
+ const position = readData(positions, String(index));
196
+ if (!isResponsesReplayPosition(position)) continue;
197
+ if (position.kind === "output") outputPositions.set(position.itemId, position.outputIndex);
198
+ else if (position.kind === "text") {
199
+ const key = `${position.itemId}:${position.outputIndex}:${position.contentIndex ?? 0}`;
200
+ if (!seenPositions.has(key)) {
201
+ seenPositions.add(key);
202
+ textPositions.push(position);
203
+ }
204
+ }
205
+ }
206
+ textPositions.sort((left, right) => left.outputIndex - right.outputIndex || (left.contentIndex ?? 0) - (right.contentIndex ?? 0));
207
+ const text = [];
208
+ const content = source.message.content;
209
+ if (typeof content === "string" && content) text.push(content);
210
+ else if (Array.isArray(content)) for (let index = 0; index < content.length; index++) {
211
+ if (!consumeWork()) return;
212
+ const value = readData(readData(content, String(index)), "text");
213
+ if (typeof value === "string" && value) text.push(value);
214
+ }
215
+ const contributions = [];
216
+ for (let index = 0; index < text.length; index++) {
217
+ const position = text.length === textPositions.length ? textPositions[index] : void 0;
218
+ contributions.push({
219
+ kind: "text",
220
+ actor: "model",
221
+ text: text[index],
222
+ outputIndex: position?.outputIndex ?? -1,
223
+ contentIndex: position?.contentIndex ?? index,
224
+ ...position != null && { itemId: position.itemId }
225
+ });
226
+ }
227
+ for (const contribution of projectResponsesItems(source, consumeWork)) contributions.push({
228
+ ...contribution,
229
+ outputIndex: contribution.itemId != null ? outputPositions.get(contribution.itemId) ?? Number.MAX_SAFE_INTEGER : Number.MAX_SAFE_INTEGER
230
+ });
231
+ contributions.sort((left, right) => left.outputIndex - right.outputIndex || (left.contentIndex ?? 0) - (right.contentIndex ?? 0));
232
+ for (const contribution of contributions) yield contribution;
233
+ }
234
+ //#endregion
235
+ exports.OPENAI_RESPONSES_REPLAY_POSITIONS_KEY = OPENAI_RESPONSES_REPLAY_POSITIONS_KEY;
236
+ exports.createToolHistoryPreparation = createToolHistoryPreparation;
237
+ exports.getGeneratedImageMimeType = getGeneratedImageMimeType;
238
+ exports.getResponsesHistorySource = getResponsesHistorySource;
239
+ exports.isResponsesReplayPosition = isResponsesReplayPosition;
240
+ exports.isToolHistoryCallMirror = isToolHistoryCallMirror;
241
+ exports.recordToolHistoryCallMirror = recordToolHistoryCallMirror;
242
+
243
+ //# sourceMappingURL=toolHistoryProjection.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolHistoryProjection.cjs","names":["getProviderToolCallPartDescriptor","serializeStructuredValueBounded"],"sources":["../../../src/messages/toolHistoryProjection.ts"],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ const require_providerRegistry = require("../llm/providerRegistry.cjs");
2
+ require("../llm/providers.cjs");
1
3
  let node_util_types = require("node:util/types");
2
4
  const PROVIDER_TOOL_PAIRING_MAX_OUTER_PARTS = 4096;
3
5
  const TOOL_CALL_KINDS = ["tool"];
@@ -403,6 +405,21 @@ function getProviderToolResultPartDescriptor(part) {
403
405
  } : void 0;
404
406
  }
405
407
  }
408
+ const PROVIDER_TOOL_CALL_CONTENT_TYPES = new Set([
409
+ "tool_call",
410
+ "tool_use",
411
+ "server_tool_use",
412
+ "mcp_tool_use",
413
+ "server_tool_call",
414
+ "toolCall",
415
+ "toolUse",
416
+ "executableCode"
417
+ ]);
418
+ function isProviderToolContentPart(part) {
419
+ const record = getRecord(part);
420
+ const type = record == null ? void 0 : readString(record, "type");
421
+ return type != null && (PROVIDER_TOOL_CALL_CONTENT_TYPES.has(type) || Object.prototype.hasOwnProperty.call(TOOL_RESULT_ENVELOPE_FIELDS, type));
422
+ }
406
423
  function optionalName(record) {
407
424
  const property = readDataProperty(record, "name");
408
425
  if (!property.found || property.value === void 0) return {};
@@ -621,9 +638,10 @@ function appendProviderToolCallDescriptor(index, descriptor) {
621
638
  return;
622
639
  }
623
640
  if (existing === null) return;
624
- const isDualRepresentation = existing.secondarySourceType == null && existing.descriptor.sourceType !== descriptor.sourceType && (existing.descriptor.sourceType === "ai_tool_calls" || descriptor.sourceType === "ai_tool_calls");
625
- if (existing.descriptor.kind === descriptor.kind && existing.descriptor.name === descriptor.name && isDualRepresentation) {
626
- existing.secondarySourceType = descriptor.sourceType;
641
+ const sourceTypes = existing.secondarySourceTypes ?? new Set([existing.descriptor.sourceType]);
642
+ if (existing.descriptor.kind === descriptor.kind && existing.descriptor.name === descriptor.name && !sourceTypes.has(descriptor.sourceType)) {
643
+ sourceTypes.add(descriptor.sourceType);
644
+ existing.secondarySourceTypes = sourceTypes;
627
645
  return;
628
646
  }
629
647
  index.set(descriptor.callId, null);
@@ -651,14 +669,137 @@ function consumeProviderToolResultPair(descriptor, calls, previousPart) {
651
669
  calls.delete(descriptor.toolCallId);
652
670
  return true;
653
671
  }
672
+ function readOwnString(value, key) {
673
+ if (value == null || typeof value !== "object" || Array.isArray(value)) return;
674
+ try {
675
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
676
+ return descriptor != null && "value" in descriptor && typeof descriptor.value === "string" && descriptor.value !== "" && descriptor.value.length <= 512 ? descriptor.value : void 0;
677
+ } catch {
678
+ return;
679
+ }
680
+ }
681
+ function readOwnValue(value, key) {
682
+ if (value == null || typeof value !== "object" || Array.isArray(value)) return;
683
+ try {
684
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
685
+ return descriptor != null && "value" in descriptor ? descriptor.value : void 0;
686
+ } catch {
687
+ return;
688
+ }
689
+ }
690
+ const LEGACY_FUNCTION_CALL_PREFIX = "legacy_function:";
691
+ function getLegacyFunctionCallId(name) {
692
+ const callId = `${LEGACY_FUNCTION_CALL_PREFIX}${name}`;
693
+ return callId.length <= 512 ? callId : void 0;
694
+ }
695
+ const GENERIC_MESSAGE_ROLES = {
696
+ assistant: "assistant",
697
+ ai: "assistant",
698
+ model: "assistant",
699
+ supervisor: "assistant",
700
+ user: "user",
701
+ human: "user",
702
+ system: "system",
703
+ developer: "system",
704
+ tool: "tool",
705
+ function: "function"
706
+ };
707
+ function getProviderMessageRole(message, provider) {
708
+ switch (message.getType()) {
709
+ case "ai": return "assistant";
710
+ case "human": return "user";
711
+ case "system": return "system";
712
+ case "tool": return "tool";
713
+ case "function": return "function";
714
+ case "generic": {
715
+ if (provider != null && require_providerRegistry.getProviderFamily(provider) === "bedrock") return "user";
716
+ const role = message.role;
717
+ return typeof role === "string" ? GENERIC_MESSAGE_ROLES[role] : void 0;
718
+ }
719
+ default: return;
720
+ }
721
+ }
722
+ function getRawToolCallDescriptor(toolCall) {
723
+ const callId = readOwnString(toolCall, "id");
724
+ if (callId == null) return;
725
+ let name;
726
+ if (toolCall != null && typeof toolCall === "object") try {
727
+ const property = Object.getOwnPropertyDescriptor(toolCall, "function");
728
+ name = property != null && "value" in property ? readOwnString(property.value, "name") : void 0;
729
+ } catch {
730
+ return;
731
+ }
732
+ return {
733
+ callId,
734
+ kind: "tool",
735
+ sourceType: "raw_tool_calls",
736
+ ...name == null ? {} : { name }
737
+ };
738
+ }
739
+ function appendProviderMessageToolCalls(message, calls, provider) {
740
+ if (getProviderMessageRole(message, provider) !== "assistant") return 0;
741
+ let recognized = 0;
742
+ const toolCalls = getBoundedProviderPairingArrayProperty(message, "tool_calls");
743
+ if (toolCalls != null) for (let index = 0; index < toolCalls.length; index++) {
744
+ const descriptor = getProviderAIMessageToolCallDescriptor(toolCalls[index]);
745
+ if (descriptor != null) {
746
+ appendProviderToolCallDescriptor(calls, descriptor);
747
+ recognized += 1;
748
+ }
749
+ }
750
+ const rawToolCalls = getBoundedProviderPairingArrayProperty(message.additional_kwargs, "tool_calls");
751
+ if (rawToolCalls != null) for (let index = 0; index < rawToolCalls.length; index++) {
752
+ const descriptor = getRawToolCallDescriptor(rawToolCalls[index]);
753
+ if (descriptor != null) {
754
+ appendProviderToolCallDescriptor(calls, descriptor);
755
+ recognized += 1;
756
+ }
757
+ }
758
+ const legacyFunctionName = readOwnString(readOwnValue(message.additional_kwargs, "function_call"), "name");
759
+ const legacyFunctionCallId = legacyFunctionName == null ? void 0 : getLegacyFunctionCallId(legacyFunctionName);
760
+ if (legacyFunctionCallId != null) {
761
+ appendProviderToolCallDescriptor(calls, {
762
+ callId: legacyFunctionCallId,
763
+ kind: "tool",
764
+ name: legacyFunctionName,
765
+ sourceType: "legacy_function_call"
766
+ });
767
+ recognized += 1;
768
+ }
769
+ return recognized;
770
+ }
771
+ function getProviderToolMessageResultDescriptor(message, provider) {
772
+ const role = getProviderMessageRole(message, provider);
773
+ if (role === "function" && message.name != null) {
774
+ const toolCallId = getLegacyFunctionCallId(message.name);
775
+ return toolCallId == null ? void 0 : {
776
+ type: "function_message",
777
+ toolCallId,
778
+ compatibleCallKinds: ["tool"],
779
+ expectedToolNames: [message.name]
780
+ };
781
+ }
782
+ if (role !== "tool") return;
783
+ const toolMessage = message;
784
+ const toolCallId = typeof toolMessage.tool_call_id === "string" ? toolMessage.tool_call_id : toolMessage.toolCallId;
785
+ return typeof toolCallId === "string" && toolCallId !== "" && toolCallId.length <= 512 ? {
786
+ type: "tool_message",
787
+ toolCallId,
788
+ compatibleCallKinds: ["tool"]
789
+ } : void 0;
790
+ }
654
791
  //#endregion
792
+ exports.appendProviderMessageToolCalls = appendProviderMessageToolCalls;
655
793
  exports.appendProviderToolCallDescriptor = appendProviderToolCallDescriptor;
656
794
  exports.consumeProviderToolResultPair = consumeProviderToolResultPair;
657
795
  exports.getBoundedProviderPairingArray = getBoundedProviderPairingArray;
658
796
  exports.getBoundedProviderPairingArrayProperty = getBoundedProviderPairingArrayProperty;
659
- exports.getProviderAIMessageToolCallDescriptor = getProviderAIMessageToolCallDescriptor;
797
+ exports.getProviderMessageRole = getProviderMessageRole;
660
798
  exports.getProviderToolCallPartDescriptor = getProviderToolCallPartDescriptor;
799
+ exports.getProviderToolMessageResultDescriptor = getProviderToolMessageResultDescriptor;
661
800
  exports.getProviderToolResultPartDescriptor = getProviderToolResultPartDescriptor;
662
801
  exports.hasStructurallyValidAnthropicWebSearchResultContent = hasStructurallyValidAnthropicWebSearchResultContent;
802
+ exports.isExecutableCodePart = isExecutableCodePart;
803
+ exports.isProviderToolContentPart = isProviderToolContentPart;
663
804
 
664
805
  //# sourceMappingURL=toolResultTypes.cjs.map