@nordsym/apiclaw 1.5.16 → 1.5.18

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 (172) hide show
  1. package/convex/http.js +196 -0
  2. package/convex/http.js.map +1 -1
  3. package/convex/http.ts +201 -0
  4. package/convex/http.ts.bak +934 -0
  5. package/dist/analytics.d.ts +0 -4
  6. package/dist/analytics.d.ts.map +1 -1
  7. package/dist/analytics.js +0 -1
  8. package/dist/analytics.js.map +1 -1
  9. package/dist/bin.js +1 -1
  10. package/dist/cli/commands/mcp-install.d.ts.map +1 -1
  11. package/dist/cli/commands/mcp-install.js +8 -87
  12. package/dist/cli/commands/mcp-install.js.map +1 -1
  13. package/dist/cli/index.js +0 -7
  14. package/dist/credentials.d.ts.map +1 -1
  15. package/dist/credentials.js +0 -128
  16. package/dist/credentials.js.map +1 -1
  17. package/dist/discovery.d.ts.map +1 -1
  18. package/dist/discovery.js +82 -191
  19. package/dist/discovery.js.map +1 -1
  20. package/dist/http-api.d.ts.map +1 -1
  21. package/dist/http-api.js +33 -17
  22. package/dist/http-api.js.map +1 -1
  23. package/dist/proxy.js +1 -1
  24. package/dist/proxy.js.map +1 -1
  25. package/landing/next-env.d.ts +0 -1
  26. package/landing/src/app/api/auth/magic-link/route.ts +1 -1
  27. package/landing/src/app/auth/verify/page.tsx +0 -6
  28. package/landing/src/app/dashboard/verify/page.tsx +0 -6
  29. package/landing/src/app/join/page.tsx +0 -6
  30. package/landing/src/app/layout.tsx +2 -2
  31. package/landing/src/app/login/page.tsx +1 -1
  32. package/landing/src/app/mou/[partnerId]/page.tsx +0 -6
  33. package/landing/src/app/page.tsx +18 -39
  34. package/landing/src/app/providers/dashboard/[apiId]/actions/[actionId]/edit/page.tsx +0 -6
  35. package/landing/src/app/providers/dashboard/[apiId]/actions/new/page.tsx +0 -5
  36. package/landing/src/app/providers/dashboard/[apiId]/actions/page.tsx +0 -5
  37. package/landing/src/app/providers/dashboard/[apiId]/direct-call/page.tsx +1 -6
  38. package/landing/src/app/providers/dashboard/[apiId]/page.tsx +0 -5
  39. package/landing/src/app/providers/dashboard/[apiId]/test/page.tsx +0 -5
  40. package/landing/src/app/providers/dashboard/layout.tsx +6 -6
  41. package/landing/src/app/providers/dashboard/login/page.tsx +1 -1
  42. package/landing/src/app/providers/dashboard/page.tsx +1 -1
  43. package/landing/src/app/providers/dashboard/verify/page.tsx +0 -6
  44. package/landing/src/app/providers/layout.tsx +1 -1
  45. package/landing/src/app/upgrade/page.tsx +0 -6
  46. package/landing/src/app/workspace/page.tsx +0 -6
  47. package/landing/src/components/HeroTabs.tsx +2 -2
  48. package/landing/src/components/{Workspace.tsx → ProviderDashboard.tsx} +2 -2
  49. package/landing/src/components/VideoDemo.tsx +10 -21
  50. package/landing/src/lib/mock-data.ts +1 -1
  51. package/landing/src/lib/stats.json +1 -1
  52. package/package.json +4 -6
  53. package/src/analytics.ts +0 -5
  54. package/src/bin.ts +1 -1
  55. package/src/cli/commands/mcp-install.ts +8 -90
  56. package/src/cli/index.ts +0 -8
  57. package/src/credentials.ts +0 -136
  58. package/src/discovery.ts +82 -191
  59. package/src/http-api.ts +34 -18
  60. package/src/proxy.ts +1 -1
  61. package/APILAYER_STATUS_2026-03-24.md +0 -38
  62. package/CHANGELOG-WHITELIST-V2.md +0 -269
  63. package/HIVR-WHITELIST-STATUS.md +0 -205
  64. package/HIVR-WHITELIST.md +0 -148
  65. package/TERMINOLOGY-AUDIT.md +0 -99
  66. package/TERMINOLOGY-FIXED.md +0 -74
  67. package/VIDEO-DEMO-GUIDE.md +0 -82
  68. package/WHITELIST-ARCHITECTURE.md +0 -379
  69. package/api/discover.ts +0 -71
  70. package/api/health.ts +0 -20
  71. package/direct-test.mjs +0 -51
  72. package/dist/access-control.d.ts +0 -45
  73. package/dist/access-control.d.ts.map +0 -1
  74. package/dist/access-control.js +0 -142
  75. package/dist/access-control.js.map +0 -1
  76. package/dist/chain-types.d.ts +0 -187
  77. package/dist/chain-types.d.ts.map +0 -1
  78. package/dist/chain-types.js +0 -33
  79. package/dist/chain-types.js.map +0 -1
  80. package/dist/convex/adminActivate.js +0 -46
  81. package/dist/convex/adminStats.js +0 -41
  82. package/dist/convex/agents.js +0 -498
  83. package/dist/convex/analytics.js +0 -165
  84. package/dist/convex/billing.js +0 -654
  85. package/dist/convex/capabilities.js +0 -144
  86. package/dist/convex/chains.js +0 -1041
  87. package/dist/convex/credits.js +0 -185
  88. package/dist/convex/crons.js +0 -16
  89. package/dist/convex/directCall.js +0 -626
  90. package/dist/convex/earnProgress.js +0 -648
  91. package/dist/convex/email.js +0 -299
  92. package/dist/convex/feedback.js +0 -226
  93. package/dist/convex/http.js +0 -909
  94. package/dist/convex/logs.js +0 -486
  95. package/dist/convex/mou.js +0 -81
  96. package/dist/convex/providerKeys.js +0 -256
  97. package/dist/convex/providers.js +0 -755
  98. package/dist/convex/purchases.js +0 -156
  99. package/dist/convex/ratelimit.js +0 -90
  100. package/dist/convex/schema.js +0 -709
  101. package/dist/convex/searchLogs.js +0 -128
  102. package/dist/convex/spendAlerts.js +0 -379
  103. package/dist/convex/stripeActions.js +0 -410
  104. package/dist/convex/teams.js +0 -214
  105. package/dist/convex/telemetry.js +0 -73
  106. package/dist/convex/usage.js +0 -228
  107. package/dist/convex/waitlist.js +0 -48
  108. package/dist/convex/webhooks.js +0 -409
  109. package/dist/convex/workspaces.js +0 -879
  110. package/dist/hivr-whitelist.d.ts +0 -18
  111. package/dist/hivr-whitelist.d.ts.map +0 -1
  112. package/dist/hivr-whitelist.js +0 -95
  113. package/dist/hivr-whitelist.js.map +0 -1
  114. package/dist/http-server-minimal.d.ts +0 -7
  115. package/dist/http-server-minimal.d.ts.map +0 -1
  116. package/dist/http-server-minimal.js +0 -126
  117. package/dist/http-server-minimal.js.map +0 -1
  118. package/dist/product-whitelist.d.ts +0 -37
  119. package/dist/product-whitelist.d.ts.map +0 -1
  120. package/dist/product-whitelist.js +0 -203
  121. package/dist/product-whitelist.js.map +0 -1
  122. package/dist/src/analytics.js +0 -129
  123. package/dist/src/bin.js +0 -17
  124. package/dist/src/capability-router.js +0 -240
  125. package/dist/src/chainExecutor.js +0 -451
  126. package/dist/src/chainResolver.js +0 -518
  127. package/dist/src/cli/commands/doctor.js +0 -324
  128. package/dist/src/cli/commands/mcp-install.js +0 -255
  129. package/dist/src/cli/commands/restore.js +0 -259
  130. package/dist/src/cli/commands/setup.js +0 -205
  131. package/dist/src/cli/commands/uninstall.js +0 -188
  132. package/dist/src/cli/index.js +0 -111
  133. package/dist/src/cli.js +0 -302
  134. package/dist/src/confirmation.js +0 -240
  135. package/dist/src/credentials.js +0 -357
  136. package/dist/src/credits.js +0 -260
  137. package/dist/src/crypto.js +0 -66
  138. package/dist/src/discovery.js +0 -504
  139. package/dist/src/enterprise/env.js +0 -123
  140. package/dist/src/enterprise/script-generator.js +0 -460
  141. package/dist/src/execute-dynamic.js +0 -473
  142. package/dist/src/execute.js +0 -1727
  143. package/dist/src/index.js +0 -2062
  144. package/dist/src/metered.js +0 -80
  145. package/dist/src/open-apis.js +0 -276
  146. package/dist/src/proxy.js +0 -28
  147. package/dist/src/session.js +0 -86
  148. package/dist/src/stripe.js +0 -407
  149. package/dist/src/telemetry.js +0 -49
  150. package/dist/src/types.js +0 -2
  151. package/dist/src/utils/backup.js +0 -181
  152. package/dist/src/utils/config.js +0 -220
  153. package/dist/src/utils/os.js +0 -105
  154. package/dist/src/utils/paths.js +0 -159
  155. package/landing/pages/api/discover.ts +0 -43
  156. package/landing/pages/api/health.ts +0 -20
  157. package/scripts/test-whitelist-v2.sh +0 -128
  158. package/src/access-control.ts +0 -174
  159. package/src/hivr-whitelist.ts +0 -110
  160. package/src/http-server-minimal.ts +0 -154
  161. package/src/product-whitelist.ts +0 -246
  162. package/test-actual-handlers.ts +0 -92
  163. package/test-apilayer-all-14.ts +0 -249
  164. package/test-apilayer-fixed.ts +0 -248
  165. package/test-direct-endpoints.ts +0 -174
  166. package/test-exact-endpoints.ts +0 -144
  167. package/test-final.ts +0 -83
  168. package/test-full-routing.ts +0 -100
  169. package/test-handlers-correct.ts +0 -217
  170. package/test-numverify-key.ts +0 -41
  171. package/test-via-handlers.ts +0 -92
  172. package/test-worldnews.mjs +0 -26
