@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.
Files changed (147) hide show
  1. package/.eslintrc.js +7 -0
  2. package/CHANGELOG.md +913 -0
  3. package/README.md +46 -0
  4. package/__snapshots__/schema/schema.graphql +273 -0
  5. package/dist/chunk-44O2JGUY.mjs +12 -0
  6. package/dist/chunk-44O2JGUY.mjs.map +1 -0
  7. package/dist/chunk-BETLEV37.mjs +25 -0
  8. package/dist/chunk-BETLEV37.mjs.map +1 -0
  9. package/dist/chunk-CLGKEUOA.mjs +1408 -0
  10. package/dist/chunk-CLGKEUOA.mjs.map +1 -0
  11. package/dist/chunk-D2WLFQS6.mjs +43 -0
  12. package/dist/chunk-D2WLFQS6.mjs.map +1 -0
  13. package/dist/chunk-DFOKBSIS.mjs +1 -0
  14. package/dist/chunk-DFOKBSIS.mjs.map +1 -0
  15. package/dist/chunk-FA5DJ2TZ.mjs +3437 -0
  16. package/dist/chunk-FA5DJ2TZ.mjs.map +1 -0
  17. package/dist/chunk-HNUNXFTW.mjs +129 -0
  18. package/dist/chunk-HNUNXFTW.mjs.map +1 -0
  19. package/dist/chunk-SFLMY3ES.mjs +80 -0
  20. package/dist/chunk-SFLMY3ES.mjs.map +1 -0
  21. package/dist/chunk-U3V2BCGI.mjs +152 -0
  22. package/dist/chunk-U3V2BCGI.mjs.map +1 -0
  23. package/dist/chunk-ZCU6UPCY.mjs +25 -0
  24. package/dist/chunk-ZCU6UPCY.mjs.map +1 -0
  25. package/dist/copilot-runtime-1a224a0f.d.ts +196 -0
  26. package/dist/graphql/types/base/index.d.ts +6 -0
  27. package/dist/graphql/types/base/index.js +63 -0
  28. package/dist/graphql/types/base/index.js.map +1 -0
  29. package/dist/graphql/types/base/index.mjs +8 -0
  30. package/dist/graphql/types/base/index.mjs.map +1 -0
  31. package/dist/graphql/types/converted/index.d.ts +2 -0
  32. package/dist/graphql/types/converted/index.js +187 -0
  33. package/dist/graphql/types/converted/index.js.map +1 -0
  34. package/dist/graphql/types/converted/index.mjs +17 -0
  35. package/dist/graphql/types/converted/index.mjs.map +1 -0
  36. package/dist/groq-adapter-c35c5374.d.ts +281 -0
  37. package/dist/index-24315d90.d.ts +103 -0
  38. package/dist/index.d.ts +23 -0
  39. package/dist/index.js +5258 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/index.mjs +76 -0
  42. package/dist/index.mjs.map +1 -0
  43. package/dist/langserve-a16ef8f4.d.ts +180 -0
  44. package/dist/lib/cloud/index.d.ts +6 -0
  45. package/dist/lib/cloud/index.js +18 -0
  46. package/dist/lib/cloud/index.js.map +1 -0
  47. package/dist/lib/cloud/index.mjs +1 -0
  48. package/dist/lib/cloud/index.mjs.map +1 -0
  49. package/dist/lib/index.d.ts +20 -0
  50. package/dist/lib/index.js +4906 -0
  51. package/dist/lib/index.js.map +1 -0
  52. package/dist/lib/index.mjs +58 -0
  53. package/dist/lib/index.mjs.map +1 -0
  54. package/dist/lib/integrations/index.d.ts +33 -0
  55. package/dist/lib/integrations/index.js +2229 -0
  56. package/dist/lib/integrations/index.js.map +1 -0
  57. package/dist/lib/integrations/index.mjs +34 -0
  58. package/dist/lib/integrations/index.mjs.map +1 -0
  59. package/dist/lib/integrations/nest/index.d.ts +14 -0
  60. package/dist/lib/integrations/nest/index.js +2138 -0
  61. package/dist/lib/integrations/nest/index.js.map +1 -0
  62. package/dist/lib/integrations/nest/index.mjs +13 -0
  63. package/dist/lib/integrations/nest/index.mjs.map +1 -0
  64. package/dist/lib/integrations/node-express/index.d.ts +14 -0
  65. package/dist/lib/integrations/node-express/index.js +2138 -0
  66. package/dist/lib/integrations/node-express/index.js.map +1 -0
  67. package/dist/lib/integrations/node-express/index.mjs +13 -0
  68. package/dist/lib/integrations/node-express/index.mjs.map +1 -0
  69. package/dist/lib/integrations/node-http/index.d.ts +14 -0
  70. package/dist/lib/integrations/node-http/index.js +2124 -0
  71. package/dist/lib/integrations/node-http/index.js.map +1 -0
  72. package/dist/lib/integrations/node-http/index.mjs +12 -0
  73. package/dist/lib/integrations/node-http/index.mjs.map +1 -0
  74. package/dist/service-adapters/index.d.ts +84 -0
  75. package/dist/service-adapters/index.js +1448 -0
  76. package/dist/service-adapters/index.js.map +1 -0
  77. package/dist/service-adapters/index.mjs +26 -0
  78. package/dist/service-adapters/index.mjs.map +1 -0
  79. package/dist/utils/index.d.ts +49 -0
  80. package/dist/utils/index.js +174 -0
  81. package/dist/utils/index.js.map +1 -0
  82. package/dist/utils/index.mjs +12 -0
  83. package/dist/utils/index.mjs.map +1 -0
  84. package/jest.config.js +5 -0
  85. package/package.json +85 -0
  86. package/scripts/generate-gql-schema.ts +13 -0
  87. package/src/agents/langgraph/event-source.ts +287 -0
  88. package/src/agents/langgraph/events.ts +338 -0
  89. package/src/graphql/inputs/action.input.ts +16 -0
  90. package/src/graphql/inputs/agent-session.input.ts +13 -0
  91. package/src/graphql/inputs/agent-state.input.ts +10 -0
  92. package/src/graphql/inputs/cloud-guardrails.input.ts +16 -0
  93. package/src/graphql/inputs/cloud.input.ts +8 -0
  94. package/src/graphql/inputs/context-property.input.ts +10 -0
  95. package/src/graphql/inputs/custom-property.input.ts +15 -0
  96. package/src/graphql/inputs/forwarded-parameters.input.ts +22 -0
  97. package/src/graphql/inputs/frontend.input.ts +14 -0
  98. package/src/graphql/inputs/generate-copilot-response.input.ts +47 -0
  99. package/src/graphql/inputs/message.input.ts +92 -0
  100. package/src/graphql/resolvers/copilot.resolver.ts +556 -0
  101. package/src/graphql/types/agents-response.type.ts +22 -0
  102. package/src/graphql/types/base/index.ts +10 -0
  103. package/src/graphql/types/converted/index.ts +136 -0
  104. package/src/graphql/types/copilot-response.type.ts +113 -0
  105. package/src/graphql/types/enums.ts +37 -0
  106. package/src/graphql/types/guardrails-result.type.ts +20 -0
  107. package/src/graphql/types/message-status.type.ts +40 -0
  108. package/src/graphql/types/response-status.type.ts +66 -0
  109. package/src/index.ts +4 -0
  110. package/src/lib/cloud/index.ts +4 -0
  111. package/src/lib/index.ts +8 -0
  112. package/src/lib/integrations/index.ts +6 -0
  113. package/src/lib/integrations/nest/index.ts +17 -0
  114. package/src/lib/integrations/nextjs/app-router.ts +40 -0
  115. package/src/lib/integrations/nextjs/pages-router.ts +49 -0
  116. package/src/lib/integrations/node-express/index.ts +17 -0
  117. package/src/lib/integrations/node-http/index.ts +34 -0
  118. package/src/lib/integrations/shared.ts +109 -0
  119. package/src/lib/logger.ts +28 -0
  120. package/src/lib/runtime/copilot-runtime.ts +466 -0
  121. package/src/lib/runtime/remote-action-constructors.ts +304 -0
  122. package/src/lib/runtime/remote-actions.ts +174 -0
  123. package/src/lib/runtime/remote-lg-action.ts +657 -0
  124. package/src/lib/telemetry-client.ts +52 -0
  125. package/src/service-adapters/anthropic/anthropic-adapter.ts +205 -0
  126. package/src/service-adapters/anthropic/utils.ts +144 -0
  127. package/src/service-adapters/conversion.ts +64 -0
  128. package/src/service-adapters/events.ts +419 -0
  129. package/src/service-adapters/experimental/empty/empty-adapter.ts +33 -0
  130. package/src/service-adapters/experimental/ollama/ollama-adapter.ts +79 -0
  131. package/src/service-adapters/google/google-genai-adapter.ts +39 -0
  132. package/src/service-adapters/groq/groq-adapter.ts +173 -0
  133. package/src/service-adapters/index.ts +16 -0
  134. package/src/service-adapters/langchain/langchain-adapter.ts +99 -0
  135. package/src/service-adapters/langchain/langserve.ts +87 -0
  136. package/src/service-adapters/langchain/types.ts +14 -0
  137. package/src/service-adapters/langchain/utils.ts +306 -0
  138. package/src/service-adapters/openai/openai-adapter.ts +210 -0
  139. package/src/service-adapters/openai/openai-assistant-adapter.ts +304 -0
  140. package/src/service-adapters/openai/utils.ts +161 -0
  141. package/src/service-adapters/service-adapter.ts +30 -0
  142. package/src/service-adapters/unify/unify-adapter.ts +145 -0
  143. package/src/utils/failed-response-status-reasons.ts +48 -0
  144. package/src/utils/index.ts +1 -0
  145. package/tsconfig.json +11 -0
  146. package/tsup.config.ts +16 -0
  147. 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
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": ["../../typedoc.base.json"],
3
+ "entryPoints": ["src/index.ts"]
4
+ }