@elevasis/core 0.26.0 → 0.28.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 (49) hide show
  1. package/dist/index.d.ts +162 -105
  2. package/dist/index.js +280 -174
  3. package/dist/knowledge/index.d.ts +43 -43
  4. package/dist/organization-model/index.d.ts +162 -105
  5. package/dist/organization-model/index.js +280 -174
  6. package/dist/test-utils/index.d.ts +20 -20
  7. package/dist/test-utils/index.js +184 -126
  8. package/package.json +3 -3
  9. package/src/_gen/__tests__/__snapshots__/contracts.md.snap +976 -1063
  10. package/src/business/acquisition/api-schemas.test.ts +1962 -1841
  11. package/src/business/acquisition/api-schemas.ts +1461 -1464
  12. package/src/business/acquisition/crm-next-action.test.ts +45 -25
  13. package/src/business/acquisition/crm-next-action.ts +227 -220
  14. package/src/business/acquisition/crm-priority.test.ts +41 -8
  15. package/src/business/acquisition/crm-priority.ts +365 -349
  16. package/src/business/acquisition/crm-state-actions.test.ts +208 -153
  17. package/src/business/acquisition/derive-actions.test.ts +90 -13
  18. package/src/business/acquisition/derive-actions.ts +8 -139
  19. package/src/business/acquisition/ontology-validation.ts +72 -158
  20. package/src/business/pdf/sections/investment.ts +1 -1
  21. package/src/business/pdf/sections/summary-investment.ts +1 -1
  22. package/src/execution/engine/tools/tool-maps.ts +872 -831
  23. package/src/organization-model/__tests__/cross-ref.test.ts +167 -0
  24. package/src/organization-model/__tests__/define-domain-record.test.ts +289 -0
  25. package/src/organization-model/__tests__/om-spine-doc-contract.test.ts +56 -0
  26. package/src/organization-model/__tests__/published-zero-leak.test.ts +60 -1
  27. package/src/organization-model/__tests__/resolve.test.ts +1 -1
  28. package/src/organization-model/__tests__/schema-refinements.test.ts +72 -0
  29. package/src/organization-model/cross-ref.ts +175 -0
  30. package/src/organization-model/domains/actions.ts +13 -0
  31. package/src/organization-model/domains/branding.ts +6 -6
  32. package/src/organization-model/domains/customers.ts +95 -78
  33. package/src/organization-model/domains/entities.ts +157 -144
  34. package/src/organization-model/domains/goals.ts +100 -83
  35. package/src/organization-model/domains/knowledge.ts +106 -93
  36. package/src/organization-model/domains/offerings.ts +88 -71
  37. package/src/organization-model/domains/policies.ts +115 -102
  38. package/src/organization-model/domains/roles.ts +109 -96
  39. package/src/organization-model/domains/sales.test.ts +104 -218
  40. package/src/organization-model/domains/sales.ts +212 -375
  41. package/src/organization-model/domains/statuses.ts +351 -339
  42. package/src/organization-model/domains/systems.ts +176 -164
  43. package/src/organization-model/helpers.ts +331 -306
  44. package/src/organization-model/index.ts +43 -0
  45. package/src/organization-model/published.ts +27 -2
  46. package/src/organization-model/schema-refinements.ts +667 -0
  47. package/src/organization-model/schema.ts +8 -715
  48. package/src/platform/constants/versions.ts +1 -1
  49. package/src/reference/_generated/contracts.md +1000 -1087
package/dist/index.js CHANGED
@@ -505,8 +505,8 @@ var OrganizationModelBrandingSchema = z.object({
505
505
  });
506
506
  var DEFAULT_ORGANIZATION_MODEL_BRANDING = {
507
507
  organizationName: "Default Organization",
508
- productName: "Elevasis",
509
- shortName: "Elevasis",
508
+ productName: "Organization OS",
509
+ shortName: "Org OS",
510
510
  logos: {}
511
511
  };
512
512
  var SurfaceTypeSchema = z.enum(["page", "dashboard", "graph", "detail", "list", "settings"]).meta({ label: "Surface type", color: "blue" });
@@ -647,6 +647,63 @@ var DEFAULT_ORGANIZATION_MODEL_IDENTITY = {
647
647
  businessHours: {},
648
648
  clientBrief: ""
649
649
  };
