@librechat/agents 3.1.96 → 3.1.98
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/graphs/Graph.cjs +60 -21
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/instrumentation.cjs +120 -9
- package/dist/cjs/instrumentation.cjs.map +1 -1
- package/dist/cjs/langfuse.cjs +30 -226
- package/dist/cjs/langfuse.cjs.map +1 -1
- package/dist/cjs/langfuseToolOutputTracing.cjs +476 -0
- package/dist/cjs/langfuseToolOutputTracing.cjs.map +1 -0
- package/dist/cjs/llm/bedrock/index.cjs +10 -0
- package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/toolCache.cjs +125 -0
- package/dist/cjs/llm/bedrock/toolCache.cjs.map +1 -0
- package/dist/cjs/messages/cache.cjs +17 -9
- package/dist/cjs/messages/cache.cjs.map +1 -1
- package/dist/cjs/run.cjs +142 -69
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/tools/ToolNode.cjs +26 -9
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +10 -6
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +62 -23
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/instrumentation.mjs +118 -9
- package/dist/esm/instrumentation.mjs.map +1 -1
- package/dist/esm/langfuse.mjs +28 -224
- package/dist/esm/langfuse.mjs.map +1 -1
- package/dist/esm/langfuseToolOutputTracing.mjs +468 -0
- package/dist/esm/langfuseToolOutputTracing.mjs.map +1 -0
- package/dist/esm/llm/bedrock/index.mjs +10 -0
- package/dist/esm/llm/bedrock/index.mjs.map +1 -1
- package/dist/esm/llm/bedrock/toolCache.mjs +122 -0
- package/dist/esm/llm/bedrock/toolCache.mjs.map +1 -0
- package/dist/esm/messages/cache.mjs +17 -9
- package/dist/esm/messages/cache.mjs.map +1 -1
- package/dist/esm/run.mjs +144 -71
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/tools/ToolNode.mjs +26 -9
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +10 -6
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
- package/dist/types/graphs/Graph.d.ts +5 -1
- package/dist/types/instrumentation.d.ts +5 -1
- package/dist/types/langfuse.d.ts +6 -28
- package/dist/types/langfuseToolOutputTracing.d.ts +20 -0
- package/dist/types/llm/bedrock/index.d.ts +16 -0
- package/dist/types/llm/bedrock/toolCache.d.ts +4 -0
- package/dist/types/messages/cache.d.ts +2 -2
- package/dist/types/run.d.ts +5 -1
- package/dist/types/tools/ToolNode.d.ts +4 -1
- package/dist/types/tools/subagent/SubagentExecutor.d.ts +2 -0
- package/dist/types/types/graph.d.ts +30 -0
- package/dist/types/types/llm.d.ts +2 -2
- package/dist/types/types/run.d.ts +6 -0
- package/dist/types/types/tools.d.ts +7 -0
- package/package.json +2 -1
- package/src/agents/__tests__/AgentContext.anthropic.live.test.ts +332 -0
- package/src/agents/__tests__/AgentContext.bedrock.live.test.ts +504 -0
- package/src/graphs/Graph.ts +104 -34
- package/src/instrumentation.ts +172 -11
- package/src/langfuse.ts +59 -324
- package/src/langfuseToolOutputTracing.ts +702 -0
- package/src/llm/bedrock/index.ts +32 -1
- package/src/llm/bedrock/llm.spec.ts +154 -1
- package/src/llm/bedrock/toolCache.test.ts +131 -0
- package/src/llm/bedrock/toolCache.ts +191 -0
- package/src/messages/cache.test.ts +97 -38
- package/src/messages/cache.ts +18 -10
- package/src/run.ts +190 -87
- package/src/specs/langfuse-callbacks.test.ts +178 -1
- package/src/specs/langfuse-config.test.ts +112 -76
- package/src/specs/langfuse-instrumentation.test.ts +283 -0
- package/src/specs/langfuse-metadata.test.ts +54 -1
- package/src/specs/langfuse-tool-output-tracing.test.ts +616 -0
- package/src/tools/ToolNode.ts +35 -8
- package/src/tools/__tests__/SubagentExecutor.test.ts +32 -0
- package/src/tools/__tests__/ToolNode.langfuse.test.ts +47 -0
- package/src/tools/subagent/SubagentExecutor.ts +11 -6
- package/src/types/graph.ts +32 -0
- package/src/types/llm.ts +2 -2
- package/src/types/run.ts +6 -0
- package/src/types/tools.ts +7 -0
|
@@ -54,7 +54,10 @@ var CloudflareSandboxTools = require('../tools/cloudflare/CloudflareSandboxTools
|
|
|
54
54
|
var request = require('../llm/request.cjs');
|
|
55
55
|
var init = require('../llm/init.cjs');
|
|
56
56
|
var langfuse = require('../langfuse.cjs');
|
|
57
|
+
var instrumentation = require('../instrumentation.cjs');
|
|
58
|
+
var langfuseToolOutputTracing = require('../langfuseToolOutputTracing.cjs');
|
|
57
59
|
var toolCache = require('../llm/openrouter/toolCache.cjs');
|
|
60
|
+
var toolCache$1 = require('../llm/bedrock/toolCache.cjs');
|
|
58
61
|
|
|
59
62
|
/* eslint-disable no-console */
|
|
60
63
|
const { AGENT, TOOLS, SUMMARIZE } = _enum.GraphNodeKeys;
|
|
@@ -105,6 +108,10 @@ class Graph {
|
|
|
105
108
|
* graph compiles.
|
|
106
109
|
*/
|
|
107
110
|
toolOutputReferences;
|
|
111
|
+
/**
|
|
112
|
+
* Run-scoped Langfuse defaults. Per-agent config wins when present.
|
|
113
|
+
*/
|
|
114
|
+
langfuse;
|
|
108
115
|
/**
|
|
109
116
|
* Run-scoped opt-in for eager event-driven tool execution. The stream
|
|
110
117
|
* handler may prestart eligible event-driven tools; ToolNode later
|
|
@@ -325,10 +332,11 @@ class StandardGraph extends Graph {
|
|
|
325
332
|
agentContexts = new Map();
|
|
326
333
|
/** Default agent ID to use */
|
|
327
334
|
defaultAgentId;
|
|
328
|
-
constructor({ runId, signal, agents, tokenCounter, indexTokenCountMap, calibrationRatio, }) {
|
|
335
|
+
constructor({ runId, signal, agents, langfuse, tokenCounter, indexTokenCountMap, calibrationRatio, }) {
|
|
329
336
|
super();
|
|
330
337
|
this.runId = runId;
|
|
331
338
|
this.signal = signal;
|
|
339
|
+
this.langfuse = langfuse;
|
|
332
340
|
if (agents.length === 0) {
|
|
333
341
|
throw new Error('At least one agent configuration is required');
|
|
334
342
|
}
|
|
@@ -559,6 +567,10 @@ class StandardGraph extends Graph {
|
|
|
559
567
|
initializeTools({ currentTools, currentToolMap, agentContext, }) {
|
|
560
568
|
const toolDefinitions = agentContext?.toolDefinitions;
|
|
561
569
|
const eventDrivenMode = toolDefinitions != null && toolDefinitions.length > 0;
|
|
570
|
+
const traceToolNode = langfuseToolOutputTracing.shouldTraceToolNodeForLangfuse({
|
|
571
|
+
runLangfuse: this.langfuse,
|
|
572
|
+
agentLangfuse: agentContext?.langfuse,
|
|
573
|
+
});
|
|
562
574
|
if (eventDrivenMode) {
|
|
563
575
|
const schemaTools = schema.createSchemaOnlyTools(toolDefinitions);
|
|
564
576
|
const toolDefMap = new Map(toolDefinitions.map((def) => [def.name, def]));
|
|
@@ -578,6 +590,9 @@ class StandardGraph extends Graph {
|
|
|
578
590
|
const node = new ToolNode.ToolNode({
|
|
579
591
|
tools: allTools,
|
|
580
592
|
toolMap: allToolMap,
|
|
593
|
+
trace: traceToolNode,
|
|
594
|
+
runLangfuse: this.langfuse,
|
|
595
|
+
agentLangfuse: agentContext?.langfuse,
|
|
581
596
|
eventDrivenMode: true,
|
|
582
597
|
sessions: this.sessions,
|
|
583
598
|
toolDefinitions: toolDefMap,
|
|
@@ -616,6 +631,9 @@ class StandardGraph extends Graph {
|
|
|
616
631
|
const node = new ToolNode.ToolNode({
|
|
617
632
|
tools: allTraditionalTools,
|
|
618
633
|
toolMap: traditionalToolMap,
|
|
634
|
+
trace: traceToolNode,
|
|
635
|
+
runLangfuse: this.langfuse,
|
|
636
|
+
agentLangfuse: agentContext?.langfuse,
|
|
619
637
|
toolCallStepIds: this.toolCallStepIds,
|
|
620
638
|
errorHandler: (data, metadata) => StandardGraph.handleToolCallErrorStatic(this, data, metadata),
|
|
621
639
|
toolRegistry: agentContext?.toolRegistry,
|
|
@@ -703,6 +721,11 @@ class StandardGraph extends Graph {
|
|
|
703
721
|
toolsForBinding =
|
|
704
722
|
toolCache.partitionAndMarkOpenRouterToolCache(rawToolsForBinding, anthropicToolCache.makeIsDeferred(agentContext.toolDefinitions)) ?? rawToolsForBinding;
|
|
705
723
|
}
|
|
724
|
+
else if (agentContext.provider === _enum.Providers.BEDROCK &&
|
|
725
|
+
agentContext.clientOptions?.promptCache === true) {
|
|
726
|
+
toolsForBinding =
|
|
727
|
+
toolCache$1.partitionAndMarkBedrockToolCache(rawToolsForBinding, anthropicToolCache.makeIsDeferred(agentContext.toolDefinitions)) ?? rawToolsForBinding;
|
|
728
|
+
}
|
|
706
729
|
let model = this.overrideModel ??
|
|
707
730
|
init.initializeModel({
|
|
708
731
|
tools: toolsForBinding,
|
|
@@ -975,41 +998,56 @@ class StandardGraph extends Graph {
|
|
|
975
998
|
messageCount: finalMessages.length,
|
|
976
999
|
provider: agentContext.provider,
|
|
977
1000
|
}, invokeMeta, { force: true });
|
|
978
|
-
const
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
parentMessageId: config.configurable?.requestBody?.parentMessageId,
|
|
985
|
-
agentId,
|
|
986
|
-
agentName: agentContext.name,
|
|
987
|
-
}),
|
|
988
|
-
tags: ['librechat', 'agent'],
|
|
1001
|
+
const langfuse$1 = langfuseToolOutputTracing.resolveLangfuseConfig(this.langfuse, agentContext.langfuse);
|
|
1002
|
+
const traceMetadata = langfuse.createLangfuseTraceMetadata({
|
|
1003
|
+
messageId: this.runId,
|
|
1004
|
+
parentMessageId: config.configurable?.requestBody?.parentMessageId,
|
|
1005
|
+
agentId,
|
|
1006
|
+
agentName: agentContext.name,
|
|
989
1007
|
});
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1008
|
+
let langfuseHandler;
|
|
1009
|
+
let invokeConfig = {
|
|
1010
|
+
...config,
|
|
1011
|
+
metadata: {
|
|
1012
|
+
...(config.metadata ?? {}),
|
|
1013
|
+
...traceMetadata,
|
|
1014
|
+
},
|
|
1015
|
+
};
|
|
1016
|
+
instrumentation.initializeLangfuseTracing(langfuse$1);
|
|
1017
|
+
if (callbacks.findCallback(config.callbacks, langfuse.isLangfuseCallbackHandler) == null) {
|
|
1018
|
+
langfuseHandler = langfuse.createLangfuseHandler({
|
|
1019
|
+
langfuse: langfuse$1,
|
|
1020
|
+
userId: config.configurable?.user_id,
|
|
1021
|
+
sessionId: config.configurable?.thread_id,
|
|
1022
|
+
traceMetadata,
|
|
1023
|
+
tags: ['librechat', 'agent'],
|
|
1024
|
+
});
|
|
1025
|
+
if (langfuseHandler != null) {
|
|
1026
|
+
invokeConfig = {
|
|
1027
|
+
...invokeConfig,
|
|
1028
|
+
callbacks: callbacks.appendCallbacks(invokeConfig.callbacks, [
|
|
1029
|
+
langfuseHandler,
|
|
1030
|
+
]),
|
|
1031
|
+
};
|
|
994
1032
|
}
|
|
995
|
-
|
|
1033
|
+
}
|
|
996
1034
|
try {
|
|
997
|
-
result = await invoke.attemptInvoke({
|
|
1035
|
+
result = await langfuseToolOutputTracing.withLangfuseToolOutputTracingConfig(this.langfuse, () => invoke.attemptInvoke({
|
|
998
1036
|
model: (this.overrideModel ?? model),
|
|
999
1037
|
messages: finalMessages,
|
|
1000
1038
|
provider: agentContext.provider,
|
|
1001
1039
|
context: this,
|
|
1002
|
-
}, invokeConfig);
|
|
1040
|
+
}, invokeConfig), agentContext.langfuse);
|
|
1003
1041
|
}
|
|
1004
1042
|
catch (primaryError) {
|
|
1005
|
-
result = await invoke.tryFallbackProviders({
|
|
1043
|
+
result = await langfuseToolOutputTracing.withLangfuseToolOutputTracingConfig(this.langfuse, () => invoke.tryFallbackProviders({
|
|
1006
1044
|
fallbacks,
|
|
1007
1045
|
tools: agentContext.tools,
|
|
1008
1046
|
messages: finalMessages,
|
|
1009
1047
|
config: invokeConfig,
|
|
1010
1048
|
primaryError,
|
|
1011
1049
|
context: this,
|
|
1012
|
-
});
|
|
1050
|
+
}), agentContext.langfuse);
|
|
1013
1051
|
}
|
|
1014
1052
|
finally {
|
|
1015
1053
|
await langfuse.disposeLangfuseHandler(langfuseHandler);
|
|
@@ -1167,6 +1205,7 @@ class StandardGraph extends Graph {
|
|
|
1167
1205
|
parentHandlerRegistry: getParentHandlerRegistry,
|
|
1168
1206
|
parentRunId: this.runId ?? '',
|
|
1169
1207
|
parentAgentId: agentContext.agentId,
|
|
1208
|
+
langfuse: this.langfuse,
|
|
1170
1209
|
tokenCounter: agentContext.tokenCounter,
|
|
1171
1210
|
maxDepth: effectiveSubagentDepth,
|
|
1172
1211
|
createChildGraph: (input) => {
|