@elevasis/sdk 1.44.3 → 1.45.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 +991 -650
- package/dist/index.d.ts +1045 -509
- package/dist/index.js +738 -688
- package/dist/node/index.d.ts +105 -97
- package/dist/test-utils/index.d.ts +42 -28
- package/dist/test-utils/index.js +514 -783
- package/dist/worker/index.d.ts +12112 -0
- package/dist/worker/index.js +121 -182
- package/package.json +6 -9
- package/reference/_navigation.md +151 -21
- package/reference/_reference-manifest.json +186 -4
- package/reference/claude-config.md +8 -0
- package/reference/core/index.mdx +3 -3
- package/reference/examples/organization-model.ts +117 -111
- package/reference/index.mdx +4 -4
- 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 +15 -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 +111 -97
- package/reference/scaffold/core/organization-model.mdx +234 -214
- package/reference/scaffold/operations/propagation-pipeline.md +1 -1
- package/reference/scaffold/operations/scaffold-maintenance.md +19 -18
- package/reference/scaffold/operations/workflow-recipes.md +71 -19
- 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 +25 -10
- 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-crm.md +16 -11
- package/reference/scaffold/recipes/extend-lead-gen.md +25 -7
- package/reference/scaffold/recipes/gate-by-feature-or-admin.md +160 -118
- package/reference/scaffold/recipes/index.md +2 -2
- package/reference/scaffold/recipes/query-the-knowledge-graph.md +23 -23
- package/reference/scaffold/reference/contracts.md +12 -1
- package/reference/scaffold/reference/glossary.md +3 -3
- package/reference/scaffold/reference/system-interface-capabilities.md +5 -4
- package/reference/scaffold/ui/composition-extensibility.mdx +271 -232
- package/reference/scaffold/ui/feature-flags-and-gating.md +14 -6
- package/reference/scaffold/ui/feature-shell.mdx +279 -62
- package/reference/scaffold/ui/recipes.md +229 -197
- package/reference/sdk/cli-management.mdx +77 -29
- 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 +49 -119
- 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/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/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
|
@@ -1,121 +1,163 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Gate by System or Admin
|
|
3
|
-
description: Decision table and recipes for gating routes, sidebar entries, and UI elements
|
|
4
|
-
---
|
|
1
|
+
---
|
|
2
|
+
title: Gate by System or Admin
|
|
3
|
+
description: Decision table and recipes for gating routes, sidebar entries, and UI elements with AccessGuard and the unified Access Model.
|
|
4
|
+
---
|
|
5
5
|
<!-- @generated by packages/sdk/scripts/copy-reference-docs.mjs -- DO NOT EDIT -->
|
|
6
6
|
<!-- Regenerate: pnpm scaffold:sync -->
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
# Gate by System or Admin
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
| Surface is
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
8
|
+
|
|
9
|
+
# Gate by System or Admin
|
|
10
|
+
|
|
11
|
+
There is one gating surface: `AccessGuard` from `@elevasis/ui/auth`. It resolves an access key against the Access Model, which composes Organization Model System lifecycle, role permissions, organization membership scope, diagnostic allowlists, and platform-admin bypass.
|
|
12
|
+
|
|
13
|
+
`SystemGuard` and `AdminGuard` are retired. They are not exported by `@elevasis/ui`, so code importing them does not compile. Use `AccessGuard` with the right access key instead.
|
|
14
|
+
|
|
15
|
+
## Decide the access key
|
|
16
|
+
|
|
17
|
+
| Scenario | `accessKey` to pass |
|
|
18
|
+
| --------------------------------------------------------------- | ------------------------------------------------------- |
|
|
19
|
+
| Surface is an OM System that an organization can turn on or off | the System path, e.g. `"analytics"` |
|
|
20
|
+
| Surface performs writes only some roles may do | `{ systemPath: 'analytics', action: 'manage' }` |
|
|
21
|
+
| Surface is platform-admin only | `AccessKeys.platformAdmin` |
|
|
22
|
+
| Surface is backed by an existing role permission | the matching constant, e.g. `AccessKeys.operationsRead` |
|
|
23
|
+
|
|
24
|
+
A string key is shorthand for `{ systemPath: <string>, action: 'view' }`. `AccessKeys` is exported from `@elevasis/ui/auth`, `@elevasis/ui/hooks`, and `@elevasis/core/auth`.
|
|
25
|
+
|
|
26
|
+
## System gate in the org model
|
|
27
|
+
|
|
28
|
+
Add or update the system in the id-keyed `systems` map in `core/config/organization-model.ts`.
|
|
29
|
+
|
|
30
|
+
<!-- doc-snippet:skip: illustrative excerpt, not a standalone compilable file -->
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
systems: {
|
|
34
|
+
analytics: {
|
|
35
|
+
id: 'analytics',
|
|
36
|
+
order: 10,
|
|
37
|
+
label: 'Analytics',
|
|
38
|
+
lifecycle: 'active',
|
|
39
|
+
path: '/analytics',
|
|
40
|
+
uiPosition: 'sidebar-primary'
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`lifecycle` is the gate:
|
|
46
|
+
|
|
47
|
+
- `'active'` allows access.
|
|
48
|
+
- `'beta'` allows access only when the runtime enables beta access or runs in development mode.
|
|
49
|
+
- `'draft'`, `'deprecated'`, and `'archived'` deny.
|
|
50
|
+
|
|
51
|
+
Dotted IDs such as `analytics.reports` inherit lifecycle and shell placement from their ancestors unless they declare their own value.
|
|
52
|
+
|
|
53
|
+
## Route-level system gate
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
import { AccessGuard, ProtectedRoute } from '@elevasis/ui/auth'
|
|
57
|
+
import { createFileRoute, Outlet } from '@tanstack/react-router'
|
|
58
|
+
|
|
59
|
+
export const Route = createFileRoute('/analytics')({ component: AnalyticsLayout })
|
|
60
|
+
|
|
61
|
+
function AnalyticsLayout() {
|
|
62
|
+
return (
|
|
63
|
+
<ProtectedRoute>
|
|
64
|
+
<AccessGuard accessKey="analytics">
|
|
65
|
+
<Outlet />
|
|
66
|
+
</AccessGuard>
|
|
67
|
+
</ProtectedRoute>
|
|
68
|
+
)
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The sidebar is derived from `OrganizationModel.systems`; hiding a node there is display behavior only. Keep route guards in place for direct URL access.
|
|
73
|
+
|
|
74
|
+
## Admin-only route
|
|
75
|
+
|
|
76
|
+
```tsx
|
|
77
|
+
import { AccessGuard, AccessKeys, ProtectedRoute } from '@elevasis/ui/auth'
|
|
78
|
+
import { createFileRoute, Outlet } from '@tanstack/react-router'
|
|
79
|
+
|
|
80
|
+
export const Route = createFileRoute('/admin')({ component: AdminLayout })
|
|
81
|
+
|
|
82
|
+
function AdminLayout() {
|
|
83
|
+
return (
|
|
84
|
+
<ProtectedRoute>
|
|
85
|
+
<AccessGuard accessKey={AccessKeys.platformAdmin}>
|
|
86
|
+
<Outlet />
|
|
87
|
+
</AccessGuard>
|
|
88
|
+
</ProtectedRoute>
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`AccessKeys.platformAdmin` is satisfied only by a platform admin; no role permission grants it. Pair the route guard with the system node:
|
|
94
|
+
|
|
95
|
+
<!-- doc-snippet:skip: illustrative excerpt, not a standalone compilable file -->
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
systems: {
|
|
99
|
+
admin: {
|
|
100
|
+
id: 'admin',
|
|
101
|
+
order: 20,
|
|
102
|
+
label: 'Admin',
|
|
103
|
+
lifecycle: 'active',
|
|
104
|
+
path: '/admin',
|
|
105
|
+
uiPosition: 'sidebar-bottom',
|
|
106
|
+
requiresAdmin: true
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
`requiresAdmin` hides the sidebar entry from non-admins. It is display state projected onto the shell, not enforcement, so the route guard is still required.
|
|
112
|
+
|
|
113
|
+
## Gate a single element
|
|
114
|
+
|
|
115
|
+
Use `useAccess` when the decision changes one control rather than a whole route.
|
|
116
|
+
|
|
117
|
+
```tsx
|
|
118
|
+
import { AccessKeys, useAccess } from '@elevasis/ui/hooks'
|
|
119
|
+
|
|
120
|
+
function CreateListButton() {
|
|
121
|
+
const canManage = useAccess(AccessKeys.leadGenManage)
|
|
122
|
+
|
|
123
|
+
return <Button disabled={!canManage.allowed}>New list</Button>
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
`useAccess` returns the access answer plus `isReady`, `isPlatformAdmin`, and the resolved `permissions` array. Check `isReady` before treating `allowed: false` as a denial — it is also false while membership and permissions are still loading.
|
|
128
|
+
|
|
129
|
+
## Fallbacks and redirects
|
|
130
|
+
|
|
131
|
+
`AccessGuard` accepts `fallback`, `loadingFallback`, and `redirectTo` alongside `accessKey`. `fallback` may be a node or a function receiving the access answer, so a denial can explain itself.
|
|
132
|
+
|
|
133
|
+
```tsx
|
|
134
|
+
<AccessGuard
|
|
135
|
+
accessKey="analytics"
|
|
136
|
+
loadingFallback={<Loader />}
|
|
137
|
+
fallback={(answer) => <NoAccess reason={answer.reason} />}
|
|
138
|
+
redirectTo="/"
|
|
139
|
+
>
|
|
140
|
+
<AnalyticsPage />
|
|
141
|
+
</AccessGuard>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Per-member overrides are retired
|
|
145
|
+
|
|
146
|
+
Per-member system toggles stored on membership config no longer exist. Narrow access two ways instead:
|
|
147
|
+
|
|
148
|
+
- turn the System off for the whole organization with `lifecycle`, or
|
|
149
|
+
- require a role permission by gating on a `manage` action or an `AccessKeys` constant, so only members whose assigned roles grant that permission pass.
|
|
150
|
+
|
|
151
|
+
## Verify
|
|
152
|
+
|
|
153
|
+
Check the state matrix:
|
|
154
|
+
|
|
155
|
+
| System lifecycle | Role permission | Platform admin | Expected result |
|
|
156
|
+
| ---------------- | --------------------- | ----------------------------- | ---------------------------------------------- |
|
|
157
|
+
| `active` | not required | any | Route accessible, sidebar visible |
|
|
158
|
+
| `beta` | not required | non-admin, production runtime | Route denied, sidebar hidden |
|
|
159
|
+
| `draft` | not required | non-admin | Route denied, sidebar hidden |
|
|
160
|
+
| `active` | required, not granted | non-admin | Manage action denied, view still allowed |
|
|
161
|
+
| any | any | admin | Allowed with `reason: 'platform-admin-bypass'` |
|
|
162
|
+
|
|
163
|
+
If a route denies unexpectedly, read `answer.restrictedBy` and `answer.reason` from `useAccess` — they name the layer that denied, so you can tell a lifecycle problem from a missing role permission.
|
|
@@ -17,13 +17,13 @@ Before starting, read [glossary.md](../reference/glossary.md) to disambiguate ov
|
|
|
17
17
|
## Recipes
|
|
18
18
|
|
|
19
19
|
**[Add an OM-Backed System](add-a-feature.md)**
|
|
20
|
-
You want a new system with cohesive Organization Model semantics, executable resources, and optional UI. Covers Systems, System-owned ontology and config, Resource descriptors with `title`, `description`, `resource.ontology.actions`, `primaryAction`, `codeRefs`, OM topology, runtime assembly, manifests, routes, guards, tests, and
|
|
20
|
+
You want a new system with cohesive Organization Model semantics, executable resources, and optional UI. Covers Systems, System-owned ontology and config, Resource descriptors with `title`, `description`, `resource.ontology.actions`, `primaryAction`, `codeRefs`, OM topology, runtime assembly, manifests, routes, guards, tests, and the migration off retired `System.content`.
|
|
21
21
|
|
|
22
22
|
**[Add a Resource](add-a-resource.md)**
|
|
23
23
|
You want a new workflow or agent deployed to the platform. Covers OM Resource descriptor authoring, descriptor-backed `WorkflowDefinition` binding, `DeploymentSpec` assembly, relationship declarations, and CLI verification.
|
|
24
24
|
|
|
25
25
|
**[Gate by System or Admin](gate-by-feature-or-admin.md)**
|
|
26
|
-
You want to restrict a route, nav item, or UI element by
|
|
26
|
+
You want to restrict a route, nav item, or UI element by System or by role. Covers the access-key decision table, the single `AccessGuard` surface and `useAccess` hook, System `lifecycle` as the org-level gate, `AccessKeys.platformAdmin` for admin-only routes, guard fallbacks and redirects, and why the retired `SystemGuard` / `AdminGuard` pair must not be reintroduced.
|
|
27
27
|
|
|
28
28
|
**[Build and Extend CRM](extend-crm.md)**
|
|
29
29
|
You want to build on the shared CRM without forking it: add CRM routes, compose sidebars/pages, use deal/company/contact hooks, mutate CRM data from workflows, or understand which contracts and adapters form the extension surface.
|
|
@@ -20,7 +20,7 @@ Both CLIs share the same query layer (`@repo/core/knowledge/queries`). The only
|
|
|
20
20
|
The `knowledge:*` commands require `elevasis-sdk >= 1.4.0`. Check with:
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
pnpm
|
|
23
|
+
pnpm elevasis-sdk --version
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
If you are running on Windows, **use PowerShell** for all `knowledge:*` commands. MSYS Bash rewrites the leading `/by-system/...` path argument to a Windows filesystem path, mangling the query. PowerShell passes the argument through verbatim.
|
|
@@ -58,10 +58,10 @@ List all knowledge nodes that govern the `sales.crm` system:
|
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
60
|
# External project (from inside external/<project>/)
|
|
61
|
-
pnpm
|
|
61
|
+
pnpm elevasis-sdk knowledge:ls /by-system/sales.crm/
|
|
62
62
|
|
|
63
63
|
# Monorepo (from monorepo root)
|
|
64
|
-
pnpm
|
|
64
|
+
pnpm elevasis-sdk knowledge:ls /by-system/sales.crm/
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
Nested system ids use dots, not slashes: `sales.crm`, `sales.lead-gen`, `projects`.
|
|
@@ -72,10 +72,10 @@ List all knowledge nodes that govern the CRM deal ontology record:
|
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
74
|
# External project
|
|
75
|
-
pnpm
|
|
75
|
+
pnpm elevasis-sdk knowledge:ls /by-ontology/sales.crm:object/deal
|
|
76
76
|
|
|
77
77
|
# Monorepo
|
|
78
|
-
pnpm
|
|
78
|
+
pnpm elevasis-sdk knowledge:ls /by-ontology/sales.crm:object/deal
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
Ontology IDs use `system.path:kind/local-id` or `global:kind/local-id`. Slash-containing ontology IDs are part of the query path; use PowerShell on Windows so the leading `/by-ontology/...` path is not rewritten by MSYS Bash.
|
|
@@ -86,10 +86,10 @@ List all nodes of kind `playbook`:
|
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
88
|
# External project
|
|
89
|
-
pnpm
|
|
89
|
+
pnpm elevasis-sdk knowledge:ls /by-kind/playbook
|
|
90
90
|
|
|
91
91
|
# Monorepo
|
|
92
|
-
pnpm
|
|
92
|
+
pnpm elevasis-sdk knowledge:ls /by-kind/playbook
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
Common kinds: `playbook`, `strategy`, and `reference`. The available kinds are defined on `OrgKnowledgeNode.kind` in `@elevasis/core/knowledge`.
|
|
@@ -97,7 +97,7 @@ Common kinds: `playbook`, `strategy`, and `reference`. The available kinds are d
|
|
|
97
97
|
Machine-readable output for piping:
|
|
98
98
|
|
|
99
99
|
```bash
|
|
100
|
-
pnpm
|
|
100
|
+
pnpm elevasis-sdk knowledge:ls /by-kind/playbook --ids-only
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
### 4. List by owner (`/by-owner/<id>/`)
|
|
@@ -106,10 +106,10 @@ List all knowledge nodes owned by a specific member or team:
|
|
|
106
106
|
|
|
107
107
|
```bash
|
|
108
108
|
# External project
|
|
109
|
-
pnpm
|
|
109
|
+
pnpm elevasis-sdk knowledge:ls /by-owner/operations-team
|
|
110
110
|
|
|
111
111
|
# Monorepo
|
|
112
|
-
pnpm
|
|
112
|
+
pnpm elevasis-sdk knowledge:ls /by-owner/operations-team
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
The `<id>` matches against `node.ownerIds`. Owner IDs are declared on each knowledge node in the OrganizationModel.
|
|
@@ -120,10 +120,10 @@ List what a specific node governs (outgoing `governs` edges):
|
|
|
120
120
|
|
|
121
121
|
```bash
|
|
122
122
|
# External project
|
|
123
|
-
pnpm
|
|
123
|
+
pnpm elevasis-sdk knowledge:ls /graph/knowledge.new-vertical-launch-playbook/governs/
|
|
124
124
|
|
|
125
125
|
# Monorepo
|
|
126
|
-
pnpm
|
|
126
|
+
pnpm elevasis-sdk knowledge:ls /graph/knowledge.new-vertical-launch-playbook/governs/
|
|
127
127
|
```
|
|
128
128
|
|
|
129
129
|
Knowledge node IDs use the `knowledge.<slug>` source id. Graph node IDs may be kind-prefixed,
|
|
@@ -141,10 +141,10 @@ List what governs a specific node (incoming `governs` edges):
|
|
|
141
141
|
|
|
142
142
|
```bash
|
|
143
143
|
# External project
|
|
144
|
-
pnpm
|
|
144
|
+
pnpm elevasis-sdk knowledge:ls /graph/knowledge.new-vertical-launch-playbook/governed-by/
|
|
145
145
|
|
|
146
146
|
# Monorepo
|
|
147
|
-
pnpm
|
|
147
|
+
pnpm elevasis-sdk knowledge:ls /graph/knowledge.new-vertical-launch-playbook/governed-by/
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
## Read a Node Body
|
|
@@ -153,16 +153,16 @@ pnpm exec elevasis knowledge:ls /graph/knowledge.new-vertical-launch-playbook/go
|
|
|
153
153
|
|
|
154
154
|
```bash
|
|
155
155
|
# External project
|
|
156
|
-
pnpm
|
|
156
|
+
pnpm elevasis-sdk knowledge:cat knowledge.new-vertical-launch-playbook
|
|
157
157
|
|
|
158
158
|
# Monorepo
|
|
159
|
-
pnpm
|
|
159
|
+
pnpm elevasis-sdk knowledge:cat knowledge.new-vertical-launch-playbook
|
|
160
160
|
```
|
|
161
161
|
|
|
162
162
|
Pipe to a pager for long bodies:
|
|
163
163
|
|
|
164
164
|
```bash
|
|
165
|
-
pnpm
|
|
165
|
+
pnpm elevasis-sdk knowledge:cat knowledge.platform-composition-patterns | less
|
|
166
166
|
```
|
|
167
167
|
|
|
168
168
|
## Inspect a Node's Edges
|
|
@@ -171,10 +171,10 @@ pnpm exec elevasis knowledge:cat knowledge.platform-composition-patterns | less
|
|
|
171
171
|
|
|
172
172
|
```bash
|
|
173
173
|
# External project
|
|
174
|
-
pnpm
|
|
174
|
+
pnpm elevasis-sdk knowledge:graph knowledge.new-vertical-launch-playbook
|
|
175
175
|
|
|
176
176
|
# Monorepo
|
|
177
|
-
pnpm
|
|
177
|
+
pnpm elevasis-sdk knowledge:graph knowledge.new-vertical-launch-playbook
|
|
178
178
|
```
|
|
179
179
|
|
|
180
180
|
This combines the `governs` and `governed-by` views in one output, useful for understanding a node's full graph position.
|
|
@@ -207,7 +207,7 @@ This is the format consumed by the `/knowledge` agent skill. Use it when scripti
|
|
|
207
207
|
```
|
|
208
208
|
|
|
209
209
|
```bash
|
|
210
|
-
pnpm
|
|
210
|
+
pnpm elevasis-sdk knowledge:ls /by-kind/playbook --json | jq '.results[].id'
|
|
211
211
|
```
|
|
212
212
|
|
|
213
213
|
## Windows Note
|
|
@@ -216,10 +216,10 @@ On Windows, MSYS Bash rewrites path arguments starting with `/` to Windows files
|
|
|
216
216
|
|
|
217
217
|
```powershell
|
|
218
218
|
# Correct on Windows -- PowerShell leaves the path arg intact
|
|
219
|
-
pnpm
|
|
219
|
+
pnpm elevasis-sdk knowledge:ls /by-kind/playbook
|
|
220
220
|
|
|
221
221
|
# Wrong on Windows -- MSYS Bash mangles to C:\by-kind\playbook or similar
|
|
222
|
-
bash -c "pnpm
|
|
222
|
+
bash -c "pnpm elevasis-sdk knowledge:ls /by-kind/playbook"
|
|
223
223
|
```
|
|
224
224
|
|
|
225
225
|
All other `elevasis` and `elevasis-sdk` commands are unaffected; this gotcha is specific to path arguments that start with `/`.
|
|
@@ -228,4 +228,4 @@ All other `elevasis` and `elevasis-sdk` commands are unaffected; this gotcha is
|
|
|
228
228
|
|
|
229
229
|
- [Query functions API](../reference/contracts.md) -- `bySystem`, `byOntology`, `byKind`, `byOwner`, `governs`, `governedBy` TypeScript signatures
|
|
230
230
|
- [Glossary](../reference/glossary.md) -- `systemId`, `nodeId`, `kind`, `ownerIds`
|
|
231
|
-
- [Knowledge Browser](../../../../apps/docs/content/docs/in-progress/active-development/
|
|
231
|
+
- [Knowledge Browser](../../../../apps/docs/content/docs/in-progress/active-development/_pipeline/knowledge/index.mdx) -- task doc for the full Knowledge Map bundle
|
|
@@ -1626,7 +1626,18 @@ export interface AcqContact {
|
|
|
1626
1626
|
### `DealStage`
|
|
1627
1627
|
|
|
1628
1628
|
```typescript
|
|
1629
|
-
|
|
1629
|
+
/**
|
|
1630
|
+
* Deal stage key. Intentionally an open string, not a closed union — stage
|
|
1631
|
+
* vocabulary is tenant-owned content (see the `CrmStageKeySchema` comment in
|
|
1632
|
+
* api-schemas.ts: "CRM stage/state catalogs are model-owned... The published
|
|
1633
|
+
* core schema validates only the transport shape; closed-catalog membership
|
|
1634
|
+
* is enforced by the caller/API layer via model-injected validators"). A
|
|
1635
|
+
* closed union here would bake Elevasis's specific pipeline
|
|
1636
|
+
* (`interested`/`proposal`/`closing`/`closed_won`/`closed_lost`/`nurturing`)
|
|
1637
|
+
* into every tenant's type surface. `DealStageSchema` in api-schemas.ts is
|
|
1638
|
+
* already `z.string()` for the same reason; this type now matches it.
|
|
1639
|
+
*/
|
|
1640
|
+
export type DealStage = string
|
|
1630
1641
|
```
|
|
1631
1642
|
|
|
1632
1643
|
### `DealPriorityBucketKey`
|
|
@@ -42,9 +42,9 @@ description: Terminology disambiguation for Organization OS concepts used in the
|
|
|
42
42
|
|
|
43
43
|
**MembershipFeatureConfig** -- retired per-member feature override config. The migration is complete: access is resolved through the unified Access Model using Organization Model System lifecycle, role permissions, diagnostic allowlists, membership scope, and platform-admin bypass.
|
|
44
44
|
|
|
45
|
-
**OrganizationModel** -- top-level semantic contract for an organization. Current primary fields include `version`, `domainMetadata`, `branding`, `navigation`, `ontology`, `systems`, `resources`, `topology`, `identity`, `customers`, `offerings`, `roles`, `goals`, `policies`,
|
|
45
|
+
**OrganizationModel** -- top-level semantic contract for an organization. Current primary fields include `version`, `snapshotHash`, `domainMetadata`, `branding`, `navigation`, `ontology`, `systems`, `resources`, `topology`, `identity`, `clients`, `customers`, `offerings`, `roles`, `goals`, `policies`, and `knowledge`. `sales`, `prospecting`, `projects`, and `statuses` were removed from the top-level contract in the Phase 4 schema cut; do not author against them. `actions` and `entities` remain current schema fields but are compatibility-oriented -- new authoring prefers System-owned ontology/config/resource contracts.
|
|
46
46
|
|
|
47
|
-
**OrganizationModelSystemEntry** -- System node in `OrganizationModel.systems`. Primary authoring fields include `id`, `label`, `description`, `parentSystemId`, `systems`, `lifecycle`, `ui`, `requiresAdmin`, `devOnly`, `responsibleRoleId`, `governedByKnowledge`, `drivesGoals`, `actions`, `policies`, `ontology`, `config`, and `order`. `subsystems`
|
|
47
|
+
**OrganizationModelSystemEntry** -- System node in `OrganizationModel.systems`. Primary authoring fields include `id`, `label`, `description`, `parentSystemId`, `systems`, `lifecycle`, `ui`, `requiresAdmin`, `devOnly`, `responsibleRoleId`, `governedByKnowledge`, `drivesGoals`, `actions`, `policies`, `ontology`, `config`, and `order`. `subsystems` is a retained compatibility input for older projects and should not be used for new recursive Systems. `content` is **retired** — the System schema is strict and rejects it. Author schemas and catalogs in `ontology`, and system-local settings in `config`.
|
|
48
48
|
|
|
49
49
|
**Provider / ElevasisSystemsProvider** -- runtime that registers System modules, resolves System lifecycle against the org model, projects sidebar navigation, and exposes shell helpers through `useElevasisSystems()`.
|
|
50
50
|
|
|
@@ -56,7 +56,7 @@ description: Terminology disambiguation for Organization OS concepts used in the
|
|
|
56
56
|
|
|
57
57
|
**System Interface** -- flat `System.apiInterface` marker that adopts a platform-provided API capability for a System. It declares intent through lifecycle, a closed `readinessProfile`, and optional scoped resource IDs; readiness is derived. Custom tenant Systems should not add custom `apiInterface` profiles. They extend behavior through workflows/operations plus ontology, resources, catalogs, topology, and navigation.
|
|
58
58
|
|
|
59
|
-
**System Interface profile** --
|
|
59
|
+
**System Interface profile** -- readiness profile id referenced by `system.apiInterface.readinessProfile`. The schema field itself is an open, non-empty string, not a closed literal union. Built-in platform presets (`sales.lead-gen.api`, `sales.crm.api`, `sales.lead-gen.crm-handoff` -- from `SYSTEM_INTERFACE_PROFILES`) are looked up through the profile registry and derive their requirements from platform code. A custom (non-built-in) profile id is validated structurally instead: the System must declare a `readinessContract` (`requiredObjects`, `requiredCatalogs`) so readiness can be checked without platform hardcoding.
|
|
60
60
|
|
|
61
61
|
**ResourceCategory** -- resource metadata category: `production`, `diagnostic`, `internal`, or `testing`.
|
|
62
62
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# System Interface Capabilities
|
|
8
8
|
|
|
9
|
-
This catalog is generated from `SYSTEM_INTERFACE_PROFILES` and the derived-readiness checks in `packages/core/src/business/acquisition/ontology-validation.ts
|
|
9
|
+
This catalog is generated from `SYSTEM_INTERFACE_PROFILES` and the derived-readiness checks in `packages/core/src/organization-model/readiness/` (built-in lead-gen/CRM profiles are registered from `packages/core/src/business/acquisition/ontology-validation.ts`).
|
|
10
10
|
|
|
11
11
|
System Interface profiles are a closed platform adoption handshake. Tenant custom Systems should extend behavior through workflows/operations plus ontology, resources, and topology instead of declaring custom `apiInterface.readinessProfile` values.
|
|
12
12
|
|
|
@@ -24,9 +24,10 @@ System Interface profiles are a closed platform adoption handshake. Tenant custo
|
|
|
24
24
|
- System Interface marker must be active and scope at least one active `sales.lead-gen` Resource.
|
|
25
25
|
- Object types: `sales.lead-gen:object/list`, `sales.lead-gen:object/company`, `sales.lead-gen:object/contact`.
|
|
26
26
|
- Scoped Resource `ontology.reads` bindings for each required object type.
|
|
27
|
-
- Catalog types with entries: `sales.lead-gen:catalog/build-template`, `sales.lead-gen:catalog/company-stage`, `sales.lead-gen:catalog/contact-stage
|
|
27
|
+
- Catalog types with entries: `sales.lead-gen:catalog/build-template`, `sales.lead-gen:catalog/company-stage`, `sales.lead-gen:catalog/contact-stage`.
|
|
28
28
|
- Scoped Resource `ontology.usesCatalogs` bindings for each required catalog.
|
|
29
29
|
- A lead-gen template-step catalog owned by `sales.lead-gen` whose `appliesTo` value is `sales.lead-gen:object/list`, plus a scoped `ontology.usesCatalogs` binding for it.
|
|
30
|
+
- Derived catalog `sales.lead-gen:catalog/lead-gen.stage-catalog` must exist and be non-empty; it carries no scoped-binding requirement.
|
|
30
31
|
|
|
31
32
|
## `sales.crm.api`
|
|
32
33
|
|
|
@@ -34,8 +35,8 @@ System Interface profiles are a closed platform adoption handshake. Tenant custo
|
|
|
34
35
|
- Interface key: `api`
|
|
35
36
|
- Derived-readiness requirements:
|
|
36
37
|
- System Interface marker must be active and scope at least one active `sales.crm` Resource.
|
|
37
|
-
- Catalog
|
|
38
|
-
- Scoped Resource `ontology.usesCatalogs`
|
|
38
|
+
- Catalog types with entries: `sales.crm:catalog/crm.pipeline`.
|
|
39
|
+
- Scoped Resource `ontology.usesCatalogs` bindings for each required catalog.
|
|
39
40
|
|
|
40
41
|
## `sales.lead-gen.crm-handoff`
|
|
41
42
|
|