@convex-dev/agent 0.2.6-alpha.1 → 0.2.7
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.js +1 -1
- package/dist/client/createTool.js.map +1 -1
- 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 +55 -122
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +47 -371
- 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 +5 -3
- package/dist/client/mockModel.d.ts.map +1 -1
- package/dist/client/mockModel.js +33 -24
- 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 +84 -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 +147 -17
- 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 +5 -8
- package/dist/mapping.d.ts.map +1 -1
- package/dist/mapping.js +72 -6
- package/dist/mapping.js.map +1 -1
- package/dist/react/deltas.d.ts.map +1 -1
- package/dist/react/deltas.js +1 -0
- 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 +75 -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 +4 -4
- package/src/client/createTool.ts +1 -1
- package/src/client/definePlaygroundAPI.ts +16 -7
- package/src/client/index.test.ts +11 -46
- package/src/client/index.ts +128 -573
- package/src/client/messages.ts +1 -1
- package/src/client/mock.json +68 -0
- package/src/client/mockModel.ts +47 -31
- 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 +315 -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 +153 -22
- 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 +83 -6
- package/src/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/src/react/deltas.ts +1 -0
- package/src/react/fromUIMessages.test.ts +467 -0
- package/src/react/fromUIMessages.ts +90 -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,18 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
LanguageModelV2,
|
|
3
|
+
LanguageModelV2Content,
|
|
3
4
|
LanguageModelV2StreamPart,
|
|
4
5
|
} from "@ai-sdk/provider";
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
6
|
+
import { simulateReadableStream, type ProviderMetadata } from "ai";
|
|
7
|
+
import { pick } from "convex-helpers";
|
|
7
8
|
|
|
8
|
-
const
|
|
9
|
+
export const DEFAULT_TEXT = `
|
|
9
10
|
A A A A A A A A A A A A A A A
|
|
10
11
|
B B B B B B B B B B B B B B B
|
|
11
12
|
C C C C C C C C C C C C C C C
|
|
12
13
|
D D D D D D D D D D D D D D D
|
|
13
14
|
`;
|
|
14
|
-
const
|
|
15
|
+
const DEFAULT_USAGE = { outputTokens: 10, inputTokens: 3, totalTokens: 13 };
|
|
15
16
|
|
|
16
17
|
export type MockModelArgs = {
|
|
17
18
|
provider?: LanguageModelV2["provider"];
|
|
@@ -22,9 +23,10 @@ export type MockModelArgs = {
|
|
|
22
23
|
chunkDelayInMs?: number;
|
|
23
24
|
initialDelayInMs?: number;
|
|
24
25
|
// provide either content or doGenerate & doStream
|
|
25
|
-
content?:
|
|
26
|
+
content?: LanguageModelV2Content[];
|
|
26
27
|
doGenerate?: LanguageModelV2["doGenerate"];
|
|
27
28
|
doStream?: LanguageModelV2["doStream"];
|
|
29
|
+
providerMetadata?: ProviderMetadata;
|
|
28
30
|
fail?:
|
|
29
31
|
| boolean
|
|
30
32
|
| {
|
|
@@ -55,9 +57,9 @@ export class MockLanguageModel implements LanguageModelV2 {
|
|
|
55
57
|
this.provider = args.provider || "mock-provider";
|
|
56
58
|
this.modelId = args.modelId || "mock-model-id";
|
|
57
59
|
const {
|
|
58
|
-
content = [{ type: "text", text:
|
|
59
|
-
chunkDelayInMs =
|
|
60
|
-
initialDelayInMs =
|
|
60
|
+
content = [{ type: "text", text: DEFAULT_TEXT }],
|
|
61
|
+
chunkDelayInMs = 0,
|
|
62
|
+
initialDelayInMs = 0,
|
|
61
63
|
supportedUrls = {},
|
|
62
64
|
} = args;
|
|
63
65
|
const fail =
|
|
@@ -68,49 +70,62 @@ export class MockLanguageModel implements LanguageModelV2 {
|
|
|
68
70
|
const error =
|
|
69
71
|
(typeof args.fail === "object" && args.fail.error) ||
|
|
70
72
|
"Mock error message";
|
|
73
|
+
const metadata = pick(args, ["providerMetadata"]);
|
|
71
74
|
|
|
72
75
|
const chunks: LanguageModelV2StreamPart[] = [
|
|
73
76
|
{ type: "stream-start", warnings: [] },
|
|
74
77
|
];
|
|
75
78
|
chunks.push(
|
|
76
|
-
...content.flatMap((c, ci) => {
|
|
79
|
+
...content.flatMap((c, ci): LanguageModelV2StreamPart[] => {
|
|
80
|
+
if (c.type !== "text" && c.type !== "reasoning") {
|
|
81
|
+
return [c];
|
|
82
|
+
}
|
|
83
|
+
const metadata = pick(c, ["providerMetadata"]);
|
|
77
84
|
const deltas = c.text.split(" ");
|
|
78
|
-
|
|
85
|
+
const parts: LanguageModelV2StreamPart[] = [];
|
|
79
86
|
if (c.type === "reasoning") {
|
|
80
87
|
parts.push({
|
|
81
88
|
type: "reasoning-start",
|
|
82
|
-
id:
|
|
89
|
+
id: `reasoning-${ci}`,
|
|
90
|
+
...metadata,
|
|
83
91
|
});
|
|
84
92
|
parts.push(
|
|
85
93
|
...deltas.map(
|
|
86
94
|
(delta, di) =>
|
|
87
95
|
({
|
|
88
96
|
type: "reasoning-delta",
|
|
89
|
-
delta,
|
|
90
|
-
id:
|
|
91
|
-
|
|
92
|
-
mockProvider: { mock: { reasoningDetails: null } },
|
|
93
|
-
},
|
|
97
|
+
delta: (di ? " " : "") + delta,
|
|
98
|
+
id: `reasoning-${ci}`,
|
|
99
|
+
...metadata,
|
|
94
100
|
}) satisfies LanguageModelV2StreamPart,
|
|
95
101
|
),
|
|
96
102
|
);
|
|
97
103
|
parts.push({
|
|
98
104
|
type: "reasoning-end",
|
|
99
|
-
id:
|
|
105
|
+
id: `reasoning-${ci}`,
|
|
106
|
+
...metadata,
|
|
100
107
|
});
|
|
101
108
|
} else if (c.type === "text") {
|
|
102
109
|
parts.push({
|
|
103
110
|
type: "text-start",
|
|
104
|
-
id:
|
|
111
|
+
id: `txt-${ci}`,
|
|
112
|
+
...metadata,
|
|
105
113
|
});
|
|
106
|
-
parts
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
114
|
+
parts.push(
|
|
115
|
+
...deltas.map(
|
|
116
|
+
(delta, di) =>
|
|
117
|
+
({
|
|
118
|
+
type: "text-delta",
|
|
119
|
+
delta: (di ? " " : "") + delta,
|
|
120
|
+
id: `txt-${ci}`,
|
|
121
|
+
...metadata,
|
|
122
|
+
}) satisfies LanguageModelV2StreamPart,
|
|
123
|
+
),
|
|
124
|
+
);
|
|
111
125
|
parts.push({
|
|
112
126
|
type: "text-end",
|
|
113
|
-
id:
|
|
127
|
+
id: `txt-${ci}`,
|
|
128
|
+
...metadata,
|
|
114
129
|
});
|
|
115
130
|
}
|
|
116
131
|
return parts;
|
|
@@ -125,10 +140,8 @@ export class MockLanguageModel implements LanguageModelV2 {
|
|
|
125
140
|
chunks.push({
|
|
126
141
|
type: "finish",
|
|
127
142
|
finishReason: fail ? "error" : "stop",
|
|
128
|
-
usage:
|
|
129
|
-
|
|
130
|
-
mockProvider: { mock: "mock metadata" },
|
|
131
|
-
},
|
|
143
|
+
usage: DEFAULT_USAGE,
|
|
144
|
+
...metadata,
|
|
132
145
|
});
|
|
133
146
|
this.doGenerate = async (options) => {
|
|
134
147
|
this.doGenerateCalls.push(options);
|
|
@@ -144,8 +157,8 @@ export class MockLanguageModel implements LanguageModelV2 {
|
|
|
144
157
|
return {
|
|
145
158
|
content,
|
|
146
159
|
finishReason: "stop",
|
|
147
|
-
usage:
|
|
148
|
-
|
|
160
|
+
usage: DEFAULT_USAGE,
|
|
161
|
+
...metadata,
|
|
149
162
|
warnings: [],
|
|
150
163
|
};
|
|
151
164
|
} else {
|
|
@@ -169,8 +182,11 @@ export class MockLanguageModel implements LanguageModelV2 {
|
|
|
169
182
|
initialDelayInMs,
|
|
170
183
|
chunkDelayInMs,
|
|
171
184
|
});
|
|
185
|
+
|
|
172
186
|
if (options.abortSignal) {
|
|
173
|
-
|
|
187
|
+
options.abortSignal.addEventListener("abort", () => {
|
|
188
|
+
console.warn("abortSignal in mock model not supported");
|
|
189
|
+
});
|
|
174
190
|
}
|
|
175
191
|
return {
|
|
176
192
|
stream,
|