@elevasis/ui 2.17.2 → 2.19.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 (63) hide show
  1. package/dist/api/index.js +2 -2
  2. package/dist/app/index.js +5 -5
  3. package/dist/charts/index.js +3 -3
  4. package/dist/chunk-3JCMO7SD.js +14 -0
  5. package/dist/{chunk-TP5NMF6K.js → chunk-46Z2VHY3.js} +4 -4
  6. package/dist/{chunk-FNWWVX5N.js → chunk-5SCVXZPM.js} +358 -188
  7. package/dist/{chunk-TTP62HWW.js → chunk-BHR7IV72.js} +10 -15
  8. package/dist/{chunk-MJ6YV2B5.js → chunk-CTTY6FUT.js} +2 -2
  9. package/dist/{chunk-P3TFNFZS.js → chunk-EUWBY43Z.js} +2 -2
  10. package/dist/{chunk-MDO4UCEJ.js → chunk-IBOX2M24.js} +47 -82
  11. package/dist/{chunk-HH3RNG2O.js → chunk-JEQM67SO.js} +307 -173
  12. package/dist/{chunk-2TDZBYXI.js → chunk-LR5CRY5A.js} +1 -1
  13. package/dist/{chunk-JU6UB4YA.js → chunk-LVCJ2H2T.js} +4 -4
  14. package/dist/{chunk-GRGRBWIO.js → chunk-M7W7CGPL.js} +1 -1
  15. package/dist/{chunk-34NQLV2W.js → chunk-MJAKU2WA.js} +3 -3
  16. package/dist/{chunk-OCCZRPER.js → chunk-Q4QJOSVS.js} +1 -1
  17. package/dist/{chunk-R73EHHPN.js → chunk-Q5HC6ENG.js} +18 -2
  18. package/dist/{chunk-VDM6DQES.js → chunk-R7OJCNL3.js} +1 -1
  19. package/dist/{chunk-6RWMRQN5.js → chunk-TIIPYB2Z.js} +1 -1
  20. package/dist/{chunk-ABUDMATM.js → chunk-TKEKYPZA.js} +6 -6
  21. package/dist/{chunk-R7GKX4HW.js → chunk-UU6PJ4EJ.js} +192 -82
  22. package/dist/{chunk-7L42RRHZ.js → chunk-Y7TDUZEH.js} +221 -514
  23. package/dist/{chunk-7GCWOUFT.js → chunk-YVAXWM3W.js} +73 -121
  24. package/dist/components/index.d.ts +219 -2810
  25. package/dist/components/index.js +41 -27
  26. package/dist/features/crm/index.d.ts +54 -53
  27. package/dist/features/crm/index.js +11 -11
  28. package/dist/features/dashboard/index.js +12 -12
  29. package/dist/features/delivery/index.d.ts +2642 -2605
  30. package/dist/features/delivery/index.js +11 -11
  31. package/dist/features/lead-gen/index.d.ts +152 -16
  32. package/dist/features/lead-gen/index.js +11 -22
  33. package/dist/features/monitoring/index.js +13 -13
  34. package/dist/features/monitoring/requests/index.d.ts +38 -27
  35. package/dist/features/monitoring/requests/index.js +212 -106
  36. package/dist/features/operations/index.d.ts +9 -26
  37. package/dist/features/operations/index.js +15 -15
  38. package/dist/features/settings/index.d.ts +36 -37
  39. package/dist/features/settings/index.js +12 -12
  40. package/dist/hooks/delivery/index.d.ts +2712 -2699
  41. package/dist/hooks/delivery/index.js +2 -2
  42. package/dist/hooks/index.d.ts +1997 -4627
  43. package/dist/hooks/index.js +10 -10
  44. package/dist/hooks/published.d.ts +1997 -4627
  45. package/dist/hooks/published.js +10 -10
  46. package/dist/index.d.ts +1124 -3673
  47. package/dist/index.js +11 -11
  48. package/dist/layout/index.d.ts +14 -2
  49. package/dist/layout/index.js +1 -1
  50. package/dist/provider/index.d.ts +320 -249
  51. package/dist/provider/index.js +8 -8
  52. package/dist/provider/published.d.ts +320 -249
  53. package/dist/provider/published.js +5 -5
  54. package/dist/sse/index.d.ts +1 -6
  55. package/dist/theme/index.js +2 -2
  56. package/dist/types/index.d.ts +1608 -2487
  57. package/dist/utils/index.d.ts +32 -1
  58. package/dist/utils/index.js +1 -1
  59. package/dist/zustand/index.d.ts +4 -8
  60. package/dist/zustand/index.js +2 -2
  61. package/package.json +4 -4
  62. package/dist/chunk-ADSSLKKP.js +0 -10
  63. /package/dist/{chunk-GCBWGGI6.js → chunk-OD7GWIZS.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { SubshellContainer, SubshellSidebar, SubshellRightSideContainer } from './chunk-RX4UWZZR.js';
2
- import { FeatureUnavailableState } from './chunk-TTP62HWW.js';
2
+ import { FeatureUnavailableState } from './chunk-BHR7IV72.js';
3
3
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
4
4
  import { useInitialization } from './chunk-DK2HVHCY.js';
5
5
  import { useOrganization } from './chunk-DD3CCMCZ.js';
@@ -1,7 +1,7 @@
1
- import { useCyberColors, CyberLegendItem, CyberAreaChart } from './chunk-MJ6YV2B5.js';
2
- import { useResourcesHealth } from './chunk-R7GKX4HW.js';
3
- import { CardHeader, EmptyState } from './chunk-TTP62HWW.js';
4
- import { getTimeRangeDates, formatBucketTime } from './chunk-GCBWGGI6.js';
1
+ import { useCyberColors, CyberLegendItem, CyberAreaChart } from './chunk-CTTY6FUT.js';
2
+ import { useResourcesHealth } from './chunk-UU6PJ4EJ.js';
3
+ import { CardHeader, EmptyState } from './chunk-BHR7IV72.js';
4
+ import { getTimeRangeDates, formatBucketTime } from './chunk-OD7GWIZS.js';
5
5
  import { Paper, Center, Loader, Group } from '@mantine/core';
6
6
  import { IconActivity, IconChartBar } from '@tabler/icons-react';
7
7
  import { useMemo } from 'react';
@@ -1,4 +1,4 @@
1
- import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-GCBWGGI6.js';
1
+ import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-OD7GWIZS.js';
2
2
  import { useElevasisServices } from './chunk-IRW7JMQ4.js';
3
3
  import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
4
4
  import { notifications } from '@mantine/notifications';
@@ -1,9 +1,9 @@
1
- import { PRESETS, getPreset, generateShades, mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-R73EHHPN.js';
1
+ import { PRESETS, getPreset, generateShades, mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-Q5HC6ENG.js';
2
2
  import { AppBackground } from './chunk-WLOQ4IBG.js';
3
- import { ElevasisCoreProvider } from './chunk-P3TFNFZS.js';
3
+ import { ElevasisCoreProvider } from './chunk-EUWBY43Z.js';
4
4
  import { ElevasisLoader } from './chunk-SZHARWKU.js';
5
5
  import { AppearanceProvider } from './chunk-QJ2KCHKX.js';
6
- import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-GCBWGGI6.js';
6
+ import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-OD7GWIZS.js';
7
7
  import { useMemo, useEffect } from 'react';
8
8
  import { Loader, mergeThemeOverrides, MantineProvider } from '@mantine/core';
9
9
  import '@mantine/core/styles.css';
@@ -1,4 +1,4 @@
1
- import { ElevasisFeaturesProvider } from './chunk-2TDZBYXI.js';
1
+ import { ElevasisFeaturesProvider } from './chunk-LR5CRY5A.js';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
 
4
4
  function createTestFeaturesProvider({
@@ -473,8 +473,11 @@ var STYLE = `
473
473
  position: absolute;
474
474
  width: 200vmax;
475
475
  height: 200vmax;
476
- top: -115vmax;
477
- left: -50vmax;
476
+ /* Pin rotation center to (50vw, -25vh) so the origin stays at the
477
+ top-center of the viewport across all aspect ratios, matching the
478
+ origin-glow radial gradient at "50% -25%". */
479
+ top: calc(-25vh - 100vmax);
480
+ left: calc(50vw - 100vmax);
478
481
  animation: chrome-rotate 180s linear infinite;
479
482
  will-change: transform;
480
483
  }
@@ -485,6 +488,10 @@ var STYLE = `
485
488
  width: var(--chrome-beam-width, 200vmax);
486
489
  margin-left: calc(var(--chrome-beam-width, 200vmax) / -2);
487
490
  height: var(--chrome-beam-height, 32vmax);
491
+ /* Without this, the beam's vertical center is offset by half its height
492
+ from the wrapper center, so when the wrapper rotates the beam
493
+ convergence point orbits instead of staying pinned. */
494
+ margin-top: calc(var(--chrome-beam-height, 32vmax) / -2);
488
495
  filter: blur(55px);
489
496
  transform-origin: center;
490
497
  opacity: calc(var(--chrome-beam-opacity, 0.1) * var(--chrome-beam-intensity, 1));
@@ -2617,6 +2624,15 @@ var componentThemes = {
2617
2624
  padding: "xs"
2618
2625
  },
2619
2626
  styles: {
2627
+ header: {
2628
+ backgroundColor: "transparent"
2629
+ },
2630
+ title: {
2631
+ fontFamily: "var(--font-sans, var(--mantine-font-family))",
2632
+ fontSize: "var(--mantine-font-size-xl)",
2633
+ fontWeight: 600,
2634
+ color: "var(--color-text)"
2635
+ },
2620
2636
  content: {
2621
2637
  backgroundColor: "var(--color-elevated, var(--color-background))",
2622
2638
  ...glassBase
@@ -1,4 +1,4 @@
1
- import { APIClientError } from './chunk-GCBWGGI6.js';
1
+ import { APIClientError } from './chunk-OD7GWIZS.js';
2
2
  import { OrganizationContext } from './chunk-DD3CCMCZ.js';
3
3
  import { createContext, useContext, useMemo, useCallback } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- import { usePresetsContext } from './chunk-R73EHHPN.js';
1
+ import { usePresetsContext } from './chunk-Q5HC6ENG.js';
2
2
  import { useMemo } from 'react';
3
3
 
4
4
  var BUILT_IN_NAMES = /* @__PURE__ */ new Set([
@@ -1,12 +1,12 @@
1
1
  import { ResourceHealthChart } from './chunk-LGKLC5MG.js';
2
- import { useCyberColors, HeroStatsRow } from './chunk-MJ6YV2B5.js';
2
+ import { useCyberColors, HeroStatsRow } from './chunk-CTTY6FUT.js';
3
3
  import { AppShellCenteredContainer, AppShellLoader } from './chunk-M25JL54Z.js';
4
4
  import { STATUS_COLORS, getStatusIcon, formatDuration, getStatusColors, AGENT_CONSTANTS, shouldAnimateEdge, TIMELINE_CONSTANTS, calculateBarPosition, CONTAINER_CONSTANTS, useExecutionPath, useUnifiedWorkflowLayout, WORKFLOW_CONSTANTS, useReactFlowAgent } from './chunk-E4WQGJNS.js';
5
- import { useExecuteResource, useDashboardMetrics, useResources, useTimeRangeDates, useUnresolvedErrors, useRecentExecutionsByResource, useCommandQueue, useScheduledTasks, useResourcesHealth } from './chunk-R7GKX4HW.js';
5
+ import { useExecuteResource, useDashboardMetrics, useResources, useTimeRangeDates, useUnresolvedErrors, useRecentExecutionsByResource, useCommandQueue, useScheduledTasks, useResourcesHealth } from './chunk-UU6PJ4EJ.js';
6
6
  import { Graph_module_css_default, useDirectedChainHighlighting, useNodeSelection, useFitViewTrigger } from './chunk-22UVE3RA.js';
7
- import { glassBase } from './chunk-R73EHHPN.js';
8
- import { GlowDot, CardHeader, EmptyState, PageTitleCaption, TabCountBadge } from './chunk-TTP62HWW.js';
9
- import { formatTimeAgo, getTimeRangeDates, formatRelativeTime } from './chunk-GCBWGGI6.js';
7
+ import { glassBase } from './chunk-Q5HC6ENG.js';
8
+ import { GlowDot, CardHeader, EmptyState, PageTitleCaption, TabCountBadge } from './chunk-BHR7IV72.js';
9
+ import { formatTimeAgo, getTimeRangeDates, formatRelativeTime } from './chunk-OD7GWIZS.js';
10
10
  import { ResourceStatusColors } from './chunk-KRWALB24.js';
11
11
  import { useInitialization } from './chunk-DK2HVHCY.js';
12
12
  import { memo, useMemo, useEffect, useState, useCallback, Fragment } from 'react';
@@ -1682,7 +1682,7 @@ function OperationalOverview({
1682
1682
  const errors = errorData?.errors ?? [];
1683
1683
  const errorCount = errorData?.total ?? 0;
1684
1684
  const { data: allCommands } = useCommandQueue({ status: "pending", limit: 100 });
1685
- const commands = allCommands ?? [];
1685
+ const commands = allCommands?.tasks ?? [];
1686
1686
  const commandCount = commands.length;
1687
1687
  const { data: allTasks, isLoading: tasksLoading } = useScheduledTasks();
1688
1688
  const tasks = allTasks ?? [];
@@ -1,11 +1,11 @@
1
1
  import { useSupabase } from './chunk-BRXELOHC.js';
2
2
  import { observabilityKeys } from './chunk-QSTH6T77.js';
3
- import { showApiErrorNotification, showSuccessNotification, projectKeys, noteKeys, taskKeys, milestoneKeys } from './chunk-GRGRBWIO.js';
3
+ import { showApiErrorNotification, showSuccessNotification, projectKeys, noteKeys, taskKeys, milestoneKeys } from './chunk-M7W7CGPL.js';
4
4
  import { GRAPH_CONSTANTS } from './chunk-22UVE3RA.js';
5
- import { useOptionalElevasisFeatures } from './chunk-2TDZBYXI.js';
6
- import { useNotificationAdapter } from './chunk-P3TFNFZS.js';
7
- import { HTTP_HEADERS } from './chunk-VDM6DQES.js';
8
- import { UuidSchema, ResourceTypeSchema, NonEmptyStringSchema, OriginResourceTypeSchema, CredentialNameSchema, REFETCH_INTERVAL_DASHBOARD, getTimeRangeDates, STALE_TIME_MONITORING, REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, STALE_TIME_DEFAULT, STALE_TIME_ADMIN, APIClientError, GC_TIME_MEDIUM, GC_TIME_SHORT } from './chunk-GCBWGGI6.js';
5
+ import { useOptionalElevasisFeatures } from './chunk-LR5CRY5A.js';
6
+ import { useNotificationAdapter } from './chunk-EUWBY43Z.js';
7
+ import { HTTP_HEADERS } from './chunk-R7OJCNL3.js';
8
+ import { UuidSchema, ResourceTypeSchema, NonEmptyStringSchema, OriginResourceTypeSchema, CredentialNameSchema, REFETCH_INTERVAL_DASHBOARD, getTimeRangeDates, STALE_TIME_MONITORING, REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, STALE_TIME_DEFAULT, STALE_TIME_ADMIN, APIClientError, GC_TIME_MEDIUM, GC_TIME_SHORT } from './chunk-OD7GWIZS.js';
9
9
  import { useStableAccessToken } from './chunk-SLH2QLKV.js';
10
10
  import { useOrganization } from './chunk-DD3CCMCZ.js';
11
11
  import { useElevasisServices } from './chunk-IRW7JMQ4.js';
@@ -24,16 +24,14 @@ var executionsKeys = {
24
24
  all: ["executions"],
25
25
  resources: (orgId) => [...executionsKeys.all, "resources", orgId],
26
26
  resourceDefinition: (orgId, resourceId) => [...executionsKeys.all, "definition", orgId, resourceId],
27
- // NOTE: resourceStatus and limit intentionally excluded from queryKey for unified cache invalidation.
28
- // All filter variants share the same cache so SSE invalidations work across filters.
29
- executions: (orgId, resourceId) => [...executionsKeys.all, "list", orgId, resourceId],
27
+ executionsListBase: (orgId, resourceId) => [...executionsKeys.all, "list", orgId, resourceId],
28
+ executions: (orgId, resourceId, resourceStatus, limit, offset) => [...executionsKeys.executionsListBase(orgId, resourceId), resourceStatus ?? "all", limit ?? null, offset ?? 0],
30
29
  execution: (orgId, resourceId, executionId) => [...executionsKeys.all, "execution", orgId, resourceId, executionId]
31
30
  };
32
- function useExecutions(resourceId, resourceStatus, limit) {
31
+ function useExecutions(resourceId, resourceStatus, limit, offset) {
33
32
  const { apiRequest, organizationId, isReady } = useElevasisServices();
34
33
  return useQuery({
35
- // eslint-disable-next-line @tanstack/query/exhaustive-deps
36
- queryKey: executionsKeys.executions(organizationId, resourceId),
34
+ queryKey: executionsKeys.executions(organizationId, resourceId, resourceStatus, limit, offset),
37
35
  queryFn: async () => {
38
36
  const params = new URLSearchParams();
39
37
  if (resourceStatus && resourceStatus !== "all") {
@@ -42,6 +40,9 @@ function useExecutions(resourceId, resourceStatus, limit) {
42
40
  if (limit) {
43
41
  params.set("limit", String(limit));
44
42
  }
43
+ if (offset !== void 0) {
44
+ params.set("offset", String(offset));
45
+ }
45
46
  const queryString = params.toString();
46
47
  const endpoint = `/execution-engine/executions/${resourceId}${queryString ? `?${queryString}` : ""}`;
47
48
  return apiRequest(endpoint);
@@ -75,7 +76,7 @@ function useExecuteAsync() {
75
76
  },
76
77
  onSuccess: (data) => {
77
78
  queryClient.invalidateQueries({
78
- queryKey: executionsKeys.executions(organizationId, data.resourceId)
79
+ queryKey: executionsKeys.executionsListBase(organizationId, data.resourceId)
79
80
  });
80
81
  }
81
82
  });
@@ -93,7 +94,7 @@ function useRetryExecution() {
93
94
  },
94
95
  onSuccess: (data) => {
95
96
  queryClient.invalidateQueries({
96
- queryKey: executionsKeys.executions(organizationId, data.resourceId)
97
+ queryKey: executionsKeys.executionsListBase(organizationId, data.resourceId)
97
98
  });
98
99
  }
99
100
  });
@@ -114,7 +115,7 @@ function useCancelExecution() {
114
115
  queryKey: executionsKeys.execution(organizationId, data.resourceId, data.executionId)
115
116
  });
116
117
  queryClient.invalidateQueries({
117
- queryKey: executionsKeys.executions(organizationId, data.resourceId)
118
+ queryKey: executionsKeys.executionsListBase(organizationId, data.resourceId)
118
119
  });
119
120
  }
120
121
  });
@@ -134,7 +135,7 @@ function useDeleteExecution() {
134
135
  queryKey: executionsKeys.execution(organizationId, data.resourceId, data.executionId)
135
136
  });
136
137
  queryClient.invalidateQueries({
137
- queryKey: executionsKeys.executions(organizationId, data.resourceId)
138
+ queryKey: executionsKeys.executionsListBase(organizationId, data.resourceId)
138
139
  });
139
140
  }
140
141
  });
@@ -161,7 +162,7 @@ function useBulkDeleteExecutions() {
161
162
  },
162
163
  onSuccess: (data) => {
163
164
  queryClient.invalidateQueries({
164
- queryKey: executionsKeys.executions(organizationId, data.resourceId)
165
+ queryKey: executionsKeys.executionsListBase(organizationId, data.resourceId)
165
166
  });
166
167
  }
167
168
  });
@@ -828,7 +829,7 @@ function useExecutionLogSSE(resourceId, manager, apiUrl) {
828
829
  return updated;
829
830
  });
830
831
  queryClient.invalidateQueries({
831
- queryKey: executionsKeys.executions(organizationId, resourceId)
832
+ queryKey: executionsKeys.executionsListBase(organizationId, resourceId)
832
833
  });
833
834
  }
834
835
  break;
@@ -845,7 +846,7 @@ function useExecutionLogSSE(resourceId, manager, apiUrl) {
845
846
  return updated;
846
847
  });
847
848
  queryClient.invalidateQueries({
848
- queryKey: executionsKeys.executions(organizationId, resourceId)
849
+ queryKey: executionsKeys.executionsListBase(organizationId, resourceId)
849
850
  });
850
851
  queryClient.invalidateQueries({
851
852
  queryKey: executionsKeys.execution(organizationId, resourceId, event.executionId)
@@ -2181,12 +2182,15 @@ function useCommandQueue({
2181
2182
  if (limit !== void 0) params.set("limit", String(limit));
2182
2183
  if (offset !== void 0) params.set("offset", String(offset));
2183
2184
  const response = await apiRequest(`/command-queue?${params.toString()}`);
2184
- return response.tasks.map((task) => ({
2185
- ...task,
2186
- createdAt: new Date(task.createdAt),
2187
- completedAt: task.completedAt ? new Date(task.completedAt) : void 0,
2188
- expiresAt: task.expiresAt ? new Date(task.expiresAt) : void 0
2189
- }));
2185
+ return {
2186
+ ...response,
2187
+ tasks: response.tasks.map((task) => ({
2188
+ ...task,
2189
+ createdAt: new Date(task.createdAt),
2190
+ completedAt: task.completedAt ? new Date(task.completedAt) : void 0,
2191
+ expiresAt: task.expiresAt ? new Date(task.expiresAt) : void 0
2192
+ }))
2193
+ };
2190
2194
  },
2191
2195
  enabled: isReady
2192
2196
  });
@@ -2215,7 +2219,10 @@ function useSubmitAction() {
2215
2219
  if (data) {
2216
2220
  queryClient.setQueryData(
2217
2221
  queryKey,
2218
- (old) => old?.map((task) => task.id === taskId ? { ...task, status: "processing" } : task)
2222
+ (old) => old ? {
2223
+ ...old,
2224
+ tasks: old.tasks.map((task) => task.id === taskId ? { ...task, status: "processing" } : task)
2225
+ } : old
2219
2226
  );
2220
2227
  }
2221
2228
  }
@@ -2250,7 +2257,18 @@ function useDeleteTask() {
2250
2257
  for (const [queryKey, data] of queries) {
2251
2258
  previousData.set(queryKey, data);
2252
2259
  if (data) {
2253
- queryClient.setQueryData(queryKey, (old) => old?.filter((task) => task.id !== taskId));
2260
+ queryClient.setQueryData(
2261
+ queryKey,
2262
+ (old) => old ? (() => {
2263
+ const hadTask = old.tasks.some((task) => task.id === taskId);
2264
+ if (!hadTask) return old;
2265
+ return {
2266
+ ...old,
2267
+ tasks: old.tasks.filter((task) => task.id !== taskId),
2268
+ total: Math.max(old.total - 1, 0)
2269
+ };
2270
+ })() : old
2271
+ );
2254
2272
  }
2255
2273
  }
2256
2274
  return { previousData };
@@ -2270,7 +2288,7 @@ function useDeleteTask() {
2270
2288
  });
2271
2289
  }
2272
2290
  function useCommandQueueTotals({
2273
- timeRange = "24h",
2291
+ timeRange = "30d",
2274
2292
  priorityMin,
2275
2293
  priorityMax,
2276
2294
  status
@@ -2313,7 +2331,10 @@ function usePatchTask() {
2313
2331
  };
2314
2332
  queryClient.setQueriesData(
2315
2333
  { queryKey: ["command-queue", "list"] },
2316
- (old) => old?.map((t) => t.id === deserialized.id ? { ...t, ...deserialized } : t)
2334
+ (old) => old ? {
2335
+ ...old,
2336
+ tasks: old.tasks.map((t) => t.id === deserialized.id ? { ...t, ...deserialized } : t)
2337
+ } : old
2317
2338
  );
2318
2339
  },
2319
2340
  onError: (error) => {
@@ -2380,11 +2401,25 @@ function useUpdateRequestStatus() {
2380
2401
  }
2381
2402
  });
2382
2403
  }
