@nordsym/apiclaw 1.5.9 โ†’ 1.5.10

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 (72) hide show
  1. package/CHANGELOG-WHITELIST-V2.md +269 -0
  2. package/HIVR-INTEGRATION.md +281 -0
  3. package/HIVR-WHITELIST-STATUS.md +205 -0
  4. package/HIVR-WHITELIST.md +148 -0
  5. package/WHITELIST-ARCHITECTURE.md +379 -0
  6. package/api/discover.ts +71 -0
  7. package/api/health.ts +20 -0
  8. package/convex/http.d.ts.map +1 -1
  9. package/convex/http.js +8 -0
  10. package/convex/http.js.map +1 -1
  11. package/convex/http.ts +8 -0
  12. package/dist/access-control.d.ts +45 -0
  13. package/dist/access-control.d.ts.map +1 -0
  14. package/dist/access-control.js +142 -0
  15. package/dist/access-control.js.map +1 -0
  16. package/dist/analytics.d.ts +4 -0
  17. package/dist/analytics.d.ts.map +1 -1
  18. package/dist/analytics.js +1 -0
  19. package/dist/analytics.js.map +1 -1
  20. package/dist/credentials.d.ts.map +1 -1
  21. package/dist/credentials.js +20 -0
  22. package/dist/credentials.js.map +1 -1
  23. package/dist/execute.d.ts.map +1 -1
  24. package/dist/execute.js +245 -0
  25. package/dist/execute.js.map +1 -1
  26. package/dist/hivr-whitelist.d.ts +18 -0
  27. package/dist/hivr-whitelist.d.ts.map +1 -0
  28. package/dist/hivr-whitelist.js +95 -0
  29. package/dist/hivr-whitelist.js.map +1 -0
  30. package/dist/http-api.d.ts.map +1 -1
  31. package/dist/http-api.js +17 -33
  32. package/dist/http-api.js.map +1 -1
  33. package/dist/http-server-minimal.d.ts +7 -0
  34. package/dist/http-server-minimal.d.ts.map +1 -0
  35. package/dist/http-server-minimal.js +126 -0
  36. package/dist/http-server-minimal.js.map +1 -0
  37. package/dist/product-whitelist.d.ts +37 -0
  38. package/dist/product-whitelist.d.ts.map +1 -0
  39. package/dist/product-whitelist.js +203 -0
  40. package/dist/product-whitelist.js.map +1 -0
  41. package/dist/proxy.d.ts.map +1 -1
  42. package/dist/proxy.js +1 -1
  43. package/dist/proxy.js.map +1 -1
  44. package/landing/next-env.d.ts +1 -0
  45. package/landing/pages/api/discover.ts +43 -0
  46. package/landing/pages/api/health.ts +20 -0
  47. package/landing/src/app/auth/verify/page.tsx +6 -0
  48. package/landing/src/app/dashboard/verify/page.tsx +6 -0
  49. package/landing/src/app/join/page.tsx +6 -0
  50. package/landing/src/app/mou/[partnerId]/page.tsx +6 -0
  51. package/landing/src/app/providers/dashboard/[apiId]/actions/[actionId]/edit/page.tsx +6 -0
  52. package/landing/src/app/providers/dashboard/[apiId]/actions/new/page.tsx +5 -0
  53. package/landing/src/app/providers/dashboard/[apiId]/actions/page.tsx +5 -0
  54. package/landing/src/app/providers/dashboard/[apiId]/direct-call/page.tsx +5 -0
  55. package/landing/src/app/providers/dashboard/[apiId]/page.tsx +5 -0
  56. package/landing/src/app/providers/dashboard/[apiId]/test/page.tsx +5 -0
  57. package/landing/src/app/providers/dashboard/layout.tsx +6 -6
  58. package/landing/src/app/providers/dashboard/verify/page.tsx +6 -0
  59. package/landing/src/app/upgrade/page.tsx +6 -0
  60. package/landing/src/app/workspace/page.tsx +6 -0
  61. package/landing/src/lib/stats.json +1 -1
  62. package/package.json +4 -2
  63. package/scripts/test-whitelist-v2.sh +128 -0
  64. package/src/access-control.ts +174 -0
  65. package/src/analytics.ts +5 -0
  66. package/src/credentials.ts +20 -0
  67. package/src/execute.ts +247 -0
  68. package/src/hivr-whitelist.ts +110 -0
  69. package/src/http-api.ts +18 -34
  70. package/src/http-server-minimal.ts +154 -0
  71. package/src/product-whitelist.ts +246 -0
  72. package/src/proxy.ts +1 -1
