@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
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
const require_langfuseConfig = require("../langfuseConfig.cjs");
|
|
2
2
|
const require_langfuseRuntimeScope = require("../langfuseRuntimeScope.cjs");
|
|
3
3
|
const require_langfuse = require("../langfuse.cjs");
|
|
4
|
-
const require_langfuseToolOutputTracing = require("../langfuseToolOutputTracing.cjs");
|
|
5
|
-
const require_callbacks = require("../utils/callbacks.cjs");
|
|
6
4
|
const require_constants = require("../common/constants.cjs");
|
|
7
5
|
const require_enum = require("../common/enum.cjs");
|
|
8
6
|
require("../common/index.cjs");
|
|
7
|
+
const require_langfuseToolOutputTracing = require("../langfuseToolOutputTracing.cjs");
|
|
8
|
+
const require_callbacks = require("../utils/callbacks.cjs");
|
|
9
9
|
const require_truncation = require("../utils/truncation.cjs");
|
|
10
10
|
const require_toolContent = require("../utils/toolContent.cjs");
|
|
11
11
|
const require_tokens = require("../utils/tokens.cjs");
|
|
12
|
-
const require_preempt = require("../llm/preempt.cjs");
|
|
13
12
|
const require_instrumentation = require("../instrumentation.cjs");
|
|
14
13
|
const require_cache = require("../messages/cache.cjs");
|
|
15
14
|
const require_core = require("../messages/core.cjs");
|
|
@@ -27,14 +26,15 @@ const require_handoffCue = require("../messages/handoffCue.cjs");
|
|
|
27
26
|
const require_reducer = require("../messages/reducer.cjs");
|
|
28
27
|
const require_recency = require("../messages/recency.cjs");
|
|
29
28
|
require("../messages/index.cjs");
|
|
30
|
-
const require_graph = require("../utils/graph.cjs");
|
|
31
|
-
const require_llm = require("../utils/llm.cjs");
|
|
32
|
-
const require_handlers = require("../tools/handlers.cjs");
|
|
33
29
|
const require_toolOutputReferences = require("../tools/toolOutputReferences.cjs");
|
|
30
|
+
const require_toolCache = require("../llm/bedrock/toolCache.cjs");
|
|
31
|
+
const require_preempt = require("../llm/preempt.cjs");
|
|
32
|
+
const require_handlers = require("../tools/handlers.cjs");
|
|
33
|
+
const require_llm = require("../utils/llm.cjs");
|
|
34
|
+
const require_graph = require("../utils/graph.cjs");
|
|
34
35
|
const require_events$1 = require("../events.cjs");
|
|
35
36
|
const require_run = require("../utils/run.cjs");
|
|
36
37
|
require("../utils/index.cjs");
|
|
37
|
-
const require_toolCache = require("../llm/bedrock/toolCache.cjs");
|
|
38
38
|
const require_init = require("../llm/init.cjs");
|
|
39
39
|
const require_invoke = require("../llm/invoke.cjs");
|
|
40
40
|
const require_contextOverflowRecovery = require("../llm/contextOverflowRecovery.cjs");
|
|
@@ -56,12 +56,12 @@ const require_node = require("../summarization/node.cjs");
|
|
|
56
56
|
const require_schema = require("../tools/schema.cjs");
|
|
57
57
|
const require_AgentContext = require("../agents/AgentContext.cjs");
|
|
58
58
|
const require_fake = require("../llm/fake.cjs");
|
|
59
|
+
let nanoid = require("nanoid");
|
|
59
60
|
let _langchain_core_messages = require("@langchain/core/messages");
|
|
60
61
|
let _langchain_langgraph = require("@langchain/langgraph");
|
|
61
62
|
let _langchain_core_tools = require("@langchain/core/tools");
|
|
62
|
-
let nanoid = require("nanoid");
|
|
63
|
-
let _langchain_core_errors = require("@langchain/core/errors");
|
|
64
63
|
let uuid = require("uuid");
|
|
64
|
+
let _langchain_core_errors = require("@langchain/core/errors");
|
|
65
65
|
//#region src/graphs/Graph.ts
|
|
66
66
|
const { AGENT, TOOLS, SUMMARIZE } = require_enum.GraphNodeKeys;
|
|
67
67
|
const EMPTY_PREEMPT_BOUNDARY = {
|
|
@@ -354,6 +354,15 @@ var Graph = class {
|
|
|
354
354
|
eagerEventToolUsageCountsByAgentId = /* @__PURE__ */ new Map();
|
|
355
355
|
eagerEventToolCallChunks = /* @__PURE__ */ new Map();
|
|
356
356
|
/**
|
|
357
|
+
* Per-run eager prestart circuit breaker, shared by reference with every
|
|
358
|
+
* ToolNode this graph compiles. When a prestarted execution's args turn
|
|
359
|
+
* out to differ from the final request, ToolNode records the tool name
|
|
360
|
+
* here and the stream handler stops prestarting that tool for the rest of
|
|
361
|
+
* the run — the retry then executes normally instead of re-diverging in a
|
|
362
|
+
* loop (LibreChat#14371).
|
|
363
|
+
*/
|
|
364
|
+
eagerEventToolSuppressions = /* @__PURE__ */ new Set();
|
|
365
|
+
/**
|
|
357
366
|
* Run-scoped execution backend for built-in code tools. Defaults to the
|
|
358
367
|
* remote Code API sandbox when unset.
|
|
359
368
|
*/
|
|
@@ -401,6 +410,7 @@ var Graph = class {
|
|
|
401
410
|
this.eagerEventToolExecutions.clear();
|
|
402
411
|
this.clearEagerEventToolUsageCounts();
|
|
403
412
|
this.eagerEventToolCallChunks.clear();
|
|
413
|
+
this.eagerEventToolSuppressions.clear();
|
|
404
414
|
this.toolExecution = void 0;
|
|
405
415
|
this.handlerDispatchedEventCounts.clear();
|
|
406
416
|
/**
|
|
@@ -525,6 +535,16 @@ var StandardGraph = class StandardGraph extends Graph {
|
|
|
525
535
|
originalToolContentCheckpointScope;
|
|
526
536
|
runId;
|
|
527
537
|
/**
|
|
538
|
+
* Identity used to stamp Langfuse runtime scopes and handlers (see
|
|
539
|
+
* `LangfuseRuntimeContext.runId`). Carries an opaque per-instance
|
|
540
|
+
* component: public run ids are unrestricted and may repeat across
|
|
541
|
+
* concurrently executing runs (retries, duplicate submissions,
|
|
542
|
+
* tenant-local message ids), and equal stamps would let those runs adopt
|
|
543
|
+
* each other's scopes. One graph instance = one execution's stamp, shared
|
|
544
|
+
* by the stream handler and every graph-level scope of that execution.
|
|
545
|
+
*/
|
|
546
|
+
langfuseScopeRunId;
|
|
547
|
+
/**
|
|
528
548
|
* Boundary between historical messages (loaded from conversation state)
|
|
529
549
|
* and messages produced during the current run. Set once in the state
|
|
530
550
|
* reducer when messages first arrive. Used by `getRunMessages()` and
|
|
@@ -596,6 +616,7 @@ var StandardGraph = class StandardGraph extends Graph {
|
|
|
596
616
|
constructor({ runId, signal, agents, langfuse, tokenCounter, indexTokenCountMap, calibrationRatio, subagentUsageSink, subagentScope, preemption }) {
|
|
597
617
|
super();
|
|
598
618
|
this.runId = runId;
|
|
619
|
+
this.langfuseScopeRunId = `${runId ?? "graph"}:${(0, nanoid.nanoid)()}`;
|
|
599
620
|
this.signal = signal;
|
|
600
621
|
this.langfuse = langfuse;
|
|
601
622
|
this.subagentUsageSink = subagentUsageSink;
|
|
@@ -629,6 +650,7 @@ var StandardGraph = class StandardGraph extends Graph {
|
|
|
629
650
|
this.eagerEventToolExecutions.clear();
|
|
630
651
|
this.clearEagerEventToolUsageCounts();
|
|
631
652
|
this.eagerEventToolCallChunks.clear();
|
|
653
|
+
this.eagerEventToolSuppressions.clear();
|
|
632
654
|
this.handlerDispatchedStepIds = require_graph.resetIfNotEmpty(this.handlerDispatchedStepIds, /* @__PURE__ */ new Set());
|
|
633
655
|
this.handlerDispatchedEventCounts = require_graph.resetIfNotEmpty(this.handlerDispatchedEventCounts, /* @__PURE__ */ new Map());
|
|
634
656
|
this.messageIdsByStepKey = require_graph.resetIfNotEmpty(this.messageIdsByStepKey, /* @__PURE__ */ new Map());
|
|
@@ -930,6 +952,7 @@ var StandardGraph = class StandardGraph extends Graph {
|
|
|
930
952
|
codeSessionToolNames: this.codeSessionToolNames,
|
|
931
953
|
eagerEventToolExecutions: this.eagerEventToolExecutions,
|
|
932
954
|
eagerEventToolUsageCount: this.getEagerEventToolUsageCount(agentContext?.agentId),
|
|
955
|
+
eagerEventToolSuppressions: this.eagerEventToolSuppressions,
|
|
933
956
|
toolExecution: this.toolExecution,
|
|
934
957
|
directToolNames: directToolNames.size > 0 ? directToolNames : void 0,
|
|
935
958
|
interruptingToolNames: this.interruptingToolNames != null && this.interruptingToolNames.length > 0 ? new Set(this.interruptingToolNames) : void 0,
|
|
@@ -1630,7 +1653,12 @@ var StandardGraph = class StandardGraph extends Graph {
|
|
|
1630
1653
|
...config,
|
|
1631
1654
|
metadata: {
|
|
1632
1655
|
...config.metadata ?? {},
|
|
1633
|
-
...traceMetadata
|
|
1656
|
+
...traceMetadata,
|
|
1657
|
+
/** Canonical agent identity, stamped OUTSIDE trace-metadata
|
|
1658
|
+
* filtering: `createLangfuseTraceMetadata` drops values over its
|
|
1659
|
+
* length cap, but scope trust (`isForeignScope`) needs the id
|
|
1660
|
+
* verbatim regardless of length. */
|
|
1661
|
+
agentId
|
|
1634
1662
|
}
|
|
1635
1663
|
};
|
|
1636
1664
|
require_instrumentation.initializeLangfuseTracing(langfuse);
|
|
@@ -1641,7 +1669,9 @@ var StandardGraph = class StandardGraph extends Graph {
|
|
|
1641
1669
|
sessionId: config.configurable?.thread_id,
|
|
1642
1670
|
traceMetadata,
|
|
1643
1671
|
tags: ["librechat", "agent"],
|
|
1644
|
-
traceIdSeed: langfuse?.deterministicTraceId === true ? this.runId : void 0
|
|
1672
|
+
traceIdSeed: langfuse?.deterministicTraceId === true ? this.runId : void 0,
|
|
1673
|
+
runId: this.langfuseScopeRunId,
|
|
1674
|
+
toolOutputTracing: require_langfuseConfig.hasToolOutputTracingConfig(this.langfuse, agentContext.langfuse) ? require_langfuseConfig.resolveToolOutputTracingConfig(this.langfuse, agentContext.langfuse) : void 0
|
|
1645
1675
|
});
|
|
1646
1676
|
if (langfuseHandler != null) invokeConfig = {
|
|
1647
1677
|
...invokeConfig,
|
|
@@ -1653,7 +1683,9 @@ var StandardGraph = class StandardGraph extends Graph {
|
|
|
1653
1683
|
if (preInvokeContextOverflowError != null) throw preInvokeContextOverflowError;
|
|
1654
1684
|
result = await require_langfuseRuntimeScope.withLangfuseRuntimeScope(require_langfuseRuntimeScope.resolveLangfuseRuntimeScope({
|
|
1655
1685
|
runLangfuse: this.langfuse,
|
|
1656
|
-
langfuseOverlay: agentContext.langfuse
|
|
1686
|
+
langfuseOverlay: agentContext.langfuse,
|
|
1687
|
+
runId: this.langfuseScopeRunId,
|
|
1688
|
+
agentId
|
|
1657
1689
|
}), () => require_invoke.attemptInvoke({
|
|
1658
1690
|
model: this.overrideModel ?? model,
|
|
1659
1691
|
messages: finalMessages,
|
|
@@ -1746,7 +1778,9 @@ var StandardGraph = class StandardGraph extends Graph {
|
|
|
1746
1778
|
try {
|
|
1747
1779
|
result = await require_langfuseRuntimeScope.withLangfuseRuntimeScope(require_langfuseRuntimeScope.resolveLangfuseRuntimeScope({
|
|
1748
1780
|
runLangfuse: this.langfuse,
|
|
1749
|
-
langfuseOverlay: agentContext.langfuse
|
|
1781
|
+
langfuseOverlay: agentContext.langfuse,
|
|
1782
|
+
runId: this.langfuseScopeRunId,
|
|
1783
|
+
agentId
|
|
1750
1784
|
}), () => require_invoke.tryFallbackProviders({
|
|
1751
1785
|
fallbacks,
|
|
1752
1786
|
tools: agentContext.tools,
|