@convex-dev/agent 0.2.0-alpha.2 → 0.2.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/dist/client/createTool.d.ts +4 -6
- package/dist/client/createTool.d.ts.map +1 -1
- package/dist/client/createTool.js +0 -1
- package/dist/client/createTool.js.map +1 -1
- package/dist/client/definePlaygroundAPI.d.ts +28 -28
- package/dist/client/files.d.ts +9 -2
- package/dist/client/files.d.ts.map +1 -1
- package/dist/client/files.js +61 -6
- package/dist/client/files.js.map +1 -1
- package/dist/client/index.d.ts +232 -242
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +375 -383
- package/dist/client/index.js.map +1 -1
- package/dist/client/messages.d.ts +91 -373
- package/dist/client/messages.d.ts.map +1 -1
- package/dist/client/messages.js +7 -1
- package/dist/client/messages.js.map +1 -1
- package/dist/client/search.d.ts +15 -15
- package/dist/client/search.d.ts.map +1 -1
- package/dist/client/search.js +3 -3
- package/dist/client/search.js.map +1 -1
- package/dist/client/streaming.d.ts +30 -22
- package/dist/client/streaming.d.ts.map +1 -1
- package/dist/client/streaming.js +36 -40
- package/dist/client/streaming.js.map +1 -1
- package/dist/client/types.d.ts +148 -61
- package/dist/client/types.d.ts.map +1 -1
- package/dist/component/_generated/api.d.ts +47 -357
- package/dist/component/messages.d.ts +157 -150
- package/dist/component/messages.d.ts.map +1 -1
- package/dist/component/messages.js +124 -70
- package/dist/component/messages.js.map +1 -1
- package/dist/component/schema.d.ts +1147 -2687
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +5 -4
- package/dist/component/schema.js.map +1 -1
- package/dist/component/streams.d.ts +29 -323
- package/dist/component/streams.d.ts.map +1 -1
- package/dist/component/streams.js +104 -60
- package/dist/component/streams.js.map +1 -1
- package/dist/component/threads.d.ts +4 -4
- package/dist/component/users.d.ts +3 -3
- package/dist/mapping.d.ts +4 -1
- package/dist/mapping.d.ts.map +1 -1
- package/dist/mapping.js +17 -1
- package/dist/mapping.js.map +1 -1
- package/dist/parts.d.ts +3 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +34 -0
- package/dist/parts.js.map +1 -0
- package/dist/react/SmoothText.d.ts +5 -0
- package/dist/react/SmoothText.d.ts.map +1 -0
- package/dist/react/SmoothText.js +6 -0
- package/dist/react/SmoothText.js.map +1 -0
- package/dist/react/deltas.d.ts +3 -2
- package/dist/react/deltas.d.ts.map +1 -1
- package/dist/react/deltas.js +19 -79
- package/dist/react/deltas.js.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +31 -11
- package/dist/react/index.js.map +1 -1
- package/dist/react/optimisticallySendMessage.d.ts.map +1 -1
- package/dist/react/optimisticallySendMessage.js +2 -8
- package/dist/react/optimisticallySendMessage.js.map +1 -1
- package/dist/react/useSmoothText.d.ts +13 -12
- package/dist/react/useSmoothText.d.ts.map +1 -1
- package/dist/react/useSmoothText.js +1 -1
- package/dist/react/useSmoothText.js.map +1 -1
- package/dist/shared.d.ts +3 -3
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js.map +1 -1
- package/dist/validators.d.ts +109 -1590
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +4 -81
- package/dist/validators.js.map +1 -1
- package/package.json +3 -3
- package/src/client/createTool.ts +5 -10
- package/src/client/files.ts +89 -11
- package/src/client/index.test.ts +25 -35
- package/src/client/index.ts +686 -652
- package/src/client/messages.ts +16 -2
- package/src/client/search.ts +10 -7
- package/src/client/streaming.ts +62 -57
- package/src/client/types.ts +227 -97
- package/src/component/_generated/api.d.ts +47 -357
- package/src/component/messages.ts +157 -96
- package/src/component/schema.ts +4 -4
- package/src/component/streams.ts +180 -69
- package/src/mapping.ts +23 -2
- package/src/parts.ts +39 -0
- package/src/react/SmoothText.tsx +9 -0
- package/src/react/deltas.test.ts +38 -42
- package/src/react/deltas.ts +24 -86
- package/src/react/index.ts +35 -13
- package/src/react/optimisticallySendMessage.ts +2 -8
- package/src/react/useSmoothText.ts +14 -15
- package/src/shared.ts +3 -3
- package/src/validators.test.ts +0 -17
- package/src/validators.ts +8 -101
package/dist/client/search.js
CHANGED
|
@@ -47,7 +47,7 @@ export async function fetchContextMessages(ctx, component, args) {
|
|
|
47
47
|
if (opts.searchOptions?.vectorSearch && !args.getEmbedding) {
|
|
48
48
|
throw new Error("You must provide an embedding and embeddingModel to use vector search");
|
|
49
49
|
}
|
|
50
|
-
const embeddingFields = opts.searchOptions?.vectorSearch
|
|
50
|
+
const embeddingFields = opts.searchOptions?.vectorSearch && text
|
|
51
51
|
? await args.getEmbedding?.(text)
|
|
52
52
|
: undefined;
|
|
53
53
|
const searchMessages = await ctx.runAction(component.messages.searchMessages, {
|
|
@@ -69,8 +69,8 @@ export async function fetchContextMessages(ctx, component, args) {
|
|
|
69
69
|
vectorScoreThreshold: opts.searchOptions?.vectorScoreThreshold ??
|
|
70
70
|
DEFAULT_VECTOR_SCORE_THRESHOLD,
|
|
71
71
|
embedding: embeddingFields?.embedding,
|
|
72
|
-
embeddingModel: embeddingFields?.
|
|
73
|
-
? getModelName(embeddingFields.
|
|
72
|
+
embeddingModel: embeddingFields?.textEmbeddingModel
|
|
73
|
+
? getModelName(embeddingFields.textEmbeddingModel)
|
|
74
74
|
: undefined,
|
|
75
75
|
});
|
|
76
76
|
// TODO: track what messages we used for context
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/client/search.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,GACZ,MAAM,cAAc,CAAC;AAGtB,MAAM,8BAA8B,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/client/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { type ChunkDetector, type StreamTextTransform, type ToolSet } from "ai";
|
|
2
|
-
import type { ProviderOptions, StreamArgs, StreamMessage
|
|
3
|
-
import type { MessageDoc } from "../component/schema.js";
|
|
1
|
+
import { type ChunkDetector, type StreamTextTransform, type TextStreamPart, type ToolSet } from "ai";
|
|
2
|
+
import type { ProviderOptions, StreamArgs, StreamMessage } from "../validators.js";
|
|
4
3
|
import type { AgentComponent, RunActionCtx, RunMutationCtx, RunQueryCtx, SyncStreamsReturnValue } from "./types.js";
|
|
5
|
-
import type { Infer } from "convex/values";
|
|
6
4
|
/**
|
|
7
5
|
* A function that handles fetching stream deltas, used with the React hooks
|
|
8
6
|
* `useThreadMessages` or `useStreamingThreadMessages`.
|
|
@@ -53,10 +51,19 @@ export type StreamingOptions = {
|
|
|
53
51
|
* Defaults to 250.
|
|
54
52
|
*/
|
|
55
53
|
throttleMs?: number;
|
|
54
|
+
/**
|
|
55
|
+
* If set to true, this will return immediately, as it would if you weren't
|
|
56
|
+
* saving the deltas. Otherwise, the call will "consume" the stream with
|
|
57
|
+
* .consumeStream(), which waits for the stream to finish before returning.
|
|
58
|
+
*
|
|
59
|
+
* When saving deltas, you're often not interactin with the stream otherwise.
|
|
60
|
+
*/
|
|
61
|
+
returnImmediately?: boolean;
|
|
56
62
|
};
|
|
57
63
|
export declare const DEFAULT_STREAMING_OPTIONS: {
|
|
58
64
|
chunking: RegExp;
|
|
59
65
|
throttleMs: number;
|
|
66
|
+
returnImmediately: false;
|
|
60
67
|
};
|
|
61
68
|
export declare function mergeTransforms<TOOLS extends ToolSet>(options: StreamingOptions | boolean | undefined, existing: StreamTextTransform<TOOLS> | Array<StreamTextTransform<TOOLS>> | undefined): StreamTextTransform<TOOLS> | StreamTextTransform<TOOLS>[] | undefined;
|
|
62
69
|
export declare class DeltaStreamer {
|
|
@@ -65,30 +72,31 @@ export declare class DeltaStreamer {
|
|
|
65
72
|
readonly ctx: RunActionCtx;
|
|
66
73
|
readonly metadata: {
|
|
67
74
|
threadId: string;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
abortSignal
|
|
75
|
+
userId?: string;
|
|
76
|
+
order: number;
|
|
77
|
+
stepOrder: number;
|
|
78
|
+
agentName?: string;
|
|
79
|
+
model?: string;
|
|
80
|
+
provider?: string;
|
|
81
|
+
providerOptions?: ProviderOptions;
|
|
82
|
+
abortSignal?: AbortSignal;
|
|
76
83
|
};
|
|
77
84
|
streamId: string | undefined;
|
|
78
85
|
readonly options: Required<StreamingOptions>;
|
|
79
86
|
abortController: AbortController;
|
|
80
87
|
constructor(component: AgentComponent, ctx: RunActionCtx, options: true | StreamingOptions, metadata: {
|
|
81
88
|
threadId: string;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
abortSignal
|
|
89
|
+
userId?: string;
|
|
90
|
+
order: number;
|
|
91
|
+
stepOrder: number;
|
|
92
|
+
agentName?: string;
|
|
93
|
+
model?: string;
|
|
94
|
+
provider?: string;
|
|
95
|
+
providerOptions?: ProviderOptions;
|
|
96
|
+
abortSignal?: AbortSignal;
|
|
90
97
|
});
|
|
91
|
-
addParts(parts:
|
|
92
|
-
finish(
|
|
98
|
+
addParts(parts: TextStreamPart<ToolSet>[]): Promise<void>;
|
|
99
|
+
finish(): Promise<void>;
|
|
100
|
+
fail(reason: string): Promise<void>;
|
|
93
101
|
}
|
|
94
102
|
//# sourceMappingURL=streaming.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/client/streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACb,MAAM,IAAI,CAAC;AACZ,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EAEV,aAAa,
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/client/streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,OAAO,EACb,MAAM,IAAI,CAAC;AACZ,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EAEV,aAAa,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,EACX,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,cAAc,EACzB,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IAEnC,eAAe,CAAC,EAAE,CAAC,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC;CAC5D,GACA,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAoB7C;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,cAAc,EACzB,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,CACvB;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CACtC,GACA,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,cAAc,EACzB,EACE,QAAQ,EACR,UAAU,EACV,eAAe,GAChB,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,CAAC,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC;CAC5D,GACA,OAAO,CAAC,aAAa,EAAE,CAAC,CAM1B;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;IACpD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AACF,eAAO,MAAM,yBAAyB;;;;CAKV,CAAC;AAE7B,wBAAgB,eAAe,CAAC,KAAK,SAAS,OAAO,EACnD,OAAO,EAAE,gBAAgB,GAAG,OAAO,GAAG,SAAS,EAC/C,QAAQ,EACJ,mBAAmB,CAAC,KAAK,CAAC,GAC1B,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GACjC,SAAS,yEAgBd;AAED,qBAAa,aAAa;;aAUN,SAAS,EAAE,cAAc;aACzB,GAAG,EAAE,YAAY;aAEjB,QAAQ,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B;IAtBI,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,SAAgB,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAK7C,eAAe,EAAE,eAAe,CAAC;gBAGtB,SAAS,EAAE,cAAc,EACzB,GAAG,EAAE,YAAY,EACjC,OAAO,EAAE,IAAI,GAAG,gBAAgB,EAChB,QAAQ,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B;IAwBU,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE;IAmEzC,MAAM;IAYN,IAAI,CAAC,MAAM,EAAE,MAAM;CAgBjC"}
|
package/dist/client/streaming.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { smoothStream, } from "ai";
|
|
2
2
|
import { omit } from "convex-helpers";
|
|
3
|
+
import { serializeTextStreamingPartsV5 } from "../parts.js";
|
|
3
4
|
/**
|
|
4
5
|
* A function that handles fetching stream deltas, used with the React hooks
|
|
5
6
|
* `useThreadMessages` or `useStreamingThreadMessages`.
|
|
@@ -67,6 +68,7 @@ export const DEFAULT_STREAMING_OPTIONS = {
|
|
|
67
68
|
// This chunks by sentences / clauses. Punctuation followed by whitespace.
|
|
68
69
|
chunking: /[\p{P}\s]/u,
|
|
69
70
|
throttleMs: 250,
|
|
71
|
+
returnImmediately: false,
|
|
70
72
|
};
|
|
71
73
|
export function mergeTransforms(options, existing) {
|
|
72
74
|
if (!options) {
|
|
@@ -90,8 +92,6 @@ export class DeltaStreamer {
|
|
|
90
92
|
streamId;
|
|
91
93
|
options;
|
|
92
94
|
#nextParts = [];
|
|
93
|
-
#nextOrder;
|
|
94
|
-
#nextStepOrder;
|
|
95
95
|
#latestWrite = 0;
|
|
96
96
|
#ongoingWrite;
|
|
97
97
|
#cursor = 0;
|
|
@@ -103,23 +103,21 @@ export class DeltaStreamer {
|
|
|
103
103
|
this.options =
|
|
104
104
|
typeof options === "boolean"
|
|
105
105
|
? DEFAULT_STREAMING_OPTIONS
|
|
106
|
-
: {
|
|
107
|
-
...DEFAULT_STREAMING_OPTIONS,
|
|
108
|
-
...options,
|
|
109
|
-
};
|
|
106
|
+
: { ...DEFAULT_STREAMING_OPTIONS, ...options };
|
|
110
107
|
this.#nextParts = [];
|
|
111
|
-
this.#nextOrder = metadata.order ?? 0;
|
|
112
|
-
this.#nextStepOrder = (metadata.stepOrder ?? 0) + 1;
|
|
113
108
|
this.abortController = new AbortController();
|
|
114
109
|
if (metadata.abortSignal) {
|
|
115
110
|
metadata.abortSignal.addEventListener("abort", async () => {
|
|
116
111
|
if (this.streamId) {
|
|
112
|
+
this.abortController.abort();
|
|
113
|
+
const finalDelta = this.#createDelta();
|
|
114
|
+
await this.#ongoingWrite;
|
|
117
115
|
await this.ctx.runMutation(this.component.streams.abort, {
|
|
118
116
|
streamId: this.streamId,
|
|
119
117
|
reason: "abortSignal",
|
|
118
|
+
finalDelta,
|
|
120
119
|
});
|
|
121
120
|
}
|
|
122
|
-
this.abortController.abort();
|
|
123
121
|
});
|
|
124
122
|
}
|
|
125
123
|
}
|
|
@@ -128,11 +126,7 @@ export class DeltaStreamer {
|
|
|
128
126
|
return;
|
|
129
127
|
}
|
|
130
128
|
if (!this.streamId) {
|
|
131
|
-
this.streamId = await this.ctx.runMutation(this.component.streams.create,
|
|
132
|
-
...omit(this.metadata, ["abortSignal"]),
|
|
133
|
-
order: this.#nextOrder,
|
|
134
|
-
stepOrder: this.#nextStepOrder,
|
|
135
|
-
});
|
|
129
|
+
this.streamId = await this.ctx.runMutation(this.component.streams.create, omit(this.metadata, ["abortSignal"]));
|
|
136
130
|
}
|
|
137
131
|
this.#nextParts.push(...parts);
|
|
138
132
|
if (!this.#ongoingWrite &&
|
|
@@ -145,6 +139,9 @@ export class DeltaStreamer {
|
|
|
145
139
|
return;
|
|
146
140
|
}
|
|
147
141
|
const delta = this.#createDelta();
|
|
142
|
+
if (!delta) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
148
145
|
this.#latestWrite = Date.now();
|
|
149
146
|
try {
|
|
150
147
|
const success = await this.ctx.runMutation(this.component.streams.addDelta, delta);
|
|
@@ -167,44 +164,43 @@ export class DeltaStreamer {
|
|
|
167
164
|
}
|
|
168
165
|
}
|
|
169
166
|
#createDelta() {
|
|
167
|
+
if (this.#nextParts.length === 0) {
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
170
|
const start = this.#cursor;
|
|
171
171
|
const end = start + this.#nextParts.length;
|
|
172
172
|
this.#cursor = end;
|
|
173
|
-
const parts = this.#nextParts;
|
|
173
|
+
const parts = serializeTextStreamingPartsV5(this.#nextParts);
|
|
174
174
|
this.#nextParts = [];
|
|
175
175
|
if (!this.streamId) {
|
|
176
176
|
throw new Error("Creating a delta before the stream is created");
|
|
177
177
|
}
|
|
178
|
-
return {
|
|
179
|
-
streamId: this.streamId,
|
|
180
|
-
start,
|
|
181
|
-
end,
|
|
182
|
-
parts,
|
|
183
|
-
};
|
|
178
|
+
return { streamId: this.streamId, start, end, parts };
|
|
184
179
|
}
|
|
185
|
-
async finish(
|
|
186
|
-
if (this.#ongoingWrite) {
|
|
187
|
-
await this.#ongoingWrite;
|
|
188
|
-
this.#ongoingWrite = undefined;
|
|
189
|
-
}
|
|
180
|
+
async finish() {
|
|
190
181
|
if (!this.streamId) {
|
|
191
|
-
|
|
182
|
+
return;
|
|
192
183
|
}
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
this
|
|
184
|
+
const finalDelta = this.#createDelta();
|
|
185
|
+
await this.#ongoingWrite;
|
|
186
|
+
await this.ctx.runMutation(this.component.streams.finish, {
|
|
187
|
+
streamId: this.streamId,
|
|
188
|
+
finalDelta,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
async fail(reason) {
|
|
192
|
+
if (this.abortController.signal.aborted) {
|
|
193
|
+
return;
|
|
197
194
|
}
|
|
198
|
-
|
|
199
|
-
|
|
195
|
+
this.abortController.abort();
|
|
196
|
+
if (!this.streamId) {
|
|
197
|
+
return;
|
|
200
198
|
}
|
|
201
|
-
const finalDelta = this.#
|
|
202
|
-
this.#
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
await this.ctx.runMutation(this.component.streams.finish, {
|
|
207
|
-
streamId,
|
|
199
|
+
const finalDelta = this.#createDelta();
|
|
200
|
+
await this.#ongoingWrite;
|
|
201
|
+
await this.ctx.runMutation(this.component.streams.abort, {
|
|
202
|
+
streamId: this.streamId,
|
|
203
|
+
reason,
|
|
208
204
|
finalDelta,
|
|
209
205
|
});
|
|
210
206
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../src/client/streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../src/client/streaming.ts"],"names":[],"mappings":"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"}
|
package/dist/client/types.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
1
|
+
import type { InferSchema, ProviderOptions, Schema } from "@ai-sdk/provider-utils";
|
|
2
|
+
import type { JSONValue } from "@ai-sdk/provider";
|
|
3
|
+
import type { GenerateObjectResult, generateText, GenerateTextResult, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LanguageModel, streamObject, streamText, StreamTextResult, ToolChoice, ToolSet, RepairTextFunction, TelemetrySettings, CallSettings, Prompt } from "ai";
|
|
4
|
+
import type { Auth, Expand, FunctionArgs, FunctionReference, FunctionReturnType, GenericActionCtx, GenericDataModel, StorageActionWriter, StorageReader, WithoutSystemFields } from "convex/server";
|
|
4
5
|
import type { GenericId } from "convex/values";
|
|
5
|
-
import type { z } from "zod/v3";
|
|
6
6
|
import type { Mounts } from "../component/_generated/api.js";
|
|
7
7
|
import type { MessageDoc, ThreadDoc } from "../component/schema.js";
|
|
8
|
-
import type {
|
|
8
|
+
import type { ProviderMetadata, StreamDelta, StreamMessage } from "../validators.js";
|
|
9
9
|
import type { StreamingOptions } from "./streaming.js";
|
|
10
|
+
import type * as z3 from "zod/v3";
|
|
11
|
+
import type * as z4 from "zod/v4";
|
|
10
12
|
/**
|
|
11
13
|
* Options to configure what messages are fetched as context,
|
|
12
14
|
* automatically with thread.generateText, or directly via search.
|
|
@@ -82,16 +84,23 @@ export type GenerationOutputMetadata = {
|
|
|
82
84
|
/**
|
|
83
85
|
* The ID of the prompt message for the generation.
|
|
84
86
|
*/
|
|
85
|
-
|
|
87
|
+
promptMessageId?: string;
|
|
86
88
|
/**
|
|
87
|
-
* The order of the prompt message for the generation.
|
|
89
|
+
* The order of the prompt message and responses for the generation.
|
|
90
|
+
* Each order starts with a user message, then followed by agent responses.
|
|
91
|
+
* If a promptMessageId is provided, that dictates the order.
|
|
88
92
|
*/
|
|
89
93
|
order?: number;
|
|
90
94
|
/**
|
|
91
95
|
* The messages saved for the generation - both saved input and output.
|
|
92
96
|
* If you passed promptMessageId, it will not include that message.
|
|
93
97
|
*/
|
|
94
|
-
|
|
98
|
+
savedMessages?: MessageDoc[];
|
|
99
|
+
/**
|
|
100
|
+
* @deprecated Use promptMessageId instead.
|
|
101
|
+
* The ID of the prompt message for the generation.
|
|
102
|
+
*/
|
|
103
|
+
messageId?: string;
|
|
95
104
|
};
|
|
96
105
|
export type UsageHandler = (ctx: RunActionCtx, args: {
|
|
97
106
|
userId: string | undefined;
|
|
@@ -122,7 +131,7 @@ export type TextArgs<AgentTools extends ToolSet, TOOLS extends ToolSet | undefin
|
|
|
122
131
|
* The model to use for the LLM calls. This will override the model specified
|
|
123
132
|
* in the Agent constructor.
|
|
124
133
|
*/
|
|
125
|
-
model?:
|
|
134
|
+
model?: LanguageModel;
|
|
126
135
|
/**
|
|
127
136
|
* The tools to use for the tool calls. This will override tools specified
|
|
128
137
|
* in the Agent constructor or createThread / continueThread.
|
|
@@ -146,7 +155,7 @@ export type StreamingTextArgs<AgentTools extends ToolSet, TOOLS extends ToolSet
|
|
|
146
155
|
* The model to use for the tool calls. This will override the model specified
|
|
147
156
|
* in the Agent constructor.
|
|
148
157
|
*/
|
|
149
|
-
model?:
|
|
158
|
+
model?: LanguageModel;
|
|
150
159
|
/**
|
|
151
160
|
* The tools to use for the tool calls. This will override tools specified
|
|
152
161
|
* in the Agent constructor or createThread / continueThread.
|
|
@@ -158,63 +167,106 @@ export type StreamingTextArgs<AgentTools extends ToolSet, TOOLS extends ToolSet
|
|
|
158
167
|
*/
|
|
159
168
|
toolChoice?: ToolChoice<TOOLS extends undefined ? AgentTools : TOOLS>;
|
|
160
169
|
};
|
|
161
|
-
type
|
|
170
|
+
export type ObjectMode = "object" | "array" | "enum" | "no-schema";
|
|
171
|
+
export type ObjectSchema = z3.Schema | z4.core.$ZodType | Schema;
|
|
172
|
+
export type DefaultObjectSchema = z4.core.$ZodType<JSONValue>;
|
|
173
|
+
/**
|
|
174
|
+
* Due to some issues with the type inference of the ai sdk, we need to
|
|
175
|
+
* manually type the arguments for the generateObject function.
|
|
176
|
+
* This is a workaround to allow the model to be optional.
|
|
177
|
+
*/
|
|
178
|
+
export type GenerateObjectArgs<SCHEMA extends ObjectSchema = DefaultObjectSchema, OUTPUT extends ObjectMode = InferSchema<SCHEMA> extends string ? "enum" : "object", RESULT = OUTPUT extends "array" ? Array<InferSchema<SCHEMA>> : InferSchema<SCHEMA>> = Omit<CallSettings, "stopSequences"> & Prompt & (OUTPUT extends "enum" ? {
|
|
162
179
|
/**
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
180
|
+
The enum values that the model should use.
|
|
181
|
+
*/
|
|
182
|
+
enum: Array<RESULT>;
|
|
183
|
+
mode?: "json";
|
|
184
|
+
output: "enum";
|
|
185
|
+
} : OUTPUT extends "no-schema" ? {} : {
|
|
167
186
|
/**
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
system?: string;
|
|
187
|
+
The schema of the object that the model should generate.
|
|
188
|
+
*/
|
|
189
|
+
schema: SCHEMA;
|
|
172
190
|
/**
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
191
|
+
Optional name of the output that should be generated.
|
|
192
|
+
Used by some providers for additional LLM guidance, e.g.
|
|
193
|
+
via tool or schema name.
|
|
194
|
+
*/
|
|
195
|
+
schemaName?: string;
|
|
177
196
|
/**
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
197
|
+
Optional description of the output that should be generated.
|
|
198
|
+
Used by some providers for additional LLM guidance, e.g.
|
|
199
|
+
via tool or schema description.
|
|
200
|
+
*/
|
|
201
|
+
schemaDescription?: string;
|
|
183
202
|
/**
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
203
|
+
The mode to use for object generation.
|
|
204
|
+
|
|
205
|
+
The schema is converted into a JSON schema and used in one of the following ways
|
|
206
|
+
|
|
207
|
+
- 'auto': The provider will choose the best mode for the model.
|
|
208
|
+
- 'tool': A tool with the JSON schema as parameters is provided and the provider is instructed to use it.
|
|
209
|
+
- 'json': The JSON schema and an instruction are injected into the prompt. If the provider supports JSON mode, it is enabled. If the provider supports JSON grammars, the grammar is used.
|
|
210
|
+
|
|
211
|
+
Please note that most providers do not support all modes.
|
|
212
|
+
|
|
213
|
+
Default and recommended: 'auto' (best mode for the model).
|
|
214
|
+
*/
|
|
215
|
+
mode?: "auto" | "json" | "tool";
|
|
216
|
+
}) & {
|
|
217
|
+
output?: OUTPUT;
|
|
218
|
+
/**
|
|
219
|
+
The language model to use.
|
|
220
|
+
*/
|
|
221
|
+
model?: LanguageModel;
|
|
222
|
+
/**
|
|
223
|
+
A function that attempts to repair the raw output of the model
|
|
224
|
+
to enable JSON parsing.
|
|
225
|
+
*/
|
|
190
226
|
experimental_repairText?: RepairTextFunction;
|
|
227
|
+
/**
|
|
228
|
+
Optional telemetry configuration (experimental).
|
|
229
|
+
*/
|
|
191
230
|
experimental_telemetry?: TelemetrySettings;
|
|
231
|
+
/**
|
|
232
|
+
Additional provider-specific options. They are passed through
|
|
233
|
+
to the provider from the AI SDK and enable provider-specific
|
|
234
|
+
functionality that can be fully encapsulated in the provider.
|
|
235
|
+
*/
|
|
192
236
|
providerOptions?: ProviderOptions;
|
|
193
|
-
|
|
237
|
+
/**
|
|
238
|
+
* Internal. For test use only. May change without notice.
|
|
239
|
+
*/
|
|
240
|
+
_internal?: {
|
|
241
|
+
generateId?: () => string;
|
|
242
|
+
currentDate?: () => Date;
|
|
243
|
+
};
|
|
194
244
|
};
|
|
195
|
-
type
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
245
|
+
export type StreamObjectArgs<SCHEMA extends ObjectSchema = DefaultObjectSchema, OUTPUT extends ObjectMode = InferSchema<SCHEMA> extends string ? "enum" : "object", RESULT = OUTPUT extends "array" ? Array<InferSchema<SCHEMA>> : InferSchema<SCHEMA>> = GenerateObjectArgs<SCHEMA, OUTPUT, RESULT> & Pick<Parameters<typeof streamObject<SCHEMA, OUTPUT, RESULT>>[0], "onError" | "onFinish" | "_internal">;
|
|
246
|
+
export type MaybeCustomCtx<CustomCtx, DataModel extends GenericDataModel, AgentTools extends ToolSet> = CustomCtx extends Record<string, unknown> ? {
|
|
247
|
+
/**
|
|
248
|
+
* If you have a custom ctx that you use with the Agent
|
|
249
|
+
* (e.g. new Agent<{ orgId: string }>(...))
|
|
250
|
+
* you need to provide this function to add any extra fields.
|
|
251
|
+
* e.g.
|
|
252
|
+
* ```ts
|
|
253
|
+
* const myAgent = new Agent<{ orgId: string }>(...);
|
|
254
|
+
* const myAction = myAgent.asTextAction({
|
|
255
|
+
* customCtx: (ctx: ActionCtx, target, llmArgs) => {
|
|
256
|
+
* const orgId = await lookupOrgId(ctx, target.threadId);
|
|
257
|
+
* return { orgId };
|
|
258
|
+
* },
|
|
259
|
+
* });
|
|
260
|
+
* ```
|
|
261
|
+
* Then, in your tools, you can
|
|
262
|
+
*/
|
|
263
|
+
customCtx: (ctx: GenericActionCtx<DataModel>, target: {
|
|
264
|
+
userId?: string | undefined;
|
|
265
|
+
threadId?: string | undefined;
|
|
266
|
+
}, llmArgs: TextArgs<AgentTools>) => CustomCtx;
|
|
267
|
+
} : {
|
|
268
|
+
customCtx?: never;
|
|
201
269
|
};
|
|
202
|
-
type GenerateObjectArgs<T> = BaseGenerateObjectOptions & (StandardGenerateObjectOptions<T> | {
|
|
203
|
-
output: "enum";
|
|
204
|
-
enum: Array<T>;
|
|
205
|
-
mode?: "auto" | "json" | "tool";
|
|
206
|
-
} | {
|
|
207
|
-
output: "any";
|
|
208
|
-
schema: undefined;
|
|
209
|
-
mode: "json";
|
|
210
|
-
});
|
|
211
|
-
type StreamObjectArgs<T> = BaseGenerateObjectOptions & (StandardGenerateObjectOptions<T> | {
|
|
212
|
-
output: "any";
|
|
213
|
-
schema: undefined;
|
|
214
|
-
mode: "json";
|
|
215
|
-
});
|
|
216
|
-
export type OurObjectArgs<T> = GenerateObjectArgs<T> & Pick<Parameters<typeof generateObject<any>>[0], "experimental_repairText" | "abortSignal">;
|
|
217
|
-
export type OurStreamObjectArgs<T extends Schema | z.Schema> = StreamObjectArgs<T> & Pick<Parameters<typeof streamObject<T>>[0], "onError" | "onFinish" | "abortSignal">;
|
|
218
270
|
type ThreadOutputMetadata = Required<GenerationOutputMetadata>;
|
|
219
271
|
/**
|
|
220
272
|
* The interface for a thread returned from {@link createThread} or {@link continueThread}.
|
|
@@ -243,7 +295,7 @@ export interface Thread<DefaultTools extends ToolSet> {
|
|
|
243
295
|
* for the {@link ContextOptions} and {@link StorageOptions}.
|
|
244
296
|
* @returns The result of the generateText function.
|
|
245
297
|
*/
|
|
246
|
-
generateText<TOOLS extends ToolSet | undefined = undefined, OUTPUT = never, OUTPUT_PARTIAL = never>(
|
|
298
|
+
generateText<TOOLS extends ToolSet | undefined = undefined, OUTPUT = never, OUTPUT_PARTIAL = never>(generateTextArgs: TextArgs<TOOLS extends undefined ? DefaultTools : TOOLS, TOOLS, OUTPUT, OUTPUT_PARTIAL>, options?: Options): Promise<GenerateTextResult<TOOLS extends undefined ? DefaultTools : TOOLS, OUTPUT> & ThreadOutputMetadata>;
|
|
247
299
|
/**
|
|
248
300
|
* This behaves like {@link streamText} from the "ai" package except that
|
|
249
301
|
* it add context based on the userId and threadId and saves the input and
|
|
@@ -254,7 +306,7 @@ export interface Thread<DefaultTools extends ToolSet> {
|
|
|
254
306
|
* for the {@link ContextOptions} and {@link StorageOptions}.
|
|
255
307
|
* @returns The result of the streamText function.
|
|
256
308
|
*/
|
|
257
|
-
streamText<TOOLS extends ToolSet | undefined = undefined, OUTPUT = never, PARTIAL_OUTPUT = never>(
|
|
309
|
+
streamText<TOOLS extends ToolSet | undefined = undefined, OUTPUT = never, PARTIAL_OUTPUT = never>(streamTextArgs: StreamingTextArgs<TOOLS extends undefined ? DefaultTools : TOOLS, TOOLS, OUTPUT, PARTIAL_OUTPUT>, options?: Options & {
|
|
258
310
|
/**
|
|
259
311
|
* Whether to save incremental data (deltas) from streaming responses.
|
|
260
312
|
* Defaults to false.
|
|
@@ -277,7 +329,20 @@ export interface Thread<DefaultTools extends ToolSet> {
|
|
|
277
329
|
* for the {@link ContextOptions} and {@link StorageOptions}.
|
|
278
330
|
* @returns The result of the generateObject function.
|
|
279
331
|
*/
|
|
280
|
-
generateObject<
|
|
332
|
+
generateObject<SCHEMA extends ObjectSchema = DefaultObjectSchema, OUTPUT extends ObjectMode = InferSchema<SCHEMA> extends string ? "enum" : "object", RESULT = OUTPUT extends "array" ? Array<InferSchema<SCHEMA>> : InferSchema<SCHEMA>>(generateObjectArgs: GenerateObjectArgs<SCHEMA, OUTPUT, RESULT> & {
|
|
333
|
+
/**
|
|
334
|
+
* If provided, this message will be used as the "prompt" for the LLM call,
|
|
335
|
+
* instead of the prompt or messages.
|
|
336
|
+
* This is useful if you want to first save a user message, then use it as
|
|
337
|
+
* the prompt for the LLM call in another call.
|
|
338
|
+
*/
|
|
339
|
+
promptMessageId?: string;
|
|
340
|
+
/**
|
|
341
|
+
* The model to use for the LLM calls. This will override the model specified
|
|
342
|
+
* in the Agent constructor.
|
|
343
|
+
*/
|
|
344
|
+
model?: LanguageModel;
|
|
345
|
+
}, options?: Options): Promise<GenerateObjectResult<RESULT> & ThreadOutputMetadata>;
|
|
281
346
|
/**
|
|
282
347
|
* This behaves like {@link streamObject} from the "ai" package except that
|
|
283
348
|
* it add context based on the userId and threadId and saves the input and
|
|
@@ -288,7 +353,24 @@ export interface Thread<DefaultTools extends ToolSet> {
|
|
|
288
353
|
* for the {@link ContextOptions} and {@link StorageOptions}.
|
|
289
354
|
* @returns The result of the streamObject function.
|
|
290
355
|
*/
|
|
291
|
-
streamObject<
|
|
356
|
+
streamObject<SCHEMA extends ObjectSchema = DefaultObjectSchema, OUTPUT extends ObjectMode = InferSchema<SCHEMA> extends string ? "enum" : "object", RESULT = OUTPUT extends "array" ? Array<InferSchema<SCHEMA>> : InferSchema<SCHEMA>>(
|
|
357
|
+
/**
|
|
358
|
+
* The same arguments you'd pass to "ai" sdk {@link streamObject}.
|
|
359
|
+
*/
|
|
360
|
+
streamObjectArgs: StreamObjectArgs<SCHEMA, OUTPUT, RESULT> & {
|
|
361
|
+
/**
|
|
362
|
+
* If provided, this message will be used as the "prompt" for the LLM call,
|
|
363
|
+
* instead of the prompt or messages.
|
|
364
|
+
* This is useful if you want to first save a user message, then use it as
|
|
365
|
+
* the prompt for the LLM call in another call.
|
|
366
|
+
*/
|
|
367
|
+
promptMessageId?: string;
|
|
368
|
+
/**
|
|
369
|
+
* The model to use for the LLM calls. This will override the model specified
|
|
370
|
+
* in the Agent constructor.
|
|
371
|
+
*/
|
|
372
|
+
model?: LanguageModel;
|
|
373
|
+
}, options?: Options): Promise<ReturnType<typeof streamObject<SCHEMA, OUTPUT, RESULT>> & ThreadOutputMetadata>;
|
|
292
374
|
}
|
|
293
375
|
export type Options = {
|
|
294
376
|
/**
|
|
@@ -299,6 +381,11 @@ export type Options = {
|
|
|
299
381
|
* The storage options to use for saving the input and output messages to the thread.
|
|
300
382
|
*/
|
|
301
383
|
storageOptions?: StorageOptions;
|
|
384
|
+
/**
|
|
385
|
+
* The usage handler to use for this thread. Overrides any handler
|
|
386
|
+
* set in the agent constructor.
|
|
387
|
+
*/
|
|
388
|
+
usageHandler?: UsageHandler;
|
|
302
389
|
};
|
|
303
390
|
export type SyncStreamsReturnValue = {
|
|
304
391
|
kind: "list";
|