@librechat/agents 2.4.322 → 3.0.0-rc2

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.
Files changed (266) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +218 -0
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -0
  3. package/dist/cjs/common/enum.cjs +14 -5
  4. package/dist/cjs/common/enum.cjs.map +1 -1
  5. package/dist/cjs/events.cjs +10 -6
  6. package/dist/cjs/events.cjs.map +1 -1
  7. package/dist/cjs/graphs/Graph.cjs +309 -212
  8. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  9. package/dist/cjs/graphs/MultiAgentGraph.cjs +422 -0
  10. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -0
  11. package/dist/cjs/llm/anthropic/index.cjs +54 -9
  12. package/dist/cjs/llm/anthropic/index.cjs.map +1 -1
  13. package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
  14. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +52 -6
  15. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  16. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs +22 -2
  17. package/dist/cjs/llm/anthropic/utils/message_outputs.cjs.map +1 -1
  18. package/dist/cjs/llm/anthropic/utils/tools.cjs +29 -0
  19. package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -0
  20. package/dist/cjs/llm/google/index.cjs +144 -0
  21. package/dist/cjs/llm/google/index.cjs.map +1 -0
  22. package/dist/cjs/llm/google/utils/common.cjs +477 -0
  23. package/dist/cjs/llm/google/utils/common.cjs.map +1 -0
  24. package/dist/cjs/llm/ollama/index.cjs +67 -0
  25. package/dist/cjs/llm/ollama/index.cjs.map +1 -0
  26. package/dist/cjs/llm/ollama/utils.cjs +158 -0
  27. package/dist/cjs/llm/ollama/utils.cjs.map +1 -0
  28. package/dist/cjs/llm/openai/index.cjs +389 -3
  29. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  30. package/dist/cjs/llm/openai/utils/index.cjs +672 -0
  31. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -0
  32. package/dist/cjs/llm/providers.cjs +15 -15
  33. package/dist/cjs/llm/providers.cjs.map +1 -1
  34. package/dist/cjs/llm/text.cjs +14 -3
  35. package/dist/cjs/llm/text.cjs.map +1 -1
  36. package/dist/cjs/llm/vertexai/index.cjs +330 -0
  37. package/dist/cjs/llm/vertexai/index.cjs.map +1 -0
  38. package/dist/cjs/main.cjs +11 -0
  39. package/dist/cjs/main.cjs.map +1 -1
  40. package/dist/cjs/run.cjs +120 -81
  41. package/dist/cjs/run.cjs.map +1 -1
  42. package/dist/cjs/stream.cjs +85 -51
  43. package/dist/cjs/stream.cjs.map +1 -1
  44. package/dist/cjs/tools/ToolNode.cjs +10 -4
  45. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  46. package/dist/cjs/tools/handlers.cjs +119 -13
  47. package/dist/cjs/tools/handlers.cjs.map +1 -1
  48. package/dist/cjs/tools/search/anthropic.cjs +40 -0
  49. package/dist/cjs/tools/search/anthropic.cjs.map +1 -0
  50. package/dist/cjs/tools/search/firecrawl.cjs +55 -9
  51. package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
  52. package/dist/cjs/tools/search/format.cjs +6 -6
  53. package/dist/cjs/tools/search/format.cjs.map +1 -1
  54. package/dist/cjs/tools/search/rerankers.cjs +7 -29
  55. package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
  56. package/dist/cjs/tools/search/search.cjs +86 -16
  57. package/dist/cjs/tools/search/search.cjs.map +1 -1
  58. package/dist/cjs/tools/search/tool.cjs +4 -2
  59. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  60. package/dist/cjs/tools/search/utils.cjs +1 -1
  61. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  62. package/dist/cjs/utils/events.cjs +31 -0
  63. package/dist/cjs/utils/events.cjs.map +1 -0
  64. package/dist/cjs/utils/title.cjs +57 -21
  65. package/dist/cjs/utils/title.cjs.map +1 -1
  66. package/dist/cjs/utils/tokens.cjs +54 -7
  67. package/dist/cjs/utils/tokens.cjs.map +1 -1
  68. package/dist/esm/agents/AgentContext.mjs +216 -0
  69. package/dist/esm/agents/AgentContext.mjs.map +1 -0
  70. package/dist/esm/common/enum.mjs +15 -6
  71. package/dist/esm/common/enum.mjs.map +1 -1
  72. package/dist/esm/events.mjs +10 -6
  73. package/dist/esm/events.mjs.map +1 -1
  74. package/dist/esm/graphs/Graph.mjs +311 -214
  75. package/dist/esm/graphs/Graph.mjs.map +1 -1
  76. package/dist/esm/graphs/MultiAgentGraph.mjs +420 -0
  77. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -0
  78. package/dist/esm/llm/anthropic/index.mjs +54 -9
  79. package/dist/esm/llm/anthropic/index.mjs.map +1 -1
  80. package/dist/esm/llm/anthropic/types.mjs.map +1 -1
  81. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +52 -6
  82. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  83. package/dist/esm/llm/anthropic/utils/message_outputs.mjs +22 -2
  84. package/dist/esm/llm/anthropic/utils/message_outputs.mjs.map +1 -1
  85. package/dist/esm/llm/anthropic/utils/tools.mjs +27 -0
  86. package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -0
  87. package/dist/esm/llm/google/index.mjs +142 -0
  88. package/dist/esm/llm/google/index.mjs.map +1 -0
  89. package/dist/esm/llm/google/utils/common.mjs +471 -0
  90. package/dist/esm/llm/google/utils/common.mjs.map +1 -0
  91. package/dist/esm/llm/ollama/index.mjs +65 -0
  92. package/dist/esm/llm/ollama/index.mjs.map +1 -0
  93. package/dist/esm/llm/ollama/utils.mjs +155 -0
  94. package/dist/esm/llm/ollama/utils.mjs.map +1 -0
  95. package/dist/esm/llm/openai/index.mjs +388 -4
  96. package/dist/esm/llm/openai/index.mjs.map +1 -1
  97. package/dist/esm/llm/openai/utils/index.mjs +666 -0
  98. package/dist/esm/llm/openai/utils/index.mjs.map +1 -0
  99. package/dist/esm/llm/providers.mjs +5 -5
  100. package/dist/esm/llm/providers.mjs.map +1 -1
  101. package/dist/esm/llm/text.mjs +14 -3
  102. package/dist/esm/llm/text.mjs.map +1 -1
  103. package/dist/esm/llm/vertexai/index.mjs +328 -0
  104. package/dist/esm/llm/vertexai/index.mjs.map +1 -0
  105. package/dist/esm/main.mjs +6 -5
  106. package/dist/esm/main.mjs.map +1 -1
  107. package/dist/esm/run.mjs +121 -83
  108. package/dist/esm/run.mjs.map +1 -1
  109. package/dist/esm/stream.mjs +87 -54
  110. package/dist/esm/stream.mjs.map +1 -1
  111. package/dist/esm/tools/ToolNode.mjs +10 -4
  112. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  113. package/dist/esm/tools/handlers.mjs +119 -15
  114. package/dist/esm/tools/handlers.mjs.map +1 -1
  115. package/dist/esm/tools/search/anthropic.mjs +37 -0
  116. package/dist/esm/tools/search/anthropic.mjs.map +1 -0
  117. package/dist/esm/tools/search/firecrawl.mjs +55 -9
  118. package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
  119. package/dist/esm/tools/search/format.mjs +7 -7
  120. package/dist/esm/tools/search/format.mjs.map +1 -1
  121. package/dist/esm/tools/search/rerankers.mjs +7 -29
  122. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  123. package/dist/esm/tools/search/search.mjs +86 -16
  124. package/dist/esm/tools/search/search.mjs.map +1 -1
  125. package/dist/esm/tools/search/tool.mjs +4 -2
  126. package/dist/esm/tools/search/tool.mjs.map +1 -1
  127. package/dist/esm/tools/search/utils.mjs +1 -1
  128. package/dist/esm/tools/search/utils.mjs.map +1 -1
  129. package/dist/esm/utils/events.mjs +29 -0
  130. package/dist/esm/utils/events.mjs.map +1 -0
  131. package/dist/esm/utils/title.mjs +57 -22
  132. package/dist/esm/utils/title.mjs.map +1 -1
  133. package/dist/esm/utils/tokens.mjs +54 -8
  134. package/dist/esm/utils/tokens.mjs.map +1 -1
  135. package/dist/types/agents/AgentContext.d.ts +91 -0
  136. package/dist/types/common/enum.d.ts +15 -6
  137. package/dist/types/events.d.ts +5 -4
  138. package/dist/types/graphs/Graph.d.ts +64 -67
  139. package/dist/types/graphs/MultiAgentGraph.d.ts +37 -0
  140. package/dist/types/graphs/index.d.ts +1 -0
  141. package/dist/types/llm/anthropic/index.d.ts +11 -0
  142. package/dist/types/llm/anthropic/types.d.ts +9 -3
  143. package/dist/types/llm/anthropic/utils/message_inputs.d.ts +1 -1
  144. package/dist/types/llm/anthropic/utils/output_parsers.d.ts +4 -4
  145. package/dist/types/llm/anthropic/utils/tools.d.ts +3 -0
  146. package/dist/types/llm/google/index.d.ts +13 -0
  147. package/dist/types/llm/google/types.d.ts +32 -0
  148. package/dist/types/llm/google/utils/common.d.ts +19 -0
  149. package/dist/types/llm/google/utils/tools.d.ts +10 -0
  150. package/dist/types/llm/google/utils/zod_to_genai_parameters.d.ts +14 -0
  151. package/dist/types/llm/ollama/index.d.ts +7 -0
  152. package/dist/types/llm/ollama/utils.d.ts +7 -0
  153. package/dist/types/llm/openai/index.d.ts +72 -3
  154. package/dist/types/llm/openai/types.d.ts +10 -0
  155. package/dist/types/llm/openai/utils/index.d.ts +20 -0
  156. package/dist/types/llm/text.d.ts +1 -1
  157. package/dist/types/llm/vertexai/index.d.ts +293 -0
  158. package/dist/types/messages/reducer.d.ts +9 -0
  159. package/dist/types/run.d.ts +19 -12
  160. package/dist/types/scripts/ant_web_search.d.ts +1 -0
  161. package/dist/types/scripts/args.d.ts +2 -1
  162. package/dist/types/scripts/handoff-test.d.ts +1 -0
  163. package/dist/types/scripts/multi-agent-conditional.d.ts +1 -0
  164. package/dist/types/scripts/multi-agent-parallel.d.ts +1 -0
  165. package/dist/types/scripts/multi-agent-sequence.d.ts +1 -0
  166. package/dist/types/scripts/multi-agent-supervisor.d.ts +1 -0
  167. package/dist/types/scripts/multi-agent-test.d.ts +1 -0
  168. package/dist/types/scripts/test-custom-prompt-key.d.ts +2 -0
  169. package/dist/types/scripts/test-handoff-input.d.ts +2 -0
  170. package/dist/types/scripts/test-multi-agent-list-handoff.d.ts +2 -0
  171. package/dist/types/stream.d.ts +10 -3
  172. package/dist/types/tools/CodeExecutor.d.ts +2 -2
  173. package/dist/types/tools/ToolNode.d.ts +1 -1
  174. package/dist/types/tools/handlers.d.ts +17 -4
  175. package/dist/types/tools/search/anthropic.d.ts +16 -0
  176. package/dist/types/tools/search/firecrawl.d.ts +15 -0
  177. package/dist/types/tools/search/rerankers.d.ts +0 -1
  178. package/dist/types/tools/search/types.d.ts +30 -9
  179. package/dist/types/types/graph.d.ts +129 -15
  180. package/dist/types/types/llm.d.ts +24 -10
  181. package/dist/types/types/run.d.ts +46 -8
  182. package/dist/types/types/stream.d.ts +16 -2
  183. package/dist/types/types/tools.d.ts +1 -1
  184. package/dist/types/utils/events.d.ts +6 -0
  185. package/dist/types/utils/title.d.ts +2 -1
  186. package/dist/types/utils/tokens.d.ts +24 -0
  187. package/package.json +37 -17
  188. package/src/agents/AgentContext.ts +315 -0
  189. package/src/common/enum.ts +14 -5
  190. package/src/events.ts +24 -13
  191. package/src/graphs/Graph.ts +495 -312
  192. package/src/graphs/MultiAgentGraph.ts +498 -0
  193. package/src/graphs/index.ts +2 -1
  194. package/src/llm/anthropic/Jacob_Lee_Resume_2023.pdf +0 -0
  195. package/src/llm/anthropic/index.ts +78 -13
  196. package/src/llm/anthropic/llm.spec.ts +491 -115
  197. package/src/llm/anthropic/types.ts +39 -3
  198. package/src/llm/anthropic/utils/message_inputs.ts +67 -11
  199. package/src/llm/anthropic/utils/message_outputs.ts +21 -2
  200. package/src/llm/anthropic/utils/output_parsers.ts +25 -6
  201. package/src/llm/anthropic/utils/tools.ts +29 -0
  202. package/src/llm/google/index.ts +218 -0
  203. package/src/llm/google/types.ts +43 -0
  204. package/src/llm/google/utils/common.ts +646 -0
  205. package/src/llm/google/utils/tools.ts +160 -0
  206. package/src/llm/google/utils/zod_to_genai_parameters.ts +86 -0
  207. package/src/llm/ollama/index.ts +89 -0
  208. package/src/llm/ollama/utils.ts +193 -0
  209. package/src/llm/openai/index.ts +600 -14
  210. package/src/llm/openai/types.ts +24 -0
  211. package/src/llm/openai/utils/index.ts +912 -0
  212. package/src/llm/openai/utils/isReasoningModel.test.ts +90 -0
  213. package/src/llm/providers.ts +10 -9
  214. package/src/llm/text.ts +26 -7
  215. package/src/llm/vertexai/index.ts +360 -0
  216. package/src/messages/reducer.ts +80 -0
  217. package/src/run.ts +181 -112
  218. package/src/scripts/ant_web_search.ts +158 -0
  219. package/src/scripts/args.ts +12 -8
  220. package/src/scripts/cli4.ts +29 -21
  221. package/src/scripts/cli5.ts +29 -21
  222. package/src/scripts/code_exec.ts +54 -23
  223. package/src/scripts/code_exec_files.ts +48 -17
  224. package/src/scripts/code_exec_simple.ts +46 -27
  225. package/src/scripts/handoff-test.ts +135 -0
  226. package/src/scripts/image.ts +52 -20
  227. package/src/scripts/multi-agent-conditional.ts +220 -0
  228. package/src/scripts/multi-agent-example-output.md +110 -0
  229. package/src/scripts/multi-agent-parallel.ts +341 -0
  230. package/src/scripts/multi-agent-sequence.ts +212 -0
  231. package/src/scripts/multi-agent-supervisor.ts +361 -0
  232. package/src/scripts/multi-agent-test.ts +186 -0
  233. package/src/scripts/search.ts +1 -9
  234. package/src/scripts/simple.ts +25 -10
  235. package/src/scripts/test-custom-prompt-key.ts +145 -0
  236. package/src/scripts/test-handoff-input.ts +110 -0
  237. package/src/scripts/test-multi-agent-list-handoff.ts +258 -0
  238. package/src/scripts/tools.ts +48 -18
  239. package/src/specs/anthropic.simple.test.ts +150 -34
  240. package/src/specs/azure.simple.test.ts +325 -0
  241. package/src/specs/openai.simple.test.ts +140 -33
  242. package/src/specs/openrouter.simple.test.ts +107 -0
  243. package/src/specs/prune.test.ts +4 -9
  244. package/src/specs/reasoning.test.ts +80 -44
  245. package/src/specs/token-memoization.test.ts +39 -0
  246. package/src/stream.test.ts +94 -0
  247. package/src/stream.ts +139 -60
  248. package/src/tools/ToolNode.ts +21 -7
  249. package/src/tools/handlers.ts +192 -18
  250. package/src/tools/search/anthropic.ts +51 -0
  251. package/src/tools/search/firecrawl.ts +69 -20
  252. package/src/tools/search/format.ts +6 -8
  253. package/src/tools/search/rerankers.ts +7 -40
  254. package/src/tools/search/search.ts +97 -16
  255. package/src/tools/search/tool.ts +5 -2
  256. package/src/tools/search/types.ts +30 -10
  257. package/src/tools/search/utils.ts +1 -1
  258. package/src/types/graph.ts +315 -103
  259. package/src/types/llm.ts +25 -12
  260. package/src/types/run.ts +51 -13
  261. package/src/types/stream.ts +22 -1
  262. package/src/types/tools.ts +16 -10
  263. package/src/utils/events.ts +32 -0
  264. package/src/utils/llmConfig.ts +19 -7
  265. package/src/utils/title.ts +104 -30
  266. package/src/utils/tokens.ts +69 -10
