@elevasis/ui 2.33.2 → 2.35.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 (116) hide show
  1. package/dist/api/index.d.ts +9 -2
  2. package/dist/api/index.js +3 -3
  3. package/dist/app/index.css +452 -0
  4. package/dist/app/index.d.ts +1255 -8
  5. package/dist/app/index.js +151 -13
  6. package/dist/charts/index.js +3 -6
  7. package/dist/chunk-26HFM4MH.js +41449 -0
  8. package/dist/{chunk-52K5RFDH.js → chunk-4U3XAWCN.js} +1328 -2492
  9. package/dist/{chunk-ND5TDV2J.js → chunk-57OZ3AEG.js} +1 -1
  10. package/dist/{chunk-E4WQGJNS.js → chunk-7FPLLSHN.js} +14 -1
  11. package/dist/{chunk-RQA2EVN3.js → chunk-AKW7KISS.js} +39 -3
  12. package/dist/chunk-AUDNF2Q7.js +2050 -0
  13. package/dist/{chunk-TYRUKGGD.js → chunk-GX6XBRRF.js} +1 -2
  14. package/dist/{chunk-V6SZ4ECN.js → chunk-LUYVRATI.js} +257 -6
  15. package/dist/{chunk-X4WBGKJQ.js → chunk-R3VCBZDC.js} +50 -3
  16. package/dist/chunk-SIQ3P4OR.js +1764 -0
  17. package/dist/{chunk-Z2K2EAPL.js → chunk-VDOOGGBA.js} +5 -6
  18. package/dist/{chunk-3FV6HBXS.js → chunk-WF7CONXF.js} +23 -23
  19. package/dist/chunk-YYX7OPZQ.js +25 -0
  20. package/dist/components/index.d.ts +69 -92
  21. package/dist/components/index.js +20 -3216
  22. package/dist/components/navigation/index.js +25 -7
  23. package/dist/execution/index.d.ts +9 -9
  24. package/dist/execution/index.js +1 -2
  25. package/dist/features/auth/index.js +23 -2
  26. package/dist/features/clients/index.js +20 -31
  27. package/dist/features/crm/index.js +20 -35
  28. package/dist/features/dashboard/index.d.ts +68 -91
  29. package/dist/features/dashboard/index.js +20 -33
  30. package/dist/features/delivery/index.js +20 -35
  31. package/dist/features/knowledge/index.js +25 -11
  32. package/dist/features/lead-gen/index.d.ts +9 -9
  33. package/dist/features/lead-gen/index.js +20 -36
  34. package/dist/features/monitoring/index.js +20 -35
  35. package/dist/features/monitoring/requests/index.js +20 -30
  36. package/dist/features/operations/index.d.ts +197 -188
  37. package/dist/features/operations/index.js +18 -42
  38. package/dist/features/seo/index.js +3 -4
  39. package/dist/features/settings/index.js +20 -32
  40. package/dist/graph/index.js +1 -1
  41. package/dist/hooks/delivery/index.js +30 -2
  42. package/dist/hooks/index.d.ts +105 -112
  43. package/dist/hooks/index.js +20 -26
  44. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +55 -62
  45. package/dist/hooks/published.d.ts +105 -112
  46. package/dist/hooks/published.js +20 -25
  47. package/dist/index.css +532 -532
  48. package/dist/index.d.ts +10261 -6793
  49. package/dist/index.js +22 -31
  50. package/dist/knowledge/index.d.ts +51 -59
  51. package/dist/knowledge/index.js +40 -211
  52. package/dist/{knowledge-search-index-VMAW7FLR.js → knowledge-search-index-ORIJCEZX.js} +3 -3
  53. package/dist/layout/index.js +4 -10
  54. package/dist/organization/index.js +27 -2
  55. package/dist/provider/index.d.ts +71 -52
  56. package/dist/provider/index.js +20 -20
  57. package/dist/provider/published.d.ts +39 -47
  58. package/dist/provider/published.js +20 -15
  59. package/dist/test-utils/index.d.ts +2 -0
  60. package/dist/test-utils/index.js +16 -4
  61. package/dist/test-utils/setup.js +38 -0
  62. package/dist/theme/index.js +2 -3
  63. package/dist/theme/presets/index.d.ts +28 -3
  64. package/dist/theme/presets/index.js +1 -1
  65. package/dist/typeform/index.js +1 -2049
  66. package/dist/types/index.d.ts +88 -95
  67. package/dist/utils/index.d.ts +46 -69
  68. package/dist/utils/index.js +1 -1
  69. package/dist/zustand/index.d.ts +21 -8
  70. package/dist/zustand/index.js +32 -1
  71. package/package.json +5 -5
  72. package/dist/chunk-2ZZ72TAB.js +0 -2281
  73. package/dist/chunk-32I2RCGC.js +0 -85
  74. package/dist/chunk-3MEXPLWT.js +0 -265
  75. package/dist/chunk-3ZMAGTWF.js +0 -18
  76. package/dist/chunk-44I4LOH6.js +0 -1593
  77. package/dist/chunk-4DYOXEH6.js +0 -951
  78. package/dist/chunk-7M2VOCYN.js +0 -1
  79. package/dist/chunk-A4VDJJCV.js +0 -1864
  80. package/dist/chunk-BZZCNLT6.js +0 -12
  81. package/dist/chunk-CLDCYJQT.js +0 -1
  82. package/dist/chunk-E565XMTQ.js +0 -17
  83. package/dist/chunk-EPTHX4VZ.js +0 -749
  84. package/dist/chunk-GWGQI6V4.js +0 -447
  85. package/dist/chunk-HUJCU55S.js +0 -159
  86. package/dist/chunk-IBWMR4TI.js +0 -469
  87. package/dist/chunk-IIMU5YAJ.js +0 -53
  88. package/dist/chunk-IOXOPMYS.js +0 -145
  89. package/dist/chunk-J2UD7BOH.js +0 -347
  90. package/dist/chunk-JA5ECJJB.js +0 -387
  91. package/dist/chunk-JFL3GRD4.js +0 -39
  92. package/dist/chunk-KW7ZNQD7.js +0 -126
  93. package/dist/chunk-LGKLC5MG.js +0 -44
  94. package/dist/chunk-N55DVMAG.js +0 -14
  95. package/dist/chunk-O56ESZCQ.js +0 -1874
  96. package/dist/chunk-OIBHQH5Q.js +0 -96
  97. package/dist/chunk-PDHTXPSF.js +0 -12
  98. package/dist/chunk-QDFJSUG3.js +0 -13
  99. package/dist/chunk-R2XR4FCV.js +0 -48
  100. package/dist/chunk-R66W5UDG.js +0 -26
  101. package/dist/chunk-RYTEQBAO.js +0 -37
  102. package/dist/chunk-SZHARWKU.js +0 -15
  103. package/dist/chunk-T3J6U77J.js +0 -12056
  104. package/dist/chunk-TBVLQRXT.js +0 -68
  105. package/dist/chunk-TGVAIWIL.js +0 -1778
  106. package/dist/chunk-TKAYX2SP.js +0 -204
  107. package/dist/chunk-TUMSNGTX.js +0 -35
  108. package/dist/chunk-VGU4ZFYZ.js +0 -4752
  109. package/dist/chunk-VNAZTCHA.js +0 -65
  110. package/dist/chunk-VNFR57DF.js +0 -87
  111. package/dist/chunk-WKW6B5ID.js +0 -29
  112. package/dist/chunk-XCYKC6OZ.js +0 -1
  113. package/dist/chunk-XZGSCABI.js +0 -383
  114. package/dist/chunk-ZMK5Z6KE.js +0 -5198
  115. /package/dist/{chunk-2RJMVWFJ.js → chunk-GEFWMU26.js} +0 -0
  116. /package/dist/{chunk-22UVE3RA.js → chunk-HENXLGVD.js} +0 -0
