@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
|
@@ -16,14 +16,20 @@ export function toUIMessages(messages) {
|
|
|
16
16
|
stepOrder: message.stepOrder,
|
|
17
17
|
status: message.streaming ? "streaming" : message.status,
|
|
18
18
|
key: `${message.threadId}-${message.order}-${message.stepOrder}`,
|
|
19
|
+
text,
|
|
20
|
+
};
|
|
21
|
+
const partCommon = {
|
|
22
|
+
state: message.streaming ? "streaming" : "done",
|
|
23
|
+
...(message.providerMetadata
|
|
24
|
+
? { providerMetadata: message.providerMetadata }
|
|
25
|
+
: {}),
|
|
19
26
|
};
|
|
20
27
|
if (coreMessage.role === "system") {
|
|
21
28
|
uiMessages.push({
|
|
22
29
|
...common,
|
|
23
30
|
role: "system",
|
|
24
|
-
content: text,
|
|
25
31
|
agentName: message.agentName,
|
|
26
|
-
parts: [{ type: "text", text }],
|
|
32
|
+
parts: [{ type: "text", text, ...partCommon }],
|
|
27
33
|
});
|
|
28
34
|
}
|
|
29
35
|
else if (coreMessage.role === "user") {
|
|
@@ -42,7 +48,6 @@ export function toUIMessages(messages) {
|
|
|
42
48
|
uiMessages.push({
|
|
43
49
|
...common,
|
|
44
50
|
role: "user",
|
|
45
|
-
content: message.text ?? "",
|
|
46
51
|
parts,
|
|
47
52
|
});
|
|
48
53
|
}
|
|
@@ -56,7 +61,6 @@ export function toUIMessages(messages) {
|
|
|
56
61
|
...common,
|
|
57
62
|
role: "assistant",
|
|
58
63
|
agentName: message.agentName,
|
|
59
|
-
content: "",
|
|
60
64
|
parts: [],
|
|
61
65
|
};
|
|
62
66
|
uiMessages.push(assistantMessage);
|
|
@@ -68,68 +72,127 @@ export function toUIMessages(messages) {
|
|
|
68
72
|
}
|
|
69
73
|
// update it to the last message's id
|
|
70
74
|
assistantMessage.id = message._id;
|
|
71
|
-
if (message.reasoning
|
|
75
|
+
if (message.reasoning &&
|
|
76
|
+
!nonStringContent.some((c) => c.type === "reasoning")) {
|
|
72
77
|
assistantMessage.parts.push({
|
|
73
78
|
type: "reasoning",
|
|
74
|
-
|
|
75
|
-
|
|
79
|
+
text: message.reasoning,
|
|
80
|
+
...partCommon,
|
|
76
81
|
});
|
|
77
82
|
}
|
|
78
|
-
if (message.text) {
|
|
83
|
+
if (message.text && !nonStringContent.length) {
|
|
79
84
|
assistantMessage.parts.push({
|
|
80
85
|
type: "text",
|
|
81
86
|
text: message.text,
|
|
87
|
+
...partCommon,
|
|
82
88
|
});
|
|
83
|
-
assistantMessage.content += message.text;
|
|
84
89
|
}
|
|
85
90
|
for (const source of message.sources ?? []) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
91
|
+
if (source.sourceType === "url") {
|
|
92
|
+
assistantMessage.parts.push({
|
|
93
|
+
type: "source-url",
|
|
94
|
+
url: source.url,
|
|
95
|
+
sourceId: source.id,
|
|
96
|
+
providerMetadata: message.providerMetadata,
|
|
97
|
+
title: source.title,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
assistantMessage.parts.push({
|
|
102
|
+
type: "source-document",
|
|
103
|
+
mediaType: source.mediaType,
|
|
104
|
+
sourceId: source.id,
|
|
105
|
+
title: source.title,
|
|
106
|
+
filename: source.filename,
|
|
107
|
+
providerMetadata: message.providerMetadata,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
90
110
|
}
|
|
91
111
|
for (const contentPart of nonStringContent) {
|
|
92
112
|
switch (contentPart.type) {
|
|
113
|
+
case "text":
|
|
114
|
+
assistantMessage.parts.push({
|
|
115
|
+
...partCommon,
|
|
116
|
+
...contentPart,
|
|
117
|
+
});
|
|
118
|
+
break;
|
|
119
|
+
case "reasoning":
|
|
120
|
+
assistantMessage.parts.push({
|
|
121
|
+
...partCommon,
|
|
122
|
+
...contentPart,
|
|
123
|
+
});
|
|
124
|
+
break;
|
|
93
125
|
case "file":
|
|
94
126
|
case "image":
|
|
95
127
|
assistantMessage.parts.push(toUIFilePart(contentPart));
|
|
96
128
|
break;
|
|
97
|
-
case "tool-call":
|
|
129
|
+
case "tool-call": {
|
|
98
130
|
assistantMessage.parts.push({
|
|
99
131
|
type: "step-start",
|
|
100
132
|
});
|
|
101
|
-
|
|
102
|
-
type:
|
|
103
|
-
toolInvocation: {
|
|
104
|
-
state: "call",
|
|
105
|
-
step: assistantMessage.parts.filter((part) => part.type === "tool-invocation").length,
|
|
106
|
-
toolCallId: contentPart.toolCallId,
|
|
107
|
-
toolName: contentPart.toolName,
|
|
108
|
-
args: contentPart.args,
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
break;
|
|
112
|
-
case "tool-result": {
|
|
113
|
-
const call = assistantMessage.parts.find((part) => part.type === "tool-invocation" &&
|
|
114
|
-
part.toolInvocation.toolCallId === contentPart.toolCallId);
|
|
115
|
-
const toolInvocation = {
|
|
116
|
-
state: "result",
|
|
133
|
+
const toolPart = {
|
|
134
|
+
type: `tool-${contentPart.toolName}`,
|
|
117
135
|
toolCallId: contentPart.toolCallId,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
136
|
+
input: contentPart.input,
|
|
137
|
+
providerExecuted: contentPart.providerExecuted,
|
|
138
|
+
...(message.streaming
|
|
139
|
+
? { state: "input-streaming" }
|
|
140
|
+
: {
|
|
141
|
+
state: "input-available",
|
|
142
|
+
callProviderMetadata: message.providerMetadata,
|
|
143
|
+
}),
|
|
123
144
|
};
|
|
145
|
+
assistantMessage.parts.push(toolPart);
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
case "tool-result": {
|
|
149
|
+
const call = assistantMessage.parts.find((part) => part.type === `tool-${contentPart.toolName}` &&
|
|
150
|
+
"toolCallId" in part &&
|
|
151
|
+
part.toolCallId === contentPart.toolCallId);
|
|
124
152
|
if (call) {
|
|
125
|
-
|
|
153
|
+
if (message.error) {
|
|
154
|
+
call.state = "output-error";
|
|
155
|
+
call.errorText = message.error;
|
|
156
|
+
call.output = contentPart.output;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
call.state = "output-available";
|
|
160
|
+
call.output =
|
|
161
|
+
contentPart.output?.type === "json"
|
|
162
|
+
? contentPart.output.value
|
|
163
|
+
: contentPart.output;
|
|
164
|
+
// Technically we could pull this from the doc.message
|
|
165
|
+
// but the ModelMessage doesn't have it
|
|
166
|
+
// call.providerExecuted = contentPart.providerExecuted;
|
|
167
|
+
}
|
|
126
168
|
}
|
|
127
169
|
else {
|
|
128
170
|
console.warn("Tool result without preceding tool call.. adding anyways", contentPart);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
171
|
+
if (message.error) {
|
|
172
|
+
assistantMessage.parts.push({
|
|
173
|
+
type: `tool-${contentPart.toolName}`,
|
|
174
|
+
toolCallId: contentPart.toolCallId,
|
|
175
|
+
state: "output-error",
|
|
176
|
+
input: undefined,
|
|
177
|
+
errorText: message.error,
|
|
178
|
+
// Technically we could pull this from the doc.message
|
|
179
|
+
// but the ModelMessage doesn't have it
|
|
180
|
+
// providerExecuted: contentPart.providerExecuted,
|
|
181
|
+
callProviderMetadata: message.providerMetadata,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
assistantMessage.parts.push({
|
|
186
|
+
type: `tool-${contentPart.toolName}`,
|
|
187
|
+
toolCallId: contentPart.toolCallId,
|
|
188
|
+
state: "output-available",
|
|
189
|
+
input: undefined,
|
|
190
|
+
output: contentPart.output?.type === "json"
|
|
191
|
+
? contentPart.output.value
|
|
192
|
+
: contentPart.output,
|
|
193
|
+
callProviderMetadata: message.providerMetadata,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
133
196
|
}
|
|
134
197
|
break;
|
|
135
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toUIMessages.js","sourceRoot":"","sources":["../../src/react/toUIMessages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toUIMessages.js","sourceRoot":"","sources":["../../src/react/toUIMessages.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* A hook that smoothly displays text as it is streamed.
|
|
3
|
-
*
|
|
4
|
-
* @param text The text to display. Pass in the full text each time.
|
|
5
|
-
* @param charsPerSec The number of characters to display per second.
|
|
6
|
-
* @returns A tuple of the visible text and the state of the smooth text,
|
|
7
|
-
* including the current cursor position and whether it's still streaming.
|
|
8
|
-
* This allows you to decide if it's too far behind and you want to adjust
|
|
9
|
-
* the charsPerSec or just prefer the full text.
|
|
10
|
-
*/
|
|
11
|
-
export declare function useSmoothText(text: string, { charsPerSec, startStreaming, }?: {
|
|
1
|
+
export type SmoothTextOptions = {
|
|
12
2
|
/**
|
|
13
3
|
* The number of characters to display per second.
|
|
14
4
|
*/
|
|
@@ -19,7 +9,18 @@ export declare function useSmoothText(text: string, { charsPerSec, startStreamin
|
|
|
19
9
|
* This will start streaming the first value it sees.
|
|
20
10
|
*/
|
|
21
11
|
startStreaming?: boolean;
|
|
22
|
-
}
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* A hook that smoothly displays text as it is streamed.
|
|
15
|
+
*
|
|
16
|
+
* @param text The text to display. Pass in the full text each time.
|
|
17
|
+
* @param charsPerSec The number of characters to display per second.
|
|
18
|
+
* @returns A tuple of the visible text and the state of the smooth text,
|
|
19
|
+
* including the current cursor position and whether it's still streaming.
|
|
20
|
+
* This allows you to decide if it's too far behind and you want to adjust
|
|
21
|
+
* the charsPerSec or just prefer the full text.
|
|
22
|
+
*/
|
|
23
|
+
export declare function useSmoothText(text: string, { charsPerSec, startStreaming }?: SmoothTextOptions): [string, {
|
|
23
24
|
cursor: number;
|
|
24
25
|
isStreaming: boolean;
|
|
25
26
|
}];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSmoothText.d.ts","sourceRoot":"","sources":["../../src/react/useSmoothText.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSmoothText.d.ts","sourceRoot":"","sources":["../../src/react/useSmoothText.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AACF;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,EAAE,WAAiB,EAAE,cAAsB,EAAE,GAAE,iBAAsB,GACpE,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC,CAsDpD"}
|
|
@@ -12,7 +12,7 @@ const MAX_TIME_JUMP_MS = 250;
|
|
|
12
12
|
* This allows you to decide if it's too far behind and you want to adjust
|
|
13
13
|
* the charsPerSec or just prefer the full text.
|
|
14
14
|
*/
|
|
15
|
-
export function useSmoothText(text, { charsPerSec = 256, startStreaming = false
|
|
15
|
+
export function useSmoothText(text, { charsPerSec = 256, startStreaming = false } = {}) {
|
|
16
16
|
const [visibleText, setVisibleText] = useState(startStreaming ? "" : text);
|
|
17
17
|
const smoothState = useRef({
|
|
18
18
|
tick: Date.now() + (visibleText.length * 1000) / charsPerSec,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSmoothText.js","sourceRoot":"","sources":["../../src/react/useSmoothText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,MAAM,YAAY,GAAG,IAAI,GAAG,GAAG,CAAC;AAChC,MAAM,gBAAgB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"useSmoothText.js","sourceRoot":"","sources":["../../src/react/useSmoothText.ts"],"names":[],"mappings":"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"}
|