@elevasis/sdk 1.56.0 → 1.57.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-72ZGICTR.js → chunk-3XEHBMWM.js} +1 -1
- package/dist/{chunk-R3J6BEPO.js → chunk-HDMMMDIR.js} +225 -67
- package/dist/cli.cjs +209 -109
- package/dist/index.d.ts +82 -20
- package/dist/index.js +1 -1
- package/dist/test-utils/index.js +2 -2
- package/dist/worker/index.js +2 -2
- package/package.json +2 -2
- package/reference/_navigation.md +1 -1
- package/reference/index.mdx +1 -1
- package/reference/rules/agent-start-here.md +1 -1
- package/reference/rules/organization-model.md +3 -2
- package/reference/scaffold/recipes/customize-crm-actions.md +231 -223
- package/reference/scaffold/recipes/extend-crm.md +4 -2
- package/reference/scaffold/recipes/extend-lead-gen.md +2 -2
- package/reference/scaffold/recipes/index.md +2 -2
- package/reference/scaffold/reference/contracts.md +40 -12
- package/reference/scaffold/reference/system-interface-capabilities.md +4 -4
- package/reference/sdk/cli-management.mdx +0 -4
- package/reference/sdk/cli.mdx +0 -4
- package/reference/sdk/concepts.mdx +0 -4
- package/reference/sdk/deployment/command-center.mdx +0 -4
- package/reference/sdk/framework/agent.mdx +0 -4
- package/reference/sdk/framework/index.mdx +0 -4
- package/reference/sdk/framework/project-structure.mdx +0 -4
- package/reference/sdk/getting-started.mdx +0 -4
- package/reference/sdk/index.mdx +4 -8
- package/reference/sdk/platform-tools/index.mdx +0 -4
- package/reference/sdk/resources/index.mdx +0 -4
- package/reference/sdk/resources/patterns.mdx +0 -4
- package/reference/sdk/runtime.mdx +0 -4
- package/reference/sdk/templates/data-enrichment.mdx +0 -4
- package/reference/sdk/templates/email-sender.mdx +0 -4
- package/reference/sdk/templates/index.mdx +0 -4
- package/reference/sdk/templates/lead-scorer.mdx +0 -4
- package/reference/sdk/templates/pdf-generator.mdx +0 -4
- package/reference/sdk/templates/recurring-job.mdx +0 -4
- package/reference/sdk/templates/text-classifier.mdx +0 -4
- package/reference/sdk/templates/web-scraper.mdx +0 -4
- package/reference/sdk/troubleshooting.mdx +0 -4
|
@@ -23,7 +23,7 @@ CRM is a layered platform surface, not one component:
|
|
|
23
23
|
- **Organization OS:** System access, sales pipeline semantics, quick access, and labels live in the organization model.
|
|
24
24
|
- **Shared UI:** CRM pages, sidebars, workbench panels, overview widgets, and Kanban/detail components live in `@elevasis/ui`.
|
|
25
25
|
- **Headless hooks:** deal, company, contact, note, task, list, transition, and action hooks live under `@elevasis/ui/hooks`.
|
|
26
|
-
- **Action system:**
|
|
26
|
+
- **Action system:** deal action buttons are authored as `actionTypes` records under the `sales.crm` System's ontology scope, compiled with `compileCrmActionCatalog` and handed to the provider as `crmActions`. The published `@elevasis/sdk` surface ships no default Elevasis action catalog -- every project's buttons come from its own organization model.
|
|
27
27
|
- **Workflow adapters:** `crm` and `acqDb` from `@elevasis/sdk/worker` let workflows read and mutate CRM/acquisition data through platform tools.
|
|
28
28
|
- **System API Interface:** `sales.crm` uses the flat `system.apiInterface` marker for its API-backed CRM boundary. Readiness is derived from scoped resources, ontology bindings, required catalogs, and scoped topology grants. Cross-system lead-gen handoff belongs in scoped topology, not a top-level Bridge Contract or a hand-authored handoff interface field. Generated contract docs expose the current CRM shapes in `operations/node_modules/@elevasis/sdk/reference/scaffold/reference/contracts.md`.
|
|
29
29
|
|
|
@@ -51,7 +51,7 @@ CRM is a layered platform surface, not one component:
|
|
|
51
51
|
| `useDeals`, `useDealDetail`, `useTransitionItem`, `useExecuteAction`, `useDealNotes`, `useDealTasks` | `@elevasis/ui/hooks` | Headless deal and task data access |
|
|
52
52
|
| `useCompanies`, `useContacts`, `useLists`, `useBatchTelemetry` | `@elevasis/ui/hooks` | Acquisition substrate data access |
|
|
53
53
|
| `ElevasisUIProvider`, `ElevasisCoreProvider`, `useElevasisServices` | `@elevasis/ui/provider` | Provider setup, API access, and organization context |
|
|
54
|
-
| `
|
|
54
|
+
| `compileCrmActionCatalog`, `deriveCompiledCrmActions`, `CompiledCrmAction` | `@elevasis/sdk` | Deal action compilation and render-time derivation |
|
|
55
55
|
| `crm`, `acqDb` | `@elevasis/sdk/worker` | Workflow-side CRM/acquisition platform adapters |
|
|
56
56
|
|
|
57
57
|
Read the generated contracts before changing typed boundaries:
|
|
@@ -241,6 +241,8 @@ For stage labels or stage sets, update the project model:
|
|
|
241
241
|
Keep these boundaries straight:
|
|
242
242
|
|
|
243
243
|
- Org-model sales pipelines describe business semantics.
|
|
244
|
+
- Give every `sales.crm:catalog/crm.pipeline` entry a `semanticClass`. The platform treats entries marked `closed_won` / `closed_lost` as closed: they drive deal ownership, next-action suppression, the closed priority bucket, and won/lost counts in the deals summary. A catalog with no closed `semanticClass` has no closed stages; there is no fallback to stage keys named `closed_won` / `closed_lost`.
|
|
245
|
+
- Deal priority and next-action defaults are authored on the `sales.crm` System as `config.rules`: `priority` (`enabled`, `staleAfterDays`, `bucketOrder`, `buckets`, `followUpAfterDaysByStateKey`) and `nextActions` (`mappings`, `ownershipUsFallback`), plus `staleAfterDaysByStageKey`, the days without an update before an open deal in that stage is reported stale by the deals summary (keys must be pipeline stage keys; an unlisted stage is never reported stale). Omitted fields use the platform's generic defaults, and organization overrides saved in CRM settings layer on top. Do not author `closedStageKeys` there; the pipeline catalog owns closed stages, and an invalid `config.rules` makes the CRM API report not-ready.
|
|
244
246
|
- `DealStage` and platform action defaults describe the current shared platform deal state vocabulary.
|
|
245
247
|
- UI wrappers can relabel and route around shared surfaces, but changing persisted platform stages requires coordinated core/API/UI updates.
|
|
246
248
|
- Do not add `sales.actions` to the org model in v1. Deal action customization is covered by [customize-crm-actions.md](customize-crm-actions.md).
|
|
@@ -525,9 +525,9 @@ The helper throws at declaration time on the failure modes the literal lets thro
|
|
|
525
525
|
|
|
526
526
|
`readinessContract.requiredObjects` and `requiredCatalogs` are arrays of ontology IDs owned by this system. The platform validates that each declared object type exists in the OM and that each declared catalog type has at least one entry. `requiredCatalogs` must declare at least one entry — an empty contract asserts nothing and is rejected.
|
|
527
527
|
|
|
528
|
-
Built-in profile ids (`sales.lead-gen.api`, etc.) derive their requirements from platform code. **A `readinessContract` declared alongside a built-in profile is
|
|
528
|
+
Built-in profile ids (`sales.lead-gen.api`, etc.) derive their requirements from platform code, evaluated by the API at request time and never copied into your deployed model. **A `readinessContract` declared alongside a built-in profile is an error.** The readiness check never reads it, so it would validate nothing and drift from what the platform enforces. `defineSystemApiInterface` throws on it, and deploy preflight and `om:doctor` report a hand-written one as `readiness-contract-on-built-in-profile`. Delete it. To see what the platform checks for, read `requiredObjects` / `requiredCatalogs` from `defineLeadGenSystem` or `defineCrmSystem`.
|
|
529
529
|
|
|
530
|
-
Note that the determinant is the **profile**, not the system. A custom system using a built-in profile still gets the built-in's requirements and still
|
|
530
|
+
Note that the determinant is the **profile**, not the system. A custom system using a built-in profile still gets the built-in's requirements and still may not declare a contract; a custom profile id is what makes `readinessContract` required (and it is required — a custom profile without one fails readiness with `missing-readiness-contract`).
|
|
531
531
|
|
|
532
532
|
The `lookupReadinessProfile`, `registerReadinessProfile`, and `isBuiltInReadinessProfile` functions are exported from `@elevasis/sdk` alongside the `SystemApiInterfaceReadinessContract`, `ReadinessProfileKind`, and `ReadinessProfileEntry` types. `registerReadinessProfile(profileId)` only acknowledges a custom id for introspection (`lookupReadinessProfile` then resolves it as `kind: 'custom'` instead of `undefined`) — it cannot make `isBuiltInReadinessProfile` return `true` and it is never a substitute for a `readinessContract`. The actual extension point for platform-code-driven readiness (no `readinessContract` needed) is `registerBuiltInReadinessProfile`, exported from `@elevasis/core/organization-model/readiness` — it takes real structural validation logic, not just an id.
|
|
533
533
|
|
|
@@ -35,7 +35,7 @@ You want to build on the shared lead-gen system without forking it: add lead-gen
|
|
|
35
35
|
You want to build on the shared content system without forking it: add a pipeline, produce a step from a workflow, customize the review screen, store rules documents, or track distributions. Covers the catalog-driven pipeline model (a pipeline is data, not code), the `content:catalog/{pipeline}-steps` binding, attempt authoring with `stepKey`, artifacts as versioned governing documents with their two silent write constraints, review-page slots and primitives, and the `apiInterface` readiness rules.
|
|
36
36
|
|
|
37
37
|
**[Customize CRM Actions](customize-crm-actions.md)**
|
|
38
|
-
You want to add, hide, or
|
|
38
|
+
You want to add, hide, reorder, or re-implement CRM deal action buttons, configure the shared `crmActions` provider path, or call a project-owned workflow from custom UI. Covers authoring actions as `sales.crm` ontology `actionTypes` records, the `availableFrom` conditions that decide when a button appears, `compileCrmActionCatalog` and provider wiring, server-side dispatch, and why payload schemas are platform-registered rather than authored in the model.
|
|
39
39
|
|
|
40
40
|
**[Customize Knowledge Browser](customize-knowledge-browser.md)**
|
|
41
41
|
You want to mount, extend, or replace the default Knowledge Browser. Covers the three customization tiers (default manifest mount, sidebar composition via `KnowledgeSidebarMiddle` + `KNOWLEDGE_ITEMS`, and direct query access via `@elevasis/core/knowledge`), the one-line `vite.config.ts` plugin add (`knowledgePlugin()` from `@elevasis/ui/vite-plugin-knowledge`), and the CSS import requirement.
|
|
@@ -48,6 +48,6 @@ You want to browse, inspect, or traverse the OrganizationModel knowledge graph f
|
|
|
48
48
|
## Reference docs these recipes link into
|
|
49
49
|
|
|
50
50
|
- [glossary.md](../reference/glossary.md) -- term disambiguation for System, Resource, systemId, Topology, Settings asymmetry
|
|
51
|
-
- [contracts.md](../reference/contracts.md) -- TypeScript shapes: `SystemModule`, `OrganizationModel`, CRM deal types, lead-gen list/member/artifact types, content item/attempt/distribution types, `CrmToolMap`, `LeadToolMap`, `ListToolMap`, `ContentToolMap`, `
|
|
51
|
+
- [contracts.md](../reference/contracts.md) -- TypeScript shapes: `SystemModule`, `OrganizationModel`, CRM deal types, lead-gen list/member/artifact types, content item/attempt/distribution types, `CrmToolMap`, `LeadToolMap`, `ListToolMap`, `ContentToolMap`, `CompiledCrmAction`
|
|
52
52
|
- [feature-flags-and-gating.md](../ui/feature-flags-and-gating.md) -- full three-concept gating model
|
|
53
53
|
- [workflow-recipes.md](../operations/workflow-recipes.md) -- workflow anatomy, adapters, trigger patterns
|
|
@@ -2089,22 +2089,50 @@ export const DealSchemas = {
|
|
|
2089
2089
|
### `Action`
|
|
2090
2090
|
|
|
2091
2091
|
```typescript
|
|
2092
|
-
export interface Action {
|
|
2093
|
-
key: string
|
|
2094
|
-
label: string
|
|
2095
|
-
payloadSchema?: z.ZodTypeAny
|
|
2092
|
+
export interface Action {
|
|
2093
|
+
key: string
|
|
2094
|
+
label: string
|
|
2095
|
+
payloadSchema?: z.ZodTypeAny
|
|
2096
2096
|
}
|
|
2097
2097
|
```
|
|
2098
2098
|
|
|
2099
|
-
### `
|
|
2099
|
+
### `DealActionInput`
|
|
2100
2100
|
|
|
2101
2101
|
```typescript
|
|
2102
|
-
export
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2102
|
+
export type DealActionInput = AcqDealRow & {
|
|
2103
|
+
ownership?: 'us' | 'them' | null
|
|
2104
|
+
nextAction?: string | null
|
|
2105
|
+
}
|
|
2106
|
+
```
|
|
2107
|
+
|
|
2108
|
+
### `CompiledCrmActionAvailability`
|
|
2109
|
+
|
|
2110
|
+
```typescript
|
|
2111
|
+
/**
|
|
2112
|
+
* When a deal action is selectable, authored by the tenant rather than hardcoded
|
|
2113
|
+
* as a TypeScript predicate. `stageKeys` / `stateKeys` / `nextActionKeys` AND
|
|
2114
|
+
* together; membership within one dimension is OR; an omitted dimension is
|
|
2115
|
+
* unconstrained. Mirrors
|
|
2116
|
+
* `OntologyActionAvailabilityCondition` (`organization-model/ontology.ts`)
|
|
2117
|
+
* verbatim -- this is that schema's compiled/validated shape.
|
|
2118
|
+
*/
|
|
2119
|
+
export interface CompiledCrmActionAvailability {
|
|
2120
|
+
stageKeys: string[]
|
|
2121
|
+
stateKeys?: string[]
|
|
2122
|
+
nextActionKeys?: string[]
|
|
2123
|
+
}
|
|
2124
|
+
```
|
|
2125
|
+
|
|
2126
|
+
### `CompiledCrmAction`
|
|
2127
|
+
|
|
2128
|
+
```typescript
|
|
2129
|
+
/** One CRM deal action, compiled from the OM's `sales.crm` ontology `actionTypes`. */
|
|
2130
|
+
export interface CompiledCrmAction {
|
|
2131
|
+
key: string
|
|
2132
|
+
label: string
|
|
2133
|
+
availableFrom: CompiledCrmActionAvailability
|
|
2134
|
+
resourceId: string
|
|
2135
|
+
payloadSchema?: z.ZodTypeAny
|
|
2108
2136
|
}
|
|
2109
2137
|
```
|
|
2110
2138
|
|
|
@@ -3177,7 +3205,7 @@ export type TransitionItem<T extends Stateful, TEvent extends ActivityEvent> = (
|
|
|
3177
3205
|
### `DeriveActions`
|
|
3178
3206
|
|
|
3179
3207
|
```typescript
|
|
3180
|
-
/** Generic action-derivation shape — concrete per-entity
|
|
3208
|
+
/** Generic action-derivation shape — concrete per-entity action derivations satisfy this. */
|
|
3181
3209
|
export type DeriveActions<T extends Stateful, TAction> = (item: T) => TAction[]
|
|
3182
3210
|
```
|
|
3183
3211
|
|
|
@@ -12,7 +12,7 @@ System Interface profiles are a closed platform adoption handshake. This table i
|
|
|
12
12
|
|
|
13
13
|
The catalog is closed because a `readinessProfile` names a capability the platform API gates a route on -- only the platform can mint one. `SystemInterfaceReadinessProfileSchema` accepts any non-empty string, but that is a property of the schema layer, not permission: an uncataloged id names no route, so the declaring System computes as **ready** and every call still fails, which is worse than the `missing-interface` a plain omission reports. Needing an uncataloged capability is a platform request (a route plus a catalog entry), not something to route around by inventing an id.
|
|
14
14
|
|
|
15
|
-
Two validation modes appear below. A **built-in** profile has a validator registered in platform code, so the adopting System
|
|
15
|
+
Two validation modes appear below. A **built-in** profile has a validator registered in platform code, so the platform owns its requirements and the adopting System must not declare a `readinessContract`. A **contract-validated** profile is platform-served but its structural requirements differ per adopter, so the adopting System MUST declare a `readinessContract`. `registerBuiltInReadinessProfile` is platform-code-only and is not reachable from a project: it mutates an in-process registry, while the readiness assertion that gates the API runs in the API process.
|
|
16
16
|
|
|
17
17
|
| Profile | Required System path | Interface key | Validation | `readinessContract` |
|
|
18
18
|
| --- | --- | --- | --- | --- |
|
|
@@ -25,7 +25,7 @@ Two validation modes appear below. A **built-in** profile has a validator regist
|
|
|
25
25
|
|
|
26
26
|
- Required System path: `sales.lead-gen`
|
|
27
27
|
- Interface key: `api`
|
|
28
|
-
- Validation: **built-in** -- a platform-registered validator covers this profile;
|
|
28
|
+
- Validation: **built-in** -- a platform-registered validator covers this profile; do not declare a `readinessContract` (deploy preflight rejects one as `readiness-contract-on-built-in-profile`).
|
|
29
29
|
- Derived-readiness requirements:
|
|
30
30
|
- System Interface marker must be active and scope at least one active `sales.lead-gen` Resource.
|
|
31
31
|
- Object types: `sales.lead-gen:object/list`, `sales.lead-gen:object/company`, `sales.lead-gen:object/contact`.
|
|
@@ -39,7 +39,7 @@ Two validation modes appear below. A **built-in** profile has a validator regist
|
|
|
39
39
|
|
|
40
40
|
- Required System path: `sales.crm`
|
|
41
41
|
- Interface key: `api`
|
|
42
|
-
- Validation: **built-in** -- a platform-registered validator covers this profile;
|
|
42
|
+
- Validation: **built-in** -- a platform-registered validator covers this profile; do not declare a `readinessContract` (deploy preflight rejects one as `readiness-contract-on-built-in-profile`).
|
|
43
43
|
- Derived-readiness requirements:
|
|
44
44
|
- System Interface marker must be active and scope at least one active `sales.crm` Resource.
|
|
45
45
|
- Catalog types with entries: `sales.crm:catalog/crm.pipeline`.
|
|
@@ -49,7 +49,7 @@ Two validation modes appear below. A **built-in** profile has a validator regist
|
|
|
49
49
|
|
|
50
50
|
- Required System path: `sales.lead-gen`
|
|
51
51
|
- Interface key: `crm-handoff`
|
|
52
|
-
- Validation: **built-in** -- a platform-registered validator covers this profile;
|
|
52
|
+
- Validation: **built-in** -- a platform-registered validator covers this profile; do not declare a `readinessContract` (deploy preflight rejects one as `readiness-contract-on-built-in-profile`).
|
|
53
53
|
- Derived-readiness requirements:
|
|
54
54
|
- Derived handoff readiness is evaluated for `sales.lead-gen/crm-handoff`; it is not authored as a separate custom tenant API surface.
|
|
55
55
|
- Lead-gen API readiness requirements must pass for `sales.lead-gen/api`.
|
|
@@ -1215,7 +1215,3 @@ A domain should meet all four criteria before gaining a `*:list` / `*:get` surfa
|
|
|
1215
1215
|
2. External SDK tenants have a plausible read or operation need.
|
|
1216
1216
|
3. Operators repeat the same query pattern often enough that ad-hoc DB reads are becoming workflow surface.
|
|
1217
1217
|
4. There are at least three concrete use cases.
|
|
1218
|
-
|
|
1219
|
-
---
|
|
1220
|
-
|
|
1221
|
-
**Last Updated:** 2026-08-17
|
package/reference/sdk/cli.mdx
CHANGED
|
@@ -768,7 +768,3 @@ These flags are accepted by all commands:
|
|
|
768
768
|
- Development (`NODE_ENV=development`): `http://localhost:<port>`
|
|
769
769
|
- Override: set `ELEVASIS_API_URL` or pass `--api-url`
|
|
770
770
|
- Force production: pass `--prod` after the command name on any authenticated command (overrides `NODE_ENV=development`). Live as of `@elevasis/sdk` 1.45.0; `--api-url https://api.elevasis.io` is the equivalent form on older installs.
|
|
771
|
-
|
|
772
|
-
---
|
|
773
|
-
|
|
774
|
-
**Last Updated:** 2026-08-17
|
|
@@ -130,7 +130,3 @@ Use `StepType.CONDITIONAL` when different inputs should follow different process
|
|
|
130
130
|
Example: score >= 80 goes to the approve path, score >= 50 goes to the review path, everything else goes to the reject path. Each path can have its own steps and logic.
|
|
131
131
|
|
|
132
132
|
Always include a `default` fallback step for inputs that do not match any condition. Without a fallback, an unmatched execution will fail.
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
**Last Updated:** 2026-02-26
|
|
@@ -206,7 +206,3 @@ The Deployments page shows the history of all deployments for your organization.
|
|
|
206
206
|
**How it connects to your code:** Each `elevasis-sdk deploy` run creates a new deployment entry. The platform activates the new version atomically -- in-flight executions complete against the previous version while new executions start against the new one.
|
|
207
207
|
|
|
208
208
|
> **SDK takeaway:** Check this page after `elevasis-sdk deploy` to confirm your resources are active.
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
**Last Updated:** 2026-03-06
|
|
@@ -87,7 +87,3 @@ External projects run an always-on natural-language intent classifier -- there i
|
|
|
87
87
|
## Template Version Tracking
|
|
88
88
|
|
|
89
89
|
The scaffold's version marker is `templateVersion` in the project-root `.elevasis` file (a flat YAML-like marker file, not `elevasis.config.ts`). `elevasis.config.ts` (`operations/elevasis.config.ts`) only accepts `defaultStatus` and `dev.port` -- it has no version field. To pull a template update, run `/git-sync`, not `/meta fix` (which does not exist in this template).
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
**Last Updated:** 2026-08-17
|
|
@@ -86,7 +86,3 @@ See [Tutorial System](tutorial-system.mdx) for the full lesson breakdown, track
|
|
|
86
86
|
- [Project Structure](project-structure.mdx) - Directory-by-directory walkthrough of the scaffolded project's structure and layout
|
|
87
87
|
- [Agent System](agent.mdx) - Skill inventory, rules layer, ambient vibe classifier, and session bootstrap
|
|
88
88
|
- [Tutorial System](tutorial-system.mdx) - Two-track onboarding (8 vibe-coder + 19 technical lessons), track persistence, and progress tracking
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
**Last Updated:** 2026-08-06
|
|
@@ -230,7 +230,3 @@ Excludes `node_modules/`, `dist/`, `*.tsbuildinfo`, `.tanstack/`, `.env` and `.e
|
|
|
230
230
|
| `.env` | Adding environment variables |
|
|
231
231
|
| `CLAUDE.md` | Rarely -- project identity and preferences, mostly written by `/setup` |
|
|
232
232
|
| `.claude/skills/*/SKILL.md` | Never in a derived project -- these arrive via `/git-sync` |
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
**Last Updated:** 2026-08-17
|
|
@@ -108,7 +108,3 @@ Replace `<execution-id>` with the ID returned from the executions list.
|
|
|
108
108
|
- [Deployment](deployment/index.mdx) -- Deployment lifecycle and environment variables
|
|
109
109
|
|
|
110
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.
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
**Last Updated:** 2026-08-17
|
package/reference/sdk/index.mdx
CHANGED
|
@@ -7,7 +7,7 @@ description: Build and deploy workflows, agents, and resources with the Elevasis
|
|
|
7
7
|
|
|
8
8
|
Workflows are step-based automations with typed inputs and outputs. Agents are autonomous AI resources with access to platform tools. Both are defined in TypeScript, exported from a single entry point, and deployed with `elevasis-sdk deploy`. Resources appear in AI Studio immediately after a successful deploy.
|
|
9
9
|
|
|
10
|
-
The SDK ships with a full CLI (`elevasis-sdk`) for validation, deployment, execution, inspection, and project-management operations. Platform tools expose
|
|
10
|
+
The SDK ships with a full CLI (`elevasis-sdk`) for validation, deployment, execution, inspection, and project-management operations. Platform tools expose 28 adapters (14 integration + 14 platform) across integration adapters and platform services -- Gmail, Stripe, Google Sheets, Attio, and more -- with credentials managed server-side so API keys never cross the execution boundary.
|
|
11
11
|
|
|
12
12
|
## Quick Start
|
|
13
13
|
|
|
@@ -28,7 +28,7 @@ After `pnpm dlx @elevasis/sdk init`, your project is scaffolded with a working e
|
|
|
28
28
|
|
|
29
29
|
## Platform Tools
|
|
30
30
|
|
|
31
|
-
The platform exposes
|
|
31
|
+
The platform exposes 28 adapters (14 integration + 14 platform) across integration adapters and platform services -- Gmail, Stripe, Google Sheets, Attio, and more. Import typed adapters from `@elevasis/sdk/worker` inside any workflow step or agent. Credentials are managed server-side; API keys never cross the execution boundary.
|
|
32
32
|
|
|
33
33
|
See [Platform Tools](platform-tools/index.mdx) for the full catalog, adapter reference, and credential setup.
|
|
34
34
|
|
|
@@ -46,7 +46,7 @@ See [Platform Tools](platform-tools/index.mdx) for the full catalog, adapter ref
|
|
|
46
46
|
### Core Concepts
|
|
47
47
|
|
|
48
48
|
- [Resources](resources/index.mdx) - Workflow and agent definition patterns, Zod schemas, step types, and routing
|
|
49
|
-
- [Platform Tools](platform-tools/index.mdx) - Full catalog of
|
|
49
|
+
- [Platform Tools](platform-tools/index.mdx) - Full catalog of 28 adapters (14 integration + 14 platform), integration adapters, and credential management
|
|
50
50
|
- [Credential Security](platform-tools/index.mdx#credential-security) - Three-layer credential model, HTTP tool patterns, and credential management
|
|
51
51
|
- [Human-in-the-Loop Workflows](human-in-the-loop.mdx) - The full HITL story: approval adapter, checkpoint metadata, and queue resolution
|
|
52
52
|
- [The Deployment Spec Pattern](project-deployment-spec.mdx) - projectDeploymentSpec and defineWorkflowConfig, the shape the template actually ships
|
|
@@ -64,7 +64,7 @@ See [Platform Tools](platform-tools/index.mdx) for the full catalog, adapter ref
|
|
|
64
64
|
### Typed Adapters
|
|
65
65
|
|
|
66
66
|
- [Integration Adapters](platform-tools/adapters-integration.mdx) - Integration adapter catalog for Attio, Stripe, Google Sheets, Resend, and more
|
|
67
|
-
- [Platform Adapters](platform-tools/adapters-platform.mdx) - All
|
|
67
|
+
- [Platform Adapters](platform-tools/adapters-platform.mdx) - All 14 platform service adapters: scheduler, storage, llm, pdf, approval, and more
|
|
68
68
|
|
|
69
69
|
### Framework
|
|
70
70
|
|
|
@@ -87,7 +87,3 @@ See [Platform Tools](platform-tools/index.mdx) for the full catalog, adapter ref
|
|
|
87
87
|
|
|
88
88
|
- [Export Catalog](exports.mdx) - Auto-generated catalog of all published @elevasis/sdk subpath exports
|
|
89
89
|
- [Troubleshooting](troubleshooting.mdx) - Static error catalog for CLI, deployment, schema, and runtime failures
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
**Last Updated:** 2026-05-19
|
|
@@ -198,7 +198,3 @@ const qualified = await platform.call({
|
|
|
198
198
|
- [Integration Adapters](adapters-integration.mdx) - All 14 integration adapters with method tables and code examples
|
|
199
199
|
- [Platform Adapters](adapters-platform.mdx) - All 14 platform service adapters with method tables and code examples
|
|
200
200
|
- [Adapter Type Safety](type-safety.mdx) - Required fields, discriminated unions, and intentionally loose adapter types
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
**Last Updated:** 2026-03-06
|
|
@@ -393,7 +393,3 @@ export default config;
|
|
|
393
393
|
|
|
394
394
|
- [SDK Types](types.mdx) - Complete type reference for `@elevasis/sdk` exports, config, and step handler context
|
|
395
395
|
- [Common Patterns](patterns.mdx) - Sequential steps, conditional branching, error handling, and resource status patterns
|
|
396
|
-
|
|
397
|
-
---
|
|
398
|
-
|
|
399
|
-
**Last Updated:** 2026-02-25
|
|
@@ -495,7 +495,3 @@ The Command Queue page in the Command Center surfaces all pending approval tasks
|
|
|
495
495
|
Use these hooks to build a custom approval queue surface in your template UI. `useSubmitAction` accepts `taskId`, `actionId`, and optional `notes`, and optimistically marks the task as `processing` while the request is in flight.
|
|
496
496
|
|
|
497
497
|
For triggering executions from custom pages (the other side of the workflow interaction), see [UI Execution](../deployment/execution-reference.mdx#ui-execution).
|
|
498
|
-
|
|
499
|
-
---
|
|
500
|
-
|
|
501
|
-
**Last Updated:** 2026-02-25
|
|
@@ -165,7 +165,3 @@ Hard limits to prevent abuse and ensure platform stability:
|
|
|
165
165
|
## Organization Provisioning
|
|
166
166
|
|
|
167
167
|
Organization creation is currently admin-only. If you need a new organization provisioned for SDK access, contact the Elevasis team. Self-serve organization creation and API key generation is on the roadmap.
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
**Last Updated:** 2026-03-06
|
|
@@ -160,7 +160,3 @@ export const dataEnrichment: WorkflowDefinition = {
|
|
|
160
160
|
- **Prompt template:** The `{value}` placeholder is replaced with the source field's value at runtime. Adapt the prompt for the user's specific enrichment task.
|
|
161
161
|
- **Batch size:** Default limit is 20 rows. Increase for bulk processing, decrease for expensive LLM calls.
|
|
162
162
|
- **Skill adaptation:** For beginners, explain what "enrichment" means and give concrete examples (adding a summary field, scoring, categorizing) before generating code.
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
**Last Updated:** 2026-02-26
|
|
@@ -133,7 +133,3 @@ export const emailSender: WorkflowDefinition = {
|
|
|
133
133
|
- **HTML vs text:** For beginners, suggest writing plain text first and adding HTML later. For developers, show both.
|
|
134
134
|
- **Error handling:** The template returns `{ sent: false, error }` on failure rather than throwing, suitable for non-critical emails. For critical notifications, change to `throw err` so the execution fails visibly.
|
|
135
135
|
- **Multi-step context:** This template is a single step, but it can be used as the last step of a multi-step workflow (e.g., "process data then send summary email").
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
**Last Updated:** 2026-02-26
|
|
@@ -41,7 +41,3 @@ All templates are available for any organization. Credentials specific to each t
|
|
|
41
41
|
| PDF Generator | `pdf`, `storage` | None (platform services) |
|
|
42
42
|
| Text Classifier | `llm` | None (LLM server-side) |
|
|
43
43
|
| Recurring Job | `scheduler` | None (platform service) |
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
**Last Updated:** 2026-03-19
|
|
@@ -173,7 +173,3 @@ export const leadScorer: WorkflowDefinition = {
|
|
|
173
173
|
- **Scoring criteria:** Customize `DEFAULT_CRITERIA` based on the user's ICP (ideal customer profile). Ask the user what matters most for their scoring.
|
|
174
174
|
- **Table columns:** The template writes `score`, `tier`, `scoring_reasoning`, `scored_at`. Ensure these columns exist or adapt the field names.
|
|
175
175
|
- **LLM model:** Default uses `gpt-5.4-mini`. For more nuanced scoring, suggest `gpt-5`.
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
**Last Updated:** 2026-02-26
|
|
@@ -167,7 +167,3 @@ export const pdfGenerator: WorkflowDefinition = {
|
|
|
167
167
|
- **Expiry:** Default is 1 hour. For document delivery workflows, increase to 24-72 hours.
|
|
168
168
|
- **Data structure:** Ask the user what fields their document needs before defining the input schema and mapping it into `sections`. For typed use cases (invoices, reports), add more input fields and a matching table row or card per field group.
|
|
169
169
|
- **Skill adaptation:** For beginners, walk through the difference between a JSON document tree and an HTML template before generating code.
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
**Last Updated:** 2026-02-26
|
|
@@ -194,7 +194,3 @@ export const recurringJob: WorkflowDefinition = {
|
|
|
194
194
|
- **Timezone:** Always ask the user their preferred timezone. Defaults to UTC which may cause unexpected run times.
|
|
195
195
|
- **`organizationId` in `createSchedule` params:** The platform always re-scopes this from the execution context server-side, so the value passed here is ignored -- it exists only because the field is required by the scheduler's type.
|
|
196
196
|
- **Execution input on each run:** The job workflow receives `scheduleConfig.payload` as its input, with a `_scheduleMetadata` object (`scheduleId`, `scheduleName`, `scheduleStep`) merged in automatically. Extra fields are not part of the validated `inputSchema` and are silently dropped by Zod's default parsing.
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
**Last Updated:** 2026-02-26
|
|
@@ -145,7 +145,3 @@ Return JSON with:
|
|
|
145
145
|
- **Confidence routing:** Common pattern: use the output with `StepType.CONDITIONAL` routing. High confidence routes to automated processing; low confidence routes to human review.
|
|
146
146
|
- **Model selection:** `gpt-5.4-mini` is fast and cost-effective for classification. For complex or nuanced categorization, suggest `gpt-5`.
|
|
147
147
|
- **Skill adaptation:** For beginners, explain what "structured output" means and why the LLM returns JSON instead of free text.
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
**Last Updated:** 2026-02-26
|
|
@@ -137,7 +137,3 @@ export const webScraper: WorkflowDefinition = {
|
|
|
137
137
|
- **Actor selection:** Apify has hundreds of public actors. Common choices: `apify/web-scraper` (generic), `apify/cheerio-scraper` (fast HTML parsing), specialized actors for LinkedIn, Amazon, etc.
|
|
138
138
|
- **Error handling:** Add try/catch for `PlatformToolError` if partial failure tolerance is needed.
|
|
139
139
|
- **Skill adaptation:** For beginners, explain what Apify is and walk through actor selection before generating code.
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
**Last Updated:** 2026-02-26
|