@elevasis/core 0.22.0 → 0.23.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 (112) hide show
  1. package/dist/index.d.ts +2330 -2391
  2. package/dist/index.js +2322 -1147
  3. package/dist/knowledge/index.d.ts +702 -1136
  4. package/dist/knowledge/index.js +9 -9
  5. package/dist/organization-model/index.d.ts +2330 -2391
  6. package/dist/organization-model/index.js +2322 -1147
  7. package/dist/test-utils/index.d.ts +703 -1106
  8. package/dist/test-utils/index.js +1735 -1089
  9. package/package.json +1 -1
  10. package/src/__tests__/template-core-compatibility.test.ts +11 -79
  11. package/src/_gen/__tests__/__snapshots__/contracts.md.snap +360 -98
  12. package/src/business/acquisition/api-schemas.test.ts +2 -2
  13. package/src/business/acquisition/api-schemas.ts +7 -9
  14. package/src/business/acquisition/build-templates.test.ts +4 -4
  15. package/src/business/acquisition/build-templates.ts +72 -30
  16. package/src/business/acquisition/crm-state-actions.test.ts +13 -11
  17. package/src/business/acquisition/types.ts +7 -3
  18. package/src/execution/engine/agent/core/types.ts +1 -1
  19. package/src/execution/engine/workflow/types.ts +2 -2
  20. package/src/knowledge/README.md +8 -7
  21. package/src/knowledge/__tests__/queries.test.ts +74 -73
  22. package/src/knowledge/format.ts +10 -9
  23. package/src/knowledge/index.ts +1 -1
  24. package/src/knowledge/published.ts +1 -1
  25. package/src/knowledge/queries.ts +26 -25
  26. package/src/organization-model/README.md +66 -26
  27. package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -0
  28. package/src/organization-model/__tests__/defaults.test.ts +72 -98
  29. package/src/organization-model/__tests__/domains/actions.test.ts +56 -0
  30. package/src/organization-model/__tests__/domains/customers.test.ts +299 -295
  31. package/src/organization-model/__tests__/domains/entities.test.ts +56 -0
  32. package/src/organization-model/__tests__/domains/goals.test.ts +493 -479
  33. package/src/organization-model/__tests__/domains/identity.test.ts +280 -279
  34. package/src/organization-model/__tests__/domains/navigation.test.ts +268 -212
  35. package/src/organization-model/__tests__/domains/offerings.test.ts +414 -419
  36. package/src/organization-model/__tests__/domains/policies.test.ts +323 -0
  37. package/src/organization-model/__tests__/domains/resource-mappings.test.ts +271 -271
  38. package/src/organization-model/__tests__/domains/resources.test.ts +159 -37
  39. package/src/organization-model/__tests__/domains/roles.test.ts +147 -86
  40. package/src/organization-model/__tests__/domains/statuses.test.ts +246 -243
  41. package/src/organization-model/__tests__/domains/systems.test.ts +67 -51
  42. package/src/organization-model/__tests__/flatten-additive-merge.test.ts +361 -0
  43. package/src/organization-model/__tests__/foundation.test.ts +74 -102
  44. package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -0
  45. package/src/organization-model/__tests__/graph.test.ts +899 -71
  46. package/src/organization-model/__tests__/knowledge.test.ts +173 -52
  47. package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -0
  48. package/src/organization-model/__tests__/migration-helpers.test.ts +591 -0
  49. package/src/organization-model/__tests__/prospecting-ssot.test.ts +36 -27
  50. package/src/organization-model/__tests__/recursive-system-schema.test.ts +520 -0
  51. package/src/organization-model/__tests__/resolve.test.ts +174 -23
  52. package/src/organization-model/__tests__/schema.test.ts +291 -114
  53. package/src/organization-model/__tests__/surface-projection.test.ts +207 -97
  54. package/src/organization-model/catalogs/lead-gen.ts +144 -0
  55. package/src/organization-model/content-kinds/config.ts +36 -0
  56. package/src/organization-model/content-kinds/index.ts +74 -0
  57. package/src/organization-model/content-kinds/pipeline.ts +68 -0
  58. package/src/organization-model/content-kinds/registry.ts +44 -0
  59. package/src/organization-model/content-kinds/status.ts +71 -0
  60. package/src/organization-model/content-kinds/template.ts +83 -0
  61. package/src/organization-model/content-kinds/types.ts +117 -0
  62. package/src/organization-model/contracts.ts +13 -3
  63. package/src/organization-model/defaults.ts +488 -96
  64. package/src/organization-model/domains/actions.ts +239 -0
  65. package/src/organization-model/domains/customers.ts +78 -75
  66. package/src/organization-model/domains/entities.ts +144 -0
  67. package/src/organization-model/domains/goals.ts +83 -80
  68. package/src/organization-model/domains/knowledge.ts +74 -16
  69. package/src/organization-model/domains/navigation.ts +107 -384
  70. package/src/organization-model/domains/offerings.ts +71 -66
  71. package/src/organization-model/domains/policies.ts +102 -0
  72. package/src/organization-model/domains/projects.ts +14 -48
  73. package/src/organization-model/domains/prospecting.ts +62 -181
  74. package/src/organization-model/domains/resources.ts +81 -24
  75. package/src/organization-model/domains/roles.ts +13 -10
  76. package/src/organization-model/domains/sales.ts +10 -219
  77. package/src/organization-model/domains/shared.ts +57 -57
  78. package/src/organization-model/domains/statuses.ts +339 -130
  79. package/src/organization-model/domains/systems.ts +186 -29
  80. package/src/organization-model/foundation.ts +54 -67
  81. package/src/organization-model/graph/build.ts +682 -54
  82. package/src/organization-model/graph/link.ts +1 -1
  83. package/src/organization-model/graph/schema.ts +24 -9
  84. package/src/organization-model/graph/types.ts +20 -7
  85. package/src/organization-model/helpers.ts +231 -26
  86. package/src/organization-model/index.ts +116 -5
  87. package/src/organization-model/migration-helpers.ts +249 -0
  88. package/src/organization-model/organization-graph.mdx +16 -15
  89. package/src/organization-model/organization-model.mdx +89 -41
  90. package/src/organization-model/published.ts +120 -18
  91. package/src/organization-model/resolve.ts +117 -54
  92. package/src/organization-model/schema.ts +561 -140
  93. package/src/organization-model/surface-projection.ts +116 -122
  94. package/src/organization-model/types.ts +102 -21
  95. package/src/platform/constants/versions.ts +1 -1
  96. package/src/platform/registry/__tests__/command-view.test.ts +6 -8
  97. package/src/platform/registry/__tests__/resource-link.test.ts +13 -8
  98. package/src/platform/registry/__tests__/resource-registry.integration.test.ts +16 -31
  99. package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -0
  100. package/src/platform/registry/__tests__/resource-registry.test.ts +9 -7
  101. package/src/platform/registry/__tests__/validation.test.ts +15 -11
  102. package/src/platform/registry/resource-registry.ts +20 -8
  103. package/src/platform/registry/serialization.ts +7 -7
  104. package/src/platform/registry/types.ts +3 -3
  105. package/src/platform/registry/validation.ts +17 -15
  106. package/src/reference/_generated/contracts.md +362 -99
  107. package/src/reference/glossary.md +18 -18
  108. package/src/supabase/database.types.ts +60 -0
  109. package/src/test-utils/test-utils.test.ts +1 -6
  110. package/src/organization-model/__tests__/domains/operations.test.ts +0 -203
  111. package/src/organization-model/domains/features.ts +0 -31
  112. package/src/organization-model/domains/operations.ts +0 -85
