langchain 1.0.0-alpha.6 → 1.0.0-alpha.7
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/agents/ReactAgent.cjs.map +1 -1
- package/dist/agents/ReactAgent.d.cts +1 -2
- package/dist/agents/ReactAgent.d.cts.map +1 -1
- package/dist/agents/ReactAgent.d.ts +1 -2
- package/dist/agents/ReactAgent.d.ts.map +1 -1
- package/dist/agents/ReactAgent.js.map +1 -1
- package/dist/agents/annotation.cjs.map +1 -1
- package/dist/agents/annotation.d.cts +12 -5
- package/dist/agents/annotation.d.cts.map +1 -1
- package/dist/agents/annotation.d.ts +12 -5
- package/dist/agents/annotation.d.ts.map +1 -1
- package/dist/agents/annotation.js.map +1 -1
- package/dist/agents/createAgent.cjs.map +1 -1
- package/dist/agents/createAgent.js.map +1 -1
- package/dist/agents/index.cjs.map +1 -1
- package/dist/agents/index.d.cts +3 -3
- package/dist/agents/index.d.cts.map +1 -1
- package/dist/agents/index.d.ts +3 -3
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/interrupt.d.cts +14 -1
- package/dist/agents/interrupt.d.cts.map +1 -1
- package/dist/agents/interrupt.d.ts +14 -1
- package/dist/agents/interrupt.d.ts.map +1 -1
- package/dist/agents/middlewareAgent/ReactAgent.cjs +262 -55
- package/dist/agents/middlewareAgent/ReactAgent.cjs.map +1 -1
- package/dist/agents/middlewareAgent/ReactAgent.d.cts +97 -10
- package/dist/agents/middlewareAgent/ReactAgent.d.cts.map +1 -1
- package/dist/agents/middlewareAgent/ReactAgent.d.ts +97 -10
- package/dist/agents/middlewareAgent/ReactAgent.d.ts.map +1 -1
- package/dist/agents/middlewareAgent/ReactAgent.js +264 -57
- package/dist/agents/middlewareAgent/ReactAgent.js.map +1 -1
- package/dist/agents/middlewareAgent/annotation.cjs +10 -4
- package/dist/agents/middlewareAgent/annotation.cjs.map +1 -1
- package/dist/agents/middlewareAgent/annotation.js +10 -4
- package/dist/agents/middlewareAgent/annotation.js.map +1 -1
- package/dist/agents/middlewareAgent/constants.d.cts +5 -0
- package/dist/agents/middlewareAgent/constants.d.cts.map +1 -0
- package/dist/agents/middlewareAgent/constants.d.ts +5 -0
- package/dist/agents/middlewareAgent/constants.d.ts.map +1 -0
- package/dist/agents/middlewareAgent/index.cjs.map +1 -1
- package/dist/agents/middlewareAgent/index.js.map +1 -1
- package/dist/agents/middlewareAgent/middleware/bigTool.cjs +162 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.cjs.map +1 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.d.cts +113 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.d.cts.map +1 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.d.ts +113 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.d.ts.map +1 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.js +161 -0
- package/dist/agents/middlewareAgent/middleware/bigTool.js.map +1 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs +58 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.cjs.map +1 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts +46 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.cts.map +1 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts +46 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.d.ts.map +1 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js +58 -0
- package/dist/agents/middlewareAgent/middleware/dynamicSystemPrompt.js.map +1 -0
- package/dist/agents/middlewareAgent/middleware/hitl.cjs +160 -84
- package/dist/agents/middlewareAgent/middleware/hitl.cjs.map +1 -1
- package/dist/agents/middlewareAgent/middleware/hitl.d.cts +271 -51
- package/dist/agents/middlewareAgent/middleware/hitl.d.cts.map +1 -1
- package/dist/agents/middlewareAgent/middleware/hitl.d.ts +271 -51
- package/dist/agents/middlewareAgent/middleware/hitl.d.ts.map +1 -1
- package/dist/agents/middlewareAgent/middleware/hitl.js +161 -85
- package/dist/agents/middlewareAgent/middleware/hitl.js.map +1 -1
- package/dist/agents/middlewareAgent/middleware/index.cjs +6 -0
- package/dist/agents/middlewareAgent/middleware/index.cjs.map +1 -1
- package/dist/agents/middlewareAgent/middleware/index.d.cts +6 -4
- package/dist/agents/middlewareAgent/middleware/index.d.ts +6 -4
- package/dist/agents/middlewareAgent/middleware/index.js +5 -1
- package/dist/agents/middlewareAgent/middleware/index.js.map +1 -1
- package/dist/agents/middlewareAgent/middleware/promptCaching.cjs +24 -8
- package/dist/agents/middlewareAgent/middleware/promptCaching.cjs.map +1 -1
- package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts +51 -6
- package/dist/agents/middlewareAgent/middleware/promptCaching.d.cts.map +1 -1
- package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts +51 -6
- package/dist/agents/middlewareAgent/middleware/promptCaching.d.ts.map +1 -1
- package/dist/agents/middlewareAgent/middleware/promptCaching.js +24 -8
- package/dist/agents/middlewareAgent/middleware/promptCaching.js.map +1 -1
- package/dist/agents/middlewareAgent/middleware/summarization.cjs +24 -12
- package/dist/agents/middlewareAgent/middleware/summarization.cjs.map +1 -1
- package/dist/agents/middlewareAgent/middleware/summarization.d.cts +5 -3
- package/dist/agents/middlewareAgent/middleware/summarization.d.cts.map +1 -1
- package/dist/agents/middlewareAgent/middleware/summarization.d.ts +11 -9
- package/dist/agents/middlewareAgent/middleware/summarization.d.ts.map +1 -1
- package/dist/agents/middlewareAgent/middleware/summarization.js +25 -13
- package/dist/agents/middlewareAgent/middleware/summarization.js.map +1 -1
- package/dist/agents/middlewareAgent/middleware.cjs +8 -5
- package/dist/agents/middlewareAgent/middleware.cjs.map +1 -1
- package/dist/agents/middlewareAgent/middleware.d.cts +67 -7
- package/dist/agents/middlewareAgent/middleware.d.cts.map +1 -1
- package/dist/agents/middlewareAgent/middleware.d.ts +67 -7
- package/dist/agents/middlewareAgent/middleware.d.ts.map +1 -1
- package/dist/agents/middlewareAgent/middleware.js +8 -5
- package/dist/agents/middlewareAgent/middleware.js.map +1 -1
- package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs +2 -2
- package/dist/agents/middlewareAgent/nodes/AfterModalNode.cjs.map +1 -1
- package/dist/agents/middlewareAgent/nodes/AfterModalNode.js +2 -2
- package/dist/agents/middlewareAgent/nodes/AfterModalNode.js.map +1 -1
- package/dist/agents/middlewareAgent/nodes/AgentNode.cjs +117 -68
- package/dist/agents/middlewareAgent/nodes/AgentNode.cjs.map +1 -1
- package/dist/agents/middlewareAgent/nodes/AgentNode.js +121 -72
- package/dist/agents/middlewareAgent/nodes/AgentNode.js.map +1 -1
- package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs +2 -2
- package/dist/agents/middlewareAgent/nodes/BeforeModalNode.cjs.map +1 -1
- package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js +2 -2
- package/dist/agents/middlewareAgent/nodes/BeforeModalNode.js.map +1 -1
- package/dist/agents/middlewareAgent/nodes/middleware.cjs +42 -17
- package/dist/agents/middlewareAgent/nodes/middleware.cjs.map +1 -1
- package/dist/agents/middlewareAgent/nodes/middleware.js +42 -18
- package/dist/agents/middlewareAgent/nodes/middleware.js.map +1 -1
- package/dist/agents/middlewareAgent/nodes/utils.cjs +25 -11
- package/dist/agents/middlewareAgent/nodes/utils.cjs.map +1 -1
- package/dist/agents/middlewareAgent/nodes/utils.js +26 -12
- package/dist/agents/middlewareAgent/nodes/utils.js.map +1 -1
- package/dist/agents/middlewareAgent/types.d.cts +153 -66
- package/dist/agents/middlewareAgent/types.d.cts.map +1 -1
- package/dist/agents/middlewareAgent/types.d.ts +153 -66
- package/dist/agents/middlewareAgent/types.d.ts.map +1 -1
- package/dist/agents/model.cjs +13 -0
- package/dist/agents/model.cjs.map +1 -0
- package/dist/agents/model.js +11 -0
- package/dist/agents/model.js.map +1 -0
- package/dist/agents/nodes/AgentNode.cjs +56 -28
- package/dist/agents/nodes/AgentNode.cjs.map +1 -1
- package/dist/agents/nodes/AgentNode.js +57 -29
- package/dist/agents/nodes/AgentNode.js.map +1 -1
- package/dist/agents/nodes/ToolNode.cjs +1 -1
- package/dist/agents/nodes/ToolNode.cjs.map +1 -1
- package/dist/agents/nodes/ToolNode.d.cts +1 -1
- package/dist/agents/nodes/ToolNode.js +1 -1
- package/dist/agents/nodes/ToolNode.js.map +1 -1
- package/dist/agents/responses.cjs +52 -10
- package/dist/agents/responses.cjs.map +1 -1
- package/dist/agents/responses.d.cts +12 -20
- package/dist/agents/responses.d.cts.map +1 -1
- package/dist/agents/responses.d.ts +12 -20
- package/dist/agents/responses.d.ts.map +1 -1
- package/dist/agents/responses.js +52 -11
- package/dist/agents/responses.js.map +1 -1
- package/dist/agents/types.d.cts +2 -3
- package/dist/agents/types.d.cts.map +1 -1
- package/dist/agents/types.d.ts +2 -3
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/utils.cjs +5 -23
- package/dist/agents/utils.cjs.map +1 -1
- package/dist/agents/utils.js +2 -19
- package/dist/agents/utils.js.map +1 -1
- package/dist/chains/query_constructor/index.d.cts +1 -1
- package/dist/chains/summarization/load.d.ts +2 -2
- package/dist/chains/summarization/load.d.ts.map +1 -1
- package/dist/embeddings/cache_backed.d.ts +1 -1
- package/dist/evaluation/comparison/pairwise.d.cts.map +1 -1
- package/dist/evaluation/comparison/pairwise.d.ts.map +1 -1
- package/dist/evaluation/criteria/criteria.d.cts.map +1 -1
- package/dist/evaluation/criteria/criteria.d.ts.map +1 -1
- package/dist/index.cjs +38 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -4
- package/dist/index.d.ts +11 -4
- package/dist/index.js +18 -4
- package/dist/index.js.map +1 -1
- package/dist/langchain-core/dist/messages/base.d.cts.map +1 -1
- package/dist/langchain-core/dist/messages/content/index.d.cts +20 -1
- package/dist/langchain-core/dist/messages/content/index.d.cts.map +1 -1
- package/dist/langchain-core/dist/messages/content/tools.d.cts +67 -6
- package/dist/langchain-core/dist/messages/content/tools.d.cts.map +1 -1
- package/dist/langchain-core/dist/messages/message.d.cts +6 -6
- package/dist/langchain-core/dist/messages/message.d.cts.map +1 -1
- package/dist/langchain-core/dist/utils/types/index.d.cts.map +1 -1
- package/dist/libs/langchain-core/dist/messages/base.d.ts.map +1 -1
- package/dist/libs/langchain-core/dist/messages/content/index.d.ts +20 -1
- package/dist/libs/langchain-core/dist/messages/content/index.d.ts.map +1 -1
- package/dist/libs/langchain-core/dist/messages/content/tools.d.ts +67 -6
- package/dist/libs/langchain-core/dist/messages/content/tools.d.ts.map +1 -1
- package/dist/libs/langchain-core/dist/messages/message.d.ts +6 -6
- package/dist/libs/langchain-core/dist/messages/message.d.ts.map +1 -1
- package/dist/libs/langchain-core/dist/utils/types/index.d.ts.map +1 -1
- package/dist/load/import_map.cjs +1 -1
- package/dist/load/import_map.js +1 -1
- package/dist/output_parsers/structured.d.cts +1 -1
- package/dist/tools/fs.d.cts +1 -1
- package/dist/tools/retriever.d.cts +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.d.ts","names":["InteropZodObject","InteropZodType","AIMessage","FunctionDefinition","StructuredOutputParsingError","MultipleStructuredOutputsError","ToolStrategy","Record","ToolStrategyOptions","S","U","ProviderStrategy","T","ResponseFormat","transformResponseFormat","JsonSchemaFormat","ResponseFormatUndefined","TypedToolStrategy","Array","ToolStrategyError","Promise","toolStrategy","K","providerStrategy"],"sources":["../../src/agents/responses.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-instanceof/no-instanceof */\nimport { InteropZodObject, InteropZodType } from \"@langchain/core/utils/types\";\nimport { type AIMessage } from \"@langchain/core/messages\";\nimport { type FunctionDefinition } from \"@langchain/core/language_models/base\";\nimport { StructuredOutputParsingError, MultipleStructuredOutputsError } from \"./errors.js\";\n/**\n * Information for tracking structured output tool metadata.\n * This contains all necessary information to handle structured responses generated\n * via tool calls, including the original schema, its type classification, and the\n * corresponding tool implementation used by the tools strategy.\n */\nexport declare class ToolStrategy<_T = unknown> {\n readonly schema: Record<string, unknown>;\n readonly tool: {\n type: \"function\";\n function: FunctionDefinition;\n };\n readonly options?: ToolStrategyOptions | undefined;\n private constructor();\n get name(): string;\n static fromSchema<S extends InteropZodObject>(schema: S, options?: {\n name?: string;\n description?: string;\n strict?: boolean;\n }, outputOptions?: ToolStrategyOptions): ToolStrategy<S extends InteropZodType<infer U> ? U : unknown>;\n static fromSchema(schema: Record<string, unknown>, options?: {\n name?: string;\n description?: string;\n strict?: boolean;\n }, outputOptions?: ToolStrategyOptions): ToolStrategy<Record<string, unknown>>;\n /**\n * Parse tool arguments according to the schema.\n *\n * @throws {StructuredOutputParsingError} if the response is not valid\n * @param toolArgs - The arguments from the tool call\n * @returns The parsed response according to the schema type\n */\n parse(toolArgs: Record<string, unknown>): Record<string, unknown>;\n}\nexport declare class ProviderStrategy<T = unknown> {\n readonly schema: Record<string, unknown>;\n // @ts-expect-error - _schemaType is used only for type inference\n private _schemaType?;\n private constructor();\n static fromSchema<T>(schema: InteropZodType<T>): ProviderStrategy<T>;\n static fromSchema(schema: Record<string, unknown>): ProviderStrategy<Record<string, unknown>>;\n /**\n * Parse tool arguments according to the schema. If the response is not valid, return undefined.\n *\n * @param toolArgs - The arguments from the tool call\n * @returns The parsed response according to the schema type\n */\n parse(response: AIMessage): any;\n}\nexport type ResponseFormat = ToolStrategy<any> | ProviderStrategy<any>;\n/**\n * Handle user input for `responseFormat` parameter of `CreateAgentParams`.\n * This function defines the default behavior for the `responseFormat` parameter, which is:\n *\n * - if value is a Zod schema, default to structured output via tool calling\n * - if value is a JSON schema, default to structured output via tool calling\n * - if value is a custom response format, return it as is\n * - if value is an array, ensure all array elements are instance of `ToolStrategy`\n * @param responseFormat\n * @returns\n */\nexport declare function transformResponseFormat(responseFormat?: InteropZodType<any> | InteropZodType<any>[] | JsonSchemaFormat | JsonSchemaFormat[] | ResponseFormat | ToolStrategy<any>[] | ResponseFormatUndefined, options?: ToolStrategyOptions): ResponseFormat[];\n/**\n * Branded type for ToolStrategy arrays that preserves type information\n */\nexport interface TypedToolStrategy<T = unknown> extends Array<ToolStrategy<any>> {\n _schemaType?: T;\n}\nexport type ToolStrategyError = StructuredOutputParsingError | MultipleStructuredOutputsError;\nexport interface ToolStrategyOptions {\n /**\n * Allows you to customize the message that appears in the conversation history when structured\n * output is generated.\n */\n toolMessageContent?: string;\n /**\n * Handle errors from the structured output tool call. Using tools to generate structured output\n * can cause errors, e.g. if:\n * - you provide multiple structured output schemas and the model calls multiple structured output tools\n * - if the structured output generated by the tool call doesn't match provided schema\n *\n * This property allows to handle these errors in different ways:\n * - `true` - retry the tool call\n * - `false` - throw an error\n * - `string` - retry the tool call with the provided message\n * - `(error: ToolStrategyError) => Promise<string> | string` - retry with the provided message or throw the error\n */\n handleError?: boolean | string | ((error: ToolStrategyError) => Promise<string> | string);\n}\nexport declare function toolStrategy<T extends InteropZodType<any>>(responseFormat: T, options?: ToolStrategyOptions): TypedToolStrategy<T extends InteropZodType<infer U> ? U : never>;\nexport declare function toolStrategy<T extends readonly InteropZodType<any>[]>(responseFormat: T, options?: ToolStrategyOptions): TypedToolStrategy<{\n [K in keyof T]: T[K] extends InteropZodType<infer U> ? U : never;\n}[number]>;\nexport declare function toolStrategy(responseFormat: JsonSchemaFormat, options?: ToolStrategyOptions): TypedToolStrategy<Record<string, unknown>>;\nexport declare function toolStrategy(responseFormat: JsonSchemaFormat[], options?: ToolStrategyOptions): TypedToolStrategy<Record<string, unknown>>;\nexport declare function providerStrategy<T extends InteropZodType<any>>(responseFormat: T): ProviderStrategy<T extends InteropZodType<infer U> ? U : never>;\nexport declare function providerStrategy(responseFormat: JsonSchemaFormat): ProviderStrategy<Record<string, unknown>>;\n/**\n * Special type to indicate that no response format is provided.\n * When this type is used, the structuredResponse property should not be present in the result.\n */\nexport type ResponseFormatUndefined = {\n __responseFormatUndefined: true;\n};\n/**\n * Type representing a JSON Schema object format.\n * This is a strict type that excludes ToolStrategy and ProviderStrategy instances.\n */\nexport type JsonSchemaFormat = {\n type: \"null\" | \"boolean\" | \"object\" | \"array\" | \"number\" | \"string\" | \"integer\";\n properties?: Record<string, unknown>;\n required?: string[];\n additionalProperties?: boolean;\n [key: string]: unknown;\n} & {\n // Brand to ensure this is not a ToolStrategy or ProviderStrategy\n __brand?: never;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"responses.d.ts","names":["InteropZodObject","InteropZodType","AIMessage","LanguageModelLike","FunctionDefinition","StructuredOutputParsingError","MultipleStructuredOutputsError","ResponseFormatUndefined","ToolStrategy","Record","ToolStrategyOptions","S","U","ProviderStrategy","T","ResponseFormat","transformResponseFormat","JsonSchemaFormat","TypedToolStrategy","Array","ToolStrategyError","Promise","toolStrategy","K","providerStrategy","hasSupportForJsonSchemaOutput"],"sources":["../../src/agents/responses.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-instanceof/no-instanceof */\nimport { InteropZodObject, InteropZodType } from \"@langchain/core/utils/types\";\nimport { type AIMessage } from \"@langchain/core/messages\";\nimport { type LanguageModelLike } from \"@langchain/core/language_models/base\";\nimport { type FunctionDefinition } from \"@langchain/core/language_models/base\";\nimport { StructuredOutputParsingError, MultipleStructuredOutputsError } from \"./errors.js\";\nimport type { ResponseFormatUndefined } from \"./annotation.js\";\n/**\n * Information for tracking structured output tool metadata.\n * This contains all necessary information to handle structured responses generated\n * via tool calls, including the original schema, its type classification, and the\n * corresponding tool implementation used by the tools strategy.\n */\nexport declare class ToolStrategy<_T = unknown> {\n readonly schema: Record<string, unknown>;\n readonly tool: {\n type: \"function\";\n function: FunctionDefinition;\n };\n readonly options?: ToolStrategyOptions | undefined;\n private constructor();\n get name(): string;\n static fromSchema<S extends InteropZodObject>(schema: S, outputOptions?: ToolStrategyOptions): ToolStrategy<S extends InteropZodType<infer U> ? U : unknown>;\n static fromSchema(schema: Record<string, unknown>, outputOptions?: ToolStrategyOptions): ToolStrategy<Record<string, unknown>>;\n /**\n * Parse tool arguments according to the schema.\n *\n * @throws {StructuredOutputParsingError} if the response is not valid\n * @param toolArgs - The arguments from the tool call\n * @returns The parsed response according to the schema type\n */\n parse(toolArgs: Record<string, unknown>): Record<string, unknown>;\n}\nexport declare class ProviderStrategy<T = unknown> {\n readonly schema: Record<string, unknown>;\n // @ts-expect-error - _schemaType is used only for type inference\n private _schemaType?;\n private constructor();\n static fromSchema<T>(schema: InteropZodType<T>): ProviderStrategy<T>;\n static fromSchema(schema: Record<string, unknown>): ProviderStrategy<Record<string, unknown>>;\n /**\n * Parse tool arguments according to the schema. If the response is not valid, return undefined.\n *\n * @param toolArgs - The arguments from the tool call\n * @returns The parsed response according to the schema type\n */\n parse(response: AIMessage): any;\n}\nexport type ResponseFormat = ToolStrategy<any> | ProviderStrategy<any>;\n/**\n * Handle user input for `responseFormat` parameter of `CreateAgentParams`.\n * This function defines the default behavior for the `responseFormat` parameter, which is:\n *\n * - if value is a Zod schema, default to structured output via tool calling\n * - if value is a JSON schema, default to structured output via tool calling\n * - if value is a custom response format, return it as is\n * - if value is an array, ensure all array elements are instance of `ToolStrategy`\n * @param responseFormat - The response format to transform, provided by the user\n * @param options - The response format options for tool strategy\n * @param model - The model to check if it supports JSON schema output\n * @returns\n */\nexport declare function transformResponseFormat(responseFormat?: InteropZodType<any> | InteropZodType<any>[] | JsonSchemaFormat | JsonSchemaFormat[] | ResponseFormat | ToolStrategy<any>[] | ResponseFormatUndefined, options?: ToolStrategyOptions, model?: LanguageModelLike | string): ResponseFormat[];\n/**\n * Branded type for ToolStrategy arrays that preserves type information\n */\nexport interface TypedToolStrategy<T = unknown> extends Array<ToolStrategy<any>> {\n _schemaType?: T;\n}\nexport type ToolStrategyError = StructuredOutputParsingError | MultipleStructuredOutputsError;\nexport interface ToolStrategyOptions {\n /**\n * Allows you to customize the message that appears in the conversation history when structured\n * output is generated.\n */\n toolMessageContent?: string;\n /**\n * Handle errors from the structured output tool call. Using tools to generate structured output\n * can cause errors, e.g. if:\n * - you provide multiple structured output schemas and the model calls multiple structured output tools\n * - if the structured output generated by the tool call doesn't match provided schema\n *\n * This property allows to handle these errors in different ways:\n * - `true` - retry the tool call\n * - `false` - throw an error\n * - `string` - retry the tool call with the provided message\n * - `(error: ToolStrategyError) => Promise<string> | string` - retry with the provided message or throw the error\n */\n handleError?: boolean | string | ((error: ToolStrategyError) => Promise<string> | string);\n}\nexport declare function toolStrategy<T extends InteropZodType<any>>(responseFormat: T, options?: ToolStrategyOptions): TypedToolStrategy<T extends InteropZodType<infer U> ? U : never>;\nexport declare function toolStrategy<T extends readonly InteropZodType<any>[]>(responseFormat: T, options?: ToolStrategyOptions): TypedToolStrategy<{\n [K in keyof T]: T[K] extends InteropZodType<infer U> ? U : never;\n}[number]>;\nexport declare function toolStrategy(responseFormat: JsonSchemaFormat, options?: ToolStrategyOptions): TypedToolStrategy<Record<string, unknown>>;\nexport declare function toolStrategy(responseFormat: JsonSchemaFormat[], options?: ToolStrategyOptions): TypedToolStrategy<Record<string, unknown>>;\nexport declare function providerStrategy<T extends InteropZodType<any>>(responseFormat: T): ProviderStrategy<T extends InteropZodType<infer U> ? U : never>;\nexport declare function providerStrategy(responseFormat: JsonSchemaFormat): ProviderStrategy<Record<string, unknown>>;\n/**\n * Type representing a JSON Schema object format.\n * This is a strict type that excludes ToolStrategy and ProviderStrategy instances.\n */\nexport type JsonSchemaFormat = {\n type: \"null\" | \"boolean\" | \"object\" | \"array\" | \"number\" | \"string\" | \"integer\";\n properties?: Record<string, unknown>;\n required?: string[];\n additionalProperties?: boolean;\n [key: string]: unknown;\n} & {\n // Brand to ensure this is not a ToolStrategy or ProviderStrategy\n __brand?: never;\n};\n/**\n * Identifies the models that support JSON schema output\n * @param model - The model to check\n * @returns True if the model supports JSON schema output, false otherwise\n */\nexport declare function hasSupportForJsonSchemaOutput(model?: LanguageModelLike | string): boolean;\n"],"mappings":"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"}
|
package/dist/agents/responses.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { StructuredOutputParsingError } from "./errors.js";
|
|
2
|
+
import { isBaseChatModel, isConfigurableModel } from "./model.js";
|
|
2
3
|
import { isInteropZodObject, isInteropZodSchema } from "@langchain/core/utils/types";
|
|
3
4
|
import { Validator, toJsonSchema } from "@langchain/core/utils/json_schema";
|
|
4
5
|
|
|
@@ -22,13 +23,13 @@ var ToolStrategy = class ToolStrategy {
|
|
|
22
23
|
get name() {
|
|
23
24
|
return this.tool.function.name;
|
|
24
25
|
}
|
|
25
|
-
static fromSchema(schema,
|
|
26
|
+
static fromSchema(schema, outputOptions) {
|
|
26
27
|
/**
|
|
27
28
|
* It is required for tools to have a name so we can map the tool call to the correct tool
|
|
28
29
|
* when parsing the response.
|
|
29
30
|
*/
|
|
30
31
|
function getFunctionName(name) {
|
|
31
|
-
return name ??
|
|
32
|
+
return name ?? `extract-${++bindingIdentifier}`;
|
|
32
33
|
}
|
|
33
34
|
if (isInteropZodSchema(schema)) {
|
|
34
35
|
const asJsonSchema$1 = toJsonSchema(schema);
|
|
@@ -36,8 +37,8 @@ var ToolStrategy = class ToolStrategy {
|
|
|
36
37
|
type: "function",
|
|
37
38
|
function: {
|
|
38
39
|
name: getFunctionName(),
|
|
39
|
-
strict:
|
|
40
|
-
description:
|
|
40
|
+
strict: false,
|
|
41
|
+
description: asJsonSchema$1.description ?? "Tool for extracting structured output from the model's response.",
|
|
41
42
|
parameters: asJsonSchema$1
|
|
42
43
|
}
|
|
43
44
|
};
|
|
@@ -108,10 +109,12 @@ var ProviderStrategy = class ProviderStrategy {
|
|
|
108
109
|
* - if value is a JSON schema, default to structured output via tool calling
|
|
109
110
|
* - if value is a custom response format, return it as is
|
|
110
111
|
* - if value is an array, ensure all array elements are instance of `ToolStrategy`
|
|
111
|
-
* @param responseFormat
|
|
112
|
+
* @param responseFormat - The response format to transform, provided by the user
|
|
113
|
+
* @param options - The response format options for tool strategy
|
|
114
|
+
* @param model - The model to check if it supports JSON schema output
|
|
112
115
|
* @returns
|
|
113
116
|
*/
|
|
114
|
-
function transformResponseFormat(responseFormat, options) {
|
|
117
|
+
function transformResponseFormat(responseFormat, options, model) {
|
|
115
118
|
if (!responseFormat) return [];
|
|
116
119
|
if (typeof responseFormat === "object" && responseFormat !== null && "__responseFormatUndefined" in responseFormat) return [];
|
|
117
120
|
/**
|
|
@@ -126,19 +129,23 @@ function transformResponseFormat(responseFormat, options) {
|
|
|
126
129
|
/**
|
|
127
130
|
* Check if all items are Zod schemas
|
|
128
131
|
*/
|
|
129
|
-
if (responseFormat.every((item) => isInteropZodObject(item))) return responseFormat.map((item) => ToolStrategy.fromSchema(item,
|
|
132
|
+
if (responseFormat.every((item) => isInteropZodObject(item))) return responseFormat.map((item) => ToolStrategy.fromSchema(item, options));
|
|
130
133
|
/**
|
|
131
134
|
* Check if all items are plain objects (JSON schema)
|
|
132
135
|
*/
|
|
133
|
-
if (responseFormat.every((item) => typeof item === "object" && item !== null && !isInteropZodObject(item))) return responseFormat.map((item) => ToolStrategy.fromSchema(item,
|
|
136
|
+
if (responseFormat.every((item) => typeof item === "object" && item !== null && !isInteropZodObject(item))) return responseFormat.map((item) => ToolStrategy.fromSchema(item, options));
|
|
134
137
|
throw new Error("Invalid response format: list contains mixed types.\nAll items must be either InteropZodObject or plain JSON schema objects.");
|
|
135
138
|
}
|
|
136
|
-
if (isInteropZodObject(responseFormat)) return [ToolStrategy.fromSchema(responseFormat, void 0, options)];
|
|
137
139
|
if (responseFormat instanceof ToolStrategy || responseFormat instanceof ProviderStrategy) return [responseFormat];
|
|
140
|
+
const useProviderStrategy = hasSupportForJsonSchemaOutput(model);
|
|
141
|
+
/**
|
|
142
|
+
* `responseFormat` is a Zod schema
|
|
143
|
+
*/
|
|
144
|
+
if (isInteropZodObject(responseFormat)) return useProviderStrategy ? [ProviderStrategy.fromSchema(responseFormat)] : [ToolStrategy.fromSchema(responseFormat, options)];
|
|
138
145
|
/**
|
|
139
146
|
* Handle plain object (JSON schema)
|
|
140
147
|
*/
|
|
141
|
-
if (typeof responseFormat === "object" && responseFormat !== null && "properties" in responseFormat) return [
|
|
148
|
+
if (typeof responseFormat === "object" && responseFormat !== null && "properties" in responseFormat) return useProviderStrategy ? [ProviderStrategy.fromSchema(responseFormat)] : [ToolStrategy.fromSchema(responseFormat, options)];
|
|
142
149
|
throw new Error(`Invalid response format: ${String(responseFormat)}`);
|
|
143
150
|
}
|
|
144
151
|
/**
|
|
@@ -155,7 +162,41 @@ function toolStrategy(responseFormat, options) {
|
|
|
155
162
|
function providerStrategy(responseFormat) {
|
|
156
163
|
return ProviderStrategy.fromSchema(responseFormat);
|
|
157
164
|
}
|
|
165
|
+
const CHAT_MODELS_THAT_SUPPORT_JSON_SCHEMA_OUTPUT = ["ChatOpenAI", "ChatXAI"];
|
|
166
|
+
const MODEL_NAMES_THAT_SUPPORT_JSON_SCHEMA_OUTPUT = [
|
|
167
|
+
"grok",
|
|
168
|
+
"gpt-5",
|
|
169
|
+
"gpt-4.1",
|
|
170
|
+
"gpt-4o",
|
|
171
|
+
"gpt-oss",
|
|
172
|
+
"o3-pro",
|
|
173
|
+
"o3-mini"
|
|
174
|
+
];
|
|
175
|
+
/**
|
|
176
|
+
* Identifies the models that support JSON schema output
|
|
177
|
+
* @param model - The model to check
|
|
178
|
+
* @returns True if the model supports JSON schema output, false otherwise
|
|
179
|
+
*/
|
|
180
|
+
function hasSupportForJsonSchemaOutput(model) {
|
|
181
|
+
if (!model) return false;
|
|
182
|
+
if (typeof model === "string") {
|
|
183
|
+
const modelName = model.split(":").pop();
|
|
184
|
+
return MODEL_NAMES_THAT_SUPPORT_JSON_SCHEMA_OUTPUT.some((modelNameSnippet) => modelName.includes(modelNameSnippet));
|
|
185
|
+
}
|
|
186
|
+
if (isConfigurableModel(model)) {
|
|
187
|
+
const configurableModel = model;
|
|
188
|
+
return hasSupportForJsonSchemaOutput(configurableModel._defaultConfig.model);
|
|
189
|
+
}
|
|
190
|
+
if (!isBaseChatModel(model)) return false;
|
|
191
|
+
const chatModelClass = model.getName();
|
|
192
|
+
/**
|
|
193
|
+
* for testing purposes only
|
|
194
|
+
*/
|
|
195
|
+
if (chatModelClass === "FakeToolCallingChatModel") return true;
|
|
196
|
+
if (CHAT_MODELS_THAT_SUPPORT_JSON_SCHEMA_OUTPUT.includes(chatModelClass) && ("model" in model && MODEL_NAMES_THAT_SUPPORT_JSON_SCHEMA_OUTPUT.some((modelNameSnippet) => typeof model.model === "string" && model.model.includes(modelNameSnippet)) || chatModelClass === "FakeToolCallingModel" && "structuredResponse" in model)) return true;
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
158
199
|
|
|
159
200
|
//#endregion
|
|
160
|
-
export { ProviderStrategy, ToolStrategy, providerStrategy, toolStrategy, transformResponseFormat };
|
|
201
|
+
export { ProviderStrategy, ToolStrategy, hasSupportForJsonSchemaOutput, providerStrategy, toolStrategy, transformResponseFormat };
|
|
161
202
|
//# sourceMappingURL=responses.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.js","names":["schema: Record<string, unknown>","tool: {\n type: \"function\";\n function: FunctionDefinition;\n }","options?: ToolStrategyOptions","schema: InteropZodObject | Record<string, unknown>","options?: {\n name?: string;\n description?: string;\n strict?: boolean;\n }","outputOptions?: ToolStrategyOptions","name?: string","asJsonSchema","tool","functionDefinition: FunctionDefinition","toolArgs: Record<string, unknown>","schema: InteropZodType<T> | Record<string, unknown>","response: AIMessage","responseFormat?:\n | InteropZodType<any>\n | InteropZodType<any>[]\n | JsonSchemaFormat\n | JsonSchemaFormat[]\n | ResponseFormat\n | ToolStrategy<any>[]\n | ResponseFormatUndefined","responseFormat:\n | InteropZodType<any>\n | InteropZodType<any>[]\n | JsonSchemaFormat\n | JsonSchemaFormat[]","responseFormat: InteropZodType<any> | JsonSchemaFormat"],"sources":["../../src/agents/responses.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-instanceof/no-instanceof */\nimport {\n InteropZodObject,\n isInteropZodSchema,\n InteropZodType,\n isInteropZodObject,\n} from \"@langchain/core/utils/types\";\nimport { type AIMessage } from \"@langchain/core/messages\";\nimport { toJsonSchema, Validator } from \"@langchain/core/utils/json_schema\";\nimport { type FunctionDefinition } from \"@langchain/core/language_models/base\";\n\nimport {\n StructuredOutputParsingError,\n MultipleStructuredOutputsError,\n} from \"./errors.js\";\n\n/**\n * This is a global counter for generating unique names for tools.\n */\nlet bindingIdentifier = 0;\n\n/**\n * Information for tracking structured output tool metadata.\n * This contains all necessary information to handle structured responses generated\n * via tool calls, including the original schema, its type classification, and the\n * corresponding tool implementation used by the tools strategy.\n */\nexport class ToolStrategy<_T = unknown> {\n private constructor(\n /**\n * The original JSON Schema provided for structured output\n */\n public readonly schema: Record<string, unknown>,\n\n /**\n * The tool that will be used to parse the tool call arguments.\n */\n public readonly tool: {\n type: \"function\";\n function: FunctionDefinition;\n },\n\n /**\n * The options to use for the tool output.\n */\n public readonly options?: ToolStrategyOptions\n ) {}\n\n get name() {\n return this.tool.function.name;\n }\n\n static fromSchema<S extends InteropZodObject>(\n schema: S,\n options?: {\n name?: string;\n description?: string;\n strict?: boolean;\n },\n outputOptions?: ToolStrategyOptions\n ): ToolStrategy<S extends InteropZodType<infer U> ? U : unknown>;\n\n static fromSchema(\n schema: Record<string, unknown>,\n options?: {\n name?: string;\n description?: string;\n strict?: boolean;\n },\n outputOptions?: ToolStrategyOptions\n ): ToolStrategy<Record<string, unknown>>;\n\n static fromSchema(\n schema: InteropZodObject | Record<string, unknown>,\n options?: {\n name?: string;\n description?: string;\n strict?: boolean;\n },\n outputOptions?: ToolStrategyOptions\n ): ToolStrategy<any> {\n /**\n * It is required for tools to have a name so we can map the tool call to the correct tool\n * when parsing the response.\n */\n function getFunctionName(name?: string) {\n return name ?? options?.name ?? `extract-${++bindingIdentifier}`;\n }\n\n if (isInteropZodSchema(schema)) {\n const asJsonSchema = toJsonSchema(schema);\n const tool = {\n type: \"function\" as const,\n function: {\n name: getFunctionName(),\n strict: options?.strict,\n description:\n options?.description ??\n asJsonSchema.description ??\n \"Tool for extracting structured output from the model's response.\",\n parameters: asJsonSchema,\n },\n };\n return new ToolStrategy(asJsonSchema, tool, outputOptions);\n }\n\n let functionDefinition: FunctionDefinition;\n if (\n typeof schema.name === \"string\" &&\n typeof schema.parameters === \"object\" &&\n schema.parameters != null\n ) {\n functionDefinition = schema as unknown as FunctionDefinition;\n } else {\n functionDefinition = {\n name: getFunctionName(schema.title as string),\n description: (schema.description as string) ?? \"\",\n parameters: schema.schema || (schema as Record<string, unknown>),\n };\n }\n const asJsonSchema = toJsonSchema(schema);\n const tool = {\n type: \"function\" as const,\n function: functionDefinition,\n };\n return new ToolStrategy(asJsonSchema, tool, outputOptions);\n }\n\n /**\n * Parse tool arguments according to the schema.\n *\n * @throws {StructuredOutputParsingError} if the response is not valid\n * @param toolArgs - The arguments from the tool call\n * @returns The parsed response according to the schema type\n */\n parse(toolArgs: Record<string, unknown>): Record<string, unknown> {\n const validator = new Validator(this.schema);\n const result = validator.validate(toolArgs);\n if (!result.valid) {\n throw new StructuredOutputParsingError(\n this.name,\n result.errors.map((e) => e.error)\n );\n }\n return toolArgs;\n }\n}\n\nexport class ProviderStrategy<T = unknown> {\n // @ts-expect-error - _schemaType is used only for type inference\n private _schemaType?: T;\n\n private constructor(public readonly schema: Record<string, unknown>) {}\n\n static fromSchema<T>(schema: InteropZodType<T>): ProviderStrategy<T>;\n\n static fromSchema(\n schema: Record<string, unknown>\n ): ProviderStrategy<Record<string, unknown>>;\n\n static fromSchema<T = unknown>(\n schema: InteropZodType<T> | Record<string, unknown>\n ): ProviderStrategy<T> | ProviderStrategy<Record<string, unknown>> {\n const asJsonSchema = toJsonSchema(schema);\n return new ProviderStrategy(asJsonSchema) as\n | ProviderStrategy<T>\n | ProviderStrategy<Record<string, unknown>>;\n }\n\n /**\n * Parse tool arguments according to the schema. If the response is not valid, return undefined.\n *\n * @param toolArgs - The arguments from the tool call\n * @returns The parsed response according to the schema type\n */\n parse(response: AIMessage) {\n /**\n * return if the response doesn't contain valid content\n */\n if (typeof response.content !== \"string\" || response.content === \"\") {\n return;\n }\n\n try {\n const content = JSON.parse(response.content);\n const validator = new Validator(this.schema);\n const result = validator.validate(content);\n if (!result.valid) {\n return;\n }\n\n return content;\n } catch {\n // no-op\n }\n }\n}\n\nexport type ResponseFormat = ToolStrategy<any> | ProviderStrategy<any>;\n\n/**\n * Handle user input for `responseFormat` parameter of `CreateAgentParams`.\n * This function defines the default behavior for the `responseFormat` parameter, which is:\n *\n * - if value is a Zod schema, default to structured output via tool calling\n * - if value is a JSON schema, default to structured output via tool calling\n * - if value is a custom response format, return it as is\n * - if value is an array, ensure all array elements are instance of `ToolStrategy`\n * @param responseFormat\n * @returns\n */\nexport function transformResponseFormat(\n responseFormat?:\n | InteropZodType<any>\n | InteropZodType<any>[]\n | JsonSchemaFormat\n | JsonSchemaFormat[]\n | ResponseFormat\n | ToolStrategy<any>[]\n | ResponseFormatUndefined,\n options?: ToolStrategyOptions\n): ResponseFormat[] {\n if (!responseFormat) {\n return [];\n }\n\n // Handle ResponseFormatUndefined case\n if (\n typeof responseFormat === \"object\" &&\n responseFormat !== null &&\n \"__responseFormatUndefined\" in responseFormat\n ) {\n return [];\n }\n\n /**\n * If users provide an array, it should only contain raw schemas (Zod or JSON schema),\n * not ToolStrategy or ProviderStrategy instances.\n */\n if (Array.isArray(responseFormat)) {\n /**\n * if every entry is a ToolStrategy or ProviderStrategy instance, return the array as is\n */\n if (\n responseFormat.every(\n (item) =>\n item instanceof ToolStrategy || item instanceof ProviderStrategy\n )\n ) {\n return responseFormat as unknown as ResponseFormat[];\n }\n\n /**\n * Check if all items are Zod schemas\n */\n if (responseFormat.every((item) => isInteropZodObject(item))) {\n return responseFormat.map((item) =>\n ToolStrategy.fromSchema(item as InteropZodObject, undefined, options)\n );\n }\n\n /**\n * Check if all items are plain objects (JSON schema)\n */\n if (\n responseFormat.every(\n (item) =>\n typeof item === \"object\" && item !== null && !isInteropZodObject(item)\n )\n ) {\n return responseFormat.map((item) =>\n ToolStrategy.fromSchema(item as JsonSchemaFormat, undefined, options)\n );\n }\n\n throw new Error(\n `Invalid response format: list contains mixed types.\\n` +\n `All items must be either InteropZodObject or plain JSON schema objects.`\n );\n }\n\n if (isInteropZodObject(responseFormat)) {\n return [ToolStrategy.fromSchema(responseFormat, undefined, options)];\n }\n\n if (\n responseFormat instanceof ToolStrategy ||\n responseFormat instanceof ProviderStrategy\n ) {\n return [responseFormat];\n }\n\n /**\n * Handle plain object (JSON schema)\n */\n if (\n typeof responseFormat === \"object\" &&\n responseFormat !== null &&\n \"properties\" in responseFormat\n ) {\n return [\n ToolStrategy.fromSchema(\n responseFormat as JsonSchemaFormat,\n undefined,\n options\n ),\n ];\n }\n\n throw new Error(`Invalid response format: ${String(responseFormat)}`);\n}\n\n/**\n * Branded type for ToolStrategy arrays that preserves type information\n */\nexport interface TypedToolStrategy<T = unknown>\n extends Array<ToolStrategy<any>> {\n _schemaType?: T;\n}\nexport type ToolStrategyError =\n | StructuredOutputParsingError\n | MultipleStructuredOutputsError;\nexport interface ToolStrategyOptions {\n /**\n * Allows you to customize the message that appears in the conversation history when structured\n * output is generated.\n */\n toolMessageContent?: string;\n /**\n * Handle errors from the structured output tool call. Using tools to generate structured output\n * can cause errors, e.g. if:\n * - you provide multiple structured output schemas and the model calls multiple structured output tools\n * - if the structured output generated by the tool call doesn't match provided schema\n *\n * This property allows to handle these errors in different ways:\n * - `true` - retry the tool call\n * - `false` - throw an error\n * - `string` - retry the tool call with the provided message\n * - `(error: ToolStrategyError) => Promise<string> | string` - retry with the provided message or throw the error\n */\n handleError?:\n | boolean\n | string\n | ((error: ToolStrategyError) => Promise<string> | string);\n}\n\nexport function toolStrategy<T extends InteropZodType<any>>(\n responseFormat: T,\n options?: ToolStrategyOptions\n): TypedToolStrategy<T extends InteropZodType<infer U> ? U : never>;\nexport function toolStrategy<T extends readonly InteropZodType<any>[]>(\n responseFormat: T,\n options?: ToolStrategyOptions\n): TypedToolStrategy<\n { [K in keyof T]: T[K] extends InteropZodType<infer U> ? U : never }[number]\n>;\nexport function toolStrategy(\n responseFormat: JsonSchemaFormat,\n options?: ToolStrategyOptions\n): TypedToolStrategy<Record<string, unknown>>;\nexport function toolStrategy(\n responseFormat: JsonSchemaFormat[],\n options?: ToolStrategyOptions\n): TypedToolStrategy<Record<string, unknown>>;\n\n/**\n * Define how to transform the response format from a tool call.\n *\n * @param responseFormat - The response format to transform\n * @param options - The options to use for the transformation\n * @param options.handleError - Whether to handle errors from the tool call\n * @returns The transformed response format\n */\nexport function toolStrategy(\n responseFormat:\n | InteropZodType<any>\n | InteropZodType<any>[]\n | JsonSchemaFormat\n | JsonSchemaFormat[],\n options?: ToolStrategyOptions\n): TypedToolStrategy {\n return transformResponseFormat(responseFormat, options) as TypedToolStrategy;\n}\n\nexport function providerStrategy<T extends InteropZodType<any>>(\n responseFormat: T\n): ProviderStrategy<T extends InteropZodType<infer U> ? U : never>;\nexport function providerStrategy(\n responseFormat: JsonSchemaFormat\n): ProviderStrategy<Record<string, unknown>>;\nexport function providerStrategy(\n responseFormat: InteropZodType<any> | JsonSchemaFormat\n): ProviderStrategy<any> {\n return ProviderStrategy.fromSchema(\n responseFormat as any\n ) as ProviderStrategy<any>;\n}\n\n/**\n * Special type to indicate that no response format is provided.\n * When this type is used, the structuredResponse property should not be present in the result.\n */\nexport type ResponseFormatUndefined = {\n __responseFormatUndefined: true;\n};\n\n/**\n * Type representing a JSON Schema object format.\n * This is a strict type that excludes ToolStrategy and ProviderStrategy instances.\n */\nexport type JsonSchemaFormat = {\n type:\n | \"null\"\n | \"boolean\"\n | \"object\"\n | \"array\"\n | \"number\"\n | \"string\"\n | \"integer\";\n properties?: Record<string, unknown>;\n required?: string[];\n additionalProperties?: boolean;\n [key: string]: unknown;\n} & {\n // Brand to ensure this is not a ToolStrategy or ProviderStrategy\n __brand?: never;\n};\n"],"mappings":";;;;;;;;AAoBA,IAAI,oBAAoB;;;;;;;AAQxB,IAAa,eAAb,MAAa,aAA2B;CACtC,AAAQ,YAIUA,QAKAC,MAQAC,SAChB;EAdgB;EAKA;EAQA;CACd;CAEJ,IAAI,OAAO;AACT,SAAO,KAAK,KAAK,SAAS;CAC3B;CAsBD,OAAO,WACLC,QACAC,SAKAC,eACmB;;;;;EAKnB,SAAS,gBAAgBC,MAAe;AACtC,UAAO,QAAQ,SAAS,QAAQ,CAAC,QAAQ,EAAE,EAAE,mBAAmB;EACjE;AAED,MAAI,mBAAmB,OAAO,EAAE;GAC9B,MAAMC,iBAAe,aAAa,OAAO;GACzC,MAAMC,SAAO;IACX,MAAM;IACN,UAAU;KACR,MAAM,iBAAiB;KACvB,QAAQ,SAAS;KACjB,aACE,SAAS,eACTD,eAAa,eACb;KACF,YAAYA;IACb;GACF;AACD,UAAO,IAAI,aAAaA,gBAAcC,QAAM;EAC7C;EAED,IAAIC;AACJ,MACE,OAAO,OAAO,SAAS,YACvB,OAAO,OAAO,eAAe,YAC7B,OAAO,cAAc,MAErB,qBAAqB;OAErB,qBAAqB;GACnB,MAAM,gBAAgB,OAAO,MAAgB;GAC7C,aAAc,OAAO,eAA0B;GAC/C,YAAY,OAAO,UAAW;EAC/B;EAEH,MAAM,eAAe,aAAa,OAAO;EACzC,MAAM,OAAO;GACX,MAAM;GACN,UAAU;EACX;AACD,SAAO,IAAI,aAAa,cAAc,MAAM;CAC7C;;;;;;;;CASD,MAAMC,UAA4D;EAChE,MAAM,YAAY,IAAI,UAAU,KAAK;EACrC,MAAM,SAAS,UAAU,SAAS,SAAS;AAC3C,MAAI,CAAC,OAAO,MACV,OAAM,IAAI,6BACR,KAAK,MACL,OAAO,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM;AAGrC,SAAO;CACR;AACF;AAED,IAAa,mBAAb,MAAa,iBAA8B;CAEzC,AAAQ;CAER,AAAQ,YAA4BV,QAAiC;EAAjC;CAAmC;CAQvE,OAAO,WACLW,QACiE;EACjE,MAAM,eAAe,aAAa,OAAO;AACzC,SAAO,IAAI,iBAAiB;CAG7B;;;;;;;CAQD,MAAMC,UAAqB;;;;AAIzB,MAAI,OAAO,SAAS,YAAY,YAAY,SAAS,YAAY,GAC/D;AAGF,MAAI;GACF,MAAM,UAAU,KAAK,MAAM,SAAS,QAAQ;GAC5C,MAAM,YAAY,IAAI,UAAU,KAAK;GACrC,MAAM,SAAS,UAAU,SAAS,QAAQ;AAC1C,OAAI,CAAC,OAAO,MACV;AAGF,UAAO;EACR,QAAO,CAEP;CACF;AACF;;;;;;;;;;;;AAeD,SAAgB,wBACdC,gBAQAX,SACkB;AAClB,KAAI,CAAC,eACH,QAAO,CAAE;AAIX,KACE,OAAO,mBAAmB,YAC1B,mBAAmB,QACnB,+BAA+B,eAE/B,QAAO,CAAE;;;;;AAOX,KAAI,MAAM,QAAQ,eAAe,EAAE;;;;AAIjC,MACE,eAAe,MACb,CAAC,SACC,gBAAgB,gBAAgB,gBAAgB,iBACnD,CAED,QAAO;;;;AAMT,MAAI,eAAe,MAAM,CAAC,SAAS,mBAAmB,KAAK,CAAC,CAC1D,QAAO,eAAe,IAAI,CAAC,SACzB,aAAa,WAAW,MAA0B,QAAW,QAAQ,CACtE;;;;AAMH,MACE,eAAe,MACb,CAAC,SACC,OAAO,SAAS,YAAY,SAAS,QAAQ,CAAC,mBAAmB,KAAK,CACzE,CAED,QAAO,eAAe,IAAI,CAAC,SACzB,aAAa,WAAW,MAA0B,QAAW,QAAQ,CACtE;AAGH,QAAM,IAAI,MACR;CAGH;AAED,KAAI,mBAAmB,eAAe,CACpC,QAAO,CAAC,aAAa,WAAW,gBAAgB,QAAW,QAAQ,AAAC;AAGtE,KACE,0BAA0B,gBAC1B,0BAA0B,iBAE1B,QAAO,CAAC,cAAe;;;;AAMzB,KACE,OAAO,mBAAmB,YAC1B,mBAAmB,QACnB,gBAAgB,eAEhB,QAAO,CACL,aAAa,WACX,gBACA,QACA,QACD,AACF;AAGH,OAAM,IAAI,MAAM,CAAC,yBAAyB,EAAE,OAAO,eAAe,EAAE;AACrE;;;;;;;;;AA+DD,SAAgB,aACdY,gBAKAZ,SACmB;AACnB,QAAO,wBAAwB,gBAAgB,QAAQ;AACxD;AAQD,SAAgB,iBACda,gBACuB;AACvB,QAAO,iBAAiB,WACtB,eACD;AACF"}
|
|
1
|
+
{"version":3,"file":"responses.js","names":["schema: Record<string, unknown>","tool: {\n type: \"function\";\n function: FunctionDefinition;\n }","options?: ToolStrategyOptions","schema: InteropZodObject | Record<string, unknown>","outputOptions?: ToolStrategyOptions","name?: string","asJsonSchema","tool","functionDefinition: FunctionDefinition","toolArgs: Record<string, unknown>","schema: InteropZodType<T> | Record<string, unknown>","response: AIMessage","responseFormat?:\n | InteropZodType<any>\n | InteropZodType<any>[]\n | JsonSchemaFormat\n | JsonSchemaFormat[]\n | ResponseFormat\n | ToolStrategy<any>[]\n | ResponseFormatUndefined","model?: LanguageModelLike | string","responseFormat:\n | InteropZodType<any>\n | InteropZodType<any>[]\n | JsonSchemaFormat\n | JsonSchemaFormat[]","responseFormat: InteropZodType<any> | JsonSchemaFormat"],"sources":["../../src/agents/responses.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-instanceof/no-instanceof */\nimport {\n InteropZodObject,\n isInteropZodSchema,\n InteropZodType,\n isInteropZodObject,\n} from \"@langchain/core/utils/types\";\nimport { type AIMessage } from \"@langchain/core/messages\";\nimport { type LanguageModelLike } from \"@langchain/core/language_models/base\";\nimport { toJsonSchema, Validator } from \"@langchain/core/utils/json_schema\";\nimport { type FunctionDefinition } from \"@langchain/core/language_models/base\";\n\nimport {\n StructuredOutputParsingError,\n MultipleStructuredOutputsError,\n} from \"./errors.js\";\nimport type { ResponseFormatUndefined } from \"./annotation.js\";\nimport { isConfigurableModel, isBaseChatModel } from \"./model.js\";\n\n/**\n * This is a global counter for generating unique names for tools.\n */\nlet bindingIdentifier = 0;\n\n/**\n * Information for tracking structured output tool metadata.\n * This contains all necessary information to handle structured responses generated\n * via tool calls, including the original schema, its type classification, and the\n * corresponding tool implementation used by the tools strategy.\n */\nexport class ToolStrategy<_T = unknown> {\n private constructor(\n /**\n * The original JSON Schema provided for structured output\n */\n public readonly schema: Record<string, unknown>,\n\n /**\n * The tool that will be used to parse the tool call arguments.\n */\n public readonly tool: {\n type: \"function\";\n function: FunctionDefinition;\n },\n\n /**\n * The options to use for the tool output.\n */\n public readonly options?: ToolStrategyOptions\n ) {}\n\n get name() {\n return this.tool.function.name;\n }\n\n static fromSchema<S extends InteropZodObject>(\n schema: S,\n outputOptions?: ToolStrategyOptions\n ): ToolStrategy<S extends InteropZodType<infer U> ? U : unknown>;\n\n static fromSchema(\n schema: Record<string, unknown>,\n outputOptions?: ToolStrategyOptions\n ): ToolStrategy<Record<string, unknown>>;\n\n static fromSchema(\n schema: InteropZodObject | Record<string, unknown>,\n outputOptions?: ToolStrategyOptions\n ): ToolStrategy<any> {\n /**\n * It is required for tools to have a name so we can map the tool call to the correct tool\n * when parsing the response.\n */\n function getFunctionName(name?: string) {\n return name ?? `extract-${++bindingIdentifier}`;\n }\n\n if (isInteropZodSchema(schema)) {\n const asJsonSchema = toJsonSchema(schema);\n const tool = {\n type: \"function\" as const,\n function: {\n name: getFunctionName(),\n strict: false,\n description:\n asJsonSchema.description ??\n \"Tool for extracting structured output from the model's response.\",\n parameters: asJsonSchema,\n },\n };\n return new ToolStrategy(asJsonSchema, tool, outputOptions);\n }\n\n let functionDefinition: FunctionDefinition;\n if (\n typeof schema.name === \"string\" &&\n typeof schema.parameters === \"object\" &&\n schema.parameters != null\n ) {\n functionDefinition = schema as unknown as FunctionDefinition;\n } else {\n functionDefinition = {\n name: getFunctionName(schema.title as string),\n description: (schema.description as string) ?? \"\",\n parameters: schema.schema || (schema as Record<string, unknown>),\n };\n }\n const asJsonSchema = toJsonSchema(schema);\n const tool = {\n type: \"function\" as const,\n function: functionDefinition,\n };\n return new ToolStrategy(asJsonSchema, tool, outputOptions);\n }\n\n /**\n * Parse tool arguments according to the schema.\n *\n * @throws {StructuredOutputParsingError} if the response is not valid\n * @param toolArgs - The arguments from the tool call\n * @returns The parsed response according to the schema type\n */\n parse(toolArgs: Record<string, unknown>): Record<string, unknown> {\n const validator = new Validator(this.schema);\n const result = validator.validate(toolArgs);\n if (!result.valid) {\n throw new StructuredOutputParsingError(\n this.name,\n result.errors.map((e) => e.error)\n );\n }\n return toolArgs;\n }\n}\n\nexport class ProviderStrategy<T = unknown> {\n // @ts-expect-error - _schemaType is used only for type inference\n private _schemaType?: T;\n\n private constructor(public readonly schema: Record<string, unknown>) {}\n\n static fromSchema<T>(schema: InteropZodType<T>): ProviderStrategy<T>;\n\n static fromSchema(\n schema: Record<string, unknown>\n ): ProviderStrategy<Record<string, unknown>>;\n\n static fromSchema<T = unknown>(\n schema: InteropZodType<T> | Record<string, unknown>\n ): ProviderStrategy<T> | ProviderStrategy<Record<string, unknown>> {\n const asJsonSchema = toJsonSchema(schema);\n return new ProviderStrategy(asJsonSchema) as\n | ProviderStrategy<T>\n | ProviderStrategy<Record<string, unknown>>;\n }\n\n /**\n * Parse tool arguments according to the schema. If the response is not valid, return undefined.\n *\n * @param toolArgs - The arguments from the tool call\n * @returns The parsed response according to the schema type\n */\n parse(response: AIMessage) {\n /**\n * return if the response doesn't contain valid content\n */\n if (typeof response.content !== \"string\" || response.content === \"\") {\n return;\n }\n\n try {\n const content = JSON.parse(response.content);\n const validator = new Validator(this.schema);\n const result = validator.validate(content);\n if (!result.valid) {\n return;\n }\n\n return content;\n } catch {\n // no-op\n }\n }\n}\n\nexport type ResponseFormat = ToolStrategy<any> | ProviderStrategy<any>;\n\n/**\n * Handle user input for `responseFormat` parameter of `CreateAgentParams`.\n * This function defines the default behavior for the `responseFormat` parameter, which is:\n *\n * - if value is a Zod schema, default to structured output via tool calling\n * - if value is a JSON schema, default to structured output via tool calling\n * - if value is a custom response format, return it as is\n * - if value is an array, ensure all array elements are instance of `ToolStrategy`\n * @param responseFormat - The response format to transform, provided by the user\n * @param options - The response format options for tool strategy\n * @param model - The model to check if it supports JSON schema output\n * @returns\n */\nexport function transformResponseFormat(\n responseFormat?:\n | InteropZodType<any>\n | InteropZodType<any>[]\n | JsonSchemaFormat\n | JsonSchemaFormat[]\n | ResponseFormat\n | ToolStrategy<any>[]\n | ResponseFormatUndefined,\n options?: ToolStrategyOptions,\n model?: LanguageModelLike | string\n): ResponseFormat[] {\n if (!responseFormat) {\n return [];\n }\n\n // Handle ResponseFormatUndefined case\n if (\n typeof responseFormat === \"object\" &&\n responseFormat !== null &&\n \"__responseFormatUndefined\" in responseFormat\n ) {\n return [];\n }\n\n /**\n * If users provide an array, it should only contain raw schemas (Zod or JSON schema),\n * not ToolStrategy or ProviderStrategy instances.\n */\n if (Array.isArray(responseFormat)) {\n /**\n * if every entry is a ToolStrategy or ProviderStrategy instance, return the array as is\n */\n if (\n responseFormat.every(\n (item) =>\n item instanceof ToolStrategy || item instanceof ProviderStrategy\n )\n ) {\n return responseFormat as unknown as ResponseFormat[];\n }\n\n /**\n * Check if all items are Zod schemas\n */\n if (responseFormat.every((item) => isInteropZodObject(item))) {\n return responseFormat.map((item) =>\n ToolStrategy.fromSchema(item as InteropZodObject, options)\n );\n }\n\n /**\n * Check if all items are plain objects (JSON schema)\n */\n if (\n responseFormat.every(\n (item) =>\n typeof item === \"object\" && item !== null && !isInteropZodObject(item)\n )\n ) {\n return responseFormat.map((item) =>\n ToolStrategy.fromSchema(item as JsonSchemaFormat, options)\n );\n }\n\n throw new Error(\n `Invalid response format: list contains mixed types.\\n` +\n `All items must be either InteropZodObject or plain JSON schema objects.`\n );\n }\n\n if (\n responseFormat instanceof ToolStrategy ||\n responseFormat instanceof ProviderStrategy\n ) {\n return [responseFormat];\n }\n\n const useProviderStrategy = hasSupportForJsonSchemaOutput(model);\n\n /**\n * `responseFormat` is a Zod schema\n */\n if (isInteropZodObject(responseFormat)) {\n return useProviderStrategy\n ? [ProviderStrategy.fromSchema(responseFormat)]\n : [ToolStrategy.fromSchema(responseFormat, options)];\n }\n\n /**\n * Handle plain object (JSON schema)\n */\n if (\n typeof responseFormat === \"object\" &&\n responseFormat !== null &&\n \"properties\" in responseFormat\n ) {\n return useProviderStrategy\n ? [ProviderStrategy.fromSchema(responseFormat as JsonSchemaFormat)]\n : [ToolStrategy.fromSchema(responseFormat as JsonSchemaFormat, options)];\n }\n\n throw new Error(`Invalid response format: ${String(responseFormat)}`);\n}\n\n/**\n * Branded type for ToolStrategy arrays that preserves type information\n */\nexport interface TypedToolStrategy<T = unknown>\n extends Array<ToolStrategy<any>> {\n _schemaType?: T;\n}\nexport type ToolStrategyError =\n | StructuredOutputParsingError\n | MultipleStructuredOutputsError;\nexport interface ToolStrategyOptions {\n /**\n * Allows you to customize the message that appears in the conversation history when structured\n * output is generated.\n */\n toolMessageContent?: string;\n /**\n * Handle errors from the structured output tool call. Using tools to generate structured output\n * can cause errors, e.g. if:\n * - you provide multiple structured output schemas and the model calls multiple structured output tools\n * - if the structured output generated by the tool call doesn't match provided schema\n *\n * This property allows to handle these errors in different ways:\n * - `true` - retry the tool call\n * - `false` - throw an error\n * - `string` - retry the tool call with the provided message\n * - `(error: ToolStrategyError) => Promise<string> | string` - retry with the provided message or throw the error\n */\n handleError?:\n | boolean\n | string\n | ((error: ToolStrategyError) => Promise<string> | string);\n}\n\nexport function toolStrategy<T extends InteropZodType<any>>(\n responseFormat: T,\n options?: ToolStrategyOptions\n): TypedToolStrategy<T extends InteropZodType<infer U> ? U : never>;\nexport function toolStrategy<T extends readonly InteropZodType<any>[]>(\n responseFormat: T,\n options?: ToolStrategyOptions\n): TypedToolStrategy<\n { [K in keyof T]: T[K] extends InteropZodType<infer U> ? U : never }[number]\n>;\nexport function toolStrategy(\n responseFormat: JsonSchemaFormat,\n options?: ToolStrategyOptions\n): TypedToolStrategy<Record<string, unknown>>;\nexport function toolStrategy(\n responseFormat: JsonSchemaFormat[],\n options?: ToolStrategyOptions\n): TypedToolStrategy<Record<string, unknown>>;\n\n/**\n * Define how to transform the response format from a tool call.\n *\n * @param responseFormat - The response format to transform\n * @param options - The options to use for the transformation\n * @param options.handleError - Whether to handle errors from the tool call\n * @returns The transformed response format\n */\nexport function toolStrategy(\n responseFormat:\n | InteropZodType<any>\n | InteropZodType<any>[]\n | JsonSchemaFormat\n | JsonSchemaFormat[],\n options?: ToolStrategyOptions\n): TypedToolStrategy {\n return transformResponseFormat(responseFormat, options) as TypedToolStrategy;\n}\n\nexport function providerStrategy<T extends InteropZodType<any>>(\n responseFormat: T\n): ProviderStrategy<T extends InteropZodType<infer U> ? U : never>;\nexport function providerStrategy(\n responseFormat: JsonSchemaFormat\n): ProviderStrategy<Record<string, unknown>>;\nexport function providerStrategy(\n responseFormat: InteropZodType<any> | JsonSchemaFormat\n): ProviderStrategy<any> {\n return ProviderStrategy.fromSchema(\n responseFormat as any\n ) as ProviderStrategy<any>;\n}\n\n/**\n * Type representing a JSON Schema object format.\n * This is a strict type that excludes ToolStrategy and ProviderStrategy instances.\n */\nexport type JsonSchemaFormat = {\n type:\n | \"null\"\n | \"boolean\"\n | \"object\"\n | \"array\"\n | \"number\"\n | \"string\"\n | \"integer\";\n properties?: Record<string, unknown>;\n required?: string[];\n additionalProperties?: boolean;\n [key: string]: unknown;\n} & {\n // Brand to ensure this is not a ToolStrategy or ProviderStrategy\n __brand?: never;\n};\n\nconst CHAT_MODELS_THAT_SUPPORT_JSON_SCHEMA_OUTPUT = [\"ChatOpenAI\", \"ChatXAI\"];\nconst MODEL_NAMES_THAT_SUPPORT_JSON_SCHEMA_OUTPUT = [\n \"grok\",\n \"gpt-5\",\n \"gpt-4.1\",\n \"gpt-4o\",\n \"gpt-oss\",\n \"o3-pro\",\n \"o3-mini\",\n];\n\n/**\n * Identifies the models that support JSON schema output\n * @param model - The model to check\n * @returns True if the model supports JSON schema output, false otherwise\n */\nexport function hasSupportForJsonSchemaOutput(\n model?: LanguageModelLike | string\n): boolean {\n if (!model) {\n return false;\n }\n\n if (typeof model === \"string\") {\n const modelName = model.split(\":\").pop() as string;\n return MODEL_NAMES_THAT_SUPPORT_JSON_SCHEMA_OUTPUT.some(\n (modelNameSnippet) => modelName.includes(modelNameSnippet)\n );\n }\n\n if (isConfigurableModel(model)) {\n const configurableModel = model as unknown as {\n _defaultConfig: { model: string };\n };\n return hasSupportForJsonSchemaOutput(\n configurableModel._defaultConfig.model\n );\n }\n\n if (!isBaseChatModel(model)) {\n return false;\n }\n\n const chatModelClass = model.getName();\n\n /**\n * for testing purposes only\n */\n if (chatModelClass === \"FakeToolCallingChatModel\") {\n return true;\n }\n\n if (\n CHAT_MODELS_THAT_SUPPORT_JSON_SCHEMA_OUTPUT.includes(chatModelClass) &&\n /**\n * OpenAI models\n */ ((\"model\" in model &&\n MODEL_NAMES_THAT_SUPPORT_JSON_SCHEMA_OUTPUT.some(\n (modelNameSnippet) =>\n typeof model.model === \"string\" &&\n model.model.includes(modelNameSnippet)\n )) ||\n /**\n * for testing purposes only\n */\n (chatModelClass === \"FakeToolCallingModel\" &&\n \"structuredResponse\" in model))\n ) {\n return true;\n }\n\n return false;\n}\n"],"mappings":"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"}
|
package/dist/agents/types.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { AnyAnnotationRoot, PreHookAnnotation, ResponseFormatUndefined, ToAnnotationRoot } from "./annotation.cjs";
|
|
2
|
+
import { JsonSchemaFormat, ProviderStrategy, ResponseFormat, ToolStrategy, TypedToolStrategy } from "./responses.cjs";
|
|
3
3
|
import { ToolNode } from "./nodes/ToolNode.cjs";
|
|
4
4
|
import { LanguageModelLike } from "@langchain/core/language_models/base";
|
|
5
5
|
import { InteropZodObject, InteropZodType } from "@langchain/core/utils/types";
|
|
@@ -8,7 +8,6 @@ import { BaseMessage, BaseMessageLike, SystemMessage } from "@langchain/core/mes
|
|
|
8
8
|
import { All, BaseCheckpointSaver, BaseStore } from "@langchain/langgraph-checkpoint";
|
|
9
9
|
import { Runnable, RunnableLike, RunnableToolLike } from "@langchain/core/runnables";
|
|
10
10
|
import { DynamicTool, StructuredToolInterface } from "@langchain/core/tools";
|
|
11
|
-
import { BaseChatModel } from "@langchain/core/language_models/chat_models";
|
|
12
11
|
|
|
13
12
|
//#region src/agents/types.d.ts
|
|
14
13
|
type N = typeof START | "agent" | "tools";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","names":["InteropZodObject","InteropZodType","LangGraphRunnableConfig","START","StateGraph","LanguageModelLike","BaseChatModel","SystemMessage","BaseMessageLike","BaseMessage","All","BaseCheckpointSaver","BaseStore","DynamicTool","StructuredToolInterface","Runnable","RunnableLike","RunnableToolLike","ToolNode","PreHookAnnotation","AnyAnnotationRoot","ToAnnotationRoot","ResponseFormat","ToolStrategy","TypedToolStrategy","ProviderStrategy","ResponseFormatUndefined","JsonSchemaFormat","META_EXTRAS_DESCRIPTION_PREFIX","N","ExecutedToolCall","Record","LLMCall","ExtractZodType","T","U","ExtractZodArrayTypes","Rest","A","InferResponseFormatType","ReducedZodChannel","TReducerSchema","ServerTool","ClientTool","Prompt","StateSchema","ContextSchema","Promise","AgentState","AnnotationRoot","AgentRuntime","ContextType","AbortSignal","CreateAgentParams","StructuredResponseType","DynamicLLMFunction","ResponseFormatType","ConfigurableModelInterface","InternalAgentState","WithStateGraphNodes","Graph","SD","S","K","I","O","C"],"sources":["../../src/agents/types.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { InteropZodObject, InteropZodType } from \"@langchain/core/utils/types\";\nimport type { LangGraphRunnableConfig, START, StateGraph } from \"@langchain/langgraph\";\nimport type { LanguageModelLike } from \"@langchain/core/language_models/base\";\nimport type { BaseChatModel } from \"@langchain/core/language_models/chat_models\";\nimport type { SystemMessage, BaseMessageLike, BaseMessage } from \"@langchain/core/messages\";\nimport type { All, BaseCheckpointSaver, BaseStore } from \"@langchain/langgraph-checkpoint\";\nimport type { DynamicTool, StructuredToolInterface } from \"@langchain/core/tools\";\nimport type { Runnable, RunnableLike, RunnableToolLike } from \"@langchain/core/runnables\";\nimport type { ToolNode } from \"./nodes/ToolNode.js\";\nimport type { PreHookAnnotation, AnyAnnotationRoot, ToAnnotationRoot } from \"./annotation.js\";\nimport type { ResponseFormat, ToolStrategy, TypedToolStrategy, ProviderStrategy, ResponseFormatUndefined, JsonSchemaFormat } from \"./responses.js\";\nexport declare const META_EXTRAS_DESCRIPTION_PREFIX = \"lg:\";\nexport type N = typeof START | \"agent\" | \"tools\";\n/**\n * Information about a tool call that has been executed.\n */\nexport interface ExecutedToolCall {\n /**\n * The name of the tool that was called.\n */\n name: string;\n /**\n * The arguments that were passed to the tool.\n */\n args: Record<string, unknown>;\n /**\n * The ID of the tool call.\n */\n tool_id: string;\n /**\n * The result of the tool call (if available).\n */\n result?: unknown;\n}\n/**\n * Information about an LLM invocation.\n */\nexport interface LLMCall {\n /**\n * The messages that were sent to the LLM.\n */\n messages: BaseMessage[];\n /**\n * The response from the LLM.\n */\n response?: BaseMessage;\n}\n/**\n * Type helper to extract the inferred type from a single Zod schema or array of schemas\n */\nexport type ExtractZodType<T> = T extends InteropZodType<infer U> ? U : T extends readonly InteropZodType<any>[] ? ExtractZodArrayTypes<T> : never;\n/**\n * Type helper to extract union type from an array of Zod schemas\n */\nexport type ExtractZodArrayTypes<T extends readonly InteropZodType<any>[]> = T extends readonly [InteropZodType<infer A>, ...infer Rest] ? Rest extends readonly InteropZodType<any>[] ? A | ExtractZodArrayTypes<Rest> : A : never;\n/**\n * Type helper to extract the structured response type from responseFormat\n */\nexport type InferResponseFormatType<T> = T extends InteropZodType<infer U> ? U extends Record<string, any> ? U : Record<string, any> : T extends readonly InteropZodType<any>[] ? ExtractZodArrayTypes<T> : T extends ToolStrategy[] ? Record<string, any> // ToolStrategy arrays will be handled at runtime\n : T extends ResponseFormat ? Record<string, any> // Single ResponseFormat will be handled at runtime\n : Record<string, any>;\n/** @internal */\nexport type ReducedZodChannel<T extends InteropZodType, TReducerSchema extends InteropZodType> = T & {\n lg_reducer_schema: TReducerSchema;\n};\nexport type ServerTool = Record<string, unknown>;\nexport type ClientTool = StructuredToolInterface | DynamicTool | RunnableToolLike;\nexport type Prompt<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = SystemMessage | string | ((state: ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], config: LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>) => BaseMessageLike[] | Promise<BaseMessageLike[]>) | Runnable;\nexport type AgentState<AnnotationRoot extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = ToAnnotationRoot<AnnotationRoot>[\"State\"] & PreHookAnnotation[\"State\"];\nexport interface AgentRuntime<ContextType = Record<string, unknown>> {\n /**\n * The context of the agent.\n */\n context?: ContextType;\n /**\n * The store passed to the agent.\n */\n store?: BaseStore;\n /**\n * The writer of the agent to write to the output stream.\n */\n writer?: (chunk: unknown) => void;\n /**\n * An optional abort signal that indicates that the overall operation should be aborted.\n */\n signal?: AbortSignal;\n}\nexport type CreateAgentParams<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, StructuredResponseType extends Record<string, unknown> = Record<string, unknown>, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ResponseFormatType = InteropZodType<StructuredResponseType> | InteropZodType<unknown>[] | JsonSchemaFormat | JsonSchemaFormat[] | ResponseFormat | TypedToolStrategy<StructuredResponseType> | ToolStrategy<StructuredResponseType> | ProviderStrategy<StructuredResponseType> | ResponseFormatUndefined> = {\n /** The chat model that can utilize OpenAI-style tool calling. */\n llm?: LanguageModelLike | DynamicLLMFunction<StateSchema, ContextSchema>;\n /**\n * Initializes a ChatModel based on the provided model name and provider.\n * It supports various model providers and allows for runtime configuration of model parameters.\n *\n * @uses {@link initChatModel}\n * @example\n * ```ts\n * const agent = createAgent({\n * model: \"anthropic:claude-3-7-sonnet-latest\",\n * // ...\n * });\n * ```\n */\n model?: string;\n /** A list of tools or a ToolNode. */\n tools: ToolNode | (ServerTool | ClientTool)[];\n /**\n * An optional prompt for the LLM. This takes full graph state BEFORE the LLM is called and prepares the input to LLM.\n *\n * Can take a few different forms:\n *\n * - str: This is converted to a SystemMessage and added to the beginning of the list of messages in state[\"messages\"].\n * - SystemMessage: this is added to the beginning of the list of messages in state[\"messages\"].\n * - Function: This function should take in full graph state and the output is then passed to the language model.\n * - Runnable: This runnable should take in full graph state and the output is then passed to the language model.\n *\n * Note:\n * Prior to `v0.2.46`, the prompt was set using `stateModifier` / `messagesModifier` parameters.\n * This is now deprecated and will be removed in a future release.\n *\n * Cannot be used together with `prepareCall`.\n */\n prompt?: Prompt<StateSchema, ContextSchema>;\n /**\n * Additional state schema for the agent. It allows to define additional state keys that will be\n * persisted between agent invocations.\n *\n * @example\n * ```ts\n * // State schema defines data that persists across agent invocations\n * const stateSchema = z.object({\n * userPreferences: z.object({\n * theme: z.enum([\"light\", \"dark\"]),\n * language: z.string(),\n * }),\n * taskHistory: z.array(z.string()),\n * currentWorkflow: z.string().optional(),\n * });\n *\n * // Context schema defines runtime parameters passed per invocation\n * const contextSchema = z.object({ ... });\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [updatePreferences, addTask],\n * stateSchema, // Persisted: preferences, e.g. task history, workflow state\n * contextSchema, // Per-invocation: user ID, session, API keys, etc.\n * prompt: (state, config) => {\n * // ...\n * },\n * });\n *\n * // First invocation - state starts empty, context provided\n * await agent.invoke({\n * messages: [new HumanMessage(\"Set my theme to dark\")],\n * }, {\n * context: { userId: \"user123\", sessionId: \"sess456\", apiKeys: {...} }\n * });\n *\n * // Second invocation - state persists, new context\n * await agent.invoke({\n * messages: [new HumanMessage(\"Add a task to review code\")],\n * }, {\n * context: { userId: \"user123\", sessionId: \"sess789\", apiKeys: {...} }\n * });\n * // State now contains: userPreferences.theme=\"dark\", taskHistory=[\"review code\"]\n * ```\n */\n stateSchema?: StateSchema;\n /**\n * An optional schema for the context. It allows to pass in a typed context object into the agent\n * invocation and allows to access it in hooks such as `prompt`, `preModelHook`, `postModelHook`, etc.\n * As opposed to the agent state, defined in `stateSchema`, the context is not persisted between\n * agent invocations.\n *\n * @example\n * ```ts\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * contextSchema: z.object({\n * capital: z.string(),\n * }),\n * prompt: (state, config) => {\n * return [\n * new SystemMessage(`You are a helpful assistant. The capital of France is ${config.context.capital}.`),\n * ];\n * },\n * });\n *\n * const result = await agent.invoke({\n * messages: [\n * new SystemMessage(\"You are a helpful assistant.\"),\n * new HumanMessage(\"What is the capital of France?\"),\n * ],\n * }, {\n * context: {\n * capital: \"Paris\",\n * },\n * });\n * ```\n */\n contextSchema?: ContextSchema;\n /** An optional checkpoint saver to persist the agent's state. */\n checkpointSaver?: BaseCheckpointSaver | boolean;\n /** An optional checkpoint saver to persist the agent's state. Alias of \"checkpointSaver\". */\n checkpointer?: BaseCheckpointSaver | boolean;\n /** An optional list of node names to interrupt before running. */\n interruptBefore?: N[] | All;\n /** An optional list of node names to interrupt after running. */\n interruptAfter?: N[] | All;\n store?: BaseStore;\n /**\n * An optional schema for the final agent output.\n *\n * If provided, output will be formatted to match the given schema and returned in the 'structuredResponse' state key.\n * If not provided, `structuredResponse` will not be present in the output state.\n *\n * Can be passed in as:\n * - Zod schema\n * ```ts\n * const agent = createAgent({\n * responseFormat: z.object({\n * capital: z.string(),\n * }),\n * // ...\n * });\n * ```\n * - JSON schema\n * ```ts\n * const agent = createAgent({\n * responseFormat: {\n * type: \"json_schema\",\n * schema: {\n * type: \"object\",\n * properties: {\n * capital: { type: \"string\" },\n * },\n * required: [\"capital\"],\n * },\n * },\n * // ...\n * });\n * ```\n * - Create React Agent ResponseFormat\n * ```ts\n * import { providerStrategy, toolStrategy } from \"langchain\";\n * const agent = createAgent({\n * responseFormat: providerStrategy(\n * z.object({\n * capital: z.string(),\n * })\n * ),\n * // or\n * responseFormat: [\n * toolStrategy({ ... }),\n * toolStrategy({ ... }),\n * ]\n * // ...\n * });\n * ```\n *\n * **Note**: The graph will make a separate call to the LLM to generate the structured response after the agent loop is finished.\n * This is not the only strategy to get structured responses, see more options in [this guide](https://langchain-ai.github.io/langgraph/how-tos/react-agent-structured-output/).\n */\n responseFormat?: ResponseFormatType;\n /**\n * An optional name for the agent.\n */\n name?: string;\n /**\n * An optional description for the agent.\n * This can be used to describe the agent to the underlying supervisor LLM.\n */\n description?: string;\n /**\n * Use to specify how to expose the agent name to the underlying supervisor LLM.\n * - `undefined`: Relies on the LLM provider {@link AIMessage#name}. Currently, only OpenAI supports this.\n * - `\"inline\"`: Add the agent name directly into the content field of the {@link AIMessage} using XML-style tags.\n * Example: `\"How can I help you\"` -> `\"<name>agent_name</name><content>How can I help you?</content>\"`\n */\n includeAgentName?: \"inline\" | undefined;\n /**\n * An optional node to add before the `agent` node (i.e., the node that calls the LLM).\n * Useful for managing long message histories (e.g., message trimming, summarization, etc.).\n */\n preModelHook?: RunnableLike<ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], ToAnnotationRoot<StateSchema>[\"Update\"] & PreHookAnnotation[\"Update\"], LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>>;\n /**\n * An optional node to add after the `agent` node (i.e., the node that calls the LLM).\n * Useful for implementing human-in-the-loop, guardrails, validation, or other post-processing.\n */\n postModelHook?: RunnableLike<ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], ToAnnotationRoot<StateSchema>[\"Update\"] & PreHookAnnotation[\"Update\"], LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>>;\n /**\n * An optional abort signal that indicates that the overall operation should be aborted.\n */\n signal?: AbortSignal;\n /**\n * Determines the version of the graph to create.\n *\n * Can be one of\n * - `\"v1\"`: The tool node processes a single message. All tool calls in the message are\n * executed in parallel within the tool node.\n * - `\"v2\"`: The tool node processes a single tool call. Tool calls are distributed across\n * multiple instances of the tool node using the Send API.\n *\n * @default `\"v2\"`\n */\n version?: \"v1\" | \"v2\";\n};\nexport interface ConfigurableModelInterface {\n _queuedMethodOperations: Record<string, unknown>;\n _model: () => Promise<BaseChatModel>;\n}\nexport type InternalAgentState<StructuredResponseType extends Record<string, unknown> | undefined = Record<string, unknown>> = {\n messages: BaseMessage[];\n} & (StructuredResponseType extends ResponseFormatUndefined ? Record<string, never> : {\n structuredResponse: StructuredResponseType;\n});\nexport type WithStateGraphNodes<K extends string, Graph> = Graph extends StateGraph<infer SD, infer S, infer U, infer N, infer I, infer O, infer C> ? StateGraph<SD, S, U, N | K, I, O, C> : never;\n/**\n * @deprecated likely to be removed in the next version of the agent\n */\ntype DynamicLLMFunction<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = (state: ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], runtime: AgentRuntime<ToAnnotationRoot<ContextSchema>[\"State\"]>) => Promise<LanguageModelLike> | LanguageModelLike;\nexport {};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":["InteropZodObject","InteropZodType","LangGraphRunnableConfig","START","StateGraph","LanguageModelLike","SystemMessage","BaseMessageLike","BaseMessage","All","BaseCheckpointSaver","BaseStore","DynamicTool","StructuredToolInterface","Runnable","RunnableLike","RunnableToolLike","ToolNode","PreHookAnnotation","AnyAnnotationRoot","ToAnnotationRoot","ResponseFormatUndefined","ResponseFormat","ToolStrategy","TypedToolStrategy","ProviderStrategy","JsonSchemaFormat","META_EXTRAS_DESCRIPTION_PREFIX","N","ExecutedToolCall","Record","LLMCall","ExtractZodType","T","U","ExtractZodArrayTypes","Rest","A","InferResponseFormatType","ReducedZodChannel","TReducerSchema","ServerTool","ClientTool","Prompt","StateSchema","ContextSchema","Promise","AgentState","AnnotationRoot","AgentRuntime","ContextType","AbortSignal","CreateAgentParams","StructuredResponseType","DynamicLLMFunction","ResponseFormatType","InternalAgentState","WithStateGraphNodes","Graph","SD","S","K","I","O","C"],"sources":["../../src/agents/types.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { InteropZodObject, InteropZodType } from \"@langchain/core/utils/types\";\nimport type { LangGraphRunnableConfig, START, StateGraph } from \"@langchain/langgraph\";\nimport type { LanguageModelLike } from \"@langchain/core/language_models/base\";\nimport type { SystemMessage, BaseMessageLike, BaseMessage } from \"@langchain/core/messages\";\nimport type { All, BaseCheckpointSaver, BaseStore } from \"@langchain/langgraph-checkpoint\";\nimport type { DynamicTool, StructuredToolInterface } from \"@langchain/core/tools\";\nimport type { Runnable, RunnableLike, RunnableToolLike } from \"@langchain/core/runnables\";\nimport type { ToolNode } from \"./nodes/ToolNode.js\";\nimport type { PreHookAnnotation, AnyAnnotationRoot, ToAnnotationRoot, ResponseFormatUndefined } from \"./annotation.js\";\nimport type { ResponseFormat, ToolStrategy, TypedToolStrategy, ProviderStrategy, JsonSchemaFormat } from \"./responses.js\";\nexport declare const META_EXTRAS_DESCRIPTION_PREFIX = \"lg:\";\nexport type N = typeof START | \"agent\" | \"tools\";\n/**\n * Information about a tool call that has been executed.\n */\nexport interface ExecutedToolCall {\n /**\n * The name of the tool that was called.\n */\n name: string;\n /**\n * The arguments that were passed to the tool.\n */\n args: Record<string, unknown>;\n /**\n * The ID of the tool call.\n */\n tool_id: string;\n /**\n * The result of the tool call (if available).\n */\n result?: unknown;\n}\n/**\n * Information about an LLM invocation.\n */\nexport interface LLMCall {\n /**\n * The messages that were sent to the LLM.\n */\n messages: BaseMessage[];\n /**\n * The response from the LLM.\n */\n response?: BaseMessage;\n}\n/**\n * Type helper to extract the inferred type from a single Zod schema or array of schemas\n */\nexport type ExtractZodType<T> = T extends InteropZodType<infer U> ? U : T extends readonly InteropZodType<any>[] ? ExtractZodArrayTypes<T> : never;\n/**\n * Type helper to extract union type from an array of Zod schemas\n */\nexport type ExtractZodArrayTypes<T extends readonly InteropZodType<any>[]> = T extends readonly [InteropZodType<infer A>, ...infer Rest] ? Rest extends readonly InteropZodType<any>[] ? A | ExtractZodArrayTypes<Rest> : A : never;\n/**\n * Type helper to extract the structured response type from responseFormat\n */\nexport type InferResponseFormatType<T> = T extends InteropZodType<infer U> ? U extends Record<string, any> ? U : Record<string, any> : T extends readonly InteropZodType<any>[] ? ExtractZodArrayTypes<T> : T extends ToolStrategy[] ? Record<string, any> // ToolStrategy arrays will be handled at runtime\n : T extends ResponseFormat ? Record<string, any> // Single ResponseFormat will be handled at runtime\n : Record<string, any>;\n/** @internal */\nexport type ReducedZodChannel<T extends InteropZodType, TReducerSchema extends InteropZodType> = T & {\n lg_reducer_schema: TReducerSchema;\n};\nexport type ServerTool = Record<string, unknown>;\nexport type ClientTool = StructuredToolInterface | DynamicTool | RunnableToolLike;\nexport type Prompt<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = SystemMessage | string | ((state: ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], config: LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>) => BaseMessageLike[] | Promise<BaseMessageLike[]>) | Runnable;\nexport type AgentState<AnnotationRoot extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = ToAnnotationRoot<AnnotationRoot>[\"State\"] & PreHookAnnotation[\"State\"];\nexport interface AgentRuntime<ContextType = Record<string, unknown>> {\n /**\n * The context of the agent.\n */\n context?: ContextType;\n /**\n * The store passed to the agent.\n */\n store?: BaseStore;\n /**\n * The writer of the agent to write to the output stream.\n */\n writer?: (chunk: unknown) => void;\n /**\n * An optional abort signal that indicates that the overall operation should be aborted.\n */\n signal?: AbortSignal;\n}\nexport type CreateAgentParams<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, StructuredResponseType extends Record<string, unknown> = Record<string, unknown>, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ResponseFormatType = InteropZodType<StructuredResponseType> | InteropZodType<unknown>[] | JsonSchemaFormat | JsonSchemaFormat[] | ResponseFormat | TypedToolStrategy<StructuredResponseType> | ToolStrategy<StructuredResponseType> | ProviderStrategy<StructuredResponseType> | ResponseFormatUndefined> = {\n /** The chat model that can utilize OpenAI-style tool calling. */\n llm?: LanguageModelLike | DynamicLLMFunction<StateSchema, ContextSchema>;\n /**\n * Initializes a ChatModel based on the provided model name and provider.\n * It supports various model providers and allows for runtime configuration of model parameters.\n *\n * @uses {@link initChatModel}\n * @example\n * ```ts\n * const agent = createAgent({\n * model: \"anthropic:claude-3-7-sonnet-latest\",\n * // ...\n * });\n * ```\n */\n model?: string;\n /** A list of tools or a ToolNode. */\n tools: ToolNode | (ServerTool | ClientTool)[];\n /**\n * An optional prompt for the LLM. This takes full graph state BEFORE the LLM is called and prepares the input to LLM.\n *\n * Can take a few different forms:\n *\n * - str: This is converted to a SystemMessage and added to the beginning of the list of messages in state[\"messages\"].\n * - SystemMessage: this is added to the beginning of the list of messages in state[\"messages\"].\n * - Function: This function should take in full graph state and the output is then passed to the language model.\n * - Runnable: This runnable should take in full graph state and the output is then passed to the language model.\n *\n * Note:\n * Prior to `v0.2.46`, the prompt was set using `stateModifier` / `messagesModifier` parameters.\n * This is now deprecated and will be removed in a future release.\n *\n * Cannot be used together with `prepareCall`.\n */\n prompt?: Prompt<StateSchema, ContextSchema>;\n /**\n * Additional state schema for the agent. It allows to define additional state keys that will be\n * persisted between agent invocations.\n *\n * @example\n * ```ts\n * // State schema defines data that persists across agent invocations\n * const stateSchema = z.object({\n * userPreferences: z.object({\n * theme: z.enum([\"light\", \"dark\"]),\n * language: z.string(),\n * }),\n * taskHistory: z.array(z.string()),\n * currentWorkflow: z.string().optional(),\n * });\n *\n * // Context schema defines runtime parameters passed per invocation\n * const contextSchema = z.object({ ... });\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [updatePreferences, addTask],\n * stateSchema, // Persisted: preferences, e.g. task history, workflow state\n * contextSchema, // Per-invocation: user ID, session, API keys, etc.\n * prompt: (state, config) => {\n * // ...\n * },\n * });\n *\n * // First invocation - state starts empty, context provided\n * await agent.invoke({\n * messages: [new HumanMessage(\"Set my theme to dark\")],\n * }, {\n * context: { userId: \"user123\", sessionId: \"sess456\", apiKeys: {...} }\n * });\n *\n * // Second invocation - state persists, new context\n * await agent.invoke({\n * messages: [new HumanMessage(\"Add a task to review code\")],\n * }, {\n * context: { userId: \"user123\", sessionId: \"sess789\", apiKeys: {...} }\n * });\n * // State now contains: userPreferences.theme=\"dark\", taskHistory=[\"review code\"]\n * ```\n */\n stateSchema?: StateSchema;\n /**\n * An optional schema for the context. It allows to pass in a typed context object into the agent\n * invocation and allows to access it in hooks such as `prompt`, `preModelHook`, `postModelHook`, etc.\n * As opposed to the agent state, defined in `stateSchema`, the context is not persisted between\n * agent invocations.\n *\n * @example\n * ```ts\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * contextSchema: z.object({\n * capital: z.string(),\n * }),\n * prompt: (state, config) => {\n * return [\n * new SystemMessage(`You are a helpful assistant. The capital of France is ${config.context.capital}.`),\n * ];\n * },\n * });\n *\n * const result = await agent.invoke({\n * messages: [\n * new SystemMessage(\"You are a helpful assistant.\"),\n * new HumanMessage(\"What is the capital of France?\"),\n * ],\n * }, {\n * context: {\n * capital: \"Paris\",\n * },\n * });\n * ```\n */\n contextSchema?: ContextSchema;\n /** An optional checkpoint saver to persist the agent's state. */\n checkpointSaver?: BaseCheckpointSaver | boolean;\n /** An optional checkpoint saver to persist the agent's state. Alias of \"checkpointSaver\". */\n checkpointer?: BaseCheckpointSaver | boolean;\n /** An optional list of node names to interrupt before running. */\n interruptBefore?: N[] | All;\n /** An optional list of node names to interrupt after running. */\n interruptAfter?: N[] | All;\n store?: BaseStore;\n /**\n * An optional schema for the final agent output.\n *\n * If provided, output will be formatted to match the given schema and returned in the 'structuredResponse' state key.\n * If not provided, `structuredResponse` will not be present in the output state.\n *\n * Can be passed in as:\n * - Zod schema\n * ```ts\n * const agent = createAgent({\n * responseFormat: z.object({\n * capital: z.string(),\n * }),\n * // ...\n * });\n * ```\n * - JSON schema\n * ```ts\n * const agent = createAgent({\n * responseFormat: {\n * type: \"json_schema\",\n * schema: {\n * type: \"object\",\n * properties: {\n * capital: { type: \"string\" },\n * },\n * required: [\"capital\"],\n * },\n * },\n * // ...\n * });\n * ```\n * - Create React Agent ResponseFormat\n * ```ts\n * import { providerStrategy, toolStrategy } from \"langchain\";\n * const agent = createAgent({\n * responseFormat: providerStrategy(\n * z.object({\n * capital: z.string(),\n * })\n * ),\n * // or\n * responseFormat: [\n * toolStrategy({ ... }),\n * toolStrategy({ ... }),\n * ]\n * // ...\n * });\n * ```\n *\n * **Note**: The graph will make a separate call to the LLM to generate the structured response after the agent loop is finished.\n * This is not the only strategy to get structured responses, see more options in [this guide](https://langchain-ai.github.io/langgraph/how-tos/react-agent-structured-output/).\n */\n responseFormat?: ResponseFormatType;\n /**\n * An optional name for the agent.\n */\n name?: string;\n /**\n * An optional description for the agent.\n * This can be used to describe the agent to the underlying supervisor LLM.\n */\n description?: string;\n /**\n * Use to specify how to expose the agent name to the underlying supervisor LLM.\n * - `undefined`: Relies on the LLM provider {@link AIMessage#name}. Currently, only OpenAI supports this.\n * - `\"inline\"`: Add the agent name directly into the content field of the {@link AIMessage} using XML-style tags.\n * Example: `\"How can I help you\"` -> `\"<name>agent_name</name><content>How can I help you?</content>\"`\n */\n includeAgentName?: \"inline\" | undefined;\n /**\n * An optional node to add before the `agent` node (i.e., the node that calls the LLM).\n * Useful for managing long message histories (e.g., message trimming, summarization, etc.).\n */\n preModelHook?: RunnableLike<ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], ToAnnotationRoot<StateSchema>[\"Update\"] & PreHookAnnotation[\"Update\"], LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>>;\n /**\n * An optional node to add after the `agent` node (i.e., the node that calls the LLM).\n * Useful for implementing human-in-the-loop, guardrails, validation, or other post-processing.\n */\n postModelHook?: RunnableLike<ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], ToAnnotationRoot<StateSchema>[\"Update\"] & PreHookAnnotation[\"Update\"], LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>>;\n /**\n * An optional abort signal that indicates that the overall operation should be aborted.\n */\n signal?: AbortSignal;\n /**\n * Determines the version of the graph to create.\n *\n * Can be one of\n * - `\"v1\"`: The tool node processes a single message. All tool calls in the message are\n * executed in parallel within the tool node.\n * - `\"v2\"`: The tool node processes a single tool call. Tool calls are distributed across\n * multiple instances of the tool node using the Send API.\n *\n * @default `\"v2\"`\n */\n version?: \"v1\" | \"v2\";\n};\nexport type InternalAgentState<StructuredResponseType extends Record<string, unknown> | undefined = Record<string, unknown>> = {\n messages: BaseMessage[];\n} & (StructuredResponseType extends ResponseFormatUndefined ? Record<string, never> : {\n structuredResponse: StructuredResponseType;\n});\nexport type WithStateGraphNodes<K extends string, Graph> = Graph extends StateGraph<infer SD, infer S, infer U, infer N, infer I, infer O, infer C> ? StateGraph<SD, S, U, N | K, I, O, C> : never;\n/**\n * @deprecated likely to be removed in the next version of the agent\n */\ntype DynamicLLMFunction<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = (state: ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], runtime: AgentRuntime<ToAnnotationRoot<ContextSchema>[\"State\"]>) => Promise<LanguageModelLike> | LanguageModelLike;\nexport {};\n"],"mappings":"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"}
|
package/dist/agents/types.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { AnyAnnotationRoot, PreHookAnnotation, ResponseFormatUndefined, ToAnnotationRoot } from "./annotation.js";
|
|
2
|
+
import { JsonSchemaFormat, ProviderStrategy, ResponseFormat, ToolStrategy, TypedToolStrategy } from "./responses.js";
|
|
3
3
|
import { ToolNode } from "./nodes/ToolNode.js";
|
|
4
4
|
import { BaseMessage, BaseMessageLike, SystemMessage } from "@langchain/core/messages";
|
|
5
|
-
import { BaseChatModel } from "@langchain/core/language_models/chat_models";
|
|
6
5
|
import { Runnable, RunnableLike, RunnableToolLike } from "@langchain/core/runnables";
|
|
7
6
|
import { DynamicTool, StructuredToolInterface } from "@langchain/core/tools";
|
|
8
7
|
import { LangGraphRunnableConfig, START, StateGraph } from "@langchain/langgraph";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":["InteropZodObject","InteropZodType","LangGraphRunnableConfig","START","StateGraph","LanguageModelLike","BaseChatModel","SystemMessage","BaseMessageLike","BaseMessage","All","BaseCheckpointSaver","BaseStore","DynamicTool","StructuredToolInterface","Runnable","RunnableLike","RunnableToolLike","ToolNode","PreHookAnnotation","AnyAnnotationRoot","ToAnnotationRoot","ResponseFormat","ToolStrategy","TypedToolStrategy","ProviderStrategy","ResponseFormatUndefined","JsonSchemaFormat","META_EXTRAS_DESCRIPTION_PREFIX","N","ExecutedToolCall","Record","LLMCall","ExtractZodType","T","U","ExtractZodArrayTypes","Rest","A","InferResponseFormatType","ReducedZodChannel","TReducerSchema","ServerTool","ClientTool","Prompt","StateSchema","ContextSchema","Promise","AgentState","AnnotationRoot","AgentRuntime","ContextType","AbortSignal","CreateAgentParams","StructuredResponseType","DynamicLLMFunction","ResponseFormatType","ConfigurableModelInterface","InternalAgentState","WithStateGraphNodes","Graph","SD","S","K","I","O","C"],"sources":["../../src/agents/types.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { InteropZodObject, InteropZodType } from \"@langchain/core/utils/types\";\nimport type { LangGraphRunnableConfig, START, StateGraph } from \"@langchain/langgraph\";\nimport type { LanguageModelLike } from \"@langchain/core/language_models/base\";\nimport type { BaseChatModel } from \"@langchain/core/language_models/chat_models\";\nimport type { SystemMessage, BaseMessageLike, BaseMessage } from \"@langchain/core/messages\";\nimport type { All, BaseCheckpointSaver, BaseStore } from \"@langchain/langgraph-checkpoint\";\nimport type { DynamicTool, StructuredToolInterface } from \"@langchain/core/tools\";\nimport type { Runnable, RunnableLike, RunnableToolLike } from \"@langchain/core/runnables\";\nimport type { ToolNode } from \"./nodes/ToolNode.js\";\nimport type { PreHookAnnotation, AnyAnnotationRoot, ToAnnotationRoot } from \"./annotation.js\";\nimport type { ResponseFormat, ToolStrategy, TypedToolStrategy, ProviderStrategy, ResponseFormatUndefined, JsonSchemaFormat } from \"./responses.js\";\nexport declare const META_EXTRAS_DESCRIPTION_PREFIX = \"lg:\";\nexport type N = typeof START | \"agent\" | \"tools\";\n/**\n * Information about a tool call that has been executed.\n */\nexport interface ExecutedToolCall {\n /**\n * The name of the tool that was called.\n */\n name: string;\n /**\n * The arguments that were passed to the tool.\n */\n args: Record<string, unknown>;\n /**\n * The ID of the tool call.\n */\n tool_id: string;\n /**\n * The result of the tool call (if available).\n */\n result?: unknown;\n}\n/**\n * Information about an LLM invocation.\n */\nexport interface LLMCall {\n /**\n * The messages that were sent to the LLM.\n */\n messages: BaseMessage[];\n /**\n * The response from the LLM.\n */\n response?: BaseMessage;\n}\n/**\n * Type helper to extract the inferred type from a single Zod schema or array of schemas\n */\nexport type ExtractZodType<T> = T extends InteropZodType<infer U> ? U : T extends readonly InteropZodType<any>[] ? ExtractZodArrayTypes<T> : never;\n/**\n * Type helper to extract union type from an array of Zod schemas\n */\nexport type ExtractZodArrayTypes<T extends readonly InteropZodType<any>[]> = T extends readonly [InteropZodType<infer A>, ...infer Rest] ? Rest extends readonly InteropZodType<any>[] ? A | ExtractZodArrayTypes<Rest> : A : never;\n/**\n * Type helper to extract the structured response type from responseFormat\n */\nexport type InferResponseFormatType<T> = T extends InteropZodType<infer U> ? U extends Record<string, any> ? U : Record<string, any> : T extends readonly InteropZodType<any>[] ? ExtractZodArrayTypes<T> : T extends ToolStrategy[] ? Record<string, any> // ToolStrategy arrays will be handled at runtime\n : T extends ResponseFormat ? Record<string, any> // Single ResponseFormat will be handled at runtime\n : Record<string, any>;\n/** @internal */\nexport type ReducedZodChannel<T extends InteropZodType, TReducerSchema extends InteropZodType> = T & {\n lg_reducer_schema: TReducerSchema;\n};\nexport type ServerTool = Record<string, unknown>;\nexport type ClientTool = StructuredToolInterface | DynamicTool | RunnableToolLike;\nexport type Prompt<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = SystemMessage | string | ((state: ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], config: LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>) => BaseMessageLike[] | Promise<BaseMessageLike[]>) | Runnable;\nexport type AgentState<AnnotationRoot extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = ToAnnotationRoot<AnnotationRoot>[\"State\"] & PreHookAnnotation[\"State\"];\nexport interface AgentRuntime<ContextType = Record<string, unknown>> {\n /**\n * The context of the agent.\n */\n context?: ContextType;\n /**\n * The store passed to the agent.\n */\n store?: BaseStore;\n /**\n * The writer of the agent to write to the output stream.\n */\n writer?: (chunk: unknown) => void;\n /**\n * An optional abort signal that indicates that the overall operation should be aborted.\n */\n signal?: AbortSignal;\n}\nexport type CreateAgentParams<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, StructuredResponseType extends Record<string, unknown> = Record<string, unknown>, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ResponseFormatType = InteropZodType<StructuredResponseType> | InteropZodType<unknown>[] | JsonSchemaFormat | JsonSchemaFormat[] | ResponseFormat | TypedToolStrategy<StructuredResponseType> | ToolStrategy<StructuredResponseType> | ProviderStrategy<StructuredResponseType> | ResponseFormatUndefined> = {\n /** The chat model that can utilize OpenAI-style tool calling. */\n llm?: LanguageModelLike | DynamicLLMFunction<StateSchema, ContextSchema>;\n /**\n * Initializes a ChatModel based on the provided model name and provider.\n * It supports various model providers and allows for runtime configuration of model parameters.\n *\n * @uses {@link initChatModel}\n * @example\n * ```ts\n * const agent = createAgent({\n * model: \"anthropic:claude-3-7-sonnet-latest\",\n * // ...\n * });\n * ```\n */\n model?: string;\n /** A list of tools or a ToolNode. */\n tools: ToolNode | (ServerTool | ClientTool)[];\n /**\n * An optional prompt for the LLM. This takes full graph state BEFORE the LLM is called and prepares the input to LLM.\n *\n * Can take a few different forms:\n *\n * - str: This is converted to a SystemMessage and added to the beginning of the list of messages in state[\"messages\"].\n * - SystemMessage: this is added to the beginning of the list of messages in state[\"messages\"].\n * - Function: This function should take in full graph state and the output is then passed to the language model.\n * - Runnable: This runnable should take in full graph state and the output is then passed to the language model.\n *\n * Note:\n * Prior to `v0.2.46`, the prompt was set using `stateModifier` / `messagesModifier` parameters.\n * This is now deprecated and will be removed in a future release.\n *\n * Cannot be used together with `prepareCall`.\n */\n prompt?: Prompt<StateSchema, ContextSchema>;\n /**\n * Additional state schema for the agent. It allows to define additional state keys that will be\n * persisted between agent invocations.\n *\n * @example\n * ```ts\n * // State schema defines data that persists across agent invocations\n * const stateSchema = z.object({\n * userPreferences: z.object({\n * theme: z.enum([\"light\", \"dark\"]),\n * language: z.string(),\n * }),\n * taskHistory: z.array(z.string()),\n * currentWorkflow: z.string().optional(),\n * });\n *\n * // Context schema defines runtime parameters passed per invocation\n * const contextSchema = z.object({ ... });\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [updatePreferences, addTask],\n * stateSchema, // Persisted: preferences, e.g. task history, workflow state\n * contextSchema, // Per-invocation: user ID, session, API keys, etc.\n * prompt: (state, config) => {\n * // ...\n * },\n * });\n *\n * // First invocation - state starts empty, context provided\n * await agent.invoke({\n * messages: [new HumanMessage(\"Set my theme to dark\")],\n * }, {\n * context: { userId: \"user123\", sessionId: \"sess456\", apiKeys: {...} }\n * });\n *\n * // Second invocation - state persists, new context\n * await agent.invoke({\n * messages: [new HumanMessage(\"Add a task to review code\")],\n * }, {\n * context: { userId: \"user123\", sessionId: \"sess789\", apiKeys: {...} }\n * });\n * // State now contains: userPreferences.theme=\"dark\", taskHistory=[\"review code\"]\n * ```\n */\n stateSchema?: StateSchema;\n /**\n * An optional schema for the context. It allows to pass in a typed context object into the agent\n * invocation and allows to access it in hooks such as `prompt`, `preModelHook`, `postModelHook`, etc.\n * As opposed to the agent state, defined in `stateSchema`, the context is not persisted between\n * agent invocations.\n *\n * @example\n * ```ts\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * contextSchema: z.object({\n * capital: z.string(),\n * }),\n * prompt: (state, config) => {\n * return [\n * new SystemMessage(`You are a helpful assistant. The capital of France is ${config.context.capital}.`),\n * ];\n * },\n * });\n *\n * const result = await agent.invoke({\n * messages: [\n * new SystemMessage(\"You are a helpful assistant.\"),\n * new HumanMessage(\"What is the capital of France?\"),\n * ],\n * }, {\n * context: {\n * capital: \"Paris\",\n * },\n * });\n * ```\n */\n contextSchema?: ContextSchema;\n /** An optional checkpoint saver to persist the agent's state. */\n checkpointSaver?: BaseCheckpointSaver | boolean;\n /** An optional checkpoint saver to persist the agent's state. Alias of \"checkpointSaver\". */\n checkpointer?: BaseCheckpointSaver | boolean;\n /** An optional list of node names to interrupt before running. */\n interruptBefore?: N[] | All;\n /** An optional list of node names to interrupt after running. */\n interruptAfter?: N[] | All;\n store?: BaseStore;\n /**\n * An optional schema for the final agent output.\n *\n * If provided, output will be formatted to match the given schema and returned in the 'structuredResponse' state key.\n * If not provided, `structuredResponse` will not be present in the output state.\n *\n * Can be passed in as:\n * - Zod schema\n * ```ts\n * const agent = createAgent({\n * responseFormat: z.object({\n * capital: z.string(),\n * }),\n * // ...\n * });\n * ```\n * - JSON schema\n * ```ts\n * const agent = createAgent({\n * responseFormat: {\n * type: \"json_schema\",\n * schema: {\n * type: \"object\",\n * properties: {\n * capital: { type: \"string\" },\n * },\n * required: [\"capital\"],\n * },\n * },\n * // ...\n * });\n * ```\n * - Create React Agent ResponseFormat\n * ```ts\n * import { providerStrategy, toolStrategy } from \"langchain\";\n * const agent = createAgent({\n * responseFormat: providerStrategy(\n * z.object({\n * capital: z.string(),\n * })\n * ),\n * // or\n * responseFormat: [\n * toolStrategy({ ... }),\n * toolStrategy({ ... }),\n * ]\n * // ...\n * });\n * ```\n *\n * **Note**: The graph will make a separate call to the LLM to generate the structured response after the agent loop is finished.\n * This is not the only strategy to get structured responses, see more options in [this guide](https://langchain-ai.github.io/langgraph/how-tos/react-agent-structured-output/).\n */\n responseFormat?: ResponseFormatType;\n /**\n * An optional name for the agent.\n */\n name?: string;\n /**\n * An optional description for the agent.\n * This can be used to describe the agent to the underlying supervisor LLM.\n */\n description?: string;\n /**\n * Use to specify how to expose the agent name to the underlying supervisor LLM.\n * - `undefined`: Relies on the LLM provider {@link AIMessage#name}. Currently, only OpenAI supports this.\n * - `\"inline\"`: Add the agent name directly into the content field of the {@link AIMessage} using XML-style tags.\n * Example: `\"How can I help you\"` -> `\"<name>agent_name</name><content>How can I help you?</content>\"`\n */\n includeAgentName?: \"inline\" | undefined;\n /**\n * An optional node to add before the `agent` node (i.e., the node that calls the LLM).\n * Useful for managing long message histories (e.g., message trimming, summarization, etc.).\n */\n preModelHook?: RunnableLike<ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], ToAnnotationRoot<StateSchema>[\"Update\"] & PreHookAnnotation[\"Update\"], LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>>;\n /**\n * An optional node to add after the `agent` node (i.e., the node that calls the LLM).\n * Useful for implementing human-in-the-loop, guardrails, validation, or other post-processing.\n */\n postModelHook?: RunnableLike<ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], ToAnnotationRoot<StateSchema>[\"Update\"] & PreHookAnnotation[\"Update\"], LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>>;\n /**\n * An optional abort signal that indicates that the overall operation should be aborted.\n */\n signal?: AbortSignal;\n /**\n * Determines the version of the graph to create.\n *\n * Can be one of\n * - `\"v1\"`: The tool node processes a single message. All tool calls in the message are\n * executed in parallel within the tool node.\n * - `\"v2\"`: The tool node processes a single tool call. Tool calls are distributed across\n * multiple instances of the tool node using the Send API.\n *\n * @default `\"v2\"`\n */\n version?: \"v1\" | \"v2\";\n};\nexport interface ConfigurableModelInterface {\n _queuedMethodOperations: Record<string, unknown>;\n _model: () => Promise<BaseChatModel>;\n}\nexport type InternalAgentState<StructuredResponseType extends Record<string, unknown> | undefined = Record<string, unknown>> = {\n messages: BaseMessage[];\n} & (StructuredResponseType extends ResponseFormatUndefined ? Record<string, never> : {\n structuredResponse: StructuredResponseType;\n});\nexport type WithStateGraphNodes<K extends string, Graph> = Graph extends StateGraph<infer SD, infer S, infer U, infer N, infer I, infer O, infer C> ? StateGraph<SD, S, U, N | K, I, O, C> : never;\n/**\n * @deprecated likely to be removed in the next version of the agent\n */\ntype DynamicLLMFunction<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = (state: ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], runtime: AgentRuntime<ToAnnotationRoot<ContextSchema>[\"State\"]>) => Promise<LanguageModelLike> | LanguageModelLike;\nexport {};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":["InteropZodObject","InteropZodType","LangGraphRunnableConfig","START","StateGraph","LanguageModelLike","SystemMessage","BaseMessageLike","BaseMessage","All","BaseCheckpointSaver","BaseStore","DynamicTool","StructuredToolInterface","Runnable","RunnableLike","RunnableToolLike","ToolNode","PreHookAnnotation","AnyAnnotationRoot","ToAnnotationRoot","ResponseFormatUndefined","ResponseFormat","ToolStrategy","TypedToolStrategy","ProviderStrategy","JsonSchemaFormat","META_EXTRAS_DESCRIPTION_PREFIX","N","ExecutedToolCall","Record","LLMCall","ExtractZodType","T","U","ExtractZodArrayTypes","Rest","A","InferResponseFormatType","ReducedZodChannel","TReducerSchema","ServerTool","ClientTool","Prompt","StateSchema","ContextSchema","Promise","AgentState","AnnotationRoot","AgentRuntime","ContextType","AbortSignal","CreateAgentParams","StructuredResponseType","DynamicLLMFunction","ResponseFormatType","InternalAgentState","WithStateGraphNodes","Graph","SD","S","K","I","O","C"],"sources":["../../src/agents/types.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { InteropZodObject, InteropZodType } from \"@langchain/core/utils/types\";\nimport type { LangGraphRunnableConfig, START, StateGraph } from \"@langchain/langgraph\";\nimport type { LanguageModelLike } from \"@langchain/core/language_models/base\";\nimport type { SystemMessage, BaseMessageLike, BaseMessage } from \"@langchain/core/messages\";\nimport type { All, BaseCheckpointSaver, BaseStore } from \"@langchain/langgraph-checkpoint\";\nimport type { DynamicTool, StructuredToolInterface } from \"@langchain/core/tools\";\nimport type { Runnable, RunnableLike, RunnableToolLike } from \"@langchain/core/runnables\";\nimport type { ToolNode } from \"./nodes/ToolNode.js\";\nimport type { PreHookAnnotation, AnyAnnotationRoot, ToAnnotationRoot, ResponseFormatUndefined } from \"./annotation.js\";\nimport type { ResponseFormat, ToolStrategy, TypedToolStrategy, ProviderStrategy, JsonSchemaFormat } from \"./responses.js\";\nexport declare const META_EXTRAS_DESCRIPTION_PREFIX = \"lg:\";\nexport type N = typeof START | \"agent\" | \"tools\";\n/**\n * Information about a tool call that has been executed.\n */\nexport interface ExecutedToolCall {\n /**\n * The name of the tool that was called.\n */\n name: string;\n /**\n * The arguments that were passed to the tool.\n */\n args: Record<string, unknown>;\n /**\n * The ID of the tool call.\n */\n tool_id: string;\n /**\n * The result of the tool call (if available).\n */\n result?: unknown;\n}\n/**\n * Information about an LLM invocation.\n */\nexport interface LLMCall {\n /**\n * The messages that were sent to the LLM.\n */\n messages: BaseMessage[];\n /**\n * The response from the LLM.\n */\n response?: BaseMessage;\n}\n/**\n * Type helper to extract the inferred type from a single Zod schema or array of schemas\n */\nexport type ExtractZodType<T> = T extends InteropZodType<infer U> ? U : T extends readonly InteropZodType<any>[] ? ExtractZodArrayTypes<T> : never;\n/**\n * Type helper to extract union type from an array of Zod schemas\n */\nexport type ExtractZodArrayTypes<T extends readonly InteropZodType<any>[]> = T extends readonly [InteropZodType<infer A>, ...infer Rest] ? Rest extends readonly InteropZodType<any>[] ? A | ExtractZodArrayTypes<Rest> : A : never;\n/**\n * Type helper to extract the structured response type from responseFormat\n */\nexport type InferResponseFormatType<T> = T extends InteropZodType<infer U> ? U extends Record<string, any> ? U : Record<string, any> : T extends readonly InteropZodType<any>[] ? ExtractZodArrayTypes<T> : T extends ToolStrategy[] ? Record<string, any> // ToolStrategy arrays will be handled at runtime\n : T extends ResponseFormat ? Record<string, any> // Single ResponseFormat will be handled at runtime\n : Record<string, any>;\n/** @internal */\nexport type ReducedZodChannel<T extends InteropZodType, TReducerSchema extends InteropZodType> = T & {\n lg_reducer_schema: TReducerSchema;\n};\nexport type ServerTool = Record<string, unknown>;\nexport type ClientTool = StructuredToolInterface | DynamicTool | RunnableToolLike;\nexport type Prompt<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = SystemMessage | string | ((state: ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], config: LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>) => BaseMessageLike[] | Promise<BaseMessageLike[]>) | Runnable;\nexport type AgentState<AnnotationRoot extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = ToAnnotationRoot<AnnotationRoot>[\"State\"] & PreHookAnnotation[\"State\"];\nexport interface AgentRuntime<ContextType = Record<string, unknown>> {\n /**\n * The context of the agent.\n */\n context?: ContextType;\n /**\n * The store passed to the agent.\n */\n store?: BaseStore;\n /**\n * The writer of the agent to write to the output stream.\n */\n writer?: (chunk: unknown) => void;\n /**\n * An optional abort signal that indicates that the overall operation should be aborted.\n */\n signal?: AbortSignal;\n}\nexport type CreateAgentParams<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, StructuredResponseType extends Record<string, unknown> = Record<string, unknown>, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ResponseFormatType = InteropZodType<StructuredResponseType> | InteropZodType<unknown>[] | JsonSchemaFormat | JsonSchemaFormat[] | ResponseFormat | TypedToolStrategy<StructuredResponseType> | ToolStrategy<StructuredResponseType> | ProviderStrategy<StructuredResponseType> | ResponseFormatUndefined> = {\n /** The chat model that can utilize OpenAI-style tool calling. */\n llm?: LanguageModelLike | DynamicLLMFunction<StateSchema, ContextSchema>;\n /**\n * Initializes a ChatModel based on the provided model name and provider.\n * It supports various model providers and allows for runtime configuration of model parameters.\n *\n * @uses {@link initChatModel}\n * @example\n * ```ts\n * const agent = createAgent({\n * model: \"anthropic:claude-3-7-sonnet-latest\",\n * // ...\n * });\n * ```\n */\n model?: string;\n /** A list of tools or a ToolNode. */\n tools: ToolNode | (ServerTool | ClientTool)[];\n /**\n * An optional prompt for the LLM. This takes full graph state BEFORE the LLM is called and prepares the input to LLM.\n *\n * Can take a few different forms:\n *\n * - str: This is converted to a SystemMessage and added to the beginning of the list of messages in state[\"messages\"].\n * - SystemMessage: this is added to the beginning of the list of messages in state[\"messages\"].\n * - Function: This function should take in full graph state and the output is then passed to the language model.\n * - Runnable: This runnable should take in full graph state and the output is then passed to the language model.\n *\n * Note:\n * Prior to `v0.2.46`, the prompt was set using `stateModifier` / `messagesModifier` parameters.\n * This is now deprecated and will be removed in a future release.\n *\n * Cannot be used together with `prepareCall`.\n */\n prompt?: Prompt<StateSchema, ContextSchema>;\n /**\n * Additional state schema for the agent. It allows to define additional state keys that will be\n * persisted between agent invocations.\n *\n * @example\n * ```ts\n * // State schema defines data that persists across agent invocations\n * const stateSchema = z.object({\n * userPreferences: z.object({\n * theme: z.enum([\"light\", \"dark\"]),\n * language: z.string(),\n * }),\n * taskHistory: z.array(z.string()),\n * currentWorkflow: z.string().optional(),\n * });\n *\n * // Context schema defines runtime parameters passed per invocation\n * const contextSchema = z.object({ ... });\n *\n * const agent = createAgent({\n * llm: model,\n * tools: [updatePreferences, addTask],\n * stateSchema, // Persisted: preferences, e.g. task history, workflow state\n * contextSchema, // Per-invocation: user ID, session, API keys, etc.\n * prompt: (state, config) => {\n * // ...\n * },\n * });\n *\n * // First invocation - state starts empty, context provided\n * await agent.invoke({\n * messages: [new HumanMessage(\"Set my theme to dark\")],\n * }, {\n * context: { userId: \"user123\", sessionId: \"sess456\", apiKeys: {...} }\n * });\n *\n * // Second invocation - state persists, new context\n * await agent.invoke({\n * messages: [new HumanMessage(\"Add a task to review code\")],\n * }, {\n * context: { userId: \"user123\", sessionId: \"sess789\", apiKeys: {...} }\n * });\n * // State now contains: userPreferences.theme=\"dark\", taskHistory=[\"review code\"]\n * ```\n */\n stateSchema?: StateSchema;\n /**\n * An optional schema for the context. It allows to pass in a typed context object into the agent\n * invocation and allows to access it in hooks such as `prompt`, `preModelHook`, `postModelHook`, etc.\n * As opposed to the agent state, defined in `stateSchema`, the context is not persisted between\n * agent invocations.\n *\n * @example\n * ```ts\n * const agent = createAgent({\n * llm: model,\n * tools: [getWeather],\n * contextSchema: z.object({\n * capital: z.string(),\n * }),\n * prompt: (state, config) => {\n * return [\n * new SystemMessage(`You are a helpful assistant. The capital of France is ${config.context.capital}.`),\n * ];\n * },\n * });\n *\n * const result = await agent.invoke({\n * messages: [\n * new SystemMessage(\"You are a helpful assistant.\"),\n * new HumanMessage(\"What is the capital of France?\"),\n * ],\n * }, {\n * context: {\n * capital: \"Paris\",\n * },\n * });\n * ```\n */\n contextSchema?: ContextSchema;\n /** An optional checkpoint saver to persist the agent's state. */\n checkpointSaver?: BaseCheckpointSaver | boolean;\n /** An optional checkpoint saver to persist the agent's state. Alias of \"checkpointSaver\". */\n checkpointer?: BaseCheckpointSaver | boolean;\n /** An optional list of node names to interrupt before running. */\n interruptBefore?: N[] | All;\n /** An optional list of node names to interrupt after running. */\n interruptAfter?: N[] | All;\n store?: BaseStore;\n /**\n * An optional schema for the final agent output.\n *\n * If provided, output will be formatted to match the given schema and returned in the 'structuredResponse' state key.\n * If not provided, `structuredResponse` will not be present in the output state.\n *\n * Can be passed in as:\n * - Zod schema\n * ```ts\n * const agent = createAgent({\n * responseFormat: z.object({\n * capital: z.string(),\n * }),\n * // ...\n * });\n * ```\n * - JSON schema\n * ```ts\n * const agent = createAgent({\n * responseFormat: {\n * type: \"json_schema\",\n * schema: {\n * type: \"object\",\n * properties: {\n * capital: { type: \"string\" },\n * },\n * required: [\"capital\"],\n * },\n * },\n * // ...\n * });\n * ```\n * - Create React Agent ResponseFormat\n * ```ts\n * import { providerStrategy, toolStrategy } from \"langchain\";\n * const agent = createAgent({\n * responseFormat: providerStrategy(\n * z.object({\n * capital: z.string(),\n * })\n * ),\n * // or\n * responseFormat: [\n * toolStrategy({ ... }),\n * toolStrategy({ ... }),\n * ]\n * // ...\n * });\n * ```\n *\n * **Note**: The graph will make a separate call to the LLM to generate the structured response after the agent loop is finished.\n * This is not the only strategy to get structured responses, see more options in [this guide](https://langchain-ai.github.io/langgraph/how-tos/react-agent-structured-output/).\n */\n responseFormat?: ResponseFormatType;\n /**\n * An optional name for the agent.\n */\n name?: string;\n /**\n * An optional description for the agent.\n * This can be used to describe the agent to the underlying supervisor LLM.\n */\n description?: string;\n /**\n * Use to specify how to expose the agent name to the underlying supervisor LLM.\n * - `undefined`: Relies on the LLM provider {@link AIMessage#name}. Currently, only OpenAI supports this.\n * - `\"inline\"`: Add the agent name directly into the content field of the {@link AIMessage} using XML-style tags.\n * Example: `\"How can I help you\"` -> `\"<name>agent_name</name><content>How can I help you?</content>\"`\n */\n includeAgentName?: \"inline\" | undefined;\n /**\n * An optional node to add before the `agent` node (i.e., the node that calls the LLM).\n * Useful for managing long message histories (e.g., message trimming, summarization, etc.).\n */\n preModelHook?: RunnableLike<ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], ToAnnotationRoot<StateSchema>[\"Update\"] & PreHookAnnotation[\"Update\"], LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>>;\n /**\n * An optional node to add after the `agent` node (i.e., the node that calls the LLM).\n * Useful for implementing human-in-the-loop, guardrails, validation, or other post-processing.\n */\n postModelHook?: RunnableLike<ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], ToAnnotationRoot<StateSchema>[\"Update\"] & PreHookAnnotation[\"Update\"], LangGraphRunnableConfig<ToAnnotationRoot<ContextSchema>[\"State\"]>>;\n /**\n * An optional abort signal that indicates that the overall operation should be aborted.\n */\n signal?: AbortSignal;\n /**\n * Determines the version of the graph to create.\n *\n * Can be one of\n * - `\"v1\"`: The tool node processes a single message. All tool calls in the message are\n * executed in parallel within the tool node.\n * - `\"v2\"`: The tool node processes a single tool call. Tool calls are distributed across\n * multiple instances of the tool node using the Send API.\n *\n * @default `\"v2\"`\n */\n version?: \"v1\" | \"v2\";\n};\nexport type InternalAgentState<StructuredResponseType extends Record<string, unknown> | undefined = Record<string, unknown>> = {\n messages: BaseMessage[];\n} & (StructuredResponseType extends ResponseFormatUndefined ? Record<string, never> : {\n structuredResponse: StructuredResponseType;\n});\nexport type WithStateGraphNodes<K extends string, Graph> = Graph extends StateGraph<infer SD, infer S, infer U, infer N, infer I, infer O, infer C> ? StateGraph<SD, S, U, N | K, I, O, C> : never;\n/**\n * @deprecated likely to be removed in the next version of the agent\n */\ntype DynamicLLMFunction<StateSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot, ContextSchema extends AnyAnnotationRoot | InteropZodObject = AnyAnnotationRoot> = (state: ToAnnotationRoot<StateSchema>[\"State\"] & PreHookAnnotation[\"State\"], runtime: AgentRuntime<ToAnnotationRoot<ContextSchema>[\"State\"]>) => Promise<LanguageModelLike> | LanguageModelLike;\nexport {};\n"],"mappings":"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"}
|
package/dist/agents/utils.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const require_errors = require('./errors.cjs');
|
|
3
3
|
const require_constants = require('./constants.cjs');
|
|
4
|
+
const require_model = require('./model.cjs');
|
|
4
5
|
const __langchain_core_messages = require_rolldown_runtime.__toESM(require("@langchain/core/messages"));
|
|
5
6
|
const __langchain_core_runnables = require_rolldown_runtime.__toESM(require("@langchain/core/runnables"));
|
|
6
7
|
|
|
@@ -113,14 +114,8 @@ function _removeInlineAgentName(message) {
|
|
|
113
114
|
function isClientTool(tool) {
|
|
114
115
|
return __langchain_core_runnables.Runnable.isRunnable(tool);
|
|
115
116
|
}
|
|
116
|
-
function isBaseChatModel(model) {
|
|
117
|
-
return "invoke" in model && typeof model.invoke === "function" && "_modelType" in model;
|
|
118
|
-
}
|
|
119
|
-
function isConfigurableModel(model) {
|
|
120
|
-
return typeof model === "object" && model != null && "_queuedMethodOperations" in model && "_model" in model && typeof model._model === "function";
|
|
121
|
-
}
|
|
122
117
|
function _isChatModelWithBindTools(llm) {
|
|
123
|
-
if (!isBaseChatModel(llm)) return false;
|
|
118
|
+
if (!require_model.isBaseChatModel(llm)) return false;
|
|
124
119
|
return "bindTools" in llm && typeof llm.bindTools === "function";
|
|
125
120
|
}
|
|
126
121
|
function getPromptRunnable(prompt) {
|
|
@@ -165,12 +160,12 @@ const _simpleBindTools = (llm, toolClasses, options = {}) => {
|
|
|
165
160
|
async function bindTools(llm, toolClasses, options = {}) {
|
|
166
161
|
const model = _simpleBindTools(llm, toolClasses, options);
|
|
167
162
|
if (model) return model;
|
|
168
|
-
if (isConfigurableModel(llm)) {
|
|
163
|
+
if (require_model.isConfigurableModel(llm)) {
|
|
169
164
|
const model$1 = _simpleBindTools(await llm._model(), toolClasses, options);
|
|
170
165
|
if (model$1) return model$1;
|
|
171
166
|
}
|
|
172
167
|
if (__langchain_core_runnables.RunnableSequence.isRunnableSequence(llm)) {
|
|
173
|
-
const modelStep = llm.steps.findIndex((step) => __langchain_core_runnables.RunnableBinding.isRunnableBinding(step) || isBaseChatModel(step) || isConfigurableModel(step));
|
|
168
|
+
const modelStep = llm.steps.findIndex((step) => __langchain_core_runnables.RunnableBinding.isRunnableBinding(step) || require_model.isBaseChatModel(step) || require_model.isConfigurableModel(step));
|
|
174
169
|
if (modelStep >= 0) {
|
|
175
170
|
const model$1 = _simpleBindTools(llm.steps[modelStep], toolClasses, options);
|
|
176
171
|
if (model$1) {
|
|
@@ -201,7 +196,7 @@ function validateLLMHasNoBoundTools(llm) {
|
|
|
201
196
|
/**
|
|
202
197
|
* If model is configurable, get the underlying model
|
|
203
198
|
*/
|
|
204
|
-
if (isConfigurableModel(model))
|
|
199
|
+
if (require_model.isConfigurableModel(model))
|
|
205
200
|
/**
|
|
206
201
|
* Can't validate async model retrieval in constructor
|
|
207
202
|
*/
|
|
@@ -229,25 +224,12 @@ function hasToolCalls(messages) {
|
|
|
229
224
|
const lastMessage = messages.at(-1);
|
|
230
225
|
return Boolean(__langchain_core_messages.AIMessage.isInstance(lastMessage) && lastMessage.tool_calls && lastMessage.tool_calls.length > 0);
|
|
231
226
|
}
|
|
232
|
-
const CHAT_MODELS_THAT_SUPPORT_JSON_SCHEMA_OUTPUT = ["ChatOpenAI", "FakeToolCallingModel"];
|
|
233
|
-
/**
|
|
234
|
-
* Identifies the models that support JSON schema output
|
|
235
|
-
* @param model - The model to check
|
|
236
|
-
* @returns True if the model supports JSON schema output, false otherwise
|
|
237
|
-
*/
|
|
238
|
-
function hasSupportForJsonSchemaOutput(model) {
|
|
239
|
-
if (!isBaseChatModel(model)) return false;
|
|
240
|
-
const chatModelClass = model.getName();
|
|
241
|
-
if (CHAT_MODELS_THAT_SUPPORT_JSON_SCHEMA_OUTPUT.includes(chatModelClass) && (chatModelClass === "ChatOpenAI" && "model" in model && typeof model.model === "string" && model.model.startsWith("gpt-4") || chatModelClass === "FakeToolCallingModel" && "structuredResponse" in model)) return true;
|
|
242
|
-
return false;
|
|
243
|
-
}
|
|
244
227
|
|
|
245
228
|
//#endregion
|
|
246
229
|
exports._addInlineAgentName = _addInlineAgentName;
|
|
247
230
|
exports._removeInlineAgentName = _removeInlineAgentName;
|
|
248
231
|
exports.bindTools = bindTools;
|
|
249
232
|
exports.getPromptRunnable = getPromptRunnable;
|
|
250
|
-
exports.hasSupportForJsonSchemaOutput = hasSupportForJsonSchemaOutput;
|
|
251
233
|
exports.hasToolCalls = hasToolCalls;
|
|
252
234
|
exports.isClientTool = isClientTool;
|
|
253
235
|
exports.validateLLMHasNoBoundTools = validateLLMHasNoBoundTools;
|