@okrlinkhub/agent-bridge 3.0.1 → 3.0.2

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.
@@ -0,0 +1,106 @@
1
+ export declare const upsertLink: import("convex/server").RegisteredMutation<"public", {
2
+ expiresInDays?: number | undefined;
3
+ metadata?: any;
4
+ refreshTokenCiphertext?: string | undefined;
5
+ refreshTokenExpiresAt?: number | undefined;
6
+ tokenVersion?: number | undefined;
7
+ appKey: string;
8
+ provider: string;
9
+ providerUserId: string;
10
+ appUserSubject: string;
11
+ }, Promise<{
12
+ linkId: import("convex/values").GenericId<"agentUserLinks">;
13
+ created: boolean;
14
+ expiresAt: number | undefined;
15
+ }>>;
16
+ export declare const resolveLink: import("convex/server").RegisteredMutation<"public", {
17
+ extendExpiryDaysOnUse?: number | undefined;
18
+ maxRequestsPerWindow?: number | undefined;
19
+ windowSeconds?: number | undefined;
20
+ appKey: string;
21
+ provider: string;
22
+ providerUserId: string;
23
+ }, Promise<{
24
+ ok: false;
25
+ errorCode: "link_rate_limited";
26
+ statusCode: number;
27
+ retryAfterSeconds: number;
28
+ link?: undefined;
29
+ } | {
30
+ ok: false;
31
+ errorCode: "link_not_found";
32
+ statusCode: number;
33
+ retryAfterSeconds?: undefined;
34
+ link?: undefined;
35
+ } | {
36
+ ok: false;
37
+ errorCode: "link_revoked";
38
+ statusCode: number;
39
+ retryAfterSeconds?: undefined;
40
+ link?: undefined;
41
+ } | {
42
+ ok: false;
43
+ errorCode: "link_expired";
44
+ statusCode: number;
45
+ retryAfterSeconds?: undefined;
46
+ link?: undefined;
47
+ } | {
48
+ ok: true;
49
+ link: {
50
+ _id: import("convex/values").GenericId<"agentUserLinks">;
51
+ _creationTime: number;
52
+ metadata?: any;
53
+ refreshTokenCiphertext?: string | undefined;
54
+ refreshTokenExpiresAt?: number | undefined;
55
+ tokenVersion?: number | undefined;
56
+ lastUsedAt?: number | undefined;
57
+ expiresAt?: number | undefined;
58
+ revokedAt?: number | undefined;
59
+ appKey: string;
60
+ provider: string;
61
+ status: "active" | "revoked" | "expired";
62
+ providerUserId: string;
63
+ appUserSubject: string;
64
+ createdAt: number;
65
+ updatedAt: number;
66
+ };
67
+ errorCode?: undefined;
68
+ statusCode?: undefined;
69
+ retryAfterSeconds?: undefined;
70
+ }>>;
71
+ export declare const revokeLink: import("convex/server").RegisteredMutation<"public", {
72
+ appKey?: string | undefined;
73
+ provider?: string | undefined;
74
+ providerUserId?: string | undefined;
75
+ linkId?: import("convex/values").GenericId<"agentUserLinks"> | undefined;
76
+ }, Promise<{
77
+ revoked: boolean;
78
+ linkId?: undefined;
79
+ } | {
80
+ revoked: boolean;
81
+ linkId: import("convex/values").GenericId<"agentUserLinks">;
82
+ }>>;
83
+ export declare const listLinks: import("convex/server").RegisteredQuery<"public", {
84
+ appKey?: string | undefined;
85
+ limit?: number | undefined;
86
+ provider?: string | undefined;
87
+ status?: "active" | "revoked" | "expired" | undefined;
88
+ }, Promise<{
89
+ _id: import("convex/values").GenericId<"agentUserLinks">;
90
+ _creationTime: number;
91
+ metadata?: any;
92
+ refreshTokenCiphertext?: string | undefined;
93
+ refreshTokenExpiresAt?: number | undefined;
94
+ tokenVersion?: number | undefined;
95
+ lastUsedAt?: number | undefined;
96
+ expiresAt?: number | undefined;
97
+ revokedAt?: number | undefined;
98
+ appKey: string;
99
+ provider: string;
100
+ status: "active" | "revoked" | "expired";
101
+ providerUserId: string;
102
+ appUserSubject: string;
103
+ createdAt: number;
104
+ updatedAt: number;
105
+ }[]>>;
106
+ //# sourceMappingURL=linking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linking.d.ts","sourceRoot":"","sources":["../../src/component/linking.ts"],"names":[],"mappings":"AA0GA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;GA2ErB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuGtB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;GAqDrB,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;KAiCpB,CAAC"}
@@ -0,0 +1,322 @@
1
+ import { v } from "convex/values";
2
+ import { mutation, query } from "./_generated/server.js";
3
+ import { normalizeAppKey } from "./agentBridgeUtils.js";
4
+ const linkStatusValidator = v.union(v.literal("active"), v.literal("revoked"), v.literal("expired"));
5
+ const linkRecordValidator = v.object({
6
+ _id: v.id("agentUserLinks"),
7
+ provider: v.string(),
8
+ providerUserId: v.string(),
9
+ appKey: v.string(),
10
+ appUserSubject: v.string(),
11
+ status: linkStatusValidator,
12
+ createdAt: v.number(),
13
+ updatedAt: v.number(),
14
+ lastUsedAt: v.optional(v.number()),
15
+ expiresAt: v.optional(v.number()),
16
+ revokedAt: v.optional(v.number()),
17
+ metadata: v.optional(v.any()),
18
+ refreshTokenCiphertext: v.optional(v.string()),
19
+ refreshTokenExpiresAt: v.optional(v.number()),
20
+ tokenVersion: v.optional(v.number()),
21
+ });
22
+ const resolveLinkResultValidator = v.union(v.object({
23
+ ok: v.literal(true),
24
+ link: linkRecordValidator,
25
+ }), v.object({
26
+ ok: v.literal(false),
27
+ errorCode: v.union(v.literal("link_not_found"), v.literal("link_revoked"), v.literal("link_expired"), v.literal("link_rate_limited")),
28
+ statusCode: v.number(),
29
+ retryAfterSeconds: v.optional(v.number()),
30
+ }));
31
+ function normalizeIdentity(input) {
32
+ return input.trim();
33
+ }
34
+ function normalizeProvider(provider) {
35
+ return provider.trim().toLowerCase();
36
+ }
37
+ function resolveExpiresAt(now, ttlDays) {
38
+ if (ttlDays === undefined) {
39
+ return undefined;
40
+ }
41
+ if (!Number.isFinite(ttlDays) || ttlDays <= 0) {
42
+ throw new Error("expiresInDays must be a positive number");
43
+ }
44
+ return now + Math.floor(ttlDays * 24 * 60 * 60 * 1000);
45
+ }
46
+ async function checkAndConsumeRateLimit(args) {
47
+ const bucketStartMs = Math.floor(args.now / (args.windowSeconds * 1000)) * args.windowSeconds * 1000;
48
+ const existing = await args.ctx.db
49
+ .query("agentLinkRateLimits")
50
+ .withIndex("by_key_bucketStartMs", (q) => q.eq("key", args.key).eq("bucketStartMs", bucketStartMs))
51
+ .unique();
52
+ if (existing && existing.requestCount >= args.maxRequests) {
53
+ const nextBucketStartMs = bucketStartMs + args.windowSeconds * 1000;
54
+ const retryAfterSeconds = Math.max(1, Math.ceil((nextBucketStartMs - args.now) / 1000));
55
+ return {
56
+ limited: true,
57
+ retryAfterSeconds,
58
+ };
59
+ }
60
+ if (existing) {
61
+ await args.ctx.db.patch(existing._id, {
62
+ requestCount: existing.requestCount + 1,
63
+ updatedAt: args.now,
64
+ });
65
+ }
66
+ else {
67
+ await args.ctx.db.insert("agentLinkRateLimits", {
68
+ key: args.key,
69
+ bucketStartMs,
70
+ requestCount: 1,
71
+ updatedAt: args.now,
72
+ });
73
+ }
74
+ return { limited: false };
75
+ }
76
+ export const upsertLink = mutation({
77
+ args: {
78
+ provider: v.string(),
79
+ providerUserId: v.string(),
80
+ appKey: v.string(),
81
+ appUserSubject: v.string(),
82
+ expiresInDays: v.optional(v.number()),
83
+ metadata: v.optional(v.any()),
84
+ refreshTokenCiphertext: v.optional(v.string()),
85
+ refreshTokenExpiresAt: v.optional(v.number()),
86
+ tokenVersion: v.optional(v.number()),
87
+ },
88
+ returns: v.object({
89
+ linkId: v.id("agentUserLinks"),
90
+ created: v.boolean(),
91
+ expiresAt: v.optional(v.number()),
92
+ }),
93
+ handler: async (ctx, args) => {
94
+ const now = Date.now();
95
+ const provider = normalizeProvider(args.provider);
96
+ const providerUserId = normalizeIdentity(args.providerUserId);
97
+ const appKey = normalizeAppKey(args.appKey);
98
+ const appUserSubject = normalizeIdentity(args.appUserSubject);
99
+ const expiresAt = resolveExpiresAt(now, args.expiresInDays);
100
+ const existing = await ctx.db
101
+ .query("agentUserLinks")
102
+ .withIndex("by_provider_providerUserId_appKey", (q) => q
103
+ .eq("provider", provider)
104
+ .eq("providerUserId", providerUserId)
105
+ .eq("appKey", appKey))
106
+ .unique();
107
+ if (existing) {
108
+ await ctx.db.patch(existing._id, {
109
+ appUserSubject,
110
+ status: "active",
111
+ updatedAt: now,
112
+ lastUsedAt: existing.lastUsedAt,
113
+ expiresAt,
114
+ revokedAt: undefined,
115
+ metadata: args.metadata,
116
+ refreshTokenCiphertext: args.refreshTokenCiphertext,
117
+ refreshTokenExpiresAt: args.refreshTokenExpiresAt,
118
+ tokenVersion: args.tokenVersion ?? existing.tokenVersion ?? 1,
119
+ });
120
+ return {
121
+ linkId: existing._id,
122
+ created: false,
123
+ expiresAt,
124
+ };
125
+ }
126
+ const linkId = await ctx.db.insert("agentUserLinks", {
127
+ provider,
128
+ providerUserId,
129
+ appKey,
130
+ appUserSubject,
131
+ status: "active",
132
+ createdAt: now,
133
+ updatedAt: now,
134
+ expiresAt,
135
+ metadata: args.metadata,
136
+ refreshTokenCiphertext: args.refreshTokenCiphertext,
137
+ refreshTokenExpiresAt: args.refreshTokenExpiresAt,
138
+ tokenVersion: args.tokenVersion ?? 1,
139
+ });
140
+ return {
141
+ linkId,
142
+ created: true,
143
+ expiresAt,
144
+ };
145
+ },
146
+ });
147
+ export const resolveLink = mutation({
148
+ args: {
149
+ provider: v.string(),
150
+ providerUserId: v.string(),
151
+ appKey: v.string(),
152
+ maxRequestsPerWindow: v.optional(v.number()),
153
+ windowSeconds: v.optional(v.number()),
154
+ extendExpiryDaysOnUse: v.optional(v.number()),
155
+ },
156
+ returns: resolveLinkResultValidator,
157
+ handler: async (ctx, args) => {
158
+ const now = Date.now();
159
+ const provider = normalizeProvider(args.provider);
160
+ const providerUserId = normalizeIdentity(args.providerUserId);
161
+ const appKey = normalizeAppKey(args.appKey);
162
+ const maxRequestsPerWindow = args.maxRequestsPerWindow ?? 60;
163
+ const windowSeconds = args.windowSeconds ?? 60;
164
+ if (maxRequestsPerWindow <= 0 || windowSeconds <= 0) {
165
+ throw new Error("maxRequestsPerWindow and windowSeconds must be positive");
166
+ }
167
+ const rateLimitKey = `${provider}:${providerUserId}:${appKey}`;
168
+ const rateLimitResult = await checkAndConsumeRateLimit({
169
+ ctx,
170
+ key: rateLimitKey,
171
+ now,
172
+ maxRequests: maxRequestsPerWindow,
173
+ windowSeconds,
174
+ });
175
+ if (rateLimitResult.limited) {
176
+ return {
177
+ ok: false,
178
+ errorCode: "link_rate_limited",
179
+ statusCode: 429,
180
+ retryAfterSeconds: rateLimitResult.retryAfterSeconds,
181
+ };
182
+ }
183
+ const link = await ctx.db
184
+ .query("agentUserLinks")
185
+ .withIndex("by_provider_providerUserId_appKey", (q) => q
186
+ .eq("provider", provider)
187
+ .eq("providerUserId", providerUserId)
188
+ .eq("appKey", appKey))
189
+ .unique();
190
+ if (!link) {
191
+ return {
192
+ ok: false,
193
+ errorCode: "link_not_found",
194
+ statusCode: 404,
195
+ };
196
+ }
197
+ if (link.status === "revoked") {
198
+ return {
199
+ ok: false,
200
+ errorCode: "link_revoked",
201
+ statusCode: 410,
202
+ };
203
+ }
204
+ if (link.expiresAt !== undefined && now > link.expiresAt) {
205
+ await ctx.db.patch(link._id, {
206
+ status: "expired",
207
+ updatedAt: now,
208
+ });
209
+ const expiredLink = await ctx.db.get(link._id);
210
+ if (!expiredLink) {
211
+ return {
212
+ ok: false,
213
+ errorCode: "link_expired",
214
+ statusCode: 410,
215
+ };
216
+ }
217
+ return {
218
+ ok: false,
219
+ errorCode: "link_expired",
220
+ statusCode: 410,
221
+ };
222
+ }
223
+ const patch = {
224
+ updatedAt: now,
225
+ lastUsedAt: now,
226
+ };
227
+ if (args.extendExpiryDaysOnUse !== undefined) {
228
+ patch.expiresAt = resolveExpiresAt(now, args.extendExpiryDaysOnUse);
229
+ }
230
+ await ctx.db.patch(link._id, patch);
231
+ const updated = await ctx.db.get(link._id);
232
+ if (!updated) {
233
+ throw new Error("Link not found after update");
234
+ }
235
+ return {
236
+ ok: true,
237
+ link: updated,
238
+ };
239
+ },
240
+ });
241
+ export const revokeLink = mutation({
242
+ args: {
243
+ linkId: v.optional(v.id("agentUserLinks")),
244
+ provider: v.optional(v.string()),
245
+ providerUserId: v.optional(v.string()),
246
+ appKey: v.optional(v.string()),
247
+ },
248
+ returns: v.object({
249
+ revoked: v.boolean(),
250
+ linkId: v.optional(v.id("agentUserLinks")),
251
+ }),
252
+ handler: async (ctx, args) => {
253
+ let linkId = args.linkId;
254
+ if (!linkId) {
255
+ const provider = args.provider ? normalizeProvider(args.provider) : undefined;
256
+ const providerUserId = args.providerUserId
257
+ ? normalizeIdentity(args.providerUserId)
258
+ : undefined;
259
+ const appKey = args.appKey ? normalizeAppKey(args.appKey) : undefined;
260
+ if (!provider || !providerUserId || !appKey) {
261
+ throw new Error("Provide either linkId or provider, providerUserId and appKey");
262
+ }
263
+ const existing = await ctx.db
264
+ .query("agentUserLinks")
265
+ .withIndex("by_provider_providerUserId_appKey", (q) => q
266
+ .eq("provider", provider)
267
+ .eq("providerUserId", providerUserId)
268
+ .eq("appKey", appKey))
269
+ .unique();
270
+ if (!existing) {
271
+ return { revoked: false };
272
+ }
273
+ linkId = existing._id;
274
+ }
275
+ const existing = await ctx.db.get(linkId);
276
+ if (!existing) {
277
+ return { revoked: false };
278
+ }
279
+ await ctx.db.patch(linkId, {
280
+ status: "revoked",
281
+ revokedAt: Date.now(),
282
+ updatedAt: Date.now(),
283
+ });
284
+ return {
285
+ revoked: true,
286
+ linkId,
287
+ };
288
+ },
289
+ });
290
+ export const listLinks = query({
291
+ args: {
292
+ appKey: v.optional(v.string()),
293
+ provider: v.optional(v.string()),
294
+ status: v.optional(linkStatusValidator),
295
+ limit: v.optional(v.number()),
296
+ },
297
+ returns: v.array(linkRecordValidator),
298
+ handler: async (ctx, args) => {
299
+ const limit = Math.min(args.limit ?? 100, 500);
300
+ if (args.appKey && args.status) {
301
+ return await ctx.db
302
+ .query("agentUserLinks")
303
+ .withIndex("by_appKey_status", (q) => q.eq("appKey", normalizeAppKey(args.appKey)).eq("status", args.status))
304
+ .order("desc")
305
+ .take(limit);
306
+ }
307
+ const all = await ctx.db.query("agentUserLinks").order("desc").take(limit);
308
+ return all.filter((link) => {
309
+ if (args.provider && link.provider !== normalizeProvider(args.provider)) {
310
+ return false;
311
+ }
312
+ if (args.appKey && link.appKey !== normalizeAppKey(args.appKey)) {
313
+ return false;
314
+ }
315
+ if (args.status && link.status !== args.status) {
316
+ return false;
317
+ }
318
+ return true;
319
+ });
320
+ },
321
+ });
322
+ //# sourceMappingURL=linking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linking.js","sourceRoot":"","sources":["../../src/component/linking.ts"],"names":[],"mappings":"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"}
@@ -56,7 +56,13 @@ declare const _default: import("convex/server").SchemaDefinition<{
56
56
  by_key: ["key", "_creationTime"];
57
57
  }, {}, {}>;