@@ -15,34 +15,58 @@ description: Auto-generated TypeScript contracts for SDK consumers. Do not edit
15
15
  export type OrganizationModel = z.infer<typeof OrganizationModelSchema>
16
16
  ```
17
17
 
18
+ ### `OrganizationModelDomainKey`
19
+
20
+ ```typescript
21
+ export type OrganizationModelDomainKey = z.infer<typeof OrganizationModelDomainKeySchema>
22
+ ```
23
+
24
+ ### `OrganizationModelDomainMetadata`
25
+
26
+ ```typescript
27
+ export type OrganizationModelDomainMetadata = z.infer<typeof OrganizationModelDomainMetadataSchema>
28
+ ```
29
+
30
+ ### `OrganizationModelDomainMetadataByDomain`
31
+
32
+ ```typescript
33
+ export type OrganizationModelDomainMetadataByDomain = z.infer<typeof OrganizationModelDomainMetadataByDomainSchema>
34
+ ```
35
+
18
36
  ### `OrganizationModelBranding`
19
37
 
20
38
  ```typescript
21
39
  export type OrganizationModelBranding = z.infer<typeof OrganizationModelBrandingSchema>
22
40
  ```
23
41
 
24
- ### `OrganizationModelSales`
42
+ ### `SalesPipeline`
25
43
 
26
44
  ```typescript
27
- export type OrganizationModelSales = z.infer<typeof OrganizationModelSalesSchema>
45
+ export type SalesPipeline = z.infer<typeof SalesPipelineSchema>
28
46
  ```
29
47
 
30
- ### `OrganizationModelProspecting`
48
+ ### `SalesStage`
31
49
 
32
50
  ```typescript
33
- export type OrganizationModelProspecting = z.infer<typeof OrganizationModelProspectingSchema>
51
+ export type SalesStage = z.infer<typeof SalesStageSchema>
34
52
  ```
35
53
 
36
- ### `OrganizationModelProjects`
54
+ ### `ProspectingBuildTemplate`
37
55
 
38
56
  ```typescript
39
- export type OrganizationModelProjects = z.infer<typeof OrganizationModelProjectsSchema>
57
+ export type ProspectingBuildTemplate = z.infer<typeof ProspectingBuildTemplateSchema>
40
58
  ```
41
59
 
42
- ### `OrganizationModelFeature`
60
+ ### `ProspectingLifecycleStage`
43
61
 
44
62
  ```typescript
