@elevasis/sdk 1.20.2 → 1.21.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 (58) hide show
  1. package/dist/cli.cjs +3386 -1529
  2. package/dist/index.d.ts +412 -149
  3. package/dist/index.js +955 -721
  4. package/dist/node/index.d.ts +0 -3
  5. package/dist/node/index.js +21 -48
  6. package/dist/test-utils/index.d.ts +395 -128
  7. package/dist/test-utils/index.js +599 -368
  8. package/dist/worker/index.js +536 -323
  9. package/package.json +2 -2
  10. package/reference/_navigation.md +9 -7
  11. package/reference/_reference-manifest.json +1 -1
  12. package/reference/claude-config/rules/agent-start-here.md +4 -0
  13. package/reference/claude-config/rules/frontend.md +2 -2
  14. package/reference/claude-config/rules/organization-model.md +44 -2
  15. package/reference/claude-config/rules/organization-os.md +12 -12
  16. package/reference/claude-config/rules/ui.md +14 -14
  17. package/reference/claude-config/rules/vibe.md +37 -33
  18. package/reference/claude-config/skills/explore/SKILL.md +6 -6
  19. package/reference/claude-config/skills/knowledge/SKILL.md +73 -29
  20. package/reference/claude-config/skills/knowledge/operations/codify-level-a.md +1 -1
  21. package/reference/claude-config/skills/knowledge/operations/codify-level-b.md +25 -24
  22. package/reference/claude-config/skills/knowledge/operations/features.md +56 -93
  23. package/reference/claude-config/skills/knowledge/operations/labels.md +19 -14
  24. package/reference/claude-config/skills/knowledge/operations/offerings.md +6 -6
  25. package/reference/claude-config/skills/save/SKILL.md +2 -2
  26. package/reference/claude-config/skills/setup/SKILL.md +1 -1
  27. package/reference/claude-config/skills/tutorial/technical.md +23 -26
  28. package/reference/claude-config/skills/tutorial/vibe-coder.md +9 -9
  29. package/reference/claude-config/sync-notes/2026-05-12-sdk-ready-release-train.md +30 -0
  30. package/reference/cli.mdx +140 -0
  31. package/reference/deployment/provided-features.mdx +29 -15
  32. package/reference/examples/organization-model.ts +1 -1
  33. package/reference/packages/core/src/knowledge/README.md +8 -7
  34. package/reference/packages/core/src/organization-model/README.md +66 -26
  35. package/reference/packages/ui/src/provider/README.md +5 -5
  36. package/reference/scaffold/core/organization-graph.mdx +16 -15
  37. package/reference/scaffold/core/organization-model.mdx +89 -41
  38. package/reference/scaffold/index.mdx +9 -9
  39. package/reference/scaffold/operations/propagation-pipeline.md +3 -3
  40. package/reference/scaffold/operations/scaffold-maintenance.md +11 -11
  41. package/reference/scaffold/recipes/add-a-feature.md +26 -24
  42. package/reference/scaffold/recipes/add-a-resource.md +10 -14
  43. package/reference/scaffold/recipes/customize-crm-actions.md +439 -439
  44. package/reference/scaffold/recipes/customize-knowledge-browser.md +384 -0
  45. package/reference/scaffold/recipes/customize-organization-model.md +72 -44
  46. package/reference/scaffold/recipes/extend-crm.md +40 -39
  47. package/reference/scaffold/recipes/extend-lead-gen.md +15 -16
  48. package/reference/scaffold/recipes/gate-by-feature-or-admin.md +34 -30
  49. package/reference/scaffold/recipes/index.md +13 -12
  50. package/reference/scaffold/recipes/query-the-knowledge-graph.md +200 -0
  51. package/reference/scaffold/reference/contracts.md +362 -99
  52. package/reference/scaffold/reference/feature-registry.md +9 -20
  53. package/reference/scaffold/reference/glossary.md +18 -18
  54. package/reference/scaffold/ui/composition-extensibility.mdx +23 -23
  55. package/reference/scaffold/ui/customization.md +11 -11
  56. package/reference/scaffold/ui/feature-flags-and-gating.md +8 -8
  57. package/reference/scaffold/ui/feature-shell.mdx +19 -19
  58. package/reference/scaffold/ui/recipes.md +29 -28
@@ -18,34 +18,58 @@ description: Auto-generated TypeScript contracts for SDK consumers. Do not edit
18
18
  export type OrganizationModel = z.infer<typeof OrganizationModelSchema>
