@copilotkit/runtime 1.1.3-feat-runtime-remote-actions.2 → 1.2.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.
Files changed (75) hide show
  1. package/CHANGELOG.md +17 -13
  2. package/__snapshots__/schema/schema.graphql +0 -41
  3. package/dist/{chunk-BJ2LVHWA.mjs → chunk-736EEICU.mjs} +3 -3
  4. package/dist/{chunk-W7RRKPE2.mjs → chunk-DMO6FA25.mjs} +2 -2
  5. package/dist/{chunk-JYLUCJP7.mjs → chunk-DYF5MUAH.mjs} +2 -2
  6. package/dist/{chunk-TBZGOJJX.mjs → chunk-GEIBJJQ4.mjs} +2 -14
  7. package/dist/chunk-GEIBJJQ4.mjs.map +1 -0
  8. package/dist/chunk-PB24CCIJ.mjs +158 -0
  9. package/dist/chunk-PB24CCIJ.mjs.map +1 -0
  10. package/dist/{chunk-7FSNQXPE.mjs → chunk-Q5ZTE7WH.mjs} +158 -786
  11. package/dist/chunk-Q5ZTE7WH.mjs.map +1 -0
  12. package/dist/{chunk-73NMP3DI.mjs → chunk-URMISMK2.mjs} +2 -2
  13. package/dist/{chunk-WRPRFRSL.mjs → chunk-YMUS43FR.mjs} +2 -2
  14. package/dist/graphql/types/converted/index.d.ts +1 -1
  15. package/dist/graphql/types/converted/index.js +0 -13
  16. package/dist/graphql/types/converted/index.js.map +1 -1
  17. package/dist/graphql/types/converted/index.mjs +1 -3
  18. package/dist/{index-079752b9.d.ts → index-13aa818e.d.ts} +1 -1
  19. package/dist/{index-0476e4f7.d.ts → index-aa091e3c.d.ts} +2 -24
  20. package/dist/index.d.ts +7 -7
  21. package/dist/index.js +245 -982
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +8 -8
  24. package/dist/{langserve-d6073a3b.d.ts → langserve-a54438c6.d.ts} +11 -24
  25. package/dist/lib/index.d.ts +7 -7
  26. package/dist/lib/index.js +245 -982
  27. package/dist/lib/index.js.map +1 -1
  28. package/dist/lib/index.mjs +8 -8
  29. package/dist/lib/integrations/index.d.ts +6 -6
  30. package/dist/lib/integrations/index.js +182 -437
  31. package/dist/lib/integrations/index.js.map +1 -1
  32. package/dist/lib/integrations/index.mjs +6 -6
  33. package/dist/lib/integrations/nest/index.d.ts +5 -5
  34. package/dist/lib/integrations/nest/index.js +182 -437
  35. package/dist/lib/integrations/nest/index.js.map +1 -1
  36. package/dist/lib/integrations/nest/index.mjs +4 -4
  37. package/dist/lib/integrations/node-express/index.d.ts +5 -5
  38. package/dist/lib/integrations/node-express/index.js +182 -437
  39. package/dist/lib/integrations/node-express/index.js.map +1 -1
  40. package/dist/lib/integrations/node-express/index.mjs +4 -4
  41. package/dist/lib/integrations/node-http/index.d.ts +5 -5
  42. package/dist/lib/integrations/node-http/index.js +182 -437
  43. package/dist/lib/integrations/node-http/index.js.map +1 -1
  44. package/dist/lib/integrations/node-http/index.mjs +3 -3
  45. package/dist/service-adapters/index.d.ts +3 -3
  46. package/dist/service-adapters/index.js.map +1 -1
  47. package/dist/service-adapters/index.mjs +3 -3
  48. package/dist/{copilot-runtime-d427e991.d.ts → shared-c5362338.d.ts} +38 -65
  49. package/package.json +5 -7
  50. package/src/graphql/inputs/generate-copilot-response.input.ts +0 -11
  51. package/src/graphql/inputs/message.input.ts +0 -30
  52. package/src/graphql/resolvers/copilot.resolver.ts +12 -56
  53. package/src/graphql/types/converted/index.ts +0 -15
  54. package/src/graphql/types/copilot-response.type.ts +0 -29
  55. package/src/graphql/types/enums.ts +0 -1
  56. package/src/lib/copilot-runtime.ts +231 -0
  57. package/src/lib/index.ts +1 -1
  58. package/src/lib/integrations/shared.ts +1 -1
  59. package/src/service-adapters/conversion.ts +0 -16
  60. package/src/service-adapters/events.ts +19 -101
  61. package/dist/chunk-5TYP4A3G.mjs +0 -260
  62. package/dist/chunk-5TYP4A3G.mjs.map +0 -1
  63. package/dist/chunk-7FSNQXPE.mjs.map +0 -1
  64. package/dist/chunk-TBZGOJJX.mjs.map +0 -1
  65. package/src/agents/langgraph/event-source.ts +0 -222
  66. package/src/agents/langgraph/events.ts +0 -309
  67. package/src/graphql/inputs/agent-session.input.ts +0 -13
  68. package/src/graphql/inputs/agent-state.input.ts +0 -10
  69. package/src/lib/runtime/copilot-runtime.ts +0 -360
  70. package/src/lib/runtime/remote-actions.ts +0 -241
  71. /package/dist/{chunk-BJ2LVHWA.mjs.map → chunk-736EEICU.mjs.map} +0 -0
  72. /package/dist/{chunk-W7RRKPE2.mjs.map → chunk-DMO6FA25.mjs.map} +0 -0
  73. /package/dist/{chunk-JYLUCJP7.mjs.map → chunk-DYF5MUAH.mjs.map} +0 -0
  74. /package/dist/{chunk-73NMP3DI.mjs.map → chunk-URMISMK2.mjs.map} +0 -0
  75. /package/dist/{chunk-WRPRFRSL.mjs.map → chunk-YMUS43FR.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,34 +1,38 @@
1
1
  # @copilotkit/runtime
2
2
 
3
- ## 1.1.3-feat-runtime-remote-actions.2
3
+ ## 1.2.1
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - Better message grouping
8
- - Updated dependencies
9
- - @copilotkit/shared@1.1.3-feat-runtime-remote-actions.2
10
-
11
- ## 1.1.3-feat-runtime-remote-actions.1
7
+ - inject minified css in bundle
12
8
 
13
- ### Patch Changes
9
+ - removes the need to import `styles.css` manually
10
+ - empty `styles.css` included in the build for backwards compatibility
11
+ - uses tsup's `injectStyles` with `postcss` to bundle and minify the CSS, then inject it as a style tag
12
+ - currently uses my fork of `tsup` where I added support for async function in `injectStyles` (must-have for postcss), a PR from my fork to the main library will follow shortly
13
+ - remove material-ui, and use `react-icons` for icons (same icons as before)
14
+ - remove unused `IncludedFilesPreview` component
15
+ - updated docs
14
16
 
15
- - Reduce request size by skipping intermediate state
16
17
  - Updated dependencies
17
- - @copilotkit/shared@1.1.3-feat-runtime-remote-actions.1
18
+ - @copilotkit/shared@1.2.1
19
+
20
+ ## 1.2.0
18
21
 
19
- ## 1.1.3-feat-runtime-remote-actions.0
22
+ ### Minor Changes
23
+
24
+ - Fix errors related to crypto not being found, and other bug fixes
20
25
 
21
26
  ### Patch Changes
22
27
 
23
28
  - 638d51d: appendMessage fix 1
24
- - Rename hooks and bugfixes
25
29
  - faccbe1: state-abuse resistance for useCopilotChat
26
30
  - b0cf700: remove unnecessary logging
27
- - Updated dependencies [638d51d]
28
31
  - Updated dependencies
32
+ - Updated dependencies [638d51d]
29
33
  - Updated dependencies [faccbe1]
30
34
  - Updated dependencies [b0cf700]
31
- - @copilotkit/shared@1.1.3-feat-runtime-remote-actions.0
35
+ - @copilotkit/shared@1.2.0
32
36
 
33
37
  ## 1.1.2
34
38
 
@@ -21,7 +21,6 @@ type ActionExecutionMessageOutput implements BaseMessageOutput {
21
21
  """The scope of the action"""
22
22
  enum ActionExecutionScope {
23
23
  client
24
- passThrough
25
24
  server
26
25
  }
27
26
 
@@ -31,42 +30,6 @@ input ActionInput {
31
30
  name: String!
32
31
  }
33
32
 
34
- input AgentSessionInput {
35
- agentName: String!
36
- nodeName: String
37
- threadId: String
38
- }
39
-
40
- input AgentStateInput {
41
- agentName: String!
42
- state: String!
43
- }
44
-
45
- input AgentStateMessageInput {
46
- active: Boolean!
47
- agentName: String!
48
- nodeName: String!
49
- role: MessageRole!
50
- runId: String!
51
- running: Boolean!
52
- state: String!
53
- threadId: String!
54
- }
55
-
56
- type AgentStateMessageOutput implements BaseMessageOutput {
57
- active: Boolean!
58
- agentName: String!
59
- createdAt: DateTimeISO!
60
- id: String!
61
- nodeName: String!
62
- role: MessageRole!
63
- runId: String!
64
- running: Boolean!
65
- state: String!
66
- status: MessageStatus!
67
- threadId: String!
68
- }
69
-
70
33
  interface BaseMessageOutput {
71
34
  createdAt: DateTimeISO!
72
35
  id: String!
@@ -134,9 +97,6 @@ input FrontendInput {
134
97
  }
135
98
 
136
99
  input GenerateCopilotResponseInput {
137
- agentSession: AgentSessionInput
138
- agentState: AgentStateInput
139
- agentStates: [AgentStateInput!]
140
100
  cloud: CloudInput
141
101
  forwardedParameters: ForwardedParametersInput
142
102
  frontend: FrontendInput!
@@ -171,7 +131,6 @@ scalar JSONObject @specifiedBy(url: "http://www.ecma-international.org/publicati
171
131
 
172
132
  input MessageInput {
173
133
  actionExecutionMessage: ActionExecutionMessageInput
174
- agentStateMessage: AgentStateMessageInput
175
134
  createdAt: DateTimeISO!
176
135
  id: String!
177
136
  resultMessage: ResultMessageInput
@@ -2,12 +2,12 @@ import {
2
2
  convertActionInputToLangChainTool,
3
3
  convertMessageToLangChainMessage,
4
4
  streamLangChainResponse
5
- } from "./chunk-73NMP3DI.mjs";
5
+ } from "./chunk-URMISMK2.mjs";
6
6
  import {
7
7
  ActionExecutionMessage,
8
8
  ResultMessage,
9
9
  TextMessage
10
- } from "./chunk-TBZGOJJX.mjs";
10
+ } from "./chunk-GEIBJJQ4.mjs";
11
11
  import {
12
12
  __name
13
13
  } from "./chunk-44O2JGUY.mjs";
@@ -899,4 +899,4 @@ export {
899
899
  UnifyAdapter,
900
900
  GroqAdapter
901
901
  };
902
- //# sourceMappingURL=chunk-BJ2LVHWA.mjs.map
902
+ //# sourceMappingURL=chunk-736EEICU.mjs.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  copilotRuntimeNodeHttpEndpoint,
3
3
  telemetry_client_default
4
- } from "./chunk-7FSNQXPE.mjs";
4
+ } from "./chunk-Q5ZTE7WH.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-W7RRKPE2.mjs.map
24
+ //# sourceMappingURL=chunk-DMO6FA25.mjs.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getCommonConfig,
3
3
  telemetry_client_default
4
- } from "./chunk-7FSNQXPE.mjs";
4
+ } from "./chunk-Q5ZTE7WH.mjs";
5
5
  import {
6
6
  __name
7
7
  } from "./chunk-44O2JGUY.mjs";
