@elevasis/core 0.23.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 (241) hide show
  1. package/dist/index.d.ts +1326 -552
  2. package/dist/index.js +869 -154
  3. package/dist/knowledge/index.d.ts +487 -209
  4. package/dist/knowledge/index.js +104 -1
  5. package/dist/organization-model/index.d.ts +1326 -552
  6. package/dist/organization-model/index.js +869 -154
  7. package/dist/test-utils/index.d.ts +357 -72
  8. package/dist/test-utils/index.js +795 -142
  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 -12
  13. package/src/_gen/__tests__/__snapshots__/contracts.md.snap +2102 -2096
  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 +1492 -1497
  37. package/src/business/acquisition/build-templates.test.ts +240 -240
  38. package/src/business/acquisition/build-templates.ts +98 -98
  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 -153
  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 -396
  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 +32 -32
  123. package/src/knowledge/__tests__/queries.test.ts +626 -535
  124. package/src/knowledge/format.ts +99 -99
  125. package/src/knowledge/index.ts +5 -5
  126. package/src/knowledge/published.ts +5 -5
  127. package/src/knowledge/queries.ts +269 -218
  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 -149
  131. package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -210
  132. package/src/organization-model/__tests__/defaults.test.ts +168 -168
  133. package/src/organization-model/__tests__/domains/actions.test.ts +78 -56
  134. package/src/organization-model/__tests__/domains/customers.test.ts +299 -299
  135. package/src/organization-model/__tests__/domains/entities.test.ts +56 -56
  136. package/src/organization-model/__tests__/domains/goals.test.ts +493 -493
  137. package/src/organization-model/__tests__/domains/identity.test.ts +280 -280
  138. package/src/organization-model/__tests__/domains/navigation.test.ts +268 -268
  139. package/src/organization-model/__tests__/domains/offerings.test.ts +414 -414
  140. package/src/organization-model/__tests__/domains/policies.test.ts +323 -323
  141. package/src/organization-model/__tests__/domains/resource-mappings.test.ts +293 -293
  142. package/src/organization-model/__tests__/domains/resources.test.ts +382 -283
  143. package/src/organization-model/__tests__/domains/roles.test.ts +463 -463
  144. package/src/organization-model/__tests__/domains/statuses.test.ts +246 -246
  145. package/src/organization-model/__tests__/domains/systems.test.ts +209 -209
  146. package/src/organization-model/__tests__/flatten-additive-merge.test.ts +362 -361
  147. package/src/organization-model/__tests__/foundation.test.ts +77 -77
  148. package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -144
  149. package/src/organization-model/__tests__/graph.test.ts +1246 -887
  150. package/src/organization-model/__tests__/icons.test.ts +10 -1
  151. package/src/organization-model/__tests__/knowledge.test.ts +251 -15
  152. package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -438
  153. package/src/organization-model/__tests__/migration-helpers.test.ts +591 -591
  154. package/src/organization-model/__tests__/prospecting-ssot.test.ts +103 -103
  155. package/src/organization-model/__tests__/recursive-system-schema.test.ts +535 -506
  156. package/src/organization-model/__tests__/resolve.test.ts +274 -164
  157. package/src/organization-model/__tests__/schema.test.ts +834 -301
  158. package/src/organization-model/__tests__/surface-projection.test.ts +284 -284
  159. package/src/organization-model/catalogs/lead-gen.ts +144 -144
  160. package/src/organization-model/content-kinds/config.ts +36 -36
  161. package/src/organization-model/content-kinds/index.ts +76 -72
  162. package/src/organization-model/content-kinds/pipeline.ts +68 -68
  163. package/src/organization-model/content-kinds/registry.ts +44 -44
  164. package/src/organization-model/content-kinds/status.ts +71 -71
  165. package/src/organization-model/content-kinds/template.ts +83 -83
  166. package/src/organization-model/content-kinds/types.ts +117 -117
  167. package/src/organization-model/contracts.ts +27 -27
  168. package/src/organization-model/defaults.ts +40 -50
  169. package/src/organization-model/domains/actions.ts +333 -239
  170. package/src/organization-model/domains/customers.ts +78 -78
  171. package/src/organization-model/domains/entities.ts +144 -144
  172. package/src/organization-model/domains/goals.ts +83 -83
  173. package/src/organization-model/domains/knowledge.ts +117 -101
  174. package/src/organization-model/domains/navigation.ts +139 -139
  175. package/src/organization-model/domains/offerings.ts +71 -71
  176. package/src/organization-model/domains/policies.ts +102 -102
  177. package/src/organization-model/domains/projects.ts +14 -14
  178. package/src/organization-model/domains/prospecting.ts +395 -395
  179. package/src/organization-model/domains/resources.ts +167 -132
  180. package/src/organization-model/domains/roles.ts +96 -96
  181. package/src/organization-model/domains/sales.test.ts +218 -218
  182. package/src/organization-model/domains/sales.ts +380 -380
  183. package/src/organization-model/domains/shared.ts +63 -63
  184. package/src/organization-model/domains/statuses.ts +339 -339
  185. package/src/organization-model/domains/systems.ts +217 -172
  186. package/src/organization-model/foundation.ts +75 -75
  187. package/src/organization-model/graph/build.ts +1016 -888
  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 +76 -70
  191. package/src/organization-model/graph/types.ts +73 -67
  192. package/src/organization-model/helpers.ts +289 -241
  193. package/src/organization-model/icons.ts +78 -66
  194. package/src/organization-model/index.ts +130 -128
  195. package/src/organization-model/migration-helpers.ts +247 -244
  196. package/src/organization-model/ontology.ts +661 -0
  197. package/src/organization-model/organization-graph.mdx +110 -90
  198. package/src/organization-model/organization-model.mdx +226 -219
  199. package/src/organization-model/published.ts +289 -235
  200. package/src/organization-model/resolve.ts +146 -91
  201. package/src/organization-model/schema.ts +790 -671
  202. package/src/organization-model/surface-projection.ts +212 -212
  203. package/src/organization-model/types.ts +177 -167
  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 +10 -10
  208. package/src/platform/registry/__tests__/resource-link.test.ts +35 -35
  209. package/src/platform/registry/__tests__/resource-registry.integration.test.ts +20 -20
  210. package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -245
  211. package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2053
  212. package/src/platform/registry/__tests__/validation.test.ts +1347 -1347
  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 -890
  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 -745
  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 +2101 -2096
  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 -3153
  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 -44
