@librechat/agents 3.6.11 → 3.6.13
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.
- package/dist/cjs/agents/AgentContext.cjs +4 -0
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +45 -116
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/llm/contextPressureMeter.cjs +212 -0
- package/dist/cjs/llm/contextPressureMeter.cjs.map +1 -0
- package/dist/cjs/llm/invoke.cjs +46 -75
- package/dist/cjs/llm/invoke.cjs.map +1 -1
- package/dist/cjs/llm/prepareProviderRequest.cjs +108 -0
- package/dist/cjs/llm/prepareProviderRequest.cjs.map +1 -0
- package/dist/cjs/llm/tokenCounterCacheCompatibility.cjs +14 -0
- package/dist/cjs/llm/tokenCounterCacheCompatibility.cjs.map +1 -0
- package/dist/cjs/main.cjs +4 -0
- package/dist/cjs/messages/content.cjs +5 -4
- package/dist/cjs/messages/content.cjs.map +1 -1
- package/dist/cjs/utils/tokens.cjs +3 -2
- package/dist/cjs/utils/tokens.cjs.map +1 -1
- package/dist/esm/agents/AgentContext.mjs +4 -0
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +48 -119
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/llm/contextPressureMeter.mjs +211 -0
- package/dist/esm/llm/contextPressureMeter.mjs.map +1 -0
- package/dist/esm/llm/invoke.mjs +48 -75
- package/dist/esm/llm/invoke.mjs.map +1 -1
- package/dist/esm/llm/prepareProviderRequest.mjs +105 -0
- package/dist/esm/llm/prepareProviderRequest.mjs.map +1 -0
- package/dist/esm/llm/tokenCounterCacheCompatibility.mjs +13 -0
- package/dist/esm/llm/tokenCounterCacheCompatibility.mjs.map +1 -0
- package/dist/esm/main.mjs +3 -1
- package/dist/esm/messages/content.mjs +5 -4
- package/dist/esm/messages/content.mjs.map +1 -1
- package/dist/esm/utils/tokens.mjs +3 -2
- package/dist/esm/utils/tokens.mjs.map +1 -1
- package/dist/types/agents/AgentContext.d.ts +3 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/llm/contextPressureMeter.d.ts +36 -0
- package/dist/types/llm/invoke.d.ts +31 -33
- package/dist/types/llm/prepareProviderRequest.d.ts +55 -0
- package/dist/types/llm/tokenCounterCacheCompatibility.d.ts +7 -0
- package/package.json +2 -1
- package/src/agents/AgentContext.ts +9 -0
- package/src/graphs/Graph.ts +70 -276
- package/src/index.ts +9 -0
- package/src/llm/contextPressureMeter.ts +449 -0
- package/src/llm/invoke.ts +136 -296
- package/src/llm/prepareProviderRequest.ts +357 -0
- package/src/llm/tokenCounterCacheCompatibility.ts +22 -0
- package/src/messages/content.ts +3 -3
- package/src/utils/tokens.ts +3 -2
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { apportionTokenCounts } from "../utils/tokens.mjs";
|
|
2
|
+
import "../messages/prune.mjs";
|
|
3
|
+
import { isSyntheticProviderContextMessage } from "../messages/format.mjs";
|
|
4
|
+
import "../messages/index.mjs";
|
|
5
|
+
import "../utils/index.mjs";
|
|
6
|
+
import { ToolMessage } from "@langchain/core/messages";
|
|
7
|
+
import { isProxy } from "node:util/types";
|
|
8
|
+
//#region src/llm/contextPressureMeter.ts
|
|
9
|
+
function readDataProperty(owner, property) {
|
|
10
|
+
let descriptor;
|
|
11
|
+
try {
|
|
12
|
+
descriptor = Object.getOwnPropertyDescriptor(owner, property);
|
|
13
|
+
} catch {
|
|
14
|
+
return {
|
|
15
|
+
own: false,
|
|
16
|
+
safe: false
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
if (descriptor == null) return {
|
|
20
|
+
own: false,
|
|
21
|
+
safe: true
|
|
22
|
+
};
|
|
23
|
+
return "value" in descriptor ? {
|
|
24
|
+
own: true,
|
|
25
|
+
safe: true,
|
|
26
|
+
value: descriptor.value
|
|
27
|
+
} : {
|
|
28
|
+
own: true,
|
|
29
|
+
safe: false
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function getStableTokenSurface(message) {
|
|
33
|
+
if (isProxy(message)) return;
|
|
34
|
+
const contentProperty = readDataProperty(message, "content");
|
|
35
|
+
if (!contentProperty.safe || !contentProperty.own || typeof contentProperty.value !== "string") return;
|
|
36
|
+
const messageType = message.getType();
|
|
37
|
+
const roleProperty = readDataProperty(message, "role");
|
|
38
|
+
if (!roleProperty.safe || !roleProperty.own && "role" in message) return;
|
|
39
|
+
const role = roleProperty.value;
|
|
40
|
+
if (role != null && typeof role !== "string") return;
|
|
41
|
+
const additionalKwargsProperty = readDataProperty(message, "additional_kwargs");
|
|
42
|
+
if (!additionalKwargsProperty.safe || !additionalKwargsProperty.own) return;
|
|
43
|
+
const rawAdditionalKwargs = additionalKwargsProperty.value;
|
|
44
|
+
if (rawAdditionalKwargs == null || typeof rawAdditionalKwargs !== "object" || isProxy(rawAdditionalKwargs)) return;
|
|
45
|
+
const additionalKwargs = rawAdditionalKwargs;
|
|
46
|
+
const typeProperty = readDataProperty(additionalKwargs, "type");
|
|
47
|
+
if (!typeProperty.safe) return;
|
|
48
|
+
if (messageType === "ai" || role === "assistant") {
|
|
49
|
+
const toolCallsProperty = readDataProperty(message, "tool_calls");
|
|
50
|
+
if (!toolCallsProperty.safe || !toolCallsProperty.own && "tool_calls" in message) return;
|
|
51
|
+
const toolCalls = toolCallsProperty.value;
|
|
52
|
+
if (toolCalls != null && (!Array.isArray(toolCalls) || isProxy(toolCalls) || toolCalls.length > 0)) return;
|
|
53
|
+
const functionCall = readDataProperty(additionalKwargs, "function_call");
|
|
54
|
+
if (!functionCall.safe || functionCall.value != null) return;
|
|
55
|
+
}
|
|
56
|
+
let additionalType;
|
|
57
|
+
if (messageType === "tool") {
|
|
58
|
+
const typeValue = typeProperty.value;
|
|
59
|
+
if (typeValue != null && typeof typeValue !== "string") return;
|
|
60
|
+
additionalType = typeof typeValue === "string" ? typeValue : void 0;
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
content: contentProperty.value,
|
|
64
|
+
messageType,
|
|
65
|
+
...role != null && { role },
|
|
66
|
+
...additionalType != null && { additionalType }
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function tokenSurfacesMatch(left, right) {
|
|
70
|
+
return left.content === right.content && left.messageType === right.messageType && left.role === right.role && left.additionalType === right.additionalType;
|
|
71
|
+
}
|
|
72
|
+
function createExactTokenCountCache(tokenCounter) {
|
|
73
|
+
const entries = /* @__PURE__ */ new WeakMap();
|
|
74
|
+
return { count(message) {
|
|
75
|
+
const surface = getStableTokenSurface(message);
|
|
76
|
+
const cached = entries.get(message);
|
|
77
|
+
if (surface != null && cached != null && tokenSurfacesMatch(cached.surface, surface)) return cached.tokens;
|
|
78
|
+
const tokens = tokenCounter(message);
|
|
79
|
+
if (surface != null) entries.set(message, {
|
|
80
|
+
surface,
|
|
81
|
+
tokens
|
|
82
|
+
});
|
|
83
|
+
else entries.delete(message);
|
|
84
|
+
return tokens;
|
|
85
|
+
} };
|
|
86
|
+
}
|
|
87
|
+
function getProviderMessageOriginKey(message) {
|
|
88
|
+
const type = message.getType();
|
|
89
|
+
if (message instanceof ToolMessage && typeof message.tool_call_id === "string" && message.tool_call_id.length > 0) return `tool:call:${message.tool_call_id}`;
|
|
90
|
+
if (typeof message.id === "string" && message.id.length > 0) return `${type}:id:${message.id}`;
|
|
91
|
+
}
|
|
92
|
+
function createContextPressureMeter({ tokenCounter, tokenCountCache, sourceMessages, retainedMessages, indexTokenCountMap, contextUsage, instructionTokens, calibrationRatio }) {
|
|
93
|
+
const tokenCounts = /* @__PURE__ */ new WeakMap();
|
|
94
|
+
const origins = /* @__PURE__ */ new WeakMap();
|
|
95
|
+
const baselineAttributions = /* @__PURE__ */ new Map();
|
|
96
|
+
let baseline;
|
|
97
|
+
let baselineWeights;
|
|
98
|
+
let totalBaselineWeight = 0;
|
|
99
|
+
const count = (message) => {
|
|
100
|
+
const cached = tokenCounts.get(message);
|
|
101
|
+
if (cached != null) return cached;
|
|
102
|
+
const tokens = tokenCountCache?.count(message) ?? tokenCounter?.(message) ?? 0;
|
|
103
|
+
tokenCounts.set(message, tokens);
|
|
104
|
+
return tokens;
|
|
105
|
+
};
|
|
106
|
+
if (contextUsage != null && (tokenCounter != null || tokenCountCache != null)) {
|
|
107
|
+
const sourceIndices = /* @__PURE__ */ new WeakMap();
|
|
108
|
+
for (let i = 0; i < sourceMessages.length; i++) sourceIndices.set(sourceMessages[i], i);
|
|
109
|
+
baseline = retainedMessages.map((message, index) => {
|
|
110
|
+
const rawTokens = count(message);
|
|
111
|
+
const sourceIndex = sourceIndices.get(message);
|
|
112
|
+
const indexedTokens = sourceIndex != null ? indexTokenCountMap[sourceIndex] : void 0;
|
|
113
|
+
const accountingWeight = indexedTokens != null && Number.isFinite(indexedTokens) && indexedTokens >= 0 ? indexedTokens : rawTokens;
|
|
114
|
+
if (!origins.has(message)) origins.set(message, index);
|
|
115
|
+
return {
|
|
116
|
+
rawTokens,
|
|
117
|
+
accountingWeight
|
|
118
|
+
};
|
|
119
|
+
});
|
|
120
|
+
baselineWeights = {};
|
|
121
|
+
for (let i = 0; i < baseline.length; i++) {
|
|
122
|
+
baselineWeights[i] = baseline[i].accountingWeight;
|
|
123
|
+
totalBaselineWeight += baseline[i].accountingWeight;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
const trackClone = (source, clone) => {
|
|
127
|
+
const origin = origins.get(source);
|
|
128
|
+
if (origin != null && !origins.has(clone)) origins.set(clone, origin);
|
|
129
|
+
};
|
|
130
|
+
const trackProjection = (before, after) => {
|
|
131
|
+
if (baseline == null || before === after) return after;
|
|
132
|
+
if (before.length === after.length) {
|
|
133
|
+
for (let i = 0; i < after.length; i++) if (before[i].getType() === after[i].getType() && !isSyntheticProviderContextMessage(after[i])) trackClone(before[i], after[i]);
|
|
134
|
+
return after;
|
|
135
|
+
}
|
|
136
|
+
const keyedOrigins = /* @__PURE__ */ new Map();
|
|
137
|
+
for (const message of before) {
|
|
138
|
+
const origin = origins.get(message);
|
|
139
|
+
const key = getProviderMessageOriginKey(message);
|
|
140
|
+
if (origin == null || key == null) continue;
|
|
141
|
+
keyedOrigins.set(key, keyedOrigins.has(key) ? null : origin);
|
|
142
|
+
}
|
|
143
|
+
for (const message of after) {
|
|
144
|
+
if (origins.has(message) || isSyntheticProviderContextMessage(message)) continue;
|
|
145
|
+
const key = getProviderMessageOriginKey(message);
|
|
146
|
+
const origin = key != null ? keyedOrigins.get(key) : void 0;
|
|
147
|
+
if (origin != null) origins.set(message, origin);
|
|
148
|
+
}
|
|
149
|
+
return after;
|
|
150
|
+
};
|
|
151
|
+
const measure = (messages, options) => {
|
|
152
|
+
const contextBudget = options?.contextBudget ?? contextUsage?.contextBudget;
|
|
153
|
+
const forceRawRecount = options?.forceRawRecount === true;
|
|
154
|
+
const effectiveInstructionTokens = contextUsage?.effectiveInstructionTokens ?? (forceRawRecount ? instructionTokens : void 0);
|
|
155
|
+
if (tokenCounter == null && tokenCountCache == null || contextBudget == null || effectiveInstructionTokens == null) return { fits: true };
|
|
156
|
+
const availableMessageTokens = Math.max(0, contextBudget - effectiveInstructionTokens);
|
|
157
|
+
let usageRatio = calibrationRatio > 0 ? calibrationRatio : 1;
|
|
158
|
+
if (contextUsage?.calibrationRatio != null && contextUsage.calibrationRatio > 0) usageRatio = contextUsage.calibrationRatio;
|
|
159
|
+
if (forceRawRecount) usageRatio = Math.max(1, usageRatio);
|
|
160
|
+
const baselineRemaining = contextUsage?.remainingContextTokens;
|
|
161
|
+
const accountedMessageTokens = !forceRawRecount && baseline != null && baselineRemaining != null && Number.isFinite(baselineRemaining) ? availableMessageTokens - Math.min(availableMessageTokens, Math.max(0, baselineRemaining)) : void 0;
|
|
162
|
+
let projectedMessageTokens;
|
|
163
|
+
if (accountedMessageTokens != null && baseline != null && baselineWeights != null) {
|
|
164
|
+
let attribution = baselineAttributions.get(availableMessageTokens);
|
|
165
|
+
if (attribution == null) {
|
|
166
|
+
const replyPrimerTokens = Math.round(3 * usageRatio);
|
|
167
|
+
const attributableTokens = totalBaselineWeight > 0 ? Math.min(Math.max(0, accountedMessageTokens - replyPrimerTokens), Math.round(totalBaselineWeight * usageRatio)) : 0;
|
|
168
|
+
const apportionedTokens = totalBaselineWeight > 0 ? apportionTokenCounts(baselineWeights, attributableTokens / totalBaselineWeight, attributableTokens) : {};
|
|
169
|
+
attribution = {
|
|
170
|
+
attributedByOrigin: baseline.map((_, origin) => apportionedTokens[origin] || 0),
|
|
171
|
+
projectedBaseTokens: Math.max(replyPrimerTokens, accountedMessageTokens - attributableTokens)
|
|
172
|
+
};
|
|
173
|
+
baselineAttributions.set(availableMessageTokens, attribution);
|
|
174
|
+
}
|
|
175
|
+
projectedMessageTokens = attribution.projectedBaseTokens;
|
|
176
|
+
let newRawTokens = 0;
|
|
177
|
+
const usedOrigins = /* @__PURE__ */ new Set();
|
|
178
|
+
for (const message of messages) {
|
|
179
|
+
const rawTokens = count(message);
|
|
180
|
+
const origin = origins.get(message);
|
|
181
|
+
if (origin == null || usedOrigins.has(origin)) {
|
|
182
|
+
newRawTokens += rawTokens;
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
usedOrigins.add(origin);
|
|
186
|
+
projectedMessageTokens += Math.max(0, attribution.attributedByOrigin[origin] + Math.round((rawTokens - baseline[origin].rawTokens) * usageRatio));
|
|
187
|
+
}
|
|
188
|
+
projectedMessageTokens += Math.round(newRawTokens * usageRatio);
|
|
189
|
+
} else {
|
|
190
|
+
let rawTokens = 3;
|
|
191
|
+
for (const message of messages) rawTokens += count(message);
|
|
192
|
+
projectedMessageTokens = Math.round(rawTokens * usageRatio);
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
fits: projectedMessageTokens <= availableMessageTokens,
|
|
196
|
+
projectedMessageTokens,
|
|
197
|
+
availableMessageTokens,
|
|
198
|
+
contextBudget,
|
|
199
|
+
effectiveInstructionTokens
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
return {
|
|
203
|
+
trackProjection,
|
|
204
|
+
trackClone,
|
|
205
|
+
measure
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
//#endregion
|
|
209
|
+
export { createContextPressureMeter, createExactTokenCountCache };
|
|
210
|
+
|
|
211
|
+
//# sourceMappingURL=contextPressureMeter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextPressureMeter.mjs","names":[],"sources":["../../../src/llm/contextPressureMeter.ts"],"mappings":"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"}
|
package/dist/esm/llm/invoke.mjs
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import "../common/enum.mjs";
|
|
2
2
|
import "../common/index.mjs";
|
|
3
3
|
import { appendCallbacks } from "../utils/callbacks.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import { modifyDeltaProperties, projectCacheControlledToolOutputsToText, projectComputerCallOutputsToText, projectOpenAIChatToolMessageContent, projectOpenAIResponsesToolMessageContent, projectOpenRouterToolMessageContent, projectSingleTextToolOutputsToText, projectStructuredToolOutputsToText, projectToolStreamContentForProvider } from "../messages/core.mjs";
|
|
4
|
+
import { modifyDeltaProperties } from "../messages/core.mjs";
|
|
6
5
|
import { safeDispatchCustomEvent } from "../utils/events.mjs";
|
|
7
|
-
import { coalesceAdjacentUserTurns, strictAlternationProviders } from "../messages/alternation.mjs";
|
|
8
|
-
import { appendPredecessorHandoffCue, removePredecessorHandoffCue } from "../messages/handoffCue.mjs";
|
|
9
6
|
import "../messages/index.mjs";
|
|
10
|
-
import { isAnthropicLike, isOpenAILike } from "../utils/llm.mjs";
|
|
11
7
|
import { STREAM_LIMIT_ATTEMPT_KEY, STREAM_LIMIT_REDISPATCH_KEY, StreamLimitExceededError, enforceStreamLimitsForWireChunk, registerActiveStreamLimitGeneration, releaseStreamLimitGeneration, resolveGenerationKey, streamLimitAccountingEnabled } from "./streamLimits.mjs";
|
|
12
|
-
import { annotateMessagesForLLM } from "../tools/toolOutputReferences.mjs";
|
|
13
8
|
import { ChatModelStreamHandler, dispatchesChatModelStream } from "../stream.mjs";
|
|
14
9
|
import { getContextOverflowInfo } from "../utils/errors.mjs";
|
|
10
|
+
import { assertPreparedProviderRequestFor, prepareProviderRequest } from "./prepareProviderRequest.mjs";
|
|
15
11
|
import { assertNotTruncatedToolCall } from "./truncation.mjs";
|
|
16
12
|
import { manualToolStreamProviders } from "./providers.mjs";
|
|
17
13
|
import { canSealPreempt } from "./preempt.mjs";
|
|
@@ -22,47 +18,6 @@ import { CallbackManager, CallbackManagerForLLMRun } from "@langchain/core/callb
|
|
|
22
18
|
import { concat } from "@langchain/core/utils/stream";
|
|
23
19
|
//#region src/llm/invoke.ts
|
|
24
20
|
let streamLimitAttemptSeq = 0;
|
|
25
|
-
function usesNativeOpenAIResponses(model, provider, callOptions) {
|
|
26
|
-
if (!isOpenAILike(provider)) return false;
|
|
27
|
-
let candidate = model;
|
|
28
|
-
let effectiveCallOptions = callOptions;
|
|
29
|
-
const seen = /* @__PURE__ */ new Set();
|
|
30
|
-
for (let depth = 0; depth < 20; depth++) {
|
|
31
|
-
if (candidate == null || typeof candidate !== "object") return false;
|
|
32
|
-
if (seen.has(candidate)) return false;
|
|
33
|
-
seen.add(candidate);
|
|
34
|
-
const runnable = candidate;
|
|
35
|
-
try {
|
|
36
|
-
if (runnable.defaultOptions != null && typeof runnable.defaultOptions === "object" && !Array.isArray(runnable.defaultOptions) && effectiveCallOptions != null && typeof effectiveCallOptions === "object" && !Array.isArray(effectiveCallOptions)) effectiveCallOptions = {
|
|
37
|
-
...runnable.defaultOptions,
|
|
38
|
-
...effectiveCallOptions
|
|
39
|
-
};
|
|
40
|
-
else if (effectiveCallOptions == null) effectiveCallOptions = runnable.defaultOptions;
|
|
41
|
-
if (runnable._useResponsesApi?.(effectiveCallOptions) === true || runnable._useResponsesApi?.(void 0) === true) return true;
|
|
42
|
-
} catch {}
|
|
43
|
-
if (typeof runnable.constructor?.name === "string" && runnable.constructor.name.includes("Responses")) return true;
|
|
44
|
-
if (runnable.last != null && typeof runnable.last === "object") {
|
|
45
|
-
candidate = runnable.last;
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
if (runnable.bound != null && typeof runnable.bound === "object") {
|
|
49
|
-
candidate = runnable.bound;
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
function projectMessagesForProvider({ model, messages, provider, maxToolResultChars, callOptions }) {
|
|
57
|
-
const nativeOpenAIResponses = usesNativeOpenAIResponses(model, provider, callOptions);
|
|
58
|
-
const providerInputMessages = projectToolStreamContentForProvider(messages, nativeOpenAIResponses ? "native" : "fallback", maxToolResultChars);
|
|
59
|
-
if (nativeOpenAIResponses) return projectOpenAIResponsesToolMessageContent(stripAnthropicCacheControl(stripBedrockCacheControl(providerInputMessages)), maxToolResultChars);
|
|
60
|
-
if (provider === "openrouter") return projectComputerCallOutputsToText(projectOpenRouterToolMessageContent(stripBedrockCacheControl(providerInputMessages), maxToolResultChars));
|
|
61
|
-
if (isOpenAILike(provider)) return projectComputerCallOutputsToText(projectOpenAIChatToolMessageContent(stripAnthropicCacheControl(stripBedrockCacheControl(providerInputMessages)), maxToolResultChars));
|
|
62
|
-
if (provider === "anthropic") return projectComputerCallOutputsToText(projectSingleTextToolOutputsToText(stripBedrockCacheControl(providerInputMessages), maxToolResultChars));
|
|
63
|
-
if (provider === "bedrock") return stripAnthropicCacheControl(projectComputerCallOutputsToText(projectCacheControlledToolOutputsToText(providerInputMessages, maxToolResultChars)));
|
|
64
|
-
return projectComputerCallOutputsToText(projectStructuredToolOutputsToText(projectSingleTextToolOutputsToText(stripAnthropicCacheControl(stripBedrockCacheControl(providerInputMessages)), maxToolResultChars), maxToolResultChars));
|
|
65
|
-
}
|
|
66
21
|
function getRegisteredDefaultChatStreamHandler(context) {
|
|
67
22
|
const handler = context?.handlerRegistry?.getHandler("on_chat_model_stream");
|
|
68
23
|
return dispatchesChatModelStream(handler) ? handler : void 0;
|
|
@@ -161,16 +116,6 @@ function collectModelCallbackSources(model) {
|
|
|
161
116
|
}
|
|
162
117
|
return sources;
|
|
163
118
|
}
|
|
164
|
-
function resolveServingModelId(model) {
|
|
165
|
-
const seen = /* @__PURE__ */ new Set();
|
|
166
|
-
let current = model;
|
|
167
|
-
while (current != null && typeof current === "object" && !seen.has(current)) {
|
|
168
|
-
seen.add(current);
|
|
169
|
-
const wrapper = current;
|
|
170
|
-
if (typeof wrapper.model === "string" && wrapper.model !== "") return wrapper.model;
|
|
171
|
-
current = wrapper.bound ?? wrapper.last ?? (Array.isArray(wrapper.steps) ? wrapper.steps[wrapper.steps.length - 1] : void 0);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
119
|
async function endSealedModelRun(context, chunk, prompt, llmRunId, config, model) {
|
|
175
120
|
const metadata = config?.metadata;
|
|
176
121
|
synthesizeSealedUsage(context, chunk, prompt, metadata);
|
|
@@ -202,12 +147,30 @@ function appendStreamChunk({ current, next, provider }) {
|
|
|
202
147
|
provider
|
|
203
148
|
}));
|
|
204
149
|
}
|
|
150
|
+
function resolveAttemptProvider(params) {
|
|
151
|
+
if (params.request != null) return params.request.provider;
|
|
152
|
+
return params.provider;
|
|
153
|
+
}
|
|
154
|
+
function resolveAttemptRequest(params, config) {
|
|
155
|
+
if (params.request != null) {
|
|
156
|
+
assertPreparedProviderRequestFor(params.request, params.request.model, params.request.provider, config);
|
|
157
|
+
return params.request;
|
|
158
|
+
}
|
|
159
|
+
return prepareProviderRequest({
|
|
160
|
+
model: params.model,
|
|
161
|
+
messages: params.messages,
|
|
162
|
+
provider: params.provider,
|
|
163
|
+
context: params.context,
|
|
164
|
+
config
|
|
165
|
+
});
|
|
166
|
+
}
|
|
205
167
|
async function attemptInvoke(params, config) {
|
|
168
|
+
const provider = resolveAttemptProvider(params);
|
|
206
169
|
const stampedConfig = {
|
|
207
170
|
...config,
|
|
208
171
|
metadata: {
|
|
209
172
|
...config?.metadata ?? {},
|
|
210
|
-
["__invoked_provider"]:
|
|
173
|
+
["__invoked_provider"]: provider,
|
|
211
174
|
[STREAM_LIMIT_ATTEMPT_KEY]: ++streamLimitAttemptSeq
|
|
212
175
|
}
|
|
213
176
|
};
|
|
@@ -216,24 +179,17 @@ async function attemptInvoke(params, config) {
|
|
|
216
179
|
const generationKey = leaseTarget != null ? resolveGenerationKey(stampedConfig.metadata) : void 0;
|
|
217
180
|
if (leaseTarget != null && generationKey != null) registerActiveStreamLimitGeneration(leaseTarget, generationKey);
|
|
218
181
|
try {
|
|
219
|
-
return await attemptInvokeBody(
|
|
182
|
+
return await attemptInvokeBody({
|
|
183
|
+
request: resolveAttemptRequest(params, stampedConfig),
|
|
184
|
+
context: params.context,
|
|
185
|
+
onChunk: params.onChunk
|
|
186
|
+
}, stampedConfig);
|
|
220
187
|
} finally {
|
|
221
188
|
if (leaseTarget != null && generationKey != null) releaseStreamLimitGeneration(leaseTarget, generationKey);
|
|
222
189
|
}
|
|
223
190
|
}
|
|
224
|
-
async function attemptInvokeBody({
|
|
225
|
-
const
|
|
226
|
-
model,
|
|
227
|
-
messages,
|
|
228
|
-
provider,
|
|
229
|
-
callOptions: config
|
|
230
|
-
});
|
|
231
|
-
const registry = context?.getOrCreateToolOutputRegistry();
|
|
232
|
-
const runId = config.configurable?.run_id;
|
|
233
|
-
const annotated = annotateMessagesForLLM(invocationMessages, registry, runId);
|
|
234
|
-
const isRunProduced = context?.isRunProducedMessage;
|
|
235
|
-
const cued = isAnthropicLike(provider, { model: resolveServingModelId(model) }) ? appendPredecessorHandoffCue(annotated, isRunProduced == null ? void 0 : (message) => isRunProduced.call(context, message)) : removePredecessorHandoffCue(annotated);
|
|
236
|
-
const messagesForProvider = strictAlternationProviders.has(provider) ? coalesceAdjacentUserTurns(cued) : cued;
|
|
191
|
+
async function attemptInvokeBody({ request, context, onChunk }, config) {
|
|
192
|
+
const { model, messages: messagesForProvider, provider } = request;
|
|
237
193
|
if (model.stream) {
|
|
238
194
|
let sealedRunId;
|
|
239
195
|
const streamConfig = context?.preemption == null ? config : {
|
|
@@ -360,7 +316,7 @@ function extractClientOptionsModel(clientOptions) {
|
|
|
360
316
|
if (typeof options?.model === "string" && options.model !== "") return options.model;
|
|
361
317
|
if (typeof options?.modelName === "string" && options.modelName !== "") return options.modelName;
|
|
362
318
|
}
|
|
363
|
-
async function tryFallbackProviders({ fallbacks, tools, messages, config, primaryError, context, onChunk, streamLimitState, overflowContext, prepareProviderMessages }) {
|
|
319
|
+
async function tryFallbackProviders({ fallbacks, tools, messages, config, primaryError, context, onChunk, streamLimitState, overflowContext, prepareProviderRequest: prepareFallbackRequest, prepareProviderMessages }) {
|
|
364
320
|
const isOverflow = (error, contextOverride = overflowContext) => getContextOverflowInfo(error, contextOverride) != null;
|
|
365
321
|
let lastError = primaryError;
|
|
366
322
|
const overflowCandidates = [];
|
|
@@ -379,7 +335,18 @@ async function tryFallbackProviders({ fallbacks, tools, messages, config, primar
|
|
|
379
335
|
["__invoked_model"]: fbModelName
|
|
380
336
|
}
|
|
381
337
|
};
|
|
382
|
-
const
|
|
338
|
+
const preparationInput = {
|
|
339
|
+
model: fbModel,
|
|
340
|
+
messages,
|
|
341
|
+
provider: fb.provider,
|
|
342
|
+
clientOptions: fb.clientOptions,
|
|
343
|
+
maxContextTokens: fb.maxContextTokens,
|
|
344
|
+
config: fbConfig
|
|
345
|
+
};
|
|
346
|
+
const preparedRequest = await prepareFallbackRequest?.(preparationInput);
|
|
347
|
+
if (preparedRequest != null) assertPreparedProviderRequestFor(preparedRequest, fbModel, fb.provider, fbConfig);
|
|
348
|
+
let fallbackMessages = messages;
|
|
349
|
+
if (preparedRequest == null) fallbackMessages = await prepareProviderMessages?.({
|
|
383
350
|
model: fbModel,
|
|
384
351
|
messages,
|
|
385
352
|
provider: fb.provider,
|
|
@@ -388,6 +355,12 @@ async function tryFallbackProviders({ fallbacks, tools, messages, config, primar
|
|
|
388
355
|
config: fbConfig
|
|
389
356
|
}) ?? messages;
|
|
390
357
|
if (config?.signal?.aborted === true && config.signal.reason instanceof StreamLimitExceededError) throw config.signal.reason;
|
|
358
|
+
if (preparedRequest != null) return await attemptInvoke({
|
|
359
|
+
request: preparedRequest,
|
|
360
|
+
context,
|
|
361
|
+
onChunk,
|
|
362
|
+
streamLimitState
|
|
363
|
+
}, fbConfig);
|
|
391
364
|
return await attemptInvoke({
|
|
392
365
|
model: fbModel,
|
|
393
366
|
messages: fallbackMessages,
|
|
@@ -423,6 +396,6 @@ async function tryFallbackProviders({ fallbacks, tools, messages, config, primar
|
|
|
423
396
|
if (preferred !== void 0) throw preferred;
|
|
424
397
|
}
|
|
425
398
|
//#endregion
|
|
426
|
-
export { attemptInvoke, getFallbackErrorContext, getFallbackOverflowCandidates,
|
|
399
|
+
export { attemptInvoke, getFallbackErrorContext, getFallbackOverflowCandidates, tryFallbackProviders };
|
|
427
400
|
|
|
428
401
|
//# sourceMappingURL=invoke.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke.mjs","names":[],"sources":["../../../src/llm/invoke.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"invoke.mjs","names":[],"sources":["../../../src/llm/invoke.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import "../common/enum.mjs";
|
|
2
|
+
import "../common/index.mjs";
|
|
3
|
+
import { stripAnthropicCacheControl, stripBedrockCacheControl } from "../messages/cache.mjs";
|
|
4
|
+
import { projectCacheControlledToolOutputsToText, projectComputerCallOutputsToText, projectOpenAIChatToolMessageContent, projectOpenAIResponsesToolMessageContent, projectOpenRouterToolMessageContent, projectSingleTextToolOutputsToText, projectStructuredToolOutputsToText, projectToolStreamContentForProvider } from "../messages/core.mjs";
|
|
5
|
+
import { coalesceAdjacentUserTurns, strictAlternationProviders } from "../messages/alternation.mjs";
|
|
6
|
+
import { appendPredecessorHandoffCue, removePredecessorHandoffCue } from "../messages/handoffCue.mjs";
|
|
7
|
+
import "../messages/index.mjs";
|
|
8
|
+
import { isAnthropicLike, isOpenAILike } from "../utils/llm.mjs";
|
|
9
|
+
import { annotateMessagesForLLM } from "../tools/toolOutputReferences.mjs";
|
|
10
|
+
//#region src/llm/prepareProviderRequest.ts
|
|
11
|
+
const preparedProviderRequestBrand = Symbol("PreparedProviderRequest");
|
|
12
|
+
function usesNativeOpenAIResponses(model, provider, callOptions) {
|
|
13
|
+
if (!isOpenAILike(provider)) return false;
|
|
14
|
+
let candidate = model;
|
|
15
|
+
let effectiveCallOptions = callOptions;
|
|
16
|
+
const seen = /* @__PURE__ */ new Set();
|
|
17
|
+
for (let depth = 0; depth < 20; depth++) {
|
|
18
|
+
if (candidate == null || typeof candidate !== "object") return false;
|
|
19
|
+
if (seen.has(candidate)) return false;
|
|
20
|
+
seen.add(candidate);
|
|
21
|
+
const runnable = candidate;
|
|
22
|
+
try {
|
|
23
|
+
if (runnable.defaultOptions != null && typeof runnable.defaultOptions === "object" && !Array.isArray(runnable.defaultOptions) && effectiveCallOptions != null && typeof effectiveCallOptions === "object" && !Array.isArray(effectiveCallOptions)) effectiveCallOptions = {
|
|
24
|
+
...runnable.defaultOptions,
|
|
25
|
+
...effectiveCallOptions
|
|
26
|
+
};
|
|
27
|
+
else if (effectiveCallOptions == null) effectiveCallOptions = runnable.defaultOptions;
|
|
28
|
+
if (runnable._useResponsesApi?.(effectiveCallOptions) === true || runnable._useResponsesApi?.(void 0) === true) return true;
|
|
29
|
+
} catch {}
|
|
30
|
+
if (typeof runnable.constructor?.name === "string" && runnable.constructor.name.includes("Responses")) return true;
|
|
31
|
+
if (runnable.last != null && typeof runnable.last === "object") {
|
|
32
|
+
candidate = runnable.last;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (runnable.bound != null && typeof runnable.bound === "object") {
|
|
36
|
+
candidate = runnable.bound;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
function resolveProviderMessageProjectionMode(model, provider, callOptions) {
|
|
44
|
+
return usesNativeOpenAIResponses(model, provider, callOptions) ? "openai-responses" : "chat-messages";
|
|
45
|
+
}
|
|
46
|
+
function projectMessagesForProviderMode({ messages, provider, maxToolResultChars }, projectionMode) {
|
|
47
|
+
const nativeOpenAIResponses = projectionMode === "openai-responses";
|
|
48
|
+
const providerInputMessages = projectToolStreamContentForProvider(messages, nativeOpenAIResponses ? "native" : "fallback", maxToolResultChars);
|
|
49
|
+
if (nativeOpenAIResponses) return projectOpenAIResponsesToolMessageContent(stripAnthropicCacheControl(stripBedrockCacheControl(providerInputMessages)), maxToolResultChars);
|
|
50
|
+
if (provider === "openrouter") return projectComputerCallOutputsToText(projectOpenRouterToolMessageContent(stripBedrockCacheControl(providerInputMessages), maxToolResultChars));
|
|
51
|
+
if (isOpenAILike(provider)) return projectComputerCallOutputsToText(projectOpenAIChatToolMessageContent(stripAnthropicCacheControl(stripBedrockCacheControl(providerInputMessages)), maxToolResultChars));
|
|
52
|
+
if (provider === "anthropic") return projectComputerCallOutputsToText(projectSingleTextToolOutputsToText(stripBedrockCacheControl(providerInputMessages), maxToolResultChars));
|
|
53
|
+
if (provider === "bedrock") return stripAnthropicCacheControl(projectComputerCallOutputsToText(projectCacheControlledToolOutputsToText(providerInputMessages, maxToolResultChars)));
|
|
54
|
+
return projectComputerCallOutputsToText(projectStructuredToolOutputsToText(projectSingleTextToolOutputsToText(stripAnthropicCacheControl(stripBedrockCacheControl(providerInputMessages)), maxToolResultChars), maxToolResultChars));
|
|
55
|
+
}
|
|
56
|
+
function resolveServingModelId(model) {
|
|
57
|
+
const seen = /* @__PURE__ */ new Set();
|
|
58
|
+
let current = model;
|
|
59
|
+
while (current != null && typeof current === "object" && !seen.has(current)) {
|
|
60
|
+
seen.add(current);
|
|
61
|
+
const wrapper = current;
|
|
62
|
+
if (typeof wrapper.model === "string" && wrapper.model !== "") return wrapper.model;
|
|
63
|
+
current = wrapper.bound ?? wrapper.last ?? (Array.isArray(wrapper.steps) ? wrapper.steps[wrapper.steps.length - 1] : void 0);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function prepareProviderRequest({ model, messages, provider, context, config, maxToolResultChars, measure }) {
|
|
67
|
+
const projectionMode = resolveProviderMessageProjectionMode(model, provider, config);
|
|
68
|
+
const projected = projectMessagesForProviderMode({
|
|
69
|
+
model,
|
|
70
|
+
messages,
|
|
71
|
+
provider,
|
|
72
|
+
maxToolResultChars,
|
|
73
|
+
callOptions: config
|
|
74
|
+
}, projectionMode);
|
|
75
|
+
const registry = context?.getOrCreateToolOutputRegistry?.();
|
|
76
|
+
const runId = config?.configurable?.run_id;
|
|
77
|
+
const annotated = annotateMessagesForLLM(projected, registry, runId);
|
|
78
|
+
const isRunProduced = context?.isRunProducedMessage;
|
|
79
|
+
const modelId = resolveServingModelId(model);
|
|
80
|
+
const cued = isAnthropicLike(provider, { model: modelId }) ? appendPredecessorHandoffCue(annotated, isRunProduced == null ? void 0 : (message) => isRunProduced.call(context, message)) : removePredecessorHandoffCue(annotated);
|
|
81
|
+
const preparedMessages = strictAlternationProviders.has(provider) ? coalesceAdjacentUserTurns(cued) : cued;
|
|
82
|
+
const request = {
|
|
83
|
+
model,
|
|
84
|
+
modelId,
|
|
85
|
+
provider,
|
|
86
|
+
projectionMode,
|
|
87
|
+
messages: preparedMessages,
|
|
88
|
+
measurement: measure?.(preparedMessages)
|
|
89
|
+
};
|
|
90
|
+
Object.defineProperty(request, preparedProviderRequestBrand, {
|
|
91
|
+
value: true,
|
|
92
|
+
enumerable: false
|
|
93
|
+
});
|
|
94
|
+
return Object.freeze(request);
|
|
95
|
+
}
|
|
96
|
+
function assertPreparedProviderRequestFor(request, model, provider, config) {
|
|
97
|
+
if (!Object.prototype.hasOwnProperty.call(request, preparedProviderRequestBrand)) throw new Error("Invalid prepared provider request");
|
|
98
|
+
if (request.model !== model) throw new Error("Prepared provider request does not match serving model");
|
|
99
|
+
if (request.provider !== provider) throw new Error("Prepared provider request does not match serving provider");
|
|
100
|
+
if (request.projectionMode !== resolveProviderMessageProjectionMode(model, provider, config)) throw new Error("Prepared provider request does not match invocation options");
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
export { assertPreparedProviderRequestFor, prepareProviderRequest, resolveServingModelId, usesNativeOpenAIResponses };
|
|
104
|
+
|
|
105
|
+
//# sourceMappingURL=prepareProviderRequest.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareProviderRequest.mjs","names":[],"sources":["../../../src/llm/prepareProviderRequest.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/llm/tokenCounterCacheCompatibility.ts
|
|
2
|
+
const stableMessageTokenCounters = /* @__PURE__ */ new WeakSet();
|
|
3
|
+
function markTokenCounterCacheCompatible(tokenCounter) {
|
|
4
|
+
stableMessageTokenCounters.add(tokenCounter);
|
|
5
|
+
return tokenCounter;
|
|
6
|
+
}
|
|
7
|
+
function isTokenCounterCacheCompatible(tokenCounter) {
|
|
8
|
+
return stableMessageTokenCounters.has(tokenCounter);
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { isTokenCounterCacheCompatible, markTokenCounterCacheCompatible };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=tokenCounterCacheCompatibility.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenCounterCacheCompatibility.mjs","names":[],"sources":["../../../src/llm/tokenCounterCacheCompatibility.ts"],"mappings":";AAEA,MAAM,6CAA6B,IAAI,QAErC;AAMF,SAAgB,gCAEd,cAAkC;CAClC,2BAA2B,IAAI,YAAY;CAC3C,OAAO;AACT;AAEA,SAAgB,8BACd,cACS;CACT,OAAO,2BAA2B,IAAI,YAAY;AACpD"}
|