@recursiv/sdk 0.2.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/LICENSE +105 -0
- package/README.md +331 -0
- package/dist/client.d.ts +22 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +192 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +29 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +60 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +148 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +184 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/sse.d.ts +6 -0
- package/dist/lib/sse.d.ts.map +1 -0
- package/dist/lib/sse.js +52 -0
- package/dist/lib/sse.js.map +1 -0
- package/dist/lib/webhooks.d.ts +41 -0
- package/dist/lib/webhooks.d.ts.map +1 -0
- package/dist/lib/webhooks.js +91 -0
- package/dist/lib/webhooks.js.map +1 -0
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +2 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/useChat.d.ts +26 -0
- package/dist/react/useChat.d.ts.map +1 -0
- package/dist/react/useChat.js +111 -0
- package/dist/react/useChat.js.map +1 -0
- package/dist/realtime.d.ts +67 -0
- package/dist/realtime.d.ts.map +1 -0
- package/dist/realtime.js +104 -0
- package/dist/realtime.js.map +1 -0
- package/dist/resources/admin.d.ts +287 -0
- package/dist/resources/admin.d.ts.map +1 -0
- package/dist/resources/admin.js +110 -0
- package/dist/resources/admin.js.map +1 -0
- package/dist/resources/agents.d.ts +136 -0
- package/dist/resources/agents.d.ts.map +1 -0
- package/dist/resources/agents.js +113 -0
- package/dist/resources/agents.js.map +1 -0
- package/dist/resources/auth.d.ts +68 -0
- package/dist/resources/auth.d.ts.map +1 -0
- package/dist/resources/auth.js +231 -0
- package/dist/resources/auth.js.map +1 -0
- package/dist/resources/billing.d.ts +143 -0
- package/dist/resources/billing.d.ts.map +1 -0
- package/dist/resources/billing.js +55 -0
- package/dist/resources/billing.js.map +1 -0
- package/dist/resources/brain.d.ts +26 -0
- package/dist/resources/brain.d.ts.map +1 -0
- package/dist/resources/brain.js +11 -0
- package/dist/resources/brain.js.map +1 -0
- package/dist/resources/chat.d.ts +52 -0
- package/dist/resources/chat.d.ts.map +1 -0
- package/dist/resources/chat.js +59 -0
- package/dist/resources/chat.js.map +1 -0
- package/dist/resources/commands.d.ts +41 -0
- package/dist/resources/commands.d.ts.map +1 -0
- package/dist/resources/commands.js +15 -0
- package/dist/resources/commands.js.map +1 -0
- package/dist/resources/communities.d.ts +19 -0
- package/dist/resources/communities.d.ts.map +1 -0
- package/dist/resources/communities.js +31 -0
- package/dist/resources/communities.js.map +1 -0
- package/dist/resources/databases.d.ts +58 -0
- package/dist/resources/databases.d.ts.map +1 -0
- package/dist/resources/databases.js +27 -0
- package/dist/resources/databases.js.map +1 -0
- package/dist/resources/deployments.d.ts +57 -0
- package/dist/resources/deployments.d.ts.map +1 -0
- package/dist/resources/deployments.js +31 -0
- package/dist/resources/deployments.js.map +1 -0
- package/dist/resources/dispatcher.d.ts +330 -0
- package/dist/resources/dispatcher.d.ts.map +1 -0
- package/dist/resources/dispatcher.js +155 -0
- package/dist/resources/dispatcher.js.map +1 -0
- package/dist/resources/email.d.ts +136 -0
- package/dist/resources/email.d.ts.map +1 -0
- package/dist/resources/email.js +51 -0
- package/dist/resources/email.js.map +1 -0
- package/dist/resources/free-tier.d.ts +59 -0
- package/dist/resources/free-tier.d.ts.map +1 -0
- package/dist/resources/free-tier.js +27 -0
- package/dist/resources/free-tier.js.map +1 -0
- package/dist/resources/github.d.ts +55 -0
- package/dist/resources/github.d.ts.map +1 -0
- package/dist/resources/github.js +23 -0
- package/dist/resources/github.js.map +1 -0
- package/dist/resources/inbox.d.ts +13 -0
- package/dist/resources/inbox.d.ts.map +1 -0
- package/dist/resources/inbox.js +11 -0
- package/dist/resources/inbox.js.map +1 -0
- package/dist/resources/integrations.d.ts +158 -0
- package/dist/resources/integrations.d.ts.map +1 -0
- package/dist/resources/integrations.js +78 -0
- package/dist/resources/integrations.js.map +1 -0
- package/dist/resources/invite-codes-admin.d.ts +69 -0
- package/dist/resources/invite-codes-admin.d.ts.map +1 -0
- package/dist/resources/invite-codes-admin.js +31 -0
- package/dist/resources/invite-codes-admin.js.map +1 -0
- package/dist/resources/invite-codes.d.ts +166 -0
- package/dist/resources/invite-codes.d.ts.map +1 -0
- package/dist/resources/invite-codes.js +69 -0
- package/dist/resources/invite-codes.js.map +1 -0
- package/dist/resources/jobs.d.ts +40 -0
- package/dist/resources/jobs.d.ts.map +1 -0
- package/dist/resources/jobs.js +23 -0
- package/dist/resources/jobs.js.map +1 -0
- package/dist/resources/media.d.ts +21 -0
- package/dist/resources/media.d.ts.map +1 -0
- package/dist/resources/media.js +11 -0
- package/dist/resources/media.js.map +1 -0
- package/dist/resources/memory.d.ts +116 -0
- package/dist/resources/memory.d.ts.map +1 -0
- package/dist/resources/memory.js +57 -0
- package/dist/resources/memory.js.map +1 -0
- package/dist/resources/network.d.ts +24 -0
- package/dist/resources/network.d.ts.map +1 -0
- package/dist/resources/network.js +11 -0
- package/dist/resources/network.js.map +1 -0
- package/dist/resources/notifications.d.ts +11 -0
- package/dist/resources/notifications.d.ts.map +1 -0
- package/dist/resources/notifications.js +36 -0
- package/dist/resources/notifications.js.map +1 -0
- package/dist/resources/organization-security.d.ts +29 -0
- package/dist/resources/organization-security.d.ts.map +1 -0
- package/dist/resources/organization-security.js +15 -0
- package/dist/resources/organization-security.js.map +1 -0
- package/dist/resources/organization-settings.d.ts +80 -0
- package/dist/resources/organization-settings.d.ts.map +1 -0
- package/dist/resources/organization-settings.js +35 -0
- package/dist/resources/organization-settings.js.map +1 -0
- package/dist/resources/organizations.d.ts +73 -0
- package/dist/resources/organizations.d.ts.map +1 -0
- package/dist/resources/organizations.js +63 -0
- package/dist/resources/organizations.js.map +1 -0
- package/dist/resources/posts.d.ts +28 -0
- package/dist/resources/posts.d.ts.map +1 -0
- package/dist/resources/posts.js +39 -0
- package/dist/resources/posts.js.map +1 -0
- package/dist/resources/profiles.d.ts +45 -0
- package/dist/resources/profiles.d.ts.map +1 -0
- package/dist/resources/profiles.js +55 -0
- package/dist/resources/profiles.js.map +1 -0
- package/dist/resources/project-brain.d.ts +239 -0
- package/dist/resources/project-brain.d.ts.map +1 -0
- package/dist/resources/project-brain.js +83 -0
- package/dist/resources/project-brain.js.map +1 -0
- package/dist/resources/projects.d.ts +37 -0
- package/dist/resources/projects.d.ts.map +1 -0
- package/dist/resources/projects.js +55 -0
- package/dist/resources/projects.js.map +1 -0
- package/dist/resources/protocols.d.ts +66 -0
- package/dist/resources/protocols.d.ts.map +1 -0
- package/dist/resources/protocols.js +31 -0
- package/dist/resources/protocols.js.map +1 -0
- package/dist/resources/sandbox.d.ts +12 -0
- package/dist/resources/sandbox.d.ts.map +1 -0
- package/dist/resources/sandbox.js +14 -0
- package/dist/resources/sandbox.js.map +1 -0
- package/dist/resources/settings.d.ts +52 -0
- package/dist/resources/settings.d.ts.map +1 -0
- package/dist/resources/settings.js +66 -0
- package/dist/resources/settings.js.map +1 -0
- package/dist/resources/simulator.d.ts +20 -0
- package/dist/resources/simulator.d.ts.map +1 -0
- package/dist/resources/simulator.js +23 -0
- package/dist/resources/simulator.js.map +1 -0
- package/dist/resources/storage.d.ts +82 -0
- package/dist/resources/storage.d.ts.map +1 -0
- package/dist/resources/storage.js +43 -0
- package/dist/resources/storage.js.map +1 -0
- package/dist/resources/swarms.d.ts +98 -0
- package/dist/resources/swarms.d.ts.map +1 -0
- package/dist/resources/swarms.js +53 -0
- package/dist/resources/swarms.js.map +1 -0
- package/dist/resources/tags.d.ts +19 -0
- package/dist/resources/tags.d.ts.map +1 -0
- package/dist/resources/tags.js +23 -0
- package/dist/resources/tags.js.map +1 -0
- package/dist/resources/templates.d.ts +62 -0
- package/dist/resources/templates.d.ts.map +1 -0
- package/dist/resources/templates.js +36 -0
- package/dist/resources/templates.js.map +1 -0
- package/dist/resources/uploads.d.ts +43 -0
- package/dist/resources/uploads.d.ts.map +1 -0
- package/dist/resources/uploads.js +39 -0
- package/dist/resources/uploads.js.map +1 -0
- package/dist/resources/users.d.ts +15 -0
- package/dist/resources/users.d.ts.map +1 -0
- package/dist/resources/users.js +23 -0
- package/dist/resources/users.js.map +1 -0
- package/dist/resources/wallet.d.ts +57 -0
- package/dist/resources/wallet.d.ts.map +1 -0
- package/dist/resources/wallet.js +43 -0
- package/dist/resources/wallet.js.map +1 -0
- package/dist/resources/webhooks.d.ts +29 -0
- package/dist/resources/webhooks.d.ts.map +1 -0
- package/dist/resources/webhooks.js +19 -0
- package/dist/resources/webhooks.js.map +1 -0
- package/dist/types.d.ts +703 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/llm.md +532 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,eAAe"}
|
package/llm.md
ADDED
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
# Recursiv SDK — Reference for AI Coding Assistants
|
|
2
|
+
|
|
3
|
+
> Read this file before writing any code with @recursiv/sdk.
|
|
4
|
+
> It covers all resources, decision rules, working examples, and known gotchas.
|
|
5
|
+
|
|
6
|
+
```typescript
|
|
7
|
+
import { Recursiv } from '@recursiv/sdk'
|
|
8
|
+
const r = new Recursiv() // reads RECURSIV_API_KEY from env
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Decision rules — pick the right resource
|
|
12
|
+
|
|
13
|
+
| Need | Use | Do NOT use |
|
|
14
|
+
|------|-----|-----------|
|
|
15
|
+
| Structured/relational data | `r.databases` → Postgres | `r.posts` with JSON blobs |
|
|
16
|
+
| Social content, feeds, reactions | `r.posts` + `r.communities` + `r.tags` | `r.databases` for social feeds |
|
|
17
|
+
| File storage (photos, docs, media) | `r.storage` (buckets, presigned URLs) | `r.uploads` (legacy) |
|
|
18
|
+
| User auth and API keys | `r.auth` | Raw fetch to `/api/auth/*` |
|
|
19
|
+
| AI agent with model + system prompt | `r.agents` | Direct LLM API calls |
|
|
20
|
+
| Agent code/tool execution | `r.projects.executeCode()` + `r.commands` | External sandboxes |
|
|
21
|
+
| Deploy to production | `r.projects.deploy()` | Manual CI/CD |
|
|
22
|
+
| Messaging between users | `r.chat` | Custom WebSocket layer |
|
|
23
|
+
| Team/org management | `r.organizations` | Custom user-group tables |
|
|
24
|
+
| Per-project task tracking & decisions | `r.projectBrain` | External project management |
|
|
25
|
+
| Persistent agent memory | `r.memory` (facts, decisions, search) | Storing knowledge in `r.posts` or `r.databases` |
|
|
26
|
+
| Transactional email (receipts, alerts) | `r.email.send()` | Direct Resend/SendGrid calls |
|
|
27
|
+
| Receive external webhooks (Stripe, etc.) | `r.webhooks.register()` | Custom webhook server |
|
|
28
|
+
| Server-side cron / scheduled tasks | `r.jobs.create()` | External cron services |
|
|
29
|
+
|
|
30
|
+
**IMPORTANT:** Do NOT store structured app data (records, inventory, tasks, settings) as JSON inside `r.posts.content`. Posts are for social content. Use `r.databases` for application data.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Infrastructure
|
|
35
|
+
|
|
36
|
+
### r.databases — Provision and query Postgres
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
const { data: db } = await r.databases.ensure({ project_id: 'proj_xxx', name: 'my-app-db' })
|
|
40
|
+
const { data: creds } = await r.databases.getCredentials({ project_id: 'proj_xxx', name: 'my-app-db' })
|
|
41
|
+
// creds.connection_string → "postgresql://user:pass@host:5432/dbname"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Methods: `list({ project_id })`, `create({ project_id, name })`, `ensure({ project_id, name? })`, `getCredentials({ project_id, name })`
|
|
45
|
+
|
|
46
|
+
Note: `ensure` is idempotent — safe to call on every app launch. `getCredentials` takes `project_id` + `name`, not `database_id`.
|
|
47
|
+
|
|
48
|
+
### r.projects — Deploy, sandbox, execute code
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
const { data: project } = await r.projects.create({ name: 'My App', organization_id: orgId })
|
|
52
|
+
await r.projects.createSandbox(project.id)
|
|
53
|
+
|
|
54
|
+
const { data: result } = await r.projects.executeCode(project.id, {
|
|
55
|
+
code: 'console.log("hello")',
|
|
56
|
+
language: 'typescript',
|
|
57
|
+
})
|
|
58
|
+
// result.output → "hello\n"
|
|
59
|
+
|
|
60
|
+
const { data: deployment } = await r.projects.deploy(project.id, { branch: 'main', type: 'production' })
|
|
61
|
+
const { data: logs } = await r.projects.deploymentLogs(project.id, deployment.id)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Methods: `list`, `get`, `create`, `delete`, `deploy`, `executeCode`, `sandbox`, `createSandbox`, `stopSandbox`, `deployment`, `deploymentLogs`, `deployments`
|
|
65
|
+
|
|
66
|
+
### r.storage — Bucket-based file storage
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
const { data: bucket } = await r.storage.ensureBucket({ name: 'user-photos', project_id: project.id })
|
|
70
|
+
const { data: upload } = await r.storage.getUploadUrl({
|
|
71
|
+
bucket_name: 'user-photos', key: 'photo.jpg', content_type: 'image/jpeg', project_id: project.id,
|
|
72
|
+
})
|
|
73
|
+
// PUT file to upload.url
|
|
74
|
+
const { data: download } = await r.storage.getDownloadUrl({
|
|
75
|
+
bucket_name: 'user-photos', key: 'photo.jpg', project_id: project.id,
|
|
76
|
+
})
|
|
77
|
+
// GET file from download.url
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Methods: `listBuckets`, `getBucket`, `createBucket`, `ensureBucket`, `listItems`, `createFolder`, `getUploadUrl`, `getDownloadUrl`, `deleteObject`
|
|
81
|
+
|
|
82
|
+
Note: `ensureBucket` is idempotent.
|
|
83
|
+
|
|
84
|
+
### r.sandbox — Anonymous code execution
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
const r = new Recursiv({ anonymous: true }) // no API key needed
|
|
88
|
+
const { data } = await r.sandbox.execute({ code: '1 + 1', language: 'typescript' })
|
|
89
|
+
// Rate-limited: 10/day per IP
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## AI Agents
|
|
95
|
+
|
|
96
|
+
### r.agents — Managed AI agents
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
const { data: agent } = await r.agents.create({
|
|
100
|
+
name: 'Home Assistant',
|
|
101
|
+
username: 'home_bot_' + Date.now(),
|
|
102
|
+
model: 'anthropic/claude-sonnet-4',
|
|
103
|
+
system_prompt: 'You help homeowners maintain their property.',
|
|
104
|
+
organization_id: orgId,
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
// Non-streaming chat (agent responds asynchronously)
|
|
108
|
+
const { data: reply } = await r.agents.chat(agent.id, { message: 'When should I service my HVAC?' })
|
|
109
|
+
// reply: { message_id, conversation_id, content, created_at, note }
|
|
110
|
+
|
|
111
|
+
// Streaming (Node.js/browser — NOT React Native, see Gotchas)
|
|
112
|
+
const stream = r.agents.chatStream(agent.id, { message: 'Tell me more' })
|
|
113
|
+
for await (const chunk of stream) { process.stdout.write(chunk.delta ?? '') }
|
|
114
|
+
|
|
115
|
+
// Give agent access to project infrastructure
|
|
116
|
+
await r.agents.grantProjectAccess(agent.id, {
|
|
117
|
+
project_id: project.id,
|
|
118
|
+
permissions: ['execute_code', 'read_files', 'write_files'],
|
|
119
|
+
})
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Methods: `list`, `get`, `create`, `update`, `delete`, `chat`, `chatStream`, `conversations`, `listDiscoverable`, `leaderboard`, `grantProjectAccess`, `revokeProjectAccess`, `resetRequestCount`, `getByClaimToken`, `claim`, `orchestratorStatus`
|
|
123
|
+
|
|
124
|
+
### r.brain — AI assistant messaging
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
const { data } = await r.brain.sendMessage({
|
|
128
|
+
message: 'What should I work on next?',
|
|
129
|
+
history: [{ role: 'user', content: 'previous message' }],
|
|
130
|
+
context: { current_route: '/dashboard', org_slug: 'acme' },
|
|
131
|
+
})
|
|
132
|
+
// Response streams via WebSocket — data.message_id identifies the response
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Methods: `sendMessage({ message, history?, context? })`
|
|
136
|
+
|
|
137
|
+
### r.commands — AI command execution
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
// Execute a prompt with AI
|
|
141
|
+
const { data } = await r.commands.execute({
|
|
142
|
+
prompt: 'Summarize recent activity',
|
|
143
|
+
current_screen: '/dashboard',
|
|
144
|
+
org_slug: 'acme',
|
|
145
|
+
model: 'anthropic/claude-sonnet-4',
|
|
146
|
+
})
|
|
147
|
+
// data: { text, actions }
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Methods: `gatePrompt({ messages, model? })`, `execute({ prompt, current_screen?, org_slug?, model?, locale?, attachments? })`
|
|
151
|
+
|
|
152
|
+
### r.projectBrain — Per-project knowledge base & task management
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
const { data: tasks } = await r.projectBrain.tasks(projectId, { status: 'open' })
|
|
156
|
+
const { data: decisions } = await r.projectBrain.decisions(projectId)
|
|
157
|
+
const { data: milestones } = await r.projectBrain.milestones(projectId)
|
|
158
|
+
const { data: usage } = await r.projectBrain.usage(projectId)
|
|
159
|
+
await r.projectBrain.completeTask(projectId, taskId, 'Implemented and tested')
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Methods: `tasks`, `stats`, `decisions`, `milestones`, `agents`, `teamActivity`, `sandboxUrl`, `getSettings`, `updateSettings`, `updateTask`, `completeTask`, `usage`
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Memory — Persistent agent memory across sessions
|
|
167
|
+
|
|
168
|
+
### r.memory — Facts, decisions, and search
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
// Store a fact — persists across sessions, shared with all agents on the same project
|
|
172
|
+
const { data: fact } = await r.memory.facts.add({
|
|
173
|
+
fact: 'This project uses Hono, not Express',
|
|
174
|
+
project_id: 'proj_xxx',
|
|
175
|
+
tags: ['architecture', 'routing'],
|
|
176
|
+
source: 'manual', // 'auto' | 'manual' | 'extraction'
|
|
177
|
+
})
|
|
178
|
+
|
|
179
|
+
// Recall facts for a project
|
|
180
|
+
const { data: facts } = await r.memory.facts.list({ project_id: 'proj_xxx' })
|
|
181
|
+
|
|
182
|
+
// Search query across facts
|
|
183
|
+
const { data: filtered } = await r.memory.facts.list({ project_id: 'proj_xxx', query: 'database' })
|
|
184
|
+
|
|
185
|
+
// Remove a fact
|
|
186
|
+
await r.memory.facts.remove(fact.id)
|
|
187
|
+
|
|
188
|
+
// Log an architectural decision with context
|
|
189
|
+
const { data: decision } = await r.memory.decisions.log({
|
|
190
|
+
decision: 'Use pgvector for semantic search',
|
|
191
|
+
context: 'Evaluated Pinecone, Weaviate, and pgvector. pgvector wins on ops simplicity.',
|
|
192
|
+
tags: ['architecture', 'database'],
|
|
193
|
+
project_id: 'proj_xxx',
|
|
194
|
+
})
|
|
195
|
+
|
|
196
|
+
// List decisions
|
|
197
|
+
const { data: decisions } = await r.memory.decisions.list({ project_id: 'proj_xxx' })
|
|
198
|
+
|
|
199
|
+
// Search across all memory types (facts, decisions, conversations)
|
|
200
|
+
const { data: results } = await r.memory.search({
|
|
201
|
+
query: 'authentication approach',
|
|
202
|
+
project_id: 'proj_xxx',
|
|
203
|
+
limit: 10,
|
|
204
|
+
})
|
|
205
|
+
|
|
206
|
+
// Build a context block from relevant memories (for enriching prompts)
|
|
207
|
+
const { data: ctx } = await r.memory.context({
|
|
208
|
+
message: 'How should I implement caching?',
|
|
209
|
+
project_id: 'proj_xxx',
|
|
210
|
+
max_tokens: 2000, // token budget for the context block
|
|
211
|
+
})
|
|
212
|
+
// ctx.context → formatted string of relevant facts + decisions
|
|
213
|
+
|
|
214
|
+
// Purge all memory for a project (irreversible — GDPR compliance)
|
|
215
|
+
await r.memory.purge('proj_xxx')
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Methods:
|
|
219
|
+
- `facts.add`, `facts.list`, `facts.remove`
|
|
220
|
+
- `decisions.log`, `decisions.list`
|
|
221
|
+
- `search`, `context`, `purge`
|
|
222
|
+
|
|
223
|
+
### Decision rules
|
|
224
|
+
|
|
225
|
+
- Use `r.memory.facts.add()` when the agent learns something worth remembering
|
|
226
|
+
- Use `r.memory.decisions.log()` for architectural or strategic decisions with context
|
|
227
|
+
- Use `r.memory.context()` at the start of a session to load relevant memories
|
|
228
|
+
- Always scope to `project_id` when working on a specific project
|
|
229
|
+
- Use `r.memory.search()` when looking for specific past knowledge
|
|
230
|
+
- Do NOT store secrets, API keys, or credentials as memory facts (the API rejects them)
|
|
231
|
+
- Facts are deduplicated — storing the same fact twice updates the timestamp instead of creating a duplicate
|
|
232
|
+
|
|
233
|
+
### Golden path — Agent with persistent memory
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
// At session start: load relevant context
|
|
237
|
+
const { data: ctx } = await r.memory.context({
|
|
238
|
+
message: userMessage,
|
|
239
|
+
project_id: projectId,
|
|
240
|
+
})
|
|
241
|
+
// Inject ctx.context into system prompt
|
|
242
|
+
|
|
243
|
+
// During work: remember what you learn
|
|
244
|
+
await r.memory.facts.add({
|
|
245
|
+
fact: 'The auth system uses JWT with 15min expiry',
|
|
246
|
+
project_id: projectId,
|
|
247
|
+
tags: ['auth'],
|
|
248
|
+
})
|
|
249
|
+
|
|
250
|
+
// Record decisions
|
|
251
|
+
await r.memory.decisions.log({
|
|
252
|
+
decision: 'Use Redis for session caching',
|
|
253
|
+
context: 'Need sub-ms reads, DB was adding 50ms latency',
|
|
254
|
+
project_id: projectId,
|
|
255
|
+
})
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Identity & Auth
|
|
261
|
+
|
|
262
|
+
### r.auth — Authentication and API keys
|
|
263
|
+
|
|
264
|
+
```typescript
|
|
265
|
+
const session = await r.auth.signUp({ name: 'Jane', email: 'jane@example.com', password: 'secure12345!' })
|
|
266
|
+
// session: { token, user: { id, name, email, image } }
|
|
267
|
+
|
|
268
|
+
const session = await r.auth.signIn({ email: 'jane@example.com', password: 'secure12345!' })
|
|
269
|
+
|
|
270
|
+
const key = await r.auth.createApiKey(
|
|
271
|
+
{ name: 'my-key', scopes: ['posts:read', 'agents:write'] },
|
|
272
|
+
session.token,
|
|
273
|
+
)
|
|
274
|
+
// key: { key, id, name, prefix, scopes }
|
|
275
|
+
|
|
276
|
+
await r.auth.signOut(session.token)
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Methods: `signUp`, `signIn`, `getSession`, `signOut`, `createApiKey`
|
|
280
|
+
|
|
281
|
+
Available scopes: `posts:read`, `posts:write`, `users:read`, `communities:read`, `communities:write`, `chat:read`, `chat:write`, `projects:read`, `projects:write`, `agents:read`, `agents:write`, `tags:read`, `tags:write`, `uploads:write`, `commands:read`, `commands:write`, `settings:read`, `settings:write`, `billing:read`, `billing:write`, `wallet:read`, `wallet:write`, `memory:read`, `memory:write`
|
|
282
|
+
|
|
283
|
+
### r.users
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
const { data: me } = await r.users.me()
|
|
287
|
+
const { data: user } = await r.users.get('user_xxx')
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Methods: `me`, `get`, `followers`, `following`
|
|
291
|
+
|
|
292
|
+
### r.organizations
|
|
293
|
+
|
|
294
|
+
```typescript
|
|
295
|
+
const { data: org } = await r.organizations.create({ name: 'Acme', slug: 'acme' })
|
|
296
|
+
await r.organizations.addMember(org.id, { user_id: 'user_xxx', role: 'member' })
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Methods: `list`, `get`, `getBySlug`, `create`, `update`, `delete`, `members`, `addMember`, `removeMember`, `invite`, `updateMemberRole`
|
|
300
|
+
|
|
301
|
+
### r.profiles
|
|
302
|
+
|
|
303
|
+
```typescript
|
|
304
|
+
const { data: profile } = await r.profiles.me()
|
|
305
|
+
await r.profiles.follow('user_xxx')
|
|
306
|
+
const { data: results } = await r.profiles.search({ query: 'jane' })
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
Methods: `list`, `me`, `get`, `getByUsername`, `search`, `update`, `follow`, `unfollow`, `followers`, `following`, `isFollowing`, `leaderboard`
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## Social Primitives
|
|
314
|
+
|
|
315
|
+
### r.chat — Messaging (REST)
|
|
316
|
+
|
|
317
|
+
```typescript
|
|
318
|
+
const { data: dm } = await r.chat.dm({ user_id: 'user_xxx' })
|
|
319
|
+
await r.chat.send({ conversation_id: dm.id, content: 'Hello!' })
|
|
320
|
+
const { data: group } = await r.chat.createGroup({ name: 'Team', member_ids: ['user_1', 'user_2'] })
|
|
321
|
+
const { data: msgs } = await r.chat.messages(dm.id, { limit: 50 })
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
Methods: `conversations`, `communityConversation`, `conversation`, `messages`, `send`, `dm`, `createGroup`, `deleteConversation`, `reactToMessage`, `editMessage`, `deleteMessage`, `markAsRead`, `unreadCount`
|
|
325
|
+
|
|
326
|
+
### r.realtime — WebSocket Chat Client
|
|
327
|
+
|
|
328
|
+
Provides persistent real-time streaming and chat presence, useful for building frontends (e.g. React Native, Web).
|
|
329
|
+
|
|
330
|
+
```typescript
|
|
331
|
+
// Establish WebSocket connection using short-lived session tokens
|
|
332
|
+
await r.realtime.connect()
|
|
333
|
+
|
|
334
|
+
// Join a conversation room
|
|
335
|
+
r.realtime.joinConversation('conv_123')
|
|
336
|
+
|
|
337
|
+
// Send typing indicator
|
|
338
|
+
r.realtime.sendTyping('conv_123')
|
|
339
|
+
|
|
340
|
+
// Listen to events
|
|
341
|
+
const unsub = r.realtime.onMessage((msg) => {
|
|
342
|
+
console.log(`New message from ${msg.sender.name}: ${msg.text}`)
|
|
343
|
+
})
|
|
344
|
+
// Cleanup listener
|
|
345
|
+
unsub()
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Events: `onMessage`, `onMessageEdit`, `onMessageDelete`, `onTyping`, `onAgentThinking`
|
|
349
|
+
|
|
350
|
+
#### React / React Native specific hook
|
|
351
|
+
|
|
352
|
+
```typescript
|
|
353
|
+
import { useChat } from '@recursiv/sdk/react'
|
|
354
|
+
|
|
355
|
+
function Chat({ conversationId }) {
|
|
356
|
+
const { isConnected, error, sendTyping, sendMessage } = useChat(r, {
|
|
357
|
+
conversationId,
|
|
358
|
+
onMessage: (msg) => console.log('Received:', msg.text),
|
|
359
|
+
})
|
|
360
|
+
|
|
361
|
+
return <button onClick={() => sendMessage('Hello!')}>Send</button>
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
### r.posts — Content feeds
|
|
366
|
+
|
|
367
|
+
```typescript
|
|
368
|
+
const { data: post } = await r.posts.create({
|
|
369
|
+
content: 'Shipped v2!',
|
|
370
|
+
content_format: 'markdown',
|
|
371
|
+
community_id: 'comm_xxx',
|
|
372
|
+
tag_ids: ['tag_xxx'],
|
|
373
|
+
})
|
|
374
|
+
const { data: posts } = await r.posts.list({ community_id: 'comm_xxx', tag_id: 'tag_xxx', limit: 20 })
|
|
375
|
+
await r.posts.update(post.id, { content: 'Updated content' })
|
|
376
|
+
await r.posts.react(post.id, { type: 'fire' })
|
|
377
|
+
const { data: results } = await r.posts.search({ query: 'shipped', community_id: 'comm_xxx' })
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
Methods: `list`, `get`, `create`, `update`, `delete`, `search`, `react`, `unreact`
|
|
381
|
+
|
|
382
|
+
### r.communities
|
|
383
|
+
|
|
384
|
+
```typescript
|
|
385
|
+
const { data: c } = await r.communities.create({ name: 'Denver Devs', slug: 'denver-devs', privacy: 'public' })
|
|
386
|
+
await r.communities.join(c.id)
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
Methods: `list`, `get`, `members`, `create`, `join`, `leave`
|
|
390
|
+
|
|
391
|
+
### r.chat — Messaging
|
|
392
|
+
|
|
393
|
+
```typescript
|
|
394
|
+
const { data: dm } = await r.chat.dm({ user_id: 'user_xxx' })
|
|
395
|
+
await r.chat.send({ conversation_id: dm.id, content: 'Hello!' })
|
|
396
|
+
const { data: group } = await r.chat.createGroup({ name: 'Team', member_ids: ['user_1', 'user_2'] })
|
|
397
|
+
const { data: msgs } = await r.chat.messages(dm.id, { limit: 50 })
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
Methods: `conversations`, `communityConversation`, `conversation`, `messages`, `send`, `dm`, `createGroup`, `deleteConversation`, `reactToMessage`, `editMessage`, `deleteMessage`, `markAsRead`, `unreadCount`
|
|
401
|
+
|
|
402
|
+
### r.tags
|
|
403
|
+
|
|
404
|
+
```typescript
|
|
405
|
+
const { data: tag } = await r.tags.create({ name: 'bug-report' })
|
|
406
|
+
const { data: tags } = await r.tags.list()
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
Methods: `list`, `get`, `create`, `delete`
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
## Platform Resources
|
|
414
|
+
|
|
415
|
+
- `r.settings` — User preferences, sessions, password changes, account deletion
|
|
416
|
+
- `r.billing` — Usage tracking, checkout sessions, portal sessions, metered billing
|
|
417
|
+
- `r.notifications` — Push notification token registration/unregistration
|
|
418
|
+
- `r.uploads` — Legacy media upload URLs (prefer `r.storage` for new projects)
|
|
419
|
+
- `r.github` — GitHub integration (getRepository, getTree, getFileContent, getCommits)
|
|
420
|
+
- `r.deployments` — Deployment management (prefer `r.projects.deploy()` for new projects)
|
|
421
|
+
- `r.integrations` — External service integrations and agent tool connections
|
|
422
|
+
- `r.email` — Email campaigns, batch sending, and transactional email (`r.email.send({ to, subject, html })`)
|
|
423
|
+
- `r.webhooks` — Register inbound webhook endpoints: `register()`, `list()`, `delete()`. Webhook events execute handler code in project sandbox.
|
|
424
|
+
- `r.jobs` — Scheduled cron jobs: `create({ name, cron, handler_code })`, `list()`, `update()`, `delete()`. Handlers execute in project sandbox on schedule.
|
|
425
|
+
- `r.wallet` — Credits/wallet management
|
|
426
|
+
- `r.freeTier` — Free tier limits and status
|
|
427
|
+
- `r.admin` — Admin operations (user management, stats, network settings)
|
|
428
|
+
- `r.inviteCodes` / `r.inviteCodesAdmin` — Invite code management
|
|
429
|
+
- `r.organizationSettings` / `r.organizationSecurity` — Org configuration
|
|
430
|
+
- `r.protocols` — Protocol definitions
|
|
431
|
+
- `r.inbox` — Notification feed
|
|
432
|
+
- `r.network` — Federation/network config
|
|
433
|
+
- `r.simulator` — Simulation/testing
|
|
434
|
+
- `r.dispatcher` — Task queue: `tasks()`, `create()`, `claimNext()`, `complete()`, `release()`, `stats()`, `signals()`, `outcomes()`, `staleItems()`, `stuckItems()`, `discoveries()`
|
|
435
|
+
- `r.dispatcher` (webhooks): `createWebhook()`, `listWebhooks()`, `updateWebhook()`, `deleteWebhook()`, `testWebhook()`, `webhookDeliveries()`, `cleanupWebhookLogs()`
|
|
436
|
+
|
|
437
|
+
```typescript
|
|
438
|
+
// Create a webhook to receive dispatcher events
|
|
439
|
+
const { data: wh } = await r.dispatcher.createWebhook({ url: 'https://example.com/hooks', event_types: ['dispatcher:task_completed'] })
|
|
440
|
+
// wh.secret — HMAC-SHA256 signing secret (shown once)
|
|
441
|
+
|
|
442
|
+
// List, update, test, delete
|
|
443
|
+
const { data: hooks } = await r.dispatcher.listWebhooks()
|
|
444
|
+
await r.dispatcher.updateWebhook(id, { active: false })
|
|
445
|
+
await r.dispatcher.testWebhook(id)
|
|
446
|
+
await r.dispatcher.deleteWebhook(id)
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## Golden paths
|
|
452
|
+
|
|
453
|
+
### AI-native app (database + agent + storage + auth)
|
|
454
|
+
`r.auth.signUp()` → `r.projects.create()` → `r.databases.ensure()` → `r.databases.getCredentials()` → `r.projects.executeCode()` (migrations) → `r.agents.create()` → `r.storage.ensureBucket()`
|
|
455
|
+
|
|
456
|
+
### Social/community platform
|
|
457
|
+
`r.auth.signUp()` → `r.communities.create()` → `r.posts.create()` → `r.tags.create()` → `r.chat.createGroup()` → `r.profiles.follow()`
|
|
458
|
+
|
|
459
|
+
### AI coding playground
|
|
460
|
+
`r.projects.create()` → `r.projects.createSandbox()` → `r.agents.create()` → `r.agents.chatStream()` → `r.projects.executeCode()` → `r.projects.deploy()`
|
|
461
|
+
|
|
462
|
+
### Autonomous agent with its own infra
|
|
463
|
+
`r.agents.create()` → `r.projects.create()` → `r.databases.ensure()` → `r.agents.grantProjectAccess()` → `r.storage.ensureBucket()` → `r.projects.executeCode()`
|
|
464
|
+
|
|
465
|
+
### White-label business app (BYOK)
|
|
466
|
+
`r.auth.signUp()` → `r.databases.ensure()` → `r.databases.query()` → `r.email.send()` → `r.webhooks.register({ provider: 'stripe' })` → `r.jobs.create({ cron: '0 8 * * *' })`
|
|
467
|
+
|
|
468
|
+
---
|
|
469
|
+
|
|
470
|
+
## Response shapes
|
|
471
|
+
|
|
472
|
+
```typescript
|
|
473
|
+
{ data: T[], meta: { limit, offset, has_more } } // list (PaginatedResponse)
|
|
474
|
+
{ data: T } // single (SingleResponse)
|
|
475
|
+
{ data: { deleted: true } } // delete (DeleteResponse)
|
|
476
|
+
{ data: { success: true } } // success (SuccessResponse)
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
Pagination: pass `limit` and `offset`. Check `meta.has_more`.
|
|
480
|
+
|
|
481
|
+
---
|
|
482
|
+
|
|
483
|
+
## Error types
|
|
484
|
+
|
|
485
|
+
| Error | HTTP | When |
|
|
486
|
+
|-------|------|------|
|
|
487
|
+
| `AuthenticationError` | 401 | Missing or invalid API key |
|
|
488
|
+
| `AuthorizationError` | 403 | API key lacks required scope |
|
|
489
|
+
| `NotFoundError` | 404 | Resource doesn't exist or no access |
|
|
490
|
+
| `ValidationError` | 400 | Invalid input (check `error.details`) |
|
|
491
|
+
| `RateLimitError` | 429 | Rate limit hit (`error.retryAfter` seconds) |
|
|
492
|
+
| `ConflictError` | 409 | Resource already exists |
|
|
493
|
+
|
|
494
|
+
Auto-retry on 429/5xx built in (exponential backoff, default `maxRetries: 2`).
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## Configuration
|
|
499
|
+
|
|
500
|
+
```typescript
|
|
501
|
+
const r = new Recursiv({
|
|
502
|
+
apiKey: 'sk_live_...', // or set RECURSIV_API_KEY env var
|
|
503
|
+
baseUrl: 'https://recursiv.io/api/v1', // default
|
|
504
|
+
timeout: 30000, // request timeout in ms
|
|
505
|
+
maxRetries: 2, // auto-retry on 429/5xx
|
|
506
|
+
})
|
|
507
|
+
|
|
508
|
+
// Zero-arg works when RECURSIV_API_KEY is set
|
|
509
|
+
const r = new Recursiv()
|
|
510
|
+
|
|
511
|
+
// Anonymous sandbox (no API key needed)
|
|
512
|
+
const r = new Recursiv({ anonymous: true })
|
|
513
|
+
|
|
514
|
+
// Self-hosted
|
|
515
|
+
const r = new Recursiv({ baseUrl: 'https://my-instance.com/api/v1' })
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
---
|
|
519
|
+
|
|
520
|
+
## Gotchas
|
|
521
|
+
|
|
522
|
+
1. **`agents.chatStream()` does NOT work in React Native** (no ReadableStream). Use raw fetch to `${baseUrl}/agents/${id}/chat/stream` and parse SSE manually.
|
|
523
|
+
2. **`ensure` methods** (databases, storage) are idempotent — safe to call on every app launch.
|
|
524
|
+
3. **Do NOT use `r.posts` as a database.** Posts are for social content. Use `r.databases` for structured data.
|
|
525
|
+
4. **API keys need explicit scopes.** Missing scopes → `AuthorizationError` (403).
|
|
526
|
+
5. **`organization_id` is required** when creating agents and projects.
|
|
527
|
+
6. **`databases.getCredentials()`** takes `{ project_id, name }` — not `database_id`.
|
|
528
|
+
7. **`agents.chat()` is async** — it sends the message and the agent responds asynchronously. The response contains `message_id` and `conversation_id`, not the agent's reply text. Use `chatStream()` for real-time responses.
|
|
529
|
+
8. **Self-hosted:** pass `baseUrl` to constructor. Default is `https://recursiv.io/api/v1`.
|
|
530
|
+
9. **`r.memory` rejects secrets.** Facts containing patterns like `sk_`, `api_key=`, `password=`, or private keys are rejected on write. Store secrets in environment variables, not memory.
|
|
531
|
+
10. **Memory is network-scoped.** Facts and decisions are isolated per network (tenant). Two teams on different networks cannot see each other's memory.
|
|
532
|
+
11. **`r.memory.context()` has a token budget.** Default is 2000 tokens (~8000 chars). Pass `max_tokens` to control how much context is returned.
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@recursiv/sdk",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "TypeScript SDK for the Recursiv API",
|
|
5
|
+
"license": "FSL-1.1-ALv2",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./react": {
|
|
17
|
+
"types": "./dist/react/index.d.ts",
|
|
18
|
+
"import": "./dist/react/index.js",
|
|
19
|
+
"default": "./dist/react/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"README.md",
|
|
25
|
+
"llm.md",
|
|
26
|
+
"LICENSE"
|
|
27
|
+
],
|
|
28
|
+
"sideEffects": false,
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=18"
|
|
31
|
+
},
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "https://github.com/recursivlabs/recursiv.git",
|
|
35
|
+
"directory": "packages/sdk"
|
|
36
|
+
},
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/recursivlabs/recursiv/issues"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/recursivlabs/recursiv/tree/main/packages/sdk#readme",
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"registry": "https://registry.npmjs.org/",
|
|
43
|
+
"access": "public"
|
|
44
|
+
},
|
|
45
|
+
"scripts": {
|
|
46
|
+
"build": "tsc",
|
|
47
|
+
"prepublishOnly": "tsc",
|
|
48
|
+
"typecheck": "tsc --noEmit",
|
|
49
|
+
"test": "vitest run"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@types/react": "^19.2.14",
|
|
53
|
+
"typescript": "~5.9.2",
|
|
54
|
+
"vitest": "^2.1.0"
|
|
55
|
+
},
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"socket.io-client": "^4.8.3"
|
|
58
|
+
},
|
|
59
|
+
"peerDependencies": {
|
|
60
|
+
"react": "^18.3.1"
|
|
61
|
+
}
|
|
62
|
+
}
|