@@ -1,29 +1,23 @@
1
1
  import { ToolNode } from '@langchain/langgraph/prebuilt';
2
- import { START } from '@langchain/langgraph';
3
2
  import { Runnable, RunnableConfig } from '@langchain/core/runnables';
4
- import { SystemMessage } from '@langchain/core/messages';
5
- import type { BaseMessage, UsageMetadata } from '@langchain/core/messages';
6
- import type * as t from '@/types';
7
- import { Providers, GraphNodeKeys, Callback, ContentTypes } from '@/common';
3
+ import type { UsageMetadata, BaseMessage } from '@langchain/core/messages';
8
4
  import type { ToolCall } from '@langchain/core/messages/tool';
5
+ import type * as t from '@/types';
6
+ import { Providers } from '@/common';
9
7
  import { ToolNode as CustomToolNode } from '@/tools/ToolNode';
10
- import { createPruneMessages } from '@/messages';
8
+ import { AgentContext } from '@/agents/AgentContext';
11
9
  import { HandlerRegistry } from '@/events';
12
- export type GraphNode = GraphNodeKeys | typeof START;
13
- export type ClientCallback<T extends unknown[]> = (graph: StandardGraph, ...args: T) => void;
14
- export type ClientCallbacks = {
15
- [Callback.TOOL_ERROR]?: ClientCallback<[Error, string]>;
16
- [Callback.TOOL_START]?: ClientCallback<unknown[]>;
17
- [Callback.TOOL_END]?: ClientCallback<unknown[]>;
18
- };
19
- export type SystemCallbacks = {
20
- [K in keyof ClientCallbacks]: ClientCallbacks[K] extends ClientCallback<infer Args> ? (...args: Args) => void : never;
21
- };
22
- export declare abstract class Graph<T extends t.BaseGraphState = t.BaseGraphState, TNodeName extends string = string> {
10
+ export declare abstract class Graph<T extends t.BaseGraphState = t.BaseGraphState, _TNodeName extends string = string> {
23
11
  abstract resetValues(): void;
24
- abstract createGraphState(): t.GraphStateChannels<T>;
25
- abstract initializeTools(): CustomToolNode<T> | ToolNode<T>;
26
- abstract initializeModel(): Runnable;
12
+ abstract initializeTools({ currentTools, currentToolMap, }: {
13
+ currentTools?: t.GraphTools;
14
+ currentToolMap?: t.ToolMap;
15
+ }): CustomToolNode<T> | ToolNode<T>;
16
+ abstract initializeModel({ currentModel, tools, clientOptions, }: {
17
+ currentModel?: t.ChatModel;
18
+ tools?: t.GraphTools;
19
+ clientOptions?: t.ClientOptions;
20
+ }): Runnable;
27
21
  abstract getRunMessages(): BaseMessage[] | undefined;
28
22
  abstract getContentParts(): t.MessageContentComplex[] | undefined;
29
23
  abstract generateStepId(stepKey: string): [string, number];
@@ -32,17 +26,12 @@ export declare abstract class Graph<T extends t.BaseGraphState = t.BaseGraphStat
32
26
  abstract checkKeyList(keyList: (string | number | undefined)[]): boolean;
33
27
  abstract getStepIdByKey(stepKey: string, index?: number): string;
34
28
  abstract getRunStep(stepId: string): t.RunStep | undefined;
35
- abstract dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): string;
36
- abstract dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): void;
37
- abstract dispatchMessageDelta(id: string, delta: t.MessageDelta): void;
38
- abstract dispatchReasoningDelta(stepId: string, delta: t.ReasoningDelta): void;
39
- abstract handleToolCallCompleted(data: t.ToolEndData, metadata?: Record<string, unknown>): void;
40
- abstract createCallModel(): (state: T, config?: RunnableConfig) => Promise<Partial<T>>;
41
- abstract createWorkflow(): t.CompiledWorkflow<T>;
42
- lastToken?: string;
43
- tokenTypeSwitch?: 'reasoning' | 'content';
44
- reasoningKey: 'reasoning_content' | 'reasoning';
45
- currentTokenType: ContentTypes.TEXT | ContentTypes.THINK | 'think_and_text';
29
+ abstract dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): Promise<string>;
30
+ abstract dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): Promise<void>;
31
+ abstract dispatchMessageDelta(id: string, delta: t.MessageDelta): Promise<void>;
32
+ abstract dispatchReasoningDelta(stepId: string, delta: t.ReasoningDelta): Promise<void>;
33
+ abstract handleToolCallCompleted(data: t.ToolEndData, metadata?: Record<string, unknown>, omitOutput?: boolean): Promise<void>;
34
+ abstract createCallModel(agentId?: string, currentModel?: t.ChatModel): (state: T, config?: RunnableConfig) => Promise<Partial<T>>;
46
35
  messageStepHasToolCalls: Map<string, boolean>;