650
+
651
+ // src/organization-model/helpers.ts
652
+ function defineDomainRecord(schema, entries) {
653
+ return Object.fromEntries(
654
+ entries.map((entry) => {
655
+ const parsed = schema.parse(entry);
656
+ return [parsed.id, parsed];
657
+ })
658
+ );
659
+ }
660
+ function childSystemsOf2(system) {
661
+ return system.systems ?? system.subsystems ?? {};
662
+ }
663
+ function getSystem(model, path) {
664
+ const segments = path.split(".");
665
+ let current = model.systems;
666
+ let node;
667
+ for (const seg of segments) {
668
+ node = current[seg];
669
+ if (node === void 0) return void 0;
670
+ current = childSystemsOf2(node);
671
+ }
672
+ return node;
673
+ }
674
+ function listAllSystems(model) {
675
+ const results = [];
676
+ function walk(map, prefix) {
677
+ for (const [localId, system] of Object.entries(map)) {
678
+ const fullPath = prefix ? `${prefix}.${localId}` : localId;
679
+ results.push({ path: fullPath, system });
680
+ const childSystems = childSystemsOf2(system);
681
+ if (Object.keys(childSystems).length > 0) {
682
+ walk(childSystems, fullPath);
683
+ }
684
+ }
685
+ }
686
+ walk(model.systems, "");
687
+ return results;
688
+ }
689
+ function isPlainJsonObject(value) {
690
+ return typeof value === "object" && value !== null && !Array.isArray(value);
691
+ }
692
+ function mergeJsonConfig(base, override) {
693
+ const result = { ...base };
694
+ for (const [key, value] of Object.entries(override)) {
695
+ const existing = result[key];
696
+ result[key] = isPlainJsonObject(existing) && isPlainJsonObject(value) ? mergeJsonConfig(existing, value) : value;
697
+ }
698
+ return result;
699
+ }
700
+ function resolveSystemConfig(model, path) {
701
+ const system = getSystem(model, path);
702
+ if (system === void 0) return {};
703
+ return mergeJsonConfig({}, system.config ?? {});
704
+ }
705
+
706
+ // src/organization-model/domains/customers.ts
650
707
  var FirmographicsSchema = z.object({
651
708
  /** Industry vertical (e.g. "Marketing Agency", "Legal", "Real Estate"). */
652
709
  industry: z.string().trim().max(200).optional(),
@@ -697,6 +754,12 @@ var CustomersDomainSchema = z.record(z.string(), CustomerSegmentSchema).refine((
697
754
  message: "Each segment entry id must match its map key"
698
755
  }).default({});
699
756
  var DEFAULT_ORGANIZATION_MODEL_CUSTOMERS = {};
757
+ function defineCustomer(entry) {
758
+ return CustomerSegmentSchema.parse(entry);
759
+ }
760
+ function defineCustomers(entries) {
761
+ return defineDomainRecord(CustomerSegmentSchema, entries);
762
+ }
700
763
  var PricingModelSchema = z.enum(["one-time", "subscription", "usage-based", "custom"]).meta({ label: "Pricing model", color: "green" });
701
764
  var ProductSchema = z.object({
702
765
  /** Stable unique identifier for the product (e.g. "product-starter-plan"). */
@@ -739,6 +802,12 @@ var OfferingsDomainSchema = z.record(z.string(), ProductSchema).refine((record)
739
802
  message: "Each product entry id must match its map key"
740
803
  }).default({});
741
804
  var DEFAULT_ORGANIZATION_MODEL_OFFERINGS = {};
805
+ function defineOffering(entry) {
806
+ return ProductSchema.parse(entry);
807
+ }
808
+ function defineOfferings(entries) {
809
+ return defineDomainRecord(ProductSchema, entries);
810
+ }
742
811
  var EntityIdSchema = ModelIdSchema;
743
812
  var EntityLinkKindSchema = z.enum(["belongs-to", "has-many", "has-one", "many-to-many"]).meta({ label: "Link kind" });
744
813
  var EntityLinkSchema = z.object({
@@ -863,6 +932,12 @@ var DEFAULT_ORGANIZATION_MODEL_ENTITIES = Object.fromEntries(
863
932
  return [parsed.id, parsed];
864
933
  })
865
934
  );
935
+ function defineEntity(entry) {
936
+ return EntitySchema.parse(entry);
937
+ }
938
+ function defineEntities(entries) {
939
+ return defineDomainRecord(EntitySchema, entries);
940
+ }
866
941
 
867
942
  // src/organization-model/domains/actions.ts
868
943
  var ActionResourceIdSchema = z.string().trim().min(1).max(255).regex(/^[A-Za-z0-9]+(?:[-._][A-Za-z0-9]+)*$/, "Resource IDs must use letters, numbers, -, _, or . separators");
@@ -925,6 +1000,12 @@ var DEFAULT_ORGANIZATION_MODEL_ACTIONS = {};
925
1000
  function findOrganizationActionById(id, actions = DEFAULT_ORGANIZATION_MODEL_ACTIONS) {
926
1001
  return actions[id];
927
1002
  }
1003
+ function defineAction(entry) {
1004
+ return ActionSchema.parse(entry);
1005
+ }
1006
+ function defineActions(entries) {
1007
+ return defineDomainRecord(ActionSchema, entries);
1008
+ }
928
1009
 
929
1010
  // src/organization-model/domains/systems.ts
930
1011
  var SystemKindSchema = z.enum(["product", "operational", "platform", "diagnostic"]).meta({ label: "System kind", color: "blue" });
@@ -1036,6 +1117,12 @@ var SystemsDomainSchema = z.record(z.string(), SystemEntrySchema).refine((record
1036
1117
  message: "Each system entry id must match its map key"
1037
1118
  }).default({});
1038
1119
  var DEFAULT_ORGANIZATION_MODEL_SYSTEMS = {};
1120
+ function defineSystem(entry) {
1121
+ return SystemEntrySchema.parse(entry);
1122
+ }
1123
+ function defineSystems(entries) {
1124
+ return defineDomainRecord(SystemEntrySchema, entries);
1125
+ }
1039
1126
 
1040
1127
  // src/organization-model/domains/resources.ts
1041
1128
  var ContractRefSchema = z.string().trim().min(1).max(500).regex(
@@ -1256,6 +1343,12 @@ var RolesDomainSchema = z.record(z.string(), RoleSchema).refine((record) => Obje
1256
1343
  message: "Each role entry id must match its map key"
1257
1344
  }).default({});
1258
1345
  var DEFAULT_ORGANIZATION_MODEL_ROLES = {};
1346
+ function defineRole(entry) {
1347
+ return RoleSchema.parse(entry);
1348
+ }
1349
+ function defineRoles(entries) {
1350
+ return defineDomainRecord(RoleSchema, entries);
1351
+ }
1259
1352
  var KeyResultSchema = z.object({
1260
1353
  /** Stable unique identifier for the measurable outcome (e.g. "kr-revenue-q1"). */
1261
1354
  id: z.string().trim().min(1).max(100),
@@ -1304,6 +1397,12 @@ var GoalsDomainSchema = z.record(z.string(), ObjectiveSchema).refine((record) =>
1304
1397
  message: "Each objective entry id must match its map key"
1305
1398
  }).default({});
1306
1399
  var DEFAULT_ORGANIZATION_MODEL_GOALS = {};
1400
+ function defineGoal(entry) {
1401
+ return ObjectiveSchema.parse(entry);
1402
+ }
1403
+ function defineGoals(entries) {
1404
+ return defineDomainRecord(ObjectiveSchema, entries);
1405
+ }
1307
1406
  var KnowledgeTargetKindSchema = z.enum([
1308
1407
  "system",
1309
1408
  "resource",
@@ -1388,6 +1487,12 @@ var OrgKnowledgeNodeSchema = z.object({
1388
1487
  updatedAt: z.string().trim().min(1).max(50)
1389
1488
  });
1390
1489
  var KnowledgeDomainSchema = z.record(ModelIdSchema, OrgKnowledgeNodeSchema).default({});
1490
+ function defineKnowledgeNode(entry) {
1491
+ return OrgKnowledgeNodeSchema.parse(entry);
1492
+ }
1493
+ function defineKnowledgeNodes(entries) {
1494
+ return defineDomainRecord(OrgKnowledgeNodeSchema, entries);
1495
+ }
1391
1496
  var SecretLikeMetadataKeySchema = /(?:secret|password|passwd|token|api[-_]?key|credential|private[-_]?key)/i;
1392
1497
  var SecretLikeMetadataValueSchema = /(?:sk-[A-Za-z0-9_-]{12,}|pk_live_[A-Za-z0-9_-]{12,}|eyJ[A-Za-z0-9_-]{20,}|-----BEGIN (?:RSA |OPENSSH |EC )?PRIVATE KEY-----)/;
1393
1498
  var OmTopologyNodeKindSchema = z.enum([
@@ -1638,80 +1743,93 @@ var PoliciesDomainSchema = z.record(z.string(), PolicySchema).refine((record) =>
1638
1743
  message: "Each policy entry id must match its map key"
1639
1744
  }).default({});
1640
1745
  var DEFAULT_ORGANIZATION_MODEL_POLICIES = {};
1746
+ function definePolicy(entry) {
1747
+ return PolicySchema.parse(entry);
1748
+ }
1749
+ function definePolicies(entries) {
1750
+ return defineDomainRecord(PolicySchema, entries);
1751
+ }
1641
1752
 
1642
- // src/organization-model/schema.ts
1643
- var OrganizationModelDomainKeySchema = z.enum([
1644
- "branding",
1645
- "identity",
1646
- "customers",
1647
- "offerings",
1648
- "roles",
1649
- "goals",
1650
- "systems",
1651
- "ontology",
1652
- "resources",
1653
- "topology",
1654
- "actions",
1655
- "entities",
1656
- "policies",
1657
- "knowledge"
1658
- ]);
1659
- var OrganizationModelDomainMetadataSchema = z.object({
1660
- version: z.literal(1).default(1),
1661
- lastModified: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "lastModified must be an ISO date string (YYYY-MM-DD)")
1662
- });
1663
- var DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA = {
1664
- branding: { version: 1, lastModified: "2026-05-10" },
1665
- identity: { version: 1, lastModified: "2026-05-10" },
1666
- customers: { version: 1, lastModified: "2026-05-10" },
1667
- offerings: { version: 1, lastModified: "2026-05-10" },
1668
- roles: { version: 1, lastModified: "2026-05-10" },
1669
- goals: { version: 1, lastModified: "2026-05-10" },
1670
- systems: { version: 1, lastModified: "2026-05-10" },
1671
- ontology: { version: 1, lastModified: "2026-05-14" },
1672
- resources: { version: 1, lastModified: "2026-05-10" },
1673
- topology: { version: 1, lastModified: "2026-05-14" },
1674
- actions: { version: 1, lastModified: "2026-05-10" },
1675
- entities: { version: 1, lastModified: "2026-05-10" },
1676
- policies: { version: 1, lastModified: "2026-05-10" },
1677
- knowledge: { version: 1, lastModified: "2026-05-10" }
1753
+ // src/organization-model/cross-ref.ts
1754
+ var ONTOLOGY_REFERENCE_KEY_KINDS = {
1755
+ valueType: "value-type",
1756
+ catalogType: "catalog",
1757
+ objectType: "object",
1758
+ eventType: "event",
1759
+ actionType: "action",
1760
+ linkType: "link",
1761
+ interfaceType: "interface",
1762
+ propertyType: "property",
1763
+ groupType: "group",
1764
+ surfaceType: "surface",
1765
+ stepCatalog: "catalog"
1678
1766
  };
1679
- var OrganizationModelDomainMetadataByDomainSchema = z.object({
1680
- branding: OrganizationModelDomainMetadataSchema,
1681
- identity: OrganizationModelDomainMetadataSchema,
1682
- customers: OrganizationModelDomainMetadataSchema,
1683
- offerings: OrganizationModelDomainMetadataSchema,
1684
- roles: OrganizationModelDomainMetadataSchema,
1685
- goals: OrganizationModelDomainMetadataSchema,
1686
- systems: OrganizationModelDomainMetadataSchema,
1687
- ontology: OrganizationModelDomainMetadataSchema,
1688
- resources: OrganizationModelDomainMetadataSchema,
1689
- topology: OrganizationModelDomainMetadataSchema,
1690
- actions: OrganizationModelDomainMetadataSchema,
1691
- entities: OrganizationModelDomainMetadataSchema,
1692
- policies: OrganizationModelDomainMetadataSchema,
1693
- knowledge: OrganizationModelDomainMetadataSchema
1694
- }).partial().default(DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA).transform((metadata) => ({ ...DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA, ...metadata }));
1695
- var OrganizationModelSchemaBase = z.object({
1696
- version: z.literal(1).default(1),
1697
- domainMetadata: OrganizationModelDomainMetadataByDomainSchema,
1698
- branding: OrganizationModelBrandingSchema,
1699
- navigation: OrganizationModelNavigationSchema,
1700
- identity: IdentityDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_IDENTITY),
1701
- customers: CustomersDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_CUSTOMERS),
1702
- offerings: OfferingsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_OFFERINGS),
1703
- roles: RolesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_ROLES),
1704
- goals: GoalsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_GOALS),
1705
- systems: SystemsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_SYSTEMS),
1706
- ontology: OntologyScopeSchema.default(DEFAULT_ONTOLOGY_SCOPE),
1707
- resources: ResourcesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_RESOURCES),
1708
- topology: OmTopologyDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_TOPOLOGY),
1709
- actions: ActionsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_ACTIONS),
1710
- entities: EntitiesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_ENTITIES),
1711
- policies: PoliciesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_POLICIES),
1712
- // D3: flat Record<id, OrgKnowledgeNode> — no wrapper object
1713
- knowledge: KnowledgeDomainSchema.default({})
1714
- });
1767
+ function buildOmCrossRefIndex(model) {
1768
+ const systemsById = /* @__PURE__ */ new Map();
1769
+ for (const { path, system } of listAllSystems(model)) {
1770
+ systemsById.set(path, system);
1771
+ systemsById.set(system.id, system);
1772
+ }
1773
+ const resourceIds = new Set(Object.keys(model.resources ?? {}));
1774
+ const knowledgeIds = new Set(Object.keys(model.knowledge ?? {}));
1775
+ const roleIds = new Set(Object.keys(model.roles ?? {}));
1776
+ const goalIds = new Set(Object.keys(model.goals ?? {}));
1777
+ const actionIds = new Set(Object.keys(model.actions ?? {}));
1778
+ const customerSegmentIds = new Set(Object.keys(model.customers ?? {}));
1779
+ const offeringIds = new Set(Object.keys(model.offerings ?? {}));
1780
+ const ontologyCompilation = compileOrganizationOntology(model);
1781
+ const ontologyIndexByKind = {
1782
+ object: ontologyCompilation.ontology.objectTypes,
1783
+ link: ontologyCompilation.ontology.linkTypes,
1784
+ action: ontologyCompilation.ontology.actionTypes,
1785
+ catalog: ontologyCompilation.ontology.catalogTypes,
1786
+ event: ontologyCompilation.ontology.eventTypes,
1787
+ interface: ontologyCompilation.ontology.interfaceTypes,
1788
+ "value-type": ontologyCompilation.ontology.valueTypes,
1789
+ property: ontologyCompilation.ontology.sharedProperties,
1790
+ group: ontologyCompilation.ontology.groups,
1791
+ surface: ontologyCompilation.ontology.surfaces
1792
+ };
1793
+ const ontologyIds = new Set(Object.values(ontologyIndexByKind).flatMap((index) => Object.keys(index)));
1794
+ const stageIds = /* @__PURE__ */ new Set();
1795
+ for (const catalog of Object.values(ontologyCompilation.ontology.catalogTypes)) {
1796
+ if (catalog.kind !== "stage") continue;
1797
+ const entries = catalog.entries;
1798
+ if (entries !== void 0) {
1799
+ for (const stageId of Object.keys(entries)) {
1800
+ stageIds.add(stageId);
1801
+ }
1802
+ }
1803
+ }
1804
+ return {
1805
+ systemsById,
1806
+ resourceIds,
1807
+ knowledgeIds,
1808
+ roleIds,
1809
+ goalIds,
1810
+ actionIds,
1811
+ customerSegmentIds,
1812
+ offeringIds,
1813
+ ontologyIds,
1814
+ ontologyIndexByKind,
1815
+ stageIds
1816
+ };
1817
+ }
1818
+ function knowledgeTargetExists(index, kind, id) {
1819
+ if (kind === "system") return index.systemsById.has(id);
1820
+ if (kind === "resource") return index.resourceIds.has(id);
1821
+ if (kind === "knowledge") return index.knowledgeIds.has(id);
1822
+ if (kind === "stage") return index.stageIds.has(id);
1823
+ if (kind === "action") return index.actionIds.has(id);
1824
+ if (kind === "role") return index.roleIds.has(id);
1825
+ if (kind === "goal") return index.goalIds.has(id);
1826
+ if (kind === "customer-segment") return index.customerSegmentIds.has(id);
1827
+ if (kind === "offering") return index.offeringIds.has(id);
1828
+ if (kind === "ontology") return index.ontologyIds.has(id);
1829
+ return false;
1830
+ }
1831
+
1832
+ // src/organization-model/schema-refinements.ts
1715
1833
  function addIssue(ctx, path, message) {
1716
1834
  ctx.addIssue({
1717
1835
  code: z.ZodIssueCode.custom,
@@ -1742,7 +1860,7 @@ function isKnowledgeKindCompatibleWithTarget(knowledgeKind, targetKind) {
1742
1860
  function isRecord(value) {
1743
1861
  return typeof value === "object" && value !== null && !Array.isArray(value);
1744
1862
  }
1745
- var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ctx) => {
1863
+ function refineOrganizationModel(model, ctx) {
1746
1864
  function collectAllSystems(systems, prefix = "", schemaPath = ["systems"]) {
1747
1865
  const result = [];
1748
1866
  for (const [key, system] of Object.entries(systems)) {
@@ -1914,7 +2032,7 @@ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ct
1914
2032
  });
1915
2033
  });
1916
2034
  Object.values(model.entities).forEach((entity) => {
1917
- if (!systemsById.has(entity.ownedBySystemId)) {
2035
+ if (systemsById.size > 0 && !systemsById.has(entity.ownedBySystemId)) {
1918
2036
  addIssue(
1919
2037
  ctx,
1920
2038
  ["entities", entity.id, "ownedBySystemId"],
@@ -2032,29 +2150,9 @@ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ct
2032
2150
  }
2033
2151
  });
2034
2152
  });
2035
- const actionIds = new Set(Object.keys(model.actions));
2036
- const offeringsById = new Map(Object.entries(model.offerings));
2153
+ const idx = buildOmCrossRefIndex(model);
2154
+ const { ontologyIndexByKind, ontologyIds } = idx;
2037
2155
  const ontologyCompilation = compileOrganizationOntology(model);
2038
- const stageIds = /* @__PURE__ */ new Set();
2039
- for (const catalog of Object.values(ontologyCompilation.ontology.catalogTypes)) {
2040
- if (catalog.kind !== "stage") continue;
2041
- for (const stageId of Object.keys(catalog.entries ?? {})) {
2042
- stageIds.add(stageId);
2043
- }
2044
- }
2045
- const ontologyIndexByKind = {
2046
- object: ontologyCompilation.ontology.objectTypes,
2047
- link: ontologyCompilation.ontology.linkTypes,
2048
- action: ontologyCompilation.ontology.actionTypes,
2049
- catalog: ontologyCompilation.ontology.catalogTypes,
2050
- event: ontologyCompilation.ontology.eventTypes,
2051
- interface: ontologyCompilation.ontology.interfaceTypes,
2052
- "value-type": ontologyCompilation.ontology.valueTypes,
2053
- property: ontologyCompilation.ontology.sharedProperties,
2054
- group: ontologyCompilation.ontology.groups,
2055
- surface: ontologyCompilation.ontology.surfaces
2056
- };
2057
- const ontologyIds = new Set(Object.values(ontologyIndexByKind).flatMap((index) => Object.keys(index)));
2058
2156
  function topologyTargetExists(ref) {
2059
2157
  if (ref.kind === "system") return systemsById.has(ref.id);
2060
2158
  if (ref.kind === "resource") return resourcesById.has(ref.id);
@@ -2074,19 +2172,6 @@ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ct
2074
2172
  );
2075
2173
  });
2076
2174
  });