45
- export type OrganizationModelFeature = z.infer<typeof FeatureSchema>
63
+ export type ProspectingLifecycleStage = z.infer<typeof ProspectingLifecycleStageSchema>
64
+ ```
65
+
66
+ ### `ProjectsDomainState`
67
+
68
+ ```typescript
69
+ export type ProjectsDomainState = z.infer<typeof ProjectsDomainStateSchema>
46
70
  ```
47
71
 
48
72
  ### `NodeIdPath`
@@ -57,58 +81,82 @@ export type NodeIdPath = z.infer<typeof NodeIdPathSchema>
57
81
  export type NodeIdString = z.infer<typeof NodeIdStringSchema>
58
82
  ```
59
83
 
84
+ ### `OrganizationModelSurface`
85
+
86
+ ```typescript
87
+ export type OrganizationModelSurface = z.infer<typeof SurfaceDefinitionSchema>
88
+ ```
89
+
90
+ ### `OrganizationModelNavigationGroup`
91
+
92
+ ```typescript
93
+ export type OrganizationModelNavigationGroup = z.infer<typeof NavigationGroupSchema>
94
+ ```
95
+
60
96
  ### `OrganizationModelNavigation`
61
97
 
62
98
  ```typescript
63
99
  export type OrganizationModelNavigation = z.infer<typeof OrganizationModelNavigationSchema>
64
100
  ```
65
101
 
66
- ### `OrganizationModelSurface`
102
+ ### `OrganizationModelSidebar`
67
103
 
68
104
  ```typescript
69
- export type OrganizationModelSurface = z.infer<typeof SurfaceDefinitionSchema>
105
+ export type OrganizationModelSidebar = z.infer<typeof SidebarNavigationSchema>
70
106
  ```
71
107
 
72
- ### `OrganizationModelTechStackEntry`
108
+ ### `OrganizationModelSidebarSection`
73
109
 
74
110
  ```typescript
75
- export type OrganizationModelTechStackEntry = z.infer<typeof TechStackEntrySchema>
111
+ export type OrganizationModelSidebarSection = z.infer<typeof SidebarSectionSchema>
76
112
  ```
77
113
 
78
- ### `OrganizationModelStatuses`
114
+ ### `OrganizationModelSidebarNode`
79
115
 
80
116
  ```typescript
81
- export type OrganizationModelStatuses = z.infer<typeof StatusesDomainSchema>
117
+ export type OrganizationModelSidebarNode = z.infer<typeof SidebarNodeSchema>
82
118
  ```
83
119
 
84
- ### `OrganizationModelStatusEntry`
120
+ ### `OrganizationModelSidebarSurfaceTargets`
85
121
 
86
122
  ```typescript
87
- export type OrganizationModelStatusEntry = z.infer<typeof StatusEntrySchema>
123
+ export type OrganizationModelSidebarSurfaceTargets = z.infer<typeof SidebarSurfaceTargetsSchema>
88
124
  ```
89
125
 
90
- ### `OrganizationModelStatusSemanticClass`
126
+ ### `OrganizationModelSidebarSurfaceNode`
91
127
 
92
128
  ```typescript
93
- export type OrganizationModelStatusSemanticClass = z.infer<typeof StatusSemanticClassSchema>
129
+ export type OrganizationModelSidebarSurfaceNode = Extract<OrganizationModelSidebarNode, { type: 'surface' }>
94
130
  ```
95
131
 
96
- ### `OrganizationModelOperations`
132
+ ### `OrganizationModelSidebarGroupNode`
97
133
 
98
134
  ```typescript
99
- export type OrganizationModelOperations = z.infer<typeof OperationsDomainSchema>
135
+ export type OrganizationModelSidebarGroupNode = Extract<OrganizationModelSidebarNode, { type: 'group' }>
100
136
  ```
101
137
 
102
- ### `OrganizationModelOperationEntry`
138
+ ### `OrganizationModelTechStackEntry`
103
139
 
104
140
  ```typescript
105
- export type OrganizationModelOperationEntry = z.infer<typeof OperationEntrySchema>
141
+ export type OrganizationModelTechStackEntry = z.infer<typeof TechStackEntrySchema>
106
142
  ```
107
143
 
108
- ### `OrganizationModelOperationSemanticClass`
144
+ ### `OrganizationModelStatuses`
145
+
146
+ ```typescript
147
+ export type OrganizationModelStatuses = z.infer<typeof StatusesDomainSchema>
148
+ ```
149
+
150
+ ### `OrganizationModelStatusEntry`
109
151
 
110
152
  ```typescript
111
- export type OrganizationModelOperationSemanticClass = z.infer<typeof OperationSemanticClassSchema>
153
+ export type OrganizationModelStatusEntry = z.infer<typeof StatusEntrySchema>
154
+ ```
155
+
156
+ ### `OrganizationModelStatusSemanticClass`
157
+
158
+ ```typescript
159
+ export type OrganizationModelStatusSemanticClass = z.infer<typeof StatusSemanticClassSchema>
112
160
  ```
