@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.
Files changed (50) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +4 -0
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  3. package/dist/cjs/graphs/Graph.cjs +45 -116
  4. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  5. package/dist/cjs/llm/contextPressureMeter.cjs +212 -0
  6. package/dist/cjs/llm/contextPressureMeter.cjs.map +1 -0
  7. package/dist/cjs/llm/invoke.cjs +46 -75
  8. package/dist/cjs/llm/invoke.cjs.map +1 -1
  9. package/dist/cjs/llm/prepareProviderRequest.cjs +108 -0
  10. package/dist/cjs/llm/prepareProviderRequest.cjs.map +1 -0
  11. package/dist/cjs/llm/tokenCounterCacheCompatibility.cjs +14 -0
  12. package/dist/cjs/llm/tokenCounterCacheCompatibility.cjs.map +1 -0
  13. package/dist/cjs/main.cjs +4 -0
  14. package/dist/cjs/messages/content.cjs +5 -4
  15. package/dist/cjs/messages/content.cjs.map +1 -1
  16. package/dist/cjs/utils/tokens.cjs +3 -2
  17. package/dist/cjs/utils/tokens.cjs.map +1 -1
  18. package/dist/esm/agents/AgentContext.mjs +4 -0
  19. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  20. package/dist/esm/graphs/Graph.mjs +48 -119
  21. package/dist/esm/graphs/Graph.mjs.map +1 -1
  22. package/dist/esm/llm/contextPressureMeter.mjs +211 -0
  23. package/dist/esm/llm/contextPressureMeter.mjs.map +1 -0
  24. package/dist/esm/llm/invoke.mjs +48 -75
  25. package/dist/esm/llm/invoke.mjs.map +1 -1
  26. package/dist/esm/llm/prepareProviderRequest.mjs +105 -0
  27. package/dist/esm/llm/prepareProviderRequest.mjs.map +1 -0
  28. package/dist/esm/llm/tokenCounterCacheCompatibility.mjs +13 -0
  29. package/dist/esm/llm/tokenCounterCacheCompatibility.mjs.map +1 -0
  30. package/dist/esm/main.mjs +3 -1
  31. package/dist/esm/messages/content.mjs +5 -4
  32. package/dist/esm/messages/content.mjs.map +1 -1
  33. package/dist/esm/utils/tokens.mjs +3 -2
  34. package/dist/esm/utils/tokens.mjs.map +1 -1
  35. package/dist/types/agents/AgentContext.d.ts +3 -0
  36. package/dist/types/index.d.ts +3 -0
  37. package/dist/types/llm/contextPressureMeter.d.ts +36 -0
  38. package/dist/types/llm/invoke.d.ts +31 -33
  39. package/dist/types/llm/prepareProviderRequest.d.ts +55 -0
  40. package/dist/types/llm/tokenCounterCacheCompatibility.d.ts +7 -0
  41. package/package.json +2 -1
  42. package/src/agents/AgentContext.ts +9 -0
  43. package/src/graphs/Graph.ts +70 -276
  44. package/src/index.ts +9 -0
  45. package/src/llm/contextPressureMeter.ts +449 -0
  46. package/src/llm/invoke.ts +136 -296
  47. package/src/llm/prepareProviderRequest.ts +357 -0
  48. package/src/llm/tokenCounterCacheCompatibility.ts +22 -0
  49. package/src/messages/content.ts +3 -3
  50. 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":";;;;;;;;AAuEA,SAAS,iBACP,OACA,UACkD;CAClD,IAAI;CACJ,IAAI;EACF,aAAa,OAAO,yBAAyB,OAAO,QAAQ;CAC9D,QAAQ;EACN,OAAO;GAAE,KAAK;GAAO,MAAM;EAAM;CACnC;CACA,IAAI,cAAc,MAChB,OAAO;EAAE,KAAK;EAAO,MAAM;CAAK;CAElC,OAAO,WAAW,aACd;EAAE,KAAK;EAAM,MAAM;EAAM,OAAO,WAAW;CAAM,IACjD;EAAE,KAAK;EAAM,MAAM;CAAM;AAC/B;AAEA,SAAS,sBACP,SACgC;CAChC,IAAI,QAAQ,OAAO,GACjB;CAEF,MAAM,kBAAkB,iBAAiB,SAAS,SAAS;CAC3D,IACE,CAAC,gBAAgB,QACjB,CAAC,gBAAgB,OACjB,OAAO,gBAAgB,UAAU,UAEjC;CAEF,MAAM,cAAc,QAAQ,QAAQ;CACpC,MAAM,eAAe,iBAAiB,SAAS,MAAM;CACrD,IAAI,CAAC,aAAa,QAAS,CAAC,aAAa,OAAO,UAAU,SACxD;CAEF,MAAM,OAAO,aAAa;CAC1B,IAAI,QAAQ,QAAQ,OAAO,SAAS,UAClC;CAGF,MAAM,2BAA2B,iBAC/B,SACA,mBACF;CACA,IAAI,CAAC,yBAAyB,QAAQ,CAAC,yBAAyB,KAC9D;CAEF,MAAM,sBAAsB,yBAAyB;CACrD,IACE,uBAAuB,QACvB,OAAO,wBAAwB,YAC/B,QAAQ,mBAAmB,GAE3B;CAEF,MAAM,mBAAmB;CACzB,MAAM,eAAe,iBAAiB,kBAAkB,MAAM;CAC9D,IAAI,CAAC,aAAa,MAChB;CAEF,IAAI,gBAAgB,QAAQ,SAAS,aAAa;EAChD,MAAM,oBAAoB,iBACxB,SACA,YACF;EACA,IACE,CAAC,kBAAkB,QAClB,CAAC,kBAAkB,OAAO,gBAAgB,SAE3C;EAEF,MAAM,YAAY,kBAAkB;EACpC,IACE,aAAa,SACZ,CAAC,MAAM,QAAQ,SAAS,KAAK,QAAQ,SAAS,KAAK,UAAU,SAAS,IAEvE;EAEF,MAAM,eAAe,iBAAiB,kBAAkB,eAAe;EACvE,IAAI,CAAC,aAAa,QAAQ,aAAa,SAAS,MAC9C;CAEJ;CAEA,IAAI;CACJ,IAAI,gBAAgB,QAAQ;EAC1B,MAAM,YAAY,aAAa;EAC/B,IAAI,aAAa,QAAQ,OAAO,cAAc,UAC5C;EAEF,iBAAiB,OAAO,cAAc,WAAW,YAAY,KAAA;CAC/D;CAEA,OAAO;EACL,SAAS,gBAAgB;EACzB;EACA,GAAI,QAAQ,QAAQ,EAAE,KAAK;EAC3B,GAAI,kBAAkB,QAAQ,EAAE,eAAe;CACjD;AACF;AAEA,SAAS,mBACP,MACA,OACS;CACT,OACE,KAAK,YAAY,MAAM,WACvB,KAAK,gBAAgB,MAAM,eAC3B,KAAK,SAAS,MAAM,QACpB,KAAK,mBAAmB,MAAM;AAElC;AAGA,SAAgB,2BACd,cACsB;CACtB,MAAM,0BAAU,IAAI,QAAgD;CACpE,OAAO,EACL,MAAM,SAAiB;EACrB,MAAM,UAAU,sBAAsB,OAAO;EAC7C,MAAM,SAAS,QAAQ,IAAI,OAAO;EAClC,IACE,WAAW,QACX,UAAU,QACV,mBAAmB,OAAO,SAAS,OAAO,GAE1C,OAAO,OAAO;EAEhB,MAAM,SAAS,aAAa,OAAO;EACnC,IAAI,WAAW,MACb,QAAQ,IAAI,SAAS;GAAE;GAAS;EAAO,CAAC;OAExC,QAAQ,OAAO,OAAO;EAExB,OAAO;CACT,EACF;AACF;AAEA,SAAS,4BAA4B,SAA0C;CAC7E,MAAM,OAAO,QAAQ,QAAQ;CAC7B,IACE,mBAAmB,eACnB,OAAO,QAAQ,iBAAiB,YAChC,QAAQ,aAAa,SAAS,GAE9B,OAAO,aAAa,QAAQ;CAE9B,IAAI,OAAO,QAAQ,OAAO,YAAY,QAAQ,GAAG,SAAS,GACxD,OAAO,GAAG,KAAK,MAAM,QAAQ;AAGjC;AAGA,SAAgB,2BAA2B,EACzC,cACA,iBACA,gBACA,kBACA,oBACA,cACA,mBACA,oBACmD;CACnD,MAAM,8BAAc,IAAI,QAA6B;CACrD,MAAM,0BAAU,IAAI,QAA6B;CACjD,MAAM,uCAAuB,IAAI,IAAyC;CAC1E,IAAI;CACJ,IAAI;CACJ,IAAI,sBAAsB;CAE1B,MAAM,SAAS,YAAiC;EAC9C,MAAM,SAAS,YAAY,IAAI,OAAO;EACtC,IAAI,UAAU,MACZ,OAAO;EAET,MAAM,SACJ,iBAAiB,MAAM,OAAO,KAAK,eAAe,OAAO,KAAK;EAChE,YAAY,IAAI,SAAS,MAAM;EAC/B,OAAO;CACT;CAEA,IACE,gBAAgB,SACf,gBAAgB,QAAQ,mBAAmB,OAC5C;EACA,MAAM,gCAAgB,IAAI,QAA6B;EACvD,KAAK,IAAI,IAAI,GAAG,IAAI,eAAe,QAAQ,KACzC,cAAc,IAAI,eAAe,IAAI,CAAC;EAExC,WAAW,iBAAiB,KAAK,SAAS,UAAU;GAClD,MAAM,YAAY,MAAM,OAAO;GAC/B,MAAM,cAAc,cAAc,IAAI,OAAO;GAC7C,MAAM,gBACJ,eAAe,OAAO,mBAAmB,eAAe,KAAA;GAC1D,MAAM,mBACJ,iBAAiB,QACjB,OAAO,SAAS,aAAa,KAC7B,iBAAiB,IACb,gBACA;GACN,IAAI,CAAC,QAAQ,IAAI,OAAO,GACtB,QAAQ,IAAI,SAAS,KAAK;GAE5B,OAAO;IAAE;IAAW;GAAiB;EACvC,CAAC;EACD,kBAAkB,CAAC;EACnB,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;GACxC,gBAAgB,KAAK,SAAS,EAAE,CAAC;GACjC,uBAAuB,SAAS,EAAE,CAAC;EACrC;CACF;CAEA,MAAM,cAAc,QAAqB,UAA6B;EACpE,MAAM,SAAS,QAAQ,IAAI,MAAM;EACjC,IAAI,UAAU,QAAQ,CAAC,QAAQ,IAAI,KAAK,GACtC,QAAQ,IAAI,OAAO,MAAM;CAE7B;CAEA,MAAM,mBACJ,QACA,UACkB;EAClB,IAAI,YAAY,QAAQ,WAAW,OACjC,OAAO;EAET,IAAI,OAAO,WAAW,MAAM,QAAQ;GAClC,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAChC,IACE,OAAO,EAAE,CAAC,QAAQ,MAAM,MAAM,EAAE,CAAC,QAAQ,KACzC,CAAC,kCAAkC,MAAM,EAAE,GAE3C,WAAW,OAAO,IAAI,MAAM,EAAE;GAGlC,OAAO;EACT;EAEA,MAAM,+BAAe,IAAI,IAA2B;EACpD,KAAK,MAAM,WAAW,QAAQ;GAC5B,MAAM,SAAS,QAAQ,IAAI,OAAO;GAClC,MAAM,MAAM,4BAA4B,OAAO;GAC/C,IAAI,UAAU,QAAQ,OAAO,MAC3B;GAEF,aAAa,IAAI,KAAK,aAAa,IAAI,GAAG,IAAI,OAAO,MAAM;EAC7D;EACA,KAAK,MAAM,WAAW,OAAO;GAC3B,IAAI,QAAQ,IAAI,OAAO,KAAK,kCAAkC,OAAO,GACnE;GAEF,MAAM,MAAM,4BAA4B,OAAO;GAC/C,MAAM,SAAS,OAAO,OAAO,aAAa,IAAI,GAAG,IAAI,KAAA;GACrD,IAAI,UAAU,MACZ,QAAQ,IAAI,SAAS,MAAM;EAE/B;EACA,OAAO;CACT;CAEA,MAAM,WACJ,UACA,YAC+B;EAC/B,MAAM,gBAAgB,SAAS,iBAAiB,cAAc;EAC9D,MAAM,kBAAkB,SAAS,oBAAoB;EACrD,MAAM,6BACJ,cAAc,+BACb,kBAAkB,oBAAoB,KAAA;EACzC,IACG,gBAAgB,QAAQ,mBAAmB,QAC5C,iBAAiB,QACjB,8BAA8B,MAE9B,OAAO,EAAE,MAAM,KAAK;EAEtB,MAAM,yBAAyB,KAAK,IAClC,GACA,gBAAgB,0BAClB;EACA,IAAI,aAAa,mBAAmB,IAAI,mBAAmB;EAC3D,IACE,cAAc,oBAAoB,QAClC,aAAa,mBAAmB,GAEhC,aAAa,aAAa;EAE5B,IAAI,iBACF,aAAa,KAAK,IAAI,GAAG,UAAU;EAErC,MAAM,oBAAoB,cAAc;EACxC,MAAM,yBACJ,CAAC,mBACD,YAAY,QACZ,qBAAqB,QACrB,OAAO,SAAS,iBAAiB,IAC7B,yBACA,KAAK,IAAI,wBAAwB,KAAK,IAAI,GAAG,iBAAiB,CAAC,IAC/D,KAAA;EAEN,IAAI;EACJ,IACE,0BAA0B,QAC1B,YAAY,QACZ,mBAAmB,MACnB;GACA,IAAI,cAAc,qBAAqB,IAAI,sBAAsB;GACjE,IAAI,eAAe,MAAM;IACvB,MAAM,oBAAoB,KAAK,MAAA,IACP,UACxB;IACA,MAAM,qBACJ,sBAAsB,IAClB,KAAK,IACL,KAAK,IAAI,GAAG,yBAAyB,iBAAiB,GACtD,KAAK,MAAM,sBAAsB,UAAU,CAC7C,IACE;IACN,MAAM,oBACJ,sBAAsB,IAClB,qBACA,iBACA,qBAAqB,qBACrB,kBACF,IACE,CAAC;IACP,cAAc;KACZ,oBAAoB,SAAS,KAC1B,GAAG,WAAW,kBAAkB,WAAW,CAC9C;KACA,qBAAqB,KAAK,IACxB,mBACA,yBAAyB,kBAC3B;IACF;IACA,qBAAqB,IAAI,wBAAwB,WAAW;GAC9D;GACA,yBAAyB,YAAY;GACrC,IAAI,eAAe;GACnB,MAAM,8BAAc,IAAI,IAAY;GACpC,KAAK,MAAM,WAAW,UAAU;IAC9B,MAAM,YAAY,MAAM,OAAO;IAC/B,MAAM,SAAS,QAAQ,IAAI,OAAO;IAClC,IAAI,UAAU,QAAQ,YAAY,IAAI,MAAM,GAAG;KAC7C,gBAAgB;KAChB;IACF;IACA,YAAY,IAAI,MAAM;IACtB,0BAA0B,KAAK,IAC7B,GACA,YAAY,mBAAmB,UAC7B,KAAK,OAAO,YAAY,SAAS,OAAO,CAAC,aAAa,UAAU,CACpE;GACF;GACA,0BAA0B,KAAK,MAAM,eAAe,UAAU;EAChE,OAAO;GACL,IAAI,YAAA;GACJ,KAAK,MAAM,WAAW,UACpB,aAAa,MAAM,OAAO;GAE5B,yBAAyB,KAAK,MAAM,YAAY,UAAU;EAC5D;EACA,OAAO;GACL,MAAM,0BAA0B;GAChC;GACA;GACA;GACA;EACF;CACF;CAEA,OAAO;EAAE;EAAiB;EAAY;CAAQ;AAChD"}
@@ -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 { stripAnthropicCacheControl, stripBedrockCacheControl } from "../messages/cache.mjs";
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"]: params.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(params, stampedConfig);
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({ model, messages, provider, context, onChunk }, config) {
225
- const invocationMessages = projectMessagesForProvider({
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 fallbackMessages = await prepareProviderMessages?.({
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, projectMessagesForProvider, resolveServingModelId, tryFallbackProviders };
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":"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"}
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"}