@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,15 +273,28 @@ 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
297
+ /** @deprecated Use OrganizationModelSystemLifecycle. Accepted for one publish cycle. */
237
298
  export type OrganizationModelSystemStatus = z.infer<typeof SystemStatusSchema>
238
299
  ```
239
300
 
@@ -255,6 +316,24 @@ export type OrganizationModelResourceEntry = z.infer<typeof ResourceEntrySchema>
255
316
  export type OrganizationModelResourceId = z.infer<typeof ResourceIdSchema>
256
317
  ```
257
318
 
319
+ ### `EventId`
320
+
321
+ ```typescript
322
+ export type EventId = z.infer<typeof EventIdSchema>
323
+ ```
324
+
325
+ ### `EventEmissionDescriptor`
326
+
327
+ ```typescript
328
+ export type EventEmissionDescriptor = z.infer<typeof EventEmissionDescriptorSchema>
329
+ ```
330
+
331
+ ### `EventDescriptor`
332
+
333
+ ```typescript
334
+ export type EventDescriptor = z.infer<typeof EventDescriptorSchema>
335
+ ```
336
+
258
337
  ### `OrganizationModelResourceKind`
259
338
 
260
339
  ```typescript
@@ -273,6 +352,18 @@ export type OrganizationModelResourceGovernanceStatus = z.infer<typeof ResourceG
273
352
  export type OrganizationModelAgentKind = z.infer<typeof AgentKindSchema>
274
353
  ```
275
354
 
355
+ ### `OrganizationModelScriptResourceLanguage`
356
+
357
+ ```typescript
358
+ export type OrganizationModelScriptResourceLanguage = z.infer<typeof ScriptResourceLanguageSchema>
359
+ ```
360
+
361
+ ### `OrganizationModelScriptResourceSource`
362
+
363
+ ```typescript
364
+ export type OrganizationModelScriptResourceSource = z.infer<typeof ScriptResourceSourceSchema>
365
+ ```
366
+
276
367
  ### `OrganizationModelWorkflowResourceEntry`
277
368
 
278
369
  ```typescript
@@ -291,6 +382,126 @@ export type OrganizationModelAgentResourceEntry = z.infer<typeof AgentResourceEn
291
382
  export type OrganizationModelIntegrationResourceEntry = z.infer<typeof IntegrationResourceEntrySchema>
292
383
  ```
293
384
 
385
+ ### `OrganizationModelScriptResourceEntry`
386
+
387
+ ```typescript
388
+ export type OrganizationModelScriptResourceEntry = z.infer<typeof ScriptResourceEntrySchema>
389
+ ```
390
+
391
+ ### `OrganizationModelActions`
392
+
393
+ ```typescript
394
+ export type OrganizationModelActions = z.infer<typeof ActionsDomainSchema>
395
+ ```
396
+
397
+ ### `OrganizationModelAction`
398
+
399
+ ```typescript
400
+ export type OrganizationModelAction = z.infer<typeof ActionSchema>
401
+ ```
402
+
403
+ ### `OrganizationModelActionId`
404
+
405
+ ```typescript
406
+ export type OrganizationModelActionId = z.infer<typeof ActionIdSchema>
407
+ ```
408
+
409
+ ### `OrganizationModelActionScope`
410
+
411
+ ```typescript
412
+ export type OrganizationModelActionScope = z.infer<typeof ActionScopeSchema>
413
+ ```
414
+
415
+ ### `OrganizationModelActionRef`
416
+
417
+ ```typescript
418
+ export type OrganizationModelActionRef = z.infer<typeof ActionRefSchema>
419
+ ```
420
+
421
+ ### `OrganizationModelActionInvocationKind`
422
+
423
+ ```typescript
424
+ export type OrganizationModelActionInvocationKind = z.infer<typeof ActionInvocationKindSchema>
425
+ ```
426
+
427
+ ### `OrganizationModelActionInvocation`
428
+
429
+ ```typescript
430
+ export type OrganizationModelActionInvocation = z.infer<typeof ActionInvocationSchema>
431
+ ```
432
+
433
+ ### `EntityId`
434
+
435
+ ```typescript
436
+ export type EntityId = z.infer<typeof EntityIdSchema>
437
+ ```
438
+
439
+ ### `EntityLink`
440
+
441
+ ```typescript
442
+ export type EntityLink = z.infer<typeof EntityLinkSchema>
443
+ ```
444
+
445
+ ### `Entity`
446
+
447
+ ```typescript
448
+ export type Entity = z.infer<typeof EntitySchema>
449
+ ```
450
+
451
+ ### `OrganizationModelEntity`
452
+
453
+ ```typescript
454
+ export type OrganizationModelEntity = z.infer<typeof EntitySchema>
455
+ ```
456
+
457
+ ### `OrganizationModelEntities`
458
+
459
+ ```typescript
460
+ export type OrganizationModelEntities = z.infer<typeof EntitiesDomainSchema>
461
+ ```
462
+
463
+ ### `OrganizationModelPolicies`
464
+
465
+ ```typescript
466
+ export type OrganizationModelPolicies = z.infer<typeof PoliciesDomainSchema>
467
+ ```
468
+
469
+ ### `OrganizationModelPolicy`
470
+
471
+ ```typescript
472
+ export type OrganizationModelPolicy = z.infer<typeof PolicySchema>
473
+ ```
474
+
475
+ ### `OrganizationModelPolicyId`
476
+
477
+ ```typescript
478
+ export type OrganizationModelPolicyId = z.infer<typeof PolicyIdSchema>
479
+ ```
480
+
481
+ ### `OrganizationModelPolicyApplicability`
482
+
483
+ ```typescript
484
+ export type OrganizationModelPolicyApplicability = z.infer<typeof PolicyApplicabilitySchema>
485
+ ```
486
+
487
+ ### `OrganizationModelPolicyTrigger`
488
+
489
+ ```typescript
490
+ export type OrganizationModelPolicyTrigger = z.infer<typeof PolicyTriggerSchema>
491
+ ```
492
+
493
+ ### `OrganizationModelPolicyPredicate`
494
+
495
+ ```typescript
496
+ export type OrganizationModelPolicyPredicate = z.infer<typeof PolicyPredicateSchema>
497
+ ```
498
+
499
+ ### `OrganizationModelPolicyEffect`
500
+
501
+ ```typescript
502
+ export type OrganizationModelPolicyEffect = z.infer<typeof PolicyEffectSchema>
503
+ ```
504
+
294
505
  ### `OrganizationModelKnowledge`
