@copilotkit/runtime 1.55.2-next.0 → 1.55.2-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/agent/converters/aisdk.cjs +215 -0
- package/dist/agent/converters/aisdk.cjs.map +1 -0
- package/dist/agent/converters/aisdk.d.cts +18 -0
- package/dist/agent/converters/aisdk.d.cts.map +1 -0
- package/dist/agent/converters/aisdk.d.mts +18 -0
- package/dist/agent/converters/aisdk.d.mts.map +1 -0
- package/dist/agent/converters/aisdk.mjs +214 -0
- package/dist/agent/converters/aisdk.mjs.map +1 -0
- package/dist/agent/converters/index.d.mts +3 -0
- package/dist/agent/converters/tanstack.cjs +180 -0
- package/dist/agent/converters/tanstack.cjs.map +1 -0
- package/dist/agent/converters/tanstack.d.cts +68 -0
- package/dist/agent/converters/tanstack.d.cts.map +1 -0
- package/dist/agent/converters/tanstack.d.mts +68 -0
- package/dist/agent/converters/tanstack.d.mts.map +1 -0
- package/dist/agent/converters/tanstack.mjs +178 -0
- package/dist/agent/converters/tanstack.mjs.map +1 -0
- package/dist/agent/index.cjs +111 -17
- package/dist/agent/index.cjs.map +1 -1
- package/dist/agent/index.d.cts +61 -4
- package/dist/agent/index.d.cts.map +1 -1
- package/dist/agent/index.d.mts +62 -4
- package/dist/agent/index.d.mts.map +1 -1
- package/dist/agent/index.mjs +111 -17
- package/dist/agent/index.mjs.map +1 -1
- package/dist/lib/integrations/nextjs/pages-router.cjs.map +1 -1
- package/dist/lib/integrations/nextjs/pages-router.d.cts.map +1 -1
- package/dist/lib/integrations/nextjs/pages-router.d.mts.map +1 -1
- package/dist/lib/integrations/nextjs/pages-router.mjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.cjs +4 -2
- package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.mjs +4 -2
- package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
- package/dist/lib/runtime/mcp-tools-utils.cjs +1 -1
- package/dist/lib/runtime/mcp-tools-utils.cjs.map +1 -1
- package/dist/lib/runtime/mcp-tools-utils.mjs +1 -1
- package/dist/lib/runtime/mcp-tools-utils.mjs.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.mjs +1 -1
- package/dist/service-adapters/anthropic/utils.cjs +1 -1
- package/dist/service-adapters/anthropic/utils.cjs.map +1 -1
- package/dist/service-adapters/anthropic/utils.mjs +1 -1
- package/dist/service-adapters/anthropic/utils.mjs.map +1 -1
- package/dist/service-adapters/openai/utils.cjs +1 -1
- package/dist/service-adapters/openai/utils.cjs.map +1 -1
- package/dist/service-adapters/openai/utils.mjs +1 -1
- package/dist/service-adapters/openai/utils.mjs.map +1 -1
- package/dist/v2/index.cjs +5 -0
- package/dist/v2/index.d.cts +4 -2
- package/dist/v2/index.d.mts +4 -2
- package/dist/v2/index.mjs +3 -1
- package/package.json +2 -2
- package/src/agent/__tests__/agent-test-helpers.ts +446 -0
- package/src/agent/__tests__/agent.test.ts +593 -0
- package/src/agent/__tests__/converter-aisdk.test.ts +692 -0
- package/src/agent/__tests__/converter-custom.test.ts +319 -0
- package/src/agent/__tests__/converter-tanstack-input.test.ts +211 -0
- package/src/agent/__tests__/converter-tanstack.test.ts +314 -0
- package/src/agent/__tests__/multimodal-tanstack.test.ts +284 -0
- package/src/agent/__tests__/test-helpers.ts +12 -8
- package/src/agent/converters/aisdk.ts +326 -0
- package/src/agent/converters/index.ts +7 -0
- package/src/agent/converters/tanstack.ts +286 -0
- package/src/agent/index.ts +245 -26
- package/src/lib/integrations/nextjs/pages-router.ts +1 -0
- package/src/lib/runtime/copilot-runtime.ts +21 -12
- package/src/lib/runtime/mcp-tools-utils.ts +1 -1
- package/src/service-adapters/anthropic/utils.ts +1 -1
- package/src/service-adapters/openai/utils.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/agent/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/agent/index.ts"],"mappings":"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"}
|
package/dist/agent/index.d.mts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
+
import { convertAISDKStream } from "./converters/aisdk.mjs";
|
|
3
|
+
import { TanStackChatMessage, TanStackInputResult, convertInputToTanStackAI, convertTanStackStream } from "./converters/tanstack.mjs";
|
|
4
|
+
import "./converters/index.mjs";
|
|
2
5
|
import { InferSchemaOutput, StandardSchemaV1 } from "@copilotkit/shared";
|
|
3
6
|
import { Observable } from "rxjs";
|
|
4
7
|
import { AbstractAgent, BaseEvent, Message, RunAgentInput } from "@ag-ui/client";
|
|
@@ -136,9 +139,54 @@ declare function convertToolsToVercelAITools(tools: RunAgentInput["tools"]): Too
|
|
|
136
139
|
*/
|
|
137
140
|
declare function convertToolDefinitionsToVercelAITools(tools: ToolDefinition[]): ToolSet;
|
|
138
141
|
/**
|
|
139
|
-
*
|
|
142
|
+
* Context passed to the user-supplied factory function in factory mode.
|
|
140
143
|
*/
|
|
141
|
-
interface
|
|
144
|
+
interface AgentFactoryContext {
|
|
145
|
+
input: RunAgentInput;
|
|
146
|
+
/**
|
|
147
|
+
* Prefer `abortSignal` for most use cases (AI SDK, fetch, custom backends).
|
|
148
|
+
* Provided for backends like TanStack AI that require the full AbortController.
|
|
149
|
+
* Do NOT call `.abort()` on this controller — use `abortRun()` on the agent instead.
|
|
150
|
+
*/
|
|
151
|
+
abortController: AbortController;
|
|
152
|
+
abortSignal: AbortSignal;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Factory config for AI SDK backend.
|
|
156
|
+
* The factory must return an object with a `fullStream` async iterable
|
|
157
|
+
* (compatible with the result of `streamText()` — only `fullStream` is consumed).
|
|
158
|
+
*/
|
|
159
|
+
interface BuiltInAgentAISDKFactoryConfig {
|
|
160
|
+
type: "aisdk";
|
|
161
|
+
factory: (ctx: AgentFactoryContext) => {
|
|
162
|
+
fullStream: AsyncIterable<unknown>;
|
|
163
|
+
} | Promise<{
|
|
164
|
+
fullStream: AsyncIterable<unknown>;
|
|
165
|
+
}>;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Factory config for TanStack AI backend.
|
|
169
|
+
* The factory must return an async iterable of TanStack AI stream chunks.
|
|
170
|
+
*/
|
|
171
|
+
interface BuiltInAgentTanStackFactoryConfig {
|
|
172
|
+
type: "tanstack";
|
|
173
|
+
factory: (ctx: AgentFactoryContext) => AsyncIterable<unknown> | Promise<AsyncIterable<unknown>>;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Factory config for a custom backend that directly yields AG-UI events.
|
|
177
|
+
*/
|
|
178
|
+
interface BuiltInAgentCustomFactoryConfig {
|
|
179
|
+
type: "custom";
|
|
180
|
+
factory: (ctx: AgentFactoryContext) => AsyncIterable<BaseEvent> | Promise<AsyncIterable<BaseEvent>>;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Union of all factory-mode configurations.
|
|
184
|
+
*/
|
|
185
|
+
type BuiltInAgentFactoryConfig = BuiltInAgentAISDKFactoryConfig | BuiltInAgentTanStackFactoryConfig | BuiltInAgentCustomFactoryConfig;
|
|
186
|
+
/**
|
|
187
|
+
* Classic config — BuiltInAgent handles streamText, tools, MCP, state tools, prompt building.
|
|
188
|
+
*/
|
|
189
|
+
interface BuiltInAgentClassicConfig {
|
|
142
190
|
/**
|
|
143
191
|
* The model to use
|
|
144
192
|
*/
|
|
@@ -239,6 +287,14 @@ interface BuiltInAgentConfiguration {
|
|
|
239
287
|
*/
|
|
240
288
|
providerOptions?: Record<string, any>;
|
|
241
289
|
}
|
|
290
|
+
/**
|
|
291
|
+
* Configuration for BuiltInAgent.
|
|
292
|
+
*
|
|
293
|
+
* Two modes:
|
|
294
|
+
* - **Classic** (model + params): BuiltInAgent handles everything — streamText, tools, MCP, state tools.
|
|
295
|
+
* - **Factory** (type + factory): You own the LLM call. BuiltInAgent handles lifecycle only.
|
|
296
|
+
*/
|
|
297
|
+
type BuiltInAgentConfiguration = BuiltInAgentClassicConfig | BuiltInAgentFactoryConfig;
|
|
242
298
|
declare class BuiltInAgent extends AbstractAgent {
|
|
243
299
|
private config;
|
|
244
300
|
private abortController?;
|
|
@@ -248,6 +304,7 @@ declare class BuiltInAgent extends AbstractAgent {
|
|
|
248
304
|
*/
|
|
249
305
|
canOverride(property: OverridableProperty): boolean;
|
|
250
306
|
run(input: RunAgentInput): Observable<BaseEvent>;
|
|
307
|
+
private runFactory;
|
|
251
308
|
clone(): BuiltInAgent;
|
|
252
309
|
abortRun(): void;
|
|
253
310
|
}
|
|
@@ -257,7 +314,8 @@ declare class BuiltInAgent extends AbstractAgent {
|
|
|
257
314
|
declare class BasicAgent extends BuiltInAgent {
|
|
258
315
|
constructor(config: BuiltInAgentConfiguration);
|
|
259
316
|
}
|
|
260
|
-
|
|
317
|
+
/** @deprecated Use BuiltInAgentClassicConfig instead */
|
|
318
|
+
type BasicAgentConfiguration = BuiltInAgentClassicConfig;
|
|
261
319
|
//#endregion
|
|
262
|
-
export { BasicAgent, BasicAgentConfiguration, BuiltInAgent, BuiltInAgentConfiguration, BuiltInAgentModel, MCPClientConfig, MCPClientConfigHTTP, MCPClientConfigSSE, MCPClientProvider, MessageConversionOptions, ModelSpecifier, OverridableProperty, ToolDefinition, convertJsonSchemaToZodSchema$1 as convertJsonSchemaToZodSchema, convertMessagesToVercelAISDKMessages, convertToolDefinitionsToVercelAITools, convertToolsToVercelAITools, defineTool, resolveModel };
|
|
320
|
+
export { AgentFactoryContext, BasicAgent, BasicAgentConfiguration, BuiltInAgent, BuiltInAgentAISDKFactoryConfig, BuiltInAgentClassicConfig, BuiltInAgentConfiguration, BuiltInAgentCustomFactoryConfig, BuiltInAgentFactoryConfig, BuiltInAgentModel, BuiltInAgentTanStackFactoryConfig, MCPClientConfig, MCPClientConfigHTTP, MCPClientConfigSSE, MCPClientProvider, MessageConversionOptions, ModelSpecifier, OverridableProperty, ToolDefinition, convertJsonSchemaToZodSchema$1 as convertJsonSchemaToZodSchema, convertMessagesToVercelAISDKMessages, convertToolDefinitionsToVercelAITools, convertToolsToVercelAITools, defineTool, resolveModel };
|
|
263
321
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/agent/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/agent/index.ts"],"mappings":"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"}
|
package/dist/agent/index.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
+
import { convertAISDKStream } from "./converters/aisdk.mjs";
|
|
3
|
+
import { convertInputToTanStackAI, convertTanStackStream } from "./converters/tanstack.mjs";
|
|
2
4
|
import { createOpenAI } from "@ai-sdk/openai";
|
|
3
5
|
import { randomUUID, safeParseToolArgs, schemaToJsonSchema } from "@copilotkit/shared";
|
|
4
6
|
import { Observable } from "rxjs";
|
|
@@ -309,6 +311,12 @@ function convertToolDefinitionsToVercelAITools(tools) {
|
|
|
309
311
|
}
|
|
310
312
|
return result;
|
|
311
313
|
}
|
|
314
|
+
/**
|
|
315
|
+
* Type guard: returns true if this is a factory-mode config.
|
|
316
|
+
*/
|
|
317
|
+
function isFactoryConfig(config) {
|
|
318
|
+
return "factory" in config;
|
|
319
|
+
}
|
|
312
320
|
var BuiltInAgent = class BuiltInAgent extends AbstractAgent {
|
|
313
321
|
constructor(config) {
|
|
314
322
|
super();
|
|
@@ -318,9 +326,14 @@ var BuiltInAgent = class BuiltInAgent extends AbstractAgent {
|
|
|
318
326
|
* Check if a property can be overridden by forwardedProps
|
|
319
327
|
*/
|
|
320
328
|
canOverride(property) {
|
|
329
|
+
if (isFactoryConfig(this.config)) return false;
|
|
321
330
|
return this.config?.overridableProperties?.includes(property) ?? false;
|
|
322
331
|
}
|
|
323
332
|
run(input) {
|
|
333
|
+
if (isFactoryConfig(this.config)) return this.runFactory(input, this.config);
|
|
334
|
+
if (this.abortController) throw new Error("Agent is already running. Call abortRun() first or create a new instance.");
|
|
335
|
+
this.abortController = new AbortController();
|
|
336
|
+
const abortController = this.abortController;
|
|
324
337
|
return new Observable((subscriber) => {
|
|
325
338
|
const startEvent = {
|
|
326
339
|
type: EventType.RUN_STARTED,
|
|
@@ -405,8 +418,6 @@ This is state from the application that you can edit by calling AGUISendStateSna
|
|
|
405
418
|
}
|
|
406
419
|
const mcpClients = [];
|
|
407
420
|
(async () => {
|
|
408
|
-
const abortController = new AbortController();
|
|
409
|
-
this.abortController = abortController;
|
|
410
421
|
let terminalEventEmitted = false;
|
|
411
422
|
let messageId = randomUUID();
|
|
412
423
|
let reasoningMessageId = randomUUID();
|
|
@@ -626,28 +637,40 @@ This is state from the application that you can edit by calling AGUISendStateSna
|
|
|
626
637
|
break;
|
|
627
638
|
}
|
|
628
639
|
case "tool-result": {
|
|
629
|
-
const toolResult = "output" in part ? part.output : null;
|
|
640
|
+
const toolResult = "output" in part ? part.output : "result" in part ? part.result : null;
|
|
630
641
|
const toolName = "toolName" in part ? part.toolName : "";
|
|
631
642
|
toolCallStates.delete(part.toolCallId);
|
|
632
643
|
if (toolName === "AGUISendStateSnapshot" && toolResult && typeof toolResult === "object") {
|
|
633
|
-
const
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
644
|
+
const snapshot = toolResult.snapshot;
|
|
645
|
+
if (snapshot !== void 0) {
|
|
646
|
+
const stateSnapshotEvent = {
|
|
647
|
+
type: EventType.STATE_SNAPSHOT,
|
|
648
|
+
snapshot
|
|
649
|
+
};
|
|
650
|
+
subscriber.next(stateSnapshotEvent);
|
|
651
|
+
}
|
|
638
652
|
} else if (toolName === "AGUISendStateDelta" && toolResult && typeof toolResult === "object") {
|
|
639
|
-
const
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
653
|
+
const delta = toolResult.delta;
|
|
654
|
+
if (delta !== void 0) {
|
|
655
|
+
const stateDeltaEvent = {
|
|
656
|
+
type: EventType.STATE_DELTA,
|
|
657
|
+
delta
|
|
658
|
+
};
|
|
659
|
+
subscriber.next(stateDeltaEvent);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
let serializedResult;
|
|
663
|
+
try {
|
|
664
|
+
serializedResult = JSON.stringify(toolResult);
|
|
665
|
+
} catch {
|
|
666
|
+
serializedResult = `[Unserializable tool result from ${toolName || part.toolCallId}]`;
|
|
644
667
|
}
|
|
645
668
|
const resultEvent = {
|
|
646
669
|
type: EventType.TOOL_CALL_RESULT,
|
|
647
670
|
role: "tool",
|
|
648
671
|
messageId: randomUUID(),
|
|
649
672
|
toolCallId: part.toolCallId,
|
|
650
|
-
content:
|
|
673
|
+
content: serializedResult
|
|
651
674
|
};
|
|
652
675
|
subscriber.next(resultEvent);
|
|
653
676
|
break;
|
|
@@ -665,13 +688,17 @@ This is state from the application that you can edit by calling AGUISendStateSna
|
|
|
665
688
|
}
|
|
666
689
|
case "error": {
|
|
667
690
|
if (abortController.signal.aborted) break;
|
|
691
|
+
const err = part.error ?? part.message ?? part.cause;
|
|
668
692
|
const runErrorEvent = {
|
|
669
693
|
type: EventType.RUN_ERROR,
|
|
670
|
-
message:
|
|
694
|
+
message: err instanceof Error ? err.message : typeof err === "string" ? err : `AI SDK stream error: ${JSON.stringify(part)}`,
|
|
695
|
+
threadId: input.threadId,
|
|
696
|
+
runId: input.runId
|
|
671
697
|
};
|
|
672
698
|
subscriber.next(runErrorEvent);
|
|
673
699
|
terminalEventEmitted = true;
|
|
674
|
-
subscriber.error(
|
|
700
|
+
if (err instanceof Error) subscriber.error(err);
|
|
701
|
+
else subscriber.error(new Error(typeof err === "string" ? err : `AI SDK stream error`));
|
|
675
702
|
break;
|
|
676
703
|
}
|
|
677
704
|
}
|
|
@@ -695,7 +722,9 @@ This is state from the application that you can edit by calling AGUISendStateSna
|
|
|
695
722
|
else {
|
|
696
723
|
const runErrorEvent = {
|
|
697
724
|
type: EventType.RUN_ERROR,
|
|
698
|
-
message: error
|
|
725
|
+
message: error instanceof Error ? error.message : String(error),
|
|
726
|
+
threadId: input.threadId,
|
|
727
|
+
runId: input.runId
|
|
699
728
|
};
|
|
700
729
|
subscriber.next(runErrorEvent);
|
|
701
730
|
terminalEventEmitted = true;
|
|
@@ -711,6 +740,71 @@ This is state from the application that you can edit by calling AGUISendStateSna
|
|
|
711
740
|
};
|
|
712
741
|
});
|
|
713
742
|
}
|
|
743
|
+
runFactory(input, config) {
|
|
744
|
+
if (this.abortController) throw new Error("Agent is already running. Call abortRun() first or create a new instance.");
|
|
745
|
+
this.abortController = new AbortController();
|
|
746
|
+
const controller = this.abortController;
|
|
747
|
+
return new Observable((subscriber) => {
|
|
748
|
+
const startEvent = {
|
|
749
|
+
type: EventType.RUN_STARTED,
|
|
750
|
+
threadId: input.threadId,
|
|
751
|
+
runId: input.runId
|
|
752
|
+
};
|
|
753
|
+
subscriber.next(startEvent);
|
|
754
|
+
const ctx = {
|
|
755
|
+
input,
|
|
756
|
+
abortController: controller,
|
|
757
|
+
abortSignal: controller.signal
|
|
758
|
+
};
|
|
759
|
+
(async () => {
|
|
760
|
+
try {
|
|
761
|
+
let events;
|
|
762
|
+
switch (config.type) {
|
|
763
|
+
case "aisdk":
|
|
764
|
+
events = convertAISDKStream((await config.factory(ctx)).fullStream, controller.signal);
|
|
765
|
+
break;
|
|
766
|
+
case "tanstack":
|
|
767
|
+
events = convertTanStackStream(await config.factory(ctx), controller.signal);
|
|
768
|
+
break;
|
|
769
|
+
case "custom":
|
|
770
|
+
events = await config.factory(ctx);
|
|
771
|
+
break;
|
|
772
|
+
default: {
|
|
773
|
+
const _exhaustive = config;
|
|
774
|
+
throw new Error(`Unknown agent config type: ${_exhaustive.type}`);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
for await (const event of events) subscriber.next(event);
|
|
778
|
+
if (!controller.signal.aborted) {
|
|
779
|
+
const finishedEvent = {
|
|
780
|
+
type: EventType.RUN_FINISHED,
|
|
781
|
+
threadId: input.threadId,
|
|
782
|
+
runId: input.runId
|
|
783
|
+
};
|
|
784
|
+
subscriber.next(finishedEvent);
|
|
785
|
+
}
|
|
786
|
+
subscriber.complete();
|
|
787
|
+
} catch (error) {
|
|
788
|
+
if (controller.signal.aborted) subscriber.complete();
|
|
789
|
+
else {
|
|
790
|
+
const runErrorEvent = {
|
|
791
|
+
type: EventType.RUN_ERROR,
|
|
792
|
+
message: error instanceof Error ? error.message : String(error),
|
|
793
|
+
threadId: input.threadId,
|
|
794
|
+
runId: input.runId
|
|
795
|
+
};
|
|
796
|
+
subscriber.next(runErrorEvent);
|
|
797
|
+
subscriber.error(error);
|
|
798
|
+
}
|
|
799
|
+
} finally {
|
|
800
|
+
this.abortController = void 0;
|
|
801
|
+
}
|
|
802
|
+
})();
|
|
803
|
+
return () => {
|
|
804
|
+
controller.abort();
|
|
805
|
+
};
|
|
806
|
+
});
|
|
807
|
+
}
|
|
714
808
|
clone() {
|
|
715
809
|
const cloned = new BuiltInAgent(this.config);
|
|
716
810
|
cloned.middlewares = [...this.middlewares];
|