@elevasis/sdk 1.24.0 → 1.26.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/cli.cjs +875 -834
- package/dist/index.d.ts +4857 -4547
- package/dist/index.js +564 -2338
- package/dist/node/index.d.ts +693 -1356
- package/dist/node/index.js +1 -1
- package/dist/test-utils/index.d.ts +4186 -4139
- package/dist/test-utils/index.js +694 -2769
- package/dist/types/worker/adapters/clickup.d.ts +22 -0
- package/dist/types/worker/adapters/index.d.ts +1 -0
- package/dist/types/worker/index.d.ts +3 -2
- package/dist/types/worker/platform.d.ts +2 -2
- package/dist/worker/index.js +427 -2803
- package/package.json +2 -2
- package/reference/_navigation.md +11 -1
- package/reference/_reference-manifest.json +70 -0
- package/reference/claude-config/rules/organization-model.md +12 -1
- package/reference/claude-config/rules/organization-os.md +12 -1
- package/reference/claude-config/skills/om/SKILL.md +13 -5
- package/reference/claude-config/skills/om/operations/codify-level-a.md +109 -100
- package/reference/claude-config/skills/om/operations/customers.md +10 -6
- package/reference/claude-config/skills/om/operations/features.md +7 -3
- package/reference/claude-config/skills/om/operations/goals.md +10 -6
- package/reference/claude-config/skills/om/operations/identity.md +8 -5
- package/reference/claude-config/skills/om/operations/labels.md +17 -1
- package/reference/claude-config/skills/om/operations/offerings.md +11 -7
- package/reference/claude-config/skills/om/operations/roles.md +11 -7
- package/reference/claude-config/skills/om/operations/techStack.md +10 -2
- package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +32 -0
- package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +43 -0
- package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +40 -0
- package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +61 -0
- package/reference/cli-management.mdx +539 -0
- package/reference/cli.mdx +579 -808
- package/reference/concepts.mdx +134 -146
- package/reference/deployment/api.mdx +296 -297
- package/reference/deployment/command-center.mdx +208 -209
- package/reference/deployment/index.mdx +194 -195
- package/reference/deployment/provided-features.mdx +110 -107
- package/reference/deployment/ui-execution.mdx +249 -250
- package/reference/framework/index.mdx +111 -195
- package/reference/framework/resource-documentation.mdx +90 -0
- package/reference/framework/tutorial-system.mdx +135 -135
- package/reference/getting-started.mdx +141 -142
- package/reference/index.mdx +95 -106
- package/reference/packages/ui/src/auth/README.md +6 -6
- package/reference/platform-tools/adapters-integration.mdx +300 -301
- package/reference/platform-tools/adapters-platform.mdx +552 -553
- package/reference/platform-tools/index.mdx +216 -217
- package/reference/platform-tools/type-safety.mdx +82 -82
- package/reference/resources/index.mdx +348 -349
- package/reference/resources/patterns.mdx +446 -449
- package/reference/resources/types.mdx +115 -116
- package/reference/roadmap.mdx +164 -165
- package/reference/rules/organization-model.md +14 -0
- package/reference/runtime.mdx +172 -173
- package/reference/scaffold/operations/propagation-pipeline.md +1 -1
- package/reference/scaffold/recipes/customize-crm-actions.md +45 -46
- package/reference/scaffold/recipes/extend-crm.md +253 -255
- package/reference/scaffold/recipes/extend-lead-gen.md +130 -77
- package/reference/scaffold/recipes/index.md +43 -44
- package/reference/scaffold/reference/contracts.md +1275 -1432
- package/reference/scaffold/reference/glossary.md +8 -6
- package/reference/scaffold/ui/feature-flags-and-gating.md +59 -46
- package/reference/scaffold/ui/feature-shell.mdx +11 -11
- package/reference/scaffold/ui/recipes.md +24 -24
- package/reference/troubleshooting.mdx +222 -223
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
---
|
|
5
5
|
title: Build and Extend Lead Gen
|
|
6
|
-
description: Map the lead-gen platform primitives available to SDK projects: shared UI pages,
|
|
6
|
+
description: Map the lead-gen platform primitives available to SDK projects: shared UI pages, provider-injected Organization Model config, data hooks, list/member state, artifacts, workflow adapters, contracts, and tenant-owned extension boundaries.
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Build and Extend Lead Gen
|
|
@@ -19,42 +19,48 @@ Good trigger phrases:
|
|
|
19
19
|
- "Read or update lead-gen lists from a workflow."
|
|
20
20
|
- "Change the lead-gen lifecycle for this business."
|
|
21
21
|
|
|
22
|
-
Lead gen is a layered platform surface, not one component
|
|
23
|
-
|
|
24
|
-
- **Organization OS:** prospecting semantics, System access, pipeline labels,
|
|
25
|
-
- **Shared UI:** lead-gen overview, lists, list detail, companies, contacts, sidebars,
|
|
26
|
-
- **Headless hooks:** lists, companies, contacts, artifacts, list members, transitions, and derived actions live under `@elevasis/ui/hooks`.
|
|
27
|
-
- **Acquisition substrate:** `acq_lists`, `acq_companies`, `acq_contacts`, `acq_artifacts`, list members, list companies, telemetry, and stateful transition shapes are exposed through generated contracts.
|
|
28
|
-
- **
|
|
29
|
-
- **
|
|
22
|
+
Lead gen is a layered platform surface, not one component. Shared packages own shapes, readers, runtime mechanics, and reusable UI. Tenant projects own the values that make a list builder specific to a business.
|
|
23
|
+
|
|
24
|
+
- **Organization OS:** prospecting semantics, System access, pipeline labels, quick access, stage catalogs, build templates, workflow actions, resources, and topology live in the tenant organization model.
|
|
25
|
+
- **Shared UI:** lead-gen overview, lists, list detail, companies, contacts, sidebars, drawer components, `useLeadGenConfig`, and list-builder state derivation live in `@elevasis/ui`.
|
|
26
|
+
- **Headless hooks:** lists, companies, contacts, artifacts, list members, transitions, and derived actions live under `@elevasis/ui/hooks`.
|
|
27
|
+
- **Acquisition substrate:** `acq_lists`, `acq_companies`, `acq_contacts`, `acq_artifacts`, list members, list companies, telemetry, and stateful transition shapes are exposed through generated contracts.
|
|
28
|
+
- **Core readers:** `getLeadGenStageCatalog`, `getAllBuildTemplates`, `getProspectingBuildTemplateOptions`, and `createBuildPlanSnapshotFromTemplateId` from `@elevasis/core` read caller-supplied Organization Model/template values. They do not ship tenant catalogs or default templates.
|
|
29
|
+
- **Workflow adapters:** `acqDb`, `list`, and `listBuilderWorkflow` from `@elevasis/sdk/worker` let workflows read and mutate lead-gen data through platform tools.
|
|
30
|
+
- **Contracts:** generated contract docs expose the current lead-gen shapes in `node_modules/@elevasis/sdk/reference/scaffold/reference/contracts.md`.
|
|
30
31
|
|
|
31
32
|
## Decision Table
|
|
32
33
|
|
|
33
34
|
| User wants | Start here | Notes |
|
|
34
35
|
| ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
35
|
-
| Change lead-gen System availability, labels, quick access,
|
|
36
|
-
| Add lead-gen sidebar nav or a lead-gen route | `@elevasis/ui/features/lead-gen` and `node_modules/@elevasis/sdk/reference/scaffold/ui/customization.md` | Prefer manifest/sidebar composition. Do not fork shared source first. |
|
|
37
|
-
| Wrap a shared lead-gen page with project chrome | `LeadGenOverviewPage`, `LeadGenListsPage`, `LeadGenListDetailPage`, `ListBuilderPage`, `LeadGenCompaniesPage`, `LeadGenContactsPage` | Keep route files thin and put project-specific behavior in local feature modules. |
|
|
38
|
-
| Build a custom campaign/list workspace | `ListBuilderPage`, `useLists`, `useList`, `useListProgress`, `useListExecutions`, `useWorkflowExecution`, `useExecutionSSE` from `@elevasis/ui` | Use the shared builder when possible; otherwise compose hooks for platform data and workflow execution. |
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
36
|
+
| Change lead-gen System availability, labels, quick access, stage catalogs, build templates, workflow actions, resources, or topology | `core/config/organization-model.ts` | Treat this as Organization OS work. Tenant projects own these values. Use the project's configure ceremony if available. |
|
|
37
|
+
| Add lead-gen sidebar nav or a lead-gen route | `@elevasis/ui/features/lead-gen` and `node_modules/@elevasis/sdk/reference/scaffold/ui/customization.md` | Prefer manifest/sidebar composition. Do not fork shared source first. |
|
|
38
|
+
| Wrap a shared lead-gen page with project chrome | `LeadGenOverviewPage`, `LeadGenListsPage`, `LeadGenListDetailPage`, `ListBuilderPage`, `LeadGenCompaniesPage`, `LeadGenContactsPage` | Keep route files thin and put project-specific behavior in local feature modules. |
|
|
39
|
+
| Build a custom campaign/list workspace | `ListBuilderPage`, `useLists`, `useList`, `useListProgress`, `useListExecutions`, `useWorkflowExecution`, `useExecutionSSE` from `@elevasis/ui` | Use the shared builder when possible; otherwise compose hooks for platform data and workflow execution. |
|
|
40
|
+
| Add or change list-builder workflow buttons/forms | `ui/src/config/listActions.ts` plus `ElevasisUIProvider listActions={listActions}` / `createElevasisApp({ listActions })` | The shared UI owns the registry contract. The project owns workflow ids, action keys, Zod schemas, layouts, and default inputs. |
|
|
41
|
+
| Render artifacts or list-member detail | `LeadGenListDetailPage`, `useArtifacts`, `useCreateArtifact`, `useListMember` | Artifacts are a substrate primitive. Keep vertical-specific rendering local until there are repeated use cases. |
|
|
42
|
+
| Read or mutate lead-gen data inside a workflow | `acqDb` or `list` from `@elevasis/sdk/worker` | `organizationId` is injected server-side by the platform dispatcher. Do not pass it from workflow code. |
|
|
43
|
+
| Add a new persisted lead-gen field, artifact kind, or transition API | Platform/API migration work, not just scaffold work | Update DB, core schemas/types, API service/handlers, hooks, docs, and scaffold contracts together. |
|
|
42
44
|
|
|
43
45
|
## Published Lead-Gen Surfaces
|
|
44
46
|
|
|
45
47
|
| Surface | Import from | Use for |
|
|
46
48
|
| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
47
49
|
| `leadGenManifest`, `LEAD_GEN_ITEMS`, `LeadGenSidebar`, `LeadGenSidebarTop`, `LeadGenSidebarMiddle` | `@elevasis/ui/features/lead-gen` | Feature registration and sidebar composition |
|
|
48
|
-
| `LeadGenOverviewPage`, `LeadGenListsPage`, `LeadGenListDetailPage`, `ListBuilderPage`, `LeadGenCompaniesPage`, `LeadGenContactsPage` | `@elevasis/ui/features/lead-gen` | Shared lead-gen pages you can route to or wrap |
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
50
|
+
| `LeadGenOverviewPage`, `LeadGenListsPage`, `LeadGenListDetailPage`, `ListBuilderPage`, `LeadGenCompaniesPage`, `LeadGenContactsPage` | `@elevasis/ui/features/lead-gen` | Shared lead-gen pages you can route to or wrap |
|
|
51
|
+
| `useLeadGenConfig`, `LeadGenBuildConfig`, build-state helpers | `@elevasis/ui/features/lead-gen` | Provider-backed derivation of stage catalog, build templates, default build steps, default template id, and export workflow id |
|
|
52
|
+
| `ListActionsProvider`, `useListActions`, `ListBuilderWorkflow`, `ListBuilderRegistry`, `LeadGenActionKey` | `@elevasis/ui/features/lead-gen` | List Builder workflow registry, slot-based field contracts, and project-owned action wiring |
|
|
53
|
+
| `LeadGenRouteShell` | `@elevasis/ui/features/lead-gen` | Route shell helper (contact/company detail surfaces are now `ContactDetailPage` / `CompanyDetailPage` from `@elevasis/ui/features/crm`) |
|
|
54
|
+
| `useLists`, `useList`, `useListsTelemetry`, `useListProgress`, `useListExecutions`, `useCreateList`, `useUpdateList`, `useUpdateListConfig`, `useDeleteList` | `@elevasis/ui/hooks` | Headless list and telemetry data access |
|
|
52
55
|
| `useWorkflowExecution`, `useExecutionSSE`, `useAddCompaniesToList`, `useRemoveCompaniesFromList`, `useAddContactsToList` | `@elevasis/ui/hooks` | List Builder workflow triggering, live execution tailing, and list membership mutations |
|
|
53
56
|
| `useCompanies`, `useCompany`, `useContacts`, `useContact` | `@elevasis/ui/hooks` | Acquisition company/contact data access |
|
|
54
57
|
| `useArtifacts`, `useCreateArtifact`, `useListMembers`, `useListMember` | `@elevasis/ui/hooks` | Lead-gen substrate data access |
|
|
55
58
|
| `useTransitionList`, `useTransitionListMember`, `useTransitionListCompany`, `useDeriveActions` | `@elevasis/ui/hooks` | Stateful transition mutations and contextual action derivation |
|
|
56
|
-
| `ElevasisUIProvider`, `ElevasisCoreProvider`, `useElevasisServices` | `@elevasis/ui/provider` | Provider setup, API access, organization context, and `listActions` registry injection |
|
|
57
|
-
| `
|
|
59
|
+
| `ElevasisUIProvider`, `ElevasisCoreProvider`, `useElevasisServices` | `@elevasis/ui/provider` | Provider setup, API access, organization context, and `listActions` registry injection |
|
|
60
|
+
| `ElevasisSystemsProvider`, `ElevasisAuthenticatedShell` | `@elevasis/ui/provider`, `@elevasis/ui/app` | Organization Model injection for system-aware surfaces such as lead-gen config, sidebar projection, and Organization OS views |
|
|
61
|
+
| `getLeadGenStageCatalog`, `getAllBuildTemplates`, `getProspectingBuildTemplateOptions`, `createBuildPlanSnapshotFromTemplateId` | `@elevasis/core` | Generic Organization Model and template readers. Supply tenant templates/model values from the project. |
|
|
62
|
+
| `listBuilderWorkflow` | `@elevasis/sdk/worker` | Generic list-builder workflow runtime for tenant-owned step handlers |
|
|
63
|
+
| `acqDb`, `list` | `@elevasis/sdk/worker` | Workflow-side acquisition and list-scoped platform adapters |
|
|
58
64
|
|
|
59
65
|
Read the generated contracts before changing typed boundaries:
|
|
60
66
|
|
|
@@ -137,7 +143,7 @@ function ListDetailRoute() {
|
|
|
137
143
|
|
|
138
144
|
Use the same wrapping pattern for `LeadGenOverviewPage`, `LeadGenCompaniesPage`, and `LeadGenContactsPage`.
|
|
139
145
|
|
|
140
|
-
For the real-time List Builder workspace, add a thin route that passes the route param into `ListBuilderPage`:
|
|
146
|
+
For the real-time List Builder workspace, add a thin route that passes the route param into `ListBuilderPage`:
|
|
141
147
|
|
|
142
148
|
```tsx
|
|
143
149
|
import { createFileRoute } from '@tanstack/react-router'
|
|
@@ -153,26 +159,65 @@ function ListBuilderRoute() {
|
|
|
153
159
|
}
|
|
154
160
|
```
|
|
155
161
|
|
|
156
|
-
Register project workflow actions at the provider boundary. The shared UI owns the contract; each project owns workflow ids, action keys, default inputs, and field components.
|
|
162
|
+
Register project workflow actions at the provider boundary. The shared UI owns the contract; each project owns workflow ids, action keys, default inputs, and field components.
|
|
163
|
+
|
|
164
|
+
The shared pages call `useLeadGenConfig()` internally. That hook reads the provider-injected `organizationModel` and derives:
|
|
165
|
+
|
|
166
|
+
- `stageCatalog` from `getLeadGenStageCatalog(organizationModel)`
|
|
167
|
+
- `buildTemplates` and `defaultBuildSteps` from `getAllBuildTemplates(organizationModel)`
|
|
168
|
+
- `defaultBuildTemplateId` from the `sales.lead-gen` system config or first available template
|
|
169
|
+
- `exportWorkflowId` from the lead-gen workflow resource whose action matches export semantics
|
|
170
|
+
|
|
171
|
+
If the provider has no Organization Model, shared UI renders with empty config instead of falling back to Elevasis-owned defaults. A tenant that wants list creation and the build runner to be useful must provide lead-gen catalogs/templates/actions/resources/topology in `core/config/organization-model.ts`.
|
|
172
|
+
|
|
173
|
+
In external projects, pass the local list-action registry through the app factory and the tenant Organization Model through the authenticated shell:
|
|
174
|
+
|
|
175
|
+
```tsx
|
|
176
|
+
// ui/src/main.tsx
|
|
177
|
+
import { createElevasisApp } from '@elevasis/ui/app'
|
|
178
|
+
import { listActions } from '@/config/listActions'
|
|
179
|
+
|
|
180
|
+
const App = createElevasisApp({
|
|
181
|
+
listActions,
|
|
182
|
+
// other app config...
|
|
183
|
+
})
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
```tsx
|
|
187
|
+
// ui/src/routes/__root.tsx
|
|
188
|
+
import { ElevasisAuthenticatedShell } from '@elevasis/ui/app'
|
|
189
|
+
import { canonicalOrganizationModel } from '@core/config/organization-model'
|
|
190
|
+
|
|
191
|
+
export function RootLayout() {
|
|
192
|
+
return (
|
|
193
|
+
<ElevasisAuthenticatedShell
|
|
194
|
+
systems={SYSTEM_MANIFESTS}
|
|
195
|
+
organizationModel={canonicalOrganizationModel}
|
|
196
|
+
// other shell config...
|
|
197
|
+
/>
|
|
198
|
+
)
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Data sourcing mode is list-wide. Read `list.pipelineConfig.dataMode` or the workflow-side `list.getConfig()` result when a workflow must choose mock versus live sourcing. Do not add per-action `mock` / `live` controls for Apollo, crawl, enrichment, or scoring steps. Export mode is separate: `preview` versus `export` controls whether a destination write happens.
|
|
157
203
|
|
|
158
|
-
Each registry entry declares a Zod `schema` and a `layout` of declarative field hints (`StepConfigLayout<Input>`). The shared `StepConfigForm` renders the layout, validates against the schema, and wires `value`/`onChange` for you — no per-action React components. The List Builder right column renders the form as `Configuration | Advanced | Runs` tabs with a sticky action footer
|
|
204
|
+
Each registry entry declares a Zod `schema` and a `layout` of declarative field hints (`StepConfigLayout<Input>`). The shared `StepConfigForm` renders the layout, validates against the schema, and wires `value`/`onChange` for you — no per-action React components. The List Builder right column renders the form as `Configuration | Advanced | Runs` tabs with a sticky action footer. Omit the `advanced:` section when a step has none.
|
|
159
205
|
|
|
160
206
|
Available field component variants: `textinput`, `textarea`, `numberinput`, `switch`, `segmented`, `select`, `multiselect`, `tags`, `json`. Field hints support `label`, `description`, `placeholder`, `min`/`max`/`step` (numbers), `options` (selects), and `when: (values) => boolean` for conditional visibility.
|
|
161
207
|
|
|
162
208
|
```tsx
|
|
163
|
-
import * as z from 'zod'
|
|
164
|
-
import { type ListBuilderRegistry } from '@elevasis/ui/features/lead-gen'
|
|
165
|
-
import type { StepConfigLayout } from '@elevasis/ui/components/forms'
|
|
166
|
-
import { ElevasisUIProvider } from '@elevasis/ui/provider'
|
|
167
|
-
import { resourceDescriptors } from '@core/config/organization-model'
|
|
168
|
-
|
|
169
|
-
const companyCleanupInputSchema = z.object({
|
|
170
|
-
listId: z.string().uuid(),
|
|
171
|
-
targetDescription: z.string(),
|
|
172
|
-
dryRun: z.boolean().default(true),
|
|
173
|
-
batchSize: z.number().int().min(1).default(20)
|
|
174
|
-
|
|
175
|
-
})
|
|
209
|
+
import * as z from 'zod'
|
|
210
|
+
import { leadGenManifest, type ListBuilderRegistry } from '@elevasis/ui/features/lead-gen'
|
|
211
|
+
import type { StepConfigLayout } from '@elevasis/ui/components/forms'
|
|
212
|
+
import { ElevasisSystemsProvider, ElevasisUIProvider } from '@elevasis/ui/provider'
|
|
213
|
+
import { organizationModel, resourceDescriptors } from '@core/config/organization-model'
|
|
214
|
+
|
|
215
|
+
const companyCleanupInputSchema = z.object({
|
|
216
|
+
listId: z.string().uuid(),
|
|
217
|
+
targetDescription: z.string(),
|
|
218
|
+
dryRun: z.boolean().default(true),
|
|
219
|
+
batchSize: z.number().int().min(1).default(20)
|
|
220
|
+
})
|
|
176
221
|
|
|
177
222
|
type CompanyCleanupInput = z.infer<typeof companyCleanupInputSchema>
|
|
178
223
|
const companyCleanupResource = resourceDescriptors.companyCleanup
|
|
@@ -192,24 +237,13 @@ const companyCleanupLayout: StepConfigLayout<CompanyCleanupInput> = {
|
|
|
192
237
|
]
|
|
193
238
|
}
|
|
194
239
|
],
|
|
195
|
-
advanced: {
|
|
196
|
-
id: 'advanced',
|
|
197
|
-
fields: [
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
path: 'mode',
|
|
201
|
-
component: 'segmented',
|
|
202
|
-
options: [
|
|
203
|
-
{ value: 'mock', label: 'Mock' },
|
|
204
|
-
{ value: 'live', label: 'Live' }
|
|
205
|
-
],
|
|
206
|
-
when: () => import.meta.env.DEV
|
|
207
|
-
}
|
|
208
|
-
]
|
|
209
|
-
}
|
|
210
|
-
}
|
|
240
|
+
advanced: {
|
|
241
|
+
id: 'advanced',
|
|
242
|
+
fields: [{ path: 'batchSize', component: 'numberinput', label: 'Batch size', min: 1 }]
|
|
243
|
+
}
|
|
244
|
+
}
|
|
211
245
|
|
|
212
|
-
const listActions: ListBuilderRegistry = [
|
|
246
|
+
const listActions: ListBuilderRegistry = [
|
|
213
247
|
{
|
|
214
248
|
resourceId: companyCleanupResource.id,
|
|
215
249
|
workflowId: companyCleanupResource.id,
|
|
@@ -226,24 +260,33 @@ const listActions: ListBuilderRegistry = [
|
|
|
226
260
|
dryRun: true,
|
|
227
261
|
batchSize: 20
|
|
228
262
|
})
|
|
229
|
-
}
|
|
230
|
-
]
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
263
|
+
}
|
|
264
|
+
]
|
|
265
|
+
|
|
266
|
+
const SYSTEM_MANIFESTS = [
|
|
267
|
+
leadGenManifest,
|
|
268
|
+
// Add any other shared/local system manifests here.
|
|
269
|
+
]
|
|
270
|
+
|
|
271
|
+
export function App() {
|
|
272
|
+
return (
|
|
273
|
+
<ElevasisUIProvider listActions={listActions} {...providerProps}>
|
|
274
|
+
<ElevasisSystemsProvider systems={SYSTEM_MANIFESTS} organizationModel={organizationModel}>
|
|
275
|
+
{children}
|
|
276
|
+
</ElevasisSystemsProvider>
|
|
277
|
+
</ElevasisUIProvider>
|
|
278
|
+
)
|
|
279
|
+
}
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Author the `schema` in a browser-safe sibling file (no Node-only imports) so it can be reused by the workflow runtime AND the UI form. See `apollo-import-schema.ts` in the platform for the canonical split pattern.
|
|
283
|
+
|
|
284
|
+
Keep the registry in the external project, usually `ui/src/config/listActions.ts`. Do not add client workflow ids, client action keys, or client default inputs to `@elevasis/ui`.
|
|
242
285
|
|
|
243
286
|
Per-section split rule (operator-grade vs power-user):
|
|
244
287
|
|
|
245
|
-
- **Configuration:** target/limit, dry-run toggle, mode (preview/
|
|
246
|
-
- **Advanced:** concurrency, batch size, timeouts, credential names, workflow chaining
|
|
288
|
+
- **Configuration:** target/limit, dry-run toggle, export mode (`preview` / `export`) when the action writes to an external destination, and any field an operator changes between runs.
|
|
289
|
+
- **Advanced:** concurrency, batch size, timeouts, credential names, and workflow chaining. Do not put mock/live controls here; data sourcing mode is list-wide. Omit the `advanced:` key entirely when a step has none.
|
|
247
290
|
- **`defaultInput`:** seeds the form before the user touches anything; must include `listId: list.id`.
|
|
248
291
|
|
|
249
292
|
## 3. Build a Custom Campaign Workspace
|
|
@@ -367,13 +410,23 @@ Keep these boundaries straight:
|
|
|
367
410
|
- `organizationId` is injected by the platform dispatcher. Do not pass it from workflow code.
|
|
368
411
|
- Persisted API shapes are owned by core/API contracts, not route-local TypeScript.
|
|
369
412
|
|
|
370
|
-
## 5. Customize Lead-Gen Semantics
|
|
371
|
-
|
|
372
|
-
The lead-gen shell module key is `lead-gen`, the Organization OS System id is `sales.lead-gen`, and the action currently used by the shared manifest is `leadgen.lists.manage`.
|
|
373
|
-
|
|
374
|
-
For feature toggles, labels, lifecycle semantics,
|
|
375
|
-
|
|
376
|
-
`core/config/organization-model.ts`
|
|
413
|
+
## 5. Customize Lead-Gen Semantics
|
|
414
|
+
|
|
415
|
+
The lead-gen shell module key is `lead-gen`, the Organization OS System id is `sales.lead-gen`, and the action currently used by the shared manifest is `leadgen.lists.manage`.
|
|
416
|
+
|
|
417
|
+
For feature toggles, labels, lifecycle semantics, stage catalogs, build templates, actions, resource descriptors, or runtime topology, update the project model:
|
|
418
|
+
|
|
419
|
+
`core/config/organization-model.ts`
|
|
420
|
+
|
|
421
|
+
Tenant-owned list-builder values belong in the main Organization Model:
|
|
422
|
+
|
|
423
|
+
- stage vocabulary in lead-gen ontology catalogs
|
|
424
|
+
- build templates and template-step catalogs in lead-gen ontology catalogs
|
|
425
|
+
- action ids in the tenant action layer
|
|
426
|
+
- workflow resources in the tenant resources map with ontology bindings and `primaryAction`
|
|
427
|
+
- topology relationships in the tenant topology map
|
|
428
|
+
|
|
429
|
+
Use `core/config/extensions/*` for entity schema variants, not for list-builder stage catalogs or workflow bindings.
|
|
377
430
|
|
|
378
431
|
The platform-side lead-gen stateful vocabulary is defined for:
|
|
379
432
|
|
|
@@ -1,51 +1,50 @@
|
|
|
1
1
|
<!-- @generated by packages/sdk/scripts/copy-reference-docs.mjs -- DO NOT EDIT -->
|
|
2
2
|
<!-- Regenerate: pnpm scaffold:sync -->
|
|
3
3
|
|
|
4
|
-
---
|
|
5
|
-
title: Pathway Recipes
|
|
6
|
-
description: Terse end-to-end walkthroughs for the three most common authoring tasks -- adding a system, adding a resource, and gating access.
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Pathway Recipes
|
|
10
|
-
|
|
11
|
-
Three sequential walkthroughs for common authoring tasks. Each recipe links into the reference docs rather than duplicating them.
|
|
12
|
-
|
|
13
|
-
Before starting, read [glossary.md](../reference/glossary.md) to disambiguate overloaded terms (System, Resource, systemId, Settings asymmetry, Topology).
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Recipes
|
|
18
|
-
|
|
4
|
+
---
|
|
5
|
+
title: Pathway Recipes
|
|
6
|
+
description: Terse end-to-end walkthroughs for the three most common authoring tasks -- adding a system, adding a resource, and gating access.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Pathway Recipes
|
|
10
|
+
|
|
11
|
+
Three sequential walkthroughs for common authoring tasks. Each recipe links into the reference docs rather than duplicating them.
|
|
12
|
+
|
|
13
|
+
Before starting, read [glossary.md](../reference/glossary.md) to disambiguate overloaded terms (System, Resource, systemId, Settings asymmetry, Topology).
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Recipes
|
|
18
|
+
|
|
19
19
|
**[Add an OM-Backed System](add-a-feature.md)**
|
|
20
20
|
You want a new system with cohesive Organization Model semantics, executable resources, and optional UI. Covers Systems, System-owned ontology and config, Resource descriptors with `title`, `description`, `resource.ontology.actions`, `primaryAction`, `codeRefs`, OM topology, runtime assembly, manifests, routes, guards, tests, and compatibility notes for old `System.content` consumers.
|
|
21
|
-
|
|
22
|
-
**[Add a Resource](add-a-resource.md)**
|
|
23
|
-
You want a new workflow or agent deployed to the platform. Covers OM Resource descriptor authoring, descriptor-backed `WorkflowDefinition` binding, `DeploymentSpec` assembly, relationship declarations, and CLI verification.
|
|
24
|
-
|
|
25
|
-
**[Gate by System or Admin](gate-by-feature-or-admin.md)**
|
|
26
|
-
You want to restrict a route, nav item, or UI element by system flag or admin role. Covers the decision table, `SystemGuard`, `AdminGuard`, nav-entry visibility fields, per-member system overrides, and the settings-asymmetry gotcha.
|
|
27
|
-
|
|
28
|
-
**[Build and Extend CRM](extend-crm.md)**
|
|
29
|
-
You want to build on the shared CRM without forking it: add CRM routes, compose sidebars/pages, use deal/company/contact hooks, mutate CRM data from workflows, or understand which contracts and adapters form the extension surface.
|
|
30
|
-
|
|
31
|
-
**[Build and Extend Lead Gen](extend-lead-gen.md)**
|
|
32
|
-
You want to build on the shared lead-gen system without forking it: add lead-gen routes, compose sidebars/pages, use list/company/contact/artifact hooks, mutate list data from workflows, or understand which contracts and adapters form the extension surface.
|
|
33
|
-
|
|
34
|
-
**[Customize CRM Actions](customize-crm-actions.md)**
|
|
35
|
-
You want to add, hide, or replace CRM deal action buttons, configure the shared `crmActions` provider path, or call a project-owned workflow from custom UI when server-side action dispatch constraints require it. Covers `ActionDef`, `
|
|
36
|
-
|
|
37
|
-
**[Customize Knowledge Browser](customize-knowledge-browser.md)**
|
|
38
|
-
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.
|
|
39
|
-
|
|
21
|
+
|
|
22
|
+
**[Add a Resource](add-a-resource.md)**
|
|
23
|
+
You want a new workflow or agent deployed to the platform. Covers OM Resource descriptor authoring, descriptor-backed `WorkflowDefinition` binding, `DeploymentSpec` assembly, relationship declarations, and CLI verification.
|
|
24
|
+
|
|
25
|
+
**[Gate by System or Admin](gate-by-feature-or-admin.md)**
|
|
26
|
+
You want to restrict a route, nav item, or UI element by system flag or admin role. Covers the decision table, `SystemGuard`, `AdminGuard`, nav-entry visibility fields, per-member system overrides, and the settings-asymmetry gotcha.
|
|
27
|
+
|
|
28
|
+
**[Build and Extend CRM](extend-crm.md)**
|
|
29
|
+
You want to build on the shared CRM without forking it: add CRM routes, compose sidebars/pages, use deal/company/contact hooks, mutate CRM data from workflows, or understand which contracts and adapters form the extension surface.
|
|
30
|
+
|
|
31
|
+
**[Build and Extend Lead Gen](extend-lead-gen.md)**
|
|
32
|
+
You want to build on the shared lead-gen system without forking it: add lead-gen routes, compose sidebars/pages, use list/company/contact/artifact hooks, mutate list data from workflows, or understand which contracts and adapters form the extension surface.
|
|
33
|
+
|
|
34
|
+
**[Customize CRM Actions](customize-crm-actions.md)**
|
|
35
|
+
You want to add, hide, or replace CRM deal action buttons, configure the shared `crmActions` provider path, or call a project-owned workflow from custom UI when server-side action dispatch constraints require it. Covers `ActionDef`, the caller-supplied `crmActions` catalog, provider wiring, and the current v1 boundary for custom action dispatch.
|
|
36
|
+
|
|
37
|
+
**[Customize Knowledge Browser](customize-knowledge-browser.md)**
|
|
38
|
+
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.
|
|
39
|
+
|
|
40
40
|
**[Query the Knowledge Graph](query-the-knowledge-graph.md)**
|
|
41
41
|
You want to browse, inspect, or traverse the OrganizationModel knowledge graph from the command line. Covers the three verbs (`knowledge:ls`, `knowledge:cat`, `knowledge:graph`), all six mount axes (`/by-system/`, `/by-ontology/`, `/by-kind/`, `/by-owner/`, `/graph/.../governs/`, `/graph/.../governed-by/`), dual-CLI invocation patterns (`elevasis-sdk` for external projects, `elevasis` for the monorepo), JSON output shapes, and the Windows/MSYS PowerShell gotcha.
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Reference docs these recipes link into
|
|
46
|
-
|
|
47
|
-
- [glossary.md](../reference/glossary.md) -- term disambiguation for System, Resource, systemId, Topology, Settings asymmetry
|
|
48
|
-
- [contracts.md](../reference/contracts.md) -- TypeScript shapes: `SystemModule`, `OrganizationModel`, CRM deal types, lead-gen list/member/artifact types, `CrmToolMap`, `LeadToolMap`, `ListToolMap`, `ActionDef`
|
|
49
|
-
- [feature-flags-and-gating.md](../ui/feature-flags-and-gating.md) -- full three-concept gating model
|
|
50
|
-
- [workflow-recipes.md](../operations/workflow-recipes.md) -- workflow anatomy, adapters, trigger patterns
|
|
51
|
-
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Reference docs these recipes link into
|
|
46
|
+
|
|
47
|
+
- [glossary.md](../reference/glossary.md) -- term disambiguation for System, Resource, systemId, Topology, Settings asymmetry
|
|
48
|
+
- [contracts.md](../reference/contracts.md) -- TypeScript shapes: `SystemModule`, `OrganizationModel`, CRM deal types, lead-gen list/member/artifact types, `CrmToolMap`, `LeadToolMap`, `ListToolMap`, `ActionDef`
|
|
49
|
+
- [feature-flags-and-gating.md](../ui/feature-flags-and-gating.md) -- full three-concept gating model
|
|
50
|
+
- [workflow-recipes.md](../operations/workflow-recipes.md) -- workflow anatomy, adapters, trigger patterns
|