@librechat/agents 1.4.3 → 1.4.4
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/cjs/common/enum.cjs +17 -0
- package/dist/cjs/common/enum.cjs.map +1 -1
- package/dist/cjs/graphs/Graph.cjs +2 -2
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/main.cjs +9 -0
- package/dist/cjs/main.cjs.map +1 -1
- package/dist/cjs/run.cjs +2 -1
- package/dist/cjs/run.cjs.map +1 -1
- package/dist/cjs/stream.cjs +137 -9
- package/dist/cjs/stream.cjs.map +1 -1
- package/dist/esm/common/enum.mjs +18 -1
- package/dist/esm/common/enum.mjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +2 -2
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/main.mjs +2 -2
- package/dist/esm/run.mjs +2 -1
- package/dist/esm/run.mjs.map +1 -1
- package/dist/esm/stream.mjs +138 -11
- package/dist/esm/stream.mjs.map +1 -1
- package/dist/types/common/enum.d.ts +14 -0
- package/dist/types/scripts/abort.d.ts +1 -0
- package/dist/types/scripts/content.d.ts +1 -0
- package/dist/types/stream.d.ts +11 -0
- package/dist/types/types/graph.d.ts +7 -0
- package/dist/types/types/stream.d.ts +2 -2
- package/dist/types/types/tools.d.ts +14 -0
- package/package.json +4 -3
- package/src/common/enum.ts +17 -0
- package/src/graphs/Graph.ts +3 -3
- package/src/run.ts +2 -1
- package/src/scripts/abort.ts +136 -0
- package/src/scripts/content.ts +118 -0
- package/src/stream.ts +179 -11
- package/src/types/graph.ts +8 -0
- package/src/types/stream.ts +2 -2
- package/src/types/tools.ts +17 -1
package/dist/cjs/common/enum.cjs
CHANGED
|
@@ -82,6 +82,23 @@ exports.StepTypes = void 0;
|
|
|
82
82
|
StepTypes["TOOL_CALLS"] = "tool_calls";
|
|
83
83
|
StepTypes["MESSAGE_CREATION"] = "message_creation";
|
|
84
84
|
})(exports.StepTypes || (exports.StepTypes = {}));
|
|
85
|
+
exports.ContentTypes = void 0;
|
|
86
|
+
(function (ContentTypes) {
|
|
87
|
+
ContentTypes["TEXT"] = "text";
|
|
88
|
+
ContentTypes["TOOL_CALL"] = "tool_call";
|
|
89
|
+
ContentTypes["IMAGE_FILE"] = "image_file";
|
|
90
|
+
ContentTypes["IMAGE_URL"] = "image_url";
|
|
91
|
+
ContentTypes["ERROR"] = "error";
|
|
92
|
+
})(exports.ContentTypes || (exports.ContentTypes = {}));
|
|
93
|
+
exports.ToolCallTypes = void 0;
|
|
94
|
+
(function (ToolCallTypes) {
|
|
95
|
+
ToolCallTypes["FUNCTION"] = "function";
|
|
96
|
+
ToolCallTypes["RETRIEVAL"] = "retrieval";
|
|
97
|
+
ToolCallTypes["FILE_SEARCH"] = "file_search";
|
|
98
|
+
ToolCallTypes["CODE_INTERPRETER"] = "code_interpreter";
|
|
99
|
+
/* Agents Tool Call */
|
|
100
|
+
ToolCallTypes["TOOL_CALL"] = "tool_call";
|
|
101
|
+
})(exports.ToolCallTypes || (exports.ToolCallTypes = {}));
|
|
85
102
|
exports.Callback = void 0;
|
|
86
103
|
(function (Callback) {
|
|
87
104
|
Callback["TOOL_ERROR"] = "handleToolError";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum.cjs","sources":["../../../src/common/enum.ts"],"sourcesContent":["/**\n * Enum representing the various event types emitted during the execution of runnables.\n * These events provide real-time information about the progress and state of different components.\n *\n * @enum {string}\n */\nexport enum GraphEvents {\n /* Custom Events */\n\n /** [Custom] Delta event for run steps (message creation and tool calls) */\n ON_RUN_STEP = 'on_run_step',\n /** [Custom] Delta event for run steps (tool calls) */\n ON_RUN_STEP_DELTA = 'on_run_step_delta',\n /** [Custom] Completed event for run steps (tool calls) */\n ON_RUN_STEP_COMPLETED = 'on_run_step_completed',\n /** [Custom] Delta events for messages */\n ON_MESSAGE_DELTA = 'on_message_delta',\n\n /* Official Events */\n\n /** Custom event, emitted by system */\n ON_CUSTOM_EVENT = 'on_custom_event',\n /** Emitted when a chat model starts processing. */\n CHAT_MODEL_START = 'on_chat_model_start',\n\n /** Emitted when a chat model streams a chunk of its response. */\n CHAT_MODEL_STREAM = 'on_chat_model_stream',\n\n /** Emitted when a chat model completes its processing. */\n CHAT_MODEL_END = 'on_chat_model_end',\n\n /** Emitted when a language model starts processing. */\n LLM_START = 'on_llm_start',\n\n /** Emitted when a language model streams a chunk of its response. */\n LLM_STREAM = 'on_llm_stream',\n\n /** Emitted when a language model completes its processing. */\n LLM_END = 'on_llm_end',\n\n /** Emitted when a chain starts processing. */\n CHAIN_START = 'on_chain_start',\n\n /** Emitted when a chain streams a chunk of its output. */\n CHAIN_STREAM = 'on_chain_stream',\n\n /** Emitted when a chain completes its processing. */\n CHAIN_END = 'on_chain_end',\n\n /** Emitted when a tool starts its operation. */\n TOOL_START = 'on_tool_start',\n\n /** Emitted when a tool completes its operation. */\n TOOL_END = 'on_tool_end',\n\n /** Emitted when a retriever starts its operation. */\n RETRIEVER_START = 'on_retriever_start',\n\n /** Emitted when a retriever completes its operation. */\n RETRIEVER_END = 'on_retriever_end',\n\n /** Emitted when a prompt starts processing. */\n PROMPT_START = 'on_prompt_start',\n\n /** Emitted when a prompt completes its processing. */\n PROMPT_END = 'on_prompt_end'\n}\n\nexport enum Providers {\n OPENAI = 'openAI',\n BEDROCK_LEGACY = 'bedrock_legacy',\n VERTEXAI = 'vertexai',\n BEDROCK = 'bedrock',\n ANTHROPIC = 'anthropic',\n MISTRALAI = 'mistralai',\n}\n\nexport enum GraphNodeKeys {\n TOOLS = 'tools',\n AGENT = 'agent',\n PRE_TOOLS = 'pre_tools',\n POST_TOOLS = 'post_tools',\n}\n\nexport enum GraphNodeActions {\n TOOL_NODE = 'tool_node',\n CALL_MODEL = 'call_model',\n ROUTE_MESSAGE = 'route_message',\n}\n\nexport enum CommonEvents {\n LANGGRAPH = 'LangGraph',\n}\n\nexport enum StepTypes {\n TOOL_CALLS = 'tool_calls',\n MESSAGE_CREATION = 'message_creation'\n}\n\nexport enum Callback {\n TOOL_ERROR = 'handleToolError',\n TOOL_START = 'handleToolStart',\n TOOL_END = 'handleToolEnd',\n /*\n LLM_START = 'handleLLMStart',\n LLM_NEW_TOKEN = 'handleLLMNewToken',\n LLM_ERROR = 'handleLLMError',\n LLM_END = 'handleLLMEnd',\n CHAT_MODEL_START = 'handleChatModelStart',\n CHAIN_START = 'handleChainStart',\n CHAIN_ERROR = 'handleChainError',\n CHAIN_END = 'handleChainEnd',\n TEXT = 'handleText',\n AGENT_ACTION = 'handleAgentAction',\n AGENT_END = 'handleAgentEnd',\n RETRIEVER_START = 'handleRetrieverStart',\n RETRIEVER_END = 'handleRetrieverEnd',\n RETRIEVER_ERROR = 'handleRetrieverError',\n CUSTOM_EVENT = 'handleCustomEvent'\n */\n}\n"],"names":["GraphEvents","Providers","GraphNodeKeys","GraphNodeActions","CommonEvents","StepTypes","Callback"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enum.cjs","sources":["../../../src/common/enum.ts"],"sourcesContent":["/**\n * Enum representing the various event types emitted during the execution of runnables.\n * These events provide real-time information about the progress and state of different components.\n *\n * @enum {string}\n */\nexport enum GraphEvents {\n /* Custom Events */\n\n /** [Custom] Delta event for run steps (message creation and tool calls) */\n ON_RUN_STEP = 'on_run_step',\n /** [Custom] Delta event for run steps (tool calls) */\n ON_RUN_STEP_DELTA = 'on_run_step_delta',\n /** [Custom] Completed event for run steps (tool calls) */\n ON_RUN_STEP_COMPLETED = 'on_run_step_completed',\n /** [Custom] Delta events for messages */\n ON_MESSAGE_DELTA = 'on_message_delta',\n\n /* Official Events */\n\n /** Custom event, emitted by system */\n ON_CUSTOM_EVENT = 'on_custom_event',\n /** Emitted when a chat model starts processing. */\n CHAT_MODEL_START = 'on_chat_model_start',\n\n /** Emitted when a chat model streams a chunk of its response. */\n CHAT_MODEL_STREAM = 'on_chat_model_stream',\n\n /** Emitted when a chat model completes its processing. */\n CHAT_MODEL_END = 'on_chat_model_end',\n\n /** Emitted when a language model starts processing. */\n LLM_START = 'on_llm_start',\n\n /** Emitted when a language model streams a chunk of its response. */\n LLM_STREAM = 'on_llm_stream',\n\n /** Emitted when a language model completes its processing. */\n LLM_END = 'on_llm_end',\n\n /** Emitted when a chain starts processing. */\n CHAIN_START = 'on_chain_start',\n\n /** Emitted when a chain streams a chunk of its output. */\n CHAIN_STREAM = 'on_chain_stream',\n\n /** Emitted when a chain completes its processing. */\n CHAIN_END = 'on_chain_end',\n\n /** Emitted when a tool starts its operation. */\n TOOL_START = 'on_tool_start',\n\n /** Emitted when a tool completes its operation. */\n TOOL_END = 'on_tool_end',\n\n /** Emitted when a retriever starts its operation. */\n RETRIEVER_START = 'on_retriever_start',\n\n /** Emitted when a retriever completes its operation. */\n RETRIEVER_END = 'on_retriever_end',\n\n /** Emitted when a prompt starts processing. */\n PROMPT_START = 'on_prompt_start',\n\n /** Emitted when a prompt completes its processing. */\n PROMPT_END = 'on_prompt_end'\n}\n\nexport enum Providers {\n OPENAI = 'openAI',\n BEDROCK_LEGACY = 'bedrock_legacy',\n VERTEXAI = 'vertexai',\n BEDROCK = 'bedrock',\n ANTHROPIC = 'anthropic',\n MISTRALAI = 'mistralai',\n}\n\nexport enum GraphNodeKeys {\n TOOLS = 'tools',\n AGENT = 'agent',\n PRE_TOOLS = 'pre_tools',\n POST_TOOLS = 'post_tools',\n}\n\nexport enum GraphNodeActions {\n TOOL_NODE = 'tool_node',\n CALL_MODEL = 'call_model',\n ROUTE_MESSAGE = 'route_message',\n}\n\nexport enum CommonEvents {\n LANGGRAPH = 'LangGraph',\n}\n\nexport enum StepTypes {\n TOOL_CALLS = 'tool_calls',\n MESSAGE_CREATION = 'message_creation'\n}\n\nexport enum ContentTypes {\n TEXT = 'text',\n TOOL_CALL = 'tool_call',\n IMAGE_FILE = 'image_file',\n IMAGE_URL = 'image_url',\n ERROR = 'error',\n}\n\nexport enum ToolCallTypes {\n FUNCTION = 'function',\n RETRIEVAL = 'retrieval',\n FILE_SEARCH = 'file_search',\n CODE_INTERPRETER = 'code_interpreter',\n /* Agents Tool Call */\n TOOL_CALL = 'tool_call',\n}\n\nexport enum Callback {\n TOOL_ERROR = 'handleToolError',\n TOOL_START = 'handleToolStart',\n TOOL_END = 'handleToolEnd',\n /*\n LLM_START = 'handleLLMStart',\n LLM_NEW_TOKEN = 'handleLLMNewToken',\n LLM_ERROR = 'handleLLMError',\n LLM_END = 'handleLLMEnd',\n CHAT_MODEL_START = 'handleChatModelStart',\n CHAIN_START = 'handleChainStart',\n CHAIN_ERROR = 'handleChainError',\n CHAIN_END = 'handleChainEnd',\n TEXT = 'handleText',\n AGENT_ACTION = 'handleAgentAction',\n AGENT_END = 'handleAgentEnd',\n RETRIEVER_START = 'handleRetrieverStart',\n RETRIEVER_END = 'handleRetrieverEnd',\n RETRIEVER_ERROR = 'handleRetrieverError',\n CUSTOM_EVENT = 'handleCustomEvent'\n */\n}\n"],"names":["GraphEvents","Providers","GraphNodeKeys","GraphNodeActions","CommonEvents","StepTypes","ContentTypes","ToolCallTypes","Callback"],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ class StandardGraph extends Graph {
|
|
|
36
36
|
toolMap;
|
|
37
37
|
startIndex = 0;
|
|
38
38
|
provider;
|
|
39
|
-
constructor({ runId, tools, toolMap, provider, clientOptions, instructions, additional_instructions, }) {
|
|
39
|
+
constructor({ runId, tools, toolMap, provider, clientOptions, instructions, additional_instructions = '', }) {
|
|
40
40
|
super();
|
|
41
41
|
this.runId = runId;
|
|
42
42
|
this.tools = tools;
|
|
@@ -45,7 +45,7 @@ class StandardGraph extends Graph {
|
|
|
45
45
|
this.clientOptions = clientOptions;
|
|
46
46
|
this.graphState = this.createGraphState();
|
|
47
47
|
this.boundModel = this.initializeModel();
|
|
48
|
-
let finalInstructions = instructions;
|
|
48
|
+
let finalInstructions = instructions ?? '';
|
|
49
49
|
if (additional_instructions) {
|
|
50
50
|
finalInstructions = finalInstructions ? `${finalInstructions}\n\n${additional_instructions}` : additional_instructions;
|
|
51
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graph.cjs","sources":["../../../src/graphs/Graph.ts"],"sourcesContent":["// src/graphs/Graph.ts\nimport { nanoid } from 'nanoid';\nimport { concat } from '@langchain/core/utils/stream';\nimport { ToolNode } from '@langchain/langgraph/prebuilt';\nimport { START, StateGraph } from '@langchain/langgraph';\nimport { Runnable, RunnableConfig } from '@langchain/core/runnables';\nimport { dispatchCustomEvent } from '@langchain/core/callbacks/dispatch';\nimport { AIMessageChunk, ToolMessage, SystemMessage } from '@langchain/core/messages';\nimport type { BaseMessage } from '@langchain/core/messages';\nimport type { StructuredTool } from '@langchain/core/tools';\nimport type * as t from '@/types';\nimport { Providers, GraphEvents, GraphNodeKeys, StepTypes, Callback } from '@/common';\nimport { ToolNode as CustomToolNode, toolsCondition } from '@/tools/ToolNode';\nimport { modifyDeltaProperties, convertMessagesToContent } from '@/messages';\nimport { getChatModelClass } from '@/llm/providers';\nimport { resetIfNotEmpty, joinKeys } from '@/utils';\nimport { HandlerRegistry } from '@/events';\n\nconst { AGENT, TOOLS } = GraphNodeKeys;\nexport type GraphNode = GraphNodeKeys | typeof START;\nexport type ClientCallback<T extends unknown[]> = (graph: StandardGraph, ...args: T) => void;\nexport type ClientCallbacks = {\n [Callback.TOOL_ERROR]?: ClientCallback<[Error, string]>;\n [Callback.TOOL_START]?: ClientCallback<unknown[]>;\n [Callback.TOOL_END]?: ClientCallback<unknown[]>;\n}\nexport type SystemCallbacks = {\n [K in keyof ClientCallbacks]: ClientCallbacks[K] extends ClientCallback<infer Args>\n ? (...args: Args) => void\n : never;\n};\n\nexport abstract class Graph<\n T extends t.BaseGraphState = t.BaseGraphState,\n TNodeName extends string = string,\n> {\n abstract resetValues(): void;\n abstract createGraphState(): t.GraphStateChannels<T>;\n abstract initializeTools(): CustomToolNode<T> | ToolNode<T>;\n abstract initializeModel(): Runnable;\n abstract getRunMessages(): BaseMessage[] | undefined;\n abstract getContentParts(): t.MessageContentComplex[] | undefined;\n abstract generateStepId(stepKey: string): [string, number];\n abstract getKeyList(metadata: Record<string, unknown> | undefined): (string | number | undefined)[];\n abstract getStepKey(metadata: Record<string, unknown> | undefined): string;\n abstract checkKeyList(keyList: (string | number | undefined)[]): boolean;\n abstract getStepIdByKey(stepKey: string, index?: number): string\n abstract getRunStep(stepId: string): t.RunStep | undefined;\n abstract dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): void;\n abstract dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): void;\n abstract dispatchMessageDelta(id: string, delta: t.MessageDelta): void;\n abstract handleToolCallCompleted(data: t.ToolEndData): void;\n\n abstract createCallModel(): (state: T, config?: RunnableConfig) => Promise<Partial<T>>;\n abstract createWorkflow(): t.CompiledWorkflow<T, Partial<T>, TNodeName>;\n messageIdsByStepKey: Map<string, string> = new Map();\n prelimMessageIdsByStepKey: Map<string, string> = new Map();\n config: RunnableConfig | undefined;\n contentData: t.RunStep[] = [];\n stepKeyIds: Map<string, string[]> = new Map<string, string[]>();\n contentIndexMap: Map<string, number> = new Map();\n toolCallStepIds: Map<string, string> = new Map();\n}\n\nexport class StandardGraph extends Graph<\n t.BaseGraphState,\n GraphNode\n> {\n private graphState: t.GraphStateChannels<t.BaseGraphState>;\n private clientOptions: Record<string, unknown>;\n private boundModel: Runnable;\n handlerRegistry: HandlerRegistry | undefined;\n systemMessage: SystemMessage | undefined;\n messages: BaseMessage[] = [];\n runId: string | undefined;\n tools?: t.GenericTool[];\n toolMap?: t.ToolMap;\n startIndex: number = 0;\n provider: Providers;\n\n constructor({\n runId,\n tools,\n toolMap,\n provider,\n clientOptions,\n instructions,\n additional_instructions,\n } : {\n runId?: string;\n provider: Providers;\n tools?: t.GenericTool[];\n toolMap?: t.ToolMap;\n clientOptions: Record<string, unknown>;\n instructions?: string;\n additional_instructions?: string;\n }) {\n super();\n this.runId = runId;\n this.tools = tools;\n this.toolMap = toolMap;\n this.provider = provider;\n this.clientOptions = clientOptions;\n this.graphState = this.createGraphState();\n this.boundModel = this.initializeModel();\n\n let finalInstructions = instructions;\n if (additional_instructions) {\n finalInstructions = finalInstructions ? `${finalInstructions}\\n\\n${additional_instructions}` : additional_instructions;\n }\n\n if (finalInstructions) {\n this.systemMessage = new SystemMessage(finalInstructions);\n }\n }\n\n /* Init */\n\n resetValues(): void {\n this.messages = [];\n this.config = resetIfNotEmpty(this.config, undefined);\n this.contentData = resetIfNotEmpty(this.contentData, []);\n this.stepKeyIds = resetIfNotEmpty(this.stepKeyIds, new Map());\n this.toolCallStepIds = resetIfNotEmpty(this.toolCallStepIds, new Map());\n this.contentIndexMap = resetIfNotEmpty(this.contentIndexMap, new Map());\n this.messageIdsByStepKey = resetIfNotEmpty(this.messageIdsByStepKey, new Map());\n this.prelimMessageIdsByStepKey = resetIfNotEmpty(this.prelimMessageIdsByStepKey, new Map());\n }\n\n /* Run Step Processing */\n\n getRunStep(stepId: string): t.RunStep | undefined {\n const index = this.contentIndexMap.get(stepId);\n if (index !== undefined) {\n return this.contentData[index];\n }\n return undefined;\n }\n\n getStepKey(metadata: Record<string, unknown> | undefined): string {\n if (!metadata) return '';\n\n const keyList = this.getKeyList(metadata);\n if (this.checkKeyList(keyList)) {\n throw new Error('Missing metadata');\n }\n\n return joinKeys(keyList);\n }\n\n getStepIdByKey(stepKey: string, index?: number): string {\n const stepIds = this.stepKeyIds.get(stepKey);\n if (!stepIds) {\n throw new Error(`No step IDs found for stepKey ${stepKey}`);\n }\n\n if (index === undefined) {\n return stepIds[stepIds.length - 1];\n }\n\n return stepIds[index];\n }\n\n generateStepId(stepKey: string): [string, number] {\n const stepIds = this.stepKeyIds.get(stepKey);\n let newStepId: string | undefined;\n let stepIndex = 0;\n if (stepIds) {\n stepIndex = stepIds.length;\n newStepId = `step_${nanoid()}`;\n stepIds.push(newStepId);\n this.stepKeyIds.set(stepKey, stepIds);\n } else {\n newStepId = `step_${nanoid()}`;\n this.stepKeyIds.set(stepKey, [newStepId]);\n }\n\n return [newStepId, stepIndex];\n }\n\n getKeyList(metadata: Record<string, unknown> | undefined): (string | number | undefined)[] {\n if (!metadata) return [];\n\n return [\n metadata.thread_id as string,\n metadata.langgraph_node as string,\n metadata.langgraph_step as number,\n metadata.langgraph_task_idx as number,\n ];\n }\n\n checkKeyList(keyList: (string | number | undefined)[]): boolean {\n return keyList.some((key) => key === undefined);\n }\n\n /* Misc.*/\n\n getRunMessages(): BaseMessage[] | undefined {\n return this.messages.slice(this.startIndex);\n }\n\n getContentParts(): t.MessageContentComplex[] | undefined {\n return convertMessagesToContent(this.messages.slice(this.startIndex));\n }\n\n /* Graph */\n\n createGraphState(): t.GraphStateChannels<t.BaseGraphState> {\n return {\n messages: {\n value: (x: BaseMessage[], y: BaseMessage[]): BaseMessage[] => {\n if (!x.length) {\n if (this.systemMessage) {\n x.push(this.systemMessage);\n }\n\n this.startIndex = x.length + y.length;\n }\n const current = x.concat(y);\n this.messages = current;\n return current;\n },\n default: () => [],\n },\n };\n }\n\n initializeTools(): CustomToolNode<t.BaseGraphState> | ToolNode<t.BaseGraphState> {\n // return new ToolNode<t.BaseGraphState>(this.tools);\n return new CustomToolNode<t.BaseGraphState>({\n tools: this.tools || [],\n toolMap: this.toolMap,\n });\n }\n\n initializeModel(): Runnable {\n const ChatModelClass = getChatModelClass(this.provider);\n const model = new ChatModelClass(this.clientOptions);\n if (!this.tools || this.tools.length === 0) {\n return model;\n }\n return model.bindTools(this.tools as StructuredTool[]);\n }\n\n createCallModel() {\n return async (state: t.BaseGraphState, config?: RunnableConfig): Promise<Partial<t.BaseGraphState>> => {\n const { provider } = (config?.configurable as t.GraphConfig) ?? {} ;\n if (!config || !provider) {\n throw new Error(`No ${config ? 'provider' : 'config'} provided`);\n }\n this.config = config;\n const { messages } = state;\n\n const finalMessages = messages;\n const lastMessageX = finalMessages[finalMessages.length - 2];\n const lastMessageY = finalMessages[finalMessages.length - 1];\n\n if (\n provider === Providers.BEDROCK\n && lastMessageX instanceof AIMessageChunk\n && lastMessageY instanceof ToolMessage\n && typeof lastMessageX.content === 'string'\n ) {\n finalMessages[finalMessages.length - 2].content = '';\n }\n\n if (this.tools?.length && (provider === Providers.ANTHROPIC || provider === Providers.BEDROCK)) {\n const stream = await this.boundModel.stream(finalMessages, config);\n let finalChunk: AIMessageChunk | undefined;\n for await (const chunk of stream) {\n dispatchCustomEvent(GraphEvents.CHAT_MODEL_STREAM, { chunk }, config);\n if (!finalChunk) {\n finalChunk = chunk;\n } else {\n finalChunk = concat(finalChunk, chunk);\n }\n }\n\n finalChunk = modifyDeltaProperties(finalChunk);\n return { messages: [finalChunk as AIMessageChunk] };\n }\n\n const finalMessage = await this.boundModel.invoke(finalMessages, config);\n return { messages: [finalMessage as AIMessageChunk] };\n };\n }\n\n createWorkflow(): t.CompiledWorkflow<t.BaseGraphState, Partial<t.BaseGraphState>, GraphNode> {\n const routeMessage = (state: t.BaseGraphState, config?: RunnableConfig): string => {\n this.config = config;\n // const lastMessage = state.messages[state.messages.length - 1] as AIMessage;\n // if (!lastMessage?.tool_calls?.length) {\n // return END;\n // }\n // return TOOLS;\n return toolsCondition(state);\n };\n\n const workflow = new StateGraph<t.BaseGraphState, Partial<t.BaseGraphState>, GraphNode>({\n channels: this.graphState,\n })\n .addNode(AGENT, this.createCallModel())\n .addNode(TOOLS, this.initializeTools())\n .addEdge(START, AGENT)\n .addConditionalEdges(AGENT, routeMessage)\n .addEdge(TOOLS, AGENT);\n\n return workflow.compile();\n }\n\n /* Dispatchers */\n\n dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): void {\n if (!this.config) {\n throw new Error('No config provided');\n }\n\n const [stepId, stepIndex] = this.generateStepId(stepKey);\n if (stepDetails.type === StepTypes.TOOL_CALLS && stepDetails.tool_calls) {\n for (const tool_call of stepDetails.tool_calls) {\n if (!tool_call.id || this.toolCallStepIds.has(tool_call.id)) {\n continue;\n }\n this.toolCallStepIds.set(tool_call.id, stepId);\n }\n }\n\n const runStep: t.RunStep = {\n stepIndex,\n id: stepId,\n type: stepDetails.type,\n index: this.contentData.length,\n stepDetails,\n usage: null,\n };\n\n if (this.runId) {\n runStep.runId = this.runId;\n }\n\n this.contentData.push(runStep);\n this.contentIndexMap.set(stepId, runStep.index);\n dispatchCustomEvent(GraphEvents.ON_RUN_STEP, runStep, this.config);\n }\n\n handleToolCallCompleted(data: t.ToolEndData, metadata?: Record<string, unknown>): void {\n if (!this.config) {\n throw new Error('No config provided');\n }\n\n const { input, output } = data;\n const { tool_call_id } = output;\n const stepId = this.toolCallStepIds.get(tool_call_id);\n if (!stepId) {\n throw new Error(`No stepId found for tool_call_id ${tool_call_id}`);\n }\n const runStep = this.getRunStep(stepId);\n if (!runStep) {\n throw new Error(`No run step found for stepId ${stepId}`);\n }\n\n if (!data?.output) {\n // console.warn('No output found in tool_end event');\n // console.dir(data, { depth: null });\n return;\n }\n\n const args = typeof input === 'string' ? input : input.input;\n const tool_call = {\n args: typeof args === 'string' ? args : JSON.stringify(args),\n name: output.name ?? '',\n id: output.tool_call_id,\n output: typeof output.content === 'string'\n ? output.content\n : JSON.stringify(output.content),\n progress: 1,\n };\n\n this.handlerRegistry?.getHandler(GraphEvents.ON_RUN_STEP_COMPLETED)?.handle(\n GraphEvents.ON_RUN_STEP_COMPLETED,\n { result: {\n id: stepId,\n index: runStep.index,\n type: 'tool_call',\n tool_call\n } as t.ToolCompleteEvent,\n },\n metadata,\n this,\n );\n }\n\n dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): void {\n if (!this.config) {\n throw new Error('No config provided');\n } else if (!id) {\n throw new Error('No step ID found');\n }\n const runStepDelta: t.RunStepDeltaEvent = {\n id,\n delta,\n };\n dispatchCustomEvent(GraphEvents.ON_RUN_STEP_DELTA, runStepDelta, this.config);\n }\n\n dispatchMessageDelta(id: string, delta: t.MessageDelta): void {\n if (!this.config) {\n throw new Error('No config provided');\n }\n const messageDelta: t.MessageDeltaEvent = {\n id,\n delta,\n };\n dispatchCustomEvent(GraphEvents.ON_MESSAGE_DELTA, messageDelta, this.config);\n }\n}\n"],"names":["GraphNodeKeys","SystemMessage","resetIfNotEmpty","joinKeys","nanoid","convertMessagesToContent","CustomToolNode","getChatModelClass","messages","Providers","AIMessageChunk","ToolMessage","stream","dispatchCustomEvent","GraphEvents","concat","modifyDeltaProperties","toolsCondition","StateGraph","START","StepTypes"],"mappings":";;;;;;;;;;;;;;;AAAA;AAkBA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAGA,mBAAa,CAAC;MAcjB,KAAK,CAAA;AAuBzB,IAAA,mBAAmB,GAAwB,IAAI,GAAG,EAAE,CAAC;AACrD,IAAA,yBAAyB,GAAwB,IAAI,GAAG,EAAE,CAAC;AAC3D,IAAA,MAAM,CAA6B;IACnC,WAAW,GAAgB,EAAE,CAAC;AAC9B,IAAA,UAAU,GAA0B,IAAI,GAAG,EAAoB,CAAC;AAChE,IAAA,eAAe,GAAwB,IAAI,GAAG,EAAE,CAAC;AACjD,IAAA,eAAe,GAAwB,IAAI,GAAG,EAAE,CAAC;AAClD,CAAA;AAEK,MAAO,aAAc,SAAQ,KAGlC,CAAA;AACS,IAAA,UAAU,CAAyC;AACnD,IAAA,aAAa,CAA0B;AACvC,IAAA,UAAU,CAAW;AAC7B,IAAA,eAAe,CAA8B;AAC7C,IAAA,aAAa,CAA4B;IACzC,QAAQ,GAAkB,EAAE,CAAC;AAC7B,IAAA,KAAK,CAAqB;AAC1B,IAAA,KAAK,CAAmB;AACxB,IAAA,OAAO,CAAa;IACpB,UAAU,GAAW,CAAC,CAAC;AACvB,IAAA,QAAQ,CAAY;AAEpB,IAAA,WAAA,CAAY,EACV,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,uBAAuB,GASxB,EAAA;AACC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzC,IAAI,iBAAiB,GAAG,YAAY,CAAC;QACrC,IAAI,uBAAuB,EAAE;AAC3B,YAAA,iBAAiB,GAAG,iBAAiB,GAAG,CAAG,EAAA,iBAAiB,CAAO,IAAA,EAAA,uBAAuB,CAAE,CAAA,GAAG,uBAAuB,CAAC;SACxH;QAED,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,aAAa,GAAG,IAAIC,sBAAa,CAAC,iBAAiB,CAAC,CAAC;SAC3D;KACF;;IAID,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,GAAGC,qBAAe,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,GAAGA,qBAAe,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,UAAU,GAAGA,qBAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,eAAe,GAAGA,qBAAe,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,eAAe,GAAGA,qBAAe,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,mBAAmB,GAAGA,qBAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,yBAAyB,GAAGA,qBAAe,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;KAC7F;;AAID,IAAA,UAAU,CAAC,MAAc,EAAA;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/C,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAChC;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAED,IAAA,UAAU,CAAC,QAA6C,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE,CAAC;QAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1C,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACrC;AAED,QAAA,OAAOC,cAAQ,CAAC,OAAO,CAAC,CAAC;KAC1B;IAED,cAAc,CAAC,OAAe,EAAE,KAAc,EAAA;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,CAAA,CAAE,CAAC,CAAC;SAC7D;AAED,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACpC;AAED,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;KACvB;AAED,IAAA,cAAc,CAAC,OAAe,EAAA;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7C,QAAA,IAAI,SAA6B,CAAC;QAClC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,OAAO,EAAE;AACX,YAAA,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;AAC3B,YAAA,SAAS,GAAG,CAAA,KAAA,EAAQC,aAAM,EAAE,EAAE,CAAC;AAC/B,YAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACvC;aAAM;AACL,YAAA,SAAS,GAAG,CAAA,KAAA,EAAQA,aAAM,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;SAC3C;AAED,QAAA,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC/B;AAED,IAAA,UAAU,CAAC,QAA6C,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE,CAAC;QAEzB,OAAO;AACL,YAAA,QAAQ,CAAC,SAAmB;AAC5B,YAAA,QAAQ,CAAC,cAAwB;AACjC,YAAA,QAAQ,CAAC,cAAwB;AACjC,YAAA,QAAQ,CAAC,kBAA4B;SACtC,CAAC;KACH;AAED,IAAA,YAAY,CAAC,OAAwC,EAAA;AACnD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,SAAS,CAAC,CAAC;KACjD;;IAID,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7C;IAED,eAAe,GAAA;AACb,QAAA,OAAOC,mCAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KACvE;;IAID,gBAAgB,GAAA;QACd,OAAO;AACL,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,CAAC,CAAgB,EAAE,CAAgB,KAAmB;AAC3D,oBAAA,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AACb,wBAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,4BAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;yBAC5B;wBAED,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;qBACvC;oBACD,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,oBAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,oBAAA,OAAO,OAAO,CAAC;iBAChB;AACD,gBAAA,OAAO,EAAE,MAAM,EAAE;AAClB,aAAA;SACF,CAAC;KACH;IAED,eAAe,GAAA;;QAEb,OAAO,IAAIC,iBAAc,CAAmB;AAC1C,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,SAAA,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;QACb,MAAM,cAAc,GAAGC,2BAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,YAAA,OAAO,KAAK,CAAC;SACd;QACD,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAyB,CAAC,CAAC;KACxD;IAED,eAAe,GAAA;AACb,QAAA,OAAO,OAAO,KAAuB,EAAE,MAAuB,KAAwC;YACpG,MAAM,EAAE,QAAQ,EAAE,GAAI,MAAM,EAAE,YAA8B,IAAI,EAAE,CAAE;AACpE,YAAA,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE;AACxB,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,GAAA,EAAM,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAA,SAAA,CAAW,CAAC,CAAC;aAClE;AACD,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,YAAA,MAAM,YAAEC,UAAQ,EAAE,GAAG,KAAK,CAAC;YAE3B,MAAM,aAAa,GAAGA,UAAQ,CAAC;YAC/B,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7D,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAE7D,YAAA,IACE,QAAQ,KAAKC,eAAS,CAAC,OAAO;AAC3B,mBAAA,YAAY,YAAYC,uBAAc;AACtC,mBAAA,YAAY,YAAYC,oBAAW;AACnC,mBAAA,OAAO,YAAY,CAAC,OAAO,KAAK,QAAQ,EAC3C;gBACA,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC;aACtD;YAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,QAAQ,KAAKF,eAAS,CAAC,SAAS,IAAI,QAAQ,KAAKA,eAAS,CAAC,OAAO,CAAC,EAAE;AAC9F,gBAAA,MAAMG,QAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACnE,gBAAA,IAAI,UAAsC,CAAC;AAC3C,gBAAA,WAAW,MAAM,KAAK,IAAIA,QAAM,EAAE;oBAChCC,4BAAmB,CAACC,iBAAW,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;oBACtE,IAAI,CAAC,UAAU,EAAE;wBACf,UAAU,GAAG,KAAK,CAAC;qBACpB;yBAAM;AACL,wBAAA,UAAU,GAAGC,aAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;qBACxC;iBACF;AAED,gBAAA,UAAU,GAAGC,gCAAqB,CAAC,UAAU,CAAC,CAAC;AAC/C,gBAAA,OAAO,EAAE,QAAQ,EAAE,CAAC,UAA4B,CAAC,EAAE,CAAC;aACrD;AAED,YAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACzE,YAAA,OAAO,EAAE,QAAQ,EAAE,CAAC,YAA8B,CAAC,EAAE,CAAC;AACxD,SAAC,CAAC;KACH;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,YAAY,GAAG,CAAC,KAAuB,EAAE,MAAuB,KAAY;AAChF,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;;;;;AAMrB,YAAA,OAAOC,uBAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAC,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAG,IAAIC,oBAAU,CAAyD;YACtF,QAAQ,EAAE,IAAI,CAAC,UAAU;SAC1B,CAAC;AACC,aAAA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACtC,aAAA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACtC,aAAA,OAAO,CAACC,eAAK,EAAE,KAAK,CAAC;AACrB,aAAA,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC;AACxC,aAAA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEzB,QAAA,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;KAC3B;;IAID,eAAe,CAAC,OAAe,EAAE,WAA0B,EAAA;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;AAED,QAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACzD,QAAA,IAAI,WAAW,CAAC,IAAI,KAAKC,eAAS,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,EAAE;AACvE,YAAA,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,UAAU,EAAE;AAC9C,gBAAA,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;oBAC3D,SAAS;iBACV;gBACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;aAChD;SACF;AAED,QAAA,MAAM,OAAO,GAAc;YACzB,SAAS;AACT,YAAA,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;YAC9B,WAAW;AACX,YAAA,KAAK,EAAE,IAAI;SACZ,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC5B;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAChDP,4BAAmB,CAACC,iBAAW,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACpE;IAED,uBAAuB,CAAC,IAAmB,EAAE,QAAmC,EAAA;AAC9E,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;AAED,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AAC/B,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,YAAY,CAAA,CAAE,CAAC,CAAC;SACrE;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAA,CAAE,CAAC,CAAC;SAC3D;AAED,QAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;;;YAGjB,OAAO;SACR;AAED,QAAA,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC7D,QAAA,MAAM,SAAS,GAAG;AAChB,YAAA,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC5D,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;YACvB,EAAE,EAAE,MAAM,CAAC,YAAY;AACvB,YAAA,MAAM,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;kBACtC,MAAM,CAAC,OAAO;kBACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;AAClC,YAAA,QAAQ,EAAE,CAAC;SACZ,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,EAAE,UAAU,CAACA,iBAAW,CAAC,qBAAqB,CAAC,EAAE,MAAM,CACzEA,iBAAW,CAAC,qBAAqB,EACjC,EAAE,MAAM,EAAE;AACR,gBAAA,EAAE,EAAE,MAAM;gBACV,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,gBAAA,IAAI,EAAE,WAAW;gBACjB,SAAS;AACa,aAAA;AACvB,SAAA,EACD,QAAQ,EACR,IAAI,CACL,CAAC;KACH;IAED,oBAAoB,CAAC,EAAU,EAAE,KAAsB,EAAA;AACrD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;aAAM,IAAI,CAAC,EAAE,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACrC;AACD,QAAA,MAAM,YAAY,GAAwB;YACxC,EAAE;YACF,KAAK;SACN,CAAC;QACFD,4BAAmB,CAACC,iBAAW,CAAC,iBAAiB,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/E;IAED,oBAAoB,CAAC,EAAU,EAAE,KAAqB,EAAA;AACpD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;AACD,QAAA,MAAM,YAAY,GAAwB;YACxC,EAAE;YACF,KAAK;SACN,CAAC;QACFD,4BAAmB,CAACC,iBAAW,CAAC,gBAAgB,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9E;AACF;;;;;"}
|
|
1
|
+
{"version":3,"file":"Graph.cjs","sources":["../../../src/graphs/Graph.ts"],"sourcesContent":["// src/graphs/Graph.ts\nimport { nanoid } from 'nanoid';\nimport { concat } from '@langchain/core/utils/stream';\nimport { ToolNode } from '@langchain/langgraph/prebuilt';\nimport { START, StateGraph } from '@langchain/langgraph';\nimport { Runnable, RunnableConfig } from '@langchain/core/runnables';\nimport { dispatchCustomEvent } from '@langchain/core/callbacks/dispatch';\nimport { AIMessageChunk, ToolMessage, SystemMessage } from '@langchain/core/messages';\nimport type { BaseMessage } from '@langchain/core/messages';\nimport type { StructuredTool } from '@langchain/core/tools';\nimport type * as t from '@/types';\nimport { Providers, GraphEvents, GraphNodeKeys, StepTypes, Callback } from '@/common';\nimport { ToolNode as CustomToolNode, toolsCondition } from '@/tools/ToolNode';\nimport { modifyDeltaProperties, convertMessagesToContent } from '@/messages';\nimport { getChatModelClass } from '@/llm/providers';\nimport { resetIfNotEmpty, joinKeys } from '@/utils';\nimport { HandlerRegistry } from '@/events';\n\nconst { AGENT, TOOLS } = GraphNodeKeys;\nexport type GraphNode = GraphNodeKeys | typeof START;\nexport type ClientCallback<T extends unknown[]> = (graph: StandardGraph, ...args: T) => void;\nexport type ClientCallbacks = {\n [Callback.TOOL_ERROR]?: ClientCallback<[Error, string]>;\n [Callback.TOOL_START]?: ClientCallback<unknown[]>;\n [Callback.TOOL_END]?: ClientCallback<unknown[]>;\n}\nexport type SystemCallbacks = {\n [K in keyof ClientCallbacks]: ClientCallbacks[K] extends ClientCallback<infer Args>\n ? (...args: Args) => void\n : never;\n};\n\nexport abstract class Graph<\n T extends t.BaseGraphState = t.BaseGraphState,\n TNodeName extends string = string,\n> {\n abstract resetValues(): void;\n abstract createGraphState(): t.GraphStateChannels<T>;\n abstract initializeTools(): CustomToolNode<T> | ToolNode<T>;\n abstract initializeModel(): Runnable;\n abstract getRunMessages(): BaseMessage[] | undefined;\n abstract getContentParts(): t.MessageContentComplex[] | undefined;\n abstract generateStepId(stepKey: string): [string, number];\n abstract getKeyList(metadata: Record<string, unknown> | undefined): (string | number | undefined)[];\n abstract getStepKey(metadata: Record<string, unknown> | undefined): string;\n abstract checkKeyList(keyList: (string | number | undefined)[]): boolean;\n abstract getStepIdByKey(stepKey: string, index?: number): string\n abstract getRunStep(stepId: string): t.RunStep | undefined;\n abstract dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): void;\n abstract dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): void;\n abstract dispatchMessageDelta(id: string, delta: t.MessageDelta): void;\n abstract handleToolCallCompleted(data: t.ToolEndData): void;\n\n abstract createCallModel(): (state: T, config?: RunnableConfig) => Promise<Partial<T>>;\n abstract createWorkflow(): t.CompiledWorkflow<T, Partial<T>, TNodeName>;\n messageIdsByStepKey: Map<string, string> = new Map();\n prelimMessageIdsByStepKey: Map<string, string> = new Map();\n config: RunnableConfig | undefined;\n contentData: t.RunStep[] = [];\n stepKeyIds: Map<string, string[]> = new Map<string, string[]>();\n contentIndexMap: Map<string, number> = new Map();\n toolCallStepIds: Map<string, string> = new Map();\n}\n\nexport class StandardGraph extends Graph<\n t.BaseGraphState,\n GraphNode\n> {\n private graphState: t.GraphStateChannels<t.BaseGraphState>;\n private clientOptions: Record<string, unknown>;\n private boundModel: Runnable;\n handlerRegistry: HandlerRegistry | undefined;\n systemMessage: SystemMessage | undefined;\n messages: BaseMessage[] = [];\n runId: string | undefined;\n tools?: t.GenericTool[];\n toolMap?: t.ToolMap;\n startIndex: number = 0;\n provider: Providers;\n\n constructor({\n runId,\n tools,\n toolMap,\n provider,\n clientOptions,\n instructions,\n additional_instructions = '',\n } : {\n runId?: string;\n provider: Providers;\n tools?: t.GenericTool[];\n toolMap?: t.ToolMap;\n clientOptions: Record<string, unknown>;\n instructions?: string;\n additional_instructions?: string;\n }) {\n super();\n this.runId = runId;\n this.tools = tools;\n this.toolMap = toolMap;\n this.provider = provider;\n this.clientOptions = clientOptions;\n this.graphState = this.createGraphState();\n this.boundModel = this.initializeModel();\n\n let finalInstructions = instructions ?? '';\n if (additional_instructions) {\n finalInstructions = finalInstructions ? `${finalInstructions}\\n\\n${additional_instructions}` : additional_instructions;\n }\n\n if (finalInstructions) {\n this.systemMessage = new SystemMessage(finalInstructions);\n }\n }\n\n /* Init */\n\n resetValues(): void {\n this.messages = [];\n this.config = resetIfNotEmpty(this.config, undefined);\n this.contentData = resetIfNotEmpty(this.contentData, []);\n this.stepKeyIds = resetIfNotEmpty(this.stepKeyIds, new Map());\n this.toolCallStepIds = resetIfNotEmpty(this.toolCallStepIds, new Map());\n this.contentIndexMap = resetIfNotEmpty(this.contentIndexMap, new Map());\n this.messageIdsByStepKey = resetIfNotEmpty(this.messageIdsByStepKey, new Map());\n this.prelimMessageIdsByStepKey = resetIfNotEmpty(this.prelimMessageIdsByStepKey, new Map());\n }\n\n /* Run Step Processing */\n\n getRunStep(stepId: string): t.RunStep | undefined {\n const index = this.contentIndexMap.get(stepId);\n if (index !== undefined) {\n return this.contentData[index];\n }\n return undefined;\n }\n\n getStepKey(metadata: Record<string, unknown> | undefined): string {\n if (!metadata) return '';\n\n const keyList = this.getKeyList(metadata);\n if (this.checkKeyList(keyList)) {\n throw new Error('Missing metadata');\n }\n\n return joinKeys(keyList);\n }\n\n getStepIdByKey(stepKey: string, index?: number): string {\n const stepIds = this.stepKeyIds.get(stepKey);\n if (!stepIds) {\n throw new Error(`No step IDs found for stepKey ${stepKey}`);\n }\n\n if (index === undefined) {\n return stepIds[stepIds.length - 1];\n }\n\n return stepIds[index];\n }\n\n generateStepId(stepKey: string): [string, number] {\n const stepIds = this.stepKeyIds.get(stepKey);\n let newStepId: string | undefined;\n let stepIndex = 0;\n if (stepIds) {\n stepIndex = stepIds.length;\n newStepId = `step_${nanoid()}`;\n stepIds.push(newStepId);\n this.stepKeyIds.set(stepKey, stepIds);\n } else {\n newStepId = `step_${nanoid()}`;\n this.stepKeyIds.set(stepKey, [newStepId]);\n }\n\n return [newStepId, stepIndex];\n }\n\n getKeyList(metadata: Record<string, unknown> | undefined): (string | number | undefined)[] {\n if (!metadata) return [];\n\n return [\n metadata.thread_id as string,\n metadata.langgraph_node as string,\n metadata.langgraph_step as number,\n metadata.langgraph_task_idx as number,\n ];\n }\n\n checkKeyList(keyList: (string | number | undefined)[]): boolean {\n return keyList.some((key) => key === undefined);\n }\n\n /* Misc.*/\n\n getRunMessages(): BaseMessage[] | undefined {\n return this.messages.slice(this.startIndex);\n }\n\n getContentParts(): t.MessageContentComplex[] | undefined {\n return convertMessagesToContent(this.messages.slice(this.startIndex));\n }\n\n /* Graph */\n\n createGraphState(): t.GraphStateChannels<t.BaseGraphState> {\n return {\n messages: {\n value: (x: BaseMessage[], y: BaseMessage[]): BaseMessage[] => {\n if (!x.length) {\n if (this.systemMessage) {\n x.push(this.systemMessage);\n }\n\n this.startIndex = x.length + y.length;\n }\n const current = x.concat(y);\n this.messages = current;\n return current;\n },\n default: () => [],\n },\n };\n }\n\n initializeTools(): CustomToolNode<t.BaseGraphState> | ToolNode<t.BaseGraphState> {\n // return new ToolNode<t.BaseGraphState>(this.tools);\n return new CustomToolNode<t.BaseGraphState>({\n tools: this.tools || [],\n toolMap: this.toolMap,\n });\n }\n\n initializeModel(): Runnable {\n const ChatModelClass = getChatModelClass(this.provider);\n const model = new ChatModelClass(this.clientOptions);\n if (!this.tools || this.tools.length === 0) {\n return model;\n }\n return model.bindTools(this.tools as StructuredTool[]);\n }\n\n createCallModel() {\n return async (state: t.BaseGraphState, config?: RunnableConfig): Promise<Partial<t.BaseGraphState>> => {\n const { provider } = (config?.configurable as t.GraphConfig | undefined) ?? {} ;\n if (!config || !provider) {\n throw new Error(`No ${config ? 'provider' : 'config'} provided`);\n }\n this.config = config;\n const { messages } = state;\n\n const finalMessages = messages;\n const lastMessageX = finalMessages[finalMessages.length - 2];\n const lastMessageY = finalMessages[finalMessages.length - 1];\n\n if (\n provider === Providers.BEDROCK\n && lastMessageX instanceof AIMessageChunk\n && lastMessageY instanceof ToolMessage\n && typeof lastMessageX.content === 'string'\n ) {\n finalMessages[finalMessages.length - 2].content = '';\n }\n\n if (this.tools?.length && (provider === Providers.ANTHROPIC || provider === Providers.BEDROCK)) {\n const stream = await this.boundModel.stream(finalMessages, config);\n let finalChunk: AIMessageChunk | undefined;\n for await (const chunk of stream) {\n dispatchCustomEvent(GraphEvents.CHAT_MODEL_STREAM, { chunk }, config);\n if (!finalChunk) {\n finalChunk = chunk;\n } else {\n finalChunk = concat(finalChunk, chunk);\n }\n }\n\n finalChunk = modifyDeltaProperties(finalChunk);\n return { messages: [finalChunk as AIMessageChunk] };\n }\n\n const finalMessage = await this.boundModel.invoke(finalMessages, config);\n return { messages: [finalMessage as AIMessageChunk] };\n };\n }\n\n createWorkflow(): t.CompiledWorkflow<t.BaseGraphState, Partial<t.BaseGraphState>, GraphNode> {\n const routeMessage = (state: t.BaseGraphState, config?: RunnableConfig): string => {\n this.config = config;\n // const lastMessage = state.messages[state.messages.length - 1] as AIMessage;\n // if (!lastMessage?.tool_calls?.length) {\n // return END;\n // }\n // return TOOLS;\n return toolsCondition(state);\n };\n\n const workflow = new StateGraph<t.BaseGraphState, Partial<t.BaseGraphState>, GraphNode>({\n channels: this.graphState,\n })\n .addNode(AGENT, this.createCallModel())\n .addNode(TOOLS, this.initializeTools())\n .addEdge(START, AGENT)\n .addConditionalEdges(AGENT, routeMessage)\n .addEdge(TOOLS, AGENT);\n\n return workflow.compile();\n }\n\n /* Dispatchers */\n\n dispatchRunStep(stepKey: string, stepDetails: t.StepDetails): void {\n if (!this.config) {\n throw new Error('No config provided');\n }\n\n const [stepId, stepIndex] = this.generateStepId(stepKey);\n if (stepDetails.type === StepTypes.TOOL_CALLS && stepDetails.tool_calls) {\n for (const tool_call of stepDetails.tool_calls) {\n if (!tool_call.id || this.toolCallStepIds.has(tool_call.id)) {\n continue;\n }\n this.toolCallStepIds.set(tool_call.id, stepId);\n }\n }\n\n const runStep: t.RunStep = {\n stepIndex,\n id: stepId,\n type: stepDetails.type,\n index: this.contentData.length,\n stepDetails,\n usage: null,\n };\n\n if (this.runId) {\n runStep.runId = this.runId;\n }\n\n this.contentData.push(runStep);\n this.contentIndexMap.set(stepId, runStep.index);\n dispatchCustomEvent(GraphEvents.ON_RUN_STEP, runStep, this.config);\n }\n\n handleToolCallCompleted(data: t.ToolEndData, metadata?: Record<string, unknown>): void {\n if (!this.config) {\n throw new Error('No config provided');\n }\n\n const { input, output } = data;\n const { tool_call_id } = output;\n const stepId = this.toolCallStepIds.get(tool_call_id);\n if (!stepId) {\n throw new Error(`No stepId found for tool_call_id ${tool_call_id}`);\n }\n const runStep = this.getRunStep(stepId);\n if (!runStep) {\n throw new Error(`No run step found for stepId ${stepId}`);\n }\n\n if (!data?.output) {\n // console.warn('No output found in tool_end event');\n // console.dir(data, { depth: null });\n return;\n }\n\n const args = typeof input === 'string' ? input : input.input;\n const tool_call = {\n args: typeof args === 'string' ? args : JSON.stringify(args),\n name: output.name ?? '',\n id: output.tool_call_id,\n output: typeof output.content === 'string'\n ? output.content\n : JSON.stringify(output.content),\n progress: 1,\n };\n\n this.handlerRegistry?.getHandler(GraphEvents.ON_RUN_STEP_COMPLETED)?.handle(\n GraphEvents.ON_RUN_STEP_COMPLETED,\n { result: {\n id: stepId,\n index: runStep.index,\n type: 'tool_call',\n tool_call\n } as t.ToolCompleteEvent,\n },\n metadata,\n this,\n );\n }\n\n dispatchRunStepDelta(id: string, delta: t.ToolCallDelta): void {\n if (!this.config) {\n throw new Error('No config provided');\n } else if (!id) {\n throw new Error('No step ID found');\n }\n const runStepDelta: t.RunStepDeltaEvent = {\n id,\n delta,\n };\n dispatchCustomEvent(GraphEvents.ON_RUN_STEP_DELTA, runStepDelta, this.config);\n }\n\n dispatchMessageDelta(id: string, delta: t.MessageDelta): void {\n if (!this.config) {\n throw new Error('No config provided');\n }\n const messageDelta: t.MessageDeltaEvent = {\n id,\n delta,\n };\n dispatchCustomEvent(GraphEvents.ON_MESSAGE_DELTA, messageDelta, this.config);\n }\n}\n"],"names":["GraphNodeKeys","SystemMessage","resetIfNotEmpty","joinKeys","nanoid","convertMessagesToContent","CustomToolNode","getChatModelClass","messages","Providers","AIMessageChunk","ToolMessage","stream","dispatchCustomEvent","GraphEvents","concat","modifyDeltaProperties","toolsCondition","StateGraph","START","StepTypes"],"mappings":"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"}
|
package/dist/cjs/main.cjs
CHANGED
|
@@ -13,6 +13,7 @@ var run$1 = require('./utils/run.cjs');
|
|
|
13
13
|
|
|
14
14
|
exports.Run = run.Run;
|
|
15
15
|
exports.ChatModelStreamHandler = stream.ChatModelStreamHandler;
|
|
16
|
+
exports.createContentAggregator = stream.createContentAggregator;
|
|
16
17
|
exports.HandlerRegistry = events.HandlerRegistry;
|
|
17
18
|
exports.LLMStreamHandler = events.LLMStreamHandler;
|
|
18
19
|
exports.ModelEndHandler = events.ModelEndHandler;
|
|
@@ -33,6 +34,10 @@ Object.defineProperty(exports, "CommonEvents", {
|
|
|
33
34
|
enumerable: true,
|
|
34
35
|
get: function () { return _enum.CommonEvents; }
|
|
35
36
|
});
|
|
37
|
+
Object.defineProperty(exports, "ContentTypes", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function () { return _enum.ContentTypes; }
|
|
40
|
+
});
|
|
36
41
|
Object.defineProperty(exports, "GraphEvents", {
|
|
37
42
|
enumerable: true,
|
|
38
43
|
get: function () { return _enum.GraphEvents; }
|
|
@@ -53,6 +58,10 @@ Object.defineProperty(exports, "StepTypes", {
|
|
|
53
58
|
enumerable: true,
|
|
54
59
|
get: function () { return _enum.StepTypes; }
|
|
55
60
|
});
|
|
61
|
+
Object.defineProperty(exports, "ToolCallTypes", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function () { return _enum.ToolCallTypes; }
|
|
64
|
+
});
|
|
56
65
|
exports.joinKeys = graph.joinKeys;
|
|
57
66
|
exports.resetIfNotEmpty = graph.resetIfNotEmpty;
|
|
58
67
|
exports.RunnableCallable = run$1.RunnableCallable;
|
package/dist/cjs/main.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/cjs/run.cjs
CHANGED
|
@@ -70,7 +70,8 @@ class Run {
|
|
|
70
70
|
for await (const event of stream) {
|
|
71
71
|
const { data, name, metadata, ...info } = event;
|
|
72
72
|
let eventName = info.event;
|
|
73
|
-
|
|
73
|
+
const isDoubleCallProvider = provider === _enum.Providers.ANTHROPIC || provider === _enum.Providers.BEDROCK;
|
|
74
|
+
if (hasTools && isDoubleCallProvider && eventName === _enum.GraphEvents.CHAT_MODEL_STREAM) {
|
|
74
75
|
/* Skipping CHAT_MODEL_STREAM event for Anthropic due to double-call edge case */
|
|
75
76
|
continue;
|
|
76
77
|
}
|
package/dist/cjs/run.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.cjs","sources":["../../src/run.ts"],"sourcesContent":["// src/run.ts\nimport type { BaseCallbackHandler, CallbackHandlerMethods } from '@langchain/core/callbacks/base';\nimport type { BaseMessage, MessageContentComplex } from '@langchain/core/messages';\nimport type { RunnableConfig } from '@langchain/core/runnables';\nimport type { ClientCallbacks, SystemCallbacks } from '@/graphs/Graph';\nimport type * as t from '@/types';\nimport { GraphEvents, Providers, Callback } from '@/common';\nimport { StandardGraph } from '@/graphs/Graph';\nimport { HandlerRegistry } from '@/events';\n\nexport class Run<T extends t.BaseGraphState> {\n graphRunnable?: t.CompiledWorkflow<T, Partial<T>, string>;\n // private collab!: CollabGraph;\n // private taskManager!: TaskManager;\n private handlerRegistry: HandlerRegistry;\n private Graph: StandardGraph | undefined;\n provider: Providers | undefined;\n run_id: string | undefined;\n\n private constructor(config: t.RunConfig) {\n const handlerRegistry = new HandlerRegistry();\n\n if (config.customHandlers) {\n for (const [eventType, handler] of Object.entries(config.customHandlers)) {\n handlerRegistry.register(eventType, handler);\n }\n }\n\n this.handlerRegistry = handlerRegistry;\n\n if (config.graphConfig.type === 'standard' || !config.graphConfig.type) {\n this.provider = config.graphConfig.llmConfig.provider;\n this.graphRunnable = this.createStandardGraph(config.graphConfig) as unknown as t.CompiledWorkflow<T, Partial<T>, string>;\n if (this.Graph) {\n this.Graph.handlerRegistry = handlerRegistry;\n }\n }\n }\n\n private createStandardGraph(config: t.StandardGraphConfig): t.CompiledWorkflow<t.IState, Partial<t.IState>, string> {\n const { runId, llmConfig, instructions, additional_instructions, tools = [] } = config;\n const { provider, ...clientOptions } = llmConfig;\n\n const standardGraph = new StandardGraph({\n runId,\n tools,\n provider,\n instructions,\n clientOptions,\n additional_instructions,\n });\n this.Graph = standardGraph;\n return standardGraph.createWorkflow();\n }\n\n static async create<T extends t.BaseGraphState>(config: t.RunConfig): Promise<Run<T>> {\n return new Run<T>(config);\n }\n\n getRunMessages(): BaseMessage[] | undefined {\n if (!this.Graph) {\n throw new Error('Graph not initialized. Make sure to use Run.create() to instantiate the Run.');\n }\n return this.Graph.getRunMessages();\n }\n\n async processStream(\n inputs: t.IState,\n config: Partial<RunnableConfig> & { version: 'v1' | 'v2' },\n clientCallbacks?: ClientCallbacks,\n ): Promise<MessageContentComplex[] | undefined> {\n if (!this.graphRunnable) {\n throw new Error('Run not initialized. Make sure to use Run.create() to instantiate the Run.');\n }\n if (!this.Graph) {\n throw new Error('Graph not initialized. Make sure to use Run.create() to instantiate the Run.');\n }\n\n this.Graph.resetValues();\n const provider = this.Graph.provider;\n const hasTools = this.Graph.tools ? this.Graph.tools.length > 0 : false;\n if (clientCallbacks) {\n /* TODO: conflicts with callback manager */\n const callbacks = config.callbacks as (BaseCallbackHandler | CallbackHandlerMethods)[] || [];\n config.callbacks = callbacks.concat(this.getCallbacks(clientCallbacks));\n }\n const stream = this.graphRunnable.streamEvents(inputs, config);\n\n for await (const event of stream) {\n const { data, name, metadata, ...info } = event;\n\n let eventName: t.EventName = info.event;\n
|
|
1
|
+
{"version":3,"file":"run.cjs","sources":["../../src/run.ts"],"sourcesContent":["// src/run.ts\nimport type { BaseCallbackHandler, CallbackHandlerMethods } from '@langchain/core/callbacks/base';\nimport type { BaseMessage, MessageContentComplex } from '@langchain/core/messages';\nimport type { RunnableConfig } from '@langchain/core/runnables';\nimport type { ClientCallbacks, SystemCallbacks } from '@/graphs/Graph';\nimport type * as t from '@/types';\nimport { GraphEvents, Providers, Callback } from '@/common';\nimport { StandardGraph } from '@/graphs/Graph';\nimport { HandlerRegistry } from '@/events';\n\nexport class Run<T extends t.BaseGraphState> {\n graphRunnable?: t.CompiledWorkflow<T, Partial<T>, string>;\n // private collab!: CollabGraph;\n // private taskManager!: TaskManager;\n private handlerRegistry: HandlerRegistry;\n private Graph: StandardGraph | undefined;\n provider: Providers | undefined;\n run_id: string | undefined;\n\n private constructor(config: t.RunConfig) {\n const handlerRegistry = new HandlerRegistry();\n\n if (config.customHandlers) {\n for (const [eventType, handler] of Object.entries(config.customHandlers)) {\n handlerRegistry.register(eventType, handler);\n }\n }\n\n this.handlerRegistry = handlerRegistry;\n\n if (config.graphConfig.type === 'standard' || !config.graphConfig.type) {\n this.provider = config.graphConfig.llmConfig.provider;\n this.graphRunnable = this.createStandardGraph(config.graphConfig) as unknown as t.CompiledWorkflow<T, Partial<T>, string>;\n if (this.Graph) {\n this.Graph.handlerRegistry = handlerRegistry;\n }\n }\n }\n\n private createStandardGraph(config: t.StandardGraphConfig): t.CompiledWorkflow<t.IState, Partial<t.IState>, string> {\n const { runId, llmConfig, instructions, additional_instructions, tools = [] } = config;\n const { provider, ...clientOptions } = llmConfig;\n\n const standardGraph = new StandardGraph({\n runId,\n tools,\n provider,\n instructions,\n clientOptions,\n additional_instructions,\n });\n this.Graph = standardGraph;\n return standardGraph.createWorkflow();\n }\n\n static async create<T extends t.BaseGraphState>(config: t.RunConfig): Promise<Run<T>> {\n return new Run<T>(config);\n }\n\n getRunMessages(): BaseMessage[] | undefined {\n if (!this.Graph) {\n throw new Error('Graph not initialized. Make sure to use Run.create() to instantiate the Run.');\n }\n return this.Graph.getRunMessages();\n }\n\n async processStream(\n inputs: t.IState,\n config: Partial<RunnableConfig> & { version: 'v1' | 'v2' },\n clientCallbacks?: ClientCallbacks,\n ): Promise<MessageContentComplex[] | undefined> {\n if (!this.graphRunnable) {\n throw new Error('Run not initialized. Make sure to use Run.create() to instantiate the Run.');\n }\n if (!this.Graph) {\n throw new Error('Graph not initialized. Make sure to use Run.create() to instantiate the Run.');\n }\n\n this.Graph.resetValues();\n const provider = this.Graph.provider;\n const hasTools = this.Graph.tools ? this.Graph.tools.length > 0 : false;\n if (clientCallbacks) {\n /* TODO: conflicts with callback manager */\n const callbacks = config.callbacks as (BaseCallbackHandler | CallbackHandlerMethods)[] || [];\n config.callbacks = callbacks.concat(this.getCallbacks(clientCallbacks));\n }\n const stream = this.graphRunnable.streamEvents(inputs, config);\n\n for await (const event of stream) {\n const { data, name, metadata, ...info } = event;\n\n let eventName: t.EventName = info.event;\n const isDoubleCallProvider = provider === Providers.ANTHROPIC || provider === Providers.BEDROCK;\n if (hasTools && isDoubleCallProvider && eventName === GraphEvents.CHAT_MODEL_STREAM) {\n /* Skipping CHAT_MODEL_STREAM event for Anthropic due to double-call edge case */\n continue;\n }\n\n if (eventName && eventName === GraphEvents.ON_CUSTOM_EVENT) {\n eventName = name;\n }\n\n // console.log(`Event: ${event.event} | Executing Event: ${eventName}`);\n\n const handler = this.handlerRegistry.getHandler(eventName);\n if (handler) {\n handler.handle(eventName, data, metadata, this.Graph);\n }\n }\n\n return this.Graph.getContentParts();\n }\n\n private createSystemCallback<K extends keyof ClientCallbacks>(\n clientCallbacks: ClientCallbacks,\n key: K\n ): SystemCallbacks[K] {\n return ((...args: unknown[]) => {\n const clientCallback = clientCallbacks[key];\n if (clientCallback && this.Graph) {\n (clientCallback as (...args: unknown[]) => void)(this.Graph, ...args);\n }\n }) as SystemCallbacks[K];\n }\n\n getCallbacks(clientCallbacks: ClientCallbacks): SystemCallbacks {\n return {\n [Callback.TOOL_ERROR]: this.createSystemCallback(clientCallbacks, Callback.TOOL_ERROR),\n [Callback.TOOL_START]: this.createSystemCallback(clientCallbacks, Callback.TOOL_START),\n [Callback.TOOL_END]: this.createSystemCallback(clientCallbacks, Callback.TOOL_END),\n };\n }\n}\n"],"names":["HandlerRegistry","StandardGraph","Providers","GraphEvents","Callback"],"mappings":"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"}
|
package/dist/cjs/stream.cjs
CHANGED
|
@@ -4,13 +4,21 @@ var nanoid = require('nanoid');
|
|
|
4
4
|
var _enum = require('./common/enum.cjs');
|
|
5
5
|
|
|
6
6
|
// src/stream.ts
|
|
7
|
+
function getNonEmptyValue(possibleValues) {
|
|
8
|
+
for (const value of possibleValues) {
|
|
9
|
+
if (value && value.trim() !== '') {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
7
15
|
const getMessageId = (stepKey, graph) => {
|
|
8
16
|
const messageId = graph.messageIdsByStepKey.get(stepKey);
|
|
9
|
-
if (messageId) {
|
|
17
|
+
if (messageId != null && messageId) {
|
|
10
18
|
return;
|
|
11
19
|
}
|
|
12
20
|
const prelimMessageId = graph.prelimMessageIdsByStepKey.get(stepKey);
|
|
13
|
-
if (prelimMessageId) {
|
|
21
|
+
if (prelimMessageId != null && prelimMessageId) {
|
|
14
22
|
graph.prelimMessageIdsByStepKey.delete(stepKey);
|
|
15
23
|
graph.messageIdsByStepKey.set(stepKey, prelimMessageId);
|
|
16
24
|
return prelimMessageId;
|
|
@@ -25,7 +33,7 @@ class ChatModelStreamHandler {
|
|
|
25
33
|
throw new Error('Graph not found');
|
|
26
34
|
}
|
|
27
35
|
const chunk = data.chunk;
|
|
28
|
-
const content = chunk
|
|
36
|
+
const content = chunk.content;
|
|
29
37
|
if (!graph.config) {
|
|
30
38
|
throw new Error('Config not found in graph');
|
|
31
39
|
}
|
|
@@ -33,8 +41,8 @@ class ChatModelStreamHandler {
|
|
|
33
41
|
console.warn(`No chunk found in ${event} event`);
|
|
34
42
|
return;
|
|
35
43
|
}
|
|
36
|
-
const hasToolCalls = chunk.tool_calls && chunk.tool_calls.length > 0;
|
|
37
|
-
const hasToolCallChunks = chunk.tool_call_chunks && chunk.tool_call_chunks.length > 0;
|
|
44
|
+
const hasToolCalls = (chunk.tool_calls && chunk.tool_calls.length > 0) ?? false;
|
|
45
|
+
const hasToolCallChunks = (chunk.tool_call_chunks && chunk.tool_call_chunks.length > 0) ?? false;
|
|
38
46
|
if (hasToolCalls && chunk.tool_calls?.every((tc) => tc.id)) {
|
|
39
47
|
const tool_calls = [];
|
|
40
48
|
for (const tool_call of chunk.tool_calls) {
|
|
@@ -51,7 +59,7 @@ class ChatModelStreamHandler {
|
|
|
51
59
|
}
|
|
52
60
|
const isEmptyContent = !content || !content.length;
|
|
53
61
|
const isEmptyChunk = isEmptyContent && !hasToolCallChunks;
|
|
54
|
-
if (isEmptyChunk && chunk.id && chunk.id
|
|
62
|
+
if (isEmptyChunk && chunk.id && chunk.id.startsWith('msg')) {
|
|
55
63
|
if (graph.messageIdsByStepKey.has(chunk.id)) {
|
|
56
64
|
return;
|
|
57
65
|
}
|
|
@@ -76,7 +84,7 @@ class ChatModelStreamHandler {
|
|
|
76
84
|
if (isEmptyContent) {
|
|
77
85
|
return;
|
|
78
86
|
}
|
|
79
|
-
const message_id = getMessageId(stepKey, graph);
|
|
87
|
+
const message_id = getMessageId(stepKey, graph) ?? '';
|
|
80
88
|
if (message_id) {
|
|
81
89
|
graph.dispatchRunStep(stepKey, {
|
|
82
90
|
type: _enum.StepTypes.MESSAGE_CREATION,
|
|
@@ -110,7 +118,7 @@ hasToolCallChunks: ${hasToolCallChunks}
|
|
|
110
118
|
if (typeof content === 'string' && runStep.type === _enum.StepTypes.TOOL_CALLS) {
|
|
111
119
|
return;
|
|
112
120
|
}
|
|
113
|
-
else if (hasToolCallChunks && chunk.tool_call_chunks?.some((tc) => tc.args === content)) {
|
|
121
|
+
else if (hasToolCallChunks && (chunk.tool_call_chunks?.some((tc) => tc.args === content) ?? false)) {
|
|
114
122
|
return;
|
|
115
123
|
}
|
|
116
124
|
else if (typeof content === 'string') {
|
|
@@ -121,13 +129,133 @@ hasToolCallChunks: ${hasToolCallChunks}
|
|
|
121
129
|
}],
|
|
122
130
|
});
|
|
123
131
|
}
|
|
124
|
-
else if (content
|
|
132
|
+
else if (content.every((c) => c.type?.startsWith('text'))) {
|
|
125
133
|
graph.dispatchMessageDelta(stepId, {
|
|
126
134
|
content,
|
|
127
135
|
});
|
|
128
136
|
}
|
|
129
137
|
}
|
|
130
138
|
}
|
|
139
|
+
function createContentAggregator() {
|
|
140
|
+
const contentParts = [];
|
|
141
|
+
const stepMap = new Map();
|
|
142
|
+
const toolCallIdMap = new Map();
|
|
143
|
+
const updateContent = (index, contentPart, finalUpdate = false) => {
|
|
144
|
+
const partType = contentPart.type ?? '';
|
|
145
|
+
if (!partType) {
|
|
146
|
+
console.warn('No content type found in content part');
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (!contentParts[index]) {
|
|
150
|
+
contentParts[index] = { type: partType };
|
|
151
|
+
}
|
|
152
|
+
if (partType.startsWith(_enum.ContentTypes.TEXT) &&
|
|
153
|
+
_enum.ContentTypes.TEXT in contentPart &&
|
|
154
|
+
typeof contentPart.text === 'string') {
|
|
155
|
+
const currentContent = contentParts[index];
|
|
156
|
+
contentParts[index] = {
|
|
157
|
+
type: _enum.ContentTypes.TEXT,
|
|
158
|
+
text: (currentContent.text || '') + contentPart.text,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
else if (partType === _enum.ContentTypes.IMAGE_URL && 'image_url' in contentPart) {
|
|
162
|
+
const currentContent = contentParts[index];
|
|
163
|
+
contentParts[index] = {
|
|
164
|
+
...currentContent,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
else if (partType === _enum.ContentTypes.TOOL_CALL && 'tool_call' in contentPart) {
|
|
168
|
+
const existingContent = contentParts[index];
|
|
169
|
+
const args = finalUpdate
|
|
170
|
+
? contentPart.tool_call.args
|
|
171
|
+
: (existingContent?.tool_call?.args || '') + (contentPart.tool_call.args ?? '');
|
|
172
|
+
const id = getNonEmptyValue([contentPart.tool_call.id, existingContent?.tool_call?.id]) ?? '';
|
|
173
|
+
const name = getNonEmptyValue([contentPart.tool_call.name, existingContent?.tool_call?.name]) ?? '';
|
|
174
|
+
const newToolCall = {
|
|
175
|
+
id,
|
|
176
|
+
name,
|
|
177
|
+
args,
|
|
178
|
+
type: _enum.ToolCallTypes.TOOL_CALL,
|
|
179
|
+
};
|
|
180
|
+
if (finalUpdate) {
|
|
181
|
+
newToolCall.progress = 1;
|
|
182
|
+
newToolCall.output = contentPart.tool_call.output;
|
|
183
|
+
}
|
|
184
|
+
contentParts[index] = {
|
|
185
|
+
type: _enum.ContentTypes.TOOL_CALL,
|
|
186
|
+
tool_call: newToolCall,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
const aggregateContent = ({ event, data }) => {
|
|
191
|
+
if (event === _enum.GraphEvents.ON_RUN_STEP) {
|
|
192
|
+
const runStep = data;
|
|
193
|
+
stepMap.set(runStep.id, runStep);
|
|
194
|
+
// Store tool call IDs if present
|
|
195
|
+
if (runStep.stepDetails.type === _enum.StepTypes.TOOL_CALLS) {
|
|
196
|
+
runStep.stepDetails.tool_calls.forEach((toolCall) => {
|
|
197
|
+
const toolCallId = toolCall.id ?? '';
|
|
198
|
+
if ('id' in toolCall && toolCallId) {
|
|
199
|
+
toolCallIdMap.set(runStep.id, toolCallId);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else if (event === _enum.GraphEvents.ON_MESSAGE_DELTA) {
|
|
205
|
+
const messageDelta = data;
|
|
206
|
+
const runStep = stepMap.get(messageDelta.id);
|
|
207
|
+
if (!runStep) {
|
|
208
|
+
console.warn('No run step or runId found for message delta event');
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (messageDelta.delta.content) {
|
|
212
|
+
const contentPart = Array.isArray(messageDelta.delta.content)
|
|
213
|
+
? messageDelta.delta.content[0]
|
|
214
|
+
: messageDelta.delta.content;
|
|
215
|
+
updateContent(runStep.index, contentPart);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else if (event === _enum.GraphEvents.ON_RUN_STEP_DELTA) {
|
|
219
|
+
const runStepDelta = data;
|
|
220
|
+
const runStep = stepMap.get(runStepDelta.id);
|
|
221
|
+
if (!runStep) {
|
|
222
|
+
console.warn('No run step or runId found for run step delta event');
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
if (runStepDelta.delta.type === _enum.StepTypes.TOOL_CALLS &&
|
|
226
|
+
runStepDelta.delta.tool_calls) {
|
|
227
|
+
runStepDelta.delta.tool_calls.forEach((toolCallDelta) => {
|
|
228
|
+
const toolCallId = toolCallIdMap.get(runStepDelta.id) ?? '';
|
|
229
|
+
const contentPart = {
|
|
230
|
+
type: _enum.ContentTypes.TOOL_CALL,
|
|
231
|
+
tool_call: {
|
|
232
|
+
name: toolCallDelta.name ?? '',
|
|
233
|
+
args: toolCallDelta.args ?? '',
|
|
234
|
+
id: toolCallId,
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
updateContent(runStep.index, contentPart);
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
else if (event === _enum.GraphEvents.ON_RUN_STEP_COMPLETED) {
|
|
242
|
+
const { result } = data;
|
|
243
|
+
const { id: stepId } = result;
|
|
244
|
+
const runStep = stepMap.get(stepId);
|
|
245
|
+
if (!runStep) {
|
|
246
|
+
console.warn('No run step or runId found for completed tool call event');
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
const contentPart = {
|
|
250
|
+
type: _enum.ContentTypes.TOOL_CALL,
|
|
251
|
+
tool_call: result.tool_call,
|
|
252
|
+
};
|
|
253
|
+
updateContent(runStep.index, contentPart, true);
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
return { contentParts, aggregateContent };
|
|
257
|
+
}
|
|
131
258
|
|
|
132
259
|
exports.ChatModelStreamHandler = ChatModelStreamHandler;
|
|
260
|
+
exports.createContentAggregator = createContentAggregator;
|
|
133
261
|
//# sourceMappingURL=stream.cjs.map
|
package/dist/cjs/stream.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.cjs","sources":["../../src/stream.ts"],"sourcesContent":["// src/stream.ts\nimport { nanoid } from 'nanoid';\nimport type { AIMessageChunk } from '@langchain/core/messages';\nimport type { ToolCall } from '@langchain/core/messages/tool';\nimport type { Graph } from '@/graphs';\nimport type * as t from '@/types';\nimport { StepTypes } from '@/common';\n\nconst getMessageId = (stepKey: string, graph: Graph<t.BaseGraphState>): string | undefined => {\n const messageId = graph.messageIdsByStepKey.get(stepKey);\n if (messageId) {\n return;\n }\n\n const prelimMessageId = graph.prelimMessageIdsByStepKey.get(stepKey);\n if (prelimMessageId) {\n graph.prelimMessageIdsByStepKey.delete(stepKey);\n graph.messageIdsByStepKey.set(stepKey, prelimMessageId);\n return prelimMessageId;\n }\n\n const message_id = `msg_${nanoid()}`;\n graph.messageIdsByStepKey.set(stepKey, message_id);\n return message_id;\n};\n\nexport class ChatModelStreamHandler implements t.EventHandler {\n handle(event: string, data: t.StreamEventData, metadata?: Record<string, unknown>, graph?: Graph): void {\n if (!graph) {\n throw new Error('Graph not found');\n }\n\n const chunk = data.chunk as AIMessageChunk;\n const content = chunk?.content;\n\n if (!graph.config) {\n throw new Error('Config not found in graph');\n }\n\n if (!chunk) {\n console.warn(`No chunk found in ${event} event`);\n return;\n }\n\n const hasToolCalls = chunk.tool_calls && chunk.tool_calls.length > 0;\n const hasToolCallChunks = chunk.tool_call_chunks && chunk.tool_call_chunks.length > 0;\n\n if (hasToolCalls && chunk.tool_calls?.every((tc) => tc.id)) {\n const tool_calls: ToolCall[] = [];\n for (const tool_call of chunk.tool_calls) {\n if (!tool_call.id || graph.toolCallStepIds.has(tool_call.id)) {\n continue;\n }\n\n tool_calls.push(tool_call);\n }\n\n const stepKey = graph.getStepKey(metadata);\n graph.dispatchRunStep(stepKey, {\n type: StepTypes.TOOL_CALLS,\n tool_calls,\n });\n }\n\n const isEmptyContent = !content || !content.length;\n const isEmptyChunk = isEmptyContent && !hasToolCallChunks;\n if (isEmptyChunk && chunk.id && chunk.id?.startsWith('msg')) {\n if (graph.messageIdsByStepKey.has(chunk.id)) {\n return;\n } else if (graph.prelimMessageIdsByStepKey.has(chunk.id)) {\n return;\n }\n\n const stepKey = graph.getStepKey(metadata);\n graph.prelimMessageIdsByStepKey.set(stepKey, chunk.id);\n return;\n } else if (isEmptyChunk) {\n return;\n }\n\n const stepKey = graph.getStepKey(metadata);\n\n if (hasToolCallChunks && chunk.tool_call_chunks?.length && typeof chunk.tool_call_chunks[0]?.index === 'number') {\n const stepId = graph.getStepIdByKey(stepKey, chunk.tool_call_chunks[0].index);\n graph.dispatchRunStepDelta(stepId, {\n type: StepTypes.TOOL_CALLS,\n tool_calls: chunk.tool_call_chunks,\n });\n }\n\n if (isEmptyContent) {\n return;\n }\n\n const message_id = getMessageId(stepKey, graph);\n if (message_id) {\n graph.dispatchRunStep(stepKey, {\n type: StepTypes.MESSAGE_CREATION,\n message_creation: {\n message_id,\n },\n });\n }\n\n const stepId = graph.getStepIdByKey(stepKey);\n const runStep = graph.getRunStep(stepId);\n if (!runStep) {\n // eslint-disable-next-line no-console\n console.warn(`\\n\n==============================================================\n\n\nRun step for ${stepId} does not exist, cannot dispatch delta event.\n\nevent: ${event}\nstepId: ${stepId}\nstepKey: ${stepKey}\nmessage_id: ${message_id}\nhasToolCalls: ${hasToolCalls}\nhasToolCallChunks: ${hasToolCallChunks}\n\n==============================================================\n\\n`);\n return;\n }\n\n /* Note: tool call chunks may have non-empty content that matches the current tool chunk generation */\n if (typeof content === 'string' && runStep.type === StepTypes.TOOL_CALLS) {\n return;\n } else if (hasToolCallChunks && chunk.tool_call_chunks?.some((tc) => tc.args === content)) {\n return;\n } else if (typeof content === 'string') {\n graph.dispatchMessageDelta(stepId, {\n content: [{\n type: 'text',\n text: content,\n }],\n });\n } else if (content?.every((c) => c.type?.startsWith('text'))) {\n graph.dispatchMessageDelta(stepId, {\n content,\n });\n }\n }\n}"],"names":["nanoid","StepTypes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stream.cjs","sources":["../../src/stream.ts"],"sourcesContent":["// src/stream.ts\nimport { nanoid } from 'nanoid';\nimport type { AIMessageChunk } from '@langchain/core/messages';\nimport type { ToolCall } from '@langchain/core/messages/tool';\nimport type { Graph } from '@/graphs';\nimport type * as t from '@/types';\nimport { StepTypes, ContentTypes, GraphEvents, ToolCallTypes } from '@/common';\n\nfunction getNonEmptyValue(possibleValues: string[]): string | undefined {\n for (const value of possibleValues) {\n if (value && value.trim() !== '') {\n return value;\n }\n }\n return undefined;\n}\n\nconst getMessageId = (stepKey: string, graph: Graph<t.BaseGraphState>): string | undefined => {\n const messageId = graph.messageIdsByStepKey.get(stepKey);\n if (messageId != null && messageId) {\n return;\n }\n\n const prelimMessageId = graph.prelimMessageIdsByStepKey.get(stepKey);\n if (prelimMessageId != null && prelimMessageId) {\n graph.prelimMessageIdsByStepKey.delete(stepKey);\n graph.messageIdsByStepKey.set(stepKey, prelimMessageId);\n return prelimMessageId;\n }\n\n const message_id = `msg_${nanoid()}`;\n graph.messageIdsByStepKey.set(stepKey, message_id);\n return message_id;\n};\n\nexport class ChatModelStreamHandler implements t.EventHandler {\n handle(event: string, data: t.StreamEventData, metadata?: Record<string, unknown>, graph?: Graph): void {\n if (!graph) {\n throw new Error('Graph not found');\n }\n\n const chunk = data.chunk as AIMessageChunk;\n const content = chunk.content;\n\n if (!graph.config) {\n throw new Error('Config not found in graph');\n }\n\n if (!chunk) {\n console.warn(`No chunk found in ${event} event`);\n return;\n }\n\n const hasToolCalls = (chunk.tool_calls && chunk.tool_calls.length > 0) ?? false;\n const hasToolCallChunks = (chunk.tool_call_chunks && chunk.tool_call_chunks.length > 0) ?? false;\n\n if (hasToolCalls && chunk.tool_calls?.every((tc) => tc.id)) {\n const tool_calls: ToolCall[] = [];\n for (const tool_call of chunk.tool_calls) {\n if (!tool_call.id || graph.toolCallStepIds.has(tool_call.id)) {\n continue;\n }\n\n tool_calls.push(tool_call);\n }\n\n const stepKey = graph.getStepKey(metadata);\n graph.dispatchRunStep(stepKey, {\n type: StepTypes.TOOL_CALLS,\n tool_calls,\n });\n }\n\n const isEmptyContent = !content || !content.length;\n const isEmptyChunk = isEmptyContent && !hasToolCallChunks;\n if (isEmptyChunk && chunk.id && chunk.id.startsWith('msg')) {\n if (graph.messageIdsByStepKey.has(chunk.id)) {\n return;\n } else if (graph.prelimMessageIdsByStepKey.has(chunk.id)) {\n return;\n }\n\n const stepKey = graph.getStepKey(metadata);\n graph.prelimMessageIdsByStepKey.set(stepKey, chunk.id);\n return;\n } else if (isEmptyChunk) {\n return;\n }\n\n const stepKey = graph.getStepKey(metadata);\n\n if (hasToolCallChunks && chunk.tool_call_chunks?.length && typeof chunk.tool_call_chunks[0]?.index === 'number') {\n const stepId = graph.getStepIdByKey(stepKey, chunk.tool_call_chunks[0].index);\n graph.dispatchRunStepDelta(stepId, {\n type: StepTypes.TOOL_CALLS,\n tool_calls: chunk.tool_call_chunks,\n });\n }\n\n if (isEmptyContent) {\n return;\n }\n\n const message_id = getMessageId(stepKey, graph) ?? '';\n if (message_id) {\n graph.dispatchRunStep(stepKey, {\n type: StepTypes.MESSAGE_CREATION,\n message_creation: {\n message_id,\n },\n });\n }\n\n const stepId = graph.getStepIdByKey(stepKey);\n const runStep = graph.getRunStep(stepId);\n if (!runStep) {\n // eslint-disable-next-line no-console\n console.warn(`\\n\n==============================================================\n\n\nRun step for ${stepId} does not exist, cannot dispatch delta event.\n\nevent: ${event}\nstepId: ${stepId}\nstepKey: ${stepKey}\nmessage_id: ${message_id}\nhasToolCalls: ${hasToolCalls}\nhasToolCallChunks: ${hasToolCallChunks}\n\n==============================================================\n\\n`);\n return;\n }\n\n /* Note: tool call chunks may have non-empty content that matches the current tool chunk generation */\n if (typeof content === 'string' && runStep.type === StepTypes.TOOL_CALLS) {\n return;\n } else if (hasToolCallChunks && (chunk.tool_call_chunks?.some((tc) => tc.args === content) ?? false)) {\n return;\n } else if (typeof content === 'string') {\n graph.dispatchMessageDelta(stepId, {\n content: [{\n type: 'text',\n text: content,\n }],\n });\n } else if (content.every((c) => c.type?.startsWith('text'))) {\n graph.dispatchMessageDelta(stepId, {\n content,\n });\n }\n }\n}\n\nexport type ContentAggregatorResult = {\n contentParts: Array<t.MessageContentComplex | undefined>;\n aggregateContent: ({ event, data }: {\n event: GraphEvents;\n data: t.RunStep | t.MessageDeltaEvent | t.RunStepDeltaEvent | {\n result: t.ToolEndEvent;\n };\n}) => void\n};\n\nexport function createContentAggregator(): ContentAggregatorResult {\n const contentParts: Array<t.MessageContentComplex | undefined> = [];\n const stepMap = new Map<string, t.RunStep>();\n const toolCallIdMap = new Map<string, string>();\n\n const updateContent = (\n index: number,\n contentPart: t.MessageContentComplex,\n finalUpdate = false,\n ): void => {\n const partType = contentPart.type ?? '';\n if (!partType) {\n console.warn('No content type found in content part');\n return;\n }\n\n if (!contentParts[index]) {\n contentParts[index] = { type: partType };\n }\n\n if (\n partType.startsWith(ContentTypes.TEXT) &&\n ContentTypes.TEXT in contentPart &&\n typeof contentPart.text === 'string'\n ) {\n const currentContent = contentParts[index] as { type: ContentTypes.TEXT; text: string };\n contentParts[index] = {\n type: ContentTypes.TEXT,\n text: (currentContent.text || '') + contentPart.text,\n };\n } else if (partType === ContentTypes.IMAGE_URL && 'image_url' in contentPart) {\n const currentContent = contentParts[index] as { type: 'image_url'; image_url: string };\n contentParts[index] = {\n ...currentContent,\n };\n } else if (partType === ContentTypes.TOOL_CALL && 'tool_call' in contentPart) {\n const existingContent = contentParts[index] as Omit<t.ToolCallContent, 'tool_call'> & { tool_call?: ToolCall } | undefined;\n\n const args = finalUpdate\n ? contentPart.tool_call.args\n : (existingContent?.tool_call?.args || '') + (contentPart.tool_call.args ?? '');\n\n const id = getNonEmptyValue([contentPart.tool_call.id, existingContent?.tool_call?.id]) ?? '';\n const name =\n getNonEmptyValue([contentPart.tool_call.name, existingContent?.tool_call?.name]) ?? '';\n\n const newToolCall: ToolCall & t.PartMetadata = {\n id,\n name,\n args,\n type: ToolCallTypes.TOOL_CALL,\n };\n\n if (finalUpdate) {\n newToolCall.progress = 1;\n newToolCall.output = contentPart.tool_call.output;\n }\n\n contentParts[index] = {\n type: ContentTypes.TOOL_CALL,\n tool_call: newToolCall,\n };\n }\n };\n\n const aggregateContent = ({ event, data }: {\n event: GraphEvents;\n data: t.RunStep | t.MessageDeltaEvent | t.RunStepDeltaEvent | { result: t.ToolEndEvent };\n }): void => {\n\n if (event === GraphEvents.ON_RUN_STEP) {\n const runStep = data as t.RunStep;\n stepMap.set(runStep.id, runStep);\n\n // Store tool call IDs if present\n if (runStep.stepDetails.type === StepTypes.TOOL_CALLS) {\n runStep.stepDetails.tool_calls.forEach((toolCall) => {\n const toolCallId = toolCall.id ?? '';\n if ('id' in toolCall && toolCallId) {\n toolCallIdMap.set(runStep.id, toolCallId);\n }\n });\n }\n } else if (event === GraphEvents.ON_MESSAGE_DELTA) {\n const messageDelta = data as t.MessageDeltaEvent;\n const runStep = stepMap.get(messageDelta.id);\n if (!runStep) {\n console.warn('No run step or runId found for message delta event');\n return;\n }\n\n if (messageDelta.delta.content) {\n const contentPart = Array.isArray(messageDelta.delta.content)\n ? messageDelta.delta.content[0]\n : messageDelta.delta.content;\n\n updateContent(runStep.index, contentPart);\n }\n } else if (event === GraphEvents.ON_RUN_STEP_DELTA) {\n const runStepDelta = data as t.RunStepDeltaEvent;\n const runStep = stepMap.get(runStepDelta.id);\n if (!runStep) {\n console.warn('No run step or runId found for run step delta event');\n return;\n }\n\n if (\n runStepDelta.delta.type === StepTypes.TOOL_CALLS &&\n runStepDelta.delta.tool_calls\n ) {\n\n runStepDelta.delta.tool_calls.forEach((toolCallDelta) => {\n const toolCallId = toolCallIdMap.get(runStepDelta.id) ?? '';\n\n const contentPart: t.MessageContentComplex = {\n type: ContentTypes.TOOL_CALL,\n tool_call: {\n name: toolCallDelta.name ?? '',\n args: toolCallDelta.args ?? '',\n id: toolCallId,\n },\n };\n\n updateContent(runStep.index, contentPart);\n });\n }\n } else if (event === GraphEvents.ON_RUN_STEP_COMPLETED) {\n const { result } = data as unknown as { result: t.ToolEndEvent };\n\n const { id: stepId } = result;\n\n const runStep = stepMap.get(stepId);\n if (!runStep) {\n console.warn('No run step or runId found for completed tool call event');\n return;\n }\n\n const contentPart: t.MessageContentComplex = {\n type: ContentTypes.TOOL_CALL,\n tool_call: result.tool_call,\n };\n\n updateContent(runStep.index, contentPart, true);\n }\n };\n\n return { contentParts, aggregateContent };\n}\n"],"names":["nanoid","StepTypes","ContentTypes","ToolCallTypes","GraphEvents"],"mappings":";;;;;AAAA;AAQA,SAAS,gBAAgB,CAAC,cAAwB,EAAA;AAChD,IAAA,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAChC,YAAA,OAAO,KAAK,CAAC;SACd;KACF;AACD,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,KAA8B,KAAwB;IAC3F,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzD,IAAA,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,EAAE;QAClC,OAAO;KACR;IAED,MAAM,eAAe,GAAG,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrE,IAAA,IAAI,eAAe,IAAI,IAAI,IAAI,eAAe,EAAE;AAC9C,QAAA,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACxD,QAAA,OAAO,eAAe,CAAC;KACxB;AAED,IAAA,MAAM,UAAU,GAAG,CAAA,IAAA,EAAOA,aAAM,EAAE,EAAE,CAAC;IACrC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACnD,IAAA,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;MAEW,sBAAsB,CAAA;AACjC,IAAA,MAAM,CAAC,KAAa,EAAE,IAAuB,EAAE,QAAkC,EAAE,KAAa,EAAA;QAC9F,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACpC;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAuB,CAAC;AAC3C,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAE9B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;SAC9C;QAED,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAA,MAAA,CAAQ,CAAC,CAAC;YACjD,OAAO;SACR;AAED,QAAA,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC;AAChF,QAAA,MAAM,iBAAiB,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC;AAEjG,QAAA,IAAI,YAAY,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;YAC1D,MAAM,UAAU,GAAe,EAAE,CAAC;AAClC,YAAA,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE;AACxC,gBAAA,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;oBAC5D,SAAS;iBACV;AAED,gBAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC5B;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3C,YAAA,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE;gBAC7B,IAAI,EAAEC,eAAS,CAAC,UAAU;gBAC1B,UAAU;AACX,aAAA,CAAC,CAAC;SACJ;QAED,MAAM,cAAc,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACnD,QAAA,MAAM,YAAY,GAAG,cAAc,IAAI,CAAC,iBAAiB,CAAC;AAC1D,QAAA,IAAI,YAAY,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAC1D,IAAI,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;gBAC3C,OAAO;aACR;iBAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;gBACxD,OAAO;aACR;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3C,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACvD,OAAO;SACR;aAAM,IAAI,YAAY,EAAE;YACvB,OAAO;SACR;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE3C,IAAI,iBAAiB,IAAI,KAAK,CAAC,gBAAgB,EAAE,MAAM,IAAI,OAAO,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,QAAQ,EAAE;AAC/G,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9E,YAAA,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE;gBACjC,IAAI,EAAEA,eAAS,CAAC,UAAU;gBAC1B,UAAU,EAAE,KAAK,CAAC,gBAAgB;AACnC,aAAA,CAAC,CAAC;SACJ;QAED,IAAI,cAAc,EAAE;YAClB,OAAO;SACR;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACtD,IAAI,UAAU,EAAE;AACd,YAAA,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE;gBAC7B,IAAI,EAAEA,eAAS,CAAC,gBAAgB;AAChC,gBAAA,gBAAgB,EAAE;oBAChB,UAAU;AACX,iBAAA;AACF,aAAA,CAAC,CAAC;SACJ;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE;;YAEZ,OAAO,CAAC,IAAI,CAAC,CAAA;;;;eAIJ,MAAM,CAAA;;SAEZ,KAAK,CAAA;UACJ,MAAM,CAAA;WACL,OAAO,CAAA;cACJ,UAAU,CAAA;gBACR,YAAY,CAAA;qBACP,iBAAiB,CAAA;;;AAGnC,EAAA,CAAA,CAAC,CAAC;YACC,OAAO;SACR;;AAGD,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAKA,eAAS,CAAC,UAAU,EAAE;YACxE,OAAO;SACR;aAAM,IAAI,iBAAiB,KAAK,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;YACpG,OAAO;SACR;AAAM,aAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACtC,YAAA,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE;AACjC,gBAAA,OAAO,EAAE,CAAC;AACR,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,IAAI,EAAE,OAAO;qBACd,CAAC;AACH,aAAA,CAAC,CAAC;SACJ;AAAM,aAAA,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE;AAC3D,YAAA,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE;gBACjC,OAAO;AACR,aAAA,CAAC,CAAC;SACJ;KACF;AACF,CAAA;SAYe,uBAAuB,GAAA;IACrC,MAAM,YAAY,GAA+C,EAAE,CAAC;AACpE,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;AAC7C,IAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEhD,MAAM,aAAa,GAAG,CACpB,KAAa,EACb,WAAoC,EACpC,WAAW,GAAG,KAAK,KACX;AACR,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YACtD,OAAO;SACR;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACxB,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC1C;AAED,QAAA,IACE,QAAQ,CAAC,UAAU,CAACC,kBAAY,CAAC,IAAI,CAAC;YACtCA,kBAAY,CAAC,IAAI,IAAI,WAAW;AAChC,YAAA,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,EACpC;AACA,YAAA,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAA8C,CAAC;YACxF,YAAY,CAAC,KAAK,CAAC,GAAG;gBACpB,IAAI,EAAEA,kBAAY,CAAC,IAAI;gBACvB,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI;aACrD,CAAC;SACH;aAAM,IAAI,QAAQ,KAAKA,kBAAY,CAAC,SAAS,IAAI,WAAW,IAAI,WAAW,EAAE;AAC5E,YAAA,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAA6C,CAAC;YACvF,YAAY,CAAC,KAAK,CAAC,GAAG;AACpB,gBAAA,GAAG,cAAc;aAClB,CAAC;SACH;aAAM,IAAI,QAAQ,KAAKA,kBAAY,CAAC,SAAS,IAAI,WAAW,IAAI,WAAW,EAAE;AAC5E,YAAA,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAgF,CAAC;YAE3H,MAAM,IAAI,GAAG,WAAW;AACtB,kBAAE,WAAW,CAAC,SAAS,CAAC,IAAI;kBAC1B,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,KAAK,WAAW,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAElF,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9F,MAAM,IAAI,GACR,gBAAgB,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAEzF,YAAA,MAAM,WAAW,GAA8B;gBAC7C,EAAE;gBACF,IAAI;gBACJ,IAAI;gBACJ,IAAI,EAAEC,mBAAa,CAAC,SAAS;aAC9B,CAAC;YAEF,IAAI,WAAW,EAAE;AACf,gBAAA,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACzB,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC;aACnD;YAED,YAAY,CAAC,KAAK,CAAC,GAAG;gBACpB,IAAI,EAAED,kBAAY,CAAC,SAAS;AAC5B,gBAAA,SAAS,EAAE,WAAW;aACvB,CAAC;SACH;AACH,KAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAGtC,KAAU;AAET,QAAA,IAAI,KAAK,KAAKE,iBAAW,CAAC,WAAW,EAAE;YACrC,MAAM,OAAO,GAAG,IAAiB,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;;YAGjC,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAKH,eAAS,CAAC,UAAU,EAAE;gBACrD,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAClD,oBAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;AACrC,oBAAA,IAAI,IAAI,IAAI,QAAQ,IAAI,UAAU,EAAE;wBAClC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;qBAC3C;AACH,iBAAC,CAAC,CAAC;aACJ;SACF;AAAM,aAAA,IAAI,KAAK,KAAKG,iBAAW,CAAC,gBAAgB,EAAE;YACjD,MAAM,YAAY,GAAG,IAA2B,CAAC;YACjD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;gBACnE,OAAO;aACR;AAED,YAAA,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;sBACzD,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,sBAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;AAE/B,gBAAA,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;aAC3C;SACF;AAAM,aAAA,IAAI,KAAK,KAAKA,iBAAW,CAAC,iBAAiB,EAAE;YAClD,MAAM,YAAY,GAAG,IAA2B,CAAC;YACjD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;gBACpE,OAAO;aACR;YAED,IACE,YAAY,CAAC,KAAK,CAAC,IAAI,KAAKH,eAAS,CAAC,UAAU;AAChD,gBAAA,YAAY,CAAC,KAAK,CAAC,UAAU,EAC7B;gBAEA,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;AACtD,oBAAA,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AAE5D,oBAAA,MAAM,WAAW,GAA4B;wBAC3C,IAAI,EAAEC,kBAAY,CAAC,SAAS;AAC5B,wBAAA,SAAS,EAAE;AACT,4BAAA,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,EAAE;AAC9B,4BAAA,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,EAAE;AAC9B,4BAAA,EAAE,EAAE,UAAU;AACf,yBAAA;qBACF,CAAC;AAEF,oBAAA,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC5C,iBAAC,CAAC,CAAC;aACJ;SACF;AAAM,aAAA,IAAI,KAAK,KAAKE,iBAAW,CAAC,qBAAqB,EAAE;AACtD,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAA6C,CAAC;AAEjE,YAAA,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;YAE9B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;gBACzE,OAAO;aACR;AAED,YAAA,MAAM,WAAW,GAA4B;gBAC3C,IAAI,EAAEF,kBAAY,CAAC,SAAS;gBAC5B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;YAEF,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;SACjD;AACH,KAAC,CAAC;AAEF,IAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAC5C;;;;;"}
|
package/dist/esm/common/enum.mjs
CHANGED
|
@@ -80,6 +80,23 @@ var StepTypes;
|
|
|
80
80
|
StepTypes["TOOL_CALLS"] = "tool_calls";
|
|
81
81
|
StepTypes["MESSAGE_CREATION"] = "message_creation";
|
|
82
82
|
})(StepTypes || (StepTypes = {}));
|
|
83
|
+
var ContentTypes;
|
|
84
|
+
(function (ContentTypes) {
|
|
85
|
+
ContentTypes["TEXT"] = "text";
|
|
86
|
+
ContentTypes["TOOL_CALL"] = "tool_call";
|
|
87
|
+
ContentTypes["IMAGE_FILE"] = "image_file";
|
|
88
|
+
ContentTypes["IMAGE_URL"] = "image_url";
|
|
89
|
+
ContentTypes["ERROR"] = "error";
|
|
90
|
+
})(ContentTypes || (ContentTypes = {}));
|
|
91
|
+
var ToolCallTypes;
|
|
92
|
+
(function (ToolCallTypes) {
|
|
93
|
+
ToolCallTypes["FUNCTION"] = "function";
|
|
94
|
+
ToolCallTypes["RETRIEVAL"] = "retrieval";
|
|
95
|
+
ToolCallTypes["FILE_SEARCH"] = "file_search";
|
|
96
|
+
ToolCallTypes["CODE_INTERPRETER"] = "code_interpreter";
|
|
97
|
+
/* Agents Tool Call */
|
|
98
|
+
ToolCallTypes["TOOL_CALL"] = "tool_call";
|
|
99
|
+
})(ToolCallTypes || (ToolCallTypes = {}));
|
|
83
100
|
var Callback;
|
|
84
101
|
(function (Callback) {
|
|
85
102
|
Callback["TOOL_ERROR"] = "handleToolError";
|
|
@@ -104,5 +121,5 @@ var Callback;
|
|
|
104
121
|
*/
|
|
105
122
|
})(Callback || (Callback = {}));
|
|
106
123
|
|
|
107
|
-
export { Callback, CommonEvents, GraphEvents, GraphNodeActions, GraphNodeKeys, Providers, StepTypes };
|
|
124
|
+
export { Callback, CommonEvents, ContentTypes, GraphEvents, GraphNodeActions, GraphNodeKeys, Providers, StepTypes, ToolCallTypes };
|
|
108
125
|
//# sourceMappingURL=enum.mjs.map
|