@copilotkit/runtime 1.10.5-next.1 → 1.10.5-next.10

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.
Files changed (41) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/dist/{chunk-C56AVUZI.mjs → chunk-COGFQ4V4.mjs} +2 -2
  3. package/dist/{chunk-T4NLPBCY.mjs → chunk-M65Z27MR.mjs} +2 -2
  4. package/dist/{chunk-FOXQPOXW.mjs → chunk-NFB4H6NT.mjs} +30 -11
  5. package/dist/chunk-NFB4H6NT.mjs.map +1 -0
  6. package/dist/{chunk-CX4GADTM.mjs → chunk-NNBTOZO3.mjs} +2 -2
  7. package/dist/{chunk-H6QUY5ZQ.mjs → chunk-Y5BKTUH2.mjs} +6 -2
  8. package/dist/{chunk-H6QUY5ZQ.mjs.map → chunk-Y5BKTUH2.mjs.map} +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +33 -10
  11. package/dist/index.js.map +1 -1
  12. package/dist/index.mjs +5 -5
  13. package/dist/lib/index.d.ts +1 -1
  14. package/dist/lib/index.js +33 -10
  15. package/dist/lib/index.js.map +1 -1
  16. package/dist/lib/index.mjs +5 -5
  17. package/dist/lib/integrations/index.d.ts +2 -2
  18. package/dist/lib/integrations/index.js +10 -10
  19. package/dist/lib/integrations/index.js.map +1 -1
  20. package/dist/lib/integrations/index.mjs +4 -4
  21. package/dist/lib/integrations/nest/index.d.ts +1 -1
  22. package/dist/lib/integrations/nest/index.js +10 -10
  23. package/dist/lib/integrations/nest/index.js.map +1 -1
  24. package/dist/lib/integrations/nest/index.mjs +2 -2
  25. package/dist/lib/integrations/node-express/index.d.ts +1 -1
  26. package/dist/lib/integrations/node-express/index.js +10 -10
  27. package/dist/lib/integrations/node-express/index.js.map +1 -1
  28. package/dist/lib/integrations/node-express/index.mjs +2 -2
  29. package/dist/lib/integrations/node-http/index.d.ts +1 -1
  30. package/dist/lib/integrations/node-http/index.js +10 -10
  31. package/dist/lib/integrations/node-http/index.js.map +1 -1
  32. package/dist/lib/integrations/node-http/index.mjs +1 -1
  33. package/dist/{shared-35015e40.d.ts → shared-0a7346ce.d.ts} +10 -0
  34. package/package.json +11 -11
  35. package/src/lib/runtime/agui-action.ts +7 -0
  36. package/src/lib/runtime/copilot-runtime.ts +25 -0
  37. package/src/lib/runtime/langgraph/langgraph-agent.ts +1 -0
  38. package/dist/chunk-FOXQPOXW.mjs.map +0 -1
  39. /package/dist/{chunk-C56AVUZI.mjs.map → chunk-COGFQ4V4.mjs.map} +0 -0
  40. /package/dist/{chunk-T4NLPBCY.mjs.map → chunk-M65Z27MR.mjs.map} +0 -0
  41. /package/dist/{chunk-CX4GADTM.mjs.map → chunk-NNBTOZO3.mjs.map} +0 -0
@@ -2,7 +2,7 @@ import {
2
2
  getCommonConfig,
3
3
  getRuntimeInstanceTelemetryInfo,
4
4
  telemetry_client_default
5
- } from "./chunk-FOXQPOXW.mjs";
5
+ } from "./chunk-NFB4H6NT.mjs";
6
6
  import {
7
7
  __name
8
8
  } from "./chunk-FHD4JECV.mjs";
@@ -77,4 +77,4 @@ export {
77
77
  config,
78
78
  copilotRuntimeNextJSPagesRouterEndpoint
79
79
  };
