@copilotkit/runtime 1.2.0 → 1.2.2-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 (75) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/__snapshots__/schema/schema.graphql +41 -0
  3. package/dist/{chunk-HCUZC4GO.mjs → chunk-2N45GS3P.mjs} +2 -2
  4. package/dist/{chunk-URMISMK2.mjs → chunk-73NMP3DI.mjs} +2 -2
  5. package/dist/{chunk-736EEICU.mjs → chunk-BJ2LVHWA.mjs} +3 -3
  6. package/dist/{chunk-ZHFBLKC3.mjs → chunk-T6O5FSTK.mjs} +2 -2
  7. package/dist/{chunk-GEIBJJQ4.mjs → chunk-TBZGOJJX.mjs} +14 -2
  8. package/dist/chunk-TBZGOJJX.mjs.map +1 -0
  9. package/dist/{chunk-3MYGPMKL.mjs → chunk-X5QBBMCJ.mjs} +2 -2
  10. package/dist/{chunk-3TQLJ3YL.mjs → chunk-XROLDARH.mjs} +786 -158
  11. package/dist/chunk-XROLDARH.mjs.map +1 -0
  12. package/dist/chunk-ZNZGATLW.mjs +260 -0
  13. package/dist/chunk-ZNZGATLW.mjs.map +1 -0
  14. package/dist/{shared-c5362338.d.ts → copilot-runtime-d427e991.d.ts} +65 -38
  15. package/dist/graphql/types/converted/index.d.ts +1 -1
  16. package/dist/graphql/types/converted/index.js +13 -0
  17. package/dist/graphql/types/converted/index.js.map +1 -1
  18. package/dist/graphql/types/converted/index.mjs +3 -1
  19. package/dist/{index-aa091e3c.d.ts → index-0476e4f7.d.ts} +24 -2
  20. package/dist/{index-13aa818e.d.ts → index-079752b9.d.ts} +1 -1
  21. package/dist/index.d.ts +7 -7
  22. package/dist/index.js +982 -245
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.mjs +8 -8
  25. package/dist/{langserve-a54438c6.d.ts → langserve-d6073a3b.d.ts} +24 -11
  26. package/dist/lib/index.d.ts +7 -7
  27. package/dist/lib/index.js +982 -245
  28. package/dist/lib/index.js.map +1 -1
  29. package/dist/lib/index.mjs +8 -8
  30. package/dist/lib/integrations/index.d.ts +6 -6
  31. package/dist/lib/integrations/index.js +437 -182
  32. package/dist/lib/integrations/index.js.map +1 -1
  33. package/dist/lib/integrations/index.mjs +6 -6
  34. package/dist/lib/integrations/nest/index.d.ts +5 -5
  35. package/dist/lib/integrations/nest/index.js +437 -182
  36. package/dist/lib/integrations/nest/index.js.map +1 -1
  37. package/dist/lib/integrations/nest/index.mjs +4 -4
  38. package/dist/lib/integrations/node-express/index.d.ts +5 -5
  39. package/dist/lib/integrations/node-express/index.js +437 -182
  40. package/dist/lib/integrations/node-express/index.js.map +1 -1
  41. package/dist/lib/integrations/node-express/index.mjs +4 -4
  42. package/dist/lib/integrations/node-http/index.d.ts +5 -5
  43. package/dist/lib/integrations/node-http/index.js +437 -182
  44. package/dist/lib/integrations/node-http/index.js.map +1 -1
  45. package/dist/lib/integrations/node-http/index.mjs +3 -3
  46. package/dist/service-adapters/index.d.ts +3 -3
  47. package/dist/service-adapters/index.js.map +1 -1
  48. package/dist/service-adapters/index.mjs +3 -3
  49. package/package.json +7 -5
  50. package/src/agents/langgraph/event-source.ts +222 -0
  51. package/src/agents/langgraph/events.ts +309 -0
  52. package/src/graphql/inputs/agent-session.input.ts +13 -0
  53. package/src/graphql/inputs/agent-state.input.ts +10 -0
  54. package/src/graphql/inputs/generate-copilot-response.input.ts +11 -0
  55. package/src/graphql/inputs/message.input.ts +30 -0
  56. package/src/graphql/resolvers/copilot.resolver.ts +56 -12
  57. package/src/graphql/types/converted/index.ts +15 -0
  58. package/src/graphql/types/copilot-response.type.ts +29 -0
  59. package/src/graphql/types/enums.ts +1 -0
  60. package/src/lib/index.ts +1 -1
  61. package/src/lib/integrations/shared.ts +1 -1
  62. package/src/lib/runtime/copilot-runtime.ts +360 -0
  63. package/src/lib/runtime/remote-actions.ts +241 -0
  64. package/src/service-adapters/conversion.ts +16 -0
  65. package/src/service-adapters/events.ts +101 -19
  66. package/dist/chunk-3TQLJ3YL.mjs.map +0 -1
  67. package/dist/chunk-GEIBJJQ4.mjs.map +0 -1
  68. package/dist/chunk-MHLJQ2RF.mjs +0 -158
  69. package/dist/chunk-MHLJQ2RF.mjs.map +0 -1
  70. package/src/lib/copilot-runtime.ts +0 -231
  71. /package/dist/{chunk-HCUZC4GO.mjs.map → chunk-2N45GS3P.mjs.map} +0 -0
  72. /package/dist/{chunk-URMISMK2.mjs.map → chunk-73NMP3DI.mjs.map} +0 -0
  73. /package/dist/{chunk-736EEICU.mjs.map → chunk-BJ2LVHWA.mjs.map} +0 -0
  74. /package/dist/{chunk-ZHFBLKC3.mjs.map → chunk-T6O5FSTK.mjs.map} +0 -0
  75. /package/dist/{chunk-3MYGPMKL.mjs.map → chunk-X5QBBMCJ.mjs.map} +0 -0