295
506
 
296
507
  ```typescript
@@ -303,22 +514,34 @@ export type OrganizationModelKnowledge = z.infer<typeof KnowledgeDomainSchema>
303
514
  export type OrgKnowledgeNode = z.infer<typeof OrgKnowledgeNodeSchema>
304
515
  ```
305
516
 
517
+ ### `OrgKnowledgeNodeInput`
518
+
519
+ ```typescript
520
+ export type OrgKnowledgeNodeInput = z.input<typeof OrgKnowledgeNodeSchema>
521
+ ```
522
+
306
523
  ### `OrgKnowledgeKind`
307
524
 
308
525
  ```typescript
309
526
  export type OrgKnowledgeKind = z.infer<typeof OrgKnowledgeKindSchema>
310
527
  ```
311
528
 
312
- ### `KnowledgeSkillBinding`
529
+ ### `KnowledgeTargetKind`
530
+
531
+ ```typescript
532
+ export type KnowledgeTargetKind = z.infer<typeof KnowledgeTargetKindSchema>
533
+ ```
534
+
535
+ ### `KnowledgeTargetRef`
313
536
 
314
537
  ```typescript
315
- export type KnowledgeSkillBinding = z.infer<typeof KnowledgeSkillBindingSchema>
538
+ export type KnowledgeTargetRef = z.infer<typeof KnowledgeTargetRefSchema>
316
539
  ```
317
540
 
318
- ### `KnowledgeDomainBinding`
541
+ ### `KnowledgeLink`
319
542
 
320
543
  ```typescript
321
- export type KnowledgeDomainBinding = z.infer<typeof KnowledgeDomainBindingSchema>
544
+ export type KnowledgeLink = z.infer<typeof KnowledgeLinkSchema>
322
545
  ```
323
546
 
324
547
  ### `OrganizationModelIconToken`
@@ -350,76 +573,80 @@ export type ElevasisOrganizationModel = Omit<OrganizationModel, 'knowledge'> & {
350
573
  }
351
574
  ```
352
575
 
353
- ### `FeatureSidebarComponent`
576
+ ### `SystemSidebarComponent`
354
577
 
355
578
  ```typescript
356
- export type FeatureSidebarComponent = ComponentType
579
+ export type SystemSidebarComponent = ComponentType
357
580
  ```
358
581
 
359
- ### `FeatureIconComponent`
582
+ ### `SystemIconComponent`
360
583
 
361
584
  ```typescript
362
- export type FeatureIconComponent = ComponentType<{ size?: number; stroke?: number }>
585
+ export type SystemIconComponent = ComponentType<{ size?: number; stroke?: number }>
363
586
  ```
364
587
 
365
- ### `FeatureSidebarWidthResolver`
588
+ ### `SystemSidebarWidthResolver`
366
589
 
367
590
  ```typescript
