@elevasis/core 0.24.1 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/index.d.ts +239 -86
  2. package/dist/index.js +474 -1346
  3. package/dist/knowledge/index.d.ts +57 -39
  4. package/dist/knowledge/index.js +1 -1
  5. package/dist/organization-model/index.d.ts +239 -86
  6. package/dist/organization-model/index.js +474 -1346
  7. package/dist/test-utils/index.d.ts +24 -31
  8. package/dist/test-utils/index.js +76 -1238
  9. package/package.json +1 -1
  10. package/src/_gen/__tests__/__snapshots__/contracts.md.snap +108 -96
  11. package/src/business/acquisition/api-schemas.test.ts +70 -77
  12. package/src/business/acquisition/api-schemas.ts +21 -42
  13. package/src/business/acquisition/derive-actions.test.ts +11 -21
  14. package/src/business/acquisition/derive-actions.ts +61 -14
  15. package/src/business/acquisition/ontology-validation.ts +4 -4
  16. package/src/business/acquisition/types.ts +7 -8
  17. package/src/execution/engine/llm/adapters/__tests__/openrouter.integration.test.ts +10 -10
  18. package/src/knowledge/__tests__/queries.test.ts +960 -546
  19. package/src/knowledge/format.ts +322 -100
  20. package/src/knowledge/index.ts +18 -5
  21. package/src/knowledge/queries.ts +1004 -240
  22. package/src/organization-model/__tests__/content-kinds-registry.test.ts +35 -210
  23. package/src/organization-model/__tests__/defaults.test.ts +4 -4
  24. package/src/organization-model/__tests__/deprecate-helpers.test.ts +71 -0
  25. package/src/organization-model/__tests__/domains/actions.test.ts +12 -36
  26. package/src/organization-model/__tests__/domains/offerings.test.ts +13 -6
  27. package/src/organization-model/__tests__/domains/resources.test.ts +497 -350
  28. package/src/organization-model/__tests__/domains/systems.test.ts +6 -7
  29. package/src/organization-model/__tests__/flatten-additive-merge.test.ts +68 -80
  30. package/src/organization-model/__tests__/foundation.test.ts +81 -14
  31. package/src/organization-model/__tests__/graph.test.ts +662 -694
  32. package/src/organization-model/__tests__/knowledge.test.ts +31 -17
  33. package/src/organization-model/__tests__/lookup-helpers.test.ts +128 -438
  34. package/src/organization-model/__tests__/migration-helpers.test.ts +362 -591
  35. package/src/organization-model/__tests__/prospecting-ssot.test.ts +68 -103
  36. package/src/organization-model/__tests__/published-zero-leak.test.ts +17 -0
  37. package/src/organization-model/__tests__/recursive-system-schema.test.ts +159 -532
  38. package/src/organization-model/__tests__/resolve.test.ts +88 -49
  39. package/src/organization-model/__tests__/scaffolders.test.ts +93 -0
  40. package/src/organization-model/__tests__/schema.test.ts +65 -56
  41. package/src/organization-model/catalogs/lead-gen.ts +0 -103
  42. package/src/organization-model/defaults.ts +17 -702
  43. package/src/organization-model/domains/actions.ts +116 -333
  44. package/src/organization-model/domains/knowledge.ts +15 -7
  45. package/src/organization-model/domains/projects.ts +4 -4
  46. package/src/organization-model/domains/prospecting.ts +405 -395
  47. package/src/organization-model/domains/resources.ts +206 -135
  48. package/src/organization-model/domains/sales.ts +5 -5
  49. package/src/organization-model/domains/systems.ts +8 -23
  50. package/src/organization-model/graph/build.ts +223 -294
  51. package/src/organization-model/graph/schema.ts +2 -3
  52. package/src/organization-model/graph/types.ts +12 -14
  53. package/src/organization-model/helpers.ts +120 -141
  54. package/src/organization-model/icons.ts +1 -0
  55. package/src/organization-model/index.ts +107 -126
  56. package/src/organization-model/migration-helpers.ts +211 -249
  57. package/src/organization-model/ontology.ts +0 -60
  58. package/src/organization-model/organization-graph.mdx +4 -5
  59. package/src/organization-model/organization-model.mdx +1 -1
  60. package/src/organization-model/published.ts +251 -228
  61. package/src/organization-model/resolve.ts +4 -5
  62. package/src/organization-model/scaffolders/helpers.ts +84 -0
  63. package/src/organization-model/scaffolders/index.ts +19 -0
  64. package/src/organization-model/scaffolders/scaffoldKnowledgeNode.ts +48 -0
  65. package/src/organization-model/scaffolders/scaffoldOntologyRecord.ts +38 -0
  66. package/src/organization-model/scaffolders/scaffoldResource.ts +59 -0
  67. package/src/organization-model/scaffolders/scaffoldSystem.ts +110 -0
  68. package/src/organization-model/scaffolders/types.ts +81 -0
  69. package/src/organization-model/schema.ts +610 -704
  70. package/src/organization-model/types.ts +167 -161
  71. package/src/platform/constants/versions.ts +1 -1
  72. package/src/platform/registry/__tests__/validation.test.ts +23 -0
  73. package/src/platform/registry/validation.ts +13 -2
  74. package/src/reference/_generated/contracts.md +108 -96
  75. package/src/reference/glossary.md +71 -69
  76. package/src/organization-model/content-kinds/config.ts +0 -36
  77. package/src/organization-model/content-kinds/index.ts +0 -78
  78. package/src/organization-model/content-kinds/pipeline.ts +0 -68
  79. package/src/organization-model/content-kinds/registry.ts +0 -44
  80. package/src/organization-model/content-kinds/status.ts +0 -71
  81. package/src/organization-model/content-kinds/template.ts +0 -83
  82. package/src/organization-model/content-kinds/types.ts +0 -117
