@convex-dev/agent 0.1.18 → 0.2.0
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 +30 -11
- package/dist/client/createTool.d.ts.map +1 -1
- package/dist/client/createTool.js +24 -10
- package/dist/client/createTool.js.map +1 -1
- package/dist/client/defaultComponent.d.ts +11 -0
- package/dist/client/defaultComponent.d.ts.map +1 -0
- package/dist/client/defaultComponent.js +7 -0
- package/dist/client/defaultComponent.js.map +1 -0
- package/dist/client/definePlaygroundAPI.d.ts +68 -23
- package/dist/client/definePlaygroundAPI.d.ts.map +1 -1
- package/dist/client/definePlaygroundAPI.js +7 -20
- package/dist/client/definePlaygroundAPI.js.map +1 -1
- package/dist/client/files.d.ts +14 -4
- package/dist/client/files.d.ts.map +1 -1
- package/dist/client/files.js +66 -11
- package/dist/client/files.js.map +1 -1
- package/dist/client/index.d.ts +323 -780
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +445 -543
- package/dist/client/index.js.map +1 -1
- package/dist/client/messages.d.ts +256 -0
- package/dist/client/messages.d.ts.map +1 -0
- package/dist/client/messages.js +97 -0
- package/dist/client/messages.js.map +1 -0
- package/dist/client/search.d.ts +35 -12
- package/dist/client/search.d.ts.map +1 -1
- package/dist/client/search.js +21 -4
- package/dist/client/search.js.map +1 -1
- package/dist/client/streaming.d.ts +21 -21
- package/dist/client/streaming.d.ts.map +1 -1
- package/dist/client/streaming.js +35 -40
- package/dist/client/streaming.js.map +1 -1
- package/dist/client/threads.d.ts +46 -0
- package/dist/client/threads.d.ts.map +1 -0
- package/dist/client/threads.js +49 -0
- package/dist/client/threads.js.map +1 -0
- package/dist/client/types.d.ts +159 -75
- package/dist/client/types.d.ts.map +1 -1
- package/dist/component/_generated/api.d.ts +261 -209
- package/dist/component/messages.d.ts +314 -105
- package/dist/component/messages.d.ts.map +1 -1
- package/dist/component/messages.js +141 -83
- package/dist/component/messages.js.map +1 -1
- package/dist/component/schema.d.ts +631 -870
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +11 -16
- package/dist/component/schema.js.map +1 -1
- package/dist/component/streams.d.ts +29 -149
- 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 +15 -16
- package/dist/mapping.d.ts.map +1 -1
- package/dist/mapping.js +208 -62
- 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 -5
- package/dist/react/deltas.d.ts.map +1 -1
- package/dist/react/deltas.js +89 -53
- 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/toUIMessages.d.ts +5 -4
- package/dist/react/toUIMessages.d.ts.map +1 -1
- package/dist/react/toUIMessages.js +103 -40
- package/dist/react/toUIMessages.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/validators.d.ts +751 -1464
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +39 -80
- package/dist/validators.js.map +1 -1
- package/package.json +34 -30
- package/src/client/createTool.ts +66 -40
- package/src/client/defaultComponent.ts +17 -0
- package/src/client/definePlaygroundAPI.ts +17 -31
- package/src/client/files.ts +94 -17
- package/src/client/index.test.ts +28 -38
- package/src/client/index.ts +785 -977
- package/src/client/messages.ts +205 -0
- package/src/client/search.ts +37 -10
- package/src/client/streaming.ts +53 -56
- package/src/client/threads.ts +78 -0
- package/src/client/types.ts +239 -131
- package/src/component/_generated/api.d.ts +261 -209
- package/src/component/messages.test.ts +182 -40
- package/src/component/messages.ts +165 -108
- package/src/component/schema.ts +11 -17
- package/src/component/streams.ts +180 -69
- package/src/mapping.ts +253 -96
- 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 +116 -65
- package/src/react/index.ts +35 -13
- package/src/react/optimisticallySendMessage.ts +2 -8
- package/src/react/toUIMessages.test.ts +154 -36
- package/src/react/toUIMessages.ts +136 -57
- package/src/react/useSmoothText.ts +14 -15
- package/src/validators.test.ts +1 -117
- package/src/validators.ts +57 -107
- package/dist/client/listMessages.d.ts +0 -22
- package/dist/client/listMessages.d.ts.map +0 -1
- package/dist/client/listMessages.js +0 -25
- package/dist/client/listMessages.js.map +0 -1
- package/src/client/listMessages.ts +0 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAK,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAK,MAAM,eAAe,CAAC;AAiB9C,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+Ef;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4DL,CAAC;AAEH,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAlEX;;;;eAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gMA6Fw4O,eAAgB,qEAAqE,CAAC,2HAA0H,aAAc,uLAAuL,eAAe;;mFAAkV,GAAG,gDAAwB,WAAW,2BAA0B,WAAY;;;CA/BjrQ,CAAC;AACjC,OAAO,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;AAGnB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;mFAOrB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEjD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;onBAatB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEnD,eAAe,MAAM,CAAC"}
|
package/dist/component/schema.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineSchema, defineTable } from "convex/server";
|
|
2
2
|
import { v } from "convex/values";
|
|
3
|
-
import { vThreadStatus, vMessage, vMessageStatus, vUsage, vSource,
|
|
3
|
+
import { vThreadStatus, vMessage, vMessageStatus, vUsage, vSource, vLanguageModelCallWarning, vFinishReason, vProviderOptions, vProviderMetadata, vReasoningDetails, } from "../validators.js";
|
|
4
4
|
import { typedV } from "convex-helpers/validators";
|
|
5
5
|
import vectorTables, { vVectorId } from "./vector/tables.js";
|
|
6
6
|
import { omit } from "convex-helpers";
|
|
@@ -16,12 +16,8 @@ export const schema = defineSchema({
|
|
|
16
16
|
order: /*DEPRECATED*/ v.optional(v.number()),
|
|
17
17
|
})
|
|
18
18
|
.index("userId", ["userId"])
|
|
19
|
-
.searchIndex("title", {
|
|
20
|
-
searchField: "title",
|
|
21
|
-
filterFields: ["userId"],
|
|
22
|
-
}),
|
|
19
|
+
.searchIndex("title", { searchField: "title", filterFields: ["userId"] }),
|
|
23
20
|
messages: defineTable({
|
|
24
|
-
id: v.optional(v.string()), // external id, e.g. from Vercel AI SDK
|
|
25
21
|
userId: v.optional(v.string()), // useful for searching across threads
|
|
26
22
|
threadId: v.id("threads"),
|
|
27
23
|
order: v.number(),
|
|
@@ -44,11 +40,13 @@ export const schema = defineSchema({
|
|
|
44
40
|
usage: v.optional(vUsage),
|
|
45
41
|
providerMetadata: v.optional(vProviderMetadata), // Received from model
|
|
46
42
|
sources: v.optional(v.array(vSource)),
|
|
43
|
+
warnings: v.optional(v.array(vLanguageModelCallWarning)),
|
|
44
|
+
finishReason: v.optional(vFinishReason),
|
|
45
|
+
// Likely deprecated soon
|
|
47
46
|
reasoning: v.optional(v.string()),
|
|
48
47
|
reasoningDetails: v.optional(vReasoningDetails),
|
|
49
|
-
warnings: v.optional(v.array(vLanguageModelV1CallWarning)),
|
|
50
|
-
finishReason: v.optional(vFinishReason),
|
|
51
48
|
// DEPRECATED
|
|
49
|
+
id: v.optional(v.string()), // external id, e.g. from Vercel AI SDK
|
|
52
50
|
parentMessageId: v.optional(v.id("messages")),
|
|
53
51
|
stepId: v.optional(v.string()),
|
|
54
52
|
files: v.optional(v.array(v.any())),
|
|
@@ -94,10 +92,7 @@ export const schema = defineSchema({
|
|
|
94
92
|
kind: v.literal("finished"),
|
|
95
93
|
endedAt: v.number(),
|
|
96
94
|
cleanupFnId: v.optional(v.id("_scheduled_functions")),
|
|
97
|
-
}), v.object({
|
|
98
|
-
kind: v.literal("aborted"),
|
|
99
|
-
reason: v.string(),
|
|
100
|
-
})),
|
|
95
|
+
}), v.object({ kind: v.literal("aborted"), reason: v.string() })),
|
|
101
96
|
})
|
|
102
97
|
// There should only be one per "order" index
|
|
103
98
|
// If another exists, it's deleted and replaced
|
|
@@ -112,7 +107,7 @@ export const schema = defineSchema({
|
|
|
112
107
|
// the indexes work like: 0 <first> 1 <second> 2 <third> 3 ...
|
|
113
108
|
start: v.number(), // inclusive
|
|
114
109
|
end: v.number(), // exclusive
|
|
115
|
-
parts: v.array(
|
|
110
|
+
parts: v.array(v.any()),
|
|
116
111
|
}).index("streamId_start_end", ["streamId", "start", "end"]),
|
|
117
112
|
memories: defineTable({
|
|
118
113
|
threadId: v.optional(v.id("threads")),
|
|
@@ -137,9 +132,9 @@ export const schema = defineSchema({
|
|
|
137
132
|
// To authenticate playground usage
|
|
138
133
|
// Delete a key to invalidate it
|
|
139
134
|
// Provide a name to easily identify it / invalidate by name
|
|
140
|
-
apiKeys: defineTable({
|
|
141
|
-
name
|
|
142
|
-
|
|
135
|
+
apiKeys: defineTable({ name: v.optional(v.string()) }).index("name", [
|
|
136
|
+
"name",
|
|
137
|
+
]),
|
|
143
138
|
});
|
|
144
139
|
export const vv = typedV(schema);
|
|
145
140
|
export { vv as v };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAc,CAAC,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,QAAQ,EACR,cAAc,EACd,MAAM,EACN,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +1,12 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type MessageWithMetadataInternal } from "../validators.js";
|
|
2
|
+
import type { Doc, Id } from "./_generated/dataModel.js";
|
|
2
3
|
import { type MutationCtx } from "./_generated/server.js";
|
|
4
|
+
import type { WithoutSystemFields } from "convex/server";
|
|
3
5
|
export declare const addDelta: import("convex/server").RegisteredMutation<"public", {
|
|
4
6
|
streamId: import("convex/values").GenericId<"streamingMessages">;
|
|
5
7
|
start: number;
|
|
6
8
|
end: number;
|
|
7
|
-
parts:
|
|
8
|
-
providerOptions?: Record<string, Record<string, any>> | undefined;
|
|
9
|
-
type: "tool-call";
|
|
10
|
-
toolCallId: string;
|
|
11
|
-
toolName: string;
|
|
12
|
-
args: any;
|
|
13
|
-
} | {
|
|
14
|
-
providerOptions?: Record<string, Record<string, any>> | undefined;
|
|
15
|
-
args?: any;
|
|
16
|
-
experimental_content?: ({
|
|
17
|
-
type: "text";
|
|
18
|
-
text: string;
|
|
19
|
-
} | {
|
|
20
|
-
mimeType?: string | undefined;
|
|
21
|
-
type: "image";
|
|
22
|
-
data: string;
|
|
23
|
-
})[] | undefined;
|
|
24
|
-
isError?: boolean | undefined;
|
|
25
|
-
type: "tool-result";
|
|
26
|
-
toolCallId: string;
|
|
27
|
-
toolName: string;
|
|
28
|
-
result: any;
|
|
29
|
-
} | {
|
|
30
|
-
type: "text-delta";
|
|
31
|
-
textDelta: string;
|
|
32
|
-
} | {
|
|
33
|
-
type: "reasoning";
|
|
34
|
-
textDelta: string;
|
|
35
|
-
} | {
|
|
36
|
-
type: "source";
|
|
37
|
-
source: {
|
|
38
|
-
title?: string | undefined;
|
|
39
|
-
providerOptions?: Record<string, Record<string, any>> | undefined;
|
|
40
|
-
id: string;
|
|
41
|
-
sourceType: "url";
|
|
42
|
-
url: string;
|
|
43
|
-
};
|
|
44
|
-
} | {
|
|
45
|
-
type: "tool-call-streaming-start";
|
|
46
|
-
toolCallId: string;
|
|
47
|
-
toolName: string;
|
|
48
|
-
} | {
|
|
49
|
-
type: "tool-call-delta";
|
|
50
|
-
toolCallId: string;
|
|
51
|
-
toolName: string;
|
|
52
|
-
argsTextDelta: string;
|
|
53
|
-
})[];
|
|
9
|
+
parts: any[];
|
|
54
10
|
}, Promise<boolean>>;
|
|
55
11
|
export declare const listDeltas: import("convex/server").RegisteredQuery<"public", {
|
|
56
12
|
threadId: import("convex/values").GenericId<"threads">;
|
|
@@ -62,53 +18,7 @@ export declare const listDeltas: import("convex/server").RegisteredQuery<"public
|
|
|
62
18
|
streamId: string;
|
|
63
19
|
start: number;
|
|
64
20
|
end: number;
|
|
65
|
-
parts:
|
|
66
|
-
providerOptions?: Record<string, Record<string, any>> | undefined;
|
|
67
|
-
type: "tool-call";
|
|
68
|
-
toolCallId: string;
|
|
69
|
-
toolName: string;
|
|
70
|
-
args: any;
|
|
71
|
-
} | {
|
|
72
|
-
providerOptions?: Record<string, Record<string, any>> | undefined;
|
|
73
|
-
args?: any;
|
|
74
|
-
experimental_content?: ({
|
|
75
|
-
type: "text";
|
|
76
|
-
text: string;
|
|
77
|
-
} | {
|
|
78
|
-
mimeType?: string | undefined;
|
|
79
|
-
type: "image";
|
|
80
|
-
data: string;
|
|
81
|
-
})[] | undefined;
|
|
82
|
-
isError?: boolean | undefined;
|
|
83
|
-
type: "tool-result";
|
|
84
|
-
toolCallId: string;
|
|
85
|
-
toolName: string;
|
|
86
|
-
result: any;
|
|
87
|
-
} | {
|
|
88
|
-
type: "text-delta";
|
|
89
|
-
textDelta: string;
|
|
90
|
-
} | {
|
|
91
|
-
type: "reasoning";
|
|
92
|
-
textDelta: string;
|
|
93
|
-
} | {
|
|
94
|
-
type: "source";
|
|
95
|
-
source: {
|
|
96
|
-
title?: string | undefined;
|
|
97
|
-
providerOptions?: Record<string, Record<string, any>> | undefined;
|
|
98
|
-
id: string;
|
|
99
|
-
sourceType: "url";
|
|
100
|
-
url: string;
|
|
101
|
-
};
|
|
102
|
-
} | {
|
|
103
|
-
type: "tool-call-streaming-start";
|
|
104
|
-
toolCallId: string;
|
|
105
|
-
toolName: string;
|
|
106
|
-
} | {
|
|
107
|
-
type: "tool-call-delta";
|
|
108
|
-
toolCallId: string;
|
|
109
|
-
toolName: string;
|
|
110
|
-
argsTextDelta: string;
|
|
111
|
-
})[];
|
|
21
|
+
parts: any[];
|
|
112
22
|
}[]>>;
|
|
113
23
|
export declare const create: import("convex/server").RegisteredMutation<"public", {
|
|
114
24
|
userId?: string | undefined;
|
|
@@ -143,61 +53,18 @@ export declare const abortByOrder: import("convex/server").RegisteredMutation<"p
|
|
|
143
53
|
export declare const abort: import("convex/server").RegisteredMutation<"public", {
|
|
144
54
|
streamId: Id<"streamingMessages">;
|
|
145
55
|
reason: string;
|
|
56
|
+
finalDelta?: WithoutSystemFields<Doc<"streamDeltas">>;
|
|
146
57
|
}, Promise<boolean>>;
|
|
147
58
|
export declare const finish: import("convex/server").RegisteredMutation<"public", {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
args: any;
|
|
158
|
-
} | {
|
|
159
|
-
providerOptions?: Record<string, Record<string, any>> | undefined;
|
|
160
|
-
args?: any;
|
|
161
|
-
experimental_content?: ({
|
|
162
|
-
type: "text";
|
|
163
|
-
text: string;
|
|
164
|
-
} | {
|
|
165
|
-
mimeType?: string | undefined;
|
|
166
|
-
type: "image";
|
|
167
|
-
data: string;
|
|
168
|
-
})[] | undefined;
|
|
169
|
-
isError?: boolean | undefined;
|
|
170
|
-
type: "tool-result";
|
|
171
|
-
toolCallId: string;
|
|
172
|
-
toolName: string;
|
|
173
|
-
result: any;
|
|
174
|
-
} | {
|
|
175
|
-
type: "text-delta";
|
|
176
|
-
textDelta: string;
|
|
177
|
-
} | {
|
|
178
|
-
type: "reasoning";
|
|
179
|
-
textDelta: string;
|
|
180
|
-
} | {
|
|
181
|
-
type: "source";
|
|
182
|
-
source: {
|
|
183
|
-
title?: string | undefined;
|
|
184
|
-
providerOptions?: Record<string, Record<string, any>> | undefined;
|
|
185
|
-
id: string;
|
|
186
|
-
sourceType: "url";
|
|
187
|
-
url: string;
|
|
188
|
-
};
|
|
189
|
-
} | {
|
|
190
|
-
type: "tool-call-streaming-start";
|
|
191
|
-
toolCallId: string;
|
|
192
|
-
toolName: string;
|
|
193
|
-
} | {
|
|
194
|
-
type: "tool-call-delta";
|
|
195
|
-
toolCallId: string;
|
|
196
|
-
toolName: string;
|
|
197
|
-
argsTextDelta: string;
|
|
198
|
-
})[];
|
|
199
|
-
} | undefined;
|
|
200
|
-
streamId: import("convex/values").GenericId<"streamingMessages">;
|
|
59
|
+
streamId: Id<"streamingMessages">;
|
|
60
|
+
finalDelta?: WithoutSystemFields<Doc<"streamDeltas">>;
|
|
61
|
+
}, Promise<void>>;
|
|
62
|
+
export declare function finishHandler(ctx: MutationCtx, args: {
|
|
63
|
+
streamId: Id<"streamingMessages">;
|
|
64
|
+
finalDelta?: WithoutSystemFields<Doc<"streamDeltas">>;
|
|
65
|
+
}): Promise<void>;
|
|
66
|
+
export declare const heartbeat: import("convex/server").RegisteredMutation<"public", {
|
|
67
|
+
streamId: Id<"streamingMessages">;
|
|
201
68
|
}, Promise<void>>;
|
|
202
69
|
export declare const timeoutStream: import("convex/server").RegisteredMutation<"internal", {
|
|
203
70
|
streamId: import("convex/values").GenericId<"streamingMessages">;
|
|
@@ -229,8 +96,8 @@ export declare const deleteStreamsPageForThreadIdMutation: import("convex/server
|
|
|
229
96
|
deltaCursor: string | undefined;
|
|
230
97
|
}>>;
|
|
231
98
|
export declare const deleteAllStreamsForThreadIdAsync: import("convex/server").RegisteredMutation<"public", {
|
|
232
|
-
deltaCursor?: string | undefined;
|
|
233
99
|
streamOrder?: number | undefined;
|
|
100
|
+
deltaCursor?: string | undefined;
|
|
234
101
|
threadId: import("convex/values").GenericId<"threads">;
|
|
235
102
|
}, Promise<{
|
|
236
103
|
isDone: boolean;
|
|
@@ -251,4 +118,17 @@ export declare const deleteStreamAsync: import("convex/server").RegisteredMutati
|
|
|
251
118
|
export declare const deleteAllStreamsForThreadIdSync: import("convex/server").RegisteredAction<"public", {
|
|
252
119
|
threadId: import("convex/values").GenericId<"threads">;
|
|
253
120
|
}, Promise<void>>;
|
|
121
|
+
export declare function getStreamingMessages(ctx: MutationCtx, threadId: Id<"threads">, order: number, stepOrder: number): Promise<Doc<"streamingMessages">[]>;
|
|
122
|
+
export declare function getStreamingMessagesWithMetadata(ctx: MutationCtx, { threadId, order, stepOrder, }: {
|
|
123
|
+
threadId: Id<"threads">;
|
|
124
|
+
order: number;
|
|
125
|
+
stepOrder: number;
|
|
126
|
+
}, metadata: {
|
|
127
|
+
status: "success" | "failed";
|
|
128
|
+
error?: string;
|
|
129
|
+
}): Promise<MessageWithMetadataInternal[]>;
|
|
130
|
+
export declare function getMessagesWithMetadataForStreamingMessage(ctx: MutationCtx, threadId: Id<"threads">, stepOrder: number, streamingMessage: Doc<"streamingMessages">, metadata: {
|
|
131
|
+
status: "success" | "failed";
|
|
132
|
+
error?: string;
|
|
133
|
+
}): Promise<MessageWithMetadataInternal[]>;
|
|
254
134
|
//# sourceMappingURL=streams.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../src/component/streams.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../src/component/streams.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ import schema from "./schema.js";
|
|
|
7
7
|
import { stream } from "convex-helpers/server/stream";
|
|
8
8
|
import { mergedStream } from "convex-helpers/server/stream";
|
|
9
9
|
import { paginator } from "convex-helpers/server/pagination";
|
|
10
|
+
import { mergeDeltas } from "../react/deltas.js";
|
|
11
|
+
import { serializeOrThrow } from "../mapping.js";
|
|
10
12
|
const SECOND = 1000;
|
|
11
13
|
const MINUTE = 60 * SECOND;
|
|
12
14
|
const MAX_DELTAS_PER_REQUEST = 1000;
|
|
@@ -18,23 +20,23 @@ export const addDelta = mutation({
|
|
|
18
20
|
args: deltaValidator,
|
|
19
21
|
returns: v.boolean(),
|
|
20
22
|
handler: async (ctx, args) => {
|
|
21
|
-
await ctx.db.insert("streamDeltas", args);
|
|
22
|
-
await heartbeatStream(ctx, { streamId: args.streamId });
|
|
23
23
|
const stream = await ctx.db.get(args.streamId);
|
|
24
|
-
if (stream
|
|
25
|
-
console.warn(
|
|
24
|
+
if (!stream) {
|
|
25
|
+
console.warn("Stream not found", args.streamId);
|
|
26
26
|
return false;
|
|
27
27
|
}
|
|
28
|
+
if (stream.state.kind !== "streaming") {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
await ctx.db.insert("streamDeltas", args);
|
|
32
|
+
await heartbeatStream(ctx, { streamId: args.streamId });
|
|
28
33
|
return true;
|
|
29
34
|
},
|
|
30
35
|
});
|
|
31
36
|
export const listDeltas = query({
|
|
32
37
|
args: {
|
|
33
38
|
threadId: v.id("threads"),
|
|
34
|
-
cursors: v.array(v.object({
|
|
35
|
-
streamId: v.id("streamingMessages"),
|
|
36
|
-
cursor: v.number(),
|
|
37
|
-
})),
|
|
39
|
+
cursors: v.array(v.object({ streamId: v.id("streamingMessages"), cursor: v.number() })),
|
|
38
40
|
},
|
|
39
41
|
returns: v.array(vStreamDelta),
|
|
40
42
|
handler: async (ctx, args) => {
|
|
@@ -58,10 +60,7 @@ export const create = mutation({
|
|
|
58
60
|
args: omit(schema.tables.streamingMessages.validator.fields, ["state"]),
|
|
59
61
|
returns: v.id("streamingMessages"),
|
|
60
62
|
handler: async (ctx, args) => {
|
|
61
|
-
const state = {
|
|
62
|
-
kind: "streaming",
|
|
63
|
-
lastHeartbeat: Date.now(),
|
|
64
|
-
};
|
|
63
|
+
const state = { kind: "streaming", lastHeartbeat: Date.now() };
|
|
65
64
|
const streamId = await ctx.db.insert("streamingMessages", {
|
|
66
65
|
...args,
|
|
67
66
|
state,
|
|
@@ -103,11 +102,7 @@ export const list = query({
|
|
|
103
102
|
},
|
|
104
103
|
});
|
|
105
104
|
export const abortByOrder = mutation({
|
|
106
|
-
args: {
|
|
107
|
-
threadId: v.id("threads"),
|
|
108
|
-
order: v.number(),
|
|
109
|
-
reason: v.string(),
|
|
110
|
-
},
|
|
105
|
+
args: { threadId: v.id("threads"), order: v.number(), reason: v.string() },
|
|
111
106
|
returns: v.boolean(),
|
|
112
107
|
handler: async (ctx, args) => {
|
|
113
108
|
const streams = await ctx.db
|
|
@@ -118,10 +113,7 @@ export const abortByOrder = mutation({
|
|
|
118
113
|
.eq("order", args.order))
|
|
119
114
|
.take(100);
|
|
120
115
|
for (const stream of streams) {
|
|
121
|
-
await abortById(ctx, {
|
|
122
|
-
streamId: stream._id,
|
|
123
|
-
reason: args.reason,
|
|
124
|
-
});
|
|
116
|
+
await abortById(ctx, { streamId: stream._id, reason: args.reason });
|
|
125
117
|
}
|
|
126
118
|
return streams.length > 0;
|
|
127
119
|
},
|
|
@@ -130,6 +122,7 @@ export const abort = mutation({
|
|
|
130
122
|
args: {
|
|
131
123
|
streamId: v.id("streamingMessages"),
|
|
132
124
|
reason: v.string(),
|
|
125
|
+
finalDelta: v.optional(deltaValidator),
|
|
133
126
|
},
|
|
134
127
|
returns: v.boolean(),
|
|
135
128
|
handler: abortById,
|
|
@@ -139,8 +132,10 @@ async function abortById(ctx, args) {
|
|
|
139
132
|
if (!stream) {
|
|
140
133
|
throw new Error(`Stream not found: ${args.streamId}`);
|
|
141
134
|
}
|
|
135
|
+
if (args.finalDelta) {
|
|
136
|
+
await ctx.db.insert("streamDeltas", args.finalDelta);
|
|
137
|
+
}
|
|
142
138
|
if (stream.state.kind !== "streaming") {
|
|
143
|
-
console.warn(`Stream trying to abort but not currently streaming (${stream.state.kind}): ${args.streamId}`);
|
|
144
139
|
return false;
|
|
145
140
|
}
|
|
146
141
|
await cleanupTimeoutFn(ctx, stream);
|
|
@@ -157,30 +152,39 @@ async function cleanupTimeoutFn(ctx, stream) {
|
|
|
157
152
|
}
|
|
158
153
|
}
|
|
159
154
|
}
|
|
155
|
+
// No longer used from the DeltaStreamer
|
|
160
156
|
export const finish = mutation({
|
|
161
157
|
args: {
|
|
162
158
|
streamId: v.id("streamingMessages"),
|
|
163
159
|
finalDelta: v.optional(deltaValidator),
|
|
164
160
|
},
|
|
165
161
|
returns: v.null(),
|
|
166
|
-
handler:
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
162
|
+
handler: finishHandler,
|
|
163
|
+
});
|
|
164
|
+
export async function finishHandler(ctx, args) {
|
|
165
|
+
if (args.finalDelta) {
|
|
166
|
+
await ctx.db.insert("streamDeltas", args.finalDelta);
|
|
167
|
+
}
|
|
168
|
+
const stream = await ctx.db.get(args.streamId);
|
|
169
|
+
if (!stream) {
|
|
170
|
+
throw new Error(`Stream not found: ${args.streamId}`);
|
|
171
|
+
}
|
|
172
|
+
if (stream.state.kind !== "streaming") {
|
|
173
|
+
console.warn(`Stream trying to finish ${args.streamId} but is ${stream.state.kind}`);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
await cleanupTimeoutFn(ctx, stream);
|
|
177
|
+
const cleanupFnId = await ctx.scheduler.runAfter(DELETE_STREAM_DELAY, api.streams.deleteStreamAsync, { streamId: args.streamId });
|
|
178
|
+
await ctx.db.patch(args.streamId, {
|
|
179
|
+
state: { kind: "finished", endedAt: Date.now(), cleanupFnId },
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
// TODO: use this heartbeat while streaming, every 30 seconds or so,
|
|
183
|
+
// then reduce the timeout to 60 seconds.
|
|
184
|
+
export const heartbeat = mutation({
|
|
185
|
+
args: { streamId: v.id("streamingMessages") },
|
|
186
|
+
returns: v.null(),
|
|
187
|
+
handler: heartbeatStream,
|
|
184
188
|
});
|
|
185
189
|
async function heartbeatStream(ctx, args) {
|
|
186
190
|
const stream = await ctx.db.get(args.streamId);
|
|
@@ -189,7 +193,6 @@ async function heartbeatStream(ctx, args) {
|
|
|
189
193
|
return;
|
|
190
194
|
}
|
|
191
195
|
if (stream.state.kind !== "streaming") {
|
|
192
|
-
console.warn("Stream is not streaming", args.streamId);
|
|
193
196
|
return;
|
|
194
197
|
}
|
|
195
198
|
if (Date.now() - stream.state.lastHeartbeat < TIMEOUT_INTERVAL / 4) {
|
|
@@ -209,11 +212,7 @@ async function heartbeatStream(ctx, args) {
|
|
|
209
212
|
await ctx.scheduler.cancel(stream.state.timeoutFnId);
|
|
210
213
|
const timeoutFnId = await ctx.scheduler.runAfter(TIMEOUT_INTERVAL, internal.streams.timeoutStream, { streamId: args.streamId });
|
|
211
214
|
await ctx.db.patch(args.streamId, {
|
|
212
|
-
state: {
|
|
213
|
-
kind: "streaming",
|
|
214
|
-
lastHeartbeat: Date.now(),
|
|
215
|
-
timeoutFnId,
|
|
216
|
-
},
|
|
215
|
+
state: { kind: "streaming", lastHeartbeat: Date.now(), timeoutFnId },
|
|
217
216
|
});
|
|
218
217
|
}
|
|
219
218
|
export const timeoutStream = internalMutation({
|
|
@@ -226,10 +225,7 @@ export const timeoutStream = internalMutation({
|
|
|
226
225
|
return;
|
|
227
226
|
}
|
|
228
227
|
await ctx.db.patch(args.streamId, {
|
|
229
|
-
state: {
|
|
230
|
-
kind: "aborted",
|
|
231
|
-
reason: "timeout",
|
|
232
|
-
},
|
|
228
|
+
state: { kind: "aborted", reason: "timeout" },
|
|
233
229
|
});
|
|
234
230
|
},
|
|
235
231
|
});
|
|
@@ -271,11 +267,7 @@ export async function deleteStreamsPageForThreadId(ctx, args) {
|
|
|
271
267
|
"stepOrder",
|
|
272
268
|
]).first();
|
|
273
269
|
if (!streamMessage) {
|
|
274
|
-
return {
|
|
275
|
-
isDone: true,
|
|
276
|
-
streamOrder: undefined,
|
|
277
|
-
deltaCursor: undefined,
|
|
278
|
-
};
|
|
270
|
+
return { isDone: true, streamOrder: undefined, deltaCursor: undefined };
|
|
279
271
|
}
|
|
280
272
|
const result = await deletePageForStreamId(ctx, {
|
|
281
273
|
streamId: streamMessage._id,
|
|
@@ -284,11 +276,7 @@ export async function deleteStreamsPageForThreadId(ctx, args) {
|
|
|
284
276
|
if (result.isDone) {
|
|
285
277
|
deltaCursor = undefined;
|
|
286
278
|
}
|
|
287
|
-
return {
|
|
288
|
-
isDone: false,
|
|
289
|
-
streamOrder: streamMessage.order,
|
|
290
|
-
deltaCursor,
|
|
291
|
-
};
|
|
279
|
+
return { isDone: false, streamOrder: streamMessage.order, deltaCursor };
|
|
292
280
|
}
|
|
293
281
|
export const deleteStreamsPageForThreadIdMutation = internalMutation({
|
|
294
282
|
args: {
|
|
@@ -369,4 +357,60 @@ export const deleteAllStreamsForThreadIdSync = action({
|
|
|
369
357
|
}
|
|
370
358
|
},
|
|
371
359
|
});
|
|
360
|
+
export async function getStreamingMessages(ctx, threadId, order, stepOrder) {
|
|
361
|
+
return mergedStream(["aborted", "streaming", "finished"].map((state) => stream(ctx.db, schema)
|
|
362
|
+
.query("streamingMessages")
|
|
363
|
+
.withIndex("threadId_state_order_stepOrder", (q) => q
|
|
364
|
+
.eq("threadId", threadId)
|
|
365
|
+
.eq("state.kind", state)
|
|
366
|
+
.eq("order", order)
|
|
367
|
+
.lte("stepOrder", stepOrder))
|
|
368
|
+
.order("desc")), ["stepOrder"]).take(10);
|
|
369
|
+
}
|
|
370
|
+
export async function getStreamingMessagesWithMetadata(ctx, { threadId, order, stepOrder, }, metadata) {
|
|
371
|
+
// See if there are any streaming messages for this order
|
|
372
|
+
const streamingMessages = await getStreamingMessages(ctx, threadId, order, stepOrder);
|
|
373
|
+
const messages = (await Promise.all(streamingMessages.map((m) => getMessagesWithMetadataForStreamingMessage(ctx, threadId, stepOrder, m, metadata)))).flat();
|
|
374
|
+
return messages;
|
|
375
|
+
}
|
|
376
|
+
export async function getMessagesWithMetadataForStreamingMessage(ctx, threadId, stepOrder, streamingMessage, metadata) {
|
|
377
|
+
const deltas = await ctx.db
|
|
378
|
+
.query("streamDeltas")
|
|
379
|
+
.withIndex("streamId_start_end", (q) => q.eq("streamId", streamingMessage._id))
|
|
380
|
+
.take(1000);
|
|
381
|
+
const [messageDocs] = mergeDeltas(threadId, [
|
|
382
|
+
{
|
|
383
|
+
...streamingMessage,
|
|
384
|
+
status: "streaming",
|
|
385
|
+
streamId: streamingMessage._id,
|
|
386
|
+
},
|
|
387
|
+
], [], deltas);
|
|
388
|
+
// We don't save messages that have already been saved
|
|
389
|
+
const numToSkip = stepOrder - streamingMessage.stepOrder;
|
|
390
|
+
const messages = await Promise.all(messageDocs
|
|
391
|
+
.slice(numToSkip)
|
|
392
|
+
.filter((m) => m.message !== undefined)
|
|
393
|
+
.map(async (msg) => {
|
|
394
|
+
const message = await serializeOrThrow(msg.message);
|
|
395
|
+
return {
|
|
396
|
+
message,
|
|
397
|
+
...pick(msg, [
|
|
398
|
+
"fileIds",
|
|
399
|
+
"status",
|
|
400
|
+
"finishReason",
|
|
401
|
+
"model",
|
|
402
|
+
"provider",
|
|
403
|
+
"providerMetadata",
|
|
404
|
+
"sources",
|
|
405
|
+
"reasoning",
|
|
406
|
+
"reasoningDetails",
|
|
407
|
+
"usage",
|
|
408
|
+
"warnings",
|
|
409
|
+
"error",
|
|
410
|
+
]),
|
|
411
|
+
...metadata,
|
|
412
|
+
};
|
|
413
|
+
}));
|
|
414
|
+
return messages;
|
|
415
|
+
}
|
|
372
416
|
//# sourceMappingURL=streams.js.map
|