@copilotkit/runtime 1.79.2-canary.1792172552 → 1.81.0

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 (165) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +15 -1
  2. package/dist/agent/index.cjs.map +1 -1
  3. package/dist/agent/index.d.cts +5 -3
  4. package/dist/agent/index.d.cts.map +1 -1
  5. package/dist/agent/index.d.mts +4 -2
  6. package/dist/agent/index.d.mts.map +1 -1
  7. package/dist/agent/index.mjs.map +1 -1
  8. package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs +25 -1
  9. package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs.map +1 -1
  10. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts.map +1 -1
  11. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts.map +1 -1
  12. package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs +25 -1
  13. package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs.map +1 -1
  14. package/dist/lib/runtime/copilot-runtime.cjs +17 -3
  15. package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
  16. package/dist/lib/runtime/copilot-runtime.d.cts +2 -3
  17. package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
  18. package/dist/lib/runtime/copilot-runtime.d.mts +2 -3
  19. package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
  20. package/dist/lib/runtime/copilot-runtime.mjs +18 -4
  21. package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
  22. package/dist/lib/runtime/legacy-service-adapter-agent.cjs +360 -0
  23. package/dist/lib/runtime/legacy-service-adapter-agent.cjs.map +1 -0
  24. package/dist/lib/runtime/legacy-service-adapter-agent.mjs +359 -0
  25. package/dist/lib/runtime/legacy-service-adapter-agent.mjs.map +1 -0
  26. package/dist/lib/telemetry-client.cjs +12 -1
  27. package/dist/lib/telemetry-client.cjs.map +1 -1
  28. package/dist/lib/telemetry-client.mjs +12 -1
  29. package/dist/lib/telemetry-client.mjs.map +1 -1
  30. package/dist/package.cjs +6 -6
  31. package/dist/package.mjs +6 -6
  32. package/dist/service-adapters/events.cjs +91 -0
  33. package/dist/service-adapters/events.cjs.map +1 -1
  34. package/dist/service-adapters/events.d.cts +6 -1
  35. package/dist/service-adapters/events.d.cts.map +1 -1
  36. package/dist/service-adapters/events.d.mts +6 -1
  37. package/dist/service-adapters/events.d.mts.map +1 -1
  38. package/dist/service-adapters/events.mjs +90 -1
  39. package/dist/service-adapters/events.mjs.map +1 -1
  40. package/dist/service-adapters/langchain/langchain-adapter.cjs +1 -1
  41. package/dist/service-adapters/langchain/langchain-adapter.cjs.map +1 -1
  42. package/dist/service-adapters/langchain/langchain-adapter.d.cts.map +1 -1
  43. package/dist/service-adapters/langchain/langchain-adapter.d.mts.map +1 -1
  44. package/dist/service-adapters/langchain/langchain-adapter.mjs +2 -2
  45. package/dist/service-adapters/langchain/langchain-adapter.mjs.map +1 -1
  46. package/dist/service-adapters/langchain/utils.cjs +53 -15
  47. package/dist/service-adapters/langchain/utils.cjs.map +1 -1
  48. package/dist/service-adapters/langchain/utils.mjs +53 -16
  49. package/dist/service-adapters/langchain/utils.mjs.map +1 -1
  50. package/dist/v2/index.cjs +6 -0
  51. package/dist/v2/index.d.cts +7 -4
  52. package/dist/v2/index.d.mts +7 -4
  53. package/dist/v2/index.mjs +5 -3
  54. package/dist/v2/runtime/core/middleware-sse-parser.cjs +11 -2
  55. package/dist/v2/runtime/core/middleware-sse-parser.cjs.map +1 -1
  56. package/dist/v2/runtime/core/middleware-sse-parser.mjs +11 -2
  57. package/dist/v2/runtime/core/middleware-sse-parser.mjs.map +1 -1
  58. package/dist/v2/runtime/core/package-info.cjs +1 -1
  59. package/dist/v2/runtime/core/package-info.mjs +1 -1
  60. package/dist/v2/runtime/core/runtime.cjs +6 -3
  61. package/dist/v2/runtime/core/runtime.cjs.map +1 -1
  62. package/dist/v2/runtime/core/runtime.d.cts +15 -3
  63. package/dist/v2/runtime/core/runtime.d.cts.map +1 -1
  64. package/dist/v2/runtime/core/runtime.d.mts +15 -3
  65. package/dist/v2/runtime/core/runtime.d.mts.map +1 -1
  66. package/dist/v2/runtime/core/runtime.mjs +6 -3
  67. package/dist/v2/runtime/core/runtime.mjs.map +1 -1
  68. package/dist/v2/runtime/endpoints/express.cjs +2 -2
  69. package/dist/v2/runtime/endpoints/express.cjs.map +1 -1
  70. package/dist/v2/runtime/endpoints/express.mjs +2 -2
  71. package/dist/v2/runtime/endpoints/express.mjs.map +1 -1
  72. package/dist/v2/runtime/endpoints/node-fetch-handler.cjs +51 -1
  73. package/dist/v2/runtime/endpoints/node-fetch-handler.cjs.map +1 -1
  74. package/dist/v2/runtime/endpoints/node-fetch-handler.d.cts.map +1 -1
  75. package/dist/v2/runtime/endpoints/node-fetch-handler.d.mts.map +1 -1
  76. package/dist/v2/runtime/endpoints/node-fetch-handler.mjs +52 -2
  77. package/dist/v2/runtime/endpoints/node-fetch-handler.mjs.map +1 -1
  78. package/dist/v2/runtime/generative-ui/generative-ui-middleware.cjs +394 -0
  79. package/dist/v2/runtime/generative-ui/generative-ui-middleware.cjs.map +1 -0
  80. package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.cts +21 -0
  81. package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.cts.map +1 -0
  82. package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.mts +21 -0
  83. package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.mts.map +1 -0
  84. package/dist/v2/runtime/generative-ui/generative-ui-middleware.mjs +393 -0
  85. package/dist/v2/runtime/generative-ui/generative-ui-middleware.mjs.map +1 -0
  86. package/dist/v2/runtime/generative-ui/index.d.cts +3 -0
  87. package/dist/v2/runtime/generative-ui/index.d.mts +3 -0
  88. package/dist/v2/runtime/generative-ui/surface-writer.cjs +86 -0
  89. package/dist/v2/runtime/generative-ui/surface-writer.cjs.map +1 -0
  90. package/dist/v2/runtime/generative-ui/surface-writer.d.cts +33 -0
  91. package/dist/v2/runtime/generative-ui/surface-writer.d.cts.map +1 -0
  92. package/dist/v2/runtime/generative-ui/surface-writer.d.mts +33 -0
  93. package/dist/v2/runtime/generative-ui/surface-writer.d.mts.map +1 -0
  94. package/dist/v2/runtime/generative-ui/surface-writer.mjs +85 -0
  95. package/dist/v2/runtime/generative-ui/surface-writer.mjs.map +1 -0
  96. package/dist/v2/runtime/handlers/handle-run.cjs +8 -3
  97. package/dist/v2/runtime/handlers/handle-run.cjs.map +1 -1
  98. package/dist/v2/runtime/handlers/handle-run.mjs +5 -1
  99. package/dist/v2/runtime/handlers/handle-run.mjs.map +1 -1
  100. package/dist/v2/runtime/handlers/intelligence/run.cjs +2 -3
  101. package/dist/v2/runtime/handlers/intelligence/run.cjs.map +1 -1
  102. package/dist/v2/runtime/handlers/intelligence/run.mjs +2 -3
  103. package/dist/v2/runtime/handlers/intelligence/run.mjs.map +1 -1
  104. package/dist/v2/runtime/handlers/shared/agent-utils.cjs +7 -0
  105. package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -1
  106. package/dist/v2/runtime/handlers/shared/agent-utils.mjs +7 -0
  107. package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -1
  108. package/dist/v2/runtime/handlers/shared/sse-response.cjs +39 -0
  109. package/dist/v2/runtime/handlers/shared/sse-response.cjs.map +1 -1
  110. package/dist/v2/runtime/handlers/shared/sse-response.mjs +39 -0
  111. package/dist/v2/runtime/handlers/shared/sse-response.mjs.map +1 -1
  112. package/dist/v2/runtime/index.d.cts +7 -3
  113. package/dist/v2/runtime/index.d.cts.map +1 -1
  114. package/dist/v2/runtime/index.d.mts +7 -3
  115. package/dist/v2/runtime/index.d.mts.map +1 -1
  116. package/dist/v2/runtime/intelligence-platform/client.cjs +100 -1
  117. package/dist/v2/runtime/intelligence-platform/client.cjs.map +1 -1
  118. package/dist/v2/runtime/intelligence-platform/client.d.cts +33 -1
  119. package/dist/v2/runtime/intelligence-platform/client.d.cts.map +1 -1
  120. package/dist/v2/runtime/intelligence-platform/client.d.mts +33 -1
  121. package/dist/v2/runtime/intelligence-platform/client.d.mts.map +1 -1
  122. package/dist/v2/runtime/intelligence-platform/client.mjs +100 -1
  123. package/dist/v2/runtime/intelligence-platform/client.mjs.map +1 -1
  124. package/dist/v2/runtime/intelligence-platform/experimental.d.cts +27 -0
  125. package/dist/v2/runtime/intelligence-platform/experimental.d.cts.map +1 -0
  126. package/dist/v2/runtime/intelligence-platform/experimental.d.mts +27 -0
  127. package/dist/v2/runtime/intelligence-platform/experimental.d.mts.map +1 -0
  128. package/dist/v2/runtime/intelligence-platform/index.d.cts +2 -1
  129. package/dist/v2/runtime/intelligence-platform/index.d.mts +2 -1
  130. package/dist/v2/runtime/intelligence-platform/learning-management.cjs +204 -0
  131. package/dist/v2/runtime/intelligence-platform/learning-management.cjs.map +1 -0
  132. package/dist/v2/runtime/intelligence-platform/learning-management.d.cts +112 -0
  133. package/dist/v2/runtime/intelligence-platform/learning-management.d.cts.map +1 -0
  134. package/dist/v2/runtime/intelligence-platform/learning-management.d.mts +112 -0
  135. package/dist/v2/runtime/intelligence-platform/learning-management.d.mts.map +1 -0
  136. package/dist/v2/runtime/intelligence-platform/learning-management.mjs +194 -0
  137. package/dist/v2/runtime/intelligence-platform/learning-management.mjs.map +1 -0
  138. package/dist/v2/runtime/runner/agent-runner.cjs +16 -0
  139. package/dist/v2/runtime/runner/agent-runner.cjs.map +1 -1
  140. package/dist/v2/runtime/runner/agent-runner.d.cts +11 -1
  141. package/dist/v2/runtime/runner/agent-runner.d.cts.map +1 -1
  142. package/dist/v2/runtime/runner/agent-runner.d.mts +11 -1
  143. package/dist/v2/runtime/runner/agent-runner.d.mts.map +1 -1
  144. package/dist/v2/runtime/runner/agent-runner.mjs +16 -1
  145. package/dist/v2/runtime/runner/agent-runner.mjs.map +1 -1
  146. package/dist/v2/runtime/runner/in-memory.cjs +1 -1
  147. package/dist/v2/runtime/runner/in-memory.cjs.map +1 -1
  148. package/dist/v2/runtime/runner/in-memory.mjs +2 -2
  149. package/dist/v2/runtime/runner/in-memory.mjs.map +1 -1
  150. package/dist/v2/runtime/runner/index.d.cts +2 -2
  151. package/dist/v2/runtime/runner/index.d.mts +2 -2
  152. package/dist/v2/runtime/runner/index.mjs +1 -1
  153. package/dist/v2/runtime/runner/intelligence.cjs +25 -85
  154. package/dist/v2/runtime/runner/intelligence.cjs.map +1 -1
  155. package/dist/v2/runtime/runner/intelligence.d.cts +2 -31
  156. package/dist/v2/runtime/runner/intelligence.d.cts.map +1 -1
  157. package/dist/v2/runtime/runner/intelligence.d.mts +2 -31
  158. package/dist/v2/runtime/runner/intelligence.d.mts.map +1 -1
  159. package/dist/v2/runtime/runner/intelligence.mjs +27 -87
  160. package/dist/v2/runtime/runner/intelligence.mjs.map +1 -1
  161. package/package.json +8 -8
  162. package/dist/v2/runtime/endpoints/express-fetch-bridge.cjs +0 -82
  163. package/dist/v2/runtime/endpoints/express-fetch-bridge.cjs.map +0 -1
  164. package/dist/v2/runtime/endpoints/express-fetch-bridge.mjs +0 -81
  165. package/dist/v2/runtime/endpoints/express-fetch-bridge.mjs.map +0 -1