@@ -1,25 +1,22 @@
1
- import type { OrganizationModel, OrganizationModelSystemEntry } from './types'
2
- import type { ContentNode } from './content-kinds/types'
3
- import type { JsonValue } from './domains/systems'
4
- import type { ResourceEntry } from './domains/resources'
1
+ import type { OrganizationModel, OrganizationModelSystemEntry } from './types'
2
+ import type { JsonValue } from './domains/systems'
3
+ import type { ResourceEntry } from './domains/resources'
4
+ import type { OmTopologyRelationship } from './domains/topology'
5
5
 
6
- // W1A has landed: ContentNode and SystemEntry (with content + subsystems) are now
7
- // defined in their canonical locations.
8
6
  // Phase 4: removed locally-scoped inferred types for deleted compound-domain schemas
9
7
  // (SalesPipeline, ProspectingBuildTemplate, etc.). migration-helpers.ts imports them directly.
10
8
 
11
9
  /**
12
- * SystemEntry extended with the recursive tree slots (`content`, `subsystems`).
10
+ * SystemEntry extended with the recursive tree slots (`systems`, `subsystems`).
13
11
  * `OrganizationModelSystemEntry` is inferred from `SystemEntrySchema: ZodType<SystemEntry>`
14
12
  * so it already carries these fields; this alias re-exports it under the tree-walker name
15
13
  * for clarity at call sites.
16
14
  */
17
- export type { ContentNode }
18
- export type SystemEntryWithTree = OrganizationModelSystemEntry
19
-
20
- function childSystemsOf(system: SystemEntryWithTree): Record<string, SystemEntryWithTree> {
21
- return system.systems ?? system.subsystems ?? {}
22
- }
15
+ export type SystemEntryWithTree = OrganizationModelSystemEntry
16
+
17
+ function childSystemsOf(system: SystemEntryWithTree): Record<string, SystemEntryWithTree> {
18
+ return system.systems ?? system.subsystems ?? {}
19
+ }
23
20
 
