@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,154 +1,310 @@
1
- export { OrganizationModelSchema } from './schema'
2
- export { FeatureSchema, NodeIdPathSchema, NodeIdStringSchema, UiPositionSchema } from './domains/features'
3
- export { LinkSchema } from './graph/link'
4
- export { IconNameSchema, TechStackEntrySchema } from './domains/shared'
5
1
  export {
6
- ORGANIZATION_MODEL_ICON_TOKENS,
7
- OrganizationModelBuiltinIconTokenSchema,
8
- OrganizationModelIconTokenSchema
9
- } from './icons'
2
+ DEFAULT_ONTOLOGY_SCOPE,
3
+ OntologyActionTypeSchema,
4
+ OntologyCatalogTypeSchema,
5
+ OntologyEventTypeSchema,
6
+ OntologyGroupSchema,
7
+ OntologyIdSchema,
8
+ OntologyInterfaceTypeSchema,
9
+ OntologyKindSchema,
10
+ OntologyLinkTypeSchema,
11
+ OntologyObjectTypeSchema,
12
+ OntologyScopeSchema,
13
+ OntologySharedPropertySchema,
14
+ OntologySurfaceTypeSchema,
15
+ OntologyValueTypeSchema,
16
+ compileOrganizationOntology,
17
+ formatOntologyId,
18
+ getOntologyDiagnostics,
19
+ isOntologyGraphNodeId,
20
+ listResolvedOntologyRecords,
21
+ ontologyGraphNodeId,
22
+ ontologyIdFromGraphNodeId,
23
+ parseOntologyId
24
+ } from './ontology'
10
25
  export {
11
- KNOWLEDGE_FEATURE_ID,
12
- PROJECTS_FEATURE_ID,
13
- PROJECTS_INDEX_SURFACE_ID,
14
- PROJECTS_VIEW_CAPABILITY_ID,
15
- SALES_FEATURE_ID,
16
- PROSPECTING_FEATURE_ID,
17
- OPERATIONS_FEATURE_ID,
18
- MONITORING_FEATURE_ID,
19
- SETTINGS_FEATURE_ID,
20
- SEO_FEATURE_ID,
21
- SALES_PIPELINE_SURFACE_ID,
22
- PROSPECTING_LISTS_SURFACE_ID,
23
- OPERATIONS_COMMAND_VIEW_SURFACE_ID,
24
- SETTINGS_ROLES_SURFACE_ID
25
- } from './contracts'
26
- export { DEFAULT_ORGANIZATION_MODEL } from './defaults'
27
- export {
28
- DEFAULT_ORGANIZATION_MODEL_STATUSES,
29
- StatusesDomainSchema,
30
- StatusEntrySchema,
31
- StatusSemanticClassSchema
32
- } from './domains/statuses'
33
- export {
34
- DEFAULT_ORGANIZATION_MODEL_OPERATIONS,
35
- OperationsDomainSchema,
36
- OperationEntrySchema,
37
- OperationSemanticClassSchema
38
- } from './domains/operations'
39
- export {
40
- DEFAULT_ORGANIZATION_MODEL_CUSTOMERS,
41
- CustomersDomainSchema,
42
- CustomerSegmentSchema,
43
- FirmographicsSchema
44
- } from './domains/customers'
45
- export {
46
- DEFAULT_ORGANIZATION_MODEL_OFFERINGS,
47
- OfferingsDomainSchema,
48
- ProductSchema,
49
- PricingModelSchema
50
- } from './domains/offerings'
51
- export {
52
- AgentRoleHolderSchema,
53
- DEFAULT_ORGANIZATION_MODEL_ROLES,
54
- HumanRoleHolderSchema,
55
- RoleHolderSchema,
56
- RoleHoldersSchema,
57
- RoleIdSchema,
58
- RolesDomainSchema,
59
- RoleSchema,
60
- TeamRoleHolderSchema
61
- } from './domains/roles'
62
- export { DEFAULT_ORGANIZATION_MODEL_GOALS, GoalsDomainSchema, ObjectiveSchema, KeyResultSchema } from './domains/goals'
63
- export {
64
- DEFAULT_ORGANIZATION_MODEL_SYSTEMS,
65
- SystemEntrySchema,
66
- SystemIdSchema,
67
- SystemKindSchema,
68
- SystemsDomainSchema,
69
- SystemStatusSchema
70
- } from './domains/systems'
71
- export {
72
- AgentKindSchema,
73
- AgentResourceEntrySchema,
74
- DEFAULT_ORGANIZATION_MODEL_RESOURCES,
75
- defineResource,
76
- defineResources,
77
- IntegrationResourceEntrySchema,
26
+ DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA,
27
+ OrganizationModelDomainKeySchema,
28
+ OrganizationModelDomainMetadataByDomainSchema,
29
+ OrganizationModelDomainMetadataSchema,
30
+ OrganizationModelSchema
31
+ } from './schema'
32
+ export { NodeIdPathSchema, NodeIdStringSchema, UiPositionSchema } from './domains/systems'
33
+ export { LinkSchema } from './graph/link'
34
+ export { IconNameSchema, TechStackEntrySchema } from './domains/shared'
35
+ export {
36
+ ORGANIZATION_MODEL_ICON_TOKENS,
37
+ OrganizationModelBuiltinIconTokenSchema,
38
+ OrganizationModelIconTokenSchema
39
+ } from './icons'
40
+ export {
41
+ KNOWLEDGE_FEATURE_ID,
42
+ KNOWLEDGE_SYSTEM_ID,
43
+ PROJECTS_FEATURE_ID,
44
+ PROJECTS_SYSTEM_ID,
45
+ PROJECTS_INDEX_SURFACE_ID,
46
+ PROJECTS_VIEW_ACTION_ID,
47
+ SALES_FEATURE_ID,
48
+ PROSPECTING_FEATURE_ID,
49
+ OPERATIONS_FEATURE_ID,
50
+ SALES_SYSTEM_ID,
51
+ PROSPECTING_SYSTEM_ID,
52
+ OPERATIONS_SYSTEM_ID,
53
+ MONITORING_FEATURE_ID,
54
+ MONITORING_SYSTEM_ID,
55
+ SETTINGS_FEATURE_ID,
56
+ SETTINGS_SYSTEM_ID,
57
+ SEO_FEATURE_ID,
58
+ SEO_SYSTEM_ID,
59
+ SALES_PIPELINE_SURFACE_ID,
60
+ PROSPECTING_LISTS_SURFACE_ID,
61
+ OPERATIONS_COMMAND_VIEW_SURFACE_ID,
62
+ SETTINGS_ROLES_SURFACE_ID
63
+ } from './contracts'
64
+ export { DEFAULT_ORGANIZATION_MODEL } from './defaults'
65
+ export {
66
+ DEFAULT_ORGANIZATION_MODEL_STATUSES,
67
+ StatusesDomainSchema,
68
+ StatusEntrySchema,
69
+ StatusSemanticClassSchema
70
+ } from './domains/statuses'
71
+ export {
72
+ DEFAULT_ORGANIZATION_MODEL_CUSTOMERS,
73
+ CustomersDomainSchema,
74
+ CustomerSegmentSchema,
75
+ FirmographicsSchema
76
+ } from './domains/customers'
77
+ export {
78
+ DEFAULT_ORGANIZATION_MODEL_OFFERINGS,
79
+ OfferingsDomainSchema,
80
+ ProductSchema,
81
+ PricingModelSchema
82
+ } from './domains/offerings'
83
+ export {
84
+ AgentRoleHolderSchema,
85
+ DEFAULT_ORGANIZATION_MODEL_ROLES,
86
+ HumanRoleHolderSchema,
87
+ RoleHolderSchema,
88
+ RoleHoldersSchema,
89
+ RoleIdSchema,
90
+ RolesDomainSchema,
91
+ RoleSchema,
92
+ TeamRoleHolderSchema
93
+ } from './domains/roles'
94
+ export { DEFAULT_ORGANIZATION_MODEL_GOALS, GoalsDomainSchema, ObjectiveSchema, KeyResultSchema } from './domains/goals'
95
+ export {
96
+ DEFAULT_ORGANIZATION_MODEL_SYSTEMS,
97
+ SystemEntrySchema,
98
+ SystemIdSchema,
99
+ SystemKindSchema,
100
+ SystemLifecycleSchema,
101
+ SystemPathSchema,
102
+ SystemUiSchema,
103
+ SystemsDomainSchema,
104
+ SystemStatusSchema
105
+ } from './domains/systems'
106
+ export {
107
+ AgentKindSchema,
108
+ AgentResourceEntrySchema,
109
+ CodeReferenceRoleSchema,
110
+ CodeReferenceSchema,
111
+ DEFAULT_ORGANIZATION_MODEL_RESOURCES,
112
+ defineResource,
113
+ defineResources,
114
+ EventDescriptorSchema,
115
+ EventEmissionDescriptorSchema,
116
+ EventIdSchema,
117
+ IntegrationResourceEntrySchema,
78
118
  ResourceEntrySchema,
79
119
  ResourceGovernanceStatusSchema,
80
120
  ResourceIdSchema,
81
121
  ResourceKindSchema,
122
+ ResourceOntologyBindingSchema,
82
123
  ResourcesDomainSchema,
83
- WorkflowResourceEntrySchema
84
- } from './domains/resources'
85
- export {
86
- KnowledgeDomainSchema,
87
- KnowledgeLinkSchema,
88
- OrgKnowledgeNodeSchema,
89
- OrgKnowledgeKindSchema
90
- } from './domains/knowledge'
91
- export { defineOrganizationModel, resolveOrganizationModel } from './resolve'
92
- export { createFoundationOrganizationModel } from './foundation'
124
+ ScriptResourceEntrySchema,
125
+ ScriptResourceLanguageSchema,
126
+ ScriptResourceSourceSchema,
127
+ WorkflowResourceEntrySchema
128
+ } from './domains/resources'
129
+ export {
130
+ ActionsDomainSchema,
131
+ ActionIdSchema,
132
+ ActionInvocationKindSchema,
133
+ ActionInvocationSchema,
134
+ ActionRefSchema,
135
+ ActionSchema,
136
+ ActionScopeSchema,
137
+ ApiEndpointInvocationSchema,
138
+ CRM_ACTION_ENTRIES,
139
+ DEFAULT_ORGANIZATION_MODEL_ACTIONS,
140
+ findOrganizationActionById,
141
+ LEAD_GEN_ACTION_ENTRIES,
142
+ McpToolInvocationSchema,
143
+ ScriptExecutionInvocationSchema,
144
+ SlashCommandInvocationSchema
145
+ } from './domains/actions'
146
+ export {
147
+ DEFAULT_ORGANIZATION_MODEL_ENTITIES,
148
+ EntitiesDomainSchema,
149
+ EntityIdSchema,
150
+ EntityLinkKindSchema,
151
+ EntityLinkSchema,
152
+ EntitySchema
153
+ } from './domains/entities'
154
+ export {
155
+ DEFAULT_ORGANIZATION_MODEL_POLICIES,
156
+ PoliciesDomainSchema,
157
+ PolicyEffectSchema,
158
+ PolicyApplicabilitySchema,
159
+ PolicyIdSchema,
160
+ PolicyPredicateSchema,
161
+ PolicySchema,
162
+ PolicyTriggerSchema
163
+ } from './domains/policies'
164
+ export { LEAD_GEN_STAGE_CATALOG } from './catalogs/lead-gen'
165
+ export {
166
+ DEFAULT_ORGANIZATION_MODEL_NAVIGATION,
167
+ getSortedSidebarEntries,
168
+ NavigationGroupSchema,
169
+ OrganizationModelNavigationSchema,
170
+ SidebarNavigationSchema,
171
+ SidebarNodeSchema,
172
+ SidebarSectionSchema,
173
+ SidebarSurfaceTargetsSchema,
174
+ SurfaceDefinitionSchema,
175
+ SurfaceTypeSchema
176
+ } from './domains/navigation'
177
+ export {
178
+ KnowledgeDomainSchema,
179
+ KnowledgeLinkSchema,
180
+ KnowledgeTargetKindSchema,
181
+ KnowledgeTargetRefSchema,
182
+ OrgKnowledgeNodeSchema,
183
+ OrgKnowledgeKindSchema
184
+ } from './domains/knowledge'
185
+ export { defineOrganizationModel, resolveOrganizationModel, resolveOrganizationModelWithResources } from './resolve'
186
+ export type { ResolvedSystemEntry, ResolvedOrganizationModel } from './resolve'
187
+ export { createFoundationOrganizationModel } from './foundation'
188
+
189
+ export type {
190
+ OntologyActionType,
191
+ OntologyCatalogType,
192
+ OntologyCompilation,
193
+ OntologyDiagnostic,
194
+ OntologyEventType,
195
+ OntologyGroup,
196
+ OntologyId,
197
+ OntologyInterfaceType,
198
+ OntologyKind,
199
+ OntologyLinkType,
200
+ OntologyObjectType,
201
+ OntologyRecordOrigin,
202
+ OntologyScope,
203
+ OntologySharedProperty,
204
+ OntologySurfaceType,
205
+ OntologyValueType,
206
+ ParsedOntologyId,
207
+ ResolvedOntologyIndex,
208
+ ResolvedOntologyRecord,
209
+ ResolvedOntologyRecordEntry
210
+ } from './ontology'
93
211
 
