@elevasis/core 0.23.0 → 0.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4343 -2690
- package/dist/index.js +1101 -156
- package/dist/knowledge/index.d.ts +574 -210
- package/dist/knowledge/index.js +104 -1
- package/dist/organization-model/index.d.ts +4343 -2690
- package/dist/organization-model/index.js +1101 -156
- package/dist/test-utils/index.d.ts +483 -109
- package/dist/test-utils/index.js +904 -144
- package/package.json +3 -3
- 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 +2137 -2093
- 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 +195 -197
- 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 +387 -277
- 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__/domains/topology.test.ts +188 -0
- 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 +1312 -862
- 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 +844 -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 +42 -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 +202 -124
- 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/domains/topology.ts +261 -0
- package/src/organization-model/foundation.ts +75 -75
- package/src/organization-model/graph/build.ts +1043 -867
- 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 +75 -68
- package/src/organization-model/graph/types.ts +71 -64
- package/src/organization-model/helpers.ts +289 -241
- package/src/organization-model/icons.ts +78 -66
- package/src/organization-model/index.ts +128 -125
- package/src/organization-model/migration-helpers.ts +247 -244
- package/src/organization-model/ontology.ts +658 -0
- package/src/organization-model/organization-graph.mdx +110 -90
- package/src/organization-model/organization-model.mdx +225 -213
- package/src/organization-model/published.ts +299 -222
- package/src/organization-model/resolve.ts +146 -91
- package/src/organization-model/schema.ts +818 -659
- package/src/organization-model/surface-projection.ts +212 -212
- package/src/organization-model/types.ts +179 -155
- 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 +1444 -1259
- 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 +886 -886
- 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 +876 -684
- 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 +2136 -2093
- 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 +3 -0
- 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,115 +1,115 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest'
|
|
2
|
-
import {
|
|
3
|
-
ClientDetailResponseSchema,
|
|
4
|
-
ClientListResponseSchema,
|
|
5
|
-
ClientStatusResponseSchema,
|
|
6
|
-
ListClientsQuerySchema
|
|
7
|
-
} from './api-schemas'
|
|
8
|
-
|
|
9
|
-
const VALID_UUID = '00000000-0000-4000-8000-000000000001'
|
|
10
|
-
const ISO_TS = '2026-05-08T00:00:00.000Z'
|
|
11
|
-
|
|
12
|
-
describe('client API schemas', () => {
|
|
13
|
-
it('coerces list pagination and accepts status/search filters', () => {
|
|
14
|
-
const result = ListClientsQuerySchema.safeParse({
|
|
15
|
-
status: 'active',
|
|
16
|
-
search: 'Acme',
|
|
17
|
-
limit: '10',
|
|
18
|
-
offset: '20'
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
expect(result.success).toBe(true)
|
|
22
|
-
if (result.success) {
|
|
23
|
-
expect(result.data).toEqual({
|
|
24
|
-
status: 'active',
|
|
25
|
-
search: 'Acme',
|
|
26
|
-
limit: 10,
|
|
27
|
-
offset: 20
|
|
28
|
-
})
|
|
29
|
-
}
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
it('rejects unknown list query fields', () => {
|
|
33
|
-
expect(ListClientsQuerySchema.safeParse({ includeDeals: true }).success).toBe(false)
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
it('accepts client list responses', () => {
|
|
37
|
-
expect(
|
|
38
|
-
ClientListResponseSchema.safeParse({
|
|
39
|
-
data: [
|
|
40
|
-
{
|
|
41
|
-
id: VALID_UUID,
|
|
42
|
-
organizationId: VALID_UUID,
|
|
43
|
-
name: 'Acme',
|
|
44
|
-
status: 'active',
|
|
45
|
-
sourceDealId: null,
|
|
46
|
-
primaryCompanyId: null,
|
|
47
|
-
primaryContactId: null,
|
|
48
|
-
convertedAt: null,
|
|
49
|
-
metadata: {},
|
|
50
|
-
createdAt: ISO_TS,
|
|
51
|
-
updatedAt: ISO_TS
|
|
52
|
-
}
|
|
53
|
-
],
|
|
54
|
-
total: 1,
|
|
55
|
-
limit: 50,
|
|
56
|
-
offset: 0
|
|
57
|
-
}).success
|
|
58
|
-
).toBe(true)
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
it('accepts client detail lineage refs', () => {
|
|
62
|
-
expect(
|
|
63
|
-
ClientDetailResponseSchema.safeParse({
|
|
64
|
-
id: VALID_UUID,
|
|
65
|
-
organizationId: VALID_UUID,
|
|
66
|
-
name: 'Acme',
|
|
67
|
-
status: 'onboarding',
|
|
68
|
-
sourceDealId: VALID_UUID,
|
|
69
|
-
primaryCompanyId: VALID_UUID,
|
|
70
|
-
primaryContactId: VALID_UUID,
|
|
71
|
-
convertedAt: ISO_TS,
|
|
72
|
-
metadata: { source: 'closed_won' },
|
|
73
|
-
createdAt: ISO_TS,
|
|
74
|
-
updatedAt: ISO_TS,
|
|
75
|
-
lineage: {
|
|
76
|
-
deals: [
|
|
77
|
-
{
|
|
78
|
-
id: VALID_UUID,
|
|
79
|
-
contactEmail: 'lead@example.com',
|
|
80
|
-
stageKey: 'closed_won',
|
|
81
|
-
stateKey: null,
|
|
82
|
-
updatedAt: ISO_TS
|
|
83
|
-
}
|
|
84
|
-
],
|
|
85
|
-
projects: [{ id: VALID_UUID, name: 'Delivery', kind: 'client_engagement', status: 'active', updatedAt: ISO_TS }],
|
|
86
|
-
companies: [{ id: VALID_UUID, name: 'Acme Co', domain: 'acme.test', status: 'active' }],
|
|
87
|
-
contacts: [
|
|
88
|
-
{
|
|
89
|
-
id: VALID_UUID,
|
|
90
|
-
email: 'lead@example.com',
|
|
91
|
-
firstName: 'Ada',
|
|
92
|
-
lastName: null,
|
|
93
|
-
title: 'CEO',
|
|
94
|
-
companyId: VALID_UUID,
|
|
95
|
-
status: 'active'
|
|
96
|
-
}
|
|
97
|
-
]
|
|
98
|
-
}
|
|
99
|
-
}).success
|
|
100
|
-
).toBe(true)
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
it('accepts client portfolio status responses', () => {
|
|
104
|
-
expect(
|
|
105
|
-
ClientStatusResponseSchema.safeParse({
|
|
106
|
-
totalClients: 1,
|
|
107
|
-
byStatus: { active: 1, onboarding: 0, paused: 0, completed: 0, churned: 0 },
|
|
108
|
-
linkedDeals: 1,
|
|
109
|
-
linkedProjects: 1,
|
|
110
|
-
linkedCompanies: 1,
|
|
111
|
-
linkedContacts: 1
|
|
112
|
-
}).success
|
|
113
|
-
).toBe(true)
|
|
114
|
-
})
|
|
115
|
-
})
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
import {
|
|
3
|
+
ClientDetailResponseSchema,
|
|
4
|
+
ClientListResponseSchema,
|
|
5
|
+
ClientStatusResponseSchema,
|
|
6
|
+
ListClientsQuerySchema
|
|
7
|
+
} from './api-schemas'
|
|
8
|
+
|
|
9
|
+
const VALID_UUID = '00000000-0000-4000-8000-000000000001'
|
|
10
|
+
const ISO_TS = '2026-05-08T00:00:00.000Z'
|
|
11
|
+
|
|
12
|
+
describe('client API schemas', () => {
|
|
13
|
+
it('coerces list pagination and accepts status/search filters', () => {
|
|
14
|
+
const result = ListClientsQuerySchema.safeParse({
|
|
15
|
+
status: 'active',
|
|
16
|
+
search: 'Acme',
|
|
17
|
+
limit: '10',
|
|
18
|
+
offset: '20'
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
expect(result.success).toBe(true)
|
|
22
|
+
if (result.success) {
|
|
23
|
+
expect(result.data).toEqual({
|
|
24
|
+
status: 'active',
|
|
25
|
+
search: 'Acme',
|
|
26
|
+
limit: 10,
|
|
27
|
+
offset: 20
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
it('rejects unknown list query fields', () => {
|
|
33
|
+
expect(ListClientsQuerySchema.safeParse({ includeDeals: true }).success).toBe(false)
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
it('accepts client list responses', () => {
|
|
37
|
+
expect(
|
|
38
|
+
ClientListResponseSchema.safeParse({
|
|
39
|
+
data: [
|
|
40
|
+
{
|
|
41
|
+
id: VALID_UUID,
|
|
42
|
+
organizationId: VALID_UUID,
|
|
43
|
+
name: 'Acme',
|
|
44
|
+
status: 'active',
|
|
45
|
+
sourceDealId: null,
|
|
46
|
+
primaryCompanyId: null,
|
|
47
|
+
primaryContactId: null,
|
|
48
|
+
convertedAt: null,
|
|
49
|
+
metadata: {},
|
|
50
|
+
createdAt: ISO_TS,
|
|
51
|
+
updatedAt: ISO_TS
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
total: 1,
|
|
55
|
+
limit: 50,
|
|
56
|
+
offset: 0
|
|
57
|
+
}).success
|
|
58
|
+
).toBe(true)
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
it('accepts client detail lineage refs', () => {
|
|
62
|
+
expect(
|
|
63
|
+
ClientDetailResponseSchema.safeParse({
|
|
64
|
+
id: VALID_UUID,
|
|
65
|
+
organizationId: VALID_UUID,
|
|
66
|
+
name: 'Acme',
|
|
67
|
+
status: 'onboarding',
|
|
68
|
+
sourceDealId: VALID_UUID,
|
|
69
|
+
primaryCompanyId: VALID_UUID,
|
|
70
|
+
primaryContactId: VALID_UUID,
|
|
71
|
+
convertedAt: ISO_TS,
|
|
72
|
+
metadata: { source: 'closed_won' },
|
|
73
|
+
createdAt: ISO_TS,
|
|
74
|
+
updatedAt: ISO_TS,
|
|
75
|
+
lineage: {
|
|
76
|
+
deals: [
|
|
77
|
+
{
|
|
78
|
+
id: VALID_UUID,
|
|
79
|
+
contactEmail: 'lead@example.com',
|
|
80
|
+
stageKey: 'closed_won',
|
|
81
|
+
stateKey: null,
|
|
82
|
+
updatedAt: ISO_TS
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
projects: [{ id: VALID_UUID, name: 'Delivery', kind: 'client_engagement', status: 'active', updatedAt: ISO_TS }],
|
|
86
|
+
companies: [{ id: VALID_UUID, name: 'Acme Co', domain: 'acme.test', status: 'active' }],
|
|
87
|
+
contacts: [
|
|
88
|
+
{
|
|
89
|
+
id: VALID_UUID,
|
|
90
|
+
email: 'lead@example.com',
|
|
91
|
+
firstName: 'Ada',
|
|
92
|
+
lastName: null,
|
|
93
|
+
title: 'CEO',
|
|
94
|
+
companyId: VALID_UUID,
|
|
95
|
+
status: 'active'
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
}).success
|
|
100
|
+
).toBe(true)
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
it('accepts client portfolio status responses', () => {
|
|
104
|
+
expect(
|
|
105
|
+
ClientStatusResponseSchema.safeParse({
|
|
106
|
+
totalClients: 1,
|
|
107
|
+
byStatus: { active: 1, onboarding: 0, paused: 0, completed: 0, churned: 0 },
|
|
108
|
+
linkedDeals: 1,
|
|
109
|
+
linkedProjects: 1,
|
|
110
|
+
linkedCompanies: 1,
|
|
111
|
+
linkedContacts: 1
|
|
112
|
+
}).success
|
|
113
|
+
).toBe(true)
|
|
114
|
+
})
|
|
115
|
+
})
|
|
@@ -1,158 +1,158 @@
|
|
|
1
|
-
import { z } from 'zod'
|
|
2
|
-
import { UuidSchema } from '../../platform/utils/validation'
|
|
3
|
-
|
|
4
|
-
export const ClientStatusSchema = z.enum(['active', 'onboarding', 'paused', 'completed', 'churned'])
|
|
5
|
-
|
|
6
|
-
export const ClientIdParamsSchema = z
|
|
7
|
-
.object({
|
|
8
|
-
clientId: UuidSchema
|
|
9
|
-
})
|
|
10
|
-
.strict()
|
|
11
|
-
|
|
12
|
-
export const ListClientsQuerySchema = z
|
|
13
|
-
.object({
|
|
14
|
-
status: ClientStatusSchema.optional(),
|
|
15
|
-
search: z.string().trim().min(1).max(255).optional(),
|
|
16
|
-
limit: z.coerce.number().int().min(1).max(100).default(50),
|
|
17
|
-
offset: z.coerce.number().int().min(0).default(0)
|
|
18
|
-
})
|
|
19
|
-
.strict()
|
|
20
|
-
|
|
21
|
-
export const ClientRefSchema = z.object({
|
|
22
|
-
id: z.string(),
|
|
23
|
-
name: z.string(),
|
|
24
|
-
status: ClientStatusSchema
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
export const ClientResponseSchema = z.object({
|
|
28
|
-
id: z.string(),
|
|
29
|
-
organizationId: z.string(),
|
|
30
|
-
name: z.string(),
|
|
31
|
-
status: ClientStatusSchema,
|
|
32
|
-
sourceDealId: z.string().nullable(),
|
|
33
|
-
primaryCompanyId: z.string().nullable(),
|
|
34
|
-
primaryContactId: z.string().nullable(),
|
|
35
|
-
convertedAt: z.string().nullable(),
|
|
36
|
-
metadata: z.record(z.string(), z.unknown()),
|
|
37
|
-
createdAt: z.string(),
|
|
38
|
-
updatedAt: z.string()
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
export const ClientDealRefSchema = z.object({
|
|
42
|
-
id: z.string(),
|
|
43
|
-
contactEmail: z.string(),
|
|
44
|
-
stageKey: z.string().nullable(),
|
|
45
|
-
stateKey: z.string().nullable(),
|
|
46
|
-
updatedAt: z.string()
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
export const ClientProjectRefSchema = z.object({
|
|
50
|
-
id: z.string(),
|
|
51
|
-
name: z.string(),
|
|
52
|
-
kind: z.string(),
|
|
53
|
-
status: z.string(),
|
|
54
|
-
updatedAt: z.string()
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
export const ClientCompanyRefSchema = z.object({
|
|
58
|
-
id: z.string(),
|
|
59
|
-
name: z.string(),
|
|
60
|
-
domain: z.string().nullable(),
|
|
61
|
-
status: z.string()
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
export const ClientContactRefSchema = z.object({
|
|
65
|
-
id: z.string(),
|
|
66
|
-
email: z.string(),
|
|
67
|
-
firstName: z.string().nullable(),
|
|
68
|
-
lastName: z.string().nullable(),
|
|
69
|
-
title: z.string().nullable(),
|
|
70
|
-
companyId: z.string().nullable(),
|
|
71
|
-
status: z.string()
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
export const ClientLineageSchema = z.object({
|
|
75
|
-
deals: z.array(ClientDealRefSchema),
|
|
76
|
-
projects: z.array(ClientProjectRefSchema),
|
|
77
|
-
companies: z.array(ClientCompanyRefSchema),
|
|
78
|
-
contacts: z.array(ClientContactRefSchema)
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
export const ClientDetailResponseSchema = ClientResponseSchema.extend({
|
|
82
|
-
lineage: ClientLineageSchema
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
export const ClientListResponseSchema = z.object({
|
|
86
|
-
data: z.array(ClientResponseSchema),
|
|
87
|
-
total: z.number().int().min(0),
|
|
88
|
-
limit: z.number().int().min(1),
|
|
89
|
-
offset: z.number().int().min(0)
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
export const ClientStatusResponseSchema = z.object({
|
|
93
|
-
totalClients: z.number().int().min(0),
|
|
94
|
-
byStatus: z.record(ClientStatusSchema, z.number().int().min(0)),
|
|
95
|
-
linkedDeals: z.number().int().min(0),
|
|
96
|
-
linkedProjects: z.number().int().min(0),
|
|
97
|
-
linkedCompanies: z.number().int().min(0),
|
|
98
|
-
linkedContacts: z.number().int().min(0)
|
|
99
|
-
})
|
|
100
|
-
|
|
101
|
-
export const CreateClientRequestSchema = z
|
|
102
|
-
.object({
|
|
103
|
-
name: z.string().trim().min(1).max(255),
|
|
104
|
-
status: ClientStatusSchema.optional(),
|
|
105
|
-
sourceDealId: UuidSchema.nullable().optional(),
|
|
106
|
-
primaryCompanyId: UuidSchema.nullable().optional(),
|
|
107
|
-
primaryContactId: UuidSchema.nullable().optional(),
|
|
108
|
-
metadata: z.record(z.string(), z.unknown()).nullable().optional()
|
|
109
|
-
})
|
|
110
|
-
.strict()
|
|
111
|
-
|
|
112
|
-
export const UpdateClientRequestSchema = z
|
|
113
|
-
.object({
|
|
114
|
-
name: z.string().trim().min(1).max(255).optional(),
|
|
115
|
-
status: ClientStatusSchema.optional(),
|
|
116
|
-
sourceDealId: UuidSchema.nullable().optional(),
|
|
117
|
-
primaryCompanyId: UuidSchema.nullable().optional(),
|
|
118
|
-
primaryContactId: UuidSchema.nullable().optional(),
|
|
119
|
-
metadata: z.record(z.string(), z.unknown()).nullable().optional()
|
|
120
|
-
})
|
|
121
|
-
.strict()
|
|
122
|
-
.refine((data) => Object.keys(data).length > 0, {
|
|
123
|
-
message: 'At least one field must be provided'
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
export const ClientSchemas = {
|
|
127
|
-
ClientStatus: ClientStatusSchema,
|
|
128
|
-
ClientIdParams: ClientIdParamsSchema,
|
|
129
|
-
ListClientsQuery: ListClientsQuerySchema,
|
|
130
|
-
ClientRef: ClientRefSchema,
|
|
131
|
-
ClientResponse: ClientResponseSchema,
|
|
132
|
-
ClientDealRef: ClientDealRefSchema,
|
|
133
|
-
ClientProjectRef: ClientProjectRefSchema,
|
|
134
|
-
ClientCompanyRef: ClientCompanyRefSchema,
|
|
135
|
-
ClientContactRef: ClientContactRefSchema,
|
|
136
|
-
ClientLineage: ClientLineageSchema,
|
|
137
|
-
ClientDetailResponse: ClientDetailResponseSchema,
|
|
138
|
-
ClientListResponse: ClientListResponseSchema,
|
|
139
|
-
ClientStatusResponse: ClientStatusResponseSchema,
|
|
140
|
-
CreateClientRequest: CreateClientRequestSchema,
|
|
141
|
-
UpdateClientRequest: UpdateClientRequestSchema
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
export type ClientStatus = z.infer<typeof ClientStatusSchema>
|
|
145
|
-
export type ClientIdParams = z.infer<typeof ClientIdParamsSchema>
|
|
146
|
-
export type ListClientsQuery = z.infer<typeof ListClientsQuerySchema>
|
|
147
|
-
export type ClientRef = z.infer<typeof ClientRefSchema>
|
|
148
|
-
export type ClientResponse = z.infer<typeof ClientResponseSchema>
|
|
149
|
-
export type ClientDealRef = z.infer<typeof ClientDealRefSchema>
|
|
150
|
-
export type ClientProjectRef = z.infer<typeof ClientProjectRefSchema>
|
|
151
|
-
export type ClientCompanyRef = z.infer<typeof ClientCompanyRefSchema>
|
|
152
|
-
export type ClientContactRef = z.infer<typeof ClientContactRefSchema>
|
|
153
|
-
export type ClientLineage = z.infer<typeof ClientLineageSchema>
|
|
154
|
-
export type ClientDetailResponse = z.infer<typeof ClientDetailResponseSchema>
|
|
155
|
-
export type ClientListResponse = z.infer<typeof ClientListResponseSchema>
|
|
156
|
-
export type ClientStatusResponse = z.infer<typeof ClientStatusResponseSchema>
|
|
157
|
-
export type CreateClientRequest = z.infer<typeof CreateClientRequestSchema>
|
|
158
|
-
export type UpdateClientRequest = z.infer<typeof UpdateClientRequestSchema>
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import { UuidSchema } from '../../platform/utils/validation'
|
|
3
|
+
|
|
4
|
+
export const ClientStatusSchema = z.enum(['active', 'onboarding', 'paused', 'completed', 'churned'])
|
|
5
|
+
|
|
6
|
+
export const ClientIdParamsSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
clientId: UuidSchema
|
|
9
|
+
})
|
|
10
|
+
.strict()
|
|
11
|
+
|
|
12
|
+
export const ListClientsQuerySchema = z
|
|
13
|
+
.object({
|
|
14
|
+
status: ClientStatusSchema.optional(),
|
|
15
|
+
search: z.string().trim().min(1).max(255).optional(),
|
|
16
|
+
limit: z.coerce.number().int().min(1).max(100).default(50),
|
|
17
|
+
offset: z.coerce.number().int().min(0).default(0)
|
|
18
|
+
})
|
|
19
|
+
.strict()
|
|
20
|
+
|
|
21
|
+
export const ClientRefSchema = z.object({
|
|
22
|
+
id: z.string(),
|
|
23
|
+
name: z.string(),
|
|
24
|
+
status: ClientStatusSchema
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
export const ClientResponseSchema = z.object({
|
|
28
|
+
id: z.string(),
|
|
29
|
+
organizationId: z.string(),
|
|
30
|
+
name: z.string(),
|
|
31
|
+
status: ClientStatusSchema,
|
|
32
|
+
sourceDealId: z.string().nullable(),
|
|
33
|
+
primaryCompanyId: z.string().nullable(),
|
|
34
|
+
primaryContactId: z.string().nullable(),
|
|
35
|
+
convertedAt: z.string().nullable(),
|
|
36
|
+
metadata: z.record(z.string(), z.unknown()),
|
|
37
|
+
createdAt: z.string(),
|
|
38
|
+
updatedAt: z.string()
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
export const ClientDealRefSchema = z.object({
|
|
42
|
+
id: z.string(),
|
|
43
|
+
contactEmail: z.string(),
|
|
44
|
+
stageKey: z.string().nullable(),
|
|
45
|
+
stateKey: z.string().nullable(),
|
|
46
|
+
updatedAt: z.string()
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
export const ClientProjectRefSchema = z.object({
|
|
50
|
+
id: z.string(),
|
|
51
|
+
name: z.string(),
|
|
52
|
+
kind: z.string(),
|
|
53
|
+
status: z.string(),
|
|
54
|
+
updatedAt: z.string()
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
export const ClientCompanyRefSchema = z.object({
|
|
58
|
+
id: z.string(),
|
|
59
|
+
name: z.string(),
|
|
60
|
+
domain: z.string().nullable(),
|
|
61
|
+
status: z.string()
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
export const ClientContactRefSchema = z.object({
|
|
65
|
+
id: z.string(),
|
|
66
|
+
email: z.string(),
|
|
67
|
+
firstName: z.string().nullable(),
|
|
68
|
+
lastName: z.string().nullable(),
|
|
69
|
+
title: z.string().nullable(),
|
|
70
|
+
companyId: z.string().nullable(),
|
|
71
|
+
status: z.string()
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
export const ClientLineageSchema = z.object({
|
|
75
|
+
deals: z.array(ClientDealRefSchema),
|
|
76
|
+
projects: z.array(ClientProjectRefSchema),
|
|
77
|
+
companies: z.array(ClientCompanyRefSchema),
|
|
78
|
+
contacts: z.array(ClientContactRefSchema)
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
export const ClientDetailResponseSchema = ClientResponseSchema.extend({
|
|
82
|
+
lineage: ClientLineageSchema
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
export const ClientListResponseSchema = z.object({
|
|
86
|
+
data: z.array(ClientResponseSchema),
|
|
87
|
+
total: z.number().int().min(0),
|
|
88
|
+
limit: z.number().int().min(1),
|
|
89
|
+
offset: z.number().int().min(0)
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
export const ClientStatusResponseSchema = z.object({
|
|
93
|
+
totalClients: z.number().int().min(0),
|
|
94
|
+
byStatus: z.record(ClientStatusSchema, z.number().int().min(0)),
|
|
95
|
+
linkedDeals: z.number().int().min(0),
|
|
96
|
+
linkedProjects: z.number().int().min(0),
|
|
97
|
+
linkedCompanies: z.number().int().min(0),
|
|
98
|
+
linkedContacts: z.number().int().min(0)
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
export const CreateClientRequestSchema = z
|
|
102
|
+
.object({
|
|
103
|
+
name: z.string().trim().min(1).max(255),
|
|
104
|
+
status: ClientStatusSchema.optional(),
|
|
105
|
+
sourceDealId: UuidSchema.nullable().optional(),
|
|
106
|
+
primaryCompanyId: UuidSchema.nullable().optional(),
|
|
107
|
+
primaryContactId: UuidSchema.nullable().optional(),
|
|
108
|
+
metadata: z.record(z.string(), z.unknown()).nullable().optional()
|
|
109
|
+
})
|
|
110
|
+
.strict()
|
|
111
|
+
|
|
112
|
+
export const UpdateClientRequestSchema = z
|
|
113
|
+
.object({
|
|
114
|
+
name: z.string().trim().min(1).max(255).optional(),
|
|
115
|
+
status: ClientStatusSchema.optional(),
|
|
116
|
+
sourceDealId: UuidSchema.nullable().optional(),
|
|
117
|
+
primaryCompanyId: UuidSchema.nullable().optional(),
|
|
118
|
+
primaryContactId: UuidSchema.nullable().optional(),
|
|
119
|
+
metadata: z.record(z.string(), z.unknown()).nullable().optional()
|
|
120
|
+
})
|
|
121
|
+
.strict()
|
|
122
|
+
.refine((data) => Object.keys(data).length > 0, {
|
|
123
|
+
message: 'At least one field must be provided'
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
export const ClientSchemas = {
|
|
127
|
+
ClientStatus: ClientStatusSchema,
|
|
128
|
+
ClientIdParams: ClientIdParamsSchema,
|
|
129
|
+
ListClientsQuery: ListClientsQuerySchema,
|
|
130
|
+
ClientRef: ClientRefSchema,
|
|
131
|
+
ClientResponse: ClientResponseSchema,
|
|
132
|
+
ClientDealRef: ClientDealRefSchema,
|
|
133
|
+
ClientProjectRef: ClientProjectRefSchema,
|
|
134
|
+
ClientCompanyRef: ClientCompanyRefSchema,
|
|
135
|
+
ClientContactRef: ClientContactRefSchema,
|
|
136
|
+
ClientLineage: ClientLineageSchema,
|
|
137
|
+
ClientDetailResponse: ClientDetailResponseSchema,
|
|
138
|
+
ClientListResponse: ClientListResponseSchema,
|
|
139
|
+
ClientStatusResponse: ClientStatusResponseSchema,
|
|
140
|
+
CreateClientRequest: CreateClientRequestSchema,
|
|
141
|
+
UpdateClientRequest: UpdateClientRequestSchema
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export type ClientStatus = z.infer<typeof ClientStatusSchema>
|
|
145
|
+
export type ClientIdParams = z.infer<typeof ClientIdParamsSchema>
|
|
146
|
+
export type ListClientsQuery = z.infer<typeof ListClientsQuerySchema>
|
|
147
|
+
export type ClientRef = z.infer<typeof ClientRefSchema>
|
|
148
|
+
export type ClientResponse = z.infer<typeof ClientResponseSchema>
|
|
149
|
+
export type ClientDealRef = z.infer<typeof ClientDealRefSchema>
|
|
150
|
+
export type ClientProjectRef = z.infer<typeof ClientProjectRefSchema>
|
|
151
|
+
export type ClientCompanyRef = z.infer<typeof ClientCompanyRefSchema>
|
|
152
|
+
export type ClientContactRef = z.infer<typeof ClientContactRefSchema>
|
|
153
|
+
export type ClientLineage = z.infer<typeof ClientLineageSchema>
|
|
154
|
+
export type ClientDetailResponse = z.infer<typeof ClientDetailResponseSchema>
|
|
155
|
+
export type ClientListResponse = z.infer<typeof ClientListResponseSchema>
|
|
156
|
+
export type ClientStatusResponse = z.infer<typeof ClientStatusResponseSchema>
|
|
157
|
+
export type CreateClientRequest = z.infer<typeof CreateClientRequestSchema>
|
|
158
|
+
export type UpdateClientRequest = z.infer<typeof UpdateClientRequestSchema>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './api-schemas'
|
|
1
|
+
export * from './api-schemas'
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CRM API Schemas — SSOT subpath entry
|
|
3
|
-
*
|
|
4
|
-
* Re-exports all CRM-related Zod schemas from their canonical locations
|
|
5
|
-
* so consumers can import from a single surface:
|
|
6
|
-
* import { CrmSchemas, CrmPriorityOverrideSchema } from '@repo/core/business/crm/api-schemas'
|
|
7
|
-
*
|
|
8
|
-
* Schema definitions live in:
|
|
9
|
-
* packages/core/src/business/sales/api-schemas.ts (activity / recent-activity)
|
|
10
|
-
* packages/core/src/business/acquisition/crm-priority.ts (priority override shapes)
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
// ---------------------------------------------------------------------------
|
|
14
|
-
// Re-exports from sales/api-schemas (recent-activity surface)
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
|
|
17
|
-
export {
|
|
18
|
-
CrmActivityKindSchema,
|
|
19
|
-
RecentActivityEntrySchema,
|
|
20
|
-
GetRecentActivityQuerySchema,
|
|
21
|
-
GetRecentActivityResponseSchema,
|
|
22
|
-
CrmSchemas,
|
|
23
|
-
type CrmActivityKind,
|
|
24
|
-
type RecentActivityEntry,
|
|
25
|
-
type GetRecentActivityQuery,
|
|
26
|
-
type GetRecentActivityResponse
|
|
27
|
-
} from '../sales/api-schemas'
|
|
28
|
-
|
|
29
|
-
// ---------------------------------------------------------------------------
|
|
30
|
-
// Re-exports from acquisition/crm-priority (priority override surface)
|
|
31
|
-
// ---------------------------------------------------------------------------
|
|
32
|
-
|
|
33
|
-
export {
|
|
34
|
-
CrmPriorityBucketKeySchema,
|
|
35
|
-
CrmPriorityBucketOverrideSchema,
|
|
36
|
-
CrmPriorityOverrideSchema,
|
|
37
|
-
type CrmPriorityBucketOverride,
|
|
38
|
-
type CrmPriorityOverride,
|
|
39
|
-
type ResolvedCrmPriorityRuleConfig
|
|
40
|
-
} from '../acquisition/crm-priority'
|
|
1
|
+
/**
|
|
2
|
+
* CRM API Schemas — SSOT subpath entry
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all CRM-related Zod schemas from their canonical locations
|
|
5
|
+
* so consumers can import from a single surface:
|
|
6
|
+
* import { CrmSchemas, CrmPriorityOverrideSchema } from '@repo/core/business/crm/api-schemas'
|
|
7
|
+
*
|
|
8
|
+
* Schema definitions live in:
|
|
9
|
+
* packages/core/src/business/sales/api-schemas.ts (activity / recent-activity)
|
|
10
|
+
* packages/core/src/business/acquisition/crm-priority.ts (priority override shapes)
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Re-exports from sales/api-schemas (recent-activity surface)
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
CrmActivityKindSchema,
|
|
19
|
+
RecentActivityEntrySchema,
|
|
20
|
+
GetRecentActivityQuerySchema,
|
|
21
|
+
GetRecentActivityResponseSchema,
|
|
22
|
+
CrmSchemas,
|
|
23
|
+
type CrmActivityKind,
|
|
24
|
+
type RecentActivityEntry,
|
|
25
|
+
type GetRecentActivityQuery,
|
|
26
|
+
type GetRecentActivityResponse
|
|
27
|
+
} from '../sales/api-schemas'
|
|
28
|
+
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Re-exports from acquisition/crm-priority (priority override surface)
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
|
|
33
|
+
export {
|
|
34
|
+
CrmPriorityBucketKeySchema,
|
|
35
|
+
CrmPriorityBucketOverrideSchema,
|
|
36
|
+
CrmPriorityOverrideSchema,
|
|
37
|
+
type CrmPriorityBucketOverride,
|
|
38
|
+
type CrmPriorityOverride,
|
|
39
|
+
type ResolvedCrmPriorityRuleConfig
|
|
40
|
+
} from '../acquisition/crm-priority'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './api-schemas'
|
|
1
|
+
export * from './api-schemas'
|