@nordsym/apiclaw 1.3.7 → 1.3.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.
Files changed (189) hide show
  1. package/README.md +420 -200
  2. package/convex/_generated/api.d.ts +4 -0
  3. package/convex/agents.ts +403 -0
  4. package/convex/directCall.ts +80 -0
  5. package/convex/earnProgress.ts +753 -0
  6. package/convex/logs.ts +17 -0
  7. package/convex/providerKeys.ts +82 -2
  8. package/convex/schema.ts +71 -2
  9. package/convex/workspaces.ts +84 -2
  10. package/dist/adapters/base.d.ts +112 -0
  11. package/dist/adapters/base.d.ts.map +1 -0
  12. package/dist/adapters/base.js +247 -0
  13. package/dist/adapters/base.js.map +1 -0
  14. package/dist/adapters/claude-desktop.d.ts +12 -0
  15. package/dist/adapters/claude-desktop.d.ts.map +1 -0
  16. package/dist/adapters/claude-desktop.js +36 -0
  17. package/dist/adapters/claude-desktop.js.map +1 -0
  18. package/dist/adapters/cline.d.ts +20 -0
  19. package/dist/adapters/cline.d.ts.map +1 -0
  20. package/dist/adapters/cline.js +77 -0
  21. package/dist/adapters/cline.js.map +1 -0
  22. package/dist/adapters/continue.d.ts +26 -0
  23. package/dist/adapters/continue.d.ts.map +1 -0
  24. package/dist/adapters/continue.js +68 -0
  25. package/dist/adapters/continue.js.map +1 -0
  26. package/dist/adapters/cursor.d.ts +12 -0
  27. package/dist/adapters/cursor.d.ts.map +1 -0
  28. package/dist/adapters/cursor.js +38 -0
  29. package/dist/adapters/cursor.js.map +1 -0
  30. package/dist/adapters/custom.d.ts +47 -0
  31. package/dist/adapters/custom.d.ts.map +1 -0
  32. package/dist/adapters/custom.js +146 -0
  33. package/dist/adapters/custom.js.map +1 -0
  34. package/dist/adapters/detect.d.ts +69 -0
  35. package/dist/adapters/detect.d.ts.map +1 -0
  36. package/dist/adapters/detect.js +158 -0
  37. package/dist/adapters/detect.js.map +1 -0
  38. package/dist/adapters/index.d.ts +21 -0
  39. package/dist/adapters/index.d.ts.map +1 -0
  40. package/dist/adapters/index.js +23 -0
  41. package/dist/adapters/index.js.map +1 -0
  42. package/dist/adapters/windsurf.d.ts +12 -0
  43. package/dist/adapters/windsurf.d.ts.map +1 -0
  44. package/dist/adapters/windsurf.js +39 -0
  45. package/dist/adapters/windsurf.js.map +1 -0
  46. package/dist/bin.d.ts +9 -0
  47. package/dist/bin.d.ts.map +1 -0
  48. package/dist/bin.js +19 -0
  49. package/dist/bin.js.map +1 -0
  50. package/dist/cli/commands/doctor.d.ts +34 -0
  51. package/dist/cli/commands/doctor.d.ts.map +1 -0
  52. package/dist/cli/commands/doctor.js +312 -0
  53. package/dist/cli/commands/doctor.js.map +1 -0
  54. package/dist/cli/commands/index.d.ts +9 -0
  55. package/dist/cli/commands/index.d.ts.map +1 -0
  56. package/dist/cli/commands/index.js +9 -0
  57. package/dist/cli/commands/index.js.map +1 -0
  58. package/dist/cli/commands/restore.d.ts +50 -0
  59. package/dist/cli/commands/restore.d.ts.map +1 -0
  60. package/dist/cli/commands/restore.js +260 -0
  61. package/dist/cli/commands/restore.js.map +1 -0
  62. package/dist/cli/commands/setup.d.ts +19 -0
  63. package/dist/cli/commands/setup.d.ts.map +1 -0
  64. package/dist/cli/commands/setup.js +206 -0
  65. package/dist/cli/commands/setup.js.map +1 -0
  66. package/dist/cli/commands/uninstall.d.ts +37 -0
  67. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  68. package/dist/cli/commands/uninstall.js +189 -0
  69. package/dist/cli/commands/uninstall.js.map +1 -0
  70. package/dist/cli/index.d.ts +7 -0
  71. package/dist/cli/index.d.ts.map +1 -0
  72. package/dist/cli/index.js +97 -0
  73. package/dist/cli/index.js.map +1 -0
  74. package/dist/discovery.d.ts +6 -2
  75. package/dist/discovery.d.ts.map +1 -1
  76. package/dist/discovery.js +296 -2
  77. package/dist/discovery.js.map +1 -1
  78. package/dist/enterprise/env.d.ts +56 -0
  79. package/dist/enterprise/env.d.ts.map +1 -0
  80. package/dist/enterprise/env.js +124 -0
  81. package/dist/enterprise/env.js.map +1 -0
  82. package/dist/enterprise/index.d.ts +7 -0
  83. package/dist/enterprise/index.d.ts.map +1 -0
  84. package/dist/enterprise/index.js +7 -0
  85. package/dist/enterprise/index.js.map +1 -0
  86. package/dist/enterprise/script-generator.d.ts +32 -0
  87. package/dist/enterprise/script-generator.d.ts.map +1 -0
  88. package/dist/enterprise/script-generator.js +461 -0
  89. package/dist/enterprise/script-generator.js.map +1 -0
  90. package/dist/execute.d.ts +21 -0
  91. package/dist/execute.d.ts.map +1 -1
  92. package/dist/execute.js +231 -0
  93. package/dist/execute.js.map +1 -1
  94. package/dist/index.js +79 -7
  95. package/dist/index.js.map +1 -1
  96. package/dist/stripe.d.ts +1 -1
  97. package/dist/stripe.js +1 -1
  98. package/dist/stripe.js.map +1 -1
  99. package/dist/types.d.ts +29 -0
  100. package/dist/types.d.ts.map +1 -1
  101. package/dist/ui/colors.d.ts +111 -0
  102. package/dist/ui/colors.d.ts.map +1 -0
  103. package/dist/ui/colors.js +185 -0
  104. package/dist/ui/colors.js.map +1 -0
  105. package/dist/ui/errors.d.ts +69 -0
  106. package/dist/ui/errors.d.ts.map +1 -0
  107. package/dist/ui/errors.js +334 -0
  108. package/dist/ui/errors.js.map +1 -0
  109. package/dist/ui/index.d.ts +10 -0
  110. package/dist/ui/index.d.ts.map +1 -0
  111. package/dist/ui/index.js +14 -0
  112. package/dist/ui/index.js.map +1 -0
  113. package/dist/ui/prompts.d.ts +88 -0
  114. package/dist/ui/prompts.d.ts.map +1 -0
  115. package/dist/ui/prompts.js +295 -0
  116. package/dist/ui/prompts.js.map +1 -0
  117. package/dist/ui/spinner.d.ts +112 -0
  118. package/dist/ui/spinner.d.ts.map +1 -0
  119. package/dist/ui/spinner.js +229 -0
  120. package/dist/ui/spinner.js.map +1 -0
  121. package/dist/utils/backup.d.ts +48 -0
  122. package/dist/utils/backup.d.ts.map +1 -0
  123. package/dist/utils/backup.js +182 -0
  124. package/dist/utils/backup.js.map +1 -0
  125. package/dist/utils/config.d.ts +80 -0
  126. package/dist/utils/config.d.ts.map +1 -0
  127. package/dist/utils/config.js +221 -0
  128. package/dist/utils/config.js.map +1 -0
  129. package/dist/utils/os.d.ts +45 -0
  130. package/dist/utils/os.d.ts.map +1 -0
  131. package/dist/utils/os.js +106 -0
  132. package/dist/utils/os.js.map +1 -0
  133. package/dist/utils/paths.d.ts +38 -0
  134. package/dist/utils/paths.d.ts.map +1 -0
  135. package/dist/utils/paths.js +160 -0
  136. package/dist/utils/paths.js.map +1 -0
  137. package/docs/PRD-BILLING.md +226 -0
  138. package/docs/PRD-EARN-SYSTEM.md +261 -0
  139. package/docs/PRD-MCP-AUTO-SETUP.md +623 -0
  140. package/docs/enterprise-deployment.md +728 -0
  141. package/landing/next.config.mjs +14 -0
  142. package/landing/public/stats.json +4 -2
  143. package/landing/scripts/generate-stats.js +12 -0
  144. package/landing/src/app/api/workspace-auth/magic-link/route.ts +6 -3
  145. package/landing/src/app/auth/verify/page.tsx +11 -4
  146. package/landing/src/app/docs/page.tsx +1 -1
  147. package/landing/src/app/join/page.tsx +49 -0
  148. package/landing/src/app/login/page.tsx +7 -1
  149. package/landing/src/app/page.tsx +13 -28
  150. package/landing/src/app/providers/register/page.tsx +1 -1
  151. package/landing/src/app/workspace/page.tsx +483 -710
  152. package/landing/src/components/CheckoutButton.tsx +1 -1
  153. package/landing/src/components/EarnCreditsTab.tsx +842 -0
  154. package/landing/src/lib/stats.json +3 -1
  155. package/package.json +9 -2
  156. package/src/adapters/base.ts +363 -0
  157. package/src/adapters/claude-desktop.ts +41 -0
  158. package/src/adapters/cline.ts +88 -0
  159. package/src/adapters/continue.ts +91 -0
  160. package/src/adapters/cursor.ts +43 -0
  161. package/src/adapters/custom.ts +188 -0
  162. package/src/adapters/detect.ts +202 -0
  163. package/src/adapters/index.ts +47 -0
  164. package/src/adapters/windsurf.ts +44 -0
  165. package/src/bin.ts +19 -0
  166. package/src/cli/commands/doctor.ts +367 -0
  167. package/src/cli/commands/index.ts +9 -0
  168. package/src/cli/commands/restore.ts +333 -0
  169. package/src/cli/commands/setup.ts +276 -0
  170. package/src/cli/commands/uninstall.ts +240 -0
  171. package/src/cli/index.ts +107 -0
  172. package/src/discovery.ts +328 -3
  173. package/src/enterprise/env.ts +156 -0
  174. package/src/enterprise/index.ts +7 -0
  175. package/src/enterprise/script-generator.ts +481 -0
  176. package/src/execute.ts +256 -0
  177. package/src/index.ts +85 -7
  178. package/src/stripe.ts +1 -1
  179. package/src/types.ts +32 -0
  180. package/src/ui/colors.ts +219 -0
  181. package/src/ui/errors.ts +394 -0
  182. package/src/ui/index.ts +17 -0
  183. package/src/ui/prompts.ts +390 -0
  184. package/src/ui/spinner.ts +325 -0
  185. package/src/utils/backup.ts +224 -0
  186. package/src/utils/config.ts +315 -0
  187. package/src/utils/os.ts +124 -0
  188. package/src/utils/paths.ts +203 -0
  189. package/landing/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,261 @@