24
21
  export function defaultPathFor(id: string): string {
25
22
  return `/${id.replaceAll('.', '/')}`
@@ -130,11 +127,11 @@ export function getSystem(model: OrganizationModel, path: string): SystemEntryWi
130
127
  // to SystemEntryWithTree (which extends it with optional content + subsystems).
131
128
  let current: Record<string, SystemEntryWithTree> = model.systems as Record<string, SystemEntryWithTree>
132
129
  let node: SystemEntryWithTree | undefined
133
- for (const seg of segments) {
134
- node = current[seg]
135
- if (node === undefined) return undefined
136
- current = childSystemsOf(node)
137
- }
130
+ for (const seg of segments) {
131
+ node = current[seg]
132
+ if (node === undefined) return undefined
133
+ current = childSystemsOf(node)
134
+ }
138
135
  return node
139
136
  }
140
137
 
@@ -151,11 +148,11 @@ export function getSystemAncestors(model: OrganizationModel, path: string): Syst
151
148
  const result: SystemEntryWithTree[] = []
152
149
  let current: Record<string, SystemEntryWithTree> = model.systems as Record<string, SystemEntryWithTree>
153
150
  for (const seg of segments) {
154
- const node = current[seg]
155
- if (node === undefined) return []
156
- result.push(node)
157
- current = childSystemsOf(node)
158
- }
151
+ const node = current[seg]
152
+ if (node === undefined) return []
153
+ result.push(node)
154
+ current = childSystemsOf(node)
155
+ }
159
156
  return result
160
157
  }
161
158
 
@@ -171,133 +168,49 @@ export function listAllSystems(model: OrganizationModel): Array<{ path: string;
171
168
 
172
169
  function walk(map: Record<string, SystemEntryWithTree>, prefix: string): void {
173
170
  for (const [localId, system] of Object.entries(map)) {
174
- const fullPath = prefix ? `${prefix}.${localId}` : localId
175
- results.push({ path: fullPath, system })
176
- const childSystems = childSystemsOf(system)
177
- if (Object.keys(childSystems).length > 0) {
178
- walk(childSystems, fullPath)
179
- }
180
- }
181
- }
171
+ const fullPath = prefix ? `${prefix}.${localId}` : localId
172
+ results.push({ path: fullPath, system })
173
+ const childSystems = childSystemsOf(system)
174
+ if (Object.keys(childSystems).length > 0) {
175
+ walk(childSystems, fullPath)
176
+ }
177
+ }
178
+ }
182
179
 
183
180
  walk(model.systems as Record<string, SystemEntryWithTree>, '')
184
181
  return results
185
182
  }
186
183
 
