@elevasis/ui 2.64.1 → 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 (72) hide show
  1. package/dist/api/index.js +2 -2
  2. package/dist/app/index.d.ts +26 -0
  3. package/dist/app/index.js +8 -8
  4. package/dist/auth/index.d.ts +12 -5
  5. package/dist/auth/index.js +8 -8
  6. package/dist/charts/index.js +8 -8
  7. package/dist/{chunk-DRQPEMJI.js → chunk-4DV4ECMG.js} +3 -0
  8. package/dist/{chunk-KRWALB24.js → chunk-6SSQGWK7.js} +1 -1
  9. package/dist/{chunk-ZTWA5H77.js → chunk-6ZAP3FOA.js} +0 -1
  10. package/dist/{chunk-PGAA4G3T.js → chunk-ANNM5R7S.js} +275 -382
  11. package/dist/{chunk-I3CFGE3N.js → chunk-BLXJEIQS.js} +1 -1
  12. package/dist/chunk-L7BZZ4SI.js +56 -0
  13. package/dist/chunk-P45GQ3ZW.js +104 -0
  14. package/dist/{chunk-EIXSQONC.js → chunk-RT4KRGZT.js} +37 -59
  15. package/dist/{chunk-FVOMKZ7S.js → chunk-Y6I3IC45.js} +3 -6
  16. package/dist/components/index.d.ts +274 -191
  17. package/dist/components/index.js +8 -8
  18. package/dist/components/navigation/index.js +8 -8
  19. package/dist/execution/index.d.ts +115 -104
  20. package/dist/execution/index.js +2 -2
  21. package/dist/features/auth/index.d.ts +125 -9
  22. package/dist/features/auth/index.js +154 -14
  23. package/dist/features/clients/index.js +8 -8
  24. package/dist/features/crm/index.d.ts +20 -0
  25. package/dist/features/crm/index.js +8 -8
  26. package/dist/features/dashboard/index.js +8 -8
  27. package/dist/features/delivery/index.d.ts +20 -0
  28. package/dist/features/delivery/index.js +8 -8
  29. package/dist/features/knowledge/index.js +8 -8
  30. package/dist/features/lead-gen/index.js +8 -8
  31. package/dist/features/monitoring/index.js +8 -8
  32. package/dist/features/monitoring/requests/index.js +9 -9
  33. package/dist/features/notes/index.js +2 -2
  34. package/dist/features/operations/index.d.ts +177 -106
  35. package/dist/features/operations/index.js +8 -8
  36. package/dist/features/public-agent-chat/index.js +1 -1
  37. package/dist/features/settings/index.d.ts +21 -0
  38. package/dist/features/settings/index.js +8 -8
  39. package/dist/hooks/access/index.js +8 -8
  40. package/dist/hooks/delivery/index.d.ts +20 -0
  41. package/dist/hooks/delivery/index.js +8 -8
  42. package/dist/hooks/index.d.ts +319 -145
  43. package/dist/hooks/index.js +8 -8
  44. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +0 -2
  45. package/dist/hooks/operations/command-view/utils/transformCommandViewData.js +1 -1
  46. package/dist/hooks/published.d.ts +319 -145
  47. package/dist/hooks/published.js +8 -8
  48. package/dist/index.d.ts +409 -219
  49. package/dist/index.js +8 -8
  50. package/dist/initialization/index.d.ts +95 -28
  51. package/dist/initialization/index.js +3 -3
  52. package/dist/knowledge/index.js +12 -12
  53. package/dist/{knowledge-search-index-JOPRYZN6.js → knowledge-search-index-6EZNBNSR.js} +4 -4
  54. package/dist/layout/index.js +8 -8
  55. package/dist/organization/index.d.ts +63 -4
  56. package/dist/organization/index.js +8 -8
  57. package/dist/profile/index.d.ts +43 -2
  58. package/dist/profile/index.js +1 -1
  59. package/dist/provider/index.d.ts +20 -0
  60. package/dist/provider/index.js +8 -8
  61. package/dist/provider/published.d.ts +20 -0
  62. package/dist/provider/published.js +8 -8
  63. package/dist/supabase/index.d.ts +40 -0
  64. package/dist/test-utils/index.d.ts +5 -0
  65. package/dist/test-utils/index.js +4 -4
  66. package/dist/test-utils/setup-integration.js +1 -1
  67. package/dist/test-utils/setup.js +1 -1
  68. package/dist/types/index.d.ts +483 -244
  69. package/dist/utils/index.js +2 -2
  70. package/package.json +6 -4
  71. package/dist/chunk-LO7GWG24.js +0 -75
  72. package/dist/chunk-T4LA4RY2.js +0 -56
@@ -4,17 +4,17 @@ 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';
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-I3CFGE3N.js';
14
- import { useProfile, useUserProfile, ProfileProvider } from './chunk-EIXSQONC.js';
12
+ import { Graph_module_css_default, useDirectedChainHighlighting, useNodeSelection, useFitViewTrigger } from './chunk-HENXLGVD.js';
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-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
- 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-FVOMKZ7S.js';
17
- import { ResourceStatusColors, toWorkflowLogMessages } from './chunk-KRWALB24.js';
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
+ import { ResourceStatusColors, toWorkflowLogMessages } from './chunk-6SSQGWK7.js';
18
18
  import { useElevasisServices, ElevasisServiceContext, ElevasisServiceProvider } from './chunk-BI5VDO2K.js';
19
19
  import { brandSupabaseOrgId, brandWorkOsOrgId } from './chunk-MQZE7SUI.js';
20
20
  import { ResourceTypeSchema, NonEmptyStringSchema, OriginResourceTypeSchema, UuidSchema, CredentialNameSchema } from './chunk-TVTSASST.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,8 +151,20 @@ 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
