@elevasis/ui 2.65.0 → 2.66.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/app/index.d.ts +6 -0
  2. package/dist/app/index.js +5 -5
  3. package/dist/auth/index.d.ts +12 -5
  4. package/dist/auth/index.js +5 -5
  5. package/dist/charts/index.js +5 -5
  6. package/dist/{chunk-ZTWA5H77.js → chunk-6ZAP3FOA.js} +0 -1
  7. package/dist/{chunk-3WVZRN37.js → chunk-ANNM5R7S.js} +235 -365
  8. package/dist/chunk-L7BZZ4SI.js +56 -0
  9. package/dist/chunk-P45GQ3ZW.js +104 -0
  10. package/dist/{chunk-EIXSQONC.js → chunk-RT4KRGZT.js} +37 -59
  11. package/dist/components/index.d.ts +240 -209
  12. package/dist/components/index.js +5 -5
  13. package/dist/components/navigation/index.js +5 -5
  14. package/dist/execution/index.d.ts +115 -104
  15. package/dist/features/auth/index.d.ts +39 -8
  16. package/dist/features/auth/index.js +14 -9
  17. package/dist/features/clients/index.js +5 -5
  18. package/dist/features/crm/index.js +5 -5
  19. package/dist/features/dashboard/index.js +5 -5
  20. package/dist/features/delivery/index.js +5 -5
  21. package/dist/features/knowledge/index.js +5 -5
  22. package/dist/features/lead-gen/index.js +5 -5
  23. package/dist/features/monitoring/index.js +5 -5
  24. package/dist/features/monitoring/requests/index.js +6 -6
  25. package/dist/features/notes/index.js +2 -2
  26. package/dist/features/operations/index.d.ts +141 -105
  27. package/dist/features/operations/index.js +5 -5
  28. package/dist/features/settings/index.d.ts +1 -0
  29. package/dist/features/settings/index.js +5 -5
  30. package/dist/hooks/access/index.js +5 -5
  31. package/dist/hooks/delivery/index.js +5 -5
  32. package/dist/hooks/index.d.ts +284 -162
  33. package/dist/hooks/index.js +5 -5
  34. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +0 -2
  35. package/dist/hooks/operations/command-view/utils/transformCommandViewData.js +1 -1
  36. package/dist/hooks/published.d.ts +284 -162
  37. package/dist/hooks/published.js +5 -5
  38. package/dist/index.d.ts +374 -236
  39. package/dist/index.js +5 -5
  40. package/dist/initialization/index.d.ts +61 -28
  41. package/dist/initialization/index.js +3 -3
  42. package/dist/knowledge/index.js +9 -9
  43. package/dist/{knowledge-search-index-JOPRYZN6.js → knowledge-search-index-6EZNBNSR.js} +4 -4
  44. package/dist/layout/index.js +5 -5
  45. package/dist/organization/index.d.ts +49 -4
  46. package/dist/organization/index.js +5 -5
  47. package/dist/profile/index.d.ts +23 -2
  48. package/dist/profile/index.js +1 -1
  49. package/dist/provider/index.js +5 -5
  50. package/dist/provider/published.js +5 -5
  51. package/dist/types/index.d.ts +330 -271
  52. package/package.json +3 -3
  53. package/dist/chunk-LO7GWG24.js +0 -75
  54. package/dist/chunk-T4LA4RY2.js +0 -56
@@ -4,14 +4,14 @@ import { useSupabase } from './chunk-MKH2KOAO.js';
4
4
  import { HTTP_HEADERS, ApiClientProvider, useApiClient } from './chunk-XNW3O6QW.js';
5
5
  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';
6
6
  import { CardHeader } from './chunk-62GVNH5U.js';
7
- import { useInitialization, InitializationContext, InitializationProvider } from './chunk-LO7GWG24.js';
7
+ import { useInitialization, InitializationContext, InitializationProvider } from './chunk-P45GQ3ZW.js';
8
8
  import { OrganizationContext, useOrganization } from './chunk-DD3CCMCZ.js';
9
9
  import { SessionIdParamSchema, CreateSessionSchema, GetNotificationsQuerySchema, MarkAsReadParamsSchema, ExecutionIdParamsSchema, createLiveTempMessageIdentity, WebSocketSessionTurnSchema, mergeSessionMessages } from './chunk-M7WWRZ5Z.js';
10
10
  import { StyledMarkdown, ChatInterface, ChatHeader } from './chunk-JFBZ6XDW.js';
11
11
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
12
- import { Graph_module_css_default, useDirectedChainHighlighting, useNodeSelection, useFitViewTrigger, useGraphHighlighting, calculateGraphHeight, GRAPH_CONSTANTS } from './chunk-HENXLGVD.js';
12
+ import { Graph_module_css_default, useDirectedChainHighlighting, useNodeSelection, useFitViewTrigger } from './chunk-HENXLGVD.js';
13
13
  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-BLXJEIQS.js';
14
- import { useProfile, useUserProfile, ProfileProvider } from './chunk-EIXSQONC.js';
14
+ import { useProfile, useUserProfile, ProfileProvider } from './chunk-RT4KRGZT.js';
15
15
  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, listResolvedOntologyRecords, getErrorInfo, getErrorTitle, formatErrorMessage, getSystem, compileOrganizationOntology, isAPIClientError, getResourceIcon, formatTimeAgo, PAGE_SIZE_DEFAULT, STALE_TIME_MONITORING, STALE_TIME_DEFAULT, STALE_TIME_ADMIN, APIClientError, GC_TIME_MEDIUM, GC_TIME_SHORT, formatDateTime, LEAD_GEN_API_INTERFACE, computeInterfaceReadiness, getAllBuildTemplates, getLeadGenStageCatalog, formatDate, formatRelativeTime, getResourcesForSystem, ontologyGraphNodeId, parseOntologyId, getAllProspectingStages, getAllPipelines, getAllProjectStatuses, OAUTH_FLOW_TIMEOUT, devOnlyFor, requiresAdminFor, topLevel, parentOf, ancestorsOf, childrenOf, findById, findByPath, getSystemAncestors, resolveSystemConfig, defaultPathFor } from './chunk-I7BZVVVU.js';
16
16
  import { getTimeRangeLabel, getTimeRangeDates, formatBucketTime, REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, debounce } from './chunk-Y6I3IC45.js';
17
17
  import { ResourceStatusColors, toWorkflowLogMessages } from './chunk-6SSQGWK7.js';
@@ -22,7 +22,7 @@ import { useAuthContext } from './chunk-BRJ3QZ4E.js';
22
22
  import { createContext, forwardRef, lazy, memo, useEffect, useRef, createElement, useContext, useLayoutEffect, useMemo, useState, cloneElement, useCallback, useId, Fragment as Fragment$1, Component, useDeferredValue, useEffectEvent, Suspense } from 'react';
23
23
  import { useQueryClient, useMutation, useQuery, QueryClientProvider, useQueries, QueryClient } from '@tanstack/react-query';
24
24
  import { z } from 'zod';
25
- import { IconPlayerPlay, IconPlayerStop, IconArrowsSplit, IconSquare, IconBrain, IconFileText, IconLayoutSidebarLeftExpand, IconLayoutSidebarLeftCollapse, IconUser, IconLogout, IconChevronRight, IconLayoutGrid, IconColumns, IconFileInvoice, IconMail, IconSend, IconClock, IconArrowUp, IconMessageCircle, IconRocket, IconEye, IconEdit, IconAlertTriangle, IconRefresh, IconX, IconCheck, IconShieldLock, IconActivity, IconTopologyStar3, IconApps, IconBriefcase, IconBuilding, IconBolt, IconSearch, IconChartBar, IconUsers, IconInfoCircle, IconMessagePlus, IconDatabase, IconGitBranch, IconDashboard, IconBuildingStore, IconPlug, IconTargetArrow, IconBook, IconArchive, IconSettings, IconTool, IconCalendar, IconNotes, IconChecklist, IconFlag, IconList, IconAddressBook, IconTarget, IconCode, IconLock, IconShieldOff, IconChevronUp, IconChevronDown, IconSelector, IconTrash, IconMinus, IconTrendingUp, IconTrendingDown, IconAlertCircle, IconBan, IconInbox, IconHeartHandshake, IconUserOff, IconMailForward, IconBell, IconCalendarEvent, IconCalendarCancel, IconMessageReply, IconCircleCheck, IconCreditCard, IconArrowRight, IconPlus, IconDownload, IconChartLine, IconThumbDown, IconThumbUp, IconCircleX, IconFilterOff, IconArrowUpRight, IconExternalLink, IconChartPie, IconHeartbeat, IconCpu, IconCash, IconExclamationCircle, IconBug, IconChecks, IconCircle, IconCircleFilled, IconMoonStars, IconSun, IconFocus2, IconClockHour4, IconVersions, IconNetwork, IconSitemap, IconPencil, IconKey, IconExclamationMark, IconCopy, IconPower, IconTag, IconWebhook, IconReload, IconTerminal2, IconMessage, IconArrowLeft, IconCalendarRepeat, IconCalendarTime, IconRobot, IconDotsVertical, IconPlayerPause, IconCalendarDue, IconCalendarStats, IconCalendarOff, IconListCheck, IconFilter, IconCategory, IconHistory, IconCurrencyDollar, IconTrophy, IconMessages, IconRestore, IconListDetails, IconLayoutDashboard, IconBuildingFactory2, IconFileDescription, IconRoute, IconHandStop, IconAdjustmentsHorizontal, IconCircleDashed, IconFolders, IconBraces, IconTimeline, IconNote, IconPalette, IconSparkles, IconStar, IconUserCog, IconUsersGroup, IconBrandDropbox, IconBrandGoogleDrive, IconClockExclamation, IconArrowDown, IconUserX, IconUserCheck, IconFileOff, IconActivityHeartbeat, IconClockPause, IconArrowsMaximize, IconShare2, IconFolder, IconCheckbox, IconPhone, IconStarFilled, IconWand, IconScript, IconPlugConnected, IconCircleCheckFilled } from '@tabler/icons-react';
25
+ import { IconPlayerPlay, IconPlayerStop, IconArrowsSplit, IconSquare, IconLayoutSidebarLeftExpand, IconLayoutSidebarLeftCollapse, IconUser, IconLogout, IconChevronRight, IconLayoutGrid, IconColumns, IconFileInvoice, IconMail, IconSend, IconFileText, IconClock, IconArrowUp, IconMessageCircle, IconRocket, IconEye, IconEdit, IconAlertTriangle, IconRefresh, IconX, IconCheck, IconShieldLock, IconActivity, IconTopologyStar3, IconApps, IconBriefcase, IconBuilding, IconBolt, IconSearch, IconChartBar, IconUsers, IconInfoCircle, IconMessagePlus, IconDatabase, IconGitBranch, IconDashboard, IconBuildingStore, IconPlug, IconBrain, IconTargetArrow, IconBook, IconArchive, IconSettings, IconTool, IconCalendar, IconNotes, IconChecklist, IconFlag, IconList, IconAddressBook, IconTarget, IconCode, IconLock, IconShieldOff, IconChevronUp, IconChevronDown, IconSelector, IconTrash, IconMinus, IconTrendingUp, IconTrendingDown, IconAlertCircle, IconBan, IconInbox, IconHeartHandshake, IconUserOff, IconMailForward, IconBell, IconCalendarEvent, IconCalendarCancel, IconMessageReply, IconCircleCheck, IconCreditCard, IconArrowRight, IconPlus, IconDownload, IconChartLine, IconThumbDown, IconThumbUp, IconCircleX, IconFilterOff, IconArrowUpRight, IconExternalLink, IconChartPie, IconHeartbeat, IconCpu, IconCash, IconExclamationCircle, IconBug, IconChecks, IconCircle, IconCircleFilled, IconMoonStars, IconSun, IconFocus2, IconClockHour4, IconVersions, IconSitemap, IconPencil, IconKey, IconExclamationMark, IconCopy, IconPower, IconTag, IconWebhook, IconReload, IconTerminal2, IconMessage, IconArrowLeft, IconCalendarRepeat, IconCalendarTime, IconRobot, IconDotsVertical, IconPlayerPause, IconCalendarDue, IconCalendarStats, IconCalendarOff, IconListCheck, IconFilter, IconCategory, IconHistory, IconCurrencyDollar, IconTrophy, IconMessages, IconRestore, IconListDetails, IconLayoutDashboard, IconBuildingFactory2, IconFileDescription, IconRoute, IconHandStop, IconAdjustmentsHorizontal, IconCircleDashed, IconFolders, IconBraces, IconTimeline, IconNote, IconPalette, IconSparkles, IconStar, IconUserCog, IconUsersGroup, IconBrandDropbox, IconBrandGoogleDrive, IconClockExclamation, IconArrowDown, IconUserX, IconUserCheck, IconFileOff, IconActivityHeartbeat, IconClockPause, IconArrowsMaximize, IconShare2, IconFolder, IconCheckbox, IconPhone, IconStarFilled, IconWand, IconScript, IconPlugConnected, IconCircleCheckFilled } from '@tabler/icons-react';
26
26
  import * as runtime from 'react/jsx-runtime';