58
58
  agentLogs: import("convex/server").TableDefinition<import("convex/values").VObject<{
59
+ appUserSubjectHash?: string | undefined;
59
60
  error?: string | undefined;
61
+ errorCode?: string | undefined;
62
+ linkStatus?: string | undefined;
63
+ linkedProvider?: string | undefined;
64
+ providerUserIdHash?: string | undefined;
65
+ rateLimited?: boolean | undefined;
60
66
  result?: any;
61
67
  serviceId?: string | undefined;
62
68
  agentId: import("convex/values").GenericId<"agents">;
@@ -71,14 +77,68 @@ declare const _default: import("convex/server").SchemaDefinition<{
71
77
  args: import("convex/values").VAny<any, "required", string>;
72
78
  result: import("convex/values").VAny<any, "optional", string>;
73
79
  error: import("convex/values").VString<string | undefined, "optional">;
80
+ errorCode: import("convex/values").VString<string | undefined, "optional">;
74
81
  duration: import("convex/values").VFloat64<number, "required">;
82
+ linkedProvider: import("convex/values").VString<string | undefined, "optional">;
83
+ providerUserIdHash: import("convex/values").VString<string | undefined, "optional">;
84
+ appUserSubjectHash: import("convex/values").VString<string | undefined, "optional">;
85
+ linkStatus: import("convex/values").VString<string | undefined, "optional">;
86
+ rateLimited: import("convex/values").VBoolean<boolean | undefined, "optional">;
75
87
  timestamp: import("convex/values").VFloat64<number, "required">;
76
- }, "required", "agentId" | "functionKey" | "args" | "duration" | "error" | "result" | "serviceId" | "timestamp" | `args.${string}` | `result.${string}`>, {
88
+ }, "required", "agentId" | "functionKey" | "appUserSubjectHash" | "args" | "duration" | "error" | "errorCode" | "linkStatus" | "linkedProvider" | "providerUserIdHash" | "rateLimited" | "result" | "serviceId" | "timestamp" | `args.${string}` | `result.${string}`>, {
77
89
  by_agentId_and_timestamp: ["agentId", "timestamp", "_creationTime"];
78
90
  by_serviceId_and_timestamp: ["serviceId", "timestamp", "_creationTime"];
79
91
  by_functionKey: ["functionKey", "_creationTime"];
80
92
  by_timestamp: ["timestamp", "_creationTime"];
81
93
  }, {}, {}>;
94
+ agentUserLinks: import("convex/server").TableDefinition<import("convex/values").VObject<{
95
+ metadata?: any;
96
+ refreshTokenCiphertext?: string | undefined;
97
+ refreshTokenExpiresAt?: number | undefined;
98
+ tokenVersion?: number | undefined;
99
+ lastUsedAt?: number | undefined;
100
+ expiresAt?: number | undefined;
101
+ revokedAt?: number | undefined;
102
+ appKey: string;
103
+ provider: string;
104
+ status: "active" | "revoked" | "expired";
105
+ providerUserId: string;
106
+ appUserSubject: string;
107
+ createdAt: number;
108
+ updatedAt: number;
109
+ }, {
110
+ provider: import("convex/values").VString<string, "required">;
111
+ providerUserId: import("convex/values").VString<string, "required">;
112
+ appKey: import("convex/values").VString<string, "required">;
113
+ appUserSubject: import("convex/values").VString<string, "required">;
114
+ status: import("convex/values").VUnion<"active" | "revoked" | "expired", [import("convex/values").VLiteral<"active", "required">, import("convex/values").VLiteral<"revoked", "required">, import("convex/values").VLiteral<"expired", "required">], "required", never>;
115
+ createdAt: import("convex/values").VFloat64<number, "required">;
116
+ updatedAt: import("convex/values").VFloat64<number, "required">;
117
+ lastUsedAt: import("convex/values").VFloat64<number | undefined, "optional">;
118
+ expiresAt: import("convex/values").VFloat64<number | undefined, "optional">;
119
+ revokedAt: import("convex/values").VFloat64<number | undefined, "optional">;
120
+ metadata: import("convex/values").VAny<any, "optional", string>;
121
+ refreshTokenCiphertext: import("convex/values").VString<string | undefined, "optional">;
122
+ refreshTokenExpiresAt: import("convex/values").VFloat64<number | undefined, "optional">;
123
+ tokenVersion: import("convex/values").VFloat64<number | undefined, "optional">;
124
+ }, "required", "appKey" | "provider" | "status" | "providerUserId" | "appUserSubject" | "metadata" | "refreshTokenCiphertext" | "refreshTokenExpiresAt" | "tokenVersion" | "createdAt" | "updatedAt" | "lastUsedAt" | "expiresAt" | "revokedAt" | `metadata.${string}`>, {
125
+ by_provider_providerUserId_appKey: ["provider", "providerUserId", "appKey", "_creationTime"];
126
+ by_appKey_status: ["appKey", "status", "_creationTime"];
127
+ by_appUserSubject_appKey: ["appUserSubject", "appKey", "_creationTime"];
128
+ }, {}, {}>;
129
+ agentLinkRateLimits: import("convex/server").TableDefinition<import("convex/values").VObject<{
130
+ updatedAt: number;
131
+ key: string;
132
+ bucketStartMs: number;
133
+ requestCount: number;
134
+ }, {
135
+ key: import("convex/values").VString<string, "required">;
136
+ bucketStartMs: import("convex/values").VFloat64<number, "required">;
137
+ requestCount: import("convex/values").VFloat64<number, "required">;
138
+ updatedAt: import("convex/values").VFloat64<number, "required">;
139
+ }, "required", "updatedAt" | "key" | "bucketStartMs" | "requestCount">, {
140
+ by_key_bucketStartMs: ["key", "bucketStartMs", "_creationTime"];
141
+ }, {}, {}>;
82
142
  }, true>;