113
161
 
114
162
  ### `OrganizationModelCustomers`
@@ -225,12 +273,24 @@ export type OrganizationModelSystemEntry = z.infer<typeof SystemEntrySchema>
225
273
  export type OrganizationModelSystemId = z.infer<typeof SystemIdSchema>
226
274
  ```
227
275
 
276
+ ### `OrganizationModelSystemPath`
277
+
278
+ ```typescript
279
+ export type OrganizationModelSystemPath = z.infer<typeof SystemPathSchema>
280
+ ```
281
+
228
282
  ### `OrganizationModelSystemKind`
229
283
 
230
284
  ```typescript
231
285
  export type OrganizationModelSystemKind = z.infer<typeof SystemKindSchema>
232
286
  ```
233
287
 
288
+ ### `OrganizationModelSystemLifecycle`
289
+
290
+ ```typescript
291
+ export type OrganizationModelSystemLifecycle = z.infer<typeof SystemLifecycleSchema>
292
+ ```
293
+
234
294
  ### `OrganizationModelSystemStatus`
235
295
 
236
296
  ```typescript
@@ -255,6 +315,24 @@ export type OrganizationModelResourceEntry = z.infer<typeof ResourceEntrySchema>
255
315
  export type OrganizationModelResourceId = z.infer<typeof ResourceIdSchema>
256
316
  ```
257
317
 
318
+ ### `EventId`
319
+
320
+ ```typescript
321
+ export type EventId = z.infer<typeof EventIdSchema>
322
+ ```
323
+
324
+ ### `EventEmissionDescriptor`
325
+
326
+ ```typescript
327
+ export type EventEmissionDescriptor = z.infer<typeof EventEmissionDescriptorSchema>
328
+ ```
329
+
330
+ ### `EventDescriptor`
331
+
332
+ ```typescript
333
+ export type EventDescriptor = z.infer<typeof EventDescriptorSchema>
334
+ ```
335
+
258
336
  ### `OrganizationModelResourceKind`
259
337
 
260
338
  ```typescript
@@ -273,6 +351,18 @@ export type OrganizationModelResourceGovernanceStatus = z.infer<typeof ResourceG
273
351
  export type OrganizationModelAgentKind = z.infer<typeof AgentKindSchema>
274
352
  ```
275
353
 
354
+ ### `OrganizationModelScriptResourceLanguage`
355
+
356
+ ```typescript
357
+ export type OrganizationModelScriptResourceLanguage = z.infer<typeof ScriptResourceLanguageSchema>
358
+ ```
359
+
360
+ ### `OrganizationModelScriptResourceSource`
361
+
362
+ ```typescript
363
+ export type OrganizationModelScriptResourceSource = z.infer<typeof ScriptResourceSourceSchema>
364
+ ```
365
+
276
366
  ### `OrganizationModelWorkflowResourceEntry`
277
367
 
278
368
  ```typescript
@@ -291,6 +381,126 @@ export type OrganizationModelAgentResourceEntry = z.infer<typeof AgentResourceEn
291
381
  export type OrganizationModelIntegrationResourceEntry = z.infer<typeof IntegrationResourceEntrySchema>