19
19
  ```
20
20
 
21
+ ### `OrganizationModelDomainKey`
22
+
23
+ ```typescript
24
+ export type OrganizationModelDomainKey = z.infer<typeof OrganizationModelDomainKeySchema>
25
+ ```
26
+
27
+ ### `OrganizationModelDomainMetadata`
28
+
29
+ ```typescript
30
+ export type OrganizationModelDomainMetadata = z.infer<typeof OrganizationModelDomainMetadataSchema>
31
+ ```
32
+
33
+ ### `OrganizationModelDomainMetadataByDomain`
34
+
35
+ ```typescript
36
+ export type OrganizationModelDomainMetadataByDomain = z.infer<typeof OrganizationModelDomainMetadataByDomainSchema>
37
+ ```
38
+
21
39
  ### `OrganizationModelBranding`
22
40
 
23
41
  ```typescript
24
42
  export type OrganizationModelBranding = z.infer<typeof OrganizationModelBrandingSchema>
25
43
  ```
26
44
 
27
- ### `OrganizationModelSales`
45
+ ### `SalesPipeline`
28
46
 
29
47
  ```typescript
30
- export type OrganizationModelSales = z.infer<typeof OrganizationModelSalesSchema>
48
+ export type SalesPipeline = z.infer<typeof SalesPipelineSchema>
31
49
  ```
32
50
 
33
- ### `OrganizationModelProspecting`
51
+ ### `SalesStage`
34
52
 
35
53
  ```typescript
36
- export type OrganizationModelProspecting = z.infer<typeof OrganizationModelProspectingSchema>
54
+ export type SalesStage = z.infer<typeof SalesStageSchema>
37
55
  ```
38
56
 
39
- ### `OrganizationModelProjects`
57
+ ### `ProspectingBuildTemplate`
40
58
 
41
59
  ```typescript
42
- export type OrganizationModelProjects = z.infer<typeof OrganizationModelProjectsSchema>
60
+ export type ProspectingBuildTemplate = z.infer<typeof ProspectingBuildTemplateSchema>
43
61
  ```
44
62
 
45
- ### `OrganizationModelFeature`
63
+ ### `ProspectingLifecycleStage`
46
64
 
47
65
  ```typescript
48
- export type OrganizationModelFeature = z.infer<typeof FeatureSchema>
66
+ export type ProspectingLifecycleStage = z.infer<typeof ProspectingLifecycleStageSchema>
67
+ ```
68
+
69
+ ### `ProjectsDomainState`
70
+
71
+ ```typescript
72
+ export type ProjectsDomainState = z.infer<typeof ProjectsDomainStateSchema>
49
73
  ```
50
74
 
51
75
  ### `NodeIdPath`
@@ -60,58 +84,82 @@ export type NodeIdPath = z.infer<typeof NodeIdPathSchema>
60
84
  export type NodeIdString = z.infer<typeof NodeIdStringSchema>
61
85
  ```
62
86
 
87
+ ### `OrganizationModelSurface`
88
+
89
+ ```typescript
90
+ export type OrganizationModelSurface = z.infer<typeof SurfaceDefinitionSchema>
91
+ ```
92
+
93
+ ### `OrganizationModelNavigationGroup`
94
+
95
+ ```typescript
96
+ export type OrganizationModelNavigationGroup = z.infer<typeof NavigationGroupSchema>
97
+ ```
98
+
63
99
  ### `OrganizationModelNavigation`
64
100
 
65
101
  ```typescript
66
102
  export type OrganizationModelNavigation = z.infer<typeof OrganizationModelNavigationSchema>
67
103
  ```
68
104
 
69
- ### `OrganizationModelSurface`
105
+ ### `OrganizationModelSidebar`
70
106
 
71
107
  ```typescript
72
- export type OrganizationModelSurface = z.infer<typeof SurfaceDefinitionSchema>
108
+ export type OrganizationModelSidebar = z.infer<typeof SidebarNavigationSchema>
73
109
  ```
74
110
 
75
- ### `OrganizationModelTechStackEntry`
111
+ ### `OrganizationModelSidebarSection`
76
112
 
77
113
  ```typescript
78
- export type OrganizationModelTechStackEntry = z.infer<typeof TechStackEntrySchema>
114
+ export type OrganizationModelSidebarSection = z.infer<typeof SidebarSectionSchema>
79
115
  ```
80
116
 
81
- ### `OrganizationModelStatuses`
117
+ ### `OrganizationModelSidebarNode`
82
118
 
83
119
  ```typescript
84
- export type OrganizationModelStatuses = z.infer<typeof StatusesDomainSchema>
120
+ export type OrganizationModelSidebarNode = z.infer<typeof SidebarNodeSchema>
85
121
  ```
86
122
 
87
- ### `OrganizationModelStatusEntry`
123
+ ### `OrganizationModelSidebarSurfaceTargets`
88
124
 