83
143
  export default _default;
84
144
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBAmDG"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBAwFG"}
@@ -35,12 +35,47 @@ export default defineSchema({
35
35
  args: v.any(),
36
36
  result: v.optional(v.any()),
37
37
  error: v.optional(v.string()),
38
+ errorCode: v.optional(v.string()),
38
39
  duration: v.number(),
40
+ linkedProvider: v.optional(v.string()),
41
+ providerUserIdHash: v.optional(v.string()),
42
+ appUserSubjectHash: v.optional(v.string()),
43
+ linkStatus: v.optional(v.string()),
44
+ rateLimited: v.optional(v.boolean()),
39
45
  timestamp: v.number(),
40
46
  })
41
47
  .index("by_agentId_and_timestamp", ["agentId", "timestamp"])
42
48
  .index("by_serviceId_and_timestamp", ["serviceId", "timestamp"])
43
49
  .index("by_functionKey", ["functionKey"])
44
50
  .index("by_timestamp", ["timestamp"]),
51
+ agentUserLinks: defineTable({
52
+ provider: v.string(),
53
+ providerUserId: v.string(),
54
+ appKey: v.string(),
55
+ appUserSubject: v.string(),
56
+ status: v.union(v.literal("active"), v.literal("revoked"), v.literal("expired")),
57
+ createdAt: v.number(),
58
+ updatedAt: v.number(),
59
+ lastUsedAt: v.optional(v.number()),
60
+ expiresAt: v.optional(v.number()),
61
+ revokedAt: v.optional(v.number()),
62
+ metadata: v.optional(v.any()),
63
+ refreshTokenCiphertext: v.optional(v.string()),
64
+ refreshTokenExpiresAt: v.optional(v.number()),
65
+ tokenVersion: v.optional(v.number()),
66
+ })
67
+ .index("by_provider_providerUserId_appKey", [
68
+ "provider",
69
+ "providerUserId",
70
+ "appKey",
71
+ ])
72
+ .index("by_appKey_status", ["appKey", "status"])
73
+ .index("by_appUserSubject_appKey", ["appUserSubject", "appKey"]),
74
+ agentLinkRateLimits: defineTable({
75
+ key: v.string(),
76
+ bucketStartMs: v.number(),
77
+ requestCount: v.number(),
78
+ updatedAt: v.number(),
79
+ }).index("by_key_bucketStartMs", ["key", "bucketStartMs"]),
45
80
  });