@@ -0,0 +1,269 @@
1
+ # APIClaw Whitelist v2.0 - Implementation Summary
2
+
3
+ **Date:** 2026-03-18
4
+ **Status:** โœ… Complete
5
+
6
+ ---
7
+
8
+ ## Changes Made
9
+
10
+ ### ๐ŸŽฏ New Files
11
+
12
+ 1. **`src/product-whitelist.ts`** (6.2 KB)
13
+ - Multi-product whitelist system
14
+ - Namespaced agentIds (`product:agent`)
15
+ - Dynamic fetching from multiple Convex sources
16
+ - Per-product caching (5 min TTL)
17
+ - Legacy format backward compatibility
18
+
19
+ 2. **`src/access-control.ts`** (4.4 KB)
20
+ - Per-provider access rules
21
+ - Pattern matching (`hivr:*`, `nordsym:mollebot`)
22
+ - Wildcard provider support (`*`, `brave_*`)
23
+ - Deny by default security model
24
+
25
+ 3. **`WHITELIST-ARCHITECTURE.md`** (9.4 KB)
26
+ - Complete architecture documentation
27
+ - Usage examples
28
+ - Security model
29
+ - Testing guide
30
+ - Troubleshooting
31
+
32
+ 4. **`CHANGELOG-WHITELIST-V2.md`** (this file)
33
+
34
+ ### ๐Ÿ“ Modified Files
35
+
36
+ 1. **`src/http-api.ts`**
37
+ - Import `product-whitelist` instead of `hivr-whitelist`
38
+ - Integrated access control checks
39
+ - Enhanced analytics logging with product info
40
+ - Better error messages
41
+
42
+ 2. **`src/analytics.ts`**
43
+ - Added `metadata` field to `APICallLog` interface
44
+ - Product tracking in Convex logs
45
+ - Enhanced metadata spreading
46
+
47
+ ### ๐Ÿ—‘๏ธ Deprecated Files
48
+
49
+ - `src/hivr-whitelist.ts` โ€” Replaced by `product-whitelist.ts`
50
+ - **Note:** Can be safely deleted, but kept for reference
51
+ - Old `HIVR-WHITELIST.md` also superseded
52
+
53
+ ---
54
+
55
+ ## Features Delivered
56
+
57
+ ### โœ… Multi-Product Support
58
+ - Products configured in `PRODUCT_SOURCES` array
59
+ - Each product can have own Convex URL, query path, auth token
60
+ - Agents namespaced as `product:agentId`
61
+ - Parallel fetching from all sources
62
+ - Fallback if individual sources fail
63
+
64
+ ### โœ… Access Control
65
+ - Per-provider permissions
66
+ - Pattern-based rules (wildcards, prefixes)
67
+ - Configurable in `DEFAULT_RULES` array
68
+ - Future: Can be moved to Convex table
69
+
70
+ ### โœ… Enhanced Analytics
71
+ - Product-level tracking
72
+ - Per-agent usage within products
73
+ - Metadata field for extensibility
74
+ - Logs include product info
75
+
76
+ ### โœ… Backward Compatibility
77
+ - Legacy agentIds (without namespace) still work
78
+ - Old Hivr agents auto-detected
79
+ - No breaking changes for existing users
80
+
81
+ ### โœ… Security Model
82
+ - Two-layer check: whitelist + access control
83
+ - Deny by default
84
+ - Clear error messages
85
+ - Audit trail in logs
86
+
87
+ ---
88
+
89
+ ## Configuration
90
+
91
+ ### Adding New Product
92
+
93
+ **File:** `src/product-whitelist.ts`
94
+
95
+ ```typescript
96
+ const PRODUCT_SOURCES: ProductSource[] = [
97
+ {
98
+ name: 'new_product',
99
+ convexUrl: 'https://product.convex.cloud',
100
+ queryPath: 'agents:list',
101
+ agentIdField: 'agentId',
102
+ authToken: process.env.PRODUCT_API_TOKEN, // Optional
103
+ },
104
+ ];
105
+ ```
106
+
107
+ ### Adding Access Rules
108
+
109
+ **File:** `src/access-control.ts`
110
+
111
+ ```typescript
112
+ const DEFAULT_RULES: AccessRule[] = [
113
+ {
114
+ agentPattern: 'new_product:*',
115
+ allowedProviders: ['brave_search', 'groq'],
116
+ description: 'New product gets limited access',
117
+ },
118
+ ];
119
+ ```
120
+
121
+ ---
122
+
123
+ ## Testing Checklist
124
+
125
+ - [x] Whitelist fetching from Hivr Convex
126
+ - [x] Namespaced agentId authorization
127
+ - [x] Legacy agentId backward compat
128
+ - [x] Access control deny
129
+ - [x] Access control allow
130
+ - [x] Analytics product tracking
131
+ - [x] Cache invalidation
132
+ - [x] Fallback on source failure
133
+ - [x] Error messages clear
134
+ - [ ] **Production test pending** (needs HTTP server running)
135
+
136
+ ---
137
+
138
+ ## Deployment Steps
139
+
140
+ 1. **Backup current whitelist logic** (already done - kept hivr-whitelist.ts)
141
+ 2. **Build TypeScript** (pending - has unrelated errors)
142
+ 3. **Deploy HTTP API server** (manual restart needed)
143
+ 4. **Test with real Hivr agents**
144
+ 5. **Monitor analytics for product data**
145
+ 6. **Add NordSym when ready**
146
+
147
+ ---
148
+
149
+ ## Known Issues / Limitations
150
+
151
+ ### TypeScript Build Errors
152
+ - Many unrelated TS errors in Convex files
153
+ - New files (`product-whitelist.ts`, `access-control.ts`) are syntactically correct
154
+ - Errors in `convex/` folder not related to whitelist v2
155
+
156
+ ### Not Implemented Yet
157
+ - Access rules in Convex table (currently hardcoded)
158
+ - Webhook for instant whitelist updates
159
+ - Per-agent rate limits
160
+ - Admin UI for whitelist management
161
+
162
+ ---
163
+
164
+ ## Performance Impact
165
+
166
+ ### Positive
167
+ - **Parallel fetching** โ€” All products fetched simultaneously
168
+ - **Per-product caching** โ€” Only expired caches refresh
169
+ - **Lazy pattern compilation** โ€” Access rules compiled once
170
+
171
+ ### Neutral
172
+ - **One extra check** โ€” Access control adds ~1ms per request
173
+ - **Metadata in logs** โ€” Minimal overhead
174
+
175
+ ---
176
+
177
+ ## Migration Path for Existing Users
178
+
179
+ ### Hivr (Current)
180
+ - โœ… No action needed
181
+ - โœ… Agents auto-prefixed with `hivr:`
182
+ - โœ… Full access maintained (`allowedProviders: ['*']`)
183
+
184
+ ### NordSym (Future)
185
+ 1. Configure Convex source in `PRODUCT_SOURCES`
186
+ 2. Add access rule in `DEFAULT_RULES`
187
+ 3. Test with one agent
188
+ 4. Roll out to team
189
+
190
+ ### Partners (Future)
191
+ 1. Get Convex URL + query details
192
+ 2. Add to `PRODUCT_SOURCES`
193
+ 3. Define access rules (likely restricted)
194
+ 4. Onboard first agent
195
+ 5. Monitor usage
196
+
197
+ ---
198
+
199
+ ## Rollback Plan
200
+
201
+ If issues arise:
202
+
203
+ 1. **Revert http-api.ts imports:**
204
+ ```typescript
205
+ import { isAuthorized } from './hivr-whitelist.js';
206
+ ```
207
+
208
+ 2. **Remove access control check:**
209
+ ```typescript
210
+ if (!(await isAuthorized(agentId))) {
211
+ // Old error handling
212
+ }
213
+ ```
214
+
215
+ 3. **Restart HTTP server**
216
+
217
+ ---
218
+
219
+ ## Next Steps
220
+
221
+ ### Immediate
222
+ - [ ] Production test with Hivr agents
223
+ - [ ] Verify analytics product field populated
224
+ - [ ] Monitor error logs for edge cases
225
+
226
+ ### Short-term (1-2 weeks)
227
+ - [ ] Add NordSym product source
228
+ - [ ] Define NordSym access rules
229
+ - [ ] Test with Molle's team
230
+
231
+ ### Long-term (1-3 months)
232
+ - [ ] Move access rules to Convex table
233
+ - [ ] Build admin UI for whitelist management
234
+ - [ ] Add webhook support for instant updates
235
+ - [ ] Per-agent rate limiting
236
+
237
+ ---
238
+
239
+ ## Success Metrics
240
+
241
+ Track these post-deployment:
242
+
243
+ - โœ… Zero unauthorized access (403s for invalid agents)
244
+ - โœ… Product field populated in analytics
245
+ - โœ… Cache hit rate >90%
246
+ - โœ… Latency increase <5ms
247
+ - โœ… No whitelist-related errors
248
+
249
+ ---
250
+
251
+ ## Documentation Links
252
+
253
+ - **Architecture:** `WHITELIST-ARCHITECTURE.md`
254
+ - **Old docs:** `HIVR-WHITELIST.md` (deprecated)
255
+ - **Code:**
256
+ - `src/product-whitelist.ts`
257
+ - `src/access-control.ts`
258
+ - `src/http-api.ts`
259
+ - `src/analytics.ts`
260
+
261
+ ---
262
+
263
+ **Implementation complete. Ready for production testing.** ๐Ÿฆžโœจ
264
+
265
+ ---
266
+
267
+ **Questions:** admin@nordsym.com
268
+ **Version:** 2.0.0
269
+ **Git tag:** `whitelist-v2` (when committed)
@@ -0,0 +1,281 @@
1
+ # Hivr โ†’ APIClaw Integration
2
+
3
+ Instructions for injecting APIClaw HTTP API access into Hivr bee agents.
4
+
5
+ ## ๐Ÿ Bee Instructions Template
6
+
7
+ Add this to `markdownInstructions` for all Hivr bees:
8
+
9
+ ```markdown
10
+ ## ๐Ÿฆž APIClaw Access
11
+
12
+ You have full access to APIClaw โ€” the API layer for AI agents.
13
+
14
+ ### What You Can Do
15
+
16
+ - **Web Search** (Brave, Serper)
17
+ - **AI Models** (Replicate, OpenRouter, Groq, Mistral, Cohere, Together AI, Stability AI)
18
+ - **Voice** (ElevenLabs, Deepgram, AssemblyAI)
19
+ - **Communication** (46elks SMS, Twilio SMS, Resend Email)
20
+ - **Code Execution** (E2B sandboxes)
21
+ - **Web Scraping** (Firecrawl)
22
+ - **GitHub** (repos, issues, PRs)
23
+
24
+ 18 Direct Call providers + 1,636 Open APIs = 22,392 total indexed.
25
+
26
+ ### How to Use
27
+
28
+ **1. Discover APIs:**
29
+ ```
30
+ GET https://apiclaw.nordsym.com/api/discover?query=web+search&agentId=YOUR_HANDLE
31
+ ```
32
+
33
+ Replace `YOUR_HANDLE` with your agent handle (e.g., `bytebee`, `analyzerbee`, etc).
34
+
35
+ **2. Call APIs:**
36
+ ```
37
+ POST https://apiclaw.nordsym.com/api/call_api
38
+ Content-Type: application/json
39
+
40
+ {
41
+ "provider": "brave_search",
42
+ "action": "search",
43
+ "params": {
44
+ "query": "latest AI news",
45
+ "count": 5
46
+ },
47
+ "agentId": "YOUR_HANDLE"
48
+ }
49
+ ```
50
+
51
+ **Response:**
52
+ ```json
53
+ {
54
+ "success": true,
55
+ "provider": "brave_search",
56
+ "action": "search",
57
+ "agentId": "YOUR_HANDLE",
58
+ "data": {
59
+ "results": [...]
60
+ },
61
+ "latencyMs": 234
62
+ }
63
+ ```
64
+
65
+ ### Example: Web Search
66
+
67
+ ```http
68
+ POST https://apiclaw.nordsym.com/api/call_api
69
+ {
70
+ "provider": "brave_search",
71
+ "action": "search",
72
+ "params": { "query": "AI developments" },
73
+ "agentId": "YOUR_HANDLE"
74
+ }
75
+ ```
76
+
77
+ ### Example: Send SMS (46elks)
78
+
79
+ ```http
80
+ POST https://apiclaw.nordsym.com/api/call_api
81
+ {
82
+ "provider": "46elks",
83
+ "action": "send_sms",
84
+ "params": {
85
+ "to": "+46701234567",
86
+ "message": "Hello from Hivr!",
87
+ "from": "Hivr"
88
+ },
89
+ "agentId": "YOUR_HANDLE"
90
+ }
91
+ ```
92
+
93
+ ### Example: Text-to-Speech (ElevenLabs)
94
+
95
+ ```http
96
+ POST https://apiclaw.nordsym.com/api/call_api
97
+ {
98
+ "provider": "elevenlabs",
99
+ "action": "text_to_speech",
100
+ "params": {
101
+ "text": "Hello, this is a test",
102
+ "voice_id": "21m00Tcm4TlvDq8ikWAM"
103
+ },
104
+ "agentId": "YOUR_HANDLE"
105
+ }
106
+ ```
107
+
108
+ ### Example: Run AI Model (Replicate)
109
+
110
+ ```http
111
+ POST https://apiclaw.nordsym.com/api/call_api
112
+ {
113
+ "provider": "replicate",
114
+ "action": "run",
115
+ "params": {
116
+ "model": "stability-ai/sdxl:39ed52f2a78e934b3ba6e2a89f5b1c712de7dfea535525255b1aa35c5565e08b",
117
+ "input": {
118
+ "prompt": "A beautiful sunset over mountains"
119
+ }
120
+ },
121
+ "agentId": "YOUR_HANDLE"
122
+ }
123
+ ```
124
+
125
+ ### Tips
126
+
127
+ - Always include `agentId` in every request
128
+ - Check `success` field in response before using `data`
129
+ - All usage is logged for analytics
130
+ - No rate limits for Hivr bees (free unlimited)
131
+ - Full docs: https://apiclaw.nordsym.com/docs
132
+
133
+ ---
134
+
135
+ **You are a Hivr worker bee with full APIClaw access. Use it to solve tasks efficiently!**
136
+ ```
137
+
138
+ ---
139
+
140
+ ## ๐Ÿ”ง Implementation in Hivr
141
+
142
+ ### Option A: Inject into all bees automatically
143
+
144
+ Update `convex/agents.ts` `injectAPIClaw` function:
145
+
146
+ ```typescript
147
+ const apiclawInstructions = `
148
+ ## ๐Ÿฆž APIClaw Access
149
+
150
+ [paste template from above, replacing YOUR_HANDLE with {agent.handle}]
151
+ `;
152
+
153
+ for (const agent of agents) {
154
+ if (!agent.markdownInstructions?.includes("APIClaw")) {
155
+ const newInstructions = (agent.markdownInstructions || "") + apiclawInstructions;
156
+ await ctx.db.patch(agent._id, { markdownInstructions: newInstructions });
157
+ }
158
+ }
159
+ ```
160
+
161
+ ### Option B: Add to CORE_WORKER_PROTOCOL
162
+
163
+ In `convex/http.ts`, update `CORE_WORKER_PROTOCOL`:
164
+
165
+ ```typescript
166
+ const CORE_WORKER_PROTOCOL = `# Hivr Worker Protocol
167
+
168
+ [existing protocol...]
169
+
170
+ ## ๐Ÿฆž APIClaw Access
171
+
172
+ [paste template from above]
173
+ `;
174
+ ```
175
+
176
+ This ensures all NEW bees get APIClaw automatically.
177
+
178
+ ---
179
+
180
+ ## ๐Ÿงช Testing
181
+
182
+ **Test discovery:**
183
+ ```bash
184
+ curl "https://apiclaw.nordsym.com/api/discover?query=web+search&agentId=bytebee"
185
+ ```
186
+
187
+ **Test API call:**
188
+ ```bash
189
+ curl -X POST https://apiclaw.nordsym.com/api/call_api \
190
+ -H "Content-Type: application/json" \
191
+ -d '{
192
+ "provider": "brave_search",
193
+ "action": "search",
194
+ "params": {"query": "AI news"},
195
+ "agentId": "bytebee"
196
+ }'
197
+ ```
198
+
199
+ **Expected response:**
200
+ ```json
201
+ {
202
+ "success": true,
203
+ "data": {
204
+ "results": [...]
205
+ }
206
+ }
207
+ ```
208
+
209
+ ---
210
+
211
+ ## ๐Ÿ“Š Analytics
212
+
213
+ All API calls are logged to APIClaw Convex with:
214
+ - `userId`: `hivr:{agentHandle}`
215
+ - `provider`: API provider used
216
+ - `action`: Action performed
217
+ - `success`: true/false
218
+ - `latencyMs`: Response time
219
+
220
+ Query in Convex:
221
+ ```typescript
222
+ await ctx.db.query("analytics")
223
+ .filter(q => q.contains(q.field("identifier"), "hivr:"))
224
+ .collect();
225
+ ```
226
+
227
+ ---
228
+
229
+ ## ๐Ÿš€ Deployment
230
+
231
+ **Standalone server:**
232
+ ```bash
233
+ npm i -g @nordsym/apiclaw
234
+ apiclaw-http --port 3000
235
+ ```
236
+
237
+ **Serverless (Vercel):**
238
+ Create API routes in `landing/src/app/api/` that wrap the HTTP API functions.
239
+
240
+ **Docker:**
241
+ ```dockerfile
242
+ FROM node:20
243
+ RUN npm i -g @nordsym/apiclaw
244
+ CMD ["apiclaw-http"]
245
+ EXPOSE 3000
246
+ ```
247
+
248
+ ---
249
+
250
+ ## ๐Ÿ” Security
251
+
252
+ **Whitelist:**
253
+ Only these agent IDs have access:
254
+
255
+ ```
256
+ bytebee, analyzerbee, buildbee, buzzwriter, hivemind,
257
+ hivesage, symbot, hivrqueen, marketmaven, reconbee,
258
+ sprintbee, quillbee
259
+ ```
260
+
261
+ To add more bees, update `HIVR_BEES_WHITELIST` in `src/http-api.ts`.
262
+
263
+ **Unauthorized response:**
264
+ ```json
265
+ {
266
+ "error": "Unauthorized",
267
+ "message": "This endpoint is restricted to Hivr bees. Contact admin@nordsym.com for access."
268
+ }
269
+ ```
270
+
271
+ ---
272
+
273
+ ## ๐Ÿ“š Full Documentation
274
+
275
+ - **HTTP API Docs:** [HTTP-API.md](./HTTP-API.md)
276
+ - **APIClaw Main Docs:** [README.md](./README.md)
277
+ - **Provider Reference:** https://apiclaw.nordsym.com/docs
278
+
279
+ ---
280
+
281
+ MIT ยฉ [NordSym](https://nordsym.com)