@@ -76,4 +76,4 @@ export {
76
76
  config,
77
77
  copilotRuntimeNextJSPagesRouterEndpoint
78
78
  };
79
- //# sourceMappingURL=chunk-JYLUCJP7.mjs.map
79
+ //# sourceMappingURL=chunk-DYF5MUAH.mjs.map
@@ -23,22 +23,10 @@ var ResultMessage = class extends BaseMessage {
23
23
  result;
24
24
  };
25
25
  __name(ResultMessage, "ResultMessage");
26
- var AgentStateMessage = class extends BaseMessage {
27
- threadId;
28
- agentName;
29
- nodeName;
30
- runId;
31
- active;
32
- role;
33
- state;
34
- running;
35
- };
36
- __name(AgentStateMessage, "AgentStateMessage");
37
26
 
38
27
  export {
39
28
  TextMessage,
40
29
  ActionExecutionMessage,
41
- ResultMessage,
42
- AgentStateMessage
30
+ ResultMessage
43
31
  };
44
- //# sourceMappingURL=chunk-TBZGOJJX.mjs.map
32
+ //# sourceMappingURL=chunk-GEIBJJQ4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/graphql/types/converted/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"],"mappings":";;;;;;;;AAQO,IAAMA,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;","names":["TextMessage","BaseMessage","content","role","ActionExecutionMessage","name","arguments","scope","ResultMessage","actionExecutionId","actionName","result"]}
@@ -0,0 +1,158 @@
1
+ import {
2
+ RemoteChain
3
+ } from "./chunk-736EEICU.mjs";
4
+ import {
5
+ RuntimeEventSource
6
+ } from "./chunk-Q5ZTE7WH.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-PB24CCIJ.mjs.map
@@ -0,0 +1 @@
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"]}