UNPKG

@langgraph-js/sdk

Version:

The UI SDK for LangGraph - seamlessly integrate your AI agents with frontend interfaces

88 lines (87 loc) 3.47 kB
import { z, ZodRawShape, ZodTypeAny } from "zod"; import { Action, Parameter } from "./copilotkit-actions.js"; import { Message } from "@langchain/langgraph-sdk"; import { ToolRenderData } from "./ToolUI.js"; export interface UnionTool<Args extends ZodRawShape, Child extends Object = Object, ResponseType = any> { name: string; description: string; parameters: Args; /** 是否直接返回工具结果,而不是通过消息返回 */ returnDirect?: boolean; execute?: ToolCallback<Args>; /** 工具执行成功后触发的附加消息 */ callbackMessage?: (result: CallToolResult) => Message[]; handler?: (args: z.objectOutputType<Args, ZodTypeAny>, context?: any) => ResponseType | Promise<ResponseType>; render?: (tool: ToolRenderData<z.objectOutputType<Args, ZodTypeAny>, ResponseType>) => Child; onlyRender?: boolean; /** 只允许指定的 agent 使用该工具,如果未指定,则所有 agent 都可以使用 */ allowAgent?: string[]; /** 只允许指定的 Graph 使用该工具 */ allowGraph?: string[]; /** 是否是纯净的 json schema 参数,而不是 zod 参数 */ isPureParams?: boolean; } export type ToolCallback<Args extends ZodRawShape> = (args: z.objectOutputType<Args, ZodTypeAny>, context?: any) => CallToolResult | Promise<CallToolResult>; export type CallToolResult = string | { type: "text"; text: string; }[]; /** 用于格式校验 */ export declare const createTool: <Args extends ZodRawShape>(tool: UnionTool<Args>) => UnionTool<Args, Object, any>; /** * create Type Safe Tool with zod and UI Render Feature */ export declare const createUITool: <Args extends ZodRawShape, Child extends Object = {}>(tool: UnionTool<Args, Child>) => UnionTool<Args, Child>; /** * 提供一种兼容 copilotkit 的定义方式,简化定义形式 * 来自 copilotkit 的 frontend action */ export declare const createFETool: <const T extends Parameter[], Args extends ZodRawShape, Child extends Object = {}>(tool: Action<T> & { allowAgent?: string[]; allowGraph?: string[]; render?: (tool: ToolRenderData<any, any>) => Child; onlyRender?: boolean; }) => UnionTool<Args>; export declare const createJSONDefineTool: <Args extends ZodRawShape>(tool: UnionTool<Args>) => { name: string; description: string; parameters: Args | ({ title?: string; default?: any; description?: string; markdownDescription?: string; } & { $schema?: string | undefined; definitions?: { [key: string]: import("zod-to-json-schema").JsonSchema7Type; } | undefined; }); }; export declare const createMCPTool: <Args extends ZodRawShape>(tool: UnionTool<Args>) => (string | Args | ((args: z.objectOutputType<Args, ZodTypeAny>) => Promise<{ content: { type: string; text: string; }[]; isError?: undefined; } | { content: { type: "text"; text: string; }[] | undefined; isError?: undefined; } | { content: { type: string; text: string; }[]; isError: boolean; }>))[]; /** * @deprecated Use createUITool instead */ export declare const createToolUI: <const T extends Parameter[], Args extends ZodRawShape, Child extends Object = {}>(tool: Action<T> & { allowAgent?: string[]; allowGraph?: string[]; render?: (tool: ToolRenderData<any, any>) => Child; onlyRender?: boolean; }) => UnionTool<Args>;