1
+ # PRD: APIClaw Earn System
2
+
3
+ **Status:** Draft
4
+ **Datum:** 2026-02-28
5
+ **Författare:** Symbot + Gustav
6
+
7
+ ---
8
+
9
+ ## Sammanfattning
10
+
11
+ Gamifierat earn-system där användare tjänar API calls genom att slutföra tasks. Två kategorier: **Usage tasks** (driver aha-moment) och **Growth tasks** (driver tillväxt).
12
+
13
+ ---
14
+
15
+ ## Earn Tasks
16
+
17
+ ### Usage Tasks (driver aha-moment)
18
+
19
+ | Task | Calls | Trigger |
20
+ |------|-------|---------|
21
+ | Gör första Direct Call | +15 | API-anrop loggas i system |
22
+ | Testa 3 olika APIs | +10 | 3 unika API endpoints anropade |
23
+ | Lista din Agent | +10 | Agent publicerad i marketplace |
24
+ | Lista ditt API | +10 | API publicerad som provider |
25
+ | Sätt upp Direct Call (BYOK) | +5 | Minst 1 API key sparad |
26
+
27
+ ### Growth Tasks (driver tillväxt)
28
+
29
+ | Task | Calls | Trigger |
30
+ |------|-------|---------|
31
+ | Star on GitHub | +10 | OAuth-verifierad eller manuell claim |
32
+ | Follow @NordSym | +5 | OAuth-verifierad eller manuell claim |
33
+ | Invite Friends | +10/referral | Referral-kod använd vid signup |
34
+
35
+ ### Totalt
36
+
37
+ - **One-time max:** 65 calls (exkl. referrals)
38
+ - **Referrals:** Obegränsat (+10 per signup)
39
+
40
+ ---
41
+
42
+ ## UX Specification
43
+
44
+ ### Progress Section (top of Earn tab)
45
+
46
+ ```
47
+ ┌─────────────────────────────────────────────────────────────┐
48
+ │ │
49
+ │ [Target icon] Earn Progress │
50
+ │ │
51
+ │ [████████████░░░░░░░░░░░░] 35/65 calls earned │
52
+ │ │
53
+ │ USAGE │
54
+ │ ┌─────────────────────────────────────────────────────┐ │
55
+ │ │ [Check icon] First Direct Call +15 CLAIMED │ │
56
+ │ │ [Circle icon] Test 3 APIs +10 1/3 │ │
57
+ │ │ [Circle icon] List your Agent +10 [DO IT] │ │
58
+ │ │ [Circle icon] List your API +10 [DO IT] │ │
59
+ │ │ [Circle icon] Set up Direct Call +5 [DO IT] │ │
60
+ │ └─────────────────────────────────────────────────────┘ │
61
+ │ │
62
+ │ GROWTH │
63
+ │ ┌─────────────────────────────────────────────────────┐ │
64
+ │ │ [Check icon] Star on GitHub +10 CLAIMED │ │
65
+ │ │ [Circle icon] Follow @NordSym +5 [DO IT] │ │
66
+ │ │ [Users icon] Invite Friends +10 [COPY] │ │
67
+ │ │ 3 friends joined │ │
68
+ │ └─────────────────────────────────────────────────────┘ │
69
+ │ │
70
+ └─────────────────────────────────────────────────────────────┘
71
+ ```
72
+
73
+ ### Visual States
74
+
75
+ | State | Icon | Style |
76
+ |-------|------|-------|
77
+ | Not started | Circle (outline) | Gray text |
78
+ | In progress | Circle with partial fill | Blue text, "1/3" counter |
79
+ | Completed | CheckCircle (filled) | Green, "CLAIMED" badge |
80
+ | Action available | Button | Red accent, "[DO IT]" |
81
+
82
+ ### Icons (Lucide)
83
+
84
+ | Element | Icon |
85
+ |---------|------|
86
+ | Progress header | Target |
87
+ | Completed task | CheckCircle |
88
+ | Open task | Circle |
89
+ | Referral | Users |
90
+ | Direct Call | Zap |
91
+ | Agent | Bot |
92
+ | API | Code |
93
+ | GitHub | Github |
94
+ | Twitter/X | Twitter |
95
+
96
+ ### Animations
97
+
98
+ 1. **On claim:** Checkmark animation (scale in + color change)
99
+ 2. **Progress bar:** Smooth fill animation on update
100
+ 3. **Confetti:** Optional, on major milestone (50%, 100%)
101
+
102
+ ### Toast Notifications
103
+
104
+ | Event | Message |
105
+ |-------|---------|
106
+ | Task completed | "+15 calls earned! First Direct Call complete." |
107
+ | Milestone | "Halfway there! 32/65 calls earned." |
108
+ | Referral | "+10 calls! [Name] joined with your link." |
109
+
110
+ ---
111
+
112
+ ## Data Model
113
+
114
+ ### Convex Schema
115
+
116
+ ```typescript
117
+ // earnProgress table
118
+ {
119
+ userId: Id<"users">,
120
+
121
+ // Usage tasks
122
+ firstDirectCall: boolean,
123
+ firstDirectCallAt: number | null,
124
+
125
+ apisUsed: string[], // Track unique APIs
126
+ apisUsedComplete: boolean,
127
+
128
+ agentListed: boolean,
129
+ agentListedAt: number | null,
130
+
131
+ apiListed: boolean,
132
+ apiListedAt: number | null,
133
+
134
+ byokSetup: boolean,
135
+ byokSetupAt: number | null,
136
+
137
+ // Growth tasks
138
+ githubStarred: boolean,
139
+ githubStarredAt: number | null,
140
+
141
+ twitterFollowed: boolean,
142
+ twitterFollowedAt: number | null,
143
+
144
+ // Referrals (tracked separately)
145
+ referralCount: number,
146
+
147
+ // Calculated
148
+ totalEarned: number,
149
+ }
150
+ ```
151
+
152
+ ### API Endpoints
153
+
154
+ | Endpoint | Purpose |
155
+ |----------|---------|
156
+ | `earnProgress:get` | Get user's earn progress |
157
+ | `earnProgress:claimGithub` | Mark GitHub star as claimed |
158
+ | `earnProgress:claimTwitter` | Mark Twitter follow as claimed |
159
+ | `earnProgress:checkProgress` | Recalculate based on actual usage |
160
+
161
+ ### Automatic Triggers
162
+
163
+ | Action | Updates |
164
+ |--------|---------|
165
+ | API call logged | Check firstDirectCall, apisUsed |
166
+ | Agent published | Set agentListed |
167
+ | API published | Set apiListed |
168
+ | BYOK key saved | Set byokSetup |
169
+ | Referral signup | Increment referralCount |
170
+
171
+ ---
172
+
173
+ ## Integration Points
174
+
175
+ ### execute.ts
176
+
177
+ ```typescript
178
+ // After successful API call
179
+ if (!user.earnProgress.firstDirectCall) {
180
+ await ctx.runMutation(api.earnProgress.markFirstDirectCall, { userId });
181
+ }
182
+
183
+ // Track unique APIs
184
+ await ctx.runMutation(api.earnProgress.trackApiUsed, {
185
+ userId,
186
+ apiId: request.apiId
187
+ });
188
+ ```
189
+
190
+ ### Agent/API Publish Flow
191
+
192
+ ```typescript
193
+ // On agent publish
194
+ await ctx.runMutation(api.earnProgress.markAgentListed, { userId });
195
+
196
+ // On API publish
197
+ await ctx.runMutation(api.earnProgress.markApiListed, { userId });
198
+ ```
199
+
200
+ ### BYOK Settings
201
+
202
+ ```typescript
203
+ // On first API key saved
204
+ await ctx.runMutation(api.earnProgress.markByokSetup, { userId });
205
+ ```
206
+
207
+ ---
208
+
209
+ ## Free Tier Interaction
210
+
211
+ | Source | Calls |
212
+ |--------|-------|
213
+ | Monthly free | 50 |
214
+ | Earn bonus (max) | 65 |
215
+ | Referrals | Unlimited |
216
+ | **Total potential** | 115+ first month |
217
+
218
+ Earn bonus is **one-time**. Monthly free refreshes.
219
+
220
+ ---
221
+
222
+ ## Implementation Plan
223
+
224
+ ### Agents Required: 3
225
+
226
+ **Agent 1: Backend (Convex)**
227
+ - Create earnProgress table
228
+ - Mutations: markFirstDirectCall, trackApiUsed, markAgentListed, markApiListed, markByokSetup, claimGithub, claimTwitter
229
+ - Query: getEarnProgress
230
+ - Integration hooks in execute.ts, agent publish, API publish, BYOK save
231
+
232
+ **Agent 2: Frontend (Earn Tab)**
233
+ - Redesign Earn Credits tab with progress bar
234
+ - Task cards with states (open, in-progress, claimed)
235
+ - Toast notifications on completion
236
+ - Animations (checkmark, progress fill)
237
+ - Replace current earn/page.tsx content
238
+
239
+ **Agent 3: Referral System**
240
+ - Generate unique referral codes
241
+ - Track referral signups
242
+ - Credit referrer on successful signup
243
+ - Referral leaderboard (optional)
244
+
245
+ ---
246
+
247
+ ## Success Metrics
248
+
249
+ - Earn completion rate (% users completing all tasks)
250
+ - First Direct Call within 24h of signup
251
+ - Referral conversion rate
252
+ - Correlation: earn completion vs. paid conversion
253
+
254
+ ---
255
+
256
+ ## Open Questions
257
+
258
+ 1. **Manual claim vs. auto-detect:** GitHub/Twitter require OAuth or trust user?
259
+ 2. **Referral cap:** Unlimited or max 50 referrals?
260
+ 3. **Expiration:** Do earned calls expire or persist?
261
+ 4. **Existing users:** Retroactive credit for already-completed actions?