UNPKG

@copilotkit/runtime-client-gql

Version:

<div align="center"> <a href="https://copilotkit.ai" target="_blank"> <img src="https://github.com/copilotkit/copilotkit/raw/main/assets/banner.png" alt="CopilotKit Logo"> </a>

145 lines (119 loc) 4.38 kB
import { randomId } from "@copilotkit/shared"; import { ActionExecutionMessageInput, MessageRole, MessageStatus, ResultMessageInput, TextMessageInput, BaseMessageOutput, AgentStateMessageInput, MessageStatusCode, LangGraphInterruptEvent as GqlLangGraphInterruptEvent, MetaEventName, CopilotKitLangGraphInterruptEvent as GqlCopilotKitLangGraphInterruptEvent, } from "../graphql/@generated/graphql"; import { parseJson } from "@copilotkit/shared"; type MessageType = "TextMessage" | "ActionExecutionMessage" | "ResultMessage" | "AgentStateMessage"; export class Message { type: MessageType; id: BaseMessageOutput["id"]; createdAt: BaseMessageOutput["createdAt"]; status: MessageStatus; constructor(props: any) { props.id ??= randomId(); props.status ??= { code: MessageStatusCode.Success }; props.createdAt ??= new Date(); Object.assign(this, props); } isTextMessage(): this is TextMessage { return this.type === "TextMessage"; } isActionExecutionMessage(): this is ActionExecutionMessage { return this.type === "ActionExecutionMessage"; } isResultMessage(): this is ResultMessage { return this.type === "ResultMessage"; } isAgentStateMessage(): this is AgentStateMessage { return this.type === "AgentStateMessage"; } } // alias Role to MessageRole export const Role = MessageRole; // when constructing any message, the base fields are optional type MessageConstructorOptions = Partial<Message>; type TextMessageConstructorOptions = MessageConstructorOptions & TextMessageInput; export class TextMessage extends Message implements TextMessageConstructorOptions { role: TextMessageInput["role"]; content: TextMessageInput["content"]; parentMessageId: TextMessageInput["parentMessageId"]; constructor(props: TextMessageConstructorOptions) { super(props); this.type = "TextMessage"; } } type ActionExecutionMessageConstructorOptions = MessageConstructorOptions & Omit<ActionExecutionMessageInput, "arguments"> & { arguments: Record<string, any>; }; export class ActionExecutionMessage extends Message implements Omit<ActionExecutionMessageInput, "arguments" | "scope"> { name: ActionExecutionMessageInput["name"]; arguments: Record<string, any>; parentMessageId: ActionExecutionMessageInput["parentMessageId"]; constructor(props: ActionExecutionMessageConstructorOptions) { super(props); this.type = "ActionExecutionMessage"; } } type ResultMessageConstructorOptions = MessageConstructorOptions & ResultMessageInput; export class ResultMessage extends Message implements ResultMessageConstructorOptions { actionExecutionId: ResultMessageInput["actionExecutionId"]; actionName: ResultMessageInput["actionName"]; result: ResultMessageInput["result"]; constructor(props: ResultMessageConstructorOptions) { super(props); this.type = "ResultMessage"; } static decodeResult(result: string): any { return parseJson(result, result); } static encodeResult(result: any): string { if (result === undefined) { return ""; } else if (typeof result === "string") { return result; } else { return JSON.stringify(result); } } } export class AgentStateMessage extends Message implements Omit<AgentStateMessageInput, "state"> { agentName: AgentStateMessageInput["agentName"]; state: any; running: AgentStateMessageInput["running"]; threadId: AgentStateMessageInput["threadId"]; role: AgentStateMessageInput["role"]; nodeName: AgentStateMessageInput["nodeName"]; runId: AgentStateMessageInput["runId"]; active: AgentStateMessageInput["active"]; constructor(props: any) { super(props); this.type = "AgentStateMessage"; } } export function langGraphInterruptEvent( eventProps: Omit<LangGraphInterruptEvent, "name" | "type" | "__typename">, ): LangGraphInterruptEvent { return { ...eventProps, name: MetaEventName.LangGraphInterruptEvent, type: "MetaEvent" }; } export type LangGraphInterruptEvent<TValue extends any = any> = GqlLangGraphInterruptEvent & { value: TValue; }; type CopilotKitLangGraphInterruptEvent<TValue extends any = any> = GqlCopilotKitLangGraphInterruptEvent & { data: GqlCopilotKitLangGraphInterruptEvent["data"] & { value: TValue }; }; export type MetaEvent = LangGraphInterruptEvent | CopilotKitLangGraphInterruptEvent;