187
- /**
188
- * Resolve a content node by its qualified id (`<system-path>:<local-content-id>`).
189
- *
190
- * `getContent(model, 'sales.crm:default-pipeline')` resolves the `sales.crm`
191
- * system and then looks up `system.content['default-pipeline']`.
192
- *
193
- * Returns `undefined` if the system or local id is not found, or if the
194
- * qualified id does not contain exactly one `:` separator.
195
- */
196
- export function getContent(model: OrganizationModel, qualifiedId: string): ContentNode | undefined {
197
- const colonIndex = qualifiedId.indexOf(':')
198
- if (colonIndex === -1) return undefined
199
- const systemPath = qualifiedId.slice(0, colonIndex)
200
- const localId = qualifiedId.slice(colonIndex + 1)
201
- if (!systemPath || !localId) return undefined
202
- const system = getSystem(model, systemPath)
203
- return system?.content?.[localId]
184
+
185
+ function isPlainJsonObject(value: JsonValue | undefined): value is Record<string, JsonValue> {
186
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
204
187
  }
205
188
 
206
- /**
207
- * Resolve the layered content view for a system.
208
- *
209
- * Returns:
210
- * - `own`: the system's direct `content` map (empty record if none).
211
- * - `inherited`: ancestor content nodes that are NOT shadowed by `own` or by a
212
- * closer ancestor (depth-wins cascade, same as CSS specificity).
213
- *
214
- * Shadow rule: if two ancestors both declare `content['x']`, the deeper one
215
- * wins. If the system itself declares `content['x']`, neither ancestor entry
216
- * for `'x'` appears in `inherited`.
217
- *
218
- * `resolveSystemContent(model, 'sales.crm')` with both `sales.content['x']`
219
- * and `sales.crm.content['x']` defined → `own` contains `'x'`, `inherited`
220
- * contains NO entry for `'x'` from `sales`.
221
- */
222
- export function resolveSystemContent(
223
- model: OrganizationModel,
224
- path: string
225
- ): { own: Record<string, ContentNode>; inherited: Array<{ fromPath: string; node: ContentNode; localId: string }> } {
226
- const ancestors = getSystemAncestors(model, path)
227
- if (ancestors.length === 0) return { own: {}, inherited: [] }
228
-
229
- const system = ancestors[ancestors.length - 1]
230
- const own: Record<string, ContentNode> = { ...(system.content ?? {}) }
231
-
232
- // Collect ancestor entries depth-first (deepest ancestor first, excluding self).
233
- // We reconstruct paths for each ancestor by slicing the path segments.
234
- const segments = path.split('.')
235
- const shadowedIds = new Set(Object.keys(own))
236
- const inherited: Array<{ fromPath: string; node: ContentNode; localId: string }> = []
237
-
238
- // Iterate ancestors from deepest-parent to root so deeper wins.
239
- for (let i = ancestors.length - 2; i >= 0; i--) {
240
- const ancestor = ancestors[i]
241
- const ancestorPath = segments.slice(0, i + 1).join('.')
242
- const contentMap = ancestor.content ?? {}
243
- for (const [localId, node] of Object.entries(contentMap)) {
244
- if (!shadowedIds.has(localId)) {
245
- shadowedIds.add(localId)
246
- inherited.push({ fromPath: ancestorPath, node, localId })
247
- }
248
- }
189
+ function mergeJsonConfig(
190
+ base: Record<string, JsonValue>,
191
+ override: Record<string, JsonValue>
192
+ ): Record<string, JsonValue> {
193
+ const result: Record<string, JsonValue> = { ...base }
194
+
195
+ for (const [key, value] of Object.entries(override)) {
196
+ const existing = result[key]
197
+ result[key] =
198
+ isPlainJsonObject(existing) && isPlainJsonObject(value) ? mergeJsonConfig(existing, value) : value
249
199
  }
250
200
 
251
- // Re-order inherited so shallower ancestors come first (root-first display order).
252
- inherited.reverse()
253
-
254
- return { own, inherited }
255
- }
256
-
257
- function isPlainJsonObject(value: JsonValue | undefined): value is Record<string, JsonValue> {
258
- return typeof value === 'object' && value !== null && !Array.isArray(value)
259
- }
260
-
261
- function mergeJsonConfig(
262
- base: Record<string, JsonValue>,
263
- override: Record<string, JsonValue>
264
- ): Record<string, JsonValue> {
265
- const result: Record<string, JsonValue> = { ...base }
266
-
267
- for (const [key, value] of Object.entries(override)) {
268
- const existing = result[key]
269
- result[key] =
270
- isPlainJsonObject(existing) && isPlainJsonObject(value) ? mergeJsonConfig(existing, value) : value
271
- }
272
-
273
- return result
274
- }
275
-
276
- /**
277
- * Resolve a system's effective local config.
278
- *
279
- * Bridge-era `content` entries with `(kind, type) === ('config', 'kv')` are
280
- * projected first, then first-class `system.config` overlays them. This keeps
281
- * direct config authoring authoritative while continuing to read old content.
282
- */
283
- export function resolveSystemConfig(model: OrganizationModel, path: string): Record<string, JsonValue> {
284
- const system = getSystem(model, path)
285
- if (system === undefined) return {}
286
-
287
- let resolved: Record<string, JsonValue> = {}
288
- for (const node of Object.values(system.content ?? {})) {
289
- if (node.kind !== 'config' || node.type !== 'kv') continue
290
- const entries = node.data?.entries
291
- if (isPlainJsonObject(entries as JsonValue)) {
292
- resolved = mergeJsonConfig(resolved, entries as Record<string, JsonValue>)
293
- }
294
- }
295
-
296
- return mergeJsonConfig(resolved, system.config ?? {})
297
- }
298
-
299
- /**
300
- * Return all resources whose `systemPath` belongs to the given system.
201
+ return result
202
+ }
203
+
204
+ /** Resolve a system's effective local config from first-class `System.config`. */
205
+ export function resolveSystemConfig(model: OrganizationModel, path: string): Record<string, JsonValue> {
206
+ const system = getSystem(model, path)
207
+ if (system === undefined) return {}
208
+
209
+ return mergeJsonConfig({}, system.config ?? {})
210
+ }
211
+
212
+ /**
213
+ * Return all resources whose `systemPath` belongs to the given system.
301
214
  *
302
215
  * When `includeDescendants` is false (default), only resources whose
303
216
  * `systemPath` exactly matches `systemPath` are returned.
@@ -325,3 +238,69 @@ export function getResourcesForSystem(
325
238
  (r) => r.systemPath === systemPath || (includeDescendants && r.systemPath.startsWith(prefix))
326
239
  )
327
240
  }
241
+
242
+ export interface SystemTopologyEdge {
243
+ id: string
244
+ relationship: OmTopologyRelationship
245
+ }
246
+
247
+ export interface SystemDeprecationDependents {
248
+ resources: ResourceEntry[]
249
+ topologyEdges: SystemTopologyEdge[]
250
+ }
251
+
252
+ function systemPathIsInScope(candidate: string, systemPath: string, includeDescendants: boolean): boolean {
253
+ return candidate === systemPath || (includeDescendants && candidate.startsWith(`${systemPath}.`))
254
+ }
255
+
256
+ function topologyRelationshipTouchesSystem(
257
+ relationship: OmTopologyRelationship,
258
+ systemPath: string,
259
+ resourceIds: Set<string>,
260
+ includeDescendants: boolean
261
+ ): boolean {
262
+ if (
263
+ relationship.systemPath !== undefined &&
264
+ systemPathIsInScope(relationship.systemPath, systemPath, includeDescendants)
265
+ ) {
266
+ return true
267
+ }
268
+
269
+ for (const ref of [relationship.from, relationship.to]) {
270
+ if (ref.kind === 'system' && systemPathIsInScope(ref.id, systemPath, includeDescendants)) return true
271
+ if (ref.kind === 'resource' && resourceIds.has(ref.id)) return true
272
+ }
273
+
274
+ return false
275
+ }
276
+
277
+ export function getTopologyEdgesForSystem(
278
+ model: OrganizationModel,
279
+ systemPath: string,
280
+ options: { includeDescendants?: boolean; resourceIds?: Iterable<string> } = {}
281
+ ): SystemTopologyEdge[] {
282
+ const { includeDescendants = false } = options
283
+ const resourceIds = new Set(
284
+ options.resourceIds ?? getResourcesForSystem(model, systemPath, { includeDescendants }).map((r) => r.id)
285
+ )
286
+
287
+ return Object.entries(model.topology?.relationships ?? {})
288
+ .filter(([, relationship]) =>
289
+ topologyRelationshipTouchesSystem(relationship, systemPath, resourceIds, includeDescendants)
290
+ )
291
+ .map(([id, relationship]) => ({ id, relationship }))
292
+ }
293
+
294
+ export function getSystemDeprecationDependents(
295
+ model: OrganizationModel,
296
+ systemPath: string,
297
+ options: { includeDescendants?: boolean } = {}
298
+ ): SystemDeprecationDependents {
299
+ const resources = getResourcesForSystem(model, systemPath, options).filter((resource) => resource.status === 'active')
300
+ const resourceIds = new Set(resources.map((resource) => resource.id))
301
+
302
+ return {
303
+ resources,
304
+ topologyEdges: getTopologyEdgesForSystem(model, systemPath, { ...options, resourceIds })
305
+ }
306
+ }
@@ -8,6 +8,7 @@ export const ORGANIZATION_MODEL_ICON_TOKENS = [
8
8
  'crm',
9
9
  'lead-gen',
10
10
  'projects',
11
+ 'clients',
11
12
  'operations',
12
13
  'monitoring',
13
14
  'knowledge',
@@ -1,134 +1,115 @@
1
- export * from './content-kinds/index'
2
1
  export * from './schema'
3
2
  export * from './types'
4
3
  export * from './ontology'
5
4
  export * from './contracts'
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'
19
- export * from './domains/branding'
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'
5
+ export {
6
+ ORGANIZATION_MODEL_ICON_TOKENS,
7
+ OrganizationModelBuiltinIconTokenSchema,
8
+ OrganizationModelIconTokenSchema
9
+ } from './icons'
10
+ export * from './defaults'
11
+ export * from './resolve'
12
+ export * from './foundation'
13
+ export * from './surface-projection'
14
+ export * from './helpers'
15
+ export * from './migration-helpers'
16
+ export * from './scaffolders'
17
+ export * from './graph'
18
+ export * from './catalogs/lead-gen'
19
+ export * from './domains/branding'
20
+ // Phase 4: OrganizationModelSalesSchema, OrganizationModelProspectingSchema,
21
+ // OrganizationModelProjectsSchema removed. Business-logic exports (StatefulPipelineDefinition,
22
+ // ProspectingBuildTemplateSchema, StatefulPipelineDefinition, etc.) still re-exported below.
23
+ export {
24
+ SalesStageSemanticClassSchema,
25
+ SalesStageSchema,
26
+ SalesPipelineSchema,
27
+ findPipeline,
28
+ getValidStatesForStage
29
+ } from './domains/sales'
30
+ export type {
31
+ StatefulStateDefinition,
32
+ StatefulStageDefinition,
33
+ StatefulPipelineDefinition,
34
+ CrmPriorityBucketKey,
35
+ CrmPriorityBucketDefinition,
36
+ CrmPriorityRuleConfig,
37
+ CrmNextActionMapping,
38
+ CrmNextActionRuleConfig
39
+ } from './domains/sales'
40
+ export {
41
+ ProspectingLifecycleStageSchema,
42
+ RecordColumnConfigSchema,
43
+ RecordColumnsConfigSchema,
44
+ CredentialRequirementSchema,
45
+ ProspectingBuildTemplateStepSchema,
46
+ ProspectingBuildTemplateSchema,
47
+ ACTION_REGISTRY,
48
+ findActionById
49
+ } from './domains/prospecting'
50
+ export type {
51
+ ListBuilderStep,
52
+ RecordColumnConfig,
53
+ CredentialRequirement,
54
+ TemplateName,
55
+ StepName,
56
+ ActionRegistry
57
+ } from './domains/prospecting'
58
+ export { ProjectsDomainStateSchema } from './domains/projects'
76
59
  export * from './domains/systems'
77
60
  export * from './domains/resources'
78
61
  export * from './domains/topology'
79
62
  export {
80
- DEFAULT_ORGANIZATION_MODEL_NAVIGATION,
81
- getSortedSidebarEntries,
82
- NavigationGroupSchema,
83
- OrganizationModelNavigationSchema,
84
- SidebarNavigationSchema,
85
- SidebarNodeSchema,
86
- SidebarSectionSchema,
87
- SidebarSurfaceTargetsSchema,
88
- SurfaceDefinitionSchema,
89
- SurfaceTypeSchema
90
- } from './domains/navigation'
91
- export {
92
- EntitiesDomainSchema,
93
- EntityIdSchema,
94
- EntityLinkKindSchema,
95
- EntityLinkSchema,
96
- EntitySchema
97
- } from './domains/entities'
98
- export {
99
- KnowledgeDomainSchema,
100
- KnowledgeLinkSchema,
101
- KnowledgeTargetKindSchema,
102
- KnowledgeTargetRefSchema,
103
- OrgKnowledgeKindSchema,
104
- OrgKnowledgeNodeSchema
105
- } from './domains/knowledge'
106
- export * from './domains/roles'
107
- export * from './domains/identity'
108
- export * from './domains/policies'
109
- export {
110
- ActionsDomainSchema,
111
- ActionIdSchema,
112
- ActionInvocationKindSchema,
113
- ActionInvocationSchema,
114
- ActionRefSchema,
115
- ActionSchema,
116
- ActionScopeSchema,
117
- ApiEndpointInvocationSchema,
118
- CRM_ACTION_ENTRIES,
119
- DEFAULT_ORGANIZATION_MODEL_ACTIONS,
120
- findOrganizationActionById,
121
- LEAD_GEN_ACTION_ENTRIES,
122
- McpToolInvocationSchema,
123
- ScriptExecutionInvocationSchema,
124
- SlashCommandInvocationSchema
125
- } from './domains/actions'
126
- export type {
127
- ActionsDomain,
128
- Action as OrganizationAction,
129
- ActionId,
130
- ActionInvocation,
131
- ActionInvocationKind,
132
- ActionRef,
133
- ActionScope
134
- } from './domains/actions'
63
+ DEFAULT_ORGANIZATION_MODEL_NAVIGATION,
64
+ getSortedSidebarEntries,
65
+ NavigationGroupSchema,
66
+ OrganizationModelNavigationSchema,
67
+ SidebarNavigationSchema,
68
+ SidebarNodeSchema,
69
+ SidebarSectionSchema,
70
+ SidebarSurfaceTargetsSchema,
71
+ SurfaceDefinitionSchema,
72
+ SurfaceTypeSchema
73
+ } from './domains/navigation'
74
+ export {
75
+ EntitiesDomainSchema,
76
+ EntityIdSchema,
77
+ EntityLinkKindSchema,
78
+ EntityLinkSchema,
79
+ EntitySchema
80
+ } from './domains/entities'
81
+ export {
82
+ KnowledgeDomainSchema,
83
+ KnowledgeLinkSchema,
84
+ KnowledgeTargetKindSchema,
85
+ KnowledgeTargetRefSchema,
86
+ OrgKnowledgeKindSchema,
87
+ OrgKnowledgeNodeSchema
88
+ } from './domains/knowledge'
89
+ export * from './domains/roles'
90
+ export * from './domains/identity'
91
+ export * from './domains/policies'
92
+ export {
93
+ ActionsDomainSchema,
94
+ ActionIdSchema,
95
+ ActionInvocationKindSchema,
96
+ ActionInvocationSchema,
97
+ ActionRefSchema,
98
+ ActionSchema,
99
+ ActionScopeSchema,
100
+ ApiEndpointInvocationSchema,
101
+ DEFAULT_ORGANIZATION_MODEL_ACTIONS,
102
+ findOrganizationActionById,
103
+ McpToolInvocationSchema,
104
+ ScriptExecutionInvocationSchema,
105
+ SlashCommandInvocationSchema
106
+ } from './domains/actions'
107
+ export type {
108
+ ActionsDomain,
109
+ Action as OrganizationAction,
110
+ ActionId,
111
+ ActionInvocation,
112
+ ActionInvocationKind,
113
+ ActionRef,
114
+ ActionScope
115
+ } from './domains/actions'