@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,80 +1,80 @@
1
- import { z } from 'zod'
2
- import { NonEmptyStringSchema } from '../../platform/utils/validation'
3
-
4
- /**
5
- * Activity Log API Validation Schemas
6
- *
7
- * Zod schemas for Activity Log endpoints with security controls:
8
- * - Mass assignment prevention (.strict() mode)
9
- * - Size limits (title: 200 chars, description: 1000 chars)
10
- * - Enum validation (activityType, status)
11
- * - Metadata size limits (50KB)
12
- */
13
-
14
- // Activity type enum
15
- export const ActivityTypeSchema = z.enum([
16
- 'workflow_execution',
17
- 'agent_run',
18
- 'hitl_action',
19
- 'webhook_received',
20
- 'webhook_executed',
21
- 'webhook_failed',
22
- 'credential_change',
23
- 'credential_read',
24
- 'api_key_change',
25
- 'deployment_change',
26
- 'membership_change'
27
- ])
28
-
29
- // Activity status enum
30
- export const ActivityStatusSchema = z.enum(['success', 'failure', 'pending', 'approved', 'rejected', 'completed'])
31
-
32
- // Metadata schema with size limit (50KB)
33
- const MetadataSchema = z
34
- .record(z.string(), z.unknown())
35
- .refine((val) => JSON.stringify(val).length <= 50_000, 'Metadata exceeds 50KB limit')
36
- .optional()
37
-
38
- // POST /api/activities - Create activity
39
- export const CreateActivitySchema = z
40
- .object({
41
- activityType: ActivityTypeSchema,
42
- status: ActivityStatusSchema,
43
- title: NonEmptyStringSchema.max(200),
44
- description: z.string().max(1000).optional(),
45
- entityType: NonEmptyStringSchema.max(100),
46
- entityId: NonEmptyStringSchema.max(255),
47
- entityName: z.string().max(255).optional(),
48
- metadata: MetadataSchema,
49
- occurredAt: z.string().datetime().optional(),
50
- actorId: z.string().uuid().optional(),
51
- actorType: z.enum(['user', 'system', 'api_key']).optional()
52
- // NO organizationId (always from JWT/API key context)
53
- })
54
- .strict()
55
-
56
- // GET /api/activities/trend - Activity trend timestamps query params
57
- export const ActivityTrendQuerySchema = z
58
- .object({
59
- activityType: ActivityTypeSchema.optional(),
60
- entityType: z.string().max(100).optional(),
61
- entityId: z.string().max(255).optional(),
62
- startDate: z.string().datetime().optional(),
63
- endDate: z.string().datetime().optional()
64
- })
65
- .strict()
66
-
67
- // GET /api/activities - List activities query params
68
- export const ListActivitiesQuerySchema = z
69
- .object({
70
- limit: z.coerce.number().int().min(1).max(100).default(50),
71
- offset: z.coerce.number().int().min(0).default(0),
72
- activityType: ActivityTypeSchema.optional(),
73
- entityType: z.string().max(100).optional(),
74
- entityId: z.string().max(255).optional(),
75
- startDate: z.string().datetime().optional(),
76
- endDate: z.string().datetime().optional(),
77
- status: ActivityStatusSchema.optional(),
78
- search: z.string().max(200).optional()
79
- })
80
- .strict()
1
+ import { z } from 'zod'
2
+ import { NonEmptyStringSchema } from '../../platform/utils/validation'
3
+
4
+ /**
5
+ * Activity Log API Validation Schemas
6
+ *
7
+ * Zod schemas for Activity Log endpoints with security controls:
8
+ * - Mass assignment prevention (.strict() mode)
9
+ * - Size limits (title: 200 chars, description: 1000 chars)
10
+ * - Enum validation (activityType, status)
11
+ * - Metadata size limits (50KB)
12
+ */
13
+
14
+ // Activity type enum
15
+ export const ActivityTypeSchema = z.enum([
16
+ 'workflow_execution',
17
+ 'agent_run',
18
+ 'hitl_action',
19
+ 'webhook_received',
20
+ 'webhook_executed',
21
+ 'webhook_failed',
22
+ 'credential_change',
23
+ 'credential_read',
24
+ 'api_key_change',
25
+ 'deployment_change',
26
+ 'membership_change'
27
+ ])
28
+
29
+ // Activity status enum
30
+ export const ActivityStatusSchema = z.enum(['success', 'failure', 'pending', 'approved', 'rejected', 'completed'])
31
+
32
+ // Metadata schema with size limit (50KB)
33
+ const MetadataSchema = z
34
+ .record(z.string(), z.unknown())
35
+ .refine((val) => JSON.stringify(val).length <= 50_000, 'Metadata exceeds 50KB limit')
36
+ .optional()
37
+
38
+ // POST /api/activities - Create activity
39
+ export const CreateActivitySchema = z
40
+ .object({
41
+ activityType: ActivityTypeSchema,
42
+ status: ActivityStatusSchema,
43
+ title: NonEmptyStringSchema.max(200),
44
+ description: z.string().max(1000).optional(),
45
+ entityType: NonEmptyStringSchema.max(100),
46
+ entityId: NonEmptyStringSchema.max(255),
47
+ entityName: z.string().max(255).optional(),
48
+ metadata: MetadataSchema,
49
+ occurredAt: z.string().datetime().optional(),
50
+ actorId: z.string().uuid().optional(),
51
+ actorType: z.enum(['user', 'system', 'api_key']).optional()
52
+ // NO organizationId (always from JWT/API key context)
53
+ })
54
+ .strict()
55
+
56
+ // GET /api/activities/trend - Activity trend timestamps query params
57
+ export const ActivityTrendQuerySchema = z
58
+ .object({
59
+ activityType: ActivityTypeSchema.optional(),
60
+ entityType: z.string().max(100).optional(),
61
+ entityId: z.string().max(255).optional(),
62
+ startDate: z.string().datetime().optional(),
63
+ endDate: z.string().datetime().optional()
64
+ })
65
+ .strict()
66
+
67
+ // GET /api/activities - List activities query params
68
+ export const ListActivitiesQuerySchema = z
69
+ .object({
70
+ limit: z.coerce.number().int().min(1).max(100).default(50),
71
+ offset: z.coerce.number().int().min(0).default(0),
72
+ activityType: ActivityTypeSchema.optional(),
73
+ entityType: z.string().max(100).optional(),
74
+ entityId: z.string().max(255).optional(),
75
+ startDate: z.string().datetime().optional(),
76
+ endDate: z.string().datetime().optional(),
77
+ status: ActivityStatusSchema.optional(),
78
+ search: z.string().max(200).optional()
79
+ })
80
+ .strict()
@@ -1,64 +1,64 @@
1
- import type { Database } from '../../supabase/database.types'
2
-
3
- export type ActivityRow = Database['public']['Tables']['activities']['Row']
4
- export type ActivityInsert = Database['public']['Tables']['activities']['Insert']
5
-
6
- export type ActivityType =
7
- | 'workflow_execution'
8
- | 'agent_run'
9
- | 'hitl_action'
10
- | 'webhook_received'
11
- | 'webhook_executed'
12
- | 'webhook_failed'
13
- | 'credential_change'
14
- | 'credential_read'
15
- | 'api_key_change'
16
- | 'deployment_change'
17
- | 'membership_change'
18
-
19
- export type ActivityStatus = 'success' | 'failure' | 'pending' | 'approved' | 'rejected' | 'completed'
20
-
21
- export interface Activity {
22
- id: string
23
- organizationId: string
24
- activityType: ActivityType
25
- status: ActivityStatus
26
- title: string
27
- description: string | null
28
- entityType: string
29
- entityId: string
30
- entityName: string | null
31
- metadata: Record<string, unknown> | null
32
- actorId: string | null
33
- actorType: string | null
34
- occurredAt: Date
35
- createdAt: Date
36
- }
37
-
38
- export interface CreateActivityParams {
39
- organizationId: string
40
- activityType: ActivityType
41
- status: ActivityStatus
42
- title: string
43
- description?: string
44
- entityType: string
45
- entityId: string
46
- entityName?: string
47
- metadata?: Record<string, unknown>
48
- actorId?: string
49
- actorType?: string
50
- occurredAt?: Date
51
- }
52
-
53
- export interface ListActivitiesParams {
54
- organizationId: string
55
- limit?: number
56
- offset?: number
57
- activityType?: ActivityType
58
- entityType?: string
59
- entityId?: string
60
- startDate?: string
61
- endDate?: string
62
- status?: string
63
- search?: string
64
- }
1
+ import type { Database } from '../../supabase/database.types'
2
+
3
+ export type ActivityRow = Database['public']['Tables']['activities']['Row']
4
+ export type ActivityInsert = Database['public']['Tables']['activities']['Insert']
5
+
6
+ export type ActivityType =
7
+ | 'workflow_execution'
8
+ | 'agent_run'
9
+ | 'hitl_action'
10
+ | 'webhook_received'
11
+ | 'webhook_executed'
12
+ | 'webhook_failed'
13
+ | 'credential_change'
14
+ | 'credential_read'
15
+ | 'api_key_change'
16
+ | 'deployment_change'
17
+ | 'membership_change'
18
+
19
+ export type ActivityStatus = 'success' | 'failure' | 'pending' | 'approved' | 'rejected' | 'completed'
20
+
21
+ export interface Activity {
22
+ id: string
23
+ organizationId: string
24
+ activityType: ActivityType
25
+ status: ActivityStatus
26
+ title: string
27
+ description: string | null
28
+ entityType: string
29
+ entityId: string
30
+ entityName: string | null
31
+ metadata: Record<string, unknown> | null
32
+ actorId: string | null
33
+ actorType: string | null
34
+ occurredAt: Date
35
+ createdAt: Date
36
+ }
37
+
38
+ export interface CreateActivityParams {
39
+ organizationId: string
40
+ activityType: ActivityType
41
+ status: ActivityStatus
42
+ title: string
43
+ description?: string
44
+ entityType: string
45
+ entityId: string
46
+ entityName?: string
47
+ metadata?: Record<string, unknown>
48
+ actorId?: string
49
+ actorType?: string
50
+ occurredAt?: Date
51
+ }
52
+
53
+ export interface ListActivitiesParams {
54
+ organizationId: string
55
+ limit?: number
56
+ offset?: number
57
+ activityType?: ActivityType
58
+ entityType?: string
59
+ entityId?: string
60
+ startDate?: string
61
+ endDate?: string
62
+ status?: string
63
+ search?: string
64
+ }
@@ -1,109 +1,149 @@
1
- # Organization Model
2
-
3
- The organization model is the published semantic contract that maps a tenant's product shape to flat feature hierarchy, shell navigation, business semantics, and graph bindings.
4
-
5
- Use this module when resolving or validating an organization's contract before wiring UI shells, routing, feature gates, or domain-specific capability checks.
6
-
7
- ## Published Exports
8
-
9
- The public entry point exposes:
10
-
11
- - `OrganizationModelSchema`
12
- - `FeatureSchema`
13
- - `DEFAULT_ORGANIZATION_MODEL`
14
- - `defineOrganizationModel`
15
- - `resolveOrganizationModel`
16
- - `createFoundationOrganizationModel`
17
- - node ID and feature helper types
18
- - `OrganizationModel` and supporting domain types
19
-
20
- Import it from the published subpath:
21
-
22
- ```ts
23
- import {
24
- DEFAULT_ORGANIZATION_MODEL,
25
- createFoundationOrganizationModel,
26
- defineOrganizationModel,
27
- resolveOrganizationModel,
28
- type OrganizationModel
29
- } from '@elevasis/core/organization-model'
30
- ```
31
-
32
- ## Contract Shape
33
-
34
- The model is versioned and currently validates against `version: 1`.
35
-
36
- Top-level fields:
37
-
38
- - `version`
39
- - `branding`
40
- - `features`
41
- - `navigation`
42
- - `sales`
43
- - `prospecting`
44
- - `projects`
45
- - `identity`
46
- - `customers`
47
- - `offerings`
48
- - `roles`
49
- - `goals`
50
- - `systems`
51
- - `resources`
52
- - `statuses`
53
- - `operations`
54
- - `knowledge`
55
-
56
- Resource identity is authored in `resources.entries`. Runtime workflows, agents, and integrations import those descriptors, derive `resourceId` and kind from them, and attach executable behavior in operations code.
57
-
58
- ## Feature Set
59
-
60
- Feature hierarchy is authored as a flat array. Dotted IDs define parent/child relationships:
61
-
62
- ```ts
63
- features: [
64
- { id: 'dashboard', label: 'Dashboard', enabled: true, path: '/', uiPosition: 'sidebar-primary' },
65
- { id: 'sales', label: 'Sales', enabled: true, uiPosition: 'sidebar-primary' },
66
- { id: 'sales.crm', label: 'CRM', enabled: true, path: '/crm' },
67
- { id: 'operations.resources', label: 'Resources', enabled: true, path: '/operations/resources' }
68
- ]
69
- ```
70
-
71
- Containers omit `path`; leaves provide `path`. `uiPosition`, `requiresAdmin`, and `devOnly` inherit from ancestors.
72
- Development-only features remain in the contract with `enabled: true` and `devOnly: true`; shell consumers hide them and guard their paths outside development mode.
73
-
74
- ## Graph IDs
75
-
76
- Cross-collection links use kind-prefixed IDs:
77
-
78
- - `feature:sales.crm`
79
- - `integration:instantly`
80
- - `resource:lead-import`
81
- - `capability:operations.queue.review`
82
-
83
- ## Resource Descriptors
84
-
85
- The OM Resources domain is governance-only. Descriptors declare canonical `id`, required `systemId`, governance `status`, and optional role ownership. `DeploymentSpec` remains the runtime/deploy assembly around those descriptors, not a second resource identity catalog.
86
-
87
- ## Resolution Semantics
88
-
89
- - `defineOrganizationModel()` is a typed helper.
90
- - `resolveOrganizationModel()` deep-merges a partial override into the default model, then validates it.
91
- - `createFoundationOrganizationModel()` resolves the canonical model and returns UI-facing helper outputs.
92
- - Plain objects merge recursively.
93
- - Arrays replace the default value.
94
- - Missing fields fall back to `DEFAULT_ORGANIZATION_MODEL`.
95
-
96
- ## Referential Integrity
97
-
98
- - Feature IDs must be unique.
99
- - Child feature IDs require ancestor feature nodes.
100
- - Container features omit `path`.
101
- - Leaf features provide `path`.
102
- - Systems, resources, roles, knowledge nodes, and goals must resolve their declared cross-references.
103
-
104
- ## Practical Guidance
105
-
106
- - Use `resolveOrganizationModel()` when you need a runtime-safe model.
107
- - Use `defineOrganizationModel()` when authoring static overrides.
108
- - Keep feature IDs stable because shell routing, gating, breadcrumbs, and docs depend on them.
109
- - Put resource identity and governance in `resources.entries`; attach executable behavior in operations.
1
+ # Organization Model
2
+
3
+ The organization model is the published semantic contract that maps a tenant's System hierarchy, shell navigation, business semantics, resource governance, and graph bindings.
4
+
5
+ Use this module when resolving or validating an organization's contract before wiring UI shells, routing, system gates, or domain-specific capability checks.
6
+
7
+ ## Published Exports
8
+
9
+ The public entry point exposes:
10
+
11
+ - `OrganizationModelSchema`
12
+ - `DEFAULT_ORGANIZATION_MODEL`
13
+ - `defineOrganizationModel`
14
+ - `resolveOrganizationModel`
15
+ - `createFoundationOrganizationModel`
16
+ - node ID and System helper types
17
+ - `OrganizationModel` and supporting domain types
18
+
19
+ Import it from the published subpath:
20
+
21
+ ```ts
22
+ import {
23
+ DEFAULT_ORGANIZATION_MODEL,
24
+ createFoundationOrganizationModel,
25
+ defineOrganizationModel,
26
+ resolveOrganizationModel,
27
+ type OrganizationModel
28
+ } from '@elevasis/core/organization-model'
29
+ ```
30
+
31
+ ## Contract Shape
32
+
33
+ The model is versioned and currently validates against `version: 1`.
34
+
35
+ Top-level fields:
36
+
37
+ - `version`
38
+ - `domainMetadata`
39
+ - `branding`
40
+ - `navigation`
41
+ - `sales`
42
+ - `prospecting`
43
+ - `projects`
44
+ - `identity`
45
+ - `customers`
46
+ - `offerings`
47
+ - `roles`
48
+ - `goals`
49
+ - `systems`
50
+ - `resources`
51
+ - `capabilities`
52
+ - `policies`
53
+ - `statuses`
54
+ - `knowledge`
55
+
56
+ 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.
57
+
58
+ Resource identity is authored in `resources`. Runtime workflows, agents, integrations, and scripts import those descriptors, derive `resourceId` and kind from them, and attach executable behavior in operations code.
59
+
60
+ ## System Set
61
+
62
+ System hierarchy is authored as an id-keyed `systems` map. Dotted IDs and `parentSystemId` define parent/child relationships:
63
+
64
+ ```ts
65
+ systems: {
66
+ dashboard: { id: 'dashboard', order: 10, label: 'Dashboard', lifecycle: 'active' },
67
+ sales: { id: 'sales', order: 20, label: 'Sales', lifecycle: 'active' },
68
+ clients: { id: 'clients', order: 30, label: 'Clients', lifecycle: 'active' },
69
+ projects: { id: 'projects', order: 40, label: 'Projects', lifecycle: 'active' }
70
+ }
71
+ ```
72
+
73
+ Systems describe semantic ownership, hierarchy, lifecycle, access, and governance. Sidebar presentation is authored separately under `navigation.sidebar`; UI-backed Systems may still provide `ui.path` for route matching during the migration, but they do not author composed surface lists. Lifecycle values such as `active`, `beta`, `deprecated`, and `archived` replace the old feature enabled/dev-only split.
74
+
75
+ ## Sidebar Navigation
76
+
77
+ Shell navigation is authored as a recursive sidebar tree:
78
+
79
+ ```ts
80
+ navigation: {
81
+ sidebar: {
82
+ primary: {
83
+ dashboard: {
84
+ type: 'surface',
85
+ order: 10,
86
+ label: 'Dashboard',
87
+ path: '/',
88
+ surfaceType: 'dashboard',
89
+ targets: { systems: ['dashboard'] }
90
+ },
91
+ business: {
92
+ type: 'group',
93
+ order: 20,
94
+ label: 'Business',
95
+ children: {
96
+ clients: {
97
+ type: 'surface',
98
+ order: 20,
99
+ label: 'Clients',
100
+ path: '/clients',
101
+ surfaceType: 'list',
102
+ targets: { systems: ['clients'] }
103
+ }
104
+ }
105
+ }
106
+ },
107
+ bottom: {}
108
+ }
109
+ }
110
+ ```
111
+
112
+ Routeable sidebar leaves are projected into flat semantic surface DTOs by `projectOrganizationSurfaces(model)`. Do not author top-level `surfaces` or `navigationGroups` fields on `OrganizationModel`.
113
+
114
+ ## Graph IDs
115
+
116
+ Cross-collection links use kind-prefixed IDs:
117
+
118
+ - `system:sales.crm`
119
+ - `integration:instantly`
120
+ - `resource:lead-import`
121
+ - `action:operations.queue.review`
122
+
123
+ ## Resource Descriptors
124
+
125
+ The OM Resources domain is governance-only. Descriptors declare canonical `id`, required `systemPath`, governance `status`, and optional role ownership. `DeploymentSpec` remains the runtime/deploy assembly around those descriptors, not a second resource identity catalog.
126
+
127
+ ## Resolution Semantics
128
+
129
+ - `defineOrganizationModel()` is a typed helper.
130
+ - `resolveOrganizationModel()` deep-merges a partial override into the default model, then validates it.
131
+ - `createFoundationOrganizationModel()` resolves the canonical model and returns UI-facing helper outputs.
132
+ - Plain objects merge recursively.
133
+ - Id-keyed domain maps merge additively by key.
134
+ - Arrays replace the default value.
135
+ - Missing fields fall back to `DEFAULT_ORGANIZATION_MODEL`.
136
+
137
+ ## Referential Integrity
138
+
139
+ - System IDs must be unique.
140
+ - Child System IDs require valid ancestors or `parentSystemId` links.
141
+ - Systems with UI provide `ui.path`.
142
+ - Systems, resources, roles, knowledge nodes, and goals must resolve their declared cross-references.
143
+
144
+ ## Practical Guidance
145
+
146
+ - Use `resolveOrganizationModel()` when you need a runtime-safe model.
147
+ - Use `defineOrganizationModel()` when authoring static overrides.
148
+ - Keep System IDs stable because shell routing, gating, breadcrumbs, and docs depend on them.
149
+ - Put resource identity and governance in `resources`; attach executable behavior in operations.