@elevasis/ui 2.42.0 → 2.43.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 (54) hide show
  1. package/dist/api/index.js +3 -3
  2. package/dist/app/index.d.ts +69 -2
  3. package/dist/app/index.js +3 -3
  4. package/dist/auth/index.js +3 -3
  5. package/dist/charts/index.js +3 -3
  6. package/dist/{chunk-3MTAHV5M.js → chunk-FUKNHVUV.js} +204 -67
  7. package/dist/{chunk-MA7YCY7C.js → chunk-NVVAQNKE.js} +1 -1
  8. package/dist/{chunk-EDVZ3AHA.js → chunk-UECAFQKT.js} +1 -1
  9. package/dist/{chunk-YEGMSADG.js → chunk-XDEUR36B.js} +14 -2
  10. package/dist/components/index.d.ts +3 -0
  11. package/dist/components/index.js +3 -3
  12. package/dist/components/navigation/index.js +3 -3
  13. package/dist/features/auth/index.d.ts +3 -0
  14. package/dist/features/auth/index.js +4 -4
  15. package/dist/features/clients/index.d.ts +6 -3
  16. package/dist/features/clients/index.js +80 -19
  17. package/dist/features/crm/index.d.ts +3 -0
  18. package/dist/features/crm/index.js +3 -3
  19. package/dist/features/dashboard/index.js +3 -3
  20. package/dist/features/delivery/index.d.ts +3 -0
  21. package/dist/features/delivery/index.js +3 -3
  22. package/dist/features/knowledge/index.js +3 -3
  23. package/dist/features/lead-gen/index.d.ts +72 -3
  24. package/dist/features/lead-gen/index.js +3 -3
  25. package/dist/features/monitoring/index.js +3 -3
  26. package/dist/features/monitoring/requests/index.js +4 -4
  27. package/dist/features/operations/index.d.ts +66 -2
  28. package/dist/features/operations/index.js +3 -3
  29. package/dist/features/settings/index.d.ts +3 -0
  30. package/dist/features/settings/index.js +3 -3
  31. package/dist/hooks/access/index.js +3 -3
  32. package/dist/hooks/delivery/index.d.ts +3 -0
  33. package/dist/hooks/delivery/index.js +3 -3
  34. package/dist/hooks/index.d.ts +33 -18
  35. package/dist/hooks/index.js +3 -3
  36. package/dist/hooks/published.d.ts +33 -18
  37. package/dist/hooks/published.js +3 -3
  38. package/dist/index.d.ts +99 -20
  39. package/dist/index.js +4 -4
  40. package/dist/initialization/index.d.ts +3 -0
  41. package/dist/knowledge/index.d.ts +71 -6
  42. package/dist/knowledge/index.js +68 -8
  43. package/dist/layout/index.js +3 -3
  44. package/dist/organization/index.js +3 -3
  45. package/dist/profile/index.d.ts +3 -0
  46. package/dist/provider/index.d.ts +69 -2
  47. package/dist/provider/index.js +3 -3
  48. package/dist/provider/published.d.ts +69 -2
  49. package/dist/provider/published.js +3 -3
  50. package/dist/supabase/index.d.ts +6 -0
  51. package/dist/test-utils/index.js +3 -3
  52. package/dist/types/index.d.ts +3 -0
  53. package/dist/utils/index.js +1 -1
  54. package/package.json +4 -4
@@ -4,14 +4,14 @@ import { useSupabase } from './chunk-BRXELOHC.js';
4
4
  import { StyledMarkdown, ChatHeader, ChatSidebar } from './chunk-GUKY77FJ.js';
5
5
  import { CardHeader } from './chunk-S3XR4II4.js';
6
6
  import { useInitialization, InitializationContext, InitializationProvider } from './chunk-6DO4PE3O.js';
7
- import { HTTP_HEADERS, ApiClientProvider, useApiClient } from './chunk-MA7YCY7C.js';
7
+ import { HTTP_HEADERS, ApiClientProvider, useApiClient } from './chunk-NVVAQNKE.js';
8
8
  import { OrganizationContext, useOrganization } from './chunk-DD3CCMCZ.js';
9
9
  import { sidebarItemGap, sidebarSubLinkPaddingY, sidebarSubLinkPaddingX, sidebarSubLinkIndent, sidebarHoverDelay, sidebarTransitionDuration, sidebarCollapsedWidth, sidebarWidth, topbarHeight, sidebarToggleIconSize, sidebarSectionPadding, sidebarItemPadding, sidebarItemHeight, sidebarIconSize, sidebarIconStroke, sidebarIconInnerSize, sidebarBottomSectionHeight, SubshellNavItem, sidebarGroupChevronSize, SubshellSidebarSection } from './chunk-GMXGDO3I.js';
10
10
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
11
11
  import { Graph_module_css_default, useDirectedChainHighlighting, useNodeSelection, useFitViewTrigger, useGraphHighlighting, calculateGraphHeight, GRAPH_CONSTANTS } from './chunk-HENXLGVD.js';
12
12
  import { STATUS_COLORS, getStatusIcon, formatDuration, getStatusColors, AGENT_CONSTANTS, shouldAnimateEdge, TIMELINE_CONSTANTS, calculateBarPosition, CONTAINER_CONSTANTS, useExecutionPath, useUnifiedWorkflowLayout, WORKFLOW_CONSTANTS, useReactFlowAgent, getResourceStatusColor, useMergedExecution, useTimelineData, useAgentIterationData } from './chunk-7FPLLSHN.js';
13
13
  import { useProfile, useUserProfile, ProfileProvider } from './chunk-W2SFTXMT.js';
