@elevasis/sdk 1.17.0 → 1.19.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 +587 -175
- package/dist/index.d.ts +555 -83
- package/dist/index.js +1219 -66
- package/dist/node/index.d.ts +3 -0
- package/dist/node/index.js +34 -1
- package/dist/test-utils/index.d.ts +128 -81
- package/dist/test-utils/index.js +2007 -668
- package/dist/types/worker/index.d.ts +3 -2
- package/dist/worker/index.js +1507 -2
- package/package.json +2 -2
- package/reference/claude-config/registries/graph-skills.json +4 -0
- package/reference/claude-config/rules/package-taxonomy.md +33 -0
- package/reference/claude-config/rules/vibe.md +23 -0
- package/reference/claude-config/skills/knowledge/SKILL.md +46 -13
- package/reference/claude-config/skills/project/SKILL.md +21 -0
- package/reference/claude-config/skills/tutorial/SKILL.md +13 -3
- package/reference/claude-config/skills/tutorial/technical.md +6 -8
- package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +42 -0
- package/reference/claude-config/sync-notes/2026-05-06-crm-spine.md +60 -0
- package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +37 -0
- package/reference/scaffold/reference/contracts.md +89 -69
- package/reference/scaffold/reference/feature-registry.md +1 -1
- package/reference/spine/spine-primer.md +99 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elevasis/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.19.0",
|
|
4
4
|
"description": "SDK for building Elevasis organization resources",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"tsup": "^8.0.0",
|
|
58
58
|
"typescript": "5.9.2",
|
|
59
59
|
"zod": "^4.1.0",
|
|
60
|
-
"@repo/core": "0.
|
|
60
|
+
"@repo/core": "0.20.0",
|
|
61
61
|
"@repo/eslint-config": "0.0.0",
|
|
62
62
|
"@repo/typescript-config": "0.0.0"
|
|
63
63
|
},
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Package Taxonomy (Consumer View)
|
|
2
|
+
|
|
3
|
+
External projects consume the **published `@elevasis/*` surface only**. The Elevasis monorepo also has workspace-internal `@repo/elevasis-*` packages — those are NOT installable here and should never appear in your imports or `package.json`.
|
|
4
|
+
|
|
5
|
+
## What You Can Import
|
|
6
|
+
|
|
7
|
+
| Package | Subpaths | Where it lives in `node_modules` |
|
|
8
|
+
| ---------------- | -------------------------------------------- | -------------------------------- |
|
|
9
|
+
| `@elevasis/sdk` | default, `/worker`, `/node`, `/test-utils` | `node_modules/@elevasis/sdk/` |
|
|
10
|
+
| `@elevasis/ui` | default, `/auth`, `/initialization`, etc. | `node_modules/@elevasis/ui/` |
|
|
11
|
+
| `@elevasis/core` | `/organization-model`, `/entities`, `/utils` | `node_modules/@elevasis/core/` |
|
|
12
|
+
|
|
13
|
+
## What You Will See in Monorepo Docs (and should NOT import)
|
|
14
|
+
|
|
15
|
+
Monorepo source and docs reference `@repo/elevasis-core` and `@repo/elevasis-operations`. These are workspace-internal packages used by Elevasis as a tenant of its own platform. They are `private: true` and never published. If you see them mentioned:
|
|
16
|
+
|
|
17
|
+
- Do NOT add them to this project's `package.json`
|
|
18
|
+
- Do NOT try to import from them — they are not in your `node_modules`
|
|
19
|
+
- They are not a substitute for `@elevasis/core` even though the name overlaps
|
|
20
|
+
|
|
21
|
+
## Confused About Where Something Lives?
|
|
22
|
+
|
|
23
|
+
Check the import path:
|
|
24
|
+
|
|
25
|
+
- `@elevasis/...` → published, consumable here
|
|
26
|
+
- `@repo/...` → monorepo-internal, not consumable
|
|
27
|
+
|
|
28
|
+
This project's own org-model and workflows live in `core/config/organization-model.ts` and `operations/src/**` — those are project-owned, not part of either family above.
|
|
29
|
+
|
|
30
|
+
## References
|
|
31
|
+
|
|
32
|
+
- `node_modules/@elevasis/sdk/reference/scaffold/index.mdx` — full SDK scaffold reference
|
|
33
|
+
- Monorepo source rule: `.claude/rules/package-taxonomy.md` in the elevasis-monorepo (when working across both)
|
|
@@ -66,6 +66,17 @@ The user wants the agent to explain something -- a scope, an entity, a concept w
|
|
|
66
66
|
|
|
67
67
|
**Agent action:** read the relevant org-model label, entity, or scope. Narrate in plain language using label fields from the model -- never invent vocabulary not present in the model. Phase-1 scope covers Model, Features, and Foundations layers only.
|
|
68
68
|
|
|
69
|
+
**Stage/state/catalog sub-routing:** when the noun being described is a stage, state, status
|
|
70
|
+
bucket, catalog entry, progress step, pipeline column, or similarly closed business vocabulary,
|
|
71
|
+
also show the cross-system impact before the normal description:
|
|
72
|
+
|
|
73
|
+
1. Read `node_modules/@elevasis/sdk/reference/spine/spine-primer.md` for the layering pattern.
|
|
74
|
+
2. Read the relevant domain in `foundations/config/organization-model.ts`.
|
|
75
|
+
3. Explain the impact in vibe-coder language only: the business profile entry, the saved progress
|
|
76
|
+
on each record, the automations that produce updates, and the dashboard or reports that read it.
|
|
77
|
+
4. Route follow-up changes through `/knowledge <domain>`. Do not mention the technical pattern name
|
|
78
|
+
unless the user explicitly asks for internals.
|
|
79
|
+
|
|
69
80
|
### 4. Transition
|
|
70
81
|
|
|
71
82
|
The user wants to change the status of a task or entity.
|
|
@@ -114,6 +125,18 @@ The user describes organizational reality that is not yet expressed in the model
|
|
|
114
125
|
|
|
115
126
|
**Agent action:** delegate immediately to `/knowledge`. Do not attempt the ceremony yourself. Invoke with the relevant domain: `/knowledge crm` for deal/contact changes, `/knowledge projects` for project types, `/knowledge features` for feature toggles. Plain-language summary of what was detected is acceptable before delegating, but the actual draft-confirm-write ceremony belongs to `/knowledge`.
|
|
116
127
|
|
|
128
|
+
**Stage/state/catalog impact preview:** if the Codify intent adds, renames, removes, reorders, or
|
|
129
|
+
re-scopes a stage, state, status bucket, catalog member, pipeline step, or progress vocabulary,
|
|
130
|
+
preview the cross-system impact before delegating:
|
|
131
|
+
|
|
132
|
+
- Which business-profile entry changes.
|
|
133
|
+
- Which saved record progress keys may already exist.
|
|
134
|
+
- Which automations or templates reference the key.
|
|
135
|
+
- Which dashboard, report, queue, or API reads may display or filter by it.
|
|
136
|
+
|
|
137
|
+
Then delegate to `/knowledge <domain>` with that preview as context. Vibe does not write the
|
|
138
|
+
change and does not expose monorepo-only commands.
|
|
139
|
+
|
|
117
140
|
This routing applies to both codify levels (decision #21 -- Codify ceremony delegated to `/knowledge`):
|
|
118
141
|
|
|
119
142
|
- **Level A** (config-only edits to `organization-model.ts`, feature toggles, label renames): delegate to `/knowledge <domain>` immediately.
|
|
@@ -92,11 +92,38 @@ cannot bypass the write gate.
|
|
|
92
92
|
| Read | "what playbooks govern sales.crm?", "show me all reference docs", "list my roles" | Run CLI read commands (monorepo or external); format result |
|
|
93
93
|
| Navigate | "what governs this feature?", "where does outreach-cadence apply?" | Same CLI; pick mount axis from intent; default to `by-feature` for orientation queries |
|
|
94
94
|
| Describe | "what is our identity set to?", "what's our timezone?" | Read current values from OM source; narrate |
|
|
95
|
-
| Codify | "we're an e-commerce company", "add a customer segment", "our outreach goal is..." | Run codify ceremony: snapshot -> propose -> confirm -> write -> typecheck -> Zod parse -> rollback on failure |
|
|
95
|
+
| Codify | "we're an e-commerce company", "add a customer segment", "our outreach goal is..." | Run codify ceremony with shared-layer impact preview: snapshot -> propose -> confirm -> write -> typecheck -> Zod parse -> rollback on failure |
|
|
96
96
|
| Toggle | "enable the lead-gen feature", "turn off SEO" | Codify ceremony scoped to `features` domain; flip the boolean; same validation/rollback |
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
100
|
+
## Shared Layering Preview
|
|
101
|
+
|
|
102
|
+
When opening a domain that uses a closed stage, status, or catalog vocabulary -- especially
|
|
103
|
+
prospecting, CRM, outreach, or another pipeline-like domain -- read the scaffold-shipped primer:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
node_modules/@elevasis/sdk/reference/spine/spine-primer.md
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Use it to emit a short domain layering preview before the normal read, describe, or codify flow:
|
|
110
|
+
|
|
111
|
+
1. **Catalog:** which `organizationModel.<domain>` catalog owns the keys, labels, descriptions,
|
|
112
|
+
ordering, and entity ownership.
|
|
113
|
+
2. **Runtime state:** where record progress is stored as sparse state keyed by those catalog
|
|
114
|
+
members.
|
|
115
|
+
3. **Producers:** which templates, automations, or factories write entity-tagged results for those
|
|
116
|
+
keys.
|
|
117
|
+
4. **Consumers:** which dashboards, queues, reports, filters, or API reads render or aggregate the
|
|
118
|
+
same keys.
|
|
119
|
+
|
|
120
|
+
For vibe-coder sessions, translate this into plain language: "business profile", "saved progress",
|
|
121
|
+
"automations", and "dashboard or reports". For technical sessions, it is acceptable to name the
|
|
122
|
+
catalog, state map, producer, and consumer surfaces directly. External tenants route all follow-ups
|
|
123
|
+
through `/knowledge`; do not point them at monorepo-only commands.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
100
127
|
## Read Patterns
|
|
101
128
|
|
|
102
129
|
### Monorepo (platform defaults)
|
|
@@ -104,9 +131,9 @@ cannot bypass the write gate.
|
|
|
104
131
|
```bash
|
|
105
132
|
pnpm exec elevasis knowledge:ls
|
|
106
133
|
pnpm exec elevasis knowledge:cat <node-id>
|
|
107
|
-
pnpm exec elevasis knowledge:
|
|
108
|
-
pnpm exec elevasis knowledge:
|
|
109
|
-
pnpm exec elevasis knowledge:graph
|
|
134
|
+
pnpm exec elevasis knowledge:ls /by-feature/<feature-id>
|
|
135
|
+
pnpm exec elevasis knowledge:ls /by-owner/<owner-id>
|
|
136
|
+
pnpm exec elevasis knowledge:graph <node-id>
|
|
110
137
|
```
|
|
111
138
|
|
|
112
139
|
### External projects (org instance)
|
|
@@ -114,14 +141,15 @@ pnpm exec elevasis knowledge:graph --mount <mount-id>
|
|
|
114
141
|
```bash
|
|
115
142
|
pnpm exec elevasis-sdk knowledge:ls
|
|
116
143
|
pnpm exec elevasis-sdk knowledge:cat <node-id>
|
|
117
|
-
pnpm exec elevasis-sdk knowledge:
|
|
118
|
-
pnpm exec elevasis-sdk knowledge:
|
|
119
|
-
pnpm exec elevasis-sdk knowledge:graph
|
|
144
|
+
pnpm exec elevasis-sdk knowledge:ls /by-feature/<feature-id>
|
|
145
|
+
pnpm exec elevasis-sdk knowledge:ls /by-owner/<owner-id>
|
|
146
|
+
pnpm exec elevasis-sdk knowledge:graph <node-id>
|
|
120
147
|
```
|
|
121
148
|
|
|
122
149
|
Use `knowledge:ls` to enumerate all knowledge nodes. Use `knowledge:cat` to read a specific
|
|
123
|
-
node's content. Use `knowledge:
|
|
124
|
-
|
|
150
|
+
node's content. Use `knowledge:ls /by-feature/<feature-id>` or
|
|
151
|
+
`knowledge:ls /by-owner/<owner-id>` to navigate feature and owner groupings. Use
|
|
152
|
+
`knowledge:graph <node-id>` to inspect incoming and outgoing graph edges for a specific node.
|
|
125
153
|
|
|
126
154
|
### `/knowledge read-folder` (chat shorthand from the Knowledge Browser)
|
|
127
155
|
|
|
@@ -156,6 +184,12 @@ Read `foundations/config/organization-model.ts` (external) or the appropriate pl
|
|
|
156
184
|
Show the diff in chat. Identify which domain and field changes. Present the proposed new value
|
|
157
185
|
in context alongside the current value.
|
|
158
186
|
|
|
187
|
+
For stage, status, or catalog vocabulary edits, include the shared-layer impact preview before
|
|
188
|
+
asking for confirmation. Name the affected catalog key, whether existing sparse runtime state may
|
|
189
|
+
contain the old key, which producers/templates reference it, and which consumers render or filter by
|
|
190
|
+
it. If the impact cannot be determined from the local project, say which surface is unknown and keep
|
|
191
|
+
the write gated.
|
|
192
|
+
|
|
159
193
|
### Step 3: Confirm
|
|
160
194
|
|
|
161
195
|
Pause for explicit user confirmation. Do not proceed without a clear yes. Permission prompts
|
|
@@ -240,13 +274,12 @@ Cross-link: `.claude/skills/knowledge/SKILL.md` (monorepo pointer)
|
|
|
240
274
|
|
|
241
275
|
## Cross-Links
|
|
242
276
|
|
|
243
|
-
- `/org-os` -- Organization OS architecture overview, seven layers, propagation pipeline,
|
|
244
|
-
feature/surface management. Use `/org-os` when the question is about the architecture or
|
|
245
|
-
propagation system rather than reading or editing org-model values. Cross-link:
|
|
246
|
-
`.claude/skills/org-os/SKILL.md`
|
|
247
277
|
- `/configure` -- Legacy org-model editor (pre-absorption). Absorbed into this skill; all
|
|
248
278
|
Codify and Toggle intents now route here. `/configure` vocabulary still works as a domain
|
|
249
279
|
hint (e.g., "configure identity" is parsed as domain=identity, intent=Describe-or-Codify).
|
|
280
|
+
- `node_modules/@elevasis/sdk/reference/spine/spine-primer.md` -- Scaffold-shipped layering
|
|
281
|
+
primer for stage/status/catalog vocabularies that coordinate business-profile entries, runtime
|
|
282
|
+
progress, producers, and consumers in tenant projects.
|
|
250
283
|
|
|
251
284
|
---
|
|
252
285
|
|
|
@@ -399,6 +399,27 @@ Recent Notes
|
|
|
399
399
|
2026-04-01 [call_note] Kickoff — confirmed scope and timeline
|
|
400
400
|
```
|
|
401
401
|
|
|
402
|
+
#### Tenant Skill Bindings Footer
|
|
403
|
+
|
|
404
|
+
After the normal status output, append a short footer when the project kind, tags, name,
|
|
405
|
+
description, milestones, or active tasks map to a known tenant domain such as `prospecting`,
|
|
406
|
+
`crm`, `outreach`, `finance`, or `support`.
|
|
407
|
+
|
|
408
|
+
Resolve the best domain from explicit metadata first (`tags`, `kind`, domain fields), then from
|
|
409
|
+
project/task text. If no clear domain maps, omit the footer.
|
|
410
|
+
|
|
411
|
+
Footer shape:
|
|
412
|
+
|
|
413
|
+
```text
|
|
414
|
+
Related skill bindings
|
|
415
|
+
- Domain: <domain>
|
|
416
|
+
- Read or change business profile: /knowledge <domain>
|
|
417
|
+
- Layering primer: node_modules/@elevasis/sdk/reference/spine/spine-primer.md
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
External projects do not expose monorepo-only architecture commands. Never suggest `/org-os`,
|
|
421
|
+
`/om-spine`, or monorepo paths in this footer.
|
|
422
|
+
|
|
402
423
|
### `create` — Guided Project Creation (QnA Flow)
|
|
403
424
|
|
|
404
425
|
Interactive walkthrough that collects project details step by step using `AskUserQuestion`,
|
|
@@ -29,6 +29,15 @@ This router does not enforce that tone -- it only writes profile.md and loads th
|
|
|
29
29
|
file. The project-wide tone effect is handled by the rules layer reading profile.md on each
|
|
30
30
|
session start.
|
|
31
31
|
|
|
32
|
+
Track separation is explicit:
|
|
33
|
+
|
|
34
|
+
- The vibe-coder track teaches the underlying coordination idea through business language only:
|
|
35
|
+
business profile, saved progress, automations, dashboard, and reports. Do not name the technical
|
|
36
|
+
pattern in vibe-coder menus, lessons, prompts, or progress labels.
|
|
37
|
+
- The technical track may name OM spine vocabulary and can point developers at
|
|
38
|
+
`node_modules/@elevasis/sdk/reference/spine/spine-primer.md` when lessons discuss shared stage,
|
|
39
|
+
status, or catalog vocabularies.
|
|
40
|
+
|
|
32
41
|
---
|
|
33
42
|
|
|
34
43
|
## Step 1: Parse the Argument
|
|
@@ -111,8 +120,9 @@ In this project, always:
|
|
|
111
120
|
|
|
112
121
|
## Tone Implications
|
|
113
122
|
|
|
114
|
-
Code-first communication. Use current command names
|
|
115
|
-
No vocabulary substitutions. Slash commands may be surfaced directly. Full
|
|
123
|
+
Code-first communication. Use current command names, SDK terminology, and OM spine vocabulary
|
|
124
|
+
without hand-holding. No vocabulary substitutions. Slash commands may be surfaced directly. Full
|
|
125
|
+
technical depth.
|
|
116
126
|
```
|
|
117
127
|
|
|
118
128
|
### Initialize Progress File
|
|
@@ -156,7 +166,7 @@ Read `.claude/memory/tutorial-progress.md`.
|
|
|
156
166
|
- [ ] 15 Error handling
|
|
157
167
|
- [ ] 16 LLM and agents
|
|
158
168
|
- [ ] 17 Composition
|
|
159
|
-
- [ ] 18 Rules, memory, scaffold registry
|
|
169
|
+
- [ ] 18 Rules, memory, scaffold registry, OM spine
|
|
160
170
|
- [ ] 19 Template lifecycle and /git-sync
|
|
161
171
|
```
|
|
162
172
|
|
|
@@ -570,12 +570,12 @@ the user what happens if they omit the `default` route (runtime failure for unma
|
|
|
570
570
|
|
|
571
571
|
### Item 8: Going to production
|
|
572
572
|
|
|
573
|
-
**Goal:** The user knows the dev/prod split, version bumping flags, and the
|
|
574
|
-
|
|
573
|
+
**Goal:** The user knows the dev/prod split, version bumping flags, and the SDK CLI CWD
|
|
574
|
+
guidance in the deployment rule.
|
|
575
575
|
|
|
576
576
|
**Estimated time:** 15 min
|
|
577
577
|
|
|
578
|
-
**Files referenced:** `.claude/rules/deployment.md
|
|
578
|
+
**Files referenced:** `.claude/rules/deployment.md`
|
|
579
579
|
|
|
580
580
|
**Commands:** `pnpm -C operations deploy:prod`
|
|
581
581
|
|
|
@@ -606,19 +606,17 @@ pnpm elevasis-sdk deploy --prod --major # 1.0.0 -> 2.0.0
|
|
|
606
606
|
Bump rules: `--patch` for bug fixes, `--minor` for new features (no breaking schema changes),
|
|
607
607
|
`--major` for breaking input/output schema changes.
|
|
608
608
|
|
|
609
|
-
**
|
|
609
|
+
**SDK CLI CWD guidance.** Read `.claude/rules/deployment.md`. Two critical rules:
|
|
610
610
|
|
|
611
|
-
1. The `--prod` flag
|
|
611
|
+
1. The `--prod` flag belongs to the `deploy` command:
|
|
612
612
|
|
|
613
613
|
```bash
|
|
614
614
|
# Correct
|
|
615
|
-
pnpm elevasis-sdk --prod deploy
|
|
616
|
-
# Wrong -- --prod after deploy is silently ignored
|
|
617
615
|
pnpm elevasis-sdk deploy --prod
|
|
618
616
|
```
|
|
619
617
|
|
|
620
618
|
The `pnpm -C operations deploy:prod` script in `package.json` handles this correctly.
|
|
621
|
-
Prefer the script over a raw CLI call
|
|
619
|
+
Prefer the script over a raw CLI call for production deploys.
|
|
622
620
|
|
|
623
621
|
2. Never use bare `cd <dir> && elevasis-sdk ...` -- use a subshell `(cd <dir> && ...)` or
|
|
624
622
|
`pnpm -C <dir> ...` to avoid CWD drift that causes env resolution failures.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# 2026-05-05 — List Builder UX + Schema-Driven Step Config
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
The list-builder ship train publishes a coordinated `@elevasis/core` + `@elevasis/ui` release that:
|
|
6
|
+
|
|
7
|
+
- Replaces every per-integration bespoke step-config component (and the `SerializedExecutionFormSchema` middle tier) with one generic `<StepConfigForm>` driven by the workflow's `contract.inputSchema` (Zod) plus a small `StepConfigLayout` hints object per integration.
|
|
8
|
+
- Standardizes the BuildTab step-detail right column on a `Configuration | Advanced | Runs` tab shell (`StepDetailRightColumn`).
|
|
9
|
+
- Makes `schema + layout` REQUIRED on `ListBuilderWorkflow`. The legacy `configSchema?` / `ConfigurationFields?` / `AdvancedFields?` / `inputForm?` fields are gone.
|
|
10
|
+
- Removes several `@elevasis/core` execution-form types (`SerializedFormField`, `SerializedFormSchema`, `SerializedExecutionFormSchema`, `SerializedExecutionInterface`, `ExecutionRunnerCatalogItem`, `ExecutionRunnerCatalogResponse`, plus `interface?` from definition types), the `ResourceExecuteForm` / `ResourceExecuteDialog` / `ExecutionRunner` surfaces from `@elevasis/ui`, and the API `execution/runner/` runtime.
|
|
11
|
+
|
|
12
|
+
If a derived project authors its own list-builder step actions or imported any of the deleted types, it will not compile against the new `@elevasis/ui` / `@elevasis/core` baselines without the migration below.
|
|
13
|
+
|
|
14
|
+
## Applies to
|
|
15
|
+
|
|
16
|
+
- All template-derived projects whose `ui/` consumes `@elevasis/ui` and registers list-builder actions.
|
|
17
|
+
- Any project whose `core/` or `operations/` imports the removed execution-form types from `@elevasis/core`.
|
|
18
|
+
- Any project rendering the list-builder Build tab via `LeadGenListDetailPage` or its `RunWorkflowModal`.
|
|
19
|
+
|
|
20
|
+
## Required actions
|
|
21
|
+
|
|
22
|
+
1. Bump `@elevasis/core` and `@elevasis/ui` to the versions published by this train (see `external/_template/{core,ui}/package.json` baselines).
|
|
23
|
+
2. For every `ListBuilderWorkflow` registry entry the project authors locally, swap to the `schema + layout` contract:
|
|
24
|
+
- Add a browser-safe sibling schema export (split-file pattern: keep Node-only deps out of `ui/`).
|
|
25
|
+
- Provide a `StepConfigLayout<T>` describing field hints (no React, no validation logic).
|
|
26
|
+
- Drop any `ConfigurationFields` / `AdvancedFields` / `configSchema` / `inputForm` references.
|
|
27
|
+
3. Delete any imports of the removed core types: `SerializedFormField`, `SerializedFormSchema`, `SerializedExecutionFormSchema`, `SerializedExecutionInterface`, `ExecutionRunnerCatalogItem`, `ExecutionRunnerCatalogResponse`, and the `interface?` field on workflow definitions.
|
|
28
|
+
4. If the project rendered the deleted `ResourceExecuteForm` / `ResourceExecuteDialog` / `ExecutionRunner` surfaces, replace with `<StepConfigForm>` (curated UX) or `<ZodFormRenderer>` (auto-derived from Zod) as appropriate. `renderExecuteDialog` is now REQUIRED on `ResourceDetailPage`.
|
|
29
|
+
5. Re-run `pnpm -C ui check-types` and `pnpm -C operations check-types` to confirm the schema sibling files resolve and no removed types remain referenced.
|
|
30
|
+
|
|
31
|
+
## Verification
|
|
32
|
+
|
|
33
|
+
- `pnpm -C ui check-types` — no references to `SerializedFormField`, `SerializedExecutionFormSchema`, `ResourceExecuteForm`, etc.
|
|
34
|
+
- `pnpm -C ui build` — clean build with the new `@elevasis/ui` baseline.
|
|
35
|
+
- `pnpm -C operations check` and `check-types` — clean.
|
|
36
|
+
- BuildTab smoke (manual): open a list under `/lead-gen/lists/{listId}`, select a step, confirm the right column renders the `Configuration | Advanced | Runs` tabs and the schema-driven form (defaults populate, validation Alert fires + clears on edit, conditional `when:` predicates toggle, `recentRuns[0]` auto-load works).
|
|
37
|
+
|
|
38
|
+
## Not handled by /git-sync
|
|
39
|
+
|
|
40
|
+
- Project-authored `ListBuilderWorkflow` registrations are project-owned code; `/git-sync` does not migrate them. Each project must port its action entries to `schema + layout` by hand following the `apolloImportLayout` pattern in the template's `apps/command-center/src/main.tsx`.
|
|
41
|
+
- Browser dev-smoke for each migrated step type is operator-driven; not automatable through sync.
|
|
42
|
+
- Any local re-implementations or extensions of the deleted `ResourceExecuteForm` / `ExecutionRunner` surfaces must be removed manually before this baseline can be adopted.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# 2026-05-06 -- CRM OM Spine Migration
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
The CRM deal vocabulary (`stage_key`, `state_key`, `pipeline_key`) is now a fully-realized OM Spine matching the lead-gen list-builder pattern. `CRM_PIPELINE_DEFINITION` becomes the single source of truth: `@elevasis/core` derives `CrmStageKeySchema` and `CrmStateKeySchema` from the catalog, the catalog gains optional `color?` metadata on each stage, and `@elevasis/sdk` re-exports both schemas plus the catalog so external SDK consumers see the same vocabulary as monorepo callers. `@elevasis/ui` rewires the CRM page helpers (`DEAL_STAGE_COLORS`, `DEAL_STAGE_OPTIONS`, `formatDealStageLabel`, `formatDealStateLabel`) to read from the catalog instead of hardcoded maps -- public exports are preserved, behavior is now catalog-driven.
|
|
6
|
+
|
|
7
|
+
The platform side also closed a long-standing data drift: `pipeline_key='default'` in `acq_deals` is gone; live writers now use `pipeline_key='crm'` matching the catalog's `pipelineKey: 'crm'`. The Elevasis backfill applied directly to prod and dev on 2026-05-06; tenant deal rows are not affected by that backfill and continue to use whatever value tenant code wrote.
|
|
8
|
+
|
|
9
|
+
## Applies to
|
|
10
|
+
|
|
11
|
+
- All template-derived projects that consume `@elevasis/core`, `@elevasis/ui`, or `@elevasis/sdk`.
|
|
12
|
+
- Projects that customize CRM stages or states in `core/config/organization-model.ts` under the `sales` domain.
|
|
13
|
+
- Projects that read or write CRM transitions through `@elevasis/sdk` worker adapters (`acqDb.transitionDeal`, `acqDb.transitionItem`).
|
|
14
|
+
- Projects that render CRM pipeline UI from `@elevasis/ui/features/crm`.
|
|
15
|
+
|
|
16
|
+
## Required actions
|
|
17
|
+
|
|
18
|
+
1. Pull synced template package baselines through `/git-sync`:
|
|
19
|
+
- `core/package.json`: `@elevasis/core` -> 0.20.0
|
|
20
|
+
- `ui/package.json`: `@elevasis/ui` -> 2.29.0
|
|
21
|
+
- `operations/package.json`: `@elevasis/core` -> 0.20.0 and `@elevasis/sdk` -> 1.19.0
|
|
22
|
+
|
|
23
|
+
2. Run `pnpm install` and rebuild the project:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pnpm install
|
|
27
|
+
pnpm -C ui build
|
|
28
|
+
pnpm -C ui exec tsc --noEmit
|
|
29
|
+
pnpm -C operations exec tsc --noEmit
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
3. **Optional: adopt `color?` on customized CRM stages.** If `core/config/organization-model.ts` overrides `sales.stages` with custom labels, you may now add an optional `color` field per stage (any Mantine palette key: `blue`, `yellow`, `orange`, `green`, `red`, `grape`, etc.). The shipped `DEAL_STAGE_COLORS` map and CRM kanban UI will read it. Stages without a `color` fall back to the platform default mapping in the catalog.
|
|
33
|
+
|
|
34
|
+
4. **Optional: tighten project-owned CRM workflow inputs.** New schemas are available from `@elevasis/sdk`:
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
import { CrmStageKeySchema, CrmStateKeySchema, CRM_PIPELINE_DEFINITION } from '@elevasis/sdk'
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Project-authored CRM action workflows that previously used `z.string()` for `toStage` / `toState` can now validate against the catalog-derived enum. The `transitionItem` / `transitionDeal` worker adapters still accept strings, but unknown stage/state keys are rejected at the platform writer layer for `pipelineKey: 'crm'` writers.
|
|
41
|
+
|
|
42
|
+
5. **No tenant data backfill required.** The `pipeline_key='default'` -> `'crm'` backfill was applied to Elevasis databases only. Tenant `acq_deals` rows are unaffected. If tenant code writes `pipelineKey: 'default'` to `acqDb.transitionDeal`, that behavior is unchanged; only the published catalog declares `'crm'` as canonical and the published schemas validate `'crm'` exclusively for CRM-shaped transitions.
|
|
43
|
+
|
|
44
|
+
## Verification
|
|
45
|
+
|
|
46
|
+
After applying the actions above:
|
|
47
|
+
|
|
48
|
+
- `pnpm -C ui check-types`
|
|
49
|
+
- `pnpm -C ui build`
|
|
50
|
+
- `pnpm -C ui test`
|
|
51
|
+
- `pnpm -C operations check`
|
|
52
|
+
- `pnpm -C operations check-types`
|
|
53
|
+
- `pnpm -C operations test`
|
|
54
|
+
- Browser smoke: open `/crm/pipeline` (or the project's CRM kanban surface) and verify stage labels and column colors render from the catalog. Custom-labeled stages should show the override label; default stages show the platform palette.
|
|
55
|
+
|
|
56
|
+
## Not handled by /git-sync
|
|
57
|
+
|
|
58
|
+
- **Tenant CRM action workflows.** If a project authored its own CRM action workflows in `operations/` that import `transitionDeal` / `syncDealStateKeyToDb` directly (rather than `emitCrmTransition`), `/git-sync` does NOT refactor them. The platform-side `emitCrmTransition` factory is internal to `@repo/elevasis-operations` (workspace-internal) and is not part of the published SDK surface. Project-owned workflows continue to call the worker adapters directly; the new validation guard rejects unknown stage/state keys but does not require migration.
|
|
59
|
+
- **Customized stage colors.** Existing tenant overrides under `sales.stages[].label` and `sales.stages[].states[]` continue to work unchanged. Adopting the new optional `color` field is a project-by-project decision; `/git-sync` will not infer colors for custom stages.
|
|
60
|
+
- **`pipeline_key` data in tenant databases.** If a project has historic `acq_deals` rows with `pipeline_key='default'` and wants to align with the new canonical `'crm'` identity, that is a tenant-managed migration -- not part of this train.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# 2026-05-06 -- SDK Changes Release Train
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
This train coordinates the Google Calendar integration, list-builder OM Spine cleanup, and OM Spine documentation/skill surfaces into one package and external-sync release. It publishes updated `@elevasis/core`, `@elevasis/ui`, and `@elevasis/sdk` baselines, then syncs template Claude guidance and package versions to derived projects.
|
|
6
|
+
|
|
7
|
+
## Applies to
|
|
8
|
+
|
|
9
|
+
- Template-derived projects consuming `@elevasis/core`, `@elevasis/ui`, or `@elevasis/sdk`.
|
|
10
|
+
- Projects using the list-builder workflow factory or custom lead-gen build-state UI.
|
|
11
|
+
- Projects relying on tenant Claude guidance for `/knowledge`, `/project`, `/tutorial`, or ambient `vibe` behavior.
|
|
12
|
+
|
|
13
|
+
## Required actions
|
|
14
|
+
|
|
15
|
+
1. Pull the synced template changes through `/git-sync`.
|
|
16
|
+
2. Accept the package baseline bumps published by this train:
|
|
17
|
+
- `core/package.json`: `@elevasis/core`
|
|
18
|
+
- `ui/package.json`: `@elevasis/ui`
|
|
19
|
+
- `operations/package.json`: `@elevasis/core` and `@elevasis/sdk`
|
|
20
|
+
3. Review local list-builder customizations against the OM-owned stage vocabulary and SDK `listBuilderWorkflow(...)` factory.
|
|
21
|
+
4. Review any local tenant guidance overrides before accepting the synced `.claude/rules/vibe.md` and `.claude/skills/{knowledge,project,tutorial}/SKILL.md` changes.
|
|
22
|
+
|
|
23
|
+
## Verification
|
|
24
|
+
|
|
25
|
+
- `pnpm -C ui check-types`
|
|
26
|
+
- `pnpm -C ui build`
|
|
27
|
+
- `pnpm -C ui test`
|
|
28
|
+
- `pnpm -C operations check`
|
|
29
|
+
- `pnpm -C operations check-types`
|
|
30
|
+
- `pnpm -C operations test`
|
|
31
|
+
- `pnpm -C core test`
|
|
32
|
+
|
|
33
|
+
## Not handled by /git-sync
|
|
34
|
+
|
|
35
|
+
- Project-authored list-builder workflow registrations remain project-owned code.
|
|
36
|
+
- Google Calendar OAuth configuration remains an Elevasis platform/admin responsibility, not a tenant scaffold migration.
|
|
37
|
+
- Manual browser smoke for authenticated calendar views is not automated by template sync.
|