89
125
  ```typescript
90
- export type OrganizationModelStatusEntry = z.infer<typeof StatusEntrySchema>
126
+ export type OrganizationModelSidebarSurfaceTargets = z.infer<typeof SidebarSurfaceTargetsSchema>
91
127
  ```
92
128
 
93
- ### `OrganizationModelStatusSemanticClass`
129
+ ### `OrganizationModelSidebarSurfaceNode`
94
130
 
95
131
  ```typescript
96
- export type OrganizationModelStatusSemanticClass = z.infer<typeof StatusSemanticClassSchema>
132
+ export type OrganizationModelSidebarSurfaceNode = Extract<OrganizationModelSidebarNode, { type: 'surface' }>
97
133
  ```
98
134
 
99
- ### `OrganizationModelOperations`
135
+ ### `OrganizationModelSidebarGroupNode`
100
136
 
101
137
  ```typescript
102
- export type OrganizationModelOperations = z.infer<typeof OperationsDomainSchema>
138
+ export type OrganizationModelSidebarGroupNode = Extract<OrganizationModelSidebarNode, { type: 'group' }>
103
139
  ```
104
140
 
105
- ### `OrganizationModelOperationEntry`
141
+ ### `OrganizationModelTechStackEntry`
106
142
 
107
143
  ```typescript
108
- export type OrganizationModelOperationEntry = z.infer<typeof OperationEntrySchema>
144
+ export type OrganizationModelTechStackEntry = z.infer<typeof TechStackEntrySchema>
109
145
  ```
110
146
 
111
- ### `OrganizationModelOperationSemanticClass`
147
+ ### `OrganizationModelStatuses`
148
+
149
+ ```typescript
150
+ export type OrganizationModelStatuses = z.infer<typeof StatusesDomainSchema>
151
+ ```
152
+
153
+ ### `OrganizationModelStatusEntry`
112
154
 
113
155
  ```typescript
114
- export type OrganizationModelOperationSemanticClass = z.infer<typeof OperationSemanticClassSchema>
156
+ export type OrganizationModelStatusEntry = z.infer<typeof StatusEntrySchema>
157
+ ```
158
+
159
+ ### `OrganizationModelStatusSemanticClass`
160
+
161
+ ```typescript
162
+ export type OrganizationModelStatusSemanticClass = z.infer<typeof StatusSemanticClassSchema>
115
163
  ```
116
164
 
117
165
  ### `OrganizationModelCustomers`
@@ -228,15 +276,28 @@ export type OrganizationModelSystemEntry = z.infer<typeof SystemEntrySchema>
228
276
  export type OrganizationModelSystemId = z.infer<typeof SystemIdSchema>
229
277
  ```
230
278
 
279
+ ### `OrganizationModelSystemPath`
280
+
281
+ ```typescript
282
+ export type OrganizationModelSystemPath = z.infer<typeof SystemPathSchema>
283
+ ```
284
+
231
285
  ### `OrganizationModelSystemKind`
232
286
 
233
287
  ```typescript
234
288
  export type OrganizationModelSystemKind = z.infer<typeof SystemKindSchema>
235
289
  ```
236
290
 
291
+ ### `OrganizationModelSystemLifecycle`
292
+
293
+ ```typescript
294
+ export type OrganizationModelSystemLifecycle = z.infer<typeof SystemLifecycleSchema>
295
+ ```
296
+
237
297
  ### `OrganizationModelSystemStatus`
238
298
 
239
299
  ```typescript
300
+ /** @deprecated Use OrganizationModelSystemLifecycle. Accepted for one publish cycle. */
240
301
  export type OrganizationModelSystemStatus = z.infer<typeof SystemStatusSchema>
241
302
  ```
242
303
 
@@ -258,6 +319,24 @@ export type OrganizationModelResourceEntry = z.infer<typeof ResourceEntrySchema>
258
319
  export type OrganizationModelResourceId = z.infer<typeof ResourceIdSchema>
259
320
  ```
260
321
 
322
+ ### `EventId`
323
+
324
+ ```typescript
325
+ export type EventId = z.infer<typeof EventIdSchema>
326
+ ```
327
+
328
+ ### `EventEmissionDescriptor`
329
+
330
+ ```typescript
331
+ export type EventEmissionDescriptor = z.infer<typeof EventEmissionDescriptorSchema>
332
+ ```
333
+
334
+ ### `EventDescriptor`
335
+
336
+ ```typescript
337
+ export type EventDescriptor = z.infer<typeof EventDescriptorSchema>
338
+ ```
339
+
261
340
  ### `OrganizationModelResourceKind`
262
341
 