292
382
  ```
293
383
 
384
+ ### `OrganizationModelScriptResourceEntry`
385
+
386
+ ```typescript
387
+ export type OrganizationModelScriptResourceEntry = z.infer<typeof ScriptResourceEntrySchema>
388
+ ```
389
+
390
+ ### `OrganizationModelActions`
391
+
392
+ ```typescript
393
+ export type OrganizationModelActions = z.infer<typeof ActionsDomainSchema>
394
+ ```
395
+
396
+ ### `OrganizationModelAction`
397
+
398
+ ```typescript
399
+ export type OrganizationModelAction = z.infer<typeof ActionSchema>
400
+ ```
401
+
402
+ ### `OrganizationModelActionId`
403
+
404
+ ```typescript
405
+ export type OrganizationModelActionId = z.infer<typeof ActionIdSchema>
406
+ ```
407
+
408
+ ### `OrganizationModelActionScope`
409
+
410
+ ```typescript
411
+ export type OrganizationModelActionScope = z.infer<typeof ActionScopeSchema>
412
+ ```
413
+
414
+ ### `OrganizationModelActionRef`
415
+
416
+ ```typescript
417
+ export type OrganizationModelActionRef = z.infer<typeof ActionRefSchema>
418
+ ```
419
+
420
+ ### `OrganizationModelActionInvocationKind`
421
+
422
+ ```typescript
423
+ export type OrganizationModelActionInvocationKind = z.infer<typeof ActionInvocationKindSchema>
424
+ ```
425
+
426
+ ### `OrganizationModelActionInvocation`
427
+
428
+ ```typescript
429
+ export type OrganizationModelActionInvocation = z.infer<typeof ActionInvocationSchema>
430
+ ```
431
+
432
+ ### `EntityId`
433
+
434
+ ```typescript
435
+ export type EntityId = z.infer<typeof EntityIdSchema>
436
+ ```
437
+
438
+ ### `EntityLink`
439
+
440
+ ```typescript
441
+ export type EntityLink = z.infer<typeof EntityLinkSchema>
442
+ ```
443
+
444
+ ### `Entity`
445
+
446
+ ```typescript
447
+ export type Entity = z.infer<typeof EntitySchema>
448
+ ```
449
+
450
+ ### `OrganizationModelEntity`
451
+
452
+ ```typescript
453
+ export type OrganizationModelEntity = z.infer<typeof EntitySchema>
454
+ ```
455
+
456
+ ### `OrganizationModelEntities`
457
+
458
+ ```typescript
459
+ export type OrganizationModelEntities = z.infer<typeof EntitiesDomainSchema>
460
+ ```
461
+
462
+ ### `OrganizationModelPolicies`
463
+
464
+ ```typescript
465
+ export type OrganizationModelPolicies = z.infer<typeof PoliciesDomainSchema>
466
+ ```
467
+
468
+ ### `OrganizationModelPolicy`
469
+
470
+ ```typescript
471
+ export type OrganizationModelPolicy = z.infer<typeof PolicySchema>
472
+ ```
473
+
474
+ ### `OrganizationModelPolicyId`
475
+
476
+ ```typescript
477
+ export type OrganizationModelPolicyId = z.infer<typeof PolicyIdSchema>
478
+ ```
479
+
480
+ ### `OrganizationModelPolicyApplicability`
481
+
482
+ ```typescript
483
+ export type OrganizationModelPolicyApplicability = z.infer<typeof PolicyApplicabilitySchema>
484
+ ```
485
+
486
+ ### `OrganizationModelPolicyTrigger`
487
+
488
+ ```typescript
489
+ export type OrganizationModelPolicyTrigger = z.infer<typeof PolicyTriggerSchema>
490
+ ```
491
+
492
+ ### `OrganizationModelPolicyPredicate`
493
+
494
+ ```typescript
495
+ export type OrganizationModelPolicyPredicate = z.infer<typeof PolicyPredicateSchema>
496
+ ```
497
+
498
+ ### `OrganizationModelPolicyEffect`
499
+
500
+ ```typescript
501
+ export type OrganizationModelPolicyEffect = z.infer<typeof PolicyEffectSchema>
502
+ ```
503
+
294
504
  ### `OrganizationModelKnowledge`
295
505
 
296
506
  ```typescript
@@ -303,22 +513,34 @@ export type OrganizationModelKnowledge = z.infer<typeof KnowledgeDomainSchema>
303
513
  export type OrgKnowledgeNode = z.infer<typeof OrgKnowledgeNodeSchema>
304
514
  ```
305
515
 
516
+ ### `OrgKnowledgeNodeInput`
517
+
518
+ ```typescript
519
+ export type OrgKnowledgeNodeInput = z.input<typeof OrgKnowledgeNodeSchema>
520
+ ```
521
+
306
522
  ### `OrgKnowledgeKind`
307
523
 
308
524
  ```typescript
309
525
  export type OrgKnowledgeKind = z.infer<typeof OrgKnowledgeKindSchema>
310
526
  ```
311
527
 
312
- ### `KnowledgeSkillBinding`
528
+ ### `KnowledgeTargetKind`
529
+
530
+ ```typescript
531
+ export type KnowledgeTargetKind = z.infer<typeof KnowledgeTargetKindSchema>
532
+ ```
533
+
534
+ ### `KnowledgeTargetRef`
313
535
 
314
536
  ```typescript
315
- export type KnowledgeSkillBinding = z.infer<typeof KnowledgeSkillBindingSchema>
537
+ export type KnowledgeTargetRef = z.infer<typeof KnowledgeTargetRefSchema>
316
538
  ```
317
539
 
318
- ### `KnowledgeDomainBinding`
540
+ ### `KnowledgeLink`
319
541
 
320
542
  ```typescript
321
- export type KnowledgeDomainBinding = z.infer<typeof KnowledgeDomainBindingSchema>
543
+ export type KnowledgeLink = z.infer<typeof KnowledgeLinkSchema>
322
544
  ```
323
545
 
324
546
  ### `OrganizationModelIconToken`
@@ -350,76 +572,80 @@ export type ElevasisOrganizationModel = Omit<OrganizationModel, 'knowledge'> & {
350
572
  }
351
573
  ```
352
574
 
353
- ### `FeatureSidebarComponent`
575
+ ### `SystemSidebarComponent`
354
576
 
355
577
  ```typescript
356
- export type FeatureSidebarComponent = ComponentType
578
+ export type SystemSidebarComponent = ComponentType
357
579
  ```
358
580
 
359
- ### `FeatureIconComponent`
581
+ ### `SystemIconComponent`
360
582
 
