@elevasis/sdk 0.4.9 → 0.4.11
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/dist/cli.cjs +456 -56
- package/dist/index.d.ts +4343 -3
- package/dist/templates.js +60 -50
- package/dist/types/worker/index.d.ts +1 -0
- package/dist/worker/index.js +245 -1
- package/package.json +10 -10
- package/reference/_navigation.md +60 -58
- package/reference/deployment/command-view.mdx +154 -0
- package/reference/platform-tools/adapters.mdx +927 -0
- package/reference/platform-tools/examples.mdx +89 -106
- package/reference/platform-tools/index.mdx +61 -47
- package/reference/troubleshooting/common-errors.mdx +36 -0
- package/reference/_index.md +0 -95
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Integration Examples
|
|
3
|
-
description:
|
|
3
|
+
description: Working code examples for email, CRM, PDF, LLM inference, resource triggering, and storage using typed adapters and platform.call()
|
|
4
4
|
loadWhen: "Implementing a platform tool call in a workflow step"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Working code examples for common tool integrations. All tools shown here have [typed adapters](adapters.mdx) that provide full autocomplete and compile-time checking -- prefer adapters in new code. The `platform.call()` patterns below are kept as reference and for tools without adapters yet (supabase).
|
|
8
8
|
|
|
9
9
|
## Sending Email via Resend
|
|
10
10
|
|
|
11
11
|
Send a transactional email through your Resend account. Store your Resend API key as a credential named `resend` using the [Elevasis CLI](../cli/index.mdx).
|
|
12
12
|
|
|
13
13
|
```typescript
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
html: '<p>Thank you for your order!</p>'
|
|
23
|
-
}
|
|
14
|
+
import { createResendAdapter } from '@elevasis/sdk/worker'
|
|
15
|
+
|
|
16
|
+
const resend = createResendAdapter('resend')
|
|
17
|
+
const result = await resend.sendEmail({
|
|
18
|
+
from: 'hello@yourapp.com',
|
|
19
|
+
to: 'customer@example.com',
|
|
20
|
+
subject: 'Your order is confirmed',
|
|
21
|
+
html: '\<p\>Thank you for your order!\</p\>',
|
|
24
22
|
})
|
|
25
23
|
```
|
|
26
24
|
|
|
@@ -31,95 +29,86 @@ The `credential` value must match the name you used when storing the API key. Re
|
|
|
31
29
|
Create a contact or company record in Attio. Store your Attio API key as a credential named `attio`.
|
|
32
30
|
|
|
33
31
|
```typescript
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
company: 'Acme Corp'
|
|
44
|
-
}
|
|
45
|
-
}
|
|
32
|
+
import { createAttioAdapter } from '@elevasis/sdk/worker'
|
|
33
|
+
|
|
34
|
+
const attio = createAttioAdapter('attio')
|
|
35
|
+
const result = await attio.createRecord({
|
|
36
|
+
object: 'people',
|
|
37
|
+
values: {
|
|
38
|
+
name: [{ full_name: 'Jane Smith' }],
|
|
39
|
+
email_addresses: [{ email_address: 'jane@example.com' }],
|
|
40
|
+
},
|
|
46
41
|
})
|
|
47
42
|
|
|
48
|
-
// result.data.id is the new record ID
|
|
49
43
|
const recordId = result.data.id
|
|
50
44
|
```
|
|
51
45
|
|
|
52
|
-
Attio exposes
|
|
46
|
+
Attio exposes 12 methods covering CRUD operations, schema inspection, and notes. See the [typed adapter reference](adapters.mdx#attio-crm-adapter) for the full method list.
|
|
53
47
|
|
|
54
48
|
## Generating a PDF
|
|
55
49
|
|
|
56
|
-
Render a PDF from
|
|
50
|
+
Render a PDF from a document structure or template. No credential required -- PDF generation is a built-in platform service.
|
|
57
51
|
|
|
58
52
|
```typescript
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
}
|
|
53
|
+
import { pdf, storage } from '@elevasis/sdk/worker'
|
|
54
|
+
|
|
55
|
+
// Render to storage directly
|
|
56
|
+
const result = await pdf.render({
|
|
57
|
+
document: proposalDocument,
|
|
58
|
+
storage: { bucket: 'invoices', path: 'invoice-1042.pdf' },
|
|
59
|
+
})
|
|
60
|
+
console.log(result.pdfUrl)
|
|
61
|
+
|
|
62
|
+
// Or render to buffer for inline processing
|
|
63
|
+
const { buffer } = await pdf.renderToBuffer({
|
|
64
|
+
document: proposalDocument,
|
|
73
65
|
})
|
|
74
66
|
|
|
75
|
-
//
|
|
76
|
-
await
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
data: pdfBuffer,
|
|
82
|
-
contentType: 'application/pdf'
|
|
83
|
-
}
|
|
67
|
+
// Then upload manually if needed
|
|
68
|
+
await storage.upload({
|
|
69
|
+
bucket: 'invoices',
|
|
70
|
+
path: 'invoice-1042.pdf',
|
|
71
|
+
content: buffer,
|
|
72
|
+
contentType: 'application/pdf',
|
|
84
73
|
})
|
|
85
74
|
```
|
|
86
75
|
|
|
87
76
|
## Making an LLM Call with Structured Output
|
|
88
77
|
|
|
89
|
-
Use the `llm`
|
|
78
|
+
Use the `llm` adapter to call any supported model with a JSON Schema for structured output. No API keys are needed in your code -- keys are resolved server-side.
|
|
90
79
|
|
|
91
80
|
```typescript
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
},
|
|
116
|
-
required: ['priority', 'category', 'sentiment', 'summary']
|
|
81
|
+
import { llm } from '@elevasis/sdk/worker'
|
|
82
|
+
|
|
83
|
+
interface TicketClassification {
|
|
84
|
+
priority: 'low' | 'medium' | 'high' | 'critical'
|
|
85
|
+
category: 'billing' | 'technical' | 'account' | 'other'
|
|
86
|
+
sentiment: 'positive' | 'neutral' | 'negative'
|
|
87
|
+
summary: string
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const response = await llm.generate\<TicketClassification\>({
|
|
91
|
+
provider: 'anthropic',
|
|
92
|
+
model: 'claude-sonnet-4-5',
|
|
93
|
+
messages: [
|
|
94
|
+
{ role: 'system', content: 'You extract structured data from support tickets.' },
|
|
95
|
+
{ role: 'user', content: ticketText },
|
|
96
|
+
],
|
|
97
|
+
responseSchema: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
properties: {
|
|
100
|
+
priority: { type: 'string', enum: ['low', 'medium', 'high', 'critical'] },
|
|
101
|
+
category: { type: 'string', enum: ['billing', 'technical', 'account', 'other'] },
|
|
102
|
+
sentiment: { type: 'string', enum: ['positive', 'neutral', 'negative'] },
|
|
103
|
+
summary: { type: 'string' },
|
|
117
104
|
},
|
|
118
|
-
|
|
119
|
-
}
|
|
105
|
+
required: ['priority', 'category', 'sentiment', 'summary'],
|
|
106
|
+
},
|
|
107
|
+
temperature: 0.1,
|
|
120
108
|
})
|
|
121
109
|
|
|
122
|
-
//
|
|
110
|
+
// response.output is typed as TicketClassification
|
|
111
|
+
const { priority, category, summary } = response.output
|
|
123
112
|
```
|
|
124
113
|
|
|
125
114
|
Supported providers: `google`, `openai`, `anthropic`, `openrouter`. See [Platform Tools](index.mdx) for the full model list.
|
|
@@ -129,17 +118,15 @@ Supported providers: `google`, `openai`, `anthropic`, `openrouter`. See [Platfor
|
|
|
129
118
|
Trigger a separate workflow or agent as a nested child execution. The call is synchronous -- your workflow waits for the child to complete and receives its output.
|
|
130
119
|
|
|
131
120
|
```typescript
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
}
|
|
121
|
+
import { execution } from '@elevasis/sdk/worker'
|
|
122
|
+
|
|
123
|
+
const outcome = await execution.trigger({
|
|
124
|
+
resourceId: 'send-welcome-sequence',
|
|
125
|
+
input: {
|
|
126
|
+
userId: newUser.id,
|
|
127
|
+
email: newUser.email,
|
|
128
|
+
plan: 'pro',
|
|
129
|
+
},
|
|
143
130
|
})
|
|
144
131
|
|
|
145
132
|
if (!outcome.success) {
|
|
@@ -156,25 +143,21 @@ Nested executions are tracked with depth up to a maximum of 5 levels. Both the c
|
|
|
156
143
|
Upload a file to Elevasis-managed storage and generate a signed URL for temporary access. No credential required.
|
|
157
144
|
|
|
158
145
|
```typescript
|
|
146
|
+
import { storage } from '@elevasis/sdk/worker'
|
|
147
|
+
|
|
159
148
|
// Upload a processed file
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
contentType: 'text/csv'
|
|
167
|
-
}
|
|
149
|
+
const reportPath = `exports/report-${Date.now()}.csv`
|
|
150
|
+
await storage.upload({
|
|
151
|
+
bucket: 'exports',
|
|
152
|
+
path: reportPath,
|
|
153
|
+
content: csvContent,
|
|
154
|
+
contentType: 'text/csv',
|
|
168
155
|
})
|
|
169
156
|
|
|
170
157
|
// Generate a signed URL valid for 1 hour (3600 seconds)
|
|
171
|
-
const { signedUrl } = await
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
params: {
|
|
175
|
-
path: `exports/${organizationSlug}/report-${Date.now()}.csv`,
|
|
176
|
-
expiresIn: 3600
|
|
177
|
-
}
|
|
158
|
+
const { signedUrl } = await storage.createSignedUrl({
|
|
159
|
+
bucket: 'exports',
|
|
160
|
+
path: reportPath,
|
|
178
161
|
})
|
|
179
162
|
|
|
180
163
|
// Share signedUrl with the user or include in an email
|
|
@@ -184,4 +167,4 @@ Storage also supports `download`, `delete`, and `list` operations. Use `list` to
|
|
|
184
167
|
|
|
185
168
|
---
|
|
186
169
|
|
|
187
|
-
**Last Updated:** 2026-02
|
|
170
|
+
**Last Updated:** 2026-03-02
|
|
@@ -1,25 +1,42 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Platform Tools
|
|
3
|
-
description: Access 70+ tools across integration adapters and platform services from your SDK workflows
|
|
3
|
+
description: Access 70+ tools across integration adapters and platform services from your SDK workflows -- typed adapters with full autocomplete for all tools, plus platform.call() as a fallback
|
|
4
4
|
loadWhen: "Connecting to external services"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Your SDK workflows have access to 70+ tools -- Gmail, Stripe, Google Sheets, PDF generation, human-in-the-loop approvals, storage, scheduling, and more. Credentials are managed server-side and never appear in your code.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
**Typed adapters** are the recommended way to call tools. They provide full TypeScript autocomplete, compile-time method checking, and eliminate boilerplate. Use `platform.call()` only for tools that don't have an adapter yet.
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
|
+
**Preferred: Typed adapters** (available for all integration tools + key platform services)
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { createResendAdapter, scheduler, llm } from '@elevasis/sdk/worker'
|
|
17
|
+
|
|
18
|
+
// Integration tools: factory pattern (credential bound once)
|
|
19
|
+
const resend = createResendAdapter('my-resend')
|
|
20
|
+
await resend.sendEmail({ from: 'hi@app.com', to: 'user@example.com', subject: '...' })
|
|
21
|
+
|
|
22
|
+
// Platform services: singleton (no credential needed)
|
|
23
|
+
await scheduler.createSchedule({ ... })
|
|
24
|
+
const result = await llm.generate({ messages: [...] })
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Fallback: `platform.call()`** (for tools without typed adapters)
|
|
28
|
+
|
|
13
29
|
```typescript
|
|
30
|
+
import { platform } from '@elevasis/sdk/worker'
|
|
31
|
+
|
|
14
32
|
const result = await platform.call({
|
|
15
|
-
tool: '
|
|
16
|
-
method: '
|
|
17
|
-
params: { ... },
|
|
18
|
-
credential: 'my-resend' // credential name (integration tools only)
|
|
33
|
+
tool: 'lead', // tool name
|
|
34
|
+
method: 'upsertDeal', // method exposed by that tool
|
|
35
|
+
params: { ... }, // method-specific parameters
|
|
19
36
|
})
|
|
20
37
|
```
|
|
21
38
|
|
|
22
|
-
|
|
39
|
+
Both patterns return a Promise that resolves with the tool result or rejects with a `PlatformToolError` containing a message, error code, and a `retryable` flag.
|
|
23
40
|
|
|
24
41
|
## Integration Adapters
|
|
25
42
|
|
|
@@ -45,45 +62,43 @@ Credentials are stored in the Elevasis credentials table and injected server-sid
|
|
|
45
62
|
|
|
46
63
|
## Platform Services
|
|
47
64
|
|
|
48
|
-
Nine built-in platform services are available without a `credential` field. These are Elevasis-managed capabilities.
|
|
65
|
+
Nine built-in platform services are available without a `credential` field. These are Elevasis-managed capabilities. All have typed singleton adapters imported from `@elevasis/sdk/worker`.
|
|
49
66
|
|
|
50
67
|
| Tool Key | Methods | Purpose |
|
|
51
68
|
| --- | --- | --- |
|
|
52
|
-
| `
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `llm` | `generate` | LLM inference
|
|
60
|
-
| `execution` | `trigger` |
|
|
69
|
+
| `lead` | 35 methods (CRUD + sync) | Lead management -- `lead` singleton adapter |
|
|
70
|
+
| `email` | `send` | Send platform email to org members -- `email` singleton adapter |
|
|
71
|
+
| `storage` | `upload`, `download`, `createSignedUrl`, `delete`, `list` | File storage -- `storage` singleton adapter |
|
|
72
|
+
| `pdf` | `render`, `renderToBuffer` | PDF rendering -- `pdf` singleton adapter |
|
|
73
|
+
| `notification` | `create` | In-app notifications -- `notifications` singleton adapter |
|
|
74
|
+
| `approval` | `create`, `deleteByMetadata` | HITL approval gates -- `approval` singleton adapter |
|
|
75
|
+
| `scheduler` | `createSchedule`, `updateAnchor`, `deleteSchedule`, `findByIdempotencyKey`, `deleteScheduleByIdempotencyKey`, `listSchedules`, `getSchedule`, `cancelSchedule`, `cancelSchedulesByMetadata` | Task scheduling -- `scheduler` singleton adapter |
|
|
76
|
+
| `llm` | `generate` | LLM inference -- `llm` singleton adapter |
|
|
77
|
+
| `execution` | `trigger` | Nested child execution -- `execution` singleton adapter |
|
|
61
78
|
|
|
62
79
|
## LLM Tool
|
|
63
80
|
|
|
64
|
-
Call any supported LLM from your workflow with no API keys required. Keys are resolved server-side from environment variables.
|
|
81
|
+
Call any supported LLM from your workflow with no API keys required. Keys are resolved server-side from environment variables. Use the `llm` typed adapter for full autocomplete.
|
|
65
82
|
|
|
66
83
|
```typescript
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
confidence: { type: 'number', minimum: 0, maximum: 1 }
|
|
82
|
-
},
|
|
83
|
-
required: ['category', 'confidence']
|
|
84
|
+
import { llm } from '@elevasis/sdk/worker'
|
|
85
|
+
|
|
86
|
+
const result = await llm.generate({
|
|
87
|
+
provider: 'google',
|
|
88
|
+
model: 'gemini-3-flash-preview',
|
|
89
|
+
messages: [
|
|
90
|
+
{ role: 'system', content: 'Classify this email reply.' },
|
|
91
|
+
{ role: 'user', content: emailText }
|
|
92
|
+
],
|
|
93
|
+
responseSchema: {
|
|
94
|
+
type: 'object',
|
|
95
|
+
properties: {
|
|
96
|
+
category: { type: 'string', enum: ['interested', 'not-interested', 'bounced'] },
|
|
97
|
+
confidence: { type: 'number', minimum: 0, maximum: 1 }
|
|
84
98
|
},
|
|
85
|
-
|
|
86
|
-
}
|
|
99
|
+
required: ['category', 'confidence']
|
|
100
|
+
},
|
|
101
|
+
temperature: 0.2
|
|
87
102
|
})
|
|
88
103
|
```
|
|
89
104
|
|
|
@@ -109,13 +124,11 @@ const result = await platform.call({
|
|
|
109
124
|
Trigger another resource (workflow or agent) as a nested child of the current execution. The child runs synchronously and its result is returned. Depth is tracked automatically up to a maximum of 5 levels to prevent infinite recursion.
|
|
110
125
|
|
|
111
126
|
```typescript
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
input: { key: 'value' }
|
|
118
|
-
}
|
|
127
|
+
import { execution } from '@elevasis/sdk/worker'
|
|
128
|
+
|
|
129
|
+
const result = await execution.trigger({
|
|
130
|
+
resourceId: 'my-other-workflow',
|
|
131
|
+
input: { key: 'value' },
|
|
119
132
|
})
|
|
120
133
|
// result = { success: true, executionId: '...', output: { ... }, error: undefined }
|
|
121
134
|
```
|
|
@@ -175,8 +188,9 @@ const qualified = await platform.call({
|
|
|
175
188
|
|
|
176
189
|
## Documentation
|
|
177
190
|
|
|
178
|
-
- [
|
|
191
|
+
- [Typed Adapters](adapters.mdx) - Type-safe wrappers for all 12 integrations + 4 platform services with full autocomplete (recommended)
|
|
192
|
+
- [Integration Examples](examples.mdx) - Working code examples for email, CRM, PDF, LLM, and more
|
|
179
193
|
|
|
180
194
|
---
|
|
181
195
|
|
|
182
|
-
**Last Updated:** 2026-02
|
|
196
|
+
**Last Updated:** 2026-03-02
|
|
@@ -63,6 +63,42 @@ This is the static SDK-level error catalog. Check `.claude/memory/errors/` first
|
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
66
|
+
## Relationship Validation Errors
|
|
67
|
+
|
|
68
|
+
### Relationship declared for non-existent resource
|
|
69
|
+
|
|
70
|
+
**Message:** `Relationship source 'resource-id' is not a known resource in 'org-name'`
|
|
71
|
+
|
|
72
|
+
**Cause:** The `relationships` map in your organization export contains a key that does not match any workflow, agent, trigger, or external resource ID.
|
|
73
|
+
|
|
74
|
+
**Fix:** Check the resource ID in your `relationships` declaration. Each key must exactly match a `resourceId` defined in your workflows, agents, triggers, or external resources.
|
|
75
|
+
|
|
76
|
+
### Resource triggers non-existent agent
|
|
77
|
+
|
|
78
|
+
**Message:** `Relationship target 'agent-id' (agent) not found in 'org-name'`
|
|
79
|
+
|
|
80
|
+
**Cause:** A relationship's `triggers.agents` array references an agent ID that does not exist.
|
|
81
|
+
|
|
82
|
+
**Fix:** Verify the agent ID spelling in `triggers: \{ agents: ['agent-id'] \}`. The ID must match the `resourceId` of an agent defined in your organization.
|
|
83
|
+
|
|
84
|
+
### Resource triggers non-existent workflow
|
|
85
|
+
|
|
86
|
+
**Message:** `Relationship target 'workflow-id' (workflow) not found in 'org-name'`
|
|
87
|
+
|
|
88
|
+
**Cause:** A relationship's `triggers.workflows` array references a workflow ID that does not exist.
|
|
89
|
+
|
|
90
|
+
**Fix:** Verify the workflow ID spelling in `triggers: \{ workflows: ['workflow-id'] \}`. The ID must match the `resourceId` of a workflow defined in your organization.
|
|
91
|
+
|
|
92
|
+
### Resource uses non-existent integration
|
|
93
|
+
|
|
94
|
+
**Message:** `Relationship target 'integration-id' (integration) not found in 'org-name'`
|
|
95
|
+
|
|
96
|
+
**Cause:** A relationship's `uses.integrations` array references an integration ID that does not exist.
|
|
97
|
+
|
|
98
|
+
**Fix:** Verify the integration ID spelling in `uses: \{ integrations: ['integration-id'] \}`. The ID must match the `resourceId` of an integration defined in your organization.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
66
102
|
## Schema Validation Errors
|
|
67
103
|
|
|
68
104
|
### Schema validation failed (input)
|
package/reference/_index.md
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
# SDK Reference Documentation
|
|
2
|
-
|
|
3
|
-
29 pages bundled from the Elevasis documentation site.
|
|
4
|
-
|
|
5
|
-
Browse these files for complete SDK reference including platform tools catalog,
|
|
6
|
-
resource types, runtime limits, deployment details, and CLI commands.
|
|
7
|
-
|
|
8
|
-
## Pages
|
|
9
|
-
|
|
10
|
-
- **CLI Reference** -- `cli/index.mdx`
|
|
11
|
-
Full reference for every elevasis CLI command -- scaffold, validate, deploy, execute, and inspect resources
|
|
12
|
-
|
|
13
|
-
- **Concepts Reference** -- `concepts/index.mdx`
|
|
14
|
-
Plain-English explanations of Elevasis SDK concepts -- glossary, workflow analogies, Zod schemas, execution model, platform tools, common errors, and design decisions
|
|
15
|
-
|
|
16
|
-
- **Execution API** -- `deployment/api.mdx`
|
|
17
|
-
REST endpoints for executing resources, querying execution history, and managing deployments via the Elevasis external API
|
|
18
|
-
|
|
19
|
-
- **Deploying Resources** -- `deployment/index.mdx`
|
|
20
|
-
How to deploy your Elevasis SDK resources to the platform using elevasis deploy, including configuration, validation, and environment setup
|
|
21
|
-
|
|
22
|
-
- **Interaction Guidance** -- `developer/interaction-guidance.mdx`
|
|
23
|
-
Full dimensional adaptation rules per skill axis -- programming, TypeScript, API integration, automation concepts, domain expertise -- with growth tracking protocol
|
|
24
|
-
|
|
25
|
-
- **Agent System** -- `framework/agent.mdx`
|
|
26
|
-
CLAUDE.md drives all agent behavior -- project instructions, slash commands, memory-based developer profile, and three-tier adaptive guidance
|
|
27
|
-
|
|
28
|
-
- **Resource Documentation** -- `framework/documentation.mdx`
|
|
29
|
-
Write and deploy MDX documentation alongside your Elevasis resources
|
|
30
|
-
|
|
31
|
-
- **Development Framework** -- `framework/index.mdx`
|
|
32
|
-
The SDK scaffolds a complete development environment for Claude Code -- project instructions, slash commands, cross-session memory, and template versioning
|
|
33
|
-
|
|
34
|
-
- **Memory System** -- `framework/memory.mdx`
|
|
35
|
-
Cross-session project knowledge stored in .claude/memory/ -- deployment state, environment, decisions, and error patterns that persist between Claude Code sessions
|
|
36
|
-
|
|
37
|
-
- **Project Structure** -- `framework/project-structure.mdx`
|
|
38
|
-
Each file scaffolded by elevasis init and its purpose in the development workflow
|
|
39
|
-
|
|
40
|
-
- **Getting Started** -- `getting-started/index.mdx`
|
|
41
|
-
Install the Elevasis SDK, scaffold a project, and run your first deployment
|
|
42
|
-
|
|
43
|
-
- **Elevasis SDK** -- `index.mdx`
|
|
44
|
-
Build and deploy workflows, agents, and resources with the Elevasis SDK
|
|
45
|
-
|
|
46
|
-
- **Integration Examples** -- `platform-tools/examples.mdx`
|
|
47
|
-
Common platform.call() patterns for email, CRM, PDF, LLM inference, resource triggering, and storage
|
|
48
|
-
|
|
49
|
-
- **Platform Tools** -- `platform-tools/index.mdx`
|
|
50
|
-
Access 70+ tools across integration adapters and platform services from your SDK workflows via platform.call()
|
|
51
|
-
|
|
52
|
-
- **Writing Resources** -- `resources/index.mdx`
|
|
53
|
-
Guide to creating workflows and agents using WorkflowDefinition, AgentDefinition, and OrganizationResources with the Elevasis SDK
|
|
54
|
-
|
|
55
|
-
- **Common Patterns** -- `resources/patterns.mdx`
|
|
56
|
-
Common resource patterns for Elevasis SDK developers -- sequential steps, conditional branching, platform tools, error handling, and resource status management
|
|
57
|
-
|
|
58
|
-
- **SDK Types** -- `resources/types.mdx`
|
|
59
|
-
Complete type reference for @elevasis/sdk -- package exports, re-exported platform types, ElevasConfig interface, StepHandler context, and runtime values
|
|
60
|
-
|
|
61
|
-
- **Roadmap** -- `roadmap/index.mdx`
|
|
62
|
-
Planned SDK features -- error taxonomy, retry semantics, circuit breaker, metrics, alerting, and resource lifecycle extensions
|
|
63
|
-
|
|
64
|
-
- **Execution Runtime** -- `runtime/index.mdx`
|
|
65
|
-
How your code runs on the Elevasis platform -- execution lifecycle, concurrency, timeouts, cancellation, error handling, and observability
|
|
66
|
-
|
|
67
|
-
- **Resource Limits & Quotas** -- `runtime/limits.mdx`
|
|
68
|
-
Memory limits, execution timeouts, scale quotas, networking constraints, and v1 platform limitations for SDK resources
|
|
69
|
-
|
|
70
|
-
- **Credential Security** -- `security/credentials.mdx`
|
|
71
|
-
Three-layer credential model: platform tools (server-side injection), http tool (arbitrary APIs), getCredential() (explicit opt-in raw access) -- .env scope and security boundaries
|
|
72
|
-
|
|
73
|
-
- **Template: Data Enrichment** -- `templates/data-enrichment.mdx`
|
|
74
|
-
LLM-powered enrichment of existing database records -- read rows, enrich each with an LLM, write results back to Supabase
|
|
75
|
-
|
|
76
|
-
- **Template: Email Sender** -- `templates/email-sender.mdx`
|
|
77
|
-
Transactional email via Resend with template support -- send styled emails to one or multiple recipients
|
|
78
|
-
|
|
79
|
-
- **Template: Lead Scorer** -- `templates/lead-scorer.mdx`
|
|
80
|
-
LLM-based lead scoring with Supabase storage -- receive a lead, score it with an LLM, store the result
|
|
81
|
-
|
|
82
|
-
- **Template: PDF Generator** -- `templates/pdf-generator.mdx`
|
|
83
|
-
PDF generation from structured data with platform storage upload -- render a PDF from a template and upload to platform storage
|
|
84
|
-
|
|
85
|
-
- **Template: Recurring Job** -- `templates/recurring-job.mdx`
|
|
86
|
-
Scheduler-triggered periodic workflow -- run a task on a schedule (daily, weekly, hourly, or custom cron)
|
|
87
|
-
|
|
88
|
-
- **Template: Text Classifier** -- `templates/text-classifier.mdx`
|
|
89
|
-
Multi-label text classification with structured output -- classify text into predefined categories using an LLM with JSON output
|
|
90
|
-
|
|
91
|
-
- **Template: Web Scraper** -- `templates/web-scraper.mdx`
|
|
92
|
-
Apify-based web scraper that stores results in Supabase -- fetch structured data from any website via Apify actors
|
|
93
|
-
|
|
94
|
-
- **Common Errors** -- `troubleshooting/common-errors.mdx`
|
|
95
|
-
Static SDK-level error catalog -- CLI errors, deployment errors, schema validation, platform tool failures, and runtime errors with diagnostic steps
|