47
36
  messageIdsByStepKey: Map<string, string>;
48
37
  prelimMessageIdsByStepKey: Map<string, string>;
@@ -51,34 +40,27 @@ export declare abstract class Graph<T extends t.BaseGraphState = t.BaseGraphStat
51
40
  stepKeyIds: Map<string, string[]>;
52
41
  contentIndexMap: Map<string, number>;
53
42
  toolCallStepIds: Map<string, string>;
54
- currentUsage: Partial<UsageMetadata> | undefined;
55
- indexTokenCountMap: Record<string, number | undefined>;
56
- maxContextTokens: number | undefined;
57
- pruneMessages?: ReturnType<typeof createPruneMessages>;
58
- /** The amount of time that should pass before another consecutive API call */
59
- streamBuffer: number | undefined;
60
- tokenCounter?: t.TokenCounter;
61
43
  signal?: AbortSignal;
62
- }
63
- export declare class StandardGraph extends Graph<t.BaseGraphState, GraphNode> {
64
- private graphState;
65
- clientOptions: t.ClientOptions;
66
- boundModel?: Runnable;
67
- /** The last recorded timestamp that a stream API call was invoked */
68
- lastStreamCall: number | undefined;
44
+ /** Set of invoked tool call IDs from non-message run steps completed mid-run, if any */
45
+ invokedToolIds?: Set<string>;
69
46
  handlerRegistry: HandlerRegistry | undefined;
70
- systemMessage: SystemMessage | undefined;
47
+ }
48
+ export declare class StandardGraph extends Graph<t.BaseGraphState, t.GraphNode> {
49
+ overrideModel?: t.ChatModel;
50
+ /** Optional compile options passed into workflow.compile() */
51
+ compileOptions?: t.CompileOptions | undefined;
71
52
  messages: BaseMessage[];
72
53
  runId: string | undefined;
73
- tools?: t.GenericTool[];
74
- toolMap?: t.ToolMap;
75
54
  startIndex: number;
76
- provider: Providers;
77
- toolEnd: boolean;
78
55
  signal?: AbortSignal;
79
- constructor({ runId, tools, signal, toolMap, provider, streamBuffer, instructions, reasoningKey, clientOptions, toolEnd, additional_instructions, }: t.StandardGraphInput);
56
+ /** Map of agent contexts by agent ID */
57
+ agentContexts: Map<string, AgentContext>;
58
+ /** Default agent ID to use */
59
+ defaultAgentId: string;
60
+ constructor({ runId, signal, agents, tokenCounter, indexTokenCountMap, }: t.StandardGraphInput);
80
61
  resetValues(keepContent?: boolean): void;
81
62
  getRunStep(stepId: string): t.RunStep | undefined;
63
+ getAgentContext(metadata: Record<string, unknown> | undefined): AgentContext;
82
64
  getStepKey(metadata: Record<string, unknown> | undefined): string;
83
65
  getStepIdByKey(stepKey: string, index?: number): string;
84
66
  generateStepId(stepKey: string): [string, number];
@@ -86,34 +68,49 @@ export declare class StandardGraph extends Graph<t.BaseGraphState, GraphNode> {
86
68
  checkKeyList(keyList: (string | number | undefined)[]): boolean;
87
69
  getRunMessages(): BaseMessage[] | undefined;
88
70
  getContentParts(): t.MessageContentComplex[] | undefined;
89
- createGraphState(): t.GraphStateChannels<t.BaseGraphState>;
90
- initializeTools(): CustomToolNode<t.BaseGraphState> | ToolNode<t.BaseGraphState>;
91
- initializeModel(): Runnable;
71
+ createSystemRunnable({ provider, clientOptions, instructions, additional_instructions, }: {
72
+ provider?: Providers;
73
+ clientOptions?: t.ClientOptions;
74
+ instructions?: string;
75
+ additional_instructions?: string;
76
+ }): t.SystemRunnable | undefined;
77
+ initializeTools({ currentTools, currentToolMap, }: {
78
+ currentTools?: t.GraphTools;
79
+ currentToolMap?: t.ToolMap;
80
+ }): CustomToolNode<t.BaseGraphState> | ToolNode<t.BaseGraphState>;
81
+ initializeModel({ provider, tools, clientOptions, }: {
82
+ provider: Providers;
83
+ tools?: t.GraphTools;
84
+ clientOptions?: t.ClientOptions;
85
+ }): Runnable;
92
86
  overrideTestModel(responses: string[], sleep?: number, toolCalls?: ToolCall[]): void;
93
- getNewModel({ clientOptions, omitOriginalOptions, }: {
87
+ getNewModel({ provider, clientOptions, }: {
88
+ provider: Providers;
94
89
  clientOptions?: t.ClientOptions;
95
- omitOriginalOptions?: Set<string>;
96
90
  }): t.ChatModelInstance;
97
- storeUsageMetadata(finalMessage?: BaseMessage): void;
98
- cleanupSignalListener(): void;
99
- createCallModel(): (state: t.BaseGraphState, config?: RunnableConfig) => Promise<Partial<t.BaseGraphState>>;
100
- createWorkflow(): t.CompiledWorkflow<t.BaseGraphState>;
91
+ getUsageMetadata(finalMessage?: BaseMessage): Partial<UsageMetadata> | undefined;
92
+ /** Execute model invocation with streaming support */
93
+ private attemptInvoke;
94
+ cleanupSignalListener(currentModel?: t.ChatModel): void;
95
+ createCallModel(agentId?: string, currentModel?: t.ChatModel): (state: t.BaseGraphState, config?: RunnableConfig) => Promise<Partial<t.BaseGraphState>>;
96
+ createAgentNode(agentId: string): t.CompiledAgentWorfklow;
97
+ createWorkflow(): t.CompiledStateWorkflow;
101
98
  /**
102
99
  * Dispatches a run step to the client, returns the step ID
103
100
  */
104
- dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): string;
105
- handleToolCallCompleted(data: t.ToolEndData, metadata?: Record<string, unknown>): void;
101
+ dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): Promise<string>;
102
+ handleToolCallCompleted(data: t.ToolEndData, metadata?: Record<string, unknown>, omitOutput?: boolean): Promise<void>;
106
103
  /**
107
104
  * Static version of handleToolCallError to avoid creating strong references
108
105
  * that prevent garbage collection
109
106
  */
110
- static handleToolCallErrorStatic(graph: StandardGraph, data: t.ToolErrorData, metadata?: Record<string, unknown>): void;
107
+ static handleToolCallErrorStatic(graph: StandardGraph, data: t.ToolErrorData, metadata?: Record<string, unknown>): Promise<void>;
111
108
  /**
112
109
  * Instance method that delegates to the static method
113
110
  * Kept for backward compatibility
114
111
  */
115
- handleToolCallError(data: t.ToolErrorData, metadata?: Record<string, unknown>): void;
116
- dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): void;
117
- dispatchMessageDelta(id: string, delta: t.MessageDelta): void;
118
- dispatchReasoningDelta: (stepId: string, delta: t.ReasoningDelta) => void;
112
+ handleToolCallError(data: t.ToolErrorData, metadata?: Record<string, unknown>): Promise<void>;
113
+ dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): Promise<void>;
114
+ dispatchMessageDelta(id: string, delta: t.MessageDelta): Promise<void>;
115
+ dispatchReasoningDelta: (stepId: string, delta: t.ReasoningDelta) => Promise<void>;
119
116
  }
