@nordsym/apiclaw 1.5.7 → 1.5.8
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/convex/_generated/api.d.ts +2 -0
- package/convex/adminActivate.d.ts +3 -0
- package/convex/adminActivate.d.ts.map +1 -0
- package/convex/adminActivate.js +47 -0
- package/convex/adminActivate.js.map +1 -0
- package/convex/adminStats.d.ts +3 -0
- package/convex/adminStats.d.ts.map +1 -0
- package/convex/adminStats.js +42 -0
- package/convex/adminStats.js.map +1 -0
- package/convex/adminStats.ts +44 -0
- package/convex/agents.d.ts +54 -0
- package/convex/agents.d.ts.map +1 -0
- package/convex/agents.js +499 -0
- package/convex/agents.js.map +1 -0
- package/convex/analytics.d.ts +5 -0
- package/convex/analytics.d.ts.map +1 -0
- package/convex/analytics.js +166 -0
- package/convex/analytics.js.map +1 -0
- package/convex/billing.d.ts +88 -0
- package/convex/billing.d.ts.map +1 -0
- package/convex/billing.js +655 -0
- package/convex/billing.js.map +1 -0
- package/convex/capabilities.d.ts +9 -0
- package/convex/capabilities.d.ts.map +1 -0
- package/convex/capabilities.js +145 -0
- package/convex/capabilities.js.map +1 -0
- package/convex/chains.d.ts +67 -0
- package/convex/chains.d.ts.map +1 -0
- package/convex/chains.js +1042 -0
- package/convex/chains.js.map +1 -0
- package/convex/credits.d.ts +25 -0
- package/convex/credits.d.ts.map +1 -0
- package/convex/credits.js +186 -0
- package/convex/credits.js.map +1 -0
- package/convex/crons.d.ts +3 -0
- package/convex/crons.d.ts.map +1 -0
- package/convex/crons.js +17 -0
- package/convex/crons.js.map +1 -0
- package/convex/directCall.d.ts +72 -0
- package/convex/directCall.d.ts.map +1 -0
- package/convex/directCall.js +627 -0
- package/convex/directCall.js.map +1 -0
- package/convex/earnProgress.d.ts +58 -0
- package/convex/earnProgress.d.ts.map +1 -0
- package/convex/earnProgress.js +649 -0
- package/convex/earnProgress.js.map +1 -0
- package/convex/email.d.ts +14 -0
- package/convex/email.d.ts.map +1 -0
- package/convex/email.js +300 -0
- package/convex/email.js.map +1 -0
- package/convex/feedback.d.ts +7 -0
- package/convex/feedback.d.ts.map +1 -0
- package/convex/feedback.js +227 -0
- package/convex/feedback.js.map +1 -0
- package/convex/http.d.ts +3 -0
- package/convex/http.d.ts.map +1 -0
- package/convex/http.js +902 -0
- package/convex/http.js.map +1 -0
- package/convex/logs.d.ts +38 -0
- package/convex/logs.d.ts.map +1 -0
- package/convex/logs.js +487 -0
- package/convex/logs.js.map +1 -0
- package/convex/mou.d.ts +6 -0
- package/convex/mou.d.ts.map +1 -0
- package/convex/mou.js +82 -0
- package/convex/mou.js.map +1 -0
- package/convex/providerKeys.d.ts +31 -0
- package/convex/providerKeys.d.ts.map +1 -0
- package/convex/providerKeys.js +257 -0
- package/convex/providerKeys.js.map +1 -0
- package/convex/providers.d.ts +29 -0
- package/convex/providers.d.ts.map +1 -0
- package/convex/providers.js +756 -0
- package/convex/providers.js.map +1 -0
- package/convex/purchases.d.ts +7 -0
- package/convex/purchases.d.ts.map +1 -0
- package/convex/purchases.js +157 -0
- package/convex/purchases.js.map +1 -0
- package/convex/ratelimit.d.ts +4 -0
- package/convex/ratelimit.d.ts.map +1 -0
- package/convex/ratelimit.js +91 -0
- package/convex/ratelimit.js.map +1 -0
- package/convex/searchLogs.d.ts +4 -0
- package/convex/searchLogs.d.ts.map +1 -0
- package/convex/searchLogs.js +129 -0
- package/convex/searchLogs.js.map +1 -0
- package/convex/spendAlerts.d.ts +36 -0
- package/convex/spendAlerts.d.ts.map +1 -0
- package/convex/spendAlerts.js +380 -0
- package/convex/spendAlerts.js.map +1 -0
- package/convex/stripeActions.d.ts +19 -0
- package/convex/stripeActions.d.ts.map +1 -0
- package/convex/stripeActions.js +411 -0
- package/convex/stripeActions.js.map +1 -0
- package/convex/teams.d.ts +21 -0
- package/convex/teams.d.ts.map +1 -0
- package/convex/teams.js +215 -0
- package/convex/teams.js.map +1 -0
- package/convex/telemetry.d.ts +4 -0
- package/convex/telemetry.d.ts.map +1 -0
- package/convex/telemetry.js +74 -0
- package/convex/telemetry.js.map +1 -0
- package/convex/usage.d.ts +27 -0
- package/convex/usage.d.ts.map +1 -0
- package/convex/usage.js +229 -0
- package/convex/usage.js.map +1 -0
- package/convex/waitlist.d.ts +4 -0
- package/convex/waitlist.d.ts.map +1 -0
- package/convex/waitlist.js +49 -0
- package/convex/waitlist.js.map +1 -0
- package/convex/webhooks.d.ts +12 -0
- package/convex/webhooks.d.ts.map +1 -0
- package/convex/webhooks.js +410 -0
- package/convex/webhooks.js.map +1 -0
- package/convex/workspaces.d.ts +29 -0
- package/convex/workspaces.d.ts.map +1 -0
- package/convex/workspaces.js +880 -0
- package/convex/workspaces.js.map +1 -0
- package/dist/analytics.d.ts +1 -1
- package/dist/analytics.d.ts.map +1 -1
- package/dist/analytics.js +51 -2
- package/dist/analytics.js.map +1 -1
- package/dist/index.js +27 -2
- package/dist/index.js.map +1 -1
- package/landing/scripts/generate-stats.js +9 -5
- package/landing/src/app/page.tsx +2 -0
- package/landing/src/lib/stats.json +2 -2
- package/package.json +1 -1
- package/src/analytics.ts +53 -2
- package/src/index.ts +28 -2
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { mutation, query } from "./_generated/server";
|
|
2
|
+
import { v } from "convex/values";
|
|
3
|
+
// Log an analytics event
|
|
4
|
+
export const log = mutation({
|
|
5
|
+
args: {
|
|
6
|
+
event: v.string(),
|
|
7
|
+
provider: v.optional(v.string()),
|
|
8
|
+
query: v.optional(v.string()),
|
|
9
|
+
identifier: v.string(),
|
|
10
|
+
metadata: v.optional(v.any()),
|
|
11
|
+
},
|
|
12
|
+
handler: async (ctx, args) => {
|
|
13
|
+
return await ctx.db.insert("analytics", {
|
|
14
|
+
...args,
|
|
15
|
+
timestamp: Date.now(),
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
// Get stats for dashboard
|
|
20
|
+
export const getStats = query({
|
|
21
|
+
args: {
|
|
22
|
+
hoursBack: v.optional(v.number()),
|
|
23
|
+
},
|
|
24
|
+
handler: async (ctx, args) => {
|
|
25
|
+
const hoursBack = args.hoursBack || 24;
|
|
26
|
+
const since = Date.now() - hoursBack * 3600000;
|
|
27
|
+
const events = await ctx.db
|
|
28
|
+
.query("analytics")
|
|
29
|
+
.withIndex("by_timestamp")
|
|
30
|
+
.filter((q) => q.gte(q.field("timestamp"), since))
|
|
31
|
+
.collect();
|
|
32
|
+
// Aggregate stats
|
|
33
|
+
const stats = {
|
|
34
|
+
totalEvents: events.length,
|
|
35
|
+
discoveries: events.filter((e) => e.event === "discovery").length,
|
|
36
|
+
instantCalls: events.filter((e) => e.event === "instant").length,
|
|
37
|
+
uniqueUsers: new Set(events.map((e) => e.identifier)).size,
|
|
38
|
+
byProvider: {},
|
|
39
|
+
topQueries: [],
|
|
40
|
+
hourly: [],
|
|
41
|
+
};
|
|
42
|
+
// By provider
|
|
43
|
+
for (const event of events.filter((e) => e.provider)) {
|
|
44
|
+
stats.byProvider[event.provider] = (stats.byProvider[event.provider] || 0) + 1;
|
|
45
|
+
}
|
|
46
|
+
// Top queries
|
|
47
|
+
const queryCounts = {};
|
|
48
|
+
for (const event of events.filter((e) => e.query)) {
|
|
49
|
+
queryCounts[event.query] = (queryCounts[event.query] || 0) + 1;
|
|
50
|
+
}
|
|
51
|
+
stats.topQueries = Object.entries(queryCounts)
|
|
52
|
+
.sort(([, a], [, b]) => b - a)
|
|
53
|
+
.slice(0, 10)
|
|
54
|
+
.map(([query, count]) => ({ query, count }));
|
|
55
|
+
// Hourly breakdown
|
|
56
|
+
const hourlyCounts = {};
|
|
57
|
+
for (const event of events) {
|
|
58
|
+
const hour = new Date(event.timestamp).toISOString().slice(0, 13);
|
|
59
|
+
hourlyCounts[hour] = (hourlyCounts[hour] || 0) + 1;
|
|
60
|
+
}
|
|
61
|
+
stats.hourly = Object.entries(hourlyCounts)
|
|
62
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
63
|
+
.map(([hour, count]) => ({ hour, count }));
|
|
64
|
+
return stats;
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
// Get recent events for live feed
|
|
68
|
+
export const getRecent = query({
|
|
69
|
+
args: {
|
|
70
|
+
limit: v.optional(v.number()),
|
|
71
|
+
},
|
|
72
|
+
handler: async (ctx, args) => {
|
|
73
|
+
const limit = args.limit || 50;
|
|
74
|
+
return await ctx.db
|
|
75
|
+
.query("analytics")
|
|
76
|
+
.withIndex("by_timestamp")
|
|
77
|
+
.order("desc")
|
|
78
|
+
.take(limit);
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
// Get provider breakdown for Agent Analytics (workspace-specific)
|
|
82
|
+
export const getProviderBreakdown = query({
|
|
83
|
+
args: {
|
|
84
|
+
token: v.string(),
|
|
85
|
+
periodDays: v.optional(v.number()),
|
|
86
|
+
},
|
|
87
|
+
handler: async (ctx, args) => {
|
|
88
|
+
const periodDays = args.periodDays || 7;
|
|
89
|
+
const since = Date.now() - periodDays * 24 * 3600000;
|
|
90
|
+
// Verify session and get workspace
|
|
91
|
+
const session = await ctx.db
|
|
92
|
+
.query("agentSessions")
|
|
93
|
+
.withIndex("by_sessionToken", (q) => q.eq("sessionToken", args.token))
|
|
94
|
+
.first();
|
|
95
|
+
if (!session) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
// Get all API logs for this workspace
|
|
99
|
+
const logs = await ctx.db
|
|
100
|
+
.query("apiLogs")
|
|
101
|
+
.withIndex("by_workspaceId_createdAt", (q) => q.eq("workspaceId", session.workspaceId))
|
|
102
|
+
.filter((q) => q.gte(q.field("createdAt"), since))
|
|
103
|
+
.collect();
|
|
104
|
+
if (logs.length === 0) {
|
|
105
|
+
return null; // Return null so frontend knows to show empty state, not preview
|
|
106
|
+
}
|
|
107
|
+
// Aggregate stats
|
|
108
|
+
const totalCalls = logs.length;
|
|
109
|
+
const successCount = logs.filter((l) => l.status === "success").length;
|
|
110
|
+
const failureCount = logs.filter((l) => l.status === "error").length;
|
|
111
|
+
const totalLatency = logs.reduce((sum, l) => sum + (l.latencyMs || 0), 0);
|
|
112
|
+
const avgLatency = totalCalls > 0 ? Math.round(totalLatency / totalCalls) : 0;
|
|
113
|
+
// Provider breakdown
|
|
114
|
+
const byProvider = {};
|
|
115
|
+
for (const log of logs) {
|
|
116
|
+
if (!byProvider[log.provider]) {
|
|
117
|
+
byProvider[log.provider] = { count: 0, latency: 0 };
|
|
118
|
+
}
|
|
119
|
+
byProvider[log.provider].count++;
|
|
120
|
+
byProvider[log.provider].latency += log.latencyMs || 0;
|
|
121
|
+
}
|
|
122
|
+
// Agent breakdown (by subagentId)
|
|
123
|
+
const byAgent = {};
|
|
124
|
+
for (const log of logs) {
|
|
125
|
+
const agent = log.subagentId || "main";
|
|
126
|
+
byAgent[agent] = (byAgent[agent] || 0) + 1;
|
|
127
|
+
}
|
|
128
|
+
// Action breakdown
|
|
129
|
+
const byAction = {};
|
|
130
|
+
for (const log of logs) {
|
|
131
|
+
const key = `${log.provider}:${log.action}`;
|
|
132
|
+
byAction[key] = (byAction[key] || 0) + 1;
|
|
133
|
+
}
|
|
134
|
+
// Time series (daily)
|
|
135
|
+
const dailyCounts = {};
|
|
136
|
+
for (const log of logs) {
|
|
137
|
+
const day = new Date(log.createdAt).toISOString().slice(0, 10);
|
|
138
|
+
dailyCounts[day] = (dailyCounts[day] || 0) + 1;
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
totalCalls,
|
|
142
|
+
successCount,
|
|
143
|
+
failureCount,
|
|
144
|
+
successRate: totalCalls > 0 ? (successCount / totalCalls) * 100 : 0,
|
|
145
|
+
avgLatency,
|
|
146
|
+
byProvider: Object.entries(byProvider).map(([name, data]) => ({
|
|
147
|
+
name,
|
|
148
|
+
count: data.count,
|
|
149
|
+
avgLatency: data.count > 0 ? Math.round(data.latency / data.count) : 0,
|
|
150
|
+
})).sort((a, b) => b.count - a.count),
|
|
151
|
+
byAgent: Object.entries(byAgent).map(([name, count]) => ({
|
|
152
|
+
name,
|
|
153
|
+
count,
|
|
154
|
+
})).sort((a, b) => b.count - a.count),
|
|
155
|
+
byAction: Object.entries(byAction).map(([name, count]) => ({
|
|
156
|
+
name,
|
|
157
|
+
count,
|
|
158
|
+
})).sort((a, b) => b.count - a.count).slice(0, 10),
|
|
159
|
+
timeSeries: Object.entries(dailyCounts)
|
|
160
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
161
|
+
.map(([date, count]) => ({ date, count })),
|
|
162
|
+
isPreview: false,
|
|
163
|
+
};
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
//# sourceMappingURL=analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Link a Stripe customer to a workspace
|
|
3
|
+
*/
|
|
4
|
+
export declare const linkCustomer: any;
|
|
5
|
+
/**
|
|
6
|
+
* Update subscription status for a workspace
|
|
7
|
+
*/
|
|
8
|
+
export declare const updateSubscription: any;
|
|
9
|
+
/**
|
|
10
|
+
* Record daily usage for billing
|
|
11
|
+
*/
|
|
12
|
+
export declare const recordUsage: any;
|
|
13
|
+
/**
|
|
14
|
+
* Process a successful payment (from webhook)
|
|
15
|
+
*/
|
|
16
|
+
export declare const processPayment: any;
|
|
17
|
+
/**
|
|
18
|
+
* Increment credit balance (for prepaid credits)
|
|
19
|
+
*/
|
|
20
|
+
export declare const incrementCredits: any;
|
|
21
|
+
/**
|
|
22
|
+
* Decrement credit balance (when using prepaid credits)
|
|
23
|
+
*/
|
|
24
|
+
export declare const decrementCredits: any;
|
|
25
|
+
/**
|
|
26
|
+
* Mark usage as reported to Stripe
|
|
27
|
+
*/
|
|
28
|
+
export declare const markUsageReported: any;
|
|
29
|
+
/**
|
|
30
|
+
* Update invoice status (from webhook)
|
|
31
|
+
*/
|
|
32
|
+
export declare const updateInvoiceStatus: any;
|
|
33
|
+
/**
|
|
34
|
+
* Reset usage count on subscription cancellation
|
|
35
|
+
* Gives user a clean slate when downgrading to free
|
|
36
|
+
*/
|
|
37
|
+
export declare const resetUsageOnCancellation: any;
|
|
38
|
+
/**
|
|
39
|
+
* Update payment method info (from webhook)
|
|
40
|
+
*/
|
|
41
|
+
export declare const updatePaymentMethodInfo: any;
|
|
42
|
+
/**
|
|
43
|
+
* Get billing info for a workspace
|
|
44
|
+
*/
|
|
45
|
+
export declare const getInfo: any;
|
|
46
|
+
/**
|
|
47
|
+
* Get current period usage
|
|
48
|
+
*/
|
|
49
|
+
export declare const getCurrentUsage: any;
|
|
50
|
+
/**
|
|
51
|
+
* Get invoices for a workspace
|
|
52
|
+
*/
|
|
53
|
+
export declare const getInvoices: any;
|
|
54
|
+
/**
|
|
55
|
+
* Get unreported usage records (for cron job)
|
|
56
|
+
*/
|
|
57
|
+
export declare const getUnreportedUsage: any;
|
|
58
|
+
/**
|
|
59
|
+
* Get workspace by Stripe customer ID
|
|
60
|
+
*/
|
|
61
|
+
export declare const getByStripeCustomerId: any;
|
|
62
|
+
/**
|
|
63
|
+
* Get workspace by ID
|
|
64
|
+
*/
|
|
65
|
+
export declare const getWorkspace: any;
|
|
66
|
+
/**
|
|
67
|
+
* Get all workspaces with active Stripe subscriptions (internal)
|
|
68
|
+
*/
|
|
69
|
+
export declare const getActiveSubscriptions: any;
|
|
70
|
+
/**
|
|
71
|
+
* Get unreported usage records for a specific workspace (internal)
|
|
72
|
+
*/
|
|
73
|
+
export declare const getUnreportedUsageForWorkspace: any;
|
|
74
|
+
/**
|
|
75
|
+
* Mark multiple usage records as reported (internal)
|
|
76
|
+
*/
|
|
77
|
+
export declare const markUsageRecordsReported: any;
|
|
78
|
+
/**
|
|
79
|
+
* Report usage to Stripe for a single workspace
|
|
80
|
+
* Internal action - called by the daily cron
|
|
81
|
+
*/
|
|
82
|
+
export declare const reportUsageToStripe: any;
|
|
83
|
+
/**
|
|
84
|
+
* Daily cron job: Report all unreported usage to Stripe
|
|
85
|
+
* Runs at 00:05 UTC
|
|
86
|
+
*/
|
|
87
|
+
export declare const reportAllUsageToStripe: any;
|
|
88
|
+
//# sourceMappingURL=billing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["billing.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,eAAO,MAAM,YAAY,KAkBvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB,KAgD7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW,KAmCtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc,KA6CzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,KAqB3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,KAyB3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAY5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB,KAuB9B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,wBAAwB,KAiBnC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB,KAwBlC,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,OAAO,KAqElB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe,KA+C1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW,KA6BtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB,KAU7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB,KAYhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY,KAOvB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,sBAAsB,KAcjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,8BAA8B,KAWzC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,wBAAwB,KAenC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,KAsG9B,CAAC;AAmBH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,KAwDjC,CAAC"}
|