@copilotkit/runtime 1.9.2-next.1 → 1.9.2-next.10
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 +66 -0
- package/dist/{chunk-YV3YXRMR.mjs → chunk-5OK4GLKL.mjs} +19 -2
- package/dist/chunk-5OK4GLKL.mjs.map +1 -0
- package/dist/{chunk-RIPQZJB5.mjs → chunk-6RUTA76W.mjs} +2 -2
- package/dist/chunk-AMUJQ6IR.mjs +50 -0
- package/dist/chunk-AMUJQ6IR.mjs.map +1 -0
- package/dist/{chunk-IIXJVVTV.mjs → chunk-GS7DO47Q.mjs} +155 -78
- package/dist/chunk-GS7DO47Q.mjs.map +1 -0
- package/dist/{chunk-XGBY45FP.mjs → chunk-PMIAGZGS.mjs} +2371 -1857
- package/dist/chunk-PMIAGZGS.mjs.map +1 -0
- package/dist/{chunk-C3SWOFLO.mjs → chunk-TOBFVWZU.mjs} +2 -2
- package/dist/{chunk-KPFOAXRX.mjs → chunk-VBXBFZEL.mjs} +2 -2
- package/dist/{chunk-5BIEM2UU.mjs → chunk-XWBDEXDA.mjs} +4 -3
- package/dist/{chunk-5BIEM2UU.mjs.map → chunk-XWBDEXDA.mjs.map} +1 -1
- package/dist/{groq-adapter-25a2bd35.d.ts → groq-adapter-172a2ca4.d.ts} +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +3748 -3096
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -8
- package/dist/index.mjs.map +1 -1
- package/dist/lib/index.d.ts +7 -133
- package/dist/lib/index.js +3357 -2748
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +9 -8
- package/dist/lib/integrations/index.d.ts +3 -3
- package/dist/lib/integrations/index.js +162 -98
- package/dist/lib/integrations/index.js.map +1 -1
- package/dist/lib/integrations/index.mjs +7 -6
- package/dist/lib/integrations/nest/index.d.ts +2 -2
- package/dist/lib/integrations/nest/index.js +162 -98
- package/dist/lib/integrations/nest/index.js.map +1 -1
- package/dist/lib/integrations/nest/index.mjs +5 -4
- package/dist/lib/integrations/node-express/index.d.ts +2 -2
- package/dist/lib/integrations/node-express/index.js +162 -98
- package/dist/lib/integrations/node-express/index.js.map +1 -1
- package/dist/lib/integrations/node-express/index.mjs +5 -4
- package/dist/lib/integrations/node-http/index.d.ts +2 -2
- package/dist/lib/integrations/node-http/index.js +162 -98
- package/dist/lib/integrations/node-http/index.js.map +1 -1
- package/dist/lib/integrations/node-http/index.mjs +4 -3
- package/dist/service-adapters/index.d.ts +6 -4
- package/dist/service-adapters/index.js +225 -107
- package/dist/service-adapters/index.js.map +1 -1
- package/dist/service-adapters/index.mjs +6 -2
- package/dist/service-adapters/shared/index.d.ts +9 -0
- package/dist/service-adapters/shared/index.js +72 -0
- package/dist/service-adapters/shared/index.js.map +1 -0
- package/dist/service-adapters/shared/index.mjs +8 -0
- package/dist/service-adapters/shared/index.mjs.map +1 -0
- package/dist/{shared-e272b15a.d.ts → shared-bd953ebf.d.ts} +45 -5
- package/dist/utils/index.d.ts +17 -1
- package/dist/utils/index.js +3 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +1 -1
- package/package.json +4 -4
- package/src/agents/langgraph/event-source.ts +36 -38
- package/src/agents/langgraph/events.ts +19 -1
- package/src/graphql/resolvers/copilot.resolver.ts +108 -45
- package/src/graphql/resolvers/state.resolver.ts +3 -3
- package/src/lib/error-messages.ts +200 -0
- package/src/lib/integrations/shared.ts +43 -0
- package/src/lib/runtime/__tests__/copilot-runtime-trace.test.ts +169 -0
- package/src/lib/runtime/copilot-runtime.ts +412 -83
- package/src/lib/runtime/langgraph/langgraph-agent.ts +12 -0
- package/src/lib/runtime/remote-action-constructors.ts +28 -3
- package/src/lib/runtime/remote-lg-action.ts +130 -40
- package/src/lib/streaming.ts +125 -36
- package/src/service-adapters/anthropic/anthropic-adapter.ts +67 -8
- package/src/service-adapters/anthropic/utils.ts +3 -8
- package/src/service-adapters/events.ts +37 -81
- package/src/service-adapters/groq/groq-adapter.ts +66 -56
- package/src/service-adapters/index.ts +1 -0
- package/src/service-adapters/openai/openai-adapter.ts +18 -3
- package/src/service-adapters/shared/error-utils.ts +61 -0
- package/src/service-adapters/shared/index.ts +1 -0
- package/src/utils/failed-response-status-reasons.ts +23 -1
- package/tests/service-adapters/anthropic/anthropic-adapter.test.ts +172 -387
- package/dist/chunk-IIXJVVTV.mjs.map +0 -1
- package/dist/chunk-XGBY45FP.mjs.map +0 -1
- package/dist/chunk-YV3YXRMR.mjs.map +0 -1
- package/dist/{chunk-RIPQZJB5.mjs.map → chunk-6RUTA76W.mjs.map} +0 -0
- package/dist/{chunk-C3SWOFLO.mjs.map → chunk-TOBFVWZU.mjs.map} +0 -0
- package/dist/{chunk-KPFOAXRX.mjs.map → chunk-VBXBFZEL.mjs.map} +0 -0
- package/dist/{langserve-4a5c9217.d.ts → langserve-fc5cac89.d.ts} +7 -7
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
copilotRuntimeNodeHttpEndpoint
|
|
3
|
-
} from "../../../chunk-
|
|
4
|
-
import "../../../chunk-IIXJVVTV.mjs";
|
|
5
|
-
import "../../../chunk-5BIEM2UU.mjs";
|
|
3
|
+
} from "../../../chunk-PMIAGZGS.mjs";
|
|
6
4
|
import "../../../chunk-SHBDMA63.mjs";
|
|
5
|
+
import "../../../chunk-GS7DO47Q.mjs";
|
|
6
|
+
import "../../../chunk-XWBDEXDA.mjs";
|
|
7
|
+
import "../../../chunk-AMUJQ6IR.mjs";
|
|
7
8
|
import "../../../chunk-2OZAGFV3.mjs";
|
|
8
9
|
import "../../../chunk-FHD4JECV.mjs";
|
|
9
10
|
export {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { b as CopilotServiceAdapter, C as CopilotRuntimeChatCompletionRequest, a as CopilotRuntimeChatCompletionResponse } from '../langserve-
|
|
2
|
-
export { c as RemoteChain, R as RemoteChainParameters } from '../langserve-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { b as CopilotServiceAdapter, C as CopilotRuntimeChatCompletionRequest, a as CopilotRuntimeChatCompletionResponse } from '../langserve-fc5cac89.js';
|
|
2
|
+
export { c as RemoteChain, R as RemoteChainParameters } from '../langserve-fc5cac89.js';
|
|
3
|
+
export { convertServiceAdapterError } from './shared/index.js';
|
|
4
|
+
import { L as LangChainAdapter } from '../groq-adapter-172a2ca4.js';
|
|
5
|
+
export { G as GoogleGenerativeAIAdapter, f as GroqAdapter, e as GroqAdapterParams, a as OpenAIAdapter, O as OpenAIAdapterParams, c as OpenAIAssistantAdapter, b as OpenAIAssistantAdapterParams, d as UnifyAdapter, U as UnifyAdapterParams } from '../groq-adapter-172a2ca4.js';
|
|
5
6
|
import Anthropic from '@anthropic-ai/sdk';
|
|
6
7
|
import '../index-d4614f9b.js';
|
|
7
8
|
import '../graphql/types/base/index.js';
|
|
@@ -48,6 +49,7 @@ declare class AnthropicAdapter implements CopilotServiceAdapter {
|
|
|
48
49
|
private _anthropic;
|
|
49
50
|
get anthropic(): Anthropic;
|
|
50
51
|
constructor(params?: AnthropicAdapterParams);
|
|
52
|
+
private shouldGenerateFallbackResponse;
|
|
51
53
|
process(request: CopilotRuntimeChatCompletionRequest): Promise<CopilotRuntimeChatCompletionResponse>;
|
|
52
54
|
}
|
|
53
55
|
|
|
@@ -41,7 +41,8 @@ __export(service_adapters_exports, {
|
|
|
41
41
|
OpenAIAdapter: () => OpenAIAdapter,
|
|
42
42
|
OpenAIAssistantAdapter: () => OpenAIAssistantAdapter,
|
|
43
43
|
RemoteChain: () => RemoteChain,
|
|
44
|
-
UnifyAdapter: () => UnifyAdapter
|
|
44
|
+
UnifyAdapter: () => UnifyAdapter,
|
|
45
|
+
convertServiceAdapterError: () => convertServiceAdapterError
|
|
45
46
|
});
|
|
46
47
|
module.exports = __toCommonJS(service_adapters_exports);
|
|
47
48
|
|
|
@@ -123,11 +124,53 @@ var RemoteChain = class {
|
|
|
123
124
|
};
|
|
124
125
|
__name(RemoteChain, "RemoteChain");
|
|
125
126
|
|
|
127
|
+
// src/service-adapters/shared/error-utils.ts
|
|
128
|
+
var import_shared = require("@copilotkit/shared");
|
|
129
|
+
function convertServiceAdapterError(error, adapterName) {
|
|
130
|
+
var _a, _b, _c;
|
|
131
|
+
const errorName = ((_a = error == null ? void 0 : error.constructor) == null ? void 0 : _a.name) || error.name;
|
|
132
|
+
const errorMessage = (error == null ? void 0 : error.message) || String(error);
|
|
133
|
+
const statusCode = error.status || error.statusCode || ((_b = error.response) == null ? void 0 : _b.status);
|
|
134
|
+
const responseData = error.error || ((_c = error.response) == null ? void 0 : _c.data) || error.data;
|
|
135
|
+
const structuredError = new import_shared.CopilotKitLowLevelError({
|
|
136
|
+
error: error instanceof Error ? error : new Error(errorMessage),
|
|
137
|
+
url: `${adapterName} service adapter`,
|
|
138
|
+
message: `${adapterName} API error: ${errorMessage}`
|
|
139
|
+
});
|
|
140
|
+
if (statusCode) {
|
|
141
|
+
structuredError.statusCode = statusCode;
|
|
142
|
+
}
|
|
143
|
+
if (responseData) {
|
|
144
|
+
structuredError.responseData = responseData;
|
|
145
|
+
}
|
|
146
|
+
if (errorName) {
|
|
147
|
+
structuredError.originalErrorType = errorName;
|
|
148
|
+
}
|
|
149
|
+
let newCode;
|
|
150
|
+
if (statusCode === 401) {
|
|
151
|
+
newCode = import_shared.CopilotKitErrorCode.AUTHENTICATION_ERROR;
|
|
152
|
+
} else if (statusCode >= 400 && statusCode < 500) {
|
|
153
|
+
newCode = import_shared.CopilotKitErrorCode.CONFIGURATION_ERROR;
|
|
154
|
+
} else if (statusCode >= 500) {
|
|
155
|
+
newCode = import_shared.CopilotKitErrorCode.NETWORK_ERROR;
|
|
156
|
+
} else if (statusCode) {
|
|
157
|
+
newCode = import_shared.CopilotKitErrorCode.CONFIGURATION_ERROR;
|
|
158
|
+
} else {
|
|
159
|
+
newCode = import_shared.CopilotKitErrorCode.NETWORK_ERROR;
|
|
160
|
+
}
|
|
161
|
+
structuredError.code = newCode;
|
|
162
|
+
if (structuredError.extensions) {
|
|
163
|
+
structuredError.extensions.code = newCode;
|
|
164
|
+
}
|
|
165
|
+
return structuredError;
|
|
166
|
+
}
|
|
167
|
+
__name(convertServiceAdapterError, "convertServiceAdapterError");
|
|
168
|
+
|
|
126
169
|
// src/service-adapters/openai/openai-adapter.ts
|
|
127
170
|
var import_openai = __toESM(require("openai"));
|
|
128
171
|
|
|
129
172
|
// src/service-adapters/openai/utils.ts
|
|
130
|
-
var
|
|
173
|
+
var import_shared2 = require("@copilotkit/shared");
|
|
131
174
|
function limitMessagesToTokenCount(messages, tools, model, maxTokens) {
|
|
132
175
|
maxTokens || (maxTokens = maxTokensForOpenAIModel(model));
|
|
133
176
|
const result = [];
|
|
@@ -241,7 +284,7 @@ function convertActionInputToOpenAITool(action) {
|
|
|
241
284
|
function: {
|
|
242
285
|
name: action.name,
|
|
243
286
|
description: action.description,
|
|
244
|
-
parameters: (0,
|
|
287
|
+
parameters: (0, import_shared2.parseJson)(action.jsonSchema, {})
|
|
245
288
|
}
|
|
246
289
|
};
|
|
247
290
|
}
|
|
@@ -309,7 +352,7 @@ function convertSystemMessageToAssistantAPI(message) {
|
|
|
309
352
|
__name(convertSystemMessageToAssistantAPI, "convertSystemMessageToAssistantAPI");
|
|
310
353
|
|
|
311
354
|
// src/service-adapters/openai/openai-adapter.ts
|
|
312
|
-
var
|
|
355
|
+
var import_shared3 = require("@copilotkit/shared");
|
|
313
356
|
var DEFAULT_MODEL = "gpt-4o";
|
|
314
357
|
var OpenAIAdapter = class {
|
|
315
358
|
model = DEFAULT_MODEL;
|
|
@@ -330,7 +373,8 @@ var OpenAIAdapter = class {
|
|
|
330
373
|
async process(request) {
|
|
331
374
|
const { threadId: threadIdFromRequest, model = this.model, messages, actions, eventSource, forwardedParameters } = request;
|
|
332
375
|
const tools = actions.map(convertActionInputToOpenAITool);
|
|
333
|
-
const threadId = threadIdFromRequest ?? (0,
|
|
376
|
+
const threadId = threadIdFromRequest ?? (0, import_shared3.randomUUID)();
|
|
377
|
+
console.log("messages", messages);
|
|
334
378
|
const validToolUseIds = /* @__PURE__ */ new Set();
|
|
335
379
|
for (const message of messages) {
|
|
336
380
|
if (message.isActionExecutionMessage()) {
|
|
@@ -360,6 +404,29 @@ var OpenAIAdapter = class {
|
|
|
360
404
|
}
|
|
361
405
|
};
|
|
362
406
|
}
|
|
407
|
+
console.log("INPUT", {
|
|
408
|
+
model,
|
|
409
|
+
stream: true,
|
|
410
|
+
messages: openaiMessages,
|
|
411
|
+
...tools.length > 0 && {
|
|
412
|
+
tools
|
|
413
|
+
},
|
|
414
|
+
...(forwardedParameters == null ? void 0 : forwardedParameters.maxTokens) && {
|
|
415
|
+
max_tokens: forwardedParameters.maxTokens
|
|
416
|
+
},
|
|
417
|
+
...(forwardedParameters == null ? void 0 : forwardedParameters.stop) && {
|
|
418
|
+
stop: forwardedParameters.stop
|
|
419
|
+
},
|
|
420
|
+
...toolChoice && {
|
|
421
|
+
tool_choice: toolChoice
|
|
422
|
+
},
|
|
423
|
+
...this.disableParallelToolCalls && {
|
|
424
|
+
parallel_tool_calls: false
|
|
425
|
+
},
|
|
426
|
+
...(forwardedParameters == null ? void 0 : forwardedParameters.temperature) && {
|
|
427
|
+
temperature: forwardedParameters.temperature
|
|
428
|
+
}
|
|
429
|
+
});
|
|
363
430
|
try {
|
|
364
431
|
const stream = this.openai.beta.chat.completions.stream({
|
|
365
432
|
model,
|
|
@@ -446,14 +513,14 @@ var OpenAIAdapter = class {
|
|
|
446
513
|
});
|
|
447
514
|
}
|
|
448
515
|
} catch (error) {
|
|
449
|
-
console.error("[OpenAI] Error
|
|
450
|
-
throw error;
|
|
516
|
+
console.error("[OpenAI] Error during API call:", error);
|
|
517
|
+
throw convertServiceAdapterError(error, "OpenAI");
|
|
451
518
|
}
|
|
452
519
|
eventStream$.complete();
|
|
453
520
|
});
|
|
454
521
|
} catch (error) {
|
|
455
522
|
console.error("[OpenAI] Error during API call:", error);
|
|
456
|
-
throw error;
|
|
523
|
+
throw convertServiceAdapterError(error, "OpenAI");
|
|
457
524
|
}
|
|
458
525
|
return {
|
|
459
526
|
threadId
|
|
@@ -465,7 +532,7 @@ __name(OpenAIAdapter, "OpenAIAdapter");
|
|
|
465
532
|
// src/service-adapters/langchain/utils.ts
|
|
466
533
|
var import_messages = require("@langchain/core/messages");
|
|
467
534
|
var import_tools = require("@langchain/core/tools");
|
|
468
|
-
var
|
|
535
|
+
var import_shared5 = require("@copilotkit/shared");
|
|
469
536
|
function convertMessageToLangChainMessage(message) {
|
|
470
537
|
if (message.isTextMessage()) {
|
|
471
538
|
if (message.role == "user") {
|
|
@@ -498,7 +565,7 @@ function convertActionInputToLangChainTool(actionInput) {
|
|
|
498
565
|
return new import_tools.DynamicStructuredTool({
|
|
499
566
|
name: actionInput.name,
|
|
500
567
|
description: actionInput.description,
|
|
501
|
-
schema: (0,
|
|
568
|
+
schema: (0, import_shared5.convertJsonSchemaToZodSchema)(JSON.parse(actionInput.jsonSchema), true),
|
|
502
569
|
func: async () => {
|
|
503
570
|
return "";
|
|
504
571
|
}
|
|
@@ -531,7 +598,7 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
531
598
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
532
599
|
if (typeof result === "string") {
|
|
533
600
|
if (!actionExecution) {
|
|
534
|
-
eventStream$.sendTextMessage((0,
|
|
601
|
+
eventStream$.sendTextMessage((0, import_shared5.randomId)(), result);
|
|
535
602
|
} else {
|
|
536
603
|
eventStream$.sendActionExecutionResult({
|
|
537
604
|
actionExecutionId: actionExecution.id,
|
|
@@ -542,11 +609,11 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
542
609
|
} else if (isAIMessage(result)) {
|
|
543
610
|
maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
|
|
544
611
|
if (result.content) {
|
|
545
|
-
eventStream$.sendTextMessage((0,
|
|
612
|
+
eventStream$.sendTextMessage((0, import_shared5.randomId)(), result.content);
|
|
546
613
|
}
|
|
547
614
|
for (const toolCall of result.tool_calls) {
|
|
548
615
|
eventStream$.sendActionExecution({
|
|
549
|
-
actionExecutionId: toolCall.id || (0,
|
|
616
|
+
actionExecutionId: toolCall.id || (0, import_shared5.randomId)(),
|
|
550
617
|
actionName: toolCall.name,
|
|
551
618
|
args: JSON.stringify(toolCall.args)
|
|
552
619
|
});
|
|
@@ -554,12 +621,12 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
554
621
|
} else if (isBaseMessageChunk(result)) {
|
|
555
622
|
maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
|
|
556
623
|
if ((_a = result.lc_kwargs) == null ? void 0 : _a.content) {
|
|
557
|
-
eventStream$.sendTextMessage((0,
|
|
624
|
+
eventStream$.sendTextMessage((0, import_shared5.randomId)(), result.content);
|
|
558
625
|
}
|
|
559
626
|
if ((_b = result.lc_kwargs) == null ? void 0 : _b.tool_calls) {
|
|
560
627
|
for (const toolCall of (_c = result.lc_kwargs) == null ? void 0 : _c.tool_calls) {
|
|
561
628
|
eventStream$.sendActionExecution({
|
|
562
|
-
actionExecutionId: toolCall.id || (0,
|
|
629
|
+
actionExecutionId: toolCall.id || (0, import_shared5.randomId)(),
|
|
563
630
|
actionName: toolCall.name,
|
|
564
631
|
args: JSON.stringify(toolCall.args)
|
|
565
632
|
});
|
|
@@ -633,7 +700,7 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
633
700
|
});
|
|
634
701
|
} else if (content) {
|
|
635
702
|
mode = "message";
|
|
636
|
-
currentMessageId = ((_k = value.lc_kwargs) == null ? void 0 : _k.id) || (0,
|
|
703
|
+
currentMessageId = ((_k = value.lc_kwargs) == null ? void 0 : _k.id) || (0, import_shared5.randomId)();
|
|
637
704
|
eventStream$.sendTextMessageStart({
|
|
638
705
|
messageId: currentMessageId
|
|
639
706
|
});
|
|
@@ -690,7 +757,7 @@ function encodeResult(result) {
|
|
|
690
757
|
__name(encodeResult, "encodeResult");
|
|
691
758
|
|
|
692
759
|
// src/service-adapters/langchain/langchain-adapter.ts
|
|
693
|
-
var
|
|
760
|
+
var import_shared6 = require("@copilotkit/shared");
|
|
694
761
|
var import_promises = require("@langchain/core/callbacks/promises");
|
|
695
762
|
var LangChainAdapter = class {
|
|
696
763
|
options;
|
|
@@ -703,7 +770,7 @@ var LangChainAdapter = class {
|
|
|
703
770
|
async process(request) {
|
|
704
771
|
try {
|
|
705
772
|
const { eventSource, model, actions, messages, runId, threadId: threadIdFromRequest } = request;
|
|
706
|
-
const threadId = threadIdFromRequest ?? (0,
|
|
773
|
+
const threadId = threadIdFromRequest ?? (0, import_shared6.randomUUID)();
|
|
707
774
|
const result = await this.options.chainFn({
|
|
708
775
|
messages: messages.map(convertMessageToLangChainMessage),
|
|
709
776
|
tools: actions.map(convertActionInputToLangChainTool),
|
|
@@ -958,7 +1025,7 @@ __name(getRunIdFromStream, "getRunIdFromStream");
|
|
|
958
1025
|
|
|
959
1026
|
// src/service-adapters/unify/unify-adapter.ts
|
|
960
1027
|
var import_openai3 = __toESM(require("openai"));
|
|
961
|
-
var
|
|
1028
|
+
var import_shared7 = require("@copilotkit/shared");
|
|
962
1029
|
var UnifyAdapter = class {
|
|
963
1030
|
apiKey;
|
|
964
1031
|
model;
|
|
@@ -1000,7 +1067,7 @@ var UnifyAdapter = class {
|
|
|
1000
1067
|
for await (const chunk of stream) {
|
|
1001
1068
|
if (this.start) {
|
|
1002
1069
|
model = chunk.model;
|
|
1003
|
-
currentMessageId = (0,
|
|
1070
|
+
currentMessageId = (0, import_shared7.randomId)();
|
|
1004
1071
|
eventStream$.sendTextMessageStart({
|
|
1005
1072
|
messageId: currentMessageId
|
|
1006
1073
|
});
|
|
@@ -1067,7 +1134,7 @@ var UnifyAdapter = class {
|
|
|
1067
1134
|
eventStream$.complete();
|
|
1068
1135
|
});
|
|
1069
1136
|
return {
|
|
1070
|
-
threadId: request.threadId || (0,
|
|
1137
|
+
threadId: request.threadId || (0, import_shared7.randomUUID)()
|
|
1071
1138
|
};
|
|
1072
1139
|
}
|
|
1073
1140
|
};
|
|
@@ -1075,7 +1142,7 @@ __name(UnifyAdapter, "UnifyAdapter");
|
|
|
1075
1142
|
|
|
1076
1143
|
// src/service-adapters/groq/groq-adapter.ts
|
|
1077
1144
|
var import_groq_sdk = require("groq-sdk");
|
|
1078
|
-
var
|
|
1145
|
+
var import_shared8 = require("@copilotkit/shared");
|
|
1079
1146
|
var DEFAULT_MODEL2 = "llama-3.3-70b-versatile";
|
|
1080
1147
|
var GroqAdapter = class {
|
|
1081
1148
|
model = DEFAULT_MODEL2;
|
|
@@ -1107,90 +1174,99 @@ var GroqAdapter = class {
|
|
|
1107
1174
|
}
|
|
1108
1175
|
};
|
|
1109
1176
|
}
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
stream
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1177
|
+
let stream;
|
|
1178
|
+
try {
|
|
1179
|
+
stream = await this.groq.chat.completions.create({
|
|
1180
|
+
model,
|
|
1181
|
+
stream: true,
|
|
1182
|
+
messages: openaiMessages,
|
|
1183
|
+
...tools.length > 0 && {
|
|
1184
|
+
tools
|
|
1185
|
+
},
|
|
1186
|
+
...(forwardedParameters == null ? void 0 : forwardedParameters.maxTokens) && {
|
|
1187
|
+
max_tokens: forwardedParameters.maxTokens
|
|
1188
|
+
},
|
|
1189
|
+
...(forwardedParameters == null ? void 0 : forwardedParameters.stop) && {
|
|
1190
|
+
stop: forwardedParameters.stop
|
|
1191
|
+
},
|
|
1192
|
+
...toolChoice && {
|
|
1193
|
+
tool_choice: toolChoice
|
|
1194
|
+
},
|
|
1195
|
+
...this.disableParallelToolCalls && {
|
|
1196
|
+
parallel_tool_calls: false
|
|
1197
|
+
},
|
|
1198
|
+
...(forwardedParameters == null ? void 0 : forwardedParameters.temperature) && {
|
|
1199
|
+
temperature: forwardedParameters.temperature
|
|
1200
|
+
}
|
|
1201
|
+
});
|
|
1202
|
+
} catch (error) {
|
|
1203
|
+
throw convertServiceAdapterError(error, "Groq");
|
|
1204
|
+
}
|
|
1133
1205
|
eventSource.stream(async (eventStream$) => {
|
|
1134
1206
|
var _a, _b;
|
|
1135
1207
|
let mode = null;
|
|
1136
1208
|
let currentMessageId;
|
|
1137
1209
|
let currentToolCallId;
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
mode
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
});
|
|
1146
|
-
} else if (mode === "function" && (toolCall === void 0 || (toolCall == null ? void 0 : toolCall.id))) {
|
|
1147
|
-
mode = null;
|
|
1148
|
-
eventStream$.sendActionExecutionEnd({
|
|
1149
|
-
actionExecutionId: currentToolCallId
|
|
1150
|
-
});
|
|
1151
|
-
}
|
|
1152
|
-
if (mode === null) {
|
|
1153
|
-
if (toolCall == null ? void 0 : toolCall.id) {
|
|
1154
|
-
mode = "function";
|
|
1155
|
-
currentToolCallId = toolCall.id;
|
|
1156
|
-
eventStream$.sendActionExecutionStart({
|
|
1157
|
-
actionExecutionId: currentToolCallId,
|
|
1158
|
-
actionName: toolCall.function.name,
|
|
1159
|
-
parentMessageId: chunk.id
|
|
1160
|
-
});
|
|
1161
|
-
} else if (content) {
|
|
1162
|
-
mode = "message";
|
|
1163
|
-
currentMessageId = chunk.id;
|
|
1164
|
-
eventStream$.sendTextMessageStart({
|
|
1210
|
+
try {
|
|
1211
|
+
for await (const chunk of stream) {
|
|
1212
|
+
const toolCall = (_a = chunk.choices[0].delta.tool_calls) == null ? void 0 : _a[0];
|
|
1213
|
+
const content = chunk.choices[0].delta.content;
|
|
1214
|
+
if (mode === "message" && (toolCall == null ? void 0 : toolCall.id)) {
|
|
1215
|
+
mode = null;
|
|
1216
|
+
eventStream$.sendTextMessageEnd({
|
|
1165
1217
|
messageId: currentMessageId
|
|
1166
1218
|
});
|
|
1219
|
+
} else if (mode === "function" && (toolCall === void 0 || (toolCall == null ? void 0 : toolCall.id))) {
|
|
1220
|
+
mode = null;
|
|
1221
|
+
eventStream$.sendActionExecutionEnd({
|
|
1222
|
+
actionExecutionId: currentToolCallId
|
|
1223
|
+
});
|
|
1224
|
+
}
|
|
1225
|
+
if (mode === null) {
|
|
1226
|
+
if (toolCall == null ? void 0 : toolCall.id) {
|
|
1227
|
+
mode = "function";
|
|
1228
|
+
currentToolCallId = toolCall.id;
|
|
1229
|
+
eventStream$.sendActionExecutionStart({
|
|
1230
|
+
actionExecutionId: currentToolCallId,
|
|
1231
|
+
actionName: toolCall.function.name,
|
|
1232
|
+
parentMessageId: chunk.id
|
|
1233
|
+
});
|
|
1234
|
+
} else if (content) {
|
|
1235
|
+
mode = "message";
|
|
1236
|
+
currentMessageId = chunk.id;
|
|
1237
|
+
eventStream$.sendTextMessageStart({
|
|
1238
|
+
messageId: currentMessageId
|
|
1239
|
+
});
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
if (mode === "message" && content) {
|
|
1243
|
+
eventStream$.sendTextMessageContent({
|
|
1244
|
+
messageId: currentMessageId,
|
|
1245
|
+
content
|
|
1246
|
+
});
|
|
1247
|
+
} else if (mode === "function" && ((_b = toolCall == null ? void 0 : toolCall.function) == null ? void 0 : _b.arguments)) {
|
|
1248
|
+
eventStream$.sendActionExecutionArgs({
|
|
1249
|
+
actionExecutionId: currentToolCallId,
|
|
1250
|
+
args: toolCall.function.arguments
|
|
1251
|
+
});
|
|
1167
1252
|
}
|
|
1168
1253
|
}
|
|
1169
|
-
if (mode === "message"
|
|
1170
|
-
eventStream$.
|
|
1171
|
-
messageId: currentMessageId
|
|
1172
|
-
content
|
|
1254
|
+
if (mode === "message") {
|
|
1255
|
+
eventStream$.sendTextMessageEnd({
|
|
1256
|
+
messageId: currentMessageId
|
|
1173
1257
|
});
|
|
1174
|
-
} else if (mode === "function"
|
|
1175
|
-
eventStream$.
|
|
1176
|
-
actionExecutionId: currentToolCallId
|
|
1177
|
-
args: toolCall.function.arguments
|
|
1258
|
+
} else if (mode === "function") {
|
|
1259
|
+
eventStream$.sendActionExecutionEnd({
|
|
1260
|
+
actionExecutionId: currentToolCallId
|
|
1178
1261
|
});
|
|
1179
1262
|
}
|
|
1180
|
-
}
|
|
1181
|
-
|
|
1182
|
-
eventStream$.sendTextMessageEnd({
|
|
1183
|
-
messageId: currentMessageId
|
|
1184
|
-
});
|
|
1185
|
-
} else if (mode === "function") {
|
|
1186
|
-
eventStream$.sendActionExecutionEnd({
|
|
1187
|
-
actionExecutionId: currentToolCallId
|
|
1188
|
-
});
|
|
1263
|
+
} catch (error) {
|
|
1264
|
+
throw convertServiceAdapterError(error, "Groq");
|
|
1189
1265
|
}
|
|
1190
1266
|
eventStream$.complete();
|
|
1191
1267
|
});
|
|
1192
1268
|
return {
|
|
1193
|
-
threadId: request.threadId || (0,
|
|
1269
|
+
threadId: request.threadId || (0, import_shared8.randomUUID)()
|
|
1194
1270
|
};
|
|
1195
1271
|
}
|
|
1196
1272
|
};
|
|
@@ -1336,7 +1412,7 @@ function convertMessageToAnthropicMessage(message) {
|
|
|
1336
1412
|
content: [
|
|
1337
1413
|
{
|
|
1338
1414
|
type: "tool_result",
|
|
1339
|
-
content: message.result,
|
|
1415
|
+
content: message.result || "Action completed successfully",
|
|
1340
1416
|
tool_use_id: message.actionExecutionId
|
|
1341
1417
|
}
|
|
1342
1418
|
]
|
|
@@ -1346,7 +1422,7 @@ function convertMessageToAnthropicMessage(message) {
|
|
|
1346
1422
|
__name(convertMessageToAnthropicMessage, "convertMessageToAnthropicMessage");
|
|
1347
1423
|
|
|
1348
1424
|
// src/service-adapters/anthropic/anthropic-adapter.ts
|
|
1349
|
-
var
|
|
1425
|
+
var import_shared10 = require("@copilotkit/shared");
|
|
1350
1426
|
var DEFAULT_MODEL3 = "claude-3-5-sonnet-latest";
|
|
1351
1427
|
var AnthropicAdapter = class {
|
|
1352
1428
|
model = DEFAULT_MODEL3;
|
|
@@ -1360,6 +1436,22 @@ var AnthropicAdapter = class {
|
|
|
1360
1436
|
this.model = params.model;
|
|
1361
1437
|
}
|
|
1362
1438
|
}
|
|
1439
|
+
shouldGenerateFallbackResponse(messages) {
|
|
1440
|
+
var _a, _b, _c;
|
|
1441
|
+
if (messages.length === 0)
|
|
1442
|
+
return false;
|
|
1443
|
+
const lastMessage = messages[messages.length - 1];
|
|
1444
|
+
const endsWithToolResult = lastMessage.role === "user" && Array.isArray(lastMessage.content) && lastMessage.content.some((content) => content.type === "tool_result");
|
|
1445
|
+
if (messages.length >= 3 && endsWithToolResult) {
|
|
1446
|
+
const lastThree = messages.slice(-3);
|
|
1447
|
+
const hasRecentToolPattern = ((_a = lastThree[0]) == null ? void 0 : _a.role) === "user" && // Initial user message
|
|
1448
|
+
((_b = lastThree[1]) == null ? void 0 : _b.role) === "assistant" && // Assistant tool use
|
|
1449
|
+
Array.isArray(lastThree[1].content) && lastThree[1].content.some((content) => content.type === "tool_use") && ((_c = lastThree[2]) == null ? void 0 : _c.role) === "user" && // Tool result
|
|
1450
|
+
Array.isArray(lastThree[2].content) && lastThree[2].content.some((content) => content.type === "tool_result");
|
|
1451
|
+
return hasRecentToolPattern;
|
|
1452
|
+
}
|
|
1453
|
+
return endsWithToolResult;
|
|
1454
|
+
}
|
|
1363
1455
|
async process(request) {
|
|
1364
1456
|
const { threadId, model = this.model, messages: rawMessages, actions, eventSource, forwardedParameters } = request;
|
|
1365
1457
|
const tools = actions.map(convertActionInputToAnthropicTool);
|
|
@@ -1374,18 +1466,22 @@ var AnthropicAdapter = class {
|
|
|
1374
1466
|
validToolUseIds.add(message.id);
|
|
1375
1467
|
}
|
|
1376
1468
|
}
|
|
1469
|
+
const processedToolResultIds = /* @__PURE__ */ new Set();
|
|
1377
1470
|
const anthropicMessages = messages.map((message) => {
|
|
1378
1471
|
if (message.isResultMessage()) {
|
|
1379
1472
|
if (!validToolUseIds.has(message.actionExecutionId)) {
|
|
1380
1473
|
return null;
|
|
1381
1474
|
}
|
|
1382
|
-
|
|
1475
|
+
if (processedToolResultIds.has(message.actionExecutionId)) {
|
|
1476
|
+
return null;
|
|
1477
|
+
}
|
|
1478
|
+
processedToolResultIds.add(message.actionExecutionId);
|
|
1383
1479
|
return {
|
|
1384
1480
|
role: "user",
|
|
1385
1481
|
content: [
|
|
1386
1482
|
{
|
|
1387
1483
|
type: "tool_result",
|
|
1388
|
-
content: message.result,
|
|
1484
|
+
content: message.result || "Action completed successfully",
|
|
1389
1485
|
tool_use_id: message.actionExecutionId
|
|
1390
1486
|
}
|
|
1391
1487
|
]
|
|
@@ -1428,14 +1524,16 @@ var AnthropicAdapter = class {
|
|
|
1428
1524
|
eventSource.stream(async (eventStream$) => {
|
|
1429
1525
|
let mode = null;
|
|
1430
1526
|
let didOutputText = false;
|
|
1431
|
-
let currentMessageId = (0,
|
|
1432
|
-
let currentToolCallId = (0,
|
|
1527
|
+
let currentMessageId = (0, import_shared10.randomId)();
|
|
1528
|
+
let currentToolCallId = (0, import_shared10.randomId)();
|
|
1433
1529
|
let filterThinkingTextBuffer = new FilterThinkingTextBuffer();
|
|
1530
|
+
let hasReceivedContent = false;
|
|
1434
1531
|
try {
|
|
1435
1532
|
for await (const chunk of stream) {
|
|
1436
1533
|
if (chunk.type === "message_start") {
|
|
1437
1534
|
currentMessageId = chunk.message.id;
|
|
1438
1535
|
} else if (chunk.type === "content_block_start") {
|
|
1536
|
+
hasReceivedContent = true;
|
|
1439
1537
|
if (chunk.content_block.type === "text") {
|
|
1440
1538
|
didOutputText = false;
|
|
1441
1539
|
filterThinkingTextBuffer.reset();
|
|
@@ -1485,17 +1583,36 @@ var AnthropicAdapter = class {
|
|
|
1485
1583
|
}
|
|
1486
1584
|
}
|
|
1487
1585
|
} catch (error) {
|
|
1488
|
-
|
|
1489
|
-
|
|
1586
|
+
throw convertServiceAdapterError(error, "Anthropic");
|
|
1587
|
+
}
|
|
1588
|
+
if (!hasReceivedContent && this.shouldGenerateFallbackResponse(limitedMessages)) {
|
|
1589
|
+
let fallbackContent = "Task completed successfully.";
|
|
1590
|
+
const lastMessage = limitedMessages[limitedMessages.length - 1];
|
|
1591
|
+
if ((lastMessage == null ? void 0 : lastMessage.role) === "user" && Array.isArray(lastMessage.content)) {
|
|
1592
|
+
const toolResult = lastMessage.content.find((c) => c.type === "tool_result");
|
|
1593
|
+
if ((toolResult == null ? void 0 : toolResult.content) && toolResult.content !== "Action completed successfully") {
|
|
1594
|
+
fallbackContent = toolResult.content;
|
|
1595
|
+
}
|
|
1596
|
+
}
|
|
1597
|
+
currentMessageId = (0, import_shared10.randomId)();
|
|
1598
|
+
eventStream$.sendTextMessageStart({
|
|
1599
|
+
messageId: currentMessageId
|
|
1600
|
+
});
|
|
1601
|
+
eventStream$.sendTextMessageContent({
|
|
1602
|
+
messageId: currentMessageId,
|
|
1603
|
+
content: fallbackContent
|
|
1604
|
+
});
|
|
1605
|
+
eventStream$.sendTextMessageEnd({
|
|
1606
|
+
messageId: currentMessageId
|
|
1607
|
+
});
|
|
1490
1608
|
}
|
|
1491
1609
|
eventStream$.complete();
|
|
1492
1610
|
});
|
|
1493
1611
|
} catch (error) {
|
|
1494
|
-
|
|
1495
|
-
throw error;
|
|
1612
|
+
throw convertServiceAdapterError(error, "Anthropic");
|
|
1496
1613
|
}
|
|
1497
1614
|
return {
|
|
1498
|
-
threadId: threadId || (0,
|
|
1615
|
+
threadId: threadId || (0, import_shared10.randomUUID)()
|
|
1499
1616
|
};
|
|
1500
1617
|
}
|
|
1501
1618
|
};
|
|
@@ -1535,7 +1652,7 @@ var FilterThinkingTextBuffer = /* @__PURE__ */ __name(class FilterThinkingTextBu
|
|
|
1535
1652
|
|
|
1536
1653
|
// src/service-adapters/experimental/ollama/ollama-adapter.ts
|
|
1537
1654
|
var import_ollama = require("@langchain/community/llms/ollama");
|
|
1538
|
-
var
|
|
1655
|
+
var import_shared12 = require("@copilotkit/shared");
|
|
1539
1656
|
var DEFAULT_MODEL4 = "llama3:latest";
|
|
1540
1657
|
var ExperimentalOllamaAdapter = class {
|
|
1541
1658
|
model;
|
|
@@ -1554,7 +1671,7 @@ var ExperimentalOllamaAdapter = class {
|
|
|
1554
1671
|
const contents = messages.filter((m) => m.isTextMessage()).map((m) => m.content);
|
|
1555
1672
|
const _stream = await ollama.stream(contents);
|
|
1556
1673
|
eventSource.stream(async (eventStream$) => {
|
|
1557
|
-
const currentMessageId = (0,
|
|
1674
|
+
const currentMessageId = (0, import_shared12.randomId)();
|
|
1558
1675
|
eventStream$.sendTextMessageStart({
|
|
1559
1676
|
messageId: currentMessageId
|
|
1560
1677
|
});
|
|
@@ -1570,7 +1687,7 @@ var ExperimentalOllamaAdapter = class {
|
|
|
1570
1687
|
eventStream$.complete();
|
|
1571
1688
|
});
|
|
1572
1689
|
return {
|
|
1573
|
-
threadId: request.threadId || (0,
|
|
1690
|
+
threadId: request.threadId || (0, import_shared12.randomUUID)()
|
|
1574
1691
|
};
|
|
1575
1692
|
}
|
|
1576
1693
|
};
|
|
@@ -1598,11 +1715,11 @@ var BedrockAdapter = class extends LangChainAdapter {
|
|
|
1598
1715
|
__name(BedrockAdapter, "BedrockAdapter");
|
|
1599
1716
|
|
|
1600
1717
|
// src/service-adapters/empty/empty-adapter.ts
|
|
1601
|
-
var
|
|
1718
|
+
var import_shared13 = require("@copilotkit/shared");
|
|
1602
1719
|
var EmptyAdapter = class {
|
|
1603
1720
|
async process(request) {
|
|
1604
1721
|
return {
|
|
1605
|
-
threadId: request.threadId || (0,
|
|
1722
|
+
threadId: request.threadId || (0, import_shared13.randomUUID)()
|
|
1606
1723
|
};
|
|
1607
1724
|
}
|
|
1608
1725
|
};
|
|
@@ -1621,6 +1738,7 @@ var ExperimentalEmptyAdapter = EmptyAdapter;
|
|
|
1621
1738
|
OpenAIAdapter,
|
|
1622
1739
|
OpenAIAssistantAdapter,
|
|
1623
1740
|
RemoteChain,
|
|
1624
|
-
UnifyAdapter
|
|
1741
|
+
UnifyAdapter,
|
|
1742
|
+
convertServiceAdapterError
|
|
1625
1743
|
});
|
|
1626
1744
|
//# sourceMappingURL=index.js.map
|