@librechat/agents 3.1.57 → 3.1.61
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 +326 -62
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/common/enum.cjs +13 -0
- package/dist/cjs/common/enum.cjs.map +1 -1
- package/dist/cjs/events.cjs +7 -27
- package/dist/cjs/events.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +303 -222
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +4 -4
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +6 -2
- package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/init.cjs +60 -0
- package/dist/cjs/llm/init.cjs.map +1 -0
- package/dist/cjs/llm/invoke.cjs +90 -0
- package/dist/cjs/llm/invoke.cjs.map +1 -0
- package/dist/cjs/llm/openai/index.cjs +2 -0
- package/dist/cjs/llm/openai/index.cjs.map +1 -1
- package/dist/cjs/llm/request.cjs +41 -0
- package/dist/cjs/llm/request.cjs.map +1 -0
- package/dist/cjs/main.cjs +40 -0
- package/dist/cjs/main.cjs.map +1 -1
- package/dist/cjs/messages/cache.cjs +76 -89
- package/dist/cjs/messages/cache.cjs.map +1 -1
- package/dist/cjs/messages/contextPruning.cjs +156 -0
- package/dist/cjs/messages/contextPruning.cjs.map +1 -0
- package/dist/cjs/messages/contextPruningSettings.cjs +53 -0
- package/dist/cjs/messages/contextPruningSettings.cjs.map +1 -0
- package/dist/cjs/messages/core.cjs +23 -37
- package/dist/cjs/messages/core.cjs.map +1 -1
- package/dist/cjs/messages/format.cjs +156 -11
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/messages/prune.cjs +1161 -49
- package/dist/cjs/messages/prune.cjs.map +1 -1
- package/dist/cjs/messages/reducer.cjs +87 -0
- package/dist/cjs/messages/reducer.cjs.map +1 -0
- package/dist/cjs/run.cjs +81 -42
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/stream.cjs +54 -7
- package/dist/cjs/stream.cjs.map +1 -1
- package/dist/cjs/summarization/index.cjs +75 -0
- package/dist/cjs/summarization/index.cjs.map +1 -0
- package/dist/cjs/summarization/node.cjs +663 -0
- package/dist/cjs/summarization/node.cjs.map +1 -0
- package/dist/cjs/tools/ToolNode.cjs +16 -8
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/handlers.cjs +2 -0
- package/dist/cjs/tools/handlers.cjs.map +1 -1
- package/dist/cjs/utils/errors.cjs +115 -0
- package/dist/cjs/utils/errors.cjs.map +1 -0
- package/dist/cjs/utils/events.cjs +17 -0
- package/dist/cjs/utils/events.cjs.map +1 -1
- package/dist/cjs/utils/handlers.cjs +16 -0
- package/dist/cjs/utils/handlers.cjs.map +1 -1
- package/dist/cjs/utils/llm.cjs +10 -0
- package/dist/cjs/utils/llm.cjs.map +1 -1
- package/dist/cjs/utils/tokens.cjs +247 -14
- package/dist/cjs/utils/tokens.cjs.map +1 -1
- package/dist/cjs/utils/truncation.cjs +107 -0
- package/dist/cjs/utils/truncation.cjs.map +1 -0
- package/dist/esm/agents/AgentContext.mjs +325 -61
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/common/enum.mjs +13 -0
- package/dist/esm/common/enum.mjs.map +1 -1
- package/dist/esm/events.mjs +8 -28
- package/dist/esm/events.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +307 -226
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +4 -4
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/bedrock/utils/message_inputs.mjs +6 -2
- package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/init.mjs +58 -0
- package/dist/esm/llm/init.mjs.map +1 -0
- package/dist/esm/llm/invoke.mjs +87 -0
- package/dist/esm/llm/invoke.mjs.map +1 -0
- package/dist/esm/llm/openai/index.mjs +2 -0
- package/dist/esm/llm/openai/index.mjs.map +1 -1
- package/dist/esm/llm/request.mjs +38 -0
- package/dist/esm/llm/request.mjs.map +1 -0
- package/dist/esm/main.mjs +13 -3
- package/dist/esm/main.mjs.map +1 -1
- package/dist/esm/messages/cache.mjs +76 -89
- package/dist/esm/messages/cache.mjs.map +1 -1
- package/dist/esm/messages/contextPruning.mjs +154 -0
- package/dist/esm/messages/contextPruning.mjs.map +1 -0
- package/dist/esm/messages/contextPruningSettings.mjs +50 -0
- package/dist/esm/messages/contextPruningSettings.mjs.map +1 -0
- package/dist/esm/messages/core.mjs +23 -37
- package/dist/esm/messages/core.mjs.map +1 -1
- package/dist/esm/messages/format.mjs +156 -11
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/messages/prune.mjs +1158 -52
- package/dist/esm/messages/prune.mjs.map +1 -1
- package/dist/esm/messages/reducer.mjs +83 -0
- package/dist/esm/messages/reducer.mjs.map +1 -0
- package/dist/esm/run.mjs +82 -43
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/stream.mjs +54 -7
- package/dist/esm/stream.mjs.map +1 -1
- package/dist/esm/summarization/index.mjs +73 -0
- package/dist/esm/summarization/index.mjs.map +1 -0
- package/dist/esm/summarization/node.mjs +659 -0
- package/dist/esm/summarization/node.mjs.map +1 -0
- package/dist/esm/tools/ToolNode.mjs +16 -8
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/handlers.mjs +2 -0
- package/dist/esm/tools/handlers.mjs.map +1 -1
- package/dist/esm/utils/errors.mjs +111 -0
- package/dist/esm/utils/errors.mjs.map +1 -0
- package/dist/esm/utils/events.mjs +17 -1
- package/dist/esm/utils/events.mjs.map +1 -1
- package/dist/esm/utils/handlers.mjs +16 -0
- package/dist/esm/utils/handlers.mjs.map +1 -1
- package/dist/esm/utils/llm.mjs +10 -1
- package/dist/esm/utils/llm.mjs.map +1 -1
- package/dist/esm/utils/tokens.mjs +245 -15
- package/dist/esm/utils/tokens.mjs.map +1 -1
- package/dist/esm/utils/truncation.mjs +102 -0
- package/dist/esm/utils/truncation.mjs.map +1 -0
- package/dist/types/agents/AgentContext.d.ts +124 -6
- package/dist/types/common/enum.d.ts +14 -1
- package/dist/types/graphs/Graph.d.ts +22 -27
- package/dist/types/index.d.ts +5 -0
- package/dist/types/llm/init.d.ts +18 -0
- package/dist/types/llm/invoke.d.ts +48 -0
- package/dist/types/llm/request.d.ts +14 -0
- package/dist/types/messages/contextPruning.d.ts +42 -0
- package/dist/types/messages/contextPruningSettings.d.ts +44 -0
- package/dist/types/messages/core.d.ts +1 -1
- package/dist/types/messages/format.d.ts +17 -1
- package/dist/types/messages/index.d.ts +3 -0
- package/dist/types/messages/prune.d.ts +162 -1
- package/dist/types/messages/reducer.d.ts +18 -0
- package/dist/types/run.d.ts +12 -1
- package/dist/types/summarization/index.d.ts +20 -0
- package/dist/types/summarization/node.d.ts +29 -0
- package/dist/types/tools/ToolNode.d.ts +3 -1
- package/dist/types/types/graph.d.ts +44 -6
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/types/run.d.ts +30 -0
- package/dist/types/types/stream.d.ts +31 -4
- package/dist/types/types/summarize.d.ts +47 -0
- package/dist/types/types/tools.d.ts +7 -0
- package/dist/types/utils/errors.d.ts +28 -0
- package/dist/types/utils/events.d.ts +13 -0
- package/dist/types/utils/index.d.ts +2 -0
- package/dist/types/utils/llm.d.ts +4 -0
- package/dist/types/utils/tokens.d.ts +14 -1
- package/dist/types/utils/truncation.d.ts +49 -0
- package/package.json +3 -3
- package/src/agents/AgentContext.ts +388 -58
- package/src/agents/__tests__/AgentContext.test.ts +265 -5
- package/src/common/enum.ts +13 -0
- package/src/events.ts +9 -39
- package/src/graphs/Graph.ts +468 -331
- package/src/index.ts +7 -0
- package/src/llm/anthropic/llm.spec.ts +3 -3
- package/src/llm/anthropic/utils/message_inputs.ts +6 -4
- package/src/llm/bedrock/llm.spec.ts +1 -1
- package/src/llm/bedrock/utils/message_inputs.ts +6 -2
- package/src/llm/init.ts +63 -0
- package/src/llm/invoke.ts +144 -0
- package/src/llm/request.ts +55 -0
- package/src/messages/__tests__/observationMasking.test.ts +221 -0
- package/src/messages/cache.ts +77 -102
- package/src/messages/contextPruning.ts +191 -0
- package/src/messages/contextPruningSettings.ts +90 -0
- package/src/messages/core.ts +32 -53
- package/src/messages/ensureThinkingBlock.test.ts +39 -39
- package/src/messages/format.ts +227 -15
- package/src/messages/formatAgentMessages.test.ts +511 -1
- package/src/messages/index.ts +3 -0
- package/src/messages/prune.ts +1548 -62
- package/src/messages/reducer.ts +22 -0
- package/src/run.ts +104 -51
- package/src/scripts/bedrock-merge-test.ts +1 -1
- package/src/scripts/test-thinking-handoff-bedrock.ts +1 -1
- package/src/scripts/test-thinking-handoff.ts +1 -1
- package/src/scripts/thinking-bedrock.ts +1 -1
- package/src/scripts/thinking.ts +1 -1
- package/src/specs/anthropic.simple.test.ts +1 -1
- package/src/specs/multi-agent-summarization.test.ts +396 -0
- package/src/specs/prune.test.ts +1196 -23
- package/src/specs/summarization-unit.test.ts +868 -0
- package/src/specs/summarization.test.ts +3827 -0
- package/src/specs/summarize-prune.test.ts +376 -0
- package/src/specs/thinking-handoff.test.ts +10 -10
- package/src/specs/thinking-prune.test.ts +7 -4
- package/src/specs/token-accounting-e2e.test.ts +1034 -0
- package/src/specs/token-accounting-pipeline.test.ts +882 -0
- package/src/specs/token-distribution-edge-case.test.ts +25 -26
- package/src/splitStream.test.ts +42 -33
- package/src/stream.ts +64 -11
- package/src/summarization/__tests__/aggregator.test.ts +153 -0
- package/src/summarization/__tests__/node.test.ts +708 -0
- package/src/summarization/__tests__/trigger.test.ts +50 -0
- package/src/summarization/index.ts +102 -0
- package/src/summarization/node.ts +982 -0
- package/src/tools/ToolNode.ts +25 -3
- package/src/types/graph.ts +62 -7
- package/src/types/index.ts +1 -0
- package/src/types/run.ts +32 -0
- package/src/types/stream.ts +45 -5
- package/src/types/summarize.ts +58 -0
- package/src/types/tools.ts +7 -0
- package/src/utils/errors.ts +117 -0
- package/src/utils/events.ts +31 -0
- package/src/utils/handlers.ts +18 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/llm.ts +12 -0
- package/src/utils/tokens.ts +336 -18
- package/src/utils/truncation.ts +124 -0
- package/src/scripts/image.ts +0 -180
package/src/messages/reducer.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BaseMessage,
|
|
3
|
+
RemoveMessage,
|
|
3
4
|
BaseMessageLike,
|
|
4
5
|
coerceMessageLikeToMessage,
|
|
5
6
|
} from '@langchain/core/messages';
|
|
@@ -7,6 +8,27 @@ import { v4 } from 'uuid';
|
|
|
7
8
|
|
|
8
9
|
export const REMOVE_ALL_MESSAGES = '__remove_all__';
|
|
9
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Creates a message that instructs messagesStateReducer to remove ALL
|
|
13
|
+
* existing messages from state. Messages appearing after this one in
|
|
14
|
+
* the array become the new state.
|
|
15
|
+
*
|
|
16
|
+
* Usage (in a node return value):
|
|
17
|
+
* ```ts
|
|
18
|
+
* return { messages: [createRemoveAllMessage(), ...survivingMessages] };
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* This works because the reducer checks for `getType() === 'remove'`
|
|
22
|
+
* with `id === REMOVE_ALL_MESSAGES` and discards everything before it.
|
|
23
|
+
*
|
|
24
|
+
* NOTE: Uses RemoveMessage from @langchain/core with a sentinel id so
|
|
25
|
+
* the reducer can distinguish a "remove-all" marker from a single-message
|
|
26
|
+
* removal.
|
|
27
|
+
*/
|
|
28
|
+
export function createRemoveAllMessage(): BaseMessage {
|
|
29
|
+
return new RemoveMessage({ id: REMOVE_ALL_MESSAGES });
|
|
30
|
+
}
|
|
31
|
+
|
|
10
32
|
export type Messages =
|
|
11
33
|
| Array<BaseMessage | BaseMessageLike>
|
|
12
34
|
| BaseMessage
|
package/src/run.ts
CHANGED
|
@@ -20,6 +20,7 @@ import { createTokenCounter, encodingForModel } from '@/utils/tokens';
|
|
|
20
20
|
import { GraphEvents, Callback, TitleMethod } from '@/common';
|
|
21
21
|
import { MultiAgentGraph } from '@/graphs/MultiAgentGraph';
|
|
22
22
|
import { StandardGraph } from '@/graphs/Graph';
|
|
23
|
+
import { initializeModel } from '@/llm/init';
|
|
23
24
|
import { HandlerRegistry } from '@/events';
|
|
24
25
|
import { isOpenAILike } from '@/utils/llm';
|
|
25
26
|
import { isPresent } from '@/utils/misc';
|
|
@@ -42,10 +43,12 @@ export class Run<_T extends t.BaseGraphState> {
|
|
|
42
43
|
private tokenCounter?: t.TokenCounter;
|
|
43
44
|
private handlerRegistry?: HandlerRegistry;
|
|
44
45
|
private indexTokenCountMap?: Record<string, number>;
|
|
46
|
+
calibrationRatio: number = 1;
|
|
45
47
|
graphRunnable?: t.CompiledStateWorkflow;
|
|
46
48
|
Graph: StandardGraph | MultiAgentGraph | undefined;
|
|
47
49
|
returnContent: boolean = false;
|
|
48
50
|
private skipCleanup: boolean = false;
|
|
51
|
+
private _streamResult: t.MessageContentComplex[] | undefined;
|
|
49
52
|
|
|
50
53
|
private constructor(config: Partial<t.RunConfig>) {
|
|
51
54
|
const runId = config.runId ?? '';
|
|
@@ -56,6 +59,9 @@ export class Run<_T extends t.BaseGraphState> {
|
|
|
56
59
|
this.id = runId;
|
|
57
60
|
this.tokenCounter = config.tokenCounter;
|
|
58
61
|
this.indexTokenCountMap = config.indexTokenCountMap;
|
|
62
|
+
if (config.calibrationRatio != null && config.calibrationRatio > 0) {
|
|
63
|
+
this.calibrationRatio = config.calibrationRatio;
|
|
64
|
+
}
|
|
59
65
|
|
|
60
66
|
const handlerRegistry = new HandlerRegistry();
|
|
61
67
|
|
|
@@ -133,6 +139,7 @@ export class Run<_T extends t.BaseGraphState> {
|
|
|
133
139
|
agents: [agentConfig],
|
|
134
140
|
tokenCounter: this.tokenCounter,
|
|
135
141
|
indexTokenCountMap: this.indexTokenCountMap,
|
|
142
|
+
calibrationRatio: this.calibrationRatio,
|
|
136
143
|
});
|
|
137
144
|
/** Propagate compile options from graph config */
|
|
138
145
|
standardGraph.compileOptions = config.compileOptions;
|
|
@@ -151,6 +158,7 @@ export class Run<_T extends t.BaseGraphState> {
|
|
|
151
158
|
edges,
|
|
152
159
|
tokenCounter: this.tokenCounter,
|
|
153
160
|
indexTokenCountMap: this.indexTokenCountMap,
|
|
161
|
+
calibrationRatio: this.calibrationRatio,
|
|
154
162
|
});
|
|
155
163
|
|
|
156
164
|
if (compileOptions != null) {
|
|
@@ -184,6 +192,24 @@ export class Run<_T extends t.BaseGraphState> {
|
|
|
184
192
|
return this.Graph.getRunMessages();
|
|
185
193
|
}
|
|
186
194
|
|
|
195
|
+
/**
|
|
196
|
+
* Returns the current calibration ratio (EMA of provider-vs-estimate token ratios).
|
|
197
|
+
* Hosts should persist this value and pass it back as `RunConfig.calibrationRatio`
|
|
198
|
+
* on the next run for the same conversation so the pruner starts with an accurate
|
|
199
|
+
* scaling factor instead of the default (1).
|
|
200
|
+
*/
|
|
201
|
+
getCalibrationRatio(): number {
|
|
202
|
+
return this.calibrationRatio;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
getResolvedInstructionOverhead(): number | undefined {
|
|
206
|
+
return this.Graph?.getResolvedInstructionOverhead();
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
getToolCount(): number {
|
|
210
|
+
return this.Graph?.getToolCount() ?? 0;
|
|
211
|
+
}
|
|
212
|
+
|
|
187
213
|
/**
|
|
188
214
|
* Creates a custom event callback handler that intercepts custom events
|
|
189
215
|
* and processes them through our handler registry instead of EventStreamCallbackHandler
|
|
@@ -196,6 +222,16 @@ export class Run<_T extends t.BaseGraphState> {
|
|
|
196
222
|
tags?: string[],
|
|
197
223
|
metadata?: Record<string, unknown>
|
|
198
224
|
): Promise<void> => {
|
|
225
|
+
// ON_RUN_STEP is dispatched directly via handler registry in
|
|
226
|
+
// Graph.dispatchRunStep (primary, reliable path). Skip the
|
|
227
|
+
// callback-based dispatch to prevent double handling.
|
|
228
|
+
if (
|
|
229
|
+
eventName === GraphEvents.ON_RUN_STEP &&
|
|
230
|
+
this.Graph != null &&
|
|
231
|
+
this.Graph.handlerDispatchedStepIds.has((data as t.RunStep).id)
|
|
232
|
+
) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
199
235
|
const handler = this.handlerRegistry?.getHandler(eventName);
|
|
200
236
|
if (handler && this.Graph) {
|
|
201
237
|
return await handler.handle(
|
|
@@ -217,7 +253,10 @@ export class Run<_T extends t.BaseGraphState> {
|
|
|
217
253
|
|
|
218
254
|
async processStream(
|
|
219
255
|
inputs: t.IState,
|
|
220
|
-
|
|
256
|
+
callerConfig: Partial<RunnableConfig> & {
|
|
257
|
+
version: 'v1' | 'v2';
|
|
258
|
+
run_id?: string;
|
|
259
|
+
},
|
|
221
260
|
streamOptions?: t.EventStreamOptions
|
|
222
261
|
): Promise<MessageContentComplex[] | undefined> {
|
|
223
262
|
if (this.graphRunnable == null) {
|
|
@@ -231,6 +270,15 @@ export class Run<_T extends t.BaseGraphState> {
|
|
|
231
270
|
);
|
|
232
271
|
}
|
|
233
272
|
|
|
273
|
+
const config: Partial<RunnableConfig> & {
|
|
274
|
+
version: 'v1' | 'v2';
|
|
275
|
+
run_id?: string;
|
|
276
|
+
} = {
|
|
277
|
+
recursionLimit: 50,
|
|
278
|
+
...callerConfig,
|
|
279
|
+
configurable: { ...callerConfig.configurable },
|
|
280
|
+
};
|
|
281
|
+
|
|
234
282
|
this.Graph.resetValues(streamOptions?.keepContent);
|
|
235
283
|
|
|
236
284
|
/** Custom event callback to intercept and handle custom events */
|
|
@@ -293,61 +341,68 @@ export class Run<_T extends t.BaseGraphState> {
|
|
|
293
341
|
ignoreCustomEvent: true,
|
|
294
342
|
});
|
|
295
343
|
|
|
296
|
-
|
|
297
|
-
|
|
344
|
+
try {
|
|
345
|
+
for await (const event of stream) {
|
|
346
|
+
const { data, metadata, ...info } = event;
|
|
298
347
|
|
|
299
|
-
|
|
348
|
+
const eventName: t.EventName = info.event;
|
|
300
349
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
350
|
+
/** Skip custom events as they're handled by our callback */
|
|
351
|
+
if (eventName === GraphEvents.ON_CUSTOM_EVENT) {
|
|
352
|
+
continue;
|
|
353
|
+
}
|
|
305
354
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
355
|
+
const handler = this.handlerRegistry?.getHandler(eventName);
|
|
356
|
+
if (handler) {
|
|
357
|
+
await handler.handle(eventName, data, metadata, this.Graph);
|
|
358
|
+
}
|
|
309
359
|
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
360
|
+
} finally {
|
|
361
|
+
/**
|
|
362
|
+
* Break the reference chain that keeps heavy data alive via
|
|
363
|
+
* LangGraph's internal `__pregel_scratchpad.currentTaskInput` →
|
|
364
|
+
* `@langchain/core` `RunTree.extra[lc:child_config]` →
|
|
365
|
+
* Node.js `AsyncLocalStorage` context captured by timers/promises.
|
|
366
|
+
*
|
|
367
|
+
* Without this, base64-encoded images/PDFs in message content remain
|
|
368
|
+
* reachable from lingering `Timeout` handles until GC runs.
|
|
369
|
+
*/
|
|
370
|
+
if (!this.skipCleanup) {
|
|
371
|
+
if (
|
|
372
|
+
(config.configurable as Record<string, unknown> | undefined) != null
|
|
373
|
+
) {
|
|
374
|
+
for (const key of Object.getOwnPropertySymbols(config.configurable)) {
|
|
375
|
+
const val = config.configurable[key as unknown as string] as
|
|
376
|
+
| Record<string, unknown>
|
|
377
|
+
| undefined;
|
|
378
|
+
if (
|
|
379
|
+
val != null &&
|
|
380
|
+
typeof val === 'object' &&
|
|
381
|
+
'currentTaskInput' in val
|
|
382
|
+
) {
|
|
383
|
+
(val as Record<string, unknown>).currentTaskInput = undefined;
|
|
384
|
+
}
|
|
385
|
+
delete config.configurable[key as unknown as string];
|
|
335
386
|
}
|
|
336
|
-
|
|
387
|
+
config.configurable = undefined;
|
|
337
388
|
}
|
|
338
|
-
config.
|
|
389
|
+
config.callbacks = undefined;
|
|
339
390
|
}
|
|
340
|
-
config.callbacks = undefined;
|
|
341
|
-
}
|
|
342
391
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
392
|
+
const result = this.returnContent
|
|
393
|
+
? this.Graph.getContentParts()
|
|
394
|
+
: undefined;
|
|
395
|
+
|
|
396
|
+
this.calibrationRatio = this.Graph.getCalibrationRatio();
|
|
397
|
+
|
|
398
|
+
if (!this.skipCleanup) {
|
|
399
|
+
this.Graph.clearHeavyState();
|
|
400
|
+
}
|
|
346
401
|
|
|
347
|
-
|
|
348
|
-
this.Graph.clearHeavyState();
|
|
402
|
+
this._streamResult = result;
|
|
349
403
|
}
|
|
350
|
-
|
|
404
|
+
|
|
405
|
+
return this._streamResult;
|
|
351
406
|
}
|
|
352
407
|
|
|
353
408
|
private createSystemCallback<K extends keyof t.ClientCallbacks>(
|
|
@@ -422,13 +477,11 @@ export class Run<_T extends t.BaseGraphState> {
|
|
|
422
477
|
})
|
|
423
478
|
.join('\n');
|
|
424
479
|
|
|
425
|
-
const model =
|
|
480
|
+
const model = initializeModel({
|
|
426
481
|
provider,
|
|
427
482
|
clientOptions,
|
|
428
|
-
});
|
|
429
|
-
|
|
430
|
-
return { language: '', title: '' };
|
|
431
|
-
}
|
|
483
|
+
}) as t.ChatModelInstance;
|
|
484
|
+
|
|
432
485
|
if (
|
|
433
486
|
isOpenAILike(provider) &&
|
|
434
487
|
(model instanceof ChatOpenAI || model instanceof AzureChatOpenAI)
|
|
@@ -9,7 +9,7 @@ import { Providers } from '@/common';
|
|
|
9
9
|
|
|
10
10
|
async function testBedrockMerge(): Promise<void> {
|
|
11
11
|
const model = new CustomChatBedrockConverse({
|
|
12
|
-
model: 'us.anthropic.claude-
|
|
12
|
+
model: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
13
13
|
region: process.env.BEDROCK_AWS_REGION,
|
|
14
14
|
credentials: {
|
|
15
15
|
accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
|
|
@@ -56,7 +56,7 @@ async function testBedrockThinkingHandoff() {
|
|
|
56
56
|
provider: Providers.BEDROCK,
|
|
57
57
|
clientOptions: {
|
|
58
58
|
region: process.env.BEDROCK_AWS_REGION || 'us-east-1',
|
|
59
|
-
model: 'us.anthropic.claude-
|
|
59
|
+
model: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
60
60
|
credentials: {
|
|
61
61
|
accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
|
|
62
62
|
secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
|
|
@@ -63,7 +63,7 @@ async function testThinkingHandoff() {
|
|
|
63
63
|
agentId: 'code_reviewer',
|
|
64
64
|
provider: Providers.ANTHROPIC,
|
|
65
65
|
clientOptions: {
|
|
66
|
-
modelName: 'claude-
|
|
66
|
+
modelName: 'claude-sonnet-4-5-20250929',
|
|
67
67
|
apiKey: process.env.ANTHROPIC_API_KEY,
|
|
68
68
|
thinking: {
|
|
69
69
|
type: 'enabled',
|
|
@@ -75,7 +75,7 @@ async function testBedrockThinking(): Promise<void> {
|
|
|
75
75
|
// Enable thinking with token budget for Bedrock
|
|
76
76
|
const llmConfig = {
|
|
77
77
|
...baseLlmConfig,
|
|
78
|
-
model: 'us.anthropic.claude-
|
|
78
|
+
model: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
79
79
|
maxTokens: 5000,
|
|
80
80
|
additionalModelRequestFields: {
|
|
81
81
|
thinking: { type: 'enabled', budget_tokens: 2000 },
|
package/src/scripts/thinking.ts
CHANGED
|
@@ -79,7 +79,7 @@ async function testThinking(): Promise<void> {
|
|
|
79
79
|
// Enable thinking with token budget
|
|
80
80
|
const llmConfig = {
|
|
81
81
|
...baseLlmConfig,
|
|
82
|
-
model: 'claude-
|
|
82
|
+
model: 'claude-sonnet-4-5-20250929',
|
|
83
83
|
thinking: { type: 'enabled', budget_tokens: 2000 },
|
|
84
84
|
};
|
|
85
85
|
|
|
@@ -24,7 +24,7 @@ import { Run } from '@/run';
|
|
|
24
24
|
|
|
25
25
|
const provider = Providers.ANTHROPIC;
|
|
26
26
|
describe(`${capitalizeFirstLetter(provider)} Streaming Tests`, () => {
|
|
27
|
-
jest.setTimeout(
|
|
27
|
+
jest.setTimeout(90000);
|
|
28
28
|
let run: Run<t.IState>;
|
|
29
29
|
let runningHistory: BaseMessage[];
|
|
30
30
|
let collectedUsage: UsageMetadata[];
|