80
- //# sourceMappingURL=chunk-CX4GADTM.mjs.map
80
+ //# sourceMappingURL=chunk-NNBTOZO3.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  LangGraphEventTypes
3
- } from "./chunk-FOXQPOXW.mjs";
3
+ } from "./chunk-NFB4H6NT.mjs";
4
4
  import {
5
5
  __name
6
6
  } from "./chunk-FHD4JECV.mjs";
@@ -157,6 +157,10 @@ var LangGraphAgent = class extends AGUILangGraphAgent {
157
157
  output: schemaKeys.output ? [
158
158
  ...schemaKeys.output,
159
159
  ...CONSTANT_KEYS
160
+ ] : null,
161
+ context: schemaKeys.context ? [
162
+ ...schemaKeys.context,
163
+ ...CONSTANT_KEYS
160
164
  ] : null
161
165
  };
162
166
  }
@@ -168,4 +172,4 @@ export {
168
172
  CustomEventNames,
169
173
  LangGraphAgent
170
174
  };
171
- //# sourceMappingURL=chunk-H6QUY5ZQ.mjs.map
175
+ //# sourceMappingURL=chunk-Y5BKTUH2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/runtime/langgraph/langgraph-agent.ts"],"sourcesContent":["import {\n RunAgentInput,\n EventType,\n CustomEvent,\n TextMessageStartEvent,\n TextMessageContentEvent,\n TextMessageEndEvent,\n ToolCallStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n} from \"@ag-ui/client\";\nimport { map } from \"rxjs\";\nimport { LangGraphEventTypes } from \"../../../agents/langgraph/events\";\nimport { RawEvent } from \"@ag-ui/core\";\nimport {\n LangGraphAgent as AGUILangGraphAgent,\n LangGraphHttpAgent,\n type LangGraphAgentConfig,\n ProcessedEvents,\n SchemaKeys,\n type State,\n StateEnrichment,\n} from \"@ag-ui/langgraph\";\nimport { Message as LangGraphMessage } from \"@langchain/langgraph-sdk/dist/types.messages\";\nimport { ThreadState } from \"@langchain/langgraph-sdk\";\n\ninterface CopilotKitStateEnrichment {\n copilotkit: {\n actions: StateEnrichment[\"ag-ui\"][\"tools\"];\n context: StateEnrichment[\"ag-ui\"][\"context\"];\n };\n}\n\nexport interface PredictStateTool {\n tool: string;\n state_key: string;\n tool_argument: string;\n}\n\nexport type TextMessageEvents =\n | TextMessageStartEvent\n | TextMessageContentEvent\n | TextMessageEndEvent;\n\nexport type ToolCallEvents = ToolCallStartEvent | ToolCallArgsEvent | ToolCallEndEvent;\n\nexport enum CustomEventNames {\n CopilotKitManuallyEmitMessage = \"copilotkit_manually_emit_message\",\n CopilotKitManuallyEmitToolCall = \"copilotkit_manually_emit_tool_call\",\n CopilotKitManuallyEmitIntermediateState = \"copilotkit_manually_emit_intermediate_state\",\n CopilotKitExit = \"copilotkit_exit\",\n}\n\nexport class LangGraphAgent extends AGUILangGraphAgent {\n constructor(config: LangGraphAgentConfig) {\n super(config);\n }\n\n dispatchEvent(event: ProcessedEvents) {\n if (event.type === EventType.CUSTOM) {\n // const event = processedEvent as unknown as CustomEvent;\n const customEvent = event as unknown as CustomEvent;\n\n if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitMessage) {\n this.subscriber.next({\n type: EventType.TEXT_MESSAGE_START,\n role: \"assistant\",\n messageId: customEvent.value.message_id,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TEXT_MESSAGE_CONTENT,\n messageId: customEvent.value.message_id,\n delta: customEvent.value.message,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TEXT_MESSAGE_END,\n messageId: customEvent.value.message_id,\n rawEvent: event,\n });\n return true;\n }\n\n if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitToolCall) {\n this.subscriber.next({\n type: EventType.TOOL_CALL_START,\n toolCallId: customEvent.value.id,\n toolCallName: customEvent.value.name,\n parentMessageId: customEvent.value.id,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TOOL_CALL_ARGS,\n toolCallId: customEvent.value.id,\n delta: customEvent.value.args,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TOOL_CALL_END,\n toolCallId: customEvent.value.id,\n rawEvent: event,\n });\n return true;\n }\n\n if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitIntermediateState) {\n this.activeRun.manuallyEmittedState = customEvent.value;\n this.dispatchEvent({\n type: EventType.STATE_SNAPSHOT,\n snapshot: this.getStateSnapshot({\n values: this.activeRun.manuallyEmittedState,\n } as ThreadState<State>),\n rawEvent: event,\n });\n return true;\n }\n\n if (customEvent.name === CustomEventNames.CopilotKitExit) {\n this.subscriber.next({\n type: EventType.CUSTOM,\n name: \"Exit\",\n value: true,\n });\n return true;\n }\n }\n\n // Intercept all text message and tool call events and check if should disable\n const rawEvent = (event as ToolCallEvents | TextMessageEvents).rawEvent;\n if (!rawEvent) {\n this.subscriber.next(event);\n return true;\n }\n\n const isMessageEvent =\n event.type === EventType.TEXT_MESSAGE_START ||\n event.type === EventType.TEXT_MESSAGE_CONTENT ||\n event.type === EventType.TEXT_MESSAGE_END;\n const isToolEvent =\n event.type === EventType.TOOL_CALL_START ||\n event.type === EventType.TOOL_CALL_ARGS ||\n event.type === EventType.TOOL_CALL_END;\n if (\"copilotkit:emit-tool-calls\" in (rawEvent.metadata || {})) {\n if (rawEvent.metadata[\"copilotkit:emit-tool-calls\"] === false && isToolEvent) {\n return false;\n }\n }\n if (\"copilotkit:emit-messages\" in (rawEvent.metadata || {})) {\n if (rawEvent.metadata[\"copilotkit:emit-messages\"] === false && isMessageEvent) {\n return false;\n }\n }\n\n this.subscriber.next(event);\n return true;\n }\n\n // @ts-ignore\n run(input: RunAgentInput) {\n return super.run(input).pipe(\n map((processedEvent) => {\n // Turn raw event into emit state snapshot from tool call event\n if (processedEvent.type === EventType.RAW) {\n // Get the LangGraph event from the AGUI event.\n const event = (processedEvent as RawEvent).event ?? (processedEvent as RawEvent).rawEvent;\n\n const eventType = event.event;\n const toolCallData = event.data?.chunk?.tool_call_chunks?.[0];\n const toolCallUsedToPredictState = event.metadata?.[\n \"copilotkit:emit-intermediate-state\"\n ]?.some(\n (predictStateTool: PredictStateTool) => predictStateTool.tool === toolCallData?.name,\n );\n\n if (eventType === LangGraphEventTypes.OnChatModelStream && toolCallUsedToPredictState) {\n return {\n type: EventType.CUSTOM,\n name: \"PredictState\",\n value: event.metadata[\"copilotkit:emit-intermediate-state\"],\n };\n }\n }\n\n return processedEvent;\n }),\n );\n }\n\n langGraphDefaultMergeState(\n state: State,\n messages: LangGraphMessage[],\n input: RunAgentInput,\n ): State<StateEnrichment & CopilotKitStateEnrichment> {\n const aguiMergedState = super.langGraphDefaultMergeState(state, messages, input);\n const { tools: returnedTools, \"ag-ui\": agui } = aguiMergedState;\n // tolerate undefined and de-duplicate by stable key (id | name | key)\n const rawCombinedTools = [\n ...((returnedTools as any[]) ?? []),\n ...((agui?.tools as any[]) ?? []),\n ];\n const combinedTools = Array.from(\n new Map(\n rawCombinedTools.map((t: any) => [t?.id ?? t?.name ?? t?.key ?? JSON.stringify(t), t]),\n ).values(),\n );\n\n return {\n ...aguiMergedState,\n copilotkit: {\n actions: combinedTools,\n context: agui?.context ?? [],\n },\n };\n }\n\n async getSchemaKeys(): Promise<SchemaKeys> {\n const CONSTANT_KEYS = [\"copilotkit\"];\n const schemaKeys = await super.getSchemaKeys();\n return {\n config: schemaKeys.config,\n input: schemaKeys.input ? [...schemaKeys.input, ...CONSTANT_KEYS] : null,\n output: schemaKeys.output ? [...schemaKeys.output, ...CONSTANT_KEYS] : null,\n };\n }\n}\n\nexport { LangGraphHttpAgent };\n"],"mappings":"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","names":["EventType","map","LangGraphAgent","AGUILangGraphAgent","LangGraphHttpAgent","CustomEventNames","LangGraphAgent","AGUILangGraphAgent","constructor","config","dispatchEvent","event","type","EventType","CUSTOM","customEvent","name","subscriber","next","TEXT_MESSAGE_START","role","messageId","value","message_id","rawEvent","TEXT_MESSAGE_CONTENT","delta","message","TEXT_MESSAGE_END","TOOL_CALL_START","toolCallId","id","toolCallName","parentMessageId","TOOL_CALL_ARGS","args","TOOL_CALL_END","activeRun","manuallyEmittedState","STATE_SNAPSHOT","snapshot","getStateSnapshot","values","isMessageEvent","isToolEvent","metadata","run","input","pipe","map","processedEvent","RAW","eventType","toolCallData","data","chunk","tool_call_chunks","toolCallUsedToPredictState","some","predictStateTool","tool","LangGraphEventTypes","OnChatModelStream","langGraphDefaultMergeState","state","messages","aguiMergedState","tools","returnedTools","agui","rawCombinedTools","combinedTools","Array","from","Map","t","key","JSON","stringify","copilotkit","actions","context","getSchemaKeys","CONSTANT_KEYS","schemaKeys","output"]}
1
+ {"version":3,"sources":["../src/lib/runtime/langgraph/langgraph-agent.ts"],"sourcesContent":["import {\n RunAgentInput,\n EventType,\n CustomEvent,\n TextMessageStartEvent,\n TextMessageContentEvent,\n TextMessageEndEvent,\n ToolCallStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n} from \"@ag-ui/client\";\nimport { map } from \"rxjs\";\nimport { LangGraphEventTypes } from \"../../../agents/langgraph/events\";\nimport { RawEvent } from \"@ag-ui/core\";\nimport {\n LangGraphAgent as AGUILangGraphAgent,\n LangGraphHttpAgent,\n type LangGraphAgentConfig,\n ProcessedEvents,\n SchemaKeys,\n type State,\n StateEnrichment,\n} from \"@ag-ui/langgraph\";\nimport { Message as LangGraphMessage } from \"@langchain/langgraph-sdk/dist/types.messages\";\nimport { ThreadState } from \"@langchain/langgraph-sdk\";\n\ninterface CopilotKitStateEnrichment {\n copilotkit: {\n actions: StateEnrichment[\"ag-ui\"][\"tools\"];\n context: StateEnrichment[\"ag-ui\"][\"context\"];\n };\n}\n\nexport interface PredictStateTool {\n tool: string;\n state_key: string;\n tool_argument: string;\n}\n\nexport type TextMessageEvents =\n | TextMessageStartEvent\n | TextMessageContentEvent\n | TextMessageEndEvent;\n\nexport type ToolCallEvents = ToolCallStartEvent | ToolCallArgsEvent | ToolCallEndEvent;\n\nexport enum CustomEventNames {\n CopilotKitManuallyEmitMessage = \"copilotkit_manually_emit_message\",\n CopilotKitManuallyEmitToolCall = \"copilotkit_manually_emit_tool_call\",\n CopilotKitManuallyEmitIntermediateState = \"copilotkit_manually_emit_intermediate_state\",\n CopilotKitExit = \"copilotkit_exit\",\n}\n\nexport class LangGraphAgent extends AGUILangGraphAgent {\n constructor(config: LangGraphAgentConfig) {\n super(config);\n }\n\n dispatchEvent(event: ProcessedEvents) {\n if (event.type === EventType.CUSTOM) {\n // const event = processedEvent as unknown as CustomEvent;\n const customEvent = event as unknown as CustomEvent;\n\n if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitMessage) {\n this.subscriber.next({\n type: EventType.TEXT_MESSAGE_START,\n role: \"assistant\",\n messageId: customEvent.value.message_id,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TEXT_MESSAGE_CONTENT,\n messageId: customEvent.value.message_id,\n delta: customEvent.value.message,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TEXT_MESSAGE_END,\n messageId: customEvent.value.message_id,\n rawEvent: event,\n });\n return true;\n }\n\n if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitToolCall) {\n this.subscriber.next({\n type: EventType.TOOL_CALL_START,\n toolCallId: customEvent.value.id,\n toolCallName: customEvent.value.name,\n parentMessageId: customEvent.value.id,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TOOL_CALL_ARGS,\n toolCallId: customEvent.value.id,\n delta: customEvent.value.args,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TOOL_CALL_END,\n toolCallId: customEvent.value.id,\n rawEvent: event,\n });\n return true;\n }\n\n if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitIntermediateState) {\n this.activeRun.manuallyEmittedState = customEvent.value;\n this.dispatchEvent({\n type: EventType.STATE_SNAPSHOT,\n snapshot: this.getStateSnapshot({\n values: this.activeRun.manuallyEmittedState,\n } as ThreadState<State>),\n rawEvent: event,\n });\n return true;\n }\n\n if (customEvent.name === CustomEventNames.CopilotKitExit) {\n this.subscriber.next({\n type: EventType.CUSTOM,\n name: \"Exit\",\n value: true,\n });\n return true;\n }\n }\n\n // Intercept all text message and tool call events and check if should disable\n const rawEvent = (event as ToolCallEvents | TextMessageEvents).rawEvent;\n if (!rawEvent) {\n this.subscriber.next(event);\n return true;\n }\n\n const isMessageEvent =\n event.type === EventType.TEXT_MESSAGE_START ||\n event.type === EventType.TEXT_MESSAGE_CONTENT ||\n event.type === EventType.TEXT_MESSAGE_END;\n const isToolEvent =\n event.type === EventType.TOOL_CALL_START ||\n event.type === EventType.TOOL_CALL_ARGS ||\n event.type === EventType.TOOL_CALL_END;\n if (\"copilotkit:emit-tool-calls\" in (rawEvent.metadata || {})) {\n if (rawEvent.metadata[\"copilotkit:emit-tool-calls\"] === false && isToolEvent) {\n return false;\n }\n }\n if (\"copilotkit:emit-messages\" in (rawEvent.metadata || {})) {\n if (rawEvent.metadata[\"copilotkit:emit-messages\"] === false && isMessageEvent) {\n return false;\n }\n }\n\n this.subscriber.next(event);\n return true;\n }\n\n // @ts-ignore\n run(input: RunAgentInput) {\n return super.run(input).pipe(\n map((processedEvent) => {\n // Turn raw event into emit state snapshot from tool call event\n if (processedEvent.type === EventType.RAW) {\n // Get the LangGraph event from the AGUI event.\n const event = (processedEvent as RawEvent).event ?? (processedEvent as RawEvent).rawEvent;\n\n const eventType = event.event;\n const toolCallData = event.data?.chunk?.tool_call_chunks?.[0];\n const toolCallUsedToPredictState = event.metadata?.[\n \"copilotkit:emit-intermediate-state\"\n ]?.some(\n (predictStateTool: PredictStateTool) => predictStateTool.tool === toolCallData?.name,\n );\n\n if (eventType === LangGraphEventTypes.OnChatModelStream && toolCallUsedToPredictState) {\n return {\n type: EventType.CUSTOM,\n name: \"PredictState\",\n value: event.metadata[\"copilotkit:emit-intermediate-state\"],\n };\n }\n }\n\n return processedEvent;\n }),\n );\n }\n\n langGraphDefaultMergeState(\n state: State,\n messages: LangGraphMessage[],\n input: RunAgentInput,\n ): State<StateEnrichment & CopilotKitStateEnrichment> {\n const aguiMergedState = super.langGraphDefaultMergeState(state, messages, input);\n const { tools: returnedTools, \"ag-ui\": agui } = aguiMergedState;\n // tolerate undefined and de-duplicate by stable key (id | name | key)\n const rawCombinedTools = [\n ...((returnedTools as any[]) ?? []),\n ...((agui?.tools as any[]) ?? []),\n ];\n const combinedTools = Array.from(\n new Map(\n rawCombinedTools.map((t: any) => [t?.id ?? t?.name ?? t?.key ?? JSON.stringify(t), t]),\n ).values(),\n );\n\n return {\n ...aguiMergedState,\n copilotkit: {\n actions: combinedTools,\n context: agui?.context ?? [],\n },\n };\n }\n\n async getSchemaKeys(): Promise<SchemaKeys> {\n const CONSTANT_KEYS = [\"copilotkit\"];\n const schemaKeys = await super.getSchemaKeys();\n return {\n config: schemaKeys.config,\n input: schemaKeys.input ? [...schemaKeys.input, ...CONSTANT_KEYS] : null,\n output: schemaKeys.output ? [...schemaKeys.output, ...CONSTANT_KEYS] : null,\n context: schemaKeys.context ? [...schemaKeys.context, ...CONSTANT_KEYS] : null,\n };\n }\n}\n\nexport { LangGraphHttpAgent };\n"],"mappings":"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","names":["EventType","map","LangGraphAgent","AGUILangGraphAgent","LangGraphHttpAgent","CustomEventNames","LangGraphAgent","AGUILangGraphAgent","constructor","config","dispatchEvent","event","type","EventType","CUSTOM","customEvent","name","subscriber","next","TEXT_MESSAGE_START","role","messageId","value","message_id","rawEvent","TEXT_MESSAGE_CONTENT","delta","message","TEXT_MESSAGE_END","TOOL_CALL_START","toolCallId","id","toolCallName","parentMessageId","TOOL_CALL_ARGS","args","TOOL_CALL_END","activeRun","manuallyEmittedState","STATE_SNAPSHOT","snapshot","getStateSnapshot","values","isMessageEvent","isToolEvent","metadata","run","input","pipe","map","processedEvent","RAW","eventType","toolCallData","data","chunk","tool_call_chunks","toolCallUsedToPredictState","some","predictStateTool","tool","LangGraphEventTypes","OnChatModelStream","langGraphDefaultMergeState","state","messages","aguiMergedState","tools","returnedTools","agui","rawCombinedTools","combinedTools","Array","from","Map","t","key","JSON","stringify","copilotkit","actions","context","getSchemaKeys","CONSTANT_KEYS","schemaKeys","output"]}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { G as GoogleGenerativeAIAdapter, f as GroqAdapter, e as GroqAdapterParams, L as LangChainAdapter, a as OpenAIAdapter, O as OpenAIAdapterParams, c as OpenAIAssistantAdapter, b as OpenAIAssistantAdapterParams, d as UnifyAdapter, U as UnifyAdapterParams } from './groq-adapter-c8aec5c5.js';
2
- export { e as CommonConfig, C as CopilotRequestContextProperties, k as CopilotRuntime, j as CopilotRuntimeConstructorParams, f as CopilotRuntimeLogger, i as CopilotRuntimeRequest, b as CreateCopilotRuntimeServerOptions, G as GraphQLContext, L as LogLevel, o as MCPClient, p as MCPEndpointConfig, M as MCPTool, a as addCustomHeaderPlugin, d as buildSchema, s as convertMCPToolsToActions, m as copilotKitEndpoint, c as createContext, h as createLogger, q as extractParametersFromSchema, l as flattenToolCallsNoDuplicates, t as generateMcpToolInstructions, g as getCommonConfig, n as langGraphPlatformEndpoint, r as resolveEndpointType } from './shared-35015e40.js';
2
+ export { e as CommonConfig, C as CopilotRequestContextProperties, k as CopilotRuntime, j as CopilotRuntimeConstructorParams, f as CopilotRuntimeLogger, i as CopilotRuntimeRequest, b as CreateCopilotRuntimeServerOptions, G as GraphQLContext, L as LogLevel, o as MCPClient, p as MCPEndpointConfig, M as MCPTool, a as addCustomHeaderPlugin, d as buildSchema, s as convertMCPToolsToActions, m as copilotKitEndpoint, c as createContext, h as createLogger, q as extractParametersFromSchema, l as flattenToolCallsNoDuplicates, t as generateMcpToolInstructions, g as getCommonConfig, n as langGraphPlatformEndpoint, r as resolveEndpointType } from './shared-0a7346ce.js';
3
3
  export { CopilotRuntimeServerInstance, config, copilotRuntimeNextJSAppRouterEndpoint, copilotRuntimeNextJSPagesRouterEndpoint } from './lib/integrations/index.js';
