@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.
Files changed (246) hide show
  1. package/dist/cli.cjs +991 -650
  2. package/dist/index.d.ts +1045 -509
  3. package/dist/index.js +738 -688
  4. package/dist/node/index.d.ts +105 -97
  5. package/dist/test-utils/index.d.ts +42 -28
  6. package/dist/test-utils/index.js +514 -783
  7. package/dist/worker/index.d.ts +12112 -0
  8. package/dist/worker/index.js +121 -182
  9. package/package.json +6 -9
  10. package/reference/_navigation.md +151 -21
  11. package/reference/_reference-manifest.json +186 -4
  12. package/reference/claude-config.md +8 -0
  13. package/reference/core/index.mdx +3 -3
  14. package/reference/examples/organization-model.ts +117 -111
  15. package/reference/index.mdx +4 -4
  16. package/reference/rules/active-change-index.md +40 -54
  17. package/reference/rules/agent-runtime.md +81 -0
  18. package/reference/rules/agent-start-here.md +71 -163
  19. package/reference/rules/deployment.md +33 -10
  20. package/reference/rules/error-handling.md +26 -0
  21. package/reference/rules/execution.md +13 -0
  22. package/reference/rules/frontend.md +10 -3
  23. package/reference/rules/observability.md +9 -1
  24. package/reference/rules/operations.md +26 -17
  25. package/reference/rules/organization-model.md +74 -88
  26. package/reference/rules/organization-os.md +71 -88
  27. package/reference/rules/package-taxonomy.md +11 -2
  28. package/reference/rules/platform.md +13 -7
  29. package/reference/rules/shared-types.md +15 -0
  30. package/reference/rules/task-tracking.md +30 -5
  31. package/reference/rules/ui.md +145 -3
  32. package/reference/rules/vibe-intents.md +271 -0
  33. package/reference/rules/vibe.md +17 -243
  34. package/reference/scaffold/core/organization-graph.mdx +111 -97
  35. package/reference/scaffold/core/organization-model.mdx +234 -214
  36. package/reference/scaffold/operations/propagation-pipeline.md +1 -1
  37. package/reference/scaffold/operations/scaffold-maintenance.md +19 -18
  38. package/reference/scaffold/operations/workflow-recipes.md +71 -19
  39. package/reference/scaffold/recipes/add-a-feature.md +156 -146
  40. package/reference/scaffold/recipes/add-a-resource.md +123 -117
  41. package/reference/scaffold/recipes/customize-crm-actions.md +25 -10
  42. package/reference/scaffold/recipes/customize-knowledge-browser.md +52 -117
  43. package/reference/scaffold/recipes/customize-organization-model.md +161 -149
  44. package/reference/scaffold/recipes/extend-a-base-entity.md +156 -140
  45. package/reference/scaffold/recipes/extend-crm.md +16 -11
  46. package/reference/scaffold/recipes/extend-lead-gen.md +25 -7
  47. package/reference/scaffold/recipes/gate-by-feature-or-admin.md +160 -118
  48. package/reference/scaffold/recipes/index.md +2 -2
  49. package/reference/scaffold/recipes/query-the-knowledge-graph.md +23 -23
  50. package/reference/scaffold/reference/contracts.md +12 -1
  51. package/reference/scaffold/reference/glossary.md +3 -3
  52. package/reference/scaffold/reference/system-interface-capabilities.md +5 -4
  53. package/reference/scaffold/ui/composition-extensibility.mdx +271 -232
  54. package/reference/scaffold/ui/feature-flags-and-gating.md +14 -6
  55. package/reference/scaffold/ui/feature-shell.mdx +279 -62
  56. package/reference/scaffold/ui/recipes.md +229 -197
  57. package/reference/sdk/cli-management.mdx +77 -29
  58. package/reference/sdk/concepts.mdx +2 -0
  59. package/reference/sdk/define-builders.mdx +76 -0
  60. package/reference/sdk/deployment/command-center.mdx +6 -2
  61. package/reference/sdk/deployment/execution-reference.mdx +64 -186
  62. package/reference/sdk/deployment/index.mdx +2 -0
  63. package/reference/sdk/exports.mdx +4 -4
  64. package/reference/sdk/framework/agent.mdx +49 -119
  65. package/reference/sdk/framework/index.mdx +46 -65
  66. package/reference/sdk/framework/project-structure.mdx +150 -205
  67. package/reference/sdk/framework/tutorial-system.mdx +2 -2
  68. package/reference/sdk/human-in-the-loop.mdx +152 -0
  69. package/reference/sdk/index.mdx +6 -7
  70. package/reference/sdk/platform-tools/index.mdx +12 -0
  71. package/reference/sdk/platform-tools/type-safety.mdx +4 -0
  72. package/reference/sdk/project-deployment-spec.mdx +131 -0
  73. package/reference/sdk/resources/index.mdx +21 -7
  74. package/reference/sdk/resources/patterns.mdx +54 -24
  75. package/reference/sdk/resources/types.mdx +7 -4
  76. package/reference/sdk/templates/data-enrichment.mdx +7 -3
  77. package/reference/sdk/templates/email-sender.mdx +139 -135
  78. package/reference/sdk/templates/lead-scorer.mdx +5 -1
  79. package/reference/sdk/templates/pdf-generator.mdx +155 -151
  80. package/reference/sdk/templates/recurring-job.mdx +195 -189
  81. package/reference/sdk/templates/text-classifier.mdx +4 -0
  82. package/reference/sdk/templates/web-scraper.mdx +139 -135
  83. package/reference/spine/spine-primer.md +135 -96
  84. package/reference/ui/index.mdx +14 -7
  85. package/dist/types/worker/adapters/anymailfinder.d.ts +0 -14
  86. package/dist/types/worker/adapters/apify.d.ts +0 -14
  87. package/dist/types/worker/adapters/approval.d.ts +0 -23
  88. package/dist/types/worker/adapters/attio.d.ts +0 -22
  89. package/dist/types/worker/adapters/clickup.d.ts +0 -22
  90. package/dist/types/worker/adapters/create-adapter.d.ts +0 -41
  91. package/dist/types/worker/adapters/crm.d.ts +0 -20
  92. package/dist/types/worker/adapters/dropbox.d.ts +0 -14
  93. package/dist/types/worker/adapters/email.d.ts +0 -25
  94. package/dist/types/worker/adapters/execution.d.ts +0 -22
  95. package/dist/types/worker/adapters/gmail.d.ts +0 -14
  96. package/dist/types/worker/adapters/google-sheets.d.ts +0 -14
  97. package/dist/types/worker/adapters/index.d.ts +0 -33
  98. package/dist/types/worker/adapters/instantly.d.ts +0 -14
  99. package/dist/types/worker/adapters/lead.d.ts +0 -28
  100. package/dist/types/worker/adapters/list.d.ts +0 -9
  101. package/dist/types/worker/adapters/llm.d.ts +0 -45
  102. package/dist/types/worker/adapters/millionverifier.d.ts +0 -14
  103. package/dist/types/worker/adapters/notification.d.ts +0 -28
  104. package/dist/types/worker/adapters/pdf.d.ts +0 -22
  105. package/dist/types/worker/adapters/projects.d.ts +0 -20
  106. package/dist/types/worker/adapters/resend.d.ts +0 -14
  107. package/dist/types/worker/adapters/scheduler.d.ts +0 -25
  108. package/dist/types/worker/adapters/signature-api.d.ts +0 -14
  109. package/dist/types/worker/adapters/storage.d.ts +0 -33
  110. package/dist/types/worker/adapters/stripe.d.ts +0 -14
  111. package/dist/types/worker/adapters/tomba.d.ts +0 -14
  112. package/dist/types/worker/index.d.ts +0 -60
  113. package/dist/types/worker/platform.d.ts +0 -90
  114. package/dist/types/worker/utils.d.ts +0 -9
  115. package/reference/claude-config/Overview.md +0 -230
  116. package/reference/claude-config/hooks/post-edit-validate.mjs +0 -98
  117. package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +0 -187
  118. package/reference/claude-config/hooks/tool-failure-recovery.mjs +0 -73
  119. package/reference/claude-config/registries/graph-skills.json +0 -4
  120. package/reference/claude-config/registries/knowledge-flags.json +0 -154
  121. package/reference/claude-config/registries/skill-coverage.json +0 -20
  122. package/reference/claude-config/rules/active-change-index.md +0 -22
  123. package/reference/claude-config/rules/agent-start-here.md +0 -22
  124. package/reference/claude-config/rules/deployment.md +0 -22
  125. package/reference/claude-config/rules/error-handling.md +0 -22
  126. package/reference/claude-config/rules/execution.md +0 -22
  127. package/reference/claude-config/rules/frontend.md +0 -22
  128. package/reference/claude-config/rules/observability.md +0 -22
  129. package/reference/claude-config/rules/operations.md +0 -22
  130. package/reference/claude-config/rules/organization-model.md +0 -22
  131. package/reference/claude-config/rules/organization-os.md +0 -22
  132. package/reference/claude-config/rules/package-taxonomy.md +0 -22
  133. package/reference/claude-config/rules/platform.md +0 -22
  134. package/reference/claude-config/rules/shared-types.md +0 -22
  135. package/reference/claude-config/rules/task-tracking.md +0 -22
  136. package/reference/claude-config/rules/topbar-actions.md +0 -70
  137. package/reference/claude-config/rules/ui.md +0 -22
  138. package/reference/claude-config/rules/vibe.md +0 -22
  139. package/reference/claude-config/scripts/statusline-command.js +0 -18
  140. package/reference/claude-config/settings.json +0 -30
  141. package/reference/claude-config/skills/client/SKILL.md +0 -201
  142. package/reference/claude-config/skills/deploy/SKILL.md +0 -159
  143. package/reference/claude-config/skills/dsp/SKILL.md +0 -66
  144. package/reference/claude-config/skills/elevasis/SKILL.md +0 -251
  145. package/reference/claude-config/skills/explore/SKILL.md +0 -78
  146. package/reference/claude-config/skills/git-sync/SKILL.md +0 -166
  147. package/reference/claude-config/skills/om/SKILL.md +0 -475
  148. package/reference/claude-config/skills/om/operations/build.md +0 -237
  149. package/reference/claude-config/skills/om/operations/codify-level-a.md +0 -109
  150. package/reference/claude-config/skills/om/operations/codify-level-b.md +0 -159
  151. package/reference/claude-config/skills/om/operations/customers.md +0 -114
  152. package/reference/claude-config/skills/om/operations/features.md +0 -88
  153. package/reference/claude-config/skills/om/operations/goals.md +0 -123
  154. package/reference/claude-config/skills/om/operations/identity.md +0 -97
  155. package/reference/claude-config/skills/om/operations/labels.md +0 -110
  156. package/reference/claude-config/skills/om/operations/offerings.md +0 -114
  157. package/reference/claude-config/skills/om/operations/roles.md +0 -104
  158. package/reference/claude-config/skills/om/operations/scaffold.md +0 -163
  159. package/reference/claude-config/skills/om/operations/techStack.md +0 -38
  160. package/reference/claude-config/skills/project/SKILL.md +0 -1114
  161. package/reference/claude-config/skills/run-ui/SKILL.md +0 -73
  162. package/reference/claude-config/skills/save/SKILL.md +0 -183
  163. package/reference/claude-config/skills/setup/SKILL.md +0 -290
  164. package/reference/claude-config/skills/status/SKILL.md +0 -59
  165. package/reference/claude-config/skills/submit-request/SKILL.md +0 -180
  166. package/reference/claude-config/skills/sync/SKILL.md +0 -47
  167. package/reference/claude-config/skills/tutorial/SKILL.md +0 -259
  168. package/reference/claude-config/skills/tutorial/progress-template.md +0 -74
  169. package/reference/claude-config/skills/tutorial/technical.md +0 -1303
  170. package/reference/claude-config/skills/tutorial/vibe-coder.md +0 -890
  171. package/reference/claude-config/sync-notes/2026-04-22-git-sync-and-sync-notes.md +0 -27
  172. package/reference/claude-config/sync-notes/2026-04-22-lead-gen-deliverability-removal.md +0 -30
  173. package/reference/claude-config/sync-notes/2026-04-24-test-utils-and-template-tests.md +0 -73
  174. package/reference/claude-config/sync-notes/2026-04-24-ui-consolidation-and-sdk-cli-train.md +0 -86
  175. package/reference/claude-config/sync-notes/2026-04-25-auth-role-system-and-settings-roles.md +0 -55
  176. package/reference/claude-config/sync-notes/2026-04-27-crm-hitl-action-layer-cutover.md +0 -97
  177. package/reference/claude-config/sync-notes/2026-04-27-lead-gen-substrate-train.md +0 -112
  178. package/reference/claude-config/sync-notes/2026-04-29-crm-state-and-lead-gen-processing-status.md +0 -93
  179. package/reference/claude-config/sync-notes/2026-05-02-crm-ownership-next-action.md +0 -58
  180. package/reference/claude-config/sync-notes/2026-05-02-template-hardcode-workos-config.md +0 -56
  181. package/reference/claude-config/sync-notes/2026-05-04-elevasis-workspace.md +0 -71
  182. package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +0 -83
  183. package/reference/claude-config/sync-notes/2026-05-04-template-skills-run-ui-and-tutorial.md +0 -59
  184. package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +0 -42
  185. package/reference/claude-config/sync-notes/2026-05-06-crm-spine.md +0 -60
  186. package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +0 -37
  187. package/reference/claude-config/sync-notes/2026-05-07-sdk-changes-release-train.md +0 -34
  188. package/reference/claude-config/sync-notes/2026-05-08-resource-governance-scaffold-guidance.md +0 -38
  189. package/reference/claude-config/sync-notes/2026-05-09-clients-domain.md +0 -32
  190. package/reference/claude-config/sync-notes/2026-05-09-command-system.md +0 -33
  191. package/reference/claude-config/sync-notes/2026-05-09-resource-governance-and-misc.md +0 -69
  192. package/reference/claude-config/sync-notes/2026-05-12-sdk-ready-release-train.md +0 -30
  193. package/reference/claude-config/sync-notes/2026-05-14-organization-model-ontology-refactor.md +0 -45
  194. package/reference/claude-config/sync-notes/2026-05-15-om-skill-rename-and-write-family.md +0 -52
  195. package/reference/claude-config/sync-notes/2026-05-17-sdk-boundary-consolidation.md +0 -33
  196. package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +0 -32
  197. package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +0 -43
  198. package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +0 -40
  199. package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +0 -61
  200. package/reference/claude-config/sync-notes/2026-05-23-branding-names-to-identity.md +0 -49
  201. package/reference/claude-config/sync-notes/2026-05-23-lead-gen-manage-access.md +0 -31
  202. package/reference/claude-config/sync-notes/2026-05-23-om-deployment-drift-detection.md +0 -42
  203. package/reference/claude-config/sync-notes/2026-05-23-om-full-model-deploy-contract.md +0 -33
  204. package/reference/claude-config/sync-notes/2026-05-23-ui-sdk-package-fixes.md +0 -37
  205. package/reference/claude-config/sync-notes/2026-05-24-platform-invite-router-core-baseline.md +0 -28
  206. package/reference/claude-config/sync-notes/2026-05-24-system-interface-readiness.md +0 -43
  207. package/reference/claude-config/sync-notes/2026-05-25-invitation-login-loader.md +0 -26
  208. package/reference/claude-config/sync-notes/2026-05-25-om-topbar-requests.md +0 -33
  209. package/reference/claude-config/sync-notes/2026-05-25-system-interface-profile-registry-and-substrate.md +0 -35
  210. package/reference/claude-config/sync-notes/2026-05-25-tenant-om-scaffold-cli.md +0 -49
  211. package/reference/claude-config/sync-notes/2026-05-25-vibe-operate-intent.md +0 -47
  212. package/reference/claude-config/sync-notes/2026-05-28-om-snapshot-sdk-workflow-config.md +0 -33
  213. package/reference/claude-config/sync-notes/2026-05-30-client-source-and-om-profiles.md +0 -39
  214. package/reference/claude-config/sync-notes/2026-06-02-knowledge-nested-group-routing.md +0 -27
  215. package/reference/claude-config/sync-notes/2026-06-02-nest-projects-under-platform.md +0 -45
  216. package/reference/claude-config/sync-notes/2026-06-03-skill-autogen-and-client-skill.md +0 -34
  217. package/reference/claude-config/sync-notes/2026-06-04-scaffold-registry-lane-severity.md +0 -34
  218. package/reference/claude-config/sync-notes/2026-06-05-appearance-app-mode-decouple.md +0 -29
  219. package/reference/claude-config/sync-notes/2026-06-05-ontology-endpoint-rename-and-knowledge-browser-ui.md +0 -86
  220. package/reference/claude-config/sync-notes/2026-06-06-om-build-systems-scaffold.md +0 -47
  221. package/reference/claude-config/sync-notes/2026-06-06-om-item-copy-references.md +0 -50
  222. package/reference/claude-config/sync-notes/2026-06-08-knowledge-base-page-not-found-fix.md +0 -76
  223. package/reference/claude-config/sync-notes/2026-06-09-agent-sessions-public-agent-chat-route.md +0 -75
  224. package/reference/claude-config/sync-notes/2026-06-09-sdk-cli-load-org-model-resolution.md +0 -42
  225. package/reference/claude-config/sync-notes/2026-06-12-agent-grants-visualizer-operations.md +0 -30
  226. package/reference/claude-config/sync-notes/2026-06-14-session-ux-and-project-cli-json.md +0 -33
  227. package/reference/claude-config/sync-notes/2026-06-14-shared-session-conversation-view.md +0 -26
  228. package/reference/claude-config/sync-notes/2026-06-15-session-chat-zero-wiring.md +0 -46
  229. package/reference/claude-config/sync-notes/2026-06-17-agent-session-ux-features.md +0 -34
  230. package/reference/claude-config/sync-notes/2026-06-25-shared-page-scroll-contract-guard.md +0 -52
  231. package/reference/claude-config/sync-notes/2026-06-26-leadgen-overview-om-telemetry.md +0 -47
  232. package/reference/claude-config/sync-notes/2026-07-21-agent-scaffold-hardening.md +0 -75
  233. package/reference/claude-config/sync-notes/2026-07-23-agent-session-memory.md +0 -49
  234. package/reference/claude-config/sync-notes/2026-07-23-workos-org-marker.md +0 -50
  235. package/reference/claude-config/sync-notes/2026-07-24-claude-5-models-and-session-surface-fixes.md +0 -116
  236. package/reference/claude-config/sync-notes/2026-07-27-agent-strict-output-and-turn-drift.md +0 -73
  237. package/reference/claude-config/sync-notes/2026-07-28-agent-reply-is-its-own-field.md +0 -84
  238. package/reference/claude-config/sync-notes/2026-07-30-login-screen-and-member-provisioning-state.md +0 -114
  239. package/reference/claude-config/sync-notes/2026-08-02-auth-guard-defaults-and-truncation-fix.md +0 -122
  240. package/reference/claude-config/sync-notes/2026-08-03-agent-prose-escape-normalization.md +0 -88
  241. package/reference/claude-config/sync-notes/2026-08-03-cli-gateway-errors-and-request-timeout.md +0 -120
  242. package/reference/claude-config/sync-notes/README.md +0 -43
  243. package/reference/sdk/framework/interaction-guidance.mdx +0 -182
  244. package/reference/sdk/framework/memory.mdx +0 -326
  245. package/reference/sdk/framework/resource-documentation.mdx +0 -90
  246. package/reference/sdk/roadmap.mdx +0 -164
