@elevasis/core 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1326 -552
- package/dist/index.js +869 -154
- package/dist/knowledge/index.d.ts +487 -209
- package/dist/knowledge/index.js +104 -1
- package/dist/organization-model/index.d.ts +1326 -552
- package/dist/organization-model/index.js +869 -154
- package/dist/test-utils/index.d.ts +357 -72
- package/dist/test-utils/index.js +795 -142
- package/package.json +5 -5
- package/src/README.md +14 -14
- package/src/__tests__/publish.test.ts +24 -24
- package/src/__tests__/template-core-compatibility.test.ts +9 -12
- package/src/_gen/__tests__/__snapshots__/contracts.md.snap +2102 -2096
- package/src/_gen/__tests__/scaffold-contracts.test.ts +30 -30
- package/src/auth/multi-tenancy/credentials/__tests__/encryption.test.ts +217 -217
- package/src/auth/multi-tenancy/credentials/server/encryption.ts +69 -69
- package/src/auth/multi-tenancy/credentials/server/kek-loader.ts +37 -37
- package/src/auth/multi-tenancy/index.ts +26 -26
- package/src/auth/multi-tenancy/invitations/api-schemas.ts +104 -104
- package/src/auth/multi-tenancy/memberships/api-schemas.ts +143 -143
- package/src/auth/multi-tenancy/memberships/index.ts +26 -26
- package/src/auth/multi-tenancy/memberships/membership.ts +130 -130
- package/src/auth/multi-tenancy/organizations/__tests__/api-schemas.test.ts +194 -194
- package/src/auth/multi-tenancy/organizations/api-schemas.ts +136 -136
- package/src/auth/multi-tenancy/permissions.test.ts +42 -42
- package/src/auth/multi-tenancy/permissions.ts +123 -123
- package/src/auth/multi-tenancy/role-management/api-schemas.ts +78 -78
- package/src/auth/multi-tenancy/role-management/index.ts +16 -16
- package/src/auth/multi-tenancy/theme-presets.ts +45 -45
- package/src/auth/multi-tenancy/types.ts +57 -57
- package/src/auth/multi-tenancy/users/api-schemas.ts +165 -165
- package/src/business/README.md +2 -2
- package/src/business/acquisition/activity-events.test.ts +250 -250
- package/src/business/acquisition/activity-events.ts +93 -93
- package/src/business/acquisition/api-schemas.test.ts +1883 -1843
- package/src/business/acquisition/api-schemas.ts +1492 -1497
- package/src/business/acquisition/build-templates.test.ts +240 -240
- package/src/business/acquisition/build-templates.ts +98 -98
- package/src/business/acquisition/crm-next-action.test.ts +262 -262
- package/src/business/acquisition/crm-next-action.ts +220 -220
- package/src/business/acquisition/crm-priority.test.ts +216 -216
- package/src/business/acquisition/crm-priority.ts +349 -349
- package/src/business/acquisition/crm-state-actions.test.ts +153 -153
- package/src/business/acquisition/deal-ownership.test.ts +351 -351
- package/src/business/acquisition/deal-ownership.ts +120 -120
- package/src/business/acquisition/derive-actions.test.ts +129 -104
- package/src/business/acquisition/derive-actions.ts +74 -84
- package/src/business/acquisition/index.ts +171 -170
- package/src/business/acquisition/ontology-validation.ts +309 -0
- package/src/business/acquisition/stateful.ts +30 -30
- package/src/business/acquisition/types.ts +396 -396
- package/src/business/clients/api-schemas.test.ts +115 -115
- package/src/business/clients/api-schemas.ts +158 -158
- package/src/business/clients/index.ts +1 -1
- package/src/business/crm/api-schemas.ts +40 -40
- package/src/business/crm/index.ts +1 -1
- package/src/business/deals/api-schemas.ts +87 -87
- package/src/business/deals/index.ts +1 -1
- package/src/business/index.ts +5 -5
- package/src/business/projects/types.ts +144 -144
- package/src/commands/queue/types/task.ts +15 -15
- package/src/execution/core/runner-types.ts +61 -61
- package/src/execution/core/sse-executions.ts +7 -7
- package/src/execution/engine/__tests__/fixtures/test-agents.ts +10 -10
- package/src/execution/engine/agent/core/__tests__/agent.test.ts +16 -16
- package/src/execution/engine/agent/core/__tests__/error-passthrough.test.ts +4 -4
- package/src/execution/engine/agent/core/types.ts +25 -25
- package/src/execution/engine/agent/index.ts +6 -6
- package/src/execution/engine/agent/reasoning/__tests__/request-builder.test.ts +24 -24
- package/src/execution/engine/index.ts +443 -443
- package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +298 -298
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.test.ts +55 -55
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +107 -107
- package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.test.ts +48 -48
- package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.ts +99 -99
- package/src/execution/engine/tools/integration/server/adapters/apollo/index.ts +1 -1
- package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +363 -363
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.test.ts +162 -162
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.test.ts +316 -316
- package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.test.ts +18 -18
- package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.ts +194 -194
- package/src/execution/engine/tools/integration/server/adapters/clickup/index.ts +7 -7
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +204 -204
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +105 -105
- package/src/execution/engine/tools/integration/server/adapters/google-calendar/google-calendar-adapter.ts +428 -428
- package/src/execution/engine/tools/integration/server/adapters/google-calendar/index.ts +2 -2
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -261
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1474 -1474
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +103 -103
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.test.ts +88 -88
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +141 -141
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +76 -76
- package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-tools.ts +182 -182
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +310 -310
- package/src/execution/engine/tools/integration/service.test.ts +239 -239
- package/src/execution/engine/tools/integration/service.ts +172 -172
- package/src/execution/engine/tools/integration/tool.ts +255 -255
- package/src/execution/engine/tools/lead-service-types.ts +1005 -1005
- package/src/execution/engine/tools/messages.ts +43 -43
- package/src/execution/engine/tools/platform/acquisition/company-tools.ts +7 -7
- package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +6 -6
- package/src/execution/engine/tools/platform/acquisition/list-tools.ts +6 -6
- package/src/execution/engine/tools/platform/acquisition/types.ts +280 -280
- package/src/execution/engine/tools/platform/email/types.ts +97 -97
- package/src/execution/engine/tools/registry.ts +704 -704
- package/src/execution/engine/tools/tool-maps.ts +831 -831
- package/src/execution/engine/tools/types.ts +234 -234
- package/src/execution/engine/workflow/types.ts +202 -202
- package/src/execution/external/__tests__/api-schemas.test.ts +127 -127
- package/src/execution/external/api-schemas.ts +40 -40
- package/src/execution/external/index.ts +1 -1
- package/src/index.ts +18 -18
- package/src/integrations/credentials/__tests__/api-schemas.test.ts +420 -420
- package/src/integrations/credentials/api-schemas.ts +146 -146
- package/src/integrations/credentials/schemas.ts +200 -200
- package/src/integrations/oauth/__tests__/provider-registry.test.ts +7 -7
- package/src/integrations/oauth/provider-registry.ts +74 -74
- package/src/integrations/oauth/server/credentials.ts +43 -43
- package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +327 -327
- package/src/integrations/webhook-endpoints/api-schemas.ts +103 -103
- package/src/integrations/webhook-endpoints/types.ts +58 -58
- package/src/knowledge/README.md +32 -32
- package/src/knowledge/__tests__/queries.test.ts +626 -535
- package/src/knowledge/format.ts +99 -99
- package/src/knowledge/index.ts +5 -5
- package/src/knowledge/published.ts +5 -5
- package/src/knowledge/queries.ts +269 -218
- package/src/operations/activities/api-schemas.ts +80 -80
- package/src/operations/activities/types.ts +64 -64
- package/src/organization-model/README.md +149 -149
- package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -210
- package/src/organization-model/__tests__/defaults.test.ts +168 -168
- package/src/organization-model/__tests__/domains/actions.test.ts +78 -56
- package/src/organization-model/__tests__/domains/customers.test.ts +299 -299
- package/src/organization-model/__tests__/domains/entities.test.ts +56 -56
- package/src/organization-model/__tests__/domains/goals.test.ts +493 -493
- package/src/organization-model/__tests__/domains/identity.test.ts +280 -280
- package/src/organization-model/__tests__/domains/navigation.test.ts +268 -268
- package/src/organization-model/__tests__/domains/offerings.test.ts +414 -414
- package/src/organization-model/__tests__/domains/policies.test.ts +323 -323
- package/src/organization-model/__tests__/domains/resource-mappings.test.ts +293 -293
- package/src/organization-model/__tests__/domains/resources.test.ts +382 -283
- package/src/organization-model/__tests__/domains/roles.test.ts +463 -463
- package/src/organization-model/__tests__/domains/statuses.test.ts +246 -246
- package/src/organization-model/__tests__/domains/systems.test.ts +209 -209
- package/src/organization-model/__tests__/flatten-additive-merge.test.ts +362 -361
- package/src/organization-model/__tests__/foundation.test.ts +77 -77
- package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -144
- package/src/organization-model/__tests__/graph.test.ts +1246 -887
- package/src/organization-model/__tests__/icons.test.ts +10 -1
- package/src/organization-model/__tests__/knowledge.test.ts +251 -15
- package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -438
- package/src/organization-model/__tests__/migration-helpers.test.ts +591 -591
- package/src/organization-model/__tests__/prospecting-ssot.test.ts +103 -103
- package/src/organization-model/__tests__/recursive-system-schema.test.ts +535 -506
- package/src/organization-model/__tests__/resolve.test.ts +274 -164
- package/src/organization-model/__tests__/schema.test.ts +834 -301
- package/src/organization-model/__tests__/surface-projection.test.ts +284 -284
- package/src/organization-model/catalogs/lead-gen.ts +144 -144
- package/src/organization-model/content-kinds/config.ts +36 -36
- package/src/organization-model/content-kinds/index.ts +76 -72
- package/src/organization-model/content-kinds/pipeline.ts +68 -68
- package/src/organization-model/content-kinds/registry.ts +44 -44
- package/src/organization-model/content-kinds/status.ts +71 -71
- package/src/organization-model/content-kinds/template.ts +83 -83
- package/src/organization-model/content-kinds/types.ts +117 -117
- package/src/organization-model/contracts.ts +27 -27
- package/src/organization-model/defaults.ts +40 -50
- package/src/organization-model/domains/actions.ts +333 -239
- package/src/organization-model/domains/customers.ts +78 -78
- package/src/organization-model/domains/entities.ts +144 -144
- package/src/organization-model/domains/goals.ts +83 -83
- package/src/organization-model/domains/knowledge.ts +117 -101
- package/src/organization-model/domains/navigation.ts +139 -139
- package/src/organization-model/domains/offerings.ts +71 -71
- package/src/organization-model/domains/policies.ts +102 -102
- package/src/organization-model/domains/projects.ts +14 -14
- package/src/organization-model/domains/prospecting.ts +395 -395
- package/src/organization-model/domains/resources.ts +167 -132
- package/src/organization-model/domains/roles.ts +96 -96
- package/src/organization-model/domains/sales.test.ts +218 -218
- package/src/organization-model/domains/sales.ts +380 -380
- package/src/organization-model/domains/shared.ts +63 -63
- package/src/organization-model/domains/statuses.ts +339 -339
- package/src/organization-model/domains/systems.ts +217 -172
- package/src/organization-model/foundation.ts +75 -75
- package/src/organization-model/graph/build.ts +1016 -888
- package/src/organization-model/graph/index.ts +4 -4
- package/src/organization-model/graph/link.ts +10 -10
- package/src/organization-model/graph/schema.ts +76 -70
- package/src/organization-model/graph/types.ts +73 -67
- package/src/organization-model/helpers.ts +289 -241
- package/src/organization-model/icons.ts +78 -66
- package/src/organization-model/index.ts +130 -128
- package/src/organization-model/migration-helpers.ts +247 -244
- package/src/organization-model/ontology.ts +661 -0
- package/src/organization-model/organization-graph.mdx +110 -90
- package/src/organization-model/organization-model.mdx +226 -219
- package/src/organization-model/published.ts +289 -235
- package/src/organization-model/resolve.ts +146 -91
- package/src/organization-model/schema.ts +790 -671
- package/src/organization-model/surface-projection.ts +212 -212
- package/src/organization-model/types.ts +177 -167
- package/src/platform/api/types.ts +38 -38
- package/src/platform/constants/versions.ts +3 -3
- package/src/platform/index.ts +23 -23
- package/src/platform/registry/__tests__/command-view.test.ts +10 -10
- package/src/platform/registry/__tests__/resource-link.test.ts +35 -35
- package/src/platform/registry/__tests__/resource-registry.integration.test.ts +20 -20
- package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -245
- package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2053
- package/src/platform/registry/__tests__/validation.test.ts +1347 -1347
- package/src/platform/registry/command-view.ts +10 -10
- package/src/platform/registry/index.ts +103 -103
- package/src/platform/registry/resource-link.ts +32 -32
- package/src/platform/registry/resource-registry.ts +890 -890
- package/src/platform/registry/serialization.ts +295 -295
- package/src/platform/registry/serialized-types.ts +166 -166
- package/src/platform/registry/stats-types.ts +68 -68
- package/src/platform/registry/types.ts +425 -425
- package/src/platform/registry/validation.ts +745 -745
- package/src/platform/utils/__tests__/validation.test.ts +1084 -1084
- package/src/platform/utils/validation.ts +425 -425
- package/src/projects/api-schemas.test.ts +39 -39
- package/src/projects/api-schemas.ts +291 -291
- package/src/reference/_generated/contracts.md +2101 -2096
- package/src/reference/glossary.md +76 -76
- package/src/scaffold-registry/__tests__/index.test.ts +206 -206
- package/src/scaffold-registry/__tests__/schema.test.ts +166 -166
- package/src/scaffold-registry/index.ts +392 -392
- package/src/scaffold-registry/schema.ts +243 -243
- package/src/server.ts +289 -289
- package/src/supabase/database.types.ts +3153 -3153
- package/src/test-utils/README.md +37 -37
- package/src/test-utils/entities.ts +108 -108
- package/src/test-utils/fixtures/memberships.ts +82 -82
- package/src/test-utils/index.ts +12 -12
- package/src/test-utils/organization-model.ts +65 -65
- package/src/test-utils/published.ts +6 -6
- package/src/test-utils/rls/RLSTestContext.ts +588 -588
- package/src/test-utils/test-utils.test.ts +44 -44
|
@@ -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,149 +1,149 @@
|
|
|
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.
|
|
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.
|