263
342
  ```typescript
@@ -276,6 +355,18 @@ export type OrganizationModelResourceGovernanceStatus = z.infer<typeof ResourceG
276
355
  export type OrganizationModelAgentKind = z.infer<typeof AgentKindSchema>
277
356
  ```
278
357
 
358
+ ### `OrganizationModelScriptResourceLanguage`
359
+
360
+ ```typescript
361
+ export type OrganizationModelScriptResourceLanguage = z.infer<typeof ScriptResourceLanguageSchema>
362
+ ```
363
+
364
+ ### `OrganizationModelScriptResourceSource`
365
+
366
+ ```typescript
367
+ export type OrganizationModelScriptResourceSource = z.infer<typeof ScriptResourceSourceSchema>
368
+ ```
369
+
279
370
  ### `OrganizationModelWorkflowResourceEntry`
280
371
 
281
372
  ```typescript
@@ -294,6 +385,126 @@ export type OrganizationModelAgentResourceEntry = z.infer<typeof AgentResourceEn
294
385
  export type OrganizationModelIntegrationResourceEntry = z.infer<typeof IntegrationResourceEntrySchema>
295
386
  ```
296
387
 
388
+ ### `OrganizationModelScriptResourceEntry`
389
+
390
+ ```typescript
391
+ export type OrganizationModelScriptResourceEntry = z.infer<typeof ScriptResourceEntrySchema>
392
+ ```
393
+
394
+ ### `OrganizationModelActions`
395
+
396
+ ```typescript
397
+ export type OrganizationModelActions = z.infer<typeof ActionsDomainSchema>
398
+ ```
399
+
400
+ ### `OrganizationModelAction`
401
+
402
+ ```typescript
403
+ export type OrganizationModelAction = z.infer<typeof ActionSchema>
404
+ ```
405
+
406
+ ### `OrganizationModelActionId`
407
+
408
+ ```typescript
409
+ export type OrganizationModelActionId = z.infer<typeof ActionIdSchema>
410
+ ```
411
+
412
+ ### `OrganizationModelActionScope`
413
+
414
+ ```typescript
415
+ export type OrganizationModelActionScope = z.infer<typeof ActionScopeSchema>
416
+ ```
417
+
418
+ ### `OrganizationModelActionRef`
419
+
420
+ ```typescript
421
+ export type OrganizationModelActionRef = z.infer<typeof ActionRefSchema>
422
+ ```
423
+
424
+ ### `OrganizationModelActionInvocationKind`
425
+
426
+ ```typescript
427
+ export type OrganizationModelActionInvocationKind = z.infer<typeof ActionInvocationKindSchema>
428
+ ```
429
+
430
+ ### `OrganizationModelActionInvocation`
431
+
432
+ ```typescript
433
+ export type OrganizationModelActionInvocation = z.infer<typeof ActionInvocationSchema>
434
+ ```
435
+
436
+ ### `EntityId`
437
+
438
+ ```typescript
439
+ export type EntityId = z.infer<typeof EntityIdSchema>
440
+ ```
441
+
442
+ ### `EntityLink`
443
+
444
+ ```typescript
445
+ export type EntityLink = z.infer<typeof EntityLinkSchema>
446
+ ```
447
+
448
+ ### `Entity`
449
+
450
+ ```typescript
451
+ export type Entity = z.infer<typeof EntitySchema>
452
+ ```
453
+
454
+ ### `OrganizationModelEntity`
455
+
456
+ ```typescript
457
+ export type OrganizationModelEntity = z.infer<typeof EntitySchema>
458
+ ```
459
+
460
+ ### `OrganizationModelEntities`
461
+
462
+ ```typescript
463
+ export type OrganizationModelEntities = z.infer<typeof EntitiesDomainSchema>
464
+ ```
465
+
466
+ ### `OrganizationModelPolicies`
467
+
468
+ ```typescript
469
+ export type OrganizationModelPolicies = z.infer<typeof PoliciesDomainSchema>
470
+ ```
471
+
472
+ ### `OrganizationModelPolicy`
473
+
474
+ ```typescript
475
+ export type OrganizationModelPolicy = z.infer<typeof PolicySchema>
476
+ ```
477
+
478
+ ### `OrganizationModelPolicyId`
479
+
480
+ ```typescript
481
+ export type OrganizationModelPolicyId = z.infer<typeof PolicyIdSchema>
482
+ ```
483
+
484
+ ### `OrganizationModelPolicyApplicability`
485
+
486
+ ```typescript
487
+ export type OrganizationModelPolicyApplicability = z.infer<typeof PolicyApplicabilitySchema>
488
+ ```
489
+
490
+ ### `OrganizationModelPolicyTrigger`
491
+
492
+ ```typescript
493
+ export type OrganizationModelPolicyTrigger = z.infer<typeof PolicyTriggerSchema>
494
+ ```
495
+
496
+ ### `OrganizationModelPolicyPredicate`
497
+
498
+ ```typescript
499
+ export type OrganizationModelPolicyPredicate = z.infer<typeof PolicyPredicateSchema>
500
+ ```
501
+
502
+ ### `OrganizationModelPolicyEffect`
503
+
504
+ ```typescript
505
+ export type OrganizationModelPolicyEffect = z.infer<typeof PolicyEffectSchema>
506
+ ```
507
+
297
508
  ### `OrganizationModelKnowledge`
