UNPKG

@copilotkit/runtime

Version:

<img src="https://github.com/user-attachments/assets/0a6b64d9-e193-4940-a3f6-60334ac34084" alt="banner" style="border-radius: 12px; border: 2px solid #d6d4fa;" />

147 lines (145 loc) 5.62 kB
require("reflect-metadata"); const require_runtime = require('../../../../_virtual/_rolldown/runtime.cjs'); const require_events = require('../../../../agents/langgraph/events.cjs'); const require_consts = require('./consts.cjs'); let rxjs = require("rxjs"); let _ag_ui_client = require("@ag-ui/client"); let _ag_ui_langgraph = require("@ag-ui/langgraph"); //#region src/lib/runtime/agent-integrations/langgraph/agent.ts var LangGraphAgent = class extends _ag_ui_langgraph.LangGraphAgent { constructor(config) { super(config); } dispatchEvent(event) { if (event.type === _ag_ui_client.EventType.CUSTOM) { const customEvent = event; if (customEvent.name === require_consts.CustomEventNames.CopilotKitManuallyEmitMessage) { this.subscriber.next({ type: _ag_ui_client.EventType.TEXT_MESSAGE_START, role: "assistant", messageId: customEvent.value.message_id, rawEvent: event }); this.subscriber.next({ type: _ag_ui_client.EventType.TEXT_MESSAGE_CONTENT, messageId: customEvent.value.message_id, delta: customEvent.value.message, rawEvent: event }); this.subscriber.next({ type: _ag_ui_client.EventType.TEXT_MESSAGE_END, messageId: customEvent.value.message_id, rawEvent: event }); return true; } if (customEvent.name === require_consts.CustomEventNames.CopilotKitManuallyEmitToolCall) { this.subscriber.next({ type: _ag_ui_client.EventType.TOOL_CALL_START, toolCallId: customEvent.value.id, toolCallName: customEvent.value.name, parentMessageId: customEvent.value.id, rawEvent: event }); this.subscriber.next({ type: _ag_ui_client.EventType.TOOL_CALL_ARGS, toolCallId: customEvent.value.id, delta: customEvent.value.args, rawEvent: event }); this.subscriber.next({ type: _ag_ui_client.EventType.TOOL_CALL_END, toolCallId: customEvent.value.id, rawEvent: event }); return true; } if (customEvent.name === require_consts.CustomEventNames.CopilotKitManuallyEmitIntermediateState) { this.activeRun.manuallyEmittedState = customEvent.value; this.dispatchEvent({ type: _ag_ui_client.EventType.STATE_SNAPSHOT, snapshot: this.getStateSnapshot({ values: this.activeRun.manuallyEmittedState }), rawEvent: event }); return true; } if (customEvent.name === require_consts.CustomEventNames.CopilotKitExit) { this.subscriber.next({ type: _ag_ui_client.EventType.CUSTOM, name: "Exit", value: true }); return true; } } const rawEvent = event.rawEvent; if (!rawEvent) { this.subscriber.next(event); return true; } const isMessageEvent = event.type === _ag_ui_client.EventType.TEXT_MESSAGE_START || event.type === _ag_ui_client.EventType.TEXT_MESSAGE_CONTENT || event.type === _ag_ui_client.EventType.TEXT_MESSAGE_END; const isToolEvent = event.type === _ag_ui_client.EventType.TOOL_CALL_START || event.type === _ag_ui_client.EventType.TOOL_CALL_ARGS || event.type === _ag_ui_client.EventType.TOOL_CALL_END; if ("copilotkit:emit-tool-calls" in (rawEvent.metadata || {})) { if (rawEvent.metadata["copilotkit:emit-tool-calls"] === false && isToolEvent) return false; } if ("copilotkit:emit-messages" in (rawEvent.metadata || {})) { if (rawEvent.metadata["copilotkit:emit-messages"] === false && isMessageEvent) { if (this.activeRun?.id) this.messagesInProcess[this.activeRun.id] = null; return false; } } this.subscriber.next(event); return true; } run(input) { const messages = (input.messages ?? []).filter((m) => m?.role !== "reasoning"); const enrichedInput = { ...input, messages, forwardedProps: { ...input.forwardedProps, streamSubgraphs: input.forwardedProps?.streamSubgraphs ?? true } }; return super.run(enrichedInput).pipe((0, rxjs.map)((processedEvent) => { if (processedEvent.type === _ag_ui_client.EventType.RAW) { const event = processedEvent.event ?? processedEvent.rawEvent; const eventType = event.event; const toolCallData = event.data?.chunk?.tool_call_chunks?.[0]; const toolCallUsedToPredictState = event.metadata?.["copilotkit:emit-intermediate-state"]?.some((predictStateTool) => predictStateTool.tool === toolCallData?.name); if (eventType === require_events.LangGraphEventTypes.OnChatModelStream && toolCallUsedToPredictState) return { type: _ag_ui_client.EventType.CUSTOM, name: "PredictState", value: event.metadata["copilotkit:emit-intermediate-state"] }; } return processedEvent; })); } langGraphDefaultMergeState(state, messages, input) { const aguiMergedState = super.langGraphDefaultMergeState(state, messages, input); const { tools: returnedTools, "ag-ui": agui } = aguiMergedState; const rawCombinedTools = [...returnedTools ?? [], ...agui?.tools ?? []]; const combinedTools = Array.from(new Map(rawCombinedTools.map((t) => [t?.id ?? t?.name ?? t?.key ?? JSON.stringify(t), t])).values()); return { ...aguiMergedState, copilotkit: { actions: combinedTools, context: agui?.context ?? [] } }; } async getSchemaKeys() { const CONSTANT_KEYS = ["copilotkit"]; const schemaKeys = await super.getSchemaKeys(); return { config: schemaKeys.config, input: schemaKeys.input ? [...schemaKeys.input, ...CONSTANT_KEYS] : null, output: schemaKeys.output ? [...schemaKeys.output, ...CONSTANT_KEYS] : null, context: schemaKeys.context ? [...schemaKeys.context, ...CONSTANT_KEYS] : null }; } }; //#endregion exports.LangGraphAgent = LangGraphAgent; //# sourceMappingURL=agent.cjs.map