94
212
  export type {
95
213
  DeepPartial,
96
- OrganizationModel,
97
- OrganizationModelBranding,
98
- OrganizationModelSales,
99
- OrganizationModelProspecting,
100
- OrganizationModelProjects,
101
- OrganizationModelCustomerFirmographics,
102
- OrganizationModelCustomers,
103
- OrganizationModelCustomerSegment,
104
- OrganizationModelFeature,
105
- OrganizationModelGoals,
106
- OrganizationModelKeyResult,
107
- OrganizationModelObjective,
108
- OrganizationModelSystemEntry,
109
- OrganizationModelSystemId,
110
- OrganizationModelSystemKind,
111
- OrganizationModelSystems,
112
- OrganizationModelSystemStatus,
113
- OrganizationModelAgentKind,
114
- OrganizationModelAgentResourceEntry,
115
- OrganizationModelIntegrationResourceEntry,
116
- OrganizationModelResourceEntry,
214
+ KnowledgeLink,
215
+ KnowledgeTargetKind,
216
+ KnowledgeTargetRef,
217
+ OrganizationModel,
218
+ OrganizationModelBranding,
219
+ OrganizationModelCustomerFirmographics,
220
+ OrganizationModelCustomers,
221
+ OrganizationModelCustomerSegment,
222
+ OrganizationModelGoals,
223
+ OrganizationModelNavigation,
224
+ OrganizationModelSidebar,
225
+ OrganizationModelSidebarGroupNode,
226
+ OrganizationModelSidebarNode,
227
+ OrganizationModelSidebarSection,
228
+ OrganizationModelSidebarSurfaceNode,
229
+ OrganizationModelSidebarSurfaceTargets,
230
+ OrganizationModelKeyResult,
231
+ OrganizationModelObjective,
232
+ OrganizationModelSystemEntry,
233
+ OrganizationModelSystemId,
234
+ OrganizationModelSystemKind,
235
+ OrganizationModelSystemLifecycle,
236
+ OrganizationModelSystems,
237
+ OrganizationModelSystemStatus,
238
+ OrganizationModelAgentKind,
239
+ OrganizationModelAgentResourceEntry,
240
+ EventDescriptor,
241
+ EventEmissionDescriptor,
242
+ EventId,
243
+ OrganizationModelIntegrationResourceEntry,
244
+ OrganizationModelResourceEntry,
245
+ OrganizationModelCodeReference,
246
+ OrganizationModelCodeReferenceRole,
117
247
  OrganizationModelResourceGovernanceStatus,
118
248
  OrganizationModelResourceId,
119
249
  OrganizationModelResourceKind,
250
+ OrganizationModelResourceOntologyBinding,
120
251
  OrganizationModelResources,
121
- OrganizationModelWorkflowResourceEntry,
122
- OrganizationModelOfferings,
123
- OrganizationModelOperationEntry,
124
- OrganizationModelOperationSemanticClass,
125
- OrganizationModelOperations,
126
- OrganizationModelPricingModel,
127
- OrganizationModelProduct,
128
- OrganizationModelRole,
129
- OrganizationModelAgentRoleHolder,
130
- OrganizationModelHumanRoleHolder,
131
- OrganizationModelRoleHolder,
132
- OrganizationModelRoleId,
133
- OrganizationModelTechStackEntry,
134
- OrganizationModelTeamRoleHolder,
135
- OrganizationModelRoles,
136
- OrganizationModelStatuses,
137
- OrganizationModelStatusEntry,
138
- OrganizationModelStatusSemanticClass,
139
- NodeIdPath,
140
- NodeIdString,
141
- OrganizationModelKnowledge,
142
- OrgKnowledgeNode,
143
- OrgKnowledgeKind,
144
- OrganizationModelIconToken,
145
- OrganizationModelBuiltinIconToken
252
+ OrganizationModelScriptResourceEntry,
253
+ OrganizationModelScriptResourceLanguage,
254
+ OrganizationModelScriptResourceSource,
255
+ OrganizationModelWorkflowResourceEntry,
256
+ OrganizationModelActions,
257
+ OrganizationModelAction,
258
+ OrganizationModelActionId,
259
+ OrganizationModelActionInvocation,
260
+ OrganizationModelActionInvocationKind,
261
+ OrganizationModelActionRef,
262
+ OrganizationModelActionScope,
263
+ Entity,
264
+ EntityId,
265
+ EntityLink,
266
+ OrganizationModelEntities,
267
+ OrganizationModelEntity,
268
+ OrganizationModelPolicies,
269
+ OrganizationModelPolicy,
270
+ OrganizationModelPolicyEffect,
271
+ OrganizationModelPolicyApplicability,
272
+ OrganizationModelPolicyId,
273
+ OrganizationModelPolicyPredicate,
274
+ OrganizationModelPolicyTrigger,
275
+ OrganizationModelOfferings,
276
+ OrganizationModelPricingModel,
277
+ OrganizationModelProduct,
278
+ OrganizationModelRole,
279
+ OrganizationModelAgentRoleHolder,
280
+ OrganizationModelHumanRoleHolder,
281
+ OrganizationModelRoleHolder,
282
+ OrganizationModelRoleId,
283
+ OrganizationModelTechStackEntry,
284
+ OrganizationModelTeamRoleHolder,
285
+ OrganizationModelRoles,
286
+ OrganizationModelStatuses,
287
+ OrganizationModelStatusEntry,
288
+ OrganizationModelStatusSemanticClass,
289
+ NodeIdPath,
290
+ NodeIdString,
291
+ OrganizationModelKnowledge,
292
+ OrgKnowledgeNode,
293
+ OrgKnowledgeNodeInput,
294
+ OrgKnowledgeKind,
295
+ OrganizationModelIconToken,
296
+ OrganizationModelBuiltinIconToken,
297
+ OrganizationModelDomainKey,
298
+ OrganizationModelDomainMetadata,
299
+ OrganizationModelDomainMetadataByDomain
146
300
  } from './types'