- z.enum(["active", "inactive"]);
167
+ var MembershipStatusSchema = z.enum(["active", "inactive"]);
157
168
  var MembershipIdParamSchema = z.object({
158
169
  id: z.string().min(1)
159
170
  // WorkOS membership IDs can be various formats
@@ -175,6 +186,10 @@ var UpdateMembershipSchema = z.object({
175
186
  var ListMembershipsQuerySchema = z.object({
176
187
  userId: z.string().optional(),
177
188
  organizationId: z.string().optional(),
189
+ // A querystring repeats keys rather than nesting arrays, so a single value
190
+ // arrives as a bare string. Normalize both shapes to an array.
191
+ statuses: z.union([MembershipStatusSchema, z.array(MembershipStatusSchema)]).transform((value) => Array.isArray(value) ? value : [value]).optional(),
192
+ order: z.enum(["asc", "desc"]).optional(),
178
193
  limit: z.coerce.number().int().min(1).max(100).optional(),
179
194
  before: z.string().optional(),
180
195
  // WorkOS pagination cursor
@@ -4552,15 +4567,17 @@ var CustomModal = ({ children, opened, onClose, loading, style, size }) => {
4552
4567
  );
4553
4568
  };
4554
4569
  function useCreateOrgRole() {
4555
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
4570
+ const { apiRequest } = useElevasisServices();
4571
+ const organization = useContext(OrganizationContext);
4572
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
4556
4573
  const queryClient = useQueryClient();
4557
4574
  return useMutation({
4558
- mutationFn: (input) => apiRequest(`/organizations/${workOSOrganizationId}/roles`, {
4575
+ mutationFn: (input) => apiRequest(`/organizations/${orgId}/roles`, {
4559
4576
  method: "POST",
4560
4577
  body: JSON.stringify(input)
4561
4578
  }),
4562
4579
  onSettled: () => {
4563
- queryClient.invalidateQueries({ queryKey: ["org-roles", workOSOrganizationId] });
4580
+ queryClient.invalidateQueries({ queryKey: ["org-roles", orgId] });
4564
4581
  }
4565
4582
  });
4566
4583
  }
@@ -5994,9 +6011,34 @@ function useStableAccessToken() {
5994
6011
  return getAccessTokenRef.current();
5995
6012
  }, []);
5996
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
5997
6036
  function useSessionCheck() {
5998
6037
  const { user } = useAuthContext();
5999
6038
  const queryClient = useQueryClient();
6039
+ const organization = useContext(OrganizationContext);
6040
+ const currentWorkOSOrganizationId = organization?.currentWorkOSOrganizationId ?? null;
6041
+ const currentSupabaseOrganizationId = organization?.currentSupabaseOrganizationId ?? null;
6000
6042
  const isCheckingRef = useRef(false);
6001
6043
  const hadUserRef = useRef(false);
6002
6044
  if (user) {
@@ -6015,7 +6057,7 @@ function useSessionCheck() {
6015
6057
  }
6016
6058
  if (user) {
6017
6059
  await queryClient.cancelQueries();
6018
- queryClient.invalidateQueries();
6060
+ invalidateOrgScopedQueries(queryClient, [currentWorkOSOrganizationId, currentSupabaseOrganizationId]);
6019
6061
  }
6020
6062
  } finally {
6021
6063
  isCheckingRef.current = false;
@@ -6027,21 +6069,43 @@ function useSessionCheck() {
6027
6069
  document.removeEventListener("visibilitychange", handleVisibilityChange);
6028
6070
  window.removeEventListener("focus", handleVisibilityChange);
6029
6071
  };
6030
- }, [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 };
6031
6089
  }
6032
6090
  function ProtectedRoute({
6033
6091
  children,
6034
6092
  redirectTo = "/login",
6035
6093
  fallback = null,
6036
6094
  errorFallback,
6037
- waitForOrganization = true
6095
+ waitForOrganization = DEFAULT_WAIT_FOR_ORGANIZATION
6038
6096
  }) {
6039
6097
  const { userReady, allReady, isInitializing, error, retry } = useInitialization();
6040
6098
  const { signIn, canRecover } = useAuthContext();
6041
6099
  const navigate = useNavigate();
6042
6100
  const location = useLocation();
6043
6101
  const hasRedirected = useRef(false);
6044
- const unauthenticated = !isInitializing && !userReady && error?.layer !== "profile";
6102
+ const { unauthenticated, blockingError, showFallback } = computeProtectedRouteGate({
6103
+ isInitializing,
6104
+ userReady,
6105
+ allReady,
6106
+ error,
6107
+ waitForOrganization
6108
+ });
6045
6109
  useEffect(() => {
6046
6110
  if (unauthenticated && !hasRedirected.current) {
6047
6111
  hasRedirected.current = true;
@@ -6057,19 +6121,10 @@ function ProtectedRoute({
6057
6121
  }
6058
6122
  }
6059
6123
  }, [unauthenticated, signIn, canRecover, navigate, redirectTo, location]);
6060
- if (isInitializing) {
6061
- return /* @__PURE__ */ jsx(Fragment, { children: fallback });
6062
- }
6063
- if (error && error.layer !== "organization") {
6064
- if (errorFallback) {
6065
- return /* @__PURE__ */ jsx(Fragment, { children: errorFallback(error, retry) });
6066
- }
6067
- return null;
6068
- }
6069
- if (unauthenticated) {
6070
- return /* @__PURE__ */ jsx(Fragment, { children: fallback });
6124
+ if (blockingError) {
6125
+ return errorFallback ? /* @__PURE__ */ jsx(Fragment, { children: errorFallback(error, retry) }) : null;
6071
6126
  }
6072
- if (waitForOrganization && !allReady && error?.layer !== "organization") {
6127
+ if (showFallback) {
6073
6128
  return /* @__PURE__ */ jsx(Fragment, { children: fallback });
6074
6129
  }
6075
6130
  return /* @__PURE__ */ jsx(Fragment, { children });
@@ -8737,15 +8792,36 @@ function OrganizationProvider({ apiRequest, children }) {
8737
8792
  if (workosOrgId === currentWorkOSOrganizationId) return;
8738
8793
  const target = memberships.find((m) => m.organization?.workos_org_id === workosOrgId);
8739
8794
  if (!target) return;
8795
+ const previousWorkOSOrgId = currentWorkOSOrganizationId;
8796
+ const previousSupabaseOrgId = currentSupabaseOrganizationId;
8740
8797
  applyMembership(target);
8741
- void queryClient.invalidateQueries();
8742
- }, [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
+ ]);
8743
8812
  const switchOrganization = useCallback(
8744
8813
  (workosOrgId2, options) => {
8745
8814
  const target = memberships.find((m) => m.organization?.workos_org_id === workosOrgId2);
8746
8815
  if (!target) return;
8816
+ const previousWorkOSOrgId = currentWorkOSOrganizationId;
8817
+ const previousSupabaseOrgId = currentSupabaseOrganizationId;
8747
8818
  applyMembership(target);
8748
- void queryClient.invalidateQueries();
8819
+ invalidateOrgScopedQueries(queryClient, [
8820
+ previousWorkOSOrgId,
8821
+ previousSupabaseOrgId,
8822
+ target.organization?.workos_org_id,
8823
+ target.organizationId
8824
+ ]);
8749
8825
  if (options?.persist !== false) {
8750
8826
  void apiRequest("/users/me", {
8751
8827
  method: "PATCH",
@@ -8756,7 +8832,7 @@ function OrganizationProvider({ apiRequest, children }) {
8756
8832
  });
8757
8833
  }
8758
8834
  },
8759
- [memberships, applyMembership, queryClient, apiRequest]
8835
+ [memberships, applyMembership, queryClient, apiRequest, currentWorkOSOrganizationId, currentSupabaseOrganizationId]
8760
8836
  );
8761
8837
  const retry = useCallback(async () => {
8762
8838
  hasInitializedRef.current = false;
@@ -8889,7 +8965,10 @@ function OrganizationSwitcher({
8889
8965
  )
8890
8966
  ] });
8891
8967
  }
8892
- function OrganizationSwitcherConnected() {
8968
+ function OrganizationSwitcherConnected({
8969
+ isLoading: extraLoading = false,
8970
+ onSwitched
8971
+ } = {}) {
8893
8972
  const { switchToOrganization } = useAuth();
8894
8973
  const { currentMembership, memberships, isInitializing, isOrgRefreshing, switchOrganization } = useOrganization();
8895
8974
  return /* @__PURE__ */ jsx(
@@ -8897,10 +8976,11 @@ function OrganizationSwitcherConnected() {
8897
8976
  {
8898
8977
  currentOrganization: currentMembership?.organization,
8899
8978
  memberships,
8900
- isLoading: isInitializing || isOrgRefreshing,
8979
+ isLoading: extraLoading || isInitializing || isOrgRefreshing,
8901
8980
  onSwitch: async (workosOrgId) => {
8902
8981
  await switchToOrganization({ organizationId: workosOrgId });
8903
8982
  switchOrganization(workosOrgId);
8983
+ onSwitched?.(workosOrgId);
8904
8984
  }
8905
8985
  }
8906
8986
  );
@@ -13134,42 +13214,11 @@ function useDeactivateMembership() {
13134
13214
  const membershipService = new OrganizationMembershipService(apiRequest);
13135
13215
  return await membershipService.deactivateMembership(membershipId);
13136
13216
  },
13137
- onMutate: async (variables) => {
13138
- await queryClient.cancelQueries({ queryKey: ["memberships"] });
13139
- const previousData = queryClient.getQueryData(["memberships"]);
13140
- if (variables.userId) {
13141
- queryClient.setQueryData(
13142
- ["memberships", "user", variables.userId],
13143
- (old) => {
13144
- if (!old) return old;
13145
- return old.map(
13146
- (membership) => membership.id === variables.membershipId ? { ...membership, status: "inactive", updatedAt: (/* @__PURE__ */ new Date()).toISOString() } : membership
13147
- );
13148
- }
13149
- );
13150
- }
13151
- if (variables.organizationId) {
13152
- queryClient.setQueryData(
13153
- ["memberships", "organization", variables.organizationId],
13154
- (old) => {
13155
- if (!old) return old;
13156
- return old.map(
13157
- (membership) => membership.id === variables.membershipId ? { ...membership, status: "inactive", updatedAt: (/* @__PURE__ */ new Date()).toISOString() } : membership
13158
- );
13159
- }
13160
- );
13161
- }
13162
- return { previousData };
13163
- },
13164
- onError: (error, _variables, context) => {
13165
- if (context?.previousData) {
13166
- queryClient.setQueryData(["memberships"], context.previousData);
13167
- }
13217
+ onError: (error) => {
13168
13218
  adapter.apiError(error);
13169
13219
  },
13170
- onSuccess: () => {
13171
- queryClient.invalidateQueries({ queryKey: ["memberships"] });
13172
- },
13220
+ // Fires on both success and failure. A prior `onSuccess` invalidated the
13221
+ // same key redundantly.
13173
13222
  onSettled: () => {
13174
13223
  queryClient.invalidateQueries({ queryKey: ["memberships"] });
13175
13224
  }
@@ -13184,50 +13233,18 @@ function useReactivateMembership() {
13184
13233
  const membershipService = new OrganizationMembershipService(apiRequest);
13185
13234
  return await membershipService.reactivateMembership(membershipId);
13186
13235
  },
13187
- onMutate: async (variables) => {
13188
- await queryClient.cancelQueries({ queryKey: ["memberships"] });
13189
- const previousData = queryClient.getQueryData(["memberships"]);
13190
- if (variables.userId) {
13191
- queryClient.setQueryData(
13192
- ["memberships", "user", variables.userId],
13193
- (old) => {
13194
- if (!old) return old;
13195
- return old.map(
13196
- (membership) => membership.id === variables.membershipId ? { ...membership, status: "active", updatedAt: (/* @__PURE__ */ new Date()).toISOString() } : membership
13197
- );
13198
- }
13199
- );
13200
- }
13201
- if (variables.organizationId) {
13202
- queryClient.setQueryData(
13203
- ["memberships", "organization", variables.organizationId],
13204
- (old) => {
13205
- if (!old) return old;
13206
- return old.map(
13207
- (membership) => membership.id === variables.membershipId ? { ...membership, status: "active", updatedAt: (/* @__PURE__ */ new Date()).toISOString() } : membership
13208
- );
13209
- }
13210
- );
13211
- }
13212
- return { previousData };
13213
- },
13214
- onError: (error, _variables, context) => {
13215
- if (context?.previousData) {
13216
- queryClient.setQueryData(["memberships"], context.previousData);
13217
- }
13236
+ onError: (error) => {
13218
13237
  adapter.apiError(error);
13219
13238
  },
13220
- onSuccess: () => {
13221
- queryClient.invalidateQueries({ queryKey: ["memberships"] });
13222
- },
13223
13239
  onSettled: () => {
13224
13240
  queryClient.invalidateQueries({ queryKey: ["memberships"] });
13225
13241
  }
13226
13242
  });
13227
13243
  }
13228
13244
  function useOrgRoles(orgId) {
13229
- const { apiRequest, workOSOrganizationId, isReady } = useElevasisServices();
13230
- const targetOrgId = orgId ?? workOSOrganizationId;
13245
+ const { apiRequest, isReady } = useElevasisServices();
13246
+ const organization = useContext(OrganizationContext);
13247
+ const targetOrgId = orgId ?? organization?.currentSupabaseOrganizationId ?? void 0;
13231
13248
  return useQuery({
13232
13249
  queryKey: ["org-roles", targetOrgId],
13233
13250
  queryFn: () => apiRequest(`/organizations/${targetOrgId}/roles`),
@@ -13236,33 +13253,39 @@ function useOrgRoles(orgId) {
13236
13253
  });
13237
13254
  }
13238
13255
  function useUpdateOrgRole() {
13239
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
13256
+ const { apiRequest } = useElevasisServices();
13257
+ const organization = useContext(OrganizationContext);
13258
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
13240
13259
  const queryClient = useQueryClient();
13241
13260
  return useMutation({
13242
- mutationFn: ({ roleId, input }) => apiRequest(`/organizations/${workOSOrganizationId}/roles/${roleId}`, {
13261
+ mutationFn: ({ roleId, input }) => apiRequest(`/organizations/${orgId}/roles/${roleId}`, {
13243
13262
  method: "PATCH",
13244
13263
  body: JSON.stringify(input)
13245
13264
  }),
13246
13265
  onSettled: (_data, _error, { roleId }) => {
13247
- queryClient.invalidateQueries({ queryKey: ["org-roles", workOSOrganizationId] });
13248
- queryClient.invalidateQueries({ queryKey: ["org-role", workOSOrganizationId, roleId] });
13266
+ queryClient.invalidateQueries({ queryKey: ["org-roles", orgId] });
13267
+ queryClient.invalidateQueries({ queryKey: ["org-role", orgId, roleId] });
13249
13268
  }
13250
13269
  });
13251
13270
  }
13252
13271
  function useDeleteOrgRole() {
13253
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
13272
+ const { apiRequest } = useElevasisServices();
13273
+ const organization = useContext(OrganizationContext);
13274
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
13254
13275
  const queryClient = useQueryClient();
13255
13276
  return useMutation({
13256
- mutationFn: (roleId) => apiRequest(`/organizations/${workOSOrganizationId}/roles/${roleId}`, {
13277
+ mutationFn: (roleId) => apiRequest(`/organizations/${orgId}/roles/${roleId}`, {
13257
13278
  method: "DELETE"
13258
13279
  }),
13259
13280
  onSettled: () => {
13260
- queryClient.invalidateQueries({ queryKey: ["org-roles", workOSOrganizationId] });
13281
+ queryClient.invalidateQueries({ queryKey: ["org-roles", orgId] });
13261
13282
  }
13262
13283
  });
13263
13284
  }
13264
13285
  function useAssignRole() {
13265
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
13286
+ const { apiRequest } = useElevasisServices();
13287
+ const organization = useContext(OrganizationContext);
13288
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
13266
13289
  const queryClient = useQueryClient();
13267
13290
  return useMutation({
13268
13291
  mutationFn: ({ membershipId, roleId }) => apiRequest(`/memberships/${membershipId}/roles`, {
@@ -13270,30 +13293,34 @@ function useAssignRole() {
13270
13293
  body: JSON.stringify({ roleId })
13271
13294
  }),
13272
13295
  onSettled: (_data, _error, { membershipId }) => {
13273
- queryClient.invalidateQueries({ queryKey: ["member-roles", workOSOrganizationId, membershipId] });
13274
- queryClient.invalidateQueries({ queryKey: ["organization-permissions", workOSOrganizationId] });
13275
- 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] });
13276
13299
  }
13277
13300
  });
13278
13301
  }
13279
13302
  function useRevokeRole() {
13280
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
13303
+ const { apiRequest } = useElevasisServices();
13304
+ const organization = useContext(OrganizationContext);
13305
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
13281
13306
  const queryClient = useQueryClient();
13282
13307
  return useMutation({
13283
13308
  mutationFn: ({ membershipId, roleId }) => apiRequest(`/memberships/${membershipId}/roles/${roleId}`, {
13284
13309
  method: "DELETE"
13285
13310
  }),
13286
13311
  onSettled: (_data, _error, { membershipId }) => {
13287
- queryClient.invalidateQueries({ queryKey: ["member-roles", workOSOrganizationId, membershipId] });
13288
- queryClient.invalidateQueries({ queryKey: ["organization-permissions", workOSOrganizationId] });
13289
- 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] });
13290
13315
  }
13291
13316
  });
13292
13317
  }
13293
13318
  function useEffectivePermissions(membershipId) {
13294
- const { apiRequest, workOSOrganizationId, isReady } = useElevasisServices();
13319
+ const { apiRequest, isReady } = useElevasisServices();
13320
+ const organization = useContext(OrganizationContext);
13321
+ const orgId = organization?.currentSupabaseOrganizationId ?? null;
13295
13322
  return useQuery({
13296
- queryKey: ["member-roles", workOSOrganizationId, membershipId],
13323
+ queryKey: ["member-roles", orgId, membershipId],
13297
13324
  queryFn: () => apiRequest(`/memberships/${membershipId}/effective-permissions`),
13298
13325
  enabled: isReady && !!membershipId,
13299
13326
  staleTime: STALE_TIME_DEFAULT
@@ -13586,12 +13613,30 @@ function useExecutionLogsFilters(_timeRange) {
13586
13613
  return { filters, updateFilter, resetFilters };
13587
13614
  }
13588
13615
  function useOrganizationMembers(organizationId, params) {
13589
- const { apiRequest } = useElevasisServices();
13616
+ const { apiRequest, isReady } = useElevasisServices();
13590
13617
  return useQuery({
13591
13618
  queryKey: ["organization-members", organizationId, params],
13592
13619
  queryFn: async () => {
13593
13620
  const searchParams = new URLSearchParams();
13594
13621
  searchParams.append("organizationId", organizationId);
13622
+ if (params?.userId) {
13623
+ searchParams.append("userId", params.userId);
13624
+ }
13625
+ for (const status of params?.statuses ?? []) {
13626
+ searchParams.append("statuses", status);
13627
+ }
13628
+ if (params?.order) {
13629
+ searchParams.append("order", params.order);
13630
+ }
13631
+ if (params?.limit !== void 0) {
13632
+ searchParams.append("limit", String(params.limit));
13633
+ }
13634
+ if (params?.before) {
13635
+ searchParams.append("before", params.before);
13636
+ }
13637
+ if (params?.after) {
13638
+ searchParams.append("after", params.after);
13639
+ }
13595
13640
  const response = await apiRequest(`/memberships?${searchParams.toString()}`);
13596
13641
  return response.data.map((membership) => ({
13597
13642
  ...membership,
@@ -13599,7 +13644,7 @@ function useOrganizationMembers(organizationId, params) {
13599
13644
  updatedAt: membership.updatedAt
13600
13645
  }));
13601
13646
  },
13602
- enabled: !!organizationId,
13647
+ enabled: isReady && !!organizationId,
13603
13648
  staleTime: STALE_TIME_MONITORING,
13604
13649
  gcTime: GC_TIME_SHORT,
13605
13650
  refetchOnWindowFocus: false
@@ -17237,209 +17282,6 @@ function ToolsListDisplay({ tools, compact = false, maxVisible = 0 }) {
17237
17282
  ] })
17238
17283
  ] });
17239
17284
  }
17240
- var NODE_WIDTH = 200;
17241
- var NODE_HEIGHT = 100;
17242
- var RANK_SEP = 80;
17243
- var NODE_SEP = 30;
17244
- function useNewKnowledgeMapLayout(knowledgeMap, agentName) {
17245
- return useMemo(() => {
17246
- if (!knowledgeMap || knowledgeMap.nodes.length === 0) {
17247
- return { nodes: [], edges: [] };
17248
- }
17249
- const agentNodeId = "__agent__";
17250
- const edges = knowledgeMap.nodes.map((node) => ({
17251
- id: `edge-${agentNodeId}-${node.id}`,
17252
- source: agentNodeId,
17253
- target: node.id,
17254
- type: "knowledgeMap",
17255
- data: {}
17256
- }));
17257
- const dagreGraph = new dagre.graphlib.Graph();
17258
- dagreGraph.setDefaultEdgeLabel(() => ({}));
17259
- dagreGraph.setGraph({
17260
- rankdir: "TB",
17261
- ranksep: RANK_SEP,
17262
- nodesep: NODE_SEP,
17263
- marginx: 40,
17264
- marginy: 40
17265
- });
17266
- dagreGraph.setNode(agentNodeId, { width: NODE_WIDTH, height: NODE_HEIGHT });
17267
- knowledgeMap.nodes.forEach((node) => {
17268
- dagreGraph.setNode(node.id, { width: NODE_WIDTH, height: NODE_HEIGHT });
17269
- });
17270
- edges.forEach((edge) => {
17271
- dagreGraph.setEdge(edge.source, edge.target);
17272
- });
17273
- dagre.layout(dagreGraph);
17274
- const agentDagreNode = dagreGraph.node(agentNodeId);
17275
- const agentNode = {
17276
- id: agentNodeId,
17277
- type: "knowledgeMap",
17278
- position: {
17279
- x: agentDagreNode.x - NODE_WIDTH / 2,
17280
- y: agentDagreNode.y - NODE_HEIGHT / 2
17281
- },
17282
- data: {
17283
- id: agentNodeId,
17284
- name: agentName,
17285
- description: "Agent with lazy-loading knowledge",
17286
- loaded: true,
17287
- hasPrompt: false,
17288
- isAgentNode: true
17289
- }
17290
- };
17291
- const knowledgeNodes = knowledgeMap.nodes.map((node) => {
17292
- const dagreNode = dagreGraph.node(node.id);
17293
- return {
17294
- id: node.id,
17295
- type: "knowledgeMap",
17296
- position: {
17297
- x: dagreNode.x - NODE_WIDTH / 2,
17298
- y: dagreNode.y - NODE_HEIGHT / 2
17299
- },
17300
- data: {
17301
- id: node.id,
17302
- name: node.id,
17303
- description: node.description,
17304
- loaded: node.loaded,
17305
- hasPrompt: node.hasPrompt,
17306
- isAgentNode: false
17307
- }
17308
- };
17309
- });
17310
- return { nodes: [agentNode, ...knowledgeNodes], edges };
17311
- }, [knowledgeMap, agentName]);
17312
- }
17313
- var NewKnowledgeMapNode = memo(function NewKnowledgeMapNode2({ data, selected }) {
17314
- const nodeColor = data.isAgentNode ? "violet" : data.loaded ? "teal" : "blue";
17315
- return /* @__PURE__ */ jsx(BaseNode, { color: nodeColor, selected, width: 200, handleDirection: "vertical", children: /* @__PURE__ */ jsxs(Stack, { gap: 6, children: [
17316
- /* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", children: [
17317
- 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 } }),
17318
- /* @__PURE__ */ jsx(Text, { size: "sm", fw: 500, truncate: true, style: { flex: 1, fontFamily: "var(--mantine-font-family-headings)" }, children: data.name })
17319
- ] }),
17320
- data.description && /* @__PURE__ */ jsx(Text, { size: "xs", c: "dimmed", lineClamp: 2, children: data.description }),
17321
- /* @__PURE__ */ jsx(Group, { gap: 4, children: data.isAgentNode ? /* @__PURE__ */ jsx(Badge, { size: "xs", variant: "light", children: "Root" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
17322
- /* @__PURE__ */ jsx(
17323
- Badge,
17324
- {
17325
- size: "xs",
17326
- variant: "light",
17327
- color: data.loaded ? "teal" : "gray",
17328
- leftSection: /* @__PURE__ */ jsx(IconBrain, { size: 10 }),
17329
- children: data.loaded ? "Loaded" : "Available"
17330
- }
17331
- ),
17332
- data.hasPrompt && /* @__PURE__ */ jsx(Badge, { size: "xs", variant: "light", color: "orange", leftSection: /* @__PURE__ */ jsx(IconFileText, { size: 10 }), children: "Prompt" })
17333
- ] }) })
17334
- ] }) });
17335
- });
17336
- var NewKnowledgeMapEdge = memo(function NewKnowledgeMapEdge2({
17337
- id,
17338
- sourceX,
17339
- sourceY,
17340
- targetX,
17341
- targetY,
17342
- sourcePosition,
17343
- targetPosition,
17344
- selected,
17345
- data
17346
- }) {
17347
- const colors = useGraphTheme();
17348
- return /* @__PURE__ */ jsx(
17349
- BaseEdge,
17350
- {
17351
- id,
17352
- sourceX,
17353
- sourceY,
17354
- targetX,
17355
- targetY,
17356
- sourcePosition,
17357
- targetPosition,
17358
- color: colors.primary,
17359
- glowColor: colors.primaryGlow,
17360
- animated: false,
17361
- selected,
17362
- dimmed: data?.dimmed
17363
- }
17364
- );
17365
- });
17366
- var nodeTypes3 = {
17367
- knowledgeMap: NewKnowledgeMapNode
17368
- };
17369
- var edgeTypes3 = {
17370
- knowledgeMap: NewKnowledgeMapEdge
17371
- };
17372
- function NewKnowledgeMapGraphInner({ knowledgeMap, agentName, compact, fitViewTrigger }) {
17373
- const { nodes: layoutNodes, edges: layoutEdges } = useNewKnowledgeMapLayout(knowledgeMap, agentName);
17374
- const { nodes, edges, handleNodeMouseEnter, handleNodeMouseLeave } = useGraphHighlighting(layoutNodes, layoutEdges);
17375
- if (!knowledgeMap || knowledgeMap.nodes.length === 0) {
17376
- return /* @__PURE__ */ jsxs("div", { children: [
17377
- !compact && /* @__PURE__ */ jsx(Text, { size: "sm", fw: 600, mb: "xs", style: { fontFamily: "var(--mantine-font-family-headings)" }, children: "Knowledge Map" }),
17378
- /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", fs: "italic", children: "No knowledge nodes configured" })
17379
- ] });
17380
- }
17381
- const containerHeight = calculateGraphHeight({
17382
- itemCount: knowledgeMap.nodeCount,
17383
- minHeight: 250,
17384
- maxHeight: 450,
17385
- heightPerItem: 60
17386
- });
17387
- return /* @__PURE__ */ jsxs("div", { children: [
17388
- !compact && /* @__PURE__ */ jsxs(Group, { gap: "xs", mb: "xs", children: [
17389
- /* @__PURE__ */ jsx(Text, { size: "sm", fw: 600, style: { fontFamily: "var(--mantine-font-family-headings)" }, children: "Knowledge Map" }),
17390
- /* @__PURE__ */ jsxs(Badge, { variant: "light", size: "xs", children: [
17391
- knowledgeMap.nodeCount,
17392
- " ",
17393
- knowledgeMap.nodeCount === 1 ? "node" : "nodes"
17394
- ] })
17395
- ] }),
17396
- /* @__PURE__ */ jsx(
17397
- Box,
17398
- {
17399
- className: `elevasis-graph-root ${Graph_module_css_default.graphContainer}`,
17400
- style: {
17401
- width: "100%",
17402
- height: containerHeight,
17403
- border: "1px solid var(--color-border)",
17404
- borderRadius: "var(--mantine-radius-md)",
17405
- overflow: "hidden"
17406
- },
17407
- children: /* @__PURE__ */ jsxs(
17408
- ReactFlow,
17409
- {
17410
- nodes,
17411
- edges,
17412
- nodeTypes: nodeTypes3,
17413
- edgeTypes: edgeTypes3,
17414
- onNodeMouseEnter: handleNodeMouseEnter,
17415
- onNodeMouseLeave: handleNodeMouseLeave,
17416
- fitView: true,
17417
- fitViewOptions: { padding: 0.15 },
17418
- proOptions: { hideAttribution: true },
17419
- minZoom: GRAPH_CONSTANTS.MIN_ZOOM,
17420
- maxZoom: GRAPH_CONSTANTS.MAX_ZOOM,
17421
- nodesDraggable: false,
17422
- nodesConnectable: false,
17423
- elementsSelectable: true,
17424
- selectNodesOnDrag: false,
17425
- panOnDrag: true,
17426
- zoomOnScroll: true,
17427
- zoomOnPinch: true,
17428
- panOnScroll: false,
17429
- children: [
17430
- /* @__PURE__ */ jsx(GraphBackground, {}),
17431
- /* @__PURE__ */ jsx(GraphFitViewButton, { padding: 0.15, variant: "mantine", duration: 300 }),
17432
- /* @__PURE__ */ jsx(GraphFitViewHandler, { trigger: fitViewTrigger })
17433
- ]
17434
- }
17435
- )
17436
- }
17437
- )
17438
- ] });
17439
- }
17440
- function NewKnowledgeMapGraph(props) {
17441
- return /* @__PURE__ */ jsx(ReactFlowProvider, { children: /* @__PURE__ */ jsx(NewKnowledgeMapGraphInner, { ...props }) });
17442
- }
17443
17285
  function DefinitionSectionHeader({ expanded, onToggle, icon, title, count }) {
17444
17286
  return /* @__PURE__ */ jsxs(Group, { gap: 4, onClick: onToggle, style: { cursor: "pointer", userSelect: "none" }, wrap: "nowrap", children: [
17445
17287
  /* @__PURE__ */ jsx(
@@ -17466,8 +17308,6 @@ function DefinitionSectionHeader({ expanded, onToggle, icon, title, count }) {
17466
17308
  function AgentDefinitionDisplay({ agent, defaultExpanded = false }) {
17467
17309
  const [systemPromptExpanded, setSystemPromptExpanded] = useState(defaultExpanded);
17468
17310
  const [configExpanded, setConfigExpanded] = useState(defaultExpanded);
17469
- const [knowledgeMapExpanded, setKnowledgeMapExpanded] = useState(defaultExpanded);
17470
- const [knowledgeMapFitTrigger, setKnowledgeMapFitTrigger] = useState(0);
17471
17311
  const [toolsExpanded, setToolsExpanded] = useState(defaultExpanded);
17472
17312
  const [memoryPrefsExpanded, setMemoryPrefsExpanded] = useState(defaultExpanded);
17473
17313
  const hasConstraints = agent.config.constraints && Object.keys(agent.config.constraints).length > 0;
@@ -17565,36 +17405,6 @@ function AgentDefinitionDisplay({ agent, defaultExpanded = false }) {
17565
17405
  ),
17566
17406
  /* @__PURE__ */ jsx(Collapse, { in: systemPromptExpanded, children: /* @__PURE__ */ jsx(Paper, { p: "sm", mt: "xs", children: /* @__PURE__ */ jsx(StyledMarkdown, { children: agent.config.systemPrompt }) }) })
17567
17407
  ] }),
17568
- agent.knowledgeMap && agent.knowledgeMap.nodeCount > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
17569
- /* @__PURE__ */ jsx(Divider, {}),
17570
- /* @__PURE__ */ jsxs("div", { children: [
17571
- /* @__PURE__ */ jsx(
17572
- DefinitionSectionHeader,
17573
- {
17574
- expanded: knowledgeMapExpanded,
17575
- onToggle: () => {
17576
- const willExpand = !knowledgeMapExpanded;
17577
- setKnowledgeMapExpanded(willExpand);
17578
- if (willExpand) {
17579
- setKnowledgeMapFitTrigger((prev) => prev + 1);
17580
- }
17581
- },
17582
- icon: /* @__PURE__ */ jsx(IconNetwork, { size: 16, color: "var(--color-text-subtle)" }),
17583
- title: "Knowledge Map",
17584
- count: `${agent.knowledgeMap.nodeCount} ${agent.knowledgeMap.nodeCount === 1 ? "node" : "nodes"}`
17585
- }
17586
- ),
17587
- /* @__PURE__ */ jsx(Collapse, { in: knowledgeMapExpanded, children: /* @__PURE__ */ jsx("div", { style: { marginTop: "var(--mantine-spacing-xs)" }, children: /* @__PURE__ */ jsx(
17588
- NewKnowledgeMapGraph,
17589
- {
17590
- knowledgeMap: agent.knowledgeMap,
17591
- agentName: agent.config.name,
17592
- compact: true,
17593
- fitViewTrigger: knowledgeMapFitTrigger
17594
- }
17595
- ) }) })
17596
- ] })
17597
- ] }),
17598
17408
  /* @__PURE__ */ jsx(Divider, {}),
17599
17409
  /* @__PURE__ */ jsxs("div", { children: [
17600
17410
  /* @__PURE__ */ jsx(
@@ -18998,6 +18808,13 @@ function MembershipStatusBadge({ status, size = "sm", variant = "light" }) {
18998
18808
  };
18999
18809
  return /* @__PURE__ */ jsx(Badge, { color: MEMBERSHIP_STATUS_COLORS[status], size, variant, children: getStatusLabel(status) });
19000
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
+ }
19001
18818
  function OrganizationMembershipsList({
19002
18819
  memberships,
19003
18820
  loading,
@@ -23356,7 +23173,7 @@ Advanced personalization doubles reply rates: ~18% vs ~9% for generic.
23356
23173
  icon: "playbook",
23357
23174
  title: "Lead-Gen Playbook",
23358
23175
  summary: "Empirical benchmarks, threshold guidance, provider economics, and codified learnings from 3 completed batches of the lead-gen pipeline.",
23359
- 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)",
23360
23177
  links: [{ nodeId: "system:sales.lead-gen" }],
23361
23178
  ownerIds: [],
23362
23179
  updatedAt: "2026-05-02"
@@ -23509,8 +23326,8 @@ Advanced personalization doubles reply rates: ~18% vs ~9% for generic.
23509
23326
  kind: "playbook",
23510
23327
  icon: "playbook",
23511
23328
  title: "Social Monitoring",
23512
- 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.",
23513
- 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.",
23514
23331
  ownerIds: [],
23515
23332
  updatedAt: "2026-05-02"
23516
23333
  },
@@ -23644,7 +23461,7 @@ Each stage desensitizes one fear at a time. Never skip ahead. The goal is consis
23644
23461
  icon: "reference",
23645
23462
  title: "Platform Systems Overview",
23646
23463
  summary: "Authoritative overview of the Elevasis AI Orchestration Platform systems -- what's built, what each system does, and how the pieces fit together",
23647
- 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`.",
23648
23465
  links: [{ nodeId: "system:platform.projects" }],
23649
23466
  ownerIds: [],
23650
23467
  updatedAt: "2026-05-02"
@@ -27036,23 +26853,23 @@ var platformResourceDescriptors = defineResources(
27036
26853
  ]
27037
26854
  },
27038
26855
  {
27039
- id: "byron-voice-capture-agent",
26856
+ id: "local-test-agent",
27040
26857
  order: 10010,
27041
26858
  kind: "agent",
27042
- systemPath: "client-management",
27043
- title: "Byron Voice Capture Interview Agent",
27044
- description: "Dogfood interview agent that captures client voice, tone, messaging preferences, and examples as a session transcript.",
27045
- ownerRoleId: getPlatformOwnerRoleId("client-management"),
27046
- actsAsRoleId: getPlatformOwnerRoleId("client-management"),
26859
+ systemPath: "platform",
26860
+ title: "Local Test Agent",
26861
+ description: "Generic session-capable agent used to exercise the agent loop, session memory, and prompt assembly against a live model before platform changes reach a tenant.",
26862
+ ownerRoleId: getPlatformOwnerRoleId("platform"),
26863
+ actsAsRoleId: getPlatformOwnerRoleId("platform"),
27047
26864
  status: "active",
27048
26865
  codeRefs: [
27049
26866
  {
27050
- path: "packages/elevasis-operations/src/client-support/voice-capture-agent.ts",
26867
+ path: "packages/elevasis-operations/src/diagnostics/local-test-agent.ts",
27051
26868
  role: "entrypoint",
27052
- symbol: "byronVoiceCaptureAgent"
26869
+ symbol: "localTestAgent"
27053
26870
  },
27054
26871
  {
27055
- path: "packages/elevasis-operations/src/client-support/index.ts",
26872
+ path: "packages/elevasis-operations/src/diagnostics/index.ts",
27056
26873
  role: "config",
27057
26874
  symbol: "agents"
27058
26875
  },
@@ -27068,6 +26885,79 @@ var platformResourceDescriptors = defineResources(
27068
26885
  { kind: "api-endpoint", method: "POST", path: "/api/external/sessions" },
27069
26886
  { kind: "api-endpoint", method: "POST", path: "/api/external/sessions/:sessionId/turns" }
27070
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
+ ]
27071
26961
  }
27072
26962
  ].map((resource2) => [resource2.id, resource2])
27073
26963
  )
@@ -37546,7 +37436,6 @@ function AgentObjectView({ node, linkedNodes, registry, onSelectNode }) {
37546
37436
  { label: "Model Provider", value: extras.modelProvider },
37547
37437
  { label: "Model ID", value: extras.modelId },
37548
37438
  { label: "Tool Count", value: String(extras.toolCount) },
37549
- { label: "Knowledge Map", value: extras.hasKnowledgeMap ? "Yes" : "No" },
37550
37439
  { label: "Memory", value: extras.hasMemory ? "Yes" : "No" },
37551
37440
  { label: "Session Capable", value: extras.sessionCapable ? "Yes" : "No" }
37552
37441
  ] : [
@@ -44127,7 +44016,8 @@ function SessionConversationView({
44127
44016
  placeholder = "Message the agent...",
44128
44017
  onFirstSend,
44129
44018
  pendingFirstMessage,
44130
- onPendingSent
44019
+ onPendingSent,
44020
+ showAgentActivity = false
44131
44021
  }) {
44132
44022
  const [input, setInput] = useState("");
44133
44023
  const [isDraftSubmitting, setIsDraftSubmitting] = useState(false);
@@ -44188,7 +44078,8 @@ function SessionConversationView({
44188
44078
  onClearError: handleClearError,
44189
44079
  emptyStateText,
44190
44080
  emptyStateSubtext,
44191
- placeholder
44081
+ placeholder,
44082
+ showAgentActivity
44192
44083
  }
44193
44084
  );
44194
44085
  }
@@ -44380,7 +44271,6 @@ function getSessionView(search) {
44380
44271
  return new URLSearchParams(search).get("view") === "info" ? "info" : "chat";
44381
44272
  }
44382
44273
  function SessionHeader({ session: _session, connectionState, tokenUsage }) {
44383
- const mockTokenUsage = tokenUsage || { used: 45e3, total: 128e3 };
44384
44274
  return /* @__PURE__ */ jsx(
44385
44275
  ChatHeader,
44386
44276
  {
@@ -44389,7 +44279,7 @@ function SessionHeader({ session: _session, connectionState, tokenUsage }) {
44389
44279
  label: connectionState.isConnected ? "Connected" : "Disconnected",
44390
44280
  color: connectionState.isConnected ? "green" : "gray"
44391
44281
  },
44392
- contextUsage: mockTokenUsage
44282
+ contextUsage: tokenUsage
44393
44283
  }
44394
44284
  );
44395
44285
  }
@@ -47238,7 +47128,7 @@ function MemberAccessModal({ opened, onClose, orgId, member, defaultTab = "roles
47238
47128
  ] }) });
47239
47129
  }
47240
47130
  function RolesTabPanel({ orgId, member, onSaved }) {
47241
- const { data: rolesData, isLoading: rolesLoading } = useOrgRoles(orgId ?? void 0);
47131
+ const { data: rolesData, isLoading: rolesLoading } = useOrgRoles(orgId ? brandSupabaseOrgId(orgId) : void 0);
47242
47132
  const assignMutation = useAssignRole();
47243
47133
  const revokeMutation = useRevokeRole();
47244
47134
  const canManagePrivileged = useAccess(AccessKeys.rolesManage).allowed;
@@ -47323,7 +47213,7 @@ function transformMemberForModal(member) {
47323
47213
  };
47324
47214
  }
47325
47215
  function OrgMembersList({ orgId }) {
47326
- const { data: members, isLoading, error } = useOrganizationMembers(orgId);
47216
+ const { data: members, isLoading, error } = useOrganizationMembers(brandSupabaseOrgId(orgId));
47327
47217
  const [selectedMember, setSelectedMember] = useState(null);
47328
47218
  const [modalOpened, setModalOpened] = useState(false);
47329
47219
  const [defaultTab, setDefaultTab] = useState("roles");
@@ -47343,7 +47233,7 @@ function OrgMembersList({ orgId }) {
47343
47233
  ] }) });
47344
47234
  }
47345
47235
  if (error) {
47346
- 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" });
47347
47237
  }
47348
47238
  if (!members || members.length === 0) {
47349
47239
  return /* @__PURE__ */ jsx(EmptyState, { icon: IconUsers, title: "No members found" });
@@ -47372,7 +47262,10 @@ function OrgMembersList({ orgId }) {
47372
47262
  isSystem: true
47373
47263
  }
47374
47264
  ) }),
47375
- /* @__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
+ ] }) }),
47376
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 }) }) }) })
47377
47270
  ] }, member.id);
47378
47271
  }) })
@@ -50742,7 +50635,7 @@ function ConceptInfoControl({ description }) {
50742
50635
  var indexPromise = null;
50743
50636
  function loadSearchIndex() {
50744
50637
  if (!indexPromise) {
50745
- indexPromise = import('./knowledge-search-index-JOPRYZN6.js').then(
50638
+ indexPromise = import('./knowledge-search-index-6EZNBNSR.js').then(
50746
50639
  (mod) => buildSearchIndex(mod.default ?? mod)
50747
50640
  );
50748
50641
  }
@@ -51508,4 +51401,4 @@ function useAccess(key) {
51508
51401
  };
51509
51402
  }
51510
51403
 
51511
- 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 };