27
27
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
28
28
  import { createUseExternalEvents, Collapse, Paper, Stack, Text, Group, Badge, Box, HoverCard, UnstyledButton, Tooltip, ScrollArea, Menu, Avatar, useComputedColorScheme, ThemeIcon, Center, Card, Title, Checkbox, Modal, TextInput, Textarea, Loader, Alert, Button, Space, Table, Select, Code, Grid, Timeline, NumberFormatter, SimpleGrid, SegmentedControl, ActionIcon, Switch, Pagination, mergeThemeOverrides, MantineProvider, Divider, Popover, Indicator, Container, useMantineColorScheme, CopyButton, PasswordInput, Anchor, useMantineTheme, RangeSlider, Progress, Tabs, Breadcrumbs as Breadcrumbs$1, NumberInput, ColorSwatch, RingProgress, LoadingOverlay, Accordion, MultiSelect, useTree, Tree, Radio, Pill, Drawer, Chip, JsonInput, TagsInput, List } from '@mantine/core';
@@ -42,7 +42,6 @@ import { create } from 'zustand';
42
42
  import { persist, createJSONStorage } from 'zustand/middleware';
43
43
  import { Position, Handle, getSmoothStepPath, BaseEdge as BaseEdge$1, EdgeLabelRenderer, Panel, useReactFlow, Controls, ReactFlowProvider, ReactFlow } from '@xyflow/react';
44
44
  import '@xyflow/react/dist/style.css';
45
- import dagre from '@dagrejs/dagre';
46
45
  import { zod4Resolver } from 'mantine-form-zod-resolver';
47
46
  import { Link, RichTextEditor as RichTextEditor$1 } from '@mantine/tiptap';
48
47
  import { useEditor } from '@tiptap/react';
@@ -152,6 +151,18 @@ var MEMBERSHIP_STATUS_COLORS = {
152
151
  active: "green",
153
152
  inactive: "gray"
154
153
  };
154
+ var PROVISIONING_STATE_DISPLAY = {
155
+ pre_provisioned: {
156
+ label: "Invited",
157
+ color: "orange",
158
+ description: "Invited but signup is not complete. The membership exists here; no WorkOS account is linked to it yet."
159
+ },
160
+ workos_only: {
161
+ label: "Sync gap",
162
+ color: "red",
163
+ description: "WorkOS has this membership but our database has no row for it, so it is not included in the member count. Remove and re-add the member to restore the record."
164
+ }
165
+ };
155
166
  var MembershipRoleSchema = z.string().min(1).max(64);
156
167
  var MembershipStatusSchema = z.enum(["active", "inactive"]);
157
168
  var MembershipIdParamSchema = z.object({
@@ -4556,15 +4567,17 @@ var CustomModal = ({ children, opened, onClose, loading, style, size }) => {
4556
4567
  );
4557
4568
  };
4558
4569
  function useCreateOrgRole() {
4559
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
4570
+ const { apiRequest } = useElevasisServices();
4571
+ const organization = useContext(OrganizationContext);
4572
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
4560
4573
  const queryClient = useQueryClient();
4561
4574
  return useMutation({
4562
- mutationFn: (input) => apiRequest(`/organizations/${workOSOrganizationId}/roles`, {
4575
+ mutationFn: (input) => apiRequest(`/organizations/${orgId}/roles`, {
4563
4576
  method: "POST",
4564
4577
  body: JSON.stringify(input)
4565
4578
  }),
4566
4579
  onSettled: () => {
4567
- queryClient.invalidateQueries({ queryKey: ["org-roles", workOSOrganizationId] });
4580
+ queryClient.invalidateQueries({ queryKey: ["org-roles", orgId] });
4568
4581
  }
4569
4582
  });
4570
4583
  }
@@ -5998,9 +6011,34 @@ function useStableAccessToken() {
5998
6011
  return getAccessTokenRef.current();
5999
6012
  }, []);
6000
6013
  }
6014
+
6015
+ // src/organization/context/invalidate-org-scoped.ts
6016
+ function invalidateOrgScopedQueries(queryClient, orgIds) {
6017
+ const ids = new Set(orgIds.filter((id) => !!id));
6018
+ if (ids.size === 0) return;
6019
+ void queryClient.invalidateQueries({
6020
+ predicate: (query) => queryKeyReferencesOrg(query.queryKey, ids)
6021
+ });
6022
+ }
6023
+ function queryKeyReferencesOrg(queryKey, orgIds) {
6024
+ return queryKey.some((segment) => segmentReferencesOrg(segment, orgIds));
6025
+ }
6026
+ function segmentReferencesOrg(segment, orgIds) {
6027
+ if (typeof segment === "string") return orgIds.has(segment);
6028
+ if (Array.isArray(segment)) return segment.some((value) => typeof value === "string" && orgIds.has(value));
6029
+ if (segment && typeof segment === "object") {
6030
+ return Object.values(segment).some((value) => typeof value === "string" && orgIds.has(value));
6031
+ }
6032
+ return false;
6033
+ }
6034
+
6035
+ // src/auth/hooks/useSessionCheck.ts
6001
6036
  function useSessionCheck() {
6002
6037
  const { user } = useAuthContext();
6003
6038
  const queryClient = useQueryClient();
6039
+ const organization = useContext(OrganizationContext);
6040
+ const currentWorkOSOrganizationId = organization?.currentWorkOSOrganizationId ?? null;
6041
+ const currentSupabaseOrganizationId = organization?.currentSupabaseOrganizationId ?? null;
6004
6042
  const isCheckingRef = useRef(false);
6005
6043
  const hadUserRef = useRef(false);
6006
6044
  if (user) {
@@ -6019,7 +6057,7 @@ function useSessionCheck() {
6019
6057
  }
6020
6058
  if (user) {
6021
6059
  await queryClient.cancelQueries();
6022
- queryClient.invalidateQueries();
6060
+ invalidateOrgScopedQueries(queryClient, [currentWorkOSOrganizationId, currentSupabaseOrganizationId]);
6023
6061
  }
6024
6062
  } finally {
6025
6063
  isCheckingRef.current = false;
@@ -6031,21 +6069,43 @@ function useSessionCheck() {
6031
6069
  document.removeEventListener("visibilitychange", handleVisibilityChange);
6032
6070
  window.removeEventListener("focus", handleVisibilityChange);
6033
6071
  };
6034
- }, [user, queryClient]);
6072
+ }, [user, queryClient, currentWorkOSOrganizationId, currentSupabaseOrganizationId]);
6073
+ }
6074
+
6075
+ // src/auth/guards/computeProtectedRouteGate.ts
6076
+ var DEFAULT_WAIT_FOR_ORGANIZATION = true;
6077
+ function computeProtectedRouteGate({
6078
+ isInitializing,
6079
+ userReady,
6080
+ allReady,
6081
+ error,
6082
+ waitForOrganization
6083
+ }) {
6084
+ const unauthenticated = !isInitializing && !userReady && error?.layer !== "profile";
6085
+ const blockingError = !isInitializing && !!error && error.layer !== "organization";
6086
+ const waitingForOrg = !isInitializing && waitForOrganization && !allReady && error?.layer !== "organization";
6087
+ const showFallback = isInitializing || !blockingError && (unauthenticated || waitingForOrg);
6088
+ return { unauthenticated, blockingError, showFallback };
6035
6089
  }
