@librechat/agents 3.7.15 → 3.7.17
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 +91 -0
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/agents/projection.cjs +2 -1
- package/dist/cjs/agents/projection.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +47 -6
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/graphs/MultiAgentGraph.cjs +20 -7
- package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
- package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs +1 -1
- package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
- package/dist/cjs/llm/preempt.cjs +1 -10
- package/dist/cjs/llm/preempt.cjs.map +1 -1
- package/dist/cjs/main.cjs +23 -3
- package/dist/cjs/messages/contextPruning.cjs +1 -1
- package/dist/cjs/messages/contextPruning.cjs.map +1 -1
- package/dist/cjs/messages/core.cjs +29 -1
- package/dist/cjs/messages/core.cjs.map +1 -1
- package/dist/cjs/messages/fading.cjs +122 -0
- package/dist/cjs/messages/fading.cjs.map +1 -0
- package/dist/cjs/messages/format.cjs +1 -1
- package/dist/cjs/messages/index.cjs +1 -0
- package/dist/cjs/messages/prune.cjs +364 -236
- package/dist/cjs/messages/prune.cjs.map +1 -1
- package/dist/cjs/run.cjs +27 -0
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/session/AgentSession.cjs +213 -8
- package/dist/cjs/session/AgentSession.cjs.map +1 -1
- package/dist/cjs/session/JsonlSessionStore.cjs +41 -0
- package/dist/cjs/session/JsonlSessionStore.cjs.map +1 -1
- package/dist/cjs/session/index.cjs +1 -1
- package/dist/cjs/stream.cjs +1 -1
- package/dist/cjs/summarization/node.cjs +1 -1
- package/dist/cjs/tools/ToolNode.cjs +1 -1
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs +2 -0
- package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
- package/dist/cjs/tools/subagent/SubagentReplay.cjs +2 -1
- package/dist/cjs/tools/subagent/SubagentReplay.cjs.map +1 -1
- package/dist/cjs/utils/errors.cjs +3 -1
- package/dist/cjs/utils/errors.cjs.map +1 -1
- package/dist/cjs/utils/index.cjs +1 -1
- package/dist/cjs/utils/truncation.cjs +9 -0
- package/dist/cjs/utils/truncation.cjs.map +1 -1
- package/dist/esm/agents/AgentContext.mjs +92 -1
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/agents/projection.mjs +2 -1
- package/dist/esm/agents/projection.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +47 -6
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/graphs/MultiAgentGraph.mjs +20 -7
- package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
- package/dist/esm/llm/anthropic/utils/message_inputs.mjs +1 -1
- package/dist/esm/llm/openai/utils/index.mjs +2 -2
- package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
- package/dist/esm/llm/preempt.mjs +1 -10
- package/dist/esm/llm/preempt.mjs.map +1 -1
- package/dist/esm/main.mjs +6 -5
- package/dist/esm/messages/contextPruning.mjs +1 -1
- package/dist/esm/messages/contextPruning.mjs.map +1 -1
- package/dist/esm/messages/core.mjs +29 -2
- package/dist/esm/messages/core.mjs.map +1 -1
- package/dist/esm/messages/fading.mjs +108 -0
- package/dist/esm/messages/fading.mjs.map +1 -0
- package/dist/esm/messages/format.mjs +1 -1
- package/dist/esm/messages/index.mjs +1 -0
- package/dist/esm/messages/prune.mjs +363 -235
- package/dist/esm/messages/prune.mjs.map +1 -1
- package/dist/esm/run.mjs +27 -0
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/session/AgentSession.mjs +213 -8
- package/dist/esm/session/AgentSession.mjs.map +1 -1
- package/dist/esm/session/JsonlSessionStore.mjs +41 -0
- package/dist/esm/session/JsonlSessionStore.mjs.map +1 -1
- package/dist/esm/session/index.mjs +1 -1
- package/dist/esm/stream.mjs +1 -1
- package/dist/esm/summarization/node.mjs +1 -1
- package/dist/esm/tools/ToolNode.mjs +1 -1
- package/dist/esm/tools/subagent/SubagentExecutor.mjs +2 -0
- package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
- package/dist/esm/tools/subagent/SubagentReplay.mjs +2 -1
- package/dist/esm/tools/subagent/SubagentReplay.mjs.map +1 -1
- package/dist/esm/utils/errors.mjs +3 -1
- package/dist/esm/utils/errors.mjs.map +1 -1
- package/dist/esm/utils/index.mjs +1 -1
- package/dist/esm/utils/truncation.mjs +7 -1
- package/dist/esm/utils/truncation.mjs.map +1 -1
- package/dist/types/agents/AgentContext.d.ts +32 -1
- package/dist/types/agents/projection.d.ts +3 -1
- package/dist/types/graphs/Graph.d.ts +14 -1
- package/dist/types/graphs/MultiAgentGraph.d.ts +7 -0
- package/dist/types/messages/contextPruning.d.ts +2 -0
- package/dist/types/messages/core.d.ts +2 -0
- package/dist/types/messages/fading.d.ts +81 -0
- package/dist/types/messages/index.d.ts +1 -0
- package/dist/types/messages/prune.d.ts +71 -24
- package/dist/types/run.d.ts +16 -0
- package/dist/types/session/AgentSession.d.ts +15 -0
- package/dist/types/session/JsonlSessionStore.d.ts +4 -1
- package/dist/types/session/types.d.ts +9 -0
- package/dist/types/tools/subagent/SubagentReplay.d.ts +3 -1
- package/dist/types/types/graph.d.ts +23 -0
- package/dist/types/types/run.d.ts +10 -0
- package/dist/types/utils/truncation.d.ts +9 -0
- package/package.json +1 -1
- package/src/agents/AgentContext.ts +175 -1
- package/src/agents/projection.ts +4 -0
- package/src/graphs/Graph.ts +97 -11
- package/src/graphs/MultiAgentGraph.ts +54 -6
- package/src/llm/openai/utils/index.ts +3 -1
- package/src/llm/preempt.ts +4 -17
- package/src/messages/contextPruning.ts +7 -1
- package/src/messages/core.ts +52 -0
- package/src/messages/fading.ts +301 -0
- package/src/messages/index.ts +1 -0
- package/src/messages/prune.ts +719 -507
- package/src/run.ts +52 -0
- package/src/session/AgentSession.ts +397 -8
- package/src/session/JsonlSessionStore.ts +71 -0
- package/src/session/types.ts +10 -0
- package/src/tools/subagent/SubagentExecutor.ts +6 -0
- package/src/tools/subagent/SubagentReplay.ts +15 -2
- package/src/types/graph.ts +25 -0
- package/src/types/run.ts +10 -0
- package/src/utils/errors.ts +17 -1
- package/src/utils/truncation.ts +25 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { calculateMaxToolCallInputChars, calculateMaxToolResultChars } from "../utils/truncation.mjs";
|
|
2
|
+
//#region src/messages/fading.ts
|
|
3
|
+
const FADING_TIER_VERSION = 1;
|
|
4
|
+
const PRESSURE_THRESHOLD_MASKING = .8;
|
|
5
|
+
const FADING_MIN_BUDGET_TOKENS = 170;
|
|
6
|
+
const MASKED_RESULT_MIN_CHARS = 300;
|
|
7
|
+
const MASKED_RESULT_CAP_RATIO = .1;
|
|
8
|
+
const PRESSURE_BAND_RUNGS = [
|
|
9
|
+
[.99, 4],
|
|
10
|
+
[.9, 2],
|
|
11
|
+
[.85, 1]
|
|
12
|
+
];
|
|
13
|
+
function floorBudgetTokens(window) {
|
|
14
|
+
return Math.min(170, window);
|
|
15
|
+
}
|
|
16
|
+
function createFadingTier(window) {
|
|
17
|
+
return {
|
|
18
|
+
v: 1,
|
|
19
|
+
budgetTokens: window,
|
|
20
|
+
masked: false
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function isFadingTier(value) {
|
|
24
|
+
if (typeof value !== "object" || value === null) return false;
|
|
25
|
+
const { v, budgetTokens, masked, latched } = value;
|
|
26
|
+
return v === 1 && typeof budgetTokens === "number" && Number.isFinite(budgetTokens) && budgetTokens > 0 && typeof masked === "boolean" && (latched === void 0 || latched === true);
|
|
27
|
+
}
|
|
28
|
+
function maxFadingRung(window) {
|
|
29
|
+
const floor = floorBudgetTokens(window);
|
|
30
|
+
if (!(floor > 0)) return 0;
|
|
31
|
+
return Math.max(0, Math.ceil(Math.log2(window / floor)));
|
|
32
|
+
}
|
|
33
|
+
function fadingBudgetTokens(window, rung) {
|
|
34
|
+
return Math.max(floorBudgetTokens(window), Math.floor(window / 2 ** rung));
|
|
35
|
+
}
|
|
36
|
+
function seedFadingTier(window, seed) {
|
|
37
|
+
if (!isFadingTier(seed)) return createFadingTier(window);
|
|
38
|
+
const budgetTokens = Math.max(floorBudgetTokens(window), Math.min(seed.budgetTokens, window));
|
|
39
|
+
if (!(seed.latched === true || seed.masked || budgetTokens !== seed.budgetTokens || budgetTokens < window)) return createFadingTier(window);
|
|
40
|
+
return {
|
|
41
|
+
v: 1,
|
|
42
|
+
budgetTokens,
|
|
43
|
+
masked: seed.masked,
|
|
44
|
+
latched: true
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function fadingRungForResultChars(window, targetChars, maxToolResultChars) {
|
|
48
|
+
const deepest = maxFadingRung(window);
|
|
49
|
+
for (let rung = 0; rung < deepest; rung++) {
|
|
50
|
+
const windowResultChars = calculateMaxToolResultChars(fadingBudgetTokens(window, rung));
|
|
51
|
+
if ((maxToolResultChars == null ? windowResultChars : Math.min(windowResultChars, maxToolResultChars)) <= targetChars) return rung;
|
|
52
|
+
}
|
|
53
|
+
return deepest;
|
|
54
|
+
}
|
|
55
|
+
function fadingRungForBudget(window, rawTokens, maxToolResultChars, toolExchangeWidth = 1) {
|
|
56
|
+
if (!(rawTokens > 0)) return 0;
|
|
57
|
+
const targetChars = Math.floor(rawTokens) * 4;
|
|
58
|
+
const width = Math.max(1, Math.floor(toolExchangeWidth));
|
|
59
|
+
const deepest = maxFadingRung(window);
|
|
60
|
+
for (let rung = 0; rung < deepest; rung++) {
|
|
61
|
+
const budgetTokens = fadingBudgetTokens(window, rung);
|
|
62
|
+
const windowResultChars = calculateMaxToolResultChars(budgetTokens);
|
|
63
|
+
if (width * ((maxToolResultChars == null ? windowResultChars : Math.min(windowResultChars, maxToolResultChars)) + calculateMaxToolCallInputChars(budgetTokens)) <= targetChars) return rung;
|
|
64
|
+
}
|
|
65
|
+
return deepest;
|
|
66
|
+
}
|
|
67
|
+
function fadingRungForExchangeChars(window, targetChars, maxToolResultChars) {
|
|
68
|
+
const deepest = maxFadingRung(window);
|
|
69
|
+
for (let rung = 0; rung < deepest; rung++) {
|
|
70
|
+
const budgetTokens = fadingBudgetTokens(window, rung);
|
|
71
|
+
const windowResultChars = calculateMaxToolResultChars(budgetTokens);
|
|
72
|
+
if ((maxToolResultChars == null ? windowResultChars : Math.min(windowResultChars, maxToolResultChars)) + calculateMaxToolCallInputChars(budgetTokens) <= targetChars) return rung;
|
|
73
|
+
}
|
|
74
|
+
return deepest;
|
|
75
|
+
}
|
|
76
|
+
function resolveFadingCaps(tier, maxToolResultChars) {
|
|
77
|
+
const { budgetTokens } = tier;
|
|
78
|
+
const windowResultChars = calculateMaxToolResultChars(budgetTokens);
|
|
79
|
+
const resultChars = maxToolResultChars != null ? Math.min(windowResultChars, maxToolResultChars) : windowResultChars;
|
|
80
|
+
return {
|
|
81
|
+
budgetTokens,
|
|
82
|
+
resultChars,
|
|
83
|
+
consumedChars: tier.masked ? Math.min(resultChars, Math.max(300, Math.floor(resultChars * MASKED_RESULT_CAP_RATIO))) : resultChars,
|
|
84
|
+
inputChars: calculateMaxToolCallInputChars(budgetTokens)
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function resolveFadingTier(tier, window, signals, maxToolResultChars) {
|
|
88
|
+
const fitRung = fadingRungForBudget(window, signals.effectiveRawTokens, maxToolResultChars, signals.toolExchangeWidth);
|
|
89
|
+
const bandRung = signals.summarizationEnabled ? 0 : PRESSURE_BAND_RUNGS.find(([threshold]) => signals.contextPressure >= threshold)?.[1] ?? 0;
|
|
90
|
+
const rung = Math.min(maxFadingRung(window), Math.max(fitRung + bandRung, signals.minRung ?? 0));
|
|
91
|
+
const budgetTokens = Math.min(tier.budgetTokens, fadingBudgetTokens(window, rung));
|
|
92
|
+
const masked = tier.masked || signals.contextPressure >= .8;
|
|
93
|
+
if (budgetTokens === tier.budgetTokens && masked === tier.masked) return tier;
|
|
94
|
+
return {
|
|
95
|
+
v: 1,
|
|
96
|
+
budgetTokens,
|
|
97
|
+
masked,
|
|
98
|
+
latched: true
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function isInformativeFadingTier(tier, window) {
|
|
102
|
+
if (tier == null) return false;
|
|
103
|
+
return tier.latched === true || tier.masked || window != null && window > 0 && tier.budgetTokens < window;
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
export { FADING_MIN_BUDGET_TOKENS, FADING_TIER_VERSION, MASKED_RESULT_MIN_CHARS, PRESSURE_THRESHOLD_MASKING, createFadingTier, fadingBudgetTokens, fadingRungForBudget, fadingRungForExchangeChars, fadingRungForResultChars, isFadingTier, isInformativeFadingTier, maxFadingRung, resolveFadingCaps, resolveFadingTier, seedFadingTier };
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=fading.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fading.mjs","names":[],"sources":["../../../src/messages/fading.ts"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { HARD_MAX_TOOL_RESULT_CHARS } from "../utils/truncation.mjs";
|
|
1
2
|
import { COMPACTION_SEMANTIC_INDEX_LIMITS } from "../common/constants.mjs";
|
|
2
3
|
import "../common/enum.mjs";
|
|
3
4
|
import "../common/index.mjs";
|
|
4
|
-
import { HARD_MAX_TOOL_RESULT_CHARS } from "../utils/truncation.mjs";
|
|
5
5
|
import { compactToolContent, getToolContentCharLength, isAtomicToolContentBlock, serializeStructuredValueBounded } from "../utils/toolContent.mjs";
|
|
6
6
|
import { hasBijectiveProviderContentPartMapping, inspectProviderMessageProvenance, inspectProviderSourceMessageIds, setFreshProviderMessageProvenance, setInvalidProviderMessageProvenance, setProviderMessageProvenance } from "./provenance.mjs";
|
|
7
7
|
import { toLangChainContent, toLangChainMessageFields } from "./langchain.mjs";
|