@copilotkit/runtime 0.0.0-feat-dynamic-copilotcloud-qa-20250117190454
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/.eslintrc.js +7 -0
- package/CHANGELOG.md +913 -0
- package/README.md +46 -0
- package/__snapshots__/schema/schema.graphql +273 -0
- package/dist/chunk-44O2JGUY.mjs +12 -0
- package/dist/chunk-44O2JGUY.mjs.map +1 -0
- package/dist/chunk-BETLEV37.mjs +25 -0
- package/dist/chunk-BETLEV37.mjs.map +1 -0
- package/dist/chunk-CLGKEUOA.mjs +1408 -0
- package/dist/chunk-CLGKEUOA.mjs.map +1 -0
- package/dist/chunk-D2WLFQS6.mjs +43 -0
- package/dist/chunk-D2WLFQS6.mjs.map +1 -0
- package/dist/chunk-DFOKBSIS.mjs +1 -0
- package/dist/chunk-DFOKBSIS.mjs.map +1 -0
- package/dist/chunk-FA5DJ2TZ.mjs +3437 -0
- package/dist/chunk-FA5DJ2TZ.mjs.map +1 -0
- package/dist/chunk-HNUNXFTW.mjs +129 -0
- package/dist/chunk-HNUNXFTW.mjs.map +1 -0
- package/dist/chunk-SFLMY3ES.mjs +80 -0
- package/dist/chunk-SFLMY3ES.mjs.map +1 -0
- package/dist/chunk-U3V2BCGI.mjs +152 -0
- package/dist/chunk-U3V2BCGI.mjs.map +1 -0
- package/dist/chunk-ZCU6UPCY.mjs +25 -0
- package/dist/chunk-ZCU6UPCY.mjs.map +1 -0
- package/dist/copilot-runtime-1a224a0f.d.ts +196 -0
- package/dist/graphql/types/base/index.d.ts +6 -0
- package/dist/graphql/types/base/index.js +63 -0
- package/dist/graphql/types/base/index.js.map +1 -0
- package/dist/graphql/types/base/index.mjs +8 -0
- package/dist/graphql/types/base/index.mjs.map +1 -0
- package/dist/graphql/types/converted/index.d.ts +2 -0
- package/dist/graphql/types/converted/index.js +187 -0
- package/dist/graphql/types/converted/index.js.map +1 -0
- package/dist/graphql/types/converted/index.mjs +17 -0
- package/dist/graphql/types/converted/index.mjs.map +1 -0
- package/dist/groq-adapter-c35c5374.d.ts +281 -0
- package/dist/index-24315d90.d.ts +103 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +5258 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +76 -0
- package/dist/index.mjs.map +1 -0
- package/dist/langserve-a16ef8f4.d.ts +180 -0
- package/dist/lib/cloud/index.d.ts +6 -0
- package/dist/lib/cloud/index.js +18 -0
- package/dist/lib/cloud/index.js.map +1 -0
- package/dist/lib/cloud/index.mjs +1 -0
- package/dist/lib/cloud/index.mjs.map +1 -0
- package/dist/lib/index.d.ts +20 -0
- package/dist/lib/index.js +4906 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/index.mjs +58 -0
- package/dist/lib/index.mjs.map +1 -0
- package/dist/lib/integrations/index.d.ts +33 -0
- package/dist/lib/integrations/index.js +2229 -0
- package/dist/lib/integrations/index.js.map +1 -0
- package/dist/lib/integrations/index.mjs +34 -0
- package/dist/lib/integrations/index.mjs.map +1 -0
- package/dist/lib/integrations/nest/index.d.ts +14 -0
- package/dist/lib/integrations/nest/index.js +2138 -0
- package/dist/lib/integrations/nest/index.js.map +1 -0
- package/dist/lib/integrations/nest/index.mjs +13 -0
- package/dist/lib/integrations/nest/index.mjs.map +1 -0
- package/dist/lib/integrations/node-express/index.d.ts +14 -0
- package/dist/lib/integrations/node-express/index.js +2138 -0
- package/dist/lib/integrations/node-express/index.js.map +1 -0
- package/dist/lib/integrations/node-express/index.mjs +13 -0
- package/dist/lib/integrations/node-express/index.mjs.map +1 -0
- package/dist/lib/integrations/node-http/index.d.ts +14 -0
- package/dist/lib/integrations/node-http/index.js +2124 -0
- package/dist/lib/integrations/node-http/index.js.map +1 -0
- package/dist/lib/integrations/node-http/index.mjs +12 -0
- package/dist/lib/integrations/node-http/index.mjs.map +1 -0
- package/dist/service-adapters/index.d.ts +84 -0
- package/dist/service-adapters/index.js +1448 -0
- package/dist/service-adapters/index.js.map +1 -0
- package/dist/service-adapters/index.mjs +26 -0
- package/dist/service-adapters/index.mjs.map +1 -0
- package/dist/utils/index.d.ts +49 -0
- package/dist/utils/index.js +174 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +12 -0
- package/dist/utils/index.mjs.map +1 -0
- package/jest.config.js +5 -0
- package/package.json +85 -0
- package/scripts/generate-gql-schema.ts +13 -0
- package/src/agents/langgraph/event-source.ts +287 -0
- package/src/agents/langgraph/events.ts +338 -0
- package/src/graphql/inputs/action.input.ts +16 -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/cloud-guardrails.input.ts +16 -0
- package/src/graphql/inputs/cloud.input.ts +8 -0
- package/src/graphql/inputs/context-property.input.ts +10 -0
- package/src/graphql/inputs/custom-property.input.ts +15 -0
- package/src/graphql/inputs/forwarded-parameters.input.ts +22 -0
- package/src/graphql/inputs/frontend.input.ts +14 -0
- package/src/graphql/inputs/generate-copilot-response.input.ts +47 -0
- package/src/graphql/inputs/message.input.ts +92 -0
- package/src/graphql/resolvers/copilot.resolver.ts +556 -0
- package/src/graphql/types/agents-response.type.ts +22 -0
- package/src/graphql/types/base/index.ts +10 -0
- package/src/graphql/types/converted/index.ts +136 -0
- package/src/graphql/types/copilot-response.type.ts +113 -0
- package/src/graphql/types/enums.ts +37 -0
- package/src/graphql/types/guardrails-result.type.ts +20 -0
- package/src/graphql/types/message-status.type.ts +40 -0
- package/src/graphql/types/response-status.type.ts +66 -0
- package/src/index.ts +4 -0
- package/src/lib/cloud/index.ts +4 -0
- package/src/lib/index.ts +8 -0
- package/src/lib/integrations/index.ts +6 -0
- package/src/lib/integrations/nest/index.ts +17 -0
- package/src/lib/integrations/nextjs/app-router.ts +40 -0
- package/src/lib/integrations/nextjs/pages-router.ts +49 -0
- package/src/lib/integrations/node-express/index.ts +17 -0
- package/src/lib/integrations/node-http/index.ts +34 -0
- package/src/lib/integrations/shared.ts +109 -0
- package/src/lib/logger.ts +28 -0
- package/src/lib/runtime/copilot-runtime.ts +466 -0
- package/src/lib/runtime/remote-action-constructors.ts +304 -0
- package/src/lib/runtime/remote-actions.ts +174 -0
- package/src/lib/runtime/remote-lg-action.ts +657 -0
- package/src/lib/telemetry-client.ts +52 -0
- package/src/service-adapters/anthropic/anthropic-adapter.ts +205 -0
- package/src/service-adapters/anthropic/utils.ts +144 -0
- package/src/service-adapters/conversion.ts +64 -0
- package/src/service-adapters/events.ts +419 -0
- package/src/service-adapters/experimental/empty/empty-adapter.ts +33 -0
- package/src/service-adapters/experimental/ollama/ollama-adapter.ts +79 -0
- package/src/service-adapters/google/google-genai-adapter.ts +39 -0
- package/src/service-adapters/groq/groq-adapter.ts +173 -0
- package/src/service-adapters/index.ts +16 -0
- package/src/service-adapters/langchain/langchain-adapter.ts +99 -0
- package/src/service-adapters/langchain/langserve.ts +87 -0
- package/src/service-adapters/langchain/types.ts +14 -0
- package/src/service-adapters/langchain/utils.ts +306 -0
- package/src/service-adapters/openai/openai-adapter.ts +210 -0
- package/src/service-adapters/openai/openai-assistant-adapter.ts +304 -0
- package/src/service-adapters/openai/utils.ts +161 -0
- package/src/service-adapters/service-adapter.ts +30 -0
- package/src/service-adapters/unify/unify-adapter.ts +145 -0
- package/src/utils/failed-response-status-reasons.ts +48 -0
- package/src/utils/index.ts +1 -0
- package/tsconfig.json +11 -0
- package/tsup.config.ts +16 -0
- package/typedoc.json +4 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CopilotKit Adapter for Unify
|
|
3
|
+
*
|
|
4
|
+
* <RequestExample>
|
|
5
|
+
* ```jsx CopilotRuntime Example
|
|
6
|
+
* const copilotKit = new CopilotRuntime();
|
|
7
|
+
* return copilotKit.response(req, new UnifyAdapter());
|
|
8
|
+
* ```
|
|
9
|
+
* </RequestExample>
|
|
10
|
+
*
|
|
11
|
+
* You can easily set the model to use by passing it to the constructor.
|
|
12
|
+
* ```jsx
|
|
13
|
+
* const copilotKit = new CopilotRuntime();
|
|
14
|
+
* return copilotKit.response(
|
|
15
|
+
* req,
|
|
16
|
+
* new UnifyAdapter({ model: "llama-3-8b-chat@fireworks-ai" }),
|
|
17
|
+
* );
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import { TextMessage } from "../../graphql/types/converted";
|
|
21
|
+
import {
|
|
22
|
+
CopilotRuntimeChatCompletionRequest,
|
|
23
|
+
CopilotRuntimeChatCompletionResponse,
|
|
24
|
+
CopilotServiceAdapter,
|
|
25
|
+
} from "../service-adapter";
|
|
26
|
+
import OpenAI from "openai";
|
|
27
|
+
import { randomId } from "@copilotkit/shared";
|
|
28
|
+
import { convertActionInputToOpenAITool, convertMessageToOpenAIMessage } from "../openai/utils";
|
|
29
|
+
|
|
30
|
+
export interface UnifyAdapterParams {
|
|
31
|
+
apiKey?: string;
|
|
32
|
+
model: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export class UnifyAdapter implements CopilotServiceAdapter {
|
|
36
|
+
private apiKey: string;
|
|
37
|
+
private model: string;
|
|
38
|
+
private start: boolean;
|
|
39
|
+
|
|
40
|
+
constructor(options?: UnifyAdapterParams) {
|
|
41
|
+
if (options?.apiKey) {
|
|
42
|
+
this.apiKey = options.apiKey;
|
|
43
|
+
} else {
|
|
44
|
+
this.apiKey = "UNIFY_API_KEY";
|
|
45
|
+
}
|
|
46
|
+
this.model = options?.model;
|
|
47
|
+
this.start = true;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async process(
|
|
51
|
+
request: CopilotRuntimeChatCompletionRequest,
|
|
52
|
+
): Promise<CopilotRuntimeChatCompletionResponse> {
|
|
53
|
+
const tools = request.actions.map(convertActionInputToOpenAITool);
|
|
54
|
+
const openai = new OpenAI({
|
|
55
|
+
apiKey: this.apiKey,
|
|
56
|
+
baseURL: "https://api.unify.ai/v0/",
|
|
57
|
+
});
|
|
58
|
+
const forwardedParameters = request.forwardedParameters;
|
|
59
|
+
|
|
60
|
+
const messages = request.messages.map(convertMessageToOpenAIMessage);
|
|
61
|
+
|
|
62
|
+
const stream = await openai.chat.completions.create({
|
|
63
|
+
model: this.model,
|
|
64
|
+
messages: messages,
|
|
65
|
+
stream: true,
|
|
66
|
+
...(tools.length > 0 && { tools }),
|
|
67
|
+
...(forwardedParameters?.temperature && { temperature: forwardedParameters.temperature }),
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
let model = null;
|
|
71
|
+
let currentMessageId: string;
|
|
72
|
+
let currentToolCallId: string;
|
|
73
|
+
request.eventSource.stream(async (eventStream$) => {
|
|
74
|
+
let mode: "function" | "message" | null = null;
|
|
75
|
+
for await (const chunk of stream) {
|
|
76
|
+
if (this.start) {
|
|
77
|
+
model = chunk.model;
|
|
78
|
+
currentMessageId = randomId();
|
|
79
|
+
eventStream$.sendTextMessageStart({ messageId: currentMessageId });
|
|
80
|
+
eventStream$.sendTextMessageContent({
|
|
81
|
+
messageId: currentMessageId,
|
|
82
|
+
content: `Model used: ${model}\n`,
|
|
83
|
+
});
|
|
84
|
+
eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
|
|
85
|
+
this.start = false;
|
|
86
|
+
}
|
|
87
|
+
const toolCall = chunk.choices[0].delta.tool_calls?.[0];
|
|
88
|
+
const content = chunk.choices[0].delta.content;
|
|
89
|
+
|
|
90
|
+
// When switching from message to function or vice versa,
|
|
91
|
+
// send the respective end event.
|
|
92
|
+
// If toolCall?.id is defined, it means a new tool call starts.
|
|
93
|
+
if (mode === "message" && toolCall?.id) {
|
|
94
|
+
mode = null;
|
|
95
|
+
eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
|
|
96
|
+
} else if (mode === "function" && (toolCall === undefined || toolCall?.id)) {
|
|
97
|
+
mode = null;
|
|
98
|
+
eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// If we send a new message type, send the appropriate start event.
|
|
102
|
+
if (mode === null) {
|
|
103
|
+
if (toolCall?.id) {
|
|
104
|
+
mode = "function";
|
|
105
|
+
currentToolCallId = toolCall!.id;
|
|
106
|
+
eventStream$.sendActionExecutionStart({
|
|
107
|
+
actionExecutionId: currentToolCallId,
|
|
108
|
+
actionName: toolCall!.function!.name,
|
|
109
|
+
});
|
|
110
|
+
} else if (content) {
|
|
111
|
+
mode = "message";
|
|
112
|
+
currentMessageId = chunk.id;
|
|
113
|
+
eventStream$.sendTextMessageStart({ messageId: currentMessageId });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// send the content events
|
|
118
|
+
if (mode === "message" && content) {
|
|
119
|
+
eventStream$.sendTextMessageContent({
|
|
120
|
+
messageId: currentMessageId,
|
|
121
|
+
content: content,
|
|
122
|
+
});
|
|
123
|
+
} else if (mode === "function" && toolCall?.function?.arguments) {
|
|
124
|
+
eventStream$.sendActionExecutionArgs({
|
|
125
|
+
actionExecutionId: currentToolCallId,
|
|
126
|
+
args: toolCall.function.arguments,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// send the end events
|
|
132
|
+
if (mode === "message") {
|
|
133
|
+
eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
|
|
134
|
+
} else if (mode === "function") {
|
|
135
|
+
eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
eventStream$.complete();
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
return {
|
|
142
|
+
threadId: request.threadId || randomId(),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FailedResponseStatus,
|
|
3
|
+
FailedResponseStatusReason,
|
|
4
|
+
} from "../graphql/types/response-status.type";
|
|
5
|
+
|
|
6
|
+
export class GuardrailsValidationFailureResponse extends FailedResponseStatus {
|
|
7
|
+
reason = FailedResponseStatusReason.GUARDRAILS_VALIDATION_FAILED;
|
|
8
|
+
declare details: {
|
|
9
|
+
guardrailsReason: string;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
constructor({ guardrailsReason }) {
|
|
13
|
+
super();
|
|
14
|
+
this.details = {
|
|
15
|
+
guardrailsReason,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export class MessageStreamInterruptedResponse extends FailedResponseStatus {
|
|
21
|
+
reason = FailedResponseStatusReason.MESSAGE_STREAM_INTERRUPTED;
|
|
22
|
+
declare details: {
|
|
23
|
+
messageId: string;
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
constructor({ messageId }: { messageId: string }) {
|
|
28
|
+
super();
|
|
29
|
+
this.details = {
|
|
30
|
+
messageId,
|
|
31
|
+
description: "Check the message for mode details",
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export class UnknownErrorResponse extends FailedResponseStatus {
|
|
37
|
+
reason = FailedResponseStatusReason.UNKNOWN_ERROR;
|
|
38
|
+
declare details: {
|
|
39
|
+
description?: string;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
constructor({ description }: { description?: string }) {
|
|
43
|
+
super();
|
|
44
|
+
this.details = {
|
|
45
|
+
description,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./failed-response-status-reasons";
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../utilities/tsconfig/base.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"lib": ["es2017", "dom"],
|
|
5
|
+
"emitDecoratorMetadata": true,
|
|
6
|
+
"experimentalDecorators": true,
|
|
7
|
+
"strict": false,
|
|
8
|
+
},
|
|
9
|
+
"include": ["./src/**/*.ts"],
|
|
10
|
+
"exclude": ["dist", "build", "node_modules", "**/*.test.ts", "**/*.test.tsx", "**/__tests__/*"]
|
|
11
|
+
}
|
package/tsup.config.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defineConfig, Options } from "tsup";
|
|
2
|
+
|
|
3
|
+
export default defineConfig((options: Options) => ({
|
|
4
|
+
...options,
|
|
5
|
+
entry: ["src/**/index.ts"],
|
|
6
|
+
format: ["esm", "cjs"],
|
|
7
|
+
dts: true,
|
|
8
|
+
minify: false,
|
|
9
|
+
external: [],
|
|
10
|
+
sourcemap: true,
|
|
11
|
+
exclude: [
|
|
12
|
+
"**/*.test.ts", // Exclude TypeScript test files
|
|
13
|
+
"**/*.test.tsx", // Exclude TypeScript React test files
|
|
14
|
+
"**/__tests__/*", // Exclude any files inside a __tests__ directory
|
|
15
|
+
],
|
|
16
|
+
}));
|
package/typedoc.json
ADDED