6036
6090
  function ProtectedRoute({
6037
6091
  children,
6038
6092
  redirectTo = "/login",
6039
6093
  fallback = null,
6040
6094
  errorFallback,
6041
- waitForOrganization = true
6095
+ waitForOrganization = DEFAULT_WAIT_FOR_ORGANIZATION
6042
6096
  }) {
6043
6097
  const { userReady, allReady, isInitializing, error, retry } = useInitialization();
6044
6098
  const { signIn, canRecover } = useAuthContext();
6045
6099
  const navigate = useNavigate();
6046
6100
  const location = useLocation();
6047
6101
  const hasRedirected = useRef(false);
6048
- const unauthenticated = !isInitializing && !userReady && error?.layer !== "profile";
6102
+ const { unauthenticated, blockingError, showFallback } = computeProtectedRouteGate({
6103
+ isInitializing,
6104
+ userReady,
6105
+ allReady,
6106
+ error,
6107
+ waitForOrganization
6108
+ });
6049
6109
  useEffect(() => {
6050
6110
  if (unauthenticated && !hasRedirected.current) {
6051
6111
  hasRedirected.current = true;
@@ -6061,19 +6121,10 @@ function ProtectedRoute({
6061
6121
  }
6062
6122
  }
6063
6123
  }, [unauthenticated, signIn, canRecover, navigate, redirectTo, location]);
6064
- if (isInitializing) {
6065
- return /* @__PURE__ */ jsx(Fragment, { children: fallback });
6124
+ if (blockingError) {
6125
+ return errorFallback ? /* @__PURE__ */ jsx(Fragment, { children: errorFallback(error, retry) }) : null;
6066
6126
  }
6067
- if (error && error.layer !== "organization") {
6068
- if (errorFallback) {
6069
- return /* @__PURE__ */ jsx(Fragment, { children: errorFallback(error, retry) });
6070
- }
6071
- return null;
6072
- }
6073
- if (unauthenticated) {
6074
- return /* @__PURE__ */ jsx(Fragment, { children: fallback });
6075
- }
6076
- if (waitForOrganization && !allReady && error?.layer !== "organization") {
6127
+ if (showFallback) {
6077
6128
  return /* @__PURE__ */ jsx(Fragment, { children: fallback });
6078
6129
  }
6079
6130
  return /* @__PURE__ */ jsx(Fragment, { children });
@@ -8741,15 +8792,36 @@ function OrganizationProvider({ apiRequest, children }) {
8741
8792
  if (workosOrgId === currentWorkOSOrganizationId) return;
8742
8793
  const target = memberships.find((m) => m.organization?.workos_org_id === workosOrgId);
8743
8794
  if (!target) return;
8795
+ const previousWorkOSOrgId = currentWorkOSOrganizationId;
8796
+ const previousSupabaseOrgId = currentSupabaseOrganizationId;
8744
8797
  applyMembership(target);
8745
- void queryClient.invalidateQueries();
8746
- }, [workosOrgId, currentWorkOSOrganizationId, memberships, applyMembership, queryClient]);
8798
+ invalidateOrgScopedQueries(queryClient, [
8799
+ previousWorkOSOrgId,
8800
+ previousSupabaseOrgId,
8801
+ target.organization?.workos_org_id,
8802
+ target.organizationId
8803
+ ]);
8804
+ }, [
8805
+ workosOrgId,
8806
+ currentWorkOSOrganizationId,
8807
+ currentSupabaseOrganizationId,
8808
+ memberships,
8809
+ applyMembership,
8810
+ queryClient
8811
+ ]);
8747
8812
  const switchOrganization = useCallback(
8748
8813
  (workosOrgId2, options) => {
8749
8814
  const target = memberships.find((m) => m.organization?.workos_org_id === workosOrgId2);
8750
8815
  if (!target) return;
8816
+ const previousWorkOSOrgId = currentWorkOSOrganizationId;
8817
+ const previousSupabaseOrgId = currentSupabaseOrganizationId;
8751
8818
  applyMembership(target);
8752
- void queryClient.invalidateQueries();
8819
+ invalidateOrgScopedQueries(queryClient, [
8820
+ previousWorkOSOrgId,
8821
+ previousSupabaseOrgId,
8822
+ target.organization?.workos_org_id,
8823
+ target.organizationId
8824
+ ]);
8753
8825
  if (options?.persist !== false) {
8754
8826
  void apiRequest("/users/me", {
8755
8827
  method: "PATCH",
@@ -8760,7 +8832,7 @@ function OrganizationProvider({ apiRequest, children }) {
8760
8832
  });
8761
8833
  }
8762
8834
  },
8763
- [memberships, applyMembership, queryClient, apiRequest]
8835
+ [memberships, applyMembership, queryClient, apiRequest, currentWorkOSOrganizationId, currentSupabaseOrganizationId]
8764
8836
  );
8765
8837
  const retry = useCallback(async () => {
8766
8838
  hasInitializedRef.current = false;
@@ -8893,7 +8965,10 @@ function OrganizationSwitcher({
8893
8965
  )
8894
8966
  ] });
8895
8967
  }
8896
- function OrganizationSwitcherConnected() {
8968
+ function OrganizationSwitcherConnected({
8969
+ isLoading: extraLoading = false,
8970
+ onSwitched
8971
+ } = {}) {
8897
8972
  const { switchToOrganization } = useAuth();
8898
8973
  const { currentMembership, memberships, isInitializing, isOrgRefreshing, switchOrganization } = useOrganization();
8899
8974
  return /* @__PURE__ */ jsx(
@@ -8901,10 +8976,11 @@ function OrganizationSwitcherConnected() {
8901
8976
  {
8902
8977
  currentOrganization: currentMembership?.organization,
8903
8978
  memberships,
8904
- isLoading: isInitializing || isOrgRefreshing,
8979
+ isLoading: extraLoading || isInitializing || isOrgRefreshing,
8905
8980
  onSwitch: async (workosOrgId) => {
8906
8981
  await switchToOrganization({ organizationId: workosOrgId });
8907
8982
  switchOrganization(workosOrgId);
8983
+ onSwitched?.(workosOrgId);
8908
8984
  }
8909
8985
  }
8910
8986
  );
@@ -13138,42 +13214,11 @@ function useDeactivateMembership() {
13138
13214
  const membershipService = new OrganizationMembershipService(apiRequest);
13139
13215
  return await membershipService.deactivateMembership(membershipId);
13140
13216
  },
13141
- onMutate: async (variables) => {
13142
- await queryClient.cancelQueries({ queryKey: ["memberships"] });
13143
- const previousData = queryClient.getQueryData(["memberships"]);
13144
- if (variables.userId) {
13145
- queryClient.setQueryData(
13146
- ["memberships", "user", variables.userId],
13147
- (old) => {
13148
- if (!old) return old;
13149
- return old.map(
13150
- (membership) => membership.id === variables.membershipId ? { ...membership, status: "inactive", updatedAt: (/* @__PURE__ */ new Date()).toISOString() } : membership
13151
- );
13152
- }
13153
- );
13154
- }
13155
- if (variables.organizationId) {
13156
- queryClient.setQueryData(
13157
- ["memberships", "organization", variables.organizationId],
13158
- (old) => {
13159
- if (!old) return old;
13160
- return old.map(
13161
- (membership) => membership.id === variables.membershipId ? { ...membership, status: "inactive", updatedAt: (/* @__PURE__ */ new Date()).toISOString() } : membership
13162
- );
13163
- }
13164
- );
13165
- }
13166
- return { previousData };
13167
- },
13168
- onError: (error, _variables, context) => {
13169
- if (context?.previousData) {
13170
- queryClient.setQueryData(["memberships"], context.previousData);
13171
- }
13217
+ onError: (error) => {
13172
13218
  adapter.apiError(error);
13173
13219
  },
13174
- onSuccess: () => {
13175
- queryClient.invalidateQueries({ queryKey: ["memberships"] });
13176
- },
13220
+ // Fires on both success and failure. A prior `onSuccess` invalidated the
13221
+ // same key redundantly.
13177
13222
  onSettled: () => {
13178
13223
  queryClient.invalidateQueries({ queryKey: ["memberships"] });
13179
13224
  }
@@ -13188,50 +13233,18 @@ function useReactivateMembership() {
13188
13233
  const membershipService = new OrganizationMembershipService(apiRequest);
13189
13234
  return await membershipService.reactivateMembership(membershipId);
13190
13235
  },
13191
- onMutate: async (variables) => {
13192
- await queryClient.cancelQueries({ queryKey: ["memberships"] });
13193
- const previousData = queryClient.getQueryData(["memberships"]);
13194
- if (variables.userId) {
13195
- queryClient.setQueryData(
13196
- ["memberships", "user", variables.userId],
13197
- (old) => {
13198
- if (!old) return old;
13199
- return old.map(
13200
- (membership) => membership.id === variables.membershipId ? { ...membership, status: "active", updatedAt: (/* @__PURE__ */ new Date()).toISOString() } : membership
13201
- );
13202
- }
13203
- );
13204
- }
13205
- if (variables.organizationId) {
13206
- queryClient.setQueryData(
13207
- ["memberships", "organization", variables.organizationId],
13208
- (old) => {
13209
- if (!old) return old;
13210
- return old.map(
13211
- (membership) => membership.id === variables.membershipId ? { ...membership, status: "active", updatedAt: (/* @__PURE__ */ new Date()).toISOString() } : membership
13212
- );
13213
- }
13214
- );
13215
- }
13216
- return { previousData };
13217
- },
13218
- onError: (error, _variables, context) => {
13219
- if (context?.previousData) {
13220
- queryClient.setQueryData(["memberships"], context.previousData);
13221
- }
13236
+ onError: (error) => {
13222
13237
  adapter.apiError(error);
13223
13238
  },
13224
- onSuccess: () => {
13225
- queryClient.invalidateQueries({ queryKey: ["memberships"] });
13226
- },
13227
13239
  onSettled: () => {
13228
13240
  queryClient.invalidateQueries({ queryKey: ["memberships"] });
13229
13241
  }
13230
13242
  });
13231
13243
  }
13232
13244
  function useOrgRoles(orgId) {
13233
- const { apiRequest, workOSOrganizationId, isReady } = useElevasisServices();
13234
- const targetOrgId = orgId ?? workOSOrganizationId;
13245
+ const { apiRequest, isReady } = useElevasisServices();
13246
+ const organization = useContext(OrganizationContext);
13247
+ const targetOrgId = orgId ?? organization?.currentSupabaseOrganizationId ?? void 0;
13235
13248
  return useQuery({
13236
13249
  queryKey: ["org-roles", targetOrgId],
13237
13250
  queryFn: () => apiRequest(`/organizations/${targetOrgId}/roles`),
@@ -13240,33 +13253,39 @@ function useOrgRoles(orgId) {
13240
13253
  });
13241
13254
  }
13242
13255
  function useUpdateOrgRole() {
13243
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
13256
+ const { apiRequest } = useElevasisServices();
13257
+ const organization = useContext(OrganizationContext);
13258
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
13244
13259
  const queryClient = useQueryClient();
13245
13260
  return useMutation({
13246
- mutationFn: ({ roleId, input }) => apiRequest(`/organizations/${workOSOrganizationId}/roles/${roleId}`, {
13261
+ mutationFn: ({ roleId, input }) => apiRequest(`/organizations/${orgId}/roles/${roleId}`, {
13247
13262
  method: "PATCH",
13248
13263
  body: JSON.stringify(input)
13249
13264
  }),
13250
13265
  onSettled: (_data, _error, { roleId }) => {
13251
- queryClient.invalidateQueries({ queryKey: ["org-roles", workOSOrganizationId] });
13252
- queryClient.invalidateQueries({ queryKey: ["org-role", workOSOrganizationId, roleId] });
13266
+ queryClient.invalidateQueries({ queryKey: ["org-roles", orgId] });
13267
+ queryClient.invalidateQueries({ queryKey: ["org-role", orgId, roleId] });
13253
13268
  }
13254
13269
  });
13255
13270
  }
13256
13271
  function useDeleteOrgRole() {
13257
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
13272
+ const { apiRequest } = useElevasisServices();
13273
+ const organization = useContext(OrganizationContext);
13274
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
13258
13275
  const queryClient = useQueryClient();
13259
13276
  return useMutation({
13260
- mutationFn: (roleId) => apiRequest(`/organizations/${workOSOrganizationId}/roles/${roleId}`, {
13277
+ mutationFn: (roleId) => apiRequest(`/organizations/${orgId}/roles/${roleId}`, {
13261
13278
  method: "DELETE"
13262
13279
  }),
13263
13280
  onSettled: () => {
13264
- queryClient.invalidateQueries({ queryKey: ["org-roles", workOSOrganizationId] });
13281
+ queryClient.invalidateQueries({ queryKey: ["org-roles", orgId] });
13265
13282
  }
13266
13283
  });
13267
13284
  }
13268
13285
  function useAssignRole() {
13269
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
13286
+ const { apiRequest } = useElevasisServices();
13287
+ const organization = useContext(OrganizationContext);
13288
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
13270
13289
  const queryClient = useQueryClient();
13271
13290
  return useMutation({
13272
13291
  mutationFn: ({ membershipId, roleId }) => apiRequest(`/memberships/${membershipId}/roles`, {
@@ -13274,30 +13293,34 @@ function useAssignRole() {
13274
13293
  body: JSON.stringify({ roleId })
13275
13294
  }),
13276
13295
  onSettled: (_data, _error, { membershipId }) => {
13277
- queryClient.invalidateQueries({ queryKey: ["member-roles", workOSOrganizationId, membershipId] });
13278
- queryClient.invalidateQueries({ queryKey: ["organization-permissions", workOSOrganizationId] });
13279
- queryClient.invalidateQueries({ queryKey: ["org-roles", workOSOrganizationId] });
13296
+ queryClient.invalidateQueries({ queryKey: ["member-roles", orgId, membershipId] });
13297
+ queryClient.invalidateQueries({ queryKey: ["organization-permissions", orgId] });
13298
+ queryClient.invalidateQueries({ queryKey: ["org-roles", orgId] });
13280
13299
  }
13281
13300
  });
13282
13301
  }
13283
13302
  function useRevokeRole() {
13284
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
13303
+ const { apiRequest } = useElevasisServices();
13304
+ const organization = useContext(OrganizationContext);
13305
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
13285
13306
  const queryClient = useQueryClient();
13286
13307
  return useMutation({
13287
13308
  mutationFn: ({ membershipId, roleId }) => apiRequest(`/memberships/${membershipId}/roles/${roleId}`, {
13288
13309
  method: "DELETE"
13289
13310
  }),
13290
13311
  onSettled: (_data, _error, { membershipId }) => {
13291
- queryClient.invalidateQueries({ queryKey: ["member-roles", workOSOrganizationId, membershipId] });
13292
- queryClient.invalidateQueries({ queryKey: ["organization-permissions", workOSOrganizationId] });
13293
- queryClient.invalidateQueries({ queryKey: ["org-roles", workOSOrganizationId] });
13312
+ queryClient.invalidateQueries({ queryKey: ["member-roles", orgId, membershipId] });
13313
+ queryClient.invalidateQueries({ queryKey: ["organization-permissions", orgId] });
13314
+ queryClient.invalidateQueries({ queryKey: ["org-roles", orgId] });
13294
13315
  }
13295
13316
  });
13296
13317
  }
13297
13318
  function useEffectivePermissions(membershipId) {
13298
- const { apiRequest, workOSOrganizationId, isReady } = useElevasisServices();
13319
+ const { apiRequest, isReady } = useElevasisServices();
13320
+ const organization = useContext(OrganizationContext);
13321
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
13299
13322
  return useQuery({
13300
- queryKey: ["member-roles", workOSOrganizationId, membershipId],
13323
+ queryKey: ["member-roles", orgId, membershipId],
13301
13324
  queryFn: () => apiRequest(`/memberships/${membershipId}/effective-permissions`),
13302
13325
  enabled: isReady && !!membershipId,
13303
13326
  staleTime: STALE_TIME_DEFAULT
@@ -13590,7 +13613,7 @@ function useExecutionLogsFilters(_timeRange) {
13590
13613
  return { filters, updateFilter, resetFilters };
13591
13614
  }
13592
13615
  function useOrganizationMembers(organizationId, params) {
13593
- const { apiRequest } = useElevasisServices();
13616
+ const { apiRequest, isReady } = useElevasisServices();
13594
13617
  return useQuery({
13595
13618
  queryKey: ["organization-members", organizationId, params],
13596
13619
  queryFn: async () => {
@@ -13621,7 +13644,7 @@ function useOrganizationMembers(organizationId, params) {
13621
13644
  updatedAt: membership.updatedAt
13622
13645
  }));
13623
13646
  },
13624
- enabled: !!organizationId,
13647
+ enabled: isReady && !!organizationId,
13625
13648
  staleTime: STALE_TIME_MONITORING,
13626
13649
  gcTime: GC_TIME_SHORT,
13627
13650
  refetchOnWindowFocus: false
@@ -17259,209 +17282,6 @@ function ToolsListDisplay({ tools, compact = false, maxVisible = 0 }) {
17259
17282
  ] })
17260
17283
  ] });
17261
17284
  }
17262
- var NODE_WIDTH = 200;
17263
- var NODE_HEIGHT = 100;
17264
- var RANK_SEP = 80;
17265
- var NODE_SEP = 30;
17266
- function useNewKnowledgeMapLayout(knowledgeMap, agentName) {
17267
- return useMemo(() => {
17268
- if (!knowledgeMap || knowledgeMap.nodes.length === 0) {
17269
- return { nodes: [], edges: [] };
17270
- }
17271
- const agentNodeId = "__agent__";
17272
- const edges = knowledgeMap.nodes.map((node) => ({
17273
- id: `edge-${agentNodeId}-${node.id}`,
17274
- source: agentNodeId,
17275
- target: node.id,
17276
- type: "knowledgeMap",
17277
- data: {}
17278
- }));
17279
- const dagreGraph = new dagre.graphlib.Graph();
17280
- dagreGraph.setDefaultEdgeLabel(() => ({}));
17281
- dagreGraph.setGraph({
17282
- rankdir: "TB",
17283
- ranksep: RANK_SEP,
17284
- nodesep: NODE_SEP,
17285
- marginx: 40,
17286
- marginy: 40
17287
- });
17288
- dagreGraph.setNode(agentNodeId, { width: NODE_WIDTH, height: NODE_HEIGHT });
17289
- knowledgeMap.nodes.forEach((node) => {
17290
- dagreGraph.setNode(node.id, { width: NODE_WIDTH, height: NODE_HEIGHT });
17291
- });
17292
- edges.forEach((edge) => {
17293
- dagreGraph.setEdge(edge.source, edge.target);
17294
- });
17295
- dagre.layout(dagreGraph);
17296
- const agentDagreNode = dagreGraph.node(agentNodeId);
17297
- const agentNode = {
17298
- id: agentNodeId,
17299
- type: "knowledgeMap",
17300
- position: {
17301
- x: agentDagreNode.x - NODE_WIDTH / 2,
17302
- y: agentDagreNode.y - NODE_HEIGHT / 2
17303
- },
17304
- data: {
17305
- id: agentNodeId,
17306
- name: agentName,
17307
- description: "Agent with lazy-loading knowledge",
17308
- loaded: true,
17309
- hasPrompt: false,
17310
- isAgentNode: true
17311
- }
17312
- };
17313
- const knowledgeNodes = knowledgeMap.nodes.map((node) => {
17314
- const dagreNode = dagreGraph.node(node.id);
17315
- return {
17316
- id: node.id,
17317
- type: "knowledgeMap",
17318
- position: {
17319
- x: dagreNode.x - NODE_WIDTH / 2,
17320
- y: dagreNode.y - NODE_HEIGHT / 2
17321
- },
17322
- data: {
17323
- id: node.id,
17324
- name: node.id,
17325
- description: node.description,
17326
- loaded: node.loaded,
17327
- hasPrompt: node.hasPrompt,
17328
- isAgentNode: false
17329
- }
17330
- };
17331
- });
17332
- return { nodes: [agentNode, ...knowledgeNodes], edges };
17333
- }, [knowledgeMap, agentName]);
17334
- }
17335
- var NewKnowledgeMapNode = memo(function NewKnowledgeMapNode2({ data, selected }) {
17336
- const nodeColor = data.isAgentNode ? "violet" : data.loaded ? "teal" : "blue";
17337
- return /* @__PURE__ */ jsx(BaseNode, { color: nodeColor, selected, width: 200, handleDirection: "vertical", children: /* @__PURE__ */ jsxs(Stack, { gap: 6, children: [
17338
- /* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", children: [
17339
- data.isAgentNode ? /* @__PURE__ */ jsx(IconBrain, { size: 16, style: { flexShrink: 0 } }) : data.loaded ? /* @__PURE__ */ jsx(IconBrain, { size: 16, style: { flexShrink: 0 } }) : /* @__PURE__ */ jsx(IconBrain, { size: 16, style: { flexShrink: 0, opacity: 0.4 } }),
17340
- /* @__PURE__ */ jsx(Text, { size: "sm", fw: 500, truncate: true, style: { flex: 1, fontFamily: "var(--mantine-font-family-headings)" }, children: data.name })
17341
- ] }),
17342
- data.description && /* @__PURE__ */ jsx(Text, { size: "xs", c: "dimmed", lineClamp: 2, children: data.description }),
17343
- /* @__PURE__ */ jsx(Group, { gap: 4, children: data.isAgentNode ? /* @__PURE__ */ jsx(Badge, { size: "xs", variant: "light", children: "Root" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
17344
- /* @__PURE__ */ jsx(
17345
- Badge,
17346
- {
17347
- size: "xs",
17348
- variant: "light",
17349
- color: data.loaded ? "teal" : "gray",
17350
- leftSection: /* @__PURE__ */ jsx(IconBrain, { size: 10 }),
17351
- children: data.loaded ? "Loaded" : "Available"
17352
- }
17353
- ),
17354
- data.hasPrompt && /* @__PURE__ */ jsx(Badge, { size: "xs", variant: "light", color: "orange", leftSection: /* @__PURE__ */ jsx(IconFileText, { size: 10 }), children: "Prompt" })
17355
- ] }) })
17356
- ] }) });
17357
- });
17358
- var NewKnowledgeMapEdge = memo(function NewKnowledgeMapEdge2({
17359
- id,
17360
- sourceX,
17361
- sourceY,
17362
- targetX,
17363
- targetY,
17364
- sourcePosition,
17365
- targetPosition,
17366
- selected,
17367
- data
17368
- }) {
17369
- const colors = useGraphTheme();
17370
- return /* @__PURE__ */ jsx(
17371
- BaseEdge,
17372
- {
17373
- id,
17374
- sourceX,
17375
- sourceY,
17376
- targetX,
17377
- targetY,
17378
- sourcePosition,
17379
- targetPosition,
17380
- color: colors.primary,
17381
- glowColor: colors.primaryGlow,
17382
- animated: false,
17383
- selected,
17384
- dimmed: data?.dimmed
17385
- }
17386
- );
17387
- });
17388
- var nodeTypes3 = {
17389
- knowledgeMap: NewKnowledgeMapNode
17390
- };
17391
- var edgeTypes3 = {
17392
- knowledgeMap: NewKnowledgeMapEdge
17393
- };
17394
- function NewKnowledgeMapGraphInner({ knowledgeMap, agentName, compact, fitViewTrigger }) {
17395
- const { nodes: layoutNodes, edges: layoutEdges } = useNewKnowledgeMapLayout(knowledgeMap, agentName);
17396
- const { nodes, edges, handleNodeMouseEnter, handleNodeMouseLeave } = useGraphHighlighting(layoutNodes, layoutEdges);
17397
- if (!knowledgeMap || knowledgeMap.nodes.length === 0) {
17398
- return /* @__PURE__ */ jsxs("div", { children: [
17399
- !compact && /* @__PURE__ */ jsx(Text, { size: "sm", fw: 600, mb: "xs", style: { fontFamily: "var(--mantine-font-family-headings)" }, children: "Knowledge Map" }),
17400
- /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", fs: "italic", children: "No knowledge nodes configured" })
17401
- ] });
17402
- }
17403
- const containerHeight = calculateGraphHeight({
17404
- itemCount: knowledgeMap.nodeCount,
17405
- minHeight: 250,
17406
- maxHeight: 450,
17407
- heightPerItem: 60
17408
- });
17409
- return /* @__PURE__ */ jsxs("div", { children: [
17410
- !compact && /* @__PURE__ */ jsxs(Group, { gap: "xs", mb: "xs", children: [
17411
- /* @__PURE__ */ jsx(Text, { size: "sm", fw: 600, style: { fontFamily: "var(--mantine-font-family-headings)" }, children: "Knowledge Map" }),
17412
- /* @__PURE__ */ jsxs(Badge, { variant: "light", size: "xs", children: [
17413
- knowledgeMap.nodeCount,
17414
- " ",
17415
- knowledgeMap.nodeCount === 1 ? "node" : "nodes"
17416
- ] })
17417
- ] }),
17418
- /* @__PURE__ */ jsx(
17419
- Box,
17420
- {
17421
- className: `elevasis-graph-root ${Graph_module_css_default.graphContainer}`,
17422
- style: {
17423
- width: "100%",
17424
- height: containerHeight,
17425
- border: "1px solid var(--color-border)",
17426
- borderRadius: "var(--mantine-radius-md)",
17427
- overflow: "hidden"
17428
- },
17429
- children: /* @__PURE__ */ jsxs(
17430
- ReactFlow,
17431
- {
17432
- nodes,
17433
- edges,
17434
- nodeTypes: nodeTypes3,
17435
- edgeTypes: edgeTypes3,
17436
- onNodeMouseEnter: handleNodeMouseEnter,
17437
- onNodeMouseLeave: handleNodeMouseLeave,
17438
- fitView: true,
17439
- fitViewOptions: { padding: 0.15 },
17440
- proOptions: { hideAttribution: true },
17441
- minZoom: GRAPH_CONSTANTS.MIN_ZOOM,
17442
- maxZoom: GRAPH_CONSTANTS.MAX_ZOOM,
17443
- nodesDraggable: false,
17444
- nodesConnectable: false,
17445
- elementsSelectable: true,
17446
- selectNodesOnDrag: false,
17447
- panOnDrag: true,
17448
- zoomOnScroll: true,
17449
- zoomOnPinch: true,
17450
- panOnScroll: false,
17451
- children: [
17452
- /* @__PURE__ */ jsx(GraphBackground, {}),
17453
- /* @__PURE__ */ jsx(GraphFitViewButton, { padding: 0.15, variant: "mantine", duration: 300 }),
17454
- /* @__PURE__ */ jsx(GraphFitViewHandler, { trigger: fitViewTrigger })
17455
- ]
17456
- }
17457
- )
17458
- }
17459
- )
17460
- ] });
17461
- }
17462
- function NewKnowledgeMapGraph(props) {
17463
- return /* @__PURE__ */ jsx(ReactFlowProvider, { children: /* @__PURE__ */ jsx(NewKnowledgeMapGraphInner, { ...props }) });
17464
- }
17465
17285
  function DefinitionSectionHeader({ expanded, onToggle, icon, title, count }) {
17466
17286
  return /* @__PURE__ */ jsxs(Group, { gap: 4, onClick: onToggle, style: { cursor: "pointer", userSelect: "none" }, wrap: "nowrap", children: [
17467
17287
  /* @__PURE__ */ jsx(
@@ -17488,8 +17308,6 @@ function DefinitionSectionHeader({ expanded, onToggle, icon, title, count }) {
17488
17308
  function AgentDefinitionDisplay({ agent, defaultExpanded = false }) {
17489
17309
  const [systemPromptExpanded, setSystemPromptExpanded] = useState(defaultExpanded);
17490
17310
  const [configExpanded, setConfigExpanded] = useState(defaultExpanded);
17491
- const [knowledgeMapExpanded, setKnowledgeMapExpanded] = useState(defaultExpanded);
17492
- const [knowledgeMapFitTrigger, setKnowledgeMapFitTrigger] = useState(0);
17493
17311
  const [toolsExpanded, setToolsExpanded] = useState(defaultExpanded);
17494
17312
  const [memoryPrefsExpanded, setMemoryPrefsExpanded] = useState(defaultExpanded);
17495
17313
  const hasConstraints = agent.config.constraints && Object.keys(agent.config.constraints).length > 0;
@@ -17587,36 +17405,6 @@ function AgentDefinitionDisplay({ agent, defaultExpanded = false }) {
17587
17405
  ),
17588
17406
  /* @__PURE__ */ jsx(Collapse, { in: systemPromptExpanded, children: /* @__PURE__ */ jsx(Paper, { p: "sm", mt: "xs", children: /* @__PURE__ */ jsx(StyledMarkdown, { children: agent.config.systemPrompt }) }) })
17589
17407
  ] }),
17590
- agent.knowledgeMap && agent.knowledgeMap.nodeCount > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
17591
- /* @__PURE__ */ jsx(Divider, {}),
17592
- /* @__PURE__ */ jsxs("div", { children: [
17593
- /* @__PURE__ */ jsx(
17594
- DefinitionSectionHeader,
17595
- {
17596
- expanded: knowledgeMapExpanded,
17597
- onToggle: () => {
17598
- const willExpand = !knowledgeMapExpanded;
17599
- setKnowledgeMapExpanded(willExpand);
17600
- if (willExpand) {
17601
- setKnowledgeMapFitTrigger((prev) => prev + 1);
17602
- }
17603
- },
17604
- icon: /* @__PURE__ */ jsx(IconNetwork, { size: 16, color: "var(--color-text-subtle)" }),
17605
- title: "Knowledge Map",
17606
- count: `${agent.knowledgeMap.nodeCount} ${agent.knowledgeMap.nodeCount === 1 ? "node" : "nodes"}`
17607
- }
17608
- ),
17609
- /* @__PURE__ */ jsx(Collapse, { in: knowledgeMapExpanded, children: /* @__PURE__ */ jsx("div", { style: { marginTop: "var(--mantine-spacing-xs)" }, children: /* @__PURE__ */ jsx(
17610
- NewKnowledgeMapGraph,
17611
- {
17612
- knowledgeMap: agent.knowledgeMap,
17613
- agentName: agent.config.name,
17614
- compact: true,
17615
- fitViewTrigger: knowledgeMapFitTrigger
17616
- }
17617
- ) }) })
17618
- ] })
17619
- ] }),
17620
17408
  /* @__PURE__ */ jsx(Divider, {}),
17621
17409
  /* @__PURE__ */ jsxs("div", { children: [
17622
17410
  /* @__PURE__ */ jsx(
@@ -19020,6 +18808,13 @@ function MembershipStatusBadge({ status, size = "sm", variant = "light" }) {
19020
18808
  };
19021
18809
  return /* @__PURE__ */ jsx(Badge, { color: MEMBERSHIP_STATUS_COLORS[status], size, variant, children: getStatusLabel(status) });
19022
18810
  }
18811
+ function ProvisioningStateBadge({ state, size = "sm", variant = "light" }) {
18812
+ if (!state || state === "linked") {
18813
+ return null;
18814
+ }
18815
+ const display = PROVISIONING_STATE_DISPLAY[state];
18816
+ return /* @__PURE__ */ jsx(Tooltip, { label: display.description, multiline: true, w: 280, children: /* @__PURE__ */ jsx(Badge, { color: display.color, size, variant, children: display.label }) });
18817
+ }
19023
18818
  function OrganizationMembershipsList({
19024
18819
  memberships,
19025
18820
  loading,
@@ -23378,7 +23173,7 @@ Advanced personalization doubles reply rates: ~18% vs ~9% for generic.
23378
23173
  icon: "playbook",
23379
23174
  title: "Lead-Gen Playbook",
23380
23175
  summary: "Empirical benchmarks, threshold guidance, provider economics, and codified learnings from 3 completed batches of the lead-gen pipeline.",
23381
- body: "## Performance Benchmarks\n\nPer-stage success rates across the 3 completed Orange County batches (vet-1, auto-1, home-1).\n\n### Stage 1: Scrape (Raw to Filtered)\n\n| Metric | vet-1 | auto-1 | home-1 | Benchmark |\n| --- | --- | --- | --- | --- |\n| Raw results | 480 | 800 | 1000 | -- |\n| Companies created | 393 | 566 | 701 | -- |\n| Active in DB | 322 | 428 | 640 | -- |\n\n### Stage 3: Company Qualification Rate\n\n| Metric | vet-1 | auto-1 | home-1 | Benchmark |\n| --- | --- | --- | --- | --- |\n| Qualified | 213 (76%) | 284 (79%) | 326 (60%) | 60-80% |\n| Disqualified | 66 (24%) | 74 (21%) | 222 (40%) | 20-40% |\n\n### Stage 5: Email Verification\n\nVALID rate: ~33-41% of discovered emails across batches. Target bounce rate \\<2%.\n\n## Model Selection\n\nUse Gemini Flash models for high-volume qualification steps (cost/quality balance). Use GPT for personalization where quality matters most.\n\n## Provider Economics\n\nTomba domain search provides the best cost-per-verified-contact for local SMBs. Dual-verify (Tomba + Mails.so) catches most false positives.\n\n## Pipeline Stages\n\n1. Scrape (Google Maps via Apify)\n2. LLM Extract (website crawl \xE2\u2020\u2019 structured data)\n3. Company Qualification (LLM ICP scoring)\n4. Email Discovery (Tomba domain search)\n5. Email Verification (Mails.so)\n6. Opening Line Generation (ist-personalization-workflow)\n7. Campaign Upload (ist-upload-contacts-workflow)",
23176
+ body: "## Performance Benchmarks\n\nPer-stage success rates across the 3 completed Orange County batches (vet-1, auto-1, home-1).\n\n### Stage 1: Scrape (Raw to Filtered)\n\n| Metric | vet-1 | auto-1 | home-1 | Benchmark |\n| --- | --- | --- | --- | --- |\n| Raw results | 480 | 800 | 1000 | -- |\n| Companies created | 393 | 566 | 701 | -- |\n| Active in DB | 322 | 428 | 640 | -- |\n\n### Stage 3: Company Qualification Rate\n\n| Metric | vet-1 | auto-1 | home-1 | Benchmark |\n| --- | --- | --- | --- | --- |\n| Qualified | 213 (76%) | 284 (79%) | 326 (60%) | 60-80% |\n| Disqualified | 66 (24%) | 74 (21%) | 222 (40%) | 20-40% |\n\n### Stage 5: Email Verification\n\nVALID rate: ~33-41% of discovered emails across batches. Target bounce rate \\<2%.\n\n## Model Selection\n\nAll lead-gen LLM steps run on claude-sonnet-5 (Anthropic) \u2014 qualification, extraction, and personalization alike. There is no separate cheap tier for high-volume steps.\n\n## Provider Economics\n\nTomba domain search provides the best cost-per-verified-contact for local SMBs. Dual-verify (Tomba + Mails.so) catches most false positives.\n\n## Pipeline Stages\n\n1. Scrape (Google Maps via Apify)\n2. LLM Extract (website crawl \xE2\u2020\u2019 structured data)\n3. Company Qualification (LLM ICP scoring)\n4. Email Discovery (Tomba domain search)\n5. Email Verification (Mails.so)\n6. Opening Line Generation (ist-personalization-workflow)\n7. Campaign Upload (ist-upload-contacts-workflow)",
23382
23177
  links: [{ nodeId: "system:sales.lead-gen" }],
23383
23178
  ownerIds: [],
23384
23179
  updatedAt: "2026-05-02"
@@ -23531,8 +23326,8 @@ Advanced personalization doubles reply rates: ~18% vs ~9% for generic.
23531
23326
  kind: "playbook",
23532
23327
  icon: "playbook",
23533
23328
  title: "Social Monitoring",
23534
- summary: "Automated Reddit monitoring pipeline \xE2\u20AC\u201D 4-step workflow (search, LLM score, LLM draft, store) with tiered subreddit scraping via Apify, Gemini-powered scoring and response drafting, and lead-gen optimized responses via the AlexElevasis account.",
23535
- body: "## Overview\n\nSocial monitoring surfaces Reddit posts where business owners discuss operational challenges, manual processes, and automation needs.\n\n```\nCron Trigger (3x/day: 16:00, 22:00, 04:00 UTC)\n \xE2\u2020\u2019 mnt-reddit-monitor-workflow (4-step pipeline)\n \xE2\u2020\u2019 Step 1: Search \xE2\u20AC\u201D 4 sequential Apify actors (one per tier)\n \xE2\u2020\u2019 Step 2: Score \xE2\u20AC\u201D Gemini Flash Lite (concurrency 5)\n \xE2\u2020\u2019 Step 3: Draft \xE2\u20AC\u201D Gemini Flash (high-score only)\n \xE2\u2020\u2019 Step 4: Report \xE2\u20AC\u201D Store to acq_social_posts, log breakdown\n \xE2\u2020\u2019 Command Center: /acquisition/monitoring\n```\n\n**Status:** Paused until further notice (2026-03-31). Pipeline technically validated but ROI is low without deep vertical expertise.\n\n## Velocity Batches\n\nSubreddits grouped by posting velocity, each with its own `maxPostsPerSource`.\n\n| Batch | Subs | Posts/Source | Example Subreddits |\n| --- | --- | --- | --- |\n| Medium Velocity | 2 | 5 | Accounting, Plumbing |\n| Buyer Low-Volume | 10 | 3 | CRM, EntrepreneurRideAlong, sweatystartup |\n| Trade Niche | 10 | 2 | electricians, Dentists, InsuranceAgent |\n| Decision Niche | 3 | 2 | logistics, FreightBrokers, healthIT |\n\n## Scoring\n\nPosts scored 0-100 by Gemini Flash Lite for business automation opportunity relevance. Posts scoring \\>= 60 get response drafts via Gemini Flash.\n\n## AlexElevasis Account\n\nAll responses posted via the AlexElevasis Reddit account. See Reddit Account strategy doc for warmup playbook and karma thresholds.",
23329
+ summary: "Automated Reddit monitoring pipeline \xE2\u20AC\u201D 4-step workflow (search, LLM score, LLM draft, store) with tiered subreddit scraping via Apify, claude-sonnet-5 scoring and response drafting, and lead-gen optimized responses via the AlexElevasis account.",
23330
+ body: "## Overview\n\nSocial monitoring surfaces Reddit posts where business owners discuss operational challenges, manual processes, and automation needs.\n\n```\nCron Trigger (3x/day: 16:00, 22:00, 04:00 UTC)\n \xE2\u2020\u2019 mnt-reddit-monitor-workflow (4-step pipeline)\n \xE2\u2020\u2019 Step 1: Search \xE2\u20AC\u201D 4 sequential Apify actors (one per tier)\n \xE2\u2020\u2019 Step 2: Score \xE2\u20AC\u201D claude-sonnet-5 (concurrency 5)\n \xE2\u2020\u2019 Step 3: Draft \xE2\u20AC\u201D claude-sonnet-5 (high-score only)\n \xE2\u2020\u2019 Step 4: Report \xE2\u20AC\u201D Store to acq_social_posts, log breakdown\n \xE2\u2020\u2019 Command Center: /acquisition/monitoring\n```\n\n**Status:** Paused until further notice (2026-03-31). Pipeline technically validated but ROI is low without deep vertical expertise.\n\n## Velocity Batches\n\nSubreddits grouped by posting velocity, each with its own `maxPostsPerSource`.\n\n| Batch | Subs | Posts/Source | Example Subreddits |\n| --- | --- | --- | --- |\n| Medium Velocity | 2 | 5 | Accounting, Plumbing |\n| Buyer Low-Volume | 10 | 3 | CRM, EntrepreneurRideAlong, sweatystartup |\n| Trade Niche | 10 | 2 | electricians, Dentists, InsuranceAgent |\n| Decision Niche | 3 | 2 | logistics, FreightBrokers, healthIT |\n\n## Scoring\n\nPosts scored 0-100 by claude-sonnet-5 for business automation opportunity relevance. Posts scoring \\>= 60 get response drafts via claude-sonnet-5.\n\n## AlexElevasis Account\n\nAll responses posted via the AlexElevasis Reddit account. See Reddit Account strategy doc for warmup playbook and karma thresholds.",
23536
23331
  ownerIds: [],
23537
23332
  updatedAt: "2026-05-02"
23538
23333
  },
@@ -23666,7 +23461,7 @@ Each stage desensitizes one fear at a time. Never skip ahead. The goal is consis
23666
23461
  icon: "reference",
23667
23462
  title: "Platform Systems Overview",
23668
23463
  summary: "Authoritative overview of the Elevasis AI Orchestration Platform systems -- what's built, what each system does, and how the pieces fit together",
23669
- body: "## Overview\n\nElevasis is a production AI orchestration platform that coordinates workflows, autonomous agents, and human approvals into a unified operating layer for SMBs. Everything described below is implemented and running in production.\n\n**Core Architecture:**\n\n| Layer | What It Does | Key Components |\n| --- | --- | --- |\n| **Execution** | Runs workflows and agents with schema validation | Workflow Engine, Agent Framework, Execution Runner |\n| **Control** | Human oversight, approvals, and decision capture | Command Queue (HITL), Dynamic Forms, Action System |\n| **Intelligence** | Autonomous reasoning, tool use, and memory management | ReAct Agents, Knowledge Map, Session Memory |\n| **Observability** | Real-time visibility into cost, performance, and health | Cost Tracking, Metrics, Activity Log, SSE Streaming |\n| **Platform** | Multi-tenancy, security, scheduling, integrations | Registry, RLS, Scheduler, Credential Vault, SDK |\n\n## Execution Engine\n\n### AI Workflows\n\nGraph-based workflow execution with schema-validated steps and conditional routing. Steps define explicit routing: linear, conditional (rule-based branching), or terminal. Context flows through the entire workflow.\n\n### Autonomous Agents\n\nProduction-grade ReAct-style agents with tool use, memory management, and security hardening.\n\n**LLM Provider Support:** OpenAI (GPT-5), Google (Gemini 3 Flash), Anthropic (Claude Sonnet 4.5), OpenRouter (GLM-5)\n\n## Human-in-the-Loop (HITL)\n\nThe Command Queue surfaces pending approvals as structured tasks. Admin reviews, approves or edits, and the workflow continues. Every critical decision \xE2\u20AC\u201D sending emails to prospects, updating customer records, publishing content \xE2\u20AC\u201D requires human approval.\n\n## Knowledge Map\n\nOrganizational knowledge loaded lazily into agent context. 80-95% token savings vs. always-loading full context. Nodes link to features, teams, and other nodes.\n\n## Integrations (13 active)\n\nAttio CRM, Cal.com, Instantly (cold email), Resend, Apify, Google Maps, Tomba, Mails.so, Supabase, Stripe, OpenAI, Google Gemini, Anthropic Claude.\n\n## SDK\n\nTypeScript-based resource development with local testing, validation, and deployment pipeline. External consumers define workflows and agents in their own repos and deploy via `elevasis-sdk deploy`.",
23464
+ body: "## Overview\n\nElevasis is a production AI orchestration platform that coordinates workflows, autonomous agents, and human approvals into a unified operating layer for SMBs. Everything described below is implemented and running in production.\n\n**Core Architecture:**\n\n| Layer | What It Does | Key Components |\n| --- | --- | --- |\n| **Execution** | Runs workflows and agents with schema validation | Workflow Engine, Agent Framework, Execution Runner |\n| **Control** | Human oversight, approvals, and decision capture | Command Queue (HITL), Dynamic Forms, Action System |\n| **Intelligence** | Autonomous reasoning, tool use, and memory management | ReAct Agents, Knowledge Map, Session Memory |\n| **Observability** | Real-time visibility into cost, performance, and health | Cost Tracking, Metrics, Activity Log, SSE Streaming |\n| **Platform** | Multi-tenancy, security, scheduling, integrations | Registry, RLS, Scheduler, Credential Vault, SDK |\n\n## Execution Engine\n\n### AI Workflows\n\nGraph-based workflow execution with schema-validated steps and conditional routing. Steps define explicit routing: linear, conditional (rule-based branching), or terminal. Context flows through the entire workflow.\n\n### Autonomous Agents\n\nProduction-grade ReAct-style agents with tool use, memory management, and security hardening.\n\n**LLM Provider Support:** Anthropic (claude-sonnet-5), OpenAI (GPT-5), OpenRouter (GLM-5)\n\n## Human-in-the-Loop (HITL)\n\nThe Command Queue surfaces pending approvals as structured tasks. Admin reviews, approves or edits, and the workflow continues. Every critical decision \xE2\u20AC\u201D sending emails to prospects, updating customer records, publishing content \xE2\u20AC\u201D requires human approval.\n\n## Integrations (12 active)\n\nAttio CRM, Cal.com, Instantly (cold email), Resend, Apify, Google Maps, Tomba, Mails.so, Supabase, Stripe, OpenAI, Anthropic Claude.\n\n## SDK\n\nTypeScript-based resource development with local testing, validation, and deployment pipeline. External consumers define workflows and agents in their own repos and deploy via `elevasis-sdk deploy`.",
23670
23465
  links: [{ nodeId: "system:platform.projects" }],
23671
23466
  ownerIds: [],
23672
23467
  updatedAt: "2026-05-02"
@@ -27090,6 +26885,79 @@ var platformResourceDescriptors = defineResources(
27090
26885
  { kind: "api-endpoint", method: "POST", path: "/api/external/sessions" },
27091
26886
  { kind: "api-endpoint", method: "POST", path: "/api/external/sessions/:sessionId/turns" }
27092
26887
  ]
26888
+ },
26889
+ {
26890
+ id: "framework-probe-agent",
26891
+ order: 10020,
26892
+ kind: "agent",
26893
+ systemPath: "platform",
26894
+ title: "Framework Probe Agent",
26895
+ description: "Tool-bearing session agent used to measure agent-loop behavior \u2014 context carry across iterations, tool result handling, and schema compilation. Strict-clean control for the framework-probe-loose comparison.",
26896
+ ownerRoleId: getPlatformOwnerRoleId("platform"),
26897
+ actsAsRoleId: getPlatformOwnerRoleId("platform"),
26898
+ status: "active",
26899
+ codeRefs: [
26900
+ {
26901
+ path: "packages/elevasis-operations/src/diagnostics/framework-probe-agent.ts",
26902
+ role: "entrypoint",
26903
+ symbol: "frameworkProbeAgent"
26904
+ },
26905
+ {
26906
+ path: "packages/elevasis-operations/src/diagnostics/index.ts",
26907
+ role: "config",
26908
+ symbol: "agents"
26909
+ },
26910
+ {
26911
+ path: "packages/elevasis-operations/src/index.ts",
26912
+ role: "config",
26913
+ symbol: "deploymentSpec"
26914
+ }
26915
+ ],
26916
+ agentKind: "utility",
26917
+ sessionCapable: true,
26918
+ invocations: [
26919
+ { kind: "api-endpoint", method: "POST", path: "/api/external/sessions" },
26920
+ { kind: "api-endpoint", method: "POST", path: "/api/external/sessions/:sessionId/turns" }
26921
+ ]
26922
+ },
26923
+ // `framework-probe-loose-agent` (order 10021) was retired here. It carried one tool with a
26924
+ // `z.record(...)` field so the cost of a single un-compilable field could be measured rather
26925
+ // than argued. Wave O's `validateAgentGrammar` now rejects exactly that shape at deploy, by
26926
+ // tool and field name, so the agent cannot deploy -- which is the gate working, not a
26927
+ // regression. Order 10021 is left unused so the surrounding probe agents keep their numbers.
26928
+ {
26929
+ id: "framework-probe-truncate-agent",
26930
+ order: 10022,
26931
+ kind: "agent",
26932
+ systemPath: "platform",
26933
+ title: "Framework Probe Agent (truncation)",
26934
+ description: "Copy of framework-probe-agent on Haiku 4.5 with a deliberately small output cap, so the truncated-response path can be exercised. Also the only probe whose request carries an explicit temperature.",
26935
+ ownerRoleId: getPlatformOwnerRoleId("platform"),
26936
+ actsAsRoleId: getPlatformOwnerRoleId("platform"),
26937
+ status: "active",
26938
+ codeRefs: [
26939
+ {
26940
+ path: "packages/elevasis-operations/src/diagnostics/framework-probe-agent.ts",
26941
+ role: "entrypoint",
26942
+ symbol: "frameworkProbeTruncateAgent"
26943
+ },
26944
+ {
26945
+ path: "packages/elevasis-operations/src/diagnostics/index.ts",
26946
+ role: "config",
26947
+ symbol: "agents"
26948
+ },
26949
+ {
26950
+ path: "packages/elevasis-operations/src/index.ts",
26951
+ role: "config",
26952
+ symbol: "deploymentSpec"
26953
+ }
26954
+ ],
26955
+ agentKind: "utility",
26956
+ sessionCapable: true,
26957
+ invocations: [
26958
+ { kind: "api-endpoint", method: "POST", path: "/api/external/sessions" },
26959
+ { kind: "api-endpoint", method: "POST", path: "/api/external/sessions/:sessionId/turns" }
26960
+ ]
27093
26961
  }
27094
26962
  ].map((resource2) => [resource2.id, resource2])
27095
26963
  )
@@ -37568,7 +37436,6 @@ function AgentObjectView({ node, linkedNodes, registry, onSelectNode }) {
37568
37436
  { label: "Model Provider", value: extras.modelProvider },
37569
37437
  { label: "Model ID", value: extras.modelId },
37570
37438
  { label: "Tool Count", value: String(extras.toolCount) },
37571
- { label: "Knowledge Map", value: extras.hasKnowledgeMap ? "Yes" : "No" },
37572
37439
  { label: "Memory", value: extras.hasMemory ? "Yes" : "No" },
37573
37440
  { label: "Session Capable", value: extras.sessionCapable ? "Yes" : "No" }
37574
37441
  ] : [
@@ -47261,7 +47128,7 @@ function MemberAccessModal({ opened, onClose, orgId, member, defaultTab = "roles
47261
47128
  ] }) });
47262
47129
  }
47263
47130
  function RolesTabPanel({ orgId, member, onSaved }) {
47264
- const { data: rolesData, isLoading: rolesLoading } = useOrgRoles(orgId ?? void 0);
47131
+ const { data: rolesData, isLoading: rolesLoading } = useOrgRoles(orgId ? brandSupabaseOrgId(orgId) : void 0);
47265
47132
  const assignMutation = useAssignRole();
47266
47133
  const revokeMutation = useRevokeRole();
47267
47134
  const canManagePrivileged = useAccess(AccessKeys.rolesManage).allowed;
@@ -47346,7 +47213,7 @@ function transformMemberForModal(member) {
47346
47213
  };
47347
47214
  }
47348
47215
  function OrgMembersList({ orgId }) {
47349
- const { data: members, isLoading, error } = useOrganizationMembers(orgId);
47216
+ const { data: members, isLoading, error } = useOrganizationMembers(brandSupabaseOrgId(orgId));
47350
47217
  const [selectedMember, setSelectedMember] = useState(null);
47351
47218
  const [modalOpened, setModalOpened] = useState(false);
47352
47219
  const [defaultTab, setDefaultTab] = useState("roles");
@@ -47366,7 +47233,7 @@ function OrgMembersList({ orgId }) {
47366
47233
  ] }) });
