@nordsym/apiclaw 1.7.10 → 1.7.12

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.
Files changed (152) hide show
  1. package/convex/adminActivate.d.ts +3 -0
  2. package/convex/adminActivate.d.ts.map +1 -0
  3. package/convex/adminActivate.js +47 -0
  4. package/convex/adminActivate.js.map +1 -0
  5. package/convex/adminStats.d.ts +4 -0
  6. package/convex/adminStats.d.ts.map +1 -0
  7. package/convex/adminStats.js +101 -0
  8. package/convex/adminStats.js.map +1 -0
  9. package/convex/agents.d.ts +76 -0
  10. package/convex/agents.d.ts.map +1 -0
  11. package/convex/agents.js +699 -0
  12. package/convex/agents.js.map +1 -0
  13. package/convex/analytics.d.ts +5 -0
  14. package/convex/analytics.d.ts.map +1 -0
  15. package/convex/analytics.js +166 -0
  16. package/convex/analytics.js.map +1 -0
  17. package/convex/billing.d.ts +88 -0
  18. package/convex/billing.d.ts.map +1 -0
  19. package/convex/billing.js +655 -0
  20. package/convex/billing.js.map +1 -0
  21. package/convex/capabilities.d.ts +9 -0
  22. package/convex/capabilities.d.ts.map +1 -0
  23. package/convex/capabilities.js +145 -0
  24. package/convex/capabilities.js.map +1 -0
  25. package/convex/chains.d.ts +68 -0
  26. package/convex/chains.d.ts.map +1 -0
  27. package/convex/chains.js +1105 -0
  28. package/convex/chains.js.map +1 -0
  29. package/convex/credits.d.ts +25 -0
  30. package/convex/credits.d.ts.map +1 -0
  31. package/convex/credits.js +186 -0
  32. package/convex/credits.js.map +1 -0
  33. package/convex/crons.d.ts +3 -0
  34. package/convex/crons.d.ts.map +1 -0
  35. package/convex/crons.js +17 -0
  36. package/convex/crons.js.map +1 -0
  37. package/convex/directCall.d.ts +72 -0
  38. package/convex/directCall.d.ts.map +1 -0
  39. package/convex/directCall.js +627 -0
  40. package/convex/directCall.js.map +1 -0
  41. package/convex/earnProgress.d.ts +58 -0
  42. package/convex/earnProgress.d.ts.map +1 -0
  43. package/convex/earnProgress.js +649 -0
  44. package/convex/earnProgress.js.map +1 -0
  45. package/convex/email.d.ts +14 -0
  46. package/convex/email.d.ts.map +1 -0
  47. package/convex/email.js +300 -0
  48. package/convex/email.js.map +1 -0
  49. package/convex/feedback.d.ts +7 -0
  50. package/convex/feedback.d.ts.map +1 -0
  51. package/convex/feedback.js +227 -0
  52. package/convex/feedback.js.map +1 -0
  53. package/convex/http.d.ts +3 -0
  54. package/convex/http.d.ts.map +1 -0
  55. package/convex/http.js +1405 -0
  56. package/convex/http.js.map +1 -0
  57. package/convex/inbound.d.ts +2 -0
  58. package/convex/inbound.d.ts.map +1 -0
  59. package/convex/inbound.js +32 -0
  60. package/convex/inbound.js.map +1 -0
  61. package/convex/logs.d.ts +48 -0
  62. package/convex/logs.d.ts.map +1 -0
  63. package/convex/logs.js +605 -0
  64. package/convex/logs.js.map +1 -0
  65. package/convex/mou.d.ts +6 -0
  66. package/convex/mou.d.ts.map +1 -0
  67. package/convex/mou.js +82 -0
  68. package/convex/mou.js.map +1 -0
  69. package/convex/providerKeys.d.ts +31 -0
  70. package/convex/providerKeys.d.ts.map +1 -0
  71. package/convex/providerKeys.js +257 -0
  72. package/convex/providerKeys.js.map +1 -0
  73. package/convex/providers.d.ts +33 -0
  74. package/convex/providers.d.ts.map +1 -0
  75. package/convex/providers.js +846 -0
  76. package/convex/providers.js.map +1 -0
  77. package/convex/providers.ts +10 -14
  78. package/convex/purchases.d.ts +7 -0
  79. package/convex/purchases.d.ts.map +1 -0
  80. package/convex/purchases.js +157 -0
  81. package/convex/purchases.js.map +1 -0
  82. package/convex/ratelimit.d.ts +4 -0
  83. package/convex/ratelimit.d.ts.map +1 -0
  84. package/convex/ratelimit.js +91 -0
  85. package/convex/ratelimit.js.map +1 -0
  86. package/convex/searchLogs.d.ts +4 -0
  87. package/convex/searchLogs.d.ts.map +1 -0
  88. package/convex/searchLogs.js +129 -0
  89. package/convex/searchLogs.js.map +1 -0
  90. package/convex/seedAPILayerAPIs.d.ts +7 -0
  91. package/convex/seedAPILayerAPIs.d.ts.map +1 -0
  92. package/convex/seedAPILayerAPIs.js +177 -0
  93. package/convex/seedAPILayerAPIs.js.map +1 -0
  94. package/convex/seedDirectCallConfigs.d.ts +2 -0
  95. package/convex/seedDirectCallConfigs.d.ts.map +1 -0
  96. package/convex/seedDirectCallConfigs.js +324 -0
  97. package/convex/seedDirectCallConfigs.js.map +1 -0
  98. package/convex/seedPratham.d.ts +6 -0
  99. package/convex/seedPratham.d.ts.map +1 -0
  100. package/convex/seedPratham.js +150 -0
  101. package/convex/seedPratham.js.map +1 -0
  102. package/convex/spendAlerts.d.ts +36 -0
  103. package/convex/spendAlerts.d.ts.map +1 -0
  104. package/convex/spendAlerts.js +380 -0
  105. package/convex/spendAlerts.js.map +1 -0
  106. package/convex/stripeActions.d.ts +19 -0
  107. package/convex/stripeActions.d.ts.map +1 -0
  108. package/convex/stripeActions.js +411 -0
  109. package/convex/stripeActions.js.map +1 -0
  110. package/convex/teams.d.ts +21 -0
  111. package/convex/teams.d.ts.map +1 -0
  112. package/convex/teams.js +215 -0
  113. package/convex/teams.js.map +1 -0
  114. package/convex/telemetry.d.ts +4 -0
  115. package/convex/telemetry.d.ts.map +1 -0
  116. package/convex/telemetry.js +74 -0
  117. package/convex/telemetry.js.map +1 -0
  118. package/convex/updateAPIStatus.d.ts +6 -0
  119. package/convex/updateAPIStatus.d.ts.map +1 -0
  120. package/convex/updateAPIStatus.js +40 -0
  121. package/convex/updateAPIStatus.js.map +1 -0
  122. package/convex/usage.d.ts +27 -0
  123. package/convex/usage.d.ts.map +1 -0
  124. package/convex/usage.js +229 -0
  125. package/convex/usage.js.map +1 -0
  126. package/convex/waitlist.d.ts +4 -0
  127. package/convex/waitlist.d.ts.map +1 -0
  128. package/convex/waitlist.js +49 -0
  129. package/convex/waitlist.js.map +1 -0
  130. package/convex/webhooks.d.ts +12 -0
  131. package/convex/webhooks.d.ts.map +1 -0
  132. package/convex/webhooks.js +410 -0
  133. package/convex/webhooks.js.map +1 -0
  134. package/convex/workspaces.d.ts +31 -0
  135. package/convex/workspaces.d.ts.map +1 -0
  136. package/convex/workspaces.js +975 -0
  137. package/convex/workspaces.js.map +1 -0
  138. package/dist/capability-router.js +1 -1
  139. package/dist/capability-router.js.map +1 -1
  140. package/dist/cli.js +1 -1
  141. package/dist/cli.js.map +1 -1
  142. package/dist/hivr-whitelist.js +1 -1
  143. package/dist/hivr-whitelist.js.map +1 -1
  144. package/dist/index.js +61 -25
  145. package/dist/index.js.map +1 -1
  146. package/dist/product-whitelist.js +1 -1
  147. package/dist/product-whitelist.js.map +1 -1
  148. package/dist/proxy.js +1 -1
  149. package/dist/proxy.js.map +1 -1
  150. package/dist/telemetry.js +1 -1
  151. package/dist/telemetry.js.map +1 -1
  152. package/package.json +1 -1
