@copilotkit/runtime 1.1.1-feat-runtime-remote-actions.4 → 1.1.1-feat-runtime-remote-actions.5
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.
- package/CHANGELOG.md +8 -0
- package/__snapshots__/schema/schema.graphql +13 -2
- package/dist/{chunk-ID4HXIJF.mjs → chunk-4KFOUZ2Q.mjs} +2 -2
- package/dist/{chunk-LHWJWBDQ.mjs → chunk-73NMP3DI.mjs} +2 -2
- package/dist/{chunk-RV3RDJTV.mjs → chunk-IFZBG4KM.mjs} +13 -17
- package/dist/chunk-IFZBG4KM.mjs.map +1 -0
- package/dist/{chunk-AMA3GQ3B.mjs → chunk-KZOZDGQL.mjs} +250 -156
- package/dist/chunk-KZOZDGQL.mjs.map +1 -0
- package/dist/{chunk-LBKOW2DQ.mjs → chunk-LELOFPMM.mjs} +3 -3
- package/dist/{chunk-Y2Q75FA4.mjs → chunk-S7JCF2IN.mjs} +2 -2
- package/dist/{chunk-HJXSKVFX.mjs → chunk-TBZGOJJX.mjs} +3 -1
- package/dist/{chunk-HJXSKVFX.mjs.map → chunk-TBZGOJJX.mjs.map} +1 -1
- package/dist/{chunk-TBZ25KZ6.mjs → chunk-VQPD5OQG.mjs} +2 -2
- package/dist/{copilot-runtime-b0c4fa3b.d.ts → copilot-runtime-2e617fcb.d.ts} +10 -4
- package/dist/graphql/types/converted/index.d.ts +1 -1
- package/dist/graphql/types/converted/index.js +2 -0
- package/dist/graphql/types/converted/index.js.map +1 -1
- package/dist/graphql/types/converted/index.mjs +1 -1
- package/dist/{groq-adapter-10ffe053.d.ts → groq-adapter-dadea62a.d.ts} +1 -1
- package/dist/{index-9357d387.d.ts → index-0476e4f7.d.ts} +4 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.js +304 -212
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -8
- package/dist/{langserve-e414c405.d.ts → langserve-d6073a3b.d.ts} +4 -2
- package/dist/lib/index.d.ts +5 -5
- package/dist/lib/index.js +304 -212
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +8 -8
- package/dist/lib/integrations/index.d.ts +4 -4
- package/dist/lib/integrations/index.js +274 -190
- package/dist/lib/integrations/index.js.map +1 -1
- package/dist/lib/integrations/index.mjs +6 -6
- package/dist/lib/integrations/nest/index.d.ts +3 -3
- package/dist/lib/integrations/nest/index.js +274 -190
- package/dist/lib/integrations/nest/index.js.map +1 -1
- package/dist/lib/integrations/nest/index.mjs +4 -4
- package/dist/lib/integrations/node-express/index.d.ts +3 -3
- package/dist/lib/integrations/node-express/index.js +274 -190
- package/dist/lib/integrations/node-express/index.js.map +1 -1
- package/dist/lib/integrations/node-express/index.mjs +4 -4
- package/dist/lib/integrations/node-http/index.d.ts +3 -3
- package/dist/lib/integrations/node-http/index.js +274 -190
- package/dist/lib/integrations/node-http/index.js.map +1 -1
- package/dist/lib/integrations/node-http/index.mjs +3 -3
- package/dist/{pages-router-1bb4736d.d.ts → pages-router-668ef279.d.ts} +1 -1
- package/dist/service-adapters/index.d.ts +3 -3
- package/dist/service-adapters/index.js.map +1 -1
- package/dist/service-adapters/index.mjs +3 -3
- package/package.json +7 -5
- package/src/agents/langgraph/event-source.ts +2 -0
- package/src/agents/langgraph/events.ts +2 -0
- package/src/graphql/inputs/agent-session.input.ts +5 -5
- package/src/graphql/inputs/agent-state.input.ts +10 -0
- package/src/graphql/inputs/generate-copilot-response.input.ts +7 -0
- package/src/graphql/inputs/message.input.ts +6 -0
- package/src/graphql/resolvers/copilot.resolver.ts +5 -0
- package/src/graphql/types/converted/index.ts +2 -0
- package/src/graphql/types/copilot-response.type.ts +6 -0
- package/src/lib/runtime/copilot-runtime.ts +8 -17
- package/src/lib/runtime/remote-actions.ts +16 -4
- package/src/service-adapters/conversion.ts +2 -0
- package/src/service-adapters/events.ts +7 -2
- package/dist/chunk-AMA3GQ3B.mjs.map +0 -1
- package/dist/chunk-RV3RDJTV.mjs.map +0 -1
- /package/dist/{chunk-ID4HXIJF.mjs.map → chunk-4KFOUZ2Q.mjs.map} +0 -0
- /package/dist/{chunk-LHWJWBDQ.mjs.map → chunk-73NMP3DI.mjs.map} +0 -0
- /package/dist/{chunk-LBKOW2DQ.mjs.map → chunk-LELOFPMM.mjs.map} +0 -0
- /package/dist/{chunk-Y2Q75FA4.mjs.map → chunk-S7JCF2IN.mjs.map} +0 -0
- /package/dist/{chunk-TBZ25KZ6.mjs.map → chunk-VQPD5OQG.mjs.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @copilotkit/runtime
|
|
2
2
|
|
|
3
|
+
## 1.1.1-feat-runtime-remote-actions.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- useCoagent/useCoagentAction
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @copilotkit/shared@1.1.1-feat-runtime-remote-actions.5
|
|
10
|
+
|
|
3
11
|
## 1.1.1-feat-runtime-remote-actions.4
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -33,25 +33,34 @@ input ActionInput {
|
|
|
33
33
|
|
|
34
34
|
input AgentSessionInput {
|
|
35
35
|
agentName: String!
|
|
36
|
-
nodeName: String
|
|
37
|
-
threadId: String
|
|
36
|
+
nodeName: String
|
|
37
|
+
threadId: String
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
input AgentStateInput {
|
|
41
|
+
agentName: String!
|
|
42
|
+
state: String!
|
|
38
43
|
}
|
|
39
44
|
|
|
40
45
|
input AgentStateMessageInput {
|
|
46
|
+
active: Boolean!
|
|
41
47
|
agentName: String!
|
|
42
48
|
nodeName: String!
|
|
43
49
|
role: MessageRole!
|
|
50
|
+
runId: String!
|
|
44
51
|
running: Boolean!
|
|
45
52
|
state: String!
|
|
46
53
|
threadId: String!
|
|
47
54
|
}
|
|
48
55
|
|
|
49
56
|
type AgentStateMessageOutput implements BaseMessageOutput {
|
|
57
|
+
active: Boolean!
|
|
50
58
|
agentName: String!
|
|
51
59
|
createdAt: DateTimeISO!
|
|
52
60
|
id: String!
|
|
53
61
|
nodeName: String!
|
|
54
62
|
role: MessageRole!
|
|
63
|
+
runId: String!
|
|
55
64
|
running: Boolean!
|
|
56
65
|
state: String!
|
|
57
66
|
status: MessageStatus!
|
|
@@ -125,6 +134,8 @@ input FrontendInput {
|
|
|
125
134
|
|
|
126
135
|
input GenerateCopilotResponseInput {
|
|
127
136
|
agentSession: AgentSessionInput
|
|
137
|
+
agentState: AgentStateInput
|
|
138
|
+
agentStates: [AgentStateInput!]
|
|
128
139
|
cloud: CloudInput
|
|
129
140
|
forwardedParameters: ForwardedParametersInput
|
|
130
141
|
frontend: FrontendInput!
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
copilotRuntimeNodeHttpEndpoint,
|
|
3
3
|
telemetry_client_default
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-KZOZDGQL.mjs";
|
|
5
5
|
import {
|
|
6
6
|
__name
|
|
7
7
|
} from "./chunk-44O2JGUY.mjs";
|
|
@@ -21,4 +21,4 @@ __name(copilotRuntimeNodeExpressEndpoint, "copilotRuntimeNodeExpressEndpoint");
|
|
|
21
21
|
export {
|
|
22
22
|
copilotRuntimeNodeExpressEndpoint
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=chunk-
|
|
24
|
+
//# sourceMappingURL=chunk-4KFOUZ2Q.mjs.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
ActionExecutionMessage,
|
|
3
3
|
ResultMessage,
|
|
4
4
|
TextMessage
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-TBZGOJJX.mjs";
|
|
6
6
|
import {
|
|
7
7
|
__name
|
|
8
8
|
} from "./chunk-44O2JGUY.mjs";
|
|
@@ -204,4 +204,4 @@ export {
|
|
|
204
204
|
convertActionInputToLangChainTool,
|
|
205
205
|
streamLangChainResponse
|
|
206
206
|
};
|
|
207
|
-
//# sourceMappingURL=chunk-
|
|
207
|
+
//# sourceMappingURL=chunk-73NMP3DI.mjs.map
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RemoteChain
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LELOFPMM.mjs";
|
|
4
4
|
import {
|
|
5
5
|
RuntimeEventSource,
|
|
6
6
|
isLangGraphAgentAction,
|
|
7
7
|
setupRemoteActions
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-KZOZDGQL.mjs";
|
|
9
9
|
import {
|
|
10
10
|
ActionExecutionMessage,
|
|
11
11
|
AgentStateMessage,
|
|
12
12
|
ResultMessage,
|
|
13
13
|
TextMessage
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-TBZGOJJX.mjs";
|
|
15
15
|
import {
|
|
16
16
|
__name
|
|
17
17
|
} from "./chunk-44O2JGUY.mjs";
|
|
18
18
|
|
|
19
19
|
// src/lib/runtime/copilot-runtime.ts
|
|
20
|
-
import { actionParametersToJsonSchema } from "@copilotkit/shared";
|
|
20
|
+
import { actionParametersToJsonSchema, randomId } from "@copilotkit/shared";
|
|
21
21
|
|
|
22
22
|
// src/service-adapters/conversion.ts
|
|
23
23
|
import { plainToInstance } from "class-transformer";
|
|
@@ -54,6 +54,8 @@ function convertGqlInputToMessages(inputMessages) {
|
|
|
54
54
|
createdAt: message.createdAt,
|
|
55
55
|
agentName: message.agentStateMessage.agentName,
|
|
56
56
|
nodeName: message.agentStateMessage.nodeName,
|
|
57
|
+
runId: message.agentStateMessage.runId,
|
|
58
|
+
active: message.agentStateMessage.active,
|
|
57
59
|
role: message.agentStateMessage.role,
|
|
58
60
|
state: JSON.parse(message.agentStateMessage.state),
|
|
59
61
|
running: message.agentStateMessage.running
|
|
@@ -146,15 +148,9 @@ var CopilotRuntime = class {
|
|
|
146
148
|
async processAgentRequest(request) {
|
|
147
149
|
var _a;
|
|
148
150
|
const { messages: rawMessages, outputMessagesPromise, graphqlContext, agentSession } = request;
|
|
149
|
-
const { threadId, agentName, nodeName } = agentSession;
|
|
151
|
+
const { threadId = randomId(), agentName, nodeName } = agentSession;
|
|
150
152
|
const serverSideActions = await this.getServerSideActions(request);
|
|
151
153
|
const messages = convertGqlInputToMessages(rawMessages);
|
|
152
|
-
const agentStateMessages = messages.filter((message) => message instanceof AgentStateMessage);
|
|
153
|
-
if (agentStateMessages.length === 0) {
|
|
154
|
-
throw new Error("No agent state messages found");
|
|
155
|
-
}
|
|
156
|
-
const agentStateMessage = agentStateMessages[agentStateMessages.length - 1];
|
|
157
|
-
const state = agentStateMessage.state;
|
|
158
154
|
const agent = serverSideActions.find((action) => action.name === agentName && isLangGraphAgentAction(action));
|
|
159
155
|
if (!agent) {
|
|
160
156
|
throw new Error(`Agent ${agentName} not found`);
|
|
@@ -178,7 +174,6 @@ var CopilotRuntime = class {
|
|
|
178
174
|
const eventSource = new RuntimeEventSource();
|
|
179
175
|
const stream = await agent.langGraphAgentHandler({
|
|
180
176
|
name: agentName,
|
|
181
|
-
state,
|
|
182
177
|
threadId,
|
|
183
178
|
nodeName,
|
|
184
179
|
actionInputsWithoutAgents
|
|
@@ -193,7 +188,7 @@ var CopilotRuntime = class {
|
|
|
193
188
|
outputMessagesPromise.then((outputMessages) => {
|
|
194
189
|
var _a2;
|
|
195
190
|
(_a2 = this.onAfterRequest) == null ? void 0 : _a2.call(this, {
|
|
196
|
-
threadId
|
|
191
|
+
threadId,
|
|
197
192
|
runId: void 0,
|
|
198
193
|
inputMessages: messages,
|
|
199
194
|
outputMessages,
|
|
@@ -202,7 +197,7 @@ var CopilotRuntime = class {
|
|
|
202
197
|
}).catch((_error) => {
|
|
203
198
|
});
|
|
204
199
|
return {
|
|
205
|
-
threadId
|
|
200
|
+
threadId,
|
|
206
201
|
runId: void 0,
|
|
207
202
|
eventSource,
|
|
208
203
|
serverSideActions: [],
|
|
@@ -214,7 +209,7 @@ var CopilotRuntime = class {
|
|
|
214
209
|
}
|
|
215
210
|
}
|
|
216
211
|
async getServerSideActions(request) {
|
|
217
|
-
const { messages: rawMessages, graphqlContext } = request;
|
|
212
|
+
const { messages: rawMessages, graphqlContext, agentStates } = request;
|
|
218
213
|
const inputMessages = convertGqlInputToMessages(rawMessages);
|
|
219
214
|
const langserveFunctions = [];
|
|
220
215
|
for (const chainPromise of this.langserve) {
|
|
@@ -228,7 +223,8 @@ var CopilotRuntime = class {
|
|
|
228
223
|
const remoteActions = await setupRemoteActions({
|
|
229
224
|
remoteActionDefinitions: this.remoteActionDefinitions,
|
|
230
225
|
graphqlContext,
|
|
231
|
-
messages: inputMessages
|
|
226
|
+
messages: inputMessages,
|
|
227
|
+
agentStates
|
|
232
228
|
});
|
|
233
229
|
const configuredActions = typeof this.actions === "function" ? this.actions({
|
|
234
230
|
properties: graphqlContext.properties
|
|
@@ -258,4 +254,4 @@ export {
|
|
|
258
254
|
CopilotRuntime,
|
|
259
255
|
flattenToolCallsNoDuplicates
|
|
260
256
|
};
|
|
261
|
-
//# sourceMappingURL=chunk-
|
|
257
|
+
//# sourceMappingURL=chunk-IFZBG4KM.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}\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 }) => Action<T>[]);\n\ninterface OnBeforeRequestOptions {\n threadId?: string;\n runId?: string;\n inputMessages: Message[];\n properties: any;\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}\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 } = 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 });\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 });\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 } = 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 })\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":"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","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","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"]}
|