@@ -1,22 +1,14 @@
1
- import { getKnowledgeIconToken, getKnowledgeGraphNodeCommand, getKnowledgeNodeReadCommand, getKnowledgeOntologyProjection, getPrimaryOntologyItemsForDomain, projectNavigationSurfaces, projectNavigationGroups, getOntologyDomainLabel, getKnowledgeDomainFolderCommand, getKnowledgeTreeFolderCommand, KNOWLEDGE_DOMAINS_WITH_PANELS } from '../chunk-Z2K2EAPL.js';
2
- export { KNOWLEDGE_ICON_TOKEN_BY_KIND, KnowledgeSearchBar, KnowledgeTree, OM_TREE_GROUPS, getKnowledgeIconToken, getSharedOrganizationGraph } from '../chunk-Z2K2EAPL.js';
3
- import '../chunk-V6SZ4ECN.js';
4
- import '../chunk-N55DVMAG.js';
5
- import '../chunk-CLDCYJQT.js';
6
- import '../chunk-X4WBGKJQ.js';
7
- import '../chunk-IIMU5YAJ.js';
8
- import '../chunk-RYTEQBAO.js';
9
- import { PageContainer } from '../chunk-BZZCNLT6.js';
10
- import '../chunk-WLOQ4IBG.js';
11
- import '../chunk-TKAYX2SP.js';
1
+ import { getKnowledgeIconToken, getKnowledgeGraphNodeCommand, getKnowledgeNodeReadCommand, getKnowledgeOntologyProjection, getPrimaryOntologyItemsForDomain, projectNavigationSurfaces, projectNavigationGroups, getOntologyDomainLabel, getKnowledgeDomainFolderCommand, getKnowledgeTreeFolderCommand, KNOWLEDGE_DOMAINS_WITH_PANELS } from '../chunk-VDOOGGBA.js';
2
+ export { KNOWLEDGE_ICON_TOKEN_BY_KIND, KnowledgeSearchBar, KnowledgeTree, OM_TREE_GROUPS, getKnowledgeIconToken, getSharedOrganizationGraph } from '../chunk-VDOOGGBA.js';
3
+ import { SemanticIcon, getSystem, SystemEntrySchema, IdentityDomainSchema, WorkflowResourceEntrySchema, AgentResourceEntrySchema, IntegrationResourceEntrySchema, ScriptResourceEntrySchema, SurfaceDefinitionSchema, RoleSchema, PolicySchema, EntitySchema, ActionSchema, OntologyIdSchema, ontologyGraphNodeId, compileOrganizationOntology, parseOntologyId } from '../chunk-4U3XAWCN.js';
4
+ export { SemanticIcon, extendSemanticIconRegistry, getSemanticIconComponent, resolveSemanticIconComponent } from '../chunk-4U3XAWCN.js';
5
+ import { PageContainer } from '../chunk-LUYVRATI.js';
12
6
  import '../chunk-NYBEU5TE.js';
13
- import { SemanticIcon } from '../chunk-IOXOPMYS.js';
14
- export { SemanticIcon, extendSemanticIconRegistry, getSemanticIconComponent, resolveSemanticIconComponent } from '../chunk-IOXOPMYS.js';
15
- import { getSystem, SystemEntrySchema, IdentityDomainSchema, WorkflowResourceEntrySchema, AgentResourceEntrySchema, IntegrationResourceEntrySchema, ScriptResourceEntrySchema, getContent, lookupContentType, SurfaceDefinitionSchema, RoleSchema, PolicySchema, EntitySchema, ActionSchema, listAllSystems, SalesStageSchema, OntologyIdSchema, ontologyGraphNodeId } from '../chunk-52K5RFDH.js';
7
+ import '../chunk-WLOQ4IBG.js';
8
+ import '../chunk-R3VCBZDC.js';
9
+ import '../chunk-DT3QYZVU.js';
16
10
  import '../chunk-2IFYDILW.js';
17
11
  import '../chunk-Q7DJKLEN.js';
18
- import '../chunk-E565XMTQ.js';
19
- import '../chunk-DT3QYZVU.js';
20
12
  import '../chunk-I2KLQ2HA.js';
21
13
  import { createContext, Children, isValidElement, cloneElement, useMemo, useContext, useRef, useState, useEffect } from 'react';
22
14
  import { Card, Text, SimpleGrid, Group, Stack, Alert, Tabs, Box, Table, CopyButton, Tooltip, ActionIcon, Title, Badge, Divider, Button, Paper, TableOfContents, ThemeIcon, UnstyledButton, List, Code, Progress } from '@mantine/core';
@@ -3949,11 +3941,11 @@ function _createMdxContent(props) {
3949
3941
  children: ["\\n", _jsxs(_components.li, {
3950
3942
  children: ["For ", _jsx(_components.code, {
3951
3943
  children: "crm.pipeline"
3952
- }), ", the builder walks pipeline content via the pipeline migration helper."]
3944
+ }), ", the builder walks pipeline catalog records via the pipeline migration helper."]
3953
3945
  }), "\\n", _jsxs(_components.li, {
3954
3946
  children: ["For ", _jsx(_components.code, {
3955
3947
  children: "delivery.task"
3956
- }), ", the builder walks project task status content via the project-status helper."]
3948
+ }), ", the builder walks project task status catalog records via the project-status helper."]
3957
3949
  }), "\\n", _jsxs(_components.li, {
3958
3950
  children: ["For ", _jsx(_components.code, {
3959
3951
  children: "lead-gen.company"
@@ -3961,8 +3953,8 @@ function _createMdxContent(props) {
3961
3953
  children: "lead-gen.contact"
3962
3954
  }), ", the builder walks the lead-gen stage catalog."]
3963
3955
  }), "\\n", _jsxs(_components.li, {
3964
- children: ["General status catalogs now live in ", _jsx(_components.code, {
3965
- children: "System.content"
3956
+ children: ["General status catalogs live in ", _jsx(_components.code, {
3957
+ children: "System.ontology.catalogTypes"
3966
3958
  }), "; direct ", _jsx(_components.code, {
3967
3959
  children: "OM.statuses"
3968
3960
  }), " reads are legacy."]
@@ -4130,7 +4122,7 @@ function _createMdxContent(props) {
4130
4122
  }), "\\n", _jsxs(_components.li, {
4131
4123
  children: ["To change an entity state-transition event, update the entity's ", _jsx(_components.code, {
4132
4124
  children: "stateCatalogId"
4133
- }), " or the underlying status/stage content entry on the owning System."]
4125
+ }), " or the underlying ontology status/stage catalog on the owning System."]
4134
4126
  }), "\\n"]
4135
4127
  }), "\\n", _jsxs(_components.p, {
4136
4128
  children: ["The graph builder projects these into ", _jsx(_components.code, {
@@ -4264,8 +4256,8 @@ function _createMdxContent(props) {
4264
4256
  children: ["\\n", _jsxs(_components.li, {
4265
4257
  children: [_jsx(_components.strong, {
4266
4258
  children: "General status catalogs"
4267
- }), ": status data now lives in ", _jsx(_components.code, {
4268
- children: "System.content"
4259
+ }), ": status data lives in ", _jsx(_components.code, {
4260
+ children: "System.ontology.catalogTypes"
4269
4261
  }), "; direct ", _jsx(_components.code, {
4270
4262
  children: "OM.statuses"
4271
4263
  }), " reads are legacy."]
@@ -4274,13 +4266,13 @@ function _createMdxContent(props) {
4274
4266
  children: _jsx(_components.code, {
4275
4267
  children: "crm.pipeline"
4276
4268
  })
4277
- }), ": walks pipeline content via the pipeline migration helper."]
4269
+ }), ": walks pipeline catalog records via the pipeline migration helper."]
4278
4270
  }), "\\n", _jsxs(_components.li, {
4279
4271
  children: [_jsx(_components.strong, {
4280
4272
  children: _jsx(_components.code, {
4281
4273
  children: "delivery.task"
4282
4274
  })
4283
- }), ": walks project task status content via the project-status helper."]
4275
+ }), ": walks project task status catalog records via the project-status helper."]
4284
4276
  }), "\\n", _jsxs(_components.li, {
4285
4277
  children: [_jsxs(_components.strong, {
4286
4278
  children: [_jsx(_components.code, {
@@ -4633,10 +4625,8 @@ function _createMdxContent(props) {
4633
4625
  })
4634
4626
  }), _jsx(_components.td, {
4635
4627
  children: "Projected"
4636
- }), _jsxs(_components.td, {
4637
- children: ["Derived from prospecting stage helpers over ", _jsx(_components.code, {
4638
- children: "System.content"
4639
- }), " and compatibility catalogs"]
4628
+ }), _jsx(_components.td, {
4629
+ children: "Derived from ontology-backed stage catalog helpers"
4640
4630
  })]
4641
4631
  }), _jsxs(_components.tr, {
4642
4632
  children: [_jsx(_components.td, {
@@ -4722,24 +4712,6 @@ function _createMdxContent(props) {
4722
4712
  children: "OM.navigation.sidebar"
4723
4713
  })]
4724
4714
  })]
4725
- }), _jsxs(_components.tr, {
4726
- children: [_jsx(_components.td, {
4727
- children: _jsx(_components.code, {
4728
- children: "content-node"
4729
- })
4730
- }), _jsx(_components.td, {
4731
- children: "Authored on System, projected to graph"
4732
- }), _jsxs(_components.td, {
4733
- children: [_jsx(_components.code, {
4734
- children: "System.content"
4735
- }), " entries such as ", _jsx(_components.code, {
4736
- children: "schema:pipeline"
4737
- }), ", ", _jsx(_components.code, {
4738
- children: "schema:stage"
4739
- }), ", and ", _jsx(_components.code, {
4740
- children: "config:kv"
4741
- })]
4742
- })]
4743
4715
  })]
