@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
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
APIClaw Demo Simulation
|
|
4
|
+
Creates a convincing terminal demo showing APIClaw in action.
|
|
5
|
+
For recording with asciinema.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import sys
|
|
9
|
+
import time
|
|
10
|
+
import json
|
|
11
|
+
import random
|
|
12
|
+
|
|
13
|
+
# ANSI colors
|
|
14
|
+
RESET = "\033[0m"
|
|
15
|
+
BOLD = "\033[1m"
|
|
16
|
+
DIM = "\033[2m"
|
|
17
|
+
CYAN = "\033[36m"
|
|
18
|
+
GREEN = "\033[32m"
|
|
19
|
+
YELLOW = "\033[33m"
|
|
20
|
+
MAGENTA = "\033[35m"
|
|
21
|
+
BLUE = "\033[34m"
|
|
22
|
+
WHITE = "\033[97m"
|
|
23
|
+
GRAY = "\033[90m"
|
|
24
|
+
|
|
25
|
+
def type_text(text, delay=0.03, newline=True):
|
|
26
|
+
"""Simulate typing with variable speed."""
|
|
27
|
+
for char in text:
|
|
28
|
+
sys.stdout.write(char)
|
|
29
|
+
sys.stdout.flush()
|
|
30
|
+
# Vary speed slightly for realism
|
|
31
|
+
time.sleep(delay * random.uniform(0.5, 1.5))
|
|
32
|
+
if newline:
|
|
33
|
+
print()
|
|
34
|
+
|
|
35
|
+
def instant_print(text, newline=True):
|
|
36
|
+
"""Print instantly (for command output)."""
|
|
37
|
+
if newline:
|
|
38
|
+
print(text)
|
|
39
|
+
else:
|
|
40
|
+
sys.stdout.write(text)
|
|
41
|
+
sys.stdout.flush()
|
|
42
|
+
|
|
43
|
+
def pause(seconds=0.5):
|
|
44
|
+
time.sleep(seconds)
|
|
45
|
+
|
|
46
|
+
def clear_screen():
|
|
47
|
+
print("\033[2J\033[H", end="")
|
|
48
|
+
|
|
49
|
+
def show_prompt():
|
|
50
|
+
sys.stdout.write(f"{GREEN}${RESET} ")
|
|
51
|
+
sys.stdout.flush()
|
|
52
|
+
|
|
53
|
+
def demo():
|
|
54
|
+
clear_screen()
|
|
55
|
+
pause(0.5)
|
|
56
|
+
|
|
57
|
+
# Scene 1: Show the problem
|
|
58
|
+
instant_print(f"{DIM}# The problem: Manual API integration is slow{RESET}")
|
|
59
|
+
pause(1)
|
|
60
|
+
instant_print(f"{DIM}# Let's fix that with APIClaw{RESET}")
|
|
61
|
+
pause(1.5)
|
|
62
|
+
print()
|
|
63
|
+
|
|
64
|
+
# Scene 2: Start MCP session
|
|
65
|
+
show_prompt()
|
|
66
|
+
type_text("npx @nordsym/apiclaw", delay=0.04)
|
|
67
|
+
pause(0.5)
|
|
68
|
+
|
|
69
|
+
instant_print(f"""
|
|
70
|
+
{CYAN}╔══════════════════════════════════════════════════════════════╗
|
|
71
|
+
║ {BOLD}APIClaw{RESET}{CYAN} v1.0.0 — The API layer for autonomous agents ║
|
|
72
|
+
║ {DIM}MCP Server ready • 4000+ APIs indexed{RESET}{CYAN} ║
|
|
73
|
+
╚══════════════════════════════════════════════════════════════╝{RESET}
|
|
74
|
+
""")
|
|
75
|
+
pause(1)
|
|
76
|
+
|
|
77
|
+
# Scene 3: Agent query
|
|
78
|
+
instant_print(f"{GRAY}─────────────────────────────────────────────────────────{RESET}")
|
|
79
|
+
instant_print(f"{MAGENTA}🤖 Agent:{RESET} {WHITE}\"I need to send SMS to Swedish phone numbers\"{RESET}")
|
|
80
|
+
instant_print(f"{GRAY}─────────────────────────────────────────────────────────{RESET}")
|
|
81
|
+
pause(0.3)
|
|
82
|
+
|
|
83
|
+
instant_print(f"\n{YELLOW}⚡ discover_apis{RESET}")
|
|
84
|
+
instant_print(f'{DIM} query: "send SMS Swedish numbers"{RESET}')
|
|
85
|
+
pause(0.8)
|
|
86
|
+
|
|
87
|
+
# Scene 4: Results
|
|
88
|
+
instant_print(f"""
|
|
89
|
+
{GREEN}✓ Found 3 matching APIs:{RESET}
|
|
90
|
+
|
|
91
|
+
{BOLD}┌─────────────────────────────────────────────────────────────┐{RESET}
|
|
92
|
+
│ {CYAN}46elks{RESET} {GREEN}★★★★★{RESET} {DIM}(SE){RESET} │
|
|
93
|
+
│ Swedish SMS/Voice API • Real credentials available │
|
|
94
|
+
│ {DIM}Pricing: $0.03/SMS • Best for Sweden{RESET} │
|
|
95
|
+
├─────────────────────────────────────────────────────────────┤
|
|
96
|
+
│ {CYAN}Twilio{RESET} {GREEN}★★★★☆{RESET} {DIM}(Global){RESET} │
|
|
97
|
+
│ Global SMS/Voice platform • 180+ countries │
|
|
98
|
+
│ {DIM}Pricing: $0.05/SMS • Great reliability{RESET} │
|
|
99
|
+
├─────────────────────────────────────────────────────────────┤
|
|
100
|
+
│ {CYAN}Vonage{RESET} {GREEN}★★★★☆{RESET} {DIM}(Global){RESET} │
|
|
101
|
+
│ Enterprise communication APIs │
|
|
102
|
+
│ {DIM}Pricing: $0.04/SMS • Enterprise focus{RESET} │
|
|
103
|
+
└─────────────────────────────────────────────────────────────┘
|
|
104
|
+
""")
|
|
105
|
+
pause(1.5)
|
|
106
|
+
|
|
107
|
+
# Scene 5: Purchase
|
|
108
|
+
instant_print(f"{GRAY}─────────────────────────────────────────────────────────{RESET}")
|
|
109
|
+
instant_print(f"{MAGENTA}🤖 Agent:{RESET} {WHITE}\"Purchase 46elks access for $10\"{RESET}")
|
|
110
|
+
instant_print(f"{GRAY}─────────────────────────────────────────────────────────{RESET}")
|
|
111
|
+
pause(0.3)
|
|
112
|
+
|
|
113
|
+
instant_print(f"\n{YELLOW}⚡ purchase_access{RESET}")
|
|
114
|
+
instant_print(f'{DIM} api_id: "46elks", amount: $10{RESET}')
|
|
115
|
+
pause(0.5)
|
|
116
|
+
|
|
117
|
+
# Loading animation
|
|
118
|
+
for i in range(3):
|
|
119
|
+
sys.stdout.write(f"\r{DIM} Processing{'.' * (i+1)}{RESET} ")
|
|
120
|
+
sys.stdout.flush()
|
|
121
|
+
time.sleep(0.3)
|
|
122
|
+
print()
|
|
123
|
+
pause(0.3)
|
|
124
|
+
|
|
125
|
+
# Scene 6: Credentials received
|
|
126
|
+
instant_print(f"""
|
|
127
|
+
{GREEN}✓ Purchase complete!{RESET}
|
|
128
|
+
|
|
129
|
+
{BOLD}┌─────────────────────────────────────────────────────────────┐{RESET}
|
|
130
|
+
│ {GREEN}🔑 CREDENTIALS RECEIVED{RESET} │
|
|
131
|
+
├─────────────────────────────────────────────────────────────┤
|
|
132
|
+
│ Provider: {CYAN}46elks{RESET} │
|
|
133
|
+
│ Type: Basic Auth │
|
|
134
|
+
│ Username: {WHITE}u8a7f3c2d1e9b4567{RESET} │
|
|
135
|
+
│ Password: {WHITE}••••••••••••••••{RESET} │
|
|
136
|
+
│ Credits: {GREEN}300 SMS{RESET} │
|
|
137
|
+
│ Expires: Never (pre-paid) │
|
|
138
|
+
├─────────────────────────────────────────────────────────────┤
|
|
139
|
+
│ {DIM}Ready to use immediately. No signup required.{RESET} │
|
|
140
|
+
└─────────────────────────────────────────────────────────────┘
|
|
141
|
+
""")
|
|
142
|
+
pause(1.5)
|
|
143
|
+
|
|
144
|
+
# Scene 7: Agent uses API
|
|
145
|
+
instant_print(f"{GRAY}─────────────────────────────────────────────────────────{RESET}")
|
|
146
|
+
instant_print(f"{MAGENTA}🤖 Agent:{RESET} {WHITE}\"Send SMS: Hello from APIClaw!\"{RESET}")
|
|
147
|
+
instant_print(f"{GRAY}─────────────────────────────────────────────────────────{RESET}")
|
|
148
|
+
pause(0.5)
|
|
149
|
+
|
|
150
|
+
instant_print(f"""
|
|
151
|
+
{GREEN}✓ SMS sent successfully{RESET}
|
|
152
|
+
|
|
153
|
+
{DIM}┌─────────────────────────────────────────────────────────────┐
|
|
154
|
+
│ To: +46705292583 │
|
|
155
|
+
│ Message: "Hello from APIClaw!" │
|
|
156
|
+
│ Status: delivered │
|
|
157
|
+
│ Cost: 1 credit (299 remaining) │
|
|
158
|
+
└─────────────────────────────────────────────────────────────┘{RESET}
|
|
159
|
+
""")
|
|
160
|
+
pause(1)
|
|
161
|
+
|
|
162
|
+
# Final message
|
|
163
|
+
instant_print(f"""
|
|
164
|
+
{CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━{RESET}
|
|
165
|
+
{BOLD} APIClaw: From query to working API in 30 seconds.{RESET}
|
|
166
|
+
{CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━{RESET}
|
|
167
|
+
|
|
168
|
+
{DIM}npx @nordsym/apiclaw{RESET} • {DIM}apiclaw.nordsym.com{RESET}
|
|
169
|
+
""")
|
|
170
|
+
pause(2)
|
|
171
|
+
|
|
172
|
+
if __name__ == "__main__":
|
|
173
|
+
try:
|
|
174
|
+
demo()
|
|
175
|
+
except KeyboardInterrupt:
|
|
176
|
+
print("\n")
|
|
177
|
+
sys.exit(0)
|