@elevasis/sdk 1.44.2 → 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 +1001 -652
- package/dist/index.d.ts +1045 -509
- package/dist/index.js +748 -690
- package/dist/node/index.d.ts +105 -97
- package/dist/test-utils/index.d.ts +42 -28
- package/dist/test-utils/index.js +549 -732
- package/dist/worker/index.d.ts +12112 -0
- package/dist/worker/index.js +211 -186
- 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 +23 -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-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,88 +0,0 @@
|
|
|
1
|
-
# Features Compatibility Notes
|
|
2
|
-
|
|
3
|
-
`features` is legacy organization-model wording. Current Organization OS vocabulary is
|
|
4
|
-
System/Resource/Action oriented:
|
|
5
|
-
|
|
6
|
-
- **Systems** describe durable capability ownership, ontology/config, accountability, governance,
|
|
7
|
-
and knowledge mounts. They are not sidebar groups.
|
|
8
|
-
- **Resources** describe executable artifacts such as workflows, agents, scripts, and triggers;
|
|
9
|
-
each Resource attaches to a real System through `systemPath`.
|
|
10
|
-
- **Actions** describe invokable operations such as workflows, agents, commands, and UI-triggered
|
|
11
|
-
tasks.
|
|
12
|
-
|
|
13
|
-
Use this file only when older prompts, browser copy text, SDK references, or scaffold recipes still
|
|
14
|
-
say "feature". For current tenant organization-model work, route the user to Systems and Actions
|
|
15
|
-
wording and use `/by-system/<id>` knowledge paths.
|
|
16
|
-
|
|
17
|
-
Do not translate "feature" into a catch-all System. Route to Systems only when the user means a
|
|
18
|
-
durable capability boundary; route workflow, agent, script, trigger, or implementation asks to
|
|
19
|
-
Resources under the System that owns the actual business or platform capability.
|
|
20
|
-
|
|
21
|
-
## Compatibility Mapping
|
|
22
|
-
|
|
23
|
-
| Legacy wording | Current wording |
|
|
24
|
-
| ------------------------------------------------------------------------------------- | ----------------------------------------------- |
|
|
25
|
-
| Feature toggle | System availability or routing toggle |
|
|
26
|
-
| Feature ID | System ID when discussing Organization OS |
|
|
27
|
-
| Add a custom feature | Add or extend a capability System, then define Resources and Actions it owns |
|
|
28
|
-
| Feature governs X | System governs X |
|
|
29
|
-
| `/om read-folder feature:x` (legacy `/knowledge read-folder feature:x` also accepted) | `/om read-folder system:x` |
|
|
30
|
-
| `/by-feature/x` | `/by-system/x` |
|
|
31
|
-
|
|
32
|
-
`by-feature` may still exist as a legacy compatibility axis in older tools. Do not introduce new
|
|
33
|
-
guidance that depends on it; prefer `by-system` everywhere.
|
|
34
|
-
|
|
35
|
-
## What To Do With Toggle Requests
|
|
36
|
-
|
|
37
|
-
For natural-language requests like "turn on lead gen", "disable SEO", or "enable CRM":
|
|
38
|
-
|
|
39
|
-
1. Treat the request as a System availability/routing change.
|
|
40
|
-
2. Read the Systems config file to find the matching System entry or platform default constant
|
|
41
|
-
exposed by `@elevasis/core/organization-model`. For split projects this is
|
|
42
|
-
`core/config/organization-model/systems.ts`; for unsplit projects use
|
|
43
|
-
`core/config/organization-model.ts`.
|
|
44
|
-
3. Propose the exact availability/routing change in plain language.
|
|
45
|
-
4. After confirmation, run the Level A codify ceremony in `operations/codify-level-a.md`, passing
|
|
46
|
-
`targetFile` as `core/config/organization-model/systems.ts` (split) or
|
|
47
|
-
`core/config/organization-model.ts` (unsplit).
|
|
48
|
-
|
|
49
|
-
Do not create new extension files for a simple on/off change.
|
|
50
|
-
|
|
51
|
-
## When Level B Applies
|
|
52
|
-
|
|
53
|
-
Level B applies only when the user explicitly asks for a new structural concept that cannot be
|
|
54
|
-
represented as an existing System or Action configuration. In current vocabulary this usually
|
|
55
|
-
means adding a project-owned extension under `core/config/extensions/` and wiring it into the
|
|
56
|
-
organization model.
|
|
57
|
-
|
|
58
|
-
Older references may call this "adding a custom feature"; translate it to "add or extend a
|
|
59
|
-
capability System and define the Resources and Actions it owns" before invoking
|
|
60
|
-
`operations/codify-level-b.md`.
|
|
61
|
-
|
|
62
|
-
## UI Package Exception
|
|
63
|
-
|
|
64
|
-
Keep the word `features` only for legacy frontend source paths that still use that directory
|
|
65
|
-
name, such as `ui/src/features/`. Current published shell APIs are System-oriented:
|
|
66
|
-
`SystemShell`, `SystemModule`, and `ElevasisSystemsProvider`.
|
|
67
|
-
|
|
68
|
-
## Read Examples
|
|
69
|
-
|
|
70
|
-
Use current system paths:
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
pnpm exec elevasis-sdk om:ls /by-system/<id> --ids-only
|
|
74
|
-
pnpm exec elevasis-sdk om:cat <node-id>
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Legacy browser output (the `/knowledge` slash form is preserved as a permanent alias for `/om`):
|
|
78
|
-
|
|
79
|
-
```text
|
|
80
|
-
/knowledge read-folder feature:<id>
|
|
81
|
-
/om read-folder feature:<id>
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
Resolve as:
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
pnpm exec elevasis-sdk om:ls /by-system/<id> --ids-only
|
|
88
|
-
```
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
# Goals domain
|
|
2
|
-
|
|
3
|
-
The `goals` domain captures what the organization is working toward — time-bounded goals with
|
|
4
|
-
measurable outcomes. The schema shape is OKR-inspired (objectives + key results) but all
|
|
5
|
-
user-facing language must say "goals" and "measurable outcomes". Never say "OKR", "objective",
|
|
6
|
-
or "key result" to the user.
|
|
7
|
-
|
|
8
|
-
Agents use this domain for quarterly planning, priority routing, and understanding which outcomes
|
|
9
|
-
matter most right now.
|
|
10
|
-
|
|
11
|
-
## Schema
|
|
12
|
-
|
|
13
|
-
Source: `packages/core/src/organization-model/domains/goals.ts`
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
GoalsDomainSchema = z.object({
|
|
17
|
-
objectives: z.array(ObjectiveSchema).default([])
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
ObjectiveSchema = z.object({
|
|
21
|
-
id: z.string().trim().min(1).max(100), // stable ID, e.g. "goal-grow-arr-q1-2026"
|
|
22
|
-
description: z.string().trim().min(1).max(1000), // plain-language goal statement
|
|
23
|
-
periodStart: z.string().regex(ISO_DATE), // YYYY-MM-DD — must be before periodEnd
|
|
24
|
-
periodEnd: z.string().regex(ISO_DATE), // YYYY-MM-DD — enforced in superRefine
|
|
25
|
-
keyResults: z.array(KeyResultSchema).default([]) // measurable outcomes under this goal
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
KeyResultSchema = z.object({
|
|
29
|
-
id: z.string().trim().min(1).max(100), // e.g. "kr-revenue-q1"
|
|
30
|
-
description: z.string().trim().min(1).max(500), // e.g. "Increase trial-to-paid conversion"
|
|
31
|
-
targetMetric: z.string().trim().min(1).max(200), // what is being measured, e.g. "monthly revenue"
|
|
32
|
-
currentValue: z.number().default(0), // current tracked value
|
|
33
|
-
targetValue: z.number().optional() // target to hit (omit if directional)
|
|
34
|
-
})
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Field reference
|
|
38
|
-
|
|
39
|
-
| Field | Type | Notes |
|
|
40
|
-
| ------------- | ------------- | ---------------------------------------------------------- |
|
|
41
|
-
| `id` | string (100) | Stable key; e.g. `"goal-grow-arr-q1-2026"` |
|
|
42
|
-
| `description` | string (1000) | Plain-language goal statement; min 1 char required |
|
|
43
|
-
| `periodStart` | string | ISO date `YYYY-MM-DD`; must be strictly before `periodEnd` |
|
|
44
|
-
| `periodEnd` | string | ISO date `YYYY-MM-DD`; enforced by `superRefine` |
|
|
45
|
-
| `keyResults` | array | Measurable outcomes under this goal; defaults to `[]` |
|
|
46
|
-
|
|
47
|
-
Key result fields:
|
|
48
|
-
|
|
49
|
-
| Field | Type | Notes |
|
|
50
|
-
| -------------- | ------------ | --------------------------------------------------- |
|
|
51
|
-
| `id` | string (100) | Stable key; e.g. `"kr-revenue-q1"` |
|
|
52
|
-
| `description` | string (500) | What is being tracked; min 1 char required |
|
|
53
|
-
| `targetMetric` | string (200) | The metric name; e.g. `"monthly recurring revenue"` |
|
|
54
|
-
| `currentValue` | number | Current value; defaults to `0` |
|
|
55
|
-
| `targetValue` | number | Optional target; omit if the outcome is directional |
|
|
56
|
-
|
|
57
|
-
## Validation rules
|
|
58
|
-
|
|
59
|
-
- `periodEnd` must be strictly after `periodStart`; enforced at parse time by
|
|
60
|
-
`OrganizationModelSchema.superRefine()`; setting equal dates is also invalid
|
|
61
|
-
- Both `periodStart` and `periodEnd` must match `YYYY-MM-DD` ISO date format exactly
|
|
62
|
-
- The internal field name for the goals array is `objectives` (not `goals`) — this is a
|
|
63
|
-
schema-level name, not user-facing vocabulary; always say "goals" to users
|
|
64
|
-
- The internal field name for measurable outcomes is `keyResults` (not `outcomes`) — same
|
|
65
|
-
convention applies; say "measurable outcomes" to users
|
|
66
|
-
- `targetValue` is optional for directional goals where there is no specific number target
|
|
67
|
-
|
|
68
|
-
## Examples
|
|
69
|
-
|
|
70
|
-
```typescript
|
|
71
|
-
goals: {
|
|
72
|
-
objectives: [
|
|
73
|
-
{
|
|
74
|
-
id: "goal-arr-q1-2026",
|
|
75
|
-
description: "Reach $50K MRR by end of Q1 2026",
|
|
76
|
-
periodStart: "2026-01-01",
|
|
77
|
-
periodEnd: "2026-03-31",
|
|
78
|
-
keyResults: [
|
|
79
|
-
{
|
|
80
|
-
id: "kr-mrr-q1",
|
|
81
|
-
description: "Grow monthly recurring revenue",
|
|
82
|
-
targetMetric: "monthly recurring revenue (MRR)",
|
|
83
|
-
currentValue: 32000,
|
|
84
|
-
targetValue: 50000
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
id: "kr-churn-q1",
|
|
88
|
-
description: "Reduce monthly churn rate",
|
|
89
|
-
targetMetric: "monthly churn rate (%)",
|
|
90
|
-
currentValue: 4.2,
|
|
91
|
-
targetValue: 2.5
|
|
92
|
-
}
|
|
93
|
-
]
|
|
94
|
-
}
|
|
95
|
-
]
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Where it lives in the adapter
|
|
100
|
-
|
|
101
|
-
**Split projects:** `core/config/organization-model/profile.ts` under the `goals` key of
|
|
102
|
-
`defineOrganizationModel({...})`.
|
|
103
|
-
|
|
104
|
-
**Unsplit projects:** `core/config/organization-model.ts` under the same key.
|
|
105
|
-
|
|
106
|
-
To read current goals: open the appropriate file and inspect the `goals.objectives` array, or
|
|
107
|
-
use `pnpm exec elevasis-sdk om:cat goals` (external project).
|
|
108
|
-
|
|
109
|
-
## Write path
|
|
110
|
-
|
|
111
|
-
To add, edit, remove, or update progress on a goal, the `/om` skill runs the codify
|
|
112
|
-
ceremony (`operations/codify-level-a.md`): snapshot → propose → confirm → write → typecheck →
|
|
113
|
-
Zod parse → rollback on failure. Pass `targetFile` as
|
|
114
|
-
`core/config/organization-model/profile.ts` for split projects, or
|
|
115
|
-
`core/config/organization-model.ts` for unsplit projects. Only the `objectives` array is written;
|
|
116
|
-
no other keys in the target file are touched. For progress-only updates (changing `currentValue`
|
|
117
|
-
on an existing outcome), a targeted edit is preferred over rewriting the entire goals block.
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
**Read via `/om`** (legacy `/knowledge` alias also accepted) — natural-language queries like
|
|
122
|
-
"what are our goals this quarter?" or "what's the current MRR against target?" route to this
|
|
123
|
-
domain via the skill's intent classifier.
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
# Identity domain
|
|
2
|
-
|
|
3
|
-
The `identity` domain captures the organization's legal identity, purpose, and operational anchors.
|
|
4
|
-
It is distinct from `branding` (display identity: logos, product names) — editing identity fields
|
|
5
|
-
here does not touch any visual or branding configuration.
|
|
6
|
-
|
|
7
|
-
## Schema
|
|
8
|
-
|
|
9
|
-
Source: `packages/core/src/organization-model/domains/identity.ts`
|
|
10
|
-
|
|
11
|
-
```typescript
|
|
12
|
-
IdentityDomainSchema = z.object({
|
|
13
|
-
mission: z.string().trim().max(1000).default(''),
|
|
14
|
-
vision: z.string().trim().max(1000).default(''),
|
|
15
|
-
legalName: z.string().trim().max(200).default(''),
|
|
16
|
-
entityType: z.string().trim().max(100).default(''), // e.g. "LLC", "Corporation"
|
|
17
|
-
jurisdiction: z.string().trim().max(200).default(''), // e.g. "United States – Delaware"
|
|
18
|
-
industryCategory: z.string().trim().max(200).default(''), // e.g. "Marketing Agency"
|
|
19
|
-
geographicFocus: z.string().trim().max(200).default(''), // e.g. "North America"
|
|
20
|
-
timeZone: z.string().trim().max(100).default('UTC'), // IANA identifier
|
|
21
|
-
businessHours: BusinessHoursSchema // per-day { open, close } in HH:MM
|
|
22
|
-
})
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
`BusinessHoursSchema` is an object with optional keys `monday` through `sunday`, each holding
|
|
26
|
-
`{ open: "HH:MM", close: "HH:MM" }`. An empty object `{}` means not configured.
|
|
27
|
-
|
|
28
|
-
## Field reference
|
|
29
|
-
|
|
30
|
-
| Field | Type | Max | Notes |
|
|
31
|
-
| ------------------ | ------ | ---- | -------------------------------------------------------- |
|
|
32
|
-
| `mission` | string | 1000 | Why the organization exists |
|
|
33
|
-
| `vision` | string | 1000 | Where the organization is headed long-term |
|
|
34
|
-
| `legalName` | string | 200 | Registered legal name |
|
|
35
|
-
| `entityType` | string | 100 | e.g. "LLC", "Corporation", "Sole Proprietor" |
|
|
36
|
-
| `jurisdiction` | string | 200 | e.g. "United States – Delaware", "Canada – Ontario" |
|
|
37
|
-
| `industryCategory` | string | 200 | e.g. "Marketing Agency", "SaaS", "Professional Services" |
|
|
38
|
-
| `geographicFocus` | string | 200 | e.g. "North America", "Global", "Southeast Asia" |
|
|
39
|
-
| `timeZone` | string | 100 | IANA identifier, e.g. `America/Los_Angeles` |
|
|
40
|
-
| `businessHours` | object | -- | Per-day `{ open: "HH:MM", close: "HH:MM" }` |
|
|
41
|
-
|
|
42
|
-
## Validation rules
|
|
43
|
-
|
|
44
|
-
- All string fields default to empty string `''`; none are required to be non-empty at schema level
|
|
45
|
-
- `timeZone` defaults to `"UTC"` when not set; agents should treat a value of `"UTC"` as
|
|
46
|
-
potentially unconfigured and surface it for review
|
|
47
|
-
- `businessHours` defaults to `{}` (not configured); an empty object is valid
|
|
48
|
-
- Per-day entries must follow `"HH:MM"` 24-hour format; the schema does not enforce range bounds
|
|
49
|
-
but convention is `00:00`–`23:59`
|
|
50
|
-
- `jurisdiction` should use the format `"Country – Region"` (em dash, not hyphen) for
|
|
51
|
-
consistency across agents that parse it
|
|
52
|
-
|
|
53
|
-
## Examples
|
|
54
|
-
|
|
55
|
-
```typescript
|
|
56
|
-
identity: {
|
|
57
|
-
mission: "We help SMBs automate complex operations using AI.",
|
|
58
|
-
vision: "A world where every business operates at the efficiency of a Fortune 500.",
|
|
59
|
-
legalName: "Acme Operations LLC",
|
|
60
|
-
entityType: "LLC",
|
|
61
|
-
jurisdiction: "United States – Delaware",
|
|
62
|
-
industryCategory: "AI Automation / Professional Services",
|
|
63
|
-
geographicFocus: "North America",
|
|
64
|
-
timeZone: "America/Chicago",
|
|
65
|
-
businessHours: {
|
|
66
|
-
monday: { open: "09:00", close: "17:00" },
|
|
67
|
-
tuesday: { open: "09:00", close: "17:00" },
|
|
68
|
-
wednesday: { open: "09:00", close: "17:00" },
|
|
69
|
-
thursday: { open: "09:00", close: "17:00" },
|
|
70
|
-
friday: { open: "09:00", close: "17:00" }
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Where it lives in the adapter
|
|
76
|
-
|
|
77
|
-
**Split projects:** `core/config/organization-model/profile.ts` under the `identity` key of
|
|
78
|
-
`defineOrganizationModel({...})`.
|
|
79
|
-
|
|
80
|
-
**Unsplit projects:** `core/config/organization-model.ts` under the same key.
|
|
81
|
-
|
|
82
|
-
To read the current values: open the appropriate file and inspect the `identity` block directly,
|
|
83
|
-
or use `pnpm exec elevasis-sdk om:cat identity` (external project).
|
|
84
|
-
|
|
85
|
-
## Write path
|
|
86
|
-
|
|
87
|
-
To edit any field, the `/om` skill runs the codify ceremony
|
|
88
|
-
(`operations/codify-level-a.md`): snapshot → propose → confirm → write → typecheck → Zod parse →
|
|
89
|
-
rollback on failure. Pass `targetFile` as `core/config/organization-model/profile.ts` for split
|
|
90
|
-
projects, or `core/config/organization-model.ts` for unsplit projects. Only the confirmed fields
|
|
91
|
-
are written; no other top-level keys in the target file are touched.
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
**Read via `/om`** (legacy `/knowledge` alias also accepted) — natural-language queries like
|
|
96
|
-
"what's our identity set to?" or "what timezone are we in?" route to this domain via the skill's
|
|
97
|
-
intent classifier.
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
# Labels domain
|
|
2
|
-
|
|
3
|
-
`label` is an inline display field carried by status entries, stage entries, System entries,
|
|
4
|
-
knowledge nodes, registry entries, and sidebar surfaces in the OrganizationModel. Labels control what users see in the UI and what
|
|
5
|
-
agents say when narrating state. Editing a label does not change the entry's `id` or
|
|
6
|
-
`semanticClass` -- only the human-readable display string. This is Level A only (config-only
|
|
7
|
-
edits to a single file under `core/config/`).
|
|
8
|
-
|
|
9
|
-
## What carries labels
|
|
10
|
-
|
|
11
|
-
The following model elements have editable inline `label` fields:
|
|
12
|
-
|
|
13
|
-
**Status / stage entries.** Each domain that carries an enum-like array exposes per-entry labels:
|
|
14
|
-
|
|
15
|
-
- `sales.statuses` -- deal pipeline stages.
|
|
16
|
-
- `prospecting.statuses` -- lead lifecycle stages.
|
|
17
|
-
- `projects.statuses` -- project and task stages.
|
|
18
|
-
|
|
19
|
-
Source of platform defaults: `packages/core/src/organization-model/domains/{sales,prospecting,projects}.ts`.
|
|
20
|
-
|
|
21
|
-
Each status entry shape:
|
|
22
|
-
|
|
23
|
-
```typescript
|
|
24
|
-
{ id: 'new', label: 'New Lead', semanticClass: 'active', color: 'blue' }
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
**Systems.** The `label` field on a System entry. Editing it changes agent narration and any
|
|
28
|
-
System-derived shell text, but it does not change the System `id`, route path, or graph node id.
|
|
29
|
-
|
|
30
|
-
**Sidebar surfaces.** Routeable leaves under `navigation.sidebar.primary` and
|
|
31
|
-
`navigation.sidebar.bottom` carry labels. Editing changes nav item and breadcrumb display without
|
|
32
|
-
changing the route path or target System refs.
|
|
33
|
-
|
|
34
|
-
**Knowledge/domain entries.** Knowledge nodes, customers, offerings, goals, roles, resources,
|
|
35
|
-
actions, entities, and policies may carry labels or titles depending on the domain. Edit only the
|
|
36
|
-
display field that already exists on the entry.
|
|
37
|
-
|
|
38
|
-
## What is NOT in scope
|
|
39
|
-
|
|
40
|
-
`id` and `semanticClass` of any entry must never change in a label edit -- they are structural
|
|
41
|
-
anchors used by code, hooks, and workflow adapters. Only `label` (and optionally `color` or
|
|
42
|
-
`icon`) are in scope. To rename an `id`, escalate to a separate Level B refactor with explicit
|
|
43
|
-
confirmation, because every consumer that references the old `id` must be updated in the same
|
|
44
|
-
change.
|
|
45
|
-
|
|
46
|
-
## Validation rules
|
|
47
|
-
|
|
48
|
-
- `label` is non-empty, max 120 characters.
|
|
49
|
-
- `id` and `semanticClass` are unchanged from the previous state.
|
|
50
|
-
- Entries not being edited remain byte-identical in the output -- partial array rewrites are
|
|
51
|
-
preferred over wholesale array replacement to minimize diff surface.
|
|
52
|
-
|
|
53
|
-
## Realistic examples
|
|
54
|
-
|
|
55
|
-
Rename two sales statuses:
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
Domain: sales (deal pipeline)
|
|
59
|
-
new: "New Lead" -> "Inbound Lead"
|
|
60
|
-
proposal: "Proposal Sent" -> "Proposal Out"
|
|
61
|
-
negotiation: (unchanged)
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Rename a System label without changing its ID:
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
systems:
|
|
68
|
-
sales.crm: label "CRM" -> "Sales Pipeline"
|
|
69
|
-
(id stays 'sales.crm'; graph node remains 'system:sales.crm')
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Rename a sidebar surface:
|
|
73
|
-
|
|
74
|
-
```
|
|
75
|
-
navigation.sidebar.primary:
|
|
76
|
-
sales.crm: label "Pipeline" -> "Deal Pipeline"
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Where it lives
|
|
80
|
-
|
|
81
|
-
**Split projects:** the target file depends on what carries the label being edited:
|
|
82
|
-
|
|
83
|
-
- Status/stage entries and System entries -- `core/config/organization-model/systems.ts`
|
|
84
|
-
- Sidebar navigation surfaces -- `core/config/organization-model/navigation.ts`
|
|
85
|
-
- Business-profile domain entries (customers, offerings, roles, goals) -- `core/config/organization-model/profile.ts`
|
|
86
|
-
|
|
87
|
-
**Unsplit projects:** `core/config/organization-model.ts` for all label edits.
|
|
88
|
-
|
|
89
|
-
Pass the appropriate path as `targetFile` when invoking `operations/codify-level-a.md`.
|
|
90
|
-
|
|
91
|
-
**Note:** `labels` is not currently authored as a standalone top-level domain key in either the
|
|
92
|
-
template or reference tenant model. Label fields are inline properties on the entries listed
|
|
93
|
-
above. Do not invent a top-level `labels` key in `profile.ts`.
|
|
94
|
-
|
|
95
|
-
## Validation gate
|
|
96
|
-
|
|
97
|
-
Every label change must pass before codify completes:
|
|
98
|
-
|
|
99
|
-
1. `pnpm -C operations check-types`.
|
|
100
|
-
2. `resolveOrganizationModel()` and `OrganizationModelSchema.parse()` succeed on the merged result.
|
|
101
|
-
|
|
102
|
-
On failure, the codify ceremony rolls back. See `operations/codify-level-a.md` for the rollback
|
|
103
|
-
procedure.
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
> **Read via `/om`** (legacy `/knowledge` alias also accepted) -- natural-language queries like
|
|
108
|
-
> "what's the label for the proposal stage?" or "what do we call the SEO System?" route to this
|
|
109
|
-
> domain via the skill's intent classifier. To rename one or more labels, the `/om` skill triggers
|
|
110
|
-
> the codify ceremony when intent classifies as Codify.
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
# Offerings domain
|
|
2
|
-
|
|
3
|
-
The `offerings` domain describes what the organization sells or delivers — a catalog of products
|
|
4
|
-
and services modeled after the Business Model Canvas "Value Propositions". Agents use offerings
|
|
5
|
-
for quoting, proposal generation, and scope-of-work reasoning.
|
|
6
|
-
|
|
7
|
-
## Schema
|
|
8
|
-
|
|
9
|
-
Source: `packages/core/src/organization-model/domains/offerings.ts`
|
|
10
|
-
|
|
11
|
-
```typescript
|
|
12
|
-
OfferingsDomainSchema = z.object({
|
|
13
|
-
products: z.array(ProductSchema).default([])
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
ProductSchema = z.object({
|
|
17
|
-
id: z.string().trim().min(1).max(100), // stable ID, e.g. "product-starter-plan"
|
|
18
|
-
name: z.string().trim().max(200).default(''), // display name
|
|
19
|
-
description: z.string().trim().max(2000).default(''), // what it delivers
|
|
20
|
-
pricingModel: PricingModelSchema.default('custom'), // 'one-time' | 'subscription' | 'usage-based' | 'custom'
|
|
21
|
-
price: z.number().min(0).default(0), // base price amount (>= 0)
|
|
22
|
-
currency: z.string().trim().max(10).default('USD'),// ISO 4217, e.g. "USD", "EUR"
|
|
23
|
-
targetSegmentIds: z.array(z.string()).default([]), // must ref customers.segments[].id
|
|
24
|
-
deliverySystemId: z.string().optional() // optional ref to systems[].id
|
|
25
|
-
})
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
`pricingModel` values:
|
|
29
|
-
|
|
30
|
-
- `one-time` -- single purchase (setup fee, project fee)
|
|
31
|
-
- `subscription` -- recurring (monthly/annual SaaS, retainer)
|
|
32
|
-
- `usage-based` -- metered by consumption (API calls, seats)
|
|
33
|
-
- `custom` -- negotiated or bespoke pricing
|
|
34
|
-
|
|
35
|
-
## Field reference
|
|
36
|
-
|
|
37
|
-
| Field | Type | Max | Notes |
|
|
38
|
-
| ------------------ | -------- | ---- | -------------------------------------------------------- |
|
|
39
|
-
| `id` | string | 100 | Stable key, min 1 char; e.g. `"product-starter-plan"` |
|
|
40
|
-
| `name` | string | 200 | Display name |
|
|
41
|
-
| `description` | string | 2000 | What this product or service delivers |
|
|
42
|
-
| `pricingModel` | enum | -- | `one-time`, `subscription`, `usage-based`, or `custom` |
|
|
43
|
-
| `price` | number | -- | Base price amount, min 0; use 0 for fully custom pricing |
|
|
44
|
-
| `currency` | string | 10 | ISO 4217 code; defaults to `"USD"` |
|
|
45
|
-
| `targetSegmentIds` | string[] | -- | Each entry must reference a `customers.segments[].id` |
|
|
46
|
-
| `deliverySystemId` | string | -- | Optional reference to a `systems[].id` |
|
|
47
|
-
|
|
48
|
-
## Validation rules
|
|
49
|
-
|
|
50
|
-
- `id` is the stable key; changing it after creation is a breaking change for any downstream
|
|
51
|
-
references
|
|
52
|
-
- `targetSegmentIds` entries must exist in `customers.segments[].id`; the schema enforces this
|
|
53
|
-
at parse time — missing references cause `resolveOrganizationModel()` to fail
|
|
54
|
-
- `deliverySystemId` (when present) must exist in `systems[].id`; same parse-time enforcement
|
|
55
|
-
- `price` must be >= 0; use 0 when pricing is fully custom or not yet set
|
|
56
|
-
- `currency` must be a valid ISO 4217 code by convention (the schema only validates length)
|
|
57
|
-
- Cross-reference: if a product is removed, surface any `targetSegmentIds` in other products
|
|
58
|
-
that reference the removed ID
|
|
59
|
-
|
|
60
|
-
## Examples
|
|
61
|
-
|
|
62
|
-
```typescript
|
|
63
|
-
offerings: {
|
|
64
|
-
products: [
|
|
65
|
-
{
|
|
66
|
-
id: "product-full-service-retainer",
|
|
67
|
-
name: "Full-Service Retainer",
|
|
68
|
-
description: "End-to-end campaign delivery, reporting, and optimization for SMB clients.",
|
|
69
|
-
pricingModel: "subscription",
|
|
70
|
-
price: 2500,
|
|
71
|
-
currency: "USD",
|
|
72
|
-
targetSegmentIds: ["segment-smb-agencies"],
|
|
73
|
-
deliverySystemId: undefined
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
id: "product-one-time-audit",
|
|
77
|
-
name: "One-Time Operations Audit",
|
|
78
|
-
description: "Single-engagement review of current workflows with a remediation roadmap.",
|
|
79
|
-
pricingModel: "one-time",
|
|
80
|
-
price: 1500,
|
|
81
|
-
currency: "USD",
|
|
82
|
-
targetSegmentIds: ["segment-smb-agencies"],
|
|
83
|
-
deliverySystemId: undefined
|
|
84
|
-
}
|
|
85
|
-
]
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Where it lives in the adapter
|
|
90
|
-
|
|
91
|
-
**Split projects:** `core/config/organization-model/profile.ts` under the `offerings` key of
|
|
92
|
-
`defineOrganizationModel({...})`.
|
|
93
|
-
|
|
94
|
-
**Unsplit projects:** `core/config/organization-model.ts` under the same key.
|
|
95
|
-
|
|
96
|
-
To read current products: open the appropriate file and inspect the `offerings.products` array,
|
|
97
|
-
or use `pnpm exec elevasis-sdk om:cat offerings` (external project).
|
|
98
|
-
|
|
99
|
-
## Write path
|
|
100
|
-
|
|
101
|
-
To add, edit, or remove a product, the `/om` skill runs the codify ceremony
|
|
102
|
-
(`operations/codify-level-a.md`): snapshot → propose → confirm → write → typecheck → Zod parse →
|
|
103
|
-
rollback on failure. Pass `targetFile` as `core/config/organization-model/profile.ts` for split
|
|
104
|
-
projects, or `core/config/organization-model.ts` for unsplit projects. Only the `products` array
|
|
105
|
-
is written; no other keys in the target file are touched. Before writing, the skill verifies all
|
|
106
|
-
`targetSegmentIds` and `deliverySystemId` references resolve. When adding, append to the array.
|
|
107
|
-
When editing, replace by `id`. When removing, filter out — and surface any dangling references
|
|
108
|
-
first.
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
**Read via `/om`** (legacy `/knowledge` alias also accepted) — natural-language queries like
|
|
113
|
-
"what do we sell?" or "what's the pricing on the retainer?" route to this domain via the skill's
|
|
114
|
-
intent classifier.
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
# Roles domain
|
|
2
|
-
|
|
3
|
-
The `roles` domain describes who does what inside the organization — a role chart inspired by the
|
|
4
|
-
EOS Accountability Chart but using plain-language field names throughout. Agents use this domain
|
|
5
|
-
for HITL routing, escalation logic, and approval-rights reasoning.
|
|
6
|
-
|
|
7
|
-
Field names are developer-facing; when narrating to users, say "role", "responsibilities",
|
|
8
|
-
"reports to", and "held by". Do not say "seat", "accountability", or "EOS".
|
|
9
|
-
|
|
10
|
-
## Schema
|
|
11
|
-
|
|
12
|
-
Source: `packages/core/src/organization-model/domains/roles.ts`
|
|
13
|
-
|
|
14
|
-
```typescript
|
|
15
|
-
RolesDomainSchema = z.object({
|
|
16
|
-
roles: z.array(RoleSchema).default([])
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
RoleSchema = z.object({
|
|
20
|
-
id: z.string().trim().min(1).max(100), // stable ID, e.g. "role-ceo"
|
|
21
|
-
title: z.string().trim().min(1).max(200), // display title, e.g. "CEO"
|
|
22
|
-
responsibilities: z.array(z.string().trim().max(500)).default([]),// what this role owns
|
|
23
|
-
reportsToId: z.string().trim().min(1).max(100).optional(), // must ref another roles[].id
|
|
24
|
-
heldBy: z.string().trim().max(200).optional() // name or email, free-form
|
|
25
|
-
})
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Field reference
|
|
29
|
-
|
|
30
|
-
| Field | Type | Max | Notes |
|
|
31
|
-
| ------------------ | -------- | --- | --------------------------------------------------------------- |
|
|
32
|
-
| `id` | string | 100 | Stable key, min 1 char; e.g. `"role-ceo"` |
|
|
33
|
-
| `title` | string | 200 | Display title; min 1 char required |
|
|
34
|
-
| `responsibilities` | string[] | 500 | Each item: one thing this role is accountable for |
|
|
35
|
-
| `reportsToId` | string | 100 | Optional; must reference another `roles[].id` in the collection |
|
|
36
|
-
| `heldBy` | string | 200 | Optional; name or email of the person holding this role |
|
|
37
|
-
|
|
38
|
-
## Validation rules
|
|
39
|
-
|
|
40
|
-
- `reportsToId` (when present) must resolve to another `roles[].id` in the same collection;
|
|
41
|
-
enforced at parse time by `OrganizationModelSchema.superRefine()`
|
|
42
|
-
- Absence of `reportsToId` indicates a top-level role (no reporting line)
|
|
43
|
-
- Cycle detection is not enforced by the schema (known limitation); agents should surface
|
|
44
|
-
obvious cycles (e.g. role A reports to role B which reports to role A)
|
|
45
|
-
- `heldBy` is free-form; no validation beyond max length
|
|
46
|
-
- An empty roles array means no HITL routing or escalation rules are available
|
|
47
|
-
|
|
48
|
-
## Examples
|
|
49
|
-
|
|
50
|
-
```typescript
|
|
51
|
-
roles: {
|
|
52
|
-
roles: [
|
|
53
|
-
{
|
|
54
|
-
id: "role-ceo",
|
|
55
|
-
title: "CEO",
|
|
56
|
-
responsibilities: [
|
|
57
|
-
"Set company direction",
|
|
58
|
-
"Final approval on deals >$10K",
|
|
59
|
-
"Manage investor relations"
|
|
60
|
-
],
|
|
61
|
-
reportsToId: undefined,
|
|
62
|
-
heldBy: "Alice Johnson"
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
id: "role-head-of-client-success",
|
|
66
|
-
title: "Head of Client Success",
|
|
67
|
-
responsibilities: [
|
|
68
|
-
"Own client health scores",
|
|
69
|
-
"Lead quarterly business reviews",
|
|
70
|
-
"Handle escalations"
|
|
71
|
-
],
|
|
72
|
-
reportsToId: "role-ceo",
|
|
73
|
-
heldBy: undefined
|
|
74
|
-
}
|
|
75
|
-
]
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Where it lives in the adapter
|
|
80
|
-
|
|
81
|
-
**Split projects:** `core/config/organization-model/profile.ts` under the `roles` key of
|
|
82
|
-
`defineOrganizationModel({...})`.
|
|
83
|
-
|
|
84
|
-
**Unsplit projects:** `core/config/organization-model.ts` under the same key.
|
|
85
|
-
|
|
86
|
-
To read the current role chart: open the appropriate file and inspect the `roles.roles` array,
|
|
87
|
-
or use `pnpm exec elevasis-sdk om:cat roles` (external project).
|
|
88
|
-
|
|
89
|
-
## Write path
|
|
90
|
-
|
|
91
|
-
To add, edit, or remove a role, the `/om` skill runs the codify ceremony
|
|
92
|
-
(`operations/codify-level-a.md`): snapshot → propose → confirm → write → typecheck → Zod parse →
|
|
93
|
-
rollback on failure. Pass `targetFile` as `core/config/organization-model/profile.ts` for split
|
|
94
|
-
projects, or `core/config/organization-model.ts` for unsplit projects. Only the `roles` array is
|
|
95
|
-
written; no other keys in the target file are touched. Before writing, the skill verifies all
|
|
96
|
-
`reportsToId` references resolve to IDs that will exist after the write. When removing a role,
|
|
97
|
-
the skill surfaces any other roles that `reportsToId` to it and asks whether to clear those
|
|
98
|
-
reporting lines before proceeding.
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
**Read via `/om`** (legacy `/knowledge` alias also accepted) — natural-language queries like
|
|
103
|
-
"who is responsible for client escalations?" or "list my roles" route to this domain via the
|
|
104
|
-
skill's intent classifier.
|