@librechat/agents 3.6.14 → 3.6.16
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/README.md +41 -0
- package/dist/cjs/agents/AgentContext.cjs +1 -1
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +9 -7
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/llm/contextPressureMeter.cjs +8 -6
- package/dist/cjs/llm/contextPressureMeter.cjs.map +1 -1
- package/dist/cjs/llm/init.cjs +1 -0
- package/dist/cjs/llm/init.cjs.map +1 -1
- package/dist/cjs/llm/invoke.cjs +9 -2
- package/dist/cjs/llm/invoke.cjs.map +1 -1
- package/dist/cjs/llm/openai/index.cjs +1 -1
- package/dist/cjs/llm/prepareProviderRequest.cjs +6 -3
- package/dist/cjs/llm/prepareProviderRequest.cjs.map +1 -1
- package/dist/cjs/llm/providerRegistry.cjs +69 -0
- package/dist/cjs/llm/providerRegistry.cjs.map +1 -0
- package/dist/cjs/llm/providers.cjs +38 -25
- package/dist/cjs/llm/providers.cjs.map +1 -1
- package/dist/cjs/llm/request.cjs +6 -4
- package/dist/cjs/llm/request.cjs.map +1 -1
- package/dist/cjs/llm/truncation.cjs +2 -1
- package/dist/cjs/llm/truncation.cjs.map +1 -1
- package/dist/cjs/main.cjs +18 -15
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/messages/prune.cjs +8 -4
- package/dist/cjs/messages/prune.cjs.map +1 -1
- package/dist/cjs/provider-registration.cjs +4 -0
- package/dist/cjs/run.cjs +2 -2
- package/dist/cjs/stream.cjs +1 -1
- package/dist/cjs/stream.cjs.map +1 -1
- package/dist/cjs/summarization/node.cjs +2 -2
- package/dist/cjs/summarization/node.cjs.map +1 -1
- package/dist/cjs/utils/llm.cjs +6 -4
- package/dist/cjs/utils/llm.cjs.map +1 -1
- package/dist/cjs/utils/toolContent.cjs +2 -2
- package/dist/cjs/utils/toolContent.cjs.map +1 -1
- package/dist/esm/agents/AgentContext.mjs +1 -1
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +10 -8
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/llm/contextPressureMeter.mjs +8 -6
- package/dist/esm/llm/contextPressureMeter.mjs.map +1 -1
- package/dist/esm/llm/init.mjs +1 -0
- package/dist/esm/llm/init.mjs.map +1 -1
- package/dist/esm/llm/invoke.mjs +9 -2
- package/dist/esm/llm/invoke.mjs.map +1 -1
- package/dist/esm/llm/openai/index.mjs +1 -1
- package/dist/esm/llm/prepareProviderRequest.mjs +7 -4
- package/dist/esm/llm/prepareProviderRequest.mjs.map +1 -1
- package/dist/esm/llm/providerRegistry.mjs +64 -0
- package/dist/esm/llm/providerRegistry.mjs.map +1 -0
- package/dist/esm/llm/providers.mjs +36 -22
- package/dist/esm/llm/providers.mjs.map +1 -1
- package/dist/esm/llm/request.mjs +6 -4
- package/dist/esm/llm/request.mjs.map +1 -1
- package/dist/esm/llm/truncation.mjs +2 -1
- package/dist/esm/llm/truncation.mjs.map +1 -1
- package/dist/esm/main.mjs +12 -10
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/messages/prune.mjs +8 -4
- package/dist/esm/messages/prune.mjs.map +1 -1
- package/dist/esm/provider-registration.mjs +3 -0
- package/dist/esm/run.mjs +2 -2
- package/dist/esm/stream.mjs +1 -1
- package/dist/esm/stream.mjs.map +1 -1
- package/dist/esm/summarization/node.mjs +2 -2
- package/dist/esm/summarization/node.mjs.map +1 -1
- package/dist/esm/utils/llm.mjs +6 -4
- package/dist/esm/utils/llm.mjs.map +1 -1
- package/dist/esm/utils/toolContent.mjs +3 -3
- package/dist/esm/utils/toolContent.mjs.map +1 -1
- package/dist/types/agents/AgentContext.d.ts +5 -5
- package/dist/types/index.d.ts +2 -0
- package/dist/types/llm/contextOverflowRecovery.d.ts +2 -2
- package/dist/types/llm/init.d.ts +21 -14
- package/dist/types/llm/invoke.d.ts +5 -6
- package/dist/types/llm/prepareProviderRequest.d.ts +5 -6
- package/dist/types/llm/providerRegistry.d.ts +11 -0
- package/dist/types/llm/providers.d.ts +4 -5
- package/dist/types/llm/request.d.ts +2 -3
- package/dist/types/llm/truncation.d.ts +2 -2
- package/dist/types/messages/core.d.ts +1 -2
- package/dist/types/messages/format.d.ts +3 -3
- package/dist/types/messages/prune.d.ts +3 -2
- package/dist/types/provider-registration.d.ts +15 -0
- package/dist/types/stream.d.ts +1 -2
- package/dist/types/summarization/node.d.ts +1 -2
- package/dist/types/types/activityLabel.d.ts +3 -4
- package/dist/types/types/graph.d.ts +4 -5
- package/dist/types/types/llm.d.ts +54 -13
- package/dist/types/types/reasoningLabel.d.ts +2 -3
- package/dist/types/types/run.d.ts +3 -3
- package/dist/types/types/summarize.d.ts +2 -2
- package/dist/types/utils/errors.d.ts +3 -3
- package/dist/types/utils/llm.d.ts +4 -4
- package/dist/types/utils/llmConfig.d.ts +2 -2
- package/package.json +9 -1
- package/src/agents/AgentContext.ts +27 -26
- package/src/graphs/Graph.ts +14 -14
- package/src/index.ts +5 -0
- package/src/llm/contextOverflowRecovery.ts +2 -2
- package/src/llm/contextPressureMeter.ts +23 -13
- package/src/llm/init.ts +40 -17
- package/src/llm/invoke.ts +36 -21
- package/src/llm/prepareProviderRequest.ts +19 -18
- package/src/llm/providerRegistry.ts +134 -0
- package/src/llm/providers.ts +73 -30
- package/src/llm/request.ts +10 -6
- package/src/llm/truncation.ts +9 -3
- package/src/messages/core.ts +2 -2
- package/src/messages/format.ts +14 -16
- package/src/messages/prune.ts +22 -17
- package/src/provider-registration.ts +29 -0
- package/src/run.ts +1 -1
- package/src/session/AgentSession.ts +1 -1
- package/src/stream.ts +7 -8
- package/src/summarization/node.ts +7 -7
- package/src/types/activityLabel.ts +3 -4
- package/src/types/graph.ts +5 -5
- package/src/types/llm.ts +95 -13
- package/src/types/reasoningLabel.ts +2 -3
- package/src/types/run.ts +3 -3
- package/src/types/summarize.ts +2 -2
- package/src/utils/errors.ts +3 -3
- package/src/utils/llm.ts +22 -15
- package/src/utils/llmConfig.ts +4 -4
- package/src/utils/toolContent.ts +9 -3
package/src/utils/llm.ts
CHANGED
|
@@ -1,37 +1,44 @@
|
|
|
1
1
|
// src/utils/llm.ts
|
|
2
|
+
import type { ProviderName } from '@/types';
|
|
3
|
+
import { getProviderFamily } from '@/llm/providerRegistry';
|
|
2
4
|
import { Providers } from '@/common';
|
|
3
5
|
|
|
4
|
-
export function isOpenAILike(provider?:
|
|
6
|
+
export function isOpenAILike(provider?: ProviderName): boolean {
|
|
5
7
|
if (provider == null) {
|
|
6
8
|
return false;
|
|
7
9
|
}
|
|
8
10
|
return (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
getProviderFamily(provider) === 'openai' ||
|
|
12
|
+
(
|
|
13
|
+
[
|
|
14
|
+
Providers.OPENAI,
|
|
15
|
+
Providers.AZURE,
|
|
16
|
+
Providers.OPENROUTER,
|
|
17
|
+
Providers.XAI,
|
|
18
|
+
Providers.DEEPSEEK,
|
|
19
|
+
] as string[]
|
|
20
|
+
).includes(provider)
|
|
21
|
+
);
|
|
17
22
|
}
|
|
18
23
|
|
|
19
|
-
export function isGoogleLike(provider?:
|
|
24
|
+
export function isGoogleLike(provider?: ProviderName): boolean {
|
|
20
25
|
if (provider == null) {
|
|
21
26
|
return false;
|
|
22
27
|
}
|
|
23
|
-
return (
|
|
24
|
-
provider
|
|
28
|
+
return (
|
|
29
|
+
getProviderFamily(provider) === 'google' ||
|
|
30
|
+
([Providers.GOOGLE, Providers.VERTEXAI] as string[]).includes(provider)
|
|
25
31
|
);
|
|
26
32
|
}
|
|
27
33
|
|
|
28
34
|
/** Returns true for native Anthropic or Bedrock running a Claude model. */
|
|
29
35
|
export function isAnthropicLike(
|
|
30
|
-
provider?:
|
|
36
|
+
provider?: ProviderName,
|
|
31
37
|
clientOptions?: { model?: string }
|
|
32
38
|
): boolean {
|
|
33
|
-
|
|
34
|
-
if (provider === Providers.
|
|
39
|
+
const family = provider == null ? undefined : getProviderFamily(provider);
|
|
40
|
+
if (provider === Providers.ANTHROPIC || family === 'anthropic') return true;
|
|
41
|
+
if (provider === Providers.BEDROCK || family === 'bedrock') {
|
|
35
42
|
return (
|
|
36
43
|
clientOptions?.model == null ||
|
|
37
44
|
/claude/i.test(String(clientOptions.model))
|
package/src/utils/llmConfig.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type * as or from '@/llm/openrouter';
|
|
|
3
3
|
import type * as t from '@/types';
|
|
4
4
|
import { Providers } from '@/common';
|
|
5
5
|
|
|
6
|
-
export const llmConfigs: Record<string, t.
|
|
6
|
+
export const llmConfigs: Record<string, t.BuiltInLLMConfig | undefined> = {
|
|
7
7
|
[Providers.OPENAI]: {
|
|
8
8
|
provider: Providers.OPENAI,
|
|
9
9
|
model: 'gpt-4.1',
|
|
@@ -68,7 +68,7 @@ export const llmConfigs: Record<string, t.LLMConfig | undefined> = {
|
|
|
68
68
|
modelKwargs: {
|
|
69
69
|
max_tokens: 10000,
|
|
70
70
|
},
|
|
71
|
-
} as or.ChatOpenRouterCallOptions & t.
|
|
71
|
+
} as or.ChatOpenRouterCallOptions & t.BuiltInLLMConfig,
|
|
72
72
|
[Providers.AZURE]: {
|
|
73
73
|
provider: Providers.AZURE,
|
|
74
74
|
temperature: 0.7,
|
|
@@ -159,7 +159,7 @@ export const llmConfigs: Record<string, t.LLMConfig | undefined> = {
|
|
|
159
159
|
// location: 'global',
|
|
160
160
|
// thinkingBudget: -1,
|
|
161
161
|
// includeThoughts: true,
|
|
162
|
-
} as t.VertexAIClientOptions & t.
|
|
162
|
+
} as t.VertexAIClientOptions & t.BuiltInLLMConfig,
|
|
163
163
|
[Providers.GOOGLE]: {
|
|
164
164
|
provider: Providers.GOOGLE,
|
|
165
165
|
model: 'gemini-2.5-flash',
|
|
@@ -194,7 +194,7 @@ export const llmConfigs: Record<string, t.LLMConfig | undefined> = {
|
|
|
194
194
|
},
|
|
195
195
|
};
|
|
196
196
|
|
|
197
|
-
export function getLLMConfig(provider: string): t.
|
|
197
|
+
export function getLLMConfig(provider: string): t.BuiltInLLMConfig {
|
|
198
198
|
const config = llmConfigs[provider];
|
|
199
199
|
if (config === undefined) {
|
|
200
200
|
throw new Error(`Unsupported provider: ${provider}`);
|
package/src/utils/toolContent.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isProxy } from 'node:util/types';
|
|
1
|
+
import { isArrayBuffer, isDate, isProxy } from 'node:util/types';
|
|
2
2
|
import { ToolMessage, type BaseMessage } from '@langchain/core/messages';
|
|
3
3
|
import {
|
|
4
4
|
HARD_MAX_TOTAL_TOOL_OUTPUT_SIZE,
|
|
@@ -151,11 +151,17 @@ function jsonStringLength(
|
|
|
151
151
|
|
|
152
152
|
type NativeDateRead = { matched: true; time: number } | { matched: false };
|
|
153
153
|
|
|
154
|
+
/**
|
|
155
|
+
* `isArrayBuffer` reads the internal slot natively (no user code, cross-realm safe) and
|
|
156
|
+
* costs nothing for the plain objects that make up almost all content; the getter's
|
|
157
|
+
* throw path was the expensive part, so it only runs once the brand is already known.
|
|
158
|
+
*/
|
|
154
159
|
function readNativeArrayBufferByteLength(value: unknown): number | undefined {
|
|
155
160
|
if (
|
|
156
161
|
value == null ||
|
|
157
162
|
typeof value !== 'object' ||
|
|
158
|
-
NATIVE_ARRAY_BUFFER_BYTE_LENGTH_GETTER == null
|
|
163
|
+
NATIVE_ARRAY_BUFFER_BYTE_LENGTH_GETTER == null ||
|
|
164
|
+
!isArrayBuffer(value)
|
|
159
165
|
) {
|
|
160
166
|
return undefined;
|
|
161
167
|
}
|
|
@@ -167,7 +173,7 @@ function readNativeArrayBufferByteLength(value: unknown): number | undefined {
|
|
|
167
173
|
}
|
|
168
174
|
|
|
169
175
|
function readNativeDate(value: unknown): NativeDateRead {
|
|
170
|
-
if (value == null || typeof value !== 'object') {
|
|
176
|
+
if (value == null || typeof value !== 'object' || !isDate(value)) {
|
|
171
177
|
return { matched: false };
|
|
172
178
|
}
|
|
173
179
|
try {
|