@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.
- package/CHANGELOG.md +17 -13
- package/__snapshots__/schema/schema.graphql +0 -41
- package/dist/{chunk-BJ2LVHWA.mjs → chunk-736EEICU.mjs} +3 -3
- package/dist/{chunk-W7RRKPE2.mjs → chunk-DMO6FA25.mjs} +2 -2
- package/dist/{chunk-JYLUCJP7.mjs → chunk-DYF5MUAH.mjs} +2 -2
- package/dist/{chunk-TBZGOJJX.mjs → chunk-GEIBJJQ4.mjs} +2 -14
- package/dist/chunk-GEIBJJQ4.mjs.map +1 -0
- package/dist/chunk-PB24CCIJ.mjs +158 -0
- package/dist/chunk-PB24CCIJ.mjs.map +1 -0
- package/dist/{chunk-7FSNQXPE.mjs → chunk-Q5ZTE7WH.mjs} +158 -786
- package/dist/chunk-Q5ZTE7WH.mjs.map +1 -0
- package/dist/{chunk-73NMP3DI.mjs → chunk-URMISMK2.mjs} +2 -2
- package/dist/{chunk-WRPRFRSL.mjs → chunk-YMUS43FR.mjs} +2 -2
- package/dist/graphql/types/converted/index.d.ts +1 -1
- package/dist/graphql/types/converted/index.js +0 -13
- package/dist/graphql/types/converted/index.js.map +1 -1
- package/dist/graphql/types/converted/index.mjs +1 -3
- package/dist/{index-079752b9.d.ts → index-13aa818e.d.ts} +1 -1
- package/dist/{index-0476e4f7.d.ts → index-aa091e3c.d.ts} +2 -24
- package/dist/index.d.ts +7 -7
- package/dist/index.js +245 -982
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -8
- package/dist/{langserve-d6073a3b.d.ts → langserve-a54438c6.d.ts} +11 -24
- package/dist/lib/index.d.ts +7 -7
- package/dist/lib/index.js +245 -982
- 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 +182 -437
- 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 +182 -437
- 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 +182 -437
- 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 +182 -437
- 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/dist/{copilot-runtime-d427e991.d.ts → shared-c5362338.d.ts} +38 -65
- package/package.json +5 -7
- package/src/graphql/inputs/generate-copilot-response.input.ts +0 -11
- package/src/graphql/inputs/message.input.ts +0 -30
- package/src/graphql/resolvers/copilot.resolver.ts +12 -56
- package/src/graphql/types/converted/index.ts +0 -15
- package/src/graphql/types/copilot-response.type.ts +0 -29
- package/src/graphql/types/enums.ts +0 -1
- package/src/lib/copilot-runtime.ts +231 -0
- package/src/lib/index.ts +1 -1
- package/src/lib/integrations/shared.ts +1 -1
- package/src/service-adapters/conversion.ts +0 -16
- package/src/service-adapters/events.ts +19 -101
- package/dist/chunk-5TYP4A3G.mjs +0 -260
- package/dist/chunk-5TYP4A3G.mjs.map +0 -1
- package/dist/chunk-7FSNQXPE.mjs.map +0 -1
- package/dist/chunk-TBZGOJJX.mjs.map +0 -1
- package/src/agents/langgraph/event-source.ts +0 -222
- package/src/agents/langgraph/events.ts +0 -309
- package/src/graphql/inputs/agent-session.input.ts +0 -13
- package/src/graphql/inputs/agent-state.input.ts +0 -10
- package/src/lib/runtime/copilot-runtime.ts +0 -360
- package/src/lib/runtime/remote-actions.ts +0 -241
- /package/dist/{chunk-BJ2LVHWA.mjs.map → chunk-736EEICU.mjs.map} +0 -0
- /package/dist/{chunk-W7RRKPE2.mjs.map → chunk-DMO6FA25.mjs.map} +0 -0
- /package/dist/{chunk-JYLUCJP7.mjs.map → chunk-DYF5MUAH.mjs.map} +0 -0
- /package/dist/{chunk-73NMP3DI.mjs.map → chunk-URMISMK2.mjs.map} +0 -0
- /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
|
+
## 1.2.1
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
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
|
-
|
|
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.
|
|
18
|
+
- @copilotkit/shared@1.2.1
|
|
19
|
+
|
|
20
|
+
## 1.2.0
|
|
18
21
|
|
|
19
|
-
|
|
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.
|
|
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-
|
|
5
|
+
} from "./chunk-URMISMK2.mjs";
|
|
6
6
|
import {
|
|
7
7
|
ActionExecutionMessage,
|
|
8
8
|
ResultMessage,
|
|
9
9
|
TextMessage
|
|
10
|
-
} from "./chunk-
|
|
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-
|
|
902
|
+
//# sourceMappingURL=chunk-736EEICU.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
copilotRuntimeNodeHttpEndpoint,
|
|
3
3
|
telemetry_client_default
|
|
4
|
-
} from "./chunk-
|
|
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-
|
|
24
|
+
//# sourceMappingURL=chunk-DMO6FA25.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getCommonConfig,
|
|
3
3
|
telemetry_client_default
|
|
4
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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"]}
|