14
- import { LabelSchema, DescriptionSchema, PathSchema, ModelIdSchema, IconNameSchema, SystemLifecycleSchema, OntologyIdSchema, SystemPathSchema, ActionInvocationSchema, SystemIdSchema, NodeIdStringSchema, JsonValueSchema, SystemInterfaceRefSchema, EntitiesDomainSchema, ActionsDomainSchema, DEFAULT_ORGANIZATION_MODEL_ACTIONS, OntologyScopeSchema, DEFAULT_ONTOLOGY_SCOPE, SystemsDomainSchema, DEFAULT_ORGANIZATION_MODEL_SYSTEMS, defineEntities, defineActions, listAllSystems, compileOrganizationOntology, listResolvedOntologyRecords, getErrorInfo, getErrorTitle, formatErrorMessage, isAPIClientError, getResourceIcon, formatTimeAgo, getTimeRangeLabel, getTimeRangeDates, formatBucketTime, PAGE_SIZE_DEFAULT, REFETCH_INTERVAL_DASHBOARD, STALE_TIME_MONITORING, REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, STALE_TIME_DEFAULT, STALE_TIME_ADMIN, APIClientError, GC_TIME_MEDIUM, GC_TIME_SHORT, formatDateTime, LEAD_GEN_API_INTERFACE, computeInterfaceReadiness, getSystem, getAllBuildTemplates, getLeadGenStageCatalog, formatDate, formatRelativeTime, getResourcesForSystem, ontologyGraphNodeId, parseOntologyId, getAllProspectingStages, getAllPipelines, getAllProjectStatuses, debounce, OAUTH_FLOW_TIMEOUT, devOnlyFor, requiresAdminFor, topLevel, parentOf, ancestorsOf, childrenOf, findById, findByPath, getSystemAncestors, resolveSystemConfig, defaultPathFor } from './chunk-YEGMSADG.js';
14
+ import { LabelSchema, DescriptionSchema, PathSchema, ModelIdSchema, IconNameSchema, SystemLifecycleSchema, OntologyIdSchema, SystemPathSchema, ActionInvocationSchema, SystemIdSchema, NodeIdStringSchema, JsonValueSchema, SystemInterfaceRefSchema, EntitiesDomainSchema, ActionsDomainSchema, DEFAULT_ORGANIZATION_MODEL_ACTIONS, OntologyScopeSchema, DEFAULT_ONTOLOGY_SCOPE, SystemsDomainSchema, DEFAULT_ORGANIZATION_MODEL_SYSTEMS, defineEntities, defineActions, listAllSystems, compileOrganizationOntology, listResolvedOntologyRecords, getErrorInfo, getErrorTitle, formatErrorMessage, isAPIClientError, getResourceIcon, formatTimeAgo, getTimeRangeLabel, getTimeRangeDates, formatBucketTime, PAGE_SIZE_DEFAULT, REFETCH_INTERVAL_DASHBOARD, STALE_TIME_MONITORING, REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, STALE_TIME_DEFAULT, STALE_TIME_ADMIN, APIClientError, GC_TIME_MEDIUM, GC_TIME_SHORT, formatDateTime, LEAD_GEN_API_INTERFACE, computeInterfaceReadiness, getSystem, getAllBuildTemplates, getLeadGenStageCatalog, formatDate, formatRelativeTime, getResourcesForSystem, ontologyGraphNodeId, parseOntologyId, getAllProspectingStages, getAllPipelines, getAllProjectStatuses, debounce, OAUTH_FLOW_TIMEOUT, devOnlyFor, requiresAdminFor, topLevel, parentOf, ancestorsOf, childrenOf, findById, findByPath, getSystemAncestors, resolveSystemConfig, defaultPathFor } from './chunk-XDEUR36B.js';
15
15
  import { ResourceStatusColors, toWorkflowLogMessages } from './chunk-KRWALB24.js';
16
16
  import { useElevasisServices, ElevasisServiceContext, ElevasisServiceProvider } from './chunk-2FTX4WO2.js';
17
17
  import { brandSupabaseOrgId, brandWorkOsOrgId } from './chunk-MQZE7SUI.js';
