@librechat/agents 3.3.8 → 3.3.9
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 +47 -13
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs +35 -2
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/hitl/askUserQuestion.cjs +3 -2
- package/dist/cjs/hitl/askUserQuestion.cjs.map +1 -1
- package/dist/cjs/instrumentation.cjs +18 -48
- package/dist/cjs/instrumentation.cjs.map +1 -1
- package/dist/cjs/langfuse.cjs +174 -29
- package/dist/cjs/langfuse.cjs.map +1 -1
- package/dist/cjs/langfuseConfig.cjs +12 -0
- package/dist/cjs/langfuseConfig.cjs.map +1 -1
- package/dist/cjs/langfuseRuntimeContext.cjs +23 -2
- package/dist/cjs/langfuseRuntimeContext.cjs.map +1 -1
- package/dist/cjs/langfuseRuntimeScope.cjs +39 -8
- package/dist/cjs/langfuseRuntimeScope.cjs.map +1 -1
- package/dist/cjs/langfuseSpanRegistry.cjs +95 -0
- package/dist/cjs/langfuseSpanRegistry.cjs.map +1 -0
- package/dist/cjs/langfuseTraceShaping.cjs +121 -4
- package/dist/cjs/langfuseTraceShaping.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +39 -15
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/bedrock/utils/message_inputs.cjs +25 -5
- package/dist/cjs/llm/bedrock/utils/message_inputs.cjs.map +1 -1
- package/dist/cjs/llm/init.cjs +3 -3
- package/dist/cjs/llm/invoke.cjs +5 -5
- package/dist/cjs/llm/openai/index.cjs +1 -1
- package/dist/cjs/main.cjs +10 -10
- package/dist/cjs/messages/prune.cjs +13 -1
- package/dist/cjs/messages/prune.cjs.map +1 -1
- package/dist/cjs/prompts/activityLabel.cjs +24 -12
- package/dist/cjs/prompts/activityLabel.cjs.map +1 -1
- package/dist/cjs/run.cjs +47 -22
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/session/messageSerialization.cjs +6 -0
- package/dist/cjs/session/messageSerialization.cjs.map +1 -1
- package/dist/cjs/stream.cjs +21 -10
- package/dist/cjs/stream.cjs.map +1 -1
- package/dist/cjs/summarization/node.cjs +5 -0
- package/dist/cjs/summarization/node.cjs.map +1 -1
- package/dist/cjs/tools/ToolNode.cjs +253 -24
- package/dist/cjs/tools/ToolNode.cjs.map +1 -1
- package/dist/cjs/tools/handlers.cjs +1 -1
- package/dist/cjs/tools/search/tool.cjs +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +1 -1
- package/dist/cjs/utils/index.cjs +2 -2
- package/dist/esm/graphs/Graph.mjs +48 -14
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs +35 -2
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/hitl/askUserQuestion.mjs +3 -2
- package/dist/esm/hitl/askUserQuestion.mjs.map +1 -1
- package/dist/esm/instrumentation.mjs +18 -48
- package/dist/esm/instrumentation.mjs.map +1 -1
- package/dist/esm/langfuse.mjs +176 -28
- package/dist/esm/langfuse.mjs.map +1 -1
- package/dist/esm/langfuseConfig.mjs +10 -1
- package/dist/esm/langfuseConfig.mjs.map +1 -1
- package/dist/esm/langfuseRuntimeContext.mjs +21 -3
- package/dist/esm/langfuseRuntimeContext.mjs.map +1 -1
- package/dist/esm/langfuseRuntimeScope.mjs +39 -10
- package/dist/esm/langfuseRuntimeScope.mjs.map +1 -1
- package/dist/esm/langfuseSpanRegistry.mjs +91 -0
- package/dist/esm/langfuseSpanRegistry.mjs.map +1 -0
- package/dist/esm/langfuseTraceShaping.mjs +121 -4
- package/dist/esm/langfuseTraceShaping.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +39 -15
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/bedrock/utils/message_inputs.mjs +25 -5
- package/dist/esm/llm/bedrock/utils/message_inputs.mjs.map +1 -1
- package/dist/esm/llm/init.mjs +2 -2
- package/dist/esm/llm/invoke.mjs +5 -5
- package/dist/esm/llm/openai/index.mjs +1 -1
- package/dist/esm/main.mjs +8 -8
- package/dist/esm/messages/prune.mjs +13 -1
- package/dist/esm/messages/prune.mjs.map +1 -1
- package/dist/esm/prompts/activityLabel.mjs +24 -12
- package/dist/esm/prompts/activityLabel.mjs.map +1 -1
- package/dist/esm/run.mjs +47 -22
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/session/messageSerialization.mjs +6 -0
- package/dist/esm/session/messageSerialization.mjs.map +1 -1
- package/dist/esm/stream.mjs +21 -10
- package/dist/esm/stream.mjs.map +1 -1
- package/dist/esm/summarization/node.mjs +5 -0
- package/dist/esm/summarization/node.mjs.map +1 -1
- package/dist/esm/tools/ToolNode.mjs +254 -25
- package/dist/esm/tools/ToolNode.mjs.map +1 -1
- package/dist/esm/tools/handlers.mjs +1 -1
- package/dist/esm/tools/search/tool.mjs +1 -1
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +1 -1
- package/dist/esm/utils/index.mjs +2 -2
- package/dist/types/graphs/Graph.d.ts +19 -0
- package/dist/types/hitl/askUserQuestion.d.ts +11 -1
- package/dist/types/langfuse.d.ts +16 -8
- package/dist/types/langfuseConfig.d.ts +6 -0
- package/dist/types/langfuseRuntimeContext.d.ts +27 -1
- package/dist/types/langfuseRuntimeScope.d.ts +17 -2
- package/dist/types/langfuseSpanRegistry.d.ts +17 -0
- package/dist/types/langfuseTraceShaping.d.ts +2 -1
- package/dist/types/llm/anthropic/utils/message_inputs.d.ts +1 -0
- package/dist/types/session/types.d.ts +1 -0
- package/dist/types/tools/ToolNode.d.ts +7 -1
- package/dist/types/types/hitl.d.ts +8 -0
- package/dist/types/types/tools.d.ts +30 -0
- package/package.json +7 -4
- package/src/__tests__/stream.eagerArgsDivergence.test.ts +753 -0
- package/src/graphs/Graph.ts +69 -20
- package/src/graphs/MultiAgentGraph.ts +56 -2
- package/src/graphs/__tests__/composition.smoke.test.ts +4 -0
- package/src/hitl/askUserQuestion.ts +14 -1
- package/src/instrumentation.ts +35 -77
- package/src/langfuse.ts +320 -43
- package/src/langfuseConfig.ts +24 -0
- package/src/langfuseRuntimeContext.ts +43 -1
- package/src/langfuseRuntimeScope.ts +94 -21
- package/src/langfuseSpanRegistry.ts +131 -0
- package/src/langfuseTraceShaping.ts +194 -7
- package/src/llm/anthropic/utils/message_inputs.ts +70 -19
- package/src/llm/anthropic/utils/streaming-tool-input.test.ts +186 -11
- package/src/llm/bedrock/utils/message_inputs.test.ts +120 -4
- package/src/llm/bedrock/utils/message_inputs.ts +32 -7
- package/src/messages/prune.ts +12 -1
- package/src/prompts/activityLabel.ts +23 -6
- package/src/run.ts +76 -45
- package/src/scripts/activity-labels/captured.json +56 -0
- package/src/scripts/activity-labels/checks.cjs +205 -0
- package/src/scripts/activity-labels/corpus.cjs +473 -0
- package/src/scripts/activity-labels/report.cjs +203 -0
- package/src/scripts/activity-labels/rescore.cjs +102 -0
- package/src/scripts/activity-labels/run.ts +705 -0
- package/src/scripts/activity-labels/variants.ts +71 -0
- package/src/session/messageSerialization.ts +12 -1
- package/src/session/types.ts +1 -0
- package/src/specs/activity-label-prompt.test.ts +26 -10
- package/src/specs/agent-handoffs.test.ts +306 -0
- package/src/specs/langfuse-callbacks.test.ts +456 -0
- package/src/specs/langfuse-routing.integration.test.ts +138 -1
- package/src/specs/langfuse-span-registry.test.ts +70 -0
- package/src/specs/langfuse-trace-shaping.test.ts +294 -0
- package/src/specs/prune.test.ts +38 -1
- package/src/stream.ts +70 -6
- package/src/summarization/node.ts +5 -0
- package/src/tools/ToolNode.ts +400 -9
- package/src/tools/__tests__/ToolNode.invalidToolCalls.test.ts +757 -0
- package/src/tools/__tests__/hitl.test.ts +58 -0
- package/src/types/hitl.ts +8 -0
- package/src/types/tools.ts +35 -1
package/dist/cjs/stream.cjs
CHANGED
|
@@ -5,12 +5,12 @@ const require_toolContent = require("./utils/toolContent.cjs");
|
|
|
5
5
|
const require_ids = require("./messages/ids.cjs");
|
|
6
6
|
const require_events = require("./utils/events.cjs");
|
|
7
7
|
require("./messages/index.cjs");
|
|
8
|
-
const
|
|
8
|
+
const require_intentArg = require("./tools/intentArg.cjs");
|
|
9
|
+
const require_toolOutputReferences = require("./tools/toolOutputReferences.cjs");
|
|
9
10
|
const require_streamedToolCallSeals = require("./tools/streamedToolCallSeals.cjs");
|
|
10
11
|
const require_eagerEventExecution = require("./tools/eagerEventExecution.cjs");
|
|
11
12
|
const require_handlers = require("./tools/handlers.cjs");
|
|
12
|
-
const
|
|
13
|
-
const require_toolOutputReferences = require("./tools/toolOutputReferences.cjs");
|
|
13
|
+
const require_llm = require("./utils/llm.cjs");
|
|
14
14
|
//#region src/stream.ts
|
|
15
15
|
const LOCAL_CODING_BUNDLE_NAME_SET = new Set(require_enum.LOCAL_CODING_BUNDLE_NAMES);
|
|
16
16
|
/**
|
|
@@ -73,6 +73,7 @@ function isEagerExecutionExcludedTool(name, graph) {
|
|
|
73
73
|
if (name === "") return false;
|
|
74
74
|
const excluded = graph.eagerEventToolExecution?.excludeToolNames;
|
|
75
75
|
if (excluded != null && excluded.includes(name)) return true;
|
|
76
|
+
if (graph.eagerEventToolSuppressions?.has(name) === true) return true;
|
|
76
77
|
if (graph.codeSessionToolNames?.includes(name) === true) return true;
|
|
77
78
|
return graph.toolExecution?.sandbox?.statefulSessions === true && require_enum.CODE_EXECUTION_TOOLS.has(name);
|
|
78
79
|
}
|
|
@@ -424,7 +425,7 @@ function mergeToolCallArgsText(existing, incoming) {
|
|
|
424
425
|
return `${existing}${incoming}`;
|
|
425
426
|
}
|
|
426
427
|
function recordEagerToolCallChunks(args) {
|
|
427
|
-
const { graph, stepKey, toolCallChunks } = args;
|
|
428
|
+
const { graph, stepKey, toolCallChunks, seal } = args;
|
|
428
429
|
if (toolCallChunks == null || toolCallChunks.length === 0) return;
|
|
429
430
|
for (const toolCallChunk of toolCallChunks) {
|
|
430
431
|
const key = getEagerToolChunkKey(stepKey, toolCallChunk);
|
|
@@ -437,12 +438,17 @@ function recordEagerToolCallChunks(args) {
|
|
|
437
438
|
const id = incomingId ?? existing.id;
|
|
438
439
|
const name = incomingName ?? existing.name;
|
|
439
440
|
const incomingArgs = toolCallChunk.args ?? "";
|
|
441
|
+
const argsText = incomingArgs !== "" && incomingArgs.length > 1 && incomingArgs === existing.lastArgsFragment ? existing.argsText : mergeToolCallArgsText(existing.argsText, incomingArgs);
|
|
442
|
+
const index = getEagerToolChunkIndex(toolCallChunk) ?? existing.index;
|
|
443
|
+
const sealCoversChunk = seal != null && (seal.kind === "all" || seal.kind === "single" && (seal.id != null && seal.id === id || seal.index != null && seal.index === index));
|
|
440
444
|
const next = {
|
|
441
445
|
id,
|
|
442
446
|
name,
|
|
443
|
-
argsText
|
|
444
|
-
|
|
445
|
-
|
|
447
|
+
argsText,
|
|
448
|
+
rawArgsLength: (existing.rawArgsLength ?? 0) + incomingArgs.length,
|
|
449
|
+
index,
|
|
450
|
+
lastArgsFragment: incomingArgs !== "" ? incomingArgs : existing.lastArgsFragment,
|
|
451
|
+
sealedArgsFragment: sealCoversChunk && incomingArgs !== "" ? incomingArgs : existing.sealedArgsFragment
|
|
446
452
|
};
|
|
447
453
|
graph.eagerEventToolCallChunks.set(key, next);
|
|
448
454
|
}
|
|
@@ -468,7 +474,8 @@ function getStreamedReadyToolCalls(args) {
|
|
|
468
474
|
const isSealedExplicitly = seal?.kind === "single" && (seal.id != null && state.id === seal.id || seal.index != null && state.index === seal.index);
|
|
469
475
|
if (sealAll || seal?.kind === "all" || isSealedByLaterChunk || isSealedExplicitly) readyEntries.push({
|
|
470
476
|
key,
|
|
471
|
-
state
|
|
477
|
+
state,
|
|
478
|
+
sealedByAdapter: isSealedExplicitly || seal?.kind === "all"
|
|
472
479
|
});
|
|
473
480
|
}
|
|
474
481
|
pruneEagerToolCallChunkStates({
|
|
@@ -481,9 +488,12 @@ function getStreamedReadyToolCalls(args) {
|
|
|
481
488
|
stepKey,
|
|
482
489
|
clearStep: true
|
|
483
490
|
});
|
|
484
|
-
return readyEntries.sort((left, right) => (left.state.index ?? 0) - (right.state.index ?? 0)).flatMap(({ state }) => {
|
|
491
|
+
return readyEntries.sort((left, right) => (left.state.index ?? 0) - (right.state.index ?? 0)).flatMap(({ state, sealedByAdapter }) => {
|
|
485
492
|
const args = require_eagerEventExecution.coerceRecordArgs(state.argsText);
|
|
486
493
|
if (args == null) return [];
|
|
494
|
+
const isCanonicalAccumulation = state.rawArgsLength != null && state.argsText.length === state.rawArgsLength;
|
|
495
|
+
const isAuthoritativeRestatement = sealedByAdapter && state.sealedArgsFragment != null && state.sealedArgsFragment === state.argsText;
|
|
496
|
+
if (!isCanonicalAccumulation && !isAuthoritativeRestatement) return [];
|
|
487
497
|
return [{
|
|
488
498
|
id: state.id,
|
|
489
499
|
name: state.name ?? "",
|
|
@@ -681,7 +691,8 @@ var ChatModelStreamHandler = class {
|
|
|
681
691
|
if (canStreamEager) recordEagerToolCallChunks({
|
|
682
692
|
graph,
|
|
683
693
|
stepKey,
|
|
684
|
-
toolCallChunks: chunk.tool_call_chunks
|
|
694
|
+
toolCallChunks: chunk.tool_call_chunks,
|
|
695
|
+
seal: streamedToolCallSeal
|
|
685
696
|
});
|
|
686
697
|
await require_handlers.handleToolCallChunks({
|
|
687
698
|
graph,
|