@elevasis/core 0.22.0 → 0.24.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 (244) hide show
  1. package/dist/index.d.ts +3214 -2501
  2. package/dist/index.js +3112 -1222
  3. package/dist/knowledge/index.d.ts +1108 -1264
  4. package/dist/knowledge/index.js +112 -9
  5. package/dist/organization-model/index.d.ts +3214 -2501
  6. package/dist/organization-model/index.js +3112 -1222
  7. package/dist/test-utils/index.d.ts +985 -1103
  8. package/dist/test-utils/index.js +2464 -1165
  9. package/package.json +5 -5
  10. package/src/README.md +14 -14
  11. package/src/__tests__/publish.test.ts +24 -24
  12. package/src/__tests__/template-core-compatibility.test.ts +9 -80
  13. package/src/_gen/__tests__/__snapshots__/contracts.md.snap +2389 -2121
  14. package/src/_gen/__tests__/scaffold-contracts.test.ts +30 -30
  15. package/src/auth/multi-tenancy/credentials/__tests__/encryption.test.ts +217 -217
  16. package/src/auth/multi-tenancy/credentials/server/encryption.ts +69 -69
  17. package/src/auth/multi-tenancy/credentials/server/kek-loader.ts +37 -37
  18. package/src/auth/multi-tenancy/index.ts +26 -26
  19. package/src/auth/multi-tenancy/invitations/api-schemas.ts +104 -104
  20. package/src/auth/multi-tenancy/memberships/api-schemas.ts +143 -143
  21. package/src/auth/multi-tenancy/memberships/index.ts +26 -26
  22. package/src/auth/multi-tenancy/memberships/membership.ts +130 -130
  23. package/src/auth/multi-tenancy/organizations/__tests__/api-schemas.test.ts +194 -194
  24. package/src/auth/multi-tenancy/organizations/api-schemas.ts +136 -136
  25. package/src/auth/multi-tenancy/permissions.test.ts +42 -42
  26. package/src/auth/multi-tenancy/permissions.ts +123 -123
  27. package/src/auth/multi-tenancy/role-management/api-schemas.ts +78 -78
  28. package/src/auth/multi-tenancy/role-management/index.ts +16 -16
  29. package/src/auth/multi-tenancy/theme-presets.ts +45 -45
  30. package/src/auth/multi-tenancy/types.ts +57 -57
  31. package/src/auth/multi-tenancy/users/api-schemas.ts +165 -165
  32. package/src/business/README.md +2 -2
  33. package/src/business/acquisition/activity-events.test.ts +250 -250
  34. package/src/business/acquisition/activity-events.ts +93 -93
  35. package/src/business/acquisition/api-schemas.test.ts +1883 -1843
  36. package/src/business/acquisition/api-schemas.ts +1493 -1500
  37. package/src/business/acquisition/build-templates.test.ts +240 -240
  38. package/src/business/acquisition/build-templates.ts +83 -41
  39. package/src/business/acquisition/crm-next-action.test.ts +262 -262
  40. package/src/business/acquisition/crm-next-action.ts +220 -220
  41. package/src/business/acquisition/crm-priority.test.ts +216 -216
  42. package/src/business/acquisition/crm-priority.ts +349 -349
  43. package/src/business/acquisition/crm-state-actions.test.ts +153 -151
  44. package/src/business/acquisition/deal-ownership.test.ts +351 -351
  45. package/src/business/acquisition/deal-ownership.ts +120 -120
  46. package/src/business/acquisition/derive-actions.test.ts +129 -104
  47. package/src/business/acquisition/derive-actions.ts +74 -84
  48. package/src/business/acquisition/index.ts +171 -170
  49. package/src/business/acquisition/ontology-validation.ts +309 -0
  50. package/src/business/acquisition/stateful.ts +30 -30
  51. package/src/business/acquisition/types.ts +396 -392
  52. package/src/business/clients/api-schemas.test.ts +115 -115
  53. package/src/business/clients/api-schemas.ts +158 -158
  54. package/src/business/clients/index.ts +1 -1
  55. package/src/business/crm/api-schemas.ts +40 -40
  56. package/src/business/crm/index.ts +1 -1
  57. package/src/business/deals/api-schemas.ts +87 -87
  58. package/src/business/deals/index.ts +1 -1
  59. package/src/business/index.ts +5 -5
  60. package/src/business/projects/types.ts +144 -144
  61. package/src/commands/queue/types/task.ts +15 -15
  62. package/src/execution/core/runner-types.ts +61 -61
  63. package/src/execution/core/sse-executions.ts +7 -7
  64. package/src/execution/engine/__tests__/fixtures/test-agents.ts +10 -10
  65. package/src/execution/engine/agent/core/__tests__/agent.test.ts +16 -16
  66. package/src/execution/engine/agent/core/__tests__/error-passthrough.test.ts +4 -4
  67. package/src/execution/engine/agent/core/types.ts +25 -25
  68. package/src/execution/engine/agent/index.ts +6 -6
  69. package/src/execution/engine/agent/reasoning/__tests__/request-builder.test.ts +24 -24
  70. package/src/execution/engine/index.ts +443 -443
  71. package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +298 -298
  72. package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.test.ts +55 -55
  73. package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +107 -107
  74. package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.test.ts +48 -48
  75. package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.ts +99 -99
  76. package/src/execution/engine/tools/integration/server/adapters/apollo/index.ts +1 -1
  77. package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +363 -363
  78. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.test.ts +162 -162
  79. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.test.ts +316 -316
  80. package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.test.ts +18 -18
  81. package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.ts +194 -194
  82. package/src/execution/engine/tools/integration/server/adapters/clickup/index.ts +7 -7
  83. package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +204 -204
  84. package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +105 -105
  85. package/src/execution/engine/tools/integration/server/adapters/google-calendar/google-calendar-adapter.ts +428 -428
  86. package/src/execution/engine/tools/integration/server/adapters/google-calendar/index.ts +2 -2
  87. package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -261
  88. package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1474 -1474
  89. package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +103 -103
  90. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.test.ts +88 -88
  91. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +141 -141
  92. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +76 -76
  93. package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-tools.ts +182 -182
  94. package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +310 -310
  95. package/src/execution/engine/tools/integration/service.test.ts +239 -239
  96. package/src/execution/engine/tools/integration/service.ts +172 -172
  97. package/src/execution/engine/tools/integration/tool.ts +255 -255
  98. package/src/execution/engine/tools/lead-service-types.ts +1005 -1005
  99. package/src/execution/engine/tools/messages.ts +43 -43
  100. package/src/execution/engine/tools/platform/acquisition/company-tools.ts +7 -7
  101. package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +6 -6
  102. package/src/execution/engine/tools/platform/acquisition/list-tools.ts +6 -6
  103. package/src/execution/engine/tools/platform/acquisition/types.ts +280 -280
  104. package/src/execution/engine/tools/platform/email/types.ts +97 -97
  105. package/src/execution/engine/tools/registry.ts +704 -704
  106. package/src/execution/engine/tools/tool-maps.ts +831 -831
  107. package/src/execution/engine/tools/types.ts +234 -234
  108. package/src/execution/engine/workflow/types.ts +202 -202
  109. package/src/execution/external/__tests__/api-schemas.test.ts +127 -127
  110. package/src/execution/external/api-schemas.ts +40 -40
  111. package/src/execution/external/index.ts +1 -1
  112. package/src/index.ts +18 -18
  113. package/src/integrations/credentials/__tests__/api-schemas.test.ts +420 -420
  114. package/src/integrations/credentials/api-schemas.ts +146 -146
  115. package/src/integrations/credentials/schemas.ts +200 -200
  116. package/src/integrations/oauth/__tests__/provider-registry.test.ts +7 -7
  117. package/src/integrations/oauth/provider-registry.ts +74 -74
  118. package/src/integrations/oauth/server/credentials.ts +43 -43
  119. package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +327 -327
  120. package/src/integrations/webhook-endpoints/api-schemas.ts +103 -103
  121. package/src/integrations/webhook-endpoints/types.ts +58 -58
  122. package/src/knowledge/README.md +33 -32
  123. package/src/knowledge/__tests__/queries.test.ts +633 -541
  124. package/src/knowledge/format.ts +100 -99
  125. package/src/knowledge/index.ts +5 -5
  126. package/src/knowledge/published.ts +5 -5
  127. package/src/knowledge/queries.ts +274 -222
  128. package/src/operations/activities/api-schemas.ts +80 -80
  129. package/src/operations/activities/types.ts +64 -64
  130. package/src/organization-model/README.md +149 -109
  131. package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -0
  132. package/src/organization-model/__tests__/defaults.test.ts +168 -194
  133. package/src/organization-model/__tests__/domains/actions.test.ts +78 -0
  134. package/src/organization-model/__tests__/domains/customers.test.ts +48 -44
  135. package/src/organization-model/__tests__/domains/entities.test.ts +56 -0
  136. package/src/organization-model/__tests__/domains/goals.test.ts +110 -96
  137. package/src/organization-model/__tests__/domains/identity.test.ts +4 -3
  138. package/src/organization-model/__tests__/domains/navigation.test.ts +222 -166
  139. package/src/organization-model/__tests__/domains/offerings.test.ts +83 -88
  140. package/src/organization-model/__tests__/domains/policies.test.ts +323 -0
  141. package/src/organization-model/__tests__/domains/resource-mappings.test.ts +30 -30
  142. package/src/organization-model/__tests__/domains/resources.test.ts +396 -175
  143. package/src/organization-model/__tests__/domains/roles.test.ts +463 -402
  144. package/src/organization-model/__tests__/domains/statuses.test.ts +13 -10
  145. package/src/organization-model/__tests__/domains/systems.test.ts +209 -193
  146. package/src/organization-model/__tests__/flatten-additive-merge.test.ts +362 -0
  147. package/src/organization-model/__tests__/foundation.test.ts +47 -75
  148. package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -0
  149. package/src/organization-model/__tests__/graph.test.ts +1336 -149
  150. package/src/organization-model/__tests__/icons.test.ts +10 -1
  151. package/src/organization-model/__tests__/knowledge.test.ts +418 -61
  152. package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -0
  153. package/src/organization-model/__tests__/migration-helpers.test.ts +591 -0
  154. package/src/organization-model/__tests__/prospecting-ssot.test.ts +103 -94
  155. package/src/organization-model/__tests__/recursive-system-schema.test.ts +549 -0
  156. package/src/organization-model/__tests__/resolve.test.ts +303 -42
  157. package/src/organization-model/__tests__/schema.test.ts +863 -153
  158. package/src/organization-model/__tests__/surface-projection.test.ts +284 -174
  159. package/src/organization-model/catalogs/lead-gen.ts +144 -0
  160. package/src/organization-model/content-kinds/config.ts +36 -0
  161. package/src/organization-model/content-kinds/index.ts +78 -0
  162. package/src/organization-model/content-kinds/pipeline.ts +68 -0
  163. package/src/organization-model/content-kinds/registry.ts +44 -0
  164. package/src/organization-model/content-kinds/status.ts +71 -0
  165. package/src/organization-model/content-kinds/template.ts +83 -0
  166. package/src/organization-model/content-kinds/types.ts +117 -0
  167. package/src/organization-model/contracts.ts +27 -17
  168. package/src/organization-model/defaults.ts +489 -107
  169. package/src/organization-model/domains/actions.ts +333 -0
  170. package/src/organization-model/domains/customers.ts +10 -7
  171. package/src/organization-model/domains/entities.ts +144 -0
  172. package/src/organization-model/domains/goals.ts +9 -6
  173. package/src/organization-model/domains/knowledge.ts +128 -54
  174. package/src/organization-model/domains/navigation.ts +139 -416
  175. package/src/organization-model/domains/offerings.ts +15 -10
  176. package/src/organization-model/domains/policies.ts +102 -0
  177. package/src/organization-model/domains/projects.ts +6 -40
  178. package/src/organization-model/domains/prospecting.ts +395 -514
  179. package/src/organization-model/domains/resources.ts +173 -81
  180. package/src/organization-model/domains/roles.ts +96 -93
  181. package/src/organization-model/domains/sales.test.ts +218 -218
  182. package/src/organization-model/domains/sales.ts +380 -589
  183. package/src/organization-model/domains/shared.ts +8 -8
  184. package/src/organization-model/domains/statuses.ts +298 -89
  185. package/src/organization-model/domains/systems.ts +240 -38
  186. package/src/organization-model/foundation.ts +35 -48
  187. package/src/organization-model/graph/build.ts +1035 -279
  188. package/src/organization-model/graph/index.ts +4 -4
  189. package/src/organization-model/graph/link.ts +10 -10
  190. package/src/organization-model/graph/schema.ts +77 -56
  191. package/src/organization-model/graph/types.ts +75 -56
  192. package/src/organization-model/helpers.ts +312 -59
  193. package/src/organization-model/icons.ts +78 -66
  194. package/src/organization-model/index.ts +129 -16
  195. package/src/organization-model/migration-helpers.ts +252 -0
  196. package/src/organization-model/ontology.ts +661 -0
  197. package/src/organization-model/organization-graph.mdx +110 -89
  198. package/src/organization-model/organization-model.mdx +226 -171
  199. package/src/organization-model/published.ts +295 -139
  200. package/src/organization-model/resolve.ts +139 -21
  201. package/src/organization-model/schema.ts +841 -301
  202. package/src/organization-model/surface-projection.ts +212 -218
  203. package/src/organization-model/types.ts +181 -90
  204. package/src/platform/api/types.ts +38 -38
  205. package/src/platform/constants/versions.ts +3 -3
  206. package/src/platform/index.ts +23 -23
  207. package/src/platform/registry/__tests__/command-view.test.ts +5 -7
  208. package/src/platform/registry/__tests__/resource-link.test.ts +35 -30
  209. package/src/platform/registry/__tests__/resource-registry.integration.test.ts +17 -32
  210. package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -0
  211. package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2051
  212. package/src/platform/registry/__tests__/validation.test.ts +1347 -1343
  213. package/src/platform/registry/command-view.ts +10 -10
  214. package/src/platform/registry/index.ts +103 -103
  215. package/src/platform/registry/resource-link.ts +32 -32
  216. package/src/platform/registry/resource-registry.ts +890 -878
  217. package/src/platform/registry/serialization.ts +295 -295
  218. package/src/platform/registry/serialized-types.ts +166 -166
  219. package/src/platform/registry/stats-types.ts +68 -68
  220. package/src/platform/registry/types.ts +425 -425
  221. package/src/platform/registry/validation.ts +745 -743
  222. package/src/platform/utils/__tests__/validation.test.ts +1084 -1084
  223. package/src/platform/utils/validation.ts +425 -425
  224. package/src/projects/api-schemas.test.ts +39 -39
  225. package/src/projects/api-schemas.ts +291 -291
  226. package/src/reference/_generated/contracts.md +2389 -2121
  227. package/src/reference/glossary.md +76 -76
  228. package/src/scaffold-registry/__tests__/index.test.ts +206 -206
  229. package/src/scaffold-registry/__tests__/schema.test.ts +166 -166
  230. package/src/scaffold-registry/index.ts +392 -392
  231. package/src/scaffold-registry/schema.ts +243 -243
  232. package/src/server.ts +289 -289
  233. package/src/supabase/database.types.ts +3153 -3093
  234. package/src/test-utils/README.md +37 -37
  235. package/src/test-utils/entities.ts +108 -108
  236. package/src/test-utils/fixtures/memberships.ts +82 -82
  237. package/src/test-utils/index.ts +12 -12
  238. package/src/test-utils/organization-model.ts +65 -65
  239. package/src/test-utils/published.ts +6 -6
  240. package/src/test-utils/rls/RLSTestContext.ts +588 -588
  241. package/src/test-utils/test-utils.test.ts +44 -49
  242. package/src/organization-model/__tests__/domains/operations.test.ts +0 -203
  243. package/src/organization-model/domains/features.ts +0 -31
  244. package/src/organization-model/domains/operations.ts +0 -85