@@ -9,209 +9,7 @@ paths:
9
9
 
10
10
  # Vibe Layer
11
11
 
12
- Vibe is an **ambient, always-on** intent classifier. It activates automatically whenever the user speaks in plain language -- no slash command, no activation phrase, no special syntax. Every natural-language message passes through vibe classification before the agent acts.
13
-
14
- This rule applies to all sessions inside external projects. It does NOT apply in the monorepo (ambient routing is off there by default).
15
-
16
- ## What Vibe Is
17
-
18
- Vibe is the translation layer between the user's natural language and the correct agent action. The user describes reality -- "we track deals by Shopify platform", "I'm stuck on this task", "what should I work on next" -- and vibe determines which of the seven intent types the message represents. The agent then routes to the right behavior without the user ever knowing the classification happened.
19
-
20
- Vibe coders (non-technical builders) are the primary audience. They build by describing. They never memorize commands, IDs, or schema. The ambient layer closes the gap between what they say and what the system can act on.
21
-
22
- ## Intent Types
23
-
24
- ### 1. Capture
25
-
26
- The user wants to record something new -- a task, a note, a piece of information that should persist.
27
-
28
- **Recognize by:** action verbs like "add", "create", "remember", "track", "log", "note down", "write down", combined with a thing to record.
29
-
30
- **Fixture examples:**
31
-
32
- | Input | Why it's Capture |
33
- | --------------------------------------------------- | -------------------------------------------- |
34
- | "Add a task to follow up with the Shopify client" | Explicit "add a task" with a described item |
35
- | "Remember to run the campaign report on Friday" | "Remember to" signals something to persist |
36
- | "Run the campaign report every Friday at 9am" | Repeating schedule vocabulary to persist |
37
- | "Track this conversation as a deal note" | Explicit "track" with a described artifact |
38
- | "Note for myself: the client prefers morning calls" | "Note for myself" = personal note to persist |
39
-
40
- **Agent action:** draft the capture in plain language, confirm with the user, then execute via `elevasis-sdk project:*` commands for project records, `elevasis-sdk note:create` for personal user notes (the Command Center right panel), or `elevasis-sdk schedule:create` for recurring automation. Disambiguate note scope: a note tied to a deal/task/project is `project:note:create` (a `project:*` record); a standalone personal note is `note:create`. Use repetition vocabulary ("every", "daily", "weekly", "monthly") for schedules; one-shot future reminders stay project tasks with due dates. Never write without confirmation.
41
-
42
- ### 2. Query
43
-
44
- The user wants to know something about current state -- task priorities, what is pending, what is running, what failed.
45
-
46
- **Recognize by:** questions about the current list, status, or queue of things. Includes both static-model queries ("what systems are on?") and runtime-entity queries ("what's pending in the queue?"). Route Query to static-model sources (org model, Systems/Actions config) or runtime sources (operations domain) based on the referenced entity.
47
-
48
- **Fixture examples:**
49
-
50
- | Input | Why it's Query |
51
- | -------------------------------------------- | ------------------------------------------- |
52
- | "What should I work on next?" | Asking for prioritized task list |
53
- | "What's pending in the HITL queue?" | Runtime-entity query about operations state |
54
- | "What runs this week?" | Runtime query about upcoming schedules |
55
- | "What systems are enabled for this project?" | Static-model query about Systems config |
56
-
57
- **Agent action:** read the relevant source and narrate the answer in plain language. Use org model or `project:*` for project state, `elevasis-sdk queue:list --status pending --pretty` and `queue:status --pretty` for HITL queue state, and `elevasis-sdk schedule:list --status active --pretty` for upcoming recurring automation. No writes.
58
-
59
- ### 3. Describe
60
-
61
- The user wants the agent to explain something -- a scope, an entity, a concept within the project.
62
-
63
- **Recognize by:** "what is", "what does", "tell me about", "explain", "where am I", "what's going on", "describe", "show me" without an action intent attached.
64
-
65
- **Fixture examples:**
66
-
67
- | Input | Why it's Describe |
68
- | ------------------------------------------ | ----------------------------------------------------- |
69
- | "What's going on with the ZentaraHQ deal?" | Asking for a plain-language description of an entity |
70
- | "Tell me about the CRM system" | Asking the agent to narrate what a model element does |
71
- | "Where am I in this project?" | Asking for current scope narration |
72
-
73
- **Agent action:** read the relevant org-model label, entity, or scope. Narrate in plain language using label fields from the model -- never invent vocabulary not present in the model. Phase-1 scope covers Model, Systems/Actions, and Foundations layers only.
74
-
75
- **Stage/state/catalog sub-routing:** when the noun being described is a stage, state, status
76
- bucket, catalog entry, progress step, pipeline column, or similarly closed business vocabulary,
77
- also show the cross-system impact before the normal description:
78
-
79
- 1. Read `operations/node_modules/@elevasis/sdk/reference/spine/spine-primer.md` for the layering pattern.
80
- 2. Read the relevant domain in `core/config/organization-model.ts`.
81
- 3. Explain the impact in vibe-coder language only: the business profile entry, the saved progress
82
- on each record, the automations that produce updates, and the dashboard or reports that read it.
83
- 4. Route follow-up changes through `/om <domain>`. Do not mention the technical pattern name
84
- unless the user explicitly asks for internals.
85
-
86
- ### 4. Transition
87
-
88
- The user wants to change the status of a task or entity.
89
-
90
- **Recognize by:** single-word or short-phrase state signals -- "done", "finished", "complete", "blocked", "stuck", "waiting", "in review", "cancelled" -- applied to a current task or named entity.
91
-
92
- **Fixture examples:**
93
-
94
- | Input | Why it's Transition |
95
- | --------------------------------------------- | ------------------------------------------- |
96
- | "Done with the proposal draft" | "Done" + named artifact = status transition |
97
- | "Stuck -- blocked waiting on client feedback" | "Stuck" + reason = blocked transition |
98
- | "Mark the onboarding task as complete" | Explicit status-change vocabulary |
99
- | "Approve the pending checkpoint" | Selects an action from the HITL queue |
100
- | "Pause the Friday report" | Changes schedule state |
101
-
102
- **Agent action:** identify the task, queue item, schedule, or entity being transitioned, confirm the new status/action with the user, then apply it via `elevasis-sdk project:task:save`, `elevasis-sdk queue:select <id> --action-id <id>`, `elevasis-sdk queue:expire <id>`, `elevasis-sdk schedule:pause <id>`, `schedule:resume <id>`, or `schedule:cancel <id>` as appropriate. Never auto-transition without confirmation if the target entity is ambiguous.
103
-
104
- ### 5. Navigate
105
-
106
- The user wants to shift focus -- to a different task, project, System, Action, or layer of the model.
107
-
108
- **Recognize by:** focus-shift vocabulary -- "focus on", "let's look at", "switch to", "back to", "move to", "open", "go to" -- followed by a scope target.
109
-
110
- **Fixture examples:**
111
-
112
- | Input | Why it's Navigate |
113
- | -------------------------------------------- | --------------------------------------------------- |
114
- | "Let's focus on the onboarding flow for now" | "Focus on" + scope target |
115
- | "Switch to the Shopify integration project" | "Switch to" = navigate to a different project scope |
116
- | "Back to the CRM tasks" | "Back to" = return to a prior scope |
117
-
118
- **Agent action:** update the active scope in `prj_tasks.resume_context` (current project + task pointer), then narrate the new scope in plain language so the user knows where they are.
119
-
120
- ### 6. Codify
121
-
122
- The user describes organizational reality that is not yet expressed in the model -- industry type, entity kinds, custom attributes, renamed stages, domain vocabulary.
123
-
124
- **Recognize by:** declarative "we are" / "we use" / "we track" statements, repeated attribute mentions (second time the same attribute appears), or explicit "add a type / add a field / model X as Y" requests.
125
-
126
- **NOT Codify — do not over-propose on questions.** "What systems are on?", "tell me about deals", "explain the lead-gen Action" are Describe, not Codify. The discriminator is _asking about_ versus _asking to change_ the model. Read-shaped inputs ("what", "tell me", "explain", "show me", "where am I") stay in Describe even when they reference the same vocabulary Codify edits — narrate, do not propose codification. Only propose codification when the user declares new structure ("we're an X company", "we track Y as Z") or explicitly asks for a model change ("add a field…", "rename stage…").
127
-
128
- **Fixture examples:**
129
-
130
- | Input | Why it's Codify |
131
- | -------------------------------------------------------------------------------- | -------------------------------------------------------- |
132
- | "We're an e-commerce company -- all our deals come from Shopify or Amazon" | Declares industry + platform attributes not yet in model |
133
- | "We track deal stage as discovery, scoping, proposal, closed" | Describes custom CRM stages that should replace defaults |
134
- | "Add a project type called 'retainer' with monthly billing and a contract field" | Explicit request to add a new entity extension |
135
-
136
- **Agent action:** delegate immediately to `/om`. Do not attempt the ceremony yourself. Invoke with the relevant domain: `/om sales` for deal/contact changes, `/om projects` for project types, `/om systems` for availability/routing toggles, and `/om actions` for invokable operation changes. Plain-language summary of what was detected is acceptable before delegating, but the actual draft-confirm-write ceremony belongs to `/om`.
137
-
138
- **Stage/state/catalog impact preview:** if the Codify intent adds, renames, removes, reorders, or
139
- re-scopes a stage, state, status bucket, catalog member, pipeline step, or progress vocabulary,
140
- preview the cross-system impact before delegating:
141
-
142
- - Which business-profile entry changes.
143
- - Which saved record progress keys may already exist.
144
- - Which automations or templates reference the key.
145
- - Which dashboard, report, queue, or API reads may display or filter by it.
146
-
147
- Then delegate to `/om <domain>` with that preview as context. Vibe does not write the
148
- change and does not expose monorepo-only commands.
149
-
150
- This routing applies to both codify levels (decision #21 -- Codify ceremony delegated to `/om`):
151
-
152
- - **Level A** (config-only edits to `organization-model.ts`, System availability/routing toggles, label renames): delegate to `/om <domain>` immediately.
153
- - **Level B** (new Zod extension files in `core/config/extensions/`): also delegate to `/om <domain>`; `/om` gates Level B to explicit user asks before scaffolding a new TS file.
154
-
155
- Vibe detects the intent and delegates in both cases. It does not run either pipeline itself.
156
-
157
- For "build/extend the CRM" asks, classify the structural org-model portion as Codify, then read `operations/node_modules/@elevasis/sdk/reference/scaffold/recipes/extend-crm.md` before editing. CRM work often spans org-model sales semantics, shared UI routes, hooks, workflow adapters, and deal actions; do not reduce it to only `sales` config or only UI.
158
-
159
- For "build/extend lead gen" / "campaign creator" / "outbound list state" asks, classify the structural org-model portion as Codify, then read `operations/node_modules/@elevasis/sdk/reference/scaffold/recipes/extend-lead-gen.md` before editing. Lead-gen work often spans org-model prospecting semantics, shared UI routes, hooks, list/member state, artifacts, and workflow adapters; do not reduce it to only `prospecting` config or only UI.
160
-
161
- For "add a custom CRM action" / "Send Quote button" asks, classify as Codify, then read `operations/node_modules/@elevasis/sdk/reference/scaffold/recipes/customize-crm-actions.md` before editing. Start with the shared `crmActions` provider path for action visibility, labels, ordering, and render-time configuration. In v1, platform-known/default action endpoint behavior is server-constrained; use project-owned UI that calls the workflow directly when a custom key sits outside that server-dispatched set.
162
-
163
- Heuristics for when to propose codification (passed to `/om` as context):
164
-
165
- - First mention of a new attribute: note to `resume_context`, do not propose yet
166
- - Second mention OR explicit declaration ("we're ecom"): propose extension
167
- - Explicit ask ("track ecom deals separately"): propose immediately with fuller scope
168
- - Attribute appearing across 3+ tasks: propose adding field to existing extension
169
-
170
- ### 7. Toggle
171
-
172
- The user wants to enable or disable a System.
173
-
174
- **Recognize by:** system-control vocabulary -- "turn on", "enable", "disable", "turn off", "activate", "deactivate" -- followed by a System name or description.
175
-
176
- **Fixture examples:**
177
-
178
- | Input | Why it's Toggle |
179
- | ------------------------------- | -------------------------------------------- |
180
- | "Turn on the lead-gen system" | Explicit "turn on" + System name |
181
- | "Disable monitoring for now" | "Disable" + System reference |
182
- | "We don't use SEO, turn it off" | Declarative + "turn it off" = System disable |
183
-
184
- **Agent action:** delegate to `/om systems`. The ceremony (confirm + edit `core/config/organization-model.ts` + typecheck) belongs to `/om`, not to the ambient rule.
185
-
186
- **Tenant-local only.** Toggle operates on the tenant's own `core/config/organization-model.ts` — the project's own Systems. Platform-level Systems (the Elevasis monorepo's `packages/elevasis-core/src/organization-model/`) are not in scope; tenants cannot toggle them and vibe must not pretend they can. If a user names a platform-only System, surface the boundary in plain language rather than attempting a toggle.
187
-
188
- ### 8. Operate
189
-
190
- The user wants to run an already-deployed workflow or agent against the platform — kick off an execution, not change configuration.
191
-
192
- **Recognize by:** action verbs "run", "execute", "launch", "trigger", "kick off", "start" combined with a named deployed resource (a workflow id, agent name, or named pipeline). Distinguish from:
193
-
194
- - **Capture** — "remember to run X" is a persisted reminder/schedule, not an immediate execution.
195
- - **Transition** — "the run is done" is a status change on an existing execution, not a new run.
196
- - **Codify** — "add a workflow called X" is a model change, not an execution of an existing one.
197
-
198
- **Fixture examples:**
199
-
200
- | Input | Why it's Operate |
201
- | ------------------------------------------------ | ---------------------------------------------- |
202
- | "Run the daily-digest workflow" | "Run" + named deployed resource |
203
- | "Kick off the lead-gen pipeline for ZentaraHQ" | "Kick off" + named resource + named scope |
204
- | "Execute the campaign builder against this list" | "Execute" + deployed workflow + concrete input |
205
- | "Launch the apify-init agent now" | "Launch" + named deployed agent |
206
-
207
- **Agent action:** delegate to `/elevasis`. The describe-then-exec ceremony belongs to that skill, not to the ambient rule:
208
-
209
- 1. `elevasis-sdk describe <resourceId>` to fetch the deployed resource's input contract.
210
- 2. Draft the input payload from the user's natural-language phrasing.
211
- 3. Confirm with the user (plain-language summary of payload + target).
212
- 4. `elevasis-sdk exec <resourceId> --input '{…}'` to run it.
213
-
214
- **Runs already-deployed resources only.** Operate never deploys, never creates, never edits the workflow source. If the named resource is not deployed, surface that in plain language and offer to route to Codify (define it) or Capture (record a follow-up) — do not attempt to deploy from the ambient rule.
12
+ Vibe is **ambient and always on**. Every natural-language message is silently classified into one of the intents below before the agent responds -- no slash command, no activation phrase, no `/vibe`. This applies to sessions inside external projects; ambient routing is off inside the Elevasis monorepo.
215
13
 
216
14
  ## Quick Reference Table
217
15
 
@@ -226,48 +24,24 @@ The user wants to run an already-deployed workflow or agent against the platform
226
24
  | Toggle | "enable", "disable", "turn on/off" + system | Delegate to `/om systems` (tenant-local only) |
227
25
  | Operate | "run", "execute", "launch", "trigger", "kick off", "start" + deployed resource | Delegate to `/elevasis` -- `elevasis-sdk describe` + confirm + `elevasis-sdk exec` |
228
26
 
229
- ## Source of Truth for Plain Language
230
-
231
- All plain-language labels come from the OrganizationModel itself -- never from hardcoded strings in this rule file. Every status, entity kind, and layer name in the model carries an inline `label` field (e.g., `{ id: 'revision_requested', label: 'changes needed', semanticClass: 'blocked' }`). When narrating state or confirming an action, read the label from the model and use it verbatim. Do not invent synonyms or fallback vocabulary.
232
-
233
- The unified manifest (delivered via `@elevasis/core/organization-model`) is the canonical vocabulary surface. Vibe classifies against it -- Systems, Actions, statuses, operations entities, and resource kinds are all discoverable from the manifest without hardcoding.
234
-
235
- ## Ambiguous Intent
236
-
237
- When the user's input does not clearly map to one of the seven types, ask one clarifying question. Do not guess. Do not apply a precedence rule. Do not route to the "closest" intent.
238
-
239
- Format: a single neutral question that presents the two (or three) plausible intents as options and asks which the user means.
240
-
241
- Example: "That could be a note to capture or a status update on the current task -- which did you mean?"
242
-
243
- Never ask more than one question per ambiguous input. If the user's reply is still ambiguous, ask once more, then surface the options explicitly.
244
-
245
- ## Classifier Threshold
246
-
247
- Default threshold: `balanced`.
248
-
249
- The threshold controls how aggressively the classifier proposes codification from ambiguous signals:
250
-
251
- - `strict` -- only explicit declarations or repeat mentions trigger codify proposals
252
- - `balanced` -- second mention OR explicit declaration triggers; default
253
- - `loose` -- first strong signal triggers a proposal
254
-
255
- Override per project in `core/config/organization-model.ts` under `vibe.classifierThreshold`. The override is merge-aware (Tier 2 sync) and will not be overwritten by template sync operations.
256
-
257
- ## Phase-1 Scope
27
+ ## Safety Boundaries
258
28
 
259
- This rule covers Phase 1 of the vibe layer rollout. The layers the ambient classifier can narrate and codify in Phase 1 are:
29
+ - **Never write without confirming.** Draft the change in plain language, confirm with the user, then execute. This gates every Capture, Transition, Codify, Toggle, and Operate route without exception.
30
+ - **Never auto-execute a deployed resource.** Operate runs `elevasis-sdk describe` first, drafts the payload, confirms, then runs `exec`. It never deploys, never creates, never edits workflow source.
31
+ - **Never write the model yourself.** Codify and Toggle detect intent and delegate to `/om <domain>`; the draft-confirm-write-typecheck ceremony belongs to `/om`.
32
+ - **Never flip public agent exposure.** Making a deployed agent reachable on the public internet (the `agent_access_grants` row behind `/public/agents/:slug`, managed via `grant:create` / `grant:update` / `grant:disable` or the Resource-page public/private toggle) is a security boundary deliberately kept out of ambient routing -- a non-technical user describing their business must never expose an agent by accident. Do NOT classify "make my agent public" / "put the interview online" as Toggle, and do NOT auto-execute. Surface the `grant:*` CLI or the Resource-page toggle in plain language and require explicit confirmation.
33
+ - **Toggle is tenant-local.** It edits this project's own `core/config/organization-model.ts` only. The Elevasis platform's own Systems cannot be toggled from here; surface that boundary rather than attempting it.
34
+ - **Never guess an ambiguous intent.** Ask one neutral clarifying question presenting the plausible intents. Do not apply a precedence rule and do not route to the "closest" match.
35
+ - **Never invent vocabulary.** Status, entity, and layer names come from the model's inline `label` fields, read verbatim -- never hardcoded synonyms.
260
36
 
261
- - Layer 1 (Model): narrate schema shape, propose codification edits via `/om`
262
- - Layer 4 (Systems/Actions): describe which Systems are on/off, propose enabling one via `/om`
263
- - Layer 7 (Foundations): explain and edit `organization-model.ts` and `extensions/` via `/om`
37
+ ## Related Rules
264
38
 
265
- Layers 2 (Public API), 3 (UI Shell Runtime), 5 (Toolkit), and 6 (Graph) require runtime read APIs that are not yet available. Do not attempt to narrate or classify against those layers in Phase 1. If the user's input clearly references one of those layers, acknowledge the scope and explain that full support arrives in a later phase.
39
+ - **vibe-intents.md** -- the detail body; open it when a message is hard to classify or a route needs its exact ceremony
40
+ - **organization-model.md** -- the `/om` entry point Codify and Toggle delegate to
41
+ - **organization-os.md** -- Systems, Actions, and ontology vocabulary the classifier matches against
42
+ - **agent-start-here.md** -- session bootstrap that runs before the first classified message
266
43
 
267
- ## What Vibe Is Not
44
+ ## References
268
45
 
269
- - Vibe is not a slash command. There is no `/vibe` invocation (decision #19 -- ambient rule, not a skill or command).
270
- - Vibe is not a skill. It lives in this rule file + CLAUDE.md + the PreToolUse hook -- not in `.claude/skills/`.
271
- - Vibe does not own the codify ceremony. `/om` owns draft, confirm, write, and typecheck for both Level A and Level B codify pipelines (decision #21 -- Codify ceremony delegated to `/om`). Vibe detects intent and hands off.
272
- - Vibe is not active in the monorepo. If working inside the monorepo (not an `external/` project), this ambient routing does not apply.
273
- - Vibe does not flip **public agent exposure**. Making a deployed agent reachable on the public internet (the `agent_access_grants` row behind `/public/agents/:slug`, managed via `grant:create` / `grant:update` / `grant:disable` or the Resource-page public/private toggle) is a **security boundary deliberately kept out of ambient routing** — a non-technical user describing their business must never be able to expose an agent by accident. This is a deliberate non-route, not an unhandled gap: do NOT classify "make my agent public" / "put the interview online" as Toggle (which is System on/off) and do NOT auto-execute. Surface the `grant:*` CLI or the Resource-page toggle in plain language and require explicit confirmation.
46
+ - `operations/node_modules/@elevasis/sdk/reference/rules/vibe-intents.md` -- per-intent recognition signals, fixture examples, exact agent actions, stage/state sub-routing, the classifier threshold, and phase scope
47
+ - `core/config/organization-model.ts` -- label vocabulary, System availability, and the `vibe.classifierThreshold` override
@@ -1,113 +1,127 @@
1
- ---
2
- title: Organization Graph
1
+ ---
2
+ title: Organization Graph
3
3
  description: Organization OS graph layer documentation for the organization graph derived from Organization Model Systems, resources, actions, entities, ontology catalogs, and typed links.
4
- ---
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
- ## Overview
10
-
11
- The organization graph treats the organization model as the top-level ontology and bridges in Command View runtime topology. Command View is a lens over the shared graph, not a separate semantic model.
12
-
13
- Graph contracts live in `@repo/core`; rendering lives in `@repo/ui`.
14
-
15
- ## Source of Truth
16
-
17
- - `packages/core/src/organization-model/graph/types.ts`
18
- - `packages/core/src/organization-model/graph/schema.ts`
19
- - `packages/core/src/organization-model/graph/build.ts`
20
- - `packages/core/src/organization-model/graph/link.ts`
21
- - `packages/core/src/organization-model/__tests__/graph.test.ts`
22
- - `packages/ui/src/features/operations/OrganizationGraphPage.tsx`
23
- - `packages/ui/src/features/operations/organization-graph/`
24
-
25
- ## Model
26
-
27
- Node kinds:
28
-
29
- - `organization`
30
- - `system`
31
- - `role`
32
- - `action`
33
- - `entity`
34
- - `event`
35
- - `resource`
36
- - `knowledge`
37
- - `policy`
38
- - `stage`
39
- - `customer-segment`
40
- - `offering`
41
- - `goal`
42
- - `surface`
43
- - `navigation-group`
44
-
45
- Edge kinds:
46
-
47
- - `contains`
48
- - `references`
8
+
9
+ ## Overview
10
+
11
+ The organization graph treats the organization model as the top-level ontology and bridges in Command View runtime topology. Command View is a lens over the shared graph, not a separate semantic model.
12
+
13
+ Graph contracts live in `@repo/core`; rendering lives in `@repo/ui`.
14
+
15
+ ## Source of Truth
16
+
17
+ - `packages/core/src/organization-model/graph/types.ts`
18
+ - `packages/core/src/organization-model/graph/schema.ts`
19
+ - `packages/core/src/organization-model/graph/build.ts`
20
+ - `packages/core/src/organization-model/graph/link.ts`
21
+ - `packages/core/src/organization-model/__tests__/graph.test.ts`
22
+ - `packages/ui/src/features/operations/OrganizationGraphPage.tsx`
23
+ - `packages/ui/src/features/operations/organization-graph/`
24
+
25
+ ## Model
26
+
27
+ Node kinds:
28
+
29
+ - `organization`
30
+ - `system`
31
+ - `client`
32
+ - `role`
33
+ - `action`
34
+ - `entity`
35
+ - `event`
36
+ - `resource`
37
+ - `knowledge`
38
+ - `policy`
39
+ - `stage`
40
+ - `customer-segment`
41
+ - `offering`
42
+ - `goal`
43
+ - `surface`
44
+ - `navigation-group`
45
+ - `ontology`
46
+
47
+ `ontology` nodes are projected from compiled `System.ontology` scopes; `client` nodes come from the `clients` domain.
48
+
49
+ Edge kinds:
50
+
51
+ - `contains`
52
+ - `references`
49
53
  - `maps_to`
50
54
  - `uses`
51
55
  - `governs`
52
56
  - `links`
53
57
  - `affects`
54
58
  - `emits`
55
- - `originates_from`
56
- - `triggers`
57
- - `applies_to`
59
+ - `originates_from`
60
+ - `triggers`
61
+ - `approval`
62
+ - `applies_to`
58
63
  - `effects`
64
+ - `actions`
65
+ - `reads`
66
+ - `writes`
67
+ - `uses_catalog`
68
+
69
+ `approval`, `actions`, `reads`, `writes`, and `uses_catalog` are resource-ontology-binding and topology edge kinds; `relationshipType` on an edge (when present) is a closed `triggers | uses | approval` subset used for topology edges specifically.
59
70
 
60
71
  `governed-by` is a Knowledge Graph route verb for traversing incoming `governs` edges; it is not an Organization Graph edge kind.
61
-
62
- System nodes come from the id-keyed `OrganizationModel.systems` map. Their graph IDs use `system:<id>`, such as `system:sales.crm`.
63
-
72
+
73
+ System nodes come from the id-keyed `OrganizationModel.systems` map. Their graph IDs use `system:<id>`, such as `system:sales.crm`.
74
+
64
75
  Resource, action, entity, policy, navigation, and ontology catalog edges are derived from canonical OM maps:
65
-
66
- ```ts
67
- // ResourceEntry.systemPath => system -> resource contains
68
- // SystemEntry.actions[] => system -> action uses
69
- // Action.resourceId => action -> resource maps_to
70
- // Action.affects[] => action -> entity affects
71
- // Entity.links[] => entity -> entity links
72
- // ResourceEntry.emits[] => resource -> event emits
76
+
77
+ ```ts
78
+ // ResourceEntry.systemPath => system -> resource contains
79
+ // SystemEntry.actions[] => system -> action uses
80
+ // Action.resourceId => action -> resource maps_to
81
+ // Action.affects[] => action -> entity affects
82
+ // Entity.links[] => entity -> entity links
83
+ // resource.ontology.emits[] => resource -> event emits (canonical binding)
84
+ // top-level ResourceEntry.emits[] => compatibility mirror for graph event projection
73
85
  // System.ontology.catalogTypes => ontology catalog nodes and relationships
74
- // AgentResource.invocations[] => agent resource -> invocation target uses/references
75
- ```
76
-
77
- ## Build Pipeline
78
-
79
- ```ts
80
- interface BuildOrganizationGraphInput {
81
- organizationModel: OrganizationModel
82
- commandViewData?: CommandViewData
83
- }
84
- ```
85
-
86
- `buildOrganizationGraph`:
87
-
88
- 1. Reads Organization Model Systems and derives `system:*` nodes.
89
- 2. Reads OM resources, including workflow, agent, integration, and script resources, as `resource` nodes.
86
+ // AgentResource.invocations[] => agent resource -> invocation target uses/references
87
+ ```
88
+
89
+ ## Build Pipeline
90
+
91
+ {/* doc-snippet:skip: shape excerpt from graph/types.ts -- OrganizationModel and CommandViewData are shown unimported here for readability */}
92
+
93
+ ```ts
94
+ interface BuildOrganizationGraphInput {
95
+ organizationModel: OrganizationModel
96
+ commandViewData?: CommandViewData
97
+ }
98
+ ```
99
+
100
+ `buildOrganizationGraph`:
101
+
102
+ 1. Reads Organization Model Systems and derives `system:*` nodes.
103
+ 2. Reads OM resources, including workflow, agent, integration, and script resources, as `resource` nodes.
90
104
  3. Emits derived graph links from System, Resource, Action, Entity, Policy, Agent invocation, Knowledge, navigation, and ontology catalog contracts.
91
- 4. Bridges Command View runtime topology into resource nodes and relationship edges.
92
- 5. Returns a renderer-agnostic DTO.
93
-
94
- ## Lenses
95
-
96
- UI lenses change presentation, not data:
97
-
98
- - `default` -- broad map view.
99
- - `command-view` -- operations-focused trace view.
100
-
101
- ## Package Boundary
102
-
103
- - `@repo/core` owns graph DTOs, schemas, and build helpers.
104
- - `@repo/ui` owns Cytoscape conversion, filtering, path tracing, panels, and presentation.
105
- - `apps/command-center` owns route wiring.
106
-
107
- ## Verification
108
-
109
- ```bash
110
- pnpm --filter @repo/core test -- organization-model graph
111
- pnpm --filter @repo/ui test -- organizationGraph
112
- pnpm --filter command-center build
113
- ```
105
+ 4. Bridges Command View runtime topology into resource nodes and relationship edges.
106
+ 5. Returns a renderer-agnostic DTO.
107
+
108
+ ## Lenses
109
+
110
+ UI lenses change presentation, not data:
111
+
112
+ - `default` -- broad map view.
113
+ - `command-view` -- operations-focused trace view.
114
+
115
+ ## Package Boundary
116
+
117
+ - `@repo/core` owns graph DTOs, schemas, and build helpers.
118
+ - `@repo/ui` owns Cytoscape conversion, filtering, path tracing, panels, and presentation.
119
+ - `apps/command-center` owns route wiring.
120
+
121
+ ## Verification
122
+
123
+ ```bash
124
+ pnpm --filter @repo/core test -- organization-model graph
125
+ pnpm --filter @repo/ui test -- organizationGraph
126
+ pnpm --filter command-center build
127
+ ```