147
-
148
- export type {
149
- FoundationBranding,
150
- FoundationNavigationSurface,
151
- FoundationOrganizationModel,
152
- FoundationSurfaceIcon,
153
- FoundationSurfaceType
154
- } from './foundation'
301
+
302
+ export type { LeadGenStageCatalogEntry } from './catalogs/lead-gen'
303
+
304
+ export type {
305
+ FoundationBranding,
306
+ FoundationNavigationSurface,
307
+ FoundationOrganizationModel,
308
+ FoundationSurfaceIcon,
309
+ FoundationSurfaceType
310
+ } from './foundation'
@@ -1,12 +1,84 @@
1
1
  import { DEFAULT_ORGANIZATION_MODEL } from './defaults'
2
+ import { listAllSystems, resolveSystemConfig } from './helpers'
2
3
  import { OrganizationModelSchema } from './schema'
3
- import type { DeepPartial, OrganizationModel } from './types'
4
+ import type { DeepPartial, OrganizationModel, OrganizationModelSystemEntry } from './types'
5
+ import type { ResourceEntry } from './domains/resources'
4
6
 
5
- function isPlainObject(value: unknown): value is Record<string, unknown> {
6
- return typeof value === 'object' && value !== null && !Array.isArray(value)
7
+ /**
8
+ * A system entry enriched with the list of resources that directly attach to
9
+ * this system (i.e. `resource.systemPath` exactly matches the system's path).
10
+ *
11
+ * Descendant rollup is NOT included here — callers that need it should use
12
+ * `getResourcesForSystem(model, path, { includeDescendants: true })` from helpers.
13
+ */
14
+ export type ResolvedSystemEntry = OrganizationModelSystemEntry & {
15
+ /** Resources whose `systemPath` exactly matches this system's path. */
16
+ resources?: ResourceEntry[]
7
17
  }
8
18
 
9
- function deepMerge<T>(base: T, override: DeepPartial<T> | undefined): T {
19
+ /**
20
+ * An `OrganizationModel` where every flat-system entry in `systems` has been
21
+ * enriched with its directly-attached `resources`.
22
+ *
23
+ * Produced by `resolveOrganizationModelWithResources`. The flat `systems` map
24
+ * only covers top-level keys (same shape as `OrganizationModel.systems`);
25
+ * hierarchical walk uses `listAllSystems` from helpers.
26
+ */
27
+ export type ResolvedOrganizationModel = Omit<OrganizationModel, 'systems'> & {
28
+ systems: Record<string, ResolvedSystemEntry>
29
+ }
30
+
31
+ export type ResolveOrganizationModelOptions = {
32
+ /**
33
+ * Tenant-style overrides merge against the generic default fixture by
34
+ * default. Full canonical models can disable that merge to avoid inheriting
35
+ * fixture-only Systems.
36
+ */
37
+ mergeDefaults?: boolean
38
+ }
39
+
40
+ function isPlainObject(value: unknown): value is Record<string, unknown> {
41
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
42
+ }
43
+
44
+ function collectNestedSystemPaths(systems: Record<string, unknown>, prefix = ''): Set<string> {
45
+ const paths = new Set<string>()
46
+
47
+ for (const [key, value] of Object.entries(systems)) {
48
+ if (!isPlainObject(value)) continue
49
+
50
+ const path = prefix ? `${prefix}.${key}` : key
51
+ for (const childKey of ['systems', 'subsystems']) {
52
+ const childSystems = value[childKey]
53
+ if (!isPlainObject(childSystems)) continue
54
+
55
+ for (const childPath of collectNestedSystemPaths(childSystems, path)) {
56
+ paths.add(childPath)
57
+ }
58
+ }
59
+
60
+ if (prefix !== '') {
61
+ paths.add(path)
62
+ }
63
+ }
64
+
65
+ return paths
66
+ }
67
+
68
+ function pruneFlatSystemDescendantCollisions(
69
+ base: Record<string, unknown>,
70
+ override: Record<string, unknown>
71
+ ): Record<string, unknown> {
72
+ const result: Record<string, unknown> = { ...base }
73
+
74
+ for (const nestedPath of collectNestedSystemPaths(override)) {
75
+ delete result[nestedPath]
76
+ }
77
+
78
+ return result
79
+ }
80
+
81
+ function deepMerge<T>(base: T, override: DeepPartial<T> | undefined): T {
10
82
  if (override === undefined) {
11
83
  return base
12
84
  }
@@ -22,11 +94,16 @@ function deepMerge<T>(base: T, override: DeepPartial<T> | undefined): T {
22
94
  const result: Record<string, unknown> = { ...base }
23
95
 
24
96
  for (const [key, value] of Object.entries(override)) {
25
- if (value === undefined) continue
26
-
27
- const existing = result[key]
28
- result[key] = isPlainObject(existing) && isPlainObject(value) ? deepMerge(existing, value) : value
29
- }
97
+ if (value === undefined) continue
98
+
99
+ const existing = result[key]
100
+ if (key === 'systems' && isPlainObject(existing) && isPlainObject(value)) {
101
+ result[key] = deepMerge(pruneFlatSystemDescendantCollisions(existing, value), value)
102
+ continue
103
+ }
104
+
105
+ result[key] = isPlainObject(existing) && isPlainObject(value) ? deepMerge(existing, value) : value
106
+ }
30
107
 
31
108
  return result as T
32
109
  }
@@ -35,20 +112,61 @@ export function defineOrganizationModel<T extends DeepPartial<OrganizationModel>
35
112
  return model
36
113
  }
37
114
 
38
- export function resolveOrganizationModel(
115
+ export function resolveOrganizationModel(
116
+ override?: DeepPartial<OrganizationModel>,
117
+ organizationIdOrOptions?: string | ResolveOrganizationModelOptions,
118
+ options?: ResolveOrganizationModelOptions
119
+ ): OrganizationModel {
120
+ const resolvedOptions = typeof organizationIdOrOptions === 'object' ? organizationIdOrOptions : options
121
+ const mergeDefaults = resolvedOptions?.mergeDefaults ?? true
122
+ const merged = mergeDefaults ? deepMerge(DEFAULT_ORGANIZATION_MODEL, override) : (override ?? {})
123
+ // Phase 4: compound-domain sanity gate for model.sales?.pipelines removed.
124
+ // Pipeline data now lives in system.content; use getAllPipelines(model) from
125
+ // migration-helpers to check pipeline presence when needed.
126
+ return OrganizationModelSchema.parse(merged)
127
+ }
128
+
129
+ /**
130
+ * Resolve the organization model and enrich each flat system entry in
131
+ * `model.systems` with the list of resources whose `systemPath` exactly
132
+ * matches that system's flat key.
133
+ *
134
+ * This is a pure additive view — no schema is changed. Descendant resource
135
+ * rollup is intentionally excluded; consumers that need it can call
136
+ * `getResourcesForSystem(model, path, { includeDescendants: true })`.
137
+ *
138
+ * @example
139
+ * const resolved = resolveOrganizationModelWithResources(override)
140
+ * resolved.systems['sys.lead-gen']?.resources
141
+ * // → ResourceEntry[] | undefined
142
+ */
143
+ export function resolveOrganizationModelWithResources(
39
144
  override?: DeepPartial<OrganizationModel>,
40
145
  organizationId?: string
41
- ): OrganizationModel {
42
- const merged = deepMerge(DEFAULT_ORGANIZATION_MODEL, override)
43
- const model = OrganizationModelSchema.parse(merged)
44
-
45
- if (!model.sales?.pipelines || model.sales.pipelines.length === 0) {
46
- const orgLabel = organizationId ? `Organization ${organizationId}` : 'Organization'
47
- throw new Error(
48
- `${orgLabel} has no sales pipeline configuration. ` +
49
- `This indicates an incomplete provisioning state. Run org provisioning to seed defaults.`
50
- )
146
+ ): ResolvedOrganizationModel {
147
+ const model = resolveOrganizationModel(override, organizationId)
148
+
149
+ // Build a path → resource[] index from the flat resources map.
150
+ // Only direct system-path matches (no descendant rollup).
151
+ const byPath = new Map<string, ResourceEntry[]>()
152
+ for (const resource of Object.values(model.resources ?? {})) {
153
+ const existing = byPath.get(resource.systemPath)
154
+ if (existing) {
155
+ existing.push(resource)
156
+ } else {
157
+ byPath.set(resource.systemPath, [resource])
158
+ }
51
159
  }
52
160
 
53
- return model
161
+ // Enrich every system entry, including nested subsystems, with directly
162
+ // attached resources keyed by computed system path.
163
+ const enrichedSystems: Record<string, ResolvedSystemEntry> = {}
164
+ for (const { path, system } of listAllSystems(model)) {
165
+ const resources = byPath.get(path) ?? byPath.get(system.id)
166
+ const config = resolveSystemConfig(model, path)
167
+ enrichedSystems[path] =
168
+ resources !== undefined ? { ...system, id: path, config, resources } : { ...system, id: path, config }
169
+ }
170
+
171
+ return { ...model, systems: enrichedSystems }
54
172
  }