361
583
  ```typescript
362
- export type FeatureIconComponent = ComponentType<{ size?: number; stroke?: number }>
584
+ export type SystemIconComponent = ComponentType<{ size?: number; stroke?: number }>
363
585
  ```
364
586
 
365
- ### `FeatureSidebarWidthResolver`
587
+ ### `SystemSidebarWidthResolver`
366
588
 
367
589
  ```typescript
368
- export type FeatureSidebarWidthResolver = number | ((context: { currentPath: string }) => number)
590
+ export type SystemSidebarWidthResolver = number | ((context: { currentPath: string }) => number)
369
591
  ```
370
592
 
371
- ### `FeatureModule`
593
+ ### `SystemModule`
372
594
 
373
595
  ```typescript
374
- export interface FeatureModule {
375
- /** Unique stable identifier for this feature module. */
596
+ export interface SystemModule {
597
+ /** Unique stable identifier for this UI system module. */
376
598
  key: string
377
- /** Organization Model feature id this module presents. */
378
- featureId: string
379
- /** Capability identifiers contributed by this feature module. */
599
+ /** Organization Model system id this module presents. Omit for navigation-only app surfaces. */
600
+ systemId?: string
601
+ /** Route prefixes owned by navigation-only app surfaces. */
602
+ routePrefixes?: string[]
603
+ /** Capability identifiers contributed by this system module. */
380
604
  capabilityIds?: string[]
381
- /** Icon used when this feature node appears in shell navigation. */
382
- icon?: FeatureIconComponent
383
- /** Sidebar component rendered when this feature's subtree route is active. */
384
- sidebar?: FeatureSidebarComponent
605
+ /** Icon used when this system node appears in shell navigation. */
606
+ icon?: SystemIconComponent
607
+ /** Sidebar component rendered when this system's subtree route is active. */
608
+ sidebar?: SystemSidebarComponent
385
609
  /** Optional shell sidebar width override. Defaults to 250px. */
386
- sidebarWidth?: FeatureSidebarWidthResolver
387
- /** Operations-only bridge connecting this feature to the organization graph node. */
388
- organizationGraph?: OrganizationGraphFeatureBridge
610
+ sidebarWidth?: SystemSidebarWidthResolver
611
+ /** Operations-only bridge connecting this system to the organization graph node. */
612
+ organizationGraph?: OrganizationGraphSystemBridge
389
613
  }
390
614
  ```
391
615
 
392
- ### `ResolvedFeatureAccess`
616
+ ### `ResolvedSystemAccess`
393
617
 
394
618
  ```typescript
395
- export interface ResolvedFeatureAccess {
396
- featureId: string
619
+ export interface ResolvedSystemAccess {
620
+ featureKey: string
621
+ systemId?: string
397
622
  enabled: boolean
398
623
  }
399
624
  ```
400
625
 
401
- ### `ResolvedFeatureSemantics`
626
+ ### `ResolvedSystemSemantics`
402
627
 
403
628
  ```typescript
404
- export interface ResolvedFeatureSemantics {
629
+ export interface ResolvedSystemSemantics {
405
630
  capabilityIds: string[]
406
631
  }
407
632
  ```
408
633
 
409
- ### `ResolvedFeatureModule`
634
+ ### `ResolvedSystemModule`
410
635
 
411
636
  ```typescript
412
- export interface ResolvedFeatureModule extends FeatureModule {
413
- access: ResolvedFeatureAccess
414
- semantics: ResolvedFeatureSemantics
637
+ export interface ResolvedSystemModule extends SystemModule {
638
+ access: ResolvedSystemAccess
639
+ semantics: ResolvedSystemSemantics
415
640
  }
416
641
  ```
417
642
 
418
- ### `ResolvedShellFeature`
643
+ ### `ResolvedShellSystem`
419
644
 
420
645
  ```typescript
421
- export interface ResolvedShellFeature extends OrganizationModelFeature {
422
- iconComponent?: FeatureIconComponent
646
+ export type ResolvedShellSystem = OrganizationModelSystemEntry & {
647
+ label: string
648
+ iconComponent?: SystemIconComponent
423
649
  }
424
650
  ```
425
651
 