@@ -1,158 +0,0 @@
1
- import {
2
- RemoteChain
3
- } from "./chunk-736EEICU.mjs";
4
- import {
5
- RuntimeEventSource
6
- } from "./chunk-3TQLJ3YL.mjs";
7
- import {
8
- ActionExecutionMessage,
9
- ResultMessage,
10
- TextMessage
11
- } from "./chunk-GEIBJJQ4.mjs";
12
- import {
13
- __name
14
- } from "./chunk-44O2JGUY.mjs";
15
-
16
- // src/lib/copilot-runtime.ts
17
- import { actionParametersToJsonSchema } from "@copilotkit/shared";
18
-
19
- // src/service-adapters/conversion.ts
20
- import { plainToInstance } from "class-transformer";
21
- function convertGqlInputToMessages(inputMessages) {
22
- const messages = [];
23
- for (const message of inputMessages) {
24
- if (message.textMessage) {
25
- messages.push(plainToInstance(TextMessage, {
26
- id: message.id,
27
- createdAt: message.createdAt,
28
- role: message.textMessage.role,
29
- content: message.textMessage.content
30
- }));
31
- } else if (message.actionExecutionMessage) {
32
- messages.push(plainToInstance(ActionExecutionMessage, {
33
- id: message.id,
34
- createdAt: message.createdAt,
35
- name: message.actionExecutionMessage.name,
36
- arguments: JSON.parse(message.actionExecutionMessage.arguments),
37
- scope: message.actionExecutionMessage.scope
38
- }));
39
- } else if (message.resultMessage) {
40
- messages.push(plainToInstance(ResultMessage, {
41
- id: message.id,
42
- createdAt: message.createdAt,
43
- actionExecutionId: message.resultMessage.actionExecutionId,
44
- actionName: message.resultMessage.actionName,
45
- result: message.resultMessage.result
46
- }));
47
- }
48
- }
49
- return messages;
50
- }
51
- __name(convertGqlInputToMessages, "convertGqlInputToMessages");
52
-
53
- // src/lib/copilot-runtime.ts
54
- var CopilotRuntime = class {
55
- actions;
56
- langserve = [];
57
- onBeforeRequest;
58
- onAfterRequest;
59
- constructor(params) {
60
- var _a, _b;
61
- this.actions = (params == null ? void 0 : params.actions) || [];
62
- for (const chain of (params == null ? void 0 : params.langserve) || []) {
63
- const remoteChain = new RemoteChain(chain);
64
- this.langserve.push(remoteChain.toAction());
65
- }
66
- this.onBeforeRequest = (_a = params == null ? void 0 : params.middleware) == null ? void 0 : _a.onBeforeRequest;
67
- this.onAfterRequest = (_b = params == null ? void 0 : params.middleware) == null ? void 0 : _b.onAfterRequest;
68
- }
69
- async process(request) {
70
- var _a;
71
- const { serviceAdapter, messages, actions: clientSideActionsInput, threadId, runId, properties, outputMessagesPromise, forwardedParameters, url } = request;
72
- const langserveFunctions = [];
73
- for (const chainPromise of this.langserve) {
74
- try {
75
- const chain = await chainPromise;
76
- langserveFunctions.push(chain);
77
- } catch (error) {
78
- console.error("Error loading langserve chain:", error);
79
- }
80
- }
81
- const configuredActions = typeof this.actions === "function" ? this.actions({
82
- properties,
83
- url
84
- }) : this.actions;
85
- const actions = [
86
- ...configuredActions,
87
- ...langserveFunctions
88
- ];
89
- const serverSideActionsInput = actions.map((action) => ({
90
- name: action.name,
91
- description: action.description,
92
- jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters))
93
- }));
94
- const actionInputs = flattenToolCallsNoDuplicates([
95
- ...serverSideActionsInput,
96
- ...clientSideActionsInput
97
- ]);
98
- const inputMessages = convertGqlInputToMessages(messages);
99
- await ((_a = this.onBeforeRequest) == null ? void 0 : _a.call(this, {
100
- threadId,
101
- runId,
102
- inputMessages,
103
- properties,
104
- url
105
- }));
106
- try {
107
- const eventSource = new RuntimeEventSource();
108
- const result = await serviceAdapter.process({
109
- messages: inputMessages,
110
- actions: actionInputs,
111
- threadId,
112
- runId,
113
- eventSource,
114
- forwardedParameters
115
- });
116
- outputMessagesPromise.then((outputMessages) => {
117
- var _a2;
118
- (_a2 = this.onAfterRequest) == null ? void 0 : _a2.call(this, {
119
- threadId: result.threadId,
120
- runId: result.runId,
121
- inputMessages,
122
- outputMessages,
123
- properties,
124
- url
125
- });
126
- }).catch((_error) => {
127
- });
128
- return {
129
- threadId: result.threadId,
130
- runId: result.runId,
131
- eventSource,
132
- actions
133
- };
134
- } catch (error) {
135
- console.error("Error getting response:", error);
136
- throw error;
137
- }
138
- }
139
- };
140
- __name(CopilotRuntime, "CopilotRuntime");
141
- function flattenToolCallsNoDuplicates(toolsByPriority) {
142
- let allTools = [];
143
- const allToolNames = [];
144
- for (const tool of toolsByPriority) {
145
- if (!allToolNames.includes(tool.name)) {
146
- allTools.push(tool);
147
- allToolNames.push(tool.name);
148
- }
149
- }
150
- return allTools;
151
- }
152
- __name(flattenToolCallsNoDuplicates, "flattenToolCallsNoDuplicates");
153
-
154
- export {
155
- CopilotRuntime,
156
- flattenToolCallsNoDuplicates
157
- };
158
- //# sourceMappingURL=chunk-MHLJQ2RF.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/copilot-runtime.ts","../src/service-adapters/conversion.ts"],"sourcesContent":["/**\n * <Callout type=\"info\">\n * This is the reference for the `CopilotRuntime` class. For more information and example code snippets, please see [Concept: Copilot Runtime](/concepts/copilot-runtime).\n * </Callout>\n *\n * ## Usage\n *\n * ```tsx\n * import { CopilotRuntime } from \"@copilotkit/runtime\";\n *\n * const copilotKit = new CopilotRuntime();\n * ```\n */\n\nimport { Action, actionParametersToJsonSchema, Parameter } from \"@copilotkit/shared\";\nimport { 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 { Message } from \"../graphql/types/converted\";\nimport { ForwardedParametersInput } from \"../graphql/inputs/forwarded-parameters.input\";\n\ninterface CopilotRuntimeRequest {\n serviceAdapter: CopilotServiceAdapter;\n messages: MessageInput[];\n actions: ActionInput[];\n outputMessagesPromise: Promise<Message[]>;\n properties: any;\n threadId?: string;\n runId?: string;\n publicApiKey?: string;\n url?: string;\n forwardedParameters?: ForwardedParametersInput;\n}\n\ninterface CopilotRuntimeResponse {\n threadId: string;\n runId?: string;\n eventSource: RuntimeEventSource;\n actions: Action<any>[];\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 * 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 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.onBeforeRequest = params?.middleware?.onBeforeRequest;\n this.onAfterRequest = params?.middleware?.onAfterRequest;\n }\n\n async process(request: CopilotRuntimeRequest): Promise<CopilotRuntimeResponse> {\n const {\n serviceAdapter,\n messages,\n actions: clientSideActionsInput,\n threadId,\n runId,\n properties,\n outputMessagesPromise,\n forwardedParameters,\n url,\n } = request;\n const langserveFunctions: Action<any>[] = [];\n\n for (const chainPromise of this.langserve) {\n try {\n const chain = await chainPromise;\n langserveFunctions.push(chain);\n } catch (error) {\n console.error(\"Error loading langserve chain:\", error);\n }\n }\n\n const configuredActions =\n typeof this.actions === \"function\" ? this.actions({ properties, url }) : this.actions;\n\n const actions = [...configuredActions, ...langserveFunctions];\n\n const serverSideActionsInput: ActionInput[] = actions.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 const inputMessages = convertGqlInputToMessages(messages);\n\n await this.onBeforeRequest?.({\n threadId,\n runId,\n inputMessages,\n 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,\n url,\n });\n })\n .catch((_error) => {});\n\n return {\n threadId: result.threadId,\n runId: result.runId,\n eventSource,\n actions: actions,\n };\n } catch (error) {\n console.error(\"Error getting response:\", error);\n throw error;\n }\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} 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 }\n }\n\n return messages;\n}\n"],"mappings":"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","names":["actionParametersToJsonSchema","plainToInstance","convertGqlInputToMessages","inputMessages","messages","message","textMessage","push","plainToInstance","TextMessage","id","createdAt","role","content","actionExecutionMessage","ActionExecutionMessage","name","arguments","JSON","parse","scope","resultMessage","ResultMessage","actionExecutionId","actionName","result","CopilotRuntime","actions","langserve","onBeforeRequest","onAfterRequest","constructor","params","chain","remoteChain","RemoteChain","push","toAction","middleware","process","request","serviceAdapter","messages","clientSideActionsInput","threadId","runId","properties","outputMessagesPromise","forwardedParameters","url","langserveFunctions","chainPromise","error","console","configuredActions","serverSideActionsInput","map","action","name","description","jsonSchema","JSON","stringify","actionParametersToJsonSchema","parameters","actionInputs","flattenToolCallsNoDuplicates","inputMessages","convertGqlInputToMessages","eventSource","RuntimeEventSource","result","then","outputMessages","_a","catch","_error","toolsByPriority","allTools","allToolNames","tool","includes"]}
@@ -1,231 +0,0 @@
1
- /**
2
- * <Callout type="info">
3
- * This is the reference for the `CopilotRuntime` class. For more information and example code snippets, please see [Concept: Copilot Runtime](/concepts/copilot-runtime).
4
- * </Callout>
5
- *
6
- * ## Usage
7
- *
8
- * ```tsx
9
- * import { CopilotRuntime } from "@copilotkit/runtime";
10
- *
11
- * const copilotKit = new CopilotRuntime();
12
- * ```
13
- */
14
-
15
- import { Action, actionParametersToJsonSchema, Parameter } from "@copilotkit/shared";
16
- import { RemoteChain, RemoteChainParameters, CopilotServiceAdapter } from "../service-adapters";
17
- import { MessageInput } from "../graphql/inputs/message.input";
18
- import { ActionInput } from "../graphql/inputs/action.input";
19
- import { RuntimeEventSource } from "../service-adapters/events";
20
- import { convertGqlInputToMessages } from "../service-adapters/conversion";
21
- import { Message } from "../graphql/types/converted";
22
- import { ForwardedParametersInput } from "../graphql/inputs/forwarded-parameters.input";
23
-
24
- interface CopilotRuntimeRequest {
25
- serviceAdapter: CopilotServiceAdapter;
26
- messages: MessageInput[];
27
- actions: ActionInput[];
28
- outputMessagesPromise: Promise<Message[]>;
29
- properties: any;
30
- threadId?: string;
31
- runId?: string;
32
- publicApiKey?: string;
33
- url?: string;
34
- forwardedParameters?: ForwardedParametersInput;
35
- }
36
-
37
- interface CopilotRuntimeResponse {
38
- threadId: string;
39
- runId?: string;
40
- eventSource: RuntimeEventSource;
41
- actions: Action<any>[];
42
- }
43
-
44
- type ActionsConfiguration<T extends Parameter[] | [] = []> =
45
- | Action<T>[]
46
- | ((ctx: { properties: any; url?: string }) => Action<T>[]);
47
-
48
- interface OnBeforeRequestOptions {
49
- threadId?: string;
50
- runId?: string;
51
- inputMessages: Message[];
52
- properties: any;
53
- url?: string;
54
- }
55
-
56
- type OnBeforeRequestHandler = (options: OnBeforeRequestOptions) => void | Promise<void>;
57
-
58
- interface OnAfterRequestOptions {
59
- threadId: string;
60
- runId?: string;
61
- inputMessages: Message[];
62
- outputMessages: Message[];
63
- properties: any;
64
- url?: string;
65
- }
66
-
67
- type OnAfterRequestHandler = (options: OnAfterRequestOptions) => void | Promise<void>;
68
-
69
- interface Middleware {
70
- /**
71
- * A function that is called before the request is processed.
72
- */
73
- onBeforeRequest?: OnBeforeRequestHandler;
74
-
75
- /**
76
- * A function that is called after the request is processed.
77
- */
78
- onAfterRequest?: OnAfterRequestHandler;
79
- }
80
-
81
- export interface CopilotRuntimeConstructorParams<T extends Parameter[] | [] = []> {
82
- /**
83
- * Middleware to be used by the runtime.
84
- *
85
- * ```ts
86
- * onBeforeRequest: (options: {
87
- * threadId?: string;
88
- * runId?: string;
89
- * inputMessages: Message[];
90
- * properties: any;
91
- * }) => void | Promise<void>;
92
- * ```
93
- *
94
- * ```ts
95
- * onAfterRequest: (options: {
96
- * threadId?: string;
97
- * runId?: string;
98
- * inputMessages: Message[];
99
- * outputMessages: Message[];
100
- * properties: any;
101
- * }) => void | Promise<void>;
102
- * ```
103
- */
104
- middleware?: Middleware;
105
-
106
- /*
107
- * A list of server side actions that can be executed.
108
- */
109
- actions?: ActionsConfiguration<T>;
110
-
111
- /*
112
- * An array of LangServer URLs.
113
- */
114
- langserve?: RemoteChainParameters[];
115
- }
116
-
117
- export class CopilotRuntime<const T extends Parameter[] | [] = []> {
118
- public actions: ActionsConfiguration<T>;
119
- private langserve: Promise<Action<any>>[] = [];
120
- private onBeforeRequest?: OnBeforeRequestHandler;
121
- private onAfterRequest?: OnAfterRequestHandler;
122
-
123
- constructor(params?: CopilotRuntimeConstructorParams<T>) {
124
- this.actions = params?.actions || [];
125
-
126
- for (const chain of params?.langserve || []) {
127
- const remoteChain = new RemoteChain(chain);
128
- this.langserve.push(remoteChain.toAction());
129
- }
130
-
131
- this.onBeforeRequest = params?.middleware?.onBeforeRequest;
132
- this.onAfterRequest = params?.middleware?.onAfterRequest;
133
- }
134
-
135
- async process(request: CopilotRuntimeRequest): Promise<CopilotRuntimeResponse> {
136
- const {
137
- serviceAdapter,
138
- messages,
139
- actions: clientSideActionsInput,
140
- threadId,
141
- runId,
142
- properties,
143
- outputMessagesPromise,
144
- forwardedParameters,
145
- url,
146
- } = request;
147
- const langserveFunctions: Action<any>[] = [];
148
-
149
- for (const chainPromise of this.langserve) {
150
- try {
151
- const chain = await chainPromise;
152
- langserveFunctions.push(chain);
153
- } catch (error) {
154
- console.error("Error loading langserve chain:", error);
155
- }
156
- }
157
-
158
- const configuredActions =
159
- typeof this.actions === "function" ? this.actions({ properties, url }) : this.actions;
160
-
161
- const actions = [...configuredActions, ...langserveFunctions];
162
-
163
- const serverSideActionsInput: ActionInput[] = actions.map((action) => ({
164
- name: action.name,
165
- description: action.description,
166
- jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters)),
167
- }));
168
-
169
- const actionInputs = flattenToolCallsNoDuplicates([
170
- ...serverSideActionsInput,
171
- ...clientSideActionsInput,
172
- ]);
173
- const inputMessages = convertGqlInputToMessages(messages);
174
-
175
- await this.onBeforeRequest?.({
176
- threadId,
177
- runId,
178
- inputMessages,
179
- properties,
180
- url,
181
- });
182
-
183
- try {
184
- const eventSource = new RuntimeEventSource();
185
-
186
- const result = await serviceAdapter.process({
187
- messages: inputMessages,
188
- actions: actionInputs,
189
- threadId,
190
- runId,
191
- eventSource,
192
- forwardedParameters,
193
- });
194
-
195
- outputMessagesPromise
196
- .then((outputMessages) => {
197
- this.onAfterRequest?.({
198
- threadId: result.threadId,
199
- runId: result.runId,
200
- inputMessages,
201
- outputMessages,
202
- properties,
203
- url,
204
- });
205
- })
206
- .catch((_error) => {});
207
-
208
- return {
209
- threadId: result.threadId,
210
- runId: result.runId,
211
- eventSource,
212
- actions: actions,
213
- };
214
- } catch (error) {
215
- console.error("Error getting response:", error);
216
- throw error;
217
- }
218
- }
219
- }
220
-
221
- export function flattenToolCallsNoDuplicates(toolsByPriority: ActionInput[]): ActionInput[] {
222
- let allTools: ActionInput[] = [];
223
- const allToolNames: string[] = [];
224
- for (const tool of toolsByPriority) {
225
- if (!allToolNames.includes(tool.name)) {
226
- allTools.push(tool);
227
- allToolNames.push(tool.name);
228
- }
229
- }
230
- return allTools;
231
- }