@langgraph-js/sdk
Version:
The UI SDK for LangGraph - seamlessly integrate your AI agents with frontend interfaces
88 lines (87 loc) • 3.47 kB
TypeScript
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>;