@@ -1,90 +1,110 @@
1
- ---
2
- title: Organization Graph
3
- description: Organization OS graph layer documentation for the organization graph derived from Organization Model Systems, resources, capabilities, 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
- - `capability`
30
- - `resource`
31
- - `knowledge`
32
- - `policy`
33
-
34
- Edge kinds:
35
-
36
- - `contains`
37
- - `references`
38
- - `maps_to`
39
- - `uses`
40
- - `governs`
41
- - `governed-by`
42
-
43
- System nodes come from the id-keyed `OrganizationModel.systems` map. Their graph IDs use `system:<id>`, such as `system:sales.crm`.
44
-
45
- Resource and capability edges are derived from canonical OM maps:
46
-
47
- ```ts
48
- // ResourceEntry.systemPath => system -> resource contains
49
- // SystemEntry.capabilities[] => system -> capability uses
50
- // Capability.resourceId => capability -> resource maps_to
51
- // AgentResource.invocations[] => agent resource -> invocation target uses/references
52
- ```
53
-
54
- ## Build Pipeline
55
-
56
- ```ts
57
- interface BuildOrganizationGraphInput {
58
- organizationModel: OrganizationModel
59
- commandViewData?: CommandViewData
60
- }
61
- ```
62
-
63
- `buildOrganizationGraph`:
64
-
65
- 1. Reads Organization Model Systems and derives `system:*` nodes.
66
- 2. Reads OM resources, including workflow, agent, integration, and script resources, as `resource` nodes.
67
- 3. Emits derived graph links from System, Resource, Capability, Agent invocation, and Knowledge contracts.
68
- 4. Bridges Command View runtime topology into resource nodes and relationship edges.
69
- 5. Returns a renderer-agnostic DTO.
70
-
71
- ## Lenses
72
-
73
- UI lenses change presentation, not data:
74
-
75
- - `default` -- broad map view.
76
- - `command-view` -- operations-focused trace view.
77
-
78
- ## Package Boundary
79
-
80
- - `@repo/core` owns graph DTOs, schemas, and build helpers.
81
- - `@repo/ui` owns Cytoscape conversion, filtering, path tracing, panels, and presentation.
82
- - `apps/command-center` owns route wiring.
83
-
84
- ## Verification
85
-
86
- ```bash
87
- pnpm --filter @repo/core test -- organization-model graph
88
- pnpm --filter @repo/ui test -- organizationGraph
89
- pnpm --filter command-center build
90
- ```
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,219 +1,226 @@
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, 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
- - `sales`
31
- - `prospecting`
32
- - `projects`
33
- - `identity`
34
- - `customers`
35
- - `offerings`
36
- - `roles`
37
- - `goals`
38
- - `systems`
39
- - `resources`
40
- - `capabilities`
41
- - `policies`
42
- - `statuses`
43
- - `knowledge`
44
-
45
- The pure collection domains are id-keyed maps: `systems`, `roles`, `goals`, `customers`, `offerings`, `resources`, `capabilities`, `policies`, and `statuses`. The map key must match the entry `id`. Entries carry `order` for deterministic ordered views; use `listDomain(record)` when order matters.
46
-
47
- 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.
48
-
49
- ## System Shape
50
-
51
- `OrganizationModel.systems` is the canonical semantic domain map. Hierarchy is derived from `parentSystemId` and dotted IDs:
52
-
53
- ```ts
54
- systems: {
55
- dashboard: { id: 'dashboard', order: 10, label: 'Dashboard', lifecycle: 'active' },
56
- sales: { id: 'sales', order: 20, label: 'Sales', lifecycle: 'active' },
57
- clients: { id: 'clients', order: 30, label: 'Clients', lifecycle: 'active' },
58
- projects: { id: 'projects', order: 40, label: 'Projects', lifecycle: 'active' }
59
- }
60
- ```
61
-
62
- Authored fields:
63
-
64
- - `id`
65
- - `label`
66
- - `description`
67
- - `kind`
68
- - `parentSystemId`
69
- - `ui`
70
- - `lifecycle`
71
- - `requiresAdmin`
72
- - `capabilities`
73
- - `policies`
74
- - `order`
75
-
76
- 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.
77
-
78
- ## Navigation Shape
79
-
80
- `OrganizationModel.navigation.sidebar` is the authored shell tree. It has `primary` and `bottom` sections whose records contain recursive group nodes and routeable surface nodes:
81
-
82
- ```ts
83
- navigation: {
84
- sidebar: {
85
- primary: {
86
- dashboard: {
87
- type: 'surface',
88
- order: 10,
89
- label: 'Dashboard',
90
- path: '/',
91
- surfaceType: 'dashboard',
92
- targets: { systems: ['dashboard'] }
93
- },
94
- business: {
95
- type: 'group',
96
- order: 20,
97
- label: 'Business',
98
- children: {
99
- sales: {
100
- type: 'surface',
101
- order: 10,
102
- label: 'Sales',
103
- path: '/sales',
104
- surfaceType: 'page',
105
- targets: { systems: ['sales'] }
106
- },
107
- clients: {
108
- type: 'surface',
109
- order: 20,
110
- label: 'Clients',
111
- path: '/clients',
112
- surfaceType: 'list',
113
- targets: { systems: ['clients'] }
114
- }
115
- }
116
- }
117
- },
118
- bottom: {}
119
- }
120
- }
121
- ```
122
-
123
- 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)`.
124
-
125
- ## Graph IDs and Resource Descriptors
126
-
127
- Cross-collection links use kind-prefixed graph IDs:
128
-
129
- - `system:sales.crm`
130
- - `integration:instantly`
131
- - `resource:lead-import`
132
- - `action:operations.queue.review`
133
-
134
- Resource identity is authored in the OM Resources domain. Operations imports descriptors from `organizationModel.resources` and derives runtime `resourceId` / `type` while attaching executable behavior.
135
-
136
- ```ts
137
- import { defineResources } from '@elevasis/core/organization-model'
138
-
139
- export const resourceDescriptors = defineResources({
140
- leadImport: {
141
- id: 'lead-import',
142
- kind: 'workflow',
143
- systemPath: 'sales.lead-gen',
144
- ownerRoleId: 'role-ops-lead',
145
- status: 'active',
146
- actionKey: 'prospecting.lead-import'
147
- }
148
- })
149
-
150
- export const resourceGovernanceModel = {
151
- systems,
152
- resources: resourceDescriptors
153
- } as const
154
- ```
155
-
156
- Legacy `sys.*` paths may still appear in older examples and external compatibility mirrors.
157
- For new Organization OS examples, prefer the current semantic System path.
158
-
159
- ## Domain Semantics
160
-
161
- The model keeps business semantics in named domains:
162
-
163
- - `sales` -- pipeline stages and stage semantics
164
- - `prospecting` -- company/contact lifecycle stages
165
- - `projects` -- project, milestone, and task statuses
166
- - `identity`, `customers`, `offerings`, `roles`, `goals` -- organizational reality
167
- - `systems` -- bounded contexts that group governed operational resources
168
- - `resources` -- governance-only workflow, agent, and integration descriptors
169
- - `statuses` -- runtime/vibe-layer semantic registry
170
- - `knowledge` -- playbooks, strategies, references, and graph-governing links
171
-
172
- ## Authoring and Resolution
173
-
174
- - `defineOrganizationModel()` is a typed authoring helper.
175
- - `resolveOrganizationModel(partial)` deep-merges a partial override into `DEFAULT_ORGANIZATION_MODEL` and validates the result.
176
- - `createFoundationOrganizationModel(partial)` resolves the canonical model and returns template-facing helpers.
177
- - Plain objects merge recursively.
178
- - Id-keyed domain maps merge additively by key.
179
- - Arrays replace defaults.
180
-
181
- ## Referential Integrity
182
-
183
- `OrganizationModelSchema` validates:
184
-
185
- - unique System IDs
186
- - ancestor existence for dotted System IDs and `parentSystemId`
187
- - UI path rules for Systems with UI presence
188
- - valid sidebar positions
189
- - reality-domain cross references such as offering target segments and role reporting lines
190
- - system, resource, role, knowledge, and goal cross references used by resource governance
191
-
192
- `DeploymentSpec` remains the runtime/deploy assembly around these descriptors. It is not the source of resource identity.
193
-
194
- ## Provider Integration
195
-
196
- `ElevasisSystemsProvider` uses the organization model to:
197
-
198
- 1. validate each manifest's `systemId`
199
- 2. resolve effective system access
200
- 3. derive sidebar entries from `navigation.sidebar`
201
- 4. expose shell helpers such as `childrenOf`, `ancestorsOf`, and `findByPath`
202
- 5. bridge the operations graph into shared UI
203
-
204
- ## Published Package
205
-
206
- `@elevasis/core` exposes a curated browser-safe surface:
207
-
208
- - root barrel
209
- - `./organization-model`
210
-
211
- The organization graph builder remains monorepo-internal until there is a concrete external contract need.
212
-
213
- ## Verification
214
-
215
- ```bash
216
- pnpm --filter @repo/core test -- organization-model
217
- pnpm --filter @repo/core build:publish
218
- pnpm -C external/_template/core test
219
- ```
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
+ ```