298
509
 
299
510
  ```typescript
@@ -306,22 +517,34 @@ export type OrganizationModelKnowledge = z.infer<typeof KnowledgeDomainSchema>
306
517
  export type OrgKnowledgeNode = z.infer<typeof OrgKnowledgeNodeSchema>
307
518
  ```
308
519
 
520
+ ### `OrgKnowledgeNodeInput`
521
+
522
+ ```typescript
523
+ export type OrgKnowledgeNodeInput = z.input<typeof OrgKnowledgeNodeSchema>
524
+ ```
525
+
309
526
  ### `OrgKnowledgeKind`
310
527
 
311
528
  ```typescript
312
529
  export type OrgKnowledgeKind = z.infer<typeof OrgKnowledgeKindSchema>
313
530
  ```
314
531
 
315
- ### `KnowledgeSkillBinding`
532
+ ### `KnowledgeTargetKind`
533
+
534
+ ```typescript
535
+ export type KnowledgeTargetKind = z.infer<typeof KnowledgeTargetKindSchema>
536
+ ```
537
+
538
+ ### `KnowledgeTargetRef`
316
539
 
317
540
  ```typescript
318
- export type KnowledgeSkillBinding = z.infer<typeof KnowledgeSkillBindingSchema>
541
+ export type KnowledgeTargetRef = z.infer<typeof KnowledgeTargetRefSchema>
319
542
  ```
320
543
 
321
- ### `KnowledgeDomainBinding`
544
+ ### `KnowledgeLink`
322
545
 
323
546
  ```typescript
324
- export type KnowledgeDomainBinding = z.infer<typeof KnowledgeDomainBindingSchema>
547
+ export type KnowledgeLink = z.infer<typeof KnowledgeLinkSchema>
325
548
  ```
326
549
 
327
550
  ### `OrganizationModelIconToken`
@@ -353,76 +576,80 @@ export type ElevasisOrganizationModel = Omit<OrganizationModel, 'knowledge'> & {
353
576
  }
354
577
  ```
355
578
 
356
- ### `FeatureSidebarComponent`
579
+ ### `SystemSidebarComponent`
357
580
 
358
581
  ```typescript
359
- export type FeatureSidebarComponent = ComponentType
582
+ export type SystemSidebarComponent = ComponentType
360
583
  ```
361
584
 
362
- ### `FeatureIconComponent`
585
+ ### `SystemIconComponent`
363
586
 
364
587
  ```typescript
365
- export type FeatureIconComponent = ComponentType<{ size?: number; stroke?: number }>
588
+ export type SystemIconComponent = ComponentType<{ size?: number; stroke?: number }>
366
589
  ```
367
590
 
368
- ### `FeatureSidebarWidthResolver`
591
+ ### `SystemSidebarWidthResolver`
369
592
 
370
593
  ```typescript
371
- export type FeatureSidebarWidthResolver = number | ((context: { currentPath: string }) => number)
594
+ export type SystemSidebarWidthResolver = number | ((context: { currentPath: string }) => number)
372
595
  ```
373
596
 
374
- ### `FeatureModule`
597
+ ### `SystemModule`
375
598
 
376
599
  ```typescript