47367
47234
  }
47368
47235
  if (error) {
47369
- return /* @__PURE__ */ jsx(Alert, { icon: /* @__PURE__ */ jsx(IconAlertCircle, { size: 16 }), title: "Error loading members", color: "red", variant: "light", children: error.message || "Failed to load organization members. Please try again." });
47236
+ return /* @__PURE__ */ jsx(APIErrorAlert, { error, title: "Error loading members" });
47370
47237
  }
47371
47238
  if (!members || members.length === 0) {
47372
47239
  return /* @__PURE__ */ jsx(EmptyState, { icon: IconUsers, title: "No members found" });
@@ -47395,7 +47262,10 @@ function OrgMembersList({ orgId }) {
47395
47262
  isSystem: true
47396
47263
  }
47397
47264
  ) }),
47398
- /* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(MembershipStatusBadge, { status: member.status }) }),
47265
+ /* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsxs(Group, { gap: "xs", children: [
47266
+ /* @__PURE__ */ jsx(MembershipStatusBadge, { status: member.status }),
47267
+ /* @__PURE__ */ jsx(ProvisioningStateBadge, { state: member.provisioningState })
47268
+ ] }) }),
47399
47269
  /* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Tooltip, { label: "Edit member access", withArrow: true, children: /* @__PURE__ */ jsx(ActionIcon, { variant: "light", size: "sm", color: "gray", onClick: () => openModal2(member, "roles"), children: /* @__PURE__ */ jsx(IconPencil, { size: 14 }) }) }) })