@@ -0,0 +1,37 @@
1
+ import type * as t from '@/types';
2
+ import { StandardGraph } from './Graph';
3
+ /**
4
+ * MultiAgentGraph extends StandardGraph to support dynamic multi-agent workflows
5
+ * with handoffs, fan-in/fan-out, and other composable patterns
6
+ */
7
+ export declare class MultiAgentGraph extends StandardGraph {
8
+ private edges;
9
+ private startingNodes;
10
+ private directEdges;
11
+ private handoffEdges;
12
+ constructor(input: t.MultiAgentGraphInput);
13
+ /**
14
+ * Categorize edges into handoff and direct types
15
+ */
16
+ private categorizeEdges;
17
+ /**
18
+ * Analyze graph structure to determine starting nodes and connections
19
+ */
20
+ private analyzeGraph;
21
+ /**
22
+ * Create handoff tools for agents based on handoff edges only
23
+ */
24
+ private createHandoffTools;
25
+ /**
26
+ * Create handoff tools for an edge (handles multiple destinations)
27
+ */
28
+ private createHandoffToolsForEdge;
29
+ /**
30
+ * Create a complete agent subgraph (similar to createReactAgent)
31
+ */
32
+ private createAgentSubgraph;
33
+ /**
34
+ * Create the multi-agent workflow with dynamic handoffs
35
+ */
36
+ createWorkflow(): t.CompiledMultiAgentWorkflow;
37
+ }
@@ -1 +1,2 @@
1
1
  export * from './Graph';
