@elevasis/sdk 1.33.0 → 1.34.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 -294
- package/dist/index.d.ts +8 -9
- package/dist/index.js +23 -14
- package/dist/node/index.d.ts +3 -4
- package/dist/test-utils/index.d.ts +2 -3
- package/dist/test-utils/index.js +22 -13
- package/package.json +4 -4
- package/reference/claude-config/Overview.md +2 -2
- package/reference/claude-config/skills/om/SKILL.md +85 -47
- package/reference/claude-config/skills/project/SKILL.md +16 -14
- package/reference/claude-config/sync-notes/2026-06-04-scaffold-registry-lane-severity.md +34 -0
- package/reference/claude-config/sync-notes/2026-06-05-appearance-app-mode-decouple.md +29 -0
- package/reference/claude-config/sync-notes/2026-06-05-ontology-endpoint-rename-and-knowledge-browser-ui.md +86 -0
- package/reference/claude-config/sync-notes/2026-06-06-om-item-copy-references.md +50 -0
- package/reference/scaffold/core/organization-graph.mdx +9 -8
- package/reference/scaffold/operations/propagation-pipeline.md +13 -9
- package/reference/scaffold/operations/scaffold-maintenance.md +8 -7
- package/reference/sdk/cli-management.mdx +44 -2
- package/reference/sdk/cli.mdx +2 -1
|
@@ -115,9 +115,11 @@ Agents that need to pass structured JSON to `request:submit` or `exec` should wr
|
|
|
115
115
|
pnpm elevasis-sdk exec my-workflow -f tmp/exec-payload.json --cleanup-input
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
3. The `--cleanup-input` flag deletes
|
|
118
|
+
3. The `--cleanup-input` flag deletes request/exec input files automatically after a successful command. On failure the file is left intact for inspection.
|
|
119
119
|
|
|
120
|
-
**Safety guard:** `--cleanup-input` only deletes files that are under `<projectRoot>/tmp/`. If the resolved path is outside `tmp/`, the CLI prints a warning to stderr and leaves the file untouched. Files passed via
|
|
120
|
+
**Safety guard:** `--cleanup-input` only deletes files that are under `<projectRoot>/tmp/`. If the resolved path is outside `tmp/`, the CLI prints a warning to stderr and leaves the file untouched. Files passed via inline JSON flags are never affected.
|
|
121
|
+
|
|
122
|
+
Checklist commands in the currently published SDK use inline `--checklist` JSON only. In Windows PowerShell 5.1, inline JSON is not reliable; use bash/PowerShell 7 for those updates, or update the checklist through the UI.
|
|
121
123
|
|
|
122
124
|
---
|
|
123
125
|
|
|
@@ -298,11 +300,11 @@ Both `prj_milestones.checklist` and `prj_tasks.checklist` store a JSONB array of
|
|
|
298
300
|
]
|
|
299
301
|
```
|
|
300
302
|
|
|
301
|
-
The CLI `--checklist` flag on
|
|
303
|
+
The CLI `--checklist` flag on `project:task:create`, `project:task:update`, and `project:milestone:update` performs a **full replace** where the command accepts checklist data. The entire array is replaced with the JSON you supply. There are no item-level add/toggle/remove flags. In Windows PowerShell 5.1, inline JSON is not reliable; use bash/PowerShell 7 for checklist CLI updates, or update the checklist through the UI. To mutate a single item:
|
|
302
304
|
|
|
303
305
|
1. Read the current checklist (via psql or `project:task:get` / `project:milestone:list`)
|
|
304
306
|
2. Mutate the array in memory (append, flip `completed`, filter out)
|
|
305
|
-
3. Write the entire array back via `--checklist '<json>'`
|
|
307
|
+
3. Write the entire array back via `--checklist '<json-array>'`
|
|
306
308
|
|
|
307
309
|
To clear a checklist: `--checklist '[]'`.
|
|
308
310
|
|
|
@@ -668,7 +670,7 @@ pnpm elevasis-sdk project:milestone:update <milestone-id> --status completed
|
|
|
668
670
|
|
|
669
671
|
# Update checklist (full replace)
|
|
670
672
|
pnpm elevasis-sdk project:milestone:update <milestone-id> \
|
|
671
|
-
--checklist '[{"id":"
|
|
673
|
+
--checklist '[{"id":"1","label":"Review scope doc","completed":false}]'
|
|
672
674
|
```
|
|
673
675
|
|
|
674
676
|
If status changes to `completed`, the API auto-sets `completed_at`.
|
|
@@ -679,7 +681,7 @@ If status changes to `completed`, the API auto-sets `completed_at`.
|
|
|
679
681
|
|
|
680
682
|
1. Read the current checklist via psql or `project:milestone:list`
|
|
681
683
|
2. Mutate the array in memory
|
|
682
|
-
3. Write back the full array via `--checklist '<json>'`
|
|
684
|
+
3. Write back the full array via `--checklist '<json-array>'`
|
|
683
685
|
|
|
684
686
|
### `checklist <client> "<milestone>"` — View Checklist
|
|
685
687
|
|
|
@@ -741,7 +743,7 @@ pnpm elevasis-sdk project:task:create \
|
|
|
741
743
|
pnpm elevasis-sdk project:task:create \
|
|
742
744
|
--project <project-id> \
|
|
743
745
|
--title "<name>" \
|
|
744
|
-
--checklist '[{"id":"1","label":"
|
|
746
|
+
--checklist '[{"id":"1","label":"Review scope doc","completed":false}]'
|
|
745
747
|
```
|
|
746
748
|
|
|
747
749
|
### `task update <client> "<task>" [options]` — Update Task
|
|
@@ -757,7 +759,7 @@ pnpm elevasis-sdk project:task:update <task-id> --status <status>
|
|
|
757
759
|
|
|
758
760
|
# Update checklist (full replace)
|
|
759
761
|
pnpm elevasis-sdk project:task:update <task-id> \
|
|
760
|
-
--checklist '[{"id":"
|
|
762
|
+
--checklist '[{"id":"1","label":"Review scope doc","completed":false}]'
|
|
761
763
|
|
|
762
764
|
# Clear checklist
|
|
763
765
|
pnpm elevasis-sdk project:task:update <task-id> --checklist '[]'
|
|
@@ -773,7 +775,7 @@ If status changes to `approved`, the API auto-sets `completed_at`.
|
|
|
773
775
|
|
|
774
776
|
1. Read the current task via `project:task:get <task-id>`
|
|
775
777
|
2. Mutate the checklist array in memory
|
|
776
|
-
3. Write back the full array via `project:task:update <task-id> --checklist '<json>'`
|
|
778
|
+
3. Write back the full array via `project:task:update <task-id> --checklist '<json-array>'`
|
|
777
779
|
|
|
778
780
|
### `note <client> "<content>" [options]` — Add Note
|
|
779
781
|
|
|
@@ -964,15 +966,15 @@ When args don't match any command pattern, infer intent from natural language:
|
|
|
964
966
|
| "what's overdue?" | List milestones where `due_date < now() AND status != 'completed'` |
|
|
965
967
|
| "block acme, waiting on client credentials" | `update acme --status blocked` |
|
|
966
968
|
| "show checklist for phase 2" | Read and display checklist for milestone "phase 2" via psql or `project:milestone:list` |
|
|
967
|
-
| "add 'deploy staging' to task X's checklist" | Read task X's checklist → append `{id: uuid, label: "deploy staging", completed: false}` → `project:task:update <id> --checklist '<json>'`
|
|
968
|
-
| "mark 'deploy staging' done on task X" | Read task X's checklist → flip `completed` on matching item → `project:task:update <id> --checklist '<json>'`
|
|
969
|
+
| "add 'deploy staging' to task X's checklist" | Read task X's checklist → append `{id: uuid, label: "deploy staging", completed: false}` → `project:task:update <id> --checklist '<json-array>'` |
|
|
970
|
+
| "mark 'deploy staging' done on task X" | Read task X's checklist → flip `completed` on matching item → `project:task:update <id> --checklist '<json-array>'` |
|
|
969
971
|
| "clear the checklist on task X" | `project:task:update <task-id> --checklist '[]'` |
|
|
970
|
-
| "add checklist item to onboarding milestone: review scope doc" | Read milestone checklist → append item → `project:milestone:update <id> --checklist '<json>'`
|
|
972
|
+
| "add checklist item to onboarding milestone: review scope doc" | Read milestone checklist → append item → `project:milestone:update <id> --checklist '<json-array>'` |
|
|
971
973
|
| "I'm done" / "task complete" / "done with this" | Resolve active task → confirm → `project:task:update <task-id> --status completed` |
|
|
972
974
|
| "save: Apify actor X rate-limits at 20rps" | Resolve active project/task → `project:note:create --project <id> --type agent_learning --task <task-id> "Apify actor X rate-limits at 20rps"` |
|
|
973
975
|
| "remember: client requires ISO dates, not timestamps" | Resolve active project/task → `project:note:create --project <id> --type agent_learning --task <task-id> "client requires ISO dates, not timestamps"` |
|
|
974
976
|
|
|
975
|
-
**Checklist note:** all checklist mutations use the read-modify-write pattern. The CLI has no item-level flags (`--add-item`, `--toggle`, `--remove-item` do not exist). Always read the current state, mutate the array, then write the full array back.
|
|
977
|
+
**Checklist note:** all checklist mutations use the read-modify-write pattern. The CLI has no item-level flags (`--add-item`, `--toggle`, `--remove-item` do not exist). Always read the current state, mutate the array, then write the full array back. Use bash/PowerShell 7 for generated checklist JSON; Windows PowerShell 5.1 native argument passing is not reliable for inline JSON.
|
|
976
978
|
|
|
977
979
|
---
|
|
978
980
|
|
|
@@ -1078,7 +1080,7 @@ The full `client:*` surface (list, get, status, resolve) is available via `eleva
|
|
|
1078
1080
|
6. **Template project assumption** — the template is a single-organization project. All
|
|
1079
1081
|
`/project` operations operate within the organization scoped by `ELEVASIS_PLATFORM_KEY`.
|
|
1080
1082
|
There is no cross-org capability.
|
|
1081
|
-
7. **Checklist full-replace** —
|
|
1083
|
+
7. **Checklist full-replace** — `--checklist` replaces the entire array. Always read
|
|
1082
1084
|
the current checklist before writing to avoid losing existing items.
|
|
1083
1085
|
8. **Confirm task completion** — always ask once before marking a task `completed` via "I'm done"
|
|
1084
1086
|
recognition. This status is semantically significant and warrants a confirmation step.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Scaffold registry lane severity annotations
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
This train adds `sync_lane_severity` annotations to the scaffold registry schema and moves external sync lane-severity ownership from hardcoded script sets into registry metadata.
|
|
6
|
+
|
|
7
|
+
The change is intended to keep project sync behavior the same while making the registry the single edit point for paths that need critical manual-merge handling or optional-feature-selection treatment.
|
|
8
|
+
|
|
9
|
+
## Applies to
|
|
10
|
+
|
|
11
|
+
- Template-derived projects that use `/external sync` or `pnpm sync:apply` from the Elevasis monorepo.
|
|
12
|
+
- Projects that receive `@elevasis/core` package-baseline updates through `core/package.json` or `operations/package.json`.
|
|
13
|
+
- Operators reviewing external-sync plans that mention critical manual-merge or optional-feature-selection paths.
|
|
14
|
+
|
|
15
|
+
## Required actions
|
|
16
|
+
|
|
17
|
+
1. Run the prepared external sync from the release train so this note reaches derived projects.
|
|
18
|
+
2. After the `@elevasis/core` publish stage, install the prepared core package baseline in template-derived project package files.
|
|
19
|
+
3. Review any sync plan lane labels against the registry entry metadata before widening a manifest or applying catch-up work.
|
|
20
|
+
|
|
21
|
+
No project-authored Organization Model content should be overwritten for this train.
|
|
22
|
+
|
|
23
|
+
## Verification
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pnpm sync:verify
|
|
27
|
+
pnpm exec tsx scripts/external/sync-apply.ts --all --dry-run --manifest apps/docs/content/docs/in-progress/active-development/sdk-changes/ship/_external-sync-prep.json --strict-manifest
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The strict manifest dry-run should authorize only the prepared sync note and the core package-baseline cascades.
|
|
31
|
+
|
|
32
|
+
## Not handled by /git-sync
|
|
33
|
+
|
|
34
|
+
`/git-sync` can deliver committed file changes, but it does not publish `@elevasis/core`, install package baselines, validate scaffold registry metadata, or enforce manifest-scoped external-sync write authorization.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Appearance Page Decoupled From App-Mode
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
The Settings → Appearance page used to be hard-coupled to `dev-centric` app-mode: scaffold removed it under `--client-centric`, every `/external sync` actively deleted it (planner `delete` special-case), and verify forbade it for `client-centric` projects. That made the page silently vanish on every sync for client-centric tenants.
|
|
6
|
+
|
|
7
|
+
This train decouples Appearance from app-mode. Appearance is now an optional standalone page available in any mode. The only remaining app-mode difference is the `OrganizationSwitcher` in the topbar.
|
|
8
|
+
|
|
9
|
+
No npm publish is involved: the page renders the already-published `@elevasis/ui@2.46.0` `AppearanceSettings` component. The substrate changes (`scripts/external/*`) and the `_template` route are monorepo-internal and propagate through `/external sync`.
|
|
10
|
+
|
|
11
|
+
## Applies to
|
|
12
|
+
|
|
13
|
+
- All template-derived projects under `external/` that lack `ui/src/routes/settings/appearance.tsx`.
|
|
14
|
+
- Confirmed pending at prep time: `nirvana-marketing` (sync planner `writes=1` for the appearance route). `contemplative-records` already restored it; `ZentaraHQ` shows no pending write.
|
|
15
|
+
|
|
16
|
+
## Required actions
|
|
17
|
+
|
|
18
|
+
1. The new template route `ui/src/routes/settings/appearance.tsx` propagates automatically via `/external sync` (registry entry `external-sync-feature-route-baseline`, `sync-preservation`). No manual file copy needed — running the prepared sync applies it.
|
|
19
|
+
2. **Per-tenant nav entry is NOT propagated.** `core/config/organization-model/navigation.ts` is project-owned (sync-preservation). For any tenant that should surface Appearance in its sidebar, manually add a `settings-appearance` entry to `navigation.sidebar.bottom.settings.children` (order `50`, after `settings-webhooks`), pointing at the appearance route.
|
|
20
|
+
|
|
21
|
+
## Verification
|
|
22
|
+
|
|
23
|
+
- After sync: `pnpm -C external/<project>/ui check-types` passes with the new route present.
|
|
24
|
+
- `pnpm sync:verify` reports `writes=0` for the synced project's `sync-plan`.
|
|
25
|
+
- The Appearance entry renders in the Settings sidebar only after the per-tenant `navigation.ts` entry is added (step 2).
|
|
26
|
+
|
|
27
|
+
## Not handled by /git-sync
|
|
28
|
+
|
|
29
|
+
`/git-sync` does not author the per-tenant `navigation.ts` nav entry — it is project-owned business content and must be added by hand per tenant. `/git-sync` also will not retroactively restore the route for tenants that were previously stripped by the old delete special-case; run the prepared `/external sync --all` to apply the new non-deleting baseline.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Ontology `surface` → `endpoint` rename + Knowledge Browser UI upgrades
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
This release bumps **both** `@elevasis/core` and `@elevasis/ui`. Two distinct changes ride it:
|
|
6
|
+
|
|
7
|
+
1. **Breaking OM contract rename (`@elevasis/core`).** The ontology kind `surface` was renamed to
|
|
8
|
+
`endpoint` to stop colliding with **navigation surfaces** (shell sidebar routes). The published
|
|
9
|
+
contract changed: the `OntologyKind` enum member `'surface'` is now `'endpoint'`, the ontology ID
|
|
10
|
+
namespace `…:surface/…` is now `…:endpoint/…`, `ontology.surfaces` is now `ontology.endpoints`,
|
|
11
|
+
and the exported `OntologySurfaceType` / `OntologySurfaceTypeSchema` are now
|
|
12
|
+
`OntologyEndpointType` / `OntologyEndpointTypeSchema`. **There is no back-compat alias** (hard
|
|
13
|
+
rename — the kind was near-dormant). Any tenant OM that still declares a `:surface/` **ontology**
|
|
14
|
+
ID will fail validation once it installs the new `@elevasis/core`.
|
|
15
|
+
|
|
16
|
+
2. **Knowledge Browser UI upgrades (`@elevasis/ui`).** Three additive, platform-substrate
|
|
17
|
+
enhancements that tenants get purely on the `@elevasis/ui` bump — no authoring change required:
|
|
18
|
+
full `ClientProfile` detail rendering in the Clients panel, clickable group child cards
|
|
19
|
+
(Profile → Identity/Branding navigate like the tree), and explanatory hover tooltips on
|
|
20
|
+
platform-vocabulary badges/edge labels. The ontology tree row + its tooltip now read
|
|
21
|
+
**"Endpoints"** instead of "Surfaces", consistent with change #1.
|
|
22
|
+
|
|
23
|
+
## Applies to
|
|
24
|
+
|
|
25
|
+
- **Change #1 (ontology rename):** every tenant whose `core/config/organization-model/` declares any
|
|
26
|
+
ontology ID with a `:surface/` segment (i.e. an entry under a System's `ontology.surfaces`).
|
|
27
|
+
**Confirmed in this train: ZERO live tenants carry any `:surface/` ontology ID** (verified by a
|
|
28
|
+
repo-wide grep across all of `external/` — only `_template` carried one, migrated in this train).
|
|
29
|
+
The 3 live derived projects (ZentaraHQ, nirvana-marketing, contemplative-records) inherit
|
|
30
|
+
`endpoint/` cleanly. Run the verification below anyway before installing the new `@elevasis/core`.
|
|
31
|
+
- **Change #2 (UI upgrades):** every template-derived project — they render on the `@elevasis/ui`
|
|
32
|
+
bump with no further action.
|
|
33
|
+
|
|
34
|
+
## Required actions
|
|
35
|
+
|
|
36
|
+
`/git-sync` / `/external sync` delivers the new `@elevasis/core` + `@elevasis/ui` dependency
|
|
37
|
+
baselines and this note. The dependency bumps install automatically; the ontology-ID rewrite (only if
|
|
38
|
+
your project authored any) is project-owned OM content and is **not** auto-applied.
|
|
39
|
+
|
|
40
|
+
1. **Install the baselines together.** Bump `@elevasis/core` and `@elevasis/ui` in the same change
|
|
41
|
+
(the baseline write from sync covers `core/package.json`, `operations/package.json`, and
|
|
42
|
+
`ui/package.json`). Do not install the new `@elevasis/core` while your OM still has any `:surface/`
|
|
43
|
+
**ontology** ID.
|
|
44
|
+
2. **Rename any ontology `surface/` IDs (only if present).** In `core/config/organization-model/`,
|
|
45
|
+
change every ontology ID `…:surface/<name>` to `…:endpoint/<name>`, and the containing
|
|
46
|
+
`ontology: { surfaces: { … } }` key to `ontology: { endpoints: { … } }`. Update every
|
|
47
|
+
cross-reference (`ownerSystemId`, `route`, links, etc.). Most tenants have nothing to change here.
|
|
48
|
+
3. **Do NOT touch navigation surfaces.** This is the critical disambiguation. The rename is
|
|
49
|
+
ontology-only. Leave `system.surfaces`, `ui.surfaces`, sidebar `SidebarSurfaceNode`s, the
|
|
50
|
+
`surfaceType` route field, the graph node kind `surface`, and `SurfaceDescribeView` **unchanged** —
|
|
51
|
+
those legitimately own the word "surface" for shell routing and are orthogonal to the ontology kind.
|
|
52
|
+
4. **Update tests.** If your `core/config/organization-model.test.ts` or contract tests assert
|
|
53
|
+
`compiled.ontology.surfaces` or a `:surface/` ontology ID, rename them to `.endpoints` /
|
|
54
|
+
`:endpoint/`. Leave any `ui.surfaces` / navigation-surface assertions alone.
|
|
55
|
+
5. **Verify, then boot.** Run the verification block, then `pnpm -C core test` and
|
|
56
|
+
`pnpm -C ui check-types` before booting the app.
|
|
57
|
+
|
|
58
|
+
## Verification
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# 1. Find any remaining ontology surface/ IDs (navigation surfaces are fine — see discriminator)
|
|
62
|
+
grep -rn ":surface/\|ontology.surfaces\|OntologySurfaceType" core/config/organization-model
|
|
63
|
+
|
|
64
|
+
# Discriminator while reading hits:
|
|
65
|
+
# ontology (RENAME) -> a ":surface/" ID segment, "ontology: { surfaces: ... }", OntologySurface*
|
|
66
|
+
# navigation (KEEP) -> bare system.surfaces / ui.surfaces, SidebarSurface*, surfaceType
|
|
67
|
+
|
|
68
|
+
# 2. Template-family coherence
|
|
69
|
+
pnpm -C core test
|
|
70
|
+
pnpm -C ui check-types
|
|
71
|
+
pnpm -C ui test:contracts
|
|
72
|
+
|
|
73
|
+
# 3. Boot must not throw OM validation (no unknown OntologyKind)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`OntologyKindSchema` must accept `endpoint` and reject `surface`; no `:surface/` ontology ID may
|
|
77
|
+
remain. Navigation surfaces must still resolve and render in the sidebar.
|
|
78
|
+
|
|
79
|
+
## Not handled by /git-sync
|
|
80
|
+
|
|
81
|
+
- `/git-sync` and `/external sync` deliver the `@elevasis/core` + `@elevasis/ui` dependency baselines
|
|
82
|
+
and this note, but they do **not** edit your `core/config/organization-model/` — tenant OM content
|
|
83
|
+
is project-owned (`sync-preservation`). The `surface/` → `endpoint/` ontology-ID rewrite in steps
|
|
84
|
+
2–4 is manual per tenant (a no-op for every current live tenant, which carries none).
|
|
85
|
+
- The Knowledge Browser UI upgrades (change #2) require **no** action — they are entirely inside
|
|
86
|
+
`@elevasis/ui` and appear on the bump.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Knowledge Browser item copy-references now resolve via `om:describe item:<domain>:<id>`
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
The Knowledge Browser used to copy an unresolvable `graph:<kind>:<uuid>` shorthand for
|
|
6
|
+
domain items (clients, roles, policies, customers, offerings, goals). Pasting that to an
|
|
7
|
+
agent led to dead ends — the OM resolver had no mount for it and `om:describe` rejected the
|
|
8
|
+
id. This train (published `@elevasis/core`, `@elevasis/sdk`, `@elevasis/ui` + the bundled
|
|
9
|
+
`om` skill) standardizes domain-item copy references on `item:<domain>:<id>`, which resolves
|
|
10
|
+
to the rich profile plus its location and governing knowledge. The `om` skill's read-folder
|
|
11
|
+
table and CLI invocation guidance changed, so derived projects must pick up the new skill
|
|
12
|
+
text and package baselines.
|
|
13
|
+
|
|
14
|
+
## Applies to
|
|
15
|
+
|
|
16
|
+
- All template-derived projects that ship the `om` skill (`.claude/skills/om/SKILL.md`).
|
|
17
|
+
- Any project whose Knowledge Browser surfaces domain items (clients, roles, policies,
|
|
18
|
+
customers, offerings, goals).
|
|
19
|
+
- Agents that consume copied Knowledge Browser references.
|
|
20
|
+
|
|
21
|
+
## Required actions
|
|
22
|
+
|
|
23
|
+
1. Pull template changes and bump the published package baselines to the versions shipped by
|
|
24
|
+
this train: `@elevasis/core`, `@elevasis/sdk`, `@elevasis/ui` (run `pnpm install` after the
|
|
25
|
+
baseline bump so the new SDK CLI and UI copy behavior are present).
|
|
26
|
+
2. Adopt the refreshed `.claude/skills/om/SKILL.md` read-folder table. It now documents
|
|
27
|
+
`item:<domain>:<id>` (resolves via `om:describe item:<domain>:<id>`), the `/by-domain/<domain>`
|
|
28
|
+
and `/by-item/<domain>/<id>` `om:ls` mounts, `group:` / `domain:` / `folder:` as
|
|
29
|
+
browser-overview references, and a legacy `graph:client:<uuid>` bridge note pointing to
|
|
30
|
+
`om:describe item:clients:<uuid>`.
|
|
31
|
+
3. Use the corrected SDK CLI invocation at a project root: `pnpm elevasis-sdk om:describe …`
|
|
32
|
+
(root script alias) or `pnpm -C operations exec elevasis-sdk om:describe …`. The old
|
|
33
|
+
`pnpm exec elevasis-sdk …` at the project root fails in a multi-package tenant — replace it.
|
|
34
|
+
|
|
35
|
+
## Verification
|
|
36
|
+
|
|
37
|
+
- `pnpm elevasis-sdk om:describe item:clients:<id>` returns the client profile, its location
|
|
38
|
+
(domain + graph id + `contains` parentage), and any governing knowledge — no dead ends.
|
|
39
|
+
- A bare/legacy `om:describe client:<uuid>` still resolves (back-compat for already-copied
|
|
40
|
+
references).
|
|
41
|
+
- `pnpm sync:verify -- <project>` shows the `.claude/skills/om/SKILL.md` write applied and no
|
|
42
|
+
remaining `om`-skill drift.
|
|
43
|
+
|
|
44
|
+
## Not handled by /git-sync
|
|
45
|
+
|
|
46
|
+
- The published-package baseline bumps (`@elevasis/core` / `@elevasis/sdk` / `@elevasis/ui`)
|
|
47
|
+
and the subsequent `pnpm install` are manual — `/git-sync` does not bump dependencies.
|
|
48
|
+
- Any project-local documentation that hand-copied the old `pnpm exec elevasis-sdk` root
|
|
49
|
+
invocation or the old `graph:<kind>:<uuid>` copy vocabulary must be corrected by the
|
|
50
|
+
maintainer; `/git-sync` stops before touching project-owned surfaces.
|
|
@@ -46,17 +46,18 @@ Edge kinds:
|
|
|
46
46
|
|
|
47
47
|
- `contains`
|
|
48
48
|
- `references`
|
|
49
|
-
- `maps_to`
|
|
50
|
-
- `uses`
|
|
51
|
-
- `governs`
|
|
52
|
-
- `
|
|
53
|
-
- `
|
|
54
|
-
- `
|
|
55
|
-
- `emits`
|
|
49
|
+
- `maps_to`
|
|
50
|
+
- `uses`
|
|
51
|
+
- `governs`
|
|
52
|
+
- `links`
|
|
53
|
+
- `affects`
|
|
54
|
+
- `emits`
|
|
56
55
|
- `originates_from`
|
|
57
56
|
- `triggers`
|
|
58
57
|
- `applies_to`
|
|
59
|
-
- `effects`
|
|
58
|
+
- `effects`
|
|
59
|
+
|
|
60
|
+
`governed-by` is a Knowledge Graph route verb for traversing incoming `governs` edges; it is not an Organization Graph edge kind.
|
|
60
61
|
|
|
61
62
|
System nodes come from the id-keyed `OrganizationModel.systems` map. Their graph IDs use `system:<id>`, such as `system:sales.crm`.
|
|
62
63
|
|
|
@@ -31,15 +31,19 @@ Layer 3: Sync Verification (pnpm sync:verify)
|
|
|
31
31
|
|
|
32
32
|
## Layer 1: Source Generation
|
|
33
33
|
|
|
34
|
-
`pnpm scaffold:sync` is the meta-script that regenerates all derived documentation and validates the output. It chains
|
|
35
|
-
|
|
36
|
-
| Script
|
|
37
|
-
|
|
|
38
|
-
| `generate
|
|
39
|
-
| `generate
|
|
40
|
-
| `
|
|
41
|
-
|
|
42
|
-
|
|
34
|
+
`pnpm scaffold:sync` is the meta-script that regenerates all derived documentation and validates the output. It chains seven sub-scripts:
|
|
35
|
+
|
|
36
|
+
| Script | Input | Output |
|
|
37
|
+
| ---------------------- | --------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
|
|
38
|
+
| `scaffold:generate` | Scaffold contract and feature-registry sources | `packages/core/src/reference/_generated/**`, `packages/ui/src/scaffold/_generated/feature-registry.md` |
|
|
39
|
+
| `knowledge:generate` | Elevasis core knowledge nodes and UI knowledge body sources | Generated knowledge nodes and UI knowledge bodies |
|
|
40
|
+
| `gen:sdk-catalog` | SDK catalog source definitions | SDK catalog artifacts |
|
|
41
|
+
| `gen:sdk-adapters` | SDK adapter definitions | SDK adapter artifacts |
|
|
42
|
+
| `copy-docs` | SDK docs, package-owned reference docs, scaffold docs, and `_template/.claude` config | `packages/sdk/reference/**` copied docs and scaffold reference bundle |
|
|
43
|
+
| `sdk-ref:generate` | SDK manifest and navigation sources | `packages/sdk/reference/_reference-manifest.json`, `packages/sdk/reference/_navigation.md` |
|
|
44
|
+
| `sdk-ref:check` | Generated SDK reference artifacts | Freshness validation for `packages/sdk/reference/_reference-manifest.json` and `_navigation.md` |
|
|
45
|
+
|
|
46
|
+
The final `sdk-ref:check` step validates that the reference artifacts are consistent. Exit 1 if drifted.
|
|
43
47
|
|
|
44
48
|
### Trigger Points
|
|
45
49
|
|
|
@@ -99,13 +99,14 @@ Generated files should never be edited manually. If the output is wrong, fix the
|
|
|
99
99
|
|
|
100
100
|
## SDK Build Pipeline (Reference Copy)
|
|
101
101
|
|
|
102
|
-
`packages/sdk/scripts/copy-reference-docs.mjs` runs during `pnpm --filter @elevasis/sdk build` and has
|
|
103
|
-
|
|
104
|
-
1. **Phase 1:** Copies SDK public docs from `apps/docs/content/docs/sdk/` with link rewriting and MDX escape stripping
|
|
105
|
-
2. **Phase 2:** Copies package-owned reference docs declared in reference manifests
|
|
106
|
-
3. **Phase 3:** Copies scaffold docs from co-located package sources using the `SCAFFOLD_COPIES` map
|
|
107
|
-
|
|
108
|
-
|
|
102
|
+
`packages/sdk/scripts/copy-reference-docs.mjs` runs during `pnpm --filter @elevasis/sdk build` and has four phases:
|
|
103
|
+
|
|
104
|
+
1. **Phase 1:** Copies SDK public docs from `apps/docs/content/docs/sdk/` with link rewriting and MDX escape stripping
|
|
105
|
+
2. **Phase 2:** Copies package-owned reference docs declared in reference manifests
|
|
106
|
+
3. **Phase 3:** Copies scaffold docs from co-located package sources using the `SCAFFOLD_COPIES` map
|
|
107
|
+
4. **Phase 4:** Copies `external/_template/.claude` into `packages/sdk/reference/claude-config` for tenant-facing agent configuration
|
|
108
|
+
|
|
109
|
+
The output lands in `packages/sdk/reference/` which is included in the npm package's `files` array. External projects access it via `node_modules/@elevasis/sdk/reference/`.
|
|
109
110
|
|
|
110
111
|
---
|
|
111
112
|
|
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: CLI Management Commands
|
|
3
|
-
description: elevasis-sdk management commands -- project, note, acquisition, client, agent, session, queue, schedule, om, and
|
|
3
|
+
description: elevasis-sdk management commands -- project, note, acquisition, client, agent, session, queue, schedule, om, ui, and skill subcommand families
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
This page covers the domain management commands for `elevasis-sdk`. For core SDK commands (check, deploy, exec, resources, executions, describe, creds, rename), see [CLI Reference](cli.mdx).
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## JSON-valued options
|
|
11
|
+
|
|
12
|
+
Any option that expects JSON can take inline JSON or a file reference:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
elevasis-sdk queue:select <id> --action-id approve --payload @json:tmp/queue-payload.json
|
|
16
|
+
elevasis-sdk schedule:create --name "Weekly report" --target-resource-type workflow --target-resource-id weekly-report --schedule-config @json:tmp/schedule-config.json
|
|
17
|
+
elevasis-sdk project:task:save <id> --current-state "Updated" --files-modified @json:tmp/files-modified.json
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`@json:<path>` is expanded before command parsing, so existing command handlers receive the same JSON string they would receive from an inline argument. Relative paths resolve against the Elevasis project root when the current directory is inside a project; otherwise they resolve against the current working directory. The referenced file must contain valid JSON.
|
|
21
|
+
|
|
22
|
+
Use `@json:<path>` for generated payloads, nested objects, arrays, or Windows shells. Inline JSON remains supported for small values.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
10
26
|
## elevasis-sdk project:\*
|
|
11
27
|
|
|
12
28
|
`elevasis-sdk project:*` is the canonical project-management surface. Use it for project, milestone, task, and note operations whether the caller is a human, a scripted workflow, or a slash-command router like `/project`.
|
|
@@ -42,18 +58,23 @@ elevasis-sdk project:milestone:list --project <id>
|
|
|
42
58
|
elevasis-sdk project:milestone:create --project <id> --name "Phase 1"
|
|
43
59
|
elevasis-sdk project:milestone:update <id> --status completed
|
|
44
60
|
elevasis-sdk project:milestone:update <id> --description "Updated scope description"
|
|
61
|
+
elevasis-sdk project:milestone:update <id> --checklist @json:tmp/milestone-checklist.json
|
|
45
62
|
elevasis-sdk project:milestone:delete <id>
|
|
46
63
|
```
|
|
47
64
|
|
|
48
65
|
`project:milestone:update` accepts `--description` to set or clear the milestone description. Passing an empty string clears the field, matching `project:task:update --description` semantics.
|
|
49
66
|
|
|
67
|
+
Checklist updates are full replacements. Use `--checklist <json>` for small inline arrays, or `--checklist @json:<path>` for generated JSON. `--checklist-file <path>` is also supported for checklist-specific file input.
|
|
68
|
+
|
|
50
69
|
### Tasks
|
|
51
70
|
|
|
52
71
|
```bash
|
|
53
72
|
elevasis-sdk project:task:list --project <id>
|
|
54
73
|
elevasis-sdk project:task:get <id>
|
|
55
74
|
elevasis-sdk project:task:create --project <id> --title "Implement API"
|
|
75
|
+
elevasis-sdk project:task:create --project <id> --title "Implement API" --checklist @json:tmp/task-checklist.json
|
|
56
76
|
elevasis-sdk project:task:update <id> --status in_progress
|
|
77
|
+
elevasis-sdk project:task:update <id> --checklist @json:tmp/task-checklist.json
|
|
57
78
|
elevasis-sdk project:task:delete <id>
|
|
58
79
|
```
|
|
59
80
|
|
|
@@ -68,6 +89,8 @@ elevasis-sdk project:task:save <id> --current-state <text> [--files-modified <js
|
|
|
68
89
|
- `project:task:save <id>` -- merges fields into `resume_context`; `--current-state` is required; all other flags are optional JSON arrays or plain text
|
|
69
90
|
- these commands are the CLI counterpart to `/work resume` and `/work save` style flows
|
|
70
91
|
|
|
92
|
+
Task checklist flags are also full replacements. `project:task:create`, `project:task:update`, and `project:milestone:update` support `--checklist <json>`, `--checklist @json:<path>`, and `--checklist-file <path>`. Prefer `@json:<path>` for non-trivial JSON and Windows shells because it works across JSON-valued options, not only checklist commands.
|
|
93
|
+
|
|
71
94
|
**`project:task:save` flags:**
|
|
72
95
|
|
|
73
96
|
| Flag | Description |
|
|
@@ -373,7 +396,7 @@ JWT-gated routes at the original unprefixed paths remain for the Command Center.
|
|
|
373
396
|
|
|
374
397
|
Full CRUD management for client records. The `client:*` family covers create, read, update, and delete operations at `/api/external/clients`.
|
|
375
398
|
|
|
376
|
-
For complete field definitions, filter options, and relationship semantics, see the [Clients feature documentation](/technical/features/clients).
|
|
399
|
+
For complete field definitions, filter options, and relationship semantics, see the [Clients feature documentation](/technical/features/operations/clients).
|
|
377
400
|
|
|
378
401
|
**Quick reference:**
|
|
379
402
|
|
|
@@ -650,6 +673,24 @@ Both commands install after rewriting `package.json`. The `external/_template` r
|
|
|
650
673
|
|
|
651
674
|
---
|
|
652
675
|
|
|
676
|
+
## elevasis-sdk skill:\*
|
|
677
|
+
|
|
678
|
+
Developer-facing skill tooling keeps the template `.claude/skills/` surface aligned with the live CLI catalog.
|
|
679
|
+
|
|
680
|
+
```bash
|
|
681
|
+
elevasis-sdk skill:scaffold <domain>
|
|
682
|
+
elevasis-sdk skill:check-coverage
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
- `skill:scaffold <domain>` prints a `SKILL.md` stub built from `elevasis-sdk cli --format json` for that domain. Author the curated skill at `external/_template/.claude/skills/<domain>/SKILL.md`; do not edit generated SDK reference copies directly.
|
|
686
|
+
- `skill:check-coverage` compares live CLI domains against `.claude/registries/skill-coverage.json`. Domains must be owned by a skill or explicitly waived.
|
|
687
|
+
|
|
688
|
+
The same coverage gate runs inside `elevasis-sdk check` when the coverage registry exists in the project root.
|
|
689
|
+
|
|
690
|
+
**Implementation:** `packages/sdk/src/cli/commands/skill/`
|
|
691
|
+
|
|
692
|
+
---
|
|
693
|
+
|
|
653
694
|
## Appendix: Domain Status
|
|
654
695
|
|
|
655
696
|
Current status of all SDK CLI domains. Domains marked `deferred` have no CLI commands yet.
|
|
@@ -669,6 +710,7 @@ Current status of all SDK CLI domains. Domains marked `deferred` have no CLI com
|
|
|
669
710
|
| session | `session:list`, `session:get`, `session:end` | `/api/external/sessions*` | implemented management scope |
|
|
670
711
|
| queue | `queue:list`, `queue:get`, `queue:select`, `queue:expire`, `queue:status` | `/api/external/command-queue*` | implemented |
|
|
671
712
|
| schedule | `schedule:list`, `schedule:get`, `schedule:create`, `schedule:update` | `/api/external/task-scheduler/schedules*` | implemented |
|
|
713
|
+
| skill | `skill:scaffold`, `skill:check-coverage` | local CLI catalog and `.claude/registries/skill-coverage.json` | implemented developer tooling |
|
|
672
714
|
| content | none | not scoped here | deferred |
|
|
673
715
|
| seo | none | not scoped here | deferred |
|
|
674
716
|
| monitoring | none | not scoped here | deferred |
|
package/reference/sdk/cli.mdx
CHANGED
|
@@ -13,7 +13,7 @@ pnpm add @elevasis/sdk
|
|
|
13
13
|
|
|
14
14
|
After installation, the `elevasis-sdk` binary is available in your project's `node_modules/.bin/`. Most commands require `ELEVASIS_PLATFORM_KEY` to be set in your environment or a `.env` file.
|
|
15
15
|
|
|
16
|
-
For management commands (project:\*, note:\*, acquisition:\*, client:\*, agent:\*, session:\*, queue:\*, schedule:\*, om:\*, ui:\*), see [CLI Management](cli-management.mdx).
|
|
16
|
+
For management commands (project:\*, note:\*, acquisition:\*, client:\*, agent:\*, session:\*, queue:\*, schedule:\*, om:\*, ui:\*, skill:\*), see [CLI Management](cli-management.mdx).
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
@@ -30,6 +30,7 @@ elevasis-sdk check
|
|
|
30
30
|
**Behavior:**
|
|
31
31
|
|
|
32
32
|
- Imports your `src/index.ts` and runs it through `ResourceRegistry` validation
|
|
33
|
+
- Runs the skill coverage gate when `.claude/registries/skill-coverage.json` is present, ensuring every live CLI domain is covered by a template skill or explicitly waived
|
|
33
34
|
- Catches the same errors that the platform catches at deploy time:
|
|
34
35
|
- Duplicate `resourceId` within the organization
|
|
35
36
|
- Invalid model configuration (temperature and token bounds)
|