@convex-dev/agent 0.2.6 → 0.2.8-alpha.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/UIMessages.d.ts +43 -0
- package/dist/UIMessages.d.ts.map +1 -0
- package/dist/{react/toUIMessages.js → UIMessages.js} +97 -4
- package/dist/UIMessages.js.map +1 -0
- package/dist/client/createTool.js +1 -1
- package/dist/client/createTool.js.map +1 -1
- package/dist/client/index.d.ts +39 -19
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +22 -19
- package/dist/client/index.js.map +1 -1
- package/dist/client/mockModel.d.ts +2 -0
- package/dist/client/mockModel.d.ts.map +1 -1
- package/dist/client/mockModel.js +11 -7
- package/dist/client/mockModel.js.map +1 -1
- package/dist/client/search.d.ts.map +1 -1
- package/dist/client/search.js +2 -0
- package/dist/client/search.js.map +1 -1
- package/dist/client/start.d.ts +1 -0
- package/dist/client/start.d.ts.map +1 -1
- package/dist/client/start.js +0 -1
- package/dist/client/start.js.map +1 -1
- package/dist/client/streaming.d.ts +23 -4
- package/dist/client/streaming.d.ts.map +1 -1
- package/dist/client/streaming.js +32 -6
- package/dist/client/streaming.js.map +1 -1
- package/dist/client/types.d.ts +19 -13
- package/dist/client/types.d.ts.map +1 -1
- package/dist/component/_generated/api.d.ts +2 -0
- package/dist/component/messages.js +1 -1
- package/dist/component/messages.js.map +1 -1
- package/dist/component/schema.d.ts +10 -4
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +4 -0
- package/dist/component/schema.js.map +1 -1
- package/dist/component/streams.d.ts +2 -4
- package/dist/component/streams.d.ts.map +1 -1
- package/dist/component/streams.js +42 -43
- package/dist/component/streams.js.map +1 -1
- package/dist/deltas.d.ts +48 -0
- package/dist/deltas.d.ts.map +1 -0
- package/dist/deltas.js +468 -0
- package/dist/deltas.js.map +1 -0
- package/dist/react/index.d.ts +4 -77
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +4 -178
- package/dist/react/index.js.map +1 -1
- package/dist/react/optimisticallySendMessage.d.ts +36 -3
- package/dist/react/optimisticallySendMessage.d.ts.map +1 -1
- package/dist/react/optimisticallySendMessage.js +37 -5
- package/dist/react/optimisticallySendMessage.js.map +1 -1
- package/dist/react/types.d.ts +4 -18
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react/useStreamingUIMessages.d.ts +22 -0
- package/dist/react/useStreamingUIMessages.d.ts.map +1 -0
- package/dist/react/useStreamingUIMessages.js +204 -0
- package/dist/react/useStreamingUIMessages.js.map +1 -0
- package/dist/react/useThreadMessages.d.ts +103 -0
- package/dist/react/useThreadMessages.d.ts.map +1 -0
- package/dist/react/useThreadMessages.js +139 -0
- package/dist/react/useThreadMessages.js.map +1 -0
- package/dist/react/useUIMessages.d.ts +91 -0
- package/dist/react/useUIMessages.d.ts.map +1 -0
- package/dist/react/useUIMessages.js +115 -0
- package/dist/react/useUIMessages.js.map +1 -0
- package/dist/validators.d.ts +3 -1
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +1 -0
- package/dist/validators.js.map +1 -1
- package/package.json +4 -4
- package/src/{react/toUIMessages.ts → UIMessages.ts} +132 -15
- package/src/client/createTool.ts +1 -1
- package/src/client/index.ts +60 -41
- package/src/client/mockModel.ts +13 -8
- package/src/client/search.ts +2 -0
- package/src/client/start.ts +2 -1
- package/src/client/streaming.test.ts +186 -0
- package/src/client/streaming.ts +50 -9
- package/src/client/types.ts +19 -21
- package/src/component/_generated/api.d.ts +2 -0
- package/src/component/messages.ts +1 -1
- package/src/component/schema.ts +6 -0
- package/src/component/streams.ts +49 -66
- package/src/{react/deltas.test.ts → deltas.test.ts} +57 -46
- package/src/deltas.ts +589 -0
- package/src/{react/fromUIMessages.test.ts → fromUIMessages.test.ts} +108 -43
- package/src/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/src/react/index.ts +8 -250
- package/src/react/optimisticallySendMessage.ts +57 -8
- package/src/react/types.ts +6 -39
- package/src/react/useStreamingUIMessages.ts +294 -0
- package/src/react/useThreadMessages.ts +251 -0
- package/src/react/useUIMessages.ts +206 -0
- package/src/{react/toUIMessages.test.ts → toUIMessages.test.ts} +3 -3
- package/src/validators.ts +3 -0
- package/dist/client/textStreamParts.d.ts +0 -5
- package/dist/client/textStreamParts.d.ts.map +0 -1
- package/dist/client/textStreamParts.js +0 -44
- package/dist/client/textStreamParts.js.map +0 -1
- package/dist/react/deltas.d.ts +0 -27
- package/dist/react/deltas.d.ts.map +0 -1
- package/dist/react/deltas.js +0 -627
- package/dist/react/deltas.js.map +0 -1
- package/dist/react/fromUIMessages.d.ts +0 -13
- package/dist/react/fromUIMessages.d.ts.map +0 -1
- package/dist/react/fromUIMessages.js +0 -70
- package/dist/react/fromUIMessages.js.map +0 -1
- package/dist/react/toUIMessages.d.ts +0 -19
- package/dist/react/toUIMessages.d.ts.map +0 -1
- package/dist/react/toUIMessages.js.map +0 -1
- package/src/client/textStreamParts.ts +0 -62
- package/src/react/deltas.ts +0 -774
- package/src/react/fromUIMessages.ts +0 -85
package/dist/deltas.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type TextStreamPart, type ToolSet, type UIMessageChunk } from "ai";
|
|
2
|
+
import { type UIMessage } from "./UIMessages.js";
|
|
3
|
+
import { type MessageStatus, type StreamDelta, type StreamMessage } from "./validators.js";
|
|
4
|
+
/**
|
|
5
|
+
* Compressing parts when streaming to save bandwidth in deltas.
|
|
6
|
+
*/
|
|
7
|
+
export declare function compressUIMessageChunks(parts: UIMessageChunk[]): UIMessageChunk[];
|
|
8
|
+
export declare function compressTextStreamParts(parts: TextStreamPart<ToolSet>[]): TextStreamPart<ToolSet>[];
|
|
9
|
+
export declare function blankUIMessage<METADATA = unknown>(streamMessage: StreamMessage & {
|
|
10
|
+
metadata?: METADATA;
|
|
11
|
+
}, threadId: string): UIMessage<METADATA>;
|
|
12
|
+
export declare function statusFromStreamStatus(status: StreamMessage["status"]): MessageStatus | "streaming";
|
|
13
|
+
export declare function updateFromUIMessageChunks(uiMessage: UIMessage, parts: UIMessageChunk[]): Promise<UIMessage>;
|
|
14
|
+
export declare function deriveUIMessagesFromDeltas(threadId: string, streamMessages: StreamMessage[], allDeltas: StreamDelta[]): Promise<UIMessage[]>;
|
|
15
|
+
/**
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
export declare function deriveUIMessagesFromTextStreamParts(threadId: string, streamMessages: StreamMessage[], existingStreams: Array<{
|
|
19
|
+
streamId: string;
|
|
20
|
+
cursor: number;
|
|
21
|
+
message: UIMessage;
|
|
22
|
+
}>, allDeltas: StreamDelta[]): [
|
|
23
|
+
UIMessage[],
|
|
24
|
+
Array<{
|
|
25
|
+
streamId: string;
|
|
26
|
+
cursor: number;
|
|
27
|
+
message: UIMessage;
|
|
28
|
+
}>,
|
|
29
|
+
boolean
|
|
30
|
+
];
|
|
31
|
+
export declare function getParts<T extends StreamDelta["parts"][number]>(deltas: StreamDelta[], fromCursor?: number): {
|
|
32
|
+
parts: T[];
|
|
33
|
+
cursor: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* This is historically from when we would use the onChunk callback instead of
|
|
37
|
+
* consuming the full UIMessageStream.
|
|
38
|
+
*/
|
|
39
|
+
export declare function updateFromTextStreamParts(threadId: string, streamMessage: StreamMessage, existing: {
|
|
40
|
+
streamId: string;
|
|
41
|
+
cursor: number;
|
|
42
|
+
message: UIMessage;
|
|
43
|
+
} | undefined, deltas: StreamDelta[]): [{
|
|
44
|
+
streamId: string;
|
|
45
|
+
cursor: number;
|
|
46
|
+
message: UIMessage;
|
|
47
|
+
}, boolean];
|
|
48
|
+
//# sourceMappingURL=deltas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deltas.d.ts","sourceRoot":"","sources":["../src/deltas.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EAEnB,KAAK,OAAO,EAEZ,KAAK,cAAc,EACpB,MAAM,IAAI,CAAC;AAEZ,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AAEH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EAAE,GACtB,cAAc,EAAE,CAelB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,GAC/B,cAAc,CAAC,OAAO,CAAC,EAAE,CAwB3B;AAED,wBAAgB,cAAc,CAAC,QAAQ,GAAG,OAAO,EAC/C,aAAa,EAAE,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAE,EACtD,QAAQ,EAAE,MAAM,GACf,SAAS,CAAC,QAAQ,CAAC,CAcrB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC9B,aAAa,GAAG,WAAW,CAW7B;AAED,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,cAAc,EAAE,sBAgCxB;AAED,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,aAAa,EAAE,EAC/B,SAAS,EAAE,WAAW,EAAE,GACvB,OAAO,CAAC,SAAS,EAAE,CAAC,CAyBtB;AAED;;GAEG;AAEH,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,aAAa,EAAE,EAC/B,eAAe,EAAE,KAAK,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,CAAC;CACpB,CAAC,EACF,SAAS,EAAE,WAAW,EAAE,GACvB;IACD,SAAS,EAAE;IACX,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,CAAA;KAAE,CAAC;IAC/D,OAAO;CACR,CAgCA;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAC7D,MAAM,EAAE,WAAW,EAAE,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA6BhC;AAED;;;GAGG;AAGH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EACJ;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,CAAA;CAAE,GACxD,SAAS,EACb,MAAM,EAAE,WAAW,EAAE,GACpB,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,CAAA;CAAE,EAAE,OAAO,CAAC,CAuSrE"}
|
package/dist/deltas.js
ADDED
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
import { readUIMessageStream, } from "ai";
|
|
2
|
+
import { assert, pick } from "convex-helpers";
|
|
3
|
+
import {} from "./UIMessages.js";
|
|
4
|
+
import { sorted } from "./shared.js";
|
|
5
|
+
import {} from "./validators.js";
|
|
6
|
+
/**
|
|
7
|
+
* Compressing parts when streaming to save bandwidth in deltas.
|
|
8
|
+
*/
|
|
9
|
+
export function compressUIMessageChunks(parts) {
|
|
10
|
+
const compressed = [];
|
|
11
|
+
for (const part of parts) {
|
|
12
|
+
const last = compressed.at(-1);
|
|
13
|
+
if (part.type === "text-delta" || part.type === "reasoning-delta") {
|
|
14
|
+
if (last?.type === part.type && part.id === last.id) {
|
|
15
|
+
last.delta += part.delta;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
compressed.push(part);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
compressed.push(part);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return compressed;
|
|
26
|
+
}
|
|
27
|
+
export function compressTextStreamParts(parts) {
|
|
28
|
+
const compressed = [];
|
|
29
|
+
for (const part of parts) {
|
|
30
|
+
const last = compressed.at(-1);
|
|
31
|
+
if (part.type === "text-delta" || part.type === "reasoning-delta") {
|
|
32
|
+
if (last?.type === part.type && part.id === last.id) {
|
|
33
|
+
last.text += part.text;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
compressed.push(part);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
if (part.type === "file") {
|
|
41
|
+
compressed.push({
|
|
42
|
+
type: "file",
|
|
43
|
+
file: {
|
|
44
|
+
...part.file,
|
|
45
|
+
uint8Array: undefined,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
compressed.push(part);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return compressed;
|
|
53
|
+
}
|
|
54
|
+
export function blankUIMessage(streamMessage, threadId) {
|
|
55
|
+
return {
|
|
56
|
+
id: `stream:${streamMessage.streamId}`,
|
|
57
|
+
key: `${threadId}-${streamMessage.order}-${streamMessage.stepOrder}`,
|
|
58
|
+
order: streamMessage.order,
|
|
59
|
+
stepOrder: streamMessage.stepOrder,
|
|
60
|
+
status: statusFromStreamStatus(streamMessage.status),
|
|
61
|
+
agentName: streamMessage.agentName,
|
|
62
|
+
text: "",
|
|
63
|
+
_creationTime: Date.now(),
|
|
64
|
+
role: "assistant",
|
|
65
|
+
parts: [],
|
|
66
|
+
...(streamMessage.metadata ? { metadata: streamMessage.metadata } : {}),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export function statusFromStreamStatus(status) {
|
|
70
|
+
switch (status) {
|
|
71
|
+
case "streaming":
|
|
72
|
+
return "streaming";
|
|
73
|
+
case "finished":
|
|
74
|
+
return "success";
|
|
75
|
+
case "aborted":
|
|
76
|
+
return "failed";
|
|
77
|
+
default:
|
|
78
|
+
return "pending";
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export async function updateFromUIMessageChunks(uiMessage, parts) {
|
|
82
|
+
const partsStream = new ReadableStream({
|
|
83
|
+
start(controller) {
|
|
84
|
+
for (const part of parts) {
|
|
85
|
+
controller.enqueue(part);
|
|
86
|
+
}
|
|
87
|
+
controller.close();
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
let failed = false;
|
|
91
|
+
const messageStream = readUIMessageStream({
|
|
92
|
+
message: uiMessage,
|
|
93
|
+
stream: partsStream,
|
|
94
|
+
onError: (e) => {
|
|
95
|
+
failed = true;
|
|
96
|
+
console.error("Error in stream", e);
|
|
97
|
+
},
|
|
98
|
+
terminateOnError: true,
|
|
99
|
+
});
|
|
100
|
+
let message = uiMessage;
|
|
101
|
+
for await (const messagePart of messageStream) {
|
|
102
|
+
message = messagePart;
|
|
103
|
+
}
|
|
104
|
+
if (failed) {
|
|
105
|
+
message.status = "failed";
|
|
106
|
+
}
|
|
107
|
+
message.text = message.parts
|
|
108
|
+
.filter((p) => p.type === "text")
|
|
109
|
+
.map((p) => p.text)
|
|
110
|
+
.join("");
|
|
111
|
+
return message;
|
|
112
|
+
}
|
|
113
|
+
export async function deriveUIMessagesFromDeltas(threadId, streamMessages, allDeltas) {
|
|
114
|
+
const messages = [];
|
|
115
|
+
for (const streamMessage of streamMessages) {
|
|
116
|
+
if (streamMessage.format === "UIMessageChunk") {
|
|
117
|
+
const { parts } = getParts(allDeltas.filter((d) => d.streamId === streamMessage.streamId), 0);
|
|
118
|
+
const uiMessage = await updateFromUIMessageChunks(blankUIMessage(streamMessage, threadId), parts);
|
|
119
|
+
// TODO: this fails on partial tool calls
|
|
120
|
+
messages.push(uiMessage);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
const [uiMessages] = deriveUIMessagesFromTextStreamParts(threadId, [streamMessage], [], allDeltas);
|
|
124
|
+
messages.push(...uiMessages);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return sorted(messages);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
*
|
|
131
|
+
*/
|
|
132
|
+
export function deriveUIMessagesFromTextStreamParts(threadId, streamMessages, existingStreams, allDeltas) {
|
|
133
|
+
const newStreams = [];
|
|
134
|
+
// Seed the existing chunks
|
|
135
|
+
let changed = false;
|
|
136
|
+
for (const streamMessage of streamMessages) {
|
|
137
|
+
const deltas = allDeltas.filter((d) => d.streamId === streamMessage.streamId);
|
|
138
|
+
const existing = existingStreams.find((s) => s.streamId === streamMessage.streamId);
|
|
139
|
+
const [newStream, messageChanged] = updateFromTextStreamParts(threadId, streamMessage, existing, deltas);
|
|
140
|
+
newStreams.push(newStream);
|
|
141
|
+
if (messageChanged)
|
|
142
|
+
changed = true;
|
|
143
|
+
}
|
|
144
|
+
for (const { streamId } of existingStreams) {
|
|
145
|
+
if (!newStreams.find((s) => s.streamId === streamId)) {
|
|
146
|
+
// There's a stream that's no longer active.
|
|
147
|
+
changed = true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const messages = sorted(newStreams.map((s) => s.message));
|
|
151
|
+
return [messages, newStreams, changed];
|
|
152
|
+
}
|
|
153
|
+
export function getParts(deltas, fromCursor) {
|
|
154
|
+
const parts = [];
|
|
155
|
+
let cursor = fromCursor ?? 0;
|
|
156
|
+
for (const delta of deltas.sort((a, b) => a.start - b.start)) {
|
|
157
|
+
if (delta.parts.length === 0) {
|
|
158
|
+
console.debug(`Got delta with no parts: ${JSON.stringify(delta)}`);
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (cursor !== delta.start) {
|
|
162
|
+
if (cursor >= delta.end) {
|
|
163
|
+
console.debug(`Got duplicate delta for stream ${delta.streamId} at ${delta.start}`);
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
else if (cursor < delta.start) {
|
|
167
|
+
console.warn(`Got delta for stream ${delta.streamId} that has a gap ${cursor} -> ${delta.start}`);
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
throw new Error(`Got unexpected delta for stream ${delta.streamId}: delta: ${delta.start} -> ${delta.end} existing cursor: ${cursor}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
parts.push(...delta.parts);
|
|
175
|
+
cursor = delta.end;
|
|
176
|
+
}
|
|
177
|
+
return { parts, cursor };
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* This is historically from when we would use the onChunk callback instead of
|
|
181
|
+
* consuming the full UIMessageStream.
|
|
182
|
+
*/
|
|
183
|
+
// exported for testing
|
|
184
|
+
export function updateFromTextStreamParts(threadId, streamMessage, existing, deltas) {
|
|
185
|
+
const { cursor, parts } = getParts(deltas, existing?.cursor);
|
|
186
|
+
const changed = parts.length > 0 ||
|
|
187
|
+
(existing &&
|
|
188
|
+
statusFromStreamStatus(streamMessage.status) !== existing.message.status);
|
|
189
|
+
const existingMessage = existing?.message ?? blankUIMessage(streamMessage, threadId);
|
|
190
|
+
if (!changed) {
|
|
191
|
+
return [
|
|
192
|
+
existing ?? {
|
|
193
|
+
streamId: streamMessage.streamId,
|
|
194
|
+
cursor,
|
|
195
|
+
message: existingMessage,
|
|
196
|
+
},
|
|
197
|
+
false,
|
|
198
|
+
];
|
|
199
|
+
}
|
|
200
|
+
const message = structuredClone(existingMessage);
|
|
201
|
+
message.status = statusFromStreamStatus(streamMessage.status);
|
|
202
|
+
const textPartsById = new Map();
|
|
203
|
+
const toolPartsById = new Map(message.parts
|
|
204
|
+
.filter((p) => p.type.startsWith("tool-") || p.type === "dynamic-tool")
|
|
205
|
+
.map((p) => [p.toolCallId, p]));
|
|
206
|
+
const reasoningPartsById = new Map();
|
|
207
|
+
for (const part of parts) {
|
|
208
|
+
switch (part.type) {
|
|
209
|
+
case "text-start":
|
|
210
|
+
case "text-delta": {
|
|
211
|
+
if (!textPartsById.has(part.id)) {
|
|
212
|
+
const lastPart = message.parts.at(-1);
|
|
213
|
+
if (lastPart?.type === "text") {
|
|
214
|
+
textPartsById.set(part.id, lastPart);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
const newPart = {
|
|
218
|
+
type: "text",
|
|
219
|
+
text: "",
|
|
220
|
+
providerMetadata: part.providerMetadata,
|
|
221
|
+
};
|
|
222
|
+
textPartsById.set(part.id, newPart);
|
|
223
|
+
message.parts.push(newPart);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (part.type === "text-delta") {
|
|
227
|
+
const textPart = textPartsById.get(part.id);
|
|
228
|
+
textPart.text += part.text;
|
|
229
|
+
textPart.providerMetadata = mergeProviderMetadata(textPart.providerMetadata, part.providerMetadata);
|
|
230
|
+
}
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
case "tool-input-start": {
|
|
234
|
+
let newPart;
|
|
235
|
+
if (part.dynamic) {
|
|
236
|
+
newPart = {
|
|
237
|
+
type: "dynamic-tool",
|
|
238
|
+
toolCallId: part.id,
|
|
239
|
+
toolName: part.toolName,
|
|
240
|
+
state: "input-streaming",
|
|
241
|
+
input: "",
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
newPart = {
|
|
246
|
+
type: `tool-${part.toolName}`,
|
|
247
|
+
toolCallId: part.id,
|
|
248
|
+
state: "input-streaming",
|
|
249
|
+
input: "",
|
|
250
|
+
providerExecuted: part.providerExecuted,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
toolPartsById.set(part.id, newPart);
|
|
254
|
+
message.parts.push(newPart);
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
case "tool-input-delta":
|
|
258
|
+
{
|
|
259
|
+
const toUpdate = toolPartsById.get(part.id);
|
|
260
|
+
assert(toUpdate, `Expected to find tool call part ${part.id} to update`);
|
|
261
|
+
toUpdate.input = (toUpdate.input ?? "") + part.delta;
|
|
262
|
+
}
|
|
263
|
+
break;
|
|
264
|
+
case "tool-input-end":
|
|
265
|
+
{
|
|
266
|
+
const toUpdate = toolPartsById.get(part.id);
|
|
267
|
+
assert(toUpdate, `Expected to find tool call part ${part.id} to update`);
|
|
268
|
+
toUpdate.state = "input-available";
|
|
269
|
+
if (part.providerMetadata) {
|
|
270
|
+
const updatable = toUpdate;
|
|
271
|
+
updatable.callProviderMetadata = mergeProviderMetadata(updatable.callProviderMetadata, part.providerMetadata);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
break;
|
|
275
|
+
case "tool-call": {
|
|
276
|
+
let newPart;
|
|
277
|
+
if (part.dynamic) {
|
|
278
|
+
newPart = {
|
|
279
|
+
type: "dynamic-tool",
|
|
280
|
+
toolCallId: part.toolCallId,
|
|
281
|
+
toolName: part.toolName,
|
|
282
|
+
input: part.input,
|
|
283
|
+
state: "input-available",
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
newPart = {
|
|
288
|
+
type: `tool-${part.toolName}`,
|
|
289
|
+
toolCallId: part.toolCallId,
|
|
290
|
+
input: part.input,
|
|
291
|
+
state: "input-available",
|
|
292
|
+
};
|
|
293
|
+
if (part.providerExecuted) {
|
|
294
|
+
newPart.providerExecuted = part.providerExecuted;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
if (part.providerMetadata) {
|
|
298
|
+
newPart.callProviderMetadata = part.providerMetadata;
|
|
299
|
+
}
|
|
300
|
+
if (toolPartsById.has(part.toolCallId)) {
|
|
301
|
+
const toUpdate = toolPartsById.get(part.toolCallId);
|
|
302
|
+
Object.assign(toUpdate, newPart);
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
toolPartsById.set(part.toolCallId, newPart);
|
|
306
|
+
message.parts.push(newPart);
|
|
307
|
+
}
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
case "tool-result": {
|
|
311
|
+
const toolCall = toolPartsById.get(part.toolCallId);
|
|
312
|
+
assert(toolCall, `Expected to find tool call part ${part.toolCallId} to update with result`);
|
|
313
|
+
let newPart;
|
|
314
|
+
if (toolCall.type === "dynamic-tool") {
|
|
315
|
+
newPart = {
|
|
316
|
+
...toolCall,
|
|
317
|
+
state: "output-available",
|
|
318
|
+
input: part.input ?? toolCall.input,
|
|
319
|
+
output: part.output ?? toolCall.output,
|
|
320
|
+
...pick(part, ["preliminary"]),
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
newPart = {
|
|
325
|
+
...toolCall,
|
|
326
|
+
state: "output-available",
|
|
327
|
+
input: part.input ?? toolCall.input,
|
|
328
|
+
output: part.output ?? toolCall.output,
|
|
329
|
+
preliminary: part.preliminary,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
Object.assign(toolCall, newPart);
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
case "reasoning-start":
|
|
336
|
+
case "reasoning-delta": {
|
|
337
|
+
if (!reasoningPartsById.has(part.id)) {
|
|
338
|
+
const lastPart = message.parts.at(-1);
|
|
339
|
+
if (lastPart?.type === "reasoning") {
|
|
340
|
+
reasoningPartsById.set(part.id, lastPart);
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
const newPart = {
|
|
344
|
+
type: "reasoning",
|
|
345
|
+
state: "streaming",
|
|
346
|
+
text: "",
|
|
347
|
+
providerMetadata: part.providerMetadata,
|
|
348
|
+
};
|
|
349
|
+
reasoningPartsById.set(part.id, newPart);
|
|
350
|
+
message.parts.push(newPart);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
const reasoningPart = reasoningPartsById.get(part.id);
|
|
354
|
+
if (part.type === "reasoning-delta") {
|
|
355
|
+
reasoningPart.text += part.text;
|
|
356
|
+
reasoningPart.providerMetadata = mergeProviderMetadata(reasoningPart.providerMetadata, part.providerMetadata);
|
|
357
|
+
}
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
case "reasoning-end": {
|
|
361
|
+
const reasoningPart = reasoningPartsById.get(part.id) ??
|
|
362
|
+
message.parts.find((p) => p.type === "reasoning" && p.state === "streaming");
|
|
363
|
+
if (reasoningPart) {
|
|
364
|
+
reasoningPart.state = "done";
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
console.warn(`Expected to find reasoning part ${part.id} to finish, but found none`);
|
|
368
|
+
}
|
|
369
|
+
break;
|
|
370
|
+
}
|
|
371
|
+
case "source":
|
|
372
|
+
if (part.sourceType === "url") {
|
|
373
|
+
message.parts.push({
|
|
374
|
+
type: "source-url",
|
|
375
|
+
url: part.url,
|
|
376
|
+
sourceId: part.id,
|
|
377
|
+
providerMetadata: part.providerMetadata,
|
|
378
|
+
title: part.title,
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
else if (part.sourceType === "document") {
|
|
382
|
+
message.parts.push({
|
|
383
|
+
type: "source-document",
|
|
384
|
+
mediaType: part.mediaType,
|
|
385
|
+
sourceId: part.id,
|
|
386
|
+
title: part.title,
|
|
387
|
+
filename: part.filename,
|
|
388
|
+
providerMetadata: part.providerMetadata,
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
console.warn("Got source part with unknown source type", part);
|
|
393
|
+
}
|
|
394
|
+
break;
|
|
395
|
+
case "abort":
|
|
396
|
+
message.status = "failed";
|
|
397
|
+
break;
|
|
398
|
+
case "error":
|
|
399
|
+
message.status = "failed";
|
|
400
|
+
console.warn("Generation failed with error", part.error);
|
|
401
|
+
break;
|
|
402
|
+
case "tool-error": {
|
|
403
|
+
const toolPart = toolPartsById.get(part.toolCallId);
|
|
404
|
+
if (toolPart) {
|
|
405
|
+
toolPart.errorText =
|
|
406
|
+
part.error instanceof Error
|
|
407
|
+
? part.error.message.toString()
|
|
408
|
+
: String(part.error);
|
|
409
|
+
}
|
|
410
|
+
break;
|
|
411
|
+
}
|
|
412
|
+
case "file":
|
|
413
|
+
case "text-end":
|
|
414
|
+
case "finish-step":
|
|
415
|
+
case "finish":
|
|
416
|
+
case "raw":
|
|
417
|
+
case "start-step":
|
|
418
|
+
case "start":
|
|
419
|
+
// ignore
|
|
420
|
+
break;
|
|
421
|
+
default: {
|
|
422
|
+
// Should never happen
|
|
423
|
+
const _ = part;
|
|
424
|
+
console.warn(`Received unexpected part: ${JSON.stringify(part)}`);
|
|
425
|
+
break;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
// Consider reasoning done once something else happens
|
|
430
|
+
for (let i = 0; i < message.parts.length - 1; i++) {
|
|
431
|
+
const part = message.parts[i];
|
|
432
|
+
if (part.type === "reasoning") {
|
|
433
|
+
part.state = "done";
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
message.text = message.parts
|
|
437
|
+
.filter((p) => p.type === "text")
|
|
438
|
+
.map((p) => p.text)
|
|
439
|
+
.join("");
|
|
440
|
+
return [
|
|
441
|
+
{
|
|
442
|
+
streamId: streamMessage.streamId,
|
|
443
|
+
cursor,
|
|
444
|
+
message,
|
|
445
|
+
},
|
|
446
|
+
true,
|
|
447
|
+
];
|
|
448
|
+
}
|
|
449
|
+
function mergeProviderMetadata(existing, part) {
|
|
450
|
+
if (!existing && !part) {
|
|
451
|
+
return undefined;
|
|
452
|
+
}
|
|
453
|
+
if (!existing) {
|
|
454
|
+
return part;
|
|
455
|
+
}
|
|
456
|
+
if (!part) {
|
|
457
|
+
return existing;
|
|
458
|
+
}
|
|
459
|
+
const merged = existing;
|
|
460
|
+
for (const [provider, metadata] of Object.entries(part)) {
|
|
461
|
+
merged[provider] = {
|
|
462
|
+
...merged[provider],
|
|
463
|
+
...metadata,
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
return merged;
|
|
467
|
+
}
|
|
468
|
+
//# sourceMappingURL=deltas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deltas.js","sourceRoot":"","sources":["../src/deltas.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,83 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import { type UsePaginatedQueryResult } from "convex/react";
|
|
3
|
-
import type { UIMessage } from "./toUIMessages.js";
|
|
4
|
-
import { toUIMessages } from "./toUIMessages.js";
|
|
5
|
-
import type { ThreadQuery, ThreadStreamQuery, ThreadMessagesArgs, ThreadMessagesResult } from "./types.js";
|
|
1
|
+
export { toUIMessages, type UIMessage } from "../UIMessages.js";
|
|
6
2
|
export { optimisticallySendMessage } from "./optimisticallySendMessage.js";
|
|
7
3
|
export { useSmoothText } from "./useSmoothText.js";
|
|
8
4
|
export { SmoothText } from "./SmoothText.js";
|
|
9
|
-
export {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*
|
|
13
|
-
* This hook is a wrapper around `usePaginatedQuery` and `useStreamingThreadMessages`.
|
|
14
|
-
* It will fetch both full messages and streaming messages, and merge them together.
|
|
15
|
-
*
|
|
16
|
-
* The query must take as arguments `{ threadId, paginationOpts }` and return a
|
|
17
|
-
* pagination result of objects that extend `MessageDoc`.
|
|
18
|
-
*
|
|
19
|
-
* For streaming, it should look like this:
|
|
20
|
-
* ```ts
|
|
21
|
-
* export const listThreadMessages = query({
|
|
22
|
-
* args: {
|
|
23
|
-
* threadId: v.string(),
|
|
24
|
-
* paginationOpts: paginationOptsValidator,
|
|
25
|
-
* streamArgs: vStreamArgs,
|
|
26
|
-
* ... other arguments you want
|
|
27
|
-
* },
|
|
28
|
-
* handler: async (ctx, { threadId, paginationOpts, streamArgs }) => {
|
|
29
|
-
* // await authorizeThreadAccess(ctx, threadId);
|
|
30
|
-
* const paginated = await agent.listMessages(ctx, { threadId, paginationOpts });
|
|
31
|
-
* const streams = await agent.syncStreams(ctx, { threadId, streamArgs });
|
|
32
|
-
* // Here you could filter out / modify the documents & stream deltas.
|
|
33
|
-
* return { ...paginated, streams };
|
|
34
|
-
* },
|
|
35
|
-
* });
|
|
36
|
-
* ```
|
|
37
|
-
*
|
|
38
|
-
* Then the hook can be used like this:
|
|
39
|
-
* ```ts
|
|
40
|
-
* const messages = useThreadMessages(
|
|
41
|
-
* api.myModule.listThreadMessages,
|
|
42
|
-
* { threadId },
|
|
43
|
-
* { initialNumItems: 10, stream: true }
|
|
44
|
-
* );
|
|
45
|
-
* ```
|
|
46
|
-
*
|
|
47
|
-
* @param query The query to use to fetch messages.
|
|
48
|
-
* It must take as arguments `{ threadId, paginationOpts }` and return a
|
|
49
|
-
* pagination result of objects that extend `MessageDoc`.
|
|
50
|
-
* To support streaming, it must also take in `streamArgs: vStreamArgs` and
|
|
51
|
-
* return a `streams` object returned from `agent.syncStreams`.
|
|
52
|
-
* @param args The arguments to pass to the query other than `paginationOpts`
|
|
53
|
-
* and `streamArgs`. So `{ threadId }` at minimum, plus any other arguments that
|
|
54
|
-
* you want to pass to the query.
|
|
55
|
-
* @param options The options for the query. Similar to usePaginatedQuery.
|
|
56
|
-
* To enable streaming, pass `stream: true`.
|
|
57
|
-
* @returns The messages. If stream is true, it will return a list of messages
|
|
58
|
-
* that includes both full messages and streaming messages.
|
|
59
|
-
*/
|
|
60
|
-
export declare function useThreadMessages<Query extends ThreadQuery<any, any>>(query: Query, args: ThreadMessagesArgs<Query> | "skip", options: {
|
|
61
|
-
initialNumItems: number;
|
|
62
|
-
stream?: Query extends ThreadStreamQuery ? boolean : ErrorMessage<"To enable streaming, your query must take in streamArgs: vStreamArgs and return a streams object returned from agent.syncStreams. See docs.">;
|
|
63
|
-
}): UsePaginatedQueryResult<ThreadMessagesResult<Query> & {
|
|
64
|
-
streaming?: boolean;
|
|
65
|
-
}>;
|
|
66
|
-
/**
|
|
67
|
-
* A hook that fetches streaming messages from a thread.
|
|
68
|
-
* This ONLY returns streaming messages. To get both, use `useThreadMessages`.
|
|
69
|
-
*
|
|
70
|
-
* @param query The query to use to fetch messages.
|
|
71
|
-
* It must take as arguments `{ threadId, paginationOpts, streamArgs }` and
|
|
72
|
-
* return a `streams` object returned from `agent.syncStreams`.
|
|
73
|
-
* @param args The arguments to pass to the query other than `paginationOpts`
|
|
74
|
-
* and `streamArgs`. So `{ threadId }` at minimum, plus any other arguments that
|
|
75
|
-
* you want to pass to the query.
|
|
76
|
-
* @returns The streaming messages.
|
|
77
|
-
*/
|
|
78
|
-
export declare function useStreamingThreadMessages<Query extends ThreadStreamQuery<any, any>>(query: Query, args: (ThreadMessagesArgs<Query> & {
|
|
79
|
-
startOrder?: number;
|
|
80
|
-
}) | "skip"): Array<ThreadMessagesResult<Query>> | undefined;
|
|
5
|
+
export { type ThreadMessagesQuery, useThreadMessages, useStreamingThreadMessages, } from "./useThreadMessages.js";
|
|
6
|
+
export { type UIMessagesQuery, useUIMessages } from "./useUIMessages.js";
|
|
7
|
+
export { useStreamingUIMessages } from "./useStreamingUIMessages.js";
|
|
81
8
|
/**
|
|
82
9
|
* @deprecated use useThreadMessages or useStreamingThreadMessages instead
|
|
83
10
|
* Use this hook to stream text from a server action, using the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,KAAK,mBAAmB,EACxB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,KAAK,CAAC,EAAE,MAAM;;;;YAOS,MAAM,oBA2C9B"}
|