@okrlinkhub/agent-bridge 0.1.0 → 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/index.d.ts +89 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +279 -4
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +4 -0
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/api.js.map +1 -1
- package/dist/component/_generated/component.d.ts +103 -0
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/channels.d.ts +83 -0
- package/dist/component/channels.d.ts.map +1 -0
- package/dist/component/channels.js +288 -0
- package/dist/component/channels.js.map +1 -0
- package/dist/component/circuitBreaker.d.ts +73 -0
- package/dist/component/circuitBreaker.d.ts.map +1 -0
- package/dist/component/circuitBreaker.js +216 -0
- package/dist/component/circuitBreaker.js.map +1 -0
- package/dist/component/gateway.d.ts +19 -3
- package/dist/component/gateway.d.ts.map +1 -1
- package/dist/component/gateway.js +82 -2
- package/dist/component/gateway.js.map +1 -1
- package/dist/component/permissions.d.ts +2 -2
- package/dist/component/registry.d.ts +3 -3
- package/dist/component/schema.d.ts +73 -3
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +46 -0
- package/dist/component/schema.js.map +1 -1
- package/package.json +5 -2
- package/src/client/index.ts +411 -4
- package/src/component/_generated/api.ts +4 -0
- package/src/component/_generated/component.ts +142 -1
- package/src/component/channels.ts +374 -0
- package/src/component/circuitBreaker.ts +250 -0
- package/src/component/gateway.ts +98 -2
- package/src/component/schema.ts +49 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/component/_generated/component.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,IAC3E;IACE,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/component/_generated/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a channel for an app.
|
|
3
|
+
* Idempotent: if the channel already exists, returns the existing ID.
|
|
4
|
+
*/
|
|
5
|
+
export declare const createChannel: import("convex/server").RegisteredMutation<"public", {
|
|
6
|
+
description?: string | undefined;
|
|
7
|
+
appName: string;
|
|
8
|
+
channelName: string;
|
|
9
|
+
}, Promise<import("convex/values").GenericId<"appChannels">>>;
|
|
10
|
+
/**
|
|
11
|
+
* List active channels for an app.
|
|
12
|
+
*/
|
|
13
|
+
export declare const listChannels: import("convex/server").RegisteredQuery<"public", {
|
|
14
|
+
appName: string;
|
|
15
|
+
}, Promise<{
|
|
16
|
+
channelName: string;
|
|
17
|
+
description: string | undefined;
|
|
18
|
+
createdAt: number;
|
|
19
|
+
isActive: boolean;
|
|
20
|
+
}[]>>;
|
|
21
|
+
/**
|
|
22
|
+
* Deactivate a channel (soft delete).
|
|
23
|
+
*/
|
|
24
|
+
export declare const deactivateChannel: import("convex/server").RegisteredMutation<"public", {
|
|
25
|
+
appName: string;
|
|
26
|
+
channelName: string;
|
|
27
|
+
}, Promise<boolean>>;
|
|
28
|
+
/**
|
|
29
|
+
* Post a message to a channel.
|
|
30
|
+
* Requires a valid instanceToken for authentication.
|
|
31
|
+
*/
|
|
32
|
+
export declare const postMessage: import("convex/server").RegisteredMutation<"public", {
|
|
33
|
+
priority?: number | undefined;
|
|
34
|
+
ttlMinutes?: number | undefined;
|
|
35
|
+
appName: string;
|
|
36
|
+
channelName: string;
|
|
37
|
+
instanceToken: string;
|
|
38
|
+
payload: string;
|
|
39
|
+
}, Promise<{
|
|
40
|
+
success: boolean;
|
|
41
|
+
messageId: `${string}-${string}-${string}-${string}-${string}`;
|
|
42
|
+
}>>;
|
|
43
|
+
/**
|
|
44
|
+
* Read messages from a channel with cursor-based pagination.
|
|
45
|
+
* Filters out expired messages. Returns messages in descending order (newest first).
|
|
46
|
+
*/
|
|
47
|
+
export declare const readMessages: import("convex/server").RegisteredQuery<"public", {
|
|
48
|
+
after?: number | undefined;
|
|
49
|
+
limit?: number | undefined;
|
|
50
|
+
appName: string;
|
|
51
|
+
channelName: string;
|
|
52
|
+
instanceToken: string;
|
|
53
|
+
}, Promise<{
|
|
54
|
+
messageId: string;
|
|
55
|
+
fromAgentId: string;
|
|
56
|
+
payload: string;
|
|
57
|
+
metadata: {
|
|
58
|
+
priority: number;
|
|
59
|
+
ttl: number;
|
|
60
|
+
};
|
|
61
|
+
sentAt: number;
|
|
62
|
+
expiresAt: number;
|
|
63
|
+
readBy: string[];
|
|
64
|
+
}[]>>;
|
|
65
|
+
/**
|
|
66
|
+
* Mark a message as read by an agent.
|
|
67
|
+
* Adds the agentId to the readBy array if not already present.
|
|
68
|
+
*/
|
|
69
|
+
export declare const markAsRead: import("convex/server").RegisteredMutation<"public", {
|
|
70
|
+
appName: string;
|
|
71
|
+
instanceToken: string;
|
|
72
|
+
messageId: string;
|
|
73
|
+
}, Promise<boolean>>;
|
|
74
|
+
/**
|
|
75
|
+
* Get count of unread messages for an agent on a channel.
|
|
76
|
+
* Only counts non-expired messages.
|
|
77
|
+
*/
|
|
78
|
+
export declare const getUnreadCount: import("convex/server").RegisteredQuery<"public", {
|
|
79
|
+
appName: string;
|
|
80
|
+
channelName: string;
|
|
81
|
+
instanceToken: string;
|
|
82
|
+
}, Promise<number>>;
|
|
83
|
+
//# sourceMappingURL=channels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/component/channels.ts"],"names":[],"mappings":"AA6DA;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;6DA8BxB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;KA6BvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;oBAqB5B,CAAC;AAIH;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;GAwDtB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;KAkEvB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;oBAuCrB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;mBA+BzB,CAAC"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { v } from "convex/values";
|
|
2
|
+
import { mutation, query } from "./_generated/server.js";
|
|
3
|
+
// --- Token hashing utility (shared with gateway.ts) ---
|
|
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
|
+
// --- Instance verification helper ---
|
|
13
|
+
/**
|
|
14
|
+
* Verify an instance token and return the agent info.
|
|
15
|
+
* Throws if the token is invalid, expired, or doesn't match the expected app.
|
|
16
|
+
*/
|
|
17
|
+
async function verifyInstanceToken(ctx, instanceToken, appName) {
|
|
18
|
+
const tokenHash = await hashToken(instanceToken);
|
|
19
|
+
const instance = await ctx.db
|
|
20
|
+
.query("agentAppInstances")
|
|
21
|
+
.withIndex("by_instance_token_hash", (q) => q.eq("instanceTokenHash", tokenHash))
|
|
22
|
+
.unique();
|
|
23
|
+
if (!instance) {
|
|
24
|
+
throw new Error("Invalid instance token");
|
|
25
|
+
}
|
|
26
|
+
if (instance.expiresAt < Date.now()) {
|
|
27
|
+
throw new Error("Instance token has expired");
|
|
28
|
+
}
|
|
29
|
+
if (instance.appName !== appName) {
|
|
30
|
+
throw new Error("Token does not match this app");
|
|
31
|
+
}
|
|
32
|
+
// Verify agent is active
|
|
33
|
+
const agent = await ctx.db
|
|
34
|
+
.query("registeredAgents")
|
|
35
|
+
.withIndex("by_agent_id", (q) => q.eq("agentId", instance.agentId))
|
|
36
|
+
.unique();
|
|
37
|
+
if (!agent || !agent.isActive) {
|
|
38
|
+
throw new Error("Agent has been revoked");
|
|
39
|
+
}
|
|
40
|
+
return { agentId: instance.agentId, appName: instance.appName };
|
|
41
|
+
}
|
|
42
|
+
// --- Channel Management ---
|
|
43
|
+
/**
|
|
44
|
+
* Create a channel for an app.
|
|
45
|
+
* Idempotent: if the channel already exists, returns the existing ID.
|
|
46
|
+
*/
|
|
47
|
+
export const createChannel = mutation({
|
|
48
|
+
args: {
|
|
49
|
+
appName: v.string(),
|
|
50
|
+
channelName: v.string(),
|
|
51
|
+
description: v.optional(v.string()),
|
|
52
|
+
},
|
|
53
|
+
returns: v.string(),
|
|
54
|
+
handler: async (ctx, args) => {
|
|
55
|
+
// Check if channel already exists
|
|
56
|
+
const existing = await ctx.db
|
|
57
|
+
.query("appChannels")
|
|
58
|
+
.withIndex("by_appName_and_channelName", (q) => q.eq("appName", args.appName).eq("channelName", args.channelName))
|
|
59
|
+
.unique();
|
|
60
|
+
if (existing) {
|
|
61
|
+
return existing._id;
|
|
62
|
+
}
|
|
63
|
+
const id = await ctx.db.insert("appChannels", {
|
|
64
|
+
appName: args.appName,
|
|
65
|
+
channelName: args.channelName,
|
|
66
|
+
description: args.description,
|
|
67
|
+
createdAt: Date.now(),
|
|
68
|
+
isActive: true,
|
|
69
|
+
});
|
|
70
|
+
return id;
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* List active channels for an app.
|
|
75
|
+
*/
|
|
76
|
+
export const listChannels = query({
|
|
77
|
+
args: {
|
|
78
|
+
appName: v.string(),
|
|
79
|
+
},
|
|
80
|
+
returns: v.array(v.object({
|
|
81
|
+
channelName: v.string(),
|
|
82
|
+
description: v.optional(v.string()),
|
|
83
|
+
createdAt: v.number(),
|
|
84
|
+
isActive: v.boolean(),
|
|
85
|
+
})),
|
|
86
|
+
handler: async (ctx, args) => {
|
|
87
|
+
const channels = await ctx.db
|
|
88
|
+
.query("appChannels")
|
|
89
|
+
.withIndex("by_appName_and_channelName", (q) => q.eq("appName", args.appName))
|
|
90
|
+
.collect();
|
|
91
|
+
return channels
|
|
92
|
+
.filter((c) => c.isActive)
|
|
93
|
+
.map((c) => ({
|
|
94
|
+
channelName: c.channelName,
|
|
95
|
+
description: c.description,
|
|
96
|
+
createdAt: c.createdAt,
|
|
97
|
+
isActive: c.isActive,
|
|
98
|
+
}));
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
/**
|
|
102
|
+
* Deactivate a channel (soft delete).
|
|
103
|
+
*/
|
|
104
|
+
export const deactivateChannel = mutation({
|
|
105
|
+
args: {
|
|
106
|
+
appName: v.string(),
|
|
107
|
+
channelName: v.string(),
|
|
108
|
+
},
|
|
109
|
+
returns: v.boolean(),
|
|
110
|
+
handler: async (ctx, args) => {
|
|
111
|
+
const channel = await ctx.db
|
|
112
|
+
.query("appChannels")
|
|
113
|
+
.withIndex("by_appName_and_channelName", (q) => q.eq("appName", args.appName).eq("channelName", args.channelName))
|
|
114
|
+
.unique();
|
|
115
|
+
if (!channel) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
await ctx.db.patch(channel._id, { isActive: false });
|
|
119
|
+
return true;
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
// --- Message Operations ---
|
|
123
|
+
/**
|
|
124
|
+
* Post a message to a channel.
|
|
125
|
+
* Requires a valid instanceToken for authentication.
|
|
126
|
+
*/
|
|
127
|
+
export const postMessage = mutation({
|
|
128
|
+
args: {
|
|
129
|
+
instanceToken: v.string(),
|
|
130
|
+
appName: v.string(),
|
|
131
|
+
channelName: v.string(),
|
|
132
|
+
payload: v.string(),
|
|
133
|
+
priority: v.optional(v.number()),
|
|
134
|
+
ttlMinutes: v.optional(v.number()),
|
|
135
|
+
},
|
|
136
|
+
returns: v.object({
|
|
137
|
+
success: v.boolean(),
|
|
138
|
+
messageId: v.string(),
|
|
139
|
+
}),
|
|
140
|
+
handler: async (ctx, args) => {
|
|
141
|
+
// Verify the agent's identity
|
|
142
|
+
const verified = await verifyInstanceToken(ctx, args.instanceToken, args.appName);
|
|
143
|
+
// Verify channel exists and is active
|
|
144
|
+
const channel = await ctx.db
|
|
145
|
+
.query("appChannels")
|
|
146
|
+
.withIndex("by_appName_and_channelName", (q) => q.eq("appName", args.appName).eq("channelName", args.channelName))
|
|
147
|
+
.unique();
|
|
148
|
+
if (!channel || !channel.isActive) {
|
|
149
|
+
throw new Error(`Channel "${args.channelName}" not found or inactive in app "${args.appName}"`);
|
|
150
|
+
}
|
|
151
|
+
const ttlMs = (args.ttlMinutes ?? 60) * 60 * 1000;
|
|
152
|
+
const messageId = crypto.randomUUID();
|
|
153
|
+
const now = Date.now();
|
|
154
|
+
await ctx.db.insert("channelMessages", {
|
|
155
|
+
appName: args.appName,
|
|
156
|
+
channelName: args.channelName,
|
|
157
|
+
messageId,
|
|
158
|
+
fromAgentId: verified.agentId,
|
|
159
|
+
payload: args.payload,
|
|
160
|
+
metadata: {
|
|
161
|
+
priority: args.priority ?? 5,
|
|
162
|
+
ttl: ttlMs,
|
|
163
|
+
},
|
|
164
|
+
sentAt: now,
|
|
165
|
+
expiresAt: now + ttlMs,
|
|
166
|
+
readBy: [],
|
|
167
|
+
});
|
|
168
|
+
return { success: true, messageId };
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
/**
|
|
172
|
+
* Read messages from a channel with cursor-based pagination.
|
|
173
|
+
* Filters out expired messages. Returns messages in descending order (newest first).
|
|
174
|
+
*/
|
|
175
|
+
export const readMessages = query({
|
|
176
|
+
args: {
|
|
177
|
+
instanceToken: v.string(),
|
|
178
|
+
appName: v.string(),
|
|
179
|
+
channelName: v.string(),
|
|
180
|
+
limit: v.optional(v.number()),
|
|
181
|
+
after: v.optional(v.number()),
|
|
182
|
+
},
|
|
183
|
+
returns: v.array(v.object({
|
|
184
|
+
messageId: v.string(),
|
|
185
|
+
fromAgentId: v.string(),
|
|
186
|
+
payload: v.string(),
|
|
187
|
+
metadata: v.object({
|
|
188
|
+
priority: v.number(),
|
|
189
|
+
ttl: v.number(),
|
|
190
|
+
}),
|
|
191
|
+
sentAt: v.number(),
|
|
192
|
+
expiresAt: v.number(),
|
|
193
|
+
readBy: v.array(v.string()),
|
|
194
|
+
})),
|
|
195
|
+
handler: async (ctx, args) => {
|
|
196
|
+
// Verify the agent's identity
|
|
197
|
+
await verifyInstanceToken(ctx, args.instanceToken, args.appName);
|
|
198
|
+
const now = Date.now();
|
|
199
|
+
const limit = args.limit ?? 20;
|
|
200
|
+
let messagesQuery;
|
|
201
|
+
if (args.after !== undefined) {
|
|
202
|
+
messagesQuery = ctx.db
|
|
203
|
+
.query("channelMessages")
|
|
204
|
+
.withIndex("by_appName_and_channelName_and_sentAt", (q) => q
|
|
205
|
+
.eq("appName", args.appName)
|
|
206
|
+
.eq("channelName", args.channelName)
|
|
207
|
+
.gt("sentAt", args.after));
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
messagesQuery = ctx.db
|
|
211
|
+
.query("channelMessages")
|
|
212
|
+
.withIndex("by_appName_and_channelName_and_sentAt", (q) => q
|
|
213
|
+
.eq("appName", args.appName)
|
|
214
|
+
.eq("channelName", args.channelName));
|
|
215
|
+
}
|
|
216
|
+
const messages = await messagesQuery.order("desc").take(limit * 2);
|
|
217
|
+
// Filter out expired messages and take the requested limit
|
|
218
|
+
const validMessages = messages
|
|
219
|
+
.filter((m) => m.expiresAt > now)
|
|
220
|
+
.slice(0, limit);
|
|
221
|
+
return validMessages.map((m) => ({
|
|
222
|
+
messageId: m.messageId,
|
|
223
|
+
fromAgentId: m.fromAgentId,
|
|
224
|
+
payload: m.payload,
|
|
225
|
+
metadata: m.metadata,
|
|
226
|
+
sentAt: m.sentAt,
|
|
227
|
+
expiresAt: m.expiresAt,
|
|
228
|
+
readBy: m.readBy,
|
|
229
|
+
}));
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
/**
|
|
233
|
+
* Mark a message as read by an agent.
|
|
234
|
+
* Adds the agentId to the readBy array if not already present.
|
|
235
|
+
*/
|
|
236
|
+
export const markAsRead = mutation({
|
|
237
|
+
args: {
|
|
238
|
+
instanceToken: v.string(),
|
|
239
|
+
appName: v.string(),
|
|
240
|
+
messageId: v.string(),
|
|
241
|
+
},
|
|
242
|
+
returns: v.boolean(),
|
|
243
|
+
handler: async (ctx, args) => {
|
|
244
|
+
const verified = await verifyInstanceToken(ctx, args.instanceToken, args.appName);
|
|
245
|
+
// Find the message by messageId
|
|
246
|
+
const messages = await ctx.db
|
|
247
|
+
.query("channelMessages")
|
|
248
|
+
.withIndex("by_appName_and_channelName_and_sentAt", (q) => q.eq("appName", args.appName))
|
|
249
|
+
.collect();
|
|
250
|
+
const message = messages.find((m) => m.messageId === args.messageId);
|
|
251
|
+
if (!message) {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
if (message.readBy.includes(verified.agentId)) {
|
|
255
|
+
// Already marked as read
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
await ctx.db.patch(message._id, {
|
|
259
|
+
readBy: [...message.readBy, verified.agentId],
|
|
260
|
+
});
|
|
261
|
+
return true;
|
|
262
|
+
},
|
|
263
|
+
});
|
|
264
|
+
/**
|
|
265
|
+
* Get count of unread messages for an agent on a channel.
|
|
266
|
+
* Only counts non-expired messages.
|
|
267
|
+
*/
|
|
268
|
+
export const getUnreadCount = query({
|
|
269
|
+
args: {
|
|
270
|
+
instanceToken: v.string(),
|
|
271
|
+
appName: v.string(),
|
|
272
|
+
channelName: v.string(),
|
|
273
|
+
},
|
|
274
|
+
returns: v.number(),
|
|
275
|
+
handler: async (ctx, args) => {
|
|
276
|
+
const verified = await verifyInstanceToken(ctx, args.instanceToken, args.appName);
|
|
277
|
+
const now = Date.now();
|
|
278
|
+
const messages = await ctx.db
|
|
279
|
+
.query("channelMessages")
|
|
280
|
+
.withIndex("by_appName_and_channelName_and_sentAt", (q) => q
|
|
281
|
+
.eq("appName", args.appName)
|
|
282
|
+
.eq("channelName", args.channelName))
|
|
283
|
+
.collect();
|
|
284
|
+
const unread = messages.filter((m) => m.expiresAt > now && !m.readBy.includes(verified.agentId));
|
|
285
|
+
return unread.length;
|
|
286
|
+
},
|
|
287
|
+
});
|
|
288
|
+
//# sourceMappingURL=channels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/component/channels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate seconds remaining until the current hour window expires.
|
|
3
|
+
*/
|
|
4
|
+
export declare function secondsUntilWindowExpires(): number;
|
|
5
|
+
/**
|
|
6
|
+
* Check the circuit breaker and increment counters if allowed.
|
|
7
|
+
* This is designed to be called from within the gateway's authorizeRequest
|
|
8
|
+
* mutation, but is also exposed for direct use.
|
|
9
|
+
*
|
|
10
|
+
* Looks up or creates the counter for the current hour window, checks
|
|
11
|
+
* if the agent is already blocked, then increments request count and
|
|
12
|
+
* token estimate. If limits are exceeded, blocks the agent for the
|
|
13
|
+
* remainder of the hour window.
|
|
14
|
+
*/
|
|
15
|
+
export declare const checkAndIncrement: import("convex/server").RegisteredMutation<"public", {
|
|
16
|
+
appName: string;
|
|
17
|
+
agentId: string;
|
|
18
|
+
estimatedCost: number;
|
|
19
|
+
limits: {
|
|
20
|
+
requestsPerHour: number;
|
|
21
|
+
tokenBudget: number;
|
|
22
|
+
};
|
|
23
|
+
}, Promise<{
|
|
24
|
+
allowed: boolean;
|
|
25
|
+
reason: string;
|
|
26
|
+
currentCount: number;
|
|
27
|
+
currentTokens: number;
|
|
28
|
+
} | {
|
|
29
|
+
allowed: boolean;
|
|
30
|
+
currentCount: number;
|
|
31
|
+
currentTokens: number;
|
|
32
|
+
reason?: undefined;
|
|
33
|
+
}>>;
|
|
34
|
+
/**
|
|
35
|
+
* Get the current circuit breaker status for an agent on an app.
|
|
36
|
+
* Returns the counter for the current hour window.
|
|
37
|
+
*/
|
|
38
|
+
export declare const getStatus: import("convex/server").RegisteredQuery<"public", {
|
|
39
|
+
appName: string;
|
|
40
|
+
agentId: string;
|
|
41
|
+
}, Promise<{
|
|
42
|
+
agentId: string;
|
|
43
|
+
appName: string;
|
|
44
|
+
windowHour: string;
|
|
45
|
+
requestCount: number;
|
|
46
|
+
tokenEstimate: number;
|
|
47
|
+
isBlocked: boolean;
|
|
48
|
+
blockedReason: string | undefined;
|
|
49
|
+
blockedAt: number | undefined;
|
|
50
|
+
} | null>>;
|
|
51
|
+
/**
|
|
52
|
+
* Admin function to manually reset a blocked circuit breaker.
|
|
53
|
+
* Creates a fresh counter for the current window with zeroed values.
|
|
54
|
+
*/
|
|
55
|
+
export declare const resetCounter: import("convex/server").RegisteredMutation<"public", {
|
|
56
|
+
appName: string;
|
|
57
|
+
agentId: string;
|
|
58
|
+
}, Promise<boolean>>;
|
|
59
|
+
/**
|
|
60
|
+
* List all currently blocked circuit breakers.
|
|
61
|
+
* Useful for admin dashboards.
|
|
62
|
+
*/
|
|
63
|
+
export declare const listBlocked: import("convex/server").RegisteredQuery<"public", {}, Promise<{
|
|
64
|
+
agentId: string;
|
|
65
|
+
appName: string;
|
|
66
|
+
windowHour: string;
|
|
67
|
+
requestCount: number;
|
|
68
|
+
tokenEstimate: number;
|
|
69
|
+
isBlocked: boolean;
|
|
70
|
+
blockedReason: string | undefined;
|
|
71
|
+
blockedAt: number | undefined;
|
|
72
|
+
}[]>>;
|
|
73
|
+
//# sourceMappingURL=circuitBreaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuitBreaker.d.ts","sourceRoot":"","sources":["../../src/component/circuitBreaker.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAMlD;AAwBD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;GAyF5B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;UAkCpB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,YAAY;;;oBAiCvB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;;KAoBtB,CAAC"}
|