@@ -1,4 +1,6 @@
1
1
  require("reflect-metadata");
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
+ const require_index = require('../graphql/types/converted/index.cjs');
2
4
  let _copilotkit_shared = require("@copilotkit/shared");
3
5
  let rxjs = require("rxjs");
4
6
 
@@ -22,8 +24,97 @@ let RuntimeMetaEventName = /* @__PURE__ */ function(RuntimeMetaEventName) {
22
24
  RuntimeMetaEventName["CopilotKitLangGraphInterruptEvent"] = "CopilotKitLangGraphInterruptEvent";
23
25
  return RuntimeMetaEventName;
24
26
  }({});
27
+ var RuntimeEventSubject = class extends rxjs.ReplaySubject {
28
+ constructor(signal) {
29
+ super();
30
+ this.signal = signal;
31
+ }
32
+ sendTextMessageStart({ messageId, parentMessageId }) {
33
+ this.next({
34
+ type: RuntimeEventTypes.TextMessageStart,
35
+ messageId,
36
+ parentMessageId
37
+ });
38
+ }
39
+ sendTextMessageContent({ messageId, content }) {
40
+ this.next({
41
+ type: RuntimeEventTypes.TextMessageContent,
42
+ content,
43
+ messageId
44
+ });
45
+ }
46
+ sendTextMessageEnd({ messageId }) {
47
+ this.next({
48
+ type: RuntimeEventTypes.TextMessageEnd,
49
+ messageId
50
+ });
51
+ }
52
+ sendTextMessage(messageId, content) {
53
+ this.sendTextMessageStart({ messageId });
54
+ this.sendTextMessageContent({
55
+ messageId,
56
+ content
57
+ });
58
+ this.sendTextMessageEnd({ messageId });
59
+ }
60
+ sendActionExecutionStart({ actionExecutionId, actionName, parentMessageId }) {
61
+ this.next({
62
+ type: RuntimeEventTypes.ActionExecutionStart,
63
+ actionExecutionId,
64
+ actionName,
65
+ parentMessageId
66
+ });
67
+ }
68
+ sendActionExecutionArgs({ actionExecutionId, args }) {
69
+ this.next({
70
+ type: RuntimeEventTypes.ActionExecutionArgs,
71
+ args,
72
+ actionExecutionId
73
+ });
74
+ }
75
+ sendActionExecutionEnd({ actionExecutionId }) {
76
+ this.next({
77
+ type: RuntimeEventTypes.ActionExecutionEnd,
78
+ actionExecutionId
79
+ });
80
+ }
81
+ sendActionExecution({ actionExecutionId, actionName, args, parentMessageId }) {
82
+ this.sendActionExecutionStart({
83
+ actionExecutionId,
84
+ actionName,
85
+ parentMessageId
86
+ });
87
+ this.sendActionExecutionArgs({
88
+ actionExecutionId,
89
+ args
90
+ });
91
+ this.sendActionExecutionEnd({ actionExecutionId });
92
+ }
93
+ sendActionExecutionResult({ actionExecutionId, actionName, result, error }) {
94
+ this.next({
95
+ type: RuntimeEventTypes.ActionExecutionResult,
96
+ actionName,
97
+ actionExecutionId,
98
+ result: require_index.ResultMessage.encodeResult(result, error)
99
+ });
100
+ }
101
+ sendAgentStateMessage({ threadId, agentName, nodeName, runId, active, role, state, running }) {
102
+ this.next({
103
+ type: RuntimeEventTypes.AgentStateMessage,
104
+ threadId,
105
+ agentName,
106
+ nodeName,
107
+ runId,
108
+ active,
109
+ role,
110
+ state,
111
+ running
112
+ });
113
+ }
114
+ };
25
115
 
26
116
  //#endregion
117
+ exports.RuntimeEventSubject = RuntimeEventSubject;
27
118
  exports.RuntimeEventTypes = RuntimeEventTypes;
28
119
  exports.RuntimeMetaEventName = RuntimeMetaEventName;
29
120
  //# sourceMappingURL=events.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.cjs","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n constructor() {\n super();\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA"}
1
+ {"version":3,"file":"events.cjs","names":["ReplaySubject","ResultMessage"],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n /**\n * Aborted when the consumer no longer wants events, for example when the\n * user stops the run. A producer that holds a model stream should cancel it.\n */\n readonly signal?: AbortSignal;\n\n constructor(signal?: AbortSignal) {\n super();\n this.signal = signal;\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA;;;AAoFF,IAAa,sBAAb,cAAyCA,mBAA4B;CAOnE,YAAY,QAAsB;AAChC,SAAO;AACP,OAAK,SAAS;;CAGhB,qBAAqB,EACnB,WACA,mBAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,uBAAuB,EACrB,WACA,WAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,mBAAmB,EAAE,aAAoC;AACvD,OAAK,KAAK;GAAE,MAAM,kBAAkB;GAAgB;GAAW,CAAC;;CAGlE,gBAAgB,WAAmB,SAAiB;AAClD,OAAK,qBAAqB,EAAE,WAAW,CAAC;AACxC,OAAK,uBAAuB;GAAE;GAAW;GAAS,CAAC;AACnD,OAAK,mBAAmB,EAAE,WAAW,CAAC;;CAGxC,yBAAyB,EACvB,mBACA,YACA,mBAKC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA;GACD,CAAC;;CAGJ,wBAAwB,EACtB,mBACA,QAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,uBAAuB,EAAE,qBAAoD;AAC3E,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACD,CAAC;;CAGJ,oBAAoB,EAClB,mBACA,YACA,MACA,mBAMC;AACD,OAAK,yBAAyB;GAC5B;GACA;GACA;GACD,CAAC;AACF,OAAK,wBAAwB;GAAE;GAAmB;GAAM,CAAC;AACzD,OAAK,uBAAuB,EAAE,mBAAmB,CAAC;;CAGpD,0BAA0B,EACxB,mBACA,YACA,QACA,SAMC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA,QAAQC,4BAAc,aAAa,QAAQ,MAAM;GAClD,CAAC;;CAGJ,sBAAsB,EACpB,UACA,WACA,UACA,OACA,QACA,MACA,OACA,WAUC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC"}
@@ -82,7 +82,12 @@ type RuntimeEvent = {
82
82
  } | RunTimeMetaEvent | RuntimeErrorEvent;
83
83
  type EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;
84
84
  declare class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {
85
- constructor();
85
+ /**
86
+ * Aborted when the consumer no longer wants events, for example when the
87
+ * user stops the run. A producer that holds a model stream should cancel it.
88
+ */
89
+ readonly signal?: AbortSignal;
90
+ constructor(signal?: AbortSignal);
86
91
  sendTextMessageStart({
87
92
  messageId,
88
93
  parentMessageId
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.cts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"mappings":"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"}
1
+ {"version":3,"file":"events.d.cts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"mappings":"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"}
@@ -82,7 +82,12 @@ type RuntimeEvent = {
82
82
  } | RunTimeMetaEvent | RuntimeErrorEvent;
83
83
  type EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;
84
84
  declare class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {
85
- constructor();
85
+ /**
86
+ * Aborted when the consumer no longer wants events, for example when the
87
+ * user stops the run. A producer that holds a model stream should cancel it.
88
+ */
89
+ readonly signal?: AbortSignal;
90
+ constructor(signal?: AbortSignal);
86
91
  sendTextMessageStart({
87
92
  messageId,
88
93
  parentMessageId
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.mts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"mappings":"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"}
1
+ {"version":3,"file":"events.d.mts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import "reflect-metadata";
2
+ import { ResultMessage } from "../graphql/types/converted/index.mjs";
2
3
  import { CopilotKitError, CopilotKitErrorCode, CopilotKitLowLevelError } from "@copilotkit/shared";
3
4
  import { ReplaySubject } from "rxjs";
4
5
 
@@ -22,7 +23,95 @@ let RuntimeMetaEventName = /* @__PURE__ */ function(RuntimeMetaEventName) {
22
23
  RuntimeMetaEventName["CopilotKitLangGraphInterruptEvent"] = "CopilotKitLangGraphInterruptEvent";
23
24
  return RuntimeMetaEventName;
24
25
  }({});
26
+ var RuntimeEventSubject = class extends ReplaySubject {
27
+ constructor(signal) {
28
+ super();
29
+ this.signal = signal;
30
+ }
31
+ sendTextMessageStart({ messageId, parentMessageId }) {
32
+ this.next({
33
+ type: RuntimeEventTypes.TextMessageStart,
34
+ messageId,
35
+ parentMessageId
36
+ });
37
+ }
38
+ sendTextMessageContent({ messageId, content }) {
39
+ this.next({
40
+ type: RuntimeEventTypes.TextMessageContent,
41
+ content,
42
+ messageId
43
+ });
44
+ }
45
+ sendTextMessageEnd({ messageId }) {
46
+ this.next({
47
+ type: RuntimeEventTypes.TextMessageEnd,
48
+ messageId
49
+ });
50
+ }
51
+ sendTextMessage(messageId, content) {
52
+ this.sendTextMessageStart({ messageId });
53
+ this.sendTextMessageContent({
54
+ messageId,
55
+ content
56
+ });
57
+ this.sendTextMessageEnd({ messageId });
58
+ }
59
+ sendActionExecutionStart({ actionExecutionId, actionName, parentMessageId }) {
60
+ this.next({
61
+ type: RuntimeEventTypes.ActionExecutionStart,
62
+ actionExecutionId,
63
+ actionName,
64
+ parentMessageId
65
+ });
66
+ }
67
+ sendActionExecutionArgs({ actionExecutionId, args }) {
68
+ this.next({
69
+ type: RuntimeEventTypes.ActionExecutionArgs,
70
+ args,
71
+ actionExecutionId
72
+ });
73
+ }
74
+ sendActionExecutionEnd({ actionExecutionId }) {
75
+ this.next({
76
+ type: RuntimeEventTypes.ActionExecutionEnd,
77
+ actionExecutionId
78
+ });
79
+ }
80
+ sendActionExecution({ actionExecutionId, actionName, args, parentMessageId }) {
81
+ this.sendActionExecutionStart({
82
+ actionExecutionId,
83
+ actionName,
84
+ parentMessageId
85
+ });
86
+ this.sendActionExecutionArgs({
87
+ actionExecutionId,
88
+ args
89
+ });
90
+ this.sendActionExecutionEnd({ actionExecutionId });
91
+ }
92
+ sendActionExecutionResult({ actionExecutionId, actionName, result, error }) {
93
+ this.next({
94
+ type: RuntimeEventTypes.ActionExecutionResult,
95
+ actionName,
96
+ actionExecutionId,
97
+ result: ResultMessage.encodeResult(result, error)
98
+ });
99
+ }
100
+ sendAgentStateMessage({ threadId, agentName, nodeName, runId, active, role, state, running }) {
101
+ this.next({
102
+ type: RuntimeEventTypes.AgentStateMessage,
103
+ threadId,
104
+ agentName,
105
+ nodeName,
106
+ runId,
107
+ active,
108
+ role,
109
+ state,
110
+ running
111
+ });
112
+ }
113
+ };
25
114
 
26
115
  //#endregion
27
- export { RuntimeEventTypes, RuntimeMetaEventName };
116
+ export { RuntimeEventSubject, RuntimeEventTypes, RuntimeMetaEventName };
28
117
  //# sourceMappingURL=events.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.mjs","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n constructor() {\n super();\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA"}
1
+ {"version":3,"file":"events.mjs","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n /**\n * Aborted when the consumer no longer wants events, for example when the\n * user stops the run. A producer that holds a model stream should cancel it.\n */\n readonly signal?: AbortSignal;\n\n constructor(signal?: AbortSignal) {\n super();\n this.signal = signal;\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA;;;AAoFF,IAAa,sBAAb,cAAyC,cAA4B;CAOnE,YAAY,QAAsB;AAChC,SAAO;AACP,OAAK,SAAS;;CAGhB,qBAAqB,EACnB,WACA,mBAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,uBAAuB,EACrB,WACA,WAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,mBAAmB,EAAE,aAAoC;AACvD,OAAK,KAAK;GAAE,MAAM,kBAAkB;GAAgB;GAAW,CAAC;;CAGlE,gBAAgB,WAAmB,SAAiB;AAClD,OAAK,qBAAqB,EAAE,WAAW,CAAC;AACxC,OAAK,uBAAuB;GAAE;GAAW;GAAS,CAAC;AACnD,OAAK,mBAAmB,EAAE,WAAW,CAAC;;CAGxC,yBAAyB,EACvB,mBACA,YACA,mBAKC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA;GACD,CAAC;;CAGJ,wBAAwB,EACtB,mBACA,QAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,uBAAuB,EAAE,qBAAoD;AAC3E,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACD,CAAC;;CAGJ,oBAAoB,EAClB,mBACA,YACA,MACA,mBAMC;AACD,OAAK,yBAAyB;GAC5B;GACA;GACA;GACD,CAAC;AACF,OAAK,wBAAwB;GAAE;GAAmB;GAAM,CAAC;AACzD,OAAK,uBAAuB,EAAE,mBAAmB,CAAC;;CAGpD,0BAA0B,EACxB,mBACA,YACA,QACA,SAMC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA,QAAQ,cAAc,aAAa,QAAQ,MAAM;GAClD,CAAC;;CAGJ,sBAAsB,EACpB,UACA,WACA,UACA,OACA,QACA,MACA,OACA,WAUC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC"}
@@ -19,7 +19,7 @@ var LangChainAdapter = class {
19
19
  const { eventSource, model, actions, messages, runId, threadId: threadIdFromRequest } = request;
20
20
  const threadId = threadIdFromRequest ?? (0, _copilotkit_shared.randomUUID)();
21
21
  const result = await this.options.chainFn({
22
- messages: messages.map(require_utils.convertMessageToLangChainMessage),
22
+ messages: require_utils.mergeAssistantToolCalls(messages.map(require_utils.convertMessageToLangChainMessage)),
23
23
  tools: actions.map(require_utils.convertActionInputToLangChainTool),
24
24
  model,
25
25
  threadId,
@@ -1 +1 @@
1
- {"version":3,"file":"langchain-adapter.cjs","names":["convertMessageToLangChainMessage","convertActionInputToLangChainTool","streamLangChainResponse"],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — LangChainAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for LangChain.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, LangChainAdapter } from \"@copilotkit/runtime\";\n * import { ChatOpenAI } from \"@langchain/openai\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const model = new ChatOpenAI({\n * model: \"gpt-4o\",\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new LangChainAdapter({\n * chainFn: async ({ messages, tools }) => {\n * return model.bindTools(tools).stream(messages);\n * // or optionally enable strict mode\n * // return model.bindTools(tools, { strict: true }).stream(messages);\n * }\n * });\n * ```\n *\n * The asynchronous handler function (`chainFn`) can return any of the following:\n *\n * - A simple `string` response\n * - A LangChain stream (`IterableReadableStream`)\n * - A LangChain `BaseMessageChunk` object\n * - A LangChain `AIMessage` object\n */\n\nimport type { BaseMessage } from \"@langchain/core/messages\";\nimport type { CopilotServiceAdapter } from \"../service-adapter\";\nimport type {\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToLangChainTool,\n convertMessageToLangChainMessage,\n streamLangChainResponse,\n} from \"./utils\";\nimport type { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport type { LangChainReturnType } from \"./types\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\ninterface ChainFnParameters {\n model: string;\n messages: BaseMessage[];\n tools: DynamicStructuredTool[];\n threadId?: string;\n runId?: string;\n}\n\ninterface LangChainAdapterOptions {\n /**\n * A function that uses the LangChain API to generate a response.\n */\n chainFn: (parameters: ChainFnParameters) => Promise<LangChainReturnType>;\n}\n\nexport class LangChainAdapter implements CopilotServiceAdapter {\n /**\n * To use LangChain as a backend, provide a handler function to the adapter with your custom LangChain logic.\n */\n public get name() {\n return \"LangChainAdapter\";\n }\n constructor(private options: LangChainAdapterOptions) {}\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n try {\n const {\n eventSource,\n model,\n actions,\n messages,\n runId,\n threadId: threadIdFromRequest,\n } = request;\n const threadId = threadIdFromRequest ?? randomUUID();\n const result = await this.options.chainFn({\n messages: messages.map(convertMessageToLangChainMessage),\n tools: actions.map(convertActionInputToLangChainTool),\n model,\n threadId,\n runId,\n });\n\n eventSource.stream(async (eventStream$) => {\n await streamLangChainResponse({\n result,\n eventStream$,\n });\n });\n\n return {\n threadId,\n };\n } finally {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const {\n awaitAllCallbacks,\n } = require(\"@langchain/core/callbacks/promises\");\n await awaitAllCallbacks();\n }\n }\n}\n"],"mappings":";;;;;;AAkFA,IAAa,mBAAb,MAA+D;;;;CAI7D,IAAW,OAAO;AAChB,SAAO;;CAET,YAAY,AAAQ,SAAkC;EAAlC;;CAEpB,MAAM,QACJ,SAC+C;AAC/C,MAAI;GACF,MAAM,EACJ,aACA,OACA,SACA,UACA,OACA,UAAU,wBACR;GACJ,MAAM,WAAW,2DAAmC;GACpD,MAAM,SAAS,MAAM,KAAK,QAAQ,QAAQ;IACxC,UAAU,SAAS,IAAIA,+CAAiC;IACxD,OAAO,QAAQ,IAAIC,gDAAkC;IACrD;IACA;IACA;IACD,CAAC;AAEF,eAAY,OAAO,OAAO,iBAAiB;AACzC,UAAMC,sCAAwB;KAC5B;KACA;KACD,CAAC;KACF;AAEF,UAAO,EACL,UACD;YACO;GAGR,MAAM,EACJ,sBACE,QAAQ,qCAAqC;AACjD,SAAM,mBAAmB"}
1
+ {"version":3,"file":"langchain-adapter.cjs","names":["mergeAssistantToolCalls","convertMessageToLangChainMessage","convertActionInputToLangChainTool","streamLangChainResponse"],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — LangChainAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for LangChain.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, LangChainAdapter } from \"@copilotkit/runtime\";\n * import { ChatOpenAI } from \"@langchain/openai\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const model = new ChatOpenAI({\n * model: \"gpt-4o\",\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new LangChainAdapter({\n * chainFn: async ({ messages, tools }) => {\n * return model.bindTools(tools).stream(messages);\n * // or optionally enable strict mode\n * // return model.bindTools(tools, { strict: true }).stream(messages);\n * }\n * });\n * ```\n *\n * The asynchronous handler function (`chainFn`) can return any of the following:\n *\n * - A simple `string` response\n * - A LangChain stream (`IterableReadableStream`)\n * - A LangChain `BaseMessageChunk` object\n * - A LangChain `AIMessage` object\n */\n\nimport type { BaseMessage } from \"@langchain/core/messages\";\nimport type { CopilotServiceAdapter } from \"../service-adapter\";\nimport type {\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToLangChainTool,\n convertMessageToLangChainMessage,\n mergeAssistantToolCalls,\n streamLangChainResponse,\n} from \"./utils\";\nimport type { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport type { LangChainReturnType } from \"./types\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\ninterface ChainFnParameters {\n model: string;\n messages: BaseMessage[];\n tools: DynamicStructuredTool[];\n threadId?: string;\n runId?: string;\n}\n\ninterface LangChainAdapterOptions {\n /**\n * A function that uses the LangChain API to generate a response.\n */\n chainFn: (parameters: ChainFnParameters) => Promise<LangChainReturnType>;\n}\n\nexport class LangChainAdapter implements CopilotServiceAdapter {\n /**\n * To use LangChain as a backend, provide a handler function to the adapter with your custom LangChain logic.\n */\n public get name() {\n return \"LangChainAdapter\";\n }\n constructor(private options: LangChainAdapterOptions) {}\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n try {\n const {\n eventSource,\n model,\n actions,\n messages,\n runId,\n threadId: threadIdFromRequest,\n } = request;\n const threadId = threadIdFromRequest ?? randomUUID();\n const result = await this.options.chainFn({\n messages: mergeAssistantToolCalls(\n messages.map(convertMessageToLangChainMessage),\n ),\n tools: actions.map(convertActionInputToLangChainTool),\n model,\n threadId,\n runId,\n });\n\n eventSource.stream(async (eventStream$) => {\n await streamLangChainResponse({\n result,\n eventStream$,\n });\n });\n\n return {\n threadId,\n };\n } finally {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const {\n awaitAllCallbacks,\n } = require(\"@langchain/core/callbacks/promises\");\n await awaitAllCallbacks();\n }\n }\n}\n"],"mappings":";;;;;;AAmFA,IAAa,mBAAb,MAA+D;;;;CAI7D,IAAW,OAAO;AAChB,SAAO;;CAET,YAAY,AAAQ,SAAkC;EAAlC;;CAEpB,MAAM,QACJ,SAC+C;AAC/C,MAAI;GACF,MAAM,EACJ,aACA,OACA,SACA,UACA,OACA,UAAU,wBACR;GACJ,MAAM,WAAW,2DAAmC;GACpD,MAAM,SAAS,MAAM,KAAK,QAAQ,QAAQ;IACxC,UAAUA,sCACR,SAAS,IAAIC,+CAAiC,CAC/C;IACD,OAAO,QAAQ,IAAIC,gDAAkC;IACrD;IACA;IACA;IACD,CAAC;AAEF,eAAY,OAAO,OAAO,iBAAiB;AACzC,UAAMC,sCAAwB;KAC5B;KACA;KACD,CAAC;KACF;AAEF,UAAO,EACL,UACD;YACO;GAGR,MAAM,EACJ,sBACE,QAAQ,qCAAqC;AACjD,SAAM,mBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"file":"langchain-adapter.d.cts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"mappings":";;;;;;;UAmEU,iBAAA;EACR,KAAA;EACA,QAAA,EAAU,WAAA;EACV,KAAA,EAAO,qBAAA;EACP,QAAA;EACA,KAAA;AAAA;AAAA,UAGQ,uBAAA;EAcY;;;EAVpB,OAAA,GAAU,UAAA,EAAY,iBAAA,KAAsB,OAAA,CAAQ,mBAAA;AAAA;AAAA,cAGzC,gBAAA,YAA4B,qBAAA;EAAA,QAOnB,OAAA;EAGlB;;;EAAA,IANS,IAAA,CAAA;cAGS,OAAA,EAAS,uBAAA;EAEvB,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;AAAA"}
1
+ {"version":3,"file":"langchain-adapter.d.cts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"mappings":";;;;;;;UAoEU,iBAAA;EACR,KAAA;EACA,QAAA,EAAU,WAAA;EACV,KAAA,EAAO,qBAAA;EACP,QAAA;EACA,KAAA;AAAA;AAAA,UAGQ,uBAAA;EAcY;;;EAVpB,OAAA,GAAU,UAAA,EAAY,iBAAA,KAAsB,OAAA,CAAQ,mBAAA;AAAA;AAAA,cAGzC,gBAAA,YAA4B,qBAAA;EAAA,QAOnB,OAAA;EAGlB;;;EAAA,IANS,IAAA,CAAA;cAGS,OAAA,EAAS,uBAAA;EAEvB,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"langchain-adapter.d.mts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"mappings":";;;;;;;UAmEU,iBAAA;EACR,KAAA;EACA,QAAA,EAAU,WAAA;EACV,KAAA,EAAO,qBAAA;EACP,QAAA;EACA,KAAA;AAAA;AAAA,UAGQ,uBAAA;EAcY;;;EAVpB,OAAA,GAAU,UAAA,EAAY,iBAAA,KAAsB,OAAA,CAAQ,mBAAA;AAAA;AAAA,cAGzC,gBAAA,YAA4B,qBAAA;EAAA,QAOnB,OAAA;EAGlB;;;EAAA,IANS,IAAA,CAAA;cAGS,OAAA,EAAS,uBAAA;EAEvB,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;AAAA"}
1
+ {"version":3,"file":"langchain-adapter.d.mts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"mappings":";;;;;;;UAoEU,iBAAA;EACR,KAAA;EACA,QAAA,EAAU,WAAA;EACV,KAAA,EAAO,qBAAA;EACP,QAAA;EACA,KAAA;AAAA;AAAA,UAGQ,uBAAA;EAcY;;;EAVpB,OAAA,GAAU,UAAA,EAAY,iBAAA,KAAsB,OAAA,CAAQ,mBAAA;AAAA;AAAA,cAGzC,gBAAA,YAA4B,qBAAA;EAAA,QAOnB,OAAA;EAGlB;;;EAAA,IANS,IAAA,CAAA;cAGS,OAAA,EAAS,uBAAA;EAEvB,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;AAAA"}
@@ -1,6 +1,6 @@
1
1
  import "reflect-metadata";
2
2
  import { __require } from "../../_virtual/_rolldown/runtime.mjs";
3
- import { convertActionInputToLangChainTool, convertMessageToLangChainMessage, streamLangChainResponse } from "./utils.mjs";
3
+ import { convertActionInputToLangChainTool, convertMessageToLangChainMessage, mergeAssistantToolCalls, streamLangChainResponse } from "./utils.mjs";
4
4
  import { randomUUID } from "@copilotkit/shared";
5
5
 
6
6
  //#region src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts
@@ -19,7 +19,7 @@ var LangChainAdapter = class {
19
19
  const { eventSource, model, actions, messages, runId, threadId: threadIdFromRequest } = request;
20
20
  const threadId = threadIdFromRequest ?? randomUUID();
21
21
  const result = await this.options.chainFn({
22
- messages: messages.map(convertMessageToLangChainMessage),
22
+ messages: mergeAssistantToolCalls(messages.map(convertMessageToLangChainMessage)),
23
23
  tools: actions.map(convertActionInputToLangChainTool),
24
24
  model,
25
25
  threadId,
@@ -1 +1 @@
1
- {"version":3,"file":"langchain-adapter.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — LangChainAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for LangChain.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, LangChainAdapter } from \"@copilotkit/runtime\";\n * import { ChatOpenAI } from \"@langchain/openai\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const model = new ChatOpenAI({\n * model: \"gpt-4o\",\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new LangChainAdapter({\n * chainFn: async ({ messages, tools }) => {\n * return model.bindTools(tools).stream(messages);\n * // or optionally enable strict mode\n * // return model.bindTools(tools, { strict: true }).stream(messages);\n * }\n * });\n * ```\n *\n * The asynchronous handler function (`chainFn`) can return any of the following:\n *\n * - A simple `string` response\n * - A LangChain stream (`IterableReadableStream`)\n * - A LangChain `BaseMessageChunk` object\n * - A LangChain `AIMessage` object\n */\n\nimport type { BaseMessage } from \"@langchain/core/messages\";\nimport type { CopilotServiceAdapter } from \"../service-adapter\";\nimport type {\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToLangChainTool,\n convertMessageToLangChainMessage,\n streamLangChainResponse,\n} from \"./utils\";\nimport type { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport type { LangChainReturnType } from \"./types\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\ninterface ChainFnParameters {\n model: string;\n messages: BaseMessage[];\n tools: DynamicStructuredTool[];\n threadId?: string;\n runId?: string;\n}\n\ninterface LangChainAdapterOptions {\n /**\n * A function that uses the LangChain API to generate a response.\n */\n chainFn: (parameters: ChainFnParameters) => Promise<LangChainReturnType>;\n}\n\nexport class LangChainAdapter implements CopilotServiceAdapter {\n /**\n * To use LangChain as a backend, provide a handler function to the adapter with your custom LangChain logic.\n */\n public get name() {\n return \"LangChainAdapter\";\n }\n constructor(private options: LangChainAdapterOptions) {}\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n try {\n const {\n eventSource,\n model,\n actions,\n messages,\n runId,\n threadId: threadIdFromRequest,\n } = request;\n const threadId = threadIdFromRequest ?? randomUUID();\n const result = await this.options.chainFn({\n messages: messages.map(convertMessageToLangChainMessage),\n tools: actions.map(convertActionInputToLangChainTool),\n model,\n threadId,\n runId,\n });\n\n eventSource.stream(async (eventStream$) => {\n await streamLangChainResponse({\n result,\n eventStream$,\n });\n });\n\n return {\n threadId,\n };\n } finally {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const {\n awaitAllCallbacks,\n } = require(\"@langchain/core/callbacks/promises\");\n await awaitAllCallbacks();\n }\n }\n}\n"],"mappings":";;;;;;AAkFA,IAAa,mBAAb,MAA+D;;;;CAI7D,IAAW,OAAO;AAChB,SAAO;;CAET,YAAY,AAAQ,SAAkC;EAAlC;;CAEpB,MAAM,QACJ,SAC+C;AAC/C,MAAI;GACF,MAAM,EACJ,aACA,OACA,SACA,UACA,OACA,UAAU,wBACR;GACJ,MAAM,WAAW,uBAAuB,YAAY;GACpD,MAAM,SAAS,MAAM,KAAK,QAAQ,QAAQ;IACxC,UAAU,SAAS,IAAI,iCAAiC;IACxD,OAAO,QAAQ,IAAI,kCAAkC;IACrD;IACA;IACA;IACD,CAAC;AAEF,eAAY,OAAO,OAAO,iBAAiB;AACzC,UAAM,wBAAwB;KAC5B;KACA;KACD,CAAC;KACF;AAEF,UAAO,EACL,UACD;YACO;GAGR,MAAM,EACJ,gCACU,qCAAqC;AACjD,SAAM,mBAAmB"}
1
+ {"version":3,"file":"langchain-adapter.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — LangChainAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for LangChain.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, LangChainAdapter } from \"@copilotkit/runtime\";\n * import { ChatOpenAI } from \"@langchain/openai\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const model = new ChatOpenAI({\n * model: \"gpt-4o\",\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new LangChainAdapter({\n * chainFn: async ({ messages, tools }) => {\n * return model.bindTools(tools).stream(messages);\n * // or optionally enable strict mode\n * // return model.bindTools(tools, { strict: true }).stream(messages);\n * }\n * });\n * ```\n *\n * The asynchronous handler function (`chainFn`) can return any of the following:\n *\n * - A simple `string` response\n * - A LangChain stream (`IterableReadableStream`)\n * - A LangChain `BaseMessageChunk` object\n * - A LangChain `AIMessage` object\n */\n\nimport type { BaseMessage } from \"@langchain/core/messages\";\nimport type { CopilotServiceAdapter } from \"../service-adapter\";\nimport type {\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToLangChainTool,\n convertMessageToLangChainMessage,\n mergeAssistantToolCalls,\n streamLangChainResponse,\n} from \"./utils\";\nimport type { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport type { LangChainReturnType } from \"./types\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\ninterface ChainFnParameters {\n model: string;\n messages: BaseMessage[];\n tools: DynamicStructuredTool[];\n threadId?: string;\n runId?: string;\n}\n\ninterface LangChainAdapterOptions {\n /**\n * A function that uses the LangChain API to generate a response.\n */\n chainFn: (parameters: ChainFnParameters) => Promise<LangChainReturnType>;\n}\n\nexport class LangChainAdapter implements CopilotServiceAdapter {\n /**\n * To use LangChain as a backend, provide a handler function to the adapter with your custom LangChain logic.\n */\n public get name() {\n return \"LangChainAdapter\";\n }\n constructor(private options: LangChainAdapterOptions) {}\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n try {\n const {\n eventSource,\n model,\n actions,\n messages,\n runId,\n threadId: threadIdFromRequest,\n } = request;\n const threadId = threadIdFromRequest ?? randomUUID();\n const result = await this.options.chainFn({\n messages: mergeAssistantToolCalls(\n messages.map(convertMessageToLangChainMessage),\n ),\n tools: actions.map(convertActionInputToLangChainTool),\n model,\n threadId,\n runId,\n });\n\n eventSource.stream(async (eventStream$) => {\n await streamLangChainResponse({\n result,\n eventStream$,\n });\n });\n\n return {\n threadId,\n };\n } finally {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const {\n awaitAllCallbacks,\n } = require(\"@langchain/core/callbacks/promises\");\n await awaitAllCallbacks();\n }\n }\n}\n"],"mappings":";;;;;;AAmFA,IAAa,mBAAb,MAA+D;;;;CAI7D,IAAW,OAAO;AAChB,SAAO;;CAET,YAAY,AAAQ,SAAkC;EAAlC;;CAEpB,MAAM,QACJ,SAC+C;AAC/C,MAAI;GACF,MAAM,EACJ,aACA,OACA,SACA,UACA,OACA,UAAU,wBACR;GACJ,MAAM,WAAW,uBAAuB,YAAY;GACpD,MAAM,SAAS,MAAM,KAAK,QAAQ,QAAQ;IACxC,UAAU,wBACR,SAAS,IAAI,iCAAiC,CAC/C;IACD,OAAO,QAAQ,IAAI,kCAAkC;IACrD;IACA;IACA;IACD,CAAC;AAEF,eAAY,OAAO,OAAO,iBAAiB;AACzC,UAAM,wBAAwB;KAC5B;KACA;KACD,CAAC;KACF;AAEF,UAAO,EACL,UACD;YACO;GAGR,MAAM,EACJ,gCACU,qCAAqC;AACjD,SAAM,mBAAmB"}
@@ -23,6 +23,28 @@ function convertMessageToLangChainMessage(message) {
23
23
  tool_call_id: message.actionExecutionId
24
24
  });
25
25
  }
26
+ /**
27
+ * Folds an assistant turn back into one message. A v1 history carries each
28
+ * tool call as its own message (plus an empty text message before them), so
29
+ * parallel calls arrive as several `AIMessage`s in a row. OpenAI rejects that
30
+ * shape: an assistant message with `tool_calls` must be followed directly by
31
+ * the results for each of its calls.
32
+ */
33
+ function mergeAssistantToolCalls(messages) {
34
+ const merged = [];
35
+ for (const message of messages) {
36
+ const previous = merged[merged.length - 1];
37
+ if (isAIMessage(previous) && isAIMessage(message) && message.tool_calls?.length) {
38
+ merged[merged.length - 1] = new _langchain_core_messages.AIMessage({
39
+ content: previous.content || message.content,
40
+ tool_calls: [...previous.tool_calls ?? [], ...message.tool_calls]
41
+ });
42
+ continue;
43
+ }
44
+ merged.push(message);
45
+ }
46
+ return merged;
47
+ }
26
48
  function convertActionInputToLangChainTool(actionInput) {
27
49
  return new _langchain_core_tools.DynamicStructuredTool({
28
50
  ...actionInput,
@@ -51,21 +73,17 @@ function maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution)
51
73
  });
52
74
  }
53
75
  async function streamLangChainResponse({ result, eventStream$, actionExecution }) {
54
- if (typeof result === "string") if (!actionExecution || actionExecution?.returnDirect) {
55
- eventStream$.sendActionExecutionResult({
76
+ if (typeof result === "string") {
77
+ if (actionExecution) eventStream$.sendActionExecutionResult({
56
78
  actionExecutionId: actionExecution.id,
57
79
  actionName: actionExecution.name,
58
80
  result
59
81
  });
60
- eventStream$.sendTextMessage((0, _copilotkit_shared.randomId)(), result);
61
- } else eventStream$.sendActionExecutionResult({
62
- actionExecutionId: actionExecution.id,
63
- actionName: actionExecution.name,
64
- result
65
- });
66
- else if (isAIMessage(result)) {
82
+ if (!actionExecution || actionExecution.returnDirect) eventStream$.sendTextMessage((0, _copilotkit_shared.randomId)(), result);
83
+ } else if (isAIMessage(result)) {
67
84
  maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
68
- if (result.content) eventStream$.sendTextMessage((0, _copilotkit_shared.randomId)(), result.content);
85
+ const text = contentToText(result.content);
86
+ if (text) eventStream$.sendTextMessage((0, _copilotkit_shared.randomId)(), text);
69
87
  for (const toolCall of result.tool_calls) eventStream$.sendActionExecution({
70
88
  actionExecutionId: toolCall.id || (0, _copilotkit_shared.randomId)(),
71
89
  actionName: toolCall.name,
@@ -73,7 +91,8 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
73
91
  });
74
92
  } else if (isBaseMessageChunk(result)) {
75
93
  maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
76
- if (result.lc_kwargs?.content) eventStream$.sendTextMessage((0, _copilotkit_shared.randomId)(), result.content);
94
+ const text = contentToText(result.lc_kwargs?.content);
95
+ if (text) eventStream$.sendTextMessage((0, _copilotkit_shared.randomId)(), text);
77
96
  if (result.lc_kwargs?.tool_calls) for (const toolCall of result.lc_kwargs?.tool_calls) eventStream$.sendActionExecution({
78
97
  actionExecutionId: toolCall.id || (0, _copilotkit_shared.randomId)(),
79
98
  actionName: toolCall.name,
@@ -82,8 +101,14 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
82
101
  } else if (result && "getReader" in result) {
83
102
  maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
84
103
  let reader = result.getReader();
104
+ const cancelReader = () => {
105
+ reader.cancel().catch(() => {});
106
+ };
107
+ eventStream$.signal?.addEventListener("abort", cancelReader, { once: true });
108
+ if (eventStream$.signal?.aborted) cancelReader();
85
109
  let mode = null;
86
110
  let currentMessageId;
111
+ let openToolCallId;
87
112
  const toolCallDetails = {
88
113
  name: null,
89
114
  id: null,
@@ -96,8 +121,7 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
96
121
  let toolCallId = void 0;
97
122
  let toolCallArgs = void 0;
98
123
  let hasToolCall = false;
99
- let content = "";
100
- if (value && value.content) content = Array.isArray(value.content) ? value.content[0]?.text ?? "" : value.content;
124
+ const content = contentToText(value?.content);
101
125
  if (isAIMessageChunk(value)) {
102
126
  let chunk = value.tool_call_chunks?.[0];
103
127
  toolCallArgs = chunk?.args;
@@ -122,12 +146,14 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
122
146
  eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
123
147
  } else if (mode === "function" && (!hasToolCall || done)) {
124
148
  mode = null;
125
- eventStream$.sendActionExecutionEnd({ actionExecutionId: toolCallId });
149
+ eventStream$.sendActionExecutionEnd({ actionExecutionId: openToolCallId });
150
+ openToolCallId = void 0;
126
151
  }
127
152
  if (done) break;
128
153
  if (mode === null) {
129
154
  if (hasToolCall && toolCallId && toolCallName) {
130
155
  mode = "function";
156
+ openToolCallId = toolCallId;
131
157
  eventStream$.sendActionExecutionStart({
132
158
  actionExecutionId: toolCallId,
133
159
  actionName: toolCallName,
@@ -145,7 +171,8 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
145
171
  });
146
172
  else if (mode === "function" && toolCallArgs) {
147
173
  if (toolCallDetails.index !== toolCallDetails.prevIndex) {
148
- eventStream$.sendActionExecutionEnd({ actionExecutionId: toolCallId });
174
+ eventStream$.sendActionExecutionEnd({ actionExecutionId: openToolCallId });
175
+ openToolCallId = toolCallId;
149
176
  eventStream$.sendActionExecutionStart({
150
177
  actionExecutionId: toolCallId,
151
178
  actionName: toolCallName,
@@ -162,6 +189,7 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
162
189
  console.error("Error reading from stream", error);
163
190
  break;
164
191
  }
192
+ eventStream$.signal?.removeEventListener("abort", cancelReader);
165
193
  } else if (actionExecution) eventStream$.sendActionExecutionResult({
166
194
  actionExecutionId: actionExecution.id,
167
195
  actionName: actionExecution.name,
@@ -170,6 +198,15 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
170
198
  else throw new Error("Invalid return type from LangChain function.");
171
199
  eventStream$.complete();
172
200
  }
201
+ /**
202
+ * Message content as plain text. Some providers (Anthropic) return an array of
203
+ * content parts, where text sits next to `tool_use` and other parts.
204
+ */
205
+ function contentToText(content) {
206
+ if (typeof content === "string") return content;
207
+ if (!Array.isArray(content)) return "";
208
+ return content.map((part) => part?.type === "text" && typeof part.text === "string" ? part.text : "").join("");
209
+ }
173
210
  function encodeResult(result) {
174
211
  if (result === void 0) return "";
175
212
  else if (typeof result === "string") return result;
@@ -179,5 +216,6 @@ function encodeResult(result) {
179
216
  //#endregion
180
217
  exports.convertActionInputToLangChainTool = convertActionInputToLangChainTool;
181
218
  exports.convertMessageToLangChainMessage = convertMessageToLangChainMessage;
219
+ exports.mergeAssistantToolCalls = mergeAssistantToolCalls;
182
220
  exports.streamLangChainResponse = streamLangChainResponse;
183
221
  //# sourceMappingURL=utils.cjs.map