2
+ export * from './MultiAgentGraph';
@@ -4,9 +4,15 @@ import type { BaseChatModelParams } from '@langchain/core/language_models/chat_m
4
4
  import type { BaseMessage, UsageMetadata } from '@langchain/core/messages';
5
5
  import type { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';
6
6
  import type { AnthropicInput } from '@langchain/anthropic';
7
+ import type { AnthropicMessageCreateParams, AnthropicStreamingMessageCreateParams } from '@/llm/anthropic/types';
7
8
  export type CustomAnthropicInput = AnthropicInput & {
8
9
  _lc_stream_delay?: number;
9
10
  } & BaseChatModelParams;
11
+ /**
12
+ * A type representing additional parameters that can be passed to the
13
+ * Anthropic API.
14
+ */
15
+ type Kwargs = Record<string, any>;
10
16
  export declare class CustomAnthropic extends ChatAnthropicMessages {
11
17
  _lc_stream_delay: number;
12
18
  private message_start;
@@ -14,6 +20,10 @@ export declare class CustomAnthropic extends ChatAnthropicMessages {
14
20
  private tools_in_params?;
15
21
  private emitted_usage?;
16
22
  constructor(fields?: CustomAnthropicInput);
23
+ /**
24
+ * Get the parameters used to invoke the model
25
+ */
26
+ invocationParams(options?: this['ParsedCallOptions']): Omit<AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams, 'messages'> & Kwargs;
17
27
  /**
18
28
  * Get stream usage as returned by this client's API response.
19
29
  * @returns The stream usage object.
@@ -23,3 +33,4 @@ export declare class CustomAnthropic extends ChatAnthropicMessages {
23
33
  private createGenerationChunk;
24
34
  _streamResponseChunks(messages: BaseMessage[], options: this['ParsedCallOptions'], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
25
35
  }
36
+ export {};
@@ -1,15 +1,15 @@
1
1
  import Anthropic from '@anthropic-ai/sdk';
2
2
  import { BindToolsInput } from '@langchain/core/language_models/chat_models';
3
+ export type AnthropicStreamUsage = Anthropic.Usage;
4
+ export type AnthropicMessageDeltaEvent = Anthropic.MessageDeltaEvent;
5
+ export type AnthropicMessageStartEvent = Anthropic.MessageStartEvent;
3
6
  export type AnthropicToolResponse = {
4
7
  type: 'tool_use';
5
8
  id: string;
6
9
  name: string;
7
10
  input: Record<string, any>;
8
11
  };
9
- export type AnthropicStreamUsage = Anthropic.Usage;
10
12
  export type AnthropicMessageParam = Anthropic.MessageParam;
11
- export type AnthropicMessageDeltaEvent = Anthropic.MessageDeltaEvent;
12
- export type AnthropicMessageStartEvent = Anthropic.MessageStartEvent;
13
13
  export type AnthropicMessageResponse = Anthropic.ContentBlock | AnthropicToolResponse;
14
14
  export type AnthropicMessageCreateParams = Anthropic.MessageCreateParamsNonStreaming;
15
15
  export type AnthropicStreamingMessageCreateParams = Anthropic.MessageCreateParamsStreaming;
@@ -28,4 +28,10 @@ export type AnthropicToolResultBlockParam = Anthropic.Messages.ToolResultBlockPa
28
28
  export type AnthropicDocumentBlockParam = Anthropic.Messages.DocumentBlockParam;
29
29
  export type AnthropicThinkingBlockParam = Anthropic.Messages.ThinkingBlockParam;
30
30
  export type AnthropicRedactedThinkingBlockParam = Anthropic.Messages.RedactedThinkingBlockParam;
31
+ export type AnthropicServerToolUseBlockParam = Anthropic.Messages.ServerToolUseBlockParam;
32
+ export type AnthropicWebSearchToolResultBlockParam = Anthropic.Messages.WebSearchToolResultBlockParam;
33
+ export type AnthropicWebSearchResultBlockParam = Anthropic.Messages.WebSearchResultBlockParam;
34
+ export type AnthropicSearchResultBlockParam = Anthropic.Beta.BetaSearchResultBlockParam;
35
+ export type AnthropicContentBlock = AnthropicTextBlockParam | AnthropicImageBlockParam | AnthropicToolUseBlockParam | AnthropicToolResultBlockParam | AnthropicDocumentBlockParam | AnthropicThinkingBlockParam | AnthropicRedactedThinkingBlockParam | AnthropicServerToolUseBlockParam | AnthropicWebSearchToolResultBlockParam | AnthropicWebSearchResultBlockParam;
36
+ export type ChatAnthropicContentBlock = AnthropicTextBlockParam | AnthropicImageBlockParam | AnthropicToolUseBlockParam | AnthropicToolResultBlockParam | AnthropicDocumentBlockParam | AnthropicThinkingBlockParam | AnthropicRedactedThinkingBlockParam | AnthropicServerToolUseBlockParam | AnthropicWebSearchToolResultBlockParam | AnthropicWebSearchResultBlockParam | AnthropicSearchResultBlockParam;
31
37
  export declare function isAnthropicImageBlockParam(block: unknown): block is AnthropicImageBlockParam;
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { type BaseMessage } from '@langchain/core/messages';
5
5
  import { ToolCall } from '@langchain/core/messages/tool';
6
- import type { AnthropicMessageCreateParams, AnthropicToolResponse } from '@/llm/anthropic/types';
6
+ import { AnthropicMessageCreateParams, AnthropicToolResponse } from '../types';
7
7
  export declare function _convertLangChainToolCallToAnthropic(toolCall: ToolCall): AnthropicToolResponse;
8
8
  /**
9
9
  * Formats messages as a prompt for the model.
@@ -1,9 +1,9 @@
1
- import { z } from 'zod';
2
1
  import { BaseLLMOutputParser } from '@langchain/core/output_parsers';
3
- import { JsonOutputKeyToolsParserParams } from '@langchain/core/output_parsers/openai_tools';
2
+ import { JsonOutputKeyToolsParserParamsInterop } from '@langchain/core/output_parsers/openai_tools';
4
3
  import { ChatGeneration } from '@langchain/core/outputs';
5
4
  import { ToolCall } from '@langchain/core/messages/tool';
6
- interface AnthropicToolsOutputParserParams<T extends Record<string, any>> extends JsonOutputKeyToolsParserParams<T> {
5
+ import { InteropZodType } from '@langchain/core/utils/types';
6
+ interface AnthropicToolsOutputParserParams<T extends Record<string, any>> extends JsonOutputKeyToolsParserParamsInterop<T> {
7
7
  }
8
8
  export declare class AnthropicToolsOutputParser<T extends Record<string, any> = Record<string, any>> extends BaseLLMOutputParser<T> {
9
9
  static lc_name(): string;
@@ -13,7 +13,7 @@ export declare class AnthropicToolsOutputParser<T extends Record<string, any> =
13
13
  keyName: string;
14
14
  /** Whether to return only the first tool call. */
15
15
  returnSingle: boolean;
16
- zodSchema?: z.ZodType<T>;
16
+ zodSchema?: InteropZodType<T>;
17
17
  constructor(params: AnthropicToolsOutputParserParams<T>);
18
18
  protected _validateResult(result: unknown): Promise<T>;
19
19
  parseResult(generations: ChatGeneration[]): Promise<T>;
@@ -0,0 +1,3 @@
1
+ import type { Anthropic } from '@anthropic-ai/sdk';
2
+ import { AnthropicToolChoice } from '../types.js';
3
+ export declare function handleToolChoice(toolChoice?: AnthropicToolChoice): Anthropic.Messages.ToolChoiceAuto | Anthropic.Messages.ToolChoiceAny | Anthropic.Messages.ToolChoiceTool | undefined;
@@ -0,0 +1,13 @@
1
+ import { ChatGenerationChunk } from '@langchain/core/outputs';
2
+ import { ChatGoogleGenerativeAI } from '@langchain/google-genai';
3
+ import type { GenerateContentRequest } from '@google/generative-ai';
4
+ import type { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';
5
+ import type { BaseMessage } from '@langchain/core/messages';
6
+ import type { GeminiGenerationConfig } from '@langchain/google-common';
7
+ import type { GoogleClientOptions } from '@/types';
8
+ export declare class CustomChatGoogleGenerativeAI extends ChatGoogleGenerativeAI {
9
+ thinkingConfig?: GeminiGenerationConfig['thinkingConfig'];
10
+ constructor(fields: GoogleClientOptions);
11
+ invocationParams(options?: this['ParsedCallOptions']): Omit<GenerateContentRequest, 'contents'>;
12
+ _streamResponseChunks(messages: BaseMessage[], options: this['ParsedCallOptions'], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
13
+ }
@@ -0,0 +1,32 @@
1
+ import { CodeExecutionTool, FunctionDeclarationsTool as GoogleGenerativeAIFunctionDeclarationsTool, GoogleSearchRetrievalTool } from '@google/generative-ai';
2
+ import { BindToolsInput } from '@langchain/core/language_models/chat_models';
3
+ export type GoogleGenerativeAIToolType = BindToolsInput | GoogleGenerativeAIFunctionDeclarationsTool | CodeExecutionTool | GoogleSearchRetrievalTool;
4
+ /** Enum for content modality types */
5
+ declare enum Modality {
6
+ MODALITY_UNSPECIFIED = "MODALITY_UNSPECIFIED",
7
+ TEXT = "TEXT",
8
+ IMAGE = "IMAGE",
9
+ VIDEO = "VIDEO",
10
+ AUDIO = "AUDIO",
11
+ DOCUMENT = "DOCUMENT"
12
+ }
13
+ /** Interface for modality token count */
14
+ interface ModalityTokenCount {
15
+ modality: Modality;
16
+ tokenCount: number;
17
+ }
18
+ /** Main interface for Gemini API usage metadata */
19
+ export interface GeminiApiUsageMetadata {
20
+ promptTokenCount?: number;
21
+ totalTokenCount?: number;
22
+ thoughtsTokenCount?: number;
23
+ candidatesTokenCount?: number;
24
+ toolUsePromptTokenCount?: number;
25
+ cachedContentTokenCount?: number;
26
+ promptTokensDetails: ModalityTokenCount[];
27
+ candidatesTokensDetails?: ModalityTokenCount[];
28
+ cacheTokensDetails?: ModalityTokenCount[];
29
+ toolUsePromptTokensDetails?: ModalityTokenCount[];
30
+ trafficType?: string;
31
+ }
32
+ export {};
@@ -0,0 +1,19 @@
1
+ import { POSSIBLE_ROLES, type Part, type Content, type EnhancedGenerateContentResponse, type FunctionDeclarationsTool as GoogleGenerativeAIFunctionDeclarationsTool } from '@google/generative-ai';
2
+ import { BaseMessage, UsageMetadata } from '@langchain/core/messages';
3
+ import { ChatGenerationChunk } from '@langchain/core/outputs';
4
+ import { GoogleGenerativeAIToolType } from '../types';
5
+ export declare function getMessageAuthor(message: BaseMessage): string;
6
+ /**
7
+ * Maps a message type to a Google Generative AI chat author.
8
+ * @param message The message to map.
9
+ * @param model The model to use for mapping.
10
+ * @returns The message type mapped to a Google Generative AI chat author.
11
+ */
12
+ export declare function convertAuthorToRole(author: string): (typeof POSSIBLE_ROLES)[number];
13
+ export declare function convertMessageContentToParts(message: BaseMessage, isMultimodalModel: boolean, previousMessages: BaseMessage[]): Part[];
14
+ export declare function convertBaseMessagesToContent(messages: BaseMessage[], isMultimodalModel: boolean, convertSystemMessageToHumanContent?: boolean): Content[] | undefined;
15
+ export declare function convertResponseContentToChatGenerationChunk(response: EnhancedGenerateContentResponse, extra: {
16
+ usageMetadata?: UsageMetadata | undefined;
17
+ index: number;
18
+ }): ChatGenerationChunk | null;
19
+ export declare function convertToGenerativeAITools(tools: GoogleGenerativeAIToolType[]): GoogleGenerativeAIFunctionDeclarationsTool[];
@@ -0,0 +1,10 @@
1
+ import { Tool as GenerativeAITool, ToolConfig } from '@google/generative-ai';
2
+ import { ToolChoice } from '@langchain/core/language_models/chat_models';
3
+ import { GoogleGenerativeAIToolType } from '../types';
4
+ export declare function convertToolsToGenAI(tools: GoogleGenerativeAIToolType[], extra?: {
5
+ toolChoice?: ToolChoice;
6
+ allowedFunctionNames?: string[];
7
+ }): {
8
+ tools: GenerativeAITool[];
9
+ toolConfig?: ToolConfig;
10
+ };
@@ -0,0 +1,14 @@
1
+ import { type FunctionDeclarationSchema as GenerativeAIFunctionDeclarationSchema, type SchemaType as FunctionDeclarationSchemaType } from '@google/generative-ai';
2
+ import { InteropZodType } from '@langchain/core/utils/types';
3
+ import { type JsonSchema7Type } from '@langchain/core/utils/json_schema';
4
+ export interface GenerativeAIJsonSchema extends Record<string, unknown> {
5
+ properties?: Record<string, GenerativeAIJsonSchema>;
6
+ type: FunctionDeclarationSchemaType;
7
+ }
8
+ export interface GenerativeAIJsonSchemaDirty extends GenerativeAIJsonSchema {
9
+ properties?: Record<string, GenerativeAIJsonSchemaDirty>;
10
+ additionalProperties?: boolean;
11
+ }
12
+ export declare function removeAdditionalProperties(obj: Record<string, any>): GenerativeAIJsonSchema;
13
+ export declare function schemaToGenerativeAIParameters<RunOutput extends Record<string, any> = Record<string, any>>(schema: InteropZodType<RunOutput> | JsonSchema7Type): GenerativeAIFunctionDeclarationSchema;
14
+ export declare function jsonSchemaToGeminiParameters(schema: Record<string, any>): GenerativeAIFunctionDeclarationSchema;
@@ -0,0 +1,7 @@
1
+ import { ChatGenerationChunk } from '@langchain/core/outputs';
2
+ import { ChatOllama as BaseChatOllama } from '@langchain/ollama';
3
+ import { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';
4
+ import type { BaseMessage } from '@langchain/core/messages';
5
+ export declare class ChatOllama extends BaseChatOllama {
6
+ _streamResponseChunks(messages: BaseMessage[], options: this['ParsedCallOptions'], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { AIMessageChunk, BaseMessage, UsageMetadata } from '@langchain/core/messages';
2
+ import type { Message as OllamaMessage } from 'ollama';
3
+ export declare function convertOllamaMessagesToLangChain(messages: OllamaMessage, extra?: {
4
+ responseMetadata?: Record<string, any>;
5
+ usageMetadata?: UsageMetadata;
6
+ }): AIMessageChunk;
7
+ export declare function convertToOllamaMessages(messages: BaseMessage[]): OllamaMessage[];
@@ -1,9 +1,35 @@
1
1
  import { AzureOpenAI as AzureOpenAIClient } from 'openai';
2
2
  import { ChatXAI as OriginalChatXAI } from '@langchain/xai';
3
+ import { ChatGenerationChunk } from '@langchain/core/outputs';
3
4
  import { ChatDeepSeek as OriginalChatDeepSeek } from '@langchain/deepseek';
5
+ import { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';
4
6
  import { OpenAIClient, ChatOpenAI as OriginalChatOpenAI, AzureChatOpenAI as OriginalAzureChatOpenAI } from '@langchain/openai';
5
- import type { OpenAICoreRequestOptions } from 'node_modules/@langchain/deepseek/node_modules/@langchain/openai';
7
+ import type { HeaderValue, HeadersLike } from './types';
8
+ import type { BindToolsInput } from '@langchain/core/language_models/chat_models';
9
+ import type { BaseMessage } from '@langchain/core/messages';
10
+ import type { ChatXAIInput } from '@langchain/xai';
6
11
  import type * as t from '@langchain/openai';
12
+ export declare function isHeaders(headers: unknown): headers is Headers;
13
+ export declare function normalizeHeaders(headers: HeadersLike): Record<string, HeaderValue | readonly HeaderValue[]>;
14
+ type OpenAICoreRequestOptions = OpenAIClient.RequestOptions;
15
+ /**
16
+ * Formats a tool in either OpenAI format, or LangChain structured tool format
17
+ * into an OpenAI tool format. If the tool is already in OpenAI format, return without
18
+ * any changes. If it is in LangChain structured tool format, convert it to OpenAI tool format
19
+ * using OpenAI's `zodFunction` util, falling back to `convertToOpenAIFunction` if the parameters
20
+ * returned from the `zodFunction` util are not defined.
21
+ *
22
+ * @param {BindToolsInput} tool The tool to convert to an OpenAI tool.
23
+ * @param {Object} [fields] Additional fields to add to the OpenAI tool.
24
+ * @returns {ToolDefinition} The inputted tool in OpenAI tool format.
25
+ */
26
+ export declare function _convertToOpenAITool(tool: BindToolsInput, fields?: {
27
+ /**
28
+ * If `true`, model output is guaranteed to exactly match the JSON Schema
29
+ * provided in the function definition.
30
+ */
31
+ strict?: boolean;
32
+ }): OpenAIClient.ChatCompletionTool;
7
33
  export declare class CustomOpenAIClient extends OpenAIClient {
8
34
  abortHandler?: () => void;
9
35
  fetchWithTimeout(url: RequestInfo, init: RequestInit | undefined, ms: number, controller: AbortController): Promise<Response>;
@@ -12,19 +38,62 @@ export declare class CustomAzureOpenAIClient extends AzureOpenAIClient {
12
38
  abortHandler?: () => void;
13
39
  fetchWithTimeout(url: RequestInfo, init: RequestInit | undefined, ms: number, controller: AbortController): Promise<Response>;
14
40
  }
41
+ /** @ts-expect-error We are intentionally overriding `getReasoningParams` */
15
42
  export declare class ChatOpenAI extends OriginalChatOpenAI<t.ChatOpenAICallOptions> {
16
43
  get exposedClient(): CustomOpenAIClient;
17
- protected _getClientOptions(options?: t.OpenAICoreRequestOptions): t.OpenAICoreRequestOptions;
44
+ protected _getClientOptions(options?: OpenAICoreRequestOptions): OpenAICoreRequestOptions;
45
+ /**
46
+ * Returns backwards compatible reasoning parameters from constructor params and call options
47
+ * @internal
48
+ */
49
+ getReasoningParams(options?: this['ParsedCallOptions']): OpenAIClient.Reasoning | undefined;
50
+ protected _getReasoningParams(options?: this['ParsedCallOptions']): OpenAIClient.Reasoning | undefined;
51
+ _streamResponseChunks(messages: BaseMessage[], options: this['ParsedCallOptions'], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
52
+ _streamResponseChunks2(messages: BaseMessage[], options: this['ParsedCallOptions'], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
18
53
  }
54
+ /** @ts-expect-error We are intentionally overriding `getReasoningParams` */
19
55
  export declare class AzureChatOpenAI extends OriginalAzureChatOpenAI {
20
56
  get exposedClient(): CustomOpenAIClient;
21
- protected _getClientOptions(options: t.OpenAICoreRequestOptions | undefined): t.OpenAICoreRequestOptions;
57
+ /**
58
+ * Returns backwards compatible reasoning parameters from constructor params and call options
59
+ * @internal
60
+ */
61
+ getReasoningParams(options?: this['ParsedCallOptions']): OpenAIClient.Reasoning | undefined;
62
+ protected _getReasoningParams(options?: this['ParsedCallOptions']): OpenAIClient.Reasoning | undefined;
63
+ protected _getClientOptions(options: OpenAICoreRequestOptions | undefined): OpenAICoreRequestOptions;
64
+ _streamResponseChunks(messages: BaseMessage[], options: this['ParsedCallOptions'], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
22
65
  }
23
66
  export declare class ChatDeepSeek extends OriginalChatDeepSeek {
24
67
  get exposedClient(): CustomOpenAIClient;
25
68
  protected _getClientOptions(options?: OpenAICoreRequestOptions): OpenAICoreRequestOptions;
26
69
  }
70
+ /** xAI-specific usage metadata type */
71
+ export interface XAIUsageMetadata extends OpenAIClient.Completions.CompletionUsage {
72
+ prompt_tokens_details?: {
73
+ audio_tokens?: number;
74
+ cached_tokens?: number;
75
+ text_tokens?: number;
76
+ image_tokens?: number;
77
+ };
78
+ completion_tokens_details?: {
79
+ audio_tokens?: number;
80
+ reasoning_tokens?: number;
81
+ accepted_prediction_tokens?: number;
82
+ rejected_prediction_tokens?: number;
83
+ };
84
+ num_sources_used?: number;
85
+ }
27
86
  export declare class ChatXAI extends OriginalChatXAI {
87
+ constructor(fields?: Partial<ChatXAIInput> & {
88
+ configuration?: {
89
+ baseURL?: string;
90
+ };
91
+ clientConfig?: {
92
+ baseURL?: string;
93
+ };
94
+ });
28
95
  get exposedClient(): CustomOpenAIClient;
29
96
  protected _getClientOptions(options?: OpenAICoreRequestOptions): OpenAICoreRequestOptions;
97
+ _streamResponseChunks(messages: BaseMessage[], options: this['ParsedCallOptions'], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
30
98
  }
99
+ export {};
@@ -0,0 +1,10 @@
1
+ import type { OpenAICallOptions } from '@langchain/openai';
2
+ export interface OpenAIChatCallOptions extends OpenAICallOptions {
3
+ promptIndex?: number;
4
+ }
5
+ export type OpenAIRoleEnum = 'system' | 'developer' | 'assistant' | 'user' | 'function' | 'tool';
6
+ export type HeaderValue = string | undefined | null;
7
+ export type HeadersLike = Headers | readonly HeaderValue[][] | Record<string, HeaderValue | readonly HeaderValue[]> | undefined | null | {
8
+ values: Headers;
9
+ [key: string]: unknown;
10
+ };
@@ -0,0 +1,20 @@
1
+ import { type OpenAI as OpenAIClient } from 'openai';
2
+ import { type BaseMessage } from '@langchain/core/messages';
3
+ import { ChatGenerationChunk } from '@langchain/core/outputs';
4
+ import type { OpenAICallOptions, OpenAIChatInput } from '@langchain/openai';
5
+ export type { OpenAICallOptions, OpenAIChatInput };
6
+ type ExtractAsyncIterableType<T> = T extends AsyncIterable<infer U> ? U : never;
7
+ type ExcludeNonController<T> = T extends {
8
+ controller: unknown;
9
+ } ? T : never;
10
+ type ResponsesCreate = OpenAIClient.Responses['create'];
11
+ type ResponsesInputItem = OpenAIClient.Responses.ResponseInputItem;
12
+ type ResponsesCreateStream = ExcludeNonController<Awaited<ReturnType<ResponsesCreate>>>;
13
+ export type ResponseReturnStreamEvents = ExtractAsyncIterableType<ResponsesCreateStream>;
14
+ type OpenAIRoleEnum = 'system' | 'developer' | 'assistant' | 'user' | 'function' | 'tool';
15
+ type OpenAICompletionParam = OpenAIClient.Chat.Completions.ChatCompletionMessageParam;
16
+ export declare function messageToOpenAIRole(message: BaseMessage): OpenAIRoleEnum;
17
+ export declare function _convertMessagesToOpenAIParams(messages: BaseMessage[], model?: string): OpenAICompletionParam[];
18
+ export declare function _convertMessagesToOpenAIResponsesParams(messages: BaseMessage[], model?: string, zdrEnabled?: boolean): ResponsesInputItem[];
19
+ export declare function isReasoningModel(model?: string): boolean;
20
+ export declare function _convertOpenAIResponsesDeltaToBaseMessageChunk(chunk: ResponseReturnStreamEvents): ChatGenerationChunk | null;
@@ -17,5 +17,5 @@ export declare class TextStream {
17
17
  private randomInt;
18
18
  private static readonly BOUNDARIES;
19
19
  private findFirstWordBoundary;
20
- generateText(progressCallback?: ProgressCallback): AsyncGenerator<string, void, unknown>;
20
+ generateText(signal?: AbortSignal, progressCallback?: ProgressCallback): AsyncGenerator<string, void, unknown>;
21
21
  }