@elevasis/sdk 1.48.0 → 1.50.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/dist/chunk-MGZZ4HL4.js +4399 -0
- package/dist/chunk-VYWGWJRW.js +130 -0
- package/dist/chunk-YJDXRHNP.js +7901 -0
- package/dist/cli.cjs +949 -281
- package/dist/index.d.ts +1031 -48
- package/dist/index.js +2 -7597
- package/dist/node/index.d.ts +3 -3675
- package/dist/node/index.js +2 -124
- package/dist/test-utils/index.d.ts +2 -12051
- package/dist/test-utils/index.js +113 -27891
- package/dist/worker/index.d.ts +548 -12264
- package/dist/worker/index.js +3 -7400
- package/package.json +12 -4
- package/reference/_navigation.md +4 -4
- package/reference/_reference-manifest.json +1 -1
- package/reference/core/index.mdx +6 -4
- package/reference/index.mdx +11 -5
- package/reference/packages/core/src/README.md +46 -44
- package/reference/packages/core/src/content/README.md +16 -12
- package/reference/rules/agent-start-here.md +1 -1
- package/reference/rules/frontend.md +3 -1
- package/reference/rules/package-taxonomy.md +7 -5
- package/reference/rules/ui.md +31 -5
- package/reference/rules/vibe-intents.md +2 -2
- package/reference/rules/vibe.md +30 -10
- package/reference/scaffold/recipes/extend-content.md +82 -3
- package/reference/scaffold/recipes/gate-by-feature-or-admin.md +8 -6
- package/reference/scaffold/ui/feature-flags-and-gating.md +11 -1
- package/reference/sdk/cli-management.mdx +284 -139
- package/reference/sdk/cli.mdx +136 -88
- package/reference/sdk/define-builders.mdx +1 -1
- package/reference/sdk/deployment/command-center.mdx +2 -2
- package/reference/sdk/deployment/index.mdx +24 -7
- package/reference/sdk/exports.mdx +4 -4
- package/reference/sdk/framework/agent.mdx +4 -3
- package/reference/sdk/framework/index.mdx +1 -1
- package/reference/sdk/framework/project-structure.mdx +34 -23
- package/reference/sdk/framework/tutorial-system.mdx +1 -1
- package/reference/sdk/getting-started.mdx +25 -52
- package/reference/sdk/index.mdx +3 -3
- package/reference/sdk/platform-tools/adapters-integration.mdx +1 -1
- package/reference/sdk/platform-tools/adapters-platform.mdx +1 -1
- package/reference/sdk/platform-tools/type-safety.mdx +1 -1
- package/reference/sdk/resources/patterns.mdx +10 -11
- package/reference/sdk/resources/types.mdx +15 -9
- package/reference/sdk/templates/data-enrichment.mdx +1 -1
- package/reference/sdk/templates/email-sender.mdx +1 -1
- package/reference/sdk/templates/index.mdx +47 -47
- package/reference/sdk/templates/lead-scorer.mdx +1 -1
- package/reference/sdk/templates/pdf-generator.mdx +42 -24
- package/reference/sdk/templates/recurring-job.mdx +20 -15
- package/reference/sdk/templates/text-classifier.mdx +1 -1
- package/reference/sdk/templates/web-scraper.mdx +9 -5
- package/reference/sdk/troubleshooting.mdx +72 -1
- package/reference/ui/exports.mdx +1 -1
- package/reference/ui/index.mdx +2 -2
|
@@ -22,7 +22,7 @@ The scaffold is a workspace with `ui/`, `operations/`, and `core/` packages plus
|
|
|
22
22
|
├── .env / .env.example # ELEVASIS_PLATFORM_KEY and other root-level environment values
|
|
23
23
|
├── .gitattributes # Line-ending normalization
|
|
24
24
|
├── .gitignore # Excludes node_modules, dist, .env, .tanstack, and more
|
|
25
|
-
├── .npmrc # auto-install-peers
|
|
25
|
+
├── .npmrc # ignore-workspace-root-check + auto-install-peers (Zod is a peer dependency)
|
|
26
26
|
├── CLAUDE.md # Project-owned identity and preferences (never overwritten by sync)
|
|
27
27
|
├── CONNECTIONS.md # Tenant-owned production wiring values (never overwritten)
|
|
28
28
|
├── OPERATIONS.md # Tenant-owned operational quirks (never overwritten, outranks generic guidance)
|
|
@@ -43,11 +43,17 @@ Cross-runtime types, schemas, constants, and organization-model configuration sh
|
|
|
43
43
|
```
|
|
44
44
|
core/
|
|
45
45
|
├── config/
|
|
46
|
-
│ ├── organization-model.ts #
|
|
46
|
+
│ ├── organization-model.ts # Entry barrel -- assembly, public exports, knowledge wiring
|
|
47
|
+
│ ├── organization-model/
|
|
48
|
+
│ │ ├── profile.ts # defineOrganizationModel() body (/om codify target)
|
|
49
|
+
│ │ ├── systems.ts # Operational graph, resource descriptors, governance model
|
|
50
|
+
│ │ └── navigation.ts # Sidebar tree, projectTemplateNavigationSurfaces
|
|
47
51
|
│ ├── organization-model.test.ts
|
|
48
52
|
│ ├── organization-model.contract.test.ts
|
|
49
|
-
│ ├── extensions/ # Project-specific model extensions
|
|
50
|
-
│ ├── knowledge/
|
|
53
|
+
│ ├── extensions/ # Project-specific model extensions (deal-ecom.ts.example, index.ts)
|
|
54
|
+
│ ├── knowledge/
|
|
55
|
+
│ │ ├── nodes/ # Hand-authored knowledge node MDX (welcome.mdx)
|
|
56
|
+
│ │ └── _generated/ # Compiled knowledge bodies and search index -- do not edit
|
|
51
57
|
│ └── README.md
|
|
52
58
|
├── test-utils/
|
|
53
59
|
│ └── core-contract-factories.ts
|
|
@@ -63,7 +69,7 @@ core/
|
|
|
63
69
|
|
|
64
70
|
### `core/config/organization-model.ts`
|
|
65
71
|
|
|
66
|
-
|
|
72
|
+
The entry file for the organization model, split into a thin assembly barrel plus three sibling files under `core/config/organization-model/`: `profile.ts` (the `/om` codify target -- identity, customers, offerings, roles, goals), `systems.ts` (the operational graph: Systems, resources, the resource-descriptor getters `getTemplateWorkflowResourceDescriptor` and `getTemplateAgentResourceDescriptor`, and governance model), and `navigation.ts` (the sidebar tree). `organization-model.ts` resolves the canonical model (`canonicalOrganizationModel`, via `resolveOrganizationModel()`) and re-exports every public symbol from the split files so `operations/src/index.ts` and other consumers keep importing from the single entry path. Direct edits to any of these files are discouraged -- the resolver runs Zod cross-reference validation that a syntactically valid edit can still fail. All edits go through `/om`.
|
|
67
73
|
|
|
68
74
|
### `core/types/index.ts`
|
|
69
75
|
|
|
@@ -86,13 +92,18 @@ operations/
|
|
|
86
92
|
│ ├── metadata.ts # Trigger/integration/human-checkpoint metadata (starts empty)
|
|
87
93
|
│ ├── resource-registry.test.ts
|
|
88
94
|
│ ├── README.md
|
|
95
|
+
│ ├── __tests__/
|
|
96
|
+
│ │ └── sdk-test-utils.compat.ts # Shared test helpers -- assertResourceRegistry, runWorkflow
|
|
89
97
|
│ ├── example/
|
|
90
98
|
│ │ ├── echo.ts # Starter workflow
|
|
99
|
+
│ │ ├── echo.test.ts
|
|
91
100
|
│ │ ├── example-agent.ts # Starter agent
|
|
101
|
+
│ │ ├── example-agent.test.ts
|
|
92
102
|
│ │ └── index.ts # Domain barrel (exports workflows + agents)
|
|
93
103
|
│ ├── email-notification/
|
|
94
104
|
│ │ ├── exports.ts # Domain barrel
|
|
95
105
|
│ │ ├── index.ts # Multi-step workflow using the notifications adapter
|
|
106
|
+
│ │ ├── email-notification.test.ts
|
|
96
107
|
│ │ └── adapter-contract.test.ts
|
|
97
108
|
│ └── shared/ # Empty by default (.gitkeep) -- code shared across domains
|
|
98
109
|
├── elevasis.config.ts # Project-level SDK config
|
|
@@ -111,7 +122,7 @@ Convention seed for deployment mechanics that are not resource identity: trigger
|
|
|
111
122
|
|
|
112
123
|
### `operations/src/example/echo.ts`
|
|
113
124
|
|
|
114
|
-
The starter workflow: one workflow per file with its own `config`, Zod `contract`, `steps` map, and `entryPoint`. Replace this domain with your own when ready. `operations/src/example/example-agent.ts` is the equivalent starter for an agent resource.
|
|
125
|
+
The starter workflow: one workflow per file with its own `config`, Zod `contract`, `steps` map, and `entryPoint`. Replace this domain with your own when ready. `operations/src/example/example-agent.ts` is the equivalent starter for an agent resource -- a minimal single-shot (non-session) `AgentDefinition` with no tools and no memory. Each has a matching `*.test.ts` file exercising it through the shared test helpers in `operations/src/__tests__/sdk-test-utils.compat.ts`.
|
|
115
126
|
|
|
116
127
|
### `operations/src/email-notification/index.ts`
|
|
117
128
|
|
|
@@ -173,7 +184,7 @@ The `.claude/` directory and `CLAUDE.md` give Claude Code full awareness of the
|
|
|
173
184
|
├── hooks/ # post-edit-validate.mjs, scaffold-registry-reminder.mjs, tool-failure-recovery.mjs
|
|
174
185
|
├── skills/ # One directory per slash command, each with a SKILL.md
|
|
175
186
|
├── rules/ # Path-scoped pointers to rule bodies bundled with @elevasis/sdk
|
|
176
|
-
├── registries/ #
|
|
187
|
+
├── registries/ # Skill-coverage and knowledge registry data (skill-coverage.json, graph-skills.json, knowledge-flags.json)
|
|
177
188
|
└── logs/ # Hook-written runtime state
|
|
178
189
|
```
|
|
179
190
|
|
|
@@ -183,7 +194,7 @@ The `.claude/` directory and `CLAUDE.md` give Claude Code full awareness of the
|
|
|
183
194
|
|
|
184
195
|
## `elevasis-sdk deploy` Scope
|
|
185
196
|
|
|
186
|
-
`elevasis-sdk deploy` (run as `pnpm -C operations deploy` or `pnpm -C operations deploy:prod`) bundles `operations/src/` into a single file via esbuild and uploads it. There is no documentation-upload step in the current deploy path -- `ui/`, `core/`, and `.claude/` are not touched by deploy.
|
|
197
|
+
`elevasis-sdk deploy` (run as `pnpm -C operations run deploy` or `pnpm -C operations run deploy:prod` -- the explicit `run` matters, because `pnpm -C operations deploy` without it invokes pnpm's own builtin `deploy` command instead of the project script) bundles `operations/src/` into a single file via esbuild and uploads it. There is no documentation-upload step in the current deploy path -- `ui/`, `core/`, and `.claude/` are not touched by deploy.
|
|
187
198
|
|
|
188
199
|
---
|
|
189
200
|
|
|
@@ -199,29 +210,29 @@ Contains `ELEVASIS_PLATFORM_KEY` (and optionally `ELEVASIS_PLATFORM_KEY_DEV`). G
|
|
|
199
210
|
|
|
200
211
|
### `.npmrc`
|
|
201
212
|
|
|
202
|
-
Sets `auto-install-peers
|
|
213
|
+
Sets `ignore-workspace-root-check=true` (isolates this project so pnpm does not walk up and find the monorepo's `pnpm-workspace.yaml`) and `auto-install-peers=true` (the SDK uses Zod as a peer dependency, so this ensures Zod installs automatically).
|
|
203
214
|
|
|
204
215
|
### `.gitignore`
|
|
205
216
|
|
|
206
|
-
Excludes `node_modules/`, `dist/`, `*.tsbuildinfo`, `.tanstack/`, `.env` and `.env.*` (except `.env.example`), `*.log`, `.claude/settings.local.json`, hook-written state in `.claude/logs/*.state.json`, `operations/dist/`, `operations/__elevasis_worker.ts` (a temporary file generated during deployment),
|
|
217
|
+
Excludes `node_modules/`, `dist/`, `*.tsbuildinfo`, `.tanstack/`, `.env` and `.env.*` (except `.env.example`), `*.log`, `.DS_Store`, `.claude/settings.local.json`, hook-written state in `.claude/logs/*.state.json`, `operations/dist/`, `operations/__elevasis_worker.ts` (a temporary file generated during deployment), `tmp/*` (except `.gitkeep`), and `.vercel`.
|
|
207
218
|
|
|
208
219
|
---
|
|
209
220
|
|
|
210
221
|
## File Reference
|
|
211
222
|
|
|
212
|
-
| File / Directory
|
|
213
|
-
|
|
|
214
|
-
| `operations/src/index.ts`
|
|
215
|
-
| `operations/src/<domain>/*.ts`
|
|
216
|
-
| `operations/src/metadata.ts`
|
|
217
|
-
| `core/types/index.ts`
|
|
218
|
-
| `core/config/organization-model.ts` | Never directly -- run `/om` instead |
|
|
219
|
-
| `operations/elevasis.config.ts`
|
|
220
|
-
| `.elevasis`
|
|
221
|
-
| `.env`
|
|
222
|
-
| `CLAUDE.md`
|
|
223
|
-
| `.claude/skills/*/SKILL.md`
|
|
223
|
+
| File / Directory | When You Edit It |
|
|
224
|
+
| --------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
225
|
+
| `operations/src/index.ts` | Adding or removing resources, wiring a new domain |
|
|
226
|
+
| `operations/src/<domain>/*.ts` | Writing and modifying workflow or agent logic |
|
|
227
|
+
| `operations/src/metadata.ts` | Adding triggers, integrations, or human-checkpoint queue metadata |
|
|
228
|
+
| `core/types/index.ts` | Defining or changing a workflow's Zod contract |
|
|
229
|
+
| `core/config/organization-model.ts` and `core/config/organization-model/**` | Never directly -- run `/om` instead |
|
|
230
|
+
| `operations/elevasis.config.ts` | Changing project-level SDK settings (`defaultStatus`, `dev.port`) |
|
|
231
|
+
| `.elevasis` | Never manually -- updated by `/git-sync` and platform tooling |
|
|
232
|
+
| `.env` | Adding environment variables |
|
|
233
|
+
| `CLAUDE.md` | Rarely -- project identity and preferences, mostly written by `/setup` |
|
|
234
|
+
| `.claude/skills/*/SKILL.md` | Never in a derived project -- these arrive via `/git-sync` |
|
|
224
235
|
|
|
225
236
|
---
|
|
226
237
|
|
|
227
|
-
**Last Updated:** 2026-08-
|
|
238
|
+
**Last Updated:** 2026-08-17
|
|
@@ -82,7 +82,7 @@ SECTION C -- The Organization Model (3 items)
|
|
|
82
82
|
10 Systems, actions, and labels [ ]
|
|
83
83
|
11 Entity extensions -- BaseProject, BaseDeal [ ]
|
|
84
84
|
|
|
85
|
-
SECTION D -- Modules (load on demand) (
|
|
85
|
+
SECTION D -- Modules (load on demand) (6 items)
|
|
86
86
|
12 HITL [ ]
|
|
87
87
|
13 Schedules [ ]
|
|
88
88
|
14 Notifications + integrations [ ]
|
|
@@ -15,56 +15,27 @@ cd my-project
|
|
|
15
15
|
pnpm install
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
After `pnpm install`,
|
|
18
|
+
After `pnpm install`, the CLI is available from the project root as `pnpm elevasis-sdk <command>`, which the root `package.json` delegates into `operations/`. Inside `operations/` itself, run `pnpm exec elevasis-sdk <command>` directly.
|
|
19
19
|
|
|
20
|
-
The project
|
|
20
|
+
The project is a pnpm workspace containing three packages -- shared config and types, your platform resources, and your frontend:
|
|
21
21
|
|
|
22
22
|
```
|
|
23
23
|
my-project/
|
|
24
|
-
├── CLAUDE.md
|
|
25
|
-
├── .claude/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
│ │ └── statusline-command.js # Dynamic status line script
|
|
36
|
-
│ ├── skills/
|
|
37
|
-
│ │ └── creds/SKILL.md # Credential management (auto-triggers)
|
|
38
|
-
│ └── rules/
|
|
39
|
-
│ ├── sdk-patterns.md # SDK imports, structure, runtime (auto-loaded)
|
|
40
|
-
│ ├── docs-authoring.md # MDX conventions (auto-loaded)
|
|
41
|
-
│ ├── memory-conventions.md # Memory system conventions (auto-loaded)
|
|
42
|
-
│ ├── project-map.md # Project map conventions (auto-loaded)
|
|
43
|
-
│ ├── task-tracking.md # Task tracking conventions (auto-loaded)
|
|
44
|
-
│ └── workspace-patterns.md # Project-specific patterns (you add these)
|
|
45
|
-
├── src/
|
|
46
|
-
│ ├── index.ts # Registry entry point (aggregates domain barrels)
|
|
47
|
-
│ ├── operations/
|
|
48
|
-
│ │ ├── index.ts # Domain barrel (exports workflows + agents)
|
|
49
|
-
│ │ └── platform-status.ts # Platform status workflow (real API example)
|
|
50
|
-
│ ├── example/
|
|
51
|
-
│ │ ├── index.ts # Domain barrel (exports workflows + agents)
|
|
52
|
-
│ │ └── echo.ts # Starter workflow (replace with your own)
|
|
53
|
-
│ └── shared/
|
|
54
|
-
│ └── .gitkeep # Cross-domain shared utilities
|
|
55
|
-
├── docs/
|
|
56
|
-
│ ├── index.mdx # Starter documentation page
|
|
57
|
-
│ └── in-progress/
|
|
58
|
-
│ └── .gitkeep # Work-in-progress docs directory
|
|
59
|
-
├── elevasis.config.ts # Config with workspace options
|
|
60
|
-
├── package.json # check-types + deploy scripts
|
|
61
|
-
├── tsconfig.json # TypeScript config (app-focused)
|
|
62
|
-
├── pnpm-workspace.yaml # Standalone project workspace
|
|
63
|
-
├── .env # API key only
|
|
64
|
-
├── .npmrc # auto-install-peers
|
|
65
|
-
└── .gitignore # Excludes worker temp file, claude files
|
|
24
|
+
├── CLAUDE.md # Project instructions for Claude Code
|
|
25
|
+
├── .claude/ # Agent integration: rules, skills, hooks, registries
|
|
26
|
+
├── core/ # Organization model, knowledge nodes, shared browser-safe types
|
|
27
|
+
├── operations/ # Workflows, agents, and resource definitions -- what you deploy
|
|
28
|
+
├── ui/ # Frontend app shell and routes
|
|
29
|
+
├── package.json # Root scripts that delegate into the three packages
|
|
30
|
+
├── pnpm-workspace.yaml # Standalone project workspace
|
|
31
|
+
├── tsconfig.json # Shared TypeScript config
|
|
32
|
+
├── .env # Platform API key
|
|
33
|
+
├── .npmrc # auto-install-peers, ignore-workspace-root-check
|
|
34
|
+
└── .gitignore
|
|
66
35
|
```
|
|
67
36
|
|
|
37
|
+
See [Project Structure](framework/project-structure.mdx) for the full tree, including what lives inside each package.
|
|
38
|
+
|
|
68
39
|
### Set Up Your API Key
|
|
69
40
|
|
|
70
41
|
Open `.env` and set your API key:
|
|
@@ -81,7 +52,7 @@ The `.env` file is gitignored -- never commit it.
|
|
|
81
52
|
|
|
82
53
|
After scaffolding, open the project in Claude Code. The agent detects that the project is new and automatically walks you through setup: installing dependencies, configuring `.env`, creating your developer profile in `.claude/memory/`, and optionally running your first deploy. No commands needed -- just answer the questions.
|
|
83
54
|
|
|
84
|
-
If the automatic setup doesn't trigger, you can start it manually with `/
|
|
55
|
+
If the automatic setup doesn't trigger, you can start it manually with `/setup`.
|
|
85
56
|
|
|
86
57
|
---
|
|
87
58
|
|
|
@@ -90,13 +61,15 @@ If the automatic setup doesn't trigger, you can start it manually with `/meta in
|
|
|
90
61
|
Validate your resources and deploy:
|
|
91
62
|
|
|
92
63
|
```bash
|
|
93
|
-
|
|
94
|
-
|
|
64
|
+
pnpm check # Validate resource definitions
|
|
65
|
+
pnpm deploy # Bundle and deploy to the platform
|
|
95
66
|
```
|
|
96
67
|
|
|
97
|
-
|
|
68
|
+
Both root scripts delegate into `operations/`, where the resource registry lives. You can also run `pnpm exec elevasis-sdk check` and `pnpm exec elevasis-sdk deploy` from inside `operations/` directly.
|
|
69
|
+
|
|
70
|
+
`check` runs validation without deploying. Fix any errors it reports before deploying.
|
|
98
71
|
|
|
99
|
-
`
|
|
72
|
+
`deploy` bundles `operations/src/index.ts` and everything it imports into a single JavaScript bundle, then uploads and activates it as one transaction. Use `--entry` if your registry entry point is somewhere other than `./src/index.ts`.
|
|
100
73
|
|
|
101
74
|
After a successful deploy, confirm the resources are live:
|
|
102
75
|
|
|
@@ -119,7 +92,7 @@ View the execution result:
|
|
|
119
92
|
|
|
120
93
|
```bash
|
|
121
94
|
elevasis-sdk executions echo # Execution history
|
|
122
|
-
elevasis-sdk execution echo
|
|
95
|
+
elevasis-sdk execution echo <execution-id> # Full detail for one execution
|
|
123
96
|
```
|
|
124
97
|
|
|
125
98
|
Replace `<execution-id>` with the ID returned from the executions list.
|
|
@@ -134,8 +107,8 @@ Replace `<execution-id>` with the ID returned from the executions list.
|
|
|
134
107
|
- [CLI Reference](cli.mdx) -- Full command reference with flags
|
|
135
108
|
- [Deployment](deployment/index.mdx) -- Deployment lifecycle and environment variables
|
|
136
109
|
|
|
137
|
-
When a new SDK version is released,
|
|
110
|
+
When a new SDK version is released, the dependency baseline arrives with the upstream changes rather than through a manual package bump. Run `/git-sync` in Claude Code to pull the latest, install when the baseline moved, and run baseline verification. If packages feel stale or a cache is serving old code afterwards, `/sync` does a fresh reinstall and cache reset.
|
|
138
111
|
|
|
139
112
|
---
|
|
140
113
|
|
|
141
|
-
**Last Updated:** 2026-
|
|
114
|
+
**Last Updated:** 2026-08-17
|
package/reference/sdk/index.mdx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
2
|
+
title: "@elevasis/sdk"
|
|
3
3
|
description: Build and deploy workflows, agents, and resources with the Elevasis SDK
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -70,8 +70,8 @@ See [Platform Tools](platform-tools/index.mdx) for the full catalog, adapter ref
|
|
|
70
70
|
|
|
71
71
|
- [Development Framework](framework/index.mdx) - How Claude Code helps you build: project structure, agent integration, and the skill surface
|
|
72
72
|
- [Project Structure](framework/project-structure.mdx) - Scaffolded file layout, domain barrels, src/index.ts entry point, and config files
|
|
73
|
-
- [Agent Configuration](framework/agent.mdx) - The shipped skill inventory, project context via `project:*`, upgrades via `/git-sync`, and
|
|
74
|
-
- [Tutorial System](framework/tutorial-system.mdx) - Two-track onboarding: 8 vibe-coder lessons and 19 technical lessons across 5 sections
|
|
73
|
+
- [Agent Configuration](framework/agent.mdx) - The shipped skill inventory, project context via `project:*`, upgrades via `/git-sync`, and ambient vibe layer
|
|
74
|
+
- [Tutorial System](framework/tutorial-system.mdx) - Two-track onboarding: 8 vibe-coder lessons and 19 technical lessons across 5 sections
|
|
75
75
|
|
|
76
76
|
### Resources Subpages
|
|
77
77
|
|
|
@@ -13,7 +13,7 @@ Integration adapters use a factory pattern. Call `create*Adapter(credential)` wi
|
|
|
13
13
|
| Attio | `createAttioAdapter(credential)` | `createRecord`, `updateRecord`, `listRecords`, `getRecord`, `deleteRecord`, `listObjects`, `listAttributes`, `createAttribute`, `updateAttribute`, `createNote`, `listNotes`, `deleteNote` | Attio CRM — create, read, update, delete records, objects, attributes, and notes. |
|
|
14
14
|
| Apify | `createApifyAdapter(credential)` | `runActor`, `getDatasetItems`, `startActor` | Apify — run actors and retrieve dataset items from web scraping runs. |
|
|
15
15
|
| ClickUp | `createClickUpAdapter(credential)` | `verify`, `createTask` | ClickUp — verify connection and create tasks in ClickUp lists. |
|
|
16
|
-
| Dropbox | `createDropboxAdapter(credential)` | `uploadFile`, `createFolder` | Dropbox — upload files and create folders. |
|
|
16
|
+
| Dropbox | `createDropboxAdapter(credential)` | `uploadFile`, `createFolder`, `listFolder`, `getMetadata`, `getTemporaryLink`, `createSharedLink`, `download`, `getThumbnail`, `getThumbnailBatch` | Dropbox — upload files and create folders. |
|
|
17
17
|
| Gmail | `createGmailAdapter(credential)` | `sendEmail` | Gmail — send emails via a bound Gmail credential. |
|
|
18
18
|
| GoogleSheets | `createGoogleSheetsAdapter(credential)` | `readSheet`, `writeSheet`, `appendRows`, `clearRange`, `getSpreadsheetMetadata`, `batchUpdate`, `getHeaders`, `getLastRow`, `getRowByValue`, `updateRowByValue`, `upsertRow`, `filterRows`, `deleteRowByValue` | Google Sheets — read, write, append, filter, and manage spreadsheet data. |
|
|
19
19
|
| Instantly | `createInstantlyAdapter(credential)` | `sendReply`, `removeFromSubsequence`, `getEmails`, `updateInterestStatus`, `addToCampaign`, `listCampaigns`, `getCampaign`, `updateCampaign`, `pauseCampaign`, `activateCampaign`, `getCampaignAnalytics`, `getStepAnalytics`, `bulkAddLeads`, `getAccountHealth`, `createInboxTest`, `createCampaign`, `getDailyCampaignAnalytics`, `listLeads`, `bulkDeleteLeads`, `deleteCampaign`, `patchLead` | Instantly — manage email outreach campaigns, leads, analytics, and inbox health. |
|
|
@@ -23,4 +23,4 @@ Platform adapters are singletons — import them directly, no credential require
|
|
|
23
23
|
| Execution | `execution` | `trigger`, `triggerAsync` | Execution — trigger other workflows or agents within the same organization. |
|
|
24
24
|
| Email | `email` | `send` | Email — send platform emails (from notifications@elevasis.io) to organization members. |
|
|
25
25
|
| Artifacts | `artifacts` | `listArtifacts`, `createArtifact`, `getActive` | Artifacts — org-scoped governing-document store, keyed by owner and kind, for acquisition's audits, proposals, and ICP docs. |
|
|
26
|
-
| Content | `content` | `createItem`, `getItem`, `listItems`, `updateItem`, `createAttempt`, `listAttempts`, `updateAttempt`, `createSourceAsset`, `getSourceAsset`, `listSourceAssets`, `updateSourceAsset`, `createDistribution`, `updateDistribution` | Content — create, read, and update content_items/content_item_attempts/content_distributions/content_source_assets rows for the content pipeline. |
|
|
26
|
+
| Content | `content` | `createItem`, `getItem`, `listItems`, `updateItem`, `addItemSourceAsset`, `removeItemSourceAsset`, `reorderItemSourceAssets`, `updateItemSourceAsset`, `createAttempt`, `listAttempts`, `updateAttempt`, `createSourceAsset`, `getSourceAsset`, `listSourceAssets`, `updateSourceAsset`, `getDistribution`, `listDistributions`, `createDistribution`, `updateDistribution`, `appendDistributionMetrics`, `listDistributionMetrics` | Content — create, read, and update content_items/content_item_attempts/content_distributions/content_source_assets rows for the content pipeline. |
|
|
@@ -29,7 +29,7 @@ await llm.generate({
|
|
|
29
29
|
|
|
30
30
|
### Tomba Adapter -- `domain` and `email`
|
|
31
31
|
|
|
32
|
-
`domain` is required on `
|
|
32
|
+
`domain` is required on `DomainSearchParams` and `EmailFinderParams` (the `domainSearch` and `emailFinder` entries of `TombaToolMap`, defined in `packages/core/src/execution/engine/tools/integration/types/tomba.ts`). `email` is required on `EmailVerifierParams` (the `emailVerifier` entry). Previously all params were optional, allowing calls to compile but fail at runtime. The type change enforces the fields that are always necessary for email discovery and verification.
|
|
33
33
|
|
|
34
34
|
---
|
|
35
35
|
|
|
@@ -98,11 +98,11 @@ const scoreStep: WorkflowStep = {
|
|
|
98
98
|
type: 'conditional',
|
|
99
99
|
routes: [
|
|
100
100
|
{
|
|
101
|
-
condition: (output) => output.score
|
|
101
|
+
condition: (output) => output.score >= 80,
|
|
102
102
|
target: 'autoApprove',
|
|
103
103
|
},
|
|
104
104
|
{
|
|
105
|
-
condition: (output) => output.score
|
|
105
|
+
condition: (output) => output.score >= 40,
|
|
106
106
|
target: 'manualReview',
|
|
107
107
|
},
|
|
108
108
|
],
|
|
@@ -253,7 +253,7 @@ const validateStep = async (input) => {
|
|
|
253
253
|
if (!input.userId) {
|
|
254
254
|
throw new ExecutionError('userId is required', { code: 'MISSING_INPUT' });
|
|
255
255
|
}
|
|
256
|
-
if (input.amount
|
|
256
|
+
if (input.amount <= 0) {
|
|
257
257
|
throw new ExecutionError('amount must be positive', { code: 'INVALID_AMOUNT' });
|
|
258
258
|
}
|
|
259
259
|
return { valid: true };
|
|
@@ -312,7 +312,7 @@ Avoid logging sensitive values (API keys, passwords, PII) since logs are stored
|
|
|
312
312
|
|
|
313
313
|
## Using the Execution Store
|
|
314
314
|
|
|
315
|
-
`context.store` is a
|
|
315
|
+
`context.store` is a plain `Map<string, unknown>` scoped to the current execution. Use it to pass data between steps without coupling step interfaces, or to checkpoint long-running work.
|
|
316
316
|
|
|
317
317
|
{/* doc-snippet:skip: illustrative excerpt -- fetchExpensiveData/transform are placeholder names for your own logic, not a standalone compilable file */}
|
|
318
318
|
|
|
@@ -324,20 +324,19 @@ const firstStep: StepHandler = async (input, context) => {
|
|
|
324
324
|
const data = await fetchExpensiveData(id);
|
|
325
325
|
|
|
326
326
|
// Save for use by later steps
|
|
327
|
-
|
|
327
|
+
context.store.set('fetchedData', data);
|
|
328
328
|
|
|
329
329
|
return { fetched: true };
|
|
330
330
|
};
|
|
331
331
|
|
|
332
332
|
const secondStep: StepHandler = async (input, context) => {
|
|
333
|
-
const
|
|
334
|
-
const data = JSON.parse(raw ?? '{}');
|
|
333
|
+
const data = context.store.get('fetchedData');
|
|
335
334
|
|
|
336
335
|
return { processed: transform(data) };
|
|
337
336
|
};
|
|
338
337
|
```
|
|
339
338
|
|
|
340
|
-
|
|
339
|
+
`.set()` / `.get()` are synchronous `Map` methods and accept any value directly -- no `JSON.stringify` / `JSON.parse` round-trip required.
|
|
341
340
|
|
|
342
341
|
---
|
|
343
342
|
|
|
@@ -381,19 +380,19 @@ config: {
|
|
|
381
380
|
|
|
382
381
|
### Global Default Status
|
|
383
382
|
|
|
384
|
-
|
|
383
|
+
`config.status` is a required field on every resource definition -- there is currently no CLI-enforced project-wide default. `elevasis.config.ts` declares a `defaultStatus` field on `ElevasConfig` for this purpose, but the CLI does not yet read `elevasis.config.ts` to apply it:
|
|
385
384
|
|
|
386
385
|
```typescript
|
|
387
386
|
import type { ElevasConfig } from '@elevasis/sdk';
|
|
388
387
|
|
|
389
388
|
const config: ElevasConfig = {
|
|
390
|
-
defaultStatus: 'dev',
|
|
389
|
+
defaultStatus: 'dev', // reserved for future use -- not currently applied
|
|
391
390
|
};
|
|
392
391
|
|
|
393
392
|
export default config;
|
|
394
393
|
```
|
|
395
394
|
|
|
396
|
-
|
|
395
|
+
Until the CLI reads this file, set `config.status` explicitly on each resource.
|
|
397
396
|
|
|
398
397
|
---
|
|
399
398
|
|
|
@@ -17,20 +17,24 @@ Zod is a peer dependency.
|
|
|
17
17
|
{
|
|
18
18
|
"exports": {
|
|
19
19
|
".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" },
|
|
20
|
-
"./worker": { "import": "./dist/worker/index.js" }
|
|
20
|
+
"./worker": { "types": "./dist/worker/index.d.ts", "import": "./dist/worker/index.js" },
|
|
21
|
+
"./test-utils": { "types": "./dist/test-utils/index.d.ts", "import": "./dist/test-utils/index.js" },
|
|
22
|
+
"./node": { "types": "./dist/node/index.d.ts", "import": "./dist/node/index.js" }
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
25
|
```
|
|
24
26
|
|
|
25
27
|
- `@elevasis/sdk` -- resource, workflow, agent, trigger, deployment, and execution types plus runtime errors.
|
|
26
28
|
- `@elevasis/sdk/worker` -- worker runtime module, platform adapters, and worker helpers.
|
|
29
|
+
- `@elevasis/sdk/test-utils` -- in-memory registry and mock adapters for testing resources without a live deployment.
|
|
30
|
+
- `@elevasis/sdk/node` -- knowledge codegen and other build-time helpers requiring Node built-ins (`fs`, `path`, `process`); not browser-safe.
|
|
27
31
|
|
|
28
32
|
## Platform Types
|
|
29
33
|
|
|
30
34
|
| Type | Description |
|
|
31
35
|
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
32
36
|
| `ResourceDefinition` | Base interface for resource definitions |
|
|
33
|
-
| `ResourceType` | Resource kind such as `workflow`, `agent`, `trigger`, `integration`, `external`, or `
|
|
37
|
+
| `ResourceType` | Resource kind such as `workflow`, `agent`, `trigger`, `integration`, `external`, or `human` |
|
|
34
38
|
| `ResourceStatus` | Resource lifecycle status such as `dev` or `prod` |
|
|
35
39
|
| `ResourceLink` | Graph link `{ nodeId, kind }` binding a resource to an Organization Model node |
|
|
36
40
|
| `ResourceCategory` | Operational category: `production`, `diagnostic`, `internal`, or `testing` |
|
|
@@ -64,9 +68,9 @@ config: {
|
|
|
64
68
|
| Type | Description |
|
|
65
69
|
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
66
70
|
| `WorkflowDefinition` | Complete workflow definition including config, contract, steps, and entryPoint |
|
|
67
|
-
| `WorkflowStep` | Individual step definition with
|
|
71
|
+
| `WorkflowStep` | Individual step definition with `handler`, `inputSchema`, `outputSchema`, and `next` routing -- no `type` field on the step itself |
|
|
68
72
|
| `WorkflowConfig` | Metadata block: name, description, status, links, category |
|
|
69
|
-
| `StepHandler` | Function type: `(input: unknown, context:
|
|
73
|
+
| `StepHandler` | Function type: `(input: unknown, context: ExecutionContext) => Promise<unknown>` |
|
|
70
74
|
| `NextConfig` | Union of `LinearNext` and `ConditionalNext` |
|
|
71
75
|
| `LinearNext` | Fixed next step routing |
|
|
72
76
|
| `ConditionalNext` | Branching step routing |
|
|
@@ -87,10 +91,10 @@ export interface ElevasConfig {
|
|
|
87
91
|
}
|
|
88
92
|
```
|
|
89
93
|
|
|
90
|
-
| Field | Type
|
|
91
|
-
| --------------- |
|
|
92
|
-
| `defaultStatus` | `'dev'
|
|
93
|
-
| `dev.port` | `number`
|
|
94
|
+
| Field | Type | Description |
|
|
95
|
+
| --------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
96
|
+
| `defaultStatus` | `'dev' | 'prod'` | Reserved for a project-wide default `config.status`. The CLI does not currently read `elevasis.config.ts` to apply it -- `config.status` is required on every resource definition. |
|
|
97
|
+
| `dev.port` | `number` | Reserved for a local worker development port. Not currently read by the CLI. |
|
|
94
98
|
|
|
95
99
|
## StepHandler Context
|
|
96
100
|
|
|
@@ -102,11 +106,13 @@ import type { StepHandler, ExecutionContext } from '@elevasis/sdk'
|
|
|
102
106
|
const handler: StepHandler = async (input, context: ExecutionContext) => {
|
|
103
107
|
context.logger.info(`Processing execution ${context.executionId} for resource ${context.resourceId}`)
|
|
104
108
|
|
|
105
|
-
|
|
109
|
+
context.store.set('checkpoint', { step: 'started' })
|
|
106
110
|
return { done: true }
|
|
107
111
|
}
|
|
108
112
|
```
|
|
109
113
|
|
|
114
|
+
`context.store` is a plain `Map<string, unknown>` scoped to the current execution -- `.set()` / `.get()` are synchronous and accept any value directly, no `JSON.stringify` / `JSON.parse` round-trip required.
|
|
115
|
+
|
|
110
116
|
## Runtime Values
|
|
111
117
|
|
|
112
118
|
Runtime exports include:
|
|
@@ -75,7 +75,7 @@ type Input = z.infer<typeof inputSchema>
|
|
|
75
75
|
|
|
76
76
|
export const dataEnrichment: WorkflowDefinition = {
|
|
77
77
|
config: {
|
|
78
|
-
resourceId: 'data-enrichment',
|
|
78
|
+
resourceId: 'data-enrichment-workflow',
|
|
79
79
|
name: 'Data Enrichment',
|
|
80
80
|
type: 'workflow',
|
|
81
81
|
description: 'Enriches database records using an LLM',
|
|
@@ -74,7 +74,7 @@ type Input = z.infer<typeof inputSchema>
|
|
|
74
74
|
|
|
75
75
|
export const emailSender: WorkflowDefinition = {
|
|
76
76
|
config: {
|
|
77
|
-
resourceId: 'email-sender',
|
|
77
|
+
resourceId: 'email-sender-workflow',
|
|
78
78
|
name: 'Email Sender',
|
|
79
79
|
type: 'workflow',
|
|
80
80
|
description: 'Sends transactional email via Resend',
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Templates
|
|
3
|
-
description: Ready-to-use workflow templates for common automation patterns -- web scraping, data enrichment, email sending, lead scoring, PDF generation, text classification, and recurring jobs
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Templates are pre-built workflow definitions covering the most common SDK automation patterns. Each template includes a complete `WorkflowDefinition` with Zod schemas, step handlers, and real platform tool usage. Scaffold any template through Claude Code (`/work` then describe the template) or adapt the code manually.
|
|
7
|
-
|
|
8
|
-
Templates follow the same `WorkflowDefinition` structure as any custom resource -- they are reference implementations, not a special feature. The patterns demonstrated (multi-step chains, LLM structured output, Supabase CRUD, scheduler setup) apply directly to custom workflows you build.
|
|
9
|
-
|
|
10
|
-
All templates are available for any organization. Credentials specific to each template (Supabase, Resend, Apify, etc.) must be created in the command center before running the workflow.
|
|
11
|
-
|
|
12
|
-
## Documentation
|
|
13
|
-
|
|
14
|
-
### Data Collection & Processing
|
|
15
|
-
|
|
16
|
-
- [Web Scraper](web-scraper.mdx) - Apify actor runs web scrape, stores structured results in Supabase table
|
|
17
|
-
- [Data Enrichment](data-enrichment.mdx) - Reads Supabase records, enriches each with LLM, writes results back; supports batching
|
|
18
|
-
|
|
19
|
-
### Communication & CRM
|
|
20
|
-
|
|
21
|
-
- [Email Sender](email-sender.mdx) - Transactional email via Resend with plain text and HTML support, single or multiple recipients
|
|
22
|
-
- [Lead Scorer](lead-scorer.mdx) - Multi-criteria LLM lead scoring with configurable rubric and Supabase result storage
|
|
23
|
-
|
|
24
|
-
### Documents & AI
|
|
25
|
-
|
|
26
|
-
- [PDF Generator](pdf-generator.mdx) - Renders structured data to PDF, uploads to platform storage, returns signed download URL
|
|
27
|
-
- [Text Classifier](text-classifier.mdx) - Multi-label text classification via LLM structured output, configurable categories and confidence scoring
|
|
28
|
-
|
|
29
|
-
### Scheduling
|
|
30
|
-
|
|
31
|
-
- [Recurring Job](recurring-job.mdx) - Two-workflow setup pattern: a setup workflow creates the schedule, the job workflow runs on
|
|
32
|
-
|
|
33
|
-
## Platform Tools Used
|
|
34
|
-
|
|
35
|
-
| Template | Platform Tools | Credentials Needed |
|
|
36
|
-
| --------------- | ------------------- | ------------------------------- |
|
|
37
|
-
| Web Scraper | `apify`, `supabase` | `apify`, `my-database` |
|
|
38
|
-
| Data Enrichment | `llm`, `supabase` | `my-database` (LLM server-side) |
|
|
39
|
-
| Email Sender | `resend` | `my-resend` |
|
|
40
|
-
| Lead Scorer | `llm`, `supabase` | `my-database` (LLM server-side) |
|
|
41
|
-
| PDF Generator | `pdf`, `storage` | None (platform services) |
|
|
42
|
-
| Text Classifier | `llm` | None (LLM server-side) |
|
|
43
|
-
| Recurring Job | `scheduler` | None (platform service) |
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
**Last Updated:** 2026-03-19
|
|
1
|
+
---
|
|
2
|
+
title: Templates
|
|
3
|
+
description: Ready-to-use workflow templates for common automation patterns -- web scraping, data enrichment, email sending, lead scoring, PDF generation, text classification, and recurring jobs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Templates are pre-built workflow definitions covering the most common SDK automation patterns. Each template includes a complete `WorkflowDefinition` with Zod schemas, step handlers, and real platform tool usage. Scaffold any template through Claude Code (`/work` then describe the template) or adapt the code manually.
|
|
7
|
+
|
|
8
|
+
Templates follow the same `WorkflowDefinition` structure as any custom resource -- they are reference implementations, not a special feature. The patterns demonstrated (multi-step chains, LLM structured output, Supabase CRUD, scheduler setup) apply directly to custom workflows you build.
|
|
9
|
+
|
|
10
|
+
All templates are available for any organization. Credentials specific to each template (Supabase, Resend, Apify, etc.) must be created in the command center before running the workflow.
|
|
11
|
+
|
|
12
|
+
## Documentation
|
|
13
|
+
|
|
14
|
+
### Data Collection & Processing
|
|
15
|
+
|
|
16
|
+
- [Web Scraper](web-scraper.mdx) - Apify actor runs web scrape, stores structured results in Supabase table
|
|
17
|
+
- [Data Enrichment](data-enrichment.mdx) - Reads Supabase records, enriches each with LLM, writes results back; supports batching
|
|
18
|
+
|
|
19
|
+
### Communication & CRM
|
|
20
|
+
|
|
21
|
+
- [Email Sender](email-sender.mdx) - Transactional email via Resend with plain text and HTML support, single or multiple recipients
|
|
22
|
+
- [Lead Scorer](lead-scorer.mdx) - Multi-criteria LLM lead scoring with configurable rubric and Supabase result storage
|
|
23
|
+
|
|
24
|
+
### Documents & AI
|
|
25
|
+
|
|
26
|
+
- [PDF Generator](pdf-generator.mdx) - Renders structured data to PDF, uploads to platform storage, returns signed download URL
|
|
27
|
+
- [Text Classifier](text-classifier.mdx) - Multi-label text classification via LLM structured output, configurable categories and confidence scoring
|
|
28
|
+
|
|
29
|
+
### Scheduling
|
|
30
|
+
|
|
31
|
+
- [Recurring Job](recurring-job.mdx) - Two-workflow setup pattern: a setup workflow creates the schedule, the job workflow runs on trigger
|
|
32
|
+
|
|
33
|
+
## Platform Tools Used
|
|
34
|
+
|
|
35
|
+
| Template | Platform Tools | Credentials Needed |
|
|
36
|
+
| --------------- | ------------------- | ------------------------------- |
|
|
37
|
+
| Web Scraper | `apify`, `supabase` | `apify`, `my-database` |
|
|
38
|
+
| Data Enrichment | `llm`, `supabase` | `my-database` (LLM server-side) |
|
|
39
|
+
| Email Sender | `resend` | `my-resend` |
|
|
40
|
+
| Lead Scorer | `llm`, `supabase` | `my-database` (LLM server-side) |
|
|
41
|
+
| PDF Generator | `pdf`, `storage` | None (platform services) |
|
|
42
|
+
| Text Classifier | `llm` | None (LLM server-side) |
|
|
43
|
+
| Recurring Job | `scheduler` | None (platform service) |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
**Last Updated:** 2026-03-19
|
|
@@ -90,7 +90,7 @@ type Input = z.infer<typeof inputSchema>
|
|
|
90
90
|
|
|
91
91
|
export const leadScorer: WorkflowDefinition = {
|
|
92
92
|
config: {
|
|
93
|
-
resourceId: 'lead-scorer',
|
|
93
|
+
resourceId: 'lead-scorer-workflow',
|
|
94
94
|
name: 'Lead Scorer',
|
|
95
95
|
type: 'workflow',
|
|
96
96
|
description: 'Scores leads using an LLM and stores results in Supabase',
|