@copilotkit/runtime 1.1.2 → 1.1.3-feat-runtime-remote-actions.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 (85) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +32 -37
  3. package/__snapshots__/schema/schema.graphql +42 -0
  4. package/dist/chunk-4WFNRUBE.mjs +260 -0
  5. package/dist/chunk-4WFNRUBE.mjs.map +1 -0
  6. package/dist/{chunk-MKV3LEJ6.mjs → chunk-6X5MPWIC.mjs} +795 -159
  7. package/dist/chunk-6X5MPWIC.mjs.map +1 -0
  8. package/dist/{chunk-URMISMK2.mjs → chunk-73NMP3DI.mjs} +2 -2
  9. package/dist/{chunk-CUVWSISN.mjs → chunk-BJ2LVHWA.mjs} +22 -4
  10. package/dist/chunk-BJ2LVHWA.mjs.map +1 -0
  11. package/dist/{chunk-74B76SMO.mjs → chunk-HYNSUFUM.mjs} +2 -2
  12. package/dist/{chunk-6PAC74F2.mjs → chunk-JV3CSVW6.mjs} +2 -2
  13. package/dist/{chunk-NPCP4YZB.mjs → chunk-OYUVLDJF.mjs} +2 -2
  14. package/dist/{chunk-GEIBJJQ4.mjs → chunk-TBZGOJJX.mjs} +14 -2
  15. package/dist/chunk-TBZGOJJX.mjs.map +1 -0
  16. package/dist/{shared-ec6c7db5.d.ts → copilot-runtime-d427e991.d.ts} +68 -37
  17. package/dist/graphql/types/converted/index.d.ts +1 -1
  18. package/dist/graphql/types/converted/index.js +13 -0
  19. package/dist/graphql/types/converted/index.js.map +1 -1
  20. package/dist/graphql/types/converted/index.mjs +3 -1
  21. package/dist/{index-aa091e3c.d.ts → index-0476e4f7.d.ts} +24 -2
  22. package/dist/{groq-adapter-675b30c6.d.ts → index-079752b9.d.ts} +31 -1
  23. package/dist/index.d.ts +9 -9
  24. package/dist/index.js +1012 -246
  25. package/dist/index.js.map +1 -1
  26. package/dist/index.mjs +8 -8
  27. package/dist/{langserve-a54438c6.d.ts → langserve-d6073a3b.d.ts} +24 -11
  28. package/dist/lib/index.d.ts +8 -8
  29. package/dist/lib/index.js +1012 -246
  30. package/dist/lib/index.js.map +1 -1
  31. package/dist/lib/index.mjs +8 -8
  32. package/dist/lib/integrations/index.d.ts +26 -7
  33. package/dist/lib/integrations/index.js +446 -183
  34. package/dist/lib/integrations/index.js.map +1 -1
  35. package/dist/lib/integrations/index.mjs +6 -6
  36. package/dist/lib/integrations/nest/index.d.ts +5 -5
  37. package/dist/lib/integrations/nest/index.js +446 -183
  38. package/dist/lib/integrations/nest/index.js.map +1 -1
  39. package/dist/lib/integrations/nest/index.mjs +4 -4
  40. package/dist/lib/integrations/node-express/index.d.ts +5 -5
  41. package/dist/lib/integrations/node-express/index.js +446 -183
  42. package/dist/lib/integrations/node-express/index.js.map +1 -1
  43. package/dist/lib/integrations/node-express/index.mjs +4 -4
  44. package/dist/lib/integrations/node-http/index.d.ts +5 -5
  45. package/dist/lib/integrations/node-http/index.js +446 -183
  46. package/dist/lib/integrations/node-http/index.js.map +1 -1
  47. package/dist/lib/integrations/node-http/index.mjs +3 -3
  48. package/dist/service-adapters/index.d.ts +3 -3
  49. package/dist/service-adapters/index.js +19 -1
  50. package/dist/service-adapters/index.js.map +1 -1
  51. package/dist/service-adapters/index.mjs +3 -3
  52. package/dist/utils/index.d.ts +49 -1
  53. package/package.json +7 -5
  54. package/src/agents/langgraph/event-source.ts +222 -0
  55. package/src/agents/langgraph/events.ts +309 -0
  56. package/src/graphql/inputs/agent-session.input.ts +13 -0
  57. package/src/graphql/inputs/agent-state.input.ts +10 -0
  58. package/src/graphql/inputs/frontend.input.ts +3 -0
  59. package/src/graphql/inputs/generate-copilot-response.input.ts +11 -0
  60. package/src/graphql/inputs/message.input.ts +30 -0
  61. package/src/graphql/resolvers/copilot.resolver.ts +57 -12
  62. package/src/graphql/types/converted/index.ts +15 -0
  63. package/src/graphql/types/copilot-response.type.ts +29 -0
  64. package/src/graphql/types/enums.ts +1 -0
  65. package/src/lib/index.ts +1 -1
  66. package/src/lib/integrations/shared.ts +1 -1
  67. package/src/lib/runtime/copilot-runtime.ts +360 -0
  68. package/src/lib/runtime/remote-actions.ts +241 -0
  69. package/src/service-adapters/conversion.ts +16 -0
  70. package/src/service-adapters/events.ts +101 -19
  71. package/src/service-adapters/groq/groq-adapter.ts +13 -0
  72. package/src/service-adapters/openai/openai-adapter.ts +13 -0
  73. package/src/service-adapters/openai/openai-assistant-adapter.ts +14 -0
  74. package/dist/chunk-CUVWSISN.mjs.map +0 -1
  75. package/dist/chunk-GEIBJJQ4.mjs.map +0 -1
  76. package/dist/chunk-MKV3LEJ6.mjs.map +0 -1
  77. package/dist/chunk-RDEOIOQR.mjs +0 -155
  78. package/dist/chunk-RDEOIOQR.mjs.map +0 -1
  79. package/dist/failed-response-status-reasons-0ab19e06.d.ts +0 -49
  80. package/dist/pages-router-df82c666.d.ts +0 -21
  81. package/src/lib/copilot-runtime.ts +0 -225
  82. /package/dist/{chunk-URMISMK2.mjs.map → chunk-73NMP3DI.mjs.map} +0 -0
  83. /package/dist/{chunk-74B76SMO.mjs.map → chunk-HYNSUFUM.mjs.map} +0 -0
  84. /package/dist/{chunk-6PAC74F2.mjs.map → chunk-JV3CSVW6.mjs.map} +0 -0
  85. /package/dist/{chunk-NPCP4YZB.mjs.map → chunk-OYUVLDJF.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @copilotkit/runtime
2
2
 
3
+ ## 1.1.3-feat-runtime-remote-actions.0
4
+
5
+ ### Patch Changes
6
+
7
+ - 638d51d: appendMessage fix 1
8
+ - Rename hooks and bugfixes
9
+ - faccbe1: state-abuse resistance for useCopilotChat
10
+ - b0cf700: remove unnecessary logging
11
+ - Updated dependencies [638d51d]
12
+ - Updated dependencies
13
+ - Updated dependencies [faccbe1]
14
+ - Updated dependencies [b0cf700]
15
+ - @copilotkit/shared@1.1.3-feat-runtime-remote-actions.0
16
+
3
17
  ## 1.1.2
4
18
 
5
19
  ### Patch Changes
package/README.md CHANGED
@@ -1,50 +1,45 @@
1
1
  <div align="center">
2
- <picture>
3
- <source media="(prefers-color-scheme: dark)" srcset="https://github.com/CopilotKit/CopilotKit/assets/746397/5890217b-524e-49c5-a89e-b8743d2acd51">
4
- <img alt="CopilotKit Logo" src="https://github.com/CopilotKit/CopilotKit/assets/746397/bd5c9079-929b-4d55-bdc9-16d1c8181b71" width="450px" max-width="100%"/>
5
- </picture>
6
- </a>
7
- </div>
8
-
9
- <p align="center">
10
- <a href="https://discord.gg/6dffbvGU3D">
11
- <img src="https://dcbadge.vercel.app/api/server/6dffbvGU3D?compact=true&style=flat" alt="Discord">
12
- </a>
13
- <a href="https://github.com/CopilotKit/CopilotKit/actions/workflows/ci.yml">
14
- <img src="https://github.com/CopilotKit/CopilotKit/actions/workflows/ci.yml/badge.svg" alt="GitHub CI">
2
+ <a href="https://copilotkit.ai" target="_blank">
3
+ <img src="https://github.com/copilotkit/copilotkit/raw/main/assets/banner.png" alt="CopilotKit Logo">
15
4
  </a>
16
5
 
17
- <a href="https://www.npmjs.com/package/@copilotkit/react-core">
18
- <img src="https://img.shields.io/npm/v/@copilotkit/react-core" alt="NPM">
19
- <img src="https://img.shields.io/github/license/CopilotKit/CopilotKit" alt="MIT">
20
-
21
- </p>
6
+ <br/>
22
7
 
23
- <h1 align="center">
24
- The Open-Source Copilot Framework
25
- </h1>
8
+ <strong>
9
+ CopilotKit is the open-source framework for integrating powerful AI Copilots into any application. Easily implement custom AI Chatbots, AI Agents, AI Textareas, and more.
10
+ </strong>
11
+ </div>
26
12
 
27
- <h2 align="center">
28
- Build, deploy, and operate fully custom AI Copilots.
29
- </h2>
13
+ <br/>
30
14
 
31
- <h3 align="center">
32
- in-app AI chatbots, AI agents, and AI Textareas.
33
- </h3>
15
+ <div align="center">
16
+ <a href="https://www.npmjs.com/package/@copilotkit/react-core" target="_blank">
17
+ <img src="https://img.shields.io/npm/v/%40copilotkit%2Freact-core?logo=npm&logoColor=%23FFFFFF&label=Version&color=%236963ff" alt="NPM">
18
+ </a>
19
+ <img src="https://img.shields.io/github/license/copilotkit/copilotkit?color=%236963ff&label=License" alt="MIT">
20
+ <a href="https://discord.gg/6dffbvGU3D" target="_blank">
21
+ <img src="https://img.shields.io/discord/1122926057641742418?logo=discord&logoColor=%23FFFFFF&label=Discord&color=%236963ff" alt="Discord">
22
+ </a>
23
+ </div>
24
+ <br/>
34
25
 
35
- <p align="center">
36
- <a href="https://discord.com/invite/6dffbvGU3D">
37
- <img src="https://github.com/CopilotKit/CopilotKit/assets/131273140/bf8d96ea-3aeb-4c9a-9043-96a868b7ad0f" alt="Join our Discord" height="30">
26
+ <div align="center">
27
+ <a href="https://discord.gg/6dffbvGU3D?ref=github_readme" target="_blank">
28
+ <img src="https://github.com/copilotkit/copilotkit/raw/main/assets/btn_discord.png" alt="CopilotKit Discord" height="40px">
38
29
  </a>
39
- &nbsp;&middot;&nbsp;
40
- <a href="https://docs.copilotkit.ai/getting-started/quickstart-chatbot">
41
- <img src="https://github.com/CopilotKit/CopilotKit/assets/131273140/a4a0fd04-6aee-4e02-9c3e-3f11d60b4e8b" alt="Read the Docs" height="30">
30
+ <a href="https://docs.copilotkit.ai?ref=github_readme" target="_blank">
31
+ <img src="https://github.com/copilotkit/copilotkit/raw/main/assets/btn_docs.png" alt="CopilotKit GitHub" height="40px">
42
32
  </a>
43
- &nbsp;&middot;&nbsp;
44
- <a href="https://cloud.copilotkit.ai">
45
- <img src="https://github.com/CopilotKit/CopilotKit/assets/131273140/28ca62a8-cf93-4d3f-96b0-dc11bf89b734" alt="Try Copilot Cloud" height="30">
33
+ <a href="https://cloud.copilotkit.ai?ref=github_readme" target="_blank">
34
+ <img src="https://github.com/copilotkit/copilotkit/raw/main/assets/btn_cloud.png" alt="CopilotKit GitHub" height="40px">
46
35
  </a>
47
- </p>
36
+ </div>
37
+
38
+ <br />
39
+
40
+ <div align="center">
41
+ <img src="https://github.com/CopilotKit/CopilotKit/raw/main/assets/animated-banner.gif" alt="CopilotKit Screenshot" style="border-radius: 15px;" />
42
+ </div>
48
43
 
49
44
  # Documentation
50
45
 
@@ -21,6 +21,7 @@ type ActionExecutionMessageOutput implements BaseMessageOutput {
21
21
  """The scope of the action"""
22
22
  enum ActionExecutionScope {
23
23
  client
24
+ passThrough
24
25
  server
25
26
  }
26
27
 
@@ -30,6 +31,42 @@ input ActionInput {
30
31
  name: String!
31
32
  }
32
33
 
34
+ input AgentSessionInput {
35
+ agentName: String!
36
+ nodeName: String
37
+ threadId: String
38
+ }
39
+
40
+ input AgentStateInput {
41
+ agentName: String!
42
+ state: String!
43
+ }
44
+
45
+ input AgentStateMessageInput {
46
+ active: Boolean!
47
+ agentName: String!
48
+ nodeName: String!
49
+ role: MessageRole!
50
+ runId: String!
51
+ running: Boolean!
52
+ state: String!
53
+ threadId: String!
54
+ }
55
+
56
+ type AgentStateMessageOutput implements BaseMessageOutput {
57
+ active: Boolean!
58
+ agentName: String!
59
+ createdAt: DateTimeISO!
60
+ id: String!
61
+ nodeName: String!
62
+ role: MessageRole!
63
+ runId: String!
64
+ running: Boolean!
65
+ state: String!
66
+ status: MessageStatus!
67
+ threadId: String!
68
+ }
69
+
33
70
  interface BaseMessageOutput {
34
71
  createdAt: DateTimeISO!
35
72
  id: String!
@@ -93,9 +130,13 @@ input ForwardedParametersInput {
93
130
  input FrontendInput {
94
131
  actions: [ActionInput!]!
95
132
  toDeprecate_fullContext: String
133
+ url: String
96
134
  }
97
135
 
98
136
  input GenerateCopilotResponseInput {
137
+ agentSession: AgentSessionInput
138
+ agentState: AgentStateInput
139
+ agentStates: [AgentStateInput!]
99
140
  cloud: CloudInput
100
141
  forwardedParameters: ForwardedParametersInput
101
142
  frontend: FrontendInput!
@@ -130,6 +171,7 @@ scalar JSONObject @specifiedBy(url: "http://www.ecma-international.org/publicati
130
171
 
131
172
  input MessageInput {
132
173
  actionExecutionMessage: ActionExecutionMessageInput
174
+ agentStateMessage: AgentStateMessageInput
133
175
  createdAt: DateTimeISO!
134
176
  id: String!
135
177
  resultMessage: ResultMessageInput
@@ -0,0 +1,260 @@
1
+ import {
2
+ RemoteChain
3
+ } from "./chunk-BJ2LVHWA.mjs";
4
+ import {
5
+ RuntimeEventSource,
6
+ isLangGraphAgentAction,
7
+ setupRemoteActions
8
+ } from "./chunk-6X5MPWIC.mjs";
9
+ import {
10
+ ActionExecutionMessage,
11
+ AgentStateMessage,
12
+ ResultMessage,
13
+ TextMessage
14
+ } from "./chunk-TBZGOJJX.mjs";
15
+ import {
16
+ __name
17
+ } from "./chunk-44O2JGUY.mjs";
18
+
19
+ // src/lib/runtime/copilot-runtime.ts
20
+ import { actionParametersToJsonSchema, randomId } from "@copilotkit/shared";
21
+
22
+ // src/service-adapters/conversion.ts
23
+ import { plainToInstance } from "class-transformer";
24
+ function convertGqlInputToMessages(inputMessages) {
25
+ const messages = [];
26
+ for (const message of inputMessages) {
27
+ if (message.textMessage) {
28
+ messages.push(plainToInstance(TextMessage, {
29
+ id: message.id,
30
+ createdAt: message.createdAt,
31
+ role: message.textMessage.role,
32
+ content: message.textMessage.content
33
+ }));
34
+ } else if (message.actionExecutionMessage) {
35
+ messages.push(plainToInstance(ActionExecutionMessage, {
36
+ id: message.id,
37
+ createdAt: message.createdAt,
38
+ name: message.actionExecutionMessage.name,
39
+ arguments: JSON.parse(message.actionExecutionMessage.arguments),
40
+ scope: message.actionExecutionMessage.scope
41
+ }));
42
+ } else if (message.resultMessage) {
43
+ messages.push(plainToInstance(ResultMessage, {
44
+ id: message.id,
45
+ createdAt: message.createdAt,
46
+ actionExecutionId: message.resultMessage.actionExecutionId,
47
+ actionName: message.resultMessage.actionName,
48
+ result: message.resultMessage.result
49
+ }));
50
+ } else if (message.agentStateMessage) {
51
+ messages.push(plainToInstance(AgentStateMessage, {
52
+ id: message.id,
53
+ threadId: message.agentStateMessage.threadId,
54
+ createdAt: message.createdAt,
55
+ agentName: message.agentStateMessage.agentName,
56
+ nodeName: message.agentStateMessage.nodeName,
57
+ runId: message.agentStateMessage.runId,
58
+ active: message.agentStateMessage.active,
59
+ role: message.agentStateMessage.role,
60
+ state: JSON.parse(message.agentStateMessage.state),
61
+ running: message.agentStateMessage.running
62
+ }));
63
+ }
64
+ }
65
+ return messages;
66
+ }
67
+ __name(convertGqlInputToMessages, "convertGqlInputToMessages");
68
+
69
+ // src/lib/runtime/copilot-runtime.ts
70
+ import { from } from "rxjs";
71
+ var CopilotRuntime = class {
72
+ actions;
73
+ remoteActionDefinitions;
74
+ langserve = [];
75
+ onBeforeRequest;
76
+ onAfterRequest;
77
+ constructor(params) {
78
+ var _a, _b;
79
+ this.actions = (params == null ? void 0 : params.actions) || [];
80
+ for (const chain of (params == null ? void 0 : params.langserve) || []) {
81
+ const remoteChain = new RemoteChain(chain);
82
+ this.langserve.push(remoteChain.toAction());
83
+ }
84
+ this.remoteActionDefinitions = (params == null ? void 0 : params.remoteActions) || [];
85
+ this.onBeforeRequest = (_a = params == null ? void 0 : params.middleware) == null ? void 0 : _a.onBeforeRequest;
86
+ this.onAfterRequest = (_b = params == null ? void 0 : params.middleware) == null ? void 0 : _b.onAfterRequest;
87
+ }
88
+ async processRuntimeRequest(request) {
89
+ var _a;
90
+ const { serviceAdapter, messages: rawMessages, actions: clientSideActionsInput, threadId, runId, outputMessagesPromise, graphqlContext, forwardedParameters, agentSession, url } = request;
91
+ if (agentSession) {
92
+ return this.processAgentRequest(request);
93
+ }
94
+ const messages = rawMessages.filter((message) => !message.agentStateMessage);
95
+ const inputMessages = convertGqlInputToMessages(messages);
96
+ const serverSideActions = await this.getServerSideActions(request);
97
+ const serverSideActionsInput = serverSideActions.map((action) => ({
98
+ name: action.name,
99
+ description: action.description,
100
+ jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters))
101
+ }));
102
+ const actionInputs = flattenToolCallsNoDuplicates([
103
+ ...serverSideActionsInput,
104
+ ...clientSideActionsInput
105
+ ]);
106
+ await ((_a = this.onBeforeRequest) == null ? void 0 : _a.call(this, {
107
+ threadId,
108
+ runId,
109
+ inputMessages,
110
+ properties: graphqlContext.properties,
111
+ url
112
+ }));
113
+ try {
114
+ const eventSource = new RuntimeEventSource();
115
+ const result = await serviceAdapter.process({
116
+ messages: inputMessages,
117
+ actions: actionInputs,
118
+ threadId,
119
+ runId,
120
+ eventSource,
121
+ forwardedParameters
122
+ });
123
+ outputMessagesPromise.then((outputMessages) => {
124
+ var _a2;
125
+ (_a2 = this.onAfterRequest) == null ? void 0 : _a2.call(this, {
126
+ threadId: result.threadId,
127
+ runId: result.runId,
128
+ inputMessages,
129
+ outputMessages,
130
+ properties: graphqlContext.properties,
131
+ url
132
+ });
133
+ }).catch((_error) => {
134
+ });
135
+ return {
136
+ threadId: result.threadId,
137
+ runId: result.runId,
138
+ eventSource,
139
+ serverSideActions,
140
+ actionInputsWithoutAgents: actionInputs.filter((action) => (
141
+ // TODO-AGENTS: do not exclude ALL server side actions
142
+ !serverSideActions.find((serverSideAction) => serverSideAction.name == action.name)
143
+ ))
144
+ };
145
+ } catch (error) {
146
+ console.error("Error getting response:", error);
147
+ throw error;
148
+ }
149
+ }
150
+ async processAgentRequest(request) {
151
+ var _a;
152
+ const { messages: rawMessages, outputMessagesPromise, graphqlContext, agentSession } = request;
153
+ const { threadId = randomId(), agentName, nodeName } = agentSession;
154
+ const serverSideActions = await this.getServerSideActions(request);
155
+ const messages = convertGqlInputToMessages(rawMessages);
156
+ const agent = serverSideActions.find((action) => action.name === agentName && isLangGraphAgentAction(action));
157
+ if (!agent) {
158
+ throw new Error(`Agent ${agentName} not found`);
159
+ }
160
+ const serverSideActionsInput = serverSideActions.filter((action) => !isLangGraphAgentAction(action)).map((action) => ({
161
+ name: action.name,
162
+ description: action.description,
163
+ jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters))
164
+ }));
165
+ const actionInputsWithoutAgents = flattenToolCallsNoDuplicates([
166
+ ...serverSideActionsInput,
167
+ ...request.actions
168
+ ]);
169
+ await ((_a = this.onBeforeRequest) == null ? void 0 : _a.call(this, {
170
+ threadId,
171
+ runId: void 0,
172
+ inputMessages: messages,
173
+ properties: graphqlContext.properties
174
+ }));
175
+ try {
176
+ const eventSource = new RuntimeEventSource();
177
+ const stream = await agent.langGraphAgentHandler({
178
+ name: agentName,
179
+ threadId,
180
+ nodeName,
181
+ actionInputsWithoutAgents
182
+ });
183
+ eventSource.stream(async (eventStream$) => {
184
+ from(stream).subscribe({
185
+ next: (event) => eventStream$.next(event),
186
+ error: (err) => console.error("Error in stream", err),
187
+ complete: () => eventStream$.complete()
188
+ });
189
+ });
190
+ outputMessagesPromise.then((outputMessages) => {
191
+ var _a2;
192
+ (_a2 = this.onAfterRequest) == null ? void 0 : _a2.call(this, {
193
+ threadId,
194
+ runId: void 0,
195
+ inputMessages: messages,
196
+ outputMessages,
197
+ properties: graphqlContext.properties
198
+ });
199
+ }).catch((_error) => {
200
+ });
201
+ return {
202
+ threadId,
203
+ runId: void 0,
204
+ eventSource,
205
+ serverSideActions: [],
206
+ actionInputsWithoutAgents
207
+ };
208
+ } catch (error) {
209
+ console.error("Error getting response:", error);
210
+ throw error;
211
+ }
212
+ }
213
+ async getServerSideActions(request) {
214
+ const { messages: rawMessages, graphqlContext, agentStates, url } = request;
215
+ const inputMessages = convertGqlInputToMessages(rawMessages);
216
+ const langserveFunctions = [];
217
+ for (const chainPromise of this.langserve) {
218
+ try {
219
+ const chain = await chainPromise;
220
+ langserveFunctions.push(chain);
221
+ } catch (error) {
222
+ console.error("Error loading langserve chain:", error);
223
+ }
224
+ }
225
+ const remoteActions = await setupRemoteActions({
226
+ remoteActionDefinitions: this.remoteActionDefinitions,
227
+ graphqlContext,
228
+ messages: inputMessages,
229
+ agentStates
230
+ });
231
+ const configuredActions = typeof this.actions === "function" ? this.actions({
232
+ properties: graphqlContext.properties,
233
+ url
234
+ }) : this.actions;
235
+ return [
236
+ ...configuredActions,
237
+ ...langserveFunctions,
238
+ ...remoteActions
239
+ ];
240
+ }
241
+ };
242
+ __name(CopilotRuntime, "CopilotRuntime");
243
+ function flattenToolCallsNoDuplicates(toolsByPriority) {
244
+ let allTools = [];
245
+ const allToolNames = [];
246
+ for (const tool of toolsByPriority) {
247
+ if (!allToolNames.includes(tool.name)) {
248
+ allTools.push(tool);
249
+ allToolNames.push(tool.name);
250
+ }
251
+ }
252
+ return allTools;
253
+ }
254
+ __name(flattenToolCallsNoDuplicates, "flattenToolCallsNoDuplicates");
255
+
256
+ export {
257
+ CopilotRuntime,
258
+ flattenToolCallsNoDuplicates
259
+ };
260
+ //# sourceMappingURL=chunk-4WFNRUBE.mjs.map
@@ -0,0 +1 @@
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, randomId } from \"@copilotkit/shared\";\nimport { RemoteChain, RemoteChainParameters, CopilotServiceAdapter } 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 { AgentStateMessage, Message } from \"../../graphql/types/converted\";\nimport { ForwardedParametersInput } from \"../../graphql/inputs/forwarded-parameters.input\";\nimport {\n setupRemoteActions,\n RemoteActionDefinition,\n LangGraphAgentAction,\n isLangGraphAgentAction,\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 * A list of remote actions that can be executed.\n */\n remoteActions?: RemoteActionDefinition[];\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 remoteActionDefinitions: RemoteActionDefinition[];\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.remoteActionDefinitions = params?.remoteActions || [];\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 = randomId(), 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 const remoteActions = await setupRemoteActions({\n remoteActionDefinitions: this.remoteActionDefinitions,\n graphqlContext,\n messages: inputMessages,\n agentStates,\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\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","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,8BAAyCC,gBAAgB;;;ACN1E,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;;;ADoBhB,SAASiC,YAAY;AAwGd,IAAMC,iBAAN,MAAMA;EACJC;EACCC;EACAC,YAAoC,CAAA;EACpCC;EACAC;EAERC,YAAYC,QAA6C;AA7I3D;AA8II,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,2BAA0BK,iCAAQM,kBAAiB,CAAA;AAExD,SAAKT,mBAAkBG,sCAAQO,eAARP,mBAAoBH;AAC3C,SAAKC,kBAAiBE,sCAAQO,eAARP,mBAAoBF;EAC5C;EAEA,MAAMU,sBAAsBC,SAAiE;AA3J/F;AA4JI,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;AAlNf,YAAAC;AAmNU,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;AApPrC;AAqPI,UAAM,EAAEE,UAAUC,aAAaI,uBAAuBC,gBAAgBE,aAAY,IAAKV;AACvF,UAAM,EAAEK,WAAW0C,SAAAA,GAAYC,WAAWC,SAAQ,IAAKvC;AACvD,UAAMQ,oBAAoB,MAAM,KAAKC,qBAAqBnB,OAAAA;AAE1D,UAAME,WAAWe,0BAA0Bd,WAAAA;AAE3C,UAAM+C,QAAQhC,kBAAkByB,KAC9B,CAACrB,WAAWA,OAAOC,SAASyB,aAAaG,uBAAuB7B,MAAAA,CAAAA;AAGlE,QAAI,CAAC4B,OAAO;AACV,YAAM,IAAIE,MAAM,SAASJ,qBAAqB;IAChD;AAEA,UAAM5B,yBAAwCF,kBAC3CL,OAAO,CAACS,WAAW,CAAC6B,uBAAuB7B,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,OAAO+C;MACPrC,eAAed;MACf8B,YAAYxB,eAAewB;IAC7B;AACA,QAAI;AACF,YAAMC,cAAc,IAAIC,mBAAAA;AACxB,YAAMoB,SAAS,MAAMJ,MAAMK,sBAAsB;QAC/ChC,MAAMyB;QACN3C;QACA4C;QACAP;MACF,CAAA;AAEAT,kBAAYqB,OAAO,OAAOE,iBAAAA;AACxBC,aAAKH,MAAAA,EAAQI,UAAU;UACrBC,MAAM,CAACC,UAAUJ,aAAaG,KAAKC,KAAAA;UACnCf,OAAO,CAACgB,QAAQf,QAAQD,MAAM,mBAAmBgB,GAAAA;UACjDC,UAAU,MAAMN,aAAaM,SAAQ;QACvC,CAAA;MACF,CAAA;AAEAvD,4BACG8B,KAAK,CAACC,mBAAAA;AAxSf,YAAAC;AAySU,SAAAA,MAAA,KAAKlD,mBAAL,gBAAAkD,IAAA,WAAsB;UACpBlC;UACAC,OAAO+C;UACPrC,eAAed;UACfoC;UACAN,YAAYxB,eAAewB;QAC7B;MACF,CAAA,EACCQ,MAAM,CAACC,WAAAA;MAAY,CAAA;AAEtB,aAAO;QACLpC;QACAC,OAAO+C;QACPpB;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,gBAAgBuD,aAAapD,IAAG,IAAKX;AACpE,UAAMgB,gBAAgBC,0BAA0Bd,WAAAA;AAChD,UAAM6D,qBAAoC,CAAA;AAE1C,eAAWC,gBAAgB,KAAK9E,WAAW;AACzC,UAAI;AACF,cAAMK,QAAQ,MAAMyE;AACpBD,2BAAmBrE,KAAKH,KAAAA;MAC1B,SAASqD,OAAP;AACAC,gBAAQD,MAAM,kCAAkCA,KAAAA;MAClD;IACF;AACA,UAAMhD,gBAAgB,MAAMqE,mBAAmB;MAC7ChF,yBAAyB,KAAKA;MAC9BsB;MACAN,UAAUc;MACV+C;IACF,CAAA;AAEA,UAAMI,oBACJ,OAAO,KAAKlF,YAAY,aACpB,KAAKA,QAAQ;MAAE+C,YAAYxB,eAAewB;MAAYrB;IAAI,CAAA,IAC1D,KAAK1B;AAEX,WAAO;SAAIkF;SAAsBH;SAAuBnE;;EAC1D;AACF;AArNab;AAuNN,SAAS+C,6BAA6BqC,iBAA8B;AACzE,MAAIC,WAA0B,CAAA;AAC9B,QAAMC,eAAyB,CAAA;AAC/B,aAAWC,QAAQH,iBAAiB;AAClC,QAAI,CAACE,aAAaE,SAASD,KAAKhD,IAAI,GAAG;AACrC8C,eAAS1E,KAAK4E,IAAAA;AACdD,mBAAa3E,KAAK4E,KAAKhD,IAAI;IAC7B;EACF;AACA,SAAO8C;AACT;AAVgBtC;","names":["actionParametersToJsonSchema","randomId","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","remoteActionDefinitions","langserve","onBeforeRequest","onAfterRequest","constructor","params","chain","remoteChain","RemoteChain","push","toAction","remoteActions","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","randomId","agentName","nodeName","agent","isLangGraphAgentAction","Error","undefined","stream","langGraphAgentHandler","eventStream$","from","subscribe","next","event","err","complete","agentStates","langserveFunctions","chainPromise","setupRemoteActions","configuredActions","toolsByPriority","allTools","allToolNames","tool","includes"]}