@nordsym/apiclaw 1.2.2 → 1.2.3

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 (77) hide show
  1. package/AGENTS.md +50 -33
  2. package/README.md +22 -12
  3. package/SOUL.md +60 -19
  4. package/STATUS.md +91 -169
  5. package/convex/_generated/api.d.ts +6 -0
  6. package/convex/directCall.ts +598 -0
  7. package/convex/providers.ts +341 -26
  8. package/convex/schema.ts +87 -0
  9. package/convex/usage.ts +260 -0
  10. package/convex/waitlist.ts +55 -0
  11. package/data/combined-02-26.json +22102 -0
  12. package/data/night-expansion-02-26-06-batch2.json +1898 -0
  13. package/data/night-expansion-02-26-06-batch3.json +1410 -0
  14. package/data/night-expansion-02-26-06.json +3146 -0
  15. package/data/night-expansion-02-26-full.json +9726 -0
  16. package/data/night-expansion-02-26-v2.json +330 -0
  17. package/data/night-expansion-02-26.json +171 -0
  18. package/dist/crypto.d.ts +7 -0
  19. package/dist/crypto.d.ts.map +1 -0
  20. package/dist/crypto.js +67 -0
  21. package/dist/crypto.js.map +1 -0
  22. package/dist/execute-dynamic.d.ts +116 -0
  23. package/dist/execute-dynamic.d.ts.map +1 -0
  24. package/dist/execute-dynamic.js +456 -0
  25. package/dist/execute-dynamic.js.map +1 -0
  26. package/dist/execute.d.ts +2 -1
  27. package/dist/execute.d.ts.map +1 -1
  28. package/dist/execute.js +35 -5
  29. package/dist/execute.js.map +1 -1
  30. package/dist/index.js +33 -4
  31. package/dist/index.js.map +1 -1
  32. package/dist/registry/apis.json +2081 -3
  33. package/docs/PRD-customer-key-passthrough.md +184 -0
  34. package/landing/public/badges/available-on-apiclaw.svg +14 -0
  35. package/landing/scripts/generate-stats.js +75 -4
  36. package/landing/src/app/admin/page.tsx +1 -1
  37. package/landing/src/app/api/auth/magic-link/route.ts +1 -1
  38. package/landing/src/app/api/auth/session/route.ts +1 -1
  39. package/landing/src/app/api/auth/verify/route.ts +1 -1
  40. package/landing/src/app/api/og/route.tsx +5 -3
  41. package/landing/src/app/docs/page.tsx +5 -4
  42. package/landing/src/app/earn/page.tsx +14 -11
  43. package/landing/src/app/globals.css +16 -15
  44. package/landing/src/app/layout.tsx +2 -2
  45. package/landing/src/app/page.tsx +425 -254
  46. package/landing/src/app/providers/dashboard/[apiId]/actions/[actionId]/edit/page.tsx +600 -0
  47. package/landing/src/app/providers/dashboard/[apiId]/actions/new/page.tsx +583 -0
  48. package/landing/src/app/providers/dashboard/[apiId]/actions/page.tsx +301 -0
  49. package/landing/src/app/providers/dashboard/[apiId]/direct-call/page.tsx +659 -0
  50. package/landing/src/app/providers/dashboard/[apiId]/page.tsx +381 -0
  51. package/landing/src/app/providers/dashboard/[apiId]/test/page.tsx +418 -0
  52. package/landing/src/app/providers/dashboard/layout.tsx +292 -0
  53. package/landing/src/app/providers/dashboard/page.tsx +353 -290
  54. package/landing/src/app/providers/register/page.tsx +87 -10
  55. package/landing/src/components/AiClientDropdown.tsx +85 -0
  56. package/landing/src/components/ConfigHelperModal.tsx +113 -0
  57. package/landing/src/components/HeroTabs.tsx +187 -0
  58. package/landing/src/components/ShareIntegrationModal.tsx +198 -0
  59. package/landing/src/hooks/useDashboardData.ts +53 -1
  60. package/landing/src/lib/apis.json +46554 -174
  61. package/landing/src/lib/convex-client.ts +22 -3
  62. package/landing/src/lib/stats.json +4 -4
  63. package/landing/tsconfig.tsbuildinfo +1 -1
  64. package/night-expansion-02-26-06-batch2.py +368 -0
  65. package/night-expansion-02-26-06-batch3.py +299 -0
  66. package/night-expansion-02-26-06.py +756 -0
  67. package/package.json +1 -1
  68. package/scripts/bulk-add-public-apis-v2.py +418 -0
  69. package/scripts/night-expansion-02-26-v2.py +296 -0
  70. package/scripts/night-expansion-02-26.py +890 -0
  71. package/scripts/seed-complete-api.js +181 -0
  72. package/scripts/seed-demo-api.sh +44 -0
  73. package/src/crypto.ts +75 -0
  74. package/src/execute-dynamic.ts +589 -0
  75. package/src/execute.ts +41 -5
  76. package/src/index.ts +38 -4
  77. package/src/registry/apis.json +2081 -3