4744
4716
  })]
4745
4717
  }), "\\n", _jsx(_components.h2, {
@@ -4963,9 +4935,9 @@ function _createMdxContent(props) {
4963
4935
  }), "\\n", _jsx(_components.h3, {
4964
4936
  children: "Authored nodes"
4965
4937
  }), "\\n", _jsxs(_components.p, {
4966
- children: ["System, role, action, entity, policy, resource, knowledge, customer-segment, offering, and goal nodes are authored in the OM domain maps. Content nodes are authored inside ", _jsx(_components.code, {
4967
- children: "System.content"
4968
- }), " and projected with qualified graph IDs. Their ", _jsx(_components.code, {
4938
+ children: ["System, role, action, entity, policy, resource, knowledge, customer-segment, offering, and goal nodes are authored in the OM domain maps. Ontology catalog nodes are authored inside ", _jsx(_components.code, {
4939
+ children: "System.ontology.catalogTypes"
4940
+ }), " and projected with ontology graph IDs. Their ", _jsx(_components.code, {
4969
4941
  children: "id"
4970
4942
  }), ", ", _jsx(_components.code, {
4971
4943
  children: "label"
@@ -4994,9 +4966,7 @@ function _createMdxContent(props) {
4994
4966
  }), "\\n", _jsxs(_components.li, {
4995
4967
  children: [_jsx(_components.strong, {
4996
4968
  children: "Stage nodes"
4997
- }), ": derived from prospecting stage helpers over current ", _jsx(_components.code, {
4998
- children: "System.content"
4999
- }), " and compatibility catalogs."]
4969
+ }), ": derived from ontology-backed prospecting and lead-gen stage helpers."]
5000
4970
  }), "\\n", _jsxs(_components.li, {
5001
4971
  children: [_jsx(_components.strong, {
5002
4972
  children: "Surface and navigation-group nodes"
@@ -8499,22 +8469,7 @@ function ResourceDescribeView({
8499
8469
  }
8500
8470
  );
8501
8471
  }
8502
- function StageDescribeView({
8503
- node,
8504
- graph,
8505
- knowledgeNodes,
8506
- onNavigateToNode,
8507
- organizationModel
8508
- }) {
8509
- const stage = node.sourceId != null && organizationModel != null ? (() => {
8510
- const colonIdx = node.sourceId.indexOf(":");
8511
- if (colonIdx === -1) return void 0;
8512
- const systemPath = node.sourceId.slice(0, colonIdx);
8513
- const localId = node.sourceId.slice(colonIdx + 1);
8514
- const found = listAllSystems(organizationModel).find(({ path }) => path === systemPath);
8515
- const contentNode = found?.system.content?.[localId];
8516
- return contentNode?.kind === "schema" && contentNode.type === "stage" ? { id: localId, label: contentNode.label, ...contentNode.data ?? {} } : void 0;
8517
- })() : void 0;
8472
+ function StageDescribeView({ node, graph, knowledgeNodes, onNavigateToNode }) {
8518
8473
  const actionIds = graph.edges.filter((e) => e.kind === "uses" && e.sourceId === node.id).map((e) => e.targetId).filter((id, i, arr) => arr.indexOf(id) === i);
8519
8474
  const dependsOnStageIds = graph.edges.filter((e) => e.kind === "references" && e.sourceId === node.id).map((e) => e.targetId).filter((id, i, arr) => arr.indexOf(id) === i);
8520
8475
  return /* @__PURE__ */ jsx(
@@ -8544,15 +8499,6 @@ function StageDescribeView({
8544
8499
  { kind: "references", direction: "outgoing" }
8545
8500
  ]
8546
8501
  }
8547
- ),
8548
- /* @__PURE__ */ jsx(
8549
- SchemaDrivenFieldList,
8550
- {
8551
- schema: SalesStageSchema,
8552
- value: stage,
8553
- excludeFieldNames: ["id", "label", "description"],
8554
- onNavigateToNode
8555
- }
8556
8502
  )
8557
8503
  ] }),
8558
8504
  footer: /* @__PURE__ */ jsx(NodeMetadataFooter, { node })
@@ -8927,101 +8873,6 @@ function SurfaceDescribeView({
8927
8873
  }
8928
8874
  );
8929
8875
  }
8930
- function ContentNodeDescribeView({
8931
- node,
8932
- graph,
8933
- knowledgeNodes,
8934
- onNavigateToNode,
8935
- organizationModel
8936
- }) {
8937
- const content = node.sourceId != null && organizationModel != null ? getContent(organizationModel, node.sourceId) : void 0;
8938
- const kind = content?.kind ?? node.kind;
8939
- const type = content?.type ?? void 0;
8940
- const def = kind != null && type != null ? lookupContentType(kind, type) : void 0;
8941
- const isRegistered = def != null;
8942
- if (!isRegistered && typeof import.meta !== "undefined" && import.meta.env?.DEV) {
8943
- console.warn(
8944
- `[ContentNodeDescribeView] Unregistered content kind/type: ${kind ?? "(unknown)"}/${type ?? "(unknown)"} for node ${node.id}. Rendering generic fallback.`
8945
- );
8946
- }
8947
- const kindLabel = kind != null && type != null ? `${kind}:${type}` : kind ?? type ?? "content-node";
8948
- return /* @__PURE__ */ jsx(
8949
- NodeDescribeShell,
8950
- {
8951
- header: /* @__PURE__ */ jsx(
8952
- NodeHeader,
8953
- {
8954
- title: node.label,
8955
- kind: "Content",
8956
- tone: "subtle",
8957
- description: node.description ?? content?.description,
8958
- rightSection: /* @__PURE__ */ jsx(
8959
- KindChip,
8960
- {
8961
- kind: kindLabel,
8962
- tone: isRegistered ? "primary" : "muted",
8963
- style: { flexShrink: 0, marginTop: 4 }
8964
- }
8965
- )
8966
- }
8967
- ),
8968
- content: /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
8969
- node.sourceId && /* @__PURE__ */ jsx(KeyField, { label: "ID", value: node.sourceId }),
8970
- content?.label && /* @__PURE__ */ jsx(KeyField, { label: "Label", value: content.label }),
8971
- content?.description && /* @__PURE__ */ jsx(KeyField, { label: "Description", value: content.description }),
8972
- content?.order != null && /* @__PURE__ */ jsx(KeyField, { label: "Order", value: String(content.order) }),
8973
- content?.parentContentId && /* @__PURE__ */ jsx(KeyField, { label: "Parent content", value: content.parentContentId }),
8974
- !isRegistered && /* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
8975
- /* @__PURE__ */ jsx(KindChip, { kind: "unregistered kind", tone: "muted" }),
8976
- content?.data != null && /* @__PURE__ */ jsx(
8977
- Box,
8978
- {
8979
- component: "pre",
8980
- style: {
8981
- fontSize: "var(--mantine-font-size-xs)",
8982
- fontFamily: "var(--mantine-font-family-monospace)",
8983
- background: "var(--color-surface)",
8984
- border: "1px solid var(--color-border)",
8985
- borderRadius: "var(--mantine-radius-sm)",
8986
- padding: "var(--mantine-spacing-xs)",
8987
- overflowX: "auto",
8988
- whiteSpace: "pre-wrap",
8989
- wordBreak: "break-all",
8990
- margin: 0
8991
- },
8992
- children: JSON.stringify(content.data, null, 2)
8993
- }
8994
- )
8995
- ] })
8996
- ] }),
8997
- relationships: /* @__PURE__ */ jsx(
8998
- EdgeRelationshipGroup,
8999
- {
9000
- nodeId: node.id,
9001
- graph,
9002
- knowledgeNodes,
9003
- onNavigateToNode
9004
- }
9005
- ),
9006
- footer: /* @__PURE__ */ jsxs(Fragment, { children: [
9007
- isRegistered && /* @__PURE__ */ jsxs(Fragment, { children: [
9008
- /* @__PURE__ */ jsx(Divider, {}),
9009
- /* @__PURE__ */ jsx(Text, { size: "xs", fw: 600, tt: "uppercase", c: "dimmed", style: { letterSpacing: "0.05em" }, children: "Payload" }),
9010
- /* @__PURE__ */ jsx(
9011
- SchemaDrivenFieldList,
9012
- {
9013
- schema: def.payloadSchema,
9014
- value: content?.data,
9015
- excludeFieldNames: [],
9016
- onNavigateToNode
9017
- }
9018
- )
9019
- ] }),
9020
- /* @__PURE__ */ jsx(NodeMetadataFooter, { node })
9021
- ] })
9022
- }
9023
- );
9024
- }
9025
8876
  function BrandingPanel({ model }) {
9026
8877
  const branding = model.branding;
9027
8878
  if (!branding) {
@@ -9779,31 +9630,21 @@ var SEMANTIC_CLASS_COLORS = {
9779
9630
  function formatCategoryLabel(category) {
9780
9631
  return category.split(/[.\-_]/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
9781
9632
  }
9782
- function collectStatusEntriesFromSystem(systemId, system, acc) {
9783
- const content = system.content ?? {};
9784
- for (const [localId, node] of Object.entries(content)) {
9785
- if (node.kind !== "schema" || node.type !== "status") continue;
9786
- const data = node.data ?? {};
9787
- const semanticClass = typeof data.semanticClass === "string" ? data.semanticClass : "unknown";
9788
- const category = semanticClass.split(".")[0] ?? semanticClass;
9789
- acc.push({
9790
- id: `${systemId}:${localId}`,
9791
- label: node.label,
9792
- order: typeof node.order === "number" ? node.order : 0,
9793
- semanticClass,
9794
- category
9795
- });
9796
- }
9797
- for (const subsystem of Object.values(system.subsystems ?? {})) {
9798
- collectStatusEntriesFromSystem(subsystem.id, subsystem, acc);
9799
- }
9800
- }
9801
9633
  function collectAllStatusEntries(model) {
9802
- const acc = [];
9803
- for (const system of Object.values(model.systems)) {
9804
- collectStatusEntriesFromSystem(system.id, system, acc);
9805
- }
9806
- return acc;
9634
+ return Object.values(compileOrganizationOntology(model).ontology.catalogTypes).filter((catalog) => catalog.kind === "status-flow").flatMap((catalog) => {
9635
+ const appliesTo = catalog.appliesTo !== void 0 ? parseOntologyId(catalog.appliesTo).localId : "unknown";
9636
+ return Object.entries(catalog.entries ?? {}).map(([localId, value]) => {
9637
+ const entry = value && typeof value === "object" && !Array.isArray(value) ? value : {};
9638
+ const semanticClass = typeof entry.semanticClass === "string" ? entry.semanticClass : `${appliesTo}.${localId}`;
9639
+ return {
9640
+ id: `${catalog.id}:${localId}`,
9641
+ label: typeof entry.label === "string" ? entry.label : localId,
9642
+ order: typeof entry.order === "number" ? entry.order : 0,
9643
+ semanticClass,
9644
+ category: appliesTo
9645
+ };
9646
+ });
9647
+ });
9807
9648
  }
9808
9649
  function StatusesPanel({ model, filterToItemId }) {
9809
9650
  const allEntries = collectAllStatusEntries(model).filter((entry) => !filterToItemId || entry.id === filterToItemId).sort((a, b) => a.order - b.order);
@@ -9824,10 +9665,9 @@ function StatusesPanel({ model, filterToItemId }) {
9824
9665
  const semanticClasses = new Set(allEntries.map((entry) => entry.semanticClass));
9825
9666
  const entriesByCategory = /* @__PURE__ */ new Map();
9826
9667
  for (const entry of allEntries) {
9827
- const category = entry.category ?? "uncategorized";
9828
- const entries = entriesByCategory.get(category) ?? [];
9668
+ const entries = entriesByCategory.get(entry.category) ?? [];
9829
9669
  entries.push(entry);
9830
- entriesByCategory.set(category, entries);
9670
+ entriesByCategory.set(entry.category, entries);
9831
9671
  }
9832
9672
  const categoryGroups = [...entriesByCategory.entries()].sort(([left], [right]) => left.localeCompare(right)).map(([category, entries]) => ({
9833
9673
  category,
@@ -10322,17 +10162,6 @@ function DescribeNodeView({
10322
10162
  onNavigateToNode
10323
10163
  }
10324
10164
  ) });
10325
- case "content-node":
10326
- return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
10327
- ContentNodeDescribeView,
10328
- {
10329
- node,
10330
- graph,
10331
- knowledgeNodes,
10332
- onNavigateToNode,
10333
- organizationModel
10334
- }
10335
- ) });
10336
10165
  default:
10337
10166
  return /* @__PURE__ */ jsx(DomainPanelFrame, { children: /* @__PURE__ */ jsx(
10338
10167
  GenericDescribeView,
@@ -1463,19 +1463,19 @@ Actions follow a five-stage lifecycle: draft, beta, active, deprecated, archived
1463
1463
  id: "knowledge.org-model-entities",
1464
1464
  title: "Organization Model Entities",
1465
1465
  summary: "Entities model business objects owned by systems -- with table metadata, state catalogs, and typed entity links.",
1466
- bodyText: "Overview\r\n\r\nEntities are the business objects of the Organization Model. Each entity is a named, typed object owned by a system -- it corresponds to a database table, optionally participates in a state catalog, and can declare typed relationships to other entities.\r\n\r\nEntities are authored in the OM.entities domain map and projected as entity graph nodes by buildOrganizationGraph(). Each entity emits a contains edge from its owning system node and optional links edges to related entities.\r\n\r\nSource schema: packages/core/src/organization-model/domains/entities.ts\r\n\r\nWhat Entities Are\r\n\r\nAn entity declaration answers questions like:\r\n\r\n- What business objects does the sales.crm system own?\r\n- Which database table backs the crm.deal entity?\r\n- What states can a leadgen.company pass through?\r\n- How are crm.deal and crm.contact related?\r\n\r\nEntities are not executable. They are semantic declarations that describe the shape of business data: who owns it, where it lives, what states it can be in, and how it connects to other objects.\r\n\r\nownedBySystemId\r\n\r\nEvery entity must declare ownedBySystemId -- the ID of the system responsible for it. The graph builder emits a contains edge from system:<ownedBySystemId> to the entity node. An entity can only be owned by one system.\r\n\r\nTable and Row Schema\r\n\r\nThe optional table field names the backing database table (e.g. crmdeals). The optional rowSchema field references a schema identifier that describes the row shape. These fields are informational references; they are not validated against the database at OM parse time.\r\n\r\nstateCatalogId\r\n\r\nThe optional stateCatalogId field links the entity to a state catalog. The graph builder uses this to project event nodes for each state transition:\r\n\r\n- For crm.pipeline, the builder walks pipeline content via the pipeline migration helper.\r\n- For delivery.task, the builder walks project task status content via the project-status helper.\r\n- For lead-gen.company and lead-gen.contact, the builder walks the lead-gen stage catalog.\r\n- General status catalogs now live in System.content; direct OM.statuses reads are legacy.\r\n\r\nEach matching status or stage generates an event node with an originatesfrom edge pointing back to the entity.\r\n\r\nTyped Entity Links\r\n\r\nThe links field declares typed relationships to other entities. Each link has:\r\n\r\n- toEntity -- the target entity ID.\r\n- kind -- one of belongs-to, has-many, has-one, or many-to-many.\r\n- via -- optional join key or junction table name.\r\n- label -- optional display label for the relationship.\r\n\r\nEach link emits a links edge from the entity node to the target entity node in the graph.\r\n\r\nExample Entity Shape\r\n\r\nA crm.deal entity owned by sales.crm, backed by the crmdeals table, in the crm.pipeline state catalog, with a has-many link to crm.contact via the dealcontacts junction:\r\n\r\n- id: crm.deal\r\n- ownedBySystemId: sales.crm\r\n- table: crmdeals\r\n- stateCatalogId: crm.pipeline\r\n- links: [{ toEntity: 'crm.contact', kind: 'has-many', via: 'dealcontacts' }]"
1466
+ bodyText: "Overview\r\n\r\nEntities are the business objects of the Organization Model. Each entity is a named, typed object owned by a system -- it corresponds to a database table, optionally participates in a state catalog, and can declare typed relationships to other entities.\r\n\r\nEntities are authored in the OM.entities domain map and projected as entity graph nodes by buildOrganizationGraph(). Each entity emits a contains edge from its owning system node and optional links edges to related entities.\r\n\r\nSource schema: packages/core/src/organization-model/domains/entities.ts\r\n\r\nWhat Entities Are\r\n\r\nAn entity declaration answers questions like:\r\n\r\n- What business objects does the sales.crm system own?\r\n- Which database table backs the crm.deal entity?\r\n- What states can a leadgen.company pass through?\r\n- How are crm.deal and crm.contact related?\r\n\r\nEntities are not executable. They are semantic declarations that describe the shape of business data: who owns it, where it lives, what states it can be in, and how it connects to other objects.\r\n\r\nownedBySystemId\r\n\r\nEvery entity must declare ownedBySystemId -- the ID of the system responsible for it. The graph builder emits a contains edge from system:<ownedBySystemId> to the entity node. An entity can only be owned by one system.\r\n\r\nTable and Row Schema\r\n\r\nThe optional table field names the backing database table (e.g. crmdeals). The optional rowSchema field references a schema identifier that describes the row shape. These fields are informational references; they are not validated against the database at OM parse time.\r\n\r\nstateCatalogId\r\n\r\nThe optional stateCatalogId field links the entity to a state catalog. The graph builder uses this to project event nodes for each state transition:\r\n\r\n- For crm.pipeline, the builder walks pipeline catalog records via the pipeline migration helper.\n- For delivery.task, the builder walks project task status catalog records via the project-status helper.\n- For lead-gen.company and lead-gen.contact, the builder walks the lead-gen stage catalog.\r\n- General status catalogs live in System.ontology.catalogTypes; direct OM.statuses reads are legacy.\n\r\nEach matching status or stage generates an event node with an originatesfrom edge pointing back to the entity.\r\n\r\nTyped Entity Links\r\n\r\nThe links field declares typed relationships to other entities. Each link has:\r\n\r\n- toEntity -- the target entity ID.\r\n- kind -- one of belongs-to, has-many, has-one, or many-to-many.\r\n- via -- optional join key or junction table name.\r\n- label -- optional display label for the relationship.\r\n\r\nEach link emits a links edge from the entity node to the target entity node in the graph.\r\n\r\nExample Entity Shape\r\n\r\nA crm.deal entity owned by sales.crm, backed by the crmdeals table, in the crm.pipeline state catalog, with a has-many link to crm.contact via the dealcontacts junction:\r\n\r\n- id: crm.deal\r\n- ownedBySystemId: sales.crm\r\n- table: crmdeals\r\n- stateCatalogId: crm.pipeline\r\n- links: [{ toEntity: 'crm.contact', kind: 'has-many', via: 'dealcontacts' }]"
1467
1467
  },
1468
1468
  {
1469
1469
  id: "knowledge.org-model-events",
1470
1470
  title: "Organization Model Events",
1471
1471
  summary: "Events are projected signals -- the OM has no authored event domain. They emit from resources and originate from entity state catalogs.",
1472
- bodyText: "Overview\r\n\r\nEvents are projected graph nodes. The Organization Model has no OM.events domain map that authors edit directly. Instead, events are derived by buildOrganizationGraph() from two sources: EventEmissionDescriptor entries on workflow and agent resources, and state catalog entries on entities.\r\n\r\nEvery event node carries a unique ID formed as \\<ownerId\\>:\\<eventKey\\>, a human-readable label, and an edge that connects it back to the node that produced it.\r\n\r\nProjection logic: packages/core/src/organization-model/graph/build.ts\r\n\r\nAuthored vs. Projected\r\n\r\nThe distinction matters because it determines where you change event data.\r\n\r\nEvents are never edited in a standalone events file. To change an event you must change its source:\r\n\r\n- To change a resource-emitted event, update the emits array on the workflow or agent entry in OM.resources.\r\n- To change an entity state-transition event, update the entity's stateCatalogId or the underlying status/stage content entry on the owning System.\r\n\r\nThe graph builder projects these into event graph nodes automatically on the next call to buildOrganizationGraph().\r\n\r\nEventEmissionDescriptor on Resources\r\n\r\nWorkflow and agent resource entries can declare an emits array. Each element is an EventEmissionDescriptor:\r\n\r\n| Field | Type | Description |\r\n| --------------- | --------------- | ------------------------------------------------------------- |\r\n| eventKey | ModelIdSchema | Short key scoped to the owner resource (e.g. enrolled) |\r\n| label | string | Human-readable label for the event |\r\n| payloadSchema | ModelIdSchema | Optional reference to a schema that describes the payload |\r\n| lifecycle | lifecycle enum | Optional: draft, beta, active, deprecated, archived |\r\n\r\nThe graph builder constructs the full EventDescriptor by combining ownerId (the resource ID), ownerKind: 'resource', and the emission descriptor fields. The resulting event ID is \\<resourceId\\>:\\<eventKey\\>.\r\n\r\nAn emits edge is then projected from the resource node to the event node.\r\n\r\nOnly workflow and agent resource kinds support emits. integration and script resources do not.\r\n\r\noriginatesfrom Edges from Entity State Catalogs\r\n\r\nWhen an entity declares a stateCatalogId, the graph builder projects one event node per state transition available to that entity. These events use ownerKind: 'entity' and the resulting event ID is \\<entityId\\>:\\<eventKey\\>.\r\n\r\nA reversed originatesfrom edge is projected from the event node pointing back to the entity node. This edge direction is the opposite of emits: it signals that the event represents a state change that originates from the entity, not that the entity actively fires the event.\r\n\r\nThe builder resolves state catalogs as follows:\r\n\r\n- General status catalogs: status data now lives in System.content; direct OM.statuses reads are legacy.\r\n- crm.pipeline: walks pipeline content via the pipeline migration helper.\r\n- delivery.task: walks project task status content via the project-status helper.\r\n- lead-gen.company and lead-gen.contact: walks the LEADGENSTAGECATALOG constant, filtering by entity type.\r\n\r\ntriggers Edges to Policies\r\n\r\nWhen a policy declares trigger.kind: 'event', the graph builder looks up the projected event node by event ID and emits a triggers edge from the event node to the policy node. This edge is only emitted if the event node was already projected by the time the policy loop runs.\r\n\r\nPolicy triggers are the primary way events connect to downstream behavior. No triggers edge is emitted for events that no policy references.\r\n\r\nEventDescriptor Full Shape\r\n\r\nEventDescriptor is the resolved type used internally by the graph builder. It extends EventEmissionDescriptor with identity fields:\r\n\r\n| Field | Type | Description |\r\n| --------------- | -------------------------- | ----------------------------------------------------- |\r\n| id | EventIdSchema | Composite: \\<ownerId\\>:\\<eventKey\\> |\r\n| ownerId | resource ID or model ID | ID of the resource or entity that is the event source |\r\n| ownerKind | 'resource' or 'entity' | Discriminates between the two projection paths |\r\n| eventKey | ModelIdSchema | Short key, unique within the owner |\r\n| label | string | Human-readable label |\r\n| payloadSchema | ModelIdSchema (opt) | Schema reference for payload shape |\r\n| lifecycle | lifecycle enum (opt) | Lifecycle state from the emission descriptor |\r\n\r\nEventDescriptor is not stored in the graph node itself -- it is used transiently during graph construction to build the node and emit edges. The graph node stores id, kind: 'event', label, and sourceId.\r\n\r\nGraph Summary\r\n\r\n| Edge kind | Direction | When emitted |\r\n| ----------------- | --------------------------- | -------------------------------------------- |\r\n| emits | resource node -> event node | Resource emits[] array is non-empty |\r\n| originatesfrom | event node -> entity node | Entity has a stateCatalogId |\r\n| triggers | event node -> policy node | Policy trigger.kind === 'event' matches ID |"
1472
+ bodyText: "Overview\r\n\r\nEvents are projected graph nodes. The Organization Model has no OM.events domain map that authors edit directly. Instead, events are derived by buildOrganizationGraph() from two sources: EventEmissionDescriptor entries on workflow and agent resources, and state catalog entries on entities.\r\n\r\nEvery event node carries a unique ID formed as \\<ownerId\\>:\\<eventKey\\>, a human-readable label, and an edge that connects it back to the node that produced it.\r\n\r\nProjection logic: packages/core/src/organization-model/graph/build.ts\r\n\r\nAuthored vs. Projected\r\n\r\nThe distinction matters because it determines where you change event data.\r\n\r\nEvents are never edited in a standalone events file. To change an event you must change its source:\r\n\r\n- To change a resource-emitted event, update the emits array on the workflow or agent entry in OM.resources.\r\n- To change an entity state-transition event, update the entity's stateCatalogId or the underlying ontology status/stage catalog on the owning System.\n\r\nThe graph builder projects these into event graph nodes automatically on the next call to buildOrganizationGraph().\r\n\r\nEventEmissionDescriptor on Resources\r\n\r\nWorkflow and agent resource entries can declare an emits array. Each element is an EventEmissionDescriptor:\r\n\r\n| Field | Type | Description |\r\n| --------------- | --------------- | ------------------------------------------------------------- |\r\n| eventKey | ModelIdSchema | Short key scoped to the owner resource (e.g. enrolled) |\r\n| label | string | Human-readable label for the event |\r\n| payloadSchema | ModelIdSchema | Optional reference to a schema that describes the payload |\r\n| lifecycle | lifecycle enum | Optional: draft, beta, active, deprecated, archived |\r\n\r\nThe graph builder constructs the full EventDescriptor by combining ownerId (the resource ID), ownerKind: 'resource', and the emission descriptor fields. The resulting event ID is \\<resourceId\\>:\\<eventKey\\>.\r\n\r\nAn emits edge is then projected from the resource node to the event node.\r\n\r\nOnly workflow and agent resource kinds support emits. integration and script resources do not.\r\n\r\noriginatesfrom Edges from Entity State Catalogs\r\n\r\nWhen an entity declares a stateCatalogId, the graph builder projects one event node per state transition available to that entity. These events use ownerKind: 'entity' and the resulting event ID is \\<entityId\\>:\\<eventKey\\>.\r\n\r\nA reversed originatesfrom edge is projected from the event node pointing back to the entity node. This edge direction is the opposite of emits: it signals that the event represents a state change that originates from the entity, not that the entity actively fires the event.\r\n\r\nThe builder resolves state catalogs as follows:\r\n\r\n- General status catalogs: status data lives in System.ontology.catalogTypes; direct OM.statuses reads are legacy.\n- crm.pipeline: walks pipeline catalog records via the pipeline migration helper.\n- delivery.task: walks project task status catalog records via the project-status helper.\n- lead-gen.company and lead-gen.contact: walks the LEADGENSTAGECATALOG constant, filtering by entity type.\r\n\r\ntriggers Edges to Policies\r\n\r\nWhen a policy declares trigger.kind: 'event', the graph builder looks up the projected event node by event ID and emits a triggers edge from the event node to the policy node. This edge is only emitted if the event node was already projected by the time the policy loop runs.\r\n\r\nPolicy triggers are the primary way events connect to downstream behavior. No triggers edge is emitted for events that no policy references.\r\n\r\nEventDescriptor Full Shape\r\n\r\nEventDescriptor is the resolved type used internally by the graph builder. It extends EventEmissionDescriptor with identity fields:\r\n\r\n| Field | Type | Description |\r\n| --------------- | -------------------------- | ----------------------------------------------------- |\r\n| id | EventIdSchema | Composite: \\<ownerId\\>:\\<eventKey\\> |\r\n| ownerId | resource ID or model ID | ID of the resource or entity that is the event source |\r\n| ownerKind | 'resource' or 'entity' | Discriminates between the two projection paths |\r\n| eventKey | ModelIdSchema | Short key, unique within the owner |\r\n| label | string | Human-readable label |\r\n| payloadSchema | ModelIdSchema (opt) | Schema reference for payload shape |\r\n| lifecycle | lifecycle enum (opt) | Lifecycle state from the emission descriptor |\r\n\r\nEventDescriptor is not stored in the graph node itself -- it is used transiently during graph construction to build the node and emit edges. The graph node stores id, kind: 'event', label, and sourceId.\r\n\r\nGraph Summary\r\n\r\n| Edge kind | Direction | When emitted |\r\n| ----------------- | --------------------------- | -------------------------------------------- |\r\n| emits | resource node -> event node | Resource emits[] array is non-empty |\r\n| originatesfrom | event node -> entity node | Entity has a stateCatalogId |\r\n| triggers | event node -> policy node | Policy trigger.kind === 'event' matches ID |"
1473
1473
  },
1474
1474
  {
1475
1475
  id: "knowledge.org-model-graph-contract",
1476
1476
  title: "Organization Model Graph Contract",
1477
1477
  summary: "The canonical graph node and edge contract -- authored and projected node kinds, edge kinds, and the resource-type overlay derived from the Organization Model.",
1478
- bodyText: "Overview\r\n\r\nThe Organization Model graph contract defines the typed node and edge taxonomy emitted by buildOrganizationGraph(). Every surface that reads or visualizes the OM -- including Command View -- works against this contract.\r\n\r\nThe graph has two categories of nodes: authored nodes derived directly from OM domain maps, and projected nodes derived by the graph builder from authored content. Events and stages are projected; all other node kinds are authored.\r\n\r\nSource schema: packages/core/src/organization-model/graph/schema.ts\r\nProjection logic: packages/core/src/organization-model/graph/build.ts\r\n\r\nNode Kinds\r\n\r\nThe graph vocabulary includes authored semantic nodes and projected operational/navigation nodes.\r\n\r\n| Kind | Authored / Projected | Source |\r\n| -------------- | -------------------- | ------------------------------------------------------- |\r\n| organization | Projected | Root node; always present; id is organization-model |\r\n| system | Authored | OM.systems domain map |\r\n| role | Authored | OM.roles domain map |\r\n| action | Authored | OM.actions domain map |\r\n| entity | Authored | OM.entities domain map |\r\n| event | Projected | Derived from resource emits and entity state catalogs |\r\n| policy | Authored | OM.policies domain map |\r\n| stage | Projected | Derived from prospecting stage helpers over System.content and compatibility catalogs |\r\n| resource | Authored | OM.resources domain map |\r\n| knowledge | Authored | OM.knowledge id-keyed map |\r\n| customer-segment | Authored | OM.customers domain map |\r\n| offering | Authored | OM.offerings domain map |\r\n| goal | Authored | OM.goals domain map |\r\n| surface | Projected | Routeable leaves from OM.navigation.sidebar |\r\n| navigation-group | Projected | Groups from OM.navigation.sidebar |\r\n| content-node | Authored on System, projected to graph | System.content entries such as schema:pipeline, schema:stage, and config:kv |\r\n\r\nEdge Kinds\r\n\r\nTwelve edge kinds are valid in the graph.\r\n\r\n| Kind | Direction | Meaning |\r\n| ----------------- | ------------------------------------- | ------------------------------------------------------------- |\r\n| contains | parent -> child | Containment: organization to system, system to resource, etc. |\r\n| references | source -> target | Cross-reference: role reports-to, agent invokes action |\r\n| mapsto | action -> resource | Action is implemented by a resource |\r\n| uses | system -> action, stage -> action | System or stage uses an action |\r\n| governs | knowledge -> target, role -> system | Knowledge node or role governs a target |\r\n| links | entity -> entity | Typed entity relationship (belongs-to, has-many, etc.) |\r\n| affects | action -> entity | Action modifies or reads an entity |\r\n| emits | resource -> event | Resource produces an observable event |\r\n| originatesfrom | event -> entity | Event originates from an entity state transition |\r\n| triggers | event -> policy, action -> policy | Event or action invocation triggers a policy evaluation |\r\n| appliesto | policy -> system/action/resource/role | Policy governs the target |\r\n| effects | policy -> action/role | Policy effect invokes an action or notifies a role |\r\n\r\nResource Type Overlay\r\n\r\nResource nodes carry an optional resourceType field that is a separate enum from kind. It is set by the graph builder from the OM resource kind field or from Command View data.\r\n\r\n| Value | Description |\r\n| ------------------ | --------------------------------- |\r\n| workflow | Deterministic automation pipeline |\r\n| agent | LLM-driven reasoning resource |\r\n| trigger | Event-driven entry point |\r\n| integration | External service connector |\r\n| external | Third-party system reference |\r\n| humancheckpoint | Human-in-the-loop review gate |\r\n| script | One-shot executable script |\r\n\r\nAuthored vs. Projected Fields\r\n\r\nAuthored nodes\r\n\r\nSystem, role, action, entity, policy, resource, knowledge, customer-segment, offering, and goal nodes are authored in the OM domain maps. Content nodes are authored inside System.content and projected with qualified graph IDs. Their id, label, description, and domain-specific fields are set from OM source data.\r\n\r\nProjected nodes\r\n\r\n- Organization node: always present; id is always organization-model.\r\n- Event nodes: derived from two sources. Resource events come from resource.emits declarations on workflow and agent resources. Entity events come from the entity's stateCatalogId -- the builder walks compatible pipeline, project-status, or lead-gen stage helpers to generate one event node per transition.\r\n- Stage nodes: derived from prospecting stage helpers over current System.content and compatibility catalogs.\r\n- Surface and navigation-group nodes: derived from navigation.sidebar.\r\n\r\nProjected nodes are never authored directly. To add an event, declare emits on a resource or assign stateCatalogId to an entity.\r\n\r\nGraph Node Shape\r\n\r\nEach node has: id (graph-unique string), kind (one of the 10 kinds), label (display name), optional sourceId (OM domain ID), optional description, optional icon, optional enabled flag, and optional resourceType (resource nodes only).\r\n\r\nEach edge has: id (graph-unique string), kind (one of the 12 kinds), sourceId, targetId, optional label, and optional relationshipType (triggers, uses, or approval)."
1478
+ bodyText: "Overview\r\n\r\nThe Organization Model graph contract defines the typed node and edge taxonomy emitted by buildOrganizationGraph(). Every surface that reads or visualizes the OM -- including Command View -- works against this contract.\r\n\r\nThe graph has two categories of nodes: authored nodes derived directly from OM domain maps, and projected nodes derived by the graph builder from authored content. Events and stages are projected; all other node kinds are authored.\r\n\r\nSource schema: packages/core/src/organization-model/graph/schema.ts\r\nProjection logic: packages/core/src/organization-model/graph/build.ts\r\n\r\nNode Kinds\r\n\r\nThe graph vocabulary includes authored semantic nodes and projected operational/navigation nodes.\r\n\r\n| Kind | Authored / Projected | Source |\r\n| -------------- | -------------------- | ------------------------------------------------------- |\r\n| organization | Projected | Root node; always present; id is organization-model |\r\n| system | Authored | OM.systems domain map |\r\n| role | Authored | OM.roles domain map |\r\n| action | Authored | OM.actions domain map |\r\n| entity | Authored | OM.entities domain map |\r\n| event | Projected | Derived from resource emits and entity state catalogs |\r\n| policy | Authored | OM.policies domain map |\r\n| stage | Projected | Derived from ontology-backed stage catalog helpers |\n| resource | Authored | OM.resources domain map |\r\n| knowledge | Authored | OM.knowledge id-keyed map |\r\n| customer-segment | Authored | OM.customers domain map |\r\n| offering | Authored | OM.offerings domain map |\r\n| goal | Authored | OM.goals domain map |\r\n| surface | Projected | Routeable leaves from OM.navigation.sidebar |\r\n| navigation-group | Projected | Groups from OM.navigation.sidebar |\r\n\r\nEdge Kinds\r\n\r\nTwelve edge kinds are valid in the graph.\r\n\r\n| Kind | Direction | Meaning |\r\n| ----------------- | ------------------------------------- | ------------------------------------------------------------- |\r\n| contains | parent -> child | Containment: organization to system, system to resource, etc. |\r\n| references | source -> target | Cross-reference: role reports-to, agent invokes action |\r\n| mapsto | action -> resource | Action is implemented by a resource |\r\n| uses | system -> action, stage -> action | System or stage uses an action |\r\n| governs | knowledge -> target, role -> system | Knowledge node or role governs a target |\r\n| links | entity -> entity | Typed entity relationship (belongs-to, has-many, etc.) |\r\n| affects | action -> entity | Action modifies or reads an entity |\r\n| emits | resource -> event | Resource produces an observable event |\r\n| originatesfrom | event -> entity | Event originates from an entity state transition |\r\n| triggers | event -> policy, action -> policy | Event or action invocation triggers a policy evaluation |\r\n| appliesto | policy -> system/action/resource/role | Policy governs the target |\r\n| effects | policy -> action/role | Policy effect invokes an action or notifies a role |\r\n\r\nResource Type Overlay\r\n\r\nResource nodes carry an optional resourceType field that is a separate enum from kind. It is set by the graph builder from the OM resource kind field or from Command View data.\r\n\r\n| Value | Description |\r\n| ------------------ | --------------------------------- |\r\n| workflow | Deterministic automation pipeline |\r\n| agent | LLM-driven reasoning resource |\r\n| trigger | Event-driven entry point |\r\n| integration | External service connector |\r\n| external | Third-party system reference |\r\n| humancheckpoint | Human-in-the-loop review gate |\r\n| script | One-shot executable script |\r\n\r\nAuthored vs. Projected Fields\r\n\r\nAuthored nodes\r\n\r\nSystem, role, action, entity, policy, resource, knowledge, customer-segment, offering, and goal nodes are authored in the OM domain maps. Ontology catalog nodes are authored inside System.ontology.catalogTypes and projected with ontology graph IDs. Their id, label, description, and domain-specific fields are set from OM source data.\n\r\nProjected nodes\r\n\r\n- Organization node: always present; id is always organization-model.\r\n- Event nodes: derived from two sources. Resource events come from resource.emits declarations on workflow and agent resources. Entity events come from the entity's stateCatalogId -- the builder walks compatible pipeline, project-status, or lead-gen stage helpers to generate one event node per transition.\r\n- Stage nodes: derived from ontology-backed prospecting and lead-gen stage helpers.\n- Surface and navigation-group nodes: derived from navigation.sidebar.\r\n\r\nProjected nodes are never authored directly. To add an event, declare emits on a resource or assign stateCatalogId to an entity.\r\n\r\nGraph Node Shape\r\n\r\nEach node has: id (graph-unique string), kind (one of the 10 kinds), label (display name), optional sourceId (OM domain ID), optional description, optional icon, optional enabled flag, and optional resourceType (resource nodes only).\r\n\r\nEach edge has: id (graph-unique string), kind (one of the 12 kinds), sourceId, targetId, optional label, and optional relationshipType (triggers, uses, or approval)."
1479
1479
  },
1480
1480
  {
1481
1481
  id: "knowledge.org-model-policies",
@@ -1,14 +1,8 @@
1
- export { AppShellContainer, AppShellContentContainer, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, CyberParticles, LinksGroup, Sidebar, SidebarContext, SidebarProvider, SubshellNavList, Topbar, TopbarContainer, Vignette, subsidebarWidth, useSidebar, useSidebarCollapse } from '../chunk-V6SZ4ECN.js';
2
- export { SubshellLoader, SubshellSidebarLoader } from '../chunk-N55DVMAG.js';
3
- export { SubshellNavItem } from '../chunk-X4WBGKJQ.js';
4
- export { SubshellSidebarSection } from '../chunk-IIMU5YAJ.js';
5
- export { AppShellCenteredContainer, AppShellError, AppShellLoader } from '../chunk-RYTEQBAO.js';
6
- export { PageContainer } from '../chunk-BZZCNLT6.js';
7
- export { AmbientBloomGrid, AppBackground, CyberBackground, FilmGrain, FloatingMotes, FloatingOrbs, PerspectiveGrid, RadiantGlow, WaveBackground } from '../chunk-WLOQ4IBG.js';
8
- export { SubshellContainer, SubshellContentContainer, SubshellRightSideContainer, SubshellSidebar } from '../chunk-TKAYX2SP.js';
1
+ export { AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, CyberParticles, LinksGroup, PageContainer, Sidebar, SidebarContext, SidebarProvider, SubshellContainer, SubshellContentContainer, SubshellLoader, SubshellNavList, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarLoader, Topbar, TopbarContainer, Vignette, subsidebarWidth, useSidebar, useSidebarCollapse } from '../chunk-LUYVRATI.js';
9
2
  import '../chunk-NYBEU5TE.js';
3
+ export { AmbientBloomGrid, AppBackground, CyberBackground, FilmGrain, FloatingMotes, FloatingOrbs, PerspectiveGrid, RadiantGlow, WaveBackground } from '../chunk-WLOQ4IBG.js';
4
+ export { SubshellNavItem, SubshellSidebarSection } from '../chunk-R3VCBZDC.js';
5
+ export { sidebarBottomSectionCollapsedHeight, sidebarBottomSectionHeight, sidebarCollapsedWidth, sidebarGroupChevronSize, sidebarHoverDelay, sidebarIconInnerSize, sidebarIconSize, sidebarIconStroke, sidebarItemGap, sidebarItemHeight, sidebarItemPadding, sidebarSectionPadding, sidebarSubLinkIndent, sidebarSubLinkPaddingX, sidebarSubLinkPaddingY, sidebarToggleIconSize, sidebarTransitionDuration, sidebarWidth, subshellNavItemIconSize, topbarHeight } from '../chunk-DT3QYZVU.js';
10
6
  import '../chunk-2IFYDILW.js';
11
7
  import '../chunk-Q7DJKLEN.js';
12
- import '../chunk-E565XMTQ.js';
13
- export { sidebarBottomSectionCollapsedHeight, sidebarBottomSectionHeight, sidebarCollapsedWidth, sidebarGroupChevronSize, sidebarHoverDelay, sidebarIconInnerSize, sidebarIconSize, sidebarIconStroke, sidebarItemGap, sidebarItemHeight, sidebarItemPadding, sidebarSectionPadding, sidebarSubLinkIndent, sidebarSubLinkPaddingX, sidebarSubLinkPaddingY, sidebarToggleIconSize, sidebarTransitionDuration, sidebarWidth, subshellNavItemIconSize, topbarHeight } from '../chunk-DT3QYZVU.js';
14
8
  import '../chunk-I2KLQ2HA.js';
@@ -1,6 +1,31 @@
1
- export { OrganizationSwitcher, OrganizationSwitcherConnected, createOrganizationsSlice, createUseOrgInitialization, createUseOrganizations } from '../chunk-JA5ECJJB.js';
2
- export { OrganizationProvider } from '../chunk-HUJCU55S.js';
1
+ export { OrganizationProvider, OrganizationSwitcher, OrganizationSwitcherConnected, createOrganizationsSlice, createUseOrgInitialization, createUseOrganizations } from '../chunk-26HFM4MH.js';
2
+ import '../chunk-CXY7FMUM.js';
3
+ import '../chunk-SIQ3P4OR.js';
4
+ import '../chunk-3KMDHCAR.js';
5
+ import '../chunk-AKW7KISS.js';
6
+ import '../chunk-WF7CONXF.js';
7
+ import '../chunk-ZTWA5H77.js';
8
+ import '../chunk-AUDNF2Q7.js';
9
+ import '../chunk-6M6OLGQY.js';
10
+ import '../chunk-BRXELOHC.js';
11
+ import '../chunk-4U3XAWCN.js';
12
+ import '../chunk-LUYVRATI.js';
13
+ import '../chunk-NYBEU5TE.js';
14
+ import '../chunk-WLOQ4IBG.js';
15
+ import '../chunk-57OZ3AEG.js';
16
+ import '../chunk-JBWJ6WHZ.js';
17
+ import '../chunk-GX6XBRRF.js';
18
+ import '../chunk-R3VCBZDC.js';
19
+ import '../chunk-DT3QYZVU.js';
20
+ import '../chunk-2IFYDILW.js';
21
+ import '../chunk-Q7DJKLEN.js';
22
+ import '../chunk-HENXLGVD.js';
23
+ import '../chunk-7FPLLSHN.js';
3
24
  import '../chunk-RNP5R5I3.js';
25
+ import '../chunk-GEFWMU26.js';
26
+ import '../chunk-KRWALB24.js';
27
+ import '../chunk-VKIZUUPM.js';
28
+ import '../chunk-533DUEQY.js';
4
29
  export { OrganizationContext, useOrganization } from '../chunk-DD3CCMCZ.js';
5
30
  import '../chunk-2Q2JQSQO.js';
6
31
  import '../chunk-KJ3QUBNU.js';