@elevasis/sdk 1.31.0 → 1.33.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 +526 -225
- package/dist/index.d.ts +71 -5
- package/dist/node/index.d.ts +65 -2
- package/dist/test-utils/index.d.ts +71 -5
- package/package.json +3 -3
- package/reference/claude-config/Overview.md +123 -0
- package/reference/claude-config/registries/skill-coverage.json +19 -0
- package/reference/claude-config/skills/client/SKILL.md +201 -0
- package/reference/claude-config/skills/elevasis/SKILL.md +244 -235
- package/reference/claude-config/skills/om/SKILL.md +56 -5
- package/reference/claude-config/skills/om/operations/features.md +12 -5
- package/reference/claude-config/skills/om/operations/scaffold.md +10 -0
- package/reference/claude-config/skills/setup/SKILL.md +9 -0
- package/reference/claude-config/sync-notes/2026-05-30-client-source-and-om-profiles.md +39 -0
- package/reference/claude-config/sync-notes/2026-06-02-knowledge-nested-group-routing.md +27 -0
- package/reference/claude-config/sync-notes/2026-06-02-nest-projects-under-platform.md +45 -0
- package/reference/claude-config/sync-notes/2026-06-03-skill-autogen-and-client-skill.md +34 -0
- package/reference/rules/agent-start-here.md +8 -2
- package/reference/rules/organization-os.md +11 -7
- package/reference/rules/package-taxonomy.md +4 -0
- package/reference/scaffold/recipes/customize-knowledge-browser.md +23 -26
- package/reference/scaffold/reference/contracts.md +54 -0
- package/reference/scaffold/reference/feature-registry.md +1 -1
- package/reference/scaffold/ui/composition-extensibility.mdx +1 -1
- package/reference/sdk/cli-management.mdx +2 -2
- package/reference/sdk/framework/agent.mdx +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Client Source and OM Client Profiles
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
The client-system release train adds first-class client source support across the platform and introduces top-level Organization Model client profiles in `@elevasis/core/organization-model`.
|
|
6
|
+
|
|
7
|
+
Template-derived projects need the updated package baselines and guidance before relying on the shared clients UI, SDK client commands, or OM client-profile helpers. Tenant-authored client profile content remains project-owned and is not auto-generated by sync.
|
|
8
|
+
|
|
9
|
+
## Applies to
|
|
10
|
+
|
|
11
|
+
- Projects that use the shared `@elevasis/ui` clients feature.
|
|
12
|
+
- Projects that create or update clients through `elevasis-sdk client:create` or `elevasis-sdk client:update`.
|
|
13
|
+
- Projects that intentionally author real client profiles in `core/config/organization-model.ts`.
|
|
14
|
+
- Projects that deploy operations bundles against the updated `@elevasis/sdk` baseline.
|
|
15
|
+
|
|
16
|
+
## Required actions
|
|
17
|
+
|
|
18
|
+
1. Pull the package baseline updates from the prepared `/sdk ship` train.
|
|
19
|
+
2. Use the first-class client `source` field for direct clients, for example `word_of_mouth`, instead of storing the primary source only in ad hoc metadata.
|
|
20
|
+
3. If the project intentionally authors OM client profiles, key `organizationModel.clients` by the canonical production `public.clients.id`; the profile `id` must match the same UUID.
|
|
21
|
+
4. Keep tenant-specific client profile records, prompts, branding, workspace links, and custom values project-owned. Do not copy Elevasis or another tenant's client profiles into this project.
|
|
22
|
+
5. Treat `Organization > Clients` as the semantic home for real client profiles and `Systems > Client Management` as the operational platform system.
|
|
23
|
+
|
|
24
|
+
## Verification
|
|
25
|
+
|
|
26
|
+
Run the checks that match the project surface:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pnpm -C core check-types
|
|
30
|
+
pnpm -C operations check-types
|
|
31
|
+
pnpm -C operations check
|
|
32
|
+
pnpm -C ui check-types
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
For projects that author OM client profiles, also run the project-local OM validation or deploy preflight before publishing operations resources.
|
|
36
|
+
|
|
37
|
+
## Not handled by /git-sync
|
|
38
|
+
|
|
39
|
+
`/git-sync` can propagate the updated package baselines and this guidance, but it does not create tenant-specific `clients` rows, choose client source values, author OM client profile content, or decide whether a project should model a client profile at all. Maintainers must make those project-specific data and authoring decisions intentionally.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Knowledge nested-group routing fix
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
`@elevasis/ui` now exports `findOmTreeGroup` (and `OM_NESTED_TREE_GROUPS`) from `@elevasis/ui/knowledge`. The Knowledge Base `$nodeId` route must use `findOmTreeGroup` to resolve `group:` nodes instead of the direct `OM_TREE_GROUPS.find`. Without this, clicking the nested **Profile** and **Business Model** subgroups under Organization renders "Page Not Found", because those keys live in nested subgroups (not in the top-level `OM_TREE_GROUPS` list).
|
|
6
|
+
|
|
7
|
+
## Applies to
|
|
8
|
+
|
|
9
|
+
- Any project whose `ui/src/routes/knowledge/$nodeId.tsx` resolves `group:` route params against `OM_TREE_GROUPS`.
|
|
10
|
+
- Projects on `@elevasis/ui` < `2.44.0`.
|
|
11
|
+
|
|
12
|
+
## Required actions
|
|
13
|
+
|
|
14
|
+
1. Bump `@elevasis/ui` to `^2.44.0` and install.
|
|
15
|
+
2. In `ui/src/routes/knowledge/$nodeId.tsx`:
|
|
16
|
+
- Replace the `OM_TREE_GROUPS` import from `@elevasis/ui/knowledge` with `findOmTreeGroup`.
|
|
17
|
+
- Replace `OM_TREE_GROUPS.find((candidate) => candidate.key === groupKey)` with `findOmTreeGroup(groupKey)`.
|
|
18
|
+
|
|
19
|
+
## Verification
|
|
20
|
+
|
|
21
|
+
- `pnpm -C ui check-types` passes.
|
|
22
|
+
- `pnpm -C ui build` succeeds.
|
|
23
|
+
- In the running app, the Knowledge Base **Profile** and **Business Model** rows under Organization open a describe view instead of "Page Not Found".
|
|
24
|
+
|
|
25
|
+
## Not handled by /git-sync
|
|
26
|
+
|
|
27
|
+
`/git-sync` does not edit project route source. The `$nodeId.tsx` swap to `findOmTreeGroup` is a manual route edit (or applied via `/external sync` route-baseline merge); `/git-sync` only surfaces this note and installs the bumped dependency.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Nest `projects` under `platform` (fleet-wide OM reparent)
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
The shared `@elevasis/ui` `deliveryManifest` now emits `systemId: 'platform.projects'` (it consumes the republished `@elevasis/core` constant `PROJECTS_SYSTEM_ID`, which flipped from `'projects'` to `'platform.projects'`). Any tenant Organization Model that still declares a **root-level** `projects` system will fail `validateManifests` on boot once it installs the new `@elevasis/ui`, because the delivery manifest references a `systemId` that does not exist in the tenant OM.
|
|
6
|
+
|
|
7
|
+
This is a fleet-wide convention change: `projects` is now a child of `platform` (canonical id `platform.projects`) everywhere — Elevasis, the template, and every derived tenant.
|
|
8
|
+
|
|
9
|
+
## Applies to
|
|
10
|
+
|
|
11
|
+
- Every tenant whose `core/config/organization-model/` declares a root `projects` system (work-item / checkpoint shape) and a root `platform` system to nest it under.
|
|
12
|
+
- Confirmed in this train: `ZentaraHQ`, `nirvana-marketing`. Run the verification below in any other derived project before installing the new `@elevasis/ui`.
|
|
13
|
+
|
|
14
|
+
## Required actions
|
|
15
|
+
|
|
16
|
+
Apply these in your own `core/config/organization-model/` (this is project-owned OM content — `/external sync` does NOT overwrite it; reparent it yourself via `/om`):
|
|
17
|
+
|
|
18
|
+
1. **Reparent the system.** In `systems.ts`, move the `projects` system block under the existing `platform` system. Set `id: 'platform.projects'` and add `parentSystemId: 'platform'`. Leave the object key, route `path`, and icon as-is.
|
|
19
|
+
2. **Rewrite ontology IDs.** Change every `projects:*` ontology id to `platform.projects:*` (objects, links, actions, catalogs, events, surfaces) — including all cross-references (`ownerSystemId`, `objectType`, `catalogType`, `from`/`to`).
|
|
20
|
+
3. **Navigation.** In `navigation.ts`, update any `targets: { systems: ['projects'] }` to `['platform.projects']`.
|
|
21
|
+
4. **Profile / roles.** In `profile.ts` (or `roles.ts`), update `deliveryFeatureId` / role `responsibleFor` references from `projects` to `platform.projects`.
|
|
22
|
+
5. **Tests.** Update `core/config/organization-model.test.ts`, `organization-model.contract.test.ts`, and `ui/src/routes/__tests__/__root.test.tsx` assertions that reference the `projects` system id, parent, or ontology ids.
|
|
23
|
+
6. **Install + reparent together.** Bump `@elevasis/core` and `@elevasis/ui` (see the dependency baseline written by `/external sync`), reparent the OM in the **same** change, then `pnpm -C core test` and `pnpm -C ui check-types` before booting the app. Do not install the new `@elevasis/ui` while the OM still has root `projects`.
|
|
24
|
+
|
|
25
|
+
Route file paths (`ui/src/routes/projects*.tsx`) stay at `/projects`; only OM ids and nav/profile targets change.
|
|
26
|
+
|
|
27
|
+
## Verification
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 1. Find any remaining root projects references
|
|
31
|
+
grep -rn "'projects'\|projects:" core/config/organization-model ui/src/routes
|
|
32
|
+
|
|
33
|
+
# 2. Template-family coherence
|
|
34
|
+
pnpm -C core test
|
|
35
|
+
pnpm -C ui check-types
|
|
36
|
+
pnpm -C ui test:contracts
|
|
37
|
+
|
|
38
|
+
# 3. Boot must not throw validateManifests (deliveryManifest systemId must resolve)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`platform.projects` must resolve as a child System of `platform`, and the delivery surface must render under it.
|
|
42
|
+
|
|
43
|
+
## Not handled by /git-sync
|
|
44
|
+
|
|
45
|
+
`/git-sync` and `/external sync` will deliver the new `@elevasis/core` + `@elevasis/ui` dependency baselines and this note, but they will **not** edit your `core/config/organization-model/` — tenant OM content is project-owned (`sync-preservation`). The reparent in steps 1-5 is manual per tenant. Installing the new `@elevasis/ui` without doing the reparent first will crash the app on boot.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Skill autogen and `/client` skill
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
This train adds the template `/client` skill, a generated `.claude/Overview.md` skill and bundled-rules inventory, `skill-coverage.json`, and capability-query guidance that points agents to `elevasis-sdk cli` as the live command surface.
|
|
6
|
+
|
|
7
|
+
It also ships new `@elevasis/sdk` CLI support for `skill:scaffold` and `skill:check-coverage`, and extends `elevasis-sdk check` so future CLI domains cannot land without either skill ownership or an explicit waiver.
|
|
8
|
+
|
|
9
|
+
## Applies to
|
|
10
|
+
|
|
11
|
+
- Every template-derived project that carries `.claude/` skills from `external/_template`.
|
|
12
|
+
- Projects that use `elevasis-sdk check` as their local validation gate.
|
|
13
|
+
- Operators using Claude Code skills to discover or manage clients through the existing `client:*` CLI domain.
|
|
14
|
+
|
|
15
|
+
## Required actions
|
|
16
|
+
|
|
17
|
+
1. Run the prepared external sync so `.claude/skills/client/`, `.claude/Overview.md`, `.claude/registries/skill-coverage.json`, and the updated setup/elevasis skill guidance are copied from the template.
|
|
18
|
+
2. Install the new `@elevasis/sdk` baseline in `operations/package.json` after the SDK publish stage.
|
|
19
|
+
3. Run `pnpm -C operations exec elevasis-sdk check` in each project to verify skill coverage against the live CLI catalog.
|
|
20
|
+
4. Use `elevasis-sdk cli` when answering "what can I do?" or auditing available CLI domains; do not rely on stale prose inventories.
|
|
21
|
+
|
|
22
|
+
## Verification
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pnpm -C operations exec elevasis-sdk cli client
|
|
26
|
+
pnpm -C operations exec elevasis-sdk check
|
|
27
|
+
pnpm -C operations exec elevasis-sdk skill:check-coverage
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The project should contain `.claude/skills/client/SKILL.md`, `.claude/Overview.md`, and `.claude/registries/skill-coverage.json` after sync.
|
|
31
|
+
|
|
32
|
+
## Not handled by /git-sync
|
|
33
|
+
|
|
34
|
+
`/git-sync` does not infer skill coverage or regenerate local command inventories. It can deliver the synced files, but maintainers still need to install the new SDK baseline and run the verification commands above. Project-owned `CLAUDE.md` content remains verify-only; the authoritative generated inventory is `.claude/Overview.md`.
|
|
@@ -65,7 +65,6 @@ Once project continuity is resolved (or confirmed irrelevant), the template is n
|
|
|
65
65
|
- `operations/` -- Elevasis SDK resources deployed to the platform
|
|
66
66
|
- `core/` -- runtime-agnostic shared contracts and organization model adaptation
|
|
67
67
|
- `.claude/` -- local agent rules, skills, and hooks
|
|
68
|
-
- `client-workspace/` -- optional separate knowledge workspace for richer team knowledge management
|
|
69
68
|
- `node_modules/@elevasis/sdk/reference/scaffold/` -- SDK reference scaffold: canonical recipes, UI patterns, gating model, contracts, and glossary. Entry point: `index.mdx`.
|
|
70
69
|
|
|
71
70
|
## Discovery Order
|
|
@@ -157,7 +156,7 @@ Load first:
|
|
|
157
156
|
- `node_modules/@elevasis/sdk/reference/scaffold/index.mdx` (scaffold index -- contracts, gating patterns, glossary)
|
|
158
157
|
- `core/config/README.md`
|
|
159
158
|
- `node_modules/@elevasis/sdk/reference/scaffold/reference/contracts.md`
|
|
160
|
-
- typed feature/surface constants from `@elevasis/core/organization-model` -- `
|
|
159
|
+
- typed feature/surface constants from `@elevasis/core/organization-model` -- `SALES_FEATURE_ID`, `PROSPECTING_FEATURE_ID`, `PROJECTS_FEATURE_ID`, `OPERATIONS_FEATURE_ID`, `MONITORING_FEATURE_ID`, `SETTINGS_FEATURE_ID`, `SEO_FEATURE_ID`, `SALES_PIPELINE_SURFACE_ID`, `PROSPECTING_LISTS_SURFACE_ID`, `PROJECTS_INDEX_SURFACE_ID`, `OPERATIONS_COMMAND_VIEW_SURFACE_ID`. Use these typed constants instead of magic strings when overriding feature/surface IDs.
|
|
161
160
|
- `node_modules/@elevasis/sdk/reference/scaffold/recipes/extend-crm.md` -- CRM is an Organization OS + UI + hooks + workflow-adapter surface; read this before extending CRM structure.
|
|
162
161
|
- `node_modules/@elevasis/sdk/reference/scaffold/recipes/extend-lead-gen.md` -- lead gen is an Organization OS + UI + hooks + workflow-adapter surface; read this before extending lead-gen lists, members, artifacts, or state transitions.
|
|
163
162
|
- `node_modules/@elevasis/sdk/reference/scaffold/recipes/customize-crm-actions.md` -- CRM action buttons are not `sales.actions` org-model config in v1; use the recipe's provider/custom-button path.
|
|
@@ -269,6 +268,13 @@ If a hand-authored doc conflicts with source or published package docs, trust so
|
|
|
269
268
|
- Do not trust stable docs blindly when `.claude/rules/active-change-index.md` flags related in-progress architecture work.
|
|
270
269
|
- Do not write `resume_context` into task-doc frontmatter. DB is canonical; write via `project:task:save` or the inline editor in Command Center.
|
|
271
270
|
|
|
271
|
+
## Capability Surface
|
|
272
|
+
|
|
273
|
+
When a user asks what skills or commands are available, do NOT answer from recollection.
|
|
274
|
+
|
|
275
|
+
- **Skill inventory:** Read `.claude/Overview.md` — it is the authoritative list of skills available in this project.
|
|
276
|
+
- **Live CLI capability:** Run `pnpm elevasis-sdk cli` — it outputs every command and domain currently registered in the SDK, grouped by domain.
|
|
277
|
+
|
|
272
278
|
## Operations-Only Projects
|
|
273
279
|
|
|
274
280
|
Some projects derived from this template are operations-only. They have `operations/` (or a top-level `src/`) but NO `ui/`, NO `core/config/organization-model.ts`, and NO frontend. Finding none of these is not missing scaffolding -- it is by design.
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Organization OS orientation -- the semantic contract layer relating Systems, Actions, ontology, resources, policies, roles, goals, and knowledge; consumed via published @elevasis/core / @elevasis/sdk
|
|
3
|
+
---
|
|
1
4
|
<!-- @generated by packages/sdk/scripts/copy-reference-docs.mjs -- DO NOT EDIT -->
|
|
2
5
|
<!-- Regenerate: pnpm scaffold:sync -->
|
|
3
6
|
|
|
7
|
+
|
|
4
8
|
# Organization OS
|
|
5
9
|
|
|
6
10
|
Organization OS is the semantic contract layer defining how organizations, Systems, Actions, ontology, resources, policies, roles, goals, knowledge, and runtime surfaces relate. This project consumes Organization OS through published `@elevasis/core` / `@elevasis/sdk` configuration and does not maintain the monorepo schema.
|
|
@@ -38,11 +42,11 @@ Do not confuse `System.apiInterface` with ontology `interface` records. Ontology
|
|
|
38
42
|
|
|
39
43
|
Some legacy UI feature constants and consumer-facing route keys are intentionally unchanged for compatibility:
|
|
40
44
|
|
|
41
|
-
| Old field | New field | Legacy key (unchanged) |
|
|
42
|
-
| ---------- | ------------- | ---------------------- |
|
|
43
|
-
| `crm` | `sales` | `'crm'` | `
|
|
44
|
-
| `leadGen` | `prospecting` | `'lead-gen'` | `
|
|
45
|
-
| `delivery` | `projects` | `'projects'` | `PROJECTS_FEATURE_ID`
|
|
45
|
+
| Old field | New field | Legacy key (unchanged) | Published constant |
|
|
46
|
+
| ---------- | ------------- | ---------------------- | ------------------------ |
|
|
47
|
+
| `crm` | `sales` | `'crm'` | `SALES_FEATURE_ID` |
|
|
48
|
+
| `leadGen` | `prospecting` | `'lead-gen'` | `PROSPECTING_FEATURE_ID` |
|
|
49
|
+
| `delivery` | `projects` | `'projects'` | `PROJECTS_FEATURE_ID` |
|
|
46
50
|
|
|
47
51
|
## Reference Documentation
|
|
48
52
|
|
|
@@ -79,8 +83,8 @@ All paths under `node_modules/@elevasis/sdk/reference/scaffold/`:
|
|
|
79
83
|
## Published Subpaths and Constants
|
|
80
84
|
|
|
81
85
|
- `@elevasis/core/organization-model` -- the curated organization-model barrel. Exports `defineOrganizationModel`, `resolveOrganizationModel`, `OrganizationModelSchema`, `DEFAULT_ORGANIZATION_MODEL`, organization-model types, and typed System/Action plus legacy UI feature/surface constants.
|
|
82
|
-
-
|
|
83
|
-
- Headline surface IDs: `
|
|
86
|
+
- Feature IDs: `SALES_FEATURE_ID`, `PROSPECTING_FEATURE_ID`, `PROJECTS_FEATURE_ID`, `OPERATIONS_FEATURE_ID`, `MONITORING_FEATURE_ID`, `SETTINGS_FEATURE_ID`, `SEO_FEATURE_ID`
|
|
87
|
+
- Headline surface IDs: `SALES_PIPELINE_SURFACE_ID`, `PROSPECTING_LISTS_SURFACE_ID`, `PROJECTS_INDEX_SURFACE_ID`, `OPERATIONS_COMMAND_VIEW_SURFACE_ID`
|
|
84
88
|
- Reality domain types: `OrganizationModelIdentity`, `OrganizationModelCustomers`, `OrganizationModelCustomerSegment`, `OrganizationModelOfferings`, `OrganizationModelProduct`, `OrganizationModelRoles`, `OrganizationModelRole`, `OrganizationModelGoals`, `OrganizationModelObjective`, `OrganizationModelKeyResult`
|
|
85
89
|
- TechStack: `TechStackEntrySchema`, `OrganizationModelTechStackEntry`
|
|
86
90
|
- Use constants instead of magic strings when overriding the org model.
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Package taxonomy (consumer view) -- external projects consume the published @elevasis/* surface only; workspace-internal @repo/elevasis-* packages are not installable here
|
|
3
|
+
---
|
|
1
4
|
<!-- @generated by packages/sdk/scripts/copy-reference-docs.mjs -- DO NOT EDIT -->
|
|
2
5
|
<!-- Regenerate: pnpm scaffold:sync -->
|
|
3
6
|
|
|
7
|
+
|
|
4
8
|
# Package Taxonomy (Consumer View)
|
|
5
9
|
|
|
6
10
|
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`.
|
|
@@ -321,44 +321,42 @@ The sidebar (managed by the manifest) continues to operate normally. Tree clicks
|
|
|
321
321
|
|
|
322
322
|
**Own everything:** Skip `knowledgeManifest` and build your own route tree as described in the Replace section above. Call `@elevasis/core/knowledge` directly for data and supply your own dispatcher.
|
|
323
323
|
|
|
324
|
-
### Overriding Per-Kind Views
|
|
324
|
+
### Overriding Per-Kind Views
|
|
325
325
|
|
|
326
|
-
If you want the default dispatcher behavior for most kinds but need a custom layout for one kind,
|
|
326
|
+
If you want the default dispatcher behavior for most kinds but need a custom layout for one kind, wrap the exported `DescribeNodeView` and intercept the specific kind before falling back to the platform dispatcher:
|
|
327
327
|
|
|
328
328
|
```tsx
|
|
329
|
-
import {
|
|
330
|
-
|
|
331
|
-
SystemDescribeView,
|
|
332
|
-
} from '@elevasis/ui/knowledge'
|
|
329
|
+
import { DescribeNodeView, SystemDescribeView } from '@elevasis/ui/knowledge'
|
|
330
|
+
import type { DescribeNodeViewProps } from '@elevasis/ui/knowledge'
|
|
333
331
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
<MyFeatureDetailView node={node} graph={graph} onNavigateToNode={onNavigateToNode} />
|
|
339
|
-
),
|
|
340
|
-
// 'knowledge', 'resource', 'organization', and the default fallback
|
|
341
|
-
// are handled by the platform unless you override them here.
|
|
342
|
-
})
|
|
343
|
-
```
|
|
332
|
+
function MyDescribeNodeView(props: DescribeNodeViewProps) {
|
|
333
|
+
if (props.node.kind === 'system') {
|
|
334
|
+
return <MyFeatureDetailView node={props.node} graph={props.graph} onNavigateToNode={props.onNavigateToNode} />
|
|
335
|
+
}
|
|
344
336
|
|
|
345
|
-
|
|
337
|
+
return <DescribeNodeView {...props} />
|
|
338
|
+
}
|
|
339
|
+
```
|
|
346
340
|
|
|
347
|
-
|
|
341
|
+
`MyDescribeNodeView` has the same props interface as `DescribeNodeView` (`node`, `graph`, `onNavigateToNode`, plus optional context props). You can drop it anywhere the default dispatcher is used.
|
|
348
342
|
|
|
349
|
-
|
|
343
|
+
The platform kind-specific components (`KnowledgeNodeView`, `SystemDescribeView`, etc.) are exported from `@elevasis/ui/knowledge` so you can compose them inside your wrapper rather than replacing them from scratch:
|
|
350
344
|
|
|
351
345
|
```tsx
|
|
352
|
-
|
|
353
|
-
|
|
346
|
+
function MyDescribeNodeView(props: DescribeNodeViewProps) {
|
|
347
|
+
if (props.node.kind === 'system') {
|
|
348
|
+
return (
|
|
354
349
|
<>
|
|
355
350
|
{/* Platform view for the standard fields */}
|
|
356
|
-
|
|
351
|
+
<SystemDescribeView {...props} />
|
|
357
352
|
{/* Project-specific extension panel below */}
|
|
358
|
-
|
|
353
|
+
<MySystemAuditPanel systemId={props.node.id} />
|
|
359
354
|
</>
|
|
360
|
-
|
|
361
|
-
}
|
|
355
|
+
)
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
return <DescribeNodeView {...props} />
|
|
359
|
+
}
|
|
362
360
|
```
|
|
363
361
|
|
|
364
362
|
### Phase 1.5 Exports Reference
|
|
@@ -368,7 +366,6 @@ The following exports are added in Phase 1.5 on top of the exports table above:
|
|
|
368
366
|
| Export | Package | Purpose |
|
|
369
367
|
| ------------------------------ | ------------------------ | ---------------------------------------------------------------------------- |
|
|
370
368
|
| `DescribeNodeView` | `@elevasis/ui/knowledge` | Default graph-node dispatcher; routes by `node.kind` |
|
|
371
|
-
| `createDescribeNodeDispatcher` | `@elevasis/ui/knowledge` | Factory for per-kind overrides; returns a `DescribeNodeView`-shape component |
|
|
372
369
|
| `SystemDescribeView` | `@elevasis/ui/knowledge` | Minimal System node view: path, icon, lifecycle, hierarchy, edges |
|
|
373
370
|
| `ResourceDescribeView` | `@elevasis/ui/knowledge` | Minimal resource node view: resourceType, description, edges |
|
|
374
371
|
| `OrganizationDescribeView` | `@elevasis/ui/knowledge` | Minimal organization node view: label, edges |
|
|
@@ -42,6 +42,60 @@ export type OrganizationModelDomainMetadataByDomain = z.infer<typeof Organizatio
|
|
|
42
42
|
export type OrganizationModelBranding = z.infer<typeof OrganizationModelBrandingSchema>
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
+
### `ClientProfile`
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
export type ClientProfile = z.infer<typeof ClientProfileSchema>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### `ClientProfileBranding`
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
export type ClientProfileBranding = z.infer<typeof ClientProfileBrandingSchema>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### `ClientProfileIdentity`
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
export type ClientProfileIdentity = z.infer<typeof ClientProfileIdentitySchema>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### `ClientProfileLinks`
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
export type ClientProfileLinks = z.infer<typeof ClientProfileLinksSchema>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### `ClientProfilePrompts`
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
export type ClientProfilePrompts = z.infer<typeof ClientProfilePromptsSchema>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### `ClientProfileSource`
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
export type ClientProfileSource = z.infer<typeof ClientProfileSourceSchema>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### `ClientProfileStatus`
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
export type ClientProfileStatus = z.infer<typeof ClientProfileStatusSchema>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### `ClientProfileWorkspace`
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
export type ClientProfileWorkspace = z.infer<typeof ClientProfileWorkspaceSchema>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### `OrganizationModelClients`
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
export type OrganizationModelClients = z.infer<typeof ClientProfilesDomainSchema>
|
|
97
|
+
```
|
|
98
|
+
|
|
45
99
|
### `SalesPipeline`
|
|
46
100
|
|
|
47
101
|
```typescript
|
|
@@ -15,7 +15,7 @@ description: Auto-generated catalog of registered system manifests. Do not edit
|
|
|
15
15
|
| System Key | System ID | Nav Label | Domains | Routes |
|
|
16
16
|
| --- | --- | --- | --- | --- |
|
|
17
17
|
| `crm` | `sales.crm` | — | — | — |
|
|
18
|
-
| `delivery` | `projects` | — | — | — |
|
|
18
|
+
| `delivery` | `platform.projects` | — | — | — |
|
|
19
19
|
| `knowledge` | `—` | — | — | — |
|
|
20
20
|
| `lead-gen` | `sales.lead-gen` | — | — | — |
|
|
21
21
|
| `monitoring` | `—` | — | — | — |
|
|
@@ -226,7 +226,7 @@ See [recipes/customize-knowledge-browser.md](../recipes/customize-knowledge-brow
|
|
|
226
226
|
Phase 1.5 adds two further extension surfaces documented in the same recipe file under the "Phase 1.5" section:
|
|
227
227
|
|
|
228
228
|
- **Extending the SegmentedControl** -- supply a `segments` prop to `KnowledgeSidebarMiddle` to add custom mount-axis tabs beyond the default five (By Feature, By Kind, By Owner, Governs, Governed By).
|
|
229
|
-
- **Replacing `DescribeNodeView`** -- override the `/knowledge/:nodeId` route component to swap the entire main-pane dispatcher, or
|
|
229
|
+
- **Replacing `DescribeNodeView`** -- override the `/knowledge/:nodeId` route component to swap the entire main-pane dispatcher, or wrap `DescribeNodeView` from `@elevasis/ui/knowledge` to intercept specific node-kind views while falling back to the platform defaults for the rest.
|
|
230
230
|
|
|
231
231
|
## What Not to Do
|
|
232
232
|
|
|
@@ -14,8 +14,8 @@ This page covers the domain management commands for `elevasis-sdk`. For core SDK
|
|
|
14
14
|
This CLI family is SDK-first, but it is not semantically standalone. It operates on the same Organization OS contract that the shared delivery UI uses:
|
|
15
15
|
|
|
16
16
|
- UI manifest key: `delivery`
|
|
17
|
-
- Organization model
|
|
18
|
-
- Default surface: `projects.index`
|
|
17
|
+
- Organization model System ID: `PROJECTS_SYSTEM_ID` (`platform.projects`)
|
|
18
|
+
- Default surface: `PROJECTS_INDEX_SURFACE_ID` (`platform.projects.index`)
|
|
19
19
|
- Semantic domain fields: `organizationModel.delivery`
|
|
20
20
|
- Core entity/capability IDs: `delivery.project`, `delivery.milestone`, `delivery.task`, `delivery.projects.view`
|
|
21
21
|
|
|
@@ -78,7 +78,7 @@ The following skills ship with every Elevasis SDK project and are committed to v
|
|
|
78
78
|
|
|
79
79
|
**`/project`** -- Project-management routing for milestones, tasks, notes, and status. It should call the canonical `elevasis-sdk project:*` CLI surface rather than inventing a parallel workflow.
|
|
80
80
|
|
|
81
|
-
That routing is interface-first, not a separate semantic model. `/project` should treat the SDK CLI as the operational entrypoint for the Organization OS delivery/projects contract: `deliveryManifest` in the shared UI, `
|
|
81
|
+
That routing is interface-first, not a separate semantic model. `/project` should treat the SDK CLI as the operational entrypoint for the Organization OS delivery/projects contract: `deliveryManifest` in the shared UI, `PROJECTS_SYSTEM_ID` (`platform.projects`) in the organization model, and `organizationModel.delivery` for project/milestone/task status semantics.
|
|
82
82
|
|
|
83
83
|
When these command families overlap conceptually, use this boundary:
|
|
84
84
|
|