@@ -427,19 +653,50 @@ export interface ResolvedShellFeature extends OrganizationModelFeature {
427
653
 
428
654
  ```typescript
429
655
  export interface ResolvedShellModel {
430
- features: readonly ResolvedShellFeature[]
431
- findByPath: (path: string) => ResolvedShellFeature | undefined
432
- findById: (id: string) => ResolvedShellFeature | undefined
433
- childrenOf: (id: string) => ResolvedShellFeature[]
434
- ancestorsOf: (id: string) => ResolvedShellFeature[]
435
- parentOf: (id: string) => ResolvedShellFeature | undefined
436
- topLevel: () => ResolvedShellFeature[]
437
- uiPositionFor: (id: string) => OrganizationModelFeature['uiPosition'] | undefined
656
+ systems: readonly ResolvedShellSystem[]
657
+ findByPath: (path: string) => ResolvedShellSystem | undefined
658
+ findById: (id: string) => ResolvedShellSystem | undefined
659
+ childrenOf: (id: string) => ResolvedShellSystem[]
660
+ ancestorsOf: (id: string) => ResolvedShellSystem[]
661
+ parentOf: (id: string) => ResolvedShellSystem | undefined
662
+ topLevel: () => ResolvedShellSystem[]
438
663
  requiresAdminFor: (id: string) => boolean
439
664
  devOnlyFor: (id: string) => boolean
440
665
  }
441
666
  ```
442
667
 
668
+ ### `ShellSidebarLinkItem`
669
+
670
+ ```typescript
671
+ export interface ShellSidebarLinkItem {
672
+ label: string
673
+ link: string
674
+ exact?: boolean
675
+ activeMatchPaths?: string[]
676
+ }
677
+ ```
678
+
679
+ ### `ShellSidebarLinkGroup`
680
+
681
+ ```typescript
682
+ export interface ShellSidebarLinkGroup {
683
+ icon: SystemIconComponent
684
+ label: string
685
+ links?: ShellSidebarLinkItem[]
686
+ link?: string
687
+ }
688
+ ```
689
+
690
+ ### `ShellSidebarProjectionOptions`
691
+
692
+ ```typescript
693
+ export interface ShellSidebarProjectionOptions {
694
+ isPlatformAdmin?: boolean
695
+ isDev?: boolean
696
+ section?: 'primary' | 'bottom'
697
+ }
698
+ ```
699
+
443
700
  ### `ShellRouteMatchStatus`
444
701
 
445
702
  ```typescript
@@ -452,8 +709,8 @@ export type ShellRouteMatchStatus = 'matched' | 'hidden' | 'unmatched'
452
709
  export interface ResolvedShellRouteMatch {
453
710
  status: ShellRouteMatchStatus
454
711
  path: string
455
- feature?: ResolvedFeatureModule
456
- node?: ResolvedShellFeature
712
+ system?: ResolvedSystemModule
713
+ node?: ResolvedShellSystem
457
714
  }
458
715
  ```
459
716
 
@@ -465,11 +722,11 @@ export interface ShellRuntime {
465
722
  }
466
723
  ```
467
724
 
468
- ### `OrganizationGraphFeatureBridge`
725
+ ### `OrganizationGraphSystemBridge`
469
726
 
470
727
  ```typescript
471
- export interface OrganizationGraphFeatureBridge {
472
- featureId: string
728
+ export interface OrganizationGraphSystemBridge {
729
+ systemId?: string
473
730
  }
474
731
  ```
475
732
 
@@ -478,16 +735,16 @@ export interface OrganizationGraphFeatureBridge {
478
735
  ```typescript
479
736
  export interface OrganizationGraphContextValue {
480
737
  available: boolean
481
- featureId?: string
482
- featurePath?: string
738
+ systemId?: string
739
+ systemPath?: string
483
740
  }
484
741
  ```
485
742
 
486
- ### `ElevasisFeaturesProviderProps`
743
+ ### `ElevasisSystemsProviderProps`
487
744
 
488
745
  ```typescript
489
- export interface ElevasisFeaturesProviderProps {
490
- features: FeatureModule[]
746
+ export interface ElevasisSystemsProviderProps {
747
+ systems?: SystemModule[]
491
748
  organizationModel?: ElevasisOrganizationModel
492
749
  timeRange?: TimeRange
493
750
  operationsApiUrl?: string
@@ -499,14 +756,15 @@ export interface ElevasisFeaturesProviderProps {
499
756
  }
500
757
  ```
501
758
 
502
- ### `ElevasisFeaturesContextValue`
759
+ ### `ElevasisSystemsContextValue`
503
760
 
504
761
  ```typescript
505
- export interface ElevasisFeaturesContextValue {
762
+ export interface ElevasisSystemsContextValue {
506
763
  shellModel: ResolvedShellModel
507
764
  shellRuntime: ShellRuntime
508
- enabledResolvedFeatures: ResolvedFeatureModule[]
509
- resolvedFeatures: ResolvedFeatureModule[]
765
+ getSidebarLinks: (options?: ShellSidebarProjectionOptions) => ShellSidebarLinkGroup[]
766
+ enabledResolvedSystems: ResolvedSystemModule[]
767
+ resolvedSystems: ResolvedSystemModule[]
510
768
  organizationGraph: OrganizationGraphContextValue
511
769
  organizationModel?: OrganizationModel
512
770
  timeRange?: TimeRange
@@ -515,8 +773,8 @@ export interface ElevasisFeaturesContextValue {
515
773
  deliveryApiUrl?: string
516
774
  deliverySSEManager?: SSEConnectionManagerLike
517
775
  disabledSubsectionPaths: string[]
518
- isFeatureEnabled: (key: string) => boolean
519
- getResolvedFeature: (key: string) => ResolvedFeatureModule | undefined
776
+ isSystemEnabled: (key: string) => boolean
777
+ getResolvedSystem: (key: string) => ResolvedSystemModule | undefined
520
778
  }
521
779
  ```
522
780
 
@@ -595,8 +853,8 @@ export interface ResourceDefinition {
595
853
  /** Whether the resource is local (monorepo) or remote (externally deployed) */
596
854
  origin?: 'local' | 'remote'
597
855
 
598
- /** OM System membership, when backed by a Resource descriptor */
599
- systemId?: string
856
+ /** OM System membership — dot-separated system path (e.g. "sys.lead-gen"), when backed by a Resource descriptor */
857
+ systemPath?: string
600
858
 
601
859
  /** Display metadata for the owning OM System */
602
860
  system?: ResourceSystemSummary
@@ -2698,7 +2956,7 @@ export const AcqListSchemas = {
2698
2956
  BuildPlanSnapshotStep: BuildPlanSnapshotStepSchema,
2699
2957
  AcqListMetadata: AcqListMetadataSchema,
2700
2958
  LeadGenStageKey: LeadGenStageKeySchema,
2701
- LeadGenCapabilityKey: LeadGenCapabilityKeySchema,
2959
+ LeadGenActionKey: LeadGenActionKeySchema,
2702
2960
  ProcessingStageStatus: ProcessingStageStatusSchema,
2703
2961
  ProcessingState: ProcessingStateSchema,
2704
2962
  ListStageCounts: ListStageCountsSchema,
@@ -3522,15 +3780,23 @@ export type ListToolMap = {
3522
3780
  ### `KnowledgeLinkSchema`
3523
3781
 
3524
3782
  ```typescript
3525
- export const KnowledgeLinkSchema = z.object({
3526
- nodeId: NodeIdStringSchema
3527
- })
3783
+ export const KnowledgeLinkSchema = z
3784
+ .union([CanonicalKnowledgeLinkSchema, LegacyKnowledgeLinkSchema])
3785
+ .transform((link) => {
3786
+ const target = 'target' in link ? link.target : targetFromNodeId(link.nodeId)
3787
+ return {
3788
+ target,
3789
+ nodeId: nodeIdFromTarget(target)
3790
+ }
3791
+ })
3528
3792
  ```
3529
3793
 
3530
3794
  ### `OrgKnowledgeKindSchema`
3531
3795
 
3532
3796
  ```typescript
3533
- export const OrgKnowledgeKindSchema = z.enum(['playbook', 'strategy', 'reference'])
3797
+ export const OrgKnowledgeKindSchema = z
3798
+ .enum(['playbook', 'strategy', 'reference'])
3799
+ .meta({ label: 'Knowledge kind', color: 'grape' })
3534
3800
  ```
3535
3801
 
3536
3802
  ### `OrgKnowledgeNodeSchema`
@@ -3542,6 +3808,8 @@ export const OrgKnowledgeNodeSchema = z.object({
3542
3808
  title: z.string().trim().min(1).max(200),
3543
3809
  summary: z.string().trim().min(1).max(1000),
3544
3810
  icon: IconNameSchema.optional(),
3811
+ /** Canonical documentation URL when body content is a local summary. */
3812
+ externalUrl: z.string().trim().url().max(500).optional(),
3545
3813
  /** Raw MDX string. Phase 2 will introduce a structured block format. */
3546
3814
  body: z.string().trim().min(1),
3547
3815
  /**
@@ -3549,12 +3817,8 @@ export const OrgKnowledgeNodeSchema = z.object({
3549
3817
  * Each link emits a `governs` edge: knowledge-node -> target node.
3550
3818
  */
3551
3819
  links: z.array(KnowledgeLinkSchema).default([]),
3552
- /** Operator skill or command bindings relevant to this node. */
3553
- skills: z.array(KnowledgeSkillBindingSchema).optional(),
3554
- /** Domain key used to derive fast graph->skill registries. */
3555
- domain: KnowledgeDomainBindingSchema.optional(),
3556
3820
  /** Role identifiers that own this knowledge node. */
3557
- ownerIds: z.array(RoleIdSchema).default([]),
3821
+ ownerIds: z.array(RoleIdSchema.meta({ ref: 'role' })).default([]),
3558
3822
  /** ISO date string (YYYY-MM-DD or full ISO 8601) of last meaningful update. */
3559
3823
  updatedAt: z.string().trim().min(1).max(50)
3560
3824
  })
@@ -3563,9 +3827,7 @@ export const OrgKnowledgeNodeSchema = z.object({
3563
3827
  ### `KnowledgeDomainSchema`
3564
3828
 
3565
3829
  ```typescript
3566
- export const KnowledgeDomainSchema = z.object({
3567
- nodes: z.array(OrgKnowledgeNodeSchema).default([])
3568
- })
3830
+ export const KnowledgeDomainSchema = z.record(ModelIdSchema, OrgKnowledgeNodeSchema).default({})
3569
3831
  ```
3570
3832
 
3571
3833
  ### `OrgKnowledgeNode`