@elevasis/sdk 1.44.3 → 1.46.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 +35026 -30226
- package/dist/index.d.ts +1786 -808
- package/dist/index.js +789 -739
- package/dist/node/index.d.ts +105 -181
- package/dist/node/index.js +2 -2
- package/dist/test-utils/index.d.ts +901 -359
- package/dist/test-utils/index.js +587 -824
- package/dist/worker/index.d.ts +12685 -0
- package/dist/worker/index.js +188 -216
- package/package.json +4 -7
- package/reference/_navigation.md +161 -22
- package/reference/_reference-manifest.json +228 -4
- package/reference/claude-config.md +8 -0
- package/reference/core/exports.mdx +2 -0
- package/reference/core/index.mdx +3 -3
- package/reference/examples/organization-model.ts +117 -111
- package/reference/index.mdx +4 -4
- package/reference/packages/core/src/business/README.md +4 -1
- package/reference/packages/core/src/content/README.md +19 -0
- package/reference/packages/core/src/organization-model/README.md +148 -149
- package/reference/packages/core/src/organization-model/readiness/README.md +42 -0
- package/reference/packages/ui/src/features/README.md +28 -28
- package/reference/rules/active-change-index.md +40 -54
- package/reference/rules/agent-runtime.md +81 -0
- package/reference/rules/agent-start-here.md +71 -163
- package/reference/rules/deployment.md +33 -10
- package/reference/rules/error-handling.md +26 -0
- package/reference/rules/execution.md +13 -0
- package/reference/rules/frontend.md +10 -3
- package/reference/rules/observability.md +9 -1
- package/reference/rules/operations.md +26 -17
- package/reference/rules/organization-model.md +74 -88
- package/reference/rules/organization-os.md +71 -88
- package/reference/rules/package-taxonomy.md +11 -2
- package/reference/rules/platform.md +13 -7
- package/reference/rules/shared-types.md +36 -0
- package/reference/rules/task-tracking.md +30 -5
- package/reference/rules/ui.md +145 -3
- package/reference/rules/vibe-intents.md +271 -0
- package/reference/rules/vibe.md +17 -243
- package/reference/scaffold/core/organization-graph.mdx +112 -99
- package/reference/scaffold/core/organization-model.mdx +231 -215
- package/reference/scaffold/operations/propagation-pipeline.md +16 -17
- package/reference/scaffold/operations/scaffold-maintenance.md +22 -20
- package/reference/scaffold/operations/workflow-recipes.md +72 -20
- package/reference/scaffold/recipes/add-a-feature.md +156 -146
- package/reference/scaffold/recipes/add-a-resource.md +123 -117
- package/reference/scaffold/recipes/customize-crm-actions.md +28 -13
- package/reference/scaffold/recipes/customize-knowledge-browser.md +52 -117
- package/reference/scaffold/recipes/customize-organization-model.md +161 -149
- package/reference/scaffold/recipes/extend-a-base-entity.md +156 -140
- package/reference/scaffold/recipes/extend-content.md +265 -0
- package/reference/scaffold/recipes/extend-crm.md +16 -11
- package/reference/scaffold/recipes/extend-lead-gen.md +37 -21
- package/reference/scaffold/recipes/gate-by-feature-or-admin.md +160 -118
- package/reference/scaffold/recipes/index.md +6 -3
- package/reference/scaffold/recipes/query-the-knowledge-graph.md +23 -23
- package/reference/scaffold/reference/contracts.md +30 -56
- package/reference/scaffold/reference/feature-registry.md +3 -0
- package/reference/scaffold/reference/glossary.md +4 -4
- package/reference/scaffold/reference/system-interface-capabilities.md +5 -4
- package/reference/scaffold/ui/composition-extensibility.mdx +271 -232
- package/reference/scaffold/ui/customization.md +2 -2
- package/reference/scaffold/ui/feature-flags-and-gating.md +14 -6
- package/reference/scaffold/ui/feature-shell.mdx +277 -62
- package/reference/scaffold/ui/recipes.md +229 -197
- package/reference/sdk/cli-management.mdx +166 -33
- package/reference/sdk/cli.mdx +90 -13
- package/reference/sdk/concepts.mdx +2 -0
- package/reference/sdk/define-builders.mdx +76 -0
- package/reference/sdk/deployment/command-center.mdx +6 -2
- package/reference/sdk/deployment/execution-reference.mdx +64 -186
- package/reference/sdk/deployment/index.mdx +2 -0
- package/reference/sdk/exports.mdx +4 -4
- package/reference/sdk/framework/agent.mdx +52 -116
- package/reference/sdk/framework/index.mdx +46 -65
- package/reference/sdk/framework/project-structure.mdx +150 -205
- package/reference/sdk/framework/tutorial-system.mdx +2 -2
- package/reference/sdk/human-in-the-loop.mdx +152 -0
- package/reference/sdk/index.mdx +6 -7
- package/reference/sdk/platform-tools/adapters-platform.mdx +3 -1
- package/reference/sdk/platform-tools/index.mdx +12 -0
- package/reference/sdk/platform-tools/type-safety.mdx +4 -0
- package/reference/sdk/project-deployment-spec.mdx +131 -0
- package/reference/sdk/resources/index.mdx +21 -7
- package/reference/sdk/resources/patterns.mdx +54 -24
- package/reference/sdk/resources/types.mdx +7 -4
- package/reference/sdk/templates/data-enrichment.mdx +7 -3
- package/reference/sdk/templates/email-sender.mdx +139 -135
- package/reference/sdk/templates/lead-scorer.mdx +5 -1
- package/reference/sdk/templates/pdf-generator.mdx +155 -151
- package/reference/sdk/templates/recurring-job.mdx +195 -189
- package/reference/sdk/templates/text-classifier.mdx +4 -0
- package/reference/sdk/templates/web-scraper.mdx +139 -135
- package/reference/spine/spine-primer.md +135 -96
- package/reference/ui/exports.mdx +1 -0
- package/reference/ui/index.mdx +14 -7
- package/dist/types/worker/adapters/anymailfinder.d.ts +0 -14
- package/dist/types/worker/adapters/apify.d.ts +0 -14
- package/dist/types/worker/adapters/approval.d.ts +0 -23
- package/dist/types/worker/adapters/attio.d.ts +0 -22
- package/dist/types/worker/adapters/clickup.d.ts +0 -22
- package/dist/types/worker/adapters/create-adapter.d.ts +0 -41
- package/dist/types/worker/adapters/crm.d.ts +0 -20
- package/dist/types/worker/adapters/dropbox.d.ts +0 -14
- package/dist/types/worker/adapters/email.d.ts +0 -25
- package/dist/types/worker/adapters/execution.d.ts +0 -22
- package/dist/types/worker/adapters/gmail.d.ts +0 -14
- package/dist/types/worker/adapters/google-sheets.d.ts +0 -14
- package/dist/types/worker/adapters/index.d.ts +0 -33
- package/dist/types/worker/adapters/instantly.d.ts +0 -14
- package/dist/types/worker/adapters/lead.d.ts +0 -28
- package/dist/types/worker/adapters/list.d.ts +0 -9
- package/dist/types/worker/adapters/llm.d.ts +0 -45
- package/dist/types/worker/adapters/millionverifier.d.ts +0 -14
- package/dist/types/worker/adapters/notification.d.ts +0 -28
- package/dist/types/worker/adapters/pdf.d.ts +0 -22
- package/dist/types/worker/adapters/projects.d.ts +0 -20
- package/dist/types/worker/adapters/resend.d.ts +0 -14
- package/dist/types/worker/adapters/scheduler.d.ts +0 -25
- package/dist/types/worker/adapters/signature-api.d.ts +0 -14
- package/dist/types/worker/adapters/storage.d.ts +0 -33
- package/dist/types/worker/adapters/stripe.d.ts +0 -14
- package/dist/types/worker/adapters/tomba.d.ts +0 -14
- package/dist/types/worker/index.d.ts +0 -60
- package/dist/types/worker/platform.d.ts +0 -90
- package/dist/types/worker/utils.d.ts +0 -9
- package/reference/claude-config/Overview.md +0 -230
- package/reference/claude-config/hooks/post-edit-validate.mjs +0 -98
- package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +0 -187
- package/reference/claude-config/hooks/tool-failure-recovery.mjs +0 -73
- package/reference/claude-config/registries/graph-skills.json +0 -4
- package/reference/claude-config/registries/knowledge-flags.json +0 -154
- package/reference/claude-config/registries/skill-coverage.json +0 -20
- package/reference/claude-config/rules/active-change-index.md +0 -22
- package/reference/claude-config/rules/agent-start-here.md +0 -22
- package/reference/claude-config/rules/deployment.md +0 -22
- package/reference/claude-config/rules/error-handling.md +0 -22
- package/reference/claude-config/rules/execution.md +0 -22
- package/reference/claude-config/rules/frontend.md +0 -22
- package/reference/claude-config/rules/observability.md +0 -22
- package/reference/claude-config/rules/operations.md +0 -22
- package/reference/claude-config/rules/organization-model.md +0 -22
- package/reference/claude-config/rules/organization-os.md +0 -22
- package/reference/claude-config/rules/package-taxonomy.md +0 -22
- package/reference/claude-config/rules/platform.md +0 -22
- package/reference/claude-config/rules/shared-types.md +0 -22
- package/reference/claude-config/rules/task-tracking.md +0 -22
- package/reference/claude-config/rules/topbar-actions.md +0 -70
- package/reference/claude-config/rules/ui.md +0 -22
- package/reference/claude-config/rules/vibe.md +0 -22
- package/reference/claude-config/scripts/statusline-command.js +0 -18
- package/reference/claude-config/settings.json +0 -30
- package/reference/claude-config/skills/client/SKILL.md +0 -201
- package/reference/claude-config/skills/deploy/SKILL.md +0 -159
- package/reference/claude-config/skills/dsp/SKILL.md +0 -66
- package/reference/claude-config/skills/elevasis/SKILL.md +0 -251
- package/reference/claude-config/skills/explore/SKILL.md +0 -78
- package/reference/claude-config/skills/git-sync/SKILL.md +0 -166
- package/reference/claude-config/skills/om/SKILL.md +0 -475
- package/reference/claude-config/skills/om/operations/build.md +0 -237
- package/reference/claude-config/skills/om/operations/codify-level-a.md +0 -109
- package/reference/claude-config/skills/om/operations/codify-level-b.md +0 -159
- package/reference/claude-config/skills/om/operations/customers.md +0 -114
- package/reference/claude-config/skills/om/operations/features.md +0 -88
- package/reference/claude-config/skills/om/operations/goals.md +0 -123
- package/reference/claude-config/skills/om/operations/identity.md +0 -97
- package/reference/claude-config/skills/om/operations/labels.md +0 -110
- package/reference/claude-config/skills/om/operations/offerings.md +0 -114
- package/reference/claude-config/skills/om/operations/roles.md +0 -104
- package/reference/claude-config/skills/om/operations/scaffold.md +0 -163
- package/reference/claude-config/skills/om/operations/techStack.md +0 -38
- package/reference/claude-config/skills/project/SKILL.md +0 -1114
- package/reference/claude-config/skills/run-ui/SKILL.md +0 -73
- package/reference/claude-config/skills/save/SKILL.md +0 -183
- package/reference/claude-config/skills/setup/SKILL.md +0 -290
- package/reference/claude-config/skills/status/SKILL.md +0 -59
- package/reference/claude-config/skills/submit-request/SKILL.md +0 -180
- package/reference/claude-config/skills/sync/SKILL.md +0 -47
- package/reference/claude-config/skills/tutorial/SKILL.md +0 -259
- package/reference/claude-config/skills/tutorial/progress-template.md +0 -74
- package/reference/claude-config/skills/tutorial/technical.md +0 -1303
- package/reference/claude-config/skills/tutorial/vibe-coder.md +0 -890
- package/reference/claude-config/sync-notes/2026-04-22-git-sync-and-sync-notes.md +0 -27
- package/reference/claude-config/sync-notes/2026-04-22-lead-gen-deliverability-removal.md +0 -30
- package/reference/claude-config/sync-notes/2026-04-24-test-utils-and-template-tests.md +0 -73
- package/reference/claude-config/sync-notes/2026-04-24-ui-consolidation-and-sdk-cli-train.md +0 -86
- package/reference/claude-config/sync-notes/2026-04-25-auth-role-system-and-settings-roles.md +0 -55
- package/reference/claude-config/sync-notes/2026-04-27-crm-hitl-action-layer-cutover.md +0 -97
- package/reference/claude-config/sync-notes/2026-04-27-lead-gen-substrate-train.md +0 -112
- package/reference/claude-config/sync-notes/2026-04-29-crm-state-and-lead-gen-processing-status.md +0 -93
- package/reference/claude-config/sync-notes/2026-05-02-crm-ownership-next-action.md +0 -58
- package/reference/claude-config/sync-notes/2026-05-02-template-hardcode-workos-config.md +0 -56
- package/reference/claude-config/sync-notes/2026-05-04-elevasis-workspace.md +0 -71
- package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +0 -83
- package/reference/claude-config/sync-notes/2026-05-04-template-skills-run-ui-and-tutorial.md +0 -59
- package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +0 -42
- package/reference/claude-config/sync-notes/2026-05-06-crm-spine.md +0 -60
- package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +0 -37
- package/reference/claude-config/sync-notes/2026-05-07-sdk-changes-release-train.md +0 -34
- package/reference/claude-config/sync-notes/2026-05-08-resource-governance-scaffold-guidance.md +0 -38
- package/reference/claude-config/sync-notes/2026-05-09-clients-domain.md +0 -32
- package/reference/claude-config/sync-notes/2026-05-09-command-system.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-09-resource-governance-and-misc.md +0 -69
- package/reference/claude-config/sync-notes/2026-05-12-sdk-ready-release-train.md +0 -30
- package/reference/claude-config/sync-notes/2026-05-14-organization-model-ontology-refactor.md +0 -45
- package/reference/claude-config/sync-notes/2026-05-15-om-skill-rename-and-write-family.md +0 -52
- package/reference/claude-config/sync-notes/2026-05-17-sdk-boundary-consolidation.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +0 -32
- package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +0 -43
- package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +0 -40
- package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +0 -61
- package/reference/claude-config/sync-notes/2026-05-23-branding-names-to-identity.md +0 -49
- package/reference/claude-config/sync-notes/2026-05-23-lead-gen-manage-access.md +0 -31
- package/reference/claude-config/sync-notes/2026-05-23-om-deployment-drift-detection.md +0 -42
- package/reference/claude-config/sync-notes/2026-05-23-om-full-model-deploy-contract.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-23-ui-sdk-package-fixes.md +0 -37
- package/reference/claude-config/sync-notes/2026-05-24-platform-invite-router-core-baseline.md +0 -28
- package/reference/claude-config/sync-notes/2026-05-24-system-interface-readiness.md +0 -43
- package/reference/claude-config/sync-notes/2026-05-25-invitation-login-loader.md +0 -26
- package/reference/claude-config/sync-notes/2026-05-25-om-topbar-requests.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-25-system-interface-profile-registry-and-substrate.md +0 -35
- package/reference/claude-config/sync-notes/2026-05-25-tenant-om-scaffold-cli.md +0 -49
- package/reference/claude-config/sync-notes/2026-05-25-vibe-operate-intent.md +0 -47
- package/reference/claude-config/sync-notes/2026-05-28-om-snapshot-sdk-workflow-config.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-30-client-source-and-om-profiles.md +0 -39
- package/reference/claude-config/sync-notes/2026-06-02-knowledge-nested-group-routing.md +0 -27
- package/reference/claude-config/sync-notes/2026-06-02-nest-projects-under-platform.md +0 -45
- package/reference/claude-config/sync-notes/2026-06-03-skill-autogen-and-client-skill.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-04-scaffold-registry-lane-severity.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-05-appearance-app-mode-decouple.md +0 -29
- package/reference/claude-config/sync-notes/2026-06-05-ontology-endpoint-rename-and-knowledge-browser-ui.md +0 -86
- package/reference/claude-config/sync-notes/2026-06-06-om-build-systems-scaffold.md +0 -47
- package/reference/claude-config/sync-notes/2026-06-06-om-item-copy-references.md +0 -50
- package/reference/claude-config/sync-notes/2026-06-08-knowledge-base-page-not-found-fix.md +0 -76
- package/reference/claude-config/sync-notes/2026-06-09-agent-sessions-public-agent-chat-route.md +0 -75
- package/reference/claude-config/sync-notes/2026-06-09-sdk-cli-load-org-model-resolution.md +0 -42
- package/reference/claude-config/sync-notes/2026-06-12-agent-grants-visualizer-operations.md +0 -30
- package/reference/claude-config/sync-notes/2026-06-14-session-ux-and-project-cli-json.md +0 -33
- package/reference/claude-config/sync-notes/2026-06-14-shared-session-conversation-view.md +0 -26
- package/reference/claude-config/sync-notes/2026-06-15-session-chat-zero-wiring.md +0 -46
- package/reference/claude-config/sync-notes/2026-06-17-agent-session-ux-features.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-25-shared-page-scroll-contract-guard.md +0 -52
- package/reference/claude-config/sync-notes/2026-06-26-leadgen-overview-om-telemetry.md +0 -47
- package/reference/claude-config/sync-notes/2026-07-21-agent-scaffold-hardening.md +0 -75
- package/reference/claude-config/sync-notes/2026-07-23-agent-session-memory.md +0 -49
- package/reference/claude-config/sync-notes/2026-07-23-workos-org-marker.md +0 -50
- package/reference/claude-config/sync-notes/2026-07-24-claude-5-models-and-session-surface-fixes.md +0 -116
- package/reference/claude-config/sync-notes/2026-07-27-agent-strict-output-and-turn-drift.md +0 -73
- package/reference/claude-config/sync-notes/2026-07-28-agent-reply-is-its-own-field.md +0 -84
- package/reference/claude-config/sync-notes/2026-07-30-login-screen-and-member-provisioning-state.md +0 -114
- package/reference/claude-config/sync-notes/2026-08-02-auth-guard-defaults-and-truncation-fix.md +0 -122
- package/reference/claude-config/sync-notes/2026-08-03-agent-prose-escape-normalization.md +0 -88
- package/reference/claude-config/sync-notes/2026-08-03-cli-gateway-errors-and-request-timeout.md +0 -120
- package/reference/claude-config/sync-notes/README.md +0 -43
- package/reference/sdk/framework/interaction-guidance.mdx +0 -182
- package/reference/sdk/framework/memory.mdx +0 -326
- package/reference/sdk/framework/resource-documentation.mdx +0 -90
- package/reference/sdk/roadmap.mdx +0 -164
|
@@ -4,7 +4,13 @@
|
|
|
4
4
|
// Pure reference file -- NOT imported anywhere.
|
|
5
5
|
// Copy individual examples into core/config/organization-model.ts or resource definitions as needed.
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
defineOrganizationModel,
|
|
9
|
+
defineResources,
|
|
10
|
+
defineTopology,
|
|
11
|
+
topologyRef,
|
|
12
|
+
topologyRelationship
|
|
13
|
+
} from '@elevasis/core/organization-model'
|
|
8
14
|
|
|
9
15
|
// ---------------------------------------------------------------------------
|
|
10
16
|
// Identity and branding override
|
|
@@ -206,36 +212,36 @@ export const identityExample = defineOrganizationModel({
|
|
|
206
212
|
// Customers and offerings
|
|
207
213
|
// ---------------------------------------------------------------------------
|
|
208
214
|
export const customersAndOfferingsExample = defineOrganizationModel({
|
|
215
|
+
// Both domains are id-keyed records, not arrays. The map key must equal the entry's `id`,
|
|
216
|
+
// and `order` is required on every entry.
|
|
209
217
|
customers: {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
]
|
|
218
|
+
'segment-smb-agencies': {
|
|
219
|
+
id: 'segment-smb-agencies',
|
|
220
|
+
order: 10,
|
|
221
|
+
name: 'SMB Marketing Agencies',
|
|
222
|
+
description: 'Growth-oriented digital agencies with 5-50 staff.',
|
|
223
|
+
jobsToBeDone: 'Run more client campaigns without growing headcount.',
|
|
224
|
+
pains: ['Manual data entry', 'Slow lead qualification'],
|
|
225
|
+
gains: ['Automated pipelines', 'Structured human review'],
|
|
226
|
+
firmographics: {
|
|
227
|
+
industry: 'Marketing / Digital Agency',
|
|
228
|
+
companySize: '5-50',
|
|
229
|
+
region: 'North America'
|
|
230
|
+
},
|
|
231
|
+
valueProp: 'Automate agency operations so the team focuses on strategy and clients.'
|
|
232
|
+
}
|
|
226
233
|
},
|
|
227
234
|
offerings: {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
]
|
|
235
|
+
'product-starter': {
|
|
236
|
+
id: 'product-starter',
|
|
237
|
+
order: 10,
|
|
238
|
+
name: 'Starter Automation Pack',
|
|
239
|
+
description: 'Workflow bundle for lead enrichment, CRM follow-up, and project delivery automation.',
|
|
240
|
+
pricingModel: 'subscription',
|
|
241
|
+
price: 299,
|
|
242
|
+
currency: 'USD',
|
|
243
|
+
targetSegmentIds: ['segment-smb-agencies']
|
|
244
|
+
}
|
|
239
245
|
}
|
|
240
246
|
})
|
|
241
247
|
|
|
@@ -245,6 +251,7 @@ export const customersAndOfferingsExample = defineOrganizationModel({
|
|
|
245
251
|
export const workflowResourceDescriptorsExample = defineResources({
|
|
246
252
|
leadEnrichment: {
|
|
247
253
|
id: 'lead-enrichment-workflow',
|
|
254
|
+
order: 10,
|
|
248
255
|
title: 'Lead Enrichment',
|
|
249
256
|
description: 'Enriches lead records and writes qualified opportunities into CRM.',
|
|
250
257
|
kind: 'workflow',
|
|
@@ -286,67 +293,66 @@ export const compatibilityGraphLinksExample = {
|
|
|
286
293
|
]
|
|
287
294
|
}
|
|
288
295
|
|
|
296
|
+
// `topology.relationships` is an id-keyed record, and each relationship uses `from`/`to`.
|
|
297
|
+
// Author it through `defineTopology` so the refs are compiled and validated for you.
|
|
289
298
|
export const topologyRelationshipsExample = defineOrganizationModel({
|
|
290
|
-
topology: {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
target: { kind: 'role', id: 'role-ops-lead' },
|
|
305
|
-
kind: 'approval'
|
|
306
|
-
}
|
|
307
|
-
]
|
|
308
|
-
}
|
|
299
|
+
topology: defineTopology({
|
|
300
|
+
dailyEnrichmentTrigger: topologyRelationship.triggers(
|
|
301
|
+
topologyRef.trigger('daily-lead-enrichment'),
|
|
302
|
+
topologyRef.resource(workflowResourceDescriptorsExample.leadEnrichment.id)
|
|
303
|
+
),
|
|
304
|
+
enrichmentUsesApollo: topologyRelationship.uses(
|
|
305
|
+
topologyRef.resource(workflowResourceDescriptorsExample.leadEnrichment.id),
|
|
306
|
+
topologyRef.externalResource('apollo')
|
|
307
|
+
),
|
|
308
|
+
enrichmentApprovedByOpsLead: topologyRelationship.approval(
|
|
309
|
+
topologyRef.resource(workflowResourceDescriptorsExample.leadEnrichment.id),
|
|
310
|
+
topologyRef.role('role-ops-lead')
|
|
311
|
+
)
|
|
312
|
+
})
|
|
309
313
|
})
|
|
310
314
|
|
|
311
315
|
// ---------------------------------------------------------------------------
|
|
312
316
|
// Roles and goals
|
|
313
317
|
// ---------------------------------------------------------------------------
|
|
314
318
|
export const rolesAndGoalsExample = defineOrganizationModel({
|
|
319
|
+
// Both domains are id-keyed records with a required `order`.
|
|
320
|
+
// `heldBy` is a discriminated union on `kind`, not a display name.
|
|
315
321
|
roles: {
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
}
|
|
330
|
-
|
|
322
|
+
'role-ceo': {
|
|
323
|
+
id: 'role-ceo',
|
|
324
|
+
order: 10,
|
|
325
|
+
title: 'CEO',
|
|
326
|
+
responsibilities: ['Set company direction', 'Approve strategic initiatives'],
|
|
327
|
+
heldBy: { kind: 'human', userId: 'user-alex-johnson' }
|
|
328
|
+
},
|
|
329
|
+
'role-head-of-ops': {
|
|
330
|
+
id: 'role-head-of-ops',
|
|
331
|
+
order: 20,
|
|
332
|
+
title: 'Head of Operations',
|
|
333
|
+
responsibilities: ['Manage workflow deployments', 'Review human-in-the-loop queue'],
|
|
334
|
+
reportsToId: 'role-ceo',
|
|
335
|
+
heldBy: { kind: 'human', userId: 'user-jordan-lee' }
|
|
336
|
+
}
|
|
331
337
|
},
|
|
332
338
|
goals: {
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
339
|
+
'goal-grow-arr-q2-2026': {
|
|
340
|
+
id: 'goal-grow-arr-q2-2026',
|
|
341
|
+
order: 10,
|
|
342
|
+
description: 'Grow monthly recurring revenue by end of Q2 2026.',
|
|
343
|
+
periodStart: '2026-04-01',
|
|
344
|
+
periodEnd: '2026-06-30',
|
|
345
|
+
// `keyResults` genuinely is an array — it is nested inside the entry, not a domain map.
|
|
346
|
+
keyResults: [
|
|
347
|
+
{
|
|
348
|
+
id: 'kr-mrr-10k',
|
|
349
|
+
description: 'Reach $10K MRR',
|
|
350
|
+
targetMetric: 'Monthly recurring revenue',
|
|
351
|
+
currentValue: 2800,
|
|
352
|
+
targetValue: 10000
|
|
353
|
+
}
|
|
354
|
+
]
|
|
355
|
+
}
|
|
350
356
|
}
|
|
351
357
|
})
|
|
352
358
|
|
|
@@ -354,38 +360,38 @@ export const rolesAndGoalsExample = defineOrganizationModel({
|
|
|
354
360
|
// Knowledge nodes
|
|
355
361
|
// ---------------------------------------------------------------------------
|
|
356
362
|
export const knowledgeExample = defineOrganizationModel({
|
|
363
|
+
// `knowledge` is a flat id-keyed record. The old `{ version, lastModified, nodes[] }`
|
|
364
|
+
// wrapper was removed in the Phase 4 cut.
|
|
357
365
|
knowledge: {
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
}
|
|
389
|
-
]
|
|
366
|
+
'knowledge.example-outreach-playbook': {
|
|
367
|
+
id: 'knowledge.example-outreach-playbook',
|
|
368
|
+
kind: 'playbook',
|
|
369
|
+
title: 'Example Outreach Playbook',
|
|
370
|
+
summary: 'Step-by-step runbook for launching a cold outreach campaign.',
|
|
371
|
+
body: '## Overview\n\nThis playbook walks through prospect sourcing, message templates, scheduling, and reply triage.\n\n## Steps\n\n1. Source prospects from the lead-gen list.\n2. Personalize the cold email template.\n3. Schedule the sending campaign.\n4. Triage replies in the CRM.',
|
|
372
|
+
links: [{ nodeId: 'system:sales.crm' }, { nodeId: 'system:sales.lead-gen' }],
|
|
373
|
+
ownerIds: [],
|
|
374
|
+
updatedAt: '2026-05-01'
|
|
375
|
+
},
|
|
376
|
+
'knowledge.example-icp-strategy': {
|
|
377
|
+
id: 'knowledge.example-icp-strategy',
|
|
378
|
+
kind: 'strategy',
|
|
379
|
+
title: 'Example ICP Strategy',
|
|
380
|
+
summary: 'Describes the ideal customer profile and qualification thresholds.',
|
|
381
|
+
body: '## ICP Profile\n\n- **Industry:** SMB marketing agencies\n- **Size:** 5-50 employees\n- **Region:** North America\n\nProspects scoring \\<60 are excluded from outreach.',
|
|
382
|
+
links: [{ nodeId: 'system:sales' }],
|
|
383
|
+
ownerIds: [],
|
|
384
|
+
updatedAt: '2026-05-01'
|
|
385
|
+
},
|
|
386
|
+
'knowledge.example-org-model-reference': {
|
|
387
|
+
id: 'knowledge.example-org-model-reference',
|
|
388
|
+
kind: 'reference',
|
|
389
|
+
title: 'Example Organization Model Reference',
|
|
390
|
+
summary: 'Glossary of OM domains and how they relate to systems and resources.',
|
|
391
|
+
body: '## Domains\n\nThe organization model separates semantic contracts in ontology, system-local settings in config, executable governance in resources, and explanatory material in knowledge. Secrets and runtime state stay outside the Organization Model.',
|
|
392
|
+
links: [],
|
|
393
|
+
ownerIds: [],
|
|
394
|
+
updatedAt: '2026-05-01'
|
|
395
|
+
}
|
|
390
396
|
}
|
|
391
397
|
})
|
package/reference/index.mdx
CHANGED
|
@@ -31,7 +31,7 @@ You do not need all three packages. A pure automation project needs only `@eleva
|
|
|
31
31
|
|
|
32
32
|
## Packages
|
|
33
33
|
|
|
34
|
-
### @elevasis/sdk (v1.
|
|
34
|
+
### @elevasis/sdk (v1.45.0)
|
|
35
35
|
|
|
36
36
|
The primary developer package. Provides the TypeScript API for defining workflows and agents, the `elevasis-sdk` CLI for validation and deployment, and typed worker adapters for 25 platform and integration tools.
|
|
37
37
|
|
|
@@ -41,7 +41,7 @@ The primary developer package. Provides the TypeScript API for defining workflow
|
|
|
41
41
|
|
|
42
42
|
See [@elevasis/sdk](sdk/index.mdx) for the full group overview, getting started guide, CLI reference, adapter catalog, and more.
|
|
43
43
|
|
|
44
|
-
### @elevasis/core (v0.
|
|
44
|
+
### @elevasis/core (v0.60.0)
|
|
45
45
|
|
|
46
46
|
The shared contract layer. Exports Zod schemas and TypeScript types that are shared between the SDK, the UI, and the platform API. Useful when you need the typed contracts (organization model, entities, knowledge, auth) in a package that does not pull in the full SDK runtime.
|
|
47
47
|
|
|
@@ -51,9 +51,9 @@ The shared contract layer. Exports Zod schemas and TypeScript types that are sha
|
|
|
51
51
|
|
|
52
52
|
See [@elevasis/core](core/index.mdx) for subpath details, browser/server split, and when to use it.
|
|
53
53
|
|
|
54
|
-
### @elevasis/ui (v2.
|
|
54
|
+
### @elevasis/ui (v2.68.0)
|
|
55
55
|
|
|
56
|
-
The shared React feature-shell. Provides
|
|
56
|
+
The shared React feature-shell. Provides `ElevasisCoreProvider` / `ElevasisSystemsProvider` and manifest-backed feature modules that a host UI embeds. Many peer dependencies are optional -- pull only what the features you use require.
|
|
57
57
|
|
|
58
58
|
**Install:** `pnpm add @elevasis/ui`
|
|
59
59
|
|
|
@@ -47,6 +47,9 @@ export type Deal = BaseDeal
|
|
|
47
47
|
|
|
48
48
|
## Recipe
|
|
49
49
|
|
|
50
|
-
The full pattern is documented in the SDK scaffold bundle
|
|
50
|
+
The full pattern is documented in the SDK scaffold bundle. Internally, read the workspace source at
|
|
51
|
+
`packages/sdk/docs/scaffold/recipes/extend-a-base-entity.md`; a tenant reads the published mirror at
|
|
52
|
+
`operations/node_modules/@elevasis/sdk/reference/scaffold/recipes/extend-a-base-entity.md`, which does
|
|
53
|
+
not resolve from the monorepo root.
|
|
51
54
|
|
|
52
55
|
The canonical template demo lives at `external/_template/core/types/entities.ts`.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# @elevasis/core/content
|
|
2
|
+
|
|
3
|
+
Content pipeline API schemas and platform-content typed interfaces. Browser-safe (no Node APIs).
|
|
4
|
+
|
|
5
|
+
## Surface
|
|
6
|
+
|
|
7
|
+
| Export | Purpose |
|
|
8
|
+
| ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
9
|
+
| `ContentItemResponseSchema`, `CreateContentItemRequestSchema`, `UpdateContentItemRequestSchema` | `content_items` transport shape. `processingState` is intentionally absent from create/update — factory-write-only. |
|
|
10
|
+
| `ContentProcessingStateSchema` | `{ stepKey: { status, data? } }`, keyed by `ContentStepKeySchema` — a content-specific key, not lead-gen's `LeadGenStageKeySchema`. |
|
|
11
|
+
| `ContentPayloadEnvelopeSchema` | The producer's immutable emission stored in `payload`. Never edited — `body` is the human's canonical text. |
|
|
12
|
+
| `ReviewContentItemRequestSchema` | Approve, or reject with a required `rejectReason`. Writes `reviewed_at` / `reviewed_by`. |
|
|
13
|
+
| `ContentItemAttemptResponseSchema`, `CreateContentItemAttemptRequestSchema` | `content_item_attempts` transport shape. No `attemptNumber` field on create — the API service assigns it inside the write. `stepKey` is producer-supplied and nullable. |
|
|
14
|
+
| `ContentDistributionResponseSchema`, `CreateContentDistributionRequestSchema`, `UpdateContentDistributionRequestSchema` | `content_distributions` transport shape, including the manual-publish fields (`publishMethod`, `platformPostId`, `platformUrl`). |
|
|
15
|
+
| `PlatformContent`, `YouTubeContent`, `LinkedInContent`, `InstagramContent`, `XContent`, `AnyPlatformContent`, `PlatformContentMap`, `Platform` | Typed interfaces for platform-specific content stored in `content_distributions.platform_content`. |
|
|
16
|
+
|
|
17
|
+
## Step catalog reconciliation
|
|
18
|
+
|
|
19
|
+
`ContentStepKeySchema` is free text today — the content System's step catalog (`content:catalog/<pipeline>-steps`) is authored separately in `packages/elevasis/core/config/organization-model`. Closed-catalog membership is enforced by the caller/API layer via model-injected validators once that catalog lands, mirroring how `LeadGenStageKeySchema` and `CrmStageKeySchema` are validated today.
|
|
@@ -1,149 +1,148 @@
|
|
|
1
|
-
# Organization Model
|
|
2
|
-
|
|
3
|
-
The organization model is the published semantic contract that maps a tenant's System hierarchy, shell navigation, business semantics, resource governance, and graph bindings.
|
|
4
|
-
|
|
5
|
-
Use this module when resolving or validating an organization's contract before wiring UI shells, routing, system gates, or domain-specific capability checks.
|
|
6
|
-
|
|
7
|
-
## Published Exports
|
|
8
|
-
|
|
9
|
-
The public entry point exposes:
|
|
10
|
-
|
|
11
|
-
- `OrganizationModelSchema`
|
|
12
|
-
- `DEFAULT_ORGANIZATION_MODEL`
|
|
13
|
-
- `defineOrganizationModel`
|
|
14
|
-
- `resolveOrganizationModel`
|
|
15
|
-
- `createFoundationOrganizationModel`
|
|
16
|
-
- node ID and System helper types
|
|
17
|
-
- `OrganizationModel` and supporting domain types
|
|
18
|
-
|
|
19
|
-
Import it from the published subpath:
|
|
20
|
-
|
|
21
|
-
```ts
|
|
22
|
-
import {
|
|
23
|
-
DEFAULT_ORGANIZATION_MODEL,
|
|
24
|
-
createFoundationOrganizationModel,
|
|
25
|
-
defineOrganizationModel,
|
|
26
|
-
resolveOrganizationModel,
|
|
27
|
-
type OrganizationModel
|
|
28
|
-
} from '@elevasis/core/organization-model'
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Contract Shape
|
|
32
|
-
|
|
33
|
-
The model is versioned and currently validates against `version: 1`.
|
|
34
|
-
|
|
35
|
-
Top-level fields:
|
|
36
|
-
|
|
37
|
-
- `version`
|
|
38
|
-
- `domainMetadata`
|
|
39
|
-
- `branding`
|
|
40
|
-
- `navigation`
|
|
41
|
-
- `sales`
|
|
42
|
-
- `prospecting`
|
|
43
|
-
- `projects`
|
|
44
|
-
- `identity`
|
|
45
|
-
- `customers`
|
|
46
|
-
- `offerings`
|
|
47
|
-
- `roles`
|
|
48
|
-
- `goals`
|
|
49
|
-
- `systems`
|
|
50
|
-
- `resources`
|
|
51
|
-
- `capabilities`
|
|
52
|
-
- `
|
|
53
|
-
- `
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
- `
|
|
119
|
-
- `
|
|
120
|
-
- `
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
- `
|
|
130
|
-
- `
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
- System IDs
|
|
140
|
-
-
|
|
141
|
-
- Systems
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
- Use `
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
- Put resource identity and governance in `resources`; attach executable behavior in operations.
|
|
1
|
+
# Organization Model
|
|
2
|
+
|
|
3
|
+
The organization model is the published semantic contract that maps a tenant's System hierarchy, shell navigation, business semantics, resource governance, and graph bindings.
|
|
4
|
+
|
|
5
|
+
Use this module when resolving or validating an organization's contract before wiring UI shells, routing, system gates, or domain-specific capability checks.
|
|
6
|
+
|
|
7
|
+
## Published Exports
|
|
8
|
+
|
|
9
|
+
The public entry point exposes:
|
|
10
|
+
|
|
11
|
+
- `OrganizationModelSchema`
|
|
12
|
+
- `DEFAULT_ORGANIZATION_MODEL`
|
|
13
|
+
- `defineOrganizationModel`
|
|
14
|
+
- `resolveOrganizationModel`
|
|
15
|
+
- `createFoundationOrganizationModel`
|
|
16
|
+
- node ID and System helper types
|
|
17
|
+
- `OrganizationModel` and supporting domain types
|
|
18
|
+
|
|
19
|
+
Import it from the published subpath:
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import {
|
|
23
|
+
DEFAULT_ORGANIZATION_MODEL,
|
|
24
|
+
createFoundationOrganizationModel,
|
|
25
|
+
defineOrganizationModel,
|
|
26
|
+
resolveOrganizationModel,
|
|
27
|
+
type OrganizationModel
|
|
28
|
+
} from '@elevasis/core/organization-model'
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Contract Shape
|
|
32
|
+
|
|
33
|
+
The model is versioned and currently validates against `version: 1`.
|
|
34
|
+
|
|
35
|
+
Top-level fields:
|
|
36
|
+
|
|
37
|
+
- `version`
|
|
38
|
+
- `domainMetadata`
|
|
39
|
+
- `branding`
|
|
40
|
+
- `navigation`
|
|
41
|
+
- `sales`
|
|
42
|
+
- `prospecting`
|
|
43
|
+
- `projects`
|
|
44
|
+
- `identity`
|
|
45
|
+
- `customers`
|
|
46
|
+
- `offerings`
|
|
47
|
+
- `roles`
|
|
48
|
+
- `goals`
|
|
49
|
+
- `systems`
|
|
50
|
+
- `resources`
|
|
51
|
+
- `capabilities`
|
|
52
|
+
- `statuses`
|
|
53
|
+
- `knowledge`
|
|
54
|
+
|
|
55
|
+
The pure collection domains are id-keyed maps: `systems`, `roles`, `goals`, `customers`, `offerings`, `resources`, `capabilities`, and `statuses`. The map key must match the entry `id`. Entries carry `order` for deterministic ordered views; use `listDomain(record)` when order matters.
|
|
56
|
+
|
|
57
|
+
Resource identity is authored in `resources`. Runtime workflows, agents, integrations, and scripts import those descriptors, derive `resourceId` and kind from them, and attach executable behavior in operations code.
|
|
58
|
+
|
|
59
|
+
## System Set
|
|
60
|
+
|
|
61
|
+
System hierarchy is authored as an id-keyed `systems` map. Dotted IDs and `parentSystemId` define parent/child relationships:
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
systems: {
|
|
65
|
+
dashboard: { id: 'dashboard', order: 10, label: 'Dashboard', lifecycle: 'active' },
|
|
66
|
+
sales: { id: 'sales', order: 20, label: 'Sales', lifecycle: 'active' },
|
|
67
|
+
clients: { id: 'clients', order: 30, label: 'Clients', lifecycle: 'active' },
|
|
68
|
+
projects: { id: 'projects', order: 40, label: 'Projects', lifecycle: 'active' }
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Systems describe semantic ownership, hierarchy, lifecycle, access, and governance. Sidebar presentation is authored separately under `navigation.sidebar`; UI-backed Systems may still provide `ui.path` for route matching during the migration, but they do not author composed surface lists. Lifecycle values such as `active`, `beta`, `deprecated`, and `archived` replace the old feature enabled/dev-only split.
|
|
73
|
+
|
|
74
|
+
## Sidebar Navigation
|
|
75
|
+
|
|
76
|
+
Shell navigation is authored as a recursive sidebar tree:
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
navigation: {
|
|
80
|
+
sidebar: {
|
|
81
|
+
primary: {
|
|
82
|
+
dashboard: {
|
|
83
|
+
type: 'surface',
|
|
84
|
+
order: 10,
|
|
85
|
+
label: 'Dashboard',
|
|
86
|
+
path: '/',
|
|
87
|
+
surfaceType: 'dashboard',
|
|
88
|
+
targets: { systems: ['dashboard'] }
|
|
89
|
+
},
|
|
90
|
+
business: {
|
|
91
|
+
type: 'group',
|
|
92
|
+
order: 20,
|
|
93
|
+
label: 'Business',
|
|
94
|
+
children: {
|
|
95
|
+
clients: {
|
|
96
|
+
type: 'surface',
|
|
97
|
+
order: 20,
|
|
98
|
+
label: 'Clients',
|
|
99
|
+
path: '/clients',
|
|
100
|
+
surfaceType: 'list',
|
|
101
|
+
targets: { systems: ['clients'] }
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
bottom: {}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Routeable sidebar leaves are projected into flat semantic surface DTOs by `projectOrganizationSurfaces(model)`. Do not author top-level `surfaces` or `navigationGroups` fields on `OrganizationModel`.
|
|
112
|
+
|
|
113
|
+
## Graph IDs
|
|
114
|
+
|
|
115
|
+
Cross-collection links use kind-prefixed IDs:
|
|
116
|
+
|
|
117
|
+
- `system:sales.crm`
|
|
118
|
+
- `integration:instantly`
|
|
119
|
+
- `resource:lead-import`
|
|
120
|
+
- `action:operations.queue.review`
|
|
121
|
+
|
|
122
|
+
## Resource Descriptors
|
|
123
|
+
|
|
124
|
+
The OM Resources domain is governance-only. Descriptors declare canonical `id`, required `systemPath`, governance `status`, and optional role ownership. `DeploymentSpec` remains the runtime/deploy assembly around those descriptors, not a second resource identity catalog.
|
|
125
|
+
|
|
126
|
+
## Resolution Semantics
|
|
127
|
+
|
|
128
|
+
- `defineOrganizationModel()` is a typed helper.
|
|
129
|
+
- `resolveOrganizationModel()` deep-merges a partial override into the default model, then validates it.
|
|
130
|
+
- `createFoundationOrganizationModel()` resolves the canonical model and returns UI-facing helper outputs.
|
|
131
|
+
- Plain objects merge recursively.
|
|
132
|
+
- Id-keyed domain maps merge additively by key.
|
|
133
|
+
- Arrays replace the default value.
|
|
134
|
+
- Missing fields fall back to `DEFAULT_ORGANIZATION_MODEL`.
|
|
135
|
+
|
|
136
|
+
## Referential Integrity
|
|
137
|
+
|
|
138
|
+
- System IDs must be unique.
|
|
139
|
+
- Child System IDs require valid ancestors or `parentSystemId` links.
|
|
140
|
+
- Systems with UI provide `ui.path`.
|
|
141
|
+
- Systems, resources, roles, knowledge nodes, and goals must resolve their declared cross-references.
|
|
142
|
+
|
|
143
|
+
## Practical Guidance
|
|
144
|
+
|
|
145
|
+
- Use `resolveOrganizationModel()` when you need a runtime-safe model.
|
|
146
|
+
- Use `defineOrganizationModel()` when authoring static overrides.
|
|
147
|
+
- Keep System IDs stable because shell routing, gating, breadcrumbs, and docs depend on them.
|
|
148
|
+
- Put resource identity and governance in `resources`; attach executable behavior in operations.
|