@copilotkit/runtime 1.2.1 → 1.2.2-feat-runtime-remote-actions.1
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 +34 -0
- package/__snapshots__/schema/schema.graphql +41 -0
- package/dist/{chunk-Q5ZTE7WH.mjs → chunk-3SKYFYY2.mjs} +786 -158
- package/dist/chunk-3SKYFYY2.mjs.map +1 -0
- package/dist/{chunk-URMISMK2.mjs → chunk-73NMP3DI.mjs} +2 -2
- package/dist/{chunk-736EEICU.mjs → chunk-BJ2LVHWA.mjs} +3 -3
- package/dist/{chunk-DMO6FA25.mjs → chunk-BPEPG56J.mjs} +2 -2
- package/dist/{chunk-GEIBJJQ4.mjs → chunk-TBZGOJJX.mjs} +14 -2
- package/dist/chunk-TBZGOJJX.mjs.map +1 -0
- package/dist/{chunk-DYF5MUAH.mjs → chunk-U2EKJP47.mjs} +2 -2
- package/dist/{chunk-YMUS43FR.mjs → chunk-UL2OKN2O.mjs} +2 -2
- package/dist/chunk-Y5TWOZFD.mjs +260 -0
- package/dist/chunk-Y5TWOZFD.mjs.map +1 -0
- package/dist/{shared-c5362338.d.ts → copilot-runtime-d427e991.d.ts} +65 -38
- package/dist/graphql/types/converted/index.d.ts +1 -1
- package/dist/graphql/types/converted/index.js +13 -0
- package/dist/graphql/types/converted/index.js.map +1 -1
- package/dist/graphql/types/converted/index.mjs +3 -1
- package/dist/{index-aa091e3c.d.ts → index-0476e4f7.d.ts} +24 -2
- package/dist/{index-13aa818e.d.ts → index-079752b9.d.ts} +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +982 -245
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -8
- package/dist/{langserve-a54438c6.d.ts → langserve-d6073a3b.d.ts} +24 -11
- package/dist/lib/index.d.ts +7 -7
- package/dist/lib/index.js +982 -245
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +8 -8
- package/dist/lib/integrations/index.d.ts +6 -6
- package/dist/lib/integrations/index.js +437 -182
- 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 +5 -5
- package/dist/lib/integrations/nest/index.js +437 -182
- 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 +5 -5
- package/dist/lib/integrations/node-express/index.js +437 -182
- 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 +5 -5
- package/dist/lib/integrations/node-http/index.js +437 -182
- package/dist/lib/integrations/node-http/index.js.map +1 -1
- package/dist/lib/integrations/node-http/index.mjs +3 -3
- 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 +222 -0
- package/src/agents/langgraph/events.ts +309 -0
- package/src/graphql/inputs/agent-session.input.ts +13 -0
- package/src/graphql/inputs/agent-state.input.ts +10 -0
- package/src/graphql/inputs/generate-copilot-response.input.ts +11 -0
- package/src/graphql/inputs/message.input.ts +30 -0
- package/src/graphql/resolvers/copilot.resolver.ts +56 -12
- package/src/graphql/types/converted/index.ts +15 -0
- package/src/graphql/types/copilot-response.type.ts +29 -0
- package/src/graphql/types/enums.ts +1 -0
- package/src/lib/index.ts +1 -1
- package/src/lib/integrations/shared.ts +1 -1
- package/src/lib/runtime/copilot-runtime.ts +360 -0
- package/src/lib/runtime/remote-actions.ts +241 -0
- package/src/service-adapters/conversion.ts +16 -0
- package/src/service-adapters/events.ts +101 -19
- package/dist/chunk-GEIBJJQ4.mjs.map +0 -1
- package/dist/chunk-PB24CCIJ.mjs +0 -158
- package/dist/chunk-PB24CCIJ.mjs.map +0 -1
- package/dist/chunk-Q5ZTE7WH.mjs.map +0 -1
- package/src/lib/copilot-runtime.ts +0 -231
- /package/dist/{chunk-URMISMK2.mjs.map → chunk-73NMP3DI.mjs.map} +0 -0
- /package/dist/{chunk-736EEICU.mjs.map → chunk-BJ2LVHWA.mjs.map} +0 -0
- /package/dist/{chunk-DMO6FA25.mjs.map → chunk-BPEPG56J.mjs.map} +0 -0
- /package/dist/{chunk-DYF5MUAH.mjs.map → chunk-U2EKJP47.mjs.map} +0 -0
- /package/dist/{chunk-YMUS43FR.mjs.map → chunk-UL2OKN2O.mjs.map} +0 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import {
|
|
2
|
+
RemoteChain
|
|
3
|
+
} from "./chunk-BJ2LVHWA.mjs";
|
|
4
|
+
import {
|
|
5
|
+
RuntimeEventSource,
|
|
6
|
+
isLangGraphAgentAction,
|
|
7
|
+
setupRemoteActions
|
|
8
|
+
} from "./chunk-3SKYFYY2.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-Y5TWOZFD.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":"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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","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"]}
|
|
@@ -1,11 +1,62 @@
|
|
|
1
|
+
import { Parameter, Action } from '@copilotkit/shared';
|
|
2
|
+
import { C as CopilotServiceAdapter, R as RemoteChainParameters, A as ActionInput, F as ForwardedParametersInput, a as RuntimeEventSource } from './langserve-d6073a3b.js';
|
|
3
|
+
import { M as MessageInput, a as Message } from './index-0476e4f7.js';
|
|
1
4
|
import * as graphql from 'graphql';
|
|
2
5
|
import * as pino from 'pino';
|
|
3
6
|
import { YogaInitialContext, createYoga } from 'graphql-yoga';
|
|
4
|
-
import { Parameter, Action } from '@copilotkit/shared';
|
|
5
|
-
import { R as RemoteChainParameters, A as ActionInput, C as CopilotServiceAdapter, F as ForwardedParametersInput, a as RuntimeEventSource } from './langserve-a54438c6.js';
|
|
6
|
-
import { M as MessageInput, a as Message } from './index-aa091e3c.js';
|
|
7
7
|
import { CopilotCloudOptions } from './lib/cloud/index.js';
|
|
8
8
|
|
|
9
|
+
type LogLevel = "debug" | "info" | "warn" | "error";
|
|
10
|
+
|
|
11
|
+
declare const logger: pino.Logger<never>;
|
|
12
|
+
type AnyPrimitive = string | boolean | number | null;
|
|
13
|
+
type CopilotRequestContextProperties = Record<string, AnyPrimitive | Record<string, AnyPrimitive>>;
|
|
14
|
+
type GraphQLContext = YogaInitialContext & {
|
|
15
|
+
_copilotkit: CreateCopilotRuntimeServerOptions;
|
|
16
|
+
properties: CopilotRequestContextProperties;
|
|
17
|
+
logger: typeof logger;
|
|
18
|
+
};
|
|
19
|
+
interface CreateCopilotRuntimeServerOptions {
|
|
20
|
+
runtime: CopilotRuntime<any>;
|
|
21
|
+
serviceAdapter: CopilotServiceAdapter;
|
|
22
|
+
endpoint: string;
|
|
23
|
+
baseUrl?: string;
|
|
24
|
+
cloud?: CopilotCloudOptions;
|
|
25
|
+
properties?: CopilotRequestContextProperties;
|
|
26
|
+
logLevel?: LogLevel;
|
|
27
|
+
}
|
|
28
|
+
declare function createContext(initialContext: YogaInitialContext, copilotKitContext: CreateCopilotRuntimeServerOptions, contextLogger: typeof logger, properties?: CopilotRequestContextProperties): Promise<Partial<GraphQLContext>>;
|
|
29
|
+
declare function buildSchema(options?: {
|
|
30
|
+
emitSchemaFile?: string;
|
|
31
|
+
}): graphql.GraphQLSchema;
|
|
32
|
+
type CommonConfig = {
|
|
33
|
+
logging: typeof logger;
|
|
34
|
+
schema: ReturnType<typeof buildSchema>;
|
|
35
|
+
plugins: Parameters<typeof createYoga>[0]["plugins"];
|
|
36
|
+
context: (ctx: YogaInitialContext) => Promise<Partial<GraphQLContext>>;
|
|
37
|
+
};
|
|
38
|
+
declare function getCommonConfig(options: CreateCopilotRuntimeServerOptions): CommonConfig;
|
|
39
|
+
|
|
40
|
+
declare class AgentStateInput {
|
|
41
|
+
agentName: string;
|
|
42
|
+
state: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
type RemoteActionDefinition = {
|
|
46
|
+
url: string;
|
|
47
|
+
onBeforeRequest?: ({ ctx }: {
|
|
48
|
+
ctx: GraphQLContext;
|
|
49
|
+
}) => {
|
|
50
|
+
headers?: Record<string, string> | undefined;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
declare class AgentSessionInput {
|
|
55
|
+
agentName: string;
|
|
56
|
+
threadId?: string;
|
|
57
|
+
nodeName?: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
9
60
|
/**
|
|
10
61
|
* <Callout type="info">
|
|
11
62
|
* This is the reference for the `CopilotRuntime` class. For more information and example code snippets, please see [Concept: Copilot Runtime](/concepts/copilot-runtime).
|
|
@@ -24,19 +75,22 @@ interface CopilotRuntimeRequest {
|
|
|
24
75
|
serviceAdapter: CopilotServiceAdapter;
|
|
25
76
|
messages: MessageInput[];
|
|
26
77
|
actions: ActionInput[];
|
|
78
|
+
agentSession?: AgentSessionInput;
|
|
79
|
+
agentStates?: AgentStateInput[];
|
|
27
80
|
outputMessagesPromise: Promise<Message[]>;
|
|
28
|
-
properties: any;
|
|
29
81
|
threadId?: string;
|
|
30
82
|
runId?: string;
|
|
31
83
|
publicApiKey?: string;
|
|
32
|
-
|
|
84
|
+
graphqlContext: GraphQLContext;
|
|
33
85
|
forwardedParameters?: ForwardedParametersInput;
|
|
86
|
+
url?: string;
|
|
34
87
|
}
|
|
35
88
|
interface CopilotRuntimeResponse {
|
|
36
89
|
threadId: string;
|
|
37
90
|
runId?: string;
|
|
38
91
|
eventSource: RuntimeEventSource;
|
|
39
|
-
|
|
92
|
+
serverSideActions: Action<any>[];
|
|
93
|
+
actionInputsWithoutAgents: ActionInput[];
|
|
40
94
|
}
|
|
41
95
|
type ActionsConfiguration<T extends Parameter[] | [] = []> = Action<T>[] | ((ctx: {
|
|
42
96
|
properties: any;
|
|
@@ -94,47 +148,20 @@ interface CopilotRuntimeConstructorParams<T extends Parameter[] | [] = []> {
|
|
|
94
148
|
*/
|
|
95
149
|
middleware?: Middleware;
|
|
96
150
|
actions?: ActionsConfiguration<T>;
|
|
151
|
+
remoteActions?: RemoteActionDefinition[];
|
|
97
152
|
langserve?: RemoteChainParameters[];
|
|
98
153
|
}
|
|
99
154
|
declare class CopilotRuntime<const T extends Parameter[] | [] = []> {
|
|
100
155
|
actions: ActionsConfiguration<T>;
|
|
156
|
+
private remoteActionDefinitions;
|
|
101
157
|
private langserve;
|
|
102
158
|
private onBeforeRequest?;
|
|
103
159
|
private onAfterRequest?;
|
|
104
160
|
constructor(params?: CopilotRuntimeConstructorParams<T>);
|
|
105
|
-
|
|
161
|
+
processRuntimeRequest(request: CopilotRuntimeRequest): Promise<CopilotRuntimeResponse>;
|
|
162
|
+
private processAgentRequest;
|
|
163
|
+
private getServerSideActions;
|
|
106
164
|
}
|
|
107
165
|
declare function flattenToolCallsNoDuplicates(toolsByPriority: ActionInput[]): ActionInput[];
|
|
108
166
|
|
|
109
|
-
type LogLevel = "debug" | "info" | "warn" | "error";
|
|
110
|
-
|
|
111
|
-
declare const logger: pino.Logger<never>;
|
|
112
|
-
type AnyPrimitive = string | boolean | number | null;
|
|
113
|
-
type CopilotRequestContextProperties = Record<string, AnyPrimitive | Record<string, AnyPrimitive>>;
|
|
114
|
-
type GraphQLContext = YogaInitialContext & {
|
|
115
|
-
_copilotkit: CreateCopilotRuntimeServerOptions;
|
|
116
|
-
properties: CopilotRequestContextProperties;
|
|
117
|
-
logger: typeof logger;
|
|
118
|
-
};
|
|
119
|
-
interface CreateCopilotRuntimeServerOptions {
|
|
120
|
-
runtime: CopilotRuntime<any>;
|
|
121
|
-
serviceAdapter: CopilotServiceAdapter;
|
|
122
|
-
endpoint: string;
|
|
123
|
-
baseUrl?: string;
|
|
124
|
-
cloud?: CopilotCloudOptions;
|
|
125
|
-
properties?: CopilotRequestContextProperties;
|
|
126
|
-
logLevel?: LogLevel;
|
|
127
|
-
}
|
|
128
|
-
declare function createContext(initialContext: YogaInitialContext, copilotKitContext: CreateCopilotRuntimeServerOptions, contextLogger: typeof logger, properties?: CopilotRequestContextProperties): Promise<Partial<GraphQLContext>>;
|
|
129
|
-
declare function buildSchema(options?: {
|
|
130
|
-
emitSchemaFile?: string;
|
|
131
|
-
}): graphql.GraphQLSchema;
|
|
132
|
-
type CommonConfig = {
|
|
133
|
-
logging: typeof logger;
|
|
134
|
-
schema: ReturnType<typeof buildSchema>;
|
|
135
|
-
plugins: Parameters<typeof createYoga>[0]["plugins"];
|
|
136
|
-
context: (ctx: YogaInitialContext) => Promise<Partial<GraphQLContext>>;
|
|
137
|
-
};
|
|
138
|
-
declare function getCommonConfig(options: CreateCopilotRuntimeServerOptions): CommonConfig;
|
|
139
|
-
|
|
140
167
|
export { CopilotRuntimeConstructorParams as C, GraphQLContext as G, CopilotRuntime as a, CopilotRequestContextProperties as b, CreateCopilotRuntimeServerOptions as c, createContext as d, buildSchema as e, flattenToolCallsNoDuplicates as f, CommonConfig as g, getCommonConfig as h };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { A as ActionExecutionMessage, a as Message, R as ResultMessage, T as TextMessage } from '../../../index-
|
|
1
|
+
export { A as ActionExecutionMessage, b as AgentStateMessage, a as Message, R as ResultMessage, T as TextMessage } from '../../../index-0476e4f7.js';
|
|
2
2
|
import '../base/index.js';
|
|
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var converted_exports = {};
|
|
22
22
|
__export(converted_exports, {
|
|
23
23
|
ActionExecutionMessage: () => ActionExecutionMessage,
|
|
24
|
+
AgentStateMessage: () => AgentStateMessage,
|
|
24
25
|
ResultMessage: () => ResultMessage,
|
|
25
26
|
TextMessage: () => TextMessage
|
|
26
27
|
});
|
|
@@ -79,9 +80,21 @@ var ResultMessage = class extends BaseMessage {
|
|
|
79
80
|
result;
|
|
80
81
|
};
|
|
81
82
|
__name(ResultMessage, "ResultMessage");
|
|
83
|
+
var AgentStateMessage = class extends BaseMessage {
|
|
84
|
+
threadId;
|
|
85
|
+
agentName;
|
|
86
|
+
nodeName;
|
|
87
|
+
runId;
|
|
88
|
+
active;
|
|
89
|
+
role;
|
|
90
|
+
state;
|
|
91
|
+
running;
|
|
92
|
+
};
|
|
93
|
+
__name(AgentStateMessage, "AgentStateMessage");
|
|
82
94
|
// Annotate the CommonJS export names for ESM import in node:
|
|
83
95
|
0 && (module.exports = {
|
|
84
96
|
ActionExecutionMessage,
|
|
97
|
+
AgentStateMessage,
|
|
85
98
|
ResultMessage,
|
|
86
99
|
TextMessage
|
|
87
100
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/graphql/types/converted/index.ts","../../../../src/graphql/types/base/index.ts"],"sourcesContent":["import {\n ActionExecutionMessageInput,\n ResultMessageInput,\n TextMessageInput,\n} from \"../../inputs/message.input\";\nimport { BaseMessage } from \"../base\";\nimport { ActionExecutionScope, MessageRole } from \"../enums\";\n\nexport class TextMessage extends BaseMessage implements TextMessageInput {\n content: string;\n role: MessageRole;\n}\n\nexport type Message = BaseMessage;\n\nexport class ActionExecutionMessage\n extends BaseMessage\n implements Omit<ActionExecutionMessageInput, \"arguments\">\n{\n name: string;\n arguments: Record<string, any>;\n scope: ActionExecutionScope;\n}\n\nexport class ResultMessage extends BaseMessage implements ResultMessageInput {\n actionExecutionId: string;\n actionName: string;\n result: string;\n}\n","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class BaseMessage {\n @Field(() => String)\n id: string;\n\n @Field(() => Date)\n createdAt: Date;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../src/graphql/types/converted/index.ts","../../../../src/graphql/types/base/index.ts"],"sourcesContent":["import {\n ActionExecutionMessageInput,\n ResultMessageInput,\n TextMessageInput,\n AgentStateMessageInput,\n} from \"../../inputs/message.input\";\nimport { BaseMessage } from \"../base\";\nimport { ActionExecutionScope, MessageRole } from \"../enums\";\n\nexport class TextMessage extends BaseMessage implements TextMessageInput {\n content: string;\n role: MessageRole;\n}\n\nexport type Message = BaseMessage;\n\nexport class ActionExecutionMessage\n extends BaseMessage\n implements Omit<ActionExecutionMessageInput, \"arguments\">\n{\n name: string;\n arguments: Record<string, any>;\n scope: ActionExecutionScope;\n}\n\nexport class ResultMessage extends BaseMessage implements ResultMessageInput {\n actionExecutionId: string;\n actionName: string;\n result: string;\n}\n\nexport class AgentStateMessage\n extends BaseMessage\n implements Omit<AgentStateMessageInput, \"state\">\n{\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: MessageRole;\n state: any;\n running: boolean;\n}\n","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class BaseMessage {\n @Field(() => String)\n id: string;\n\n @Field(() => Date)\n createdAt: Date;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA;;;;;;;;;;ACNA,0BAAiC;;;;;;;;;;;;;;;;;AAG1B,IAAMA,cAAN,MAAMA;EAEXC;EAGAC;AACF;AANaF;;MACVG,2BAAM,MAAMC,MAAAA;;GADFJ,YAAAA,WAAAA,MAAAA,MAAAA;;MAIVG,2BAAM,MAAME,IAAAA;qCACF,SAAA,cAAA,SAAA,IAAA;GALAL,YAAAA,WAAAA,aAAAA,MAAAA;AAAAA,cAAAA,aAAAA;MADZM,+BAAAA;GACYN,WAAAA;;;ADMN,IAAMO,cAAN,cAA0BC,YAAAA;EAC/BC;EACAC;AACF;AAHaH;AAON,IAAMI,yBAAN,cACGH,YAAAA;EAGRI;EACAC;EACAC;AACF;AAPaH;AASN,IAAMI,gBAAN,cAA4BP,YAAAA;EACjCQ;EACAC;EACAC;AACF;AAJaH;AAMN,IAAMI,oBAAN,cACGX,YAAAA;EAGRY;EACAC;EACAC;EACAC;EACAC;EACAd;EACAe;EACAC;AACF;AAZaP;","names":["BaseMessage","id","createdAt","Field","String","Date","InputType","TextMessage","BaseMessage","content","role","ActionExecutionMessage","name","arguments","scope","ResultMessage","actionExecutionId","actionName","result","AgentStateMessage","threadId","agentName","nodeName","runId","active","state","running"]}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ActionExecutionMessage,
|
|
3
|
+
AgentStateMessage,
|
|
3
4
|
ResultMessage,
|
|
4
5
|
TextMessage
|
|
5
|
-
} from "../../../chunk-
|
|
6
|
+
} from "../../../chunk-TBZGOJJX.mjs";
|
|
6
7
|
import "../../../chunk-RMZWGQ46.mjs";
|
|
7
8
|
import "../../../chunk-44O2JGUY.mjs";
|
|
8
9
|
export {
|
|
9
10
|
ActionExecutionMessage,
|
|
11
|
+
AgentStateMessage,
|
|
10
12
|
ResultMessage,
|
|
11
13
|
TextMessage
|
|
12
14
|
};
|
|
@@ -7,13 +7,15 @@ declare enum MessageRole {
|
|
|
7
7
|
}
|
|
8
8
|
declare enum ActionExecutionScope {
|
|
9
9
|
server = "server",
|
|
10
|
-
client = "client"
|
|
10
|
+
client = "client",
|
|
11
|
+
passThrough = "passThrough"
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
declare class MessageInput extends BaseMessage {
|
|
14
15
|
textMessage?: TextMessageInput;
|
|
15
16
|
actionExecutionMessage?: ActionExecutionMessageInput;
|
|
16
17
|
resultMessage?: ResultMessageInput;
|
|
18
|
+
agentStateMessage?: AgentStateMessageInput;
|
|
17
19
|
}
|
|
18
20
|
declare class TextMessageInput {
|
|
19
21
|
content: string;
|
|
@@ -29,6 +31,16 @@ declare class ResultMessageInput {
|
|
|
29
31
|
actionName: string;
|
|
30
32
|
result: string;
|
|
31
33
|
}
|
|
34
|
+
declare class AgentStateMessageInput {
|
|
35
|
+
threadId: string;
|
|
36
|
+
agentName: string;
|
|
37
|
+
role: MessageRole;
|
|
38
|
+
state: string;
|
|
39
|
+
running: boolean;
|
|
40
|
+
nodeName: string;
|
|
41
|
+
runId: string;
|
|
42
|
+
active: boolean;
|
|
43
|
+
}
|
|
32
44
|
|
|
33
45
|
declare class TextMessage extends BaseMessage implements TextMessageInput {
|
|
34
46
|
content: string;
|
|
@@ -45,5 +57,15 @@ declare class ResultMessage extends BaseMessage implements ResultMessageInput {
|
|
|
45
57
|
actionName: string;
|
|
46
58
|
result: string;
|
|
47
59
|
}
|
|
60
|
+
declare class AgentStateMessage extends BaseMessage implements Omit<AgentStateMessageInput, "state"> {
|
|
61
|
+
threadId: string;
|
|
62
|
+
agentName: string;
|
|
63
|
+
nodeName: string;
|
|
64
|
+
runId: string;
|
|
65
|
+
active: boolean;
|
|
66
|
+
role: MessageRole;
|
|
67
|
+
state: any;
|
|
68
|
+
running: boolean;
|
|
69
|
+
}
|
|
48
70
|
|
|
49
|
-
export { ActionExecutionMessage as A, MessageInput as M, ResultMessage as R, TextMessage as T, Message as a };
|
|
71
|
+
export { ActionExecutionMessage as A, MessageInput as M, ResultMessage as R, TextMessage as T, Message as a, AgentStateMessage as b };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as CopilotServiceAdapter, b as CopilotRuntimeChatCompletionRequest, c as CopilotRuntimeChatCompletionResponse } from './langserve-
|
|
1
|
+
import { C as CopilotServiceAdapter, b as CopilotRuntimeChatCompletionRequest, c as CopilotRuntimeChatCompletionResponse } from './langserve-d6073a3b.js';
|
|
2
2
|
import OpenAI from 'openai';
|
|
3
3
|
import { GenerativeModel } from '@google/generative-ai';
|
|
4
4
|
import { BaseMessageChunk, AIMessage, AIMessageChunk, BaseMessage } from '@langchain/core/messages';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
export { g as CommonConfig, b as CopilotRequestContextProperties, a as CopilotRuntime, C as CopilotRuntimeConstructorParams, c as CreateCopilotRuntimeServerOptions, G as GraphQLContext, e as buildSchema, d as createContext, f as flattenToolCallsNoDuplicates, h as getCommonConfig } from './
|
|
2
|
-
export { G as GoogleGenerativeAIAdapter, f as GroqAdapter, e as GroqAdapterParams, L as LangChainAdapter, a as OpenAIAdapter, O as OpenAIAdapterParams, c as OpenAIAssistantAdapter, b as OpenAIAssistantAdapterParams, d as UnifyAdapter, U as UnifyAdapterParams } from './index-
|
|
1
|
+
export { g as CommonConfig, b as CopilotRequestContextProperties, a as CopilotRuntime, C as CopilotRuntimeConstructorParams, c as CreateCopilotRuntimeServerOptions, G as GraphQLContext, e as buildSchema, d as createContext, f as flattenToolCallsNoDuplicates, h as getCommonConfig } from './copilot-runtime-d427e991.js';
|
|
2
|
+
export { G as GoogleGenerativeAIAdapter, f as GroqAdapter, e as GroqAdapterParams, L as LangChainAdapter, a as OpenAIAdapter, O as OpenAIAdapterParams, c as OpenAIAssistantAdapter, b as OpenAIAssistantAdapterParams, d as UnifyAdapter, U as UnifyAdapterParams } from './index-079752b9.js';
|
|
3
3
|
export { CopilotRuntimeServerInstance, config, copilotRuntimeNextJSAppRouterEndpoint, copilotRuntimeNextJSPagesRouterEndpoint } from './lib/integrations/index.js';
|
|
4
4
|
export { copilotRuntimeNodeHttpEndpoint } from './lib/integrations/node-http/index.js';
|
|
5
5
|
export { copilotRuntimeNodeExpressEndpoint } from './lib/integrations/node-express/index.js';
|
|
6
6
|
export { copilotRuntimeNestEndpoint } from './lib/integrations/nest/index.js';
|
|
7
7
|
export { GuardrailsValidationFailureResponse, MessageStreamInterruptedResponse, UnknownErrorResponse } from './utils/index.js';
|
|
8
|
-
import 'graphql';
|
|
9
|
-
import 'pino';
|
|
10
|
-
import 'graphql-yoga';
|
|
11
8
|
import '@copilotkit/shared';
|
|
12
|
-
import './langserve-
|
|
13
|
-
import './index-
|
|
9
|
+
import './langserve-d6073a3b.js';
|
|
10
|
+
import './index-0476e4f7.js';
|
|
14
11
|
import './graphql/types/base/index.js';
|
|
15
12
|
import 'rxjs';
|
|
13
|
+
import 'graphql';
|
|
14
|
+
import 'pino';
|
|
15
|
+
import 'graphql-yoga';
|
|
16
16
|
import './lib/cloud/index.js';
|
|
17
17
|
import 'openai';
|
|
18
18
|
import '@google/generative-ai';
|