@convex-dev/agent 0.0.16-alpha.0 → 0.0.17-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/README.md +92 -71
- package/dist/commonjs/client/index.d.ts +1012 -920
- package/dist/commonjs/client/index.d.ts.map +1 -1
- package/dist/commonjs/client/index.js +188 -31
- package/dist/commonjs/client/index.js.map +1 -1
- package/dist/commonjs/client/playground.d.ts +251 -116
- package/dist/commonjs/client/playground.d.ts.map +1 -1
- package/dist/commonjs/client/playground.js +33 -11
- package/dist/commonjs/client/playground.js.map +1 -1
- package/dist/commonjs/component/messages.d.ts +683 -571
- package/dist/commonjs/component/messages.d.ts.map +1 -1
- package/dist/commonjs/component/messages.js +56 -33
- package/dist/commonjs/component/messages.js.map +1 -1
- package/dist/commonjs/component/schema.d.ts +1080 -1324
- package/dist/commonjs/component/schema.d.ts.map +1 -1
- package/dist/commonjs/component/schema.js +20 -14
- package/dist/commonjs/component/schema.js.map +1 -1
- package/dist/commonjs/component/vector/index.d.ts.map +1 -1
- package/dist/commonjs/component/vector/index.js +4 -6
- package/dist/commonjs/component/vector/index.js.map +1 -1
- package/dist/commonjs/component/vector/tables.d.ts +10 -10
- package/dist/commonjs/component/vector/tables.d.ts.map +1 -1
- package/dist/commonjs/component/vector/tables.js.map +1 -1
- package/dist/commonjs/mapping.d.ts +7 -1
- package/dist/commonjs/mapping.d.ts.map +1 -1
- package/dist/commonjs/mapping.js +39 -18
- package/dist/commonjs/mapping.js.map +1 -1
- package/dist/commonjs/validators.d.ts +1669 -2336
- package/dist/commonjs/validators.d.ts.map +1 -1
- package/dist/commonjs/validators.js +35 -25
- package/dist/commonjs/validators.js.map +1 -1
- package/dist/esm/client/index.d.ts +1012 -920
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +188 -31
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/playground.d.ts +251 -116
- package/dist/esm/client/playground.d.ts.map +1 -1
- package/dist/esm/client/playground.js +33 -11
- package/dist/esm/client/playground.js.map +1 -1
- package/dist/esm/component/messages.d.ts +683 -571
- package/dist/esm/component/messages.d.ts.map +1 -1
- package/dist/esm/component/messages.js +56 -33
- package/dist/esm/component/messages.js.map +1 -1
- package/dist/esm/component/schema.d.ts +1080 -1324
- package/dist/esm/component/schema.d.ts.map +1 -1
- package/dist/esm/component/schema.js +20 -14
- package/dist/esm/component/schema.js.map +1 -1
- package/dist/esm/component/vector/index.d.ts.map +1 -1
- package/dist/esm/component/vector/index.js +4 -6
- package/dist/esm/component/vector/index.js.map +1 -1
- package/dist/esm/component/vector/tables.d.ts +10 -10
- package/dist/esm/component/vector/tables.d.ts.map +1 -1
- package/dist/esm/component/vector/tables.js.map +1 -1
- package/dist/esm/mapping.d.ts +7 -1
- package/dist/esm/mapping.d.ts.map +1 -1
- package/dist/esm/mapping.js +39 -18
- package/dist/esm/mapping.js.map +1 -1
- package/dist/esm/validators.d.ts +1669 -2336
- package/dist/esm/validators.d.ts.map +1 -1
- package/dist/esm/validators.js +35 -25
- package/dist/esm/validators.js.map +1 -1
- package/package.json +1 -1
- package/src/client/index.test.ts +68 -0
- package/src/client/index.ts +219 -35
- package/src/client/playground.ts +49 -23
- package/src/component/_generated/api.d.ts +311 -323
- package/src/component/messages.test.ts +23 -0
- package/src/component/messages.ts +75 -42
- package/src/component/schema.ts +26 -13
- package/src/component/vector/index.ts +5 -6
- package/src/component/vector/tables.ts +15 -15
- package/src/mapping.ts +65 -32
- package/src/validators.ts +47 -27
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { paginationOptsValidator, queryGeneric, mutationGeneric, actionGeneric, } from "convex/server";
|
|
2
|
+
import { vMessageDoc, vThreadDoc, paginationResultValidator, vMessage, vContextOptions, vStorageOptions, } from "./index";
|
|
2
3
|
import { v } from "convex/values";
|
|
3
|
-
import { paginationResultValidator, vContextOptions, vMessage, } from "../validators";
|
|
4
|
-
import { assert } from "convex-helpers";
|
|
5
4
|
// Playground API definition
|
|
6
5
|
export function definePlaygroundAPI(component, { agents, userNameLookup, }) {
|
|
7
6
|
// Map agent name to instance
|
|
@@ -9,6 +8,22 @@ export function definePlaygroundAPI(component, { agents, userNameLookup, }) {
|
|
|
9
8
|
async function validateApiKey(ctx, apiKey) {
|
|
10
9
|
await ctx.runQuery(component.apiKeys.validate, { apiKey });
|
|
11
10
|
}
|
|
11
|
+
const isApiKeyValid = queryGeneric({
|
|
12
|
+
args: {
|
|
13
|
+
apiKey: v.string(),
|
|
14
|
+
},
|
|
15
|
+
handler: async (ctx, args) => {
|
|
16
|
+
try {
|
|
17
|
+
await validateApiKey(ctx, args.apiKey);
|
|
18
|
+
return true;
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
returns: v.boolean(),
|
|
26
|
+
});
|
|
12
27
|
// List all agents
|
|
13
28
|
const listAgents = queryGeneric({
|
|
14
29
|
args: {
|
|
@@ -33,13 +48,13 @@ export function definePlaygroundAPI(component, { agents, userNameLookup, }) {
|
|
|
33
48
|
return {
|
|
34
49
|
...users,
|
|
35
50
|
page: await Promise.all(users.page.map(async (userId) => ({
|
|
36
|
-
|
|
51
|
+
_id: userId,
|
|
37
52
|
name: userNameLookup ? await userNameLookup(ctx, userId) : userId,
|
|
38
53
|
}))),
|
|
39
54
|
};
|
|
40
55
|
},
|
|
41
56
|
returns: paginationResultValidator(v.object({
|
|
42
|
-
|
|
57
|
+
_id: v.string(),
|
|
43
58
|
name: v.string(),
|
|
44
59
|
})),
|
|
45
60
|
});
|
|
@@ -76,6 +91,11 @@ export function definePlaygroundAPI(component, { agents, userNameLookup, }) {
|
|
|
76
91
|
})),
|
|
77
92
|
};
|
|
78
93
|
},
|
|
94
|
+
returns: paginationResultValidator(v.object({
|
|
95
|
+
...vThreadDoc.fields,
|
|
96
|
+
latestMessage: v.optional(v.string()),
|
|
97
|
+
lastMessageAt: v.optional(v.number()),
|
|
98
|
+
})),
|
|
79
99
|
});
|
|
80
100
|
// List messages for a thread (query)
|
|
81
101
|
const listMessages = queryGeneric({
|
|
@@ -93,6 +113,7 @@ export function definePlaygroundAPI(component, { agents, userNameLookup, }) {
|
|
|
93
113
|
statuses: ["success", "failed", "pending"],
|
|
94
114
|
});
|
|
95
115
|
},
|
|
116
|
+
returns: paginationResultValidator(vMessageDoc),
|
|
96
117
|
});
|
|
97
118
|
// Create a thread (mutation)
|
|
98
119
|
const createThread = mutationGeneric({
|
|
@@ -114,6 +135,7 @@ export function definePlaygroundAPI(component, { agents, userNameLookup, }) {
|
|
|
114
135
|
summary: args.summary,
|
|
115
136
|
});
|
|
116
137
|
},
|
|
138
|
+
returns: v.object({ threadId: v.string() }),
|
|
117
139
|
});
|
|
118
140
|
// Send a message (action)
|
|
119
141
|
const generateText = actionGeneric({
|
|
@@ -122,21 +144,20 @@ export function definePlaygroundAPI(component, { agents, userNameLookup, }) {
|
|
|
122
144
|
agentName: v.string(),
|
|
123
145
|
userId: v.string(),
|
|
124
146
|
threadId: v.string(),
|
|
147
|
+
// Args passed through to generateText
|
|
125
148
|
prompt: v.optional(v.string()),
|
|
126
149
|
messages: v.optional(v.array(vMessage)),
|
|
127
|
-
|
|
150
|
+
contextOptions: v.optional(vContextOptions),
|
|
151
|
+
storageOptions: v.optional(vStorageOptions),
|
|
128
152
|
},
|
|
129
153
|
handler: async (ctx, args) => {
|
|
130
|
-
|
|
131
|
-
|
|
154
|
+
const { apiKey, agentName, userId, threadId, ...rest } = args;
|
|
155
|
+
await validateApiKey(ctx, apiKey);
|
|
132
156
|
const agent = agentMap[agentName];
|
|
133
157
|
if (!agent)
|
|
134
158
|
throw new Error(`Unknown agent: ${agentName}`);
|
|
135
159
|
const { thread } = await agent.continueThread(ctx, { threadId, userId });
|
|
136
|
-
|
|
137
|
-
assert(messages || prompt, "Must provide either messages or prompt");
|
|
138
|
-
assert(!messages || !prompt, "Provide messages or prompt, not both");
|
|
139
|
-
const result = await thread.generateText({ prompt, messages });
|
|
160
|
+
const result = await thread.generateText(rest);
|
|
140
161
|
return result;
|
|
141
162
|
},
|
|
142
163
|
});
|
|
@@ -166,6 +187,7 @@ export function definePlaygroundAPI(component, { agents, userNameLookup, }) {
|
|
|
166
187
|
},
|
|
167
188
|
});
|
|
168
189
|
return {
|
|
190
|
+
isApiKeyValid,
|
|
169
191
|
listUsers,
|
|
170
192
|
listThreads,
|
|
171
193
|
listMessages,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playground.js","sourceRoot":"","sources":["../../../src/client/playground.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,aAAa,
|
|
1
|
+
{"version":3,"file":"playground.js","sourceRoot":"","sources":["../../../src/client/playground.ts"],"names":[],"mappings":"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"}
|