package/convex/logs.js ADDED
@@ -0,0 +1,605 @@
1
+ import { v } from "convex/values";
2
+ import { mutation, query } from "./_generated/server";
3
+ // ============================================
4
+ // MUTATIONS
5
+ // ============================================
6
+ /**
7
+ * Create a log entry for an API call
8
+ * Called after each Direct Call execution
9
+ */
10
+ export const createLog = mutation({
11
+ args: {
12
+ token: v.string(),
13
+ provider: v.string(),
14
+ action: v.string(),
15
+ status: v.union(v.literal("success"), v.literal("error")),
16
+ latencyMs: v.number(),
17
+ errorMessage: v.optional(v.string()),
18
+ subagentId: v.optional(v.string()), // from X-APIClaw-Subagent header
19
+ },
20
+ handler: async (ctx, args) => {
21
+ // Verify session and get workspace
22
+ const session = await ctx.db
23
+ .query("agentSessions")
24
+ .withIndex("by_sessionToken", (q) => q.eq("sessionToken", args.token))
25
+ .first();
26
+ if (!session) {
27
+ throw new Error("Invalid session token");
28
+ }
29
+ // Create log entry
30
+ return await ctx.db.insert("apiLogs", {
31
+ workspaceId: session.workspaceId,
32
+ sessionToken: args.token,
33
+ subagentId: args.subagentId,
34
+ provider: args.provider,
35
+ action: args.action,
36
+ status: args.status,
37
+ latencyMs: args.latencyMs,
38
+ errorMessage: args.errorMessage,
39
+ createdAt: Date.now(),
40
+ });
41
+ },
42
+ });
43
+ /**
44
+ * Internal log creation (when workspaceId is already known)
45
+ * Used by execute functions that have already verified the session
46
+ */
47
+ export const createLogInternal = mutation({
48
+ args: {
49
+ workspaceId: v.id("workspaces"),
50
+ sessionToken: v.string(),
51
+ provider: v.string(),
52
+ action: v.string(),
53
+ status: v.union(v.literal("success"), v.literal("error")),
54
+ latencyMs: v.number(),
55
+ errorMessage: v.optional(v.string()),
56
+ subagentId: v.optional(v.string()), // from X-APIClaw-Subagent header
57
+ },
58
+ handler: async (ctx, args) => {
59
+ return await ctx.db.insert("apiLogs", {
60
+ workspaceId: args.workspaceId,
61
+ sessionToken: args.sessionToken,
62
+ subagentId: args.subagentId,
63
+ provider: args.provider,
64
+ action: args.action,
65
+ status: args.status,
66
+ latencyMs: args.latencyMs,
67
+ errorMessage: args.errorMessage,
68
+ createdAt: Date.now(),
69
+ });
70
+ },
71
+ });
72
+ /**
73
+ * Log an inbound call to a provider's workspace
74
+ * Called when someone uses an API that belongs to another workspace
75
+ */
76
+ export const logProviderCall = mutation({
77
+ args: {
78
+ provider: v.string(),
79
+ action: v.string(),
80
+ status: v.union(v.literal("success"), v.literal("error")),
81
+ latencyMs: v.number(),
82
+ callerWorkspaceId: v.string(),
83
+ subagentId: v.optional(v.string()),
84
+ errorMessage: v.optional(v.string()),
85
+ },
86
+ handler: async (ctx, args) => {
87
+ // Map provider to workspace email
88
+ const providerEmailMap = {
89
+ apilayer: "gustav_hemmingsson@hotmail.com",
90
+ };
91
+ const providerEmail = providerEmailMap[args.provider];
92
+ if (!providerEmail)
93
+ return null; // no workspace for this provider
94
+ const workspace = await ctx.db
95
+ .query("workspaces")
96
+ .withIndex("by_email", (q) => q.eq("email", providerEmail))
97
+ .first();
98
+ if (!workspace)
99
+ return null;
100
+ return await ctx.db.insert("apiLogs", {
101
+ workspaceId: workspace._id,
102
+ sessionToken: "",
103
+ provider: args.provider,
104
+ action: args.action,
105
+ status: args.status,
106
+ latencyMs: args.latencyMs,
107
+ direction: "inbound",
108
+ callerWorkspaceId: args.callerWorkspaceId,
109
+ subagentId: args.subagentId,
110
+ errorMessage: args.errorMessage,
111
+ createdAt: Date.now(),
112
+ });
113
+ },
114
+ });
115
+ /**
116
+ * Get analytics for a provider workspace (inbound calls to their APIs)
117
+ * Used by API Analytics tab in workspace dashboard
118
+ */
119
+ export const getProviderAnalytics = query({
120
+ args: {
121
+ token: v.string(),
122
+ hoursBack: v.optional(v.number()),
123
+ },
124
+ handler: async (ctx, { token, hoursBack = 168 }) => {
125
+ const session = await ctx.db
126
+ .query("agentSessions")
127
+ .withIndex("by_sessionToken", (q) => q.eq("sessionToken", token))
128
+ .first();
129
+ if (!session)
130
+ return null;
131
+ const since = Date.now() - hoursBack * 60 * 60 * 1000;
132
+ // Get all logs for this workspace
133
+ const allLogs = await ctx.db
134
+ .query("apiLogs")
135
+ .withIndex("by_workspaceId", (q) => q.eq("workspaceId", session.workspaceId))
136
+ .collect();
137
+ const periodLogs = allLogs.filter((l) => l.createdAt >= since);
138
+ const inboundLogs = periodLogs.filter((l) => l.direction === "inbound");
139
+ const outboundLogs = periodLogs.filter((l) => l.direction !== "inbound");
140
+ // Daily buckets — separate calls and searches
141
+ const byDay = {};
142
+ periodLogs.forEach((l) => {
143
+ const day = new Date(l.createdAt).toISOString().split("T")[0];
144
+ if (!byDay[day])
145
+ byDay[day] = { calls: 0, searches: 0 };
146
+ if (l.action.startsWith("discovery:")) {
147
+ byDay[day].searches++;
148
+ }
149
+ else {
150
+ byDay[day].calls++;
151
+ }
152
+ });
153
+ // By action (individual API endpoints, not just provider name)
154
+ const byAction = {};
155
+ periodLogs.forEach((l) => {
156
+ const isDiscovery = l.action.startsWith("discovery:");
157
+ const key = isDiscovery ? l.action : `${l.provider}:${l.action}`;
158
+ const displayName = isDiscovery ? l.action.replace("discovery:", "Search: ") : l.action;
159
+ if (!byAction[displayName])
160
+ byAction[displayName] = { calls: 0, success: 0, type: isDiscovery ? "discovery" : "call" };
161
+ byAction[displayName].calls++;
162
+ if (l.status === "success")
163
+ byAction[displayName].success++;
164
+ });
165
+ // Unique callers (for inbound)
166
+ const uniqueCallers = new Set(inboundLogs.map((l) => l.callerWorkspaceId).filter(Boolean)).size;
167
+ // Counts
168
+ const callLogs = periodLogs.filter((l) => !l.action.startsWith("discovery:"));
169
+ const discoveryLogs = periodLogs.filter((l) => l.action.startsWith("discovery:"));
170
+ return {
171
+ totalCalls: callLogs.length,
172
+ totalDiscoveries: discoveryLogs.length,
173
+ inboundCalls: inboundLogs.filter((l) => !l.action.startsWith("discovery:")).length,
174
+ outboundCalls: outboundLogs.length,
175
+ byDay: Object.entries(byDay)
176
+ .map(([date, data]) => ({ date, calls: data.calls, searches: data.searches }))
177
+ .sort((a, b) => a.date.localeCompare(b.date)),
178
+ byAction: Object.entries(byAction)
179
+ .map(([action, stats]) => ({ action, ...stats }))
180
+ .sort((a, b) => b.calls - a.calls),
181
+ successRate: periodLogs.length > 0
182
+ ? (periodLogs.filter((l) => l.status === "success").length / periodLogs.length) * 100
183
+ : 100,
184
+ avgLatency: periodLogs.length > 0
185
+ ? periodLogs.reduce((sum, l) => sum + l.latencyMs, 0) / periodLogs.length
186
+ : 0,
187
+ };
188
+ },
189
+ });
190
+ // ============================================
191
+ // HELPER: Get month start
192
+ // ============================================
193
+ function getMonthStart() {
194
+ const now = new Date();
195
+ return new Date(now.getUTCFullYear(), now.getUTCMonth(), 1, 0, 0, 0, 0).getTime();
196
+ }
197
+ /**
198
+ * Combined log creation + spend tracking (PRD 2.6)
199
+ * Creates log entry, tracks spend, returns budget status
200
+ * Returns shouldSendAlert: true if 80% threshold crossed (caller should send email)
201
+ */
202
+ export const createLogWithSpend = mutation({
203
+ args: {
204
+ workspaceId: v.id("workspaces"),
205
+ sessionToken: v.string(),
206
+ provider: v.string(),
207
+ action: v.string(),
208
+ status: v.union(v.literal("success"), v.literal("error")),
209
+ latencyMs: v.number(),
210
+ costCents: v.number(), // Cost in USD cents
211
+ errorMessage: v.optional(v.string()),
212
+ subagentId: v.optional(v.string()),
213
+ },
214
+ handler: async (ctx, args) => {
215
+ const now = Date.now();
216
+ const monthStart = getMonthStart();
217
+ // 1. Create log entry
218
+ const logId = await ctx.db.insert("apiLogs", {
219
+ workspaceId: args.workspaceId,
220
+ sessionToken: args.sessionToken,
221
+ subagentId: args.subagentId,
222
+ provider: args.provider,
223
+ action: args.action,
224
+ status: args.status,
225
+ latencyMs: args.latencyMs,
226
+ errorMessage: args.errorMessage,
227
+ createdAt: now,
228
+ });
229
+ // 2. Track spend if successful call with cost
230
+ if (args.status === "success" && args.costCents > 0) {
231
+ const workspace = await ctx.db.get(args.workspaceId);
232
+ if (!workspace) {
233
+ return { logId, spendTracked: false };
234
+ }
235
+ // Reset monthly spend if new month
236
+ let currentSpend = workspace.monthlySpendCents || 0;
237
+ if (!workspace.lastSpendResetAt || workspace.lastSpendResetAt < monthStart) {
238
+ currentSpend = 0;
239
+ }
240
+ // Add new spend
241
+ const newSpend = currentSpend + args.costCents;
242
+ const budgetCap = workspace.budgetCap;
243
+ // Update workspace
244
+ await ctx.db.patch(args.workspaceId, {
245
+ monthlySpendCents: newSpend,
246
+ lastSpendResetAt: monthStart,
247
+ updatedAt: now,
248
+ });
249
+ // Check if we need to send alert (80% threshold)
250
+ let shouldSendAlert = false;
251
+ let budgetExceeded = false;
252
+ if (budgetCap && budgetCap > 0) {
253
+ const threshold = budgetCap * 0.8;
254
+ const alertAlreadySentThisMonth = workspace.budgetAlertSentAt &&
255
+ workspace.budgetAlertSentAt >= monthStart;
256
+ // Check if at 80% and alert not yet sent
257
+ if (newSpend >= threshold && !alertAlreadySentThisMonth) {
258
+ shouldSendAlert = true;
259
+ await ctx.db.patch(args.workspaceId, {
260
+ budgetAlertSentAt: now,
261
+ });
262
+ }
263
+ // Check if budget exceeded
264
+ if (newSpend >= budgetCap) {
265
+ budgetExceeded = true;
266
+ }
267
+ }
268
+ return {
269
+ logId,
270
+ spendTracked: true,
271
+ currentSpendCents: newSpend,
272
+ budgetCapCents: budgetCap || null,
273
+ budgetPercentage: budgetCap ? Math.round((newSpend / budgetCap) * 100) : null,
274
+ shouldSendAlert,
275
+ budgetExceeded,
276
+ email: workspace.email,
277
+ };
278
+ }
279
+ return { logId, spendTracked: false };
280
+ },
281
+ });
282
+ // ============================================
283
+ // QUERIES
284
+ // ============================================
285
+ /**
286
+ * Get logs for a workspace with pagination and filters
287
+ */
288
+ export const getLogs = query({
289
+ args: {
290
+ token: v.string(),
291
+ limit: v.optional(v.number()),
292
+ cursor: v.optional(v.number()), // createdAt timestamp for pagination
293
+ status: v.optional(v.union(v.literal("success"), v.literal("error"), v.literal("all"))),
294
+ provider: v.optional(v.string()),
295
+ subagentId: v.optional(v.string()), // filter by subagent
296
+ },
297
+ handler: async (ctx, args) => {
298
+ const limit = args.limit ?? 50;
299
+ const status = args.status ?? "all";
300
+ const provider = args.provider;
301
+ const subagentId = args.subagentId;
302
+ const cursor = args.cursor;
303
+ // Verify session
304
+ const session = await ctx.db
305
+ .query("agentSessions")
306
+ .withIndex("by_sessionToken", (q) => q.eq("sessionToken", args.token))
307
+ .first();
308
+ if (!session) {
309
+ return { logs: [], hasMore: false };
310
+ }
311
+ // Get logs for workspace
312
+ let query = ctx.db
313
+ .query("apiLogs")
314
+ .withIndex("by_workspaceId_createdAt", (q) => q.eq("workspaceId", session.workspaceId))
315
+ .order("desc");
316
+ // Apply cursor (pagination)
317
+ if (cursor) {
318
+ query = query.filter((q) => q.lt(q.field("createdAt"), cursor));
319
+ }
320
+ // Collect more than limit to check hasMore
321
+ const allLogs = await query.take(limit + 1);
322
+ // Apply filters in-memory (Convex doesn't support complex compound filters)
323
+ let filteredLogs = allLogs;
324
+ if (status !== "all") {
325
+ filteredLogs = filteredLogs.filter((log) => log.status === status);
326
+ }
327
+ if (provider && provider !== "all") {
328
+ filteredLogs = filteredLogs.filter((log) => log.provider === provider);
329
+ }
330
+ // Filter by subagent
331
+ if (subagentId) {
332
+ if (subagentId === "main") {
333
+ // Main agent calls (no subagentId)
334
+ filteredLogs = filteredLogs.filter((log) => !log.subagentId);
335
+ }
336
+ else {
337
+ filteredLogs = filteredLogs.filter((log) => log.subagentId === subagentId);
338
+ }
339
+ }
340
+ const hasMore = filteredLogs.length > limit;
341
+ const logs = filteredLogs.slice(0, limit);
342
+ return {
343
+ logs: logs.map((log) => ({
344
+ id: log._id,
345
+ provider: log.provider,
346
+ action: log.action,
347
+ status: log.status,
348
+ latencyMs: log.latencyMs,
349
+ errorMessage: log.errorMessage,
350
+ subagentId: log.subagentId || null,
351
+ createdAt: log.createdAt,
352
+ })),
353
+ hasMore,
354
+ nextCursor: logs.length > 0 ? logs[logs.length - 1].createdAt : undefined,
355
+ };
356
+ },
357
+ });
358
+ /**
359
+ * Get aggregated log stats for workspace
360
+ */
361
+ export const getLogStats = query({
362
+ args: {
363
+ token: v.string(),
364
+ periodDays: v.optional(v.number()),
365
+ },
366
+ handler: async (ctx, args) => {
367
+ const periodDays = args.periodDays ?? 7;
368
+ // Verify session
369
+ const session = await ctx.db
370
+ .query("agentSessions")
371
+ .withIndex("by_sessionToken", (q) => q.eq("sessionToken", args.token))
372
+ .first();
373
+ if (!session) {
374
+ return {
375
+ totalCalls: 0,
376
+ successCount: 0,
377
+ errorCount: 0,
378
+ successRate: 0,
379
+ avgLatency: 0,
380
+ byProvider: [],
381
+ byDay: [],
382
+ };
383
+ }
384
+ const now = Date.now();
385
+ const periodStart = now - periodDays * 24 * 60 * 60 * 1000;
386
+ // Get all logs for this workspace in the period
387
+ const logs = await ctx.db
388
+ .query("apiLogs")
389
+ .withIndex("by_workspaceId_createdAt", (q) => q.eq("workspaceId", session.workspaceId))
390
+ .filter((q) => q.gte(q.field("createdAt"), periodStart))
391
+ .collect();
392
+ const totalCalls = logs.length;
393
+ const successCount = logs.filter((l) => l.status === "success").length;
394
+ const errorCount = logs.filter((l) => l.status === "error").length;
395
+ const successRate = totalCalls > 0 ? (successCount / totalCalls) * 100 : 0;
396
+ const totalLatency = logs.reduce((sum, l) => sum + l.latencyMs, 0);
397
+ const avgLatency = totalCalls > 0 ? Math.round(totalLatency / totalCalls) : 0;
398
+ // Group by provider
399
+ const byProviderMap = {};
400
+ for (const log of logs) {
401
+ if (!byProviderMap[log.provider]) {
402
+ byProviderMap[log.provider] = { calls: 0, success: 0, error: 0, latency: 0 };
403
+ }
404
+ byProviderMap[log.provider].calls++;
405
+ byProviderMap[log.provider].latency += log.latencyMs;
406
+ if (log.status === "success") {
407
+ byProviderMap[log.provider].success++;
408
+ }
409
+ else {
410
+ byProviderMap[log.provider].error++;
411
+ }
412
+ }
413
+ const byProvider = Object.entries(byProviderMap)
414
+ .map(([provider, data]) => ({
415
+ provider,
416
+ calls: data.calls,
417
+ successRate: data.calls > 0 ? (data.success / data.calls) * 100 : 0,
418
+ avgLatency: data.calls > 0 ? Math.round(data.latency / data.calls) : 0,
419
+ }))
420
+ .sort((a, b) => b.calls - a.calls);
421
+ // Group by day
422
+ const byDayMap = {};
423
+ for (const log of logs) {
424
+ const day = new Date(log.createdAt).toISOString().split("T")[0];
425
+ if (!byDayMap[day]) {
426
+ byDayMap[day] = { calls: 0, success: 0, error: 0 };
427
+ }
428
+ byDayMap[day].calls++;
429
+ if (log.status === "success") {
430
+ byDayMap[day].success++;
431
+ }
432
+ else {
433
+ byDayMap[day].error++;
434
+ }
435
+ }
436
+ const byDay = Object.entries(byDayMap)
437
+ .map(([date, data]) => ({
438
+ date,
439
+ calls: data.calls,
440
+ success: data.success,
441
+ error: data.error,
442
+ }))
443
+ .sort((a, b) => a.date.localeCompare(b.date));
444
+ // Get unique providers and agents for filter dropdowns
445
+ const providers = [...new Set(logs.map((l) => l.provider))].sort();
446
+ const agents = [...new Set(logs.map((l) => l.subagentId || "main"))].sort();
447
+ return {
448
+ totalCalls,
449
+ successCount,
450
+ errorCount,
451
+ successRate: Math.round(successRate * 10) / 10,
452
+ avgLatency,
453
+ byProvider,
454
+ byDay,
455
+ providers,
456
+ agents,
457
+ };
458
+ },
459
+ });
460
+ /**
461
+ * Get unique providers for filter dropdown
462
+ */
463
+ export const getProviders = query({
464
+ args: {
465
+ token: v.string(),
466
+ },
467
+ handler: async (ctx, args) => {
468
+ // Verify session
469
+ const session = await ctx.db
470
+ .query("agentSessions")
471
+ .withIndex("by_sessionToken", (q) => q.eq("sessionToken", args.token))
472
+ .first();
473
+ if (!session) {
474
+ return [];
475
+ }
476
+ // Get all logs for this workspace
477
+ const logs = await ctx.db
478
+ .query("apiLogs")
479
+ .withIndex("by_workspaceId", (q) => q.eq("workspaceId", session.workspaceId))
480
+ .collect();
481
+ // Get unique providers
482
+ const providers = [...new Set(logs.map((l) => l.provider))].sort();
483
+ return providers;
484
+ },
485
+ });
486
+ /**
487
+ * Get logs for a specific subagent
488
+ */
489
+ export const getBySubagent = query({
490
+ args: {
491
+ token: v.string(),
492
+ subagentId: v.string(),
493
+ limit: v.optional(v.number()),
494
+ },
495
+ handler: async (ctx, { token, subagentId, limit = 20 }) => {
496
+ // Verify session
497
+ const session = await ctx.db
498
+ .query("agentSessions")
499
+ .withIndex("by_sessionToken", (q) => q.eq("sessionToken", token))
500
+ .first();
501
+ if (!session)
502
+ return null;
503
+ // Get API logs for this subagent
504
+ const apiLogs = await ctx.db
505
+ .query("apiLogs")
506
+ .withIndex("by_subagentId", (q) => q.eq("subagentId", subagentId))
507
+ .order("desc")
508
+ .take(limit);
509
+ // Get search logs for this subagent
510
+ const searchLogs = await ctx.db
511
+ .query("searchLogs")
512
+ .filter((q) => q.eq(q.field("subagentId"), subagentId))
513
+ .order("desc")
514
+ .take(limit);
515
+ // Merge and sort by timestamp
516
+ const combined = [
517
+ ...apiLogs.map(l => ({
518
+ ...l,
519
+ type: "direct_call",
520
+ timestamp: l.createdAt
521
+ })),
522
+ ...searchLogs.map(l => ({
523
+ ...l,
524
+ type: "search",
525
+ timestamp: l.timestamp
526
+ })),
527
+ ].sort((a, b) => (b.timestamp || 0) - (a.timestamp || 0));
528
+ return combined.slice(0, limit);
529
+ },
530
+ });
531
+ /**
532
+ * Clear all logs for a workspace (admin cleanup)
533
+ */
534
+ export const clearWorkspaceLogs = mutation({
535
+ args: {
536
+ token: v.string(),
537
+ },
538
+ handler: async (ctx, { token }) => {
539
+ const session = await ctx.db
540
+ .query("agentSessions")
541
+ .withIndex("by_sessionToken", (q) => q.eq("sessionToken", token))
542
+ .first();
543
+ if (!session)
544
+ throw new Error("Invalid session");
545
+ // Delete all apiLogs
546
+ const apiLogs = await ctx.db
547
+ .query("apiLogs")
548
+ .withIndex("by_workspaceId", (q) => q.eq("workspaceId", session.workspaceId))
549
+ .collect();
550
+ for (const log of apiLogs) {
551
+ await ctx.db.delete(log._id);
552
+ }
553
+ // Delete all searchLogs
554
+ const searchLogs = await ctx.db
555
+ .query("searchLogs")
556
+ .withIndex("by_workspaceId", (q) => q.eq("workspaceId", session.workspaceId))
557
+ .collect();
558
+ for (const log of searchLogs) {
559
+ await ctx.db.delete(log._id);
560
+ }
561
+ return {
562
+ deleted: {
563
+ apiLogs: apiLogs.length,
564
+ searchLogs: searchLogs.length
565
+ }
566
+ };
567
+ },
568
+ });
569
+ // Log proxy API calls from external agents (Hivr bees)
570
+ export const createProxyLog = mutation({
571
+ args: {
572
+ workspaceId: v.id("workspaces"),
573
+ provider: v.string(),
574
+ action: v.string(),
575
+ subagentId: v.optional(v.string()),
576
+ sessionToken: v.optional(v.string()),
577
+ },
578
+ handler: async (ctx, { workspaceId, provider, action, subagentId, sessionToken }) => {
579
+ const now = Date.now();
580
+ await ctx.db.insert("apiLogs", {
581
+ workspaceId,
582
+ provider,
583
+ action,
584
+ subagentId: subagentId || "unknown",
585
+ sessionToken: sessionToken || "proxy",
586
+ status: "success",
587
+ latencyMs: 0, // Proxy calls don't track latency
588
+ createdAt: now,
589
+ });
590
+ // Update workspace lastActiveAt (main agent activity)
591
+ await ctx.db.patch(workspaceId, { lastActiveAt: now });
592
+ // If this is a subagent call, update that subagent's timestamp
593
+ if (subagentId && subagentId !== "unknown" && subagentId !== "main") {
594
+ const subagent = await ctx.db
595
+ .query("subagents")
596
+ .withIndex("by_workspaceId_subagentId", (q) => q.eq("workspaceId", workspaceId).eq("subagentId", subagentId))
597
+ .first();
598
+ if (subagent) {
599
+ await ctx.db.patch(subagent._id, { lastActiveAt: now });
600
+ }
601
+ }
602
+ return { success: true };
603
+ },
604
+ });
605
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const getByPartnerId: any;
2
+ export declare const create: any;
3
+ export declare const sign: any;
4
+ export declare const list: any;
5
+ export declare const remove: any;
6
+ //# sourceMappingURL=mou.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mou.d.ts","sourceRoot":"","sources":["mou.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,KAQzB,CAAC;AAGH,eAAO,MAAM,MAAM,KAcjB,CAAC;AAGH,eAAO,MAAM,IAAI,KAiCf,CAAC;AAGH,eAAO,MAAM,IAAI,KAKf,CAAC;AAGH,eAAO,MAAM,MAAM,KAcjB,CAAC"}