@copilotkit/runtime 1.3.6 → 1.3.7
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 +8 -0
- package/dist/{chunk-7AFOEQJG.mjs → chunk-3BSPBSR7.mjs} +31 -214
- package/dist/chunk-3BSPBSR7.mjs.map +1 -0
- package/dist/{chunk-RMZWGQ46.mjs → chunk-D2WLFQS6.mjs} +8 -8
- package/dist/chunk-D2WLFQS6.mjs.map +1 -0
- package/dist/{chunk-I5XVY6LS.mjs → chunk-DC7DLTU6.mjs} +4 -4
- package/dist/{chunk-UB4LPMMV.mjs → chunk-HKURA7H3.mjs} +2 -2
- package/dist/{chunk-TY5C4PL4.mjs → chunk-IL7POK7R.mjs} +2 -2
- package/dist/{chunk-LYLGFMKH.mjs → chunk-JUNGFQE7.mjs} +2 -2
- package/dist/chunk-MYZHUCL6.mjs +65 -0
- package/dist/chunk-MYZHUCL6.mjs.map +1 -0
- package/dist/{chunk-VRFBTIGK.mjs → chunk-TXVG65YE.mjs} +10 -10
- package/dist/chunk-TXVG65YE.mjs.map +1 -0
- package/dist/{chunk-73NMP3DI.mjs → chunk-V6JSDIHG.mjs} +5 -10
- package/dist/chunk-V6JSDIHG.mjs.map +1 -0
- package/dist/{copilot-runtime-a1b5f1ce.d.ts → copilot-runtime-df3527ad.d.ts} +2 -2
- package/dist/graphql/types/base/index.d.ts +2 -2
- package/dist/graphql/types/base/index.js +8 -8
- package/dist/graphql/types/base/index.js.map +1 -1
- package/dist/graphql/types/base/index.mjs +3 -3
- package/dist/graphql/types/converted/index.d.ts +1 -1
- package/dist/graphql/types/converted/index.js +32 -10
- package/dist/graphql/types/converted/index.js.map +1 -1
- package/dist/graphql/types/converted/index.mjs +4 -2
- package/dist/{groq-adapter-a07f59f2.d.ts → groq-adapter-b122e71f.d.ts} +3 -29
- package/dist/{index-0476e4f7.d.ts → index-cff31380.d.ts} +18 -7
- package/dist/index.d.ts +4 -5
- package/dist/index.js +139 -297
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -9
- package/dist/{langserve-15a1286b.d.ts → langserve-a14a6849.d.ts} +1 -1
- package/dist/lib/index.d.ts +4 -5
- package/dist/lib/index.js +131 -289
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +9 -9
- package/dist/lib/integrations/index.d.ts +4 -4
- package/dist/lib/integrations/index.js +61 -41
- package/dist/lib/integrations/index.js.map +1 -1
- package/dist/lib/integrations/index.mjs +7 -7
- package/dist/lib/integrations/nest/index.d.ts +3 -3
- package/dist/lib/integrations/nest/index.js +61 -41
- package/dist/lib/integrations/nest/index.js.map +1 -1
- package/dist/lib/integrations/nest/index.mjs +5 -5
- package/dist/lib/integrations/node-express/index.d.ts +3 -3
- package/dist/lib/integrations/node-express/index.js +61 -41
- package/dist/lib/integrations/node-express/index.js.map +1 -1
- package/dist/lib/integrations/node-express/index.mjs +5 -5
- package/dist/lib/integrations/node-http/index.d.ts +3 -3
- package/dist/lib/integrations/node-http/index.js +61 -41
- package/dist/lib/integrations/node-http/index.js.map +1 -1
- package/dist/lib/integrations/node-http/index.mjs +4 -4
- package/dist/service-adapters/index.d.ts +4 -5
- package/dist/service-adapters/index.js +33 -265
- package/dist/service-adapters/index.js.map +1 -1
- package/dist/service-adapters/index.mjs +2 -4
- package/package.json +7 -7
- package/src/graphql/inputs/message.input.ts +2 -2
- package/src/graphql/types/base/index.ts +1 -1
- package/src/graphql/types/converted/index.ts +31 -10
- package/src/service-adapters/anthropic/anthropic-adapter.ts +1 -2
- package/src/service-adapters/anthropic/utils.ts +3 -3
- package/src/service-adapters/experimental/ollama/ollama-adapter.ts +1 -1
- package/src/service-adapters/google/google-genai-adapter.ts +13 -117
- package/src/service-adapters/langchain/utils.ts +4 -4
- package/src/service-adapters/openai/openai-assistant-adapter.ts +4 -6
- package/src/service-adapters/openai/utils.ts +3 -3
- package/dist/chunk-73NMP3DI.mjs.map +0 -1
- package/dist/chunk-7AFOEQJG.mjs.map +0 -1
- package/dist/chunk-RMZWGQ46.mjs.map +0 -1
- package/dist/chunk-TBZGOJJX.mjs +0 -44
- package/dist/chunk-TBZGOJJX.mjs.map +0 -1
- package/dist/chunk-VRFBTIGK.mjs.map +0 -1
- package/src/service-adapters/google/utils.ts +0 -94
- /package/dist/{chunk-I5XVY6LS.mjs.map → chunk-DC7DLTU6.mjs.map} +0 -0
- /package/dist/{chunk-UB4LPMMV.mjs.map → chunk-HKURA7H3.mjs.map} +0 -0
- /package/dist/{chunk-TY5C4PL4.mjs.map → chunk-IL7POK7R.mjs.map} +0 -0
- /package/dist/{chunk-LYLGFMKH.mjs.map → chunk-JUNGFQE7.mjs.map} +0 -0
package/dist/lib/index.js
CHANGED
|
@@ -44,7 +44,7 @@ var require_package = __commonJS({
|
|
|
44
44
|
publishConfig: {
|
|
45
45
|
access: "public"
|
|
46
46
|
},
|
|
47
|
-
version: "1.3.
|
|
47
|
+
version: "1.3.7",
|
|
48
48
|
sideEffects: false,
|
|
49
49
|
main: "./dist/index.js",
|
|
50
50
|
module: "./dist/index.mjs",
|
|
@@ -82,10 +82,10 @@ var require_package = __commonJS({
|
|
|
82
82
|
dependencies: {
|
|
83
83
|
"@anthropic-ai/sdk": "^0.27.3",
|
|
84
84
|
"@copilotkit/shared": "workspace:*",
|
|
85
|
-
"@google
|
|
85
|
+
"@langchain/google-gauth": "^0.1.0",
|
|
86
86
|
"@graphql-yoga/plugin-defer-stream": "^3.3.1",
|
|
87
87
|
"@langchain/community": "^0.0.53",
|
|
88
|
-
"@langchain/core": "^0.
|
|
88
|
+
"@langchain/core": "^0.3.13",
|
|
89
89
|
"@langchain/openai": "^0.0.28",
|
|
90
90
|
"class-transformer": "^0.5.1",
|
|
91
91
|
express: "^4.19.2",
|
|
@@ -93,7 +93,7 @@ var require_package = __commonJS({
|
|
|
93
93
|
"graphql-scalars": "^1.23.0",
|
|
94
94
|
"graphql-yoga": "^5.3.1",
|
|
95
95
|
"groq-sdk": "^0.5.0",
|
|
96
|
-
langchain: "^0.
|
|
96
|
+
langchain: "^0.3.3",
|
|
97
97
|
openai: "^4.50.0",
|
|
98
98
|
pino: "^9.2.0",
|
|
99
99
|
"pino-pretty": "^11.2.1",
|
|
@@ -142,7 +142,7 @@ __export(lib_exports, {
|
|
|
142
142
|
module.exports = __toCommonJS(lib_exports);
|
|
143
143
|
|
|
144
144
|
// src/lib/runtime/copilot-runtime.ts
|
|
145
|
-
var
|
|
145
|
+
var import_shared8 = require("@copilotkit/shared");
|
|
146
146
|
|
|
147
147
|
// src/service-adapters/langchain/langserve.ts
|
|
148
148
|
var import_remote = require("langchain/runnables/remote");
|
|
@@ -225,71 +225,6 @@ __name(RemoteChain, "RemoteChain");
|
|
|
225
225
|
// src/service-adapters/openai/openai-adapter.ts
|
|
226
226
|
var import_openai = __toESM(require("openai"));
|
|
227
227
|
|
|
228
|
-
// src/graphql/types/base/index.ts
|
|
229
|
-
var import_type_graphql = require("type-graphql");
|
|
230
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
231
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
232
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
233
|
-
r = Reflect.decorate(decorators, target, key, desc);
|
|
234
|
-
else
|
|
235
|
-
for (var i = decorators.length - 1; i >= 0; i--)
|
|
236
|
-
if (d = decorators[i])
|
|
237
|
-
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
238
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
239
|
-
}
|
|
240
|
-
__name(_ts_decorate, "_ts_decorate");
|
|
241
|
-
function _ts_metadata(k, v) {
|
|
242
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
243
|
-
return Reflect.metadata(k, v);
|
|
244
|
-
}
|
|
245
|
-
__name(_ts_metadata, "_ts_metadata");
|
|
246
|
-
var BaseMessage = class {
|
|
247
|
-
id;
|
|
248
|
-
createdAt;
|
|
249
|
-
};
|
|
250
|
-
__name(BaseMessage, "BaseMessage");
|
|
251
|
-
_ts_decorate([
|
|
252
|
-
(0, import_type_graphql.Field)(() => String),
|
|
253
|
-
_ts_metadata("design:type", String)
|
|
254
|
-
], BaseMessage.prototype, "id", void 0);
|
|
255
|
-
_ts_decorate([
|
|
256
|
-
(0, import_type_graphql.Field)(() => Date),
|
|
257
|
-
_ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
|
|
258
|
-
], BaseMessage.prototype, "createdAt", void 0);
|
|
259
|
-
BaseMessage = _ts_decorate([
|
|
260
|
-
(0, import_type_graphql.InputType)()
|
|
261
|
-
], BaseMessage);
|
|
262
|
-
|
|
263
|
-
// src/graphql/types/converted/index.ts
|
|
264
|
-
var TextMessage = class extends BaseMessage {
|
|
265
|
-
content;
|
|
266
|
-
role;
|
|
267
|
-
};
|
|
268
|
-
__name(TextMessage, "TextMessage");
|
|
269
|
-
var ActionExecutionMessage = class extends BaseMessage {
|
|
270
|
-
name;
|
|
271
|
-
arguments;
|
|
272
|
-
scope;
|
|
273
|
-
};
|
|
274
|
-
__name(ActionExecutionMessage, "ActionExecutionMessage");
|
|
275
|
-
var ResultMessage = class extends BaseMessage {
|
|
276
|
-
actionExecutionId;
|
|
277
|
-
actionName;
|
|
278
|
-
result;
|
|
279
|
-
};
|
|
280
|
-
__name(ResultMessage, "ResultMessage");
|
|
281
|
-
var AgentStateMessage = class extends BaseMessage {
|
|
282
|
-
threadId;
|
|
283
|
-
agentName;
|
|
284
|
-
nodeName;
|
|
285
|
-
runId;
|
|
286
|
-
active;
|
|
287
|
-
role;
|
|
288
|
-
state;
|
|
289
|
-
running;
|
|
290
|
-
};
|
|
291
|
-
__name(AgentStateMessage, "AgentStateMessage");
|
|
292
|
-
|
|
293
228
|
// src/service-adapters/openai/utils.ts
|
|
294
229
|
function limitMessagesToTokenCount(messages, tools, model, maxTokens) {
|
|
295
230
|
maxTokens || (maxTokens = maxTokensForOpenAIModel(model));
|
|
@@ -390,12 +325,12 @@ function convertActionInputToOpenAITool(action) {
|
|
|
390
325
|
}
|
|
391
326
|
__name(convertActionInputToOpenAITool, "convertActionInputToOpenAITool");
|
|
392
327
|
function convertMessageToOpenAIMessage(message) {
|
|
393
|
-
if (message
|
|
328
|
+
if (message.isTextMessage()) {
|
|
394
329
|
return {
|
|
395
330
|
role: message.role,
|
|
396
331
|
content: message.content
|
|
397
332
|
};
|
|
398
|
-
} else if (message
|
|
333
|
+
} else if (message.isActionExecutionMessage()) {
|
|
399
334
|
return {
|
|
400
335
|
role: "assistant",
|
|
401
336
|
tool_calls: [
|
|
@@ -409,7 +344,7 @@ function convertMessageToOpenAIMessage(message) {
|
|
|
409
344
|
}
|
|
410
345
|
]
|
|
411
346
|
};
|
|
412
|
-
} else if (message
|
|
347
|
+
} else if (message.isResultMessage()) {
|
|
413
348
|
return {
|
|
414
349
|
role: "tool",
|
|
415
350
|
content: message.result,
|
|
@@ -528,7 +463,7 @@ var import_tools = require("@langchain/core/tools");
|
|
|
528
463
|
var import_zod = require("zod");
|
|
529
464
|
var import_shared2 = require("@copilotkit/shared");
|
|
530
465
|
function convertMessageToLangChainMessage(message) {
|
|
531
|
-
if (message
|
|
466
|
+
if (message.isTextMessage()) {
|
|
532
467
|
if (message.role == "user") {
|
|
533
468
|
return new import_messages.HumanMessage(message.content);
|
|
534
469
|
} else if (message.role == "assistant") {
|
|
@@ -536,7 +471,7 @@ function convertMessageToLangChainMessage(message) {
|
|
|
536
471
|
} else if (message.role === "system") {
|
|
537
472
|
return new import_messages.SystemMessage(message.content);
|
|
538
473
|
}
|
|
539
|
-
} else if (message
|
|
474
|
+
} else if (message.isActionExecutionMessage()) {
|
|
540
475
|
return new import_messages.AIMessage({
|
|
541
476
|
content: "",
|
|
542
477
|
tool_calls: [
|
|
@@ -547,7 +482,7 @@ function convertMessageToLangChainMessage(message) {
|
|
|
547
482
|
}
|
|
548
483
|
]
|
|
549
484
|
});
|
|
550
|
-
} else if (message
|
|
485
|
+
} else if (message.isResultMessage()) {
|
|
551
486
|
return new import_messages.ToolMessage({
|
|
552
487
|
content: message.result,
|
|
553
488
|
tool_call_id: message.actionExecutionId
|
|
@@ -573,7 +508,7 @@ function convertJsonSchemaToZodSchema(jsonSchema, required) {
|
|
|
573
508
|
let schema = import_zod.z.boolean().describe(jsonSchema.description);
|
|
574
509
|
return !required ? schema.optional() : schema;
|
|
575
510
|
} else if (jsonSchema.type === "array") {
|
|
576
|
-
let itemSchema = convertJsonSchemaToZodSchema(jsonSchema.items,
|
|
511
|
+
let itemSchema = convertJsonSchemaToZodSchema(jsonSchema.items, true);
|
|
577
512
|
let schema = import_zod.z.array(itemSchema);
|
|
578
513
|
return !required ? schema.optional() : schema;
|
|
579
514
|
}
|
|
@@ -747,199 +682,21 @@ var LangChainAdapter = class {
|
|
|
747
682
|
__name(LangChainAdapter, "LangChainAdapter");
|
|
748
683
|
|
|
749
684
|
// src/service-adapters/google/google-genai-adapter.ts
|
|
750
|
-
var
|
|
751
|
-
|
|
752
|
-
// src/service-adapters/google/utils.ts
|
|
753
|
-
function convertMessageToGoogleGenAIMessage(message) {
|
|
754
|
-
if (message instanceof TextMessage) {
|
|
755
|
-
const role = {
|
|
756
|
-
user: "user",
|
|
757
|
-
assistant: "model",
|
|
758
|
-
system: "user"
|
|
759
|
-
}[message.role];
|
|
760
|
-
const text = message.role === "system" ? "THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: " + message.content : message.content;
|
|
761
|
-
return {
|
|
762
|
-
role,
|
|
763
|
-
parts: [
|
|
764
|
-
{
|
|
765
|
-
text
|
|
766
|
-
}
|
|
767
|
-
]
|
|
768
|
-
};
|
|
769
|
-
} else if (message instanceof ActionExecutionMessage) {
|
|
770
|
-
return {
|
|
771
|
-
role: "model",
|
|
772
|
-
parts: [
|
|
773
|
-
{
|
|
774
|
-
functionCall: {
|
|
775
|
-
name: message.name,
|
|
776
|
-
args: message.arguments
|
|
777
|
-
}
|
|
778
|
-
}
|
|
779
|
-
]
|
|
780
|
-
};
|
|
781
|
-
} else if (message instanceof ResultMessage) {
|
|
782
|
-
return {
|
|
783
|
-
role: "function",
|
|
784
|
-
parts: [
|
|
785
|
-
{
|
|
786
|
-
functionResponse: {
|
|
787
|
-
name: message.actionName,
|
|
788
|
-
response: {
|
|
789
|
-
name: message.actionName,
|
|
790
|
-
content: tryParseJson(message.result)
|
|
791
|
-
}
|
|
792
|
-
}
|
|
793
|
-
}
|
|
794
|
-
]
|
|
795
|
-
};
|
|
796
|
-
}
|
|
797
|
-
}
|
|
798
|
-
__name(convertMessageToGoogleGenAIMessage, "convertMessageToGoogleGenAIMessage");
|
|
799
|
-
function transformActionToGoogleGenAITool(action) {
|
|
800
|
-
const name = action.name;
|
|
801
|
-
const description = action.description;
|
|
802
|
-
const parameters = JSON.parse(action.jsonSchema);
|
|
803
|
-
const transformProperties = /* @__PURE__ */ __name((props) => {
|
|
804
|
-
for (const key in props) {
|
|
805
|
-
if (props[key].type) {
|
|
806
|
-
props[key].type = props[key].type.toUpperCase();
|
|
807
|
-
}
|
|
808
|
-
if (props[key].properties) {
|
|
809
|
-
transformProperties(props[key].properties);
|
|
810
|
-
}
|
|
811
|
-
}
|
|
812
|
-
}, "transformProperties");
|
|
813
|
-
transformProperties(parameters);
|
|
814
|
-
return {
|
|
815
|
-
functionDeclarations: [
|
|
816
|
-
{
|
|
817
|
-
name,
|
|
818
|
-
description,
|
|
819
|
-
parameters
|
|
820
|
-
}
|
|
821
|
-
]
|
|
822
|
-
};
|
|
823
|
-
}
|
|
824
|
-
__name(transformActionToGoogleGenAITool, "transformActionToGoogleGenAITool");
|
|
825
|
-
function tryParseJson(str) {
|
|
826
|
-
if (!str) {
|
|
827
|
-
return "";
|
|
828
|
-
}
|
|
829
|
-
try {
|
|
830
|
-
return JSON.parse(str);
|
|
831
|
-
} catch (e) {
|
|
832
|
-
return str;
|
|
833
|
-
}
|
|
834
|
-
}
|
|
835
|
-
__name(tryParseJson, "tryParseJson");
|
|
836
|
-
|
|
837
|
-
// src/service-adapters/google/google-genai-adapter.ts
|
|
838
|
-
var import_shared4 = require("@copilotkit/shared");
|
|
839
|
-
var GoogleGenerativeAIAdapter = class {
|
|
840
|
-
model;
|
|
685
|
+
var import_google_gauth = require("@langchain/google-gauth");
|
|
686
|
+
var GoogleGenerativeAIAdapter = class extends LangChainAdapter {
|
|
841
687
|
constructor(options) {
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
}
|
|
850
|
-
}
|
|
851
|
-
async process(request) {
|
|
852
|
-
const { messages, actions, eventSource } = request;
|
|
853
|
-
const history = messages.slice(1, -1).map(convertMessageToGoogleGenAIMessage);
|
|
854
|
-
const currentMessage = convertMessageToGoogleGenAIMessage(messages.at(-1));
|
|
855
|
-
if (!currentMessage) {
|
|
856
|
-
throw new Error("No current message");
|
|
857
|
-
}
|
|
858
|
-
let systemMessage;
|
|
859
|
-
const firstMessage = messages.at(0);
|
|
860
|
-
if (firstMessage instanceof TextMessage && firstMessage.role === "system") {
|
|
861
|
-
systemMessage = firstMessage.content.trim();
|
|
862
|
-
} else {
|
|
863
|
-
throw new Error("First message is not a system message");
|
|
864
|
-
}
|
|
865
|
-
const tools = actions.map(transformActionToGoogleGenAITool);
|
|
866
|
-
const isFirstGenGeminiPro = this.model.model === "gemini-pro" || this.model.model === "models/gemini-pro";
|
|
867
|
-
const chat = this.model.startChat({
|
|
868
|
-
history: [
|
|
869
|
-
...history,
|
|
870
|
-
// gemini-pro does not support system instructions, so we need to add them to the history
|
|
871
|
-
...isFirstGenGeminiPro ? [
|
|
872
|
-
{
|
|
873
|
-
role: "user",
|
|
874
|
-
parts: [
|
|
875
|
-
{
|
|
876
|
-
text: systemMessage
|
|
877
|
-
}
|
|
878
|
-
]
|
|
879
|
-
}
|
|
880
|
-
] : []
|
|
881
|
-
],
|
|
882
|
-
// only gemini-1.5-pro-latest and later supports setting system instructions
|
|
883
|
-
...isFirstGenGeminiPro ? {} : {
|
|
884
|
-
systemInstruction: {
|
|
885
|
-
role: "user",
|
|
886
|
-
parts: [
|
|
887
|
-
{
|
|
888
|
-
text: systemMessage
|
|
889
|
-
}
|
|
890
|
-
]
|
|
891
|
-
}
|
|
892
|
-
},
|
|
893
|
-
tools
|
|
894
|
-
});
|
|
895
|
-
const result = await chat.sendMessageStream(currentMessage.parts);
|
|
896
|
-
eventSource.stream(async (eventStream$) => {
|
|
897
|
-
let isTextMessage = false;
|
|
898
|
-
for await (const chunk of result.stream) {
|
|
899
|
-
const chunkText = chunk.text();
|
|
900
|
-
if (chunkText === "") {
|
|
901
|
-
continue;
|
|
902
|
-
}
|
|
903
|
-
if (!isTextMessage) {
|
|
904
|
-
isTextMessage = true;
|
|
905
|
-
eventStream$.sendTextMessageStart((0, import_shared4.randomId)());
|
|
906
|
-
}
|
|
907
|
-
eventStream$.sendTextMessageContent(chunkText);
|
|
908
|
-
}
|
|
909
|
-
if (isTextMessage) {
|
|
910
|
-
eventStream$.sendTextMessageEnd();
|
|
911
|
-
}
|
|
912
|
-
let calls = (await result.response).functionCalls();
|
|
913
|
-
if (calls) {
|
|
914
|
-
for (let call of calls) {
|
|
915
|
-
eventStream$.sendActionExecution((0, import_shared4.randomId)(), call.name, JSON.stringify(replaceNewlinesInObject(call.args)));
|
|
916
|
-
}
|
|
688
|
+
super({
|
|
689
|
+
chainFn: async ({ messages, tools }) => {
|
|
690
|
+
const model = new import_google_gauth.ChatGoogle({
|
|
691
|
+
modelName: (options == null ? void 0 : options.model) ?? "gemini-1.5-pro",
|
|
692
|
+
apiVersion: "v1beta"
|
|
693
|
+
}).bindTools(tools);
|
|
694
|
+
return model.stream(messages);
|
|
917
695
|
}
|
|
918
|
-
eventStream$.complete();
|
|
919
696
|
});
|
|
920
|
-
return {
|
|
921
|
-
threadId: request.threadId || (0, import_shared4.randomId)()
|
|
922
|
-
};
|
|
923
697
|
}
|
|
924
698
|
};
|
|
925
699
|
__name(GoogleGenerativeAIAdapter, "GoogleGenerativeAIAdapter");
|
|
926
|
-
function replaceNewlinesInObject(obj) {
|
|
927
|
-
if (typeof obj === "string") {
|
|
928
|
-
return obj.replace(/\\\\n/g, "\n");
|
|
929
|
-
} else if (Array.isArray(obj)) {
|
|
930
|
-
return obj.map(replaceNewlinesInObject);
|
|
931
|
-
} else if (typeof obj === "object" && obj !== null) {
|
|
932
|
-
const newObj = {};
|
|
933
|
-
for (const key in obj) {
|
|
934
|
-
if (obj.hasOwnProperty(key)) {
|
|
935
|
-
newObj[key] = replaceNewlinesInObject(obj[key]);
|
|
936
|
-
}
|
|
937
|
-
}
|
|
938
|
-
return newObj;
|
|
939
|
-
}
|
|
940
|
-
return obj;
|
|
941
|
-
}
|
|
942
|
-
__name(replaceNewlinesInObject, "replaceNewlinesInObject");
|
|
943
700
|
|
|
944
701
|
// src/service-adapters/openai/openai-assistant-adapter.ts
|
|
945
702
|
var import_openai2 = __toESM(require("openai"));
|
|
@@ -961,9 +718,9 @@ var OpenAIAssistantAdapter = class {
|
|
|
961
718
|
let threadId = request.threadId || (await this.openai.beta.threads.create()).id;
|
|
962
719
|
const lastMessage = messages.at(-1);
|
|
963
720
|
let nextRunId = void 0;
|
|
964
|
-
if (lastMessage
|
|
721
|
+
if (lastMessage.isResultMessage() && runId) {
|
|
965
722
|
nextRunId = await this.submitToolOutputs(threadId, runId, messages, eventSource);
|
|
966
|
-
} else if (lastMessage
|
|
723
|
+
} else if (lastMessage.isTextMessage()) {
|
|
967
724
|
nextRunId = await this.submitUserMessage(threadId, messages, actions, eventSource, forwardedParameters);
|
|
968
725
|
} else {
|
|
969
726
|
throw new Error("No actionable message found in the messages");
|
|
@@ -979,7 +736,7 @@ var OpenAIAssistantAdapter = class {
|
|
|
979
736
|
throw new Error("No tool outputs required");
|
|
980
737
|
}
|
|
981
738
|
const toolCallsIds = run.required_action.submit_tool_outputs.tool_calls.map((toolCall) => toolCall.id);
|
|
982
|
-
const resultMessages = messages.filter((message) => message
|
|
739
|
+
const resultMessages = messages.filter((message) => message.isResultMessage() && toolCallsIds.includes(message.actionExecutionId));
|
|
983
740
|
if (toolCallsIds.length != resultMessages.length) {
|
|
984
741
|
throw new Error("Number of function results does not match the number of tool calls");
|
|
985
742
|
}
|
|
@@ -1003,7 +760,7 @@ var OpenAIAssistantAdapter = class {
|
|
|
1003
760
|
...messages
|
|
1004
761
|
];
|
|
1005
762
|
const instructionsMessage = messages.shift();
|
|
1006
|
-
const instructions = instructionsMessage
|
|
763
|
+
const instructions = instructionsMessage.isTextMessage() ? instructionsMessage.content : "";
|
|
1007
764
|
const userMessage = messages.map(convertMessageToOpenAIMessage).map(convertSystemMessageToAssistantAPI).at(-1);
|
|
1008
765
|
if (userMessage.role !== "user") {
|
|
1009
766
|
throw new Error("No user message found");
|
|
@@ -1105,7 +862,7 @@ __name(getRunIdFromStream, "getRunIdFromStream");
|
|
|
1105
862
|
|
|
1106
863
|
// src/service-adapters/unify/unify-adapter.ts
|
|
1107
864
|
var import_openai3 = __toESM(require("openai"));
|
|
1108
|
-
var
|
|
865
|
+
var import_shared4 = require("@copilotkit/shared");
|
|
1109
866
|
var UnifyAdapter = class {
|
|
1110
867
|
apiKey;
|
|
1111
868
|
model;
|
|
@@ -1141,7 +898,7 @@ var UnifyAdapter = class {
|
|
|
1141
898
|
for await (const chunk of stream) {
|
|
1142
899
|
if (this.start) {
|
|
1143
900
|
model = chunk.model;
|
|
1144
|
-
eventStream$.sendTextMessageStart((0,
|
|
901
|
+
eventStream$.sendTextMessageStart((0, import_shared4.randomId)());
|
|
1145
902
|
eventStream$.sendTextMessageContent(`Model used: ${model}
|
|
1146
903
|
`);
|
|
1147
904
|
eventStream$.sendTextMessageEnd();
|
|
@@ -1179,7 +936,7 @@ var UnifyAdapter = class {
|
|
|
1179
936
|
eventStream$.complete();
|
|
1180
937
|
});
|
|
1181
938
|
return {
|
|
1182
|
-
threadId: request.threadId || (0,
|
|
939
|
+
threadId: request.threadId || (0, import_shared4.randomId)()
|
|
1183
940
|
};
|
|
1184
941
|
}
|
|
1185
942
|
};
|
|
@@ -1187,7 +944,7 @@ __name(UnifyAdapter, "UnifyAdapter");
|
|
|
1187
944
|
|
|
1188
945
|
// src/service-adapters/groq/groq-adapter.ts
|
|
1189
946
|
var import_groq_sdk = require("groq-sdk");
|
|
1190
|
-
var
|
|
947
|
+
var import_shared5 = require("@copilotkit/shared");
|
|
1191
948
|
var DEFAULT_MODEL2 = "llama3-groq-70b-8192-tool-use-preview";
|
|
1192
949
|
var GroqAdapter = class {
|
|
1193
950
|
model = DEFAULT_MODEL2;
|
|
@@ -1273,7 +1030,7 @@ var GroqAdapter = class {
|
|
|
1273
1030
|
eventStream$.complete();
|
|
1274
1031
|
});
|
|
1275
1032
|
return {
|
|
1276
|
-
threadId: threadId || (0,
|
|
1033
|
+
threadId: threadId || (0, import_shared5.randomId)()
|
|
1277
1034
|
};
|
|
1278
1035
|
}
|
|
1279
1036
|
};
|
|
@@ -1283,9 +1040,9 @@ __name(GroqAdapter, "GroqAdapter");
|
|
|
1283
1040
|
var import_rxjs2 = require("rxjs");
|
|
1284
1041
|
|
|
1285
1042
|
// src/lib/telemetry-client.ts
|
|
1286
|
-
var
|
|
1043
|
+
var import_shared6 = require("@copilotkit/shared");
|
|
1287
1044
|
var packageJson = require_package();
|
|
1288
|
-
var telemetryClient = new
|
|
1045
|
+
var telemetryClient = new import_shared6.TelemetryClient({
|
|
1289
1046
|
packageName: packageJson.name,
|
|
1290
1047
|
packageVersion: packageJson.version
|
|
1291
1048
|
});
|
|
@@ -1311,7 +1068,7 @@ var LangGraphEventTypes;
|
|
|
1311
1068
|
})(LangGraphEventTypes || (LangGraphEventTypes = {}));
|
|
1312
1069
|
|
|
1313
1070
|
// src/agents/langgraph/event-source.ts
|
|
1314
|
-
var
|
|
1071
|
+
var import_shared7 = require("@copilotkit/shared");
|
|
1315
1072
|
var RemoteLangGraphEventSource = class {
|
|
1316
1073
|
eventStream$ = new import_rxjs.ReplaySubject();
|
|
1317
1074
|
async streamResponse(response) {
|
|
@@ -1531,7 +1288,7 @@ var RemoteLangGraphEventSource = class {
|
|
|
1531
1288
|
type: RuntimeEventTypes.ActionExecutionEnd
|
|
1532
1289
|
});
|
|
1533
1290
|
}
|
|
1534
|
-
const messageId = (0,
|
|
1291
|
+
const messageId = (0, import_shared7.randomId)();
|
|
1535
1292
|
events.push({
|
|
1536
1293
|
type: RuntimeEventTypes.TextMessageStart,
|
|
1537
1294
|
messageId
|
|
@@ -1932,6 +1689,91 @@ async function executeAction(eventStream$, guardrailsResult$, action, actionArgu
|
|
|
1932
1689
|
}
|
|
1933
1690
|
__name(executeAction, "executeAction");
|
|
1934
1691
|
|
|
1692
|
+
// src/graphql/types/base/index.ts
|
|
1693
|
+
var import_type_graphql = require("type-graphql");
|
|
1694
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
1695
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1696
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
1697
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
1698
|
+
else
|
|
1699
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
1700
|
+
if (d = decorators[i])
|
|
1701
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1702
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1703
|
+
}
|
|
1704
|
+
__name(_ts_decorate, "_ts_decorate");
|
|
1705
|
+
function _ts_metadata(k, v) {
|
|
1706
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
1707
|
+
return Reflect.metadata(k, v);
|
|
1708
|
+
}
|
|
1709
|
+
__name(_ts_metadata, "_ts_metadata");
|
|
1710
|
+
var BaseMessageInput = class {
|
|
1711
|
+
id;
|
|
1712
|
+
createdAt;
|
|
1713
|
+
};
|
|
1714
|
+
__name(BaseMessageInput, "BaseMessageInput");
|
|
1715
|
+
_ts_decorate([
|
|
1716
|
+
(0, import_type_graphql.Field)(() => String),
|
|
1717
|
+
_ts_metadata("design:type", String)
|
|
1718
|
+
], BaseMessageInput.prototype, "id", void 0);
|
|
1719
|
+
_ts_decorate([
|
|
1720
|
+
(0, import_type_graphql.Field)(() => Date),
|
|
1721
|
+
_ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
|
|
1722
|
+
], BaseMessageInput.prototype, "createdAt", void 0);
|
|
1723
|
+
BaseMessageInput = _ts_decorate([
|
|
1724
|
+
(0, import_type_graphql.InputType)()
|
|
1725
|
+
], BaseMessageInput);
|
|
1726
|
+
|
|
1727
|
+
// src/graphql/types/converted/index.ts
|
|
1728
|
+
var Message = class extends BaseMessageInput {
|
|
1729
|
+
type;
|
|
1730
|
+
isTextMessage() {
|
|
1731
|
+
return this.type === "TextMessage";
|
|
1732
|
+
}
|
|
1733
|
+
isActionExecutionMessage() {
|
|
1734
|
+
return this.type === "ActionExecutionMessage";
|
|
1735
|
+
}
|
|
1736
|
+
isResultMessage() {
|
|
1737
|
+
return this.type === "ResultMessage";
|
|
1738
|
+
}
|
|
1739
|
+
isAgentStateMessage() {
|
|
1740
|
+
return this.type === "AgentStateMessage";
|
|
1741
|
+
}
|
|
1742
|
+
};
|
|
1743
|
+
__name(Message, "Message");
|
|
1744
|
+
var TextMessage = class extends Message {
|
|
1745
|
+
type = "TextMessage";
|
|
1746
|
+
content;
|
|
1747
|
+
role;
|
|
1748
|
+
};
|
|
1749
|
+
__name(TextMessage, "TextMessage");
|
|
1750
|
+
var ActionExecutionMessage = class extends Message {
|
|
1751
|
+
type = "ActionExecutionMessage";
|
|
1752
|
+
name;
|
|
1753
|
+
arguments;
|
|
1754
|
+
scope;
|
|
1755
|
+
};
|
|
1756
|
+
__name(ActionExecutionMessage, "ActionExecutionMessage");
|
|
1757
|
+
var ResultMessage = class extends Message {
|
|
1758
|
+
type = "ResultMessage";
|
|
1759
|
+
actionExecutionId;
|
|
1760
|
+
actionName;
|
|
1761
|
+
result;
|
|
1762
|
+
};
|
|
1763
|
+
__name(ResultMessage, "ResultMessage");
|
|
1764
|
+
var AgentStateMessage = class extends Message {
|
|
1765
|
+
type = "AgentStateMessage";
|
|
1766
|
+
threadId;
|
|
1767
|
+
agentName;
|
|
1768
|
+
nodeName;
|
|
1769
|
+
runId;
|
|
1770
|
+
active;
|
|
1771
|
+
role;
|
|
1772
|
+
state;
|
|
1773
|
+
running;
|
|
1774
|
+
};
|
|
1775
|
+
__name(AgentStateMessage, "AgentStateMessage");
|
|
1776
|
+
|
|
1935
1777
|
// src/service-adapters/conversion.ts
|
|
1936
1778
|
var import_class_transformer = require("class-transformer");
|
|
1937
1779
|
function convertGqlInputToMessages(inputMessages) {
|
|
@@ -2010,7 +1852,7 @@ var CopilotRuntime = class {
|
|
|
2010
1852
|
const serverSideActionsInput = serverSideActions.map((action) => ({
|
|
2011
1853
|
name: action.name,
|
|
2012
1854
|
description: action.description,
|
|
2013
|
-
jsonSchema: JSON.stringify((0,
|
|
1855
|
+
jsonSchema: JSON.stringify((0, import_shared8.actionParametersToJsonSchema)(action.parameters))
|
|
2014
1856
|
}));
|
|
2015
1857
|
const actionInputs = flattenToolCallsNoDuplicates([
|
|
2016
1858
|
...serverSideActionsInput,
|
|
@@ -2063,7 +1905,7 @@ var CopilotRuntime = class {
|
|
|
2063
1905
|
async processAgentRequest(request) {
|
|
2064
1906
|
var _a;
|
|
2065
1907
|
const { messages: rawMessages, outputMessagesPromise, graphqlContext, agentSession } = request;
|
|
2066
|
-
const { threadId = (0,
|
|
1908
|
+
const { threadId = (0, import_shared8.randomId)(), agentName, nodeName } = agentSession;
|
|
2067
1909
|
const serverSideActions = await this.getServerSideActions(request);
|
|
2068
1910
|
const messages = convertGqlInputToMessages(rawMessages);
|
|
2069
1911
|
const agent = serverSideActions.find((action) => action.name === agentName && isLangGraphAgentAction(action));
|
|
@@ -2073,7 +1915,7 @@ var CopilotRuntime = class {
|
|
|
2073
1915
|
const serverSideActionsInput = serverSideActions.filter((action) => !isLangGraphAgentAction(action)).map((action) => ({
|
|
2074
1916
|
name: action.name,
|
|
2075
1917
|
description: action.description,
|
|
2076
|
-
jsonSchema: JSON.stringify((0,
|
|
1918
|
+
jsonSchema: JSON.stringify((0, import_shared8.actionParametersToJsonSchema)(action.parameters))
|
|
2077
1919
|
}));
|
|
2078
1920
|
const actionInputsWithoutAgents = flattenToolCallsNoDuplicates([
|
|
2079
1921
|
...serverSideActionsInput,
|
|
@@ -2232,7 +2074,7 @@ function _ts_metadata2(k, v) {
|
|
|
2232
2074
|
return Reflect.metadata(k, v);
|
|
2233
2075
|
}
|
|
2234
2076
|
__name(_ts_metadata2, "_ts_metadata");
|
|
2235
|
-
var MessageInput = class extends
|
|
2077
|
+
var MessageInput = class extends BaseMessageInput {
|
|
2236
2078
|
textMessage;
|
|
2237
2079
|
actionExecutionMessage;
|
|
2238
2080
|
resultMessage;
|
|
@@ -3216,7 +3058,7 @@ var UnknownErrorResponse = class extends FailedResponseStatus {
|
|
|
3216
3058
|
__name(UnknownErrorResponse, "UnknownErrorResponse");
|
|
3217
3059
|
|
|
3218
3060
|
// src/graphql/resolvers/copilot.resolver.ts
|
|
3219
|
-
var
|
|
3061
|
+
var import_shared9 = require("@copilotkit/shared");
|
|
3220
3062
|
function _ts_decorate14(decorators, target, key, desc) {
|
|
3221
3063
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3222
3064
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
@@ -3333,7 +3175,7 @@ var CopilotResolver = class {
|
|
|
3333
3175
|
rejectOutputMessagesPromise = reject;
|
|
3334
3176
|
});
|
|
3335
3177
|
logger2.debug("Processing");
|
|
3336
|
-
const { eventSource, threadId = (0,
|
|
3178
|
+
const { eventSource, threadId = (0, import_shared9.randomId)(), runId, serverSideActions, actionInputsWithoutAgents } = await copilotRuntime.processRuntimeRequest({
|
|
3337
3179
|
serviceAdapter,
|
|
3338
3180
|
messages: data.messages,
|
|
3339
3181
|
actions: data.frontend.actions,
|
|
@@ -3378,7 +3220,7 @@ var CopilotResolver = class {
|
|
|
3378
3220
|
});
|
|
3379
3221
|
outputMessages = [
|
|
3380
3222
|
(0, import_class_transformer2.plainToInstance)(TextMessage, {
|
|
3381
|
-
id: (0,
|
|
3223
|
+
id: (0, import_shared9.randomId)(),
|
|
3382
3224
|
createdAt: /* @__PURE__ */ new Date(),
|
|
3383
3225
|
content: result.reason,
|
|
3384
3226
|
role: MessageRole.assistant
|
|
@@ -3429,7 +3271,7 @@ var CopilotResolver = class {
|
|
|
3429
3271
|
(0, import_rxjs4.takeWhile)((e) => e.type != RuntimeEventTypes.TextMessageEnd)
|
|
3430
3272
|
);
|
|
3431
3273
|
const streamingTextStatus = new import_rxjs4.Subject();
|
|
3432
|
-
const messageId = (0,
|
|
3274
|
+
const messageId = (0, import_shared9.randomId)();
|
|
3433
3275
|
pushMessage({
|
|
3434
3276
|
id: messageId,
|
|
3435
3277
|
status: (0, import_rxjs4.firstValueFrom)(streamingTextStatus),
|
|
@@ -3541,7 +3383,7 @@ var CopilotResolver = class {
|
|
|
3541
3383
|
result: event.result
|
|
3542
3384
|
}, "Action execution result event received");
|
|
3543
3385
|
pushMessage({
|
|
3544
|
-
id: (0,
|
|
3386
|
+
id: (0, import_shared9.randomId)(),
|
|
3545
3387
|
status: new SuccessMessageStatus(),
|
|
3546
3388
|
createdAt: /* @__PURE__ */ new Date(),
|
|
3547
3389
|
actionExecutionId: event.actionExecutionId,
|
|
@@ -3549,7 +3391,7 @@ var CopilotResolver = class {
|
|
|
3549
3391
|
result: event.result
|
|
3550
3392
|
});
|
|
3551
3393
|
outputMessages.push((0, import_class_transformer2.plainToInstance)(ResultMessage, {
|
|
3552
|
-
id: (0,
|
|
3394
|
+
id: (0, import_shared9.randomId)(),
|
|
3553
3395
|
createdAt: /* @__PURE__ */ new Date(),
|
|
3554
3396
|
actionExecutionId: event.actionExecutionId,
|
|
3555
3397
|
actionName: event.actionName,
|
|
@@ -3561,7 +3403,7 @@ var CopilotResolver = class {
|
|
|
3561
3403
|
event
|
|
3562
3404
|
}, "Agent message event received");
|
|
3563
3405
|
pushMessage({
|
|
3564
|
-
id: (0,
|
|
3406
|
+
id: (0, import_shared9.randomId)(),
|
|
3565
3407
|
status: new SuccessMessageStatus(),
|
|
3566
3408
|
threadId: event.threadId,
|
|
3567
3409
|
agentName: event.agentName,
|
|
@@ -3574,7 +3416,7 @@ var CopilotResolver = class {
|
|
|
3574
3416
|
createdAt: /* @__PURE__ */ new Date()
|
|
3575
3417
|
});
|
|
3576
3418
|
outputMessages.push((0, import_class_transformer2.plainToInstance)(AgentStateMessage, {
|
|
3577
|
-
id: (0,
|
|
3419
|
+
id: (0, import_shared9.randomId)(),
|
|
3578
3420
|
threadId: event.threadId,
|
|
3579
3421
|
agentName: event.agentName,
|
|
3580
3422
|
nodeName: event.nodeName,
|