@@ -1,6 +1,6 @@
1
1
  // Simple Convex HTTP client for the dashboard
2
2
 
3
- const CONVEX_URL = process.env.NEXT_PUBLIC_CONVEX_URL || "https://brilliant-puffin-712.eu-west-1.convex.cloud";
3
+ const CONVEX_URL = process.env.NEXT_PUBLIC_CONVEX_URL || "https://adventurous-avocet-799.convex.cloud";
4
4
 
5
5
  export async function convexQuery<T>(path: string, args: Record<string, unknown>): Promise<T> {
6
6
  const response = await fetch(`${CONVEX_URL}/api/query`, {
@@ -14,6 +14,12 @@ export async function convexQuery<T>(path: string, args: Record<string, unknown>
14
14
  }
15
15
 
16
16
  const result = await response.json();
17
+
18
+ // Convex returns HTTP 200 but status: "error" for query failures
19
+ if (result.status === "error") {
20
+ throw new Error(result.errorMessage || "Query failed");
21
+ }
22
+
17
23
  // Convex wraps response in { status: "success", value: {...} }
18
24
  return result.value !== undefined ? result.value : result;
19
25
  }
@@ -30,6 +36,12 @@ export async function convexMutation<T>(path: string, args: Record<string, unkno
30
36
  }
31
37
 
32
38
  const result = await response.json();
39
+
40
+ // Convex returns HTTP 200 but status: "error" for mutation failures
41
+ if (result.status === "error") {
42
+ throw new Error(result.errorMessage || "Mutation failed");
43
+ }
44
+
33
45
  // Convex wraps response in { status: "success", value: {...} }
34
46
  return result.value !== undefined ? result.value : result;
35
47
  }
@@ -54,6 +66,8 @@ export interface ProviderAPI {
54
66
  pricingNotes?: string;
55
67
  discoveryCount?: number;
56
68
  createdAt: number;
69
+ hasDirectCall?: boolean;
70
+ directCallStatus?: string;
57
71
  }
58
72
 
59
73
  export interface DailyStats {
@@ -66,10 +80,14 @@ export interface Analytics {
66
80
  totalCalls: number;
67
81
  uniqueAgents: number;
68
82
  totalRevenue: number;
83
+ successRate?: number;
84
+ avgLatency?: number;
69
85
  callsByDay: DailyStats[];
70
86
  topAgents: { agentId: string; calls: number }[];
71
- callsByRegion: Record<string, number>;
87
+ topActions?: { actionName: string; calls: number }[];
88
+ callsByRegion?: Record<string, number>;
72
89
  apis: { id: string; name: string; calls: number; status: string }[];
90
+ isPreview?: boolean;
73
91
  }
74
92
 
75
93
  export interface Earnings {
@@ -96,7 +114,8 @@ export async function getSession(token: string): Promise<ProviderSession | null>
96
114
 
97
115
  // Get provider APIs
98
116
  export async function getProviderAPIs(providerId: string): Promise<ProviderAPI[]> {
99
- return convexQuery("providers:getProviderAPIs", { providerId });
117
+ // Use the enhanced query that includes Direct Call status
118
+ return convexQuery("providers:getProviderAPIsWithStatus", { providerId });
100
119
  }
101
120
 
102
121
  // Get analytics
@@ -1,6 +1,6 @@
1
1
  {
2
- "apiCount": 16307,
3
- "categoryCount": 31,
4
- "lastUpdated": "2026-02-23T05:09:56.435792",
5
- "generatedAt": "2026-02-23T23:08:40.384Z"
2
+ "apiCount": 19176,
3
+ "categoryCount": 58,
4
+ "lastUpdated": "2026-02-26",
5
+ "generatedAt": "2026-02-26T21:08:50.747Z"
6
6
  }