@@ -1,89 +1,110 @@
1
- ---
2
- title: Organization Graph
3
- description: Organization OS graph layer documentation for the organization graph derived from flat Organization Model features and resource metadata links.
4
- ---
5
-
6
- ## Overview
7
-
8
- 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.
9
-
10
- Graph contracts live in `@repo/core`; rendering lives in `@repo/ui`.
11
-
12
- ## Source of Truth
13
-
14
- - `packages/core/src/organization-model/graph/types.ts`
15
- - `packages/core/src/organization-model/graph/schema.ts`
16
- - `packages/core/src/organization-model/graph/build.ts`
17
- - `packages/core/src/organization-model/graph/link.ts`
18
- - `packages/core/src/organization-model/__tests__/graph.test.ts`
19
- - `packages/ui/src/features/operations/OrganizationGraphPage.tsx`
20
- - `packages/ui/src/features/operations/organization-graph/`
21
-
22
- ## Model
23
-
24
- Node kinds:
25
-
26
- - `organization`
27
- - `feature`
28
- - `surface`
29
- - `entity`
30
- - `capability`
31
- - `resource`
32
-
33
- Edge kinds:
34
-
35
- - `contains`
36
- - `references`
37
- - `exposes`
38
- - `maps_to`
39
- - `operates-on`
40
- - `uses`
41
-
42
- Feature nodes come from the flat `OrganizationModel.features` array. Their graph IDs use `feature:<id>`, such as `feature:sales.crm`.
43
-
44
- Resource edges come from resource metadata:
45
-
46
- ```ts
47
- links: [
48
- { nodeId: 'feature:sales.lead-gen', kind: 'operates-on' },
49
- { nodeId: 'integration:instantly', kind: 'uses' }
50
- ]
51
- ```
52
-
53
- ## Build Pipeline
54
-
55
- ```ts
56
- interface BuildOrganizationGraphInput {
57
- organizationModel: OrganizationModel
58
- commandViewData?: CommandViewData
59
- }
60
- ```
61
-
62
- `buildOrganizationGraph`:
63
-
64
- 1. Reads flat Organization Model features and derives `feature:*` nodes.
65
- 2. Reads Command View resources, including integration resources, as `resource` nodes with `resourceType` metadata.
66
- 3. Emits authored graph links from resource/entity/capability metadata.
67
- 4. Bridges Command View runtime topology into resource nodes and relationship edges.
68
- 5. Returns a renderer-agnostic DTO.
69
-
70
- ## Lenses
71
-
72
- UI lenses change presentation, not data:
73
-
74
- - `default` -- broad map view.
75
- - `command-view` -- operations-focused trace view.
76
-
77
- ## Package Boundary
78
-
79
- - `@repo/core` owns graph DTOs, schemas, and build helpers.
80
- - `@repo/ui` owns Cytoscape conversion, filtering, path tracing, panels, and presentation.
81
- - `apps/command-center` owns route wiring.
82
-
83
- ## Verification
84
-
85
- ```bash
86
- pnpm --filter @repo/core test -- organization-model graph
87
- pnpm --filter @repo/ui test -- organizationGraph
88
- pnpm --filter command-center build
89
- ```
1
+ ---
2
+ title: Organization Graph
3
+ description: Organization OS graph layer documentation for the organization graph derived from Organization Model Systems, resources, actions, entities, content nodes, and typed links.
4
+ ---
5
+
6
+ ## Overview
7
+
8
+ 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.
9
+
10
+ Graph contracts live in `@repo/core`; rendering lives in `@repo/ui`.
11
+
12
+ ## Source of Truth
13
+
14
+ - `packages/core/src/organization-model/graph/types.ts`
15
+ - `packages/core/src/organization-model/graph/schema.ts`
16
+ - `packages/core/src/organization-model/graph/build.ts`
17
+ - `packages/core/src/organization-model/graph/link.ts`
18
+ - `packages/core/src/organization-model/__tests__/graph.test.ts`
19
+ - `packages/ui/src/features/operations/OrganizationGraphPage.tsx`
20
+ - `packages/ui/src/features/operations/organization-graph/`
21
+
22
+ ## Model
23
+
24
+ Node kinds:
25
+
26
+ - `organization`
27
+ - `system`
28
+ - `role`
29
+ - `action`
30
+ - `entity`
31
+ - `event`
32
+ - `resource`
33
+ - `knowledge`
34
+ - `policy`
35
+ - `stage`
36
+ - `customer-segment`
37
+ - `offering`
38
+ - `goal`
39
+ - `surface`
40
+ - `navigation-group`
41
+ - `content-node`
42
+
43
+ Edge kinds:
44
+
45
+ - `contains`
46
+ - `references`
47
+ - `maps_to`
48
+ - `uses`
49
+ - `governs`
50
+ - `governed-by`
51
+ - `links`
52
+ - `affects`
53
+ - `emits`
54
+ - `originates_from`
55
+ - `triggers`
56
+ - `applies_to`
57
+ - `effects`
58
+
59
+ System nodes come from the id-keyed `OrganizationModel.systems` map. Their graph IDs use `system:<id>`, such as `system:sales.crm`.
60
+
61
+ Resource, action, entity, policy, navigation, and content edges are derived from canonical OM maps:
62
+
63
+ ```ts
64
+ // ResourceEntry.systemPath => system -> resource contains
65
+ // SystemEntry.actions[] => system -> action uses
66
+ // Action.resourceId => action -> resource maps_to
67
+ // Action.affects[] => action -> entity affects
68
+ // Entity.links[] => entity -> entity links
69
+ // ResourceEntry.emits[] => resource -> event emits
70
+ // System.content => system -> content-node contains
71
+ // AgentResource.invocations[] => agent resource -> invocation target uses/references
72
+ ```
73
+
74
+ ## Build Pipeline
75
+
76
+ ```ts
77
+ interface BuildOrganizationGraphInput {
78
+ organizationModel: OrganizationModel
79
+ commandViewData?: CommandViewData
80
+ }
81
+ ```
82
+
83
+ `buildOrganizationGraph`:
84
+
85
+ 1. Reads Organization Model Systems and derives `system:*` nodes.
86
+ 2. Reads OM resources, including workflow, agent, integration, and script resources, as `resource` nodes.
87
+ 3. Emits derived graph links from System, Resource, Action, Entity, Policy, Agent invocation, Knowledge, navigation, and System content contracts.
88
+ 4. Bridges Command View runtime topology into resource nodes and relationship edges.
89
+ 5. Returns a renderer-agnostic DTO.
90
+
91
+ ## Lenses
92
+
93
+ UI lenses change presentation, not data:
94
+
95
+ - `default` -- broad map view.
96
+ - `command-view` -- operations-focused trace view.
97
+
98
+ ## Package Boundary
99
+
100
+ - `@repo/core` owns graph DTOs, schemas, and build helpers.
101
+ - `@repo/ui` owns Cytoscape conversion, filtering, path tracing, panels, and presentation.
102
+ - `apps/command-center` owns route wiring.
103
+
104
+ ## Verification
105
+
106
+ ```bash
107
+ pnpm --filter @repo/core test -- organization-model graph
108
+ pnpm --filter @repo/ui test -- organizationGraph
109
+ pnpm --filter command-center build
110
+ ```
@@ -1,171 +1,226 @@
1
- ---
2
- title: Organization Model
3
- description: Organization OS Model layer documentation for the flat feature hierarchy, semantic domains, resource descriptors, and curated @elevasis/core public API.
4
- ---
5
-
6
- ## Overview
7
-
8
- The organization model is the semantic contract that maps an organization's product shape to flat feature hierarchy, business semantics, shell navigation, and graph binding. It is schema-first, versioned, and validated.
9
-
10
- The model is authored in `@repo/core` and published through the curated `@elevasis/core/organization-model` surface.
11
-
12
- ## Source of Truth
13
-
14
- - `packages/core/src/organization-model/schema.ts`
15
- - `packages/core/src/organization-model/types.ts`
16
- - `packages/core/src/organization-model/defaults.ts`
17
- - `packages/core/src/organization-model/helpers.ts`
18
- - `packages/core/src/organization-model/graph/link.ts`
19
- - `packages/core/src/organization-model/published.ts`
20
- - `packages/core/src/__tests__/template-core-compatibility.test.ts`
21
-
22
- ## Contract Shape
23
-
24
- Top-level fields on `OrganizationModel`:
25
-
26
- - `version`
27
- - `features`
28
- - `branding`
29
- - `navigation`
30
- - `sales`
31
- - `prospecting`
32
- - `projects`
33
- - `identity`
34
- - `customers`
35
- - `offerings`
36
- - `roles`
37
- - `goals`
38
- - `systems`
39
- - `resources`
40
- - `statuses`
41
- - `operations`
42
- - `knowledge`
43
-
44
- Resource identity is authored inside `OrganizationModel.resources.entries`. Runtime workflows, agents, and integrations import those descriptors, derive `resourceId` and kind from them, and attach executable behavior in operations code.
45
-
46
- ## Feature Shape
47
-
48
- `OrganizationModel.features` is a flat array. Hierarchy is derived from dotted IDs:
49
-
50
- ```ts
51
- features: [
52
- { id: 'dashboard', label: 'Dashboard', enabled: true, path: '/', uiPosition: 'sidebar-primary' },
53
- { id: 'sales', label: 'Sales', enabled: true, uiPosition: 'sidebar-primary' },
54
- { id: 'sales.crm', label: 'CRM', enabled: true, path: '/crm' },
55
- { id: 'operations.resources', label: 'Resources', enabled: true, path: '/operations/resources' }
56
- ]
57
- ```
58
-
59
- Authored fields:
60
-
61
- - `id`
62
- - `label`
63
- - `description`
64
- - `enabled`
65
- - `path`
66
- - `icon`
67
- - `color`
68
- - `uiPosition`
69
- - `requiresAdmin`
70
- - `devOnly`
71
-
72
- Containers omit `path`; leaves provide `path`. `uiPosition`, `requiresAdmin`, and `devOnly` inherit from ancestors.
73
- Development-only features remain defined and enabled with `devOnly: true`; shell consumers hide those entries and route paths outside development mode while preserving the semantic contract.
74
-
75
- Navigation surfaces may also carry `devOnly` for compatibility with the legacy/domain navigation model. `knowledge.command-view` is intentionally development-only while its graph visualization modes continue to mature.
76
-
77
- ## Graph IDs and Resource Descriptors
78
-
79
- Cross-collection links use kind-prefixed graph IDs:
80
-
81
- - `feature:sales.crm`
82
- - `integration:instantly`
83
- - `resource:lead-import`
84
- - `capability:operations.queue.review`
85
-
86
- Resource identity is authored in the OM Resources domain. Operations imports descriptors from `organizationModel.resources.entries` and derives runtime `resourceId` / `type` while attaching executable behavior.
87
-
88
- ```ts
89
- import { defineResources } from '@elevasis/core/organization-model'
90
-
91
- export const resourceDescriptors = defineResources({
92
- leadImport: {
93
- id: 'lead-import',
94
- kind: 'workflow',
95
- systemId: 'sys.prospecting',
96
- ownerRoleId: 'role-ops-lead',
97
- status: 'active',
98
- capabilityKey: 'prospecting.lead-import'
99
- }
100
- })
101
-
102
- export const resourceGovernanceModel = {
103
- systems: {
104
- systems
105
- },
106
- resources: {
107
- entries: Object.values(resourceDescriptors)
108
- }
109
- } as const
110
- ```
111
-
112
- ## Domain Semantics
113
-
114
- The model keeps business semantics in named domains:
115
-
116
- - `sales` -- pipeline stages and stage semantics
117
- - `prospecting` -- company/contact lifecycle stages
118
- - `projects` -- project, milestone, and task statuses
119
- - `identity`, `customers`, `offerings`, `roles`, `goals` -- organizational reality
120
- - `systems` -- bounded contexts that group governed operational resources
121
- - `resources` -- governance-only workflow, agent, and integration descriptors
122
- - `statuses` and `operations` -- runtime/vibe-layer semantic registries
123
- - `knowledge` -- playbooks, strategies, references, and graph-governing links
124
-
125
- ## Authoring and Resolution
126
-
127
- - `defineOrganizationModel()` is a typed authoring helper.
128
- - `resolveOrganizationModel(partial)` deep-merges a partial override into `DEFAULT_ORGANIZATION_MODEL` and validates the result.
129
- - `createFoundationOrganizationModel(partial)` resolves the canonical model and returns template-facing helpers.
130
- - Plain objects merge recursively.
131
- - Arrays replace defaults.
132
-
133
- ## Referential Integrity
134
-
135
- `OrganizationModelSchema` validates:
136
-
137
- - unique feature IDs
138
- - ancestor existence for dotted feature IDs
139
- - container/leaf path rules
140
- - valid sidebar positions
141
- - reality-domain cross references such as offering target segments and role reporting lines
142
- - system, resource, role, knowledge, and goal cross references used by resource governance
143
-
144
- `DeploymentSpec` remains the runtime/deploy assembly around these descriptors. It is not the source of resource identity.
145
-
146
- ## Provider Integration
147
-
148
- `ElevasisFeaturesProvider` uses the organization model to:
149
-
150
- 1. validate each manifest's `featureId`
151
- 2. resolve effective feature access
152
- 3. derive sidebar entries from `features`
153
- 4. expose shell helpers such as `childrenOf`, `ancestorsOf`, and `findByPath`
154
- 5. bridge the operations graph into shared UI
155
-
156
- ## Published Package
157
-
158
- `@elevasis/core` exposes a curated browser-safe surface:
159
-
160
- - root barrel
161
- - `./organization-model`
162
-
163
- The organization graph builder remains monorepo-internal until there is a concrete external contract need.
164
-
165
- ## Verification
166
-
167
- ```bash
168
- pnpm --filter @repo/core test -- organization-model
169
- pnpm --filter @repo/core build:publish
170
- pnpm -C external/_template/core test
171
- ```
1
+ ---
2
+ title: Organization Model
3
+ description: Organization OS Model layer documentation for the System hierarchy, semantic domains, resource descriptors, and curated @elevasis/core public API.
4
+ ---
5
+
6
+ ## Overview
7
+
8
+ The organization model is the semantic contract that maps an organization's System hierarchy, business semantics, shell navigation, resource governance, action/entity vocabulary, and graph binding. It is schema-first, versioned, and validated.
9
+
10
+ The model is authored in `@repo/core` and published through the curated `@elevasis/core/organization-model` surface.
11
+
12
+ ## Source of Truth
13
+
14
+ - `packages/core/src/organization-model/schema.ts`
15
+ - `packages/core/src/organization-model/types.ts`
16
+ - `packages/core/src/organization-model/defaults.ts`
17
+ - `packages/core/src/organization-model/helpers.ts`
18
+ - `packages/core/src/organization-model/graph/link.ts`
19
+ - `packages/core/src/organization-model/published.ts`
20
+ - `packages/core/src/__tests__/template-core-compatibility.test.ts`
21
+
22
+ ## Contract Shape
23
+
24
+ Top-level fields on `OrganizationModel`:
25
+
26
+ - `version`
27
+ - `domainMetadata`
28
+ - `branding`
29
+ - `navigation`
30
+ - `identity`
31
+ - `customers`
32
+ - `offerings`
33
+ - `roles`
34
+ - `goals`
35
+ - `systems`
36
+ - `resources`
37
+ - `actions`
38
+ - `entities`
39
+ - `policies`
40
+ - `knowledge`
41
+
42
+ The pure collection domains are id-keyed maps: `systems`, `roles`, `goals`, `customers`, `offerings`, `resources`, `actions`, `entities`, `policies`, and `knowledge`. The map key must match the entry `id`. Entries carry `order` for deterministic ordered views; use `listDomain(record)` when order matters.
43
+
44
+ Resource identity is authored inside `OrganizationModel.resources`. Runtime workflows, agents, integrations, and scripts import those descriptors, derive `resourceId` and kind from them, and attach executable behavior in operations code.
45
+
46
+ ## System Shape
47
+
48
+ `OrganizationModel.systems` is the canonical semantic domain map. Hierarchy is authored with recursive `subsystems`; dotted paths such as `sales.crm` are derived from position in that tree. `parentSystemId` and `id` remain accepted compatibility fields during the migration.
49
+
50
+ ```ts
51
+ systems: {
52
+ dashboard: { id: 'dashboard', order: 10, label: 'Dashboard', lifecycle: 'active' },
53
+ sales: { id: 'sales', order: 20, label: 'Sales', lifecycle: 'active' },
54
+ clients: { id: 'clients', order: 30, label: 'Clients', lifecycle: 'active' },
55
+ projects: { id: 'projects', order: 40, label: 'Projects', lifecycle: 'active' }
56
+ }
57
+ ```
58
+
59
+ Authored fields:
60
+
61
+ - `id`
62
+ - `label`
63
+ - `description`
64
+ - `kind`
65
+ - `parentSystemId`
66
+ - `ui`
67
+ - `lifecycle`
68
+ - `requiresAdmin`
69
+ - `actions`
70
+ - `policies`
71
+ - `content`
72
+ - `subsystems`
73
+ - `order`
74
+
75
+ Systems describe ownership, hierarchy, lifecycle, access, and governance. Sidebar presentation lives in `navigation.sidebar`, not on System entries. UI-backed Systems may still provide `ui.path` for route matching during the migration, but `ui.surfaces` is not an authored contract. `lifecycle` replaces the old feature enabled/dev-only split.
76
+
77
+ ## Navigation Shape
78
+
79
+ `OrganizationModel.navigation.sidebar` is the authored shell tree. It has `primary` and `bottom` sections whose records contain recursive group nodes and routeable surface nodes:
80
+
81
+ ```ts
82
+ navigation: {
83
+ sidebar: {
84
+ primary: {
85
+ dashboard: {
86
+ type: 'surface',
87
+ order: 10,
88
+ label: 'Dashboard',
89
+ path: '/',
90
+ surfaceType: 'dashboard',
91
+ targets: { systems: ['dashboard'] }
92
+ },
93
+ business: {
94
+ type: 'group',
95
+ order: 20,
96
+ label: 'Business',
97
+ children: {
98
+ sales: {
99
+ type: 'surface',
100
+ order: 10,
101
+ label: 'Sales',
102
+ path: '/sales',
103
+ surfaceType: 'page',
104
+ targets: { systems: ['sales'] }
105
+ },
106
+ clients: {
107
+ type: 'surface',
108
+ order: 20,
109
+ label: 'Clients',
110
+ path: '/clients',
111
+ surfaceType: 'list',
112
+ targets: { systems: ['clients'] }
113
+ }
114
+ }
115
+ }
116
+ },
117
+ bottom: {}
118
+ }
119
+ }
120
+ ```
121
+
122
+ Dashboard is ordered before Business in the primary sidebar. Business is a navigation group only; it is not a System and it is not a URL namespace. Routeable leaves are projected into flat surface DTOs by `projectOrganizationSurfaces(model)`.
123
+
124
+ ## Graph IDs and Resource Descriptors
125
+
126
+ Cross-collection links use kind-prefixed graph IDs:
127
+
128
+ - `system:sales.crm`
129
+ - `integration:instantly`
130
+ - `resource:lead-import`
131
+ - `action:operations.queue.review`
132
+
133
+ Resource identity is authored in the OM Resources domain. Operations imports descriptors from `organizationModel.resources` and derives runtime `resourceId` / `type` while attaching executable behavior.
134
+
135
+ ```ts
136
+ import { defineResources } from '@elevasis/core/organization-model'
137
+
138
+ export const resourceDescriptors = defineResources({
139
+ leadImport: {
140
+ id: 'lgn-01c-apollo-import-workflow',
141
+ kind: 'workflow',
142
+ systemPath: 'sales.lead-gen',
143
+ ownerRoleId: 'role-ops-lead',
144
+ status: 'active',
145
+ actionKey: 'lead-gen.company.apollo-import',
146
+ codeRefs: [
147
+ {
148
+ path: 'packages/elevasis-operations/src/sales/prospecting/scrape/apollo-import.ts',
149
+ role: 'entrypoint',
150
+ symbol: 'lgnApolloImportWorkflow'
151
+ }
152
+ ]
153
+ }
154
+ })
155
+
156
+ export const resourceGovernanceModel = {
157
+ systems,
158
+ resources: resourceDescriptors
159
+ } as const
160
+ ```
161
+
162
+ Legacy `sys.*` paths may still appear in older examples and external compatibility mirrors.
163
+ For new Organization OS examples, prefer the current semantic System path.
164
+
165
+ ## Domain Semantics
166
+
167
+ The model keeps business semantics in named domains:
168
+
169
+ - `identity`, `customers`, `offerings`, `roles`, `goals` -- organizational reality
170
+ - `systems` -- bounded contexts that group governed operational resources and system-local content
171
+ - `actions` -- stable business verbs exposed or consumed by systems
172
+ - `entities` -- durable business nouns and their semantic links
173
+ - `resources` -- governance-only workflow, agent, integration, and script descriptors
174
+ - `policies` -- operational governance rules over systems, actions, resources, and roles
175
+ - `knowledge` -- playbooks, strategies, references, and graph-governing links
176
+
177
+ System-local operational catalogs now live under `System.content`, including pipeline, stage, template, template-step, status-flow, status, and config nodes. The legacy compound and status domains should not be used for new authoring.
178
+
179
+ ## Authoring and Resolution
180
+
181
+ - `defineOrganizationModel()` is a typed authoring helper.
182
+ - `resolveOrganizationModel(partial)` deep-merges a partial override into `DEFAULT_ORGANIZATION_MODEL` and validates the result.
183
+ - `createFoundationOrganizationModel(partial)` resolves the canonical model and returns template-facing helpers.
184
+ - Plain objects merge recursively.
185
+ - Id-keyed domain maps merge additively by key.
186
+ - Arrays replace defaults.
187
+
188
+ ## Referential Integrity
189
+
190
+ `OrganizationModelSchema` validates:
191
+
192
+ - unique System IDs
193
+ - ancestor existence for dotted System IDs and `parentSystemId`
194
+ - UI path rules for Systems with UI presence
195
+ - valid sidebar positions
196
+ - reality-domain cross references such as offering target segments and role reporting lines
197
+ - system, resource, role, knowledge, and goal cross references used by resource governance
198
+
199
+ `DeploymentSpec` remains the runtime/deploy assembly around these descriptors. It is not the source of resource identity.
200
+
201
+ ## Provider Integration
202
+
203
+ `ElevasisSystemsProvider` uses the organization model to:
204
+
205
+ 1. validate each manifest's `systemId`
206
+ 2. resolve effective system access
207
+ 3. derive sidebar entries from `navigation.sidebar`
208
+ 4. expose shell helpers such as `childrenOf`, `ancestorsOf`, and `findByPath`
209
+ 5. bridge the operations graph into shared UI
210
+
211
+ ## Published Package
212
+
213
+ `@elevasis/core` exposes a curated browser-safe surface:
214
+
215
+ - root barrel
216
+ - `./organization-model`
217
+
218
+ The organization graph builder remains monorepo-internal until there is a concrete external contract need.
219
+
220
+ ## Verification
221
+
222
+ ```bash
223
+ pnpm --filter @repo/core test -- organization-model
224
+ pnpm --filter @repo/core build:publish
225
+ pnpm -C external/_template/core test
226
+ ```