@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.
- package/dist/index.d.ts +3214 -2501
- package/dist/index.js +3112 -1222
- package/dist/knowledge/index.d.ts +1108 -1264
- package/dist/knowledge/index.js +112 -9
- package/dist/organization-model/index.d.ts +3214 -2501
- package/dist/organization-model/index.js +3112 -1222
- package/dist/test-utils/index.d.ts +985 -1103
- package/dist/test-utils/index.js +2464 -1165
- 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 -80
- package/src/_gen/__tests__/__snapshots__/contracts.md.snap +2389 -2121
- 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 +1493 -1500
- package/src/business/acquisition/build-templates.test.ts +240 -240
- package/src/business/acquisition/build-templates.ts +83 -41
- 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 -151
- 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 -392
- 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 +33 -32
- package/src/knowledge/__tests__/queries.test.ts +633 -541
- package/src/knowledge/format.ts +100 -99
- package/src/knowledge/index.ts +5 -5
- package/src/knowledge/published.ts +5 -5
- package/src/knowledge/queries.ts +274 -222
- package/src/operations/activities/api-schemas.ts +80 -80
- package/src/operations/activities/types.ts +64 -64
- package/src/organization-model/README.md +149 -109
- package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -0
- package/src/organization-model/__tests__/defaults.test.ts +168 -194
- package/src/organization-model/__tests__/domains/actions.test.ts +78 -0
- package/src/organization-model/__tests__/domains/customers.test.ts +48 -44
- package/src/organization-model/__tests__/domains/entities.test.ts +56 -0
- package/src/organization-model/__tests__/domains/goals.test.ts +110 -96
- package/src/organization-model/__tests__/domains/identity.test.ts +4 -3
- package/src/organization-model/__tests__/domains/navigation.test.ts +222 -166
- package/src/organization-model/__tests__/domains/offerings.test.ts +83 -88
- package/src/organization-model/__tests__/domains/policies.test.ts +323 -0
- package/src/organization-model/__tests__/domains/resource-mappings.test.ts +30 -30
- package/src/organization-model/__tests__/domains/resources.test.ts +396 -175
- package/src/organization-model/__tests__/domains/roles.test.ts +463 -402
- package/src/organization-model/__tests__/domains/statuses.test.ts +13 -10
- package/src/organization-model/__tests__/domains/systems.test.ts +209 -193
- package/src/organization-model/__tests__/flatten-additive-merge.test.ts +362 -0
- package/src/organization-model/__tests__/foundation.test.ts +47 -75
- package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -0
- package/src/organization-model/__tests__/graph.test.ts +1336 -149
- package/src/organization-model/__tests__/icons.test.ts +10 -1
- package/src/organization-model/__tests__/knowledge.test.ts +418 -61
- package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -0
- package/src/organization-model/__tests__/migration-helpers.test.ts +591 -0
- package/src/organization-model/__tests__/prospecting-ssot.test.ts +103 -94
- package/src/organization-model/__tests__/recursive-system-schema.test.ts +549 -0
- package/src/organization-model/__tests__/resolve.test.ts +303 -42
- package/src/organization-model/__tests__/schema.test.ts +863 -153
- package/src/organization-model/__tests__/surface-projection.test.ts +284 -174
- package/src/organization-model/catalogs/lead-gen.ts +144 -0
- package/src/organization-model/content-kinds/config.ts +36 -0
- package/src/organization-model/content-kinds/index.ts +78 -0
- package/src/organization-model/content-kinds/pipeline.ts +68 -0
- package/src/organization-model/content-kinds/registry.ts +44 -0
- package/src/organization-model/content-kinds/status.ts +71 -0
- package/src/organization-model/content-kinds/template.ts +83 -0
- package/src/organization-model/content-kinds/types.ts +117 -0
- package/src/organization-model/contracts.ts +27 -17
- package/src/organization-model/defaults.ts +489 -107
- package/src/organization-model/domains/actions.ts +333 -0
- package/src/organization-model/domains/customers.ts +10 -7
- package/src/organization-model/domains/entities.ts +144 -0
- package/src/organization-model/domains/goals.ts +9 -6
- package/src/organization-model/domains/knowledge.ts +128 -54
- package/src/organization-model/domains/navigation.ts +139 -416
- package/src/organization-model/domains/offerings.ts +15 -10
- package/src/organization-model/domains/policies.ts +102 -0
- package/src/organization-model/domains/projects.ts +6 -40
- package/src/organization-model/domains/prospecting.ts +395 -514
- package/src/organization-model/domains/resources.ts +173 -81
- package/src/organization-model/domains/roles.ts +96 -93
- package/src/organization-model/domains/sales.test.ts +218 -218
- package/src/organization-model/domains/sales.ts +380 -589
- package/src/organization-model/domains/shared.ts +8 -8
- package/src/organization-model/domains/statuses.ts +298 -89
- package/src/organization-model/domains/systems.ts +240 -38
- package/src/organization-model/foundation.ts +35 -48
- package/src/organization-model/graph/build.ts +1035 -279
- 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 +77 -56
- package/src/organization-model/graph/types.ts +75 -56
- package/src/organization-model/helpers.ts +312 -59
- package/src/organization-model/icons.ts +78 -66
- package/src/organization-model/index.ts +129 -16
- package/src/organization-model/migration-helpers.ts +252 -0
- package/src/organization-model/ontology.ts +661 -0
- package/src/organization-model/organization-graph.mdx +110 -89
- package/src/organization-model/organization-model.mdx +226 -171
- package/src/organization-model/published.ts +295 -139
- package/src/organization-model/resolve.ts +139 -21
- package/src/organization-model/schema.ts +841 -301
- package/src/organization-model/surface-projection.ts +212 -218
- package/src/organization-model/types.ts +181 -90
- 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 +5 -7
- package/src/platform/registry/__tests__/resource-link.test.ts +35 -30
- package/src/platform/registry/__tests__/resource-registry.integration.test.ts +17 -32
- package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -0
- package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2051
- package/src/platform/registry/__tests__/validation.test.ts +1347 -1343
- 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 -878
- 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 -743
- 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 +2389 -2121
- 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 -3093
- 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 -49
- package/src/organization-model/__tests__/domains/operations.test.ts +0 -203
- package/src/organization-model/domains/features.ts +0 -31
- package/src/organization-model/domains/operations.ts +0 -85
|
@@ -1,20 +1,133 @@
|
|
|
1
|
+
export * from './content-kinds/index'
|
|
1
2
|
export * from './schema'
|
|
2
3
|
export * from './types'
|
|
4
|
+
export * from './ontology'
|
|
3
5
|
export * from './contracts'
|
|
4
|
-
export {
|
|
5
|
-
ORGANIZATION_MODEL_ICON_TOKENS,
|
|
6
|
-
OrganizationModelBuiltinIconTokenSchema,
|
|
7
|
-
OrganizationModelIconTokenSchema
|
|
8
|
-
} from './icons'
|
|
9
|
-
export * from './defaults'
|
|
10
|
-
export * from './resolve'
|
|
11
|
-
export * from './foundation'
|
|
12
|
-
export * from './
|
|
13
|
-
export * from './
|
|
6
|
+
export {
|
|
7
|
+
ORGANIZATION_MODEL_ICON_TOKENS,
|
|
8
|
+
OrganizationModelBuiltinIconTokenSchema,
|
|
9
|
+
OrganizationModelIconTokenSchema
|
|
10
|
+
} from './icons'
|
|
11
|
+
export * from './defaults'
|
|
12
|
+
export * from './resolve'
|
|
13
|
+
export * from './foundation'
|
|
14
|
+
export * from './surface-projection'
|
|
15
|
+
export * from './helpers'
|
|
16
|
+
export * from './migration-helpers'
|
|
17
|
+
export * from './graph'
|
|
18
|
+
export * from './catalogs/lead-gen'
|
|
14
19
|
export * from './domains/branding'
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
// Phase 4: OrganizationModelSalesSchema, OrganizationModelProspectingSchema,
|
|
21
|
+
// OrganizationModelProjectsSchema removed. Business-logic exports (StatefulPipelineDefinition,
|
|
22
|
+
// CRM_PIPELINE_DEFINITION, ProspectingBuildTemplateSchema, etc.) still re-exported below.
|
|
23
|
+
export {
|
|
24
|
+
SalesStageSemanticClassSchema,
|
|
25
|
+
SalesStageSchema,
|
|
26
|
+
SalesPipelineSchema,
|
|
27
|
+
CRM_DISCOVERY_REPLIED_STATE,
|
|
28
|
+
CRM_DISCOVERY_LINK_SENT_STATE,
|
|
29
|
+
CRM_DISCOVERY_NUDGING_STATE,
|
|
30
|
+
CRM_DISCOVERY_BOOKING_CANCELLED_STATE,
|
|
31
|
+
CRM_REPLY_SENT_STATE,
|
|
32
|
+
CRM_FOLLOWUP_1_SENT_STATE,
|
|
33
|
+
CRM_FOLLOWUP_2_SENT_STATE,
|
|
34
|
+
CRM_FOLLOWUP_3_SENT_STATE,
|
|
35
|
+
CRM_PIPELINE_DEFINITION,
|
|
36
|
+
CRM_PRIORITY_BUCKETS,
|
|
37
|
+
DEFAULT_CRM_PRIORITY_RULE_CONFIG,
|
|
38
|
+
DEFAULT_CRM_NEXT_ACTION_RULE_CONFIG,
|
|
39
|
+
ACQ_LIST_MEMBERS_LEAD_GEN_PIPELINE,
|
|
40
|
+
ACQ_LIST_COMPANIES_LEAD_GEN_PIPELINE,
|
|
41
|
+
LEAD_GEN_PIPELINE_DEFINITIONS,
|
|
42
|
+
findPipeline,
|
|
43
|
+
getValidStatesForStage,
|
|
44
|
+
LEAD_GEN_STAGE_CATALOG
|
|
45
|
+
} from './domains/sales'
|
|
46
|
+
export type {
|
|
47
|
+
StatefulStateDefinition,
|
|
48
|
+
StatefulStageDefinition,
|
|
49
|
+
StatefulPipelineDefinition,
|
|
50
|
+
CrmPriorityBucketKey,
|
|
51
|
+
CrmPriorityBucketDefinition,
|
|
52
|
+
CrmPriorityRuleConfig,
|
|
53
|
+
CrmNextActionMapping,
|
|
54
|
+
CrmNextActionRuleConfig
|
|
55
|
+
} from './domains/sales'
|
|
56
|
+
export {
|
|
57
|
+
ProspectingLifecycleStageSchema,
|
|
58
|
+
RecordColumnConfigSchema,
|
|
59
|
+
RecordColumnsConfigSchema,
|
|
60
|
+
CredentialRequirementSchema,
|
|
61
|
+
ProspectingBuildTemplateStepSchema,
|
|
62
|
+
ProspectingBuildTemplateSchema,
|
|
63
|
+
PROSPECTING_STEPS,
|
|
64
|
+
ACTION_REGISTRY,
|
|
65
|
+
findActionById
|
|
66
|
+
} from './domains/prospecting'
|
|
67
|
+
export type {
|
|
68
|
+
ListBuilderStep,
|
|
69
|
+
RecordColumnConfig,
|
|
70
|
+
CredentialRequirement,
|
|
71
|
+
TemplateName,
|
|
72
|
+
StepName,
|
|
73
|
+
ActionRegistry
|
|
74
|
+
} from './domains/prospecting'
|
|
75
|
+
export { ProjectsDomainStateSchema } from './domains/projects'
|
|
76
|
+
export * from './domains/systems'
|
|
77
|
+
export * from './domains/resources'
|
|
78
|
+
export {
|
|
79
|
+
DEFAULT_ORGANIZATION_MODEL_NAVIGATION,
|
|
80
|
+
getSortedSidebarEntries,
|
|
81
|
+
NavigationGroupSchema,
|
|
82
|
+
OrganizationModelNavigationSchema,
|
|
83
|
+
SidebarNavigationSchema,
|
|
84
|
+
SidebarNodeSchema,
|
|
85
|
+
SidebarSectionSchema,
|
|
86
|
+
SidebarSurfaceTargetsSchema,
|
|
87
|
+
SurfaceDefinitionSchema,
|
|
88
|
+
SurfaceTypeSchema
|
|
89
|
+
} from './domains/navigation'
|
|
90
|
+
export {
|
|
91
|
+
EntitiesDomainSchema,
|
|
92
|
+
EntityIdSchema,
|
|
93
|
+
EntityLinkKindSchema,
|
|
94
|
+
EntityLinkSchema,
|
|
95
|
+
EntitySchema
|
|
96
|
+
} from './domains/entities'
|
|
97
|
+
export {
|
|
98
|
+
KnowledgeDomainSchema,
|
|
99
|
+
KnowledgeLinkSchema,
|
|
100
|
+
KnowledgeTargetKindSchema,
|
|
101
|
+
KnowledgeTargetRefSchema,
|
|
102
|
+
OrgKnowledgeKindSchema,
|
|
103
|
+
OrgKnowledgeNodeSchema
|
|
104
|
+
} from './domains/knowledge'
|
|
105
|
+
export * from './domains/roles'
|
|
106
|
+
export * from './domains/identity'
|
|
107
|
+
export * from './domains/policies'
|
|
108
|
+
export {
|
|
109
|
+
ActionsDomainSchema,
|
|
110
|
+
ActionIdSchema,
|
|
111
|
+
ActionInvocationKindSchema,
|
|
112
|
+
ActionInvocationSchema,
|
|
113
|
+
ActionRefSchema,
|
|
114
|
+
ActionSchema,
|
|
115
|
+
ActionScopeSchema,
|
|
116
|
+
ApiEndpointInvocationSchema,
|
|
117
|
+
CRM_ACTION_ENTRIES,
|
|
118
|
+
DEFAULT_ORGANIZATION_MODEL_ACTIONS,
|
|
119
|
+
findOrganizationActionById,
|
|
120
|
+
LEAD_GEN_ACTION_ENTRIES,
|
|
121
|
+
McpToolInvocationSchema,
|
|
122
|
+
ScriptExecutionInvocationSchema,
|
|
123
|
+
SlashCommandInvocationSchema
|
|
124
|
+
} from './domains/actions'
|
|
125
|
+
export type {
|
|
126
|
+
ActionsDomain,
|
|
127
|
+
Action as OrganizationAction,
|
|
128
|
+
ActionId,
|
|
129
|
+
ActionInvocation,
|
|
130
|
+
ActionInvocationKind,
|
|
131
|
+
ActionRef,
|
|
132
|
+
ActionScope
|
|
133
|
+
} from './domains/actions'
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration helpers — Phase 4 internals swap
|
|
3
|
+
*
|
|
4
|
+
* External signatures are UNCHANGED from the pre-Phase-4 era so callers remain
|
|
5
|
+
* mechanical. Internally, compatibility reads for old compound-domain data
|
|
6
|
+
* walk System.content via listAllSystems() and filter by (kind, type).
|
|
7
|
+
*
|
|
8
|
+
* Compatibility registry entries read:
|
|
9
|
+
* 'schema:pipeline' — one pipeline per owning system
|
|
10
|
+
* 'schema:stage' — stage within a pipeline; parentContentId = pipeline local id
|
|
11
|
+
* 'schema:template' — prospecting build template
|
|
12
|
+
* 'schema:template-step' — step within a template; parentContentId = template local id
|
|
13
|
+
* 'schema:status-flow' — status set for a project/milestone/task scope
|
|
14
|
+
* 'schema:status' — single status within a flow; parentContentId = status-flow local id
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import type { OrganizationModel } from './types'
|
|
18
|
+
import type { z } from 'zod'
|
|
19
|
+
import type { SalesPipelineSchema, SalesStageSchema } from './domains/sales'
|
|
20
|
+
import type { ProspectingBuildTemplateSchema, ProspectingLifecycleStageSchema } from './domains/prospecting'
|
|
21
|
+
import type { ProjectsDomainStateSchema } from './domains/projects'
|
|
22
|
+
import { listAllSystems } from './helpers'
|
|
23
|
+
|
|
24
|
+
// Compatibility boundary: these helpers intentionally keep old tenant
|
|
25
|
+
// System.content schema nodes readable. New schema/catalog authoring belongs in
|
|
26
|
+
// System.ontology, and new system-local settings belong in System.config.
|
|
27
|
+
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Locally-scoped inferred types — external signatures use these shapes.
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
type Pipeline = z.infer<typeof SalesPipelineSchema>
|
|
32
|
+
type Stage = z.infer<typeof SalesStageSchema>
|
|
33
|
+
type BuildTemplate = z.infer<typeof ProspectingBuildTemplateSchema>
|
|
34
|
+
type ProspectingStage = z.infer<typeof ProspectingLifecycleStageSchema>
|
|
35
|
+
type ProjectStatus = z.infer<typeof ProjectsDomainStateSchema>
|
|
36
|
+
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Sales — Pipelines + Stages
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Return all sales pipelines defined in the model, each tagged with the
|
|
43
|
+
* system path of the owning system.
|
|
44
|
+
*
|
|
45
|
+
* Compatibility bridge: walks every system via listAllSystems(), finds content nodes where
|
|
46
|
+
* (kind, type) === ('schema', 'pipeline'), and reconstructs the Pipeline shape
|
|
47
|
+
* by pulling sibling stage content nodes (parentContentId === pipeline local id).
|
|
48
|
+
*/
|
|
49
|
+
export function getAllPipelines(model: OrganizationModel): Array<{ systemPath: string; pipeline: Pipeline }> {
|
|
50
|
+
const results: Array<{ systemPath: string; pipeline: Pipeline }> = []
|
|
51
|
+
|
|
52
|
+
for (const { path: systemPath, system } of listAllSystems(model)) {
|
|
53
|
+
const content = system.content ?? {}
|
|
54
|
+
|
|
55
|
+
for (const [localId, node] of Object.entries(content)) {
|
|
56
|
+
if (node.kind !== 'schema' || node.type !== 'pipeline') continue
|
|
57
|
+
|
|
58
|
+
const data = (node.data ?? {}) as Record<string, unknown>
|
|
59
|
+
const stages: Stage[] = Object.entries(content)
|
|
60
|
+
.filter(([, s]) => s.kind === 'schema' && s.type === 'stage' && s.parentContentId === localId)
|
|
61
|
+
.map(([stageLocalId, s]) => {
|
|
62
|
+
const sd = (s.data ?? {}) as Record<string, unknown>
|
|
63
|
+
return {
|
|
64
|
+
id: stageLocalId,
|
|
65
|
+
label: s.label ?? stageLocalId,
|
|
66
|
+
order: typeof sd.order === 'number' ? sd.order : 0,
|
|
67
|
+
semanticClass: (sd.semanticClass as Stage['semanticClass']) ?? 'open',
|
|
68
|
+
surfaceIds: Array.isArray(sd.surfaceIds) ? (sd.surfaceIds as string[]) : [],
|
|
69
|
+
resourceIds: Array.isArray(sd.resourceIds) ? (sd.resourceIds as string[]) : [],
|
|
70
|
+
color: typeof sd.color === 'string' ? sd.color : undefined
|
|
71
|
+
} satisfies Stage
|
|
72
|
+
})
|
|
73
|
+
.sort((a, b) => a.order - b.order)
|
|
74
|
+
|
|
75
|
+
const pipeline: Pipeline = {
|
|
76
|
+
id: localId,
|
|
77
|
+
label: node.label ?? localId,
|
|
78
|
+
entityId: typeof data.entityId === 'string' ? data.entityId : '',
|
|
79
|
+
stages,
|
|
80
|
+
...(typeof node.description === 'string' ? { description: node.description } : {})
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
results.push({ systemPath, pipeline })
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return results
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Return the stages belonging to a given pipeline, identified by systemPath + pipelineLocalId.
|
|
92
|
+
*
|
|
93
|
+
* Compatibility bridge: resolves the system at systemPath, filters its content for stage nodes
|
|
94
|
+
* where parentContentId === pipelineLocalId.
|
|
95
|
+
*
|
|
96
|
+
* @param model - The resolved organization model.
|
|
97
|
+
* @param systemPath - Dot-separated path to the owning system (e.g. 'sales.crm').
|
|
98
|
+
* @param pipelineLocalId - The local content id of the target pipeline node.
|
|
99
|
+
*/
|
|
100
|
+
export function getStagesInPipeline(model: OrganizationModel, systemPath: string, pipelineLocalId: string): Stage[] {
|
|
101
|
+
const allSystems = listAllSystems(model)
|
|
102
|
+
const entry = allSystems.find((s) => s.path === systemPath)
|
|
103
|
+
if (!entry) return []
|
|
104
|
+
|
|
105
|
+
const content = entry.system.content ?? {}
|
|
106
|
+
return Object.entries(content)
|
|
107
|
+
.filter(([, node]) => node.kind === 'schema' && node.type === 'stage' && node.parentContentId === pipelineLocalId)
|
|
108
|
+
.map(([stageLocalId, s]) => {
|
|
109
|
+
const sd = (s.data ?? {}) as Record<string, unknown>
|
|
110
|
+
return {
|
|
111
|
+
id: stageLocalId,
|
|
112
|
+
label: s.label ?? stageLocalId,
|
|
113
|
+
order: typeof sd.order === 'number' ? sd.order : 0,
|
|
114
|
+
semanticClass: (sd.semanticClass as Stage['semanticClass']) ?? 'open',
|
|
115
|
+
surfaceIds: Array.isArray(sd.surfaceIds) ? (sd.surfaceIds as string[]) : [],
|
|
116
|
+
resourceIds: Array.isArray(sd.resourceIds) ? (sd.resourceIds as string[]) : [],
|
|
117
|
+
color: typeof sd.color === 'string' ? sd.color : undefined
|
|
118
|
+
} satisfies Stage
|
|
119
|
+
})
|
|
120
|
+
.sort((a, b) => a.order - b.order)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// ---------------------------------------------------------------------------
|
|
124
|
+
// Prospecting — Build templates
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Return all prospecting build templates defined in the model.
|
|
129
|
+
*
|
|
130
|
+
* Compatibility bridge: walks every system, finds content nodes where
|
|
131
|
+
* (kind, type) === ('schema', 'template'), reconstructs BuildTemplate shape
|
|
132
|
+
* by pulling sibling template-step nodes (parentContentId === template local id).
|
|
133
|
+
*/
|
|
134
|
+
export function getAllBuildTemplates(model: OrganizationModel): BuildTemplate[] {
|
|
135
|
+
const results: BuildTemplate[] = []
|
|
136
|
+
|
|
137
|
+
for (const { system } of listAllSystems(model)) {
|
|
138
|
+
const content = system.content ?? {}
|
|
139
|
+
|
|
140
|
+
for (const [localId, node] of Object.entries(content)) {
|
|
141
|
+
if (node.kind !== 'schema' || node.type !== 'template') continue
|
|
142
|
+
const nd = (node.data ?? {}) as Record<string, unknown>
|
|
143
|
+
|
|
144
|
+
const steps = Object.entries(content)
|
|
145
|
+
.filter(([, s]) => s.kind === 'schema' && s.type === 'template-step' && s.parentContentId === localId)
|
|
146
|
+
.map(([stepLocalId, s]) => {
|
|
147
|
+
const sd = (s.data ?? {}) as Record<string, unknown>
|
|
148
|
+
return {
|
|
149
|
+
id: stepLocalId,
|
|
150
|
+
label: s.label ?? stepLocalId,
|
|
151
|
+
...(s.description ? { description: s.description } : {}),
|
|
152
|
+
// Pass through all data fields — template-step payload is richer than Pipeline;
|
|
153
|
+
// Bridge readers preserve the historical shape for round-trip fidelity.
|
|
154
|
+
...sd
|
|
155
|
+
}
|
|
156
|
+
})
|
|
157
|
+
|
|
158
|
+
results.push({
|
|
159
|
+
id: localId,
|
|
160
|
+
label: node.label ?? localId,
|
|
161
|
+
...(node.description ? { description: node.description } : {}),
|
|
162
|
+
...(typeof nd.color === 'string' ? { color: nd.color } : {}),
|
|
163
|
+
// BuildTemplate requires steps array — cast via spread; Wave 4 adds type-safe assertions.
|
|
164
|
+
steps: steps as BuildTemplate['steps']
|
|
165
|
+
})
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return results
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Return the prospecting lifecycle stages for a given entity kind.
|
|
174
|
+
*
|
|
175
|
+
* Compatibility bridge: walks every system, finds content nodes where
|
|
176
|
+
* (kind, type) === ('schema', 'stage') AND data.entityKind === kind.
|
|
177
|
+
* Prospecting stages are distinguished from pipeline stages by the presence of
|
|
178
|
+
* data.entityKind ('company' | 'contact') retained on bridge compatibility nodes.
|
|
179
|
+
*
|
|
180
|
+
* @param kind - 'company' or 'contact'.
|
|
181
|
+
*/
|
|
182
|
+
export function getAllProspectingStages(model: OrganizationModel, kind: 'company' | 'contact'): ProspectingStage[] {
|
|
183
|
+
const results: ProspectingStage[] = []
|
|
184
|
+
|
|
185
|
+
for (const { system } of listAllSystems(model)) {
|
|
186
|
+
const content = system.content ?? {}
|
|
187
|
+
|
|
188
|
+
for (const [localId, node] of Object.entries(content)) {
|
|
189
|
+
if (node.kind !== 'schema' || node.type !== 'stage') continue
|
|
190
|
+
const sd = (node.data ?? {}) as Record<string, unknown>
|
|
191
|
+
if (sd.entityKind !== kind) continue
|
|
192
|
+
|
|
193
|
+
results.push({
|
|
194
|
+
id: localId,
|
|
195
|
+
label: node.label ?? localId,
|
|
196
|
+
order: typeof sd.order === 'number' ? sd.order : 0,
|
|
197
|
+
...(typeof sd.color === 'string' ? { color: sd.color } : {}),
|
|
198
|
+
...(node.description ? { description: node.description } : {})
|
|
199
|
+
} satisfies ProspectingStage)
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
return results.sort((a, b) => a.order - b.order)
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// ---------------------------------------------------------------------------
|
|
207
|
+
// Projects — Statuses
|
|
208
|
+
// ---------------------------------------------------------------------------
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Return the project statuses for a given entity type.
|
|
212
|
+
*
|
|
213
|
+
* Compatibility bridge: walks every system, finds status-flow content nodes where
|
|
214
|
+
* data.appliesTo === appliesTo, then collects their child status nodes
|
|
215
|
+
* (parentContentId === status-flow local id), sorted by order.
|
|
216
|
+
*
|
|
217
|
+
* @param appliesTo - 'project', 'milestone', or 'task'.
|
|
218
|
+
*/
|
|
219
|
+
export function getAllProjectStatuses(
|
|
220
|
+
model: OrganizationModel,
|
|
221
|
+
appliesTo: 'project' | 'milestone' | 'task'
|
|
222
|
+
): ProjectStatus[] {
|
|
223
|
+
const results: ProjectStatus[] = []
|
|
224
|
+
|
|
225
|
+
for (const { system } of listAllSystems(model)) {
|
|
226
|
+
const content = system.content ?? {}
|
|
227
|
+
|
|
228
|
+
// Find the status-flow node for this appliesTo scope.
|
|
229
|
+
for (const [flowLocalId, flowNode] of Object.entries(content)) {
|
|
230
|
+
if (flowNode.kind !== 'schema' || flowNode.type !== 'status-flow') continue
|
|
231
|
+
const fd = (flowNode.data ?? {}) as Record<string, unknown>
|
|
232
|
+
if (fd.appliesTo !== appliesTo) continue
|
|
233
|
+
|
|
234
|
+
// Collect child status nodes.
|
|
235
|
+
for (const [statusLocalId, statusNode] of Object.entries(content)) {
|
|
236
|
+
if (statusNode.kind !== 'schema' || statusNode.type !== 'status') continue
|
|
237
|
+
if (statusNode.parentContentId !== flowLocalId) continue
|
|
238
|
+
|
|
239
|
+
const sd = (statusNode.data ?? {}) as Record<string, unknown>
|
|
240
|
+
results.push({
|
|
241
|
+
id: statusLocalId,
|
|
242
|
+
label: statusNode.label ?? statusLocalId,
|
|
243
|
+
order: typeof sd.order === 'number' ? sd.order : 0,
|
|
244
|
+
...(typeof sd.color === 'string' ? { color: sd.color } : {}),
|
|
245
|
+
...(statusNode.description ? { description: statusNode.description } : {})
|
|
246
|
+
} satisfies ProjectStatus)
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
return results.sort((a, b) => a.order - b.order)
|
|
252
|
+
}
|