@okrlinkhub/agent-bridge 0.1.0 → 2.0.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 +96 -127
- package/dist/cli/init.d.ts +3 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +100 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/client/index.d.ts +50 -173
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +129 -263
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +4 -4
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/component.d.ts +66 -162
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/agentBridgeUtils.d.ts +8 -0
- package/dist/component/agentBridgeUtils.d.ts.map +1 -0
- package/dist/component/agentBridgeUtils.js +33 -0
- package/dist/component/agentBridgeUtils.js.map +1 -0
- package/dist/component/agents.d.ts +27 -0
- package/dist/component/agents.d.ts.map +1 -0
- package/dist/component/agents.js +94 -0
- package/dist/component/agents.js.map +1 -0
- package/dist/component/gateway.d.ts +30 -44
- package/dist/component/gateway.d.ts.map +1 -1
- package/dist/component/gateway.js +127 -132
- package/dist/component/gateway.js.map +1 -1
- package/dist/component/permissions.d.ts +30 -84
- package/dist/component/permissions.d.ts.map +1 -1
- package/dist/component/permissions.js +80 -203
- package/dist/component/permissions.js.map +1 -1
- package/dist/component/schema.d.ts +55 -153
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +30 -80
- package/dist/component/schema.js.map +1 -1
- package/dist/react/index.d.ts +2 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -3
- package/dist/react/index.js.map +1 -1
- package/package.json +7 -3
- package/src/cli/init.ts +116 -0
- package/src/client/index.ts +228 -389
- package/src/component/_generated/api.ts +4 -4
- package/src/component/_generated/component.ts +79 -195
- package/src/component/agentBridgeUtils.ts +52 -0
- package/src/component/agents.ts +106 -0
- package/src/component/gateway.ts +149 -163
- package/src/component/permissions.ts +89 -259
- package/src/component/schema.ts +31 -96
- package/src/react/index.ts +5 -6
- package/dist/component/provisioning.d.ts +0 -87
- package/dist/component/provisioning.d.ts.map +0 -1
- package/dist/component/provisioning.js +0 -343
- package/dist/component/provisioning.js.map +0 -1
- package/dist/component/registry.d.ts +0 -46
- package/dist/component/registry.d.ts.map +0 -1
- package/dist/component/registry.js +0 -121
- package/dist/component/registry.js.map +0 -1
- package/src/component/provisioning.ts +0 -402
- package/src/component/registry.ts +0 -152
|
@@ -1,343 +0,0 @@
|
|
|
1
|
-
import { v } from "convex/values";
|
|
2
|
-
import { mutation, query, internalMutation } from "./_generated/server.js";
|
|
3
|
-
// --- Token hashing utility (SHA-256, no external deps) ---
|
|
4
|
-
async function hashToken(token) {
|
|
5
|
-
const encoder = new TextEncoder();
|
|
6
|
-
const data = encoder.encode(token);
|
|
7
|
-
const hash = await crypto.subtle.digest("SHA-256", data);
|
|
8
|
-
return Array.from(new Uint8Array(hash))
|
|
9
|
-
.map((b) => b.toString(16).padStart(2, "0"))
|
|
10
|
-
.join("");
|
|
11
|
-
}
|
|
12
|
-
// --- Public mutations ---
|
|
13
|
-
/**
|
|
14
|
-
* Generate a provisioning token (APT) for an employee.
|
|
15
|
-
* Called by IT admin. Returns the plaintext token (store it securely!).
|
|
16
|
-
*/
|
|
17
|
-
export const generateProvisioningToken = mutation({
|
|
18
|
-
args: {
|
|
19
|
-
employeeEmail: v.string(),
|
|
20
|
-
department: v.string(),
|
|
21
|
-
maxApps: v.optional(v.number()),
|
|
22
|
-
expiresInDays: v.optional(v.number()),
|
|
23
|
-
createdBy: v.string(),
|
|
24
|
-
},
|
|
25
|
-
returns: v.object({
|
|
26
|
-
token: v.string(),
|
|
27
|
-
expiresAt: v.number(),
|
|
28
|
-
}),
|
|
29
|
-
handler: async (ctx, args) => {
|
|
30
|
-
const token = "apt_live_" + crypto.randomUUID().replace(/-/g, "");
|
|
31
|
-
const tokenHash = await hashToken(token);
|
|
32
|
-
const expiresAt = Date.now() + (args.expiresInDays ?? 7) * 24 * 60 * 60 * 1000;
|
|
33
|
-
await ctx.db.insert("provisioningTokens", {
|
|
34
|
-
tokenHash,
|
|
35
|
-
employeeEmail: args.employeeEmail,
|
|
36
|
-
department: args.department,
|
|
37
|
-
maxApps: args.maxApps ?? 5,
|
|
38
|
-
usedCount: 0,
|
|
39
|
-
expiresAt,
|
|
40
|
-
isActive: true,
|
|
41
|
-
createdBy: args.createdBy,
|
|
42
|
-
});
|
|
43
|
-
return { token, expiresAt };
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
/**
|
|
47
|
-
* Provision an agent on a specific app.
|
|
48
|
-
* Called by the employee (or their OpenClaw agent on bootstrap).
|
|
49
|
-
* Validates the APT, creates/finds the agent, creates an app instance.
|
|
50
|
-
*/
|
|
51
|
-
export const provisionAgent = mutation({
|
|
52
|
-
args: {
|
|
53
|
-
provisioningToken: v.string(),
|
|
54
|
-
appName: v.string(),
|
|
55
|
-
},
|
|
56
|
-
returns: v.object({
|
|
57
|
-
agentId: v.string(),
|
|
58
|
-
instanceToken: v.string(),
|
|
59
|
-
expiresAt: v.number(),
|
|
60
|
-
appName: v.string(),
|
|
61
|
-
message: v.string(),
|
|
62
|
-
}),
|
|
63
|
-
handler: async (ctx, args) => {
|
|
64
|
-
const tokenHash = await hashToken(args.provisioningToken);
|
|
65
|
-
// Find and validate the provisioning token
|
|
66
|
-
const tokenRecord = await ctx.db
|
|
67
|
-
.query("provisioningTokens")
|
|
68
|
-
.withIndex("by_token_hash", (q) => q.eq("tokenHash", tokenHash))
|
|
69
|
-
.unique();
|
|
70
|
-
if (!tokenRecord || !tokenRecord.isActive) {
|
|
71
|
-
throw new Error("Invalid provisioning token");
|
|
72
|
-
}
|
|
73
|
-
if (tokenRecord.expiresAt < Date.now()) {
|
|
74
|
-
throw new Error("Provisioning token has expired");
|
|
75
|
-
}
|
|
76
|
-
if (tokenRecord.usedCount >= tokenRecord.maxApps) {
|
|
77
|
-
throw new Error("Maximum number of apps reached for this token");
|
|
78
|
-
}
|
|
79
|
-
// Find or create the agent
|
|
80
|
-
let agent = await ctx.db
|
|
81
|
-
.query("registeredAgents")
|
|
82
|
-
.withIndex("by_email", (q) => q.eq("employeeEmail", tokenRecord.employeeEmail))
|
|
83
|
-
.unique();
|
|
84
|
-
let agentId;
|
|
85
|
-
if (!agent) {
|
|
86
|
-
// First provisioning: create global agent record
|
|
87
|
-
agentId = crypto.randomUUID();
|
|
88
|
-
await ctx.db.insert("registeredAgents", {
|
|
89
|
-
agentId,
|
|
90
|
-
employeeEmail: tokenRecord.employeeEmail,
|
|
91
|
-
department: tokenRecord.department,
|
|
92
|
-
firstRegisteredAt: Date.now(),
|
|
93
|
-
lastSeenAt: Date.now(),
|
|
94
|
-
isActive: true,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
if (!agent.isActive) {
|
|
99
|
-
throw new Error("Agent has been revoked");
|
|
100
|
-
}
|
|
101
|
-
agentId = agent.agentId;
|
|
102
|
-
// Update last seen
|
|
103
|
-
await ctx.db.patch(agent._id, { lastSeenAt: Date.now() });
|
|
104
|
-
}
|
|
105
|
-
// Check if instance already exists for this app
|
|
106
|
-
const existing = await ctx.db
|
|
107
|
-
.query("agentAppInstances")
|
|
108
|
-
.withIndex("by_agent_and_app", (q) => q.eq("agentId", agentId).eq("appName", args.appName))
|
|
109
|
-
.unique();
|
|
110
|
-
if (existing && existing.expiresAt > Date.now()) {
|
|
111
|
-
// Return existing valid instance (but we can't return the token since we only store the hash)
|
|
112
|
-
// Generate a new token and update the hash
|
|
113
|
-
const instanceToken = crypto.randomUUID();
|
|
114
|
-
const instanceTokenHash = await hashToken(instanceToken);
|
|
115
|
-
const expiresAt = Date.now() + 24 * 60 * 60 * 1000;
|
|
116
|
-
await ctx.db.patch(existing._id, {
|
|
117
|
-
instanceTokenHash,
|
|
118
|
-
expiresAt,
|
|
119
|
-
lastActivityAt: Date.now(),
|
|
120
|
-
});
|
|
121
|
-
return {
|
|
122
|
-
agentId,
|
|
123
|
-
instanceToken,
|
|
124
|
-
expiresAt,
|
|
125
|
-
appName: args.appName,
|
|
126
|
-
message: "Instance refreshed with new credentials",
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
if (existing) {
|
|
130
|
-
// Expired instance: delete and recreate
|
|
131
|
-
await ctx.db.delete(existing._id);
|
|
132
|
-
}
|
|
133
|
-
// Create new instance
|
|
134
|
-
const instanceToken = crypto.randomUUID();
|
|
135
|
-
const instanceTokenHash = await hashToken(instanceToken);
|
|
136
|
-
const expiresAt = Date.now() + 24 * 60 * 60 * 1000; // 24h
|
|
137
|
-
await ctx.db.insert("agentAppInstances", {
|
|
138
|
-
agentId,
|
|
139
|
-
appName: args.appName,
|
|
140
|
-
instanceTokenHash,
|
|
141
|
-
registeredAt: Date.now(),
|
|
142
|
-
expiresAt,
|
|
143
|
-
lastActivityAt: Date.now(),
|
|
144
|
-
monthlyRequests: 0,
|
|
145
|
-
});
|
|
146
|
-
// Increment token usage
|
|
147
|
-
await ctx.db.patch(tokenRecord._id, {
|
|
148
|
-
usedCount: tokenRecord.usedCount + 1,
|
|
149
|
-
});
|
|
150
|
-
// Setup default permissions from app-specific config
|
|
151
|
-
const config = await ctx.db
|
|
152
|
-
.query("appConfigs")
|
|
153
|
-
.withIndex("by_app_name", (q) => q.eq("appName", args.appName))
|
|
154
|
-
.unique();
|
|
155
|
-
if (config && config.defaultPermissions.length > 0) {
|
|
156
|
-
for (const perm of config.defaultPermissions) {
|
|
157
|
-
await ctx.db.insert("functionPermissions", {
|
|
158
|
-
agentId,
|
|
159
|
-
appName: args.appName,
|
|
160
|
-
functionPattern: perm.pattern,
|
|
161
|
-
permission: perm.permission,
|
|
162
|
-
rateLimitConfig: perm.rateLimitConfig,
|
|
163
|
-
createdAt: Date.now(),
|
|
164
|
-
createdBy: "system",
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return {
|
|
169
|
-
agentId,
|
|
170
|
-
instanceToken,
|
|
171
|
-
expiresAt,
|
|
172
|
-
appName: args.appName,
|
|
173
|
-
message: "Provisioning successful. Configure your agent with these credentials.",
|
|
174
|
-
};
|
|
175
|
-
},
|
|
176
|
-
});
|
|
177
|
-
/**
|
|
178
|
-
* Refresh an expired instance token.
|
|
179
|
-
* Called by the agent when its token expires.
|
|
180
|
-
*/
|
|
181
|
-
export const refreshInstanceToken = mutation({
|
|
182
|
-
args: {
|
|
183
|
-
agentId: v.string(),
|
|
184
|
-
appName: v.string(),
|
|
185
|
-
currentTokenHash: v.string(), // Hash of the current (expired) token for verification
|
|
186
|
-
},
|
|
187
|
-
returns: v.object({
|
|
188
|
-
instanceToken: v.string(),
|
|
189
|
-
expiresAt: v.number(),
|
|
190
|
-
}),
|
|
191
|
-
handler: async (ctx, args) => {
|
|
192
|
-
// Verify the agent exists and is active
|
|
193
|
-
const agent = await ctx.db
|
|
194
|
-
.query("registeredAgents")
|
|
195
|
-
.withIndex("by_agent_id", (q) => q.eq("agentId", args.agentId))
|
|
196
|
-
.unique();
|
|
197
|
-
if (!agent || !agent.isActive) {
|
|
198
|
-
throw new Error("Agent not found or has been revoked");
|
|
199
|
-
}
|
|
200
|
-
// Find the instance
|
|
201
|
-
const instance = await ctx.db
|
|
202
|
-
.query("agentAppInstances")
|
|
203
|
-
.withIndex("by_agent_and_app", (q) => q.eq("agentId", args.agentId).eq("appName", args.appName))
|
|
204
|
-
.unique();
|
|
205
|
-
if (!instance) {
|
|
206
|
-
throw new Error("No instance found for this agent and app");
|
|
207
|
-
}
|
|
208
|
-
// Verify the current token hash matches
|
|
209
|
-
if (instance.instanceTokenHash !== args.currentTokenHash) {
|
|
210
|
-
throw new Error("Token hash mismatch");
|
|
211
|
-
}
|
|
212
|
-
// Generate new token
|
|
213
|
-
const instanceToken = crypto.randomUUID();
|
|
214
|
-
const instanceTokenHash = await hashToken(instanceToken);
|
|
215
|
-
const expiresAt = Date.now() + 24 * 60 * 60 * 1000;
|
|
216
|
-
await ctx.db.patch(instance._id, {
|
|
217
|
-
instanceTokenHash,
|
|
218
|
-
expiresAt,
|
|
219
|
-
lastActivityAt: Date.now(),
|
|
220
|
-
});
|
|
221
|
-
return { instanceToken, expiresAt };
|
|
222
|
-
},
|
|
223
|
-
});
|
|
224
|
-
/**
|
|
225
|
-
* Revoke an agent globally (IT admin operation).
|
|
226
|
-
* All instances become invalid immediately.
|
|
227
|
-
*/
|
|
228
|
-
export const revokeAgent = mutation({
|
|
229
|
-
args: {
|
|
230
|
-
agentId: v.string(),
|
|
231
|
-
revokedBy: v.string(),
|
|
232
|
-
},
|
|
233
|
-
returns: v.boolean(),
|
|
234
|
-
handler: async (ctx, args) => {
|
|
235
|
-
const agent = await ctx.db
|
|
236
|
-
.query("registeredAgents")
|
|
237
|
-
.withIndex("by_agent_id", (q) => q.eq("agentId", args.agentId))
|
|
238
|
-
.unique();
|
|
239
|
-
if (!agent)
|
|
240
|
-
return false;
|
|
241
|
-
await ctx.db.patch(agent._id, {
|
|
242
|
-
isActive: false,
|
|
243
|
-
revokedAt: Date.now(),
|
|
244
|
-
revokedBy: args.revokedBy,
|
|
245
|
-
});
|
|
246
|
-
return true;
|
|
247
|
-
},
|
|
248
|
-
});
|
|
249
|
-
/**
|
|
250
|
-
* Revoke a specific app instance for an agent.
|
|
251
|
-
*/
|
|
252
|
-
export const revokeAppInstance = mutation({
|
|
253
|
-
args: {
|
|
254
|
-
agentId: v.string(),
|
|
255
|
-
appName: v.string(),
|
|
256
|
-
},
|
|
257
|
-
returns: v.boolean(),
|
|
258
|
-
handler: async (ctx, args) => {
|
|
259
|
-
const instance = await ctx.db
|
|
260
|
-
.query("agentAppInstances")
|
|
261
|
-
.withIndex("by_agent_and_app", (q) => q.eq("agentId", args.agentId).eq("appName", args.appName))
|
|
262
|
-
.unique();
|
|
263
|
-
if (!instance)
|
|
264
|
-
return false;
|
|
265
|
-
await ctx.db.delete(instance._id);
|
|
266
|
-
return true;
|
|
267
|
-
},
|
|
268
|
-
});
|
|
269
|
-
/**
|
|
270
|
-
* List all registered agents (admin query).
|
|
271
|
-
*/
|
|
272
|
-
export const listAgents = query({
|
|
273
|
-
args: {
|
|
274
|
-
activeOnly: v.optional(v.boolean()),
|
|
275
|
-
},
|
|
276
|
-
returns: v.array(v.object({
|
|
277
|
-
agentId: v.string(),
|
|
278
|
-
employeeEmail: v.string(),
|
|
279
|
-
department: v.string(),
|
|
280
|
-
firstRegisteredAt: v.number(),
|
|
281
|
-
lastSeenAt: v.number(),
|
|
282
|
-
isActive: v.boolean(),
|
|
283
|
-
revokedAt: v.optional(v.number()),
|
|
284
|
-
revokedBy: v.optional(v.string()),
|
|
285
|
-
})),
|
|
286
|
-
handler: async (ctx, args) => {
|
|
287
|
-
const agents = await ctx.db.query("registeredAgents").collect();
|
|
288
|
-
const filtered = args.activeOnly !== false
|
|
289
|
-
? agents.filter((a) => a.isActive)
|
|
290
|
-
: agents;
|
|
291
|
-
return filtered.map((a) => ({
|
|
292
|
-
agentId: a.agentId,
|
|
293
|
-
employeeEmail: a.employeeEmail,
|
|
294
|
-
department: a.department,
|
|
295
|
-
firstRegisteredAt: a.firstRegisteredAt,
|
|
296
|
-
lastSeenAt: a.lastSeenAt,
|
|
297
|
-
isActive: a.isActive,
|
|
298
|
-
revokedAt: a.revokedAt,
|
|
299
|
-
revokedBy: a.revokedBy,
|
|
300
|
-
}));
|
|
301
|
-
},
|
|
302
|
-
});
|
|
303
|
-
/**
|
|
304
|
-
* Configure app defaults (per-app) for provisioning.
|
|
305
|
-
* This is a mutation called via the client class.
|
|
306
|
-
*/
|
|
307
|
-
export const configure = mutation({
|
|
308
|
-
args: {
|
|
309
|
-
appName: v.string(),
|
|
310
|
-
defaultPermissions: v.array(v.object({
|
|
311
|
-
pattern: v.string(),
|
|
312
|
-
permission: v.union(v.literal("allow"), v.literal("deny"), v.literal("rate_limited")),
|
|
313
|
-
rateLimitConfig: v.optional(v.object({
|
|
314
|
-
requestsPerHour: v.number(),
|
|
315
|
-
tokenBudget: v.number(),
|
|
316
|
-
})),
|
|
317
|
-
})),
|
|
318
|
-
},
|
|
319
|
-
returns: v.null(),
|
|
320
|
-
handler: async (ctx, args) => {
|
|
321
|
-
// Upsert: replace existing config for this app
|
|
322
|
-
const existing = await ctx.db
|
|
323
|
-
.query("appConfigs")
|
|
324
|
-
.withIndex("by_app_name", (q) => q.eq("appName", args.appName))
|
|
325
|
-
.unique();
|
|
326
|
-
if (existing) {
|
|
327
|
-
await ctx.db.patch(existing._id, {
|
|
328
|
-
appName: args.appName,
|
|
329
|
-
defaultPermissions: args.defaultPermissions,
|
|
330
|
-
configuredAt: Date.now(),
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
else {
|
|
334
|
-
await ctx.db.insert("appConfigs", {
|
|
335
|
-
appName: args.appName,
|
|
336
|
-
defaultPermissions: args.defaultPermissions,
|
|
337
|
-
configuredAt: Date.now(),
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
return null;
|
|
341
|
-
},
|
|
342
|
-
});
|
|
343
|
-
//# sourceMappingURL=provisioning.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provisioning.js","sourceRoot":"","sources":["../../src/component/provisioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Register a function handle that agents can call.
|
|
3
|
-
* The host app creates a function handle via createFunctionHandle()
|
|
4
|
-
* and registers it here with a human-readable alias.
|
|
5
|
-
*
|
|
6
|
-
* If a function with the same appName + functionName already exists, it is updated.
|
|
7
|
-
*/
|
|
8
|
-
export declare const register: import("convex/server").RegisteredMutation<"public", {
|
|
9
|
-
description?: string | undefined;
|
|
10
|
-
appName: string;
|
|
11
|
-
functionName: string;
|
|
12
|
-
functionHandle: string;
|
|
13
|
-
functionType: "query" | "mutation" | "action";
|
|
14
|
-
}, Promise<import("convex/values").GenericId<"functionRegistry">>>;
|
|
15
|
-
/**
|
|
16
|
-
* Get a specific function handle by appName + functionName.
|
|
17
|
-
* Returns null if not found.
|
|
18
|
-
*/
|
|
19
|
-
export declare const getHandle: import("convex/server").RegisteredQuery<"public", {
|
|
20
|
-
appName: string;
|
|
21
|
-
functionName: string;
|
|
22
|
-
}, Promise<{
|
|
23
|
-
functionHandle: string;
|
|
24
|
-
functionType: "query" | "mutation" | "action";
|
|
25
|
-
functionName: string;
|
|
26
|
-
description: string | undefined;
|
|
27
|
-
} | null>>;
|
|
28
|
-
/**
|
|
29
|
-
* List all registered functions for a given app.
|
|
30
|
-
*/
|
|
31
|
-
export declare const listFunctions: import("convex/server").RegisteredQuery<"public", {
|
|
32
|
-
appName: string;
|
|
33
|
-
}, Promise<{
|
|
34
|
-
functionName: string;
|
|
35
|
-
functionType: "query" | "mutation" | "action";
|
|
36
|
-
description: string | undefined;
|
|
37
|
-
registeredAt: number;
|
|
38
|
-
}[]>>;
|
|
39
|
-
/**
|
|
40
|
-
* Unregister a function handle.
|
|
41
|
-
*/
|
|
42
|
-
export declare const unregister: import("convex/server").RegisteredMutation<"public", {
|
|
43
|
-
appName: string;
|
|
44
|
-
functionName: string;
|
|
45
|
-
}, Promise<boolean>>;
|
|
46
|
-
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/component/registry.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ;;;;;;kEA0CnB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;UAmCpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;KA6BxB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU;;;oBAmBrB,CAAC"}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { v } from "convex/values";
|
|
2
|
-
import { mutation, query } from "./_generated/server.js";
|
|
3
|
-
/**
|
|
4
|
-
* Register a function handle that agents can call.
|
|
5
|
-
* The host app creates a function handle via createFunctionHandle()
|
|
6
|
-
* and registers it here with a human-readable alias.
|
|
7
|
-
*
|
|
8
|
-
* If a function with the same appName + functionName already exists, it is updated.
|
|
9
|
-
*/
|
|
10
|
-
export const register = mutation({
|
|
11
|
-
args: {
|
|
12
|
-
appName: v.string(),
|
|
13
|
-
functionName: v.string(),
|
|
14
|
-
functionHandle: v.string(),
|
|
15
|
-
functionType: v.union(v.literal("query"), v.literal("mutation"), v.literal("action")),
|
|
16
|
-
description: v.optional(v.string()),
|
|
17
|
-
},
|
|
18
|
-
returns: v.string(),
|
|
19
|
-
handler: async (ctx, args) => {
|
|
20
|
-
// Check if already registered (upsert)
|
|
21
|
-
const existing = await ctx.db
|
|
22
|
-
.query("functionRegistry")
|
|
23
|
-
.withIndex("by_app_and_function", (q) => q.eq("appName", args.appName).eq("functionName", args.functionName))
|
|
24
|
-
.unique();
|
|
25
|
-
if (existing) {
|
|
26
|
-
await ctx.db.patch(existing._id, {
|
|
27
|
-
functionHandle: args.functionHandle,
|
|
28
|
-
functionType: args.functionType,
|
|
29
|
-
description: args.description,
|
|
30
|
-
registeredAt: Date.now(),
|
|
31
|
-
});
|
|
32
|
-
return existing._id;
|
|
33
|
-
}
|
|
34
|
-
const id = await ctx.db.insert("functionRegistry", {
|
|
35
|
-
appName: args.appName,
|
|
36
|
-
functionName: args.functionName,
|
|
37
|
-
functionHandle: args.functionHandle,
|
|
38
|
-
functionType: args.functionType,
|
|
39
|
-
description: args.description,
|
|
40
|
-
registeredAt: Date.now(),
|
|
41
|
-
});
|
|
42
|
-
return id;
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
/**
|
|
46
|
-
* Get a specific function handle by appName + functionName.
|
|
47
|
-
* Returns null if not found.
|
|
48
|
-
*/
|
|
49
|
-
export const getHandle = query({
|
|
50
|
-
args: {
|
|
51
|
-
appName: v.string(),
|
|
52
|
-
functionName: v.string(),
|
|
53
|
-
},
|
|
54
|
-
returns: v.union(v.null(), v.object({
|
|
55
|
-
functionHandle: v.string(),
|
|
56
|
-
functionType: v.union(v.literal("query"), v.literal("mutation"), v.literal("action")),
|
|
57
|
-
functionName: v.string(),
|
|
58
|
-
description: v.optional(v.string()),
|
|
59
|
-
})),
|
|
60
|
-
handler: async (ctx, args) => {
|
|
61
|
-
const entry = await ctx.db
|
|
62
|
-
.query("functionRegistry")
|
|
63
|
-
.withIndex("by_app_and_function", (q) => q.eq("appName", args.appName).eq("functionName", args.functionName))
|
|
64
|
-
.unique();
|
|
65
|
-
if (!entry)
|
|
66
|
-
return null;
|
|
67
|
-
return {
|
|
68
|
-
functionHandle: entry.functionHandle,
|
|
69
|
-
functionType: entry.functionType,
|
|
70
|
-
functionName: entry.functionName,
|
|
71
|
-
description: entry.description,
|
|
72
|
-
};
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
/**
|
|
76
|
-
* List all registered functions for a given app.
|
|
77
|
-
*/
|
|
78
|
-
export const listFunctions = query({
|
|
79
|
-
args: {
|
|
80
|
-
appName: v.string(),
|
|
81
|
-
},
|
|
82
|
-
returns: v.array(v.object({
|
|
83
|
-
functionName: v.string(),
|
|
84
|
-
functionType: v.union(v.literal("query"), v.literal("mutation"), v.literal("action")),
|
|
85
|
-
description: v.optional(v.string()),
|
|
86
|
-
registeredAt: v.number(),
|
|
87
|
-
})),
|
|
88
|
-
handler: async (ctx, args) => {
|
|
89
|
-
const entries = await ctx.db
|
|
90
|
-
.query("functionRegistry")
|
|
91
|
-
.withIndex("by_app_and_function", (q) => q.eq("appName", args.appName))
|
|
92
|
-
.collect();
|
|
93
|
-
return entries.map((entry) => ({
|
|
94
|
-
functionName: entry.functionName,
|
|
95
|
-
functionType: entry.functionType,
|
|
96
|
-
description: entry.description,
|
|
97
|
-
registeredAt: entry.registeredAt,
|
|
98
|
-
}));
|
|
99
|
-
},
|
|
100
|
-
});
|
|
101
|
-
/**
|
|
102
|
-
* Unregister a function handle.
|
|
103
|
-
*/
|
|
104
|
-
export const unregister = mutation({
|
|
105
|
-
args: {
|
|
106
|
-
appName: v.string(),
|
|
107
|
-
functionName: v.string(),
|
|
108
|
-
},
|
|
109
|
-
returns: v.boolean(),
|
|
110
|
-
handler: async (ctx, args) => {
|
|
111
|
-
const existing = await ctx.db
|
|
112
|
-
.query("functionRegistry")
|
|
113
|
-
.withIndex("by_app_and_function", (q) => q.eq("appName", args.appName).eq("functionName", args.functionName))
|
|
114
|
-
.unique();
|
|
115
|
-
if (!existing)
|
|
116
|
-
return false;
|
|
117
|
-
await ctx.db.delete(existing._id);
|
|
118
|
-
return true;
|
|
119
|
-
},
|
|
120
|
-
});
|
|
121
|
-
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/component/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAC/B,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;QAC1B,YAAY,EAAE,CAAC,CAAC,KAAK,CACnB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAClB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CACpB;QACD,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpC;IACD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,uCAAuC;QACvC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE;aAC1B,KAAK,CAAC,kBAAkB,CAAC;aACzB,SAAS,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE,CACtC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CACpE;aACA,MAAM,EAAE,CAAC;QAEZ,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;aACzB,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,GAAG,CAAC;QACtB,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE;YACjD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;SACzB,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;IAC7B,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;KACzB;IACD,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,IAAI,EAAE,EACR,CAAC,CAAC,MAAM,CAAC;QACP,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;QAC1B,YAAY,EAAE,CAAC,CAAC,KAAK,CACnB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAClB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CACpB;QACD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACpC,CAAC,CACH;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE;aACvB,KAAK,CAAC,kBAAkB,CAAC;aACzB,SAAS,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE,CACtC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CACpE;aACA,MAAM,EAAE,CAAC;QAEZ,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,OAAO;YACL,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;IACjC,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB;IACD,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,MAAM,CAAC;QACP,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,YAAY,EAAE,CAAC,CAAC,KAAK,CACnB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAClB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CACpB;QACD,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;KACzB,CAAC,CACH;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE;aACzB,KAAK,CAAC,kBAAkB,CAAC;aACzB,SAAS,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACtE,OAAO,EAAE,CAAC;QAEb,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC,CAAC,CAAC;IACN,CAAC;CACF,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;IACjC,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;KACzB;IACD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE;aAC1B,KAAK,CAAC,kBAAkB,CAAC;aACzB,SAAS,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE,CACtC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CACpE;aACA,MAAM,EAAE,CAAC;QAEZ,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAE5B,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC"}
|