377
- export interface FeatureModule {
378
- /** Unique stable identifier for this feature module. */
600
+ export interface SystemModule {
601
+ /** Unique stable identifier for this UI system module. */
379
602
  key: string
380
- /** Organization Model feature id this module presents. */
381
- featureId: string
382
- /** Capability identifiers contributed by this feature module. */
603
+ /** Organization Model system id this module presents. Omit for navigation-only app surfaces. */
604
+ systemId?: string
605
+ /** Route prefixes owned by navigation-only app surfaces. */
606
+ routePrefixes?: string[]
607
+ /** Capability identifiers contributed by this system module. */
383
608
  capabilityIds?: string[]
384
- /** Icon used when this feature node appears in shell navigation. */
385
- icon?: FeatureIconComponent
386
- /** Sidebar component rendered when this feature's subtree route is active. */
387
- sidebar?: FeatureSidebarComponent
609
+ /** Icon used when this system node appears in shell navigation. */
610
+ icon?: SystemIconComponent
611
+ /** Sidebar component rendered when this system's subtree route is active. */
612
+ sidebar?: SystemSidebarComponent
388
613
  /** Optional shell sidebar width override. Defaults to 250px. */
389
- sidebarWidth?: FeatureSidebarWidthResolver
390
- /** Operations-only bridge connecting this feature to the organization graph node. */
391
- organizationGraph?: OrganizationGraphFeatureBridge
614
+ sidebarWidth?: SystemSidebarWidthResolver
615
+ /** Operations-only bridge connecting this system to the organization graph node. */
616
+ organizationGraph?: OrganizationGraphSystemBridge
392
617
  }
393
618
  ```
394
619
 
395
- ### `ResolvedFeatureAccess`
620
+ ### `ResolvedSystemAccess`
396
621
 
397
622
  ```typescript
398
- export interface ResolvedFeatureAccess {
399
- featureId: string
623
+ export interface ResolvedSystemAccess {
624
+ featureKey: string
625
+ systemId?: string
400
626
  enabled: boolean
401
627
  }
402
628
  ```
403
629
 
404
- ### `ResolvedFeatureSemantics`
630
+ ### `ResolvedSystemSemantics`
405
631
 
406
632
  ```typescript
407
- export interface ResolvedFeatureSemantics {
633
+ export interface ResolvedSystemSemantics {
408
634
  capabilityIds: string[]
409
635
  }
410
636
  ```
411
637
 
412
- ### `ResolvedFeatureModule`
638
+ ### `ResolvedSystemModule`
413
639
 
414
640
  ```typescript
415
- export interface ResolvedFeatureModule extends FeatureModule {
416
- access: ResolvedFeatureAccess
417
- semantics: ResolvedFeatureSemantics
641
+ export interface ResolvedSystemModule extends SystemModule {
642
+ access: ResolvedSystemAccess
643
+ semantics: ResolvedSystemSemantics
418
644
  }
419
645
  ```
420
646
 
421
- ### `ResolvedShellFeature`
647
+ ### `ResolvedShellSystem`
422
648
 
423
649
  ```typescript
424
- export interface ResolvedShellFeature extends OrganizationModelFeature {
425
- iconComponent?: FeatureIconComponent
650
+ export type ResolvedShellSystem = OrganizationModelSystemEntry & {
651
+ label: string
652
+ iconComponent?: SystemIconComponent
426
653
  }
427
654
  ```
428
655
 
@@ -430,19 +657,50 @@ export interface ResolvedShellFeature extends OrganizationModelFeature {
430
657
 
431
658
  ```typescript
432
659
  export interface ResolvedShellModel {
433
- features: readonly ResolvedShellFeature[]
434
- findByPath: (path: string) => ResolvedShellFeature | undefined
435
- findById: (id: string) => ResolvedShellFeature | undefined
436
- childrenOf: (id: string) => ResolvedShellFeature[]
437
- ancestorsOf: (id: string) => ResolvedShellFeature[]
438
- parentOf: (id: string) => ResolvedShellFeature | undefined
439
- topLevel: () => ResolvedShellFeature[]
440
- uiPositionFor: (id: string) => OrganizationModelFeature['uiPosition'] | undefined
660
+ systems: readonly ResolvedShellSystem[]
661
+ findByPath: (path: string) => ResolvedShellSystem | undefined
662
+ findById: (id: string) => ResolvedShellSystem | undefined
663
+ childrenOf: (id: string) => ResolvedShellSystem[]
664
+ ancestorsOf: (id: string) => ResolvedShellSystem[]
665
+ parentOf: (id: string) => ResolvedShellSystem | undefined
666
+ topLevel: () => ResolvedShellSystem[]
441
667
  requiresAdminFor: (id: string) => boolean
442
668
  devOnlyFor: (id: string) => boolean
443
669
  }
444
670
  ```
445
671
 
672
+ ### `ShellSidebarLinkItem`
673
+
674
+ ```typescript
675
+ export interface ShellSidebarLinkItem {
676
+ label: string
677
+ link: string
678
+ exact?: boolean
679
+ activeMatchPaths?: string[]
680
+ }
681
+ ```
682
+
683
+ ### `ShellSidebarLinkGroup`
684
+
685
+ ```typescript
686
+ export interface ShellSidebarLinkGroup {
687
+ icon: SystemIconComponent
688
+ label: string
689
+ links?: ShellSidebarLinkItem[]
690
+ link?: string
691
+ }
692
+ ```
693
+
694
+ ### `ShellSidebarProjectionOptions`
695
+
696
+ ```typescript
697
+ export interface ShellSidebarProjectionOptions {
698
+ isPlatformAdmin?: boolean
699
+ isDev?: boolean
700
+ section?: 'primary' | 'bottom'
701
+ }
702
+ ```
703
+
446
704
  ### `ShellRouteMatchStatus`
447
705
 
448
706
  ```typescript
@@ -455,8 +713,8 @@ export type ShellRouteMatchStatus = 'matched' | 'hidden' | 'unmatched'
455
713
  export interface ResolvedShellRouteMatch {
456
714
  status: ShellRouteMatchStatus
457
715
  path: string
458
- feature?: ResolvedFeatureModule
459
- node?: ResolvedShellFeature
716
+ system?: ResolvedSystemModule
717
+ node?: ResolvedShellSystem
460
718
  }
461
719
  ```
462
720
 
@@ -468,11 +726,11 @@ export interface ShellRuntime {
468
726
  }
469
727
  ```
470
728
 
471
- ### `OrganizationGraphFeatureBridge`
729
+ ### `OrganizationGraphSystemBridge`
472
730
 
473
731
  ```typescript
474
- export interface OrganizationGraphFeatureBridge {
475
- featureId: string
732
+ export interface OrganizationGraphSystemBridge {
733
+ systemId?: string
476
734
  }
477
735
  ```
478
736
 
@@ -481,16 +739,16 @@ export interface OrganizationGraphFeatureBridge {
481
739
  ```typescript
482
740
  export interface OrganizationGraphContextValue {
483
741
  available: boolean
484
- featureId?: string
485
- featurePath?: string
742
+ systemId?: string
743
+ systemPath?: string
486
744
  }
487
745
  ```
488
746
 
489
- ### `ElevasisFeaturesProviderProps`
747
+ ### `ElevasisSystemsProviderProps`
490
748
 
491
749
  ```typescript
492
- export interface ElevasisFeaturesProviderProps {
493
- features: FeatureModule[]
750
+ export interface ElevasisSystemsProviderProps {
751
+ systems?: SystemModule[]
494
752
  organizationModel?: ElevasisOrganizationModel
495
753
  timeRange?: TimeRange
496
754
  operationsApiUrl?: string
@@ -502,14 +760,15 @@ export interface ElevasisFeaturesProviderProps {
502
760
  }
503
761
  ```
504
762
 
505
- ### `ElevasisFeaturesContextValue`
763
+ ### `ElevasisSystemsContextValue`
506
764
 
507
765
  ```typescript
508
- export interface ElevasisFeaturesContextValue {
766
+ export interface ElevasisSystemsContextValue {
509
767
  shellModel: ResolvedShellModel
510
768
  shellRuntime: ShellRuntime
511
- enabledResolvedFeatures: ResolvedFeatureModule[]
512
- resolvedFeatures: ResolvedFeatureModule[]
769
+ getSidebarLinks: (options?: ShellSidebarProjectionOptions) => ShellSidebarLinkGroup[]
770
+ enabledResolvedSystems: ResolvedSystemModule[]
771
+ resolvedSystems: ResolvedSystemModule[]
513
772
  organizationGraph: OrganizationGraphContextValue
514
773
  organizationModel?: OrganizationModel
515
774
  timeRange?: TimeRange
@@ -518,8 +777,8 @@ export interface ElevasisFeaturesContextValue {
518
777
  deliveryApiUrl?: string
519
778
  deliverySSEManager?: SSEConnectionManagerLike
520
779
  disabledSubsectionPaths: string[]
521
- isFeatureEnabled: (key: string) => boolean
522
- getResolvedFeature: (key: string) => ResolvedFeatureModule | undefined
780
+ isSystemEnabled: (key: string) => boolean
781
+ getResolvedSystem: (key: string) => ResolvedSystemModule | undefined
523
782
  }
524
783
  ```
525
784
 
@@ -557,7 +816,7 @@ export type ExecutableResourceType = 'workflow' | 'agent'
557
816
  ### `ResourceSystemSummary`
558
817
 
559
818
  ```typescript
560
- export type ResourceSystemSummary = Pick<SystemEntry, 'id' | 'title' | 'description' | 'kind' | 'status'>
819
+ export type ResourceSystemSummary = Pick<SystemEntry, 'id' | 'title' | 'description' | 'kind' | 'lifecycle'>
561
820
  ```
562
821
 
563
822
  ### `ResourceDefinition`
@@ -598,8 +857,8 @@ export interface ResourceDefinition {
598
857
  /** Whether the resource is local (monorepo) or remote (externally deployed) */
599
858
  origin?: 'local' | 'remote'
600
859
 
601
- /** OM System membership, when backed by a Resource descriptor */
602
- systemId?: string
860
+ /** OM System membership — dot-separated system path (e.g. "sys.lead-gen"), when backed by a Resource descriptor */
861
+ systemPath?: string
603
862
 
604
863
  /** Display metadata for the owning OM System */
605
864
  system?: ResourceSystemSummary
@@ -2701,7 +2960,7 @@ export const AcqListSchemas = {
2701
2960
  BuildPlanSnapshotStep: BuildPlanSnapshotStepSchema,
2702
2961
  AcqListMetadata: AcqListMetadataSchema,
2703
2962
  LeadGenStageKey: LeadGenStageKeySchema,
2704
- LeadGenCapabilityKey: LeadGenCapabilityKeySchema,
2963
+ LeadGenActionKey: LeadGenActionKeySchema,
2705
2964
  ProcessingStageStatus: ProcessingStageStatusSchema,
2706
2965
  ProcessingState: ProcessingStateSchema,
2707
2966
  ListStageCounts: ListStageCountsSchema,
@@ -3525,15 +3784,23 @@ export type ListToolMap = {
3525
3784
  ### `KnowledgeLinkSchema`
3526
3785
 
3527
3786
  ```typescript
3528
- export const KnowledgeLinkSchema = z.object({
3529
- nodeId: NodeIdStringSchema
3530
- })
3787
+ export const KnowledgeLinkSchema = z
3788
+ .union([CanonicalKnowledgeLinkSchema, LegacyKnowledgeLinkSchema])
3789
+ .transform((link) => {
3790
+ const target = 'target' in link ? link.target : targetFromNodeId(link.nodeId)
3791
+ return {
3792
+ target,
3793
+ nodeId: nodeIdFromTarget(target)
3794
+ }
3795
+ })
3531
3796
  ```
3532
3797
 
3533
3798
  ### `OrgKnowledgeKindSchema`
3534
3799
 
3535
3800
  ```typescript
3536
- export const OrgKnowledgeKindSchema = z.enum(['playbook', 'strategy', 'reference'])
3801
+ export const OrgKnowledgeKindSchema = z
3802
+ .enum(['playbook', 'strategy', 'reference'])
3803
+ .meta({ label: 'Knowledge kind', color: 'grape' })
3537
3804
  ```
3538
3805
 
3539
3806
  ### `OrgKnowledgeNodeSchema`
@@ -3545,6 +3812,8 @@ export const OrgKnowledgeNodeSchema = z.object({
3545
3812
  title: z.string().trim().min(1).max(200),
3546
3813
  summary: z.string().trim().min(1).max(1000),
3547
3814
  icon: IconNameSchema.optional(),
3815
+ /** Canonical documentation URL when body content is a local summary. */
3816
+ externalUrl: z.string().trim().url().max(500).optional(),
3548
3817
  /** Raw MDX string. Phase 2 will introduce a structured block format. */
3549
3818
  body: z.string().trim().min(1),
3550
3819
  /**
@@ -3552,12 +3821,8 @@ export const OrgKnowledgeNodeSchema = z.object({
3552
3821
  * Each link emits a `governs` edge: knowledge-node -> target node.
3553
3822
  */
3554
3823
  links: z.array(KnowledgeLinkSchema).default([]),
3555
- /** Operator skill or command bindings relevant to this node. */
3556
- skills: z.array(KnowledgeSkillBindingSchema).optional(),
3557
- /** Domain key used to derive fast graph->skill registries. */
3558
- domain: KnowledgeDomainBindingSchema.optional(),
3559
3824
  /** Role identifiers that own this knowledge node. */
3560
- ownerIds: z.array(RoleIdSchema).default([]),
3825
+ ownerIds: z.array(RoleIdSchema.meta({ ref: 'role' })).default([]),
3561
3826
  /** ISO date string (YYYY-MM-DD or full ISO 8601) of last meaningful update. */
3562
3827
  updatedAt: z.string().trim().min(1).max(50)
3563
3828
  })
@@ -3566,9 +3831,7 @@ export const OrgKnowledgeNodeSchema = z.object({
3566
3831
  ### `KnowledgeDomainSchema`
3567
3832
 
3568
3833
  ```typescript
3569
- export const KnowledgeDomainSchema = z.object({
3570
- nodes: z.array(OrgKnowledgeNodeSchema).default([])
3571
- })
3834
+ export const KnowledgeDomainSchema = z.record(ModelIdSchema, OrgKnowledgeNodeSchema).default({})
3572
3835
  ```
3573
3836
 
3574
3837
  ### `OrgKnowledgeNode`