368
- export type FeatureSidebarWidthResolver = number | ((context: { currentPath: string }) => number)
591
+ export type SystemSidebarWidthResolver = number | ((context: { currentPath: string }) => number)
369
592
  ```
370
593
 
371
- ### `FeatureModule`
594
+ ### `SystemModule`
372
595
 
373
596
  ```typescript
374
- export interface FeatureModule {
375
- /** Unique stable identifier for this feature module. */
597
+ export interface SystemModule {
598
+ /** Unique stable identifier for this UI system module. */
376
599
  key: string
377
- /** Organization Model feature id this module presents. */
378
- featureId: string
379
- /** Capability identifiers contributed by this feature module. */
600
+ /** Organization Model system id this module presents. Omit for navigation-only app surfaces. */
601
+ systemId?: string
602
+ /** Route prefixes owned by navigation-only app surfaces. */
603
+ routePrefixes?: string[]
604
+ /** Capability identifiers contributed by this system module. */
380
605
  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
606
+ /** Icon used when this system node appears in shell navigation. */
607
+ icon?: SystemIconComponent
608
+ /** Sidebar component rendered when this system's subtree route is active. */
609
+ sidebar?: SystemSidebarComponent
385
610
  /** 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
611
+ sidebarWidth?: SystemSidebarWidthResolver
612
+ /** Operations-only bridge connecting this system to the organization graph node. */
613
+ organizationGraph?: OrganizationGraphSystemBridge
389
614
  }
390
615
  ```
391
616
 
392
- ### `ResolvedFeatureAccess`
617
+ ### `ResolvedSystemAccess`
393
618
 
394
619
  ```typescript
395
- export interface ResolvedFeatureAccess {
396
- featureId: string
620
+ export interface ResolvedSystemAccess {
621
+ featureKey: string
622
+ systemId?: string
397
623
  enabled: boolean
398
624
  }
399
625
  ```
400
626
 
401
- ### `ResolvedFeatureSemantics`
627
+ ### `ResolvedSystemSemantics`
402
628
 
403
629
  ```typescript
404
- export interface ResolvedFeatureSemantics {
630
+ export interface ResolvedSystemSemantics {
405
631
  capabilityIds: string[]
406
632
  }
407
633
  ```
408
634
 
409
- ### `ResolvedFeatureModule`
635
+ ### `ResolvedSystemModule`
410
636
 
411
637
  ```typescript
412
- export interface ResolvedFeatureModule extends FeatureModule {
413
- access: ResolvedFeatureAccess
414
- semantics: ResolvedFeatureSemantics
638
+ export interface ResolvedSystemModule extends SystemModule {
639
+ access: ResolvedSystemAccess
640
+ semantics: ResolvedSystemSemantics
415
641
  }
416
642
  ```
417
643
 
418
- ### `ResolvedShellFeature`
644
+ ### `ResolvedShellSystem`
419
645
 
420
646
  ```typescript
421
- export interface ResolvedShellFeature extends OrganizationModelFeature {
422
- iconComponent?: FeatureIconComponent
647
+ export type ResolvedShellSystem = OrganizationModelSystemEntry & {
648
+ label: string
649
+ iconComponent?: SystemIconComponent
423
650
  }
424
651
  ```
425
652
 
@@ -427,19 +654,50 @@ export interface ResolvedShellFeature extends OrganizationModelFeature {
427
654
 
428
655
  ```typescript
429
656
  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
657
+ systems: readonly ResolvedShellSystem[]
658
+ findByPath: (path: string) => ResolvedShellSystem | undefined
659
+ findById: (id: string) => ResolvedShellSystem | undefined
660
+ childrenOf: (id: string) => ResolvedShellSystem[]
661
+ ancestorsOf: (id: string) => ResolvedShellSystem[]
662
+ parentOf: (id: string) => ResolvedShellSystem | undefined
663
+ topLevel: () => ResolvedShellSystem[]
438
664
  requiresAdminFor: (id: string) => boolean
439
665
  devOnlyFor: (id: string) => boolean
440
666
  }
441
667
  ```
442
668
 
669
+ ### `ShellSidebarLinkItem`
670
+
671
+ ```typescript
672
+ export interface ShellSidebarLinkItem {
673
+ label: string
674
+ link: string
675
+ exact?: boolean
676
+ activeMatchPaths?: string[]
677
+ }
678
+ ```
679
+
680
+ ### `ShellSidebarLinkGroup`
681
+
682
+ ```typescript
683
+ export interface ShellSidebarLinkGroup {
684
+ icon: SystemIconComponent
685
+ label: string
686
+ links?: ShellSidebarLinkItem[]
687
+ link?: string
688
+ }
689
+ ```
690
+
691
+ ### `ShellSidebarProjectionOptions`
692
+
693
+ ```typescript
694
+ export interface ShellSidebarProjectionOptions {
695
+ isPlatformAdmin?: boolean
696
+ isDev?: boolean
697
+ section?: 'primary' | 'bottom'
698
+ }
699
+ ```
700
+
443
701
  ### `ShellRouteMatchStatus`
444
702
 
445
703
  ```typescript
@@ -452,8 +710,8 @@ export type ShellRouteMatchStatus = 'matched' | 'hidden' | 'unmatched'
452
710
  export interface ResolvedShellRouteMatch {
453
711
  status: ShellRouteMatchStatus
454
712
  path: string
455
- feature?: ResolvedFeatureModule
456
- node?: ResolvedShellFeature
713
+ system?: ResolvedSystemModule
714
+ node?: ResolvedShellSystem
457
715
  }
458
716
  ```
459
717
 
@@ -465,11 +723,11 @@ export interface ShellRuntime {
465
723
  }
466
724
  ```
467
725
 
468
- ### `OrganizationGraphFeatureBridge`
726
+ ### `OrganizationGraphSystemBridge`
469
727
 
470
728
  ```typescript
471
- export interface OrganizationGraphFeatureBridge {
472
- featureId: string
729
+ export interface OrganizationGraphSystemBridge {
730
+ systemId?: string
473
731
  }
474
732
  ```
475
733
 
@@ -478,16 +736,16 @@ export interface OrganizationGraphFeatureBridge {
478
736
  ```typescript
479
737
  export interface OrganizationGraphContextValue {
480
738
  available: boolean
481
- featureId?: string
482
- featurePath?: string
739
+ systemId?: string
740
+ systemPath?: string
483
741
  }
484
742
  ```
485
743
 
486
- ### `ElevasisFeaturesProviderProps`
744
+ ### `ElevasisSystemsProviderProps`
487
745
 
488
746
  ```typescript
489
- export interface ElevasisFeaturesProviderProps {
490
- features: FeatureModule[]
747
+ export interface ElevasisSystemsProviderProps {
748
+ systems?: SystemModule[]
491
749
  organizationModel?: ElevasisOrganizationModel
492
750
  timeRange?: TimeRange
493
751
  operationsApiUrl?: string
@@ -499,14 +757,15 @@ export interface ElevasisFeaturesProviderProps {
499
757
  }
500
758
  ```
501
759
 
502
- ### `ElevasisFeaturesContextValue`
760
+ ### `ElevasisSystemsContextValue`
503
761
 
504
762
  ```typescript
505
- export interface ElevasisFeaturesContextValue {
763
+ export interface ElevasisSystemsContextValue {
506
764
  shellModel: ResolvedShellModel
507
765
  shellRuntime: ShellRuntime
508
- enabledResolvedFeatures: ResolvedFeatureModule[]
509
- resolvedFeatures: ResolvedFeatureModule[]
766
+ getSidebarLinks: (options?: ShellSidebarProjectionOptions) => ShellSidebarLinkGroup[]
767
+ enabledResolvedSystems: ResolvedSystemModule[]
768
+ resolvedSystems: ResolvedSystemModule[]
510
769
  organizationGraph: OrganizationGraphContextValue
511
770
  organizationModel?: OrganizationModel
512
771
  timeRange?: TimeRange
@@ -515,8 +774,8 @@ export interface ElevasisFeaturesContextValue {
515
774
  deliveryApiUrl?: string
516
775
  deliverySSEManager?: SSEConnectionManagerLike
517
776
  disabledSubsectionPaths: string[]
518
- isFeatureEnabled: (key: string) => boolean
519
- getResolvedFeature: (key: string) => ResolvedFeatureModule | undefined
777
+ isSystemEnabled: (key: string) => boolean
778
+ getResolvedSystem: (key: string) => ResolvedSystemModule | undefined
520
779
  }
521
780
  ```
522
781
 
@@ -554,7 +813,7 @@ export type ExecutableResourceType = 'workflow' | 'agent'
554
813
  ### `ResourceSystemSummary`
555
814
 
556
815
  ```typescript
557
- export type ResourceSystemSummary = Pick<SystemEntry, 'id' | 'title' | 'description' | 'kind' | 'status'>
816
+ export type ResourceSystemSummary = Pick<SystemEntry, 'id' | 'title' | 'description' | 'kind' | 'lifecycle'>
558
817
  ```
559
818
 
560
819
  ### `ResourceDefinition`
@@ -595,8 +854,8 @@ export interface ResourceDefinition {
595
854
  /** Whether the resource is local (monorepo) or remote (externally deployed) */
596
855
  origin?: 'local' | 'remote'
597
856
 
598
- /** OM System membership, when backed by a Resource descriptor */
599
- systemId?: string
857
+ /** OM System membership — dot-separated system path (e.g. "sys.lead-gen"), when backed by a Resource descriptor */
858
+ systemPath?: string
600
859
 
601
860
  /** Display metadata for the owning OM System */
602
861
  system?: ResourceSystemSummary
@@ -2698,7 +2957,7 @@ export const AcqListSchemas = {
2698
2957
  BuildPlanSnapshotStep: BuildPlanSnapshotStepSchema,
2699
2958
  AcqListMetadata: AcqListMetadataSchema,
2700
2959
  LeadGenStageKey: LeadGenStageKeySchema,
2701
- LeadGenCapabilityKey: LeadGenCapabilityKeySchema,
2960
+ LeadGenActionKey: LeadGenActionKeySchema,
2702
2961
  ProcessingStageStatus: ProcessingStageStatusSchema,
2703
2962
  ProcessingState: ProcessingStateSchema,
2704
2963
  ListStageCounts: ListStageCountsSchema,
@@ -3522,15 +3781,23 @@ export type ListToolMap = {
3522
3781
  ### `KnowledgeLinkSchema`
3523
3782
 
3524
3783
  ```typescript
3525
- export const KnowledgeLinkSchema = z.object({
3526
- nodeId: NodeIdStringSchema
3527
- })
3784
+ export const KnowledgeLinkSchema = z
3785
+ .union([CanonicalKnowledgeLinkSchema, LegacyKnowledgeLinkSchema])
3786
+ .transform((link) => {
3787
+ const target = 'target' in link ? link.target : targetFromNodeId(link.nodeId)
3788
+ return {
3789
+ target,
3790
+ nodeId: nodeIdFromTarget(target)
3791
+ }
3792
+ })
3528
3793
  ```
3529
3794
 
3530
3795
  ### `OrgKnowledgeKindSchema`
3531
3796
 
3532
3797
  ```typescript
3533
- export const OrgKnowledgeKindSchema = z.enum(['playbook', 'strategy', 'reference'])
3798
+ export const OrgKnowledgeKindSchema = z
3799
+ .enum(['playbook', 'strategy', 'reference'])
3800
+ .meta({ label: 'Knowledge kind', color: 'grape' })
3534
3801
  ```
3535
3802
 
3536
3803
  ### `OrgKnowledgeNodeSchema`
@@ -3542,6 +3809,8 @@ export const OrgKnowledgeNodeSchema = z.object({
3542
3809
  title: z.string().trim().min(1).max(200),
3543
3810
  summary: z.string().trim().min(1).max(1000),
3544
3811
  icon: IconNameSchema.optional(),
3812
+ /** Canonical documentation URL when body content is a local summary. */
3813
+ externalUrl: z.string().trim().url().max(500).optional(),
3545
3814
  /** Raw MDX string. Phase 2 will introduce a structured block format. */
3546
3815
  body: z.string().trim().min(1),
3547
3816
  /**
@@ -3549,12 +3818,8 @@ export const OrgKnowledgeNodeSchema = z.object({
3549
3818
  * Each link emits a `governs` edge: knowledge-node -> target node.
3550
3819
  */
3551
3820
  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
3821
  /** Role identifiers that own this knowledge node. */
3557
- ownerIds: z.array(RoleIdSchema).default([]),
3822
+ ownerIds: z.array(RoleIdSchema.meta({ ref: 'role' })).default([]),
3558
3823
  /** ISO date string (YYYY-MM-DD or full ISO 8601) of last meaningful update. */
3559
3824
  updatedAt: z.string().trim().min(1).max(50)
3560
3825
  })
@@ -3563,9 +3828,7 @@ export const OrgKnowledgeNodeSchema = z.object({
3563
3828
  ### `KnowledgeDomainSchema`
3564
3829
 
3565
3830
  ```typescript
3566
- export const KnowledgeDomainSchema = z.object({
3567
- nodes: z.array(OrgKnowledgeNodeSchema).default([])
3568
- })
3831
+ export const KnowledgeDomainSchema = z.record(ModelIdSchema, OrgKnowledgeNodeSchema).default({})
3569
3832
  ```
3570
3833
 
3571
3834
  ### `OrgKnowledgeNode`