@convex-dev/agent 0.2.6-alpha.0 → 0.2.6
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/definePlaygroundAPI.d.ts +6 -4
- package/dist/client/definePlaygroundAPI.d.ts.map +1 -1
- package/dist/client/definePlaygroundAPI.js +15 -6
- package/dist/client/definePlaygroundAPI.js.map +1 -1
- package/dist/client/index.d.ts +26 -120
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +48 -373
- package/dist/client/index.js.map +1 -1
- package/dist/client/messages.d.ts +1 -1
- package/dist/client/messages.d.ts.map +1 -1
- package/dist/client/mockModel.d.ts +3 -3
- package/dist/client/mockModel.d.ts.map +1 -1
- package/dist/client/mockModel.js +22 -17
- package/dist/client/mockModel.js.map +1 -1
- package/dist/client/saveInputMessages.d.ts +20 -0
- package/dist/client/saveInputMessages.d.ts.map +1 -0
- package/dist/client/saveInputMessages.js +57 -0
- package/dist/client/saveInputMessages.js.map +1 -0
- package/dist/client/search.d.ts +110 -9
- package/dist/client/search.d.ts.map +1 -1
- package/dist/client/search.js +271 -39
- package/dist/client/search.js.map +1 -1
- package/dist/client/start.d.ts +83 -0
- package/dist/client/start.d.ts.map +1 -0
- package/dist/client/start.js +171 -0
- package/dist/client/start.js.map +1 -0
- package/dist/client/streaming.d.ts +8 -8
- package/dist/client/streaming.d.ts.map +1 -1
- package/dist/client/streaming.js +2 -1
- package/dist/client/streaming.js.map +1 -1
- package/dist/client/textStreamParts.d.ts.map +1 -1
- package/dist/client/textStreamParts.js +2 -9
- package/dist/client/textStreamParts.js.map +1 -1
- package/dist/client/threads.d.ts +1 -1
- package/dist/client/threads.d.ts.map +1 -1
- package/dist/client/types.d.ts +137 -5
- package/dist/client/types.d.ts.map +1 -1
- package/dist/component/_generated/api.d.ts +11 -3
- package/dist/component/messages.d.ts +13 -4
- package/dist/component/messages.d.ts.map +1 -1
- package/dist/component/messages.js +67 -25
- package/dist/component/messages.js.map +1 -1
- package/dist/component/schema.d.ts +2 -1643
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +0 -24
- package/dist/component/schema.js.map +1 -1
- package/dist/mapping.d.ts +7 -9
- package/dist/mapping.d.ts.map +1 -1
- package/dist/mapping.js +73 -7
- package/dist/mapping.js.map +1 -1
- package/dist/react/deltas.d.ts.map +1 -1
- package/dist/react/deltas.js +15 -5
- package/dist/react/deltas.js.map +1 -1
- package/dist/react/fromUIMessages.d.ts +13 -0
- package/dist/react/fromUIMessages.d.ts.map +1 -0
- package/dist/react/fromUIMessages.js +70 -0
- package/dist/react/fromUIMessages.js.map +1 -0
- package/dist/react/toUIMessages.d.ts +5 -2
- package/dist/react/toUIMessages.d.ts.map +1 -1
- package/dist/react/toUIMessages.js +3 -0
- package/dist/react/toUIMessages.js.map +1 -1
- package/dist/shared.d.ts +10 -0
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +26 -0
- package/dist/shared.js.map +1 -1
- package/dist/validators.d.ts +1640 -0
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +41 -0
- package/dist/validators.js.map +1 -1
- package/package.json +1 -1
- package/src/client/definePlaygroundAPI.ts +16 -7
- package/src/client/index.test.ts +11 -46
- package/src/client/index.ts +99 -558
- package/src/client/messages.ts +1 -1
- package/src/client/mock.json +68 -0
- package/src/client/mockModel.ts +34 -23
- package/src/client/saveInputMessages.test.ts +576 -0
- package/src/client/saveInputMessages.ts +100 -0
- package/src/client/search.test.ts +1017 -0
- package/src/client/search.ts +446 -68
- package/src/client/start.ts +313 -0
- package/src/client/stream.json +48 -0
- package/src/client/streaming.ts +3 -3
- package/src/client/textStreamParts.ts +2 -11
- package/src/client/threads.ts +1 -1
- package/src/client/types.ts +143 -3
- package/src/component/_generated/api.d.ts +11 -3
- package/src/component/messages.ts +73 -27
- package/src/component/schema.ts +1 -29
- package/src/mapping.ts +84 -7
- package/src/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/src/react/deltas.ts +18 -5
- package/src/react/fromUIMessages.test.ts +427 -0
- package/src/react/fromUIMessages.ts +85 -0
- package/src/react/toUIMessages.ts +21 -13
- package/src/shared.ts +33 -0
- package/src/validators.test.ts +13 -2
- package/src/validators.ts +48 -0
package/src/client/messages.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ModelMessage } from "ai";
|
|
2
2
|
import type { PaginationOptions, PaginationResult } from "convex/server";
|
|
3
|
-
import type { MessageDoc } from "../
|
|
3
|
+
import type { MessageDoc } from "../validators.js";
|
|
4
4
|
import { validateVectorDimension } from "../component/vector/tables.js";
|
|
5
5
|
import {
|
|
6
6
|
vMessageWithMetadata,
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
[
|
|
2
|
+
{ "type": "start" },
|
|
3
|
+
{ "type": "start-step" },
|
|
4
|
+
{ "type": "reasoning-start", "id": "0-reasoning" },
|
|
5
|
+
{
|
|
6
|
+
"type": "reasoning-delta",
|
|
7
|
+
"id": "0-reasoning",
|
|
8
|
+
"delta": "I'm",
|
|
9
|
+
"providerMetadata": {
|
|
10
|
+
"mockProvider": { "mock": { "reasoningDetails": null } }
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "reasoning-delta",
|
|
15
|
+
"id": "0-reasoning",
|
|
16
|
+
"delta": " thinking",
|
|
17
|
+
"providerMetadata": {
|
|
18
|
+
"mockProvider": { "mock": { "reasoningDetails": null } }
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
{ "type": "reasoning-end", "id": "0-reasoning" },
|
|
22
|
+
{
|
|
23
|
+
"type": "tool-input-available",
|
|
24
|
+
"toolCallId": "1",
|
|
25
|
+
"toolName": "say",
|
|
26
|
+
"input": { "question": "What is the best flavor of ice cream?" }
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "tool-output-available",
|
|
30
|
+
"toolCallId": "1",
|
|
31
|
+
"output": "I'm sorry I can't help you. Stop asking me questions."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"type": "tool-output-available",
|
|
35
|
+
"toolCallId": "1",
|
|
36
|
+
"output": "I'm sorry I can't help you. Stop asking me questions."
|
|
37
|
+
},
|
|
38
|
+
{ "type": "reasoning-start", "id": "3-reasoning" },
|
|
39
|
+
{
|
|
40
|
+
"type": "reasoning-delta",
|
|
41
|
+
"id": "3-reasoning",
|
|
42
|
+
"delta": "I'm",
|
|
43
|
+
"providerMetadata": {
|
|
44
|
+
"mockProvider": { "mock": { "reasoningDetails": null } }
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"type": "reasoning-delta",
|
|
49
|
+
"id": "3-reasoning",
|
|
50
|
+
"delta": " thinking",
|
|
51
|
+
"providerMetadata": {
|
|
52
|
+
"mockProvider": { "mock": { "reasoningDetails": null } }
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{ "type": "reasoning-end", "id": "3-reasoning" },
|
|
56
|
+
{ "type": "text-start", "id": "4-text" },
|
|
57
|
+
{ "type": "text-delta", "id": "4-text", "delta": "The" },
|
|
58
|
+
{ "type": "text-delta", "id": "4-text", "delta": " best" },
|
|
59
|
+
{ "type": "text-delta", "id": "4-text", "delta": " flavor" },
|
|
60
|
+
{ "type": "text-delta", "id": "4-text", "delta": " of" },
|
|
61
|
+
{ "type": "text-delta", "id": "4-text", "delta": " ice" },
|
|
62
|
+
{ "type": "text-delta", "id": "4-text", "delta": " cream" },
|
|
63
|
+
{ "type": "text-delta", "id": "4-text", "delta": " is" },
|
|
64
|
+
{ "type": "text-delta", "id": "4-text", "delta": " vanilla." },
|
|
65
|
+
{ "type": "text-end", "id": "4-text" },
|
|
66
|
+
{ "type": "finish-step" },
|
|
67
|
+
{ "type": "finish" }
|
|
68
|
+
]
|
package/src/client/mockModel.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
LanguageModelV2,
|
|
3
|
+
LanguageModelV2Content,
|
|
3
4
|
LanguageModelV2StreamPart,
|
|
4
5
|
} from "@ai-sdk/provider";
|
|
5
|
-
import type { ReasoningPart, TextPart } from "@ai-sdk/provider-utils";
|
|
6
6
|
import { simulateReadableStream } from "ai";
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
export const DEFAULT_TEXT = `
|
|
9
9
|
A A A A A A A A A A A A A A A
|
|
10
10
|
B B B B B B B B B B B B B B B
|
|
11
11
|
C C C C C C C C C C C C C C C
|
|
12
12
|
D D D D D D D D D D D D D D D
|
|
13
13
|
`;
|
|
14
|
-
const
|
|
14
|
+
const DEFAULT_USAGE = { outputTokens: 10, inputTokens: 3, totalTokens: 13 };
|
|
15
15
|
|
|
16
16
|
export type MockModelArgs = {
|
|
17
17
|
provider?: LanguageModelV2["provider"];
|
|
@@ -22,7 +22,7 @@ export type MockModelArgs = {
|
|
|
22
22
|
chunkDelayInMs?: number;
|
|
23
23
|
initialDelayInMs?: number;
|
|
24
24
|
// provide either content or doGenerate & doStream
|
|
25
|
-
content?:
|
|
25
|
+
content?: LanguageModelV2Content[];
|
|
26
26
|
doGenerate?: LanguageModelV2["doGenerate"];
|
|
27
27
|
doStream?: LanguageModelV2["doStream"];
|
|
28
28
|
fail?:
|
|
@@ -55,9 +55,9 @@ export class MockLanguageModel implements LanguageModelV2 {
|
|
|
55
55
|
this.provider = args.provider || "mock-provider";
|
|
56
56
|
this.modelId = args.modelId || "mock-model-id";
|
|
57
57
|
const {
|
|
58
|
-
content = [{ type: "text", text:
|
|
59
|
-
chunkDelayInMs =
|
|
60
|
-
initialDelayInMs =
|
|
58
|
+
content = [{ type: "text", text: DEFAULT_TEXT }],
|
|
59
|
+
chunkDelayInMs = 0,
|
|
60
|
+
initialDelayInMs = 0,
|
|
61
61
|
supportedUrls = {},
|
|
62
62
|
} = args;
|
|
63
63
|
const fail =
|
|
@@ -73,21 +73,24 @@ export class MockLanguageModel implements LanguageModelV2 {
|
|
|
73
73
|
{ type: "stream-start", warnings: [] },
|
|
74
74
|
];
|
|
75
75
|
chunks.push(
|
|
76
|
-
...content.flatMap((c, ci) => {
|
|
76
|
+
...content.flatMap((c, ci): LanguageModelV2StreamPart[] => {
|
|
77
|
+
if (c.type !== "text" && c.type !== "reasoning") {
|
|
78
|
+
return [c];
|
|
79
|
+
}
|
|
77
80
|
const deltas = c.text.split(" ");
|
|
78
|
-
|
|
81
|
+
const parts: LanguageModelV2StreamPart[] = [];
|
|
79
82
|
if (c.type === "reasoning") {
|
|
80
83
|
parts.push({
|
|
81
84
|
type: "reasoning-start",
|
|
82
|
-
id:
|
|
85
|
+
id: `reasoning-${ci}`,
|
|
83
86
|
});
|
|
84
87
|
parts.push(
|
|
85
88
|
...deltas.map(
|
|
86
89
|
(delta, di) =>
|
|
87
90
|
({
|
|
88
91
|
type: "reasoning-delta",
|
|
89
|
-
delta,
|
|
90
|
-
id:
|
|
92
|
+
delta: (di ? " " : "") + delta,
|
|
93
|
+
id: `reasoning-${ci}`,
|
|
91
94
|
providerMetadata: {
|
|
92
95
|
mockProvider: { mock: { reasoningDetails: null } },
|
|
93
96
|
},
|
|
@@ -96,21 +99,26 @@ export class MockLanguageModel implements LanguageModelV2 {
|
|
|
96
99
|
);
|
|
97
100
|
parts.push({
|
|
98
101
|
type: "reasoning-end",
|
|
99
|
-
id:
|
|
102
|
+
id: `reasoning-${ci}`,
|
|
100
103
|
});
|
|
101
104
|
} else if (c.type === "text") {
|
|
102
105
|
parts.push({
|
|
103
106
|
type: "text-start",
|
|
104
|
-
id:
|
|
107
|
+
id: `txt-${ci}`,
|
|
105
108
|
});
|
|
106
|
-
parts
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
parts.push(
|
|
110
|
+
...deltas.map(
|
|
111
|
+
(delta, di) =>
|
|
112
|
+
({
|
|
113
|
+
type: "text-delta",
|
|
114
|
+
delta: (di ? " " : "") + delta,
|
|
115
|
+
id: `txt-${ci}`,
|
|
116
|
+
}) satisfies LanguageModelV2StreamPart,
|
|
117
|
+
),
|
|
118
|
+
);
|
|
111
119
|
parts.push({
|
|
112
120
|
type: "text-end",
|
|
113
|
-
id:
|
|
121
|
+
id: `txt-${ci}`,
|
|
114
122
|
});
|
|
115
123
|
}
|
|
116
124
|
return parts;
|
|
@@ -125,7 +133,7 @@ export class MockLanguageModel implements LanguageModelV2 {
|
|
|
125
133
|
chunks.push({
|
|
126
134
|
type: "finish",
|
|
127
135
|
finishReason: fail ? "error" : "stop",
|
|
128
|
-
usage:
|
|
136
|
+
usage: DEFAULT_USAGE,
|
|
129
137
|
providerMetadata: {
|
|
130
138
|
mockProvider: { mock: "mock metadata" },
|
|
131
139
|
},
|
|
@@ -144,7 +152,7 @@ export class MockLanguageModel implements LanguageModelV2 {
|
|
|
144
152
|
return {
|
|
145
153
|
content,
|
|
146
154
|
finishReason: "stop",
|
|
147
|
-
usage:
|
|
155
|
+
usage: DEFAULT_USAGE,
|
|
148
156
|
providerMetadata: { mockProvider: { mock: "mock metadata" } },
|
|
149
157
|
warnings: [],
|
|
150
158
|
};
|
|
@@ -169,8 +177,11 @@ export class MockLanguageModel implements LanguageModelV2 {
|
|
|
169
177
|
initialDelayInMs,
|
|
170
178
|
chunkDelayInMs,
|
|
171
179
|
});
|
|
180
|
+
|
|
172
181
|
if (options.abortSignal) {
|
|
173
|
-
|
|
182
|
+
options.abortSignal.addEventListener("abort", () => {
|
|
183
|
+
console.warn("abortSignal in mock model not supported");
|
|
184
|
+
});
|
|
174
185
|
}
|
|
175
186
|
return {
|
|
176
187
|
stream,
|