2404
+ function useDeleteRequest() {
2405
+ const { apiRequest } = useElevasisServices();
2406
+ const queryClient = useQueryClient();
2407
+ return useMutation({
2408
+ mutationFn: async (id) => {
2409
+ await apiRequest(`/requests/${id}`, { method: "DELETE" });
2410
+ return id;
2411
+ },
2412
+ onSuccess: () => {
2413
+ queryClient.invalidateQueries({ queryKey: requestsKeys.lists() });
2414
+ }
2415
+ });
2416
+ }
2383
2417
  function useExecutionPanelState({
2384
2418
  resourceId,
2385
2419
  manager,
2386
2420
  apiUrl,
2387
2421
  limit,
2422
+ offset,
2388
2423
  onConnectionStatus,
2389
2424
  selectedId: controlledSelectedId,
2390
2425
  onSelectedIdChange
@@ -2393,7 +2428,7 @@ function useExecutionPanelState({
2393
2428
  const navigate = useNavigate();
2394
2429
  const { organizationId } = useElevasisServices();
2395
2430
  const [resourceStatusFilter, setResourceStatusFilter] = useState("all");
2396
- const { data: executionsData, isLoading, isFetched } = useExecutions(resourceId, resourceStatusFilter, limit);
2431
+ const { data: executionsData, isLoading, isFetched } = useExecutions(resourceId, resourceStatusFilter, limit, offset);
2397
2432
  const { liveExecutions, connected, runningCount, streamingLogs } = useExecutionLogSSE(resourceId, manager, apiUrl);
2398
2433
  const isControlled = controlledSelectedId !== void 0;
2399
2434
  const search = useSearch({ strict: false });
@@ -2413,6 +2448,7 @@ function useExecutionPanelState({
2413
2448
  [isControlled, navigate, onSelectedIdChange]
2414
2449
  );
2415
2450
  const executions = executionsData?.executions || [];
2451
+ const total = executionsData?.total ?? executions.length;
2416
2452
  const prevExecutionCountRef = useRef(0);
2417
2453
  const prevNewestIdRef = useRef(void 0);
2418
2454
  const prevResourceIdRef = useRef(resourceId);
@@ -2465,6 +2501,7 @@ function useExecutionPanelState({
2465
2501
  }, [connected, runningCount, onConnectionStatus]);
2466
2502
  return {
2467
2503
  executions,
2504
+ total,
2468
2505
  isLoading,
2469
2506
  isFetched,
2470
2507
  selectedId,
@@ -2497,7 +2534,7 @@ function useCommandViewData() {
2497
2534
  staleTime: STALE_TIME_DEFAULT
2498
2535
  });
2499
2536
  }
2500
- function useCommandViewStats(timeRange = "24h", options) {
2537
+ function useCommandViewStats(timeRange = "30d", options) {
2501
2538
  const { apiRequest, organizationId, isReady } = useElevasisServices();
2502
2539
  return useQuery({
2503
2540
  queryKey: ["command-view-stats", organizationId, timeRange],
@@ -2741,13 +2778,19 @@ function useResourceErrors({ resourceId, timeRange, hasFailures }) {
2741
2778
  staleTime: STALE_TIME_ADMIN
2742
2779
  });
2743
2780
  }
2744
- function useResourceExecutions({ resourceId, timeRange, enabled = true }) {
2781
+ function useResourceExecutions({
2782
+ resourceId,
2783
+ timeRange,
2784
+ page = 1,
2785
+ limit = 10,
2786
+ enabled = true
2787
+ }) {
2745
2788
  const { apiRequest, organizationId, isReady } = useElevasisServices();
2746
2789
  return useQuery({
2747
- queryKey: ["resource-executions", organizationId, resourceId, timeRange],
2790
+ queryKey: ["resource-executions", organizationId, resourceId, timeRange, page, limit],
2748
2791
  queryFn: async () => {
2749
2792
  return apiRequest(
2750
- `/command-view/resource-executions?resourceId=${resourceId}&timeRange=${timeRange}`
2793
+ `/command-view/resource-executions?resourceId=${resourceId}&timeRange=${timeRange}&page=${page}&limit=${limit}`
2751
2794
  );
2752
2795
  },
2753
2796
  // Only fetch when: org ready, resource selected, and enabled
@@ -3111,7 +3154,8 @@ function useSyncDealStage() {
3111
3154
  });
3112
3155
  },
3113
3156
  onSuccess: (_, variables) => {
3114
- queryClient.invalidateQueries({ queryKey: ["deals", organizationId] });
3157
+ queryClient.invalidateQueries({ queryKey: dealKeys.lists() });
3158
+ queryClient.invalidateQueries({ queryKey: dealKeys.summaries() });
3115
3159
  queryClient.invalidateQueries({ queryKey: ["deal-detail", organizationId, variables.dealId] });
3116
3160
  },
3117
3161
  onError: (error) => {
@@ -3354,6 +3398,7 @@ function useDeleteList() {
3354
3398
  var companyKeys = {
3355
3399
  all: ["acquisition-companies"],
3356
3400
  list: (organizationId, filters) => [...companyKeys.all, "list", organizationId, filters],
3401
+ facets: (organizationId) => [...companyKeys.all, "facets", organizationId],
3357
3402
  detail: (organizationId, companyId) => [...companyKeys.all, "detail", organizationId, companyId]
3358
3403
  };
3359
3404
  function buildQueryString(params) {
@@ -3378,25 +3423,24 @@ function useCompanies(filters = {}) {
3378
3423
  segment: filters.segment,
3379
3424
  category: filters.category,
3380
3425
  batchId: filters.batchId,
3381
- status: filters.status
3426
+ status: filters.status,
3427
+ includeAll: filters.includeAll,
3428
+ limit: filters.limit,
3429
+ offset: filters.offset
3382
3430
  });
3383
- const [companies, contacts] = await Promise.all([
3384
- apiRequest(`/acquisition/companies${queryString}`),
3385
- apiRequest("/acquisition/contacts?limit=5000&offset=0")
3386
- ]);
3387
- const contactCountByCompanyId = /* @__PURE__ */ new Map();
3388
- for (const contact of contacts.data) {
3389
- if (!contact.companyId) continue;
3390
- contactCountByCompanyId.set(contact.companyId, (contactCountByCompanyId.get(contact.companyId) ?? 0) + 1);
3391
- }
3392
- return companies.map((company) => ({
3393
- ...company,
3394
- contactCount: contactCountByCompanyId.get(company.id) ?? 0
3395
- }));
3431
+ return apiRequest(`/acquisition/companies${queryString}`);
3396
3432
  },
3397
3433
  enabled: isReady && !!organizationId
3398
3434
  });
3399
3435
  }
3436
+ function useCompanyFacets() {
3437
+ const { apiRequest, isReady, organizationId } = useElevasisServices();
3438
+ return useQuery({
3439
+ queryKey: companyKeys.facets(organizationId),
3440
+ queryFn: () => apiRequest("/acquisition/companies/facets"),
3441
+ enabled: isReady && !!organizationId
3442
+ });
3443
+ }
3400
3444
  function useCompany(companyId) {
3401
3445
  const { apiRequest, isReady, organizationId } = useElevasisServices();
3402
3446
  return useQuery({
@@ -3497,21 +3541,10 @@ function useContacts(filters = {}) {
3497
3541
  openingLineIsNull: filters.openingLineIsNull,
3498
3542
  batchId: filters.batchId,
3499
3543
  contactStatus: filters.contactStatus,
3500
- limit: filters.limit ?? 5e3,
3501
- offset: filters.offset ?? 0
3544
+ limit: filters.limit,
3545
+ offset: filters.offset
3502
3546
  });
3503
- const [contacts, companies] = await Promise.all([
3504
- apiRequest(`/acquisition/contacts${queryString}`),
3505
- apiRequest("/acquisition/companies?includeAll=true")
3506
- ]);
3507
- const companyById = /* @__PURE__ */ new Map();
3508
- for (const company of companies) {
3509
- companyById.set(company.id, company);
3510
- }
3511
- return contacts.data.map((contact) => ({
3512
- ...contact,
3513
- company: contact.companyId ? companyById.get(contact.companyId) ?? null : null
3514
- }));
3547
+ return apiRequest(`/acquisition/contacts${queryString}`);
3515
3548
  },
3516
3549
  enabled: isReady && !!organizationId
3517
3550
  });
@@ -3522,16 +3555,7 @@ function useContact(contactId) {
3522
3555
  queryKey: contactKeys.detail(organizationId, contactId),
3523
3556
  queryFn: async () => {
3524
3557
  if (!contactId) return null;
3525
- const contact = await apiRequest(`/acquisition/contacts/${contactId}`);
3526
- const companies = await apiRequest("/acquisition/companies?includeAll=true");
3527
- const companyById = /* @__PURE__ */ new Map();
3528
- for (const company of companies) {
3529
- companyById.set(company.id, company);
3530
- }
3531
- return {
3532
- ...contact,
3533
- company: contact.companyId ? companyById.get(contact.companyId) ?? null : null
3534
- };
3558
+ return apiRequest(`/acquisition/contacts/${contactId}`);
3535
3559
  },
3536
3560
  enabled: isReady && !!organizationId && !!contactId
3537
3561
  });
@@ -3716,28 +3740,111 @@ function useListWebhookEndpoints() {
3716
3740
  }
3717
3741
 
3718
3742
  // src/hooks/acquisition/useDeals.ts
3743
+ var DEFAULT_DEALS_LIMIT = 50;
3744
+ var DEFAULT_DEALS_OFFSET = 0;
3745
+ var DEFAULT_LOOKUP_LIMIT = 10;
3746
+ function normalizeSearch(search) {
3747
+ const trimmed = search?.trim();
3748
+ return trimmed ? trimmed : void 0;
3749
+ }
3750
+ function normalizeDealFilters(filters = {}) {
3751
+ return {
3752
+ ...filters,
3753
+ search: normalizeSearch(filters.search),
3754
+ limit: filters.limit ?? DEFAULT_DEALS_LIMIT,
3755
+ offset: filters.offset ?? DEFAULT_DEALS_OFFSET
3756
+ };
3757
+ }
3758
+ function normalizeLookupFilters(filters = {}) {
3759
+ return {
3760
+ ...filters,
3761
+ search: normalizeSearch(filters.search),
3762
+ limit: filters.limit ?? DEFAULT_LOOKUP_LIMIT
3763
+ };
3764
+ }
3719
3765
  var dealKeys = {
3720
3766
  all: ["deals"],
3721
3767
  lists: () => [...dealKeys.all, "list"],
3722
3768
  list: (orgId, filters) => [...dealKeys.all, "list", orgId, filters],
3769
+ summaries: () => [...dealKeys.all, "summary"],
3770
+ summary: (orgId) => [...dealKeys.all, "summary", orgId],
3771
+ lookups: () => [...dealKeys.all, "lookup"],
3772
+ lookup: (orgId, filters) => [...dealKeys.all, "lookup", orgId, filters],
3723
3773
  details: () => [...dealKeys.all, "detail"],
3724
3774
  detail: (id) => [...dealKeys.all, "detail", id]
3725
3775
  };
3726
3776
  function useDeals(filters = {}) {
3727
3777
  const { apiRequest, isReady, organizationId } = useElevasisServices();
3728
- return useQuery({
3729
- queryKey: dealKeys.list(organizationId, filters),
3778
+ const normalizedFilters = normalizeDealFilters(filters);
3779
+ const query = useQuery({
3780
+ queryKey: dealKeys.list(organizationId, normalizedFilters),
3730
3781
  queryFn: async () => {
3731
3782
  const params = new URLSearchParams();
3732
- if (filters.stage) params.set("stage", filters.stage);
3733
- if (filters.search) params.set("search", filters.search);
3734
- const qs = params.toString();
3735
- const data = await apiRequest(`/deals${qs ? `?${qs}` : ""}`);
3736
- return data;
3783
+ if (normalizedFilters.stage) params.set("stage", normalizedFilters.stage);
3784
+ if (normalizedFilters.search) params.set("search", normalizedFilters.search);
3785
+ params.set("limit", String(normalizedFilters.limit));
3786
+ params.set("offset", String(normalizedFilters.offset));
3787
+ return apiRequest(`/deals?${params.toString()}`);
3788
+ },
3789
+ enabled: isReady
3790
+ });
3791
+ const response = query.data;
3792
+ return {
3793
+ dataUpdatedAt: query.dataUpdatedAt,
3794
+ error: query.error,
3795
+ errorUpdatedAt: query.errorUpdatedAt,
3796
+ failureCount: query.failureCount,
3797
+ failureReason: query.failureReason,
3798
+ fetchStatus: query.fetchStatus,
3799
+ isError: query.isError,
3800
+ isFetched: query.isFetched,
3801
+ isFetchedAfterMount: query.isFetchedAfterMount,
3802
+ isFetching: query.isFetching,
3803
+ isInitialLoading: query.isInitialLoading,
3804
+ isLoading: query.isLoading,
3805
+ isLoadingError: query.isLoadingError,
3806
+ isPaused: query.isPaused,
3807
+ isPending: query.isPending,
3808
+ isPlaceholderData: query.isPlaceholderData,
3809
+ isRefetchError: query.isRefetchError,
3810
+ isRefetching: query.isRefetching,
3811
+ isRefetchStale: query.isStale,
3812
+ isSuccess: query.isSuccess,
3813
+ refetch: query.refetch,
3814
+ status: query.status,
3815
+ data: response?.data ?? [],
3816
+ response,
3817
+ total: response?.total ?? 0,
3818
+ limit: response?.limit ?? normalizedFilters.limit,
3819
+ offset: response?.offset ?? normalizedFilters.offset,
3820
+ hasNextPage: (response?.offset ?? normalizedFilters.offset) + (response?.data.length ?? 0) < (response?.total ?? 0),
3821
+ hasPreviousPage: (response?.offset ?? normalizedFilters.offset) > 0
3822
+ };
3823
+ }
3824
+ function useDealsSummary() {
3825
+ const { apiRequest, isReady, organizationId } = useElevasisServices();
3826
+ return useQuery({
3827
+ queryKey: dealKeys.summary(organizationId),
3828
+ queryFn: async () => {
3829
+ return apiRequest("/deals/summary");
3737
3830
  },
3738
3831
  enabled: isReady
3739
3832
  });
3740
3833
  }
3834
+ function useDealsLookup(filters = {}, options) {
3835
+ const { apiRequest, isReady, organizationId } = useElevasisServices();
3836
+ const normalizedFilters = normalizeLookupFilters(filters);
3837
+ return useQuery({
3838
+ queryKey: dealKeys.lookup(organizationId, normalizedFilters),
3839
+ queryFn: async () => {
3840
+ const params = new URLSearchParams();
3841
+ if (normalizedFilters.search) params.set("search", normalizedFilters.search);
3842
+ params.set("limit", String(normalizedFilters.limit));
3843
+ return apiRequest(`/deals/lookup?${params.toString()}`);
3844
+ },
3845
+ enabled: isReady && (options?.enabled ?? true)
3846
+ });
3847
+ }
3741
3848
  function useDeleteDeal() {
3742
3849
  const { apiRequest, organizationId } = useElevasisServices();
3743
3850
  const queryClient = useQueryClient();
@@ -3745,8 +3852,11 @@ function useDeleteDeal() {
3745
3852
  mutationFn: async (dealId) => {
3746
3853
  await apiRequest(`/deals/${dealId}`, { method: "DELETE" });
3747
3854
  },
3748
- onSuccess: () => {
3749
- queryClient.invalidateQueries({ queryKey: ["deals", organizationId] });
3855
+ onSuccess: (_, dealId) => {
3856
+ queryClient.removeQueries({ queryKey: ["deal-detail", organizationId, dealId], exact: true });
3857
+ queryClient.invalidateQueries({ queryKey: dealKeys.lists() });
3858
+ queryClient.invalidateQueries({ queryKey: dealKeys.summaries() });
3859
+ queryClient.invalidateQueries({ queryKey: dealKeys.lookups() });
3750
3860
  },
3751
3861
  onError: (error) => {
3752
3862
  showApiErrorNotification(error);
@@ -4300,4 +4410,4 @@ function useProjectRealtime(projectId) {
4300
4410
  });
4301
4411
  }
4302
4412
 
4303
- export { ApiKeyService, CredentialSchemas, CredentialService, DeploymentService, MEMBERSHIP_STATUS_COLORS, OperationsService, OrganizationMembershipService, WebhookEndpointService, acquisitionListKeys, companyKeys, contactKeys, dealKeys, dealNoteKeys, dealTaskKeys, executionsKeys, filterByDomainFilters, isSessionCapable, operationsKeys, projectActivityKeys, requestsKeys, scheduleKeys, sessionsKeys, sortData, transformMembershipToTableRow, useActivateDeployment, useActivities, useActivitiesRealtime, useActivityFilters, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchTelemetry, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewDomainFilters, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCompanies, useCompany, useCompleteDealTask, useContact, useContacts, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateApiKey, useCreateCompany, useCreateContact, useCreateCredential, useCreateDealNote, useCreateDealTask, useCreateList, useCreateSchedule, useCreateSession, useCreateWebhookEndpoint, useCredentials, useDashboardMetrics, useDeactivateDeployment, useDeactivateMembership, useDealDetail, useDealNotes, useDealTasks, useDealTasksDue, useDeals, useDeleteApiKey, useDeleteCompanies, useDeleteContacts, useDeleteCredential, useDeleteDeal, useDeleteDeployment, useDeleteExecution, useDeleteList, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeleteWebhookEndpoint, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecuteResource, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionLogsFilters, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useList, useListApiKeys, useListDeployments, useListExecutions, useListProgress, useListSchedules, useListWebhookEndpoints, useLists, useListsTelemetry, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, useOrganizationMembers, usePaginationState, usePatchTask, usePauseSchedule, useProjectActivities, useProjectRealtime, useReactivateMembership, useRecentExecutionsByResource, useRequest, useRequestsList, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResourceSearch, useResources, useResourcesDomainFilters, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useStatusFilter, useSubmitAction, useSuccessNotification, useSyncDealStage, useTableSelection, useTableSort, useTestNotification, useTimeRangeDates, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateApiKey, useUpdateCompany, useUpdateContact, useUpdateCredential, useUpdateList, useUpdateListConfig, useUpdateMemberConfig, useUpdateRequestStatus, useUpdateSchedule, useUpdateWebhookEndpoint, useUserMemberships, useVisibleResources, useWarningNotification };
4413
+ export { ApiKeyService, CredentialSchemas, CredentialService, DeploymentService, MEMBERSHIP_STATUS_COLORS, OperationsService, OrganizationMembershipService, WebhookEndpointService, acquisitionListKeys, companyKeys, contactKeys, dealKeys, dealNoteKeys, dealTaskKeys, executionsKeys, filterByDomainFilters, isSessionCapable, operationsKeys, projectActivityKeys, requestsKeys, scheduleKeys, sessionsKeys, sortData, transformMembershipToTableRow, useActivateDeployment, useActivities, useActivitiesRealtime, useActivityFilters, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchTelemetry, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewDomainFilters, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCompanies, useCompany, useCompanyFacets, useCompleteDealTask, useContact, useContacts, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateApiKey, useCreateCompany, useCreateContact, useCreateCredential, useCreateDealNote, useCreateDealTask, useCreateList, useCreateSchedule, useCreateSession, useCreateWebhookEndpoint, useCredentials, useDashboardMetrics, useDeactivateDeployment, useDeactivateMembership, useDealDetail, useDealNotes, useDealTasks, useDealTasksDue, useDeals, useDealsLookup, useDealsSummary, useDeleteApiKey, useDeleteCompanies, useDeleteContacts, useDeleteCredential, useDeleteDeal, useDeleteDeployment, useDeleteExecution, useDeleteList, useDeleteRequest, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeleteWebhookEndpoint, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecuteResource, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionLogsFilters, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useList, useListApiKeys, useListDeployments, useListExecutions, useListProgress, useListSchedules, useListWebhookEndpoints, useLists, useListsTelemetry, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, useOrganizationMembers, usePaginationState, usePatchTask, usePauseSchedule, useProjectActivities, useProjectRealtime, useReactivateMembership, useRecentExecutionsByResource, useRequest, useRequestsList, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResourceSearch, useResources, useResourcesDomainFilters, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useStatusFilter, useSubmitAction, useSuccessNotification, useSyncDealStage, useTableSelection, useTableSort, useTestNotification, useTimeRangeDates, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateApiKey, useUpdateCompany, useUpdateContact, useUpdateCredential, useUpdateList, useUpdateListConfig, useUpdateMemberConfig, useUpdateRequestStatus, useUpdateSchedule, useUpdateWebhookEndpoint, useUserMemberships, useVisibleResources, useWarningNotification };