@elevasis/sdk 1.33.1 → 1.34.1
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 +680 -197
- package/dist/index.d.ts +162 -12
- package/dist/index.js +111 -17
- package/dist/node/index.d.ts +27 -9
- package/dist/node/index.js +29 -3
- package/dist/test-utils/index.d.ts +137 -5
- package/dist/test-utils/index.js +87 -15
- package/dist/worker/index.js +79 -4
- package/package.json +8 -6
- package/reference/_navigation.md +2 -1
- package/reference/_reference-manifest.json +14 -0
- package/reference/claude-config/Overview.md +2 -3
- package/reference/claude-config/skills/om/SKILL.md +108 -50
- package/reference/claude-config/skills/om/operations/build.md +237 -0
- package/reference/claude-config/skills/project/SKILL.md +16 -14
- 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-build-systems-scaffold.md +47 -0
- package/reference/claude-config/sync-notes/2026-06-06-om-item-copy-references.md +50 -0
- package/reference/claude-config/sync-notes/2026-06-08-knowledge-base-page-not-found-fix.md +76 -0
- package/reference/claude-config/sync-notes/2026-06-09-agent-sessions-public-agent-chat-route.md +75 -0
- package/reference/claude-config/sync-notes/2026-06-09-sdk-cli-load-org-model-resolution.md +42 -0
- package/reference/sdk/cli-management.mdx +130 -24
- package/reference/sdk/cli.mdx +2 -1
- package/reference/ui/exports.mdx +1 -0
|
@@ -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,47 @@
|
|
|
1
|
+
# /om build system scaffold added to tenant template
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
The monorepo added a guided `/om build` operation (Steps 2-3 of the Building-Systems Scaffold
|
|
6
|
+
task) that sequences the full platform runbook for authoring an Organization Model System end
|
|
7
|
+
to end. This train mirrors a thinner, Codify-ceremony-framed variant of that operation into the
|
|
8
|
+
tenant template. Tenant projects author OM via the Codify ceremony (not the platform PR-review
|
|
9
|
+
runbook), so the tenant variant is scoped accordingly.
|
|
10
|
+
|
|
11
|
+
Changes in this train:
|
|
12
|
+
|
|
13
|
+
- New operation file `.claude/skills/om/operations/build.md` (Codify-framed, 8 phases).
|
|
14
|
+
- `metadata.promptSignals` in `.claude/skills/om/SKILL.md` extended with four build-intent
|
|
15
|
+
phrases: `build a system`, `design a system`, `create a system that`, `system architecture`.
|
|
16
|
+
- `## Operations` table added to `.claude/skills/om/SKILL.md` with the `build` EXECUTE row.
|
|
17
|
+
- Build-intent routing branch added to the Decision Tree section of `SKILL.md` so free-text
|
|
18
|
+
build intent routes to `/om build` before the 5-bucket read/write buckets.
|
|
19
|
+
|
|
20
|
+
## Applies to
|
|
21
|
+
|
|
22
|
+
- All template-derived projects that ship the `om` skill (`.claude/skills/om/SKILL.md`).
|
|
23
|
+
- Any project where an agent might express intent to build or design a new System.
|
|
24
|
+
|
|
25
|
+
## Required actions
|
|
26
|
+
|
|
27
|
+
1. Pull template changes so the new `build.md` operation file and the updated `SKILL.md` are
|
|
28
|
+
present in `.claude/skills/om/`.
|
|
29
|
+
2. No package baseline bumps required -- this is a pure agent-scaffold change (no published
|
|
30
|
+
package version involved).
|
|
31
|
+
3. No `pnpm install` needed unless the `/git-sync` pull also brings unrelated baseline changes.
|
|
32
|
+
|
|
33
|
+
## Verification
|
|
34
|
+
|
|
35
|
+
- `.claude/skills/om/operations/build.md` is present.
|
|
36
|
+
- `.claude/skills/om/SKILL.md` contains the `build` row in the `## Operations` table.
|
|
37
|
+
- `.claude/skills/om/SKILL.md` `metadata.promptSignals.phrases` includes `build a system`,
|
|
38
|
+
`design a system`, `create a system that`, and `system architecture`.
|
|
39
|
+
- Saying "build a system for lead gen" in chat triggers `/om` and routes to `/om build` without
|
|
40
|
+
requiring the explicit `/om build` subcommand.
|
|
41
|
+
|
|
42
|
+
## Not handled by /git-sync
|
|
43
|
+
|
|
44
|
+
- No dependency bumps or `pnpm install` required for this change alone.
|
|
45
|
+
- Any project-local documentation that references how to add a new System should be updated by
|
|
46
|
+
the maintainer to point at `/om build` as the guided entry point rather than manual Codify
|
|
47
|
+
Level-A alone.
|
|
@@ -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.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Knowledge Base "Page Not Found" hardening (KB `$nodeId` route)
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
The Knowledge Base detail route (`ui/src/routes/knowledge/$nodeId.tsx`) could render a
|
|
6
|
+
terminal full-pane **"Page Not Found"** screen for node ids it could not resolve. Two
|
|
7
|
+
distinct gaps caused it:
|
|
8
|
+
|
|
9
|
+
1. **No `folder:` branch.** Selecting a KB **folder** node (e.g. the `KNOWLEDGE > All`
|
|
10
|
+
folder) navigates to `/knowledge/folder:knowledge:all`. The route matched none of the
|
|
11
|
+
`domain:` / `group:` / `item:` prefixes, resolved to no graph node, and fell through to
|
|
12
|
+
a bare `<PageNotFound />`. The folder routing (`folder:` → `FolderDetailView`) was
|
|
13
|
+
missing from the template route entirely.
|
|
14
|
+
2. **Two hard-404 landmines.** The `!group` and `!node` fall-through branches returned
|
|
15
|
+
`<PageNotFound />`, so any stale bookmark, renamed ontology id, or snapshot drift
|
|
16
|
+
dead-ended the whole content pane.
|
|
17
|
+
|
|
18
|
+
This train delivers the hardened route that **always renders browsable content** for any
|
|
19
|
+
node id. There is **no package bump** — the fix consumes only `@elevasis/ui` exports your
|
|
20
|
+
project already has at `@2.49.0+` (`KnowledgeBrowser`, `buildKnowledgeOmTreeData`,
|
|
21
|
+
`findKnowledgeTreeNodeByValue`, `KnowledgeTreeNodeData`).
|
|
22
|
+
|
|
23
|
+
## Applies to
|
|
24
|
+
|
|
25
|
+
- Every template-derived project whose `ui/src/routes/knowledge/$nodeId.tsx` is still the
|
|
26
|
+
pre-fix version (no `folder:` branch, bare `PageNotFound` returns). If your KB renders
|
|
27
|
+
"Page Not Found" when the `All` (or any) folder node is selected, you are affected.
|
|
28
|
+
- No action is required for projects that have already customized this route to handle
|
|
29
|
+
folders and avoid hard 404s — the sync is a `merge-baseline` that **preserves your local
|
|
30
|
+
route edits** (`external-sync-feature-route-baseline`, `sync_lane_severity:
|
|
31
|
+
optional-feature-selection`).
|
|
32
|
+
|
|
33
|
+
## Required actions
|
|
34
|
+
|
|
35
|
+
`/git-sync` / `/external sync` delivers the hardened route as a baseline merge and surfaces
|
|
36
|
+
this note. The route is project-owned baseline content under the route-preservation lane,
|
|
37
|
+
so it is **merged, not force-overwritten** — review the merge if you carry local
|
|
38
|
+
customizations.
|
|
39
|
+
|
|
40
|
+
1. **Pull and review.** Run `/git-sync` (or `/external sync`) and review the merge into
|
|
41
|
+
`ui/src/routes/knowledge/$nodeId.tsx`. Accept the two changes: the new `folder:` →
|
|
42
|
+
`FolderDetailView` branch, and the replacement of both `<PageNotFound />` returns with a
|
|
43
|
+
`KnowledgeNodeFallback` (a subtle "not available" `Alert` plus the full
|
|
44
|
+
`KnowledgeBrowser`).
|
|
45
|
+
2. **No dependency change.** `@elevasis/ui` does **not** need bumping for this fix; the
|
|
46
|
+
required exports are already published. Do not add a package bump to this sync.
|
|
47
|
+
3. **Type-check, then boot.** Run `pnpm -C ui lint` (`tsc --noEmit`), then start the UI.
|
|
48
|
+
|
|
49
|
+
## Verification
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# 1. The route must no longer return a bare PageNotFound
|
|
53
|
+
grep -n "PageNotFound" ui/src/routes/knowledge/$nodeId.tsx
|
|
54
|
+
# Expect: no terminal `return <PageNotFound />` in the content branches
|
|
55
|
+
# (a folder: branch + KnowledgeNodeFallback should be present instead)
|
|
56
|
+
|
|
57
|
+
# 2. Required @elevasis/ui exports are present at your installed version
|
|
58
|
+
grep -n "KnowledgeBrowser\|buildKnowledgeOmTreeData\|findKnowledgeTreeNodeByValue" \
|
|
59
|
+
ui/src/routes/knowledge/$nodeId.tsx
|
|
60
|
+
|
|
61
|
+
# 3. Template-family coherence
|
|
62
|
+
pnpm -C ui lint
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
In the running app, select the `KNOWLEDGE > All` folder node (and any other folder/group
|
|
66
|
+
node): the content pane must render browsable Knowledge content, never a full-pane
|
|
67
|
+
"Page Not Found".
|
|
68
|
+
|
|
69
|
+
## Not handled by /git-sync
|
|
70
|
+
|
|
71
|
+
- `/git-sync` / `/external sync` deliver and merge the route baseline plus this note, but
|
|
72
|
+
they do **not** redeploy your UI. Reaching your live app requires your own UI **redeploy**
|
|
73
|
+
after the sync merge is accepted.
|
|
74
|
+
- Local customizations to `ui/src/routes/knowledge/$nodeId.tsx` are preserved by the
|
|
75
|
+
`merge-baseline` lane — if you maintain a forked KB route, reconcile the `folder:` branch
|
|
76
|
+
and the `KnowledgeNodeFallback` into your version by hand rather than discarding your edits.
|
package/reference/claude-config/sync-notes/2026-06-09-agent-sessions-public-agent-chat-route.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Agent Sessions and public agent chat route
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
This train makes `Agent Sessions` the canonical internal full-page chat surface and
|
|
6
|
+
introduces the browser-safe public agent chat substrate. Public browser clients use
|
|
7
|
+
platform-issued access grants and short-lived capability tokens; they must not call
|
|
8
|
+
server-to-server session APIs with platform API keys.
|
|
9
|
+
|
|
10
|
+
The shared public chat UI is published from `@elevasis/ui/features/public-agent-chat`.
|
|
11
|
+
The tenant route is authored after the UI package publish, then propagated through the
|
|
12
|
+
strict manifest sync.
|
|
13
|
+
|
|
14
|
+
The template Organization Model now also declares the `operations-sessions` navigation
|
|
15
|
+
surface (`/operations/sessions`). That lets template-derived tenants inherit the
|
|
16
|
+
standard Agent Sessions page or opt into the same surface from their own OM navigation
|
|
17
|
+
without hand-authoring a route.
|
|
18
|
+
|
|
19
|
+
## Applies to
|
|
20
|
+
|
|
21
|
+
- Template-derived projects that want public or code-gated agent chat links.
|
|
22
|
+
- Projects syncing the template route baseline after the `@elevasis/ui` package baseline
|
|
23
|
+
is bumped.
|
|
24
|
+
- Projects that want the internal Agent Sessions page exposed through OM-authored
|
|
25
|
+
navigation.
|
|
26
|
+
|
|
27
|
+
## Required actions
|
|
28
|
+
|
|
29
|
+
1. Accept the package baseline updates for `@elevasis/core` and `@elevasis/ui`.
|
|
30
|
+
2. Accept the new public chat route baseline once it appears in
|
|
31
|
+
`ui/src/routes/chat.$slug.tsx` and any root-shell adjustment needed to keep that route
|
|
32
|
+
outside the authenticated app shell.
|
|
33
|
+
3. If your project customizes `core/config/organization-model/navigation.ts`, merge the
|
|
34
|
+
`operations-sessions` surface into the Operations group:
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
'operations-sessions': {
|
|
38
|
+
type: 'surface',
|
|
39
|
+
label: 'Agent Sessions',
|
|
40
|
+
path: '/operations/sessions',
|
|
41
|
+
surfaceType: 'list',
|
|
42
|
+
order: 30
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
4. Run the project UI install and typecheck/build after sync:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
pnpm -C ui install
|
|
50
|
+
pnpm -C ui check-types
|
|
51
|
+
pnpm -C ui build
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
5. Configure platform-side public agent access grants before sharing a public chat URL.
|
|
55
|
+
|
|
56
|
+
## Verification
|
|
57
|
+
|
|
58
|
+
After sync, verify the OM exposes the Agent Sessions navigation surface:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
grep -n "operations-sessions\\|Agent Sessions\\|/operations/sessions" core/config/organization-model/navigation.ts
|
|
62
|
+
pnpm -C core test
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Security notes
|
|
66
|
+
|
|
67
|
+
- Browser code must use the public grant/capability-token flow.
|
|
68
|
+
- Do not expose `ELEVASIS_PLATFORM_KEY` or operations API keys in browser code.
|
|
69
|
+
- Public turns use the public WebSocket route backed by a capability token.
|
|
70
|
+
|
|
71
|
+
## Not handled by /git-sync
|
|
72
|
+
|
|
73
|
+
`/git-sync` does not create production access grants, choose which agents are public,
|
|
74
|
+
merge project-owned OM customizations automatically, or redeploy tenant UIs. Those are
|
|
75
|
+
project/operator decisions after the code and package baselines are accepted.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# SDK CLI `om:*` tenant Organization Model loader fix
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
The `@elevasis/sdk` CLI `om:*` read commands could return an empty model in standard
|
|
6
|
+
template-derived pnpm-workspace projects even when `core/config/organization-model.ts`
|
|
7
|
+
contained real systems and resources. The loader resolved `esbuild` and external
|
|
8
|
+
package imports from the project root, but template projects install SDK runtime
|
|
9
|
+
dependencies under `operations/`.
|
|
10
|
+
|
|
11
|
+
This train publishes an SDK loader fix. Tenant source does not need to change, but
|
|
12
|
+
`operations/package.json` must pick up the new `@elevasis/sdk` baseline.
|
|
13
|
+
|
|
14
|
+
## Applies to
|
|
15
|
+
|
|
16
|
+
- Template-derived projects that run `elevasis-sdk om:ls`, `om:search`, `om:describe`,
|
|
17
|
+
`om:cat`, `om:graph`, or `om:skills` from `operations/`.
|
|
18
|
+
- Projects whose `om:*` output is unexpectedly empty despite a valid
|
|
19
|
+
`core/config/organization-model.ts`.
|
|
20
|
+
|
|
21
|
+
## Required actions
|
|
22
|
+
|
|
23
|
+
1. Accept the `operations/package.json` `@elevasis/sdk` baseline bump delivered by
|
|
24
|
+
`/external sync`.
|
|
25
|
+
2. Run the operations install after the sync so the published CLI binary is updated.
|
|
26
|
+
|
|
27
|
+
## Verification
|
|
28
|
+
|
|
29
|
+
Verify the tenant model loads from the published CLI:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pnpm -C operations exec elevasis-sdk om:ls /all-systems
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The command should list the tenant's authored systems instead of returning an empty
|
|
36
|
+
result.
|
|
37
|
+
|
|
38
|
+
## Not handled by /git-sync
|
|
39
|
+
|
|
40
|
+
`/git-sync` pulls template guidance into a derived project. It does not publish the SDK,
|
|
41
|
+
install dependencies inside every standalone project, or redeploy any project. Run the
|
|
42
|
+
project-local install and deployment steps after accepting the sync.
|
|
@@ -1,12 +1,48 @@
|
|
|
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
|
+
### Passing JSON arguments across shells
|
|
25
|
+
|
|
26
|
+
Agents launch `elevasis-sdk` from either bash or PowerShell, so JSON quoting guidance must hold for both. A JSON argument crosses two parsers before the CLI sees it:
|
|
27
|
+
|
|
28
|
+
1. **The outer shell** (bash or PowerShell) -- decides whether embedded `"` survive.
|
|
29
|
+
2. **The pnpm run-script layer** -- `pnpm elevasis-sdk ...` is an npm run-script. On Windows, pnpm runs scripts through `cmd.exe /c`, which re-parses arguments. `pnpm exec elevasis-sdk` and direct bin calls do not add this layer.
|
|
30
|
+
|
|
31
|
+
Each shell fails at a different layer, so a single inline-quoting fix does not cover both.
|
|
32
|
+
|
|
33
|
+
- **bash** preserves embedded double quotes, so inline JSON survives the shell itself. The failure is the `pnpm <run-script>` wrapper's `cmd.exe` re-parse: `cmd` treats `( ) & < > | ^ %` as metacharacters, and a value containing them aborts with `<X> was unexpected at this time.` before the CLI runs. Keep inline JSON ASCII and metacharacter-free, or bypass the run-script layer with the direct exec form (`pnpm -C operations exec elevasis-sdk ...`).
|
|
34
|
+
- **Windows PowerShell 5.1** strips embedded double quotes when calling a native exe (`node`, `pnpm`), with or without pnpm. The stop-parsing token `--%` and backslash-escaped quotes both fail. There is no reliable inline-JSON route. PowerShell 7+ fixes this class via `$PSNativeCommandArgumentPassing = 'Standard'`.
|
|
35
|
+
|
|
36
|
+
**Cross-shell rule:** file-based input is shell-agnostic -- only a path crosses the shell boundary. Prefer `@json:<path>` (or `-f` / `--input-file` for `exec` and `request:submit`) for any non-trivial JSON, and write the file with an editor rather than a shell heredoc.
|
|
37
|
+
|
|
38
|
+
| Shell | Inline JSON | Why | Use instead |
|
|
39
|
+
| -------------- | --------------------------------------- | --------------------------------------------- | ------------------------------------ |
|
|
40
|
+
| bash | OK if values avoid `( ) & < > | ^ %` | run-script `cmd.exe` re-parses metacharacters | direct exec form, or `@json:<path>` |
|
|
41
|
+
| PowerShell 5.1 | Never reliable | strips embedded `"`; `--%` and `\"` both fail | `@json:<path>` |
|
|
42
|
+
| either | n/a | path arguments avoid all JSON shell escaping | `@json:<path>` + editor-written file |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
10
46
|
## elevasis-sdk project:\*
|
|
11
47
|
|
|
12
48
|
`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 +78,23 @@ elevasis-sdk project:milestone:list --project <id>
|
|
|
42
78
|
elevasis-sdk project:milestone:create --project <id> --name "Phase 1"
|
|
43
79
|
elevasis-sdk project:milestone:update <id> --status completed
|
|
44
80
|
elevasis-sdk project:milestone:update <id> --description "Updated scope description"
|
|
81
|
+
elevasis-sdk project:milestone:update <id> --checklist @json:tmp/milestone-checklist.json
|
|
45
82
|
elevasis-sdk project:milestone:delete <id>
|
|
46
83
|
```
|
|
47
84
|
|
|
48
85
|
`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
86
|
|
|
87
|
+
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.
|
|
88
|
+
|
|
50
89
|
### Tasks
|
|
51
90
|
|
|
52
91
|
```bash
|
|
53
92
|
elevasis-sdk project:task:list --project <id>
|
|
54
93
|
elevasis-sdk project:task:get <id>
|
|
55
94
|
elevasis-sdk project:task:create --project <id> --title "Implement API"
|
|
95
|
+
elevasis-sdk project:task:create --project <id> --title "Implement API" --checklist @json:tmp/task-checklist.json
|
|
56
96
|
elevasis-sdk project:task:update <id> --status in_progress
|
|
97
|
+
elevasis-sdk project:task:update <id> --checklist @json:tmp/task-checklist.json
|
|
57
98
|
elevasis-sdk project:task:delete <id>
|
|
58
99
|
```
|
|
59
100
|
|
|
@@ -68,6 +109,8 @@ elevasis-sdk project:task:save <id> --current-state <text> [--files-modified <js
|
|
|
68
109
|
- `project:task:save <id>` -- merges fields into `resume_context`; `--current-state` is required; all other flags are optional JSON arrays or plain text
|
|
69
110
|
- these commands are the CLI counterpart to `/work resume` and `/work save` style flows
|
|
70
111
|
|
|
112
|
+
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.
|
|
113
|
+
|
|
71
114
|
**`project:task:save` flags:**
|
|
72
115
|
|
|
73
116
|
| Flag | Description |
|
|
@@ -373,7 +416,7 @@ JWT-gated routes at the original unprefixed paths remain for the Command Center.
|
|
|
373
416
|
|
|
374
417
|
Full CRUD management for client records. The `client:*` family covers create, read, update, and delete operations at `/api/external/clients`.
|
|
375
418
|
|
|
376
|
-
For complete field definitions, filter options, and relationship semantics, see the [Clients feature documentation](/technical/features/clients).
|
|
419
|
+
For complete field definitions, filter options, and relationship semantics, see the [Clients feature documentation](/technical/features/operations/clients).
|
|
377
420
|
|
|
378
421
|
**Quick reference:**
|
|
379
422
|
|
|
@@ -423,21 +466,65 @@ elevasis-sdk agent:get <id>
|
|
|
423
466
|
|
|
424
467
|
## elevasis-sdk session:\*
|
|
425
468
|
|
|
426
|
-
|
|
469
|
+
Create, operate, inspect, and export multi-turn agent sessions. Use `elevasis-sdk exec`
|
|
470
|
+
for one-off workflow or agent execution; use `elevasis-sdk session:*` when the deployed
|
|
471
|
+
agent is `sessionCapable` and needs transcript persistence across turns.
|
|
427
472
|
|
|
428
473
|
```bash
|
|
474
|
+
elevasis-sdk session:create <resourceId>
|
|
475
|
+
elevasis-sdk session:turn <id> -f tmp/turn-1.json
|
|
476
|
+
elevasis-sdk session:messages <id>
|
|
429
477
|
elevasis-sdk session:list
|
|
430
478
|
elevasis-sdk session:get <id>
|
|
431
479
|
elevasis-sdk session:end <id>
|
|
432
480
|
```
|
|
433
481
|
|
|
482
|
+
- `session:create <resourceId>` -- create a session for a session-capable deployed agent
|
|
483
|
+
- `session:turn <id>` -- execute a turn in an active session; pass input with `--input`
|
|
484
|
+
or `--input-file`
|
|
485
|
+
- `session:messages <id>` -- export the full transcript by default; use `--page` for a
|
|
486
|
+
single paginated API read
|
|
434
487
|
- `session:list` -- list sessions for the organization; supports filtering by resource ID, user ID, and limit
|
|
435
|
-
- `session:get <id>` -- get
|
|
488
|
+
- `session:get <id>` -- get session state and metadata
|
|
436
489
|
- `session:end <id>` -- gracefully end an active session
|
|
437
490
|
|
|
438
|
-
**API routes:** `
|
|
491
|
+
**API routes:** `POST /api/external/sessions`, `GET /api/external/sessions`,
|
|
492
|
+
`GET /api/external/sessions/:id`, `POST /api/external/sessions/:id/turns`,
|
|
493
|
+
`GET /api/external/sessions/:id/messages`, `POST /api/external/sessions/:id/end`
|
|
439
494
|
|
|
440
|
-
|
|
495
|
+
Hard deletion is intentionally not part of `session:end`; any destructive delete surface
|
|
496
|
+
must be exposed as a separate explicit command.
|
|
497
|
+
|
|
498
|
+
**`session:create` flags:**
|
|
499
|
+
|
|
500
|
+
| Flag | Description |
|
|
501
|
+
| --------------------- | ------------------------------ |
|
|
502
|
+
| `--user-id <id>` | Optional user ID for session |
|
|
503
|
+
| `--metadata <json>` | Optional session metadata JSON |
|
|
504
|
+
| `--json` | Output as JSON |
|
|
505
|
+
| `--api-url <url>` | Override the API base URL |
|
|
506
|
+
|
|
507
|
+
**`session:turn` flags:**
|
|
508
|
+
|
|
509
|
+
| Flag | Description |
|
|
510
|
+
| --------------------------- | -------------------------------------------- |
|
|
511
|
+
| `-i, --input <json>` | Turn input as JSON |
|
|
512
|
+
| `-f, --input-file <path>` | Read turn input from a JSON file |
|
|
513
|
+
| `--json` | Output as JSON |
|
|
514
|
+
| `--api-url <url>` | Override the API base URL |
|
|
515
|
+
|
|
516
|
+
**`session:messages` flags:**
|
|
517
|
+
|
|
518
|
+
| Flag | Description |
|
|
519
|
+
| --------------------- | ----------------------------------------------------------- |
|
|
520
|
+
| `--limit <limit>` | Messages per API page; default comes from the API |
|
|
521
|
+
| `--cursor <cursor>` | Message index cursor to start after |
|
|
522
|
+
| `--page` | Fetch one API page for debugging instead of all pages |
|
|
523
|
+
| `--all` | Fetch all pages; this is the default transcript export mode |
|
|
524
|
+
| `--json` | Output as JSON |
|
|
525
|
+
| `--api-url <url>` | Override the API base URL |
|
|
526
|
+
|
|
527
|
+
**`session:list` flags:**
|
|
441
528
|
|
|
442
529
|
| Flag | Description |
|
|
443
530
|
| ---------------------- | ------------------------------------ |
|
|
@@ -650,28 +737,47 @@ Both commands install after rewriting `package.json`. The `external/_template` r
|
|
|
650
737
|
|
|
651
738
|
---
|
|
652
739
|
|
|
740
|
+
## elevasis-sdk skill:\*
|
|
741
|
+
|
|
742
|
+
Developer-facing skill tooling keeps the template `.claude/skills/` surface aligned with the live CLI catalog.
|
|
743
|
+
|
|
744
|
+
```bash
|
|
745
|
+
elevasis-sdk skill:scaffold <domain>
|
|
746
|
+
elevasis-sdk skill:check-coverage
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
- `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.
|
|
750
|
+
- `skill:check-coverage` compares live CLI domains against `.claude/registries/skill-coverage.json`. Domains must be owned by a skill or explicitly waived.
|
|
751
|
+
|
|
752
|
+
The same coverage gate runs inside `elevasis-sdk check` when the coverage registry exists in the project root.
|
|
753
|
+
|
|
754
|
+
**Implementation:** `packages/sdk/src/cli/commands/skill/`
|
|
755
|
+
|
|
756
|
+
---
|
|
757
|
+
|
|
653
758
|
## Appendix: Domain Status
|
|
654
759
|
|
|
655
760
|
Current status of all SDK CLI domains. Domains marked `deferred` have no CLI commands yet.
|
|
656
761
|
|
|
657
|
-
| Domain | CLI surface | API surface
|
|
658
|
-
| ----------- | ------------------------------------------------------------------------- |
|
|
659
|
-
| platform | top-level SDK commands | mixed platform APIs
|
|
660
|
-
| project | `project:*` | `apps/api/src/projects/`
|
|
661
|
-
| knowledge | `knowledge:*` | file/generated knowledge data
|
|
662
|
-
| creds | `creds *` nested Commander group | credentials API
|
|
663
|
-
| ui | `ui:*` | local project file edits
|
|
664
|
-
| request | `request:submit`, `request:list`, `request:get` | requests API
|
|
665
|
-
| error | `error resolve`, `error resolve-execution` | execution error APIs
|
|
666
|
-
| acquisition | `acquisition:list:*`, `acquisition:deal:*` | `/api/external/acquisition/lists*`, `/api/external/deals*`
|
|
667
|
-
| client | `client:*` | `/api/external/clients`
|
|
668
|
-
| agent | `agent:list`, `agent:get` | `/api/external/agents*`
|
|
669
|
-
| session | `session:list`, `session:get`, `session:end`
|
|
670
|
-
| queue | `queue:list`, `queue:get`, `queue:select`, `queue:expire`, `queue:status` | `/api/external/command-queue*`
|
|
671
|
-
| schedule | `schedule:list`, `schedule:get`, `schedule:create`, `schedule:update` | `/api/external/task-scheduler/schedules*`
|
|
672
|
-
|
|
|
673
|
-
|
|
|
674
|
-
|
|
|
762
|
+
| Domain | CLI surface | API surface | Status |
|
|
763
|
+
| ----------- | ------------------------------------------------------------------------- | -------------------------------------------------------------- | ----------------------------- |
|
|
764
|
+
| platform | top-level SDK commands | mixed platform APIs | implemented |
|
|
765
|
+
| project | `project:*` | `apps/api/src/projects/` | implemented |
|
|
766
|
+
| knowledge | `knowledge:*` | file/generated knowledge data | implemented |
|
|
767
|
+
| creds | `creds *` nested Commander group | credentials API | implemented |
|
|
768
|
+
| ui | `ui:*` | local project file edits | implemented |
|
|
769
|
+
| request | `request:submit`, `request:list`, `request:get` | requests API | implemented read/write scope |
|
|
770
|
+
| error | `error resolve`, `error resolve-execution` | execution error APIs | partial |
|
|
771
|
+
| acquisition | `acquisition:list:*`, `acquisition:deal:*` | `/api/external/acquisition/lists*`, `/api/external/deals*` | implemented read-only scope |
|
|
772
|
+
| client | `client:*` | `/api/external/clients` | implemented read/write scope |
|
|
773
|
+
| agent | `agent:list`, `agent:get` | `/api/external/agents*` | implemented read-only scope |
|
|
774
|
+
| session | `session:create`, `session:turn`, `session:messages`, `session:list`, `session:get`, `session:end` | `/api/external/sessions*` | implemented multi-turn scope |
|
|
775
|
+
| queue | `queue:list`, `queue:get`, `queue:select`, `queue:expire`, `queue:status` | `/api/external/command-queue*` | implemented |
|
|
776
|
+
| schedule | `schedule:list`, `schedule:get`, `schedule:create`, `schedule:update` | `/api/external/task-scheduler/schedules*` | implemented |
|
|
777
|
+
| skill | `skill:scaffold`, `skill:check-coverage` | local CLI catalog and `.claude/registries/skill-coverage.json` | implemented developer tooling |
|
|
778
|
+
| content | none | not scoped here | deferred |
|
|
779
|
+
| seo | none | not scoped here | deferred |
|
|
780
|
+
| monitoring | none | not scoped here | deferred |
|
|
675
781
|
|
|
676
782
|
### Promotion Criteria
|
|
677
783
|
|
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)
|
package/reference/ui/exports.mdx
CHANGED
|
@@ -25,6 +25,7 @@ description: "Auto-generated catalog of all published @elevasis/ui subpath expor
|
|
|
25
25
|
| `@elevasis/ui/features/delivery` | Features Delivery | Features | Published delivery feature surface for downstream shells. |
|
|
26
26
|
| `@elevasis/ui/features/lead-gen` | Features Lead Gen | Features | Published lead generation feature surface for downstream shells. |
|
|
27
27
|
| `@elevasis/ui/features/operations` | Features Operations | Features | Published operations feature surface for downstream shells. |
|
|
28
|
+
| `@elevasis/ui/features/public-agent-chat` | Features Public Agent Chat | Features | Published public agent chat surface for downstream shells. |
|
|
28
29
|
| `@elevasis/ui/features/monitoring` | Features Monitoring | Features | Published monitoring feature surface for downstream shells. |
|
|
29
30
|
| `@elevasis/ui/features/monitoring/requests` | Features Monitoring Requests | Features | Published submitted-requests list, detail, and triage surface for downstream shells. |
|
|
30
31
|
| `@elevasis/ui/features/seo` | Features SEO | Features | Published SEO feature surface for downstream shells. |
|