2077
- const ontologyReferenceKeyKinds = {
2078
- valueType: "value-type",
2079
- catalogType: "catalog",
2080
- objectType: "object",
2081
- eventType: "event",
2082
- actionType: "action",
2083
- linkType: "link",
2084
- interfaceType: "interface",
2085
- propertyType: "property",
2086
- groupType: "group",
2087
- surfaceType: "surface",
2088
- stepCatalog: "catalog"
2089
- };
2090
2175
  function validateKnownOntologyReferences(ownerId, value, path, seen = /* @__PURE__ */ new WeakSet()) {
2091
2176
  if (Array.isArray(value)) {
2092
2177
  value.forEach((entry, index) => validateKnownOntologyReferences(ownerId, entry, [...path, index], seen));
@@ -2096,7 +2181,7 @@ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ct
2096
2181
  if (seen.has(value)) return;
2097
2182
  seen.add(value);
2098
2183
  Object.entries(value).forEach(([key, entry]) => {
2099
- const expectedKind = ontologyReferenceKeyKinds[key];
2184
+ const expectedKind = ONTOLOGY_REFERENCE_KEY_KINDS[key];
2100
2185
  if (expectedKind !== void 0) {
2101
2186
  if (typeof entry !== "string") {
2102
2187
  addIssue(ctx, [...path, key], `Ontology record "${ownerId}" ${key} must be an ontology ID string`);
@@ -2157,22 +2242,9 @@ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ct
2157
2242
  );
2158
2243
  }
2159
2244
  });
2160
- function knowledgeTargetExists(kind, id) {
2161
- if (kind === "system") return systemsById.has(id);
2162
- if (kind === "resource") return resourcesById.has(id);
2163
- if (kind === "knowledge") return knowledgeById.has(id);
2164
- if (kind === "stage") return stageIds.has(id);
2165
- if (kind === "action") return actionIds.has(id);
2166
- if (kind === "role") return rolesById.has(id);
2167
- if (kind === "goal") return goalsById.has(id);
2168
- if (kind === "customer-segment") return segmentsById.has(id);
2169
- if (kind === "offering") return offeringsById.has(id);
2170
- if (kind === "ontology") return ontologyIds.has(id);
2171
- return false;
2172
- }
2173
2245
  Object.entries(model.knowledge).forEach(([nodeId, node]) => {
2174
2246
  node.links.forEach((link, linkIndex) => {
2175
- if (!knowledgeTargetExists(link.target.kind, link.target.id)) {
2247
+ if (!knowledgeTargetExists(idx, link.target.kind, link.target.id)) {
2176
2248
  addIssue(
2177
2249
  ctx,
2178
2250
  ["knowledge", nodeId, "links", linkIndex, "target"],
@@ -2286,7 +2358,82 @@ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ct
2286
2358
  for (const diagnostic of ontologyCompilation.diagnostics) {
2287
2359
  addIssue(ctx, diagnostic.path, diagnostic.message);
2288
2360
  }
2361
+ }
2362
+
2363
+ // src/organization-model/schema.ts
2364
+ var OrganizationModelDomainKeySchema = z.enum([
2365
+ "branding",
2366
+ "identity",
2367
+ "customers",
2368
+ "offerings",
2369
+ "roles",
2370
+ "goals",
2371
+ "systems",
2372
+ "ontology",
2373
+ "resources",
2374
+ "topology",
2375
+ "actions",
2376
+ "entities",
2377
+ "policies",
2378
+ "knowledge"
2379
+ ]);
2380
+ var OrganizationModelDomainMetadataSchema = z.object({
2381
+ version: z.literal(1).default(1),
2382
+ lastModified: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "lastModified must be an ISO date string (YYYY-MM-DD)")
2289
2383
  });
2384
+ var DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA = {
2385
+ branding: { version: 1, lastModified: "2026-05-10" },
2386
+ identity: { version: 1, lastModified: "2026-05-10" },
2387
+ customers: { version: 1, lastModified: "2026-05-10" },
2388
+ offerings: { version: 1, lastModified: "2026-05-10" },
2389
+ roles: { version: 1, lastModified: "2026-05-10" },
2390
+ goals: { version: 1, lastModified: "2026-05-10" },
2391
+ systems: { version: 1, lastModified: "2026-05-10" },
2392
+ ontology: { version: 1, lastModified: "2026-05-14" },
2393
+ resources: { version: 1, lastModified: "2026-05-10" },
2394
+ topology: { version: 1, lastModified: "2026-05-14" },
2395
+ actions: { version: 1, lastModified: "2026-05-10" },
2396
+ entities: { version: 1, lastModified: "2026-05-10" },
2397
+ policies: { version: 1, lastModified: "2026-05-10" },
2398
+ knowledge: { version: 1, lastModified: "2026-05-10" }
2399
+ };
2400
+ var OrganizationModelDomainMetadataByDomainSchema = z.object({
2401
+ branding: OrganizationModelDomainMetadataSchema,
2402
+ identity: OrganizationModelDomainMetadataSchema,
2403
+ customers: OrganizationModelDomainMetadataSchema,
2404
+ offerings: OrganizationModelDomainMetadataSchema,
2405
+ roles: OrganizationModelDomainMetadataSchema,
2406
+ goals: OrganizationModelDomainMetadataSchema,
2407
+ systems: OrganizationModelDomainMetadataSchema,
2408
+ ontology: OrganizationModelDomainMetadataSchema,
2409
+ resources: OrganizationModelDomainMetadataSchema,
2410
+ topology: OrganizationModelDomainMetadataSchema,
2411
+ actions: OrganizationModelDomainMetadataSchema,
2412
+ entities: OrganizationModelDomainMetadataSchema,
2413
+ policies: OrganizationModelDomainMetadataSchema,
2414
+ knowledge: OrganizationModelDomainMetadataSchema
2415
+ }).partial().default(DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA).transform((metadata) => ({ ...DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA, ...metadata }));
2416
+ var OrganizationModelSchemaBase = z.object({
2417
+ version: z.literal(1).default(1),
2418
+ domainMetadata: OrganizationModelDomainMetadataByDomainSchema,
2419
+ branding: OrganizationModelBrandingSchema.default(DEFAULT_ORGANIZATION_MODEL_BRANDING),
2420
+ navigation: OrganizationModelNavigationSchema,
2421
+ identity: IdentityDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_IDENTITY),
2422
+ customers: CustomersDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_CUSTOMERS),
2423
+ offerings: OfferingsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_OFFERINGS),
2424
+ roles: RolesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_ROLES),
2425
+ goals: GoalsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_GOALS),
2426
+ systems: SystemsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_SYSTEMS),
2427
+ ontology: OntologyScopeSchema.default(DEFAULT_ONTOLOGY_SCOPE),
2428
+ resources: ResourcesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_RESOURCES),
2429
+ topology: OmTopologyDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_TOPOLOGY),
2430
+ actions: ActionsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_ACTIONS),
2431
+ entities: EntitiesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_ENTITIES),
2432
+ policies: PoliciesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_POLICIES),
2433
+ // D3: flat Record<id, OrgKnowledgeNode> — no wrapper object
2434
+ knowledge: KnowledgeDomainSchema.default({})
2435
+ });
2436
+ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine(refineOrganizationModel);
2290
2437
  var OrganizationGraphNodeKindSchema = z.enum([
2291
2438
  "organization",
2292
2439
  "system",
@@ -2440,6 +2587,12 @@ var StatusEntrySchema = z.object({
2440
2587
  var StatusesDomainSchema = z.record(z.string(), StatusEntrySchema).refine((record) => Object.entries(record).every(([key, entry]) => entry.id === key), {
2441
2588
  message: "Each status entry id must match its map key"
2442
2589
  }).default({});
2590
+ function defineStatus(entry) {
2591
+ return StatusEntrySchema.parse(entry);
2592
+ }
2593
+ function defineStatuses(entries) {
2594
+ return defineDomainRecord(StatusEntrySchema, entries);
2595
+ }
2443
2596
  var DEFAULT_ORGANIZATION_MODEL_STATUSES = {
2444
2597
  // --- delivery.task (TaskStatus — 9 values) ---
2445
2598
  "delivery.task.planned": {
@@ -2721,53 +2874,6 @@ var DEFAULT_ORGANIZATION_MODEL_STATUSES = {
2721
2874
  }
2722
2875
  };
2723
2876
 
2724
- // src/organization-model/helpers.ts
2725
- function childSystemsOf2(system) {
2726
- return system.systems ?? system.subsystems ?? {};
2727
- }
2728
- function getSystem(model, path) {
2729
- const segments = path.split(".");
2730
- let current = model.systems;
2731
- let node;
2732
- for (const seg of segments) {
2733
- node = current[seg];
2734
- if (node === void 0) return void 0;
2735
- current = childSystemsOf2(node);
2736
- }
2737
- return node;
2738
- }
2739
- function listAllSystems(model) {
2740
- const results = [];
2741
- function walk(map, prefix) {
2742
- for (const [localId, system] of Object.entries(map)) {
2743
- const fullPath = prefix ? `${prefix}.${localId}` : localId;
2744
- results.push({ path: fullPath, system });
2745
- const childSystems = childSystemsOf2(system);
2746
- if (Object.keys(childSystems).length > 0) {
2747
- walk(childSystems, fullPath);
2748
- }
2749
- }
2750
- }
2751
- walk(model.systems, "");
2752
- return results;
2753
- }
2754
- function isPlainJsonObject(value) {
2755
- return typeof value === "object" && value !== null && !Array.isArray(value);
2756
- }
2757
- function mergeJsonConfig(base, override) {
2758
- const result = { ...base };
2759
- for (const [key, value] of Object.entries(override)) {
2760
- const existing = result[key];
2761
- result[key] = isPlainJsonObject(existing) && isPlainJsonObject(value) ? mergeJsonConfig(existing, value) : value;
2762
- }
2763
- return result;
2764
- }
2765
- function resolveSystemConfig(model, path) {
2766
- const system = getSystem(model, path);
2767
- if (system === void 0) return {};
2768
- return mergeJsonConfig({}, system.config ?? {});
2769
- }
2770
-
2771
2877
  // src/organization-model/resolve.ts
2772
2878
  function isPlainObject(value) {
2773
2879
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -3336,4 +3442,4 @@ function scaffoldOrganizationModel(model, spec) {
3336
3442
  return scaffoldKnowledgeNode(model, spec);
3337
3443
  }
3338
3444
 
3339
- export { ActionIdSchema, ActionInvocationKindSchema, ActionInvocationSchema, ActionRefSchema, ActionSchema, ActionScopeSchema, ActionsDomainSchema, AgentKindSchema, AgentResourceEntrySchema, AgentRoleHolderSchema, ApiEndpointInvocationSchema, CodeReferenceRoleSchema, CodeReferenceSchema, ContractRefSchema, CustomerSegmentSchema, CustomersDomainSchema, DEFAULT_ONTOLOGY_SCOPE, DEFAULT_ORGANIZATION_MODEL, DEFAULT_ORGANIZATION_MODEL_ACTIONS, DEFAULT_ORGANIZATION_MODEL_CUSTOMERS, DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA, DEFAULT_ORGANIZATION_MODEL_ENTITIES, DEFAULT_ORGANIZATION_MODEL_GOALS, DEFAULT_ORGANIZATION_MODEL_NAVIGATION, DEFAULT_ORGANIZATION_MODEL_OFFERINGS, DEFAULT_ORGANIZATION_MODEL_POLICIES, DEFAULT_ORGANIZATION_MODEL_RESOURCES, DEFAULT_ORGANIZATION_MODEL_ROLES, DEFAULT_ORGANIZATION_MODEL_STATUSES, DEFAULT_ORGANIZATION_MODEL_SYSTEMS, DEFAULT_ORGANIZATION_MODEL_TOPOLOGY, EntitiesDomainSchema, EntityIdSchema, EntityLinkKindSchema, EntityLinkSchema, EntitySchema, EventDescriptorSchema, EventEmissionDescriptorSchema, EventIdSchema, FirmographicsSchema, GoalsDomainSchema, HumanRoleHolderSchema, IconNameSchema, IntegrationResourceEntrySchema, KNOWLEDGE_FEATURE_ID, KNOWLEDGE_SYSTEM_ID, KeyResultSchema, KnowledgeDomainSchema, KnowledgeLinkSchema, KnowledgeTargetKindSchema, KnowledgeTargetRefSchema, LinkSchema, MONITORING_FEATURE_ID, MONITORING_SYSTEM_ID, McpToolInvocationSchema, NavigationGroupSchema, NodeIdPathSchema, NodeIdStringSchema, OPERATIONS_COMMAND_VIEW_SURFACE_ID, OPERATIONS_FEATURE_ID, OPERATIONS_SYSTEM_ID, ORGANIZATION_MODEL_ICON_TOKENS, ObjectiveSchema, OfferingsDomainSchema, OmTopologyDomainSchema, OmTopologyMetadataSchema, OmTopologyNodeKindSchema, OmTopologyNodeRefSchema, OmTopologyRelationshipKindSchema, OmTopologyRelationshipSchema, OntologyActionTypeSchema, OntologyCatalogTypeSchema, OntologyEventTypeSchema, OntologyGroupSchema, OntologyIdSchema, OntologyInterfaceTypeSchema, OntologyKindSchema, OntologyLinkTypeSchema, OntologyObjectTypeSchema, OntologyScopeSchema, OntologySharedPropertySchema, OntologySurfaceTypeSchema, OntologyValueTypeSchema, OrgKnowledgeKindSchema, OrgKnowledgeNodeSchema, OrganizationModelBuiltinIconTokenSchema, OrganizationModelDomainKeySchema, OrganizationModelDomainMetadataByDomainSchema, OrganizationModelDomainMetadataSchema, OrganizationModelIconTokenSchema, OrganizationModelNavigationSchema, OrganizationModelSchema, PROJECTS_FEATURE_ID, PROJECTS_INDEX_SURFACE_ID, PROJECTS_SYSTEM_ID, PROJECTS_VIEW_ACTION_ID, PROSPECTING_FEATURE_ID, PROSPECTING_LISTS_SURFACE_ID, PROSPECTING_SYSTEM_ID, PoliciesDomainSchema, PolicyApplicabilitySchema, PolicyEffectSchema, PolicyIdSchema, PolicyPredicateSchema, PolicySchema, PolicyTriggerSchema, PricingModelSchema, ProductSchema, ResourceEntrySchema, ResourceGovernanceStatusSchema, ResourceIdSchema, ResourceKindSchema, ResourceOntologyBindingSchema, ResourcesDomainSchema, RoleHolderSchema, RoleHoldersSchema, RoleIdSchema, RoleSchema, RolesDomainSchema, SALES_FEATURE_ID, SALES_PIPELINE_SURFACE_ID, SALES_SYSTEM_ID, SEO_FEATURE_ID, SEO_SYSTEM_ID, SETTINGS_FEATURE_ID, SETTINGS_ROLES_SURFACE_ID, SETTINGS_SYSTEM_ID, ScriptExecutionInvocationSchema, ScriptResourceEntrySchema, ScriptResourceLanguageSchema, ScriptResourceSourceSchema, SidebarNavigationSchema, SidebarNodeSchema, SidebarSectionSchema, SidebarSurfaceTargetsSchema, SlashCommandInvocationSchema, StatusEntrySchema, StatusSemanticClassSchema, StatusesDomainSchema, SurfaceDefinitionSchema, SurfaceTypeSchema, SystemEntrySchema, SystemIdSchema, SystemKindSchema, SystemLifecycleSchema, SystemPathSchema, SystemStatusSchema, SystemUiSchema, SystemsDomainSchema, TeamRoleHolderSchema, TechStackEntrySchema, UiPositionSchema, WorkflowResourceEntrySchema, compileOrganizationOntology, compileTopologyNodeRef, createFoundationOrganizationModel, defineOrganizationModel, defineResource, defineResourceOntology, defineResources, defineTopology, defineTopologyRelationship, findOrganizationActionById, formatOntologyId, getOntologyDiagnostics, getSortedSidebarEntries, isOntologyGraphNodeId, isOntologyTopologyRef, listAllSystems, listResolvedOntologyRecords, ontologyGraphNodeId, ontologyIdFromGraphNodeId, parseContractRef, parseOntologyId, parseTopologyNodeRef, projectOrganizationSurfaces, resolveOrganizationModel, resolveOrganizationModelWithResources, scaffoldOrganizationModel, topologyRef, topologyRelationship, validateOrganizationSurfaceProjection };
3445
+ export { ActionIdSchema, ActionInvocationKindSchema, ActionInvocationSchema, ActionRefSchema, ActionSchema, ActionScopeSchema, ActionsDomainSchema, AgentKindSchema, AgentResourceEntrySchema, AgentRoleHolderSchema, ApiEndpointInvocationSchema, CodeReferenceRoleSchema, CodeReferenceSchema, ContractRefSchema, CustomerSegmentSchema, CustomersDomainSchema, DEFAULT_ONTOLOGY_SCOPE, DEFAULT_ORGANIZATION_MODEL, DEFAULT_ORGANIZATION_MODEL_ACTIONS, DEFAULT_ORGANIZATION_MODEL_CUSTOMERS, DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA, DEFAULT_ORGANIZATION_MODEL_ENTITIES, DEFAULT_ORGANIZATION_MODEL_GOALS, DEFAULT_ORGANIZATION_MODEL_NAVIGATION, DEFAULT_ORGANIZATION_MODEL_OFFERINGS, DEFAULT_ORGANIZATION_MODEL_POLICIES, DEFAULT_ORGANIZATION_MODEL_RESOURCES, DEFAULT_ORGANIZATION_MODEL_ROLES, DEFAULT_ORGANIZATION_MODEL_STATUSES, DEFAULT_ORGANIZATION_MODEL_SYSTEMS, DEFAULT_ORGANIZATION_MODEL_TOPOLOGY, EntitiesDomainSchema, EntityIdSchema, EntityLinkKindSchema, EntityLinkSchema, EntitySchema, EventDescriptorSchema, EventEmissionDescriptorSchema, EventIdSchema, FirmographicsSchema, GoalsDomainSchema, HumanRoleHolderSchema, IconNameSchema, IntegrationResourceEntrySchema, KNOWLEDGE_FEATURE_ID, KNOWLEDGE_SYSTEM_ID, KeyResultSchema, KnowledgeDomainSchema, KnowledgeLinkSchema, KnowledgeTargetKindSchema, KnowledgeTargetRefSchema, LinkSchema, MONITORING_FEATURE_ID, MONITORING_SYSTEM_ID, McpToolInvocationSchema, NavigationGroupSchema, NodeIdPathSchema, NodeIdStringSchema, OPERATIONS_COMMAND_VIEW_SURFACE_ID, OPERATIONS_FEATURE_ID, OPERATIONS_SYSTEM_ID, ORGANIZATION_MODEL_ICON_TOKENS, ObjectiveSchema, OfferingsDomainSchema, OmTopologyDomainSchema, OmTopologyMetadataSchema, OmTopologyNodeKindSchema, OmTopologyNodeRefSchema, OmTopologyRelationshipKindSchema, OmTopologyRelationshipSchema, OntologyActionTypeSchema, OntologyCatalogTypeSchema, OntologyEventTypeSchema, OntologyGroupSchema, OntologyIdSchema, OntologyInterfaceTypeSchema, OntologyKindSchema, OntologyLinkTypeSchema, OntologyObjectTypeSchema, OntologyScopeSchema, OntologySharedPropertySchema, OntologySurfaceTypeSchema, OntologyValueTypeSchema, OrgKnowledgeKindSchema, OrgKnowledgeNodeSchema, OrganizationModelBuiltinIconTokenSchema, OrganizationModelDomainKeySchema, OrganizationModelDomainMetadataByDomainSchema, OrganizationModelDomainMetadataSchema, OrganizationModelIconTokenSchema, OrganizationModelNavigationSchema, OrganizationModelSchema, PROJECTS_FEATURE_ID, PROJECTS_INDEX_SURFACE_ID, PROJECTS_SYSTEM_ID, PROJECTS_VIEW_ACTION_ID, PROSPECTING_FEATURE_ID, PROSPECTING_LISTS_SURFACE_ID, PROSPECTING_SYSTEM_ID, PoliciesDomainSchema, PolicyApplicabilitySchema, PolicyEffectSchema, PolicyIdSchema, PolicyPredicateSchema, PolicySchema, PolicyTriggerSchema, PricingModelSchema, ProductSchema, ResourceEntrySchema, ResourceGovernanceStatusSchema, ResourceIdSchema, ResourceKindSchema, ResourceOntologyBindingSchema, ResourcesDomainSchema, RoleHolderSchema, RoleHoldersSchema, RoleIdSchema, RoleSchema, RolesDomainSchema, SALES_FEATURE_ID, SALES_PIPELINE_SURFACE_ID, SALES_SYSTEM_ID, SEO_FEATURE_ID, SEO_SYSTEM_ID, SETTINGS_FEATURE_ID, SETTINGS_ROLES_SURFACE_ID, SETTINGS_SYSTEM_ID, ScriptExecutionInvocationSchema, ScriptResourceEntrySchema, ScriptResourceLanguageSchema, ScriptResourceSourceSchema, SidebarNavigationSchema, SidebarNodeSchema, SidebarSectionSchema, SidebarSurfaceTargetsSchema, SlashCommandInvocationSchema, StatusEntrySchema, StatusSemanticClassSchema, StatusesDomainSchema, SurfaceDefinitionSchema, SurfaceTypeSchema, SystemEntrySchema, SystemIdSchema, SystemKindSchema, SystemLifecycleSchema, SystemPathSchema, SystemStatusSchema, SystemUiSchema, SystemsDomainSchema, TeamRoleHolderSchema, TechStackEntrySchema, UiPositionSchema, WorkflowResourceEntrySchema, compileOrganizationOntology, compileTopologyNodeRef, createFoundationOrganizationModel, defineAction, defineActions, defineCustomer, defineCustomers, defineDomainRecord, defineEntities, defineEntity, defineGoal, defineGoals, defineKnowledgeNode, defineKnowledgeNodes, defineOffering, defineOfferings, defineOrganizationModel, definePolicies, definePolicy, defineResource, defineResourceOntology, defineResources, defineRole, defineRoles, defineStatus, defineStatuses, defineSystem, defineSystems, defineTopology, defineTopologyRelationship, findOrganizationActionById, formatOntologyId, getOntologyDiagnostics, getSortedSidebarEntries, isOntologyGraphNodeId, isOntologyTopologyRef, listAllSystems, listResolvedOntologyRecords, ontologyGraphNodeId, ontologyIdFromGraphNodeId, parseContractRef, parseOntologyId, parseTopologyNodeRef, projectOrganizationSurfaces, resolveOrganizationModel, resolveOrganizationModelWithResources, scaffoldOrganizationModel, topologyRef, topologyRelationship, validateOrganizationSurfaceProjection };