@convex-dev/agent 0.1.14 → 0.1.15-alpha.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/index.d.ts +496 -174
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +120 -165
- package/dist/client/index.js.map +1 -1
- package/dist/client/listMessages.d.ts +22 -0
- package/dist/client/listMessages.d.ts.map +1 -0
- package/dist/client/listMessages.js +25 -0
- package/dist/client/listMessages.js.map +1 -0
- package/dist/client/search.d.ts +162 -0
- package/dist/client/search.d.ts.map +1 -0
- package/dist/client/search.js +113 -0
- package/dist/client/search.js.map +1 -0
- package/dist/client/streaming.d.ts +17 -3
- package/dist/client/streaming.d.ts.map +1 -1
- package/dist/client/streaming.js +39 -1
- package/dist/client/streaming.js.map +1 -1
- package/dist/client/types.d.ts +5 -1
- package/dist/client/types.d.ts.map +1 -1
- package/dist/component/_generated/api.d.ts +14 -3
- package/dist/component/messages.d.ts +4 -4
- package/dist/component/messages.d.ts.map +1 -1
- package/dist/component/messages.js +12 -7
- package/dist/component/messages.js.map +1 -1
- package/dist/component/schema.d.ts +38 -28
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +3 -2
- package/dist/component/schema.js.map +1 -1
- package/dist/component/streams.d.ts +7 -0
- package/dist/component/streams.d.ts.map +1 -1
- package/dist/component/streams.js +49 -22
- package/dist/component/streams.js.map +1 -1
- package/dist/component/vector/index.js +3 -3
- package/dist/component/vector/index.js.map +1 -1
- package/dist/react/deltas.d.ts.map +1 -1
- package/dist/react/deltas.js +2 -2
- package/dist/react/deltas.js.map +1 -1
- package/dist/react/index.d.ts +4 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +22 -9
- package/dist/react/index.js.map +1 -1
- package/dist/react/optimisticallySendMessage.js +1 -1
- package/dist/react/optimisticallySendMessage.js.map +1 -1
- package/dist/validators.d.ts +49 -55
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +3 -8
- package/dist/validators.js.map +1 -1
- package/package.json +4 -3
- package/src/client/index.ts +249 -268
- package/src/client/listMessages.ts +38 -0
- package/src/client/search.ts +172 -0
- package/src/client/streaming.ts +56 -3
- package/src/client/types.ts +5 -1
- package/src/component/_generated/api.d.ts +14 -3
- package/src/component/messages.ts +13 -7
- package/src/component/schema.ts +3 -2
- package/src/component/streams.ts +85 -39
- package/src/component/vector/index.ts +4 -4
- package/src/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/src/react/deltas.ts +4 -2
- package/src/react/index.ts +23 -11
- package/src/react/optimisticallySendMessage.ts +1 -1
- package/src/validators.ts +8 -10
package/src/react/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import type
|
|
2
|
+
import { omit, type ErrorMessage } from "convex-helpers";
|
|
3
3
|
import {
|
|
4
4
|
type PaginatedQueryArgs,
|
|
5
5
|
type UsePaginatedQueryResult,
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "convex/react";
|
|
8
8
|
import { usePaginatedQuery } from "convex-helpers/react";
|
|
9
9
|
import type { FunctionArgs } from "convex/server";
|
|
10
|
-
import { useMemo, useState } from "react";
|
|
10
|
+
import { useMemo, useRef, useState } from "react";
|
|
11
11
|
import type { MessageDoc } from "../client/index.js";
|
|
12
12
|
import type { SyncStreamsReturnValue } from "../client/types.js";
|
|
13
13
|
import type { StreamArgs } from "../validators.js";
|
|
@@ -103,14 +103,18 @@ export function useThreadMessages<
|
|
|
103
103
|
ThreadMessagesArgs<Query>,
|
|
104
104
|
ThreadMessagesResult<Query>
|
|
105
105
|
>,
|
|
106
|
-
!options.stream
|
|
106
|
+
!options.stream ||
|
|
107
|
+
args === "skip" ||
|
|
108
|
+
paginated.status === "LoadingFirstPage"
|
|
109
|
+
? "skip"
|
|
110
|
+
: { ...args, startOrder: paginated.results.at(-1)?.order }
|
|
107
111
|
);
|
|
108
112
|
|
|
109
113
|
const merged = useMemo(() => {
|
|
110
114
|
const streamListMessages =
|
|
111
115
|
streamMessages?.map((m) => ({
|
|
112
116
|
...m,
|
|
113
|
-
streaming:
|
|
117
|
+
streaming: !m.status || m.status === "streaming",
|
|
114
118
|
})) ?? [];
|
|
115
119
|
return {
|
|
116
120
|
...paginated,
|
|
@@ -150,7 +154,7 @@ export function useStreamingThreadMessages<
|
|
|
150
154
|
Query extends ThreadStreamQuery<any, any>,
|
|
151
155
|
>(
|
|
152
156
|
query: Query,
|
|
153
|
-
args: ThreadMessagesArgs<Query> | "skip"
|
|
157
|
+
args: (ThreadMessagesArgs<Query> & { startOrder?: number }) | "skip"
|
|
154
158
|
): Array<ThreadMessagesResult<Query>> | undefined {
|
|
155
159
|
// Invariant: streamMessages[streamId] is comprised of all deltas up to the
|
|
156
160
|
// cursor. There can be multiple messages in the same stream, e.g. for tool
|
|
@@ -158,15 +162,23 @@ export function useStreamingThreadMessages<
|
|
|
158
162
|
const [streams, setStreams] = useState<
|
|
159
163
|
Array<{ streamId: string; cursor: number; messages: MessageDoc[] }>
|
|
160
164
|
>([]);
|
|
165
|
+
const startOrderRef = useRef<number>(0);
|
|
166
|
+
const queryArgs = args === "skip" ? args : omit(args, ["startOrder"]);
|
|
167
|
+
if (args !== "skip" && !startOrderRef.current && args.startOrder) {
|
|
168
|
+
startOrderRef.current = args.startOrder;
|
|
169
|
+
}
|
|
161
170
|
// Get all the active streams
|
|
162
171
|
const streamList = useQuery(
|
|
163
172
|
query,
|
|
164
|
-
|
|
165
|
-
?
|
|
173
|
+
queryArgs === "skip"
|
|
174
|
+
? queryArgs
|
|
166
175
|
: ({
|
|
167
|
-
...
|
|
176
|
+
...queryArgs,
|
|
168
177
|
paginationOpts: { cursor: null, numItems: 0 },
|
|
169
|
-
streamArgs: {
|
|
178
|
+
streamArgs: {
|
|
179
|
+
kind: "list",
|
|
180
|
+
startOrder: startOrderRef.current,
|
|
181
|
+
} as StreamArgs,
|
|
170
182
|
} as FunctionArgs<Query>)
|
|
171
183
|
) as
|
|
172
184
|
| { streams: Extract<SyncStreamsReturnValue, { kind: "list" }> }
|
|
@@ -186,10 +198,10 @@ export function useStreamingThreadMessages<
|
|
|
186
198
|
// Get the deltas for all the active streams, if any.
|
|
187
199
|
const cursorQuery = useQuery(
|
|
188
200
|
query,
|
|
189
|
-
|
|
201
|
+
queryArgs === "skip" || !streamList
|
|
190
202
|
? ("skip" as const)
|
|
191
203
|
: ({
|
|
192
|
-
...
|
|
204
|
+
...queryArgs,
|
|
193
205
|
paginationOpts: { cursor: null, numItems: 0 },
|
|
194
206
|
streamArgs: { kind: "deltas", cursors } as StreamArgs,
|
|
195
207
|
} as FunctionArgs<Query>)
|
|
@@ -11,7 +11,7 @@ export function optimisticallySendMessage(
|
|
|
11
11
|
) => void {
|
|
12
12
|
return (store, args) => {
|
|
13
13
|
const queries = store.getAllQueries(query);
|
|
14
|
-
let maxOrder =
|
|
14
|
+
let maxOrder = -1;
|
|
15
15
|
let maxStepOrder = 0;
|
|
16
16
|
for (const q of queries) {
|
|
17
17
|
if (q.args?.threadId !== args.threadId) continue;
|
package/src/validators.ts
CHANGED
|
@@ -277,7 +277,7 @@ export const vMessageEmbeddings = v.object({
|
|
|
277
277
|
dimension: vVectorDimension,
|
|
278
278
|
vectors: v.array(v.union(v.array(v.number()), v.null())),
|
|
279
279
|
});
|
|
280
|
-
|
|
280
|
+
export type MessageEmbeddings = Infer<typeof vMessageEmbeddings>;
|
|
281
281
|
|
|
282
282
|
export const vObjectResult = v.object({
|
|
283
283
|
request: vRequest,
|
|
@@ -290,20 +290,12 @@ export const vObjectResult = v.object({
|
|
|
290
290
|
providerMetadata,
|
|
291
291
|
});
|
|
292
292
|
export type ObjectResult = Infer<typeof vObjectResult>;
|
|
293
|
-
export const vSearchOptions = v.object({
|
|
294
|
-
vector: v.optional(v.array(v.number())),
|
|
295
|
-
vectorModel: v.optional(v.string()),
|
|
296
|
-
text: v.optional(v.string()),
|
|
297
|
-
limit: v.number(),
|
|
298
|
-
vectorScoreThreshold: v.optional(v.number()),
|
|
299
|
-
messageRange: v.optional(v.object({ before: v.number(), after: v.number() })),
|
|
300
|
-
});
|
|
301
|
-
export type SearchOptions = Infer<typeof vSearchOptions>;
|
|
302
293
|
|
|
303
294
|
export const vContextOptionsSearchOptions = v.object({
|
|
304
295
|
limit: v.number(),
|
|
305
296
|
textSearch: v.optional(v.boolean()),
|
|
306
297
|
vectorSearch: v.optional(v.boolean()),
|
|
298
|
+
vectorScoreThreshold: v.optional(v.number()),
|
|
307
299
|
messageRange: v.optional(v.object({ before: v.number(), after: v.number() })),
|
|
308
300
|
});
|
|
309
301
|
|
|
@@ -460,6 +452,7 @@ export const vStreamArgs = v.optional(
|
|
|
460
452
|
v.union(
|
|
461
453
|
v.object({
|
|
462
454
|
kind: v.literal("list"),
|
|
455
|
+
startOrder: v.optional(v.number()),
|
|
463
456
|
}),
|
|
464
457
|
v.object({
|
|
465
458
|
kind: v.literal("deltas"),
|
|
@@ -471,6 +464,11 @@ export type StreamArgs = Infer<typeof vStreamArgs>;
|
|
|
471
464
|
|
|
472
465
|
export const vStreamMessage = v.object({
|
|
473
466
|
streamId: v.string(),
|
|
467
|
+
status: v.union(
|
|
468
|
+
v.literal("streaming"),
|
|
469
|
+
v.literal("finished"),
|
|
470
|
+
v.literal("aborted")
|
|
471
|
+
),
|
|
474
472
|
order: v.number(),
|
|
475
473
|
stepOrder: v.number(),
|
|
476
474
|
// metadata
|