@elevasis/sdk 1.28.1 → 1.30.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.
Files changed (87) hide show
  1. package/dist/cli.cjs +1611 -595
  2. package/dist/index.d.ts +105 -1
  3. package/dist/index.js +30 -25
  4. package/dist/node/index.d.ts +84 -1
  5. package/dist/test-utils/index.d.ts +102 -1
  6. package/dist/test-utils/index.js +242 -23
  7. package/dist/worker/index.js +1 -0
  8. package/package.json +4 -4
  9. package/reference/_navigation.md +4 -4
  10. package/reference/_reference-manifest.json +8 -8
  11. package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +3 -3
  12. package/reference/claude-config/rules/topbar-actions.md +70 -0
  13. package/reference/claude-config/skills/om/SKILL.md +18 -1
  14. package/reference/claude-config/skills/tutorial/technical.md +5 -5
  15. package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +83 -83
  16. package/reference/claude-config/sync-notes/2026-05-14-organization-model-ontology-refactor.md +45 -45
  17. package/reference/claude-config/sync-notes/2026-05-15-om-skill-rename-and-write-family.md +52 -52
  18. package/reference/claude-config/sync-notes/2026-05-17-sdk-boundary-consolidation.md +33 -33
  19. package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +32 -32
  20. package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +43 -43
  21. package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +40 -40
  22. package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +61 -61
  23. package/reference/claude-config/sync-notes/2026-05-23-branding-names-to-identity.md +49 -49
  24. package/reference/claude-config/sync-notes/2026-05-23-lead-gen-manage-access.md +31 -31
  25. package/reference/claude-config/sync-notes/2026-05-23-om-deployment-drift-detection.md +42 -42
  26. package/reference/claude-config/sync-notes/2026-05-23-om-full-model-deploy-contract.md +33 -33
  27. package/reference/claude-config/sync-notes/2026-05-23-ui-sdk-package-fixes.md +37 -37
  28. package/reference/claude-config/sync-notes/2026-05-24-platform-invite-router-core-baseline.md +28 -0
  29. package/reference/claude-config/sync-notes/2026-05-24-system-interface-readiness.md +43 -43
  30. package/reference/claude-config/sync-notes/2026-05-25-invitation-login-loader.md +26 -0
  31. package/reference/claude-config/sync-notes/2026-05-25-om-topbar-requests.md +33 -0
  32. package/reference/claude-config/sync-notes/2026-05-25-system-interface-profile-registry-and-substrate.md +35 -0
  33. package/reference/claude-config/sync-notes/2026-05-25-tenant-om-scaffold-cli.md +49 -0
  34. package/reference/claude-config/sync-notes/2026-05-25-vibe-operate-intent.md +47 -0
  35. package/reference/core/exports.mdx +16 -0
  36. package/reference/core/index.mdx +58 -0
  37. package/reference/examples/organization-model.ts +18 -0
  38. package/reference/index.mdx +36 -67
  39. package/reference/rules/organization-model.md +4 -1
  40. package/reference/rules/organization-os.md +7 -1
  41. package/reference/rules/ui.md +207 -207
  42. package/reference/rules/vibe.md +52 -18
  43. package/reference/scaffold/index.mdx +9 -7
  44. package/reference/scaffold/operations/propagation-pipeline.md +152 -152
  45. package/reference/scaffold/operations/scaffold-maintenance.md +14 -4
  46. package/reference/scaffold/reference/contracts.md +423 -338
  47. package/reference/scaffold/reference/glossary.md +14 -2
  48. package/reference/scaffold/reference/system-interface-capabilities.md +50 -0
  49. package/reference/{cli-management.mdx → sdk/cli-management.mdx} +159 -13
  50. package/reference/{cli.mdx → sdk/cli.mdx} +68 -12
  51. package/reference/sdk/exports.mdx +14 -0
  52. package/reference/sdk/index.mdx +93 -0
  53. package/reference/sdk/platform-tools/adapters-integration.mdx +25 -0
  54. package/reference/sdk/platform-tools/adapters-platform.mdx +24 -0
  55. package/reference/{platform-tools → sdk/platform-tools}/index.mdx +9 -30
  56. package/reference/{resources → sdk/resources}/patterns.mdx +29 -11
  57. package/reference/ui/exports.mdx +60 -0
  58. package/reference/ui/index.mdx +75 -0
  59. package/reference/platform-tools/adapters-integration.mdx +0 -300
  60. package/reference/platform-tools/adapters-platform.mdx +0 -552
  61. /package/reference/claude-config/skills/deploy/{skill.md → SKILL.md} +0 -0
  62. /package/reference/{concepts.mdx → sdk/concepts.mdx} +0 -0
  63. /package/reference/{deployment → sdk/deployment}/command-center.mdx +0 -0
  64. /package/reference/{deployment → sdk/deployment}/execution-reference.mdx +0 -0
  65. /package/reference/{deployment → sdk/deployment}/index.mdx +0 -0
  66. /package/reference/{framework → sdk/framework}/agent.mdx +0 -0
  67. /package/reference/{framework → sdk/framework}/index.mdx +0 -0
  68. /package/reference/{framework → sdk/framework}/interaction-guidance.mdx +0 -0
  69. /package/reference/{framework → sdk/framework}/memory.mdx +0 -0
  70. /package/reference/{framework → sdk/framework}/project-structure.mdx +0 -0
  71. /package/reference/{framework → sdk/framework}/resource-documentation.mdx +0 -0
  72. /package/reference/{framework → sdk/framework}/tutorial-system.mdx +0 -0
  73. /package/reference/{getting-started.mdx → sdk/getting-started.mdx} +0 -0
  74. /package/reference/{platform-tools → sdk/platform-tools}/type-safety.mdx +0 -0
  75. /package/reference/{resources → sdk/resources}/index.mdx +0 -0
  76. /package/reference/{resources → sdk/resources}/types.mdx +0 -0
  77. /package/reference/{roadmap.mdx → sdk/roadmap.mdx} +0 -0
  78. /package/reference/{runtime.mdx → sdk/runtime.mdx} +0 -0
  79. /package/reference/{templates → sdk/templates}/data-enrichment.mdx +0 -0
  80. /package/reference/{templates → sdk/templates}/email-sender.mdx +0 -0
  81. /package/reference/{templates → sdk/templates}/index.mdx +0 -0
  82. /package/reference/{templates → sdk/templates}/lead-scorer.mdx +0 -0
  83. /package/reference/{templates → sdk/templates}/pdf-generator.mdx +0 -0
  84. /package/reference/{templates → sdk/templates}/recurring-job.mdx +0 -0
  85. /package/reference/{templates → sdk/templates}/text-classifier.mdx +0 -0
  86. /package/reference/{templates → sdk/templates}/web-scraper.mdx +0 -0
  87. /package/reference/{troubleshooting.mdx → sdk/troubleshooting.mdx} +0 -0
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  title: Platform Tools
3
- description: Access 70+ tools across integration adapters and platform services from your SDK workflows -- typed adapters, credential security model, and working code examples
3
+ description: Access 25 adapters (13 integration + 12 platform) from your SDK workflows -- typed adapters, credential security model, and working code examples
4
4
  ---