46
81
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,eAAe,YAAY,CAAC;IAC1B,MAAM,EAAE,WAAW,CAAC;QAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;SACC,KAAK,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC,CAAC;SACtC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC;SAC9B,KAAK,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC;IAEnC,gBAAgB,EAAE,WAAW,CAAC;QAC5B,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;QACvB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;QAC3B,UAAU,EAAE,CAAC,CAAC,KAAK,CACjB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAClB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EACjB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAC1B;QACD,eAAe,EAAE,CAAC,CAAC,QAAQ,CACzB,CAAC,CAAC,MAAM,CAAC;YACP,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;YAC3B,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACpC,CAAC,CACH;QACD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC;IAEnC,cAAc,EAAE,WAAW,CAAC;QAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACxC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;IAE3B,SAAS,EAAE,WAAW,CAAC;QACrB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;QACvB,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3B,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;SACC,KAAK,CAAC,0BAA0B,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SAC3D,KAAK,CAAC,4BAA4B,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;SAC/D,KAAK,CAAC,gBAAgB,EAAE,CAAC,aAAa,CAAC,CAAC;SACxC,KAAK,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,CAAC;CACxC,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "bugs": {
10
10
  "url": "https://github.com/okrlinkhub/agent-bridge/issues"
11
11
  },
12
- "version": "3.0.1",
12
+ "version": "3.0.2",
13
13
  "license": "Apache-2.0",
14
14
  "keywords": [
15
15
  "convex",