4
4
  export { copilotRuntimeNodeHttpEndpoint } from './lib/integrations/node-http/index.js';
5
5
  export { copilotRuntimeNodeExpressEndpoint } from './lib/integrations/node-express/index.js';
package/dist/index.js CHANGED
@@ -44,7 +44,7 @@ var require_package = __commonJS({
44
44
  publishConfig: {
45
45
  access: "public"
46
46
  },
47
- version: "1.10.5-next.1",
47
+ version: "1.10.5-next.10",
48
48
  sideEffects: false,
49
49
  main: "./dist/index.js",
50
50
  module: "./dist/index.mjs",
@@ -82,11 +82,11 @@ var require_package = __commonJS({
82
82
  "zod-to-json-schema": "^3.23.5"
83
83
  },
84
84
  dependencies: {
85
- "@ag-ui/client": "^0.0.37",
86
- "@ag-ui/core": "^0.0.37",
87
- "@ag-ui/encoder": "^0.0.37",
88
- "@ag-ui/langgraph": "^0.0.13",
89
- "@ag-ui/proto": "^0.0.37",
85
+ "@ag-ui/client": "^0.0.39",
86
+ "@ag-ui/core": "^0.0.39",
87
+ "@ag-ui/encoder": "^0.0.39",
88
+ "@ag-ui/langgraph": "^0.0.17",
89
+ "@ag-ui/proto": "^0.0.39",
90
90
  "@anthropic-ai/sdk": "^0.57.0",
91
91
  "@copilotkit/shared": "workspace:*",
92
92
  "@graphql-yoga/plugin-defer-stream": "^3.3.1",
@@ -115,10 +115,10 @@ var require_package = __commonJS({
115
115
  zod: "^3.23.3"
116
116
  },
117
117
  peerDependencies: {
118
- "@ag-ui/client": ">=0.0.37",
119
- "@ag-ui/core": ">=0.0.37",
120
- "@ag-ui/encoder": ">=0.0.37",
121
- "@ag-ui/proto": ">=0.0.37"
118
+ "@ag-ui/client": ">=0.0.39",
119
+ "@ag-ui/core": ">=0.0.39",
120
+ "@ag-ui/encoder": ">=0.0.39",
121
+ "@ag-ui/proto": ">=0.0.39"
122
122
  },
123
123
  keywords: [
124
124
  "copilotkit",
@@ -4853,6 +4853,7 @@ var CopilotRuntime = class {
4853
4853
  langserve = [];
4854
4854
  onBeforeRequest;
4855
4855
  onAfterRequest;
4856
+ onStopGeneration;
4856
4857
  delegateAgentProcessingToServiceAdapter;
4857
4858
  observability;
4858
4859
  availableAgents;
@@ -4880,6 +4881,7 @@ var CopilotRuntime = class {
4880
4881
  this.remoteEndpointDefinitions = (params == null ? void 0 : params.remoteEndpoints) ?? (params == null ? void 0 : params.remoteActions) ?? [];
4881
4882
  this.onBeforeRequest = (_a = params == null ? void 0 : params.middleware) == null ? void 0 : _a.onBeforeRequest;
4882
4883
  this.onAfterRequest = (_b = params == null ? void 0 : params.middleware) == null ? void 0 : _b.onAfterRequest;
4884
+ this.onStopGeneration = params == null ? void 0 : params.onStopGeneration;
4883
4885
  this.delegateAgentProcessingToServiceAdapter = (params == null ? void 0 : params.delegateAgentProcessingToServiceAdapter) || false;
4884
4886
  this.observability = params == null ? void 0 : params.observability_c;
4885
4887
  this.agents = (params == null ? void 0 : params.agents) ?? {};
@@ -4959,6 +4961,18 @@ var CopilotRuntime = class {
4959
4961
  async processRuntimeRequest(request) {
4960
4962
  var _a, _b, _c, _d, _e;
4961
4963
  const { serviceAdapter, messages: rawMessages, actions: clientSideActionsInput, threadId, runId, outputMessagesPromise, graphqlContext, forwardedParameters, url, extensions, agentSession, agentStates, publicApiKey, context } = request;
4964
+ graphqlContext.request.signal.addEventListener("abort", () => {
4965
+ var _a2;
4966
+ return (_a2 = this.onStopGeneration) == null ? void 0 : _a2.call(this, {
4967
+ threadId,
4968
+ runId,
4969
+ url,
4970
+ agentName: agentSession == null ? void 0 : agentSession.agentName,
4971
+ lastMessage: rawMessages[rawMessages.length - 1]
4972
+ });
4973
+ }, {
4974
+ once: true
4975
+ });
4962
4976
  const eventSource = new RuntimeEventSource({
4963
4977
  errorHandler: async (error, context2) => {
4964
4978
  await this.error("error", context2, error, publicApiKey);
@@ -6461,6 +6475,11 @@ function constructAGUIRemoteAction({ logger: logger2, messages, agentStates, age
6461
6475
  },
6462
6476
  remoteAgentHandler: async ({ actionInputsWithoutAgents, threadId }) => {
6463
6477
  var _a;
6478
+ graphqlContext.request.signal.addEventListener("abort", () => {
6479
+ agent.abortRun();
6480
+ }, {
6481
+ once: true
6482
+ });
6464
6483
  logger2.debug({
6465
6484
  actionName: agent.agentId
6466
6485
  }, "Executing remote agent");
@@ -8286,6 +8305,10 @@ var LangGraphAgent = class extends import_langgraph.LangGraphAgent {
8286
8305
  output: schemaKeys.output ? [
8287
8306
  ...schemaKeys.output,
8288
8307
  ...CONSTANT_KEYS
8308
+ ] : null,
8309
+ context: schemaKeys.context ? [
8310
+ ...schemaKeys.context,
8311
+ ...CONSTANT_KEYS
8289
8312
  ] : null
8290
8313
  };
8291
8314
  }