@elevasis/sdk 1.16.0 → 1.18.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 +382 -175
- package/dist/index.d.ts +390 -73
- package/dist/index.js +1087 -62
- package/dist/node/index.d.ts +3 -0
- package/dist/node/index.js +34 -1
- package/dist/test-utils/index.d.ts +108 -71
- package/dist/test-utils/index.js +1872 -667
- package/dist/types/worker/index.d.ts +3 -2
- package/dist/worker/index.js +1373 -2
- package/package.json +2 -2
- 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 +37 -5
- package/reference/claude-config/skills/project/SKILL.md +21 -0
- package/reference/claude-config/skills/tutorial/SKILL.md +13 -3
- package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +83 -0
- package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +42 -0
- package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +37 -0
- package/reference/scaffold/reference/contracts.md +78 -65
- 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.18.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.19.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)
|
|
@@ -156,6 +183,12 @@ Read `foundations/config/organization-model.ts` (external) or the appropriate pl
|
|
|
156
183
|
Show the diff in chat. Identify which domain and field changes. Present the proposed new value
|
|
157
184
|
in context alongside the current value.
|
|
158
185
|
|
|
186
|
+
For stage, status, or catalog vocabulary edits, include the shared-layer impact preview before
|
|
187
|
+
asking for confirmation. Name the affected catalog key, whether existing sparse runtime state may
|
|
188
|
+
contain the old key, which producers/templates reference it, and which consumers render or filter by
|
|
189
|
+
it. If the impact cannot be determined from the local project, say which surface is unknown and keep
|
|
190
|
+
the write gated.
|
|
191
|
+
|
|
159
192
|
### Step 3: Confirm
|
|
160
193
|
|
|
161
194
|
Pause for explicit user confirmation. Do not proceed without a clear yes. Permission prompts
|
|
@@ -240,13 +273,12 @@ Cross-link: `.claude/skills/knowledge/SKILL.md` (monorepo pointer)
|
|
|
240
273
|
|
|
241
274
|
## Cross-Links
|
|
242
275
|
|
|
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
276
|
- `/configure` -- Legacy org-model editor (pre-absorption). Absorbed into this skill; all
|
|
248
277
|
Codify and Toggle intents now route here. `/configure` vocabulary still works as a domain
|
|
249
278
|
hint (e.g., "configure identity" is parsed as domain=identity, intent=Describe-or-Codify).
|
|
279
|
+
- `node_modules/@elevasis/sdk/reference/spine/spine-primer.md` -- Scaffold-shipped layering
|
|
280
|
+
primer for stage/status/catalog vocabularies that coordinate business-profile entries, runtime
|
|
281
|
+
progress, producers, and consumers in tenant projects.
|
|
250
282
|
|
|
251
283
|
---
|
|
252
284
|
|
|
@@ -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
|
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Knowledge Bundle Ship-Train
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
The Knowledge Map (Browser, CLI, skill, icons, external parity) is being shipped as a coordinated bundle. The Organization Model now treats `knowledge` as a first-class graph domain with `kind`-discriminated nodes (`playbook` / `strategy` / `reference`) connected to features and capabilities through `governs` edges. A new `/knowledge` skill absorbs the prior `/configure` skill as a unified intent-inferring surface (read + describe + codify + toggle); `/configure` is tombstoned via `sync-delete-manifest.json`. A new `knowledge:*` CLI subcommand suite ships on both `elevasis` and `elevasis-sdk` over a shared `@repo/core/knowledge/queries` data layer. The Knowledge Browser is wired into `@elevasis/ui` with reusable primitives (`KnowledgeBrowser`, `KnowledgeTree`, `DescribeNodeView`, `KindChip`, `NodeHeader`, `NodeDescribeShell`, etc.) and a build-time MDX codegen pipeline at `@elevasis/sdk/node`. A unified semantic icon-token catalog lives at `@elevasis/core/organization-model` and is shared across core, SDK, UI, Command Center, and external projects. External-parity work makes the bundle zero-config for tenant projects: a dual-mode Vite plugin walks up to `.elevasis`, runs the two-codegen pipeline in-process, and writes artifacts the published Browser already imports -- no flags, no paths, no recipe steps.
|
|
6
|
+
|
|
7
|
+
## Applies to
|
|
8
|
+
|
|
9
|
+
All template-derived projects that consume `@elevasis/sdk`, `@elevasis/core`, or `@elevasis/ui`. Specifically:
|
|
10
|
+
|
|
11
|
+
- `nirvana-marketing`
|
|
12
|
+
- `ZentaraHQ`
|
|
13
|
+
- Any future external SDK consumer derived from the `_template` baseline
|
|
14
|
+
|
|
15
|
+
## Required actions
|
|
16
|
+
|
|
17
|
+
1. Pull template changes with `/git-sync` after this train publishes so the refreshed knowledge wiring (template OM defaults, starter `welcome.mdx`, vite plugin pre-wiring, `/knowledge` skill, `/configure` tombstone, scaffold recipe) reaches the project.
|
|
18
|
+
|
|
19
|
+
2. **`/configure` is gone.** The skill was absorbed into `/knowledge`. `/git-sync` removes `external/_template/.claude/skills/configure/` (and its 10 operations files) via `sync-delete-manifest.json` (wave: `knowledge-skill`). Update any tenant-side automation, prompts, or docs that still reference `/configure` -- replace with `/knowledge`. The skill is intent-inferring: classify by natural language (read / describe / codify / toggle), not by verb namespace.
|
|
20
|
+
|
|
21
|
+
3. **`/knowledge` ceremony is unchanged.** The codify ceremony (snapshot -> propose -> confirm -> write -> validate -> rollback) and the two-level model (Level A config-only edits vs. Level B new Zod extension files) are preserved bit-for-bit. The skill body lives at `.claude/skills/knowledge/SKILL.md` (~245 lines) with 10 operations files: `codify-level-a.md`, `codify-level-b.md`, plus 8 domain references (`identity`, `customers`, `offerings`, `roles`, `goals`, `techStack`, `features`, `labels`).
|
|
22
|
+
|
|
23
|
+
4. **Vite plugin is pre-wired.** `external/_template/ui/vite.config.ts` imports and spreads `elevasisVite()` from `@elevasis/ui/vite`. After `/git-sync`, the plugin auto-discovers the project via `.elevasis` walk-up, runs both knowledge codegens in-process, and writes:
|
|
24
|
+
- `core/config/knowledge/_generated/nodes.ts`
|
|
25
|
+
- `core/config/knowledge/_generated/knowledge-bodies.tsx`
|
|
26
|
+
- `core/config/knowledge/_generated/knowledge-search-index.json`
|
|
27
|
+
|
|
28
|
+
Same behavior in `vite dev` and `vite build`. No flags, no manual codegen step required for the bundle to work.
|
|
29
|
+
|
|
30
|
+
5. **Starter knowledge node lands.** `core/config/knowledge/nodes/welcome.mdx` ships in the template so a fresh clone has a non-empty Browser on first `pnpm -C ui dev`. Replace with tenant-authored MDX nodes as the project codifies real organizational knowledge. Tenant nodes go under `core/config/knowledge/nodes/**/*.mdx` with frontmatter declaring `id`, `kind`, `title`, optional `icon` (semantic token), and an MDX body. Default fallback icons by `kind` apply when `icon` is omitted.
|
|
31
|
+
|
|
32
|
+
6. **Knowledge baseline propagates to the OM.** `core/config/organization-model.ts` now includes baseline knowledge defaults imported from `@elevasis/core/organization-model`. The merge-aware Tier 2 sync preserves tenant overrides while picking up the baseline. After `/git-sync`, verify `resolveOrganizationModel()` still parses (Zod) and `pnpm -C ui exec tsc --noEmit` passes.
|
|
33
|
+
|
|
34
|
+
7. **`knowledge:*` CLI subcommands are available.** From inside the project (any subdirectory):
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pnpm exec elevasis-sdk knowledge:ls /by-feature/sales/crm
|
|
38
|
+
pnpm exec elevasis-sdk knowledge:ls /by-kind/playbook
|
|
39
|
+
pnpm exec elevasis-sdk knowledge:cat <node-id>
|
|
40
|
+
pnpm exec elevasis-sdk knowledge:graph <node-id>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
These walk up to `.elevasis`, load the project's OM (with tenant nodes), and print results. Output flags: default text, `--json` envelope, `--ids-only` for piping. The Knowledge Browser sidebar copy buttons emit matching skill-resolvable commands (`/knowledge read <node-id>`, `/knowledge read-folder feature:<id>`, `/knowledge read-folder kind:<kind>`).
|
|
44
|
+
|
|
45
|
+
8. **Semantic icon tokens replace ad-hoc strings.** When authoring or editing nodes (OM or MDX frontmatter), use semantic tokens from the catalog: `nav.*`, `knowledge.*`, `feature.*`, `resource.*`, `integration.*`, plus `custom.*` namespace for tenant extensions. `IconNameSchema` validates them. The UI renders via Tabler mappings in `@elevasis/ui/icons`; library names (`IconBook`, etc.) stay out of the OM/MDX surface.
|
|
46
|
+
|
|
47
|
+
9. **Rebuild and type-check:**
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
pnpm install
|
|
51
|
+
pnpm -C ui build
|
|
52
|
+
pnpm -C ui exec tsc --noEmit
|
|
53
|
+
pnpm -C operations exec tsc --noEmit
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The first `vite dev` or `vite build` after sync triggers the in-process codegen automatically. To regenerate codegen artifacts manually (one-shot, not normally required):
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
pnpm exec elevasis-sdk knowledge:generate
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Verification
|
|
63
|
+
|
|
64
|
+
After applying all actions above:
|
|
65
|
+
|
|
66
|
+
- `/configure` skill directory is absent: `external/<project>/.claude/skills/configure/` does not exist after sync.
|
|
67
|
+
- `/knowledge` skill is present at `.claude/skills/knowledge/SKILL.md` with the 10 operations files under `.claude/skills/knowledge/operations/`.
|
|
68
|
+
- `core/config/knowledge/nodes/welcome.mdx` exists; `core/config/knowledge/_generated/` has been populated by the vite plugin (3 files).
|
|
69
|
+
- `pnpm -C ui dev` boots; navigating to `/knowledge` renders the Browser with the welcome node visible in the tree.
|
|
70
|
+
- The 5 mount axes resolve: `/knowledge`, `/knowledge/by-feature/$path`, `/knowledge/by-kind/$kind`, `/knowledge/by-owner/$id`, `/knowledge/graph/$nodeId/governs|governed-by`.
|
|
71
|
+
- `pnpm exec elevasis-sdk knowledge:ls /by-kind/playbook` returns text output without error.
|
|
72
|
+
- `pnpm install` completes cleanly with no unresolved peer warnings.
|
|
73
|
+
- `pnpm -C ui exec tsc --noEmit` passes; `pnpm -C operations exec tsc --noEmit` passes.
|
|
74
|
+
|
|
75
|
+
## Not handled by /git-sync
|
|
76
|
+
|
|
77
|
+
`/git-sync` propagates template-authored files (package baselines, `welcome.mdx` starter node, generated `_generated/` files, `/knowledge` skill, `/configure` tombstones, vite.config.ts wiring, scaffold recipe doc) but does NOT:
|
|
78
|
+
|
|
79
|
+
- Author tenant-specific knowledge MDX nodes. The starter `welcome.mdx` is illustrative; real organizational playbooks, strategies, and reference docs need to be hand-authored under `core/config/knowledge/nodes/**/*.mdx`. Use `/knowledge` for ceremony when codifying.
|
|
80
|
+
- Regenerate `_generated/` artifacts on its own. The vite plugin runs the codegens automatically on next `vite dev` / `vite build`. To regenerate manually before booting, run `pnpm exec elevasis-sdk knowledge:generate`.
|
|
81
|
+
- Migrate references in tenant code from `/configure` to `/knowledge`. Search the project for `/configure` mentions in `.claude/`, `docs/`, `README.md`, prompts, and CI scripts; rewrite to `/knowledge`. The tombstone deletes the skill files but does not edit downstream references.
|
|
82
|
+
- Replace tenant-authored icon strings with semantic tokens. Existing nodes that carried library-specific icon names (`IconBook`, etc.) will continue to render via fallback, but the canonical surface is semantic tokens. Migrate at-touched nodes to `knowledge.*` / `feature.*` / `nav.*` / `custom.*` over time.
|
|
83
|
+
- Clear the Vite module-graph cache (`ui/node_modules/.vite`). After upgrading the bundle, clear this directory manually and restart the dev server before verifying the Browser renders -- stale cache can mask a successful generation.
|
|
@@ -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,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.
|