@elevasis/ui 1.3.0 → 1.3.2
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.
- package/dist/CoreAuthKitInner-3J4RVQO6.js +43 -0
- package/dist/api/index.d.ts +7 -31
- package/dist/api/index.js +3 -2
- package/dist/auth/context.d.ts +23 -5
- package/dist/auth/guards/AdminGuard.d.ts +32 -0
- package/dist/auth/guards/AdminGuard.d.ts.map +1 -0
- package/dist/auth/guards/ProtectedRoute.d.ts +60 -0
- package/dist/auth/guards/ProtectedRoute.d.ts.map +1 -0
- package/dist/auth/guards/__tests__/AdminGuard.test.d.ts +12 -0
- package/dist/auth/guards/__tests__/AdminGuard.test.d.ts.map +1 -0
- package/dist/auth/guards/__tests__/ProtectedRoute.test.d.ts +14 -0
- package/dist/auth/guards/__tests__/ProtectedRoute.test.d.ts.map +1 -0
- package/dist/auth/index.d.ts +14 -171
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +5 -6
- package/dist/{chunk-FDCVFCOQ.js → chunk-2JBWPFHF.js} +23 -20
- package/dist/{chunk-BZTA7IIL.js → chunk-6IX5JZEH.js} +358 -4
- package/dist/chunk-FWZJH3TL.js +13 -0
- package/dist/chunk-GIFAF5ZS.js +313 -0
- package/dist/chunk-JGJSZ3UE.js +47 -0
- package/dist/chunk-JQLT6HBI.js +850 -0
- package/dist/{chunk-4KAG5U7A.js → chunk-L2CM2CUA.js} +0 -2
- package/dist/chunk-LFYO3MDC.js +58 -0
- package/dist/{chunk-OLD3NQLI.js → chunk-LTQAAIGE.js} +13 -17
- package/dist/{chunk-QQOLC46E.js → chunk-NEK6JKPW.js} +1 -1
- package/dist/{chunk-SITSZUFW.js → chunk-PVVQTENF.js} +1 -1
- package/dist/{chunk-FLJXZ7YC.js → chunk-SFF5MJEI.js} +2 -4
- package/dist/{chunk-EZMRFWZQ.js → chunk-U34YGJQB.js} +2 -94
- package/dist/{chunk-BWCC6ZJC.js → chunk-XLV6LYN2.js} +15 -60
- package/dist/components/index.d.ts +1 -1353
- package/dist/components/index.js +1 -20
- package/dist/components/navigation/index.d.ts +2 -32
- package/dist/components/navigation/index.js +1 -29
- package/dist/execution/index.d.ts +63 -231
- package/dist/execution/index.js +1 -4
- package/dist/graph/index.css +0 -1
- package/dist/graph/index.d.ts +4 -203
- package/dist/graph/index.js +1 -1
- package/dist/hooks/command-queue/index.d.ts +7 -0
- package/dist/hooks/command-queue/index.d.ts.map +1 -0
- package/dist/hooks/command-queue/useCommandQueue.d.ts +33 -0
- package/dist/hooks/command-queue/useCommandQueue.d.ts.map +1 -0
- package/dist/hooks/command-queue/useCommandQueueTotals.d.ts +17 -0
- package/dist/hooks/command-queue/useCommandQueueTotals.d.ts.map +1 -0
- package/dist/hooks/command-queue/useDeleteTask.d.ts +5 -0
- package/dist/hooks/command-queue/useDeleteTask.d.ts.map +1 -0
- package/dist/hooks/command-queue/usePatchTask.d.ts +6 -0
- package/dist/hooks/command-queue/usePatchTask.d.ts.map +1 -0
- package/dist/hooks/command-queue/useSubmitAction.d.ts +29 -0
- package/dist/hooks/command-queue/useSubmitAction.d.ts.map +1 -0
- package/dist/hooks/executions/index.d.ts +16 -0
- package/dist/hooks/executions/index.d.ts.map +1 -0
- package/dist/hooks/executions/useBulkDeleteExecutions.d.ts +15 -0
- package/dist/hooks/executions/useBulkDeleteExecutions.d.ts.map +1 -0
- package/dist/hooks/executions/useCancelExecution.d.ts +20 -0
- package/dist/hooks/executions/useCancelExecution.d.ts.map +1 -0
- package/dist/hooks/executions/useDeleteExecution.d.ts +13 -0
- package/dist/hooks/executions/useDeleteExecution.d.ts.map +1 -0
- package/dist/hooks/executions/useExecuteAsync.d.ts +21 -0
- package/dist/hooks/executions/useExecuteAsync.d.ts.map +1 -0
- package/dist/hooks/executions/useExecution.d.ts +10 -0
- package/dist/hooks/executions/useExecution.d.ts.map +1 -0
- package/dist/hooks/executions/useExecutions.d.ts +16 -0
- package/dist/hooks/executions/useExecutions.d.ts.map +1 -0
- package/dist/hooks/executions/useResourceDefinition.d.ts +9 -0
- package/dist/hooks/executions/useResourceDefinition.d.ts.map +1 -0
- package/dist/hooks/executions/useResources.d.ts +15 -0
- package/dist/hooks/executions/useResources.d.ts.map +1 -0
- package/dist/hooks/executions/useRetryExecution.d.ts +16 -0
- package/dist/hooks/executions/useRetryExecution.d.ts.map +1 -0
- package/dist/hooks/feature-access/createUseFeatureAccess.d.ts +44 -0
- package/dist/hooks/feature-access/createUseFeatureAccess.d.ts.map +1 -0
- package/dist/hooks/feature-access/index.d.ts +2 -0
- package/dist/hooks/feature-access/index.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +11 -1927
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +5 -4
- package/dist/hooks/monitoring/index.d.ts +9 -0
- package/dist/hooks/monitoring/index.d.ts.map +1 -0
- package/dist/hooks/monitoring/useActivities.d.ts +52 -0
- package/dist/hooks/monitoring/useActivities.d.ts.map +1 -0
- package/dist/hooks/monitoring/useCostSummary.d.ts +7 -0
- package/dist/hooks/monitoring/useCostSummary.d.ts.map +1 -0
- package/dist/hooks/monitoring/useExecutionHealth.d.ts +10 -0
- package/dist/hooks/monitoring/useExecutionHealth.d.ts.map +1 -0
- package/dist/hooks/monitoring/useExecutionLogs.d.ts +56 -0
- package/dist/hooks/monitoring/useExecutionLogs.d.ts.map +1 -0
- package/dist/hooks/monitoring/useNotifications.d.ts +11 -0
- package/dist/hooks/monitoring/useNotifications.d.ts.map +1 -0
- package/dist/hooks/notifications/index.d.ts +8 -0
- package/dist/hooks/notifications/index.d.ts.map +1 -0
- package/dist/hooks/notifications/useMarkAllAsRead.d.ts +2 -0
- package/dist/hooks/notifications/useMarkAllAsRead.d.ts.map +1 -0
- package/dist/hooks/notifications/useMarkAsRead.d.ts +2 -0
- package/dist/hooks/notifications/useMarkAsRead.d.ts.map +1 -0
- package/dist/hooks/notifications/useNotificationCount.d.ts +8 -0
- package/dist/hooks/notifications/useNotificationCount.d.ts.map +1 -0
- package/dist/hooks/observability/index.d.ts +19 -0
- package/dist/hooks/observability/index.d.ts.map +1 -0
- package/dist/hooks/observability/useBusinessImpact.d.ts +9 -0
- package/dist/hooks/observability/useBusinessImpact.d.ts.map +1 -0
- package/dist/hooks/observability/useCostBreakdown.d.ts +10 -0
- package/dist/hooks/observability/useCostBreakdown.d.ts.map +1 -0
- package/dist/hooks/observability/useCostByModel.d.ts +3 -0
- package/dist/hooks/observability/useCostByModel.d.ts.map +1 -0
- package/dist/hooks/observability/useCostTrends.d.ts +3 -0
- package/dist/hooks/observability/useCostTrends.d.ts.map +1 -0
- package/dist/hooks/observability/useDashboardMetrics.d.ts +3 -0
- package/dist/hooks/observability/useDashboardMetrics.d.ts.map +1 -0
- package/dist/hooks/observability/useErrorAnalysis.d.ts +7 -0
- package/dist/hooks/observability/useErrorAnalysis.d.ts.map +1 -0
- package/dist/hooks/observability/useErrorDetails.d.ts +20 -0
- package/dist/hooks/observability/useErrorDetails.d.ts.map +1 -0
- package/dist/hooks/observability/useErrorDistribution.d.ts +12 -0
- package/dist/hooks/observability/useErrorDistribution.d.ts.map +1 -0
- package/dist/hooks/observability/useErrorTrends.d.ts +12 -0
- package/dist/hooks/observability/useErrorTrends.d.ts.map +1 -0
- package/dist/hooks/observability/useResolveError.d.ts +17 -0
- package/dist/hooks/observability/useResolveError.d.ts.map +1 -0
- package/dist/hooks/observability/useTopFailingResources.d.ts +13 -0
- package/dist/hooks/observability/useTopFailingResources.d.ts.map +1 -0
- package/dist/hooks/published.d.ts +19 -1652
- package/dist/hooks/published.d.ts.map +1 -0
- package/dist/hooks/published.js +369 -3
- package/dist/hooks/scheduling/index.d.ts +5 -0
- package/dist/hooks/scheduling/index.d.ts.map +1 -0
- package/dist/hooks/scheduling/useSchedules.d.ts +185 -0
- package/dist/hooks/scheduling/useSchedules.d.ts.map +1 -0
- package/dist/hooks/sessions/index.d.ts +8 -0
- package/dist/hooks/sessions/index.d.ts.map +1 -0
- package/dist/hooks/sessions/useSessionExecutions.d.ts +13 -0
- package/dist/hooks/sessions/useSessionExecutions.d.ts.map +1 -0
- package/dist/hooks/sessions/useSessionMessages.d.ts +7 -0
- package/dist/hooks/sessions/useSessionMessages.d.ts.map +1 -0
- package/dist/hooks/sessions/useSessions.d.ts +26 -0
- package/dist/hooks/sessions/useSessions.d.ts.map +1 -0
- package/dist/index.css +0 -118
- package/dist/index.d.ts +15 -7624
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1125 -30
- package/dist/initialization/InitializationProvider.d.ts +48 -0
- package/dist/initialization/InitializationProvider.d.ts.map +1 -0
- package/dist/initialization/hooks/useAppInitialization.d.ts +32 -0
- package/dist/initialization/hooks/useAppInitialization.d.ts.map +1 -0
- package/dist/initialization/index.d.ts +22 -2361
- package/dist/initialization/index.d.ts.map +1 -0
- package/dist/initialization/index.js +4 -4
- package/dist/organization/context/OrganizationProvider.d.ts +20 -0
- package/dist/organization/context/OrganizationProvider.d.ts.map +1 -0
- package/dist/organization/hooks/useOrgInitialization.d.ts +56 -0
- package/dist/organization/hooks/useOrgInitialization.d.ts.map +1 -0
- package/dist/organization/index.d.ts +21 -283
- package/dist/organization/index.d.ts.map +1 -0
- package/dist/organization/index.js +4 -4
- package/dist/profile/context/ProfileProvider.d.ts +27 -0
- package/dist/profile/context/ProfileProvider.d.ts.map +1 -0
- package/dist/profile/hooks/useUserProfile.d.ts +31 -0
- package/dist/profile/hooks/useUserProfile.d.ts.map +1 -0
- package/dist/profile/index.d.ts +14 -2290
- package/dist/profile/index.d.ts.map +1 -0
- package/dist/profile/index.js +1 -1
- package/dist/provider/CoreAuthKitInner.d.ts +12 -0
- package/dist/provider/CoreAuthKitInner.d.ts.map +1 -0
- package/dist/provider/ElevasisCoreProvider.d.ts +39 -0
- package/dist/provider/ElevasisCoreProvider.d.ts.map +1 -0
- package/dist/provider/ElevasisServiceContext.d.ts +31 -0
- package/dist/provider/ElevasisServiceContext.d.ts.map +1 -0
- package/dist/provider/__tests__/CoreAuthKitInner.test.d.ts +2 -0
- package/dist/provider/__tests__/CoreAuthKitInner.test.d.ts.map +1 -0
- package/dist/provider/__tests__/ElevasisCoreProvider.test.d.ts +2 -0
- package/dist/provider/__tests__/ElevasisCoreProvider.test.d.ts.map +1 -0
- package/dist/provider/index.d.ts +7 -384
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/index.js +8 -9
- package/dist/provider/published.d.ts +9 -275
- package/dist/provider/published.d.ts.map +1 -0
- package/dist/provider/published.js +7 -8
- package/dist/provider/types.d.ts +190 -0
- package/dist/provider/types.d.ts.map +1 -0
- package/dist/sdk-barrel.d.ts +20 -0
- package/dist/sdk-barrel.d.ts.map +1 -0
- package/dist/supabase/index.d.ts +0 -255
- package/dist/supabase/index.js +2 -47
- package/dist/theme/cssVariables.d.ts +12 -0
- package/dist/theme/cssVariables.d.ts.map +1 -0
- package/dist/theme/index.d.ts +4 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/presets/__tests__/getPreset.test.d.ts +2 -0
- package/dist/theme/presets/__tests__/getPreset.test.d.ts.map +1 -0
- package/dist/theme/presets/abyss.d.ts +3 -0
- package/dist/theme/presets/abyss.d.ts.map +1 -0
- package/dist/theme/presets/abyss.js +54 -0
- package/dist/theme/presets/aurora.d.ts +8 -0
- package/dist/theme/presets/aurora.d.ts.map +1 -0
- package/dist/theme/presets/aurora.js +59 -0
- package/dist/theme/presets/canopy.d.ts +3 -0
- package/dist/theme/presets/canopy.d.ts.map +1 -0
- package/dist/theme/presets/canopy.js +58 -0
- package/dist/theme/presets/cyber-flux.d.ts +8 -0
- package/dist/theme/presets/cyber-flux.d.ts.map +1 -0
- package/dist/theme/presets/cyber-strike.d.ts +9 -0
- package/dist/theme/presets/cyber-strike.d.ts.map +1 -0
- package/dist/theme/presets/cyber-void.d.ts +8 -0
- package/dist/theme/presets/cyber-void.d.ts.map +1 -0
- package/dist/theme/presets/cyber-volt.d.ts +8 -0
- package/dist/theme/presets/cyber-volt.d.ts.map +1 -0
- package/dist/theme/presets/default.d.ts +4 -0
- package/dist/theme/presets/default.d.ts.map +1 -0
- package/dist/theme/presets/ember.d.ts +8 -0
- package/dist/theme/presets/ember.d.ts.map +1 -0
- package/dist/theme/presets/ember.js +63 -0
- package/dist/theme/presets/honey.d.ts +3 -0
- package/dist/theme/presets/honey.d.ts.map +1 -0
- package/dist/theme/presets/honey.js +62 -0
- package/dist/theme/presets/index.d.ts +6 -0
- package/dist/theme/presets/index.d.ts.map +1 -0
- package/dist/theme/presets/midnight.d.ts +8 -0
- package/dist/theme/presets/midnight.d.ts.map +1 -0
- package/dist/theme/presets/midnight.js +68 -0
- package/dist/theme/presets/obsidian.d.ts +3 -0
- package/dist/theme/presets/obsidian.d.ts.map +1 -0
- package/dist/theme/presets/obsidian.js +56 -0
- package/dist/theme/presets/regal.d.ts +8 -0
- package/dist/theme/presets/regal.d.ts.map +1 -0
- package/dist/theme/presets/rose-gold.d.ts +8 -0
- package/dist/theme/presets/rose-gold.d.ts.map +1 -0
- package/dist/theme/presets/slate.d.ts +3 -0
- package/dist/theme/presets/slate.d.ts.map +1 -0
- package/dist/theme/presets/slate.js +56 -0
- package/dist/theme/presets/tactical.d.ts +8 -0
- package/dist/theme/presets/tactical.d.ts.map +1 -0
- package/dist/theme/presets/types.d.ts +26 -0
- package/dist/theme/presets/types.d.ts.map +1 -0
- package/dist/theme/presets/types.js +1 -0
- package/dist/utils/index.d.ts +1 -22
- package/dist/utils/index.js +1 -1
- package/package.json +67 -51
- package/dist/CoreAuthKitInner-KM72EYJS.js +0 -19
- package/dist/api/hooks/useApiClient.d.ts +0 -54
- package/dist/api/hooks/useApiClient.d.ts.map +0 -1
- package/dist/api/hooks/useApiClient.js +0 -185
- package/dist/chunk-3KMDHCAR.js +0 -52
- package/dist/chunk-6BJOYF6E.js +0 -8
- package/dist/chunk-BLO4SISK.js +0 -113
- package/dist/chunk-HUWJXLLF.js +0 -681
- package/dist/chunk-JVAZHVNV.js +0 -110
- package/dist/chunk-JYSYHVLU.js +0 -379
- package/dist/chunk-NE36BUGQ.js +0 -146
- package/dist/chunk-NIAVTSMB.js +0 -21
- package/dist/chunk-O3PY6B6E.js +0 -749
- package/dist/chunk-OXVOHOP3.js +0 -661
- package/dist/chunk-PCBXNHKY.js +0 -1460
- package/dist/chunk-PSLKGOBZ.js +0 -58
- package/dist/chunk-QSVZP2NU.js +0 -214
- package/dist/chunk-RJCA5672.js +0 -1664
- package/dist/chunk-TMFCNFLW.js +0 -107
- package/dist/chunk-TN3PU2WK.js +0 -748
- package/dist/chunk-W7ZBF5AA.js +0 -1
- package/dist/chunk-YZ6GTZXL.js +0 -48
- package/dist/components/command-queue/index.css +0 -53
- package/dist/components/command-queue/index.d.ts +0 -204
- package/dist/components/command-queue/index.js +0 -12
- package/dist/components/forms/index.d.ts +0 -56
- package/dist/components/forms/index.js +0 -2
- package/dist/components/index.css +0 -443
- package/dist/components/monitoring/index.d.ts +0 -66
- package/dist/components/monitoring/index.js +0 -2
- package/dist/components/notifications/index.d.ts +0 -52
- package/dist/components/notifications/index.js +0 -5
- package/dist/components/resource-definition/index.css +0 -388
- package/dist/components/resource-definition/index.d.ts +0 -301
- package/dist/components/resource-definition/index.js +0 -3
- package/dist/display/index.css +0 -53
- package/dist/display/index.d.ts +0 -606
- package/dist/display/index.js +0 -7
- package/dist/execution/index.css +0 -388
- package/dist/provider/index.css +0 -61
- /package/dist/{chunk-Q47SPRY7.js → chunk-BUZONXAW.js} +0 -0
- /package/dist/{chunk-NXHL23JW.js → chunk-XXDDMASA.js} +0 -0
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useSupabase } from './chunk-JGJSZ3UE.js';
|
|
2
|
+
import { useNotificationAdapter } from './chunk-TIRMFDM4.js';
|
|
3
|
+
import { useStableAccessToken } from './chunk-FWZJH3TL.js';
|
|
2
4
|
import { useElevasisServices } from './chunk-KA7LO7U5.js';
|
|
3
5
|
import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
|
|
4
6
|
import { z } from 'zod';
|
|
7
|
+
import { useCallback, useState, useEffect, useMemo, useId, useRef } from 'react';
|
|
5
8
|
|
|
6
9
|
// src/hooks/executions/queryKeys.ts
|
|
7
10
|
var executionsKeys = {
|
|
@@ -150,10 +153,35 @@ function useBulkDeleteExecutions() {
|
|
|
150
153
|
}
|
|
151
154
|
});
|
|
152
155
|
}
|
|
156
|
+
var UuidSchema = z.string().uuid();
|
|
157
|
+
var NonEmptyStringSchema = z.string().trim().min(1).max(1e3);
|
|
158
|
+
var ResourceTypeSchema = z.enum(["agent", "workflow"]);
|
|
159
|
+
var OriginResourceTypeSchema = z.enum(["agent", "workflow", "scheduler", "api"]);
|
|
160
|
+
z.string().trim().toLowerCase().min(1, "Credential name required").max(100, "Credential name too long (max 100 chars)").regex(
|
|
161
|
+
/^[a-z0-9]+(-[a-z0-9]+)+$/,
|
|
162
|
+
"Credential name must be lowercase letters, numbers, and hyphens in format: service-environment (e.g., gmail-prod, attio-dev)"
|
|
163
|
+
);
|
|
164
|
+
z.enum(["google-sheets", "dropbox"]);
|
|
165
|
+
z.string().min(10, "Authorization code too short").max(1e3, "Authorization code too long");
|
|
166
|
+
z.string().min(10, "State parameter too short").max(2048, "State parameter too long");
|
|
167
|
+
z.string().trim().transform((str) => str.replace(/[<>'"]/g, ""));
|
|
168
|
+
z.string().email();
|
|
169
|
+
z.string().url();
|
|
170
|
+
z.object({
|
|
171
|
+
limit: z.coerce.number().int().min(1).max(100).default(20),
|
|
172
|
+
offset: z.coerce.number().int().min(0).default(0)
|
|
173
|
+
});
|
|
174
|
+
z.string().datetime();
|
|
175
|
+
z.object({
|
|
176
|
+
startDate: z.string().datetime(),
|
|
177
|
+
endDate: z.string().datetime()
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
// ../core/src/operations/sessions/api-schemas.ts
|
|
153
181
|
var SessionIdParamSchema = z.object({
|
|
154
182
|
sessionId: UuidSchema
|
|
155
183
|
}).strict();
|
|
156
|
-
z.object({
|
|
184
|
+
var ExecutionIdParamsSchema = z.object({
|
|
157
185
|
sessionId: UuidSchema,
|
|
158
186
|
executionId: UuidSchema
|
|
159
187
|
}).strict();
|
|
@@ -184,7 +212,7 @@ z.object({
|
|
|
184
212
|
resourceId: z.string().optional(),
|
|
185
213
|
limit: z.coerce.number().int().min(1).max(100).default(20)
|
|
186
214
|
}).strict();
|
|
187
|
-
z.object({
|
|
215
|
+
var WebSocketSessionTurnSchema = z.object({
|
|
188
216
|
type: z.literal("session:turn"),
|
|
189
217
|
input: z.unknown().refine(
|
|
190
218
|
(val) => {
|
|
@@ -413,6 +441,38 @@ function useExecutionLogs(params = {}) {
|
|
|
413
441
|
// Real-time data - always refetch on mount/org switch
|
|
414
442
|
});
|
|
415
443
|
}
|
|
444
|
+
var NotificationCategorySchema = z.enum(["info", "queue", "alert", "error", "system"]);
|
|
445
|
+
var GetNotificationsQuerySchema = z.object({
|
|
446
|
+
limit: z.coerce.number().int().min(1).max(100).default(50),
|
|
447
|
+
offset: z.coerce.number().int().min(0).default(0)
|
|
448
|
+
});
|
|
449
|
+
var MarkAsReadParamsSchema = z.object({
|
|
450
|
+
id: UuidSchema
|
|
451
|
+
});
|
|
452
|
+
z.object({
|
|
453
|
+
userId: UuidSchema,
|
|
454
|
+
organizationId: UuidSchema,
|
|
455
|
+
category: NotificationCategorySchema,
|
|
456
|
+
title: z.string().trim().min(1).max(200),
|
|
457
|
+
message: z.string().trim().min(1).max(1e3),
|
|
458
|
+
actionUrl: z.string().url().optional()
|
|
459
|
+
}).strict();
|
|
460
|
+
|
|
461
|
+
// src/hooks/monitoring/useNotifications.ts
|
|
462
|
+
function useNotifications({ limit = 20, offset = 0 } = {}) {
|
|
463
|
+
const { apiRequest, isReady, organizationId } = useElevasisServices();
|
|
464
|
+
return useQuery({
|
|
465
|
+
queryKey: ["notifications", organizationId, { limit, offset }],
|
|
466
|
+
queryFn: async () => {
|
|
467
|
+
const params = GetNotificationsQuerySchema.parse({ limit, offset });
|
|
468
|
+
const response = await apiRequest(
|
|
469
|
+
`/notifications?limit=${params.limit}&offset=${params.offset}`
|
|
470
|
+
);
|
|
471
|
+
return response;
|
|
472
|
+
},
|
|
473
|
+
enabled: isReady
|
|
474
|
+
});
|
|
475
|
+
}
|
|
416
476
|
var RelativeScheduleItemSchema = z.object({
|
|
417
477
|
offset: z.string().regex(/^[+-]\d+[dhm]$/, "Invalid offset format. Use +3d, -2h, +30m, etc."),
|
|
418
478
|
payload: z.record(z.string(), z.unknown()),
|
|
@@ -658,6 +718,92 @@ function useExecutionHealth({ timeRange }) {
|
|
|
658
718
|
// 30s monitoring stale time
|
|
659
719
|
});
|
|
660
720
|
}
|
|
721
|
+
function useMarkAsRead() {
|
|
722
|
+
const queryClient = useQueryClient();
|
|
723
|
+
const { apiRequest } = useElevasisServices();
|
|
724
|
+
const notify = useNotificationAdapter();
|
|
725
|
+
return useMutation({
|
|
726
|
+
mutationFn: async (notificationId) => {
|
|
727
|
+
MarkAsReadParamsSchema.parse({ id: notificationId });
|
|
728
|
+
await apiRequest(`/notifications/${notificationId}/read`, {
|
|
729
|
+
method: "PATCH"
|
|
730
|
+
});
|
|
731
|
+
},
|
|
732
|
+
onSuccess: () => {
|
|
733
|
+
queryClient.invalidateQueries({ queryKey: ["notifications"] });
|
|
734
|
+
},
|
|
735
|
+
onError: (error) => {
|
|
736
|
+
notify.apiError(error);
|
|
737
|
+
}
|
|
738
|
+
});
|
|
739
|
+
}
|
|
740
|
+
function useMarkAllAsRead() {
|
|
741
|
+
const queryClient = useQueryClient();
|
|
742
|
+
const { apiRequest } = useElevasisServices();
|
|
743
|
+
const notify = useNotificationAdapter();
|
|
744
|
+
return useMutation({
|
|
745
|
+
mutationFn: async () => {
|
|
746
|
+
await apiRequest("/notifications/mark-all-read", {
|
|
747
|
+
method: "PATCH"
|
|
748
|
+
});
|
|
749
|
+
},
|
|
750
|
+
onSuccess: () => {
|
|
751
|
+
queryClient.invalidateQueries({ queryKey: ["notifications"] });
|
|
752
|
+
},
|
|
753
|
+
onError: (error) => {
|
|
754
|
+
notify.apiError(error);
|
|
755
|
+
}
|
|
756
|
+
});
|
|
757
|
+
}
|
|
758
|
+
function useNotificationCount() {
|
|
759
|
+
const { apiRequest, isReady, organizationId } = useElevasisServices();
|
|
760
|
+
return useQuery({
|
|
761
|
+
queryKey: ["notifications", "unread-count", organizationId],
|
|
762
|
+
queryFn: async () => {
|
|
763
|
+
const response = await apiRequest("/notifications/unread-count");
|
|
764
|
+
return response.count;
|
|
765
|
+
},
|
|
766
|
+
enabled: isReady,
|
|
767
|
+
staleTime: 3e4
|
|
768
|
+
});
|
|
769
|
+
}
|
|
770
|
+
function useErrorNotification() {
|
|
771
|
+
const adapter = useNotificationAdapter();
|
|
772
|
+
return useCallback(
|
|
773
|
+
(error) => {
|
|
774
|
+
adapter.apiError(error);
|
|
775
|
+
},
|
|
776
|
+
[adapter]
|
|
777
|
+
);
|
|
778
|
+
}
|
|
779
|
+
function useSuccessNotification() {
|
|
780
|
+
const adapter = useNotificationAdapter();
|
|
781
|
+
return useCallback((title, message) => adapter.success(title, message), [adapter]);
|
|
782
|
+
}
|
|
783
|
+
function useWarningNotification() {
|
|
784
|
+
const adapter = useNotificationAdapter();
|
|
785
|
+
return useCallback((title, message) => adapter.warning(title, message), [adapter]);
|
|
786
|
+
}
|
|
787
|
+
function useBatchDelete(tableName, invalidateQueryKeys) {
|
|
788
|
+
const supabase = useSupabase();
|
|
789
|
+
const queryClient = useQueryClient();
|
|
790
|
+
const adapter = useNotificationAdapter();
|
|
791
|
+
return useMutation({
|
|
792
|
+
mutationFn: async (ids) => {
|
|
793
|
+
if (ids.length === 0) return;
|
|
794
|
+
const { error } = await supabase.from(tableName).delete().in("id", ids);
|
|
795
|
+
if (error) throw error;
|
|
796
|
+
},
|
|
797
|
+
onSuccess: () => {
|
|
798
|
+
for (const key of invalidateQueryKeys) {
|
|
799
|
+
queryClient.invalidateQueries({ queryKey: key });
|
|
800
|
+
}
|
|
801
|
+
},
|
|
802
|
+
onError: (err) => {
|
|
803
|
+
adapter.apiError(err);
|
|
804
|
+
}
|
|
805
|
+
});
|
|
806
|
+
}
|
|
661
807
|
|
|
662
808
|
// src/hooks/observability/queryKeys.ts
|
|
663
809
|
var observabilityKeys = {
|
|
@@ -1063,5 +1209,213 @@ function useDeleteSchedule() {
|
|
|
1063
1209
|
}
|
|
1064
1210
|
});
|
|
1065
1211
|
}
|
|
1212
|
+
function usePaginationState(pageSize, resetDeps, total) {
|
|
1213
|
+
const [page, setPage] = useState(1);
|
|
1214
|
+
useEffect(() => {
|
|
1215
|
+
if (resetDeps) {
|
|
1216
|
+
setPage(1);
|
|
1217
|
+
}
|
|
1218
|
+
}, resetDeps ?? []);
|
|
1219
|
+
useEffect(() => {
|
|
1220
|
+
if (total === void 0) return;
|
|
1221
|
+
const lastPage = Math.max(1, Math.ceil(total / pageSize));
|
|
1222
|
+
if (page > lastPage) {
|
|
1223
|
+
setPage(lastPage);
|
|
1224
|
+
}
|
|
1225
|
+
}, [total, pageSize]);
|
|
1226
|
+
return useMemo(
|
|
1227
|
+
() => ({
|
|
1228
|
+
page,
|
|
1229
|
+
setPage,
|
|
1230
|
+
offset: (page - 1) * pageSize,
|
|
1231
|
+
totalPages: (total2) => Math.ceil(total2 / pageSize)
|
|
1232
|
+
}),
|
|
1233
|
+
[page, pageSize]
|
|
1234
|
+
);
|
|
1235
|
+
}
|
|
1236
|
+
function useTableSelection(items, allItems) {
|
|
1237
|
+
const [selectedIds, setSelectedIds] = useState(/* @__PURE__ */ new Set());
|
|
1238
|
+
const pageIds = useMemo(() => new Set(items.map((i) => i.id)), [items]);
|
|
1239
|
+
useEffect(() => {
|
|
1240
|
+
setSelectedIds((prev) => {
|
|
1241
|
+
const validIds = allItems ? new Set(allItems.map((i) => i.id)) : pageIds;
|
|
1242
|
+
const next = new Set([...prev].filter((id) => validIds.has(id)));
|
|
1243
|
+
return next.size === prev.size ? prev : next;
|
|
1244
|
+
});
|
|
1245
|
+
}, [allItems, pageIds]);
|
|
1246
|
+
const toggle = useCallback((id) => {
|
|
1247
|
+
setSelectedIds((prev) => {
|
|
1248
|
+
const next = new Set(prev);
|
|
1249
|
+
if (next.has(id)) next.delete(id);
|
|
1250
|
+
else next.add(id);
|
|
1251
|
+
return next;
|
|
1252
|
+
});
|
|
1253
|
+
}, []);
|
|
1254
|
+
const togglePage = useCallback(() => {
|
|
1255
|
+
setSelectedIds((prev) => {
|
|
1256
|
+
const allPageSelected = items.every((i) => prev.has(i.id));
|
|
1257
|
+
const next = new Set(prev);
|
|
1258
|
+
if (allPageSelected) {
|
|
1259
|
+
for (const item of items) next.delete(item.id);
|
|
1260
|
+
} else {
|
|
1261
|
+
for (const item of items) next.add(item.id);
|
|
1262
|
+
}
|
|
1263
|
+
return next;
|
|
1264
|
+
});
|
|
1265
|
+
}, [items]);
|
|
1266
|
+
const clear = useCallback(() => setSelectedIds(/* @__PURE__ */ new Set()), []);
|
|
1267
|
+
const isPageAllSelected = items.length > 0 && items.every((i) => selectedIds.has(i.id));
|
|
1268
|
+
const isPagePartiallySelected = !isPageAllSelected && items.some((i) => selectedIds.has(i.id));
|
|
1269
|
+
return {
|
|
1270
|
+
selectedIds,
|
|
1271
|
+
toggle,
|
|
1272
|
+
togglePage,
|
|
1273
|
+
clear,
|
|
1274
|
+
isPageAllSelected,
|
|
1275
|
+
isPagePartiallySelected,
|
|
1276
|
+
selectedCount: selectedIds.size,
|
|
1277
|
+
isSelected: (id) => selectedIds.has(id)
|
|
1278
|
+
};
|
|
1279
|
+
}
|
|
1280
|
+
function useTableSort(defaultColumn, defaultDirection = "desc") {
|
|
1281
|
+
const [sort, setSort] = useState({ column: defaultColumn, direction: defaultDirection });
|
|
1282
|
+
const toggleSort = useCallback((column) => {
|
|
1283
|
+
setSort((prev) => {
|
|
1284
|
+
if (prev.column === column) {
|
|
1285
|
+
return { column, direction: prev.direction === "asc" ? "desc" : "asc" };
|
|
1286
|
+
}
|
|
1287
|
+
return { column, direction: "desc" };
|
|
1288
|
+
});
|
|
1289
|
+
}, []);
|
|
1290
|
+
return { sort, toggleSort };
|
|
1291
|
+
}
|
|
1292
|
+
function sortData(data, sort, accessors) {
|
|
1293
|
+
const accessor = accessors[sort.column];
|
|
1294
|
+
if (!accessor) return data;
|
|
1295
|
+
return [...data].sort((a, b) => {
|
|
1296
|
+
const aVal = accessor(a);
|
|
1297
|
+
const bVal = accessor(b);
|
|
1298
|
+
if (aVal == null && bVal == null) return 0;
|
|
1299
|
+
if (aVal == null) return 1;
|
|
1300
|
+
if (bVal == null) return -1;
|
|
1301
|
+
let comparison = 0;
|
|
1302
|
+
if (typeof aVal === "string" && typeof bVal === "string") {
|
|
1303
|
+
comparison = aVal.localeCompare(bVal);
|
|
1304
|
+
} else if (typeof aVal === "number" && typeof bVal === "number") {
|
|
1305
|
+
comparison = aVal - bVal;
|
|
1306
|
+
} else {
|
|
1307
|
+
comparison = String(aVal).localeCompare(String(bVal));
|
|
1308
|
+
}
|
|
1309
|
+
return sort.direction === "asc" ? comparison : -comparison;
|
|
1310
|
+
});
|
|
1311
|
+
}
|
|
1312
|
+
function useSortedData(data, defaultColumn, accessors, defaultDirection = "desc") {
|
|
1313
|
+
const { sort, toggleSort } = useTableSort(defaultColumn, defaultDirection);
|
|
1314
|
+
const sorted = useMemo(() => sortData(data, sort, accessors), [data, sort, accessors]);
|
|
1315
|
+
return { sorted, sort, toggleSort };
|
|
1316
|
+
}
|
|
1317
|
+
function createUseFeatureAccess({
|
|
1318
|
+
useInitialization,
|
|
1319
|
+
useOrganization,
|
|
1320
|
+
optInFeatures = []
|
|
1321
|
+
}) {
|
|
1322
|
+
return function useFeatureAccess() {
|
|
1323
|
+
const { profile, organizationReady } = useInitialization();
|
|
1324
|
+
const { currentMembership } = useOrganization();
|
|
1325
|
+
const { orgConfig, membershipConfig } = useMemo(() => {
|
|
1326
|
+
const organizationConfig = currentMembership?.organization?.config;
|
|
1327
|
+
const memberConfig = currentMembership?.config;
|
|
1328
|
+
return { orgConfig: organizationConfig, membershipConfig: memberConfig };
|
|
1329
|
+
}, [currentMembership]);
|
|
1330
|
+
const userConfig = profile?.config;
|
|
1331
|
+
const checkFeature = useCallback(
|
|
1332
|
+
(featureKey) => {
|
|
1333
|
+
const key = featureKey;
|
|
1334
|
+
const orgValue = orgConfig?.features?.[key];
|
|
1335
|
+
if (!profile?.is_platform_admin) {
|
|
1336
|
+
const membershipValue = membershipConfig?.features?.[key];
|
|
1337
|
+
if (membershipValue === false) return { allowed: false, restrictedBy: "membership" };
|
|
1338
|
+
if (membershipValue === true) return { allowed: true, restrictedBy: null };
|
|
1339
|
+
}
|
|
1340
|
+
if (optInFeatures.includes(featureKey)) {
|
|
1341
|
+
return orgValue === true ? { allowed: true, restrictedBy: null } : { allowed: false, restrictedBy: "org" };
|
|
1342
|
+
}
|
|
1343
|
+
return orgValue === false ? { allowed: false, restrictedBy: "org" } : { allowed: true, restrictedBy: null };
|
|
1344
|
+
},
|
|
1345
|
+
[profile?.is_platform_admin, membershipConfig, orgConfig]
|
|
1346
|
+
);
|
|
1347
|
+
const hasFeature = useCallback((featureKey) => checkFeature(featureKey).allowed, [checkFeature]);
|
|
1348
|
+
return {
|
|
1349
|
+
orgConfig,
|
|
1350
|
+
membershipConfig,
|
|
1351
|
+
userConfig,
|
|
1352
|
+
hasFeature,
|
|
1353
|
+
checkFeature,
|
|
1354
|
+
isReady: organizationReady
|
|
1355
|
+
};
|
|
1356
|
+
};
|
|
1357
|
+
}
|
|
1358
|
+
function useSSEConnection({
|
|
1359
|
+
manager,
|
|
1360
|
+
connectionKey,
|
|
1361
|
+
url,
|
|
1362
|
+
enabled = true,
|
|
1363
|
+
headers,
|
|
1364
|
+
onmessage,
|
|
1365
|
+
onopen,
|
|
1366
|
+
onerror,
|
|
1367
|
+
onclose
|
|
1368
|
+
}) {
|
|
1369
|
+
const [connected, setConnected] = useState(false);
|
|
1370
|
+
const [error, setError] = useState(null);
|
|
1371
|
+
const getAccessToken = useStableAccessToken();
|
|
1372
|
+
const subscriberId = useId();
|
|
1373
|
+
const onmessageRef = useRef(onmessage);
|
|
1374
|
+
const onopenRef = useRef(onopen);
|
|
1375
|
+
const onerrorRef = useRef(onerror);
|
|
1376
|
+
const oncloseRef = useRef(onclose);
|
|
1377
|
+
const headersRef = useRef(headers);
|
|
1378
|
+
onmessageRef.current = onmessage;
|
|
1379
|
+
onopenRef.current = onopen;
|
|
1380
|
+
onerrorRef.current = onerror;
|
|
1381
|
+
oncloseRef.current = onclose;
|
|
1382
|
+
headersRef.current = headers;
|
|
1383
|
+
useEffect(() => {
|
|
1384
|
+
if (!enabled) return;
|
|
1385
|
+
const unsubscribe = manager.subscribe(connectionKey, subscriberId, {
|
|
1386
|
+
url,
|
|
1387
|
+
getToken: getAccessToken,
|
|
1388
|
+
headers: headersRef.current ?? {},
|
|
1389
|
+
onopen(response) {
|
|
1390
|
+
if (response.ok) {
|
|
1391
|
+
setConnected(true);
|
|
1392
|
+
setError(null);
|
|
1393
|
+
}
|
|
1394
|
+
const customError = onopenRef.current?.(response);
|
|
1395
|
+
if (customError) setError(customError);
|
|
1396
|
+
},
|
|
1397
|
+
onmessage(event) {
|
|
1398
|
+
if (!event.data || event.data.trim() === "") return;
|
|
1399
|
+
onmessageRef.current(event.data);
|
|
1400
|
+
},
|
|
1401
|
+
onerror(err) {
|
|
1402
|
+
const msg = err instanceof Error ? err.message : "Unknown error";
|
|
1403
|
+
setConnected(false);
|
|
1404
|
+
setError(msg);
|
|
1405
|
+
onerrorRef.current?.(err instanceof Error ? err : new Error(msg));
|
|
1406
|
+
},
|
|
1407
|
+
onclose() {
|
|
1408
|
+
setConnected(false);
|
|
1409
|
+
oncloseRef.current?.();
|
|
1410
|
+
}
|
|
1411
|
+
});
|
|
1412
|
+
return () => {
|
|
1413
|
+
unsubscribe();
|
|
1414
|
+
setConnected(false);
|
|
1415
|
+
setError(null);
|
|
1416
|
+
};
|
|
1417
|
+
}, [enabled, connectionKey, url, subscriberId, getAccessToken, manager]);
|
|
1418
|
+
return { connected, error };
|
|
1419
|
+
}
|
|
1066
1420
|
|
|
1067
|
-
export { OperationsService, executionsKeys, observabilityKeys, scheduleKeys, useActivities, useActivityTrend, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorTrends, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogs, useExecutions, useGetExecutionHistory, useGetSchedule, useListSchedules, usePauseSchedule, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResources, useResumeSchedule, useRetryExecution, useTopFailingResources, useUnresolveError, useUpdateAnchor, useUpdateSchedule };
|
|
1421
|
+
export { ExecutionIdParamsSchema, OperationsService, SessionIdParamSchema, WebSocketSessionTurnSchema, createUseFeatureAccess, executionsKeys, observabilityKeys, scheduleKeys, sortData, useActivities, useActivityTrend, useBatchDelete, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useErrorTrends, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogs, useExecutions, useGetExecutionHistory, useGetSchedule, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePauseSchedule, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResources, useResumeSchedule, useRetryExecution, useSSEConnection, useSortedData, useSuccessNotification, useTableSelection, useTableSort, useTopFailingResources, useUnresolveError, useUpdateAnchor, useUpdateSchedule, useWarningNotification };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useAuthContext } from './chunk-7PLEQFHO.js';
|
|
2
|
+
import { useRef, useCallback } from 'react';
|
|
3
|
+
|
|
4
|
+
function useStableAccessToken() {
|
|
5
|
+
const { getAccessToken } = useAuthContext();
|
|
6
|
+
const getAccessTokenRef = useRef(getAccessToken);
|
|
7
|
+
getAccessTokenRef.current = getAccessToken;
|
|
8
|
+
return useCallback(() => {
|
|
9
|
+
return getAccessTokenRef.current();
|
|
10
|
+
}, []);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { useStableAccessToken };
|