@@ -921,6 +921,7 @@ var GoalsDomainSchema = z.record(z.string(), ObjectiveSchema).refine((record) =>
921
921
  var DEFAULT_ORGANIZATION_MODEL_GOALS = {};
922
922
  var KnowledgeTargetKindSchema = z.enum([
923
923
  "system",
924
+ "client",
924
925
  "resource",
925
926
  "knowledge",
926
927
  "stage",
@@ -1262,6 +1263,7 @@ function buildOmCrossRefIndex(model) {
1262
1263
  systemsById.set(system.id, system);
1263
1264
  }
1264
1265
  const resourceIds = new Set(Object.keys(model.resources ?? {}));
1266
+ const clientIds = new Set(Object.keys(model.clients ?? {}));
1265
1267
  const knowledgeIds = new Set(Object.keys(model.knowledge ?? {}));
1266
1268
  const roleIds = new Set(Object.keys(model.roles ?? {}));
1267
1269
  const goalIds = new Set(Object.keys(model.goals ?? {}));
@@ -1295,6 +1297,7 @@ function buildOmCrossRefIndex(model) {
1295
1297
  return {
1296
1298
  systemsById,
1297
1299
  resourceIds,
1300
+ clientIds,
1298
1301
  knowledgeIds,
1299
1302
  roleIds,
1300
1303
  goalIds,
@@ -1308,6 +1311,7 @@ function buildOmCrossRefIndex(model) {
1308
1311
  }
1309
1312
  function knowledgeTargetExists(index, kind, id) {
1310
1313
  if (kind === "system") return index.systemsById.has(id);
1314
+ if (kind === "client") return index.clientIds.has(id);
1311
1315
  if (kind === "resource") return index.resourceIds.has(id);
1312
1316
  if (kind === "knowledge") return index.knowledgeIds.has(id);
1313
1317
  if (kind === "stage") return index.stageIds.has(id);
@@ -1341,10 +1345,10 @@ function asRoleHolderArray(heldBy) {
1341
1345
  function isKnowledgeKindCompatibleWithTarget(knowledgeKind, targetKind) {
1342
1346
  if (knowledgeKind === "reference") return true;
1343
1347
  if (knowledgeKind === "playbook") {
1344
- return ["system", "resource", "stage", "action", "ontology"].includes(targetKind);
1348
+ return ["system", "client", "resource", "stage", "action", "ontology"].includes(targetKind);
1345
1349
  }
1346
1350
  if (knowledgeKind === "strategy") {
1347
- return ["system", "goal", "offering", "customer-segment", "ontology"].includes(targetKind);
1351
+ return ["system", "client", "goal", "offering", "customer-segment", "ontology"].includes(targetKind);
1348
1352
  }
1349
1353
  return false;
1350
1354
  }
@@ -1872,9 +1876,68 @@ function refineOrganizationModel(model, ctx) {
1872
1876
  }
1873
1877
 
1874
1878
  // ../core/src/organization-model/schema.ts
1879
+ var ClientProfileIdSchema = z.string().uuid();
1880
+ var ClientProfileStatusSchema = z.enum(["active", "onboarding", "paused", "completed", "churned"]);
1881
+ var ClientProfileSourceSchema = z.string().trim().min(1).max(64).regex(/^[a-z][a-z0-9_]*$/, "Source must use lowercase letters, numbers, and underscores");
1882
+ var ClientProfileIdentitySchema = z.object({
1883
+ organizationName: LabelSchema.optional(),
1884
+ shortName: z.string().trim().min(1).max(40).optional(),
1885
+ clientBrief: z.string().trim().max(4e3).default(""),
1886
+ geographicFocus: z.array(z.string().trim().min(1).max(200)).default([]),
1887
+ timeZone: z.string().trim().min(1).max(100).default("UTC")
1888
+ }).passthrough().default({
1889
+ clientBrief: "",
1890
+ geographicFocus: [],
1891
+ timeZone: "UTC"
1892
+ });
1893
+ var ClientProfileBrandingSchema = z.object({
1894
+ voice: z.string().trim().max(280).optional(),
1895
+ tagline: z.string().trim().max(200).optional(),
1896
+ values: z.array(z.string().trim().min(1).max(100)).default([])
1897
+ }).passthrough().default({
1898
+ values: []
1899
+ });
1900
+ var ClientProfileWorkspaceSchema = z.object({
1901
+ kind: z.enum(["external-project", "internal-project", "none"]).optional(),
1902
+ owner: z.enum(["developer", "client", "platform"]).optional(),
1903
+ projectId: z.string().trim().min(1).max(200).optional(),
1904
+ workspacePath: z.string().trim().min(1).max(500).optional()
1905
+ }).passthrough().default({});
1906
+ var ClientProfileLinksSchema = z.object({
1907
+ projectIds: z.array(z.string().uuid()).default([]),
1908
+ primaryCompanyId: z.string().uuid().optional(),
1909
+ primaryContactId: z.string().uuid().optional(),
1910
+ sourceDealId: z.string().uuid().optional()
1911
+ }).default({
1912
+ projectIds: []
1913
+ });
1914
+ var ClientProfilePromptsSchema = z.object({
1915
+ defaultContext: z.string().trim().max(8e3).default("")
1916
+ }).passthrough().default({
1917
+ defaultContext: ""
1918
+ });
1919
+ var ClientProfileSchema = z.object({
1920
+ id: ClientProfileIdSchema,
1921
+ slug: ModelIdSchema,
1922
+ name: LabelSchema,
1923
+ status: ClientProfileStatusSchema.default("onboarding"),
1924
+ source: ClientProfileSourceSchema.optional(),
1925
+ identity: ClientProfileIdentitySchema,
1926
+ branding: ClientProfileBrandingSchema,
1927
+ workspace: ClientProfileWorkspaceSchema,
1928
+ links: ClientProfileLinksSchema,
1929
+ prompts: ClientProfilePromptsSchema,
1930
+ config: z.record(z.string().trim().min(1).max(200), JsonValueSchema).default({}),
1931
+ customValues: z.record(z.string().trim().min(1).max(200), JsonValueSchema).default({})
1932
+ }).strict();
1933
+ var ClientProfilesDomainSchema = z.record(ClientProfileIdSchema, ClientProfileSchema).refine((record) => Object.entries(record).every(([key, entry]) => entry.id === key), {
1934
+ message: "Each client profile id must match its map key"
1935
+ }).default({});
1936
+ var DEFAULT_ORGANIZATION_MODEL_CLIENTS = {};
1875
1937
  z.enum([
1876
1938
  "branding",
1877
1939
  "identity",
1940
+ "clients",
1878
1941
  "customers",
1879
1942
  "offerings",
1880
1943
  "roles",
@@ -1895,6 +1958,7 @@ var OrganizationModelDomainMetadataSchema = z.object({
1895
1958
  var DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA = {
1896
1959
  branding: { version: 1, lastModified: "2026-05-10" },
1897
1960
  identity: { version: 1, lastModified: "2026-05-10" },
1961
+ clients: { version: 1, lastModified: "2026-05-30" },
1898
1962
  customers: { version: 1, lastModified: "2026-05-10" },
1899
1963
  offerings: { version: 1, lastModified: "2026-05-10" },
1900
1964
  roles: { version: 1, lastModified: "2026-05-10" },
@@ -1911,6 +1975,7 @@ var DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA = {
1911
1975
  var OrganizationModelDomainMetadataByDomainSchema = z.object({
1912
1976
  branding: OrganizationModelDomainMetadataSchema,
1913
1977
  identity: OrganizationModelDomainMetadataSchema,
1978
+ clients: OrganizationModelDomainMetadataSchema,
1914
1979
  customers: OrganizationModelDomainMetadataSchema,
1915
1980
  offerings: OrganizationModelDomainMetadataSchema,
1916
1981
  roles: OrganizationModelDomainMetadataSchema,
@@ -1926,10 +1991,23 @@ var OrganizationModelDomainMetadataByDomainSchema = z.object({
1926
1991
  }).partial().default(DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA).transform((metadata) => ({ ...DEFAULT_ORGANIZATION_MODEL_DOMAIN_METADATA, ...metadata }));
1927
1992
  var OrganizationModelSchemaBase = z.object({
1928
1993
  version: z.literal(1).default(1),
1994
+ /**
1995
+ * Deterministic SHA-256 hex hash of the full resolved model, excluding this
1996
+ * field itself and volatile domainMetadata.lastModified values.
1997
+ *
1998
+ * Stamped at deploy time by the platform OM assembly and persisted alongside
1999
+ * the snapshot in the DB. Compared at API boot to detect stale deployed
2000
+ * snapshots (primary gate: deploy; secondary backstop: boot).
2001
+ *
2002
+ * Optional — absent on models that predate Step 2 versioning or that have
2003
+ * not been stamped (e.g. tenant partial overrides before re-deploy).
2004
+ */
2005
+ snapshotHash: z.string().optional(),
1929
2006
  domainMetadata: OrganizationModelDomainMetadataByDomainSchema,
1930
2007
  branding: OrganizationModelBrandingSchema.default(DEFAULT_ORGANIZATION_MODEL_BRANDING),
1931
2008
  navigation: OrganizationModelNavigationSchema,
1932
2009
  identity: IdentityDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_IDENTITY),
2010
+ clients: ClientProfilesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_CLIENTS),
1933
2011
  customers: CustomersDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_CUSTOMERS),
1934
2012
  offerings: OfferingsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_OFFERINGS),
1935
2013
  roles: RolesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_ROLES),
@@ -1950,6 +2028,7 @@ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine(refineOrga
1950
2028
  var OrganizationGraphNodeKindSchema = z.enum([
1951
2029
  "organization",
1952
2030
  "system",
2031
+ "client",
1953
2032
  "role",
1954
2033
  "action",
1955
2034
  "entity",
@@ -2357,6 +2436,7 @@ var DEFAULT_ORGANIZATION_MODEL = {
2357
2436
  branding: DEFAULT_ORGANIZATION_MODEL_BRANDING,
2358
2437
  navigation: DEFAULT_ORGANIZATION_MODEL_NAVIGATION,
2359
2438
  identity: DEFAULT_ORGANIZATION_MODEL_IDENTITY,
2439
+ clients: DEFAULT_ORGANIZATION_MODEL_CLIENTS,
2360
2440
  customers: DEFAULT_ORGANIZATION_MODEL_CUSTOMERS,
2361
2441
  offerings: DEFAULT_ORGANIZATION_MODEL_OFFERINGS,
2362
2442
  roles: DEFAULT_ORGANIZATION_MODEL_ROLES,
@@ -2696,6 +2776,22 @@ function buildOrganizationGraph(input) {
2696
2776
  }
2697
2777
  const validSystemRefs = new Set(systemPathByRef.keys());
2698
2778
  const systemNodeId = (systemRef) => nodeId("system", systemPathByRef.get(systemRef) ?? systemRef);
2779
+ for (const client of Object.values(organizationModel2.clients).sort((a, b) => a.slug.localeCompare(b.slug))) {
2780
+ const id = nodeId("client", client.id);
2781
+ pushUniqueNode(nodes, nodeIds, {
2782
+ id,
2783
+ kind: "client",
2784
+ label: client.name,
2785
+ sourceId: client.id,
2786
+ description: client.identity.clientBrief || void 0
2787
+ });
2788
+ pushUniqueEdge(edges, edgeIds, {
2789
+ id: edgeId("contains", organizationNode.id, id),
2790
+ kind: "contains",
2791
+ sourceId: organizationNode.id,
2792
+ targetId: id
2793
+ });
2794
+ }
2699
2795
  function topologyNodeId(ref) {
2700
2796
  if (ref.kind === "system") return systemNodeId(ref.id);
2701
2797
  if (ref.kind === "resource") return nodeId("resource", ref.id);
@@ -3771,6 +3867,7 @@ var DEFAULT_SEMANTIC_ICON_REGISTRY = {
3771
3867
  // UI-only om.* group tokens (not in the core enum — kept for registry lookup
3772
3868
  // by components that reference them directly via extendSemanticIconRegistry)
3773
3869
  "om.quick-access": IconBolt,
3870
+ "om.organization": IconBuilding,
3774
3871
  "om.profile": IconBuilding,
3775
3872
  "om.business-model": IconBriefcase,
3776
3873
  "om.systems": IconApps,
@@ -11376,9 +11473,10 @@ function useClients(filters = {}) {
11376
11473
  return useQuery({
11377
11474
  queryKey: clientsKeys.list(workOSOrganizationId ?? void 0, filters),
11378
11475
  queryFn: async () => {
11379
- const { status, search, limit, offset } = filters;
11476
+ const { status, source, search, limit, offset } = filters;
11380
11477
  const params = new URLSearchParams();
11381
11478
  if (status) params.set("status", status);
11479
+ if (source) params.set("source", source);
11382
11480
  if (search) params.set("search", search);
11383
11481
  if (limit !== void 0) params.set("limit", String(limit));
11384
11482
  if (offset !== void 0) params.set("offset", String(offset));
@@ -22583,9 +22681,9 @@ var mdxKnowledgeNodes = [
22583
22681
  {
22584
22682
  "target": {
22585
22683
  "kind": "system",
22586
- "id": "clients"
22684
+ "id": "client-management"
22587
22685
  },
22588
- "nodeId": "system:clients"
22686
+ "nodeId": "system:client-management"
22589
22687
  }
22590
22688
  ],
22591
22689
  "ownerIds": [
@@ -23492,7 +23590,7 @@ var platformNavigation = {
23492
23590
  surfaceType: "list",
23493
23591
  icon: "clients",
23494
23592
  order: 20,
23495
- targets: { systems: ["clients"] }
23593
+ targets: { systems: ["client-management"] }
23496
23594
  },
23497
23595
  projects: {
23498
23596
  type: "surface",
@@ -23524,7 +23622,7 @@ var platformNavigation = {
23524
23622
  path: "/operations/systems",
23525
23623
  surfaceType: "page",
23526
23624
  order: 20,
23527
- targets: { systems: ["sales", "clients", "projects", "seo", "platform"] }
23625
+ targets: { systems: ["sales", "client-management", "projects", "seo", "platform"] }
23528
23626
  },
23529
23627
  "operations-resources": {
23530
23628
  type: "surface",
@@ -23750,7 +23848,7 @@ function getPlatformOwnerRoleId(systemId) {
23750
23848
  return "role.crm-operator";
23751
23849
  case "seo":
23752
23850
  return "role.website-operator";
23753
- case "clients":
23851
+ case "client-management":
23754
23852
  return "role.client-support-operator";
23755
23853
  case "platform":
23756
23854
  return "role.operator";
@@ -23861,8 +23959,8 @@ var platformWorkflowResourceSeeds = [
23861
23959
  ["mnt-reddit-scan-workflow", "sales.lead-gen"],
23862
23960
  ["mnt-linkedin-monitor-workflow", "sales.lead-gen"],
23863
23961
  ["website-form-intake-handler-workflow", "seo"],
23864
- ["grsi-change-request-workflow", "clients"],
23865
- ["iss-submission-workflow", "clients", "clients.support-issue.review"],
23962
+ ["grsi-change-request-workflow", "client-management"],
23963
+ ["iss-submission-workflow", "client-management", "client-management.support-issue.review"],
23866
23964
  ["youtube-research-workflow", "platform"],
23867
23965
  ["send-email-workflow", "platform"],
23868
23966
  ["platform-status", "platform"],
@@ -23892,8 +23990,8 @@ var leadGenCampaignStatus = "sales.lead-gen:catalog/campaign-status";
23892
23990
  var crmDeal = "sales.crm:object/deal";
23893
23991
  var crmContact = "sales.crm:object/contact";
23894
23992
  var crmPipeline = "sales.crm:catalog/crm.pipeline";
23895
- var clientSupportIssue = "clients:object/support-issue";
23896
- var clientSupportIssueSeverity = "clients:catalog/support-issue-severity";
23993
+ var clientSupportIssue = "client-management:object/support-issue";
23994
+ var clientSupportIssueSeverity = "client-management:catalog/support-issue-severity";
23897
23995
  var workflowOntologyBindingsByBuildActionKey = {
23898
23996
  "lead-gen.company.source": {
23899
23997
  actions: ["sales.lead-gen:action/company.source"],
@@ -24041,12 +24139,12 @@ var workflowOntologyBindingsByBuildActionKey = {
24041
24139
  writes: [leadGenList],
24042
24140
  usesCatalogs: [leadGenBuildTemplate, leadGenCampaignStatus]
24043
24141
  },
24044
- "clients.support-issue.review": {
24045
- actions: ["clients:action/support-issue.review"],
24046
- primaryAction: "clients:action/support-issue.review",
24142
+ "client-management.support-issue.review": {
24143
+ actions: ["client-management:action/support-issue.review"],
24144
+ primaryAction: "client-management:action/support-issue.review",
24047
24145
  writes: [clientSupportIssue],
24048
24146
  usesCatalogs: [clientSupportIssueSeverity],
24049
- emits: ["clients:event/support-issue.submitted"]
24147
+ emits: ["client-management:event/support-issue.submitted"]
24050
24148
  },
24051
24149
  "lead-gen.company.cleanup": {
24052
24150
  actions: ["sales.lead-gen:action/company.qualify"],
@@ -25036,7 +25134,7 @@ var platformRoles = {
25036
25134
  "Own platform operations knowledge and keep operational playbooks aligned with active systems.",
25037
25135
  "Maintain platform utilities, diagnostics, and resource governance health."
25038
25136
  ],
25039
- responsibleFor: ["clients", "sales", "projects", "seo", "platform"]
25137
+ responsibleFor: ["client-management", "sales", "projects", "seo", "platform"]
25040
25138
  },
25041
25139
  "role.growth-operator": {
25042
25140
  id: "role.growth-operator",
@@ -25069,7 +25167,7 @@ var platformRoles = {
25069
25167
  order: 50,
25070
25168
  title: "Client Support Operator",
25071
25169
  responsibilities: ["Own client support request intake and issue-submission workflows."],
25072
- responsibleFor: ["clients"]
25170
+ responsibleFor: ["client-management"]
25073
25171
  }
25074
25172
  };
25075
25173
 
@@ -25382,11 +25480,11 @@ var platformSystems = {
25382
25480
  }
25383
25481
  }
25384
25482
  },
25385
- clients: {
25386
- id: "clients",
25483
+ "client-management": {
25484
+ id: "client-management",
25387
25485
  order: 50,
25388
- label: "Clients",
25389
- description: "Client relationships, accounts, and business context.",
25486
+ label: "Client Management",
25487
+ description: "Operational client relationships, accounts, support intake, and business context.",
25390
25488
  kind: "operational",
25391
25489
  governedByKnowledge: [],
25392
25490
  drivesGoals: [],
@@ -25398,38 +25496,38 @@ var platformSystems = {
25398
25496
  },
25399
25497
  ontology: {
25400
25498
  objectTypes: {
25401
- "clients:object/support-issue": {
25402
- id: "clients:object/support-issue",
25499
+ "client-management:object/support-issue": {
25500
+ id: "client-management:object/support-issue",
25403
25501
  label: "Support Issue",
25404
25502
  description: "A client-reported support issue routed to a human review checkpoint.",
25405
- ownerSystemId: "clients",
25503
+ ownerSystemId: "client-management",
25406
25504
  properties: {
25407
25505
  id: { valueType: "global:value-type/uuid", identity: true },
25408
25506
  title: { valueType: "global:value-type/text", required: true },
25409
- severity: { catalogType: "clients:catalog/support-issue-severity", required: true }
25507
+ severity: { catalogType: "client-management:catalog/support-issue-severity", required: true }
25410
25508
  }
25411
25509
  }
25412
25510
  },
25413
25511
  actionTypes: {
25414
- "clients:action/support-issue.review": {
25415
- id: "clients:action/support-issue.review",
25512
+ "client-management:action/support-issue.review": {
25513
+ id: "client-management:action/support-issue.review",
25416
25514
  label: "Review Support Issue",
25417
25515
  description: "Create a human review task for an inbound client support issue.",
25418
- ownerSystemId: "clients",
25419
- actsOn: ["clients:object/support-issue"],
25516
+ ownerSystemId: "client-management",
25517
+ actsOn: ["client-management:object/support-issue"],
25420
25518
  effects: [
25421
- { kind: "write", objectType: "clients:object/support-issue" },
25422
- { kind: "emitEvent", eventType: "clients:event/support-issue.submitted" }
25519
+ { kind: "write", objectType: "client-management:object/support-issue" },
25520
+ { kind: "emitEvent", eventType: "client-management:event/support-issue.submitted" }
25423
25521
  ]
25424
25522
  }
25425
25523
  },
25426
25524
  catalogTypes: {
25427
- "clients:catalog/support-issue-severity": {
25428
- id: "clients:catalog/support-issue-severity",
25525
+ "client-management:catalog/support-issue-severity": {
25526
+ id: "client-management:catalog/support-issue-severity",
25429
25527
  label: "Support Issue Severities",
25430
- ownerSystemId: "clients",
25528
+ ownerSystemId: "client-management",
25431
25529
  kind: "severity",
25432
- appliesTo: "clients:object/support-issue",
25530
+ appliesTo: "client-management:object/support-issue",
25433
25531
  entries: {
25434
25532
  low: { label: "Low", order: 10 },
25435
25533
  medium: { label: "Medium", order: 20 },
@@ -25439,13 +25537,13 @@ var platformSystems = {
25439
25537
  }
25440
25538
  },
25441
25539
  eventTypes: {
25442
- "clients:event/support-issue.submitted": {
25443
- id: "clients:event/support-issue.submitted",
25540
+ "client-management:event/support-issue.submitted": {
25541
+ id: "client-management:event/support-issue.submitted",
25444
25542
  label: "Support Issue Submitted",
25445
- ownerSystemId: "clients",
25543
+ ownerSystemId: "client-management",
25446
25544
  payload: {
25447
25545
  title: { valueType: "global:value-type/text" },
25448
- severity: { catalogType: "clients:catalog/support-issue-severity" }
25546
+ severity: { catalogType: "client-management:catalog/support-issue-severity" }
25449
25547
  }
25450
25548
  }
25451
25549
  }
@@ -26564,7 +26662,12 @@ var platformTopology = defineTopology(
26564
26662
  checkpointRoutesTo("inb-timeout-booked-routes-no-show", "inb-timeout-booked", "inb-pipeline-timeout-no-show-workflow", "sales.crm"),
26565
26663
  checkpointRoutesTo("inb-timeout-booked-routes-close-lost", "inb-timeout-booked", "inb-pipeline-timeout-close-lost-workflow", "sales.crm"),
26566
26664
  checkpointRoutesTo("inb-timeout-booked-routes-followup", "inb-timeout-booked", "inb-pipeline-timeout-followup-workflow", "sales.crm"),
26567
- requestsApproval("iss-submission-requests-support-review", "iss-submission-workflow", "iss-submissions", "clients")
26665
+ requestsApproval(
26666
+ "iss-submission-requests-support-review",
26667
+ "iss-submission-workflow",
26668
+ "iss-submissions",
26669
+ "client-management"
26670
+ )
26568
26671
  ])
26569
26672
  );
26570
26673
 
@@ -26574,7 +26677,7 @@ function assignResponsibleRoles(systems) {
26574
26677
  if (systemId === "sales.lead-gen") return "role.growth-operator";
26575
26678
  if (systemId === "sales.crm") return "role.crm-operator";
26576
26679
  if (systemId === "seo") return "role.website-operator";
26577
- if (systemId === "clients") return "role.client-support-operator";
26680
+ if (systemId === "client-management") return "role.client-support-operator";
26578
26681
  return "role.operator";
26579
26682
  }
26580
26683
  function applyToMap(map, prefix = "") {
@@ -36437,6 +36540,7 @@ function CommandQueueDetailPage({
36437
36540
  // src/features/operations/organization-graph/types.ts
36438
36541
  var ORGANIZATION_GRAPH_NODE_KIND_ORDER = [
36439
36542
  "organization",
36543
+ "client",
36440
36544
  "system",
36441
36545
  "role",
36442
36546
  "action",
@@ -36455,6 +36559,7 @@ var ORGANIZATION_GRAPH_NODE_KIND_ORDER = [
36455
36559
  ];
36456
36560
  var ORGANIZATION_GRAPH_NODE_KIND_LABELS = {
36457
36561
  organization: "Organization",
36562
+ client: "Client",
36458
36563
  system: "System",
36459
36564
  role: "Role",
36460
36565
  action: "Action",
@@ -36473,6 +36578,7 @@ var ORGANIZATION_GRAPH_NODE_KIND_LABELS = {
36473
36578
  };
36474
36579
  var ORGANIZATION_GRAPH_NODE_KIND_DETAIL_LABELS = {
36475
36580
  organization: "Organization root",
36581
+ client: "Client",
36476
36582
  system: "System",
36477
36583
  role: "Role",
36478
36584
  action: "Action",
@@ -36491,6 +36597,7 @@ var ORGANIZATION_GRAPH_NODE_KIND_DETAIL_LABELS = {
36491
36597
  };
36492
36598
  var ORGANIZATION_GRAPH_NODE_KIND_MEANINGS = {
36493
36599
  organization: "The root of the shared organization model and the parent for every derived node.",
36600
+ client: "A direct client profile represented under the Organization clients domain.",
36494
36601
  system: "A canonical Organization Model system for ownership, routing, and governance.",
36495
36602
  role: "An Organization Model role that owns responsibilities and may govern systems.",
36496
36603
  action: "A reusable action that can be attached to a system.",
@@ -39244,21 +39351,22 @@ function buildCommandViewDrillDownSections({
39244
39351
  // src/features/operations/organization-graph/path-tracing/trace.ts
39245
39352
  var NODE_KIND_ORDER = {
39246
39353
  organization: 0,
39247
- system: 1,
39248
- role: 2,
39249
- action: 3,
39250
- stage: 4,
39251
- entity: 5,
39252
- policy: 6,
39253
- resource: 7,
39254
- knowledge: 8,
39255
- event: 9,
39256
- "customer-segment": 10,
39257
- offering: 11,
39258
- goal: 12,
39259
- surface: 13,
39260
- "navigation-group": 14,
39261
- ontology: 15
39354
+ client: 1,
39355
+ system: 2,
39356
+ role: 3,
39357
+ action: 4,
39358
+ stage: 5,
39359
+ entity: 6,
39360
+ policy: 7,
39361
+ resource: 8,
39362
+ knowledge: 9,
39363
+ event: 10,
39364
+ "customer-segment": 11,
39365
+ offering: 12,
39366
+ goal: 13,
39367
+ surface: 14,
39368
+ "navigation-group": 15,
39369
+ ontology: 16
39262
39370
  };
39263
39371
  function getNodeLabel(node) {
39264
39372
  return node.label || node.sourceId || node.id;
@@ -40661,6 +40769,7 @@ function readGraphThemeTokens() {
40661
40769
  function getNodeThemeByKind(tokens2) {
40662
40770
  const accentByKind = {
40663
40771
  organization: mixColors(tokens2.primary, tokens2.text, 0.35),
40772
+ client: mixColors(tokens2.primary, tokens2.text, 0.5),
40664
40773
  system: mixColors(tokens2.primary, tokens2.success, 0.48),
40665
40774
  role: mixColors(tokens2.primary, tokens2.error, 0.4),
40666
40775
  action: mixColors(tokens2.primary, tokens2.success, 0.72),
@@ -47785,6 +47894,8 @@ function graphKindToFallbackToken(kind) {
47785
47894
  return "user";
47786
47895
  case "stage":
47787
47896
  return "pending";
47897
+ case "client":
47898
+ return "clients";
47788
47899
  case "organization":
47789
47900
  return "building";
47790
47901
  default:
@@ -47796,6 +47907,7 @@ var FAVORITE_PREFIX = "favorite:";
47796
47907
  var QUICK_ACCESS_GROUP_VALUE = `group:${QUICK_ACCESS_GROUP_KEY}`;
47797
47908
  var GROUP_ICON_TOKENS = {
47798
47909
  [QUICK_ACCESS_GROUP_KEY]: "om.quick-access",
47910
+ organization: "om.organization",
47799
47911
  profile: "om.profile",
47800
47912
  "business-model": "om.business-model",
47801
47913
  systems: "om.systems",
@@ -47841,8 +47953,7 @@ function findFavoritePathInTree(nodes, favorite) {
47841
47953
  return void 0;
47842
47954
  }
47843
47955
  var OM_TREE_GROUPS = [
47844
- { key: "profile", label: "Profile", domains: ["identity", "branding"] },
47845
- { key: "business-model", label: "Business Model", domains: ["customers", "offerings", "goals"] },
47956
+ { key: "organization", label: "Organization", domains: ["identity", "branding", "customers", "offerings", "goals", "clients"] },
47846
47957
  { key: "systems", label: "Systems", domains: ["systems", "sales", "prospecting", "projects"] },
47847
47958
  {
47848
47959
  key: "graph",
@@ -47878,6 +47989,8 @@ function domainKeyForKnowledgeTarget(targetKind) {
47878
47989
  return "goals";
47879
47990
  case "role":
47880
47991
  return "roles";
47992
+ case "client":
47993
+ return "clients";
47881
47994
  default:
47882
47995
  return void 0;
47883
47996
  }
@@ -47894,6 +48007,7 @@ function graphNodeIdForKnowledgeTarget(targetKind, targetId) {
47894
48007
  case "ontology":
47895
48008
  case "system":
47896
48009
  case "stage":
48010
+ case "client":
47897
48011
  return `${targetKind}:${targetId}`;
47898
48012
  default:
47899
48013
  return void 0;
@@ -47970,6 +48084,7 @@ var KNOWLEDGE_DOMAINS_WITH_PANELS = /* @__PURE__ */ new Set([
47970
48084
  "identity",
47971
48085
  "branding",
47972
48086
  "customers",
48087
+ "clients",
47973
48088
  "offerings",
47974
48089
  "goals",
47975
48090
  "roles",
@@ -47989,7 +48104,7 @@ var KNOWLEDGE_DOMAINS_WITH_PANELS = /* @__PURE__ */ new Set([
47989
48104
  "ontology-groups",
47990
48105
  "ontology-surfaces"
47991
48106
  ]);
47992
- var FILTERABLE_DOMAIN_KEYS = /* @__PURE__ */ new Set(["customers", "offerings", "goals", "roles", "policies"]);
48107
+ var FILTERABLE_DOMAIN_KEYS = /* @__PURE__ */ new Set(["customers", "clients", "offerings", "goals", "roles", "policies"]);
47993
48108
  function shouldRouteItemToDomainPanel(domainKey) {
47994
48109
  return FILTERABLE_DOMAIN_KEYS.has(domainKey);
47995
48110
  }
@@ -48565,7 +48680,7 @@ function buildBusinessModelGroup(organizationModel2, knowledgeByTarget, facetSta
48565
48680
  children: [
48566
48681
  createDomainNode({
48567
48682
  domainKey: "customers",
48568
- label: "Customers",
48683
+ label: "ICP",
48569
48684
  children: modelRecordValues(organizationModel2?.customers, (segment) => segment.name || segment.id).map(
48570
48685
  (segment) => createItemNode({
48571
48686
  domainKey: "customers",
@@ -48602,6 +48717,30 @@ function buildBusinessModelGroup(organizationModel2, knowledgeByTarget, facetSta
48602
48717
  ]
48603
48718
  });
48604
48719
  }
48720
+ function buildClientsDomain(graph, organizationModel2, knowledgeByTarget, facetStates) {
48721
+ const graphNodesById = new Map(graph.nodes.map((node) => [node.id, node]));
48722
+ const clientItems = modelRecordValues(organizationModel2?.clients, (client) => client.name || client.slug).map(
48723
+ (client) => createItemNode({
48724
+ domainKey: "clients",
48725
+ itemId: client.id,
48726
+ label: client.name || client.slug,
48727
+ graphNodeId: graphNodesById.get(`client:${client.id}`)?.id,
48728
+ knowledgeNodes: getTargetKnowledge(knowledgeByTarget, `clients:${client.id}`, facetStates)
48729
+ })
48730
+ );
48731
+ return createDomainNode({ domainKey: "clients", label: "Clients", children: clientItems });
48732
+ }
48733
+ function buildOrganizationGroup(graph, organizationModel2, knowledgeByTarget, facetStates) {
48734
+ return createGroupNode({
48735
+ groupKey: "organization",
48736
+ label: "Organization",
48737
+ children: [
48738
+ buildProfileGroup(organizationModel2, knowledgeByTarget, facetStates),
48739
+ buildBusinessModelGroup(organizationModel2, knowledgeByTarget, facetStates),
48740
+ buildClientsDomain(graph, organizationModel2, knowledgeByTarget, facetStates)
48741
+ ]
48742
+ });
48743
+ }
48605
48744
  function buildRolesDomain(graph, organizationModel2, knowledgeByTarget, facetStates) {
48606
48745
  const graphNodesById = new Map(graph.nodes.map((node) => [node.id, node]));
48607
48746
  const roleItems = modelRecordValues(organizationModel2?.roles, (role) => role.title || role.id).map(
@@ -48828,10 +48967,8 @@ function buildOrgTreeNode(graph, knowledgeNodes, facetStates, organizationModel2
48828
48967
  const visibleSpineIds = computeVisibleSpineIds(allBareIds, "system", facetStates, ctx, organizationModel2);
48829
48968
  const omGroups = OM_TREE_GROUPS.map((group) => {
48830
48969
  switch (group.key) {
48831
- case "profile":
48832
- return buildProfileGroup(organizationModel2, knowledgeByTarget, facetStates);
48833
- case "business-model":
48834
- return buildBusinessModelGroup(organizationModel2, knowledgeByTarget, facetStates);
48970
+ case "organization":
48971
+ return buildOrganizationGroup(graph, organizationModel2, knowledgeByTarget, facetStates);
48835
48972
  case "systems":
48836
48973
  return buildSystemsGroup(graph, organizationModel2, facetStates, ctx, visibleSpineIds);
48837
48974
  case "graph":
@@ -1,5 +1,5 @@
1
1
  import { OrganizationContext } from './chunk-DD3CCMCZ.js';
2
- import { APIClientError } from './chunk-YEGMSADG.js';
2
+ import { APIClientError } from './chunk-XDEUR36B.js';
3
3
  import { createContext, useContext, useMemo, useCallback } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,4 +1,4 @@
1
- import { GC_TIME_LONG, STALE_TIME_DEFAULT } from './chunk-YEGMSADG.js';
1
+ import { GC_TIME_LONG, STALE_TIME_DEFAULT } from './chunk-XDEUR36B.js';
2
2
  import { QueryClient } from '@tanstack/react-query';
3
3
 
4
4
  function createElevasisQueryClient(options = {}) {
@@ -1498,7 +1498,13 @@ function computeInterfaceReadiness(model, request) {
1498
1498
  `System "${request.systemPath}" is missing.`,
1499
1499
  { ref: request.systemPath }
1500
1500
  );
1501
- return { ready: false, systemPath: request.systemPath, interfaceKey: request.interfaceKey, scopedResourceIds, issues };
1501
+ return {
1502
+ ready: false,
1503
+ systemPath: request.systemPath,
1504
+ interfaceKey: request.interfaceKey,
1505
+ scopedResourceIds,
1506
+ issues
1507
+ };
1502
1508
  }
1503
1509
  if (systemInterface === void 0) {
1504
1510
  addReadinessIssue(
@@ -1508,7 +1514,13 @@ function computeInterfaceReadiness(model, request) {
1508
1514
  `System "${request.systemPath}" does not declare interface "${request.interfaceKey}".`,
1509
1515
  { path: readinessMarkerPath(request) }
1510
1516
  );
1511
- return { ready: false, systemPath: request.systemPath, interfaceKey: request.interfaceKey, scopedResourceIds, issues };
1517
+ return {
1518
+ ready: false,
1519
+ systemPath: request.systemPath,
1520
+ interfaceKey: request.interfaceKey,
1521
+ scopedResourceIds,
1522
+ issues
1523
+ };
1512
1524
  }
1513
1525
  if (systemInterface.lifecycle !== "active") {
1514
1526
  addReadinessIssue(