@elevasis/core 0.23.0 → 0.24.1

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 (243) hide show
  1. package/dist/index.d.ts +4343 -2690
  2. package/dist/index.js +1101 -156
  3. package/dist/knowledge/index.d.ts +574 -210
  4. package/dist/knowledge/index.js +104 -1
  5. package/dist/organization-model/index.d.ts +4343 -2690
  6. package/dist/organization-model/index.js +1101 -156
  7. package/dist/test-utils/index.d.ts +483 -109
  8. package/dist/test-utils/index.js +904 -144
  9. package/package.json +3 -3
  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 +2137 -2093
  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 +195 -197
  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 +387 -277
  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__/domains/topology.test.ts +188 -0
  147. package/src/organization-model/__tests__/flatten-additive-merge.test.ts +362 -361
  148. package/src/organization-model/__tests__/foundation.test.ts +77 -77
  149. package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -144
  150. package/src/organization-model/__tests__/graph.test.ts +1312 -862
  151. package/src/organization-model/__tests__/icons.test.ts +10 -1
  152. package/src/organization-model/__tests__/knowledge.test.ts +251 -15
  153. package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -438
  154. package/src/organization-model/__tests__/migration-helpers.test.ts +591 -591
  155. package/src/organization-model/__tests__/prospecting-ssot.test.ts +103 -103
  156. package/src/organization-model/__tests__/recursive-system-schema.test.ts +535 -506
  157. package/src/organization-model/__tests__/resolve.test.ts +274 -164
  158. package/src/organization-model/__tests__/schema.test.ts +844 -301
  159. package/src/organization-model/__tests__/surface-projection.test.ts +284 -284
  160. package/src/organization-model/catalogs/lead-gen.ts +144 -144
  161. package/src/organization-model/content-kinds/config.ts +36 -36
  162. package/src/organization-model/content-kinds/index.ts +76 -72
  163. package/src/organization-model/content-kinds/pipeline.ts +68 -68
  164. package/src/organization-model/content-kinds/registry.ts +44 -44
  165. package/src/organization-model/content-kinds/status.ts +71 -71
  166. package/src/organization-model/content-kinds/template.ts +83 -83
  167. package/src/organization-model/content-kinds/types.ts +117 -117
  168. package/src/organization-model/contracts.ts +27 -27
  169. package/src/organization-model/defaults.ts +42 -50
  170. package/src/organization-model/domains/actions.ts +333 -239
  171. package/src/organization-model/domains/customers.ts +78 -78
  172. package/src/organization-model/domains/entities.ts +144 -144
  173. package/src/organization-model/domains/goals.ts +83 -83
  174. package/src/organization-model/domains/knowledge.ts +117 -101
  175. package/src/organization-model/domains/navigation.ts +139 -139
  176. package/src/organization-model/domains/offerings.ts +71 -71
  177. package/src/organization-model/domains/policies.ts +102 -102
  178. package/src/organization-model/domains/projects.ts +14 -14
  179. package/src/organization-model/domains/prospecting.ts +395 -395
  180. package/src/organization-model/domains/resources.ts +202 -124
  181. package/src/organization-model/domains/roles.ts +96 -96
  182. package/src/organization-model/domains/sales.test.ts +218 -218
  183. package/src/organization-model/domains/sales.ts +380 -380
  184. package/src/organization-model/domains/shared.ts +63 -63
  185. package/src/organization-model/domains/statuses.ts +339 -339
  186. package/src/organization-model/domains/systems.ts +217 -172
  187. package/src/organization-model/domains/topology.ts +261 -0
  188. package/src/organization-model/foundation.ts +75 -75
  189. package/src/organization-model/graph/build.ts +1043 -867
  190. package/src/organization-model/graph/index.ts +4 -4
  191. package/src/organization-model/graph/link.ts +10 -10
  192. package/src/organization-model/graph/schema.ts +75 -68
  193. package/src/organization-model/graph/types.ts +71 -64
  194. package/src/organization-model/helpers.ts +289 -241
  195. package/src/organization-model/icons.ts +78 -66
  196. package/src/organization-model/index.ts +128 -125
  197. package/src/organization-model/migration-helpers.ts +247 -244
  198. package/src/organization-model/ontology.ts +658 -0
  199. package/src/organization-model/organization-graph.mdx +110 -90
  200. package/src/organization-model/organization-model.mdx +225 -213
  201. package/src/organization-model/published.ts +299 -222
  202. package/src/organization-model/resolve.ts +146 -91
  203. package/src/organization-model/schema.ts +818 -659
  204. package/src/organization-model/surface-projection.ts +212 -212
  205. package/src/organization-model/types.ts +179 -155
  206. package/src/platform/api/types.ts +38 -38
  207. package/src/platform/constants/versions.ts +3 -3
  208. package/src/platform/index.ts +23 -23
  209. package/src/platform/registry/__tests__/command-view.test.ts +10 -10
  210. package/src/platform/registry/__tests__/resource-link.test.ts +35 -35
  211. package/src/platform/registry/__tests__/resource-registry.integration.test.ts +20 -20
  212. package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -245
  213. package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2053
  214. package/src/platform/registry/__tests__/validation.test.ts +1444 -1259
  215. package/src/platform/registry/command-view.ts +10 -10
  216. package/src/platform/registry/index.ts +103 -103
  217. package/src/platform/registry/resource-link.ts +32 -32
  218. package/src/platform/registry/resource-registry.ts +886 -886
  219. package/src/platform/registry/serialization.ts +295 -295
  220. package/src/platform/registry/serialized-types.ts +166 -166
  221. package/src/platform/registry/stats-types.ts +68 -68
  222. package/src/platform/registry/types.ts +425 -425
  223. package/src/platform/registry/validation.ts +876 -684
  224. package/src/platform/utils/__tests__/validation.test.ts +1084 -1084
  225. package/src/platform/utils/validation.ts +425 -425
  226. package/src/projects/api-schemas.test.ts +39 -39
  227. package/src/projects/api-schemas.ts +291 -291
  228. package/src/reference/_generated/contracts.md +2136 -2093
  229. package/src/reference/glossary.md +76 -76
  230. package/src/scaffold-registry/__tests__/index.test.ts +206 -206
  231. package/src/scaffold-registry/__tests__/schema.test.ts +166 -166
  232. package/src/scaffold-registry/index.ts +392 -392
  233. package/src/scaffold-registry/schema.ts +243 -243
  234. package/src/server.ts +289 -289
  235. package/src/supabase/database.types.ts +3 -0
  236. package/src/test-utils/README.md +37 -37
  237. package/src/test-utils/entities.ts +108 -108
  238. package/src/test-utils/fixtures/memberships.ts +82 -82
  239. package/src/test-utils/index.ts +12 -12
  240. package/src/test-utils/organization-model.ts +65 -65
  241. package/src/test-utils/published.ts +6 -6
  242. package/src/test-utils/rls/RLSTestContext.ts +588 -588
  243. 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,231 @@
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
-
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
+
139
138
  export const resourceDescriptors = defineResources({
140
139
  leadImport: {
141
- id: 'lead-import',
140
+ id: 'lgn-01c-apollo-import-workflow',
141
+ title: 'Apollo Import',
142
+ description: 'Imports Apollo company records into the lead generation pipeline.',
142
143
  kind: 'workflow',
143
144
  systemPath: 'sales.lead-gen',
144
145
  ownerRoleId: 'role-ops-lead',
145
146
  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
- ```
147
+ ontology: {
148
+ actions: ['sales.lead-gen:action/company.apollo-import'],
149
+ primaryAction: 'sales.lead-gen:action/company.apollo-import'
150
+ },
151
+ codeRefs: [
152
+ {
153
+ path: 'packages/elevasis-operations/src/sales/prospecting/scrape/apollo-import.ts',
154
+ role: 'entrypoint',
155
+ symbol: 'lgnApolloImportWorkflow'
156
+ }
157
+ ]
158
+ }
159
+ })
160
+
161
+ export const resourceGovernanceModel = {
162
+ systems,
163
+ resources: resourceDescriptors
164
+ } as const
165
+ ```
166
+
167
+ Legacy `sys.*` paths may still appear in older examples and external compatibility mirrors.
168
+ For new Organization OS examples, prefer the current semantic System path.
169
+
170
+ ## Domain Semantics
171
+
172
+ The model keeps business semantics in named domains:
173
+
174
+ - `identity`, `customers`, `offerings`, `roles`, `goals` -- organizational reality
175
+ - `systems` -- bounded contexts that group governed operational resources and system-local content
176
+ - `actions` -- stable business verbs exposed or consumed by systems
177
+ - `entities` -- durable business nouns and their semantic links
178
+ - `resources` -- governance-only workflow, agent, integration, and script descriptors
179
+ - `policies` -- operational governance rules over systems, actions, resources, and roles
180
+ - `knowledge` -- playbooks, strategies, references, and graph-governing links
181
+
182
+ 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.
183
+
184
+ ## Authoring and Resolution
185
+
186
+ - `defineOrganizationModel()` is a typed authoring helper.
187
+ - `resolveOrganizationModel(partial)` deep-merges a partial override into `DEFAULT_ORGANIZATION_MODEL` and validates the result.
188
+ - `createFoundationOrganizationModel(partial)` resolves the canonical model and returns template-facing helpers.
189
+ - Plain objects merge recursively.
190
+ - Id-keyed domain maps merge additively by key.
191
+ - Arrays replace defaults.
192
+
193
+ ## Referential Integrity
194
+
195
+ `OrganizationModelSchema` validates:
196
+
197
+ - unique System IDs
198
+ - ancestor existence for dotted System IDs and `parentSystemId`
199
+ - UI path rules for Systems with UI presence
200
+ - valid sidebar positions
201
+ - reality-domain cross references such as offering target segments and role reporting lines
202
+ - system, resource, role, knowledge, and goal cross references used by resource governance
203
+
204
+ `DeploymentSpec` remains the runtime/deploy assembly around these descriptors. It is not the source of resource identity.
205
+
206
+ ## Provider Integration
207
+
208
+ `ElevasisSystemsProvider` uses the organization model to:
209
+
210
+ 1. validate each manifest's `systemId`
211
+ 2. resolve effective system access
212
+ 3. derive sidebar entries from `navigation.sidebar`
213
+ 4. expose shell helpers such as `childrenOf`, `ancestorsOf`, and `findByPath`
214
+ 5. bridge the operations graph into shared UI
215
+
216
+ ## Published Package
217
+
218
+ `@elevasis/core` exposes a curated browser-safe surface:
219
+
220
+ - root barrel
221
+ - `./organization-model`
222
+
223
+ The organization graph builder remains monorepo-internal until there is a concrete external contract need.
224
+
225
+ ## Verification
226
+
227
+ ```bash
228
+ pnpm --filter @repo/core test -- organization-model
229
+ pnpm --filter @repo/core build:publish
230
+ pnpm -C external/_template/core test
231
+ ```