@nordsym/apiclaw 1.0.0 → 1.1.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/AGENTS.md +74 -0
- package/HEARTBEAT.md +4 -0
- package/IDENTITY.md +22 -0
- package/README.md +197 -202
- package/SOUL.md +36 -0
- package/STATUS.md +237 -0
- package/TOOLS.md +36 -0
- package/USER.md +17 -0
- package/{backend/convex → convex}/_generated/api.d.ts +6 -6
- package/convex/credits.ts +211 -0
- package/convex/http.ts +490 -0
- package/convex/providers.ts +516 -0
- package/convex/purchases.ts +183 -0
- package/convex/schema.ts +180 -0
- package/convex.json +3 -0
- package/dist/credentials.d.ts +19 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +158 -0
- package/dist/credentials.js.map +1 -0
- package/dist/credits.d.ts +14 -11
- package/dist/credits.d.ts.map +1 -1
- package/dist/credits.js +151 -99
- package/dist/credits.js.map +1 -1
- package/dist/discovery.d.ts +7 -16
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +33 -40
- package/dist/discovery.js.map +1 -1
- package/dist/execute.d.ts +19 -0
- package/dist/execute.d.ts.map +1 -0
- package/dist/execute.js +285 -0
- package/dist/execute.js.map +1 -0
- package/dist/index.js +106 -30
- package/dist/index.js.map +1 -1
- package/dist/proxy.d.ts +6 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +19 -0
- package/dist/proxy.js.map +1 -0
- package/dist/registry/apis.json +95362 -202
- package/dist/registry/apis_expanded.json +100853 -0
- package/dist/stripe.d.ts +68 -0
- package/dist/stripe.d.ts.map +1 -0
- package/dist/stripe.js +196 -0
- package/dist/stripe.js.map +1 -0
- package/dist/test.d.ts +3 -2
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +105 -75
- package/dist/test.js.map +1 -1
- package/dist/types.d.ts +0 -28
- package/dist/types.d.ts.map +1 -1
- package/dist/webhook.d.ts +2 -0
- package/dist/webhook.d.ts.map +1 -0
- package/dist/webhook.js +90 -0
- package/dist/webhook.js.map +1 -0
- package/landing/DESIGN.md +343 -0
- package/landing/package-lock.json +1190 -40
- package/landing/package.json +5 -2
- package/landing/public/android-chrome-192x192.png +0 -0
- package/landing/public/android-chrome-512x512.png +0 -0
- package/landing/public/apple-touch-icon.png +0 -0
- package/landing/public/demo.gif +0 -0
- package/landing/public/demo.mp4 +0 -0
- package/landing/public/favicon-16x16.png +0 -0
- package/landing/public/favicon-32x32.png +0 -0
- package/landing/public/favicon.ico +0 -0
- package/landing/public/favicon.svg +3 -0
- package/landing/public/icon.svg +47 -0
- package/landing/public/logo-mono.svg +37 -0
- package/landing/public/logo-simple.svg +45 -0
- package/landing/public/logo.svg +84 -0
- package/landing/public/og-image.png +0 -0
- package/landing/public/og-template.html +184 -0
- package/landing/public/site.webmanifest +31 -0
- package/landing/scripts/generate-assets.js +284 -0
- package/landing/scripts/generate-pngs.js +48 -0
- package/landing/scripts/generate-stats.js +42 -0
- package/landing/src/app/admin/page.tsx +348 -0
- package/landing/src/app/api/auth/magic-link/route.ts +73 -0
- package/landing/src/app/api/auth/session/route.ts +38 -0
- package/landing/src/app/api/auth/verify/route.ts +43 -0
- package/landing/src/app/api/og/route.tsx +74 -0
- package/landing/src/app/globals.css +439 -100
- package/landing/src/app/layout.tsx +37 -9
- package/landing/src/app/page.tsx +640 -552
- package/landing/src/app/providers/dashboard/login/page.tsx +176 -0
- package/landing/src/app/providers/dashboard/page.tsx +589 -0
- package/landing/src/app/providers/dashboard/verify/page.tsx +106 -0
- package/landing/src/app/providers/layout.tsx +14 -0
- package/landing/src/app/providers/page.tsx +402 -0
- package/landing/src/app/providers/register/page.tsx +670 -0
- package/landing/src/components/ProviderDashboard.tsx +794 -0
- package/landing/src/hooks/useDashboardData.ts +99 -0
- package/landing/src/lib/apis.json +116054 -0
- package/landing/src/lib/convex-client.ts +106 -0
- package/landing/src/lib/mock-data.ts +285 -0
- package/landing/src/lib/stats.json +6 -0
- package/landing/tailwind.config.ts +12 -11
- package/landing/tsconfig.tsbuildinfo +1 -0
- package/package.json +21 -20
- package/scripts/SYMBOT-FIX.md +238 -0
- package/scripts/demo-simulation.py +177 -0
- package/scripts/expand-more.py +502 -0
- package/scripts/expand-registry.py +434 -0
- package/scripts/history-sanitizer.ts +272 -0
- package/scripts/mass-scrape.py +1308 -0
- package/scripts/sync-and-deploy.sh +36 -0
- package/src/credentials.ts +177 -0
- package/src/credits.ts +190 -122
- package/src/discovery.ts +45 -58
- package/src/execute.ts +350 -0
- package/src/index.ts +113 -31
- package/src/proxy.ts +24 -0
- package/src/registry/apis.json +95362 -202
- package/src/registry/apis_expanded.json +100853 -0
- package/src/stripe.ts +243 -0
- package/src/test.ts +127 -89
- package/src/types.ts +0 -34
- package/src/webhook.ts +107 -0
- package/.github/ISSUE_TEMPLATE/add-api.yml +0 -123
- package/BRIEFING.md +0 -30
- package/backend/convex/apiKeys.ts +0 -75
- package/backend/convex/purchases.ts +0 -74
- package/backend/convex/schema.ts +0 -45
- package/backend/convex/transactions.ts +0 -57
- package/backend/convex/users.ts +0 -94
- package/backend/package-lock.json +0 -521
- package/backend/package.json +0 -15
- package/dist/registry/parse_apis.py +0 -146
- package/dist/revenuecat.d.ts +0 -61
- package/dist/revenuecat.d.ts.map +0 -1
- package/dist/revenuecat.js +0 -166
- package/dist/revenuecat.js.map +0 -1
- package/dist/webhooks/revenuecat.d.ts +0 -48
- package/dist/webhooks/revenuecat.d.ts.map +0 -1
- package/dist/webhooks/revenuecat.js +0 -119
- package/dist/webhooks/revenuecat.js.map +0 -1
- package/docs/revenuecat-setup.md +0 -89
- package/landing/src/app/api/keys/route.ts +0 -71
- package/landing/src/app/api/log/route.ts +0 -37
- package/landing/src/app/api/stats/route.ts +0 -37
- package/landing/src/app/page.tsx.bak +0 -567
- package/landing/src/components/AddKeyModal.tsx +0 -159
- package/newsletter-template.html +0 -71
- package/outreach/OUTREACH-SYSTEM.md +0 -211
- package/outreach/email-template.html +0 -179
- package/outreach/targets.md +0 -133
- package/src/registry/parse_apis.py +0 -146
- package/src/revenuecat.ts +0 -239
- package/src/webhooks/revenuecat.ts +0 -187
- /package/{backend/convex → convex}/README.md +0 -0
- /package/{backend/convex → convex}/_generated/api.js +0 -0
- /package/{backend/convex → convex}/_generated/dataModel.d.ts +0 -0
- /package/{backend/convex → convex}/_generated/server.d.ts +0 -0
- /package/{backend/convex → convex}/_generated/server.js +0 -0
- /package/{backend/convex → convex}/tsconfig.json +0 -0
package/dist/stripe.d.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import Stripe from 'stripe';
|
|
2
|
+
export declare const CREDIT_PACKAGES: {
|
|
3
|
+
readonly starter: {
|
|
4
|
+
readonly id: "starter";
|
|
5
|
+
readonly name: "Starter Pack";
|
|
6
|
+
readonly amountUsd: 10;
|
|
7
|
+
readonly credits: 100;
|
|
8
|
+
readonly bonus: 0;
|
|
9
|
+
readonly description: "$10 → 100 credits";
|
|
10
|
+
};
|
|
11
|
+
readonly growth: {
|
|
12
|
+
readonly id: "growth";
|
|
13
|
+
readonly name: "Growth Pack";
|
|
14
|
+
readonly amountUsd: 50;
|
|
15
|
+
readonly credits: 550;
|
|
16
|
+
readonly bonus: 50;
|
|
17
|
+
readonly description: "$50 → 550 credits (10% bonus)";
|
|
18
|
+
};
|
|
19
|
+
readonly scale: {
|
|
20
|
+
readonly id: "scale";
|
|
21
|
+
readonly name: "Scale Pack";
|
|
22
|
+
readonly amountUsd: 100;
|
|
23
|
+
readonly credits: 1200;
|
|
24
|
+
readonly bonus: 200;
|
|
25
|
+
readonly description: "$100 → 1,200 credits (20% bonus)";
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export type PackageType = keyof typeof CREDIT_PACKAGES;
|
|
29
|
+
/**
|
|
30
|
+
* Create a Stripe Checkout Session for credit purchase
|
|
31
|
+
*/
|
|
32
|
+
export declare function createCheckoutSession(agentId: string, packageType: PackageType, successUrl: string, cancelUrl: string): Promise<{
|
|
33
|
+
sessionId: string;
|
|
34
|
+
url: string;
|
|
35
|
+
} | {
|
|
36
|
+
error: string;
|
|
37
|
+
}>;
|
|
38
|
+
/**
|
|
39
|
+
* Create a Payment Intent for programmatic payment (agent-to-agent)
|
|
40
|
+
*/
|
|
41
|
+
export declare function createPaymentIntent(agentId: string, packageType: PackageType): Promise<{
|
|
42
|
+
clientSecret: string;
|
|
43
|
+
paymentIntentId: string;
|
|
44
|
+
amount: number;
|
|
45
|
+
} | {
|
|
46
|
+
error: string;
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Verify Stripe webhook signature
|
|
50
|
+
*/
|
|
51
|
+
export declare function verifyWebhookSignature(payload: string | Buffer, signature: string): Stripe.Event | null;
|
|
52
|
+
/**
|
|
53
|
+
* Process webhook event and return credit grant info
|
|
54
|
+
*/
|
|
55
|
+
export interface CreditGrant {
|
|
56
|
+
agentId: string;
|
|
57
|
+
packageType: string;
|
|
58
|
+
credits: number;
|
|
59
|
+
amountUsd: number;
|
|
60
|
+
stripeSessionId?: string;
|
|
61
|
+
stripePaymentIntentId?: string;
|
|
62
|
+
}
|
|
63
|
+
export declare function processWebhookEvent(event: Stripe.Event): CreditGrant | null;
|
|
64
|
+
/**
|
|
65
|
+
* Get Stripe instance (for advanced usage)
|
|
66
|
+
*/
|
|
67
|
+
export declare function getStripe(): Stripe | null;
|
|
68
|
+
//# sourceMappingURL=stripe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stripe.d.ts","sourceRoot":"","sources":["../src/stripe.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAe5B,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,eAAe,CAAC;AAEvD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkDjE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,GACvB,OAAO,CACN;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CACpB,CAmCA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,KAAK,GAAG,IAAI,CAerB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,WAAW,GAAG,IAAI,CAiD3E;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzC"}
|
package/dist/stripe.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
// Stripe integration for APIClaw credit purchases
|
|
2
|
+
import Stripe from 'stripe';
|
|
3
|
+
import { config } from 'dotenv';
|
|
4
|
+
// Load environment
|
|
5
|
+
config({ path: '.env.local' });
|
|
6
|
+
const stripeSecretKey = process.env.STRIPE_SECRET_KEY;
|
|
7
|
+
if (!stripeSecretKey) {
|
|
8
|
+
console.warn('STRIPE_SECRET_KEY not set - Stripe features disabled');
|
|
9
|
+
}
|
|
10
|
+
const stripe = stripeSecretKey ? new Stripe(stripeSecretKey) : null;
|
|
11
|
+
// Credit packages
|
|
12
|
+
export const CREDIT_PACKAGES = {
|
|
13
|
+
starter: {
|
|
14
|
+
id: 'starter',
|
|
15
|
+
name: 'Starter Pack',
|
|
16
|
+
amountUsd: 10,
|
|
17
|
+
credits: 100,
|
|
18
|
+
bonus: 0,
|
|
19
|
+
description: '$10 → 100 credits',
|
|
20
|
+
},
|
|
21
|
+
growth: {
|
|
22
|
+
id: 'growth',
|
|
23
|
+
name: 'Growth Pack',
|
|
24
|
+
amountUsd: 50,
|
|
25
|
+
credits: 550,
|
|
26
|
+
bonus: 50,
|
|
27
|
+
description: '$50 → 550 credits (10% bonus)',
|
|
28
|
+
},
|
|
29
|
+
scale: {
|
|
30
|
+
id: 'scale',
|
|
31
|
+
name: 'Scale Pack',
|
|
32
|
+
amountUsd: 100,
|
|
33
|
+
credits: 1200,
|
|
34
|
+
bonus: 200,
|
|
35
|
+
description: '$100 → 1,200 credits (20% bonus)',
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Create a Stripe Checkout Session for credit purchase
|
|
40
|
+
*/
|
|
41
|
+
export async function createCheckoutSession(agentId, packageType, successUrl, cancelUrl) {
|
|
42
|
+
if (!stripe) {
|
|
43
|
+
return { error: 'Stripe not configured' };
|
|
44
|
+
}
|
|
45
|
+
const pkg = CREDIT_PACKAGES[packageType];
|
|
46
|
+
if (!pkg) {
|
|
47
|
+
return { error: `Invalid package: ${packageType}` };
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const session = await stripe.checkout.sessions.create({
|
|
51
|
+
mode: 'payment',
|
|
52
|
+
payment_method_types: ['card'],
|
|
53
|
+
line_items: [
|
|
54
|
+
{
|
|
55
|
+
price_data: {
|
|
56
|
+
currency: 'usd',
|
|
57
|
+
product_data: {
|
|
58
|
+
name: `APIClaw ${pkg.name}`,
|
|
59
|
+
description: pkg.description,
|
|
60
|
+
metadata: {
|
|
61
|
+
packageType,
|
|
62
|
+
credits: pkg.credits.toString(),
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
unit_amount: pkg.amountUsd * 100, // Stripe uses cents
|
|
66
|
+
},
|
|
67
|
+
quantity: 1,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
metadata: {
|
|
71
|
+
agentId,
|
|
72
|
+
packageType,
|
|
73
|
+
credits: pkg.credits.toString(),
|
|
74
|
+
},
|
|
75
|
+
success_url: successUrl,
|
|
76
|
+
cancel_url: cancelUrl,
|
|
77
|
+
});
|
|
78
|
+
return {
|
|
79
|
+
sessionId: session.id,
|
|
80
|
+
url: session.url,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error('Stripe checkout error:', error);
|
|
85
|
+
return {
|
|
86
|
+
error: error instanceof Error ? error.message : 'Checkout failed',
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create a Payment Intent for programmatic payment (agent-to-agent)
|
|
92
|
+
*/
|
|
93
|
+
export async function createPaymentIntent(agentId, packageType) {
|
|
94
|
+
if (!stripe) {
|
|
95
|
+
return { error: 'Stripe not configured' };
|
|
96
|
+
}
|
|
97
|
+
const pkg = CREDIT_PACKAGES[packageType];
|
|
98
|
+
if (!pkg) {
|
|
99
|
+
return { error: `Invalid package: ${packageType}` };
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
const paymentIntent = await stripe.paymentIntents.create({
|
|
103
|
+
amount: pkg.amountUsd * 100,
|
|
104
|
+
currency: 'usd',
|
|
105
|
+
metadata: {
|
|
106
|
+
agentId,
|
|
107
|
+
packageType,
|
|
108
|
+
credits: pkg.credits.toString(),
|
|
109
|
+
},
|
|
110
|
+
automatic_payment_methods: {
|
|
111
|
+
enabled: true,
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
return {
|
|
115
|
+
clientSecret: paymentIntent.client_secret,
|
|
116
|
+
paymentIntentId: paymentIntent.id,
|
|
117
|
+
amount: pkg.amountUsd,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
console.error('Stripe payment intent error:', error);
|
|
122
|
+
return {
|
|
123
|
+
error: error instanceof Error ? error.message : 'Payment intent failed',
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Verify Stripe webhook signature
|
|
129
|
+
*/
|
|
130
|
+
export function verifyWebhookSignature(payload, signature) {
|
|
131
|
+
if (!stripe)
|
|
132
|
+
return null;
|
|
133
|
+
const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET;
|
|
134
|
+
if (!webhookSecret) {
|
|
135
|
+
console.error('STRIPE_WEBHOOK_SECRET not set');
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
try {
|
|
139
|
+
return stripe.webhooks.constructEvent(payload, signature, webhookSecret);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
console.error('Webhook signature verification failed:', error);
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
export function processWebhookEvent(event) {
|
|
147
|
+
switch (event.type) {
|
|
148
|
+
case 'checkout.session.completed': {
|
|
149
|
+
const session = event.data.object;
|
|
150
|
+
if (session.payment_status !== 'paid')
|
|
151
|
+
return null;
|
|
152
|
+
const metadata = session.metadata || {};
|
|
153
|
+
const agentId = metadata.agentId;
|
|
154
|
+
const packageType = metadata.packageType;
|
|
155
|
+
const credits = parseInt(metadata.credits || '0', 10);
|
|
156
|
+
if (!agentId || !packageType || !credits) {
|
|
157
|
+
console.error('Missing metadata in checkout session:', metadata);
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
agentId,
|
|
162
|
+
packageType,
|
|
163
|
+
credits,
|
|
164
|
+
amountUsd: (session.amount_total || 0) / 100,
|
|
165
|
+
stripeSessionId: session.id,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
case 'payment_intent.succeeded': {
|
|
169
|
+
const paymentIntent = event.data.object;
|
|
170
|
+
const metadata = paymentIntent.metadata || {};
|
|
171
|
+
const agentId = metadata.agentId;
|
|
172
|
+
const packageType = metadata.packageType;
|
|
173
|
+
const credits = parseInt(metadata.credits || '0', 10);
|
|
174
|
+
if (!agentId || !packageType || !credits) {
|
|
175
|
+
console.error('Missing metadata in payment intent:', metadata);
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
agentId,
|
|
180
|
+
packageType,
|
|
181
|
+
credits,
|
|
182
|
+
amountUsd: paymentIntent.amount / 100,
|
|
183
|
+
stripePaymentIntentId: paymentIntent.id,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
default:
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get Stripe instance (for advanced usage)
|
|
192
|
+
*/
|
|
193
|
+
export function getStripe() {
|
|
194
|
+
return stripe;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=stripe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stripe.js","sourceRoot":"","sources":["../src/stripe.ts"],"names":[],"mappings":"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"}
|
package/dist/test.d.ts
CHANGED
package/dist/test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|
package/dist/test.js
CHANGED
|
@@ -1,81 +1,111 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
1
2
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
3
|
+
* APIClaw End-to-End Test
|
|
4
|
+
* Tests the full flow: credits → purchase → real credentials
|
|
4
5
|
*/
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
console.log(
|
|
13
|
-
// Test 2: Discovery
|
|
14
|
-
console.log('\n📡 Test 2: API Discovery');
|
|
15
|
-
console.log('-'.repeat(40));
|
|
16
|
-
const smsResults = discoverAPIs('SMS');
|
|
17
|
-
console.log(`Query: "SMS"`);
|
|
18
|
-
console.log(`Results: ${smsResults.length}`);
|
|
19
|
-
smsResults.slice(0, 5).forEach(r => {
|
|
20
|
-
console.log(` - ${r.api.name} (score: ${r.relevance_score})`);
|
|
21
|
-
console.log(` ${r.api.description.slice(0, 60)}...`);
|
|
22
|
-
});
|
|
23
|
-
const weatherResults = discoverAPIs('weather');
|
|
24
|
-
console.log(`\nQuery: "weather"`);
|
|
25
|
-
console.log(`Results: ${weatherResults.length}`);
|
|
26
|
-
weatherResults.slice(0, 5).forEach(r => {
|
|
27
|
-
console.log(` - ${r.api.name} (score: ${r.relevance_score})`);
|
|
28
|
-
});
|
|
29
|
-
const paymentResults = discoverAPIs('payment');
|
|
30
|
-
console.log(`\nQuery: "payment"`);
|
|
31
|
-
console.log(`Results: ${paymentResults.length}`);
|
|
32
|
-
paymentResults.slice(0, 5).forEach(r => {
|
|
33
|
-
console.log(` - ${r.api.name} (score: ${r.relevance_score})`);
|
|
34
|
-
});
|
|
35
|
-
// Test 3: Get API Details
|
|
36
|
-
console.log('\n📋 Test 3: API Details');
|
|
37
|
-
console.log('-'.repeat(40));
|
|
38
|
-
const stripe = getAPIDetails('stripe');
|
|
39
|
-
if (stripe) {
|
|
40
|
-
console.log(`\n${stripe.name}:`);
|
|
41
|
-
console.log(` Category: ${stripe.category}`);
|
|
42
|
-
console.log(` Auth: ${stripe.auth}`);
|
|
43
|
-
console.log(` HTTPS: ${stripe.https}`);
|
|
44
|
-
console.log(` Link: ${stripe.link}`);
|
|
6
|
+
import { config } from 'dotenv';
|
|
7
|
+
config({ path: '.env.local' });
|
|
8
|
+
import { getAgentCredits, addCredits, purchaseAPIAccess, getBalanceSummary, getProvidersWithRealCredentials, } from './credits.js';
|
|
9
|
+
import { hasRealCredentials } from './credentials.js';
|
|
10
|
+
import { CREDIT_PACKAGES, createPaymentIntent } from './stripe.js';
|
|
11
|
+
const TEST_AGENT_ID = 'test_agent_001';
|
|
12
|
+
function log(msg) {
|
|
13
|
+
console.log(`\n${'='.repeat(60)}\n${msg}\n${'='.repeat(60)}`);
|
|
45
14
|
}
|
|
46
|
-
|
|
47
|
-
console.log(
|
|
48
|
-
console.log(
|
|
49
|
-
const categories = getCategories();
|
|
50
|
-
console.log(`Total categories: ${categories.length}`);
|
|
51
|
-
console.log(`Sample: ${categories.slice(0, 10).join(', ')}...`);
|
|
52
|
-
// Test 5: Credits System
|
|
53
|
-
console.log('\n💰 Test 5: Credit System');
|
|
54
|
-
console.log('-'.repeat(40));
|
|
55
|
-
const testAgent = 'agent_test_123';
|
|
56
|
-
// Check initial balance
|
|
57
|
-
let balance = getBalanceSummary(testAgent);
|
|
58
|
-
console.log(`Initial balance: $${balance.credits.balance_usd}`);
|
|
59
|
-
// Add credits
|
|
60
|
-
addCredits(testAgent, 50);
|
|
61
|
-
balance = getBalanceSummary(testAgent);
|
|
62
|
-
console.log(`After adding $50: $${balance.credits.balance_usd}`);
|
|
63
|
-
// Purchase API access
|
|
64
|
-
console.log('\n🛒 Purchasing stripe access for $10...');
|
|
65
|
-
const purchase = purchaseAPIAccess(testAgent, 'stripe', 10);
|
|
66
|
-
if (purchase.success) {
|
|
67
|
-
console.log(` ✅ Purchase successful!`);
|
|
68
|
-
console.log(` Purchase ID: ${purchase.purchase.id}`);
|
|
69
|
-
console.log(` Credits received: ${purchase.purchase.credits_purchased}`);
|
|
15
|
+
function logResult(label, data) {
|
|
16
|
+
console.log(`\n[${label}]`);
|
|
17
|
+
console.log(JSON.stringify(data, null, 2));
|
|
70
18
|
}
|
|
71
|
-
|
|
72
|
-
console.log(
|
|
19
|
+
async function runTests() {
|
|
20
|
+
console.log('\n🧪 APIClaw Connected Infrastructure Test\n');
|
|
21
|
+
// Test 1: Check real credentials availability
|
|
22
|
+
log('TEST 1: Real Credentials Check');
|
|
23
|
+
const realCredProviders = getProvidersWithRealCredentials();
|
|
24
|
+
console.log('Providers with real credentials:', realCredProviders);
|
|
25
|
+
console.log('46elks real:', hasRealCredentials('46elks'));
|
|
26
|
+
console.log('Twilio real:', hasRealCredentials('twilio'));
|
|
27
|
+
// Test 2: Credit packages
|
|
28
|
+
log('TEST 2: Credit Packages');
|
|
29
|
+
logResult('Packages', CREDIT_PACKAGES);
|
|
30
|
+
// Test 3: Add credits to agent
|
|
31
|
+
log('TEST 3: Add Credits');
|
|
32
|
+
const initialCredits = getAgentCredits(TEST_AGENT_ID);
|
|
33
|
+
logResult('Initial balance', initialCredits);
|
|
34
|
+
const afterAdd = addCredits(TEST_AGENT_ID, 50);
|
|
35
|
+
logResult('After adding $50', afterAdd);
|
|
36
|
+
// Test 4: Check balance summary
|
|
37
|
+
log('TEST 4: Balance Summary');
|
|
38
|
+
const summary = getBalanceSummary(TEST_AGENT_ID);
|
|
39
|
+
logResult('Summary', summary);
|
|
40
|
+
// Test 5: Purchase 46elks access
|
|
41
|
+
log('TEST 5: Purchase 46elks Access');
|
|
42
|
+
const purchase46elks = purchaseAPIAccess(TEST_AGENT_ID, '46elks', 10);
|
|
43
|
+
logResult('46elks Purchase Result', purchase46elks);
|
|
44
|
+
if (purchase46elks.success && purchase46elks.purchase) {
|
|
45
|
+
console.log('\n🔑 CREDENTIALS RECEIVED:');
|
|
46
|
+
console.log(' Type:', purchase46elks.purchase.credentials?.type);
|
|
47
|
+
if (purchase46elks.purchase.credentials?.type === 'basic') {
|
|
48
|
+
console.log(' Username:', purchase46elks.purchase.credentials?.username);
|
|
49
|
+
console.log(' Password:', purchase46elks.purchase.credentials?.password?.slice(0, 8) + '...');
|
|
50
|
+
}
|
|
51
|
+
console.log(' Real credentials:', hasRealCredentials('46elks'));
|
|
52
|
+
}
|
|
53
|
+
// Test 6: Purchase Twilio access
|
|
54
|
+
log('TEST 6: Purchase Twilio Access');
|
|
55
|
+
const purchaseTwilio = purchaseAPIAccess(TEST_AGENT_ID, 'twilio', 10);
|
|
56
|
+
logResult('Twilio Purchase Result', purchaseTwilio);
|
|
57
|
+
if (purchaseTwilio.success && purchaseTwilio.purchase) {
|
|
58
|
+
console.log('\n🔑 CREDENTIALS RECEIVED:');
|
|
59
|
+
console.log(' Type:', purchaseTwilio.purchase.credentials?.type);
|
|
60
|
+
if (purchaseTwilio.purchase.credentials?.type === 'basic') {
|
|
61
|
+
console.log(' Account SID:', purchaseTwilio.purchase.credentials?.username);
|
|
62
|
+
console.log(' Auth Token:', purchaseTwilio.purchase.credentials?.password?.slice(0, 8) + '...');
|
|
63
|
+
}
|
|
64
|
+
console.log(' Real credentials:', hasRealCredentials('twilio'));
|
|
65
|
+
}
|
|
66
|
+
// Test 7: Final balance
|
|
67
|
+
log('TEST 7: Final Balance');
|
|
68
|
+
const finalSummary = getBalanceSummary(TEST_AGENT_ID);
|
|
69
|
+
logResult('Final Summary', {
|
|
70
|
+
balance: finalSummary.credits.balance_usd,
|
|
71
|
+
active_purchases: finalSummary.active_purchases.length,
|
|
72
|
+
total_spent: finalSummary.total_spent_usd,
|
|
73
|
+
real_credential_providers: finalSummary.real_credentials_available,
|
|
74
|
+
});
|
|
75
|
+
// Test 8: Stripe integration (if configured)
|
|
76
|
+
log('TEST 8: Stripe Integration');
|
|
77
|
+
if (process.env.STRIPE_SECRET_KEY) {
|
|
78
|
+
console.log('Stripe is configured!');
|
|
79
|
+
// Test creating a payment intent
|
|
80
|
+
const paymentIntent = await createPaymentIntent('test_agent_stripe', 'starter');
|
|
81
|
+
if ('error' in paymentIntent) {
|
|
82
|
+
console.log('Payment Intent Error:', paymentIntent.error);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.log('Payment Intent Created:');
|
|
86
|
+
console.log(' ID:', paymentIntent.paymentIntentId);
|
|
87
|
+
console.log(' Amount: $' + paymentIntent.amount);
|
|
88
|
+
console.log(' Client Secret:', paymentIntent.clientSecret.slice(0, 20) + '...');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.log('Stripe not configured - skipping');
|
|
93
|
+
}
|
|
94
|
+
// Test 9: Insufficient balance
|
|
95
|
+
log('TEST 9: Insufficient Balance Check');
|
|
96
|
+
const insufficientPurchase = purchaseAPIAccess(TEST_AGENT_ID, '46elks', 1000);
|
|
97
|
+
logResult('Should fail', insufficientPurchase);
|
|
98
|
+
// Summary
|
|
99
|
+
log('TEST SUMMARY');
|
|
100
|
+
console.log(`
|
|
101
|
+
✅ Real credentials available for: ${realCredProviders.join(', ') || 'none'}
|
|
102
|
+
✅ Agent can add credits
|
|
103
|
+
✅ Agent can purchase API access
|
|
104
|
+
✅ Real 46elks/Twilio credentials returned when available
|
|
105
|
+
✅ Insufficient balance check works
|
|
106
|
+
${process.env.STRIPE_SECRET_KEY ? '✅ Stripe integration working' : '⚠️ Stripe not configured'}
|
|
107
|
+
`);
|
|
73
108
|
}
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
console.log(`\nFinal balance: $${balance.credits.balance_usd}`);
|
|
77
|
-
console.log(`Total spent: $${balance.total_spent_usd}`);
|
|
78
|
-
console.log(`Active purchases: ${balance.active_purchases.length}`);
|
|
79
|
-
console.log('\n' + '='.repeat(50));
|
|
80
|
-
console.log('✅ All tests completed!\n');
|
|
109
|
+
// Run tests
|
|
110
|
+
runTests().catch(console.error);
|
|
81
111
|
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
export interface SimpleAPI {
|
|
2
|
-
id: string;
|
|
3
|
-
name: string;
|
|
4
|
-
description: string;
|
|
5
|
-
category: string;
|
|
6
|
-
auth: string;
|
|
7
|
-
https: boolean;
|
|
8
|
-
cors: string;
|
|
9
|
-
link: string;
|
|
10
|
-
pricing: string;
|
|
11
|
-
keywords: string[];
|
|
12
|
-
}
|
|
13
1
|
export interface APIProvider {
|
|
14
2
|
id: string;
|
|
15
3
|
name: string;
|
|
@@ -77,20 +65,4 @@ export interface UsageRecord {
|
|
|
77
65
|
cost_incurred_usd: number;
|
|
78
66
|
last_used_at: string;
|
|
79
67
|
}
|
|
80
|
-
export interface UserSubscription {
|
|
81
|
-
user_id: string;
|
|
82
|
-
tier: 'free' | 'pro';
|
|
83
|
-
status: 'active' | 'cancelled' | 'expired' | 'paused' | 'billing_issue';
|
|
84
|
-
product_id: string | null;
|
|
85
|
-
expires_at: string | null;
|
|
86
|
-
fee_percentage: number;
|
|
87
|
-
updated_at: string;
|
|
88
|
-
}
|
|
89
|
-
export interface TransactionFee {
|
|
90
|
-
amount_usd: number;
|
|
91
|
-
fee_percentage: number;
|
|
92
|
-
fee_amount_usd: number;
|
|
93
|
-
net_amount_usd: number;
|
|
94
|
-
tier: 'free' | 'pro';
|
|
95
|
-
}
|
|
96
68
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;IACxD,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../src/webhook.ts"],"names":[],"mappings":""}
|