47400
47270
  ] }, member.id);
47401
47271
  }) })
@@ -50765,7 +50635,7 @@ function ConceptInfoControl({ description }) {
50765
50635
  var indexPromise = null;
50766
50636
  function loadSearchIndex() {
50767
50637
  if (!indexPromise) {
50768
- indexPromise = import('./knowledge-search-index-JOPRYZN6.js').then(
50638
+ indexPromise = import('./knowledge-search-index-6EZNBNSR.js').then(
50769
50639
  (mod) => buildSearchIndex(mod.default ?? mod)
50770
50640
  );
50771
50641
  }
@@ -51531,4 +51401,4 @@ function useAccess(key) {
51531
51401
  };
51532
51402
  }
51533
51403
 
51534
- export { APIErrorAlert, AbsoluteScheduleForm, AccessGuard, AccessKeys, AccountSettings, ActionModal, ActivityCard, ActivityFeed, ActivityFeedWidget, ActivityFilters, ActivityLog, ActivityTable, ActivityTimeline, ActivityTrendChart, AgentDefinitionDisplay, AgentExecutionLogs, AgentExecutionPanel, AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationDetailPanel, AgentIterationEdge, AgentIterationNode, AgentResourceEntrySchema, AgentSessionGroup, AllTasksPage, ApiKeyDisplayModal, ApiKeyList, ApiKeyService, ApiKeySettings, AppErrorBoundary, AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, AppearanceContext, AppearanceProvider, AppearanceSettings, BaseEdge, BaseExecutionLogs, BaseExecutionLogsHeader, BaseExecutionLogsStates, BaseNode, Breadcrumbs, BusinessImpactCard, CRM_ITEMS, CenteredErrorState, ChartFrame, Checklist, CheckpointGroup, CollapsibleJsonSection, CollapsibleSection, CollapsibleSidebarGroup, CombinedTrendChart, CommandQueueDetailPage, CommandQueuePage, CommandQueueShell, CommandQueueSidebar, CommandQueueSidebarMiddle, CommandQueueSidebarTop, CommandQueueTaskRow, CommandViewPage, CompanyDetailPage, ConfigCard, ConfirmationInputModal, ConfirmationModal, ContactDetailPage, ContentSections, ContextUsageBadge, ContextViewer, ContractDisplay, ConversationThread, CostAnalytics, CostBreakdownCard, CostByModelTable, CostMetricsCard, CostTrendChart, CrashErrorFallback, CreateApiKeyModal, CreateCredentialModal, CreateDeliveryEntityModal, CreateRoleModal, CreateScheduleModal, CreateWebhookEndpointModal, CredentialList, CredentialService, CredentialSettings, CrmActionsProvider, CrmOverview, CrmSettingsPage, CrmSidebar, CrmSidebarMiddle, CrmSidebarTop, CustomModal, CustomSelector, CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, CyberParticles, DEAL_STAGES, DEAL_STAGE_COLORS, DEAL_STAGE_OPTIONS, DEFAULT_KANBAN_CONFIG, DEFAULT_SEMANTIC_ICON_REGISTRY, DELIVERY_COMMUNICATION_ITEMS, DELIVERY_PROJECT_ITEMS, DELIVERY_WORK_ITEMS, Dashboard, DashboardOperationsOverview, DealDetailPage, DealKanbanCard, DealsListPage, DeleteScheduleModal, DeploymentDetailModal, DeploymentList, DeploymentService, DeploymentSettings, DeploymentStatusBadge, DetailCardSkeleton, EMPTY_LIST_ACTIONS, EditApiKeyModal, EditCredentialModal, EditWebhookEndpointModal, ElevasisCoreProvider, ElevasisLoader, ElevasisSystemsProvider, ElevasisUIProvider, EmptyState, EmptyVisualizer, ErrorAnalysisCard, ErrorBreakdownTable, ErrorDetailsModal, ErrorReportCard, ExecuteWorkflowModal, ExecutionBreakdownTable, ExecutionErrorSection, ExecutionHealth, ExecutionHealthCard, ExecutionLogsFilters, ExecutionLogsPage, ExecutionLogsTable, ExecutionPanel, ExecutionStats, ExecutionStatusBadge, FILTERABLE_DOMAIN_KEYS, FeatureUnavailableState, FilterBar, GlowDot, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, HealthStatusCard, HeroStatsRow, IdentityDomainSchema, IntegrationResourceEntrySchema, JsonViewer, KNOWLEDGE_DOMAINS_WITH_PANELS, KNOWLEDGE_ICON_TOKEN_BY_KIND, KanbanBoard, KnowledgeSearchBar, KnowledgeTree, LEAD_GEN_ITEMS, LEAD_GEN_ROUTE_LINKS, LeadGenCompaniesPage, LeadGenContactsPage, LeadGenListDetailPage, LeadGenListsPage, LeadGenOverviewPage, LeadGenReadinessAlert, LeadGenRouteShell, LeadGenSidebar, LeadGenSidebarMiddle, LeadGenSidebarTop, LinksGroup, ListActionsProvider, ListBuilderIndexPage, ListBuilderPage, ListSkeleton, LogEntry, LogGroup, MdxRenderer, MemberAccessModal, MembershipStatusBadge, MetricsStrip, MilestoneTimeline, MyRolesPage, MyTasksPanel, NavigationButton, NewKnowledgeMapEdge, NewKnowledgeMapGraph, NewKnowledgeMapNode, NoAccessState, NotificationBell, NotificationCenter, NotificationItem, NotificationList, NotificationPanel, NotificationProvider, OAuthConnectModal, OAuthIntegrationsCard, OM_NESTED_TREE_GROUPS, OM_TREE_GROUPS, ORPHAN_STAGE_ORDER, OperationsOverview, OperationsService, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, OrgMembersList, OrganizationGraphPage, OrganizationMembershipService, OrganizationMembershipsList, OrganizationProvider, OrganizationSettings, OrganizationSwitcher, OrganizationSwitcherConnected, PIPELINE_FUNNEL_ORDER, PageContainer, PageNotFound, PageTitleCaption, PermissionMatrix, PipelineFunnelWidget, PolicySchema, ProjectDetailPage, ProjectsListPage, ProjectsSidebar, ProjectsSidebarMiddle, ProjectsSidebarTop, ProtectedRoute, QuickCreateActions, RecentExecutionsByResource, RecurringScheduleForm, RelativeScheduleForm, RequestActionIcon, RequestModal, ResourceCard, ResourceDefinitionSection, ResourceDetailPage, ResourceErrorState, ResourceFilter, ResourceHeader, ResourceHealthChart, ResourceHealthPanel, ResourceNotFoundState, ResourceOverview, ResourcesPage, ResourcesSidebar, RichTextEditor, RoleBadge, RoleSchema, RunResourceButton, SAVED_VIEW_PRESETS, SavedViewsPanel, ScheduleCard, ScheduleDetailModal, ScheduleTypeSelector, ScriptResourceEntrySchema, SemanticIcon, SessionChatArea, SessionChatInterface, SessionChatPage, SessionConversationView, SessionDetailsPanel, SessionExecutionLogs, SessionHeader, SessionListItem, SessionMemory, SessionsPage, SessionsSidebar, Sidebar, SidebarContext, SidebarProvider, SortableHeader, StatCard, StatCardSkeleton, StatsCardSkeleton, StatusBadge, StepConfigForm, SubshellContainer, SubshellContentContainer, SubshellLoader, SubshellNavList, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarLoader, SurfaceDefinitionSchema, SystemOpsView, SystemShell, TabCountBadge, TabSection, TableSelectionToolbar, TaskCard, TaskScheduler, TimeRangeSelector, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, ToolsListDisplay, Topbar, TopbarActions, TopbarContainer, TrendIndicator, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, UnresolvedErrorsTeaser, UpcomingMilestonesPage, Vignette, VisualizerContainer, WebhookEndpointList, WebhookEndpointService, WebhookEndpointSettings, WebhookUrlDisplayModal, WorkflowDefinitionDisplay, WorkflowExecutionLogs, WorkflowExecutionPanel, WorkflowExecutionTimeline, WorkflowResourceEntrySchema, ZodFormRenderer, acquisitionListKeys, aggregateSystemMetrics, buildErrorReport, buildKnowledgeOmTreeData, calculateProgress, clientsKeys, collectResourceFilterFacets, companyKeys, contactKeys, createOrganizationsSlice, createTestSystemsProvider, createUseOrgInitialization, createUseOrganizations, crmManifest, crmPrioritySettingsKeys, dealKeys, dealNoteKeys, dealTaskKeys, deliveryManifest, deriveBusinessProgress, executionsKeys, extendSemanticIconRegistry, filterByDomainFilters, findKnowledgeTreeNodeByValue, findListActionByAction, findOmTreeGroup, formatDate3 as formatDate, formatDealStageLabel, formatResourceAttribution, formatStatusLabel, getConceptDefinition, getEnrichmentColor, getEnrichmentStatus, getExecutionStatusConfig, getGraphBackgroundStyles, getHealthColor, getIcon, getKnowledgeDomainFolderCommand, getKnowledgeGraphNodeCommand, getKnowledgeIconToken, getKnowledgeNodeReadCommand, getKnowledgeOntologyProjection, getKnowledgeTreeFolderCommand, getLeadGenApiInterfaceReadiness, getLeadGenExportWorkflowId, getListActionWorkflowId, getLogLevelConfig, getOntologyDomainLabel, getPrimaryOntologyItemsForDomain, getResourceFilterFacetIds, getSemanticIconComponent, getSeriesColor, getSharedOrganizationGraph, getStateKeyColor, getStatusColor4 as getStatusColor, getStepActionLabel, iconMap, isLeadGenExportAction, isSessionCapable, knowledgeManifest, labelResourceFilterFacet, leadGenArtifactKeys, leadGenListCompanyKeys, leadGenListMemberKeys, leadGenManifest, mdxComponents, milestoneKeys, milestoneStatusColors, monitoringManifest, normaliseConceptKey, noteKeys, noteTypeColors, observabilityKeys, operationsKeys, operationsManifest, projectActivityKeys, projectKeys, projectNavigationGroups, projectNavigationSurfaces, projectStatusColors, requestTopbarActionManifest, requestsKeys, resolveBuildPlanSteps, resolveBuildState, resolveSemanticIconComponent, scheduleKeys, sessionsKeys, settingsManifest, showApiErrorNotification, showAuthError, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification, sortData, sortStageKeys, subsidebarWidth, taskKeys, taskStatusColors, taskTypeColors, useAccess, useActivateDeployment, useActivities, useActivitiesRealtime, useActivityFilters, useActivityTrend, useAddCompaniesToList, useAddContactsToList, useAppearance, useArchiveSession, useArchivedLogs, useArtifacts, useAssignRole, useBatchDelete, useBatchTelemetry, useBatchedResourcesHealth, useBreadcrumbs, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useClient, useClientStatus, useClients, useCommandQueue, useCommandQueueTask, useCommandQueueTotals, useCommandViewData, useCommandViewDomainFilters, useCommandViewStats, useCommandViewStore, useCompanies, useCompany, useCompanyFacets, useCompleteDealTask, useContact, useContacts, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateApiKey, useCreateArtifact, useCreateClient, useCreateCompany, useCreateContact, useCreateCredential, useCreateDealNote, useCreateDealTask, useCreateList, useCreateMilestone, useCreateNote, useCreateOrgRole, useCreateProject, useCreateSchedule, useCreateSession, useCreateTask, useCreateWebhookEndpoint, useCredentials, useCrmActions, useCrmPipelineSummary, useCrmPrioritySettings, useCrmQuickMetrics, useCyberColors, useDashboardMetrics, useDeactivateDeployment, useDeactivateMembership, useDealDetail, useDealNotes, useDealTasks, useDealTasksDue, useDeals, useDealsLookup, useDealsSummary, useDeleteApiKey, useDeleteClient, useDeleteCompanies, useDeleteContacts, useDeleteCredential, useDeleteDeal, useDeleteDeployment, useDeleteExecution, useDeleteList, useDeleteLists, useDeleteMilestone, useDeleteOrgRole, useDeleteProject, useDeleteRequest, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeleteTask2, useDeleteWebhookEndpoint, useDeriveActions, useEffectivePermissions, useElevasisSystems, useEndSession, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useErrorTrends, useExecuteAction, useExecuteAsync, useExecuteResource, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionLogsFilters, useExecutionPanelState, useExecutionSSE, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphBackgroundStyles, useGraphTheme, useInFlightExecutions, useLeadGenActionRegistry, useLeadGenBulkActions, useLeadGenConfig, useLeadGenHeaderActions, useLeadGenRowActions, useList, useListActions, useListApiKeys, useListDeployments, useListExecutions, useListMember, useListMembers, useListProgress, useListRecords, useListSchedules, useListWebhookEndpoints, useLists, useListsTelemetry, useMarkAllAsRead, useMarkAsRead, useMilestones, useNewKnowledgeMapLayout, useNotificationAdapter, useNotificationCount, useNotifications, useOptionalElevasisSystems, useOrgRoles, useOrganizationMembers, usePaginationState, usePatchTask, usePauseSchedule, usePermissionCatalog, useProject, useProjectActivities, useProjectMilestones, useProjectNotes, useProjectRealtime, useProjectTasks, useProjects, useReactivateMembership, useRecentCrmActivity, useRecentExecutionsByResource, useRemoveCompaniesFromList, useRequest, useRequestsList, useResetCrmPrioritySettings, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResolvedOrganizationModel, useResourceDefinition, useResourceErrors, useResourceExecutions, useResourceSearch, useResources, useResourcesDomainFilters, useResourcesHealth, useResumeSchedule, useRetryExecution, useRevokeRole, useSSEConnection, useScheduledTasks, useSession, useSessionCheck, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSidebar, useSidebarCollapse, useSortedData, useStableAccessToken, useStatusFilter, useSubmitAction, useSubmitRequest, useSuccessNotification, useSystemHealth, useTableSelection, useTableSort, useTasks, useTestNotification, useTimeRangeDates, useTopFailingResources, useTransitionItem, useTransitionListCompany, useTransitionListMember, useTransitionState, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateApiKey, useUpdateClient, useUpdateCompany, useUpdateContact, useUpdateCredential, useUpdateCrmPrioritySettings, useUpdateList, useUpdateListConfig, useUpdateListStatus, useUpdateMilestone, useUpdateOrgRole, useUpdateProject, useUpdateRequestStatus, useUpdateSchedule, useUpdateTask, useUpdateWebhookEndpoint, useUserMemberships, useVerifyCredential, useVisibleResources, useWarningNotification, useWorkflowExecution };
51404
+ export { APIErrorAlert, AbsoluteScheduleForm, AccessGuard, AccessKeys, AccountSettings, ActionModal, ActivityCard, ActivityFeed, ActivityFeedWidget, ActivityFilters, ActivityLog, ActivityTable, ActivityTimeline, ActivityTrendChart, AgentDefinitionDisplay, AgentExecutionLogs, AgentExecutionPanel, AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationDetailPanel, AgentIterationEdge, AgentIterationNode, AgentResourceEntrySchema, AgentSessionGroup, AllTasksPage, ApiKeyDisplayModal, ApiKeyList, ApiKeyService, ApiKeySettings, AppErrorBoundary, AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, AppearanceContext, AppearanceProvider, AppearanceSettings, BaseEdge, BaseExecutionLogs, BaseExecutionLogsHeader, BaseExecutionLogsStates, BaseNode, Breadcrumbs, BusinessImpactCard, CRM_ITEMS, CenteredErrorState, ChartFrame, Checklist, CheckpointGroup, CollapsibleJsonSection, CollapsibleSection, CollapsibleSidebarGroup, CombinedTrendChart, CommandQueueDetailPage, CommandQueuePage, CommandQueueShell, CommandQueueSidebar, CommandQueueSidebarMiddle, CommandQueueSidebarTop, CommandQueueTaskRow, CommandViewPage, CompanyDetailPage, ConfigCard, ConfirmationInputModal, ConfirmationModal, ContactDetailPage, ContentSections, ContextUsageBadge, ContextViewer, ContractDisplay, ConversationThread, CostAnalytics, CostBreakdownCard, CostByModelTable, CostMetricsCard, CostTrendChart, CrashErrorFallback, CreateApiKeyModal, CreateCredentialModal, CreateDeliveryEntityModal, CreateRoleModal, CreateScheduleModal, CreateWebhookEndpointModal, CredentialList, CredentialService, CredentialSettings, CrmActionsProvider, CrmOverview, CrmSettingsPage, CrmSidebar, CrmSidebarMiddle, CrmSidebarTop, CustomModal, CustomSelector, CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, CyberParticles, DEAL_STAGES, DEAL_STAGE_COLORS, DEAL_STAGE_OPTIONS, DEFAULT_KANBAN_CONFIG, DEFAULT_SEMANTIC_ICON_REGISTRY, DEFAULT_WAIT_FOR_ORGANIZATION, DELIVERY_COMMUNICATION_ITEMS, DELIVERY_PROJECT_ITEMS, DELIVERY_WORK_ITEMS, Dashboard, DashboardOperationsOverview, DealDetailPage, DealKanbanCard, DealsListPage, DeleteScheduleModal, DeploymentDetailModal, DeploymentList, DeploymentService, DeploymentSettings, DeploymentStatusBadge, DetailCardSkeleton, EMPTY_LIST_ACTIONS, EditApiKeyModal, EditCredentialModal, EditWebhookEndpointModal, ElevasisCoreProvider, ElevasisLoader, ElevasisSystemsProvider, ElevasisUIProvider, EmptyState, EmptyVisualizer, ErrorAnalysisCard, ErrorBreakdownTable, ErrorDetailsModal, ErrorReportCard, ExecuteWorkflowModal, ExecutionBreakdownTable, ExecutionErrorSection, ExecutionHealth, ExecutionHealthCard, ExecutionLogsFilters, ExecutionLogsPage, ExecutionLogsTable, ExecutionPanel, ExecutionStats, ExecutionStatusBadge, FILTERABLE_DOMAIN_KEYS, FeatureUnavailableState, FilterBar, GlowDot, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, HealthStatusCard, HeroStatsRow, IdentityDomainSchema, IntegrationResourceEntrySchema, JsonViewer, KNOWLEDGE_DOMAINS_WITH_PANELS, KNOWLEDGE_ICON_TOKEN_BY_KIND, KanbanBoard, KnowledgeSearchBar, KnowledgeTree, LEAD_GEN_ITEMS, LEAD_GEN_ROUTE_LINKS, LeadGenCompaniesPage, LeadGenContactsPage, LeadGenListDetailPage, LeadGenListsPage, LeadGenOverviewPage, LeadGenReadinessAlert, LeadGenRouteShell, LeadGenSidebar, LeadGenSidebarMiddle, LeadGenSidebarTop, LinksGroup, ListActionsProvider, ListBuilderIndexPage, ListBuilderPage, ListSkeleton, LogEntry, LogGroup, MdxRenderer, MemberAccessModal, MembershipStatusBadge, MetricsStrip, MilestoneTimeline, MyRolesPage, MyTasksPanel, NavigationButton, NoAccessState, NotificationBell, NotificationCenter, NotificationItem, NotificationList, NotificationPanel, NotificationProvider, OAuthConnectModal, OAuthIntegrationsCard, OM_NESTED_TREE_GROUPS, OM_TREE_GROUPS, ORPHAN_STAGE_ORDER, OperationsOverview, OperationsService, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, OrgMembersList, OrganizationGraphPage, OrganizationMembershipService, OrganizationMembershipsList, OrganizationProvider, OrganizationSettings, OrganizationSwitcher, OrganizationSwitcherConnected, PIPELINE_FUNNEL_ORDER, PageContainer, PageNotFound, PageTitleCaption, PermissionMatrix, PipelineFunnelWidget, PolicySchema, ProjectDetailPage, ProjectsListPage, ProjectsSidebar, ProjectsSidebarMiddle, ProjectsSidebarTop, ProtectedRoute, ProvisioningStateBadge, QuickCreateActions, RecentExecutionsByResource, RecurringScheduleForm, RelativeScheduleForm, RequestActionIcon, RequestModal, ResourceCard, ResourceDefinitionSection, ResourceDetailPage, ResourceErrorState, ResourceFilter, ResourceHeader, ResourceHealthChart, ResourceHealthPanel, ResourceNotFoundState, ResourceOverview, ResourcesPage, ResourcesSidebar, RichTextEditor, RoleBadge, RoleSchema, RunResourceButton, SAVED_VIEW_PRESETS, SavedViewsPanel, ScheduleCard, ScheduleDetailModal, ScheduleTypeSelector, ScriptResourceEntrySchema, SemanticIcon, SessionChatArea, SessionChatInterface, SessionChatPage, SessionConversationView, SessionDetailsPanel, SessionExecutionLogs, SessionHeader, SessionListItem, SessionMemory, SessionsPage, SessionsSidebar, Sidebar, SidebarContext, SidebarProvider, SortableHeader, StatCard, StatCardSkeleton, StatsCardSkeleton, StatusBadge, StepConfigForm, SubshellContainer, SubshellContentContainer, SubshellLoader, SubshellNavList, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarLoader, SurfaceDefinitionSchema, SystemOpsView, SystemShell, TabCountBadge, TabSection, TableSelectionToolbar, TaskCard, TaskScheduler, TimeRangeSelector, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, ToolsListDisplay, Topbar, TopbarActions, TopbarContainer, TrendIndicator, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, UnresolvedErrorsTeaser, UpcomingMilestonesPage, Vignette, VisualizerContainer, WebhookEndpointList, WebhookEndpointService, WebhookEndpointSettings, WebhookUrlDisplayModal, WorkflowDefinitionDisplay, WorkflowExecutionLogs, WorkflowExecutionPanel, WorkflowExecutionTimeline, WorkflowResourceEntrySchema, ZodFormRenderer, acquisitionListKeys, aggregateSystemMetrics, buildErrorReport, buildKnowledgeOmTreeData, calculateProgress, clientsKeys, collectResourceFilterFacets, companyKeys, computeProtectedRouteGate, contactKeys, createOrganizationsSlice, createTestSystemsProvider, createUseOrgInitialization, createUseOrganizations, crmManifest, crmPrioritySettingsKeys, dealKeys, dealNoteKeys, dealTaskKeys, deliveryManifest, deriveBusinessProgress, executionsKeys, extendSemanticIconRegistry, filterByDomainFilters, findKnowledgeTreeNodeByValue, findListActionByAction, findOmTreeGroup, formatDate3 as formatDate, formatDealStageLabel, formatResourceAttribution, formatStatusLabel, getConceptDefinition, getEnrichmentColor, getEnrichmentStatus, getExecutionStatusConfig, getGraphBackgroundStyles, getHealthColor, getIcon, getKnowledgeDomainFolderCommand, getKnowledgeGraphNodeCommand, getKnowledgeIconToken, getKnowledgeNodeReadCommand, getKnowledgeOntologyProjection, getKnowledgeTreeFolderCommand, getLeadGenApiInterfaceReadiness, getLeadGenExportWorkflowId, getListActionWorkflowId, getLogLevelConfig, getOntologyDomainLabel, getPrimaryOntologyItemsForDomain, getResourceFilterFacetIds, getSemanticIconComponent, getSeriesColor, getSharedOrganizationGraph, getStateKeyColor, getStatusColor4 as getStatusColor, getStepActionLabel, iconMap, isLeadGenExportAction, isSessionCapable, knowledgeManifest, labelResourceFilterFacet, leadGenArtifactKeys, leadGenListCompanyKeys, leadGenListMemberKeys, leadGenManifest, mdxComponents, milestoneKeys, milestoneStatusColors, monitoringManifest, normaliseConceptKey, noteKeys, noteTypeColors, observabilityKeys, operationsKeys, operationsManifest, projectActivityKeys, projectKeys, projectNavigationGroups, projectNavigationSurfaces, projectStatusColors, requestTopbarActionManifest, requestsKeys, resolveBuildPlanSteps, resolveBuildState, resolveSemanticIconComponent, scheduleKeys, sessionsKeys, settingsManifest, showApiErrorNotification, showAuthError, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification, sortData, sortStageKeys, subsidebarWidth, taskKeys, taskStatusColors, taskTypeColors, useAccess, useActivateDeployment, useActivities, useActivitiesRealtime, useActivityFilters, useActivityTrend, useAddCompaniesToList, useAddContactsToList, useAppearance, useArchiveSession, useArchivedLogs, useArtifacts, useAssignRole, useBatchDelete, useBatchTelemetry, useBatchedResourcesHealth, useBreadcrumbs, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useClient, useClientStatus, useClients, useCommandQueue, useCommandQueueTask, useCommandQueueTotals, useCommandViewData, useCommandViewDomainFilters, useCommandViewStats, useCommandViewStore, useCompanies, useCompany, useCompanyFacets, useCompleteDealTask, useContact, useContacts, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateApiKey, useCreateArtifact, useCreateClient, useCreateCompany, useCreateContact, useCreateCredential, useCreateDealNote, useCreateDealTask, useCreateList, useCreateMilestone, useCreateNote, useCreateOrgRole, useCreateProject, useCreateSchedule, useCreateSession, useCreateTask, useCreateWebhookEndpoint, useCredentials, useCrmActions, useCrmPipelineSummary, useCrmPrioritySettings, useCrmQuickMetrics, useCyberColors, useDashboardMetrics, useDeactivateDeployment, useDeactivateMembership, useDealDetail, useDealNotes, useDealTasks, useDealTasksDue, useDeals, useDealsLookup, useDealsSummary, useDeleteApiKey, useDeleteClient, useDeleteCompanies, useDeleteContacts, useDeleteCredential, useDeleteDeal, useDeleteDeployment, useDeleteExecution, useDeleteList, useDeleteLists, useDeleteMilestone, useDeleteOrgRole, useDeleteProject, useDeleteRequest, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeleteTask2, useDeleteWebhookEndpoint, useDeriveActions, useEffectivePermissions, useElevasisSystems, useEndSession, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useErrorTrends, useExecuteAction, useExecuteAsync, useExecuteResource, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionLogsFilters, useExecutionPanelState, useExecutionSSE, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphBackgroundStyles, useGraphTheme, useInFlightExecutions, useLeadGenActionRegistry, useLeadGenBulkActions, useLeadGenConfig, useLeadGenHeaderActions, useLeadGenRowActions, useList, useListActions, useListApiKeys, useListDeployments, useListExecutions, useListMember, useListMembers, useListProgress, useListRecords, useListSchedules, useListWebhookEndpoints, useLists, useListsTelemetry, useMarkAllAsRead, useMarkAsRead, useMilestones, useNotificationAdapter, useNotificationCount, useNotifications, useOptionalElevasisSystems, useOrgRoles, useOrganizationMembers, usePaginationState, usePatchTask, usePauseSchedule, usePermissionCatalog, useProject, useProjectActivities, useProjectMilestones, useProjectNotes, useProjectRealtime, useProjectTasks, useProjects, useReactivateMembership, useRecentCrmActivity, useRecentExecutionsByResource, useRemoveCompaniesFromList, useRequest, useRequestsList, useResetCrmPrioritySettings, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResolvedOrganizationModel, useResourceDefinition, useResourceErrors, useResourceExecutions, useResourceSearch, useResources, useResourcesDomainFilters, useResourcesHealth, useResumeSchedule, useRetryExecution, useRevokeRole, useSSEConnection, useScheduledTasks, useSession, useSessionCheck, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSidebar, useSidebarCollapse, useSortedData, useStableAccessToken, useStatusFilter, useSubmitAction, useSubmitRequest, useSuccessNotification, useSystemHealth, useTableSelection, useTableSort, useTasks, useTestNotification, useTimeRangeDates, useTopFailingResources, useTransitionItem, useTransitionListCompany, useTransitionListMember, useTransitionState, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateApiKey, useUpdateClient, useUpdateCompany, useUpdateContact, useUpdateCredential, useUpdateCrmPrioritySettings, useUpdateList, useUpdateListConfig, useUpdateListStatus, useUpdateMilestone, useUpdateOrgRole, useUpdateProject, useUpdateRequestStatus, useUpdateSchedule, useUpdateTask, useUpdateWebhookEndpoint, useUserMemberships, useVerifyCredential, useVisibleResources, useWarningNotification, useWorkflowExecution };