@nordsym/apiclaw 2.8.5 → 2.8.6

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/test.js CHANGED
@@ -1,111 +1,28 @@
1
1
  #!/usr/bin/env npx tsx
2
- /**
3
- * APIClaw End-to-End Test
4
- * Tests the full flow: credits → purchase → real credentials
5
- */
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)}`);
2
+ import assert from "node:assert/strict";
3
+ import { FREE_CALL_PATHS, ENFORCED_CALL_PATHS, requireVerifiedOwner, } from "./registration-guard.js";
4
+ function activeContext(overrides = {}) {
5
+ return {
6
+ sessionToken: "apiclaw_test_session",
7
+ workspaceId: "test_workspace",
8
+ email: "test@example.com",
9
+ tier: "free",
10
+ status: "active",
11
+ usageCount: 0,
12
+ usageRemaining: 25,
13
+ ...overrides,
14
+ };
14
15
  }
15
- function logResult(label, data) {
16
- console.log(`\n[${label}]`);
17
- console.log(JSON.stringify(data, null, 2));
16
+ assert.equal(FREE_CALL_PATHS.has("purchase_access"), false);
17
+ assert.equal(FREE_CALL_PATHS.has("add_credits"), false);
18
+ assert.equal(ENFORCED_CALL_PATHS.has("call_api"), true);
19
+ assert.equal(ENFORCED_CALL_PATHS.has("capability"), true);
20
+ assert.equal(requireVerifiedOwner(null).ok, false);
21
+ assert.equal(requireVerifiedOwner(activeContext()).ok, true);
22
+ const quotaResult = requireVerifiedOwner(activeContext({ usageRemaining: 0 }));
23
+ assert.equal(quotaResult.ok, false);
24
+ if (!quotaResult.ok) {
25
+ assert.equal(quotaResult.reason, "quota_exceeded");
18
26
  }
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
- `);
108
- }
109
- // Run tests
110
- runTests().catch(console.error);
27
+ console.log("APIClaw safe smoke tests passed");
111
28
  //# 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":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;AAEjC,SAAS,aAAa,CAAC,YAA2C,EAAE;IAClE,OAAO;QACL,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,gBAAgB;QAC7B,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,EAAE;QAClB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,CAAC;AAC5D,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC;AACxD,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;AACxD,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;AAE1D,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACnD,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAE7D,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACpC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;IACpB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACrD,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nordsym/apiclaw",
3
- "version": "2.8.5",
3
+ "version": "2.8.6",
4
4
  "description": "The Control Plane for AI Agents. 26,701 discoverable APIs, 2,906 callable, 49 fully managed. Agent-native auth: `apiclaw auth login` opens your browser, one-tap sign-in, writes ~/.apiclaw.toml. Four doors: local MCP, CLI, HTTP gateway, Remote MCP. One auth, every door.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -94,4 +94,4 @@
94
94
  "apiclaw": "./dist/bin.js",
95
95
  "apiclaw-http": "./dist/bin-http.js"
96
96
  }
97
- }
97
+ }