5
5
 
6
- 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.
6
+ Your SDK workflows have access to 25 adapters (13 integration + 12 platform) -- 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.
7
7
 
8
8
  **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.
9
9
 
@@ -39,20 +39,9 @@ Both patterns return a Promise that resolves with the tool result or rejects wit
39
39
 
40
40
  ## Integration Adapters
41
41
 
42
- Ten integration adapters give you access to 50+ tool methods covering third-party APIs. Pass the credential name once at adapter creation. Supabase is listed separately under [Database Access](#database-access) below.
43
-
44
- | Adapter | Tools | Credential Shape |
45
- | ------------- | ----------------------------- | ------------------------ |
46
- | Attio | 12 (CRUD + schema + notes) | `{ apiKey }` |
47
- | Google Sheets | 13 (read/write/filter/upsert) | OAuth2 / service account |
48
- | Stripe | 6 (payment links + checkout) | `{ secretKey }` |
49
- | Instantly | 5 (email campaigns) | `{ apiKey }` |
50
- | SignatureAPI | 4 (envelopes) | `{ apiKey }` |
51
- | Tomba | 3 (email discovery) | `api-key-secret` |
52
- | Gmail | 2 (send email) | OAuth2 / service account |
53
- | Resend | 2 (send/get email) | `{ apiKey }` |
54
- | Dropbox | 2 (upload/folder) | `{ accessToken }` |
55
- | Apify | 1 (run actor) | `{ token }` |
42
+ The SDK ships 13 integration adapters (credential-bound factory functions) covering third-party APIs -- Attio, Apify, ClickUp, Dropbox, Gmail, Google Sheets, Instantly, MillionVerifier, Anymailfinder, Tomba, Resend, SignatureAPI, and Stripe. Pass the credential name once at adapter creation. Supabase is covered separately under [Database Access](#database-access) below.
43
+
44
+ For the full per-adapter method tables, credential shapes, and code examples, see [Integration Adapters](adapters-integration.mdx) -- generated from the adapter source so it never drifts.
56
45
 
57
46
  ## Credential Security
58
47
 
@@ -131,19 +120,9 @@ Credentials are created in the command center UI: navigate to Credentials -> Add
131
120
 
132
121
  ## Platform Services
133
122
 
134
- Nine built-in platform services are available without a `credential` field. All have typed singleton adapters imported from `@elevasis/sdk/worker`.
123
+ The SDK ships 12 platform service singletons available without a `credential` field -- imported directly from `@elevasis/sdk/worker`: `scheduler`, `llm`, `storage`, `notifications`, `acqDb`, `projects`, `crm`, `list`, `pdf`, `approval`, `execution`, and `email`. The platform injects context server-side, so no credential is passed.
135
124
 
136
- | Tool Key | Methods | Purpose |
137
- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
138
- | `acqDb` | 35 methods (CRUD + sync) | Acquisition database -- `acqDb` adapter |
139
- | `email` | `send` | Send email to org members -- `email` adapter |
140
- | `storage` | `upload`, `download`, `createSignedUrl`, `delete`, `list` | File storage -- `storage` adapter |
141
- | `pdf` | `render`, `renderToBuffer` | PDF rendering -- `pdf` adapter |
142
- | `notification` | `create` | In-app notifications -- `notifications` adapter |
143
- | `approval` | `create`, `deleteByMetadata` | HITL approval gates -- `approval` adapter |
144
- | `scheduler` | `createSchedule`, `updateAnchor`, `deleteSchedule`, `findByIdempotencyKey`, `deleteScheduleByIdempotencyKey`, `listSchedules`, `getSchedule`, `cancelSchedule`, `cancelSchedulesByMetadata` | Task scheduling -- `scheduler` adapter |
145
- | `llm` | `generate` | LLM inference -- `llm` adapter |
146
- | `execution` | `trigger` | Nested child execution -- `execution` adapter |
125
+ For the full per-service method tables (including the `acqDb` 41-method surface), see [Platform Adapters](adapters-platform.mdx) -- generated from the adapter source.
147
126
 
148
127
  ## LLM Tool
149
128
 
@@ -207,8 +186,8 @@ const qualified = await platform.call({
207
186
 
208
187
  ## Documentation
209
188
 
210
- - [Integration Adapters](adapters-integration.mdx) - All 10 integration adapters with method tables and code examples
211
- - [Platform Adapters](adapters-platform.mdx) - All 9 platform service adapters with method tables and code examples
189
+ - [Integration Adapters](adapters-integration.mdx) - All 13 integration adapters with method tables and code examples
190
+ - [Platform Adapters](adapters-platform.mdx) - All 12 platform service adapters with method tables and code examples
212
191
  - [Adapter Type Safety](type-safety.mdx) - Required fields, discriminated unions, and intentionally loose adapter types
213
192
 
214
193
  ---
@@ -11,19 +11,23 @@ This page collects the patterns you will reach for most often when writing resou
11
11
 
12
12
  The simplest pattern: a chain of steps where each step feeds its output into the next.
13
13
 
14
+ Each `WorkflowStep` requires `id`, `name`, `description`, `handler`, `inputSchema`, `outputSchema`, and `next`. There is no `type` field on a step -- `StepType` (`LINEAR` / `CONDITIONAL`) is a label for `next.type` only, not a step property.
15
+
14
16
  ```typescript
15
17
  import { z } from 'zod';
16
- import { StepType } from '@elevasis/sdk';
17
18
  import type { WorkflowDefinition, WorkflowStep } from '@elevasis/sdk';
18
19
 
19
20
  const inputSchema = z.object({ orderId: z.string() });
20
21
  const outputSchema = z.object({ shipped: z.boolean(), trackingNumber: z.string() });
21
22
 
22
23
  type Input = z.infer<typeof inputSchema>;
23
- type Output = z.infer<typeof outputSchema>;
24
24
 
25
25
  const validateStep: WorkflowStep = {
26
- type: StepType.LINEAR,
26
+ id: 'validate',
27
+ name: 'Validate Order',
28
+ description: 'Checks the order exists before shipping',
29
+ inputSchema: z.object({ orderId: z.string() }),
30
+ outputSchema: z.object({ order: z.unknown() }),
27
31
  handler: async (input: Input) => {
28
32
  const order = await getOrder(input.orderId);
29
33
  if (!order) throw new Error(`Order ${input.orderId} not found`);
@@ -33,7 +37,11 @@ const validateStep: WorkflowStep = {
33
37
  };
34
38
 
35
39
  const shipStep: WorkflowStep = {
36
- type: StepType.LINEAR,
40
+ id: 'ship',
41
+ name: 'Ship Order',
42
+ description: 'Creates a shipment and returns the tracking number',
43
+ inputSchema: z.object({ order: z.unknown() }),
44
+ outputSchema: z.object({ shipped: z.boolean(), trackingNumber: z.string() }),
37
45
  handler: async (input) => {
38
46
  const tracking = await createShipment(input.order);
39
47
  return { shipped: true, trackingNumber: tracking.number };
@@ -51,23 +59,29 @@ const fulfillOrder: WorkflowDefinition = {
51
59
 
52
60
  **Key points:**
53
61
 
54
- - `next: { target: 'stepName' }` routes to the next step
62
+ - Steps require `id`, `name`, `description`, `inputSchema`, `outputSchema`, `handler`, and `next`
63
+ - `next.type` is `'linear'` or `'conditional'` -- this is where `StepType` values apply; the step itself has no `type` field
64
+ - `next: { type: 'linear', target: 'stepName' }` routes to the next step
55
65
  - `next: null` marks the terminal step
56
66
  - Each step receives the full return value of the previous step as its `input`
57
- - The terminal step's return value must satisfy `contract.output`
67
+ - The terminal step's return value must satisfy `contract.outputSchema`
58
68
 
59
69
  ---
60
70
 
61
71
  ## Conditional Branching
62
72
 
63
- Use `StepType.CONDITIONAL` when the next step depends on the output of the current step.
73
+ Use a `next.type` of `'conditional'` when the next step depends on the output of the current step. The step itself still has no `type` field -- the routing decision lives entirely in `next`.
64
74
 
65
75
  ```typescript
66
- import { StepType } from '@elevasis/sdk';
76
+ import { z } from 'zod';
67
77
  import type { WorkflowStep } from '@elevasis/sdk';
68
78
 
69
79
  const scoreStep: WorkflowStep = {
70
- type: StepType.CONDITIONAL,
80
+ id: 'score',
81
+ name: 'Score Application',
82
+ description: 'Calculates a risk score and routes on the result',
83
+ inputSchema: z.object({ applicationId: z.string() }),
84
+ outputSchema: z.object({ score: z.number(), applicationId: z.string() }),
71
85
  handler: async (input) => {
72
86
  const score = await calculateRiskScore(input.applicationId);
73
87
  return { score, applicationId: input.applicationId };
@@ -103,12 +117,16 @@ const scoreStep: WorkflowStep = {
103
117
  Platform tools let your steps call integrations managed by Elevasis (email, CRM, databases, etc.). Import `platform` from `@elevasis/sdk/worker` and call it with the tool name, method, parameters, and an optional credential reference when the tool requires one.
104
118
 
105
119
  ```typescript
120
+ import { z } from 'zod';
106
121
  import { platform, PlatformToolError } from '@elevasis/sdk/worker';
107
122
  import type { WorkflowStep } from '@elevasis/sdk';
108
- import { StepType } from '@elevasis/sdk';
109
123
 
110
124
  const sendEmailStep: WorkflowStep = {
111
- type: StepType.LINEAR,
125
+ id: 'sendEmail',
126
+ name: 'Send Email',
127
+ description: 'Sends a transactional email via the platform email tool',
128
+ inputSchema: z.object({ recipientEmail: z.string(), subject: z.string(), body: z.string() }),
129
+ outputSchema: z.object({ sent: z.boolean(), messageId: z.string() }),
112
130
  handler: async (input, context) => {
113
131
  const result = await platform.call({
114
132
  tool: 'email',
@@ -0,0 +1,60 @@
1
+ ---
2
+ title: "@elevasis/ui Export Catalog"
3
+ description: "Auto-generated catalog of all published @elevasis/ui subpath exports, derived from packages/ui/reference-manifest.ts."
4
+ ---
5
+
6
+ {/* @generated by .claude/_gen/sync-sdk-catalog.ts — DO NOT EDIT */}
7
+ {/* Regenerate: pnpm gen:sdk-catalog */}
8
+
9
+ | Import | Title | Group | Description |
10
+ | --- | --- | --- | --- |
11
+ | `@elevasis/ui/provider` | Provider | Provider | Published provider and feature-shell contract for downstream apps. |
12
+ | `@elevasis/ui/provider/ui` | Provider UI | Provider | Published provider UI entry for downstream applications. |
13
+ | `@elevasis/ui/auth` | Auth | Foundation | Published authentication surface for UI integrations. |
14
+ | `@elevasis/ui/auth/context` | Auth Context | Foundation | Published auth context entry for UI integrations. |
15
+ | `@elevasis/ui/hooks` | Hooks | Hooks | Headless hooks surface for executions, sessions, observability, and operations. |
16
+ | `@elevasis/ui/hooks/access` | Hooks Access | Hooks | Published Access Model hook surface for checking route, section, and action access. |
17
+ | `@elevasis/ui/sse` | SSE | Foundation | Published server-sent events helpers and connection utilities. |
18
+ | `@elevasis/ui/initialization` | Initialization | Foundation | Published app initialization provider and bootstrap helpers. |
19
+ | `@elevasis/ui/profile` | Profile | Foundation | Published user profile surface for UI applications. |
20
+ | `@elevasis/ui/organization` | Organization | Foundation | Published organization shell, store, and helper surface. |
21
+ | `@elevasis/ui/features/auth` | Features Auth | Features | Published auth feature surface for downstream shells. |
22
+ | `@elevasis/ui/features/clients` | Features Clients | Features | Published clients feature surface for downstream shells. |
23
+ | `@elevasis/ui/features/crm` | Features CRM | Features | Published CRM feature surface for downstream shells. |
24
+ | `@elevasis/ui/features/dashboard` | Features Dashboard | Features | Published dashboard feature surface for downstream shells. |
25
+ | `@elevasis/ui/features/delivery` | Features Delivery | Features | Published delivery feature surface for downstream shells. |
26
+ | `@elevasis/ui/features/lead-gen` | Features Lead Gen | Features | Published lead generation feature surface for downstream shells. |
27
+ | `@elevasis/ui/features/operations` | Features Operations | Features | Published operations feature surface for downstream shells. |
28
+ | `@elevasis/ui/features/monitoring` | Features Monitoring | Features | Published monitoring feature surface for downstream shells. |
29
+ | `@elevasis/ui/features/monitoring/requests` | Features Monitoring Requests | Features | Published submitted-requests list, detail, and triage surface for downstream shells. |
30
+ | `@elevasis/ui/features/seo` | Features SEO | Features | Published SEO feature surface for downstream shells. |
31
+ | `@elevasis/ui/features/knowledge` | Features Knowledge | Features | Published knowledge feature manifest for downstream shells. |
32
+ | `@elevasis/ui/features/notes` | Features Notes | Features | Published Notes panel view and supporting note components for shared right-panel integrations. |
33
+ | `@elevasis/ui/features/right-panel-host` | Features Right Panel Host | Features | Published right-panel host provider, layer, trigger, keyboard shortcut, store, and view contract. |
34
+ | `@elevasis/ui/knowledge` | Knowledge | Visual | Published knowledge browser primitives: Browser, Tree, NodeList, NodeView, SearchBar, MDX provider, and the generated KNOWLEDGE_BODIES map. |
35
+ | `@elevasis/ui/vite` | Vite | Build | Composite Vite plugin factory (elevasisVite) that bundles all @elevasis/ui Vite plugins into a single array for consumer vite.config.ts files. |
36
+ | `@elevasis/ui/vite-plugin-knowledge` | Vite Plugin Knowledge | Build | Vite plugin that regenerates the build-time knowledge MDX bodies and search index, with HMR support. |
37
+ | `@elevasis/ui/features/settings` | Features Settings | Features | Published settings feature surface for downstream shells. |
38
+ | `@elevasis/ui/types` | Types | Foundation | Published UI types entry for downstream applications. |
39
+ | `@elevasis/ui/components` | Components | Components | Published UI component barrel for downstream applications. |
40
+ | `@elevasis/ui/components/navigation` | Navigation Components | Components | Published navigation component entry for downstream applications. |
41
+ | `@elevasis/ui/components/chat` | Chat Components | Components | Published chat component entry for downstream applications. |
42
+ | `@elevasis/ui/layout` | Layout | Components | Published layout component entry for downstream applications. |
43
+ | `@elevasis/ui/charts` | Charts | Components | Published chart component entry for downstream applications. |
44
+ | `@elevasis/ui/theme` | Theme | Visual | Published theme entry for downstream applications. |
45
+ | `@elevasis/ui/theme/presets` | Theme Presets | Visual | Re-exports the canonical THEME_PRESETS tuple, ThemePresetName union, and ThemePresetEnum Zod enum from @repo/core. Single source of truth for preset names across UI, schemas, and Zustand state. |
46
+ | `@elevasis/ui/api` | API | Foundation | Published API client entry for downstream applications. |
47
+ | `@elevasis/ui/utils` | Utils | Foundation | Published utility entry for downstream applications. |
48
+ | `@elevasis/ui/graph` | Graph | Visual | Published graph helper and visualization entry. |
49
+ | `@elevasis/ui/execution` | Execution | Foundation | Published execution visualization and helper entry. |
50
+ | `@elevasis/ui/router` | Router | Foundation | Published router entry for downstream applications. |
51
+ | `@elevasis/ui/router/context` | Router Context | Foundation | Published router context entry for downstream applications. |
52
+ | `@elevasis/ui/zustand` | Zustand | Foundation | Published Zustand slice entry for downstream applications. |
53
+ | `@elevasis/ui/app` | App | Foundation | Published app factory that composes providers, router, auth, and theme into a mountable React app. |
54
+ | `@elevasis/ui/provider/ElevasisServiceContext` | Elevasis Service Context | Provider | Standalone service context and provider that supplies apiRequest, organizationId, and isReady to child components. |
55
+ | `@elevasis/ui/hooks/delivery` | Hooks Delivery | Hooks | Published delivery hooks for projects, milestones, tasks, and notes. |
56
+ | `@elevasis/ui/hooks/user-notes` | Hooks User Notes | Hooks | Published user-notes query and mutation hooks used by shared Notes surfaces. |
57
+ | `@elevasis/ui/hooks/operations/command-view/utils/transformCommandViewData` | Transform Command View Data | Hooks | Utility that transforms backend CommandViewData arrays into a unified frontend CommandViewGraph with nodes and edges. |
58
+ | `@elevasis/ui/test-utils` | Test Utils | Testing | Published rendering helpers, auth mocks, MSW handlers, and test provider utilities. |
59
+ | `@elevasis/ui/test-utils/setup` | Test Utils Setup | Testing | Vitest setup file for UI consumers using browser mocks and MSW. |
60
+ | `@elevasis/ui/test-utils/setup-integration` | Test Utils Integration Setup | Testing | Vitest setup file for integration tests that avoid MSW and use real network boundaries. |
@@ -0,0 +1,75 @@
1
+ ---
2
+ title: "@elevasis/ui"
3
+ description: The shared React 19 feature-shell and manifest-backed feature modules for Elevasis — Lead Gen, CRM, Projects, Operations, Monitoring, Settings, SEO, and more. Embeds into any host UI via ElevasisProvider.
4
+ ---
5
+
6
+ `@elevasis/ui` is the shared React feature-shell for the Elevasis platform. It provides an `ElevasisProvider` and a set of manifest-backed feature modules that a host UI embeds and composes. The model is: your shell owns the layout and routing; Elevasis features plug in as self-contained modules.
7
+
8
+ ## Install
9
+
10
+ ```bash
11
+ pnpm add @elevasis/ui
12
+ ```
13
+
14
+ Many peer dependencies are optional. Pull only the peers that the features you use require. If you are not using the graph visualization features, you do not need `cytoscape`. If you are not using TanStack Router, you do not need it either.
15
+
16
+ ## Peer Dependencies
17
+
18
+ `@elevasis/ui` has a broad peer dependency set. The required peers are React 19 and Mantine 8.2.7. Most others are optional and only needed when specific feature modules are activated.
19
+
20
+ - **React 19** -- required. The feature modules use React 19 APIs.
21
+ - **Mantine 8.2.7** -- required. The component layer and theming foundation.
22
+ - **TanStack Query** -- required for data-fetching features (most modules).
23
+ - **TanStack Router** -- optional; required if you want the routing-aware feature shells.
24
+ - **Zod 4.1** -- required for schema validation in form-backed features.
25
+ - **Zustand 5** -- required for state management in multi-panel features.
26
+ - **cytoscape** -- optional; required for the graph/knowledge visualization modules only.
27
+
28
+ ## Provider and Feature-Shell Model
29
+
30
+ The entry point is `ElevasisProvider`, imported from `@elevasis/ui/provider`. Wrap your application root with it to give all child feature modules access to the platform context, auth session, and manifest registry.
31
+
32
+ ```tsx
33
+ import { ElevasisProvider } from "@elevasis/ui/provider";
34
+
35
+ export function AppRoot() {
36
+ return (
37
+ <ElevasisProvider config={elevasisConfig}>
38
+ {/* your shell and routes */}
39
+ </ElevasisProvider>
40
+ );
41
+ }
42
+ ```
43
+
44
+ Feature modules are imported from their own subpaths (e.g. `@elevasis/ui/features/lead-gen`, `@elevasis/ui/features/crm`) and rendered inside the provider tree. Each module is manifest-backed: it reads the platform manifest at runtime to know which resources and workflows are available, so no hard-coded resource IDs are needed in the host UI.
45
+
46
+ ## Available Feature Modules
47
+
48
+ The published feature surface includes modules for:
49
+
50
+ - **Lead Gen** -- prospecting pipeline, campaign review, acquisition workflows
51
+ - **CRM** -- client management, deal tracking, contact records
52
+ - **Projects** -- task tracking, project lifecycle, milestones
53
+ - **Operations** -- workflow execution history, operations dashboard
54
+ - **Monitoring** -- execution health, error log, platform diagnostics
55
+ - **Settings** -- organization settings, credential management, member management
56
+ - **SEO** -- content and SEO tooling modules
57
+ - **Notes** -- note capture and structured annotations
58
+ - **Knowledge** -- knowledge base viewer and search UI
59
+ - **Dashboard** -- compatibility components for host-owned dashboard shells
60
+
61
+ Each module has its own `@elevasis/ui/features/<name>` subpath. See the [Export Catalog](exports.mdx) for the full generated list.
62
+
63
+ ## When To Use @elevasis/ui
64
+
65
+ Use `@elevasis/ui` when you are building a host application that needs to embed Elevasis features -- lead-gen pipelines, CRM views, operations dashboards -- without re-implementing them. The provider/feature-shell model means you own the shell, navigation, and layout; Elevasis owns the feature logic and UI internals.
66
+
67
+ You do not need `@elevasis/ui` if you are only writing backend workflows and agents. Tenant automation projects use `@elevasis/sdk` alone.
68
+
69
+ ## Composition With @elevasis/core
70
+
71
+ `@elevasis/ui` uses `@elevasis/core` internally for entity schemas, org-model types, and auth contracts. Installing `@elevasis/ui` will pull in `@elevasis/core` as a dependency. You do not need to install `@elevasis/core` separately unless you need direct access to its subpaths.
72
+
73
+ ## Export Catalog
74
+
75
+ See [Export Catalog](exports.mdx) for a generated table of all published subpath exports derived from the reference manifest.
@@ -1,300 +0,0 @@
1
- ---
2
- title: Integration Adapters
3
- description: Type-safe wrappers for third-party integrations -- Attio, Stripe, Google Sheets, Instantly, SignatureAPI, Resend, Dropbox, Apify, Gmail, and Tomba -- with full autocomplete and compile-time checking
4
- ---
5
-
6
- Integration adapters are factory functions that bind a credential once and return a typed object with all methods available for that service. They wrap `platform.call()` with full TypeScript autocomplete and compile-time method checking.
7
-
8
- All integration adapters are imported from `@elevasis/sdk/worker`. For platform service adapters (scheduler, storage, llm, etc.), see [Platform Adapters](adapters-platform.mdx).
9
-
10
- ```typescript
11
- import {
12
- createAttioAdapter, createStripeAdapter,
13
- createGoogleSheetsAdapter, createInstantlyAdapter,
14
- createSignatureApiAdapter, createResendAdapter, createDropboxAdapter,
15
- createApifyAdapter, createGmailAdapter,
16
- createTombaAdapter,
17
- } from '@elevasis/sdk/worker'
18
- ```
19
-
20
- ---
21
-
22
- ## Quick Reference
23
-
24
- | Import | Methods | Category |
25
- | --------------------------------- | ------- | ------------------- |
26
- | `createAttioAdapter(cred)` | 12 | CRM |
27
- | `createGoogleSheetsAdapter(cred)` | 13 | Spreadsheets |
28
- | `createStripeAdapter(cred)` | 6 | Payments |
29
- | `createInstantlyAdapter(cred)` | 5 | Email Campaigns |
30
- | `createSignatureApiAdapter(cred)` | 4 | eSignature |
31
- | `createTombaAdapter(cred)` | 3 | Email Discovery |
32
- | `createResendAdapter(cred)` | 2 | Transactional Email |
33
- | `createDropboxAdapter(cred)` | 2 | File Storage |
34
- | `createApifyAdapter(cred)` | 1 | Web Scraping |
35
- | `createGmailAdapter(cred)` | 1 | Email (Gmail) |
36
-
37
- Multiple adapters with different credentials work simultaneously:
38
-
39
- ```typescript
40
- const prodAttio = createAttioAdapter('prod-attio')
41
- const testAttio = createAttioAdapter('test-attio')
42
- ```
43
-
44
- ---
45
-
46
- ## Attio CRM Adapter
47
-
48
- Factory pattern -- bind a credential once, use 12 typed methods.
49
-
50
- ```typescript
51
- const attio = createAttioAdapter('my-attio-credential')
52
- ```
53
-
54
- ### Methods
55
-
56
- | Method | Params | Returns |
57
- | ----------------- | ----------------------- | ----------------------- |
58
- | `createRecord` | `CreateRecordParams` | `CreateRecordResult` |
59
- | `updateRecord` | `UpdateRecordParams` | `UpdateRecordResult` |
60
- | `listRecords` | `QueryRecordsParams` | `QueryRecordsResult` |
61
- | `getRecord` | `GetRecordParams` | `GetRecordResult` |
62
- | `deleteRecord` | `DeleteRecordParams` | `DeleteRecordResult` |
63
- | `listObjects` | none | `ListObjectsResult` |
64
- | `listAttributes` | `ListAttributesParams` | `ListAttributesResult` |
65
- | `createAttribute` | `CreateAttributeParams` | `CreateAttributeResult` |
66
- | `updateAttribute` | `UpdateAttributeParams` | `UpdateAttributeResult` |
67
- | `createNote` | `CreateNoteParams` | `CreateNoteResult` |
68
- | `listNotes` | `ListNotesParams` | `ListNotesResult` |
69
- | `deleteNote` | `DeleteNoteParams` | `DeleteNoteResult` |
70
-
71
- ### Examples
72
-
73
- ```typescript
74
- // Create a company record
75
- const company = await attio.createRecord({
76
- object: 'companies',
77
- values: {
78
- name: [{ value: 'Acme Corp' }],
79
- domains: [{ domain: 'acme.com' }],
80
- },
81
- })
82
-
83
- // Query deals with filters
84
- const deals = await attio.listRecords({
85
- object: 'deals',
86
- filter: {
87
- operator: 'and',
88
- filters: [
89
- { field: 'stage', operator: 'equals', value: 'proposal' },
90
- ],
91
- },
92
- sorts: [{ field: 'created_at', direction: 'desc' }],
93
- limit: 20,
94
- })
95
-
96
- // Create a note on a record
97
- await attio.createNote({
98
- parentObject: 'deals',
99
- parentRecordId: 'rec_abc123',
100
- title: 'Discovery call notes',
101
- content: 'Key takeaways from the call...',
102
- })
103
- ```
104
-
105
- ---
106
-
107
- ## Google Sheets Adapter
108
-
109
- Factory pattern -- 13 methods including workflow-friendly helpers (`getRowByValue`, `upsertRow`, `filterRows`).
110
-
111
- ```typescript
112
- const sheets = createGoogleSheetsAdapter('my-google-credential')
113
- ```
114
-
115
- ### Methods
116
-
117
- | Method | Params | Returns |
118
- | ------------------------ | ------------------------------ | ------------------------------ |
119
- | `readSheet` | `ReadSheetParams` | `ReadSheetResult` |
120
- | `writeSheet` | `WriteSheetParams` | `WriteSheetResult` |
121
- | `appendRows` | `AppendRowsParams` | `AppendRowsResult` |
122
- | `clearRange` | `ClearRangeParams` | `ClearRangeResult` |
123
- | `getSpreadsheetMetadata` | `GetSpreadsheetMetadataParams` | `GetSpreadsheetMetadataResult` |
124
- | `batchUpdate` | `BatchUpdateParams` | `BatchUpdateResult` |
125
- | `getHeaders` | `GetHeadersParams` | `GetHeadersResult` |
126
- | `getLastRow` | `GetLastRowParams` | `GetLastRowResult` |
127
- | `getRowByValue` | `GetRowByValueParams` | `GetRowByValueResult` |
128
- | `updateRowByValue` | `UpdateRowByValueParams` | `UpdateRowByValueResult` |
129
- | `upsertRow` | `UpsertRowParams` | `UpsertRowResult` |
130
- | `filterRows` | `FilterRowsParams` | `FilterRowsResult` |
131
- | `deleteRowByValue` | `DeleteRowByValueParams` | `DeleteRowByValueResult` |
132
-
133
- ---
134
-
135
- ## Stripe Adapter
136
-
137
- Factory pattern -- 6 methods for payment links and checkout sessions.
138
-
139
- ```typescript
140
- const stripe = createStripeAdapter('my-stripe-credential')
141
- ```
142
-
143
- ### Methods
144
-
145
- | Method | Params | Returns |
146
- | ----------------------- | ----------------------------- | ----------------------------- |
147
- | `createPaymentLink` | `CreatePaymentLinkParams` | `CreatePaymentLinkResult` |
148
- | `getPaymentLink` | `GetPaymentLinkParams` | `GetPaymentLinkResult` |
149
- | `updatePaymentLink` | `UpdatePaymentLinkParams` | `UpdatePaymentLinkResult` |
150
- | `listPaymentLinks` | `ListPaymentLinksParams` | `ListPaymentLinksResult` |
151
- | `createAutoPaymentLink` | `CreateAutoPaymentLinkParams` | `CreateAutoPaymentLinkResult` |
152
- | `createCheckoutSession` | `CreateCheckoutSessionParams` | `CreateCheckoutSessionResult` |
153
-
154
- ---
155
-
156
- ## Instantly Adapter
157
-
158
- Factory pattern -- 5 methods for email campaign management.
159
-
160
- ```typescript
161
- const instantly = createInstantlyAdapter('my-instantly-credential')
162
- ```
163
-
164
- ### Methods
165
-
166
- | Method | Params | Returns |
167
- | ----------------------- | ----------------------------- | ----------------------------- |
168
- | `sendReply` | `SendReplyParams` | `SendReplyResult` |
169
- | `removeFromSubsequence` | `RemoveFromSubsequenceParams` | `RemoveFromSubsequenceResult` |
170
- | `getEmails` | `GetEmailsParams` | `GetEmailsResult` |
171
- | `updateInterestStatus` | `UpdateInterestStatusParams` | `UpdateInterestStatusResult` |
172
- | `addToCampaign` | `AddToCampaignParams` | `AddToCampaignResult` |
173
-
174
- ---
175
-
176
- ## SignatureAPI Adapter
177
-
178
- Factory pattern -- 4 methods for eSignature envelope operations.
179
-
180
- ```typescript
181
- const signatureApi = createSignatureApiAdapter('my-signatureapi-credential')
182
- ```
183
-
184
- ### Methods
185
-
186
- | Method | Params | Returns |
187
- | ------------------ | ------------------------ | ------------------------ |
188
- | `createEnvelope` | `CreateEnvelopeParams` | `CreateEnvelopeResult` |
189
- | `voidEnvelope` | `VoidEnvelopeParams` | `VoidEnvelopeResult` |
190
- | `downloadDocument` | `DownloadDocumentParams` | `DownloadDocumentResult` |
191
- | `getEnvelope` | `GetEnvelopeParams` | `GetEnvelopeResult` |
192
-
193
- ---
194
-
195
- ## Tomba Adapter
196
-
197
- Factory pattern -- 3 methods for email discovery and verification.
198
-
199
- ```typescript
200
- const tomba = createTombaAdapter('elevasis-tomba')
201
- ```
202
-
203
- **Credential type:** `api-key-secret` (requires both API Key and API Secret)
204
-
205
- ### Methods
206
-
207
- | Method | Params | Returns |
208
- | --------------- | -------------------------- | -------------------------- |
209
- | `emailFinder` | `TombaEmailFinderParams` | `TombaEmailFinderResult` |
210
- | `domainSearch` | `TombaDomainSearchParams` | `TombaDomainSearchResult` |
211
- | `emailVerifier` | `TombaEmailVerifierParams` | `TombaEmailVerifierResult` |
212
-
213
- ### Examples
214
-
215
- ```typescript
216
- // Find email by name + domain
217
- const found = await tomba.emailFinder({
218
- domain: 'stripe.com',
219
- firstName: 'John',
220
- lastName: 'Doe',
221
- })
222
-
223
- // List all emails at a domain (up to 10)
224
- const results = await tomba.domainSearch({ domain: 'stripe.com' })
225
-
226
- // Verify a known email address
227
- const verified = await tomba.emailVerifier({ email: 'john@stripe.com' })
228
- ```
229
-
230
- ---
231
-
232
- ## Resend Adapter
233
-
234
- Factory pattern -- 2 methods for transactional email.
235
-
236
- ```typescript
237
- const resend = createResendAdapter('my-resend-credential')
238
- ```
239
-
240
- ### Methods
241
-
242
- | Method | Params | Returns |
243
- | ----------- | ----------------------- | ----------------------- |
244
- | `sendEmail` | `ResendSendEmailParams` | `ResendSendEmailResult` |
245
- | `getEmail` | `ResendGetEmailParams` | `ResendGetEmailResult` |
246
-
247
- ---
248
-
249
- ## Dropbox Adapter
250
-
251
- Factory pattern -- 2 methods for file operations.
252
-
253
- ```typescript
254
- const dropbox = createDropboxAdapter('my-dropbox-credential')
255
- ```
256
-
257
- ### Methods
258
-
259
- | Method | Params | Returns |
260
- | -------------- | -------------------- | -------------------- |
261
- | `uploadFile` | `UploadFileParams` | `UploadFileResult` |
262
- | `createFolder` | `CreateFolderParams` | `CreateFolderResult` |
263
-
264
- ---
265
-
266
- ## Apify Adapter
267
-
268
- Factory pattern -- 1 method for running web scraping actors.
269
-
270
- ```typescript
271
- const apify = createApifyAdapter('my-apify-credential')
272
- ```
273
-
274
- ### Methods
275
-
276
- | Method | Params | Returns |
277
- | ---------- | ---------------- | ---------------- |
278
- | `runActor` | `RunActorParams` | `RunActorResult` |
279
-
280
- ---
281
-
282
- ## Gmail Adapter
283
-
284
- Factory pattern -- 1 method for sending email via Gmail API.
285
-
286
- ```typescript
287
- const gmail = createGmailAdapter('my-gmail-credential')
288
- ```
289
-
290
- ### Methods
291
-
292
- | Method | Params | Returns |
293
- | ----------- | ---------------------- | ---------------------- |
294
- | `sendEmail` | `GmailSendEmailParams` | `GmailSendEmailResult` |
295
-
296
- ---
297
-
298
- For platform service adapters (scheduler, storage, llm, pdf, approval, acqDb, notifications, execution, email), see [Platform Adapters](adapters-platform.mdx).
299
-
300
- **Last Updated:** 2026-03-05