@@ -1,142 +0,0 @@
1
- /**
2
- * Access Control System
3
- * Controls which products/agents can access which providers
4
- *
5
- * Rules format:
6
- * - Wildcard: "hivr:*" = all Hivr agents
7
- * - Specific: "hivr:bytebee" = only ByteBee
8
- * - Product-level: "nordsym:*" = all NordSym agents
9
- *
10
- * Provider wildcards:
11
- * - "*" = all providers
12
- * - "brave_*" = all Brave providers
13
- * - Specific: ["brave_search", "groq"]
14
- */
15
- // Default access rules
16
- // These can be moved to Convex table for dynamic updates
17
- const DEFAULT_RULES = [
18
- {
19
- agentPattern: 'hivr:*',
20
- allowedProviders: ['*'], // Hivr gets everything
21
- description: 'All Hivr bees get full access',
22
- },
23
- {
24
- agentPattern: 'nordsym:*',
25
- allowedProviders: ['brave_search', 'groq', 'replicate'],
26
- description: 'NordSym team gets selected providers',
27
- },
28
- // Add more rules as needed
29
- ];
30
- // Cache for compiled rules
31
- let compiledRules = null;
32
- /**
33
- * Compile agentPattern to RegExp
34
- */
35
- function compilePattern(pattern) {
36
- // Convert wildcard pattern to regex
37
- // "hivr:*" → /^hivr:.+$/
38
- // "hivr:byte*" → /^hivr:byte.+$/
39
- const escaped = pattern
40
- .replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape regex chars
41
- .replace(/\*/g, '.+'); // Replace * with .+
42
- return new RegExp(`^${escaped}$`, 'i');
43
- }
44
- /**
45
- * Compile all rules (cache for performance)
46
- */
47
- function compileRules() {
48
- compiledRules = DEFAULT_RULES.map(rule => ({
49
- pattern: compilePattern(rule.agentPattern),
50
- providers: rule.allowedProviders,
51
- }));
52
- }
53
- /**
54
- * Check if provider matches pattern
55
- */
56
- function matchesProvider(provider, pattern) {
57
- if (pattern === '*')
58
- return true;
59
- if (pattern.endsWith('*')) {
60
- const prefix = pattern.slice(0, -1);
61
- return provider.startsWith(prefix);
62
- }
63
- return provider === pattern;
64
- }
65
- /**
66
- * Check if agentId is allowed to access provider
67
- */
68
- export function canAccessProvider(agentId, provider) {
69
- if (!compiledRules) {
70
- compileRules();
71
- }
72
- const normalized = agentId.toLowerCase().trim();
73
- const normalizedProvider = provider.toLowerCase().trim();
74
- // Find matching rule
75
- for (const rule of compiledRules) {
76
- if (rule.pattern.test(normalized)) {
77
- // Check if provider is allowed
78
- for (const providerPattern of rule.providers) {
79
- if (matchesProvider(normalizedProvider, providerPattern)) {
80
- return true;
81
- }
82
- }
83
- // Rule matched but provider not in allowlist
84
- return false;
85
- }
86
- }
87
- // No rule matched = deny by default
88
- console.warn(`[Access Control] No rule for ${normalized}`);
89
- return false;
90
- }
91
- /**
92
- * Get allowed providers for agentId
93
- */
94
- export function getAllowedProviders(agentId) {
95
- if (!compiledRules) {
96
- compileRules();
97
- }
98
- const normalized = agentId.toLowerCase().trim();
99
- // Find matching rule
100
- for (const rule of compiledRules) {
101
- if (rule.pattern.test(normalized)) {
102
- return rule.providers;
103
- }
104
- }
105
- return [];
106
- }
107
- /**
108
- * Add new access rule (runtime)
109
- */
110
- export function addAccessRule(rule) {
111
- DEFAULT_RULES.push(rule);
112
- compiledRules = null; // Force recompile
113
- console.log(`[Access Control] Added rule for ${rule.agentPattern}`);
114
- }
115
- /**
116
- * Get all access rules (for debugging/admin)
117
- */
118
- export function getAccessRules() {
119
- return [...DEFAULT_RULES];
120
- }
121
- /**
122
- * Check if agentId + provider combination is allowed
123
- * Combines whitelist check + access control
124
- */
125
- export async function isAllowed(agentId, provider) {
126
- if (!agentId) {
127
- return { allowed: false, reason: 'No agentId provided' };
128
- }
129
- // First check: Is agent whitelisted?
130
- const { isAuthorized } = await import('./product-whitelist.js');
131
- const whitelisted = await isAuthorized(agentId);
132
- if (!whitelisted) {
133
- return { allowed: false, reason: 'Agent not whitelisted' };
134
- }
135
- // Second check: Does agent have access to this provider?
136
- const hasAccess = canAccessProvider(agentId, provider);
137
- if (!hasAccess) {
138
- return { allowed: false, reason: 'Provider not in access list' };
139
- }
140
- return { allowed: true };
141
- }
142
- //# sourceMappingURL=access-control.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"access-control.js","sourceRoot":"","sources":["../src/access-control.ts"],"names":[],"mappings":"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"}
@@ -1,187 +0,0 @@
1
- /**
2
- * Chain Execution Types for APIClaw
3
- *
4
- * Enables multi-step API orchestration with:
5
- * - Sequential execution
6
- * - Parallel execution
7
- * - Conditional branching
8
- * - Loops (forEach, map-reduce)
9
- * - Error handling & retry
10
- * - Cross-step references ($stepId.property)
11
- */
12
- /**
13
- * Base step configuration
14
- */
15
- export interface ChainStepBase {
16
- id: string;
17
- provider: string;
18
- action: string;
19
- params?: Record<string, any>;
20
- onError?: ErrorHandler;
21
- }
22
- /**
23
- * Parallel execution step - runs multiple steps concurrently
24
- */
25
- export interface ParallelStep {
26
- parallel: ChainStepBase[];
27
- }
28
- /**
29
- * Conditional step - executes based on condition
30
- */
31
- export interface ConditionalStep {
32
- if: string;
33
- then: ChainStepBase | ChainStep;
34
- else?: ChainStepBase | ChainStep;
35
- }
36
- /**
37
- * Loop step - iterates over array
38
- */
39
- export interface ForEachStep {
40
- forEach: string;
41
- as: string;
42
- do: ChainStepBase;
43
- }
44
- /**
45
- * Map step - transforms array
46
- */
47
- export interface MapStep {
48
- map: {
49
- input: string;
50
- fn: ChainStepBase;
51
- };
52
- }
53
- /**
54
- * Reduce step - aggregates results
55
- */
56
- export interface ReduceStep {
57
- reduce: {
58
- input: string;
59
- fn: ChainStepBase;
60
- };
61
- }
62
- /**
63
- * Union type for all step variants
64
- */
65
- export type ChainStep = ChainStepBase | ParallelStep | ConditionalStep | ForEachStep | MapStep | ReduceStep;
66
- export interface RetryConfig {
67
- attempts?: number;
68
- maxAttempts?: number;
69
- backoff?: number[] | 'exponential' | 'linear';
70
- backoffMs?: number;
71
- }
72
- export interface ErrorHandler {
73
- retry?: RetryConfig;
74
- fallback?: ChainStepBase;
75
- abort?: boolean;
76
- }
77
- export type ErrorPolicy = 'fail-fast' | 'best-effort' | 'transactional';
78
- export interface RollbackAction {
79
- if: string;
80
- do: ChainStepBase;
81
- }
82
- export interface ChainErrorPolicy {
83
- mode: ErrorPolicy;
84
- rollback?: RollbackAction[];
85
- }
86
- export interface ChainLimits {
87
- maxSteps?: number;
88
- maxParallel?: number;
89
- maxCost?: {
90
- cents: number;
91
- };
92
- }
93
- export interface ChainOptions {
94
- continueOnError?: boolean;
95
- timeout?: number;
96
- async?: boolean;
97
- webhook?: string;
98
- errorPolicy?: ChainErrorPolicy;
99
- limits?: ChainLimits;
100
- }
101
- export interface ChainRequest extends ChainOptions {
102
- chain: ChainStep[];
103
- }
104
- export type StepStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
105
- export interface StepResult {
106
- id: string;
107
- status: StepStatus;
108
- result?: any;
109
- error?: string;
110
- errorCode?: string;
111
- latencyMs: number;
112
- cost?: {
113
- cents: number;
114
- };
115
- retryAttempts?: number;
116
- }
117
- export interface ChainSuccessResponse {
118
- success: true;
119
- chainId: string;
120
- steps: StepResult[];
121
- finalResult: any;
122
- totalLatencyMs: number;
123
- totalCost: {
124
- cents: number;
125
- };
126
- tokensSaved: number;
127
- }
128
- export interface ChainErrorResponse {
129
- success: false;
130
- chainId: string;
131
- completedSteps: string[];
132
- failedStep: {
133
- id: string;
134
- error: string;
135
- code?: string;
136
- retryAfter?: number;
137
- };
138
- partialResults: Record<string, any>;
139
- canResume: boolean;
140
- resumeToken?: string;
141
- }
142
- export type ChainResponse = ChainSuccessResponse | ChainErrorResponse;
143
- export interface AsyncChainResponse {
144
- chainId: string;
145
- status: 'running' | 'completed' | 'failed';
146
- estimatedCompletion?: string;
147
- statusUrl: string;
148
- }
149
- export interface ChainStatusResponse {
150
- chainId: string;
151
- status: 'pending' | 'running' | 'completed' | 'failed';
152
- progress: {
153
- completedSteps: number;
154
- totalSteps: number;
155
- currentStep?: string;
156
- };
157
- startedAt: string;
158
- completedAt?: string;
159
- result?: ChainResponse;
160
- }
161
- export interface ResumeChainRequest {
162
- resumeToken: string;
163
- overrides?: Record<string, Record<string, any>>;
164
- }
165
- export interface ChainInput {
166
- type: 'string' | 'number' | 'boolean' | 'object' | 'array';
167
- required?: boolean;
168
- default?: any;
169
- description?: string;
170
- }
171
- export interface ChainTemplate {
172
- name: string;
173
- description?: string;
174
- inputs: Record<string, ChainInput>;
175
- chain: ChainStep[];
176
- }
177
- export interface UseChainRequest {
178
- useChain: string;
179
- inputs: Record<string, any>;
180
- }
181
- export declare function isParallelStep(step: ChainStep): step is ParallelStep;
182
- export declare function isConditionalStep(step: ChainStep): step is ConditionalStep;
183
- export declare function isForEachStep(step: ChainStep): step is ForEachStep;
184
- export declare function isMapStep(step: ChainStep): step is MapStep;
185
- export declare function isReduceStep(step: ChainStep): step is ReduceStep;
186
- export declare function isBaseStep(step: ChainStep): step is ChainStepBase;
187
- //# sourceMappingURL=chain-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chain-types.d.ts","sourceRoot":"","sources":["../src/chain-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,aAAa,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,aAAa,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,aAAa,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,YAAY,GACZ,eAAe,GACf,WAAW,GACX,OAAO,GACP,UAAU,CAAC;AAMf,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,CAAC;AAExE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,aAAa,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAMD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAMD,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAMD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEpF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAMtE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,QAAQ,EAAE;QACR,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAMD,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;CACjD;AAMD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,YAAY,CAEpE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,eAAe,CAE1E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,WAAW,CAElE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,OAAO,CAE1D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,UAAU,CAEhE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,aAAa,CAEjE"}
@@ -1,33 +0,0 @@
1
- /**
2
- * Chain Execution Types for APIClaw
3
- *
4
- * Enables multi-step API orchestration with:
5
- * - Sequential execution
6
- * - Parallel execution
7
- * - Conditional branching
8
- * - Loops (forEach, map-reduce)
9
- * - Error handling & retry
10
- * - Cross-step references ($stepId.property)
11
- */
12
- // ============================================
13
- // TYPE GUARDS
14
- // ============================================
15
- export function isParallelStep(step) {
16
- return 'parallel' in step;
17
- }
18
- export function isConditionalStep(step) {
19
- return 'if' in step && 'then' in step;
20
- }
21
- export function isForEachStep(step) {
22
- return 'forEach' in step && 'do' in step;
23
- }
24
- export function isMapStep(step) {
25
- return 'map' in step;
26
- }
27
- export function isReduceStep(step) {
28
- return 'reduce' in step;
29
- }
30
- export function isBaseStep(step) {
31
- return 'provider' in step && 'action' in step;
32
- }
33
- //# sourceMappingURL=chain-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chain-types.js","sourceRoot":"","sources":["../src/chain-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAyOH,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C,MAAM,UAAU,cAAc,CAAC,IAAe;IAC5C,OAAO,UAAU,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAe;IAC/C,OAAO,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,OAAO,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAe;IACvC,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAe;IAC1C,OAAO,QAAQ,IAAI,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAe;IACxC,OAAO,UAAU,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC;AAChD,CAAC"}
@@ -1,46 +0,0 @@
1
- import { mutation } from "./_generated/server";
2
- import { v } from "convex/values";
3
- export const activateWorkspace = mutation({
4
- args: { workspaceId: v.id("workspaces") },
5
- handler: async (ctx, { workspaceId }) => {
6
- const workspace = await ctx.db.get(workspaceId);
7
- if (!workspace) {
8
- return { success: false, error: "not_found" };
9
- }
10
- await ctx.db.patch(workspaceId, {
11
- status: "active",
12
- tier: "backer", // Give Hivr bees backer status
13
- weeklyUsageLimit: 999999,
14
- usageLimit: 999999,
15
- backerUntil: new Date("2026-12-31T23:59:59Z").getTime(), // Founding Backer until end of 2026
16
- updatedAt: Date.now(),
17
- });
18
- return { success: true };
19
- },
20
- });
21
- function generateToken() {
22
- const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
23
- let result = '';
24
- for (let i = 0; i < 32; i++) {
25
- result += chars.charAt(Math.floor(Math.random() * chars.length));
26
- }
27
- return result;
28
- }
29
- export const createSessionForWorkspace = mutation({
30
- args: { workspaceId: v.id("workspaces") },
31
- handler: async (ctx, { workspaceId }) => {
32
- const workspace = await ctx.db.get(workspaceId);
33
- if (!workspace || workspace.status !== "active") {
34
- return { success: false, error: "workspace_not_active" };
35
- }
36
- const sessionToken = "apiclaw_" + generateToken();
37
- await ctx.db.insert("agentSessions", {
38
- workspaceId,
39
- sessionToken,
40
- fingerprint: "hivr-bees",
41
- lastUsedAt: Date.now(),
42
- createdAt: Date.now(),
43
- });
44
- return { success: true, sessionToken };
45
- },
46
- });
@@ -1,41 +0,0 @@
1
- import { query } from "./_generated/server";
2
- // Get total user/workspace count
3
- export const getTotalWorkspaces = query({
4
- args: {},
5
- handler: async (ctx) => {
6
- const workspaces = await ctx.db.query("workspaces").collect();
7
- const providers = await ctx.db.query("providers").collect();
8
- return {
9
- totalWorkspaces: workspaces.length,
10
- totalProviders: providers.length,
11
- activeWorkspaces: workspaces.filter(w => w.status === "active").length,
12
- backers: workspaces.filter(w => w.tier === "backer").length,
13
- workspaceBreakdown: {
14
- free: workspaces.filter(w => w.tier === "free").length,
15
- pro: workspaces.filter(w => w.tier === "pro").length,
16
- enterprise: workspaces.filter(w => w.tier === "enterprise").length,
17
- backer: workspaces.filter(w => w.tier === "backer").length,
18
- },
19
- providerBreakdown: {
20
- pending: providers.filter(p => p.status === "pending").length,
21
- approved: providers.filter(p => p.status === "approved").length,
22
- rejected: providers.filter(p => p.status === "rejected").length,
23
- }
24
- };
25
- },
26
- });
27
- // List all workspace emails (for inspection)
28
- export const listWorkspaces = query({
29
- args: {},
30
- handler: async (ctx) => {
31
- const workspaces = await ctx.db.query("workspaces").collect();
32
- return workspaces.map(w => ({
33
- email: w.email,
34
- status: w.status,
35
- tier: w.tier,
36
- usageCount: w.usageCount,
37
- createdAt: w.createdAt,
38
- lastActiveAt: w.lastActiveAt,
39
- }));
40
- },
41
- });