@copilotkit/runtime 1.3.16-mme-lgc-langgraph-package.10 → 1.3.16-mme-reset-chat.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 (65) hide show
  1. package/CHANGELOG.md +45 -63
  2. package/dist/{chunk-JE2DM46O.mjs → chunk-2S6JGN2A.mjs} +4 -3
  3. package/dist/chunk-2S6JGN2A.mjs.map +1 -0
  4. package/dist/{chunk-SM3JAVXQ.mjs → chunk-3XICZ4K2.mjs} +5 -4
  5. package/dist/chunk-3XICZ4K2.mjs.map +1 -0
  6. package/dist/chunk-DFOKBSIS.mjs +1 -0
  7. package/dist/chunk-DFOKBSIS.mjs.map +1 -0
  8. package/dist/{chunk-PGK7SFLR.mjs → chunk-ODOSADGH.mjs} +376 -28
  9. package/dist/chunk-ODOSADGH.mjs.map +1 -0
  10. package/dist/{chunk-JCC4W3AU.mjs → chunk-TBNMKEWV.mjs} +4 -3
  11. package/dist/chunk-TBNMKEWV.mjs.map +1 -0
  12. package/dist/{chunk-BNQDVBQH.mjs → chunk-WHJ3DAYL.mjs} +251 -34
  13. package/dist/chunk-WHJ3DAYL.mjs.map +1 -0
  14. package/dist/{copilot-runtime-8d3f40c7.d.ts → copilot-runtime-b9715bd4.d.ts} +3 -3
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.js +141 -45
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.mjs +22 -22
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/lib/index.d.ts +1 -1
  21. package/dist/lib/index.js +141 -45
  22. package/dist/lib/index.js.map +1 -1
  23. package/dist/lib/index.mjs +21 -21
  24. package/dist/lib/integrations/index.d.ts +2 -2
  25. package/dist/lib/integrations/index.js +152 -85
  26. package/dist/lib/integrations/index.js.map +1 -1
  27. package/dist/lib/integrations/index.mjs +5 -5
  28. package/dist/lib/integrations/nest/index.d.ts +1 -1
  29. package/dist/lib/integrations/nest/index.js +149 -82
  30. package/dist/lib/integrations/nest/index.js.map +1 -1
  31. package/dist/lib/integrations/nest/index.mjs +3 -3
  32. package/dist/lib/integrations/node-express/index.d.ts +1 -1
  33. package/dist/lib/integrations/node-express/index.js +149 -82
  34. package/dist/lib/integrations/node-express/index.js.map +1 -1
  35. package/dist/lib/integrations/node-express/index.mjs +3 -3
  36. package/dist/lib/integrations/node-http/index.d.ts +1 -1
  37. package/dist/lib/integrations/node-http/index.js +148 -81
  38. package/dist/lib/integrations/node-http/index.js.map +1 -1
  39. package/dist/lib/integrations/node-http/index.mjs +2 -2
  40. package/dist/service-adapters/index.js +31 -18
  41. package/dist/service-adapters/index.js.map +1 -1
  42. package/dist/service-adapters/index.mjs +1 -2
  43. package/package.json +4 -4
  44. package/src/agents/langgraph/events.ts +2 -0
  45. package/src/lib/integrations/nest/index.ts +5 -2
  46. package/src/lib/integrations/nextjs/app-router.ts +5 -2
  47. package/src/lib/integrations/nextjs/pages-router.ts +5 -2
  48. package/src/lib/integrations/node-express/index.ts +5 -2
  49. package/src/lib/integrations/node-http/index.ts +5 -2
  50. package/src/lib/runtime/copilot-runtime.ts +14 -15
  51. package/src/lib/runtime/remote-action-constructors.ts +17 -3
  52. package/src/lib/runtime/remote-lg-cloud-action.ts +25 -2
  53. package/src/lib/telemetry-client.ts +43 -0
  54. package/src/service-adapters/google/google-genai-adapter.ts +2 -2
  55. package/src/service-adapters/langchain/langchain-adapter.ts +22 -16
  56. package/src/service-adapters/openai/openai-adapter.ts +5 -0
  57. package/dist/chunk-BNQDVBQH.mjs.map +0 -1
  58. package/dist/chunk-H3C6UCKB.mjs +0 -288
  59. package/dist/chunk-H3C6UCKB.mjs.map +0 -1
  60. package/dist/chunk-JCC4W3AU.mjs.map +0 -1
  61. package/dist/chunk-JE2DM46O.mjs.map +0 -1
  62. package/dist/chunk-MXXPWWBF.mjs +0 -218
  63. package/dist/chunk-MXXPWWBF.mjs.map +0 -1
  64. package/dist/chunk-PGK7SFLR.mjs.map +0 -1
  65. package/dist/chunk-SM3JAVXQ.mjs.map +0 -1
@@ -1,288 +0,0 @@
1
- import {
2
- RemoteChain
3
- } from "./chunk-BNQDVBQH.mjs";
4
- import {
5
- EndpointType,
6
- RuntimeEventSource,
7
- isLangGraphAgentAction,
8
- setupRemoteActions
9
- } from "./chunk-PGK7SFLR.mjs";
10
- import {
11
- ActionExecutionMessage,
12
- AgentStateMessage,
13
- ResultMessage,
14
- TextMessage
15
- } from "./chunk-B74M7FXG.mjs";
16
- import {
17
- __name
18
- } from "./chunk-44O2JGUY.mjs";
19
-
20
- // src/lib/runtime/copilot-runtime.ts
21
- import { actionParametersToJsonSchema } from "@copilotkit/shared";
22
-
23
- // src/service-adapters/conversion.ts
24
- import { plainToInstance } from "class-transformer";
25
- function convertGqlInputToMessages(inputMessages) {
26
- const messages = [];
27
- for (const message of inputMessages) {
28
- if (message.textMessage) {
29
- messages.push(plainToInstance(TextMessage, {
30
- id: message.id,
31
- createdAt: message.createdAt,
32
- role: message.textMessage.role,
33
- content: message.textMessage.content
34
- }));
35
- } else if (message.actionExecutionMessage) {
36
- messages.push(plainToInstance(ActionExecutionMessage, {
37
- id: message.id,
38
- createdAt: message.createdAt,
39
- name: message.actionExecutionMessage.name,
40
- arguments: JSON.parse(message.actionExecutionMessage.arguments),
41
- scope: message.actionExecutionMessage.scope
42
- }));
43
- } else if (message.resultMessage) {
44
- messages.push(plainToInstance(ResultMessage, {
45
- id: message.id,
46
- createdAt: message.createdAt,
47
- actionExecutionId: message.resultMessage.actionExecutionId,
48
- actionName: message.resultMessage.actionName,
49
- result: message.resultMessage.result
50
- }));
51
- } else if (message.agentStateMessage) {
52
- messages.push(plainToInstance(AgentStateMessage, {
53
- id: message.id,
54
- threadId: message.agentStateMessage.threadId,
55
- createdAt: message.createdAt,
56
- agentName: message.agentStateMessage.agentName,
57
- nodeName: message.agentStateMessage.nodeName,
58
- runId: message.agentStateMessage.runId,
59
- active: message.agentStateMessage.active,
60
- role: message.agentStateMessage.role,
61
- state: JSON.parse(message.agentStateMessage.state),
62
- running: message.agentStateMessage.running
63
- }));
64
- }
65
- }
66
- return messages;
67
- }
68
- __name(convertGqlInputToMessages, "convertGqlInputToMessages");
69
-
70
- // src/lib/runtime/copilot-runtime.ts
71
- import { from } from "rxjs";
72
- var CopilotRuntime = class {
73
- actions;
74
- remoteEndpointDefinitions;
75
- langserve = [];
76
- onBeforeRequest;
77
- onAfterRequest;
78
- constructor(params) {
79
- var _a, _b;
80
- this.actions = (params == null ? void 0 : params.actions) || [];
81
- for (const chain of (params == null ? void 0 : params.langserve) || []) {
82
- const remoteChain = new RemoteChain(chain);
83
- this.langserve.push(remoteChain.toAction());
84
- }
85
- this.remoteEndpointDefinitions = (params == null ? void 0 : params.remoteEndpoints) || [];
86
- this.onBeforeRequest = (_a = params == null ? void 0 : params.middleware) == null ? void 0 : _a.onBeforeRequest;
87
- this.onAfterRequest = (_b = params == null ? void 0 : params.middleware) == null ? void 0 : _b.onAfterRequest;
88
- }
89
- async processRuntimeRequest(request) {
90
- var _a;
91
- const { serviceAdapter, messages: rawMessages, actions: clientSideActionsInput, threadId, runId, outputMessagesPromise, graphqlContext, forwardedParameters, agentSession, url } = request;
92
- if (agentSession) {
93
- return this.processAgentRequest(request);
94
- }
95
- const messages = rawMessages.filter((message) => !message.agentStateMessage);
96
- const inputMessages = convertGqlInputToMessages(messages);
97
- const serverSideActions = await this.getServerSideActions(request);
98
- const serverSideActionsInput = serverSideActions.map((action) => ({
99
- name: action.name,
100
- description: action.description,
101
- jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters))
102
- }));
103
- const actionInputs = flattenToolCallsNoDuplicates([
104
- ...serverSideActionsInput,
105
- ...clientSideActionsInput
106
- ]);
107
- await ((_a = this.onBeforeRequest) == null ? void 0 : _a.call(this, {
108
- threadId,
109
- runId,
110
- inputMessages,
111
- properties: graphqlContext.properties,
112
- url
113
- }));
114
- try {
115
- const eventSource = new RuntimeEventSource();
116
- const result = await serviceAdapter.process({
117
- messages: inputMessages,
118
- actions: actionInputs,
119
- threadId,
120
- runId,
121
- eventSource,
122
- forwardedParameters
123
- });
124
- outputMessagesPromise.then((outputMessages) => {
125
- var _a2;
126
- (_a2 = this.onAfterRequest) == null ? void 0 : _a2.call(this, {
127
- threadId: result.threadId,
128
- runId: result.runId,
129
- inputMessages,
130
- outputMessages,
131
- properties: graphqlContext.properties,
132
- url
133
- });
134
- }).catch((_error) => {
135
- });
136
- return {
137
- threadId: result.threadId,
138
- runId: result.runId,
139
- eventSource,
140
- serverSideActions,
141
- actionInputsWithoutAgents: actionInputs.filter((action) => (
142
- // TODO-AGENTS: do not exclude ALL server side actions
143
- !serverSideActions.find((serverSideAction) => serverSideAction.name == action.name)
144
- ))
145
- };
146
- } catch (error) {
147
- console.error("Error getting response:", error);
148
- throw error;
149
- }
150
- }
151
- async processAgentRequest(request) {
152
- var _a;
153
- const { messages: rawMessages, outputMessagesPromise, graphqlContext, agentSession } = request;
154
- const { threadId, agentName, nodeName } = agentSession;
155
- const serverSideActions = await this.getServerSideActions(request);
156
- const messages = convertGqlInputToMessages(rawMessages);
157
- const agent = serverSideActions.find((action) => action.name === agentName && isLangGraphAgentAction(action));
158
- if (!agent) {
159
- throw new Error(`Agent ${agentName} not found`);
160
- }
161
- const serverSideActionsInput = serverSideActions.filter((action) => !isLangGraphAgentAction(action)).map((action) => ({
162
- name: action.name,
163
- description: action.description,
164
- jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters))
165
- }));
166
- const actionInputsWithoutAgents = flattenToolCallsNoDuplicates([
167
- ...serverSideActionsInput,
168
- ...request.actions
169
- ]);
170
- await ((_a = this.onBeforeRequest) == null ? void 0 : _a.call(this, {
171
- threadId,
172
- runId: void 0,
173
- inputMessages: messages,
174
- properties: graphqlContext.properties
175
- }));
176
- try {
177
- const eventSource = new RuntimeEventSource();
178
- const stream = await agent.langGraphAgentHandler({
179
- name: agentName,
180
- threadId,
181
- nodeName,
182
- actionInputsWithoutAgents
183
- });
184
- eventSource.stream(async (eventStream$) => {
185
- from(stream).subscribe({
186
- next: (event) => eventStream$.next(event),
187
- error: (err) => console.error("Error in stream", err),
188
- complete: () => eventStream$.complete()
189
- });
190
- });
191
- outputMessagesPromise.then((outputMessages) => {
192
- var _a2;
193
- (_a2 = this.onAfterRequest) == null ? void 0 : _a2.call(this, {
194
- threadId,
195
- runId: void 0,
196
- inputMessages: messages,
197
- outputMessages,
198
- properties: graphqlContext.properties
199
- });
200
- }).catch((_error) => {
201
- });
202
- return {
203
- threadId,
204
- runId: void 0,
205
- eventSource,
206
- serverSideActions: [],
207
- actionInputsWithoutAgents
208
- };
209
- } catch (error) {
210
- console.error("Error getting response:", error);
211
- throw error;
212
- }
213
- }
214
- async getServerSideActions(request) {
215
- const { messages: rawMessages, graphqlContext, agentStates, url } = request;
216
- const inputMessages = convertGqlInputToMessages(rawMessages);
217
- const langserveFunctions = [];
218
- for (const chainPromise of this.langserve) {
219
- try {
220
- const chain = await chainPromise;
221
- langserveFunctions.push(chain);
222
- } catch (error) {
223
- console.error("Error loading langserve chain:", error);
224
- }
225
- }
226
- const remoteEndpointDefinitions = this.remoteEndpointDefinitions.map((endpoint) => ({
227
- ...endpoint,
228
- type: this.resolveEndpointType(endpoint)
229
- }));
230
- const remoteActions = await setupRemoteActions({
231
- remoteEndpointDefinitions,
232
- graphqlContext,
233
- messages: inputMessages,
234
- agentStates,
235
- frontendUrl: url
236
- });
237
- const configuredActions = typeof this.actions === "function" ? this.actions({
238
- properties: graphqlContext.properties,
239
- url
240
- }) : this.actions;
241
- return [
242
- ...configuredActions,
243
- ...langserveFunctions,
244
- ...remoteActions
245
- ];
246
- }
247
- resolveEndpointType(endpoint) {
248
- if (!endpoint.type && "langsmithApiKey" in endpoint && "deploymentUrl" in endpoint && "agents" in endpoint) {
249
- return EndpointType.LangGraphCloud;
250
- }
251
- return endpoint.type;
252
- }
253
- };
254
- __name(CopilotRuntime, "CopilotRuntime");
255
- function flattenToolCallsNoDuplicates(toolsByPriority) {
256
- let allTools = [];
257
- const allToolNames = [];
258
- for (const tool of toolsByPriority) {
259
- if (!allToolNames.includes(tool.name)) {
260
- allTools.push(tool);
261
- allToolNames.push(tool.name);
262
- }
263
- }
264
- return allTools;
265
- }
266
- __name(flattenToolCallsNoDuplicates, "flattenToolCallsNoDuplicates");
267
- function copilotKitEndpoint(config) {
268
- return {
269
- ...config,
270
- type: EndpointType.CopilotKit
271
- };
272
- }
273
- __name(copilotKitEndpoint, "copilotKitEndpoint");
274
- function langGraphCloudEndpoint(config) {
275
- return {
276
- ...config,
277
- type: EndpointType.LangGraphCloud
278
- };
279
- }
280
- __name(langGraphCloudEndpoint, "langGraphCloudEndpoint");
281
-
282
- export {
283
- CopilotRuntime,
284
- flattenToolCallsNoDuplicates,
285
- copilotKitEndpoint,
286
- langGraphCloudEndpoint
287
- };
288
- //# sourceMappingURL=chunk-H3C6UCKB.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/runtime/copilot-runtime.ts","../src/service-adapters/conversion.ts"],"sourcesContent":["/**\n * <Callout type=\"info\">\n * This is the reference for the `CopilotRuntime` class. For more information and example code snippets, please see [Concept: Copilot Runtime](/concepts/copilot-runtime).\n * </Callout>\n *\n * ## Usage\n *\n * ```tsx\n * import { CopilotRuntime } from \"@copilotkit/runtime\";\n *\n * const copilotKit = new CopilotRuntime();\n * ```\n */\n\nimport { Action, actionParametersToJsonSchema, Parameter } from \"@copilotkit/shared\";\nimport { CopilotServiceAdapter, RemoteChain, RemoteChainParameters } from \"../../service-adapters\";\nimport { MessageInput } from \"../../graphql/inputs/message.input\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\nimport { RuntimeEventSource } from \"../../service-adapters/events\";\nimport { convertGqlInputToMessages } from \"../../service-adapters/conversion\";\nimport { Message } from \"../../graphql/types/converted\";\nimport { ForwardedParametersInput } from \"../../graphql/inputs/forwarded-parameters.input\";\nimport {\n isLangGraphAgentAction,\n LangGraphAgentAction,\n EndpointType,\n setupRemoteActions,\n EndpointDefinition,\n CopilotKitEndpoint,\n LangGraphCloudEndpoint,\n} from \"./remote-actions\";\nimport { GraphQLContext } from \"../integrations/shared\";\nimport { AgentSessionInput } from \"../../graphql/inputs/agent-session.input\";\nimport { from } from \"rxjs\";\nimport { AgentStateInput } from \"../../graphql/inputs/agent-state.input\";\n\ninterface CopilotRuntimeRequest {\n serviceAdapter: CopilotServiceAdapter;\n messages: MessageInput[];\n actions: ActionInput[];\n agentSession?: AgentSessionInput;\n agentStates?: AgentStateInput[];\n outputMessagesPromise: Promise<Message[]>;\n threadId?: string;\n runId?: string;\n publicApiKey?: string;\n graphqlContext: GraphQLContext;\n forwardedParameters?: ForwardedParametersInput;\n url?: string;\n}\n\ninterface CopilotRuntimeResponse {\n threadId: string;\n runId?: string;\n eventSource: RuntimeEventSource;\n serverSideActions: Action<any>[];\n actionInputsWithoutAgents: ActionInput[];\n}\n\ntype ActionsConfiguration<T extends Parameter[] | [] = []> =\n | Action<T>[]\n | ((ctx: { properties: any; url?: string }) => Action<T>[]);\n\ninterface OnBeforeRequestOptions {\n threadId?: string;\n runId?: string;\n inputMessages: Message[];\n properties: any;\n url?: string;\n}\n\ntype OnBeforeRequestHandler = (options: OnBeforeRequestOptions) => void | Promise<void>;\n\ninterface OnAfterRequestOptions {\n threadId: string;\n runId?: string;\n inputMessages: Message[];\n outputMessages: Message[];\n properties: any;\n url?: string;\n}\n\ntype OnAfterRequestHandler = (options: OnAfterRequestOptions) => void | Promise<void>;\n\ninterface Middleware {\n /**\n * A function that is called before the request is processed.\n */\n onBeforeRequest?: OnBeforeRequestHandler;\n\n /**\n * A function that is called after the request is processed.\n */\n onAfterRequest?: OnAfterRequestHandler;\n}\n\nexport interface CopilotRuntimeConstructorParams<T extends Parameter[] | [] = []> {\n /**\n * Middleware to be used by the runtime.\n *\n * ```ts\n * onBeforeRequest: (options: {\n * threadId?: string;\n * runId?: string;\n * inputMessages: Message[];\n * properties: any;\n * }) => void | Promise<void>;\n * ```\n *\n * ```ts\n * onAfterRequest: (options: {\n * threadId?: string;\n * runId?: string;\n * inputMessages: Message[];\n * outputMessages: Message[];\n * properties: any;\n * }) => void | Promise<void>;\n * ```\n */\n middleware?: Middleware;\n\n /*\n * A list of server side actions that can be executed.\n */\n actions?: ActionsConfiguration<T>;\n\n /*\n * Deprecated: Use `remoteEndpoints`.\n */\n remoteActions?: CopilotKitEndpoint[];\n\n /*\n * A list of remote actions that can be executed.\n */\n remoteEndpoints?: EndpointDefinition[];\n\n /*\n * An array of LangServer URLs.\n */\n langserve?: RemoteChainParameters[];\n}\n\nexport class CopilotRuntime<const T extends Parameter[] | [] = []> {\n public actions: ActionsConfiguration<T>;\n private remoteEndpointDefinitions: EndpointDefinition[];\n private langserve: Promise<Action<any>>[] = [];\n private onBeforeRequest?: OnBeforeRequestHandler;\n private onAfterRequest?: OnAfterRequestHandler;\n\n constructor(params?: CopilotRuntimeConstructorParams<T>) {\n this.actions = params?.actions || [];\n\n for (const chain of params?.langserve || []) {\n const remoteChain = new RemoteChain(chain);\n this.langserve.push(remoteChain.toAction());\n }\n\n this.remoteEndpointDefinitions = params?.remoteEndpoints || [];\n\n this.onBeforeRequest = params?.middleware?.onBeforeRequest;\n this.onAfterRequest = params?.middleware?.onAfterRequest;\n }\n\n async processRuntimeRequest(request: CopilotRuntimeRequest): Promise<CopilotRuntimeResponse> {\n const {\n serviceAdapter,\n messages: rawMessages,\n actions: clientSideActionsInput,\n threadId,\n runId,\n outputMessagesPromise,\n graphqlContext,\n forwardedParameters,\n agentSession,\n url,\n } = request;\n\n if (agentSession) {\n return this.processAgentRequest(request);\n }\n\n const messages = rawMessages.filter((message) => !message.agentStateMessage);\n\n const inputMessages = convertGqlInputToMessages(messages);\n const serverSideActions = await this.getServerSideActions(request);\n\n const serverSideActionsInput: ActionInput[] = serverSideActions.map((action) => ({\n name: action.name,\n description: action.description,\n jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters)),\n }));\n\n const actionInputs = flattenToolCallsNoDuplicates([\n ...serverSideActionsInput,\n ...clientSideActionsInput,\n ]);\n\n await this.onBeforeRequest?.({\n threadId,\n runId,\n inputMessages,\n properties: graphqlContext.properties,\n url,\n });\n\n try {\n const eventSource = new RuntimeEventSource();\n\n const result = await serviceAdapter.process({\n messages: inputMessages,\n actions: actionInputs,\n threadId,\n runId,\n eventSource,\n forwardedParameters,\n });\n\n outputMessagesPromise\n .then((outputMessages) => {\n this.onAfterRequest?.({\n threadId: result.threadId,\n runId: result.runId,\n inputMessages,\n outputMessages,\n properties: graphqlContext.properties,\n url,\n });\n })\n .catch((_error) => {});\n\n return {\n threadId: result.threadId,\n runId: result.runId,\n eventSource,\n serverSideActions,\n actionInputsWithoutAgents: actionInputs.filter(\n (action) =>\n // TODO-AGENTS: do not exclude ALL server side actions\n !serverSideActions.find((serverSideAction) => serverSideAction.name == action.name),\n // !isLangGraphAgentAction(\n // serverSideActions.find((serverSideAction) => serverSideAction.name == action.name),\n // ),\n ),\n };\n } catch (error) {\n console.error(\"Error getting response:\", error);\n throw error;\n }\n }\n\n private async processAgentRequest(\n request: CopilotRuntimeRequest,\n ): Promise<CopilotRuntimeResponse> {\n const { messages: rawMessages, outputMessagesPromise, graphqlContext, agentSession } = request;\n const { threadId, agentName, nodeName } = agentSession;\n const serverSideActions = await this.getServerSideActions(request);\n\n const messages = convertGqlInputToMessages(rawMessages);\n\n const agent = serverSideActions.find(\n (action) => action.name === agentName && isLangGraphAgentAction(action),\n ) as LangGraphAgentAction;\n\n if (!agent) {\n throw new Error(`Agent ${agentName} not found`);\n }\n\n const serverSideActionsInput: ActionInput[] = serverSideActions\n .filter((action) => !isLangGraphAgentAction(action))\n .map((action) => ({\n name: action.name,\n description: action.description,\n jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters)),\n }));\n\n const actionInputsWithoutAgents = flattenToolCallsNoDuplicates([\n ...serverSideActionsInput,\n ...request.actions,\n ]);\n\n await this.onBeforeRequest?.({\n threadId,\n runId: undefined,\n inputMessages: messages,\n properties: graphqlContext.properties,\n });\n try {\n const eventSource = new RuntimeEventSource();\n const stream = await agent.langGraphAgentHandler({\n name: agentName,\n threadId,\n nodeName,\n actionInputsWithoutAgents,\n });\n\n eventSource.stream(async (eventStream$) => {\n from(stream).subscribe({\n next: (event) => eventStream$.next(event),\n error: (err) => console.error(\"Error in stream\", err),\n complete: () => eventStream$.complete(),\n });\n });\n\n outputMessagesPromise\n .then((outputMessages) => {\n this.onAfterRequest?.({\n threadId,\n runId: undefined,\n inputMessages: messages,\n outputMessages,\n properties: graphqlContext.properties,\n });\n })\n .catch((_error) => {});\n\n return {\n threadId,\n runId: undefined,\n eventSource,\n serverSideActions: [],\n actionInputsWithoutAgents,\n };\n } catch (error) {\n console.error(\"Error getting response:\", error);\n throw error;\n }\n }\n\n private async getServerSideActions(request: CopilotRuntimeRequest): Promise<Action<any>[]> {\n const { messages: rawMessages, graphqlContext, agentStates, url } = request;\n const inputMessages = convertGqlInputToMessages(rawMessages);\n const langserveFunctions: Action<any>[] = [];\n\n for (const chainPromise of this.langserve) {\n try {\n const chain = await chainPromise;\n langserveFunctions.push(chain);\n } catch (error) {\n console.error(\"Error loading langserve chain:\", error);\n }\n }\n\n const remoteEndpointDefinitions = this.remoteEndpointDefinitions.map(\n (endpoint) =>\n ({\n ...endpoint,\n type: this.resolveEndpointType(endpoint),\n }) as EndpointDefinition,\n );\n\n const remoteActions = await setupRemoteActions({\n remoteEndpointDefinitions,\n graphqlContext,\n messages: inputMessages,\n agentStates,\n frontendUrl: url,\n });\n\n const configuredActions =\n typeof this.actions === \"function\"\n ? this.actions({ properties: graphqlContext.properties, url })\n : this.actions;\n\n return [...configuredActions, ...langserveFunctions, ...remoteActions];\n }\n\n private resolveEndpointType(endpoint: EndpointDefinition) {\n if (\n !endpoint.type &&\n \"langsmithApiKey\" in endpoint &&\n \"deploymentUrl\" in endpoint &&\n \"agents\" in endpoint\n ) {\n return EndpointType.LangGraphCloud;\n }\n\n return endpoint.type;\n }\n}\n\nexport function flattenToolCallsNoDuplicates(toolsByPriority: ActionInput[]): ActionInput[] {\n let allTools: ActionInput[] = [];\n const allToolNames: string[] = [];\n for (const tool of toolsByPriority) {\n if (!allToolNames.includes(tool.name)) {\n allTools.push(tool);\n allToolNames.push(tool.name);\n }\n }\n return allTools;\n}\n\n// The two functions below are \"factory functions\", meant to create the action objects that adhere to the expected interfaces\nexport function copilotKitEndpoint(config: Omit<CopilotKitEndpoint, \"type\">): CopilotKitEndpoint {\n return {\n ...config,\n type: EndpointType.CopilotKit,\n };\n}\n\nexport function langGraphCloudEndpoint(\n config: Omit<LangGraphCloudEndpoint, \"type\">,\n): LangGraphCloudEndpoint {\n return {\n ...config,\n type: EndpointType.LangGraphCloud,\n };\n}\n","import {\n ActionExecutionMessage,\n Message,\n ResultMessage,\n TextMessage,\n AgentStateMessage,\n} from \"../graphql/types/converted\";\nimport { MessageInput } from \"../graphql/inputs/message.input\";\nimport { plainToInstance } from \"class-transformer\";\n\nexport function convertGqlInputToMessages(inputMessages: MessageInput[]): Message[] {\n const messages: Message[] = [];\n\n for (const message of inputMessages) {\n if (message.textMessage) {\n messages.push(\n plainToInstance(TextMessage, {\n id: message.id,\n createdAt: message.createdAt,\n role: message.textMessage.role,\n content: message.textMessage.content,\n }),\n );\n } else if (message.actionExecutionMessage) {\n messages.push(\n plainToInstance(ActionExecutionMessage, {\n id: message.id,\n createdAt: message.createdAt,\n name: message.actionExecutionMessage.name,\n arguments: JSON.parse(message.actionExecutionMessage.arguments),\n scope: message.actionExecutionMessage.scope,\n }),\n );\n } else if (message.resultMessage) {\n messages.push(\n plainToInstance(ResultMessage, {\n id: message.id,\n createdAt: message.createdAt,\n actionExecutionId: message.resultMessage.actionExecutionId,\n actionName: message.resultMessage.actionName,\n result: message.resultMessage.result,\n }),\n );\n } else if (message.agentStateMessage) {\n messages.push(\n plainToInstance(AgentStateMessage, {\n id: message.id,\n threadId: message.agentStateMessage.threadId,\n createdAt: message.createdAt,\n agentName: message.agentStateMessage.agentName,\n nodeName: message.agentStateMessage.nodeName,\n runId: message.agentStateMessage.runId,\n active: message.agentStateMessage.active,\n role: message.agentStateMessage.role,\n state: JSON.parse(message.agentStateMessage.state),\n running: message.agentStateMessage.running,\n }),\n );\n }\n }\n\n return messages;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAcA,SAAiBA,oCAA+C;;;ACNhE,SAASC,uBAAuB;AAEzB,SAASC,0BAA0BC,eAA6B;AACrE,QAAMC,WAAsB,CAAA;AAE5B,aAAWC,WAAWF,eAAe;AACnC,QAAIE,QAAQC,aAAa;AACvBF,eAASG,KACPC,gBAAgBC,aAAa;QAC3BC,IAAIL,QAAQK;QACZC,WAAWN,QAAQM;QACnBC,MAAMP,QAAQC,YAAYM;QAC1BC,SAASR,QAAQC,YAAYO;MAC/B,CAAA,CAAA;IAEJ,WAAWR,QAAQS,wBAAwB;AACzCV,eAASG,KACPC,gBAAgBO,wBAAwB;QACtCL,IAAIL,QAAQK;QACZC,WAAWN,QAAQM;QACnBK,MAAMX,QAAQS,uBAAuBE;QACrCC,WAAWC,KAAKC,MAAMd,QAAQS,uBAAuBG,SAAS;QAC9DG,OAAOf,QAAQS,uBAAuBM;MACxC,CAAA,CAAA;IAEJ,WAAWf,QAAQgB,eAAe;AAChCjB,eAASG,KACPC,gBAAgBc,eAAe;QAC7BZ,IAAIL,QAAQK;QACZC,WAAWN,QAAQM;QACnBY,mBAAmBlB,QAAQgB,cAAcE;QACzCC,YAAYnB,QAAQgB,cAAcG;QAClCC,QAAQpB,QAAQgB,cAAcI;MAChC,CAAA,CAAA;IAEJ,WAAWpB,QAAQqB,mBAAmB;AACpCtB,eAASG,KACPC,gBAAgBmB,mBAAmB;QACjCjB,IAAIL,QAAQK;QACZkB,UAAUvB,QAAQqB,kBAAkBE;QACpCjB,WAAWN,QAAQM;QACnBkB,WAAWxB,QAAQqB,kBAAkBG;QACrCC,UAAUzB,QAAQqB,kBAAkBI;QACpCC,OAAO1B,QAAQqB,kBAAkBK;QACjCC,QAAQ3B,QAAQqB,kBAAkBM;QAClCpB,MAAMP,QAAQqB,kBAAkBd;QAChCqB,OAAOf,KAAKC,MAAMd,QAAQqB,kBAAkBO,KAAK;QACjDC,SAAS7B,QAAQqB,kBAAkBQ;MACrC,CAAA,CAAA;IAEJ;EACF;AAEA,SAAO9B;AACT;AApDgBF;;;ADuBhB,SAASiC,YAAY;AA6Gd,IAAMC,iBAAN,MAAMA;EACJC;EACCC;EACAC,YAAoC,CAAA;EACpCC;EACAC;EAERC,YAAYC,QAA6C;AArJ3D;AAsJI,SAAKN,WAAUM,iCAAQN,YAAW,CAAA;AAElC,eAAWO,UAASD,iCAAQJ,cAAa,CAAA,GAAI;AAC3C,YAAMM,cAAc,IAAIC,YAAYF,KAAAA;AACpC,WAAKL,UAAUQ,KAAKF,YAAYG,SAAQ,CAAA;IAC1C;AAEA,SAAKV,6BAA4BK,iCAAQM,oBAAmB,CAAA;AAE5D,SAAKT,mBAAkBG,sCAAQO,eAARP,mBAAoBH;AAC3C,SAAKC,kBAAiBE,sCAAQO,eAARP,mBAAoBF;EAC5C;EAEA,MAAMU,sBAAsBC,SAAiE;AAnK/F;AAoKI,UAAM,EACJC,gBACAC,UAAUC,aACVlB,SAASmB,wBACTC,UACAC,OACAC,uBACAC,gBACAC,qBACAC,cACAC,IAAG,IACDX;AAEJ,QAAIU,cAAc;AAChB,aAAO,KAAKE,oBAAoBZ,OAAAA;IAClC;AAEA,UAAME,WAAWC,YAAYU,OAAO,CAACC,YAAY,CAACA,QAAQC,iBAAiB;AAE3E,UAAMC,gBAAgBC,0BAA0Bf,QAAAA;AAChD,UAAMgB,oBAAoB,MAAM,KAAKC,qBAAqBnB,OAAAA;AAE1D,UAAMoB,yBAAwCF,kBAAkBG,IAAI,CAACC,YAAY;MAC/EC,MAAMD,OAAOC;MACbC,aAAaF,OAAOE;MACpBC,YAAYC,KAAKC,UAAUC,6BAA6BN,OAAOO,UAAU,CAAA;IAC3E,EAAA;AAEA,UAAMC,eAAeC,6BAA6B;SAC7CX;SACAhB;KACJ;AAED,YAAM,UAAKhB,oBAAL,8BAAuB;MAC3BiB;MACAC;MACAU;MACAgB,YAAYxB,eAAewB;MAC3BrB;IACF;AAEA,QAAI;AACF,YAAMsB,cAAc,IAAIC,mBAAAA;AAExB,YAAMC,SAAS,MAAMlC,eAAemC,QAAQ;QAC1ClC,UAAUc;QACV/B,SAAS6C;QACTzB;QACAC;QACA2B;QACAxB;MACF,CAAA;AAEAF,4BACG8B,KAAK,CAACC,mBAAAA;AA1Nf,YAAAC;AA2NU,SAAAA,MAAA,KAAKlD,mBAAL,gBAAAkD,IAAA,WAAsB;UACpBlC,UAAU8B,OAAO9B;UACjBC,OAAO6B,OAAO7B;UACdU;UACAsB;UACAN,YAAYxB,eAAewB;UAC3BrB;QACF;MACF,CAAA,EACC6B,MAAM,CAACC,WAAAA;MAAY,CAAA;AAEtB,aAAO;QACLpC,UAAU8B,OAAO9B;QACjBC,OAAO6B,OAAO7B;QACd2B;QACAf;QACAwB,2BAA2BZ,aAAajB,OACtC,CAACS;;UAEC,CAACJ,kBAAkByB,KAAK,CAACC,qBAAqBA,iBAAiBrB,QAAQD,OAAOC,IAAI;SAAA;MAKxF;IACF,SAASsB,OAAP;AACAC,cAAQD,MAAM,2BAA2BA,KAAAA;AACzC,YAAMA;IACR;EACF;EAEA,MAAcjC,oBACZZ,SACiC;AA5PrC;AA6PI,UAAM,EAAEE,UAAUC,aAAaI,uBAAuBC,gBAAgBE,aAAY,IAAKV;AACvF,UAAM,EAAEK,UAAU0C,WAAWC,SAAQ,IAAKtC;AAC1C,UAAMQ,oBAAoB,MAAM,KAAKC,qBAAqBnB,OAAAA;AAE1D,UAAME,WAAWe,0BAA0Bd,WAAAA;AAE3C,UAAM8C,QAAQ/B,kBAAkByB,KAC9B,CAACrB,WAAWA,OAAOC,SAASwB,aAAaG,uBAAuB5B,MAAAA,CAAAA;AAGlE,QAAI,CAAC2B,OAAO;AACV,YAAM,IAAIE,MAAM,SAASJ,qBAAqB;IAChD;AAEA,UAAM3B,yBAAwCF,kBAC3CL,OAAO,CAACS,WAAW,CAAC4B,uBAAuB5B,MAAAA,CAAAA,EAC3CD,IAAI,CAACC,YAAY;MAChBC,MAAMD,OAAOC;MACbC,aAAaF,OAAOE;MACpBC,YAAYC,KAAKC,UAAUC,6BAA6BN,OAAOO,UAAU,CAAA;IAC3E,EAAA;AAEF,UAAMa,4BAA4BX,6BAA6B;SAC1DX;SACApB,QAAQf;KACZ;AAED,YAAM,UAAKG,oBAAL,8BAAuB;MAC3BiB;MACAC,OAAO8C;MACPpC,eAAed;MACf8B,YAAYxB,eAAewB;IAC7B;AACA,QAAI;AACF,YAAMC,cAAc,IAAIC,mBAAAA;AACxB,YAAMmB,SAAS,MAAMJ,MAAMK,sBAAsB;QAC/C/B,MAAMwB;QACN1C;QACA2C;QACAN;MACF,CAAA;AAEAT,kBAAYoB,OAAO,OAAOE,iBAAAA;AACxBC,aAAKH,MAAAA,EAAQI,UAAU;UACrBC,MAAM,CAACC,UAAUJ,aAAaG,KAAKC,KAAAA;UACnCd,OAAO,CAACe,QAAQd,QAAQD,MAAM,mBAAmBe,GAAAA;UACjDC,UAAU,MAAMN,aAAaM,SAAQ;QACvC,CAAA;MACF,CAAA;AAEAtD,4BACG8B,KAAK,CAACC,mBAAAA;AAhTf,YAAAC;AAiTU,SAAAA,MAAA,KAAKlD,mBAAL,gBAAAkD,IAAA,WAAsB;UACpBlC;UACAC,OAAO8C;UACPpC,eAAed;UACfoC;UACAN,YAAYxB,eAAewB;QAC7B;MACF,CAAA,EACCQ,MAAM,CAACC,WAAAA;MAAY,CAAA;AAEtB,aAAO;QACLpC;QACAC,OAAO8C;QACPnB;QACAf,mBAAmB,CAAA;QACnBwB;MACF;IACF,SAASG,OAAP;AACAC,cAAQD,MAAM,2BAA2BA,KAAAA;AACzC,YAAMA;IACR;EACF;EAEA,MAAc1B,qBAAqBnB,SAAwD;AACzF,UAAM,EAAEE,UAAUC,aAAaK,gBAAgBsD,aAAanD,IAAG,IAAKX;AACpE,UAAMgB,gBAAgBC,0BAA0Bd,WAAAA;AAChD,UAAM4D,qBAAoC,CAAA;AAE1C,eAAWC,gBAAgB,KAAK7E,WAAW;AACzC,UAAI;AACF,cAAMK,QAAQ,MAAMwE;AACpBD,2BAAmBpE,KAAKH,KAAAA;MAC1B,SAASqD,OAAP;AACAC,gBAAQD,MAAM,kCAAkCA,KAAAA;MAClD;IACF;AAEA,UAAM3D,4BAA4B,KAAKA,0BAA0BmC,IAC/D,CAAC4C,cACE;MACC,GAAGA;MACHC,MAAM,KAAKC,oBAAoBF,QAAAA;IACjC,EAAA;AAGJ,UAAMG,gBAAgB,MAAMC,mBAAmB;MAC7CnF;MACAsB;MACAN,UAAUc;MACV8C;MACAQ,aAAa3D;IACf,CAAA;AAEA,UAAM4D,oBACJ,OAAO,KAAKtF,YAAY,aACpB,KAAKA,QAAQ;MAAE+C,YAAYxB,eAAewB;MAAYrB;IAAI,CAAA,IAC1D,KAAK1B;AAEX,WAAO;SAAIsF;SAAsBR;SAAuBK;;EAC1D;EAEQD,oBAAoBF,UAA8B;AACxD,QACE,CAACA,SAASC,QACV,qBAAqBD,YACrB,mBAAmBA,YACnB,YAAYA,UACZ;AACA,aAAOO,aAAaC;IACtB;AAEA,WAAOR,SAASC;EAClB;AACF;AA5OalF;AA8ON,SAAS+C,6BAA6B2C,iBAA8B;AACzE,MAAIC,WAA0B,CAAA;AAC9B,QAAMC,eAAyB,CAAA;AAC/B,aAAWC,QAAQH,iBAAiB;AAClC,QAAI,CAACE,aAAaE,SAASD,KAAKtD,IAAI,GAAG;AACrCoD,eAAShF,KAAKkF,IAAAA;AACdD,mBAAajF,KAAKkF,KAAKtD,IAAI;IAC7B;EACF;AACA,SAAOoD;AACT;AAVgB5C;AAaT,SAASgD,mBAAmBC,QAAwC;AACzE,SAAO;IACL,GAAGA;IACHd,MAAMM,aAAaS;EACrB;AACF;AALgBF;AAOT,SAASG,uBACdF,QAA4C;AAE5C,SAAO;IACL,GAAGA;IACHd,MAAMM,aAAaC;EACrB;AACF;AAPgBS;","names":["actionParametersToJsonSchema","plainToInstance","convertGqlInputToMessages","inputMessages","messages","message","textMessage","push","plainToInstance","TextMessage","id","createdAt","role","content","actionExecutionMessage","ActionExecutionMessage","name","arguments","JSON","parse","scope","resultMessage","ResultMessage","actionExecutionId","actionName","result","agentStateMessage","AgentStateMessage","threadId","agentName","nodeName","runId","active","state","running","from","CopilotRuntime","actions","remoteEndpointDefinitions","langserve","onBeforeRequest","onAfterRequest","constructor","params","chain","remoteChain","RemoteChain","push","toAction","remoteEndpoints","middleware","processRuntimeRequest","request","serviceAdapter","messages","rawMessages","clientSideActionsInput","threadId","runId","outputMessagesPromise","graphqlContext","forwardedParameters","agentSession","url","processAgentRequest","filter","message","agentStateMessage","inputMessages","convertGqlInputToMessages","serverSideActions","getServerSideActions","serverSideActionsInput","map","action","name","description","jsonSchema","JSON","stringify","actionParametersToJsonSchema","parameters","actionInputs","flattenToolCallsNoDuplicates","properties","eventSource","RuntimeEventSource","result","process","then","outputMessages","_a","catch","_error","actionInputsWithoutAgents","find","serverSideAction","error","console","agentName","nodeName","agent","isLangGraphAgentAction","Error","undefined","stream","langGraphAgentHandler","eventStream$","from","subscribe","next","event","err","complete","agentStates","langserveFunctions","chainPromise","endpoint","type","resolveEndpointType","remoteActions","setupRemoteActions","frontendUrl","configuredActions","EndpointType","LangGraphCloud","toolsByPriority","allTools","allToolNames","tool","includes","copilotKitEndpoint","config","CopilotKit","langGraphCloudEndpoint"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/integrations/nest/index.ts"],"sourcesContent":["import { CreateCopilotRuntimeServerOptions } from \"../shared\";\nimport { copilotRuntimeNodeHttpEndpoint } from \"../node-http\";\nimport telemetry from \"../../telemetry-client\";\n\nexport function copilotRuntimeNestEndpoint(options: CreateCopilotRuntimeServerOptions) {\n telemetry.setGlobalProperties({\n runtime: {\n framework: \"nest\",\n },\n });\n\n telemetry.capture(\"oss.runtime.instance_created\", {});\n return copilotRuntimeNodeHttpEndpoint(options);\n}\n"],"mappings":";;;;;;;;;AAIO,SAASA,2BAA2BC,SAA0C;AACnFC,2BAAUC,oBAAoB;IAC5BC,SAAS;MACPC,WAAW;IACb;EACF,CAAA;AAEAH,2BAAUI,QAAQ,gCAAgC,CAAC,CAAA;AACnD,SAAOC,+BAA+BN,OAAAA;AACxC;AATgBD;","names":["copilotRuntimeNestEndpoint","options","telemetry","setGlobalProperties","runtime","framework","capture","copilotRuntimeNodeHttpEndpoint"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/integrations/node-express/index.ts"],"sourcesContent":["import { CreateCopilotRuntimeServerOptions } from \"../shared\";\nimport { copilotRuntimeNodeHttpEndpoint } from \"../node-http\";\nimport telemetry from \"../../telemetry-client\";\n\nexport function copilotRuntimeNodeExpressEndpoint(options: CreateCopilotRuntimeServerOptions) {\n telemetry.setGlobalProperties({\n runtime: {\n framework: \"node-express\",\n },\n });\n\n telemetry.capture(\"oss.runtime.instance_created\", {});\n return copilotRuntimeNodeHttpEndpoint(options);\n}\n"],"mappings":";;;;;;;;;AAIO,SAASA,kCAAkCC,SAA0C;AAC1FC,2BAAUC,oBAAoB;IAC5BC,SAAS;MACPC,WAAW;IACb;EACF,CAAA;AAEAH,2BAAUI,QAAQ,gCAAgC,CAAC,CAAA;AACnD,SAAOC,+BAA+BN,OAAAA;AACxC;AATgBD;","names":["copilotRuntimeNodeExpressEndpoint","options","telemetry","setGlobalProperties","runtime","framework","capture","copilotRuntimeNodeHttpEndpoint"]}
@@ -1,218 +0,0 @@
1
- import {
2
- __name
3
- } from "./chunk-44O2JGUY.mjs";
4
-
5
- // src/service-adapters/langchain/utils.ts
6
- import { AIMessage, HumanMessage, SystemMessage, ToolMessage } from "@langchain/core/messages";
7
- import { DynamicStructuredTool } from "@langchain/core/tools";
8
- import { z } from "zod";
9
- import { randomId } from "@copilotkit/shared";
10
- function convertMessageToLangChainMessage(message) {
11
- if (message.isTextMessage()) {
12
- if (message.role == "user") {
13
- return new HumanMessage(message.content);
14
- } else if (message.role == "assistant") {
15
- return new AIMessage(message.content);
16
- } else if (message.role === "system") {
17
- return new SystemMessage(message.content);
18
- }
19
- } else if (message.isActionExecutionMessage()) {
20
- return new AIMessage({
21
- content: "",
22
- tool_calls: [
23
- {
24
- id: message.id,
25
- args: message.arguments,
26
- name: message.name
27
- }
28
- ]
29
- });
30
- } else if (message.isResultMessage()) {
31
- return new ToolMessage({
32
- content: message.result,
33
- tool_call_id: message.actionExecutionId
34
- });
35
- }
36
- }
37
- __name(convertMessageToLangChainMessage, "convertMessageToLangChainMessage");
38
- function convertJsonSchemaToZodSchema(jsonSchema, required) {
39
- if (jsonSchema.type === "object") {
40
- const spec = {};
41
- if (!jsonSchema.properties || !Object.keys(jsonSchema.properties).length) {
42
- return !required ? z.object(spec).optional() : z.object(spec);
43
- }
44
- for (const [key, value] of Object.entries(jsonSchema.properties)) {
45
- spec[key] = convertJsonSchemaToZodSchema(value, jsonSchema.required ? jsonSchema.required.includes(key) : false);
46
- }
47
- let schema = z.object(spec).describe(jsonSchema.description);
48
- return required ? schema : schema.optional();
49
- } else if (jsonSchema.type === "string") {
50
- let schema = z.string().describe(jsonSchema.description);
51
- return required ? schema : schema.optional();
52
- } else if (jsonSchema.type === "number") {
53
- let schema = z.number().describe(jsonSchema.description);
54
- return required ? schema : schema.optional();
55
- } else if (jsonSchema.type === "boolean") {
56
- let schema = z.boolean().describe(jsonSchema.description);
57
- return required ? schema : schema.optional();
58
- } else if (jsonSchema.type === "array") {
59
- let itemSchema = convertJsonSchemaToZodSchema(jsonSchema.items, true);
60
- let schema = z.array(itemSchema).describe(jsonSchema.description);
61
- return required ? schema : schema.optional();
62
- }
63
- }
64
- __name(convertJsonSchemaToZodSchema, "convertJsonSchemaToZodSchema");
65
- function convertActionInputToLangChainTool(actionInput) {
66
- return new DynamicStructuredTool({
67
- name: actionInput.name,
68
- description: actionInput.description,
69
- schema: convertJsonSchemaToZodSchema(JSON.parse(actionInput.jsonSchema), true),
70
- func: async () => {
71
- return "";
72
- }
73
- });
74
- }
75
- __name(convertActionInputToLangChainTool, "convertActionInputToLangChainTool");
76
- function isAIMessage(message) {
77
- return Object.prototype.toString.call(message) === "[object AIMessage]";
78
- }
79
- __name(isAIMessage, "isAIMessage");
80
- function isAIMessageChunk(message) {
81
- return Object.prototype.toString.call(message) === "[object AIMessageChunk]";
82
- }
83
- __name(isAIMessageChunk, "isAIMessageChunk");
84
- function isBaseMessageChunk(message) {
85
- return Object.prototype.toString.call(message) === "[object BaseMessageChunk]";
86
- }
87
- __name(isBaseMessageChunk, "isBaseMessageChunk");
88
- function maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution) {
89
- if (actionExecution) {
90
- eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, "Sending a message");
91
- }
92
- }
93
- __name(maybeSendActionExecutionResultIsMessage, "maybeSendActionExecutionResultIsMessage");
94
- async function streamLangChainResponse({ result, eventStream$, actionExecution }) {
95
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
96
- if (typeof result === "string") {
97
- if (!actionExecution) {
98
- eventStream$.sendTextMessage(randomId(), result);
99
- } else {
100
- eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, result);
101
- }
102
- } else if (isAIMessage(result)) {
103
- maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
104
- if (result.content) {
105
- eventStream$.sendTextMessage(randomId(), result.content);
106
- }
107
- for (const toolCall of result.tool_calls) {
108
- eventStream$.sendActionExecution(toolCall.id || randomId(), toolCall.name, JSON.stringify(toolCall.args));
109
- }
110
- } else if (isBaseMessageChunk(result)) {
111
- maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
112
- if ((_a = result.lc_kwargs) == null ? void 0 : _a.content) {
113
- eventStream$.sendTextMessage(randomId(), result.content);
114
- }
115
- if ((_b = result.lc_kwargs) == null ? void 0 : _b.tool_calls) {
116
- for (const toolCall of (_c = result.lc_kwargs) == null ? void 0 : _c.tool_calls) {
117
- eventStream$.sendActionExecution(toolCall.id || randomId(), toolCall.name, JSON.stringify(toolCall.args));
118
- }
119
- }
120
- } else if (result && "getReader" in result) {
121
- maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
122
- let reader = result.getReader();
123
- let mode = null;
124
- const toolCallDetails = {
125
- name: null,
126
- id: null,
127
- index: null,
128
- prevIndex: null
129
- };
130
- while (true) {
131
- try {
132
- const { done, value } = await reader.read();
133
- let toolCallName = void 0;
134
- let toolCallId = void 0;
135
- let toolCallArgs = void 0;
136
- let hasToolCall = false;
137
- let content = value == null ? void 0 : value.content;
138
- if (isAIMessageChunk(value)) {
139
- let chunk = (_d = value.tool_call_chunks) == null ? void 0 : _d[0];
140
- toolCallArgs = chunk == null ? void 0 : chunk.args;
141
- hasToolCall = chunk != void 0;
142
- if (chunk == null ? void 0 : chunk.name)
143
- toolCallDetails.name = chunk.name;
144
- if ((chunk == null ? void 0 : chunk.index) != null) {
145
- toolCallDetails.index = chunk.index;
146
- if (toolCallDetails.prevIndex == null)
147
- toolCallDetails.prevIndex = chunk.index;
148
- }
149
- if (chunk == null ? void 0 : chunk.id)
150
- toolCallDetails.id = chunk.index != null ? `${chunk.id}-idx-${chunk.index}` : chunk.id;
151
- toolCallName = toolCallDetails.name;
152
- toolCallId = toolCallDetails.id;
153
- } else if (isBaseMessageChunk(value)) {
154
- let chunk = (_f = (_e = value.additional_kwargs) == null ? void 0 : _e.tool_calls) == null ? void 0 : _f[0];
155
- toolCallName = (_g = chunk == null ? void 0 : chunk.function) == null ? void 0 : _g.name;
156
- toolCallId = chunk == null ? void 0 : chunk.id;
157
- toolCallArgs = (_h = chunk == null ? void 0 : chunk.function) == null ? void 0 : _h.arguments;
158
- hasToolCall = (chunk == null ? void 0 : chunk.function) != void 0;
159
- }
160
- if (mode === "message" && (toolCallId || done)) {
161
- mode = null;
162
- eventStream$.sendTextMessageEnd();
163
- } else if (mode === "function" && (!hasToolCall || done)) {
164
- mode = null;
165
- eventStream$.sendActionExecutionEnd();
166
- }
167
- if (done) {
168
- break;
169
- }
170
- if (mode === null) {
171
- if (hasToolCall && toolCallId && toolCallName) {
172
- mode = "function";
173
- eventStream$.sendActionExecutionStart(toolCallId, toolCallName);
174
- } else if (content) {
175
- mode = "message";
176
- eventStream$.sendTextMessageStart(randomId());
177
- }
178
- }
179
- if (mode === "message" && content) {
180
- eventStream$.sendTextMessageContent(Array.isArray(content) ? ((_i = content[0]) == null ? void 0 : _i.text) ?? "" : content);
181
- } else if (mode === "function" && toolCallArgs) {
182
- if (toolCallDetails.index !== toolCallDetails.prevIndex) {
183
- eventStream$.sendActionExecutionEnd();
184
- eventStream$.sendActionExecutionStart(toolCallId, toolCallName);
185
- toolCallDetails.prevIndex = toolCallDetails.index;
186
- }
187
- eventStream$.sendActionExecutionArgs(toolCallArgs);
188
- }
189
- } catch (error) {
190
- console.error("Error reading from stream", error);
191
- break;
192
- }
193
- }
194
- } else if (actionExecution) {
195
- eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, encodeResult(result));
196
- } else {
197
- throw new Error("Invalid return type from LangChain function.");
198
- }
199
- eventStream$.complete();
200
- }
201
- __name(streamLangChainResponse, "streamLangChainResponse");
202
- function encodeResult(result) {
203
- if (result === void 0) {
204
- return "";
205
- } else if (typeof result === "string") {
206
- return result;
207
- } else {
208
- return JSON.stringify(result);
209
- }
210
- }
211
- __name(encodeResult, "encodeResult");
212
-
213
- export {
214
- convertMessageToLangChainMessage,
215
- convertActionInputToLangChainTool,
216
- streamLangChainResponse
217
- };
218
- //# sourceMappingURL=chunk-MXXPWWBF.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/service-adapters/langchain/utils.ts"],"sourcesContent":["import {\n ActionExecutionMessage,\n Message,\n ResultMessage,\n TextMessage,\n} from \"../../graphql/types/converted\";\nimport {\n AIMessage,\n AIMessageChunk,\n BaseMessage,\n BaseMessageChunk,\n HumanMessage,\n SystemMessage,\n ToolMessage,\n} from \"@langchain/core/messages\";\nimport { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport { z } from \"zod\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\nimport { LangChainReturnType } from \"./types\";\nimport { RuntimeEventSubject } from \"../events\";\nimport { randomId } from \"@copilotkit/shared\";\n\nexport function convertMessageToLangChainMessage(message: Message): BaseMessage {\n if (message.isTextMessage()) {\n if (message.role == \"user\") {\n return new HumanMessage(message.content);\n } else if (message.role == \"assistant\") {\n return new AIMessage(message.content);\n } else if (message.role === \"system\") {\n return new SystemMessage(message.content);\n }\n } else if (message.isActionExecutionMessage()) {\n return new AIMessage({\n content: \"\",\n tool_calls: [\n {\n id: message.id,\n args: message.arguments,\n name: message.name,\n },\n ],\n });\n } else if (message.isResultMessage()) {\n return new ToolMessage({\n content: message.result,\n tool_call_id: message.actionExecutionId,\n });\n }\n}\n\nexport function convertJsonSchemaToZodSchema(jsonSchema: any, required: boolean): z.ZodSchema {\n if (jsonSchema.type === \"object\") {\n const spec: { [key: string]: z.ZodSchema } = {};\n\n if (!jsonSchema.properties || !Object.keys(jsonSchema.properties).length) {\n return !required ? z.object(spec).optional() : z.object(spec);\n }\n\n for (const [key, value] of Object.entries(jsonSchema.properties)) {\n spec[key] = convertJsonSchemaToZodSchema(\n value,\n jsonSchema.required ? jsonSchema.required.includes(key) : false,\n );\n }\n let schema = z.object(spec).describe(jsonSchema.description);\n return required ? schema : schema.optional();\n } else if (jsonSchema.type === \"string\") {\n let schema = z.string().describe(jsonSchema.description);\n return required ? schema : schema.optional();\n } else if (jsonSchema.type === \"number\") {\n let schema = z.number().describe(jsonSchema.description);\n return required ? schema : schema.optional();\n } else if (jsonSchema.type === \"boolean\") {\n let schema = z.boolean().describe(jsonSchema.description);\n return required ? schema : schema.optional();\n } else if (jsonSchema.type === \"array\") {\n let itemSchema = convertJsonSchemaToZodSchema(jsonSchema.items, true);\n let schema = z.array(itemSchema).describe(jsonSchema.description);\n return required ? schema : schema.optional();\n }\n}\n\nexport function convertActionInputToLangChainTool(actionInput: ActionInput): any {\n return new DynamicStructuredTool({\n name: actionInput.name,\n description: actionInput.description,\n schema: convertJsonSchemaToZodSchema(\n JSON.parse(actionInput.jsonSchema),\n true,\n ) as z.ZodObject<any>,\n func: async () => {\n return \"\";\n },\n });\n}\n\ninterface StreamLangChainResponseParams {\n result: LangChainReturnType;\n eventStream$: RuntimeEventSubject;\n actionExecution?: {\n id: string;\n name: string;\n };\n}\n\nfunction getConstructorName(object: any): string {\n if (object && typeof object === \"object\" && object.constructor && object.constructor.name) {\n return object.constructor.name;\n }\n return \"\";\n}\n\nfunction isAIMessage(message: any): message is AIMessage {\n return Object.prototype.toString.call(message) === \"[object AIMessage]\";\n}\n\nfunction isAIMessageChunk(message: any): message is AIMessageChunk {\n return Object.prototype.toString.call(message) === \"[object AIMessageChunk]\";\n}\n\nfunction isBaseMessageChunk(message: any): message is BaseMessageChunk {\n return Object.prototype.toString.call(message) === \"[object BaseMessageChunk]\";\n}\n\nfunction maybeSendActionExecutionResultIsMessage(\n eventStream$: RuntimeEventSubject,\n actionExecution?: { id: string; name: string },\n) {\n // language models need a result after the function call\n // we simply let them know that we are sending a message\n if (actionExecution) {\n eventStream$.sendActionExecutionResult(\n actionExecution.id,\n actionExecution.name,\n \"Sending a message\",\n );\n }\n}\n\nexport async function streamLangChainResponse({\n result,\n eventStream$,\n actionExecution,\n}: StreamLangChainResponseParams) {\n // We support several types of return values from LangChain functions:\n\n // 1. string\n\n if (typeof result === \"string\") {\n if (!actionExecution) {\n // Just send one chunk with the string as the content.\n eventStream$.sendTextMessage(randomId(), result);\n } else {\n // Send as a result\n eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, result);\n }\n }\n\n // 2. AIMessage\n // Send the content and function call of the AIMessage as the content of the chunk.\n else if (isAIMessage(result)) {\n maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);\n\n if (result.content) {\n eventStream$.sendTextMessage(randomId(), result.content as string);\n }\n for (const toolCall of result.tool_calls) {\n eventStream$.sendActionExecution(\n toolCall.id || randomId(),\n toolCall.name,\n JSON.stringify(toolCall.args),\n );\n }\n }\n\n // 3. BaseMessageChunk\n // Send the content and function call of the AIMessage as the content of the chunk.\n else if (isBaseMessageChunk(result)) {\n maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);\n\n if (result.lc_kwargs?.content) {\n eventStream$.sendTextMessage(randomId(), result.content as string);\n }\n if (result.lc_kwargs?.tool_calls) {\n for (const toolCall of result.lc_kwargs?.tool_calls) {\n eventStream$.sendActionExecution(\n toolCall.id || randomId(),\n toolCall.name,\n JSON.stringify(toolCall.args),\n );\n }\n }\n }\n\n // 4. IterableReadableStream\n // Stream the result of the LangChain function.\n else if (result && \"getReader\" in result) {\n maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);\n\n let reader = result.getReader();\n\n let mode: \"function\" | \"message\" | null = null;\n\n const toolCallDetails = {\n name: null,\n id: null,\n index: null,\n prevIndex: null,\n };\n\n while (true) {\n try {\n const { done, value } = await reader.read();\n\n let toolCallName: string | undefined = undefined;\n let toolCallId: string | undefined = undefined;\n let toolCallArgs: string | undefined = undefined;\n let hasToolCall: boolean = false;\n let content = value?.content as string;\n\n if (isAIMessageChunk(value)) {\n let chunk = value.tool_call_chunks?.[0];\n toolCallArgs = chunk?.args;\n hasToolCall = chunk != undefined;\n if (chunk?.name) toolCallDetails.name = chunk.name;\n // track different index on the same tool cool\n if (chunk?.index != null) {\n toolCallDetails.index = chunk.index; // 1\n if (toolCallDetails.prevIndex == null) toolCallDetails.prevIndex = chunk.index;\n }\n // Differentiate when calling the same tool but with different index\n if (chunk?.id)\n toolCallDetails.id = chunk.index != null ? `${chunk.id}-idx-${chunk.index}` : chunk.id;\n\n // Assign to internal variables that the entire script here knows how to work with\n toolCallName = toolCallDetails.name;\n toolCallId = toolCallDetails.id;\n } else if (isBaseMessageChunk(value)) {\n let chunk = value.additional_kwargs?.tool_calls?.[0];\n toolCallName = chunk?.function?.name;\n toolCallId = chunk?.id;\n toolCallArgs = chunk?.function?.arguments;\n hasToolCall = chunk?.function != undefined;\n }\n\n // When switching from message to function or vice versa,\n // send the respective end event.\n // If toolCallName is defined, it means a new tool call starts.\n if (mode === \"message\" && (toolCallId || done)) {\n mode = null;\n eventStream$.sendTextMessageEnd();\n } else if (mode === \"function\" && (!hasToolCall || done)) {\n mode = null;\n eventStream$.sendActionExecutionEnd();\n }\n\n if (done) {\n break;\n }\n\n // If we send a new message type, send the appropriate start event.\n if (mode === null) {\n if (hasToolCall && toolCallId && toolCallName) {\n mode = \"function\";\n eventStream$.sendActionExecutionStart(toolCallId, toolCallName);\n } else if (content) {\n mode = \"message\";\n eventStream$.sendTextMessageStart(randomId());\n }\n }\n\n // send the content events\n if (mode === \"message\" && content) {\n eventStream$.sendTextMessageContent(\n Array.isArray(content) ? (content[0]?.text ?? \"\") : content,\n );\n } else if (mode === \"function\" && toolCallArgs) {\n // For calls of the same tool with different index, we seal last tool call and register a new one\n if (toolCallDetails.index !== toolCallDetails.prevIndex) {\n eventStream$.sendActionExecutionEnd();\n eventStream$.sendActionExecutionStart(toolCallId, toolCallName);\n toolCallDetails.prevIndex = toolCallDetails.index;\n }\n eventStream$.sendActionExecutionArgs(toolCallArgs);\n }\n } catch (error) {\n console.error(\"Error reading from stream\", error);\n break;\n }\n }\n } else if (actionExecution) {\n eventStream$.sendActionExecutionResult(\n actionExecution.id,\n actionExecution.name,\n encodeResult(result),\n );\n }\n\n // unsupported type\n else {\n throw new Error(\"Invalid return type from LangChain function.\");\n }\n\n eventStream$.complete();\n}\n\nfunction encodeResult(result: any): string {\n if (result === undefined) {\n return \"\";\n } else if (typeof result === \"string\") {\n return result;\n } else {\n return JSON.stringify(result);\n }\n}\n"],"mappings":"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","names":["AIMessage","HumanMessage","SystemMessage","ToolMessage","DynamicStructuredTool","z","randomId","convertMessageToLangChainMessage","message","isTextMessage","role","HumanMessage","content","AIMessage","SystemMessage","isActionExecutionMessage","tool_calls","id","args","arguments","name","isResultMessage","ToolMessage","result","tool_call_id","actionExecutionId","convertJsonSchemaToZodSchema","jsonSchema","required","type","spec","properties","Object","keys","length","z","object","optional","key","value","entries","includes","schema","describe","description","string","number","boolean","itemSchema","items","array","convertActionInputToLangChainTool","actionInput","DynamicStructuredTool","JSON","parse","func","isAIMessage","message","Object","prototype","toString","call","isAIMessageChunk","isBaseMessageChunk","maybeSendActionExecutionResultIsMessage","eventStream$","actionExecution","sendActionExecutionResult","id","name","streamLangChainResponse","result","sendTextMessage","randomId","content","toolCall","tool_calls","sendActionExecution","JSON","stringify","args","lc_kwargs","reader","getReader","mode","toolCallDetails","index","prevIndex","done","value","read","toolCallName","undefined","toolCallId","toolCallArgs","hasToolCall","chunk","tool_call_chunks","additional_kwargs","function","arguments","sendTextMessageEnd","sendActionExecutionEnd","sendActionExecutionStart","sendTextMessageStart","sendTextMessageContent","Array","isArray","text","sendActionExecutionArgs","error","console","encodeResult","Error","complete"]}