@elevasis/ui 1.17.1 → 1.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.
@@ -1,9 +1,9 @@
1
- import { ExecutionStats } from '../../chunk-ZGK6XZVY.js';
2
- import { SubshellLoader } from '../../chunk-ADSSLKKP.js';
3
- import { PageTitleCaption, TabCountBadge, ResourceCard } from '../../chunk-7S5FS7WW.js';
1
+ import { ExecutionStats } from '../../chunk-BVNAC4SQ.js';
2
+ import { SubshellLoader, SubshellSidebarSection } from '../../chunk-35UWYH2A.js';
3
+ import { PageTitleCaption, TabCountBadge, ResourceCard, useCyberColors, CyberDonut } from '../../chunk-LBY7FVFD.js';
4
4
  import '../../chunk-KBLGVZBD.js';
5
- import { useStatusFilter, useResourceSearch, useResourcesDomainFilters, filterByDomainFilters } from '../../chunk-XGVD76EL.js';
6
- import { usePaginationState, useResources, useRecentExecutionsByResource } from '../../chunk-TRVSTJTK.js';
5
+ import { useStatusFilter, useResourceSearch, useResourcesDomainFilters, filterByDomainFilters } from '../../chunk-UTWJZEOJ.js';
6
+ import { usePaginationState, useResources, useRecentExecutionsByResource } from '../../chunk-2Z7LYTIX.js';
7
7
  import '../../chunk-LXHZYSMQ.js';
8
8
  import '../../chunk-NJJ3NQ7B.js';
9
9
  import '../../chunk-MHW43EOH.js';
@@ -13,16 +13,16 @@ import '../../chunk-ELJIFLCB.js';
13
13
  import '../../chunk-L4XXM55J.js';
14
14
  import '../../chunk-SLVC5OJ2.js';
15
15
  import '../../chunk-RNP5R5I3.js';
16
- import '../../chunk-F25DUOWI.js';
16
+ import '../../chunk-KNJKCD73.js';
17
17
  import '../../chunk-NUULWBAD.js';
18
18
  import '../../chunk-SZHARWKU.js';
19
- import '../../chunk-UEYUPTAD.js';
19
+ import '../../chunk-2YW3LDFT.js';
20
20
  import '../../chunk-7ATCF6UL.js';
21
- import '../../chunk-53GNREDV.js';
21
+ import '../../chunk-UANJP5P7.js';
22
22
  import '../../chunk-QJ2KCHKX.js';
23
23
  import '../../chunk-U2522LSW.js';
24
- import '../../chunk-RULQSZYX.js';
25
- import { formatRelativeTime } from '../../chunk-FCFLBMVI.js';
24
+ import '../../chunk-JNBHUCKW.js';
25
+ import { formatRelativeTime, DOMAIN_MAP } from '../../chunk-MBZDE6UT.js';
26
26
  import '../../chunk-CC3SDRIF.js';
27
27
  import '../../chunk-ALA56RGZ.js';
28
28
  import { useInitialization } from '../../chunk-DVKEEY5J.js';
@@ -30,10 +30,10 @@ import '../../chunk-QEPXAWE2.js';
30
30
  import '../../chunk-DD3CCMCZ.js';
31
31
  import '../../chunk-BRJ3QZ4E.js';
32
32
  import '../../chunk-Q7DJKLEN.js';
33
- import { Stack, Card, Text, Button, Tabs, Group, Pagination } from '@mantine/core';
34
- import { IconApps, IconRoute, IconBrain } from '@tabler/icons-react';
33
+ import { Stack, Card, Text, Button, Tabs, Group, Pagination, useMantineTheme, Box, Center, Loader, UnstyledButton, TextInput, Divider } from '@mantine/core';
34
+ import { IconApps, IconRoute, IconBrain, IconRefresh, IconAdjustmentsHorizontal, IconSearch, IconChevronDown, IconCircleX, IconCircleCheck, IconCircleDashed } from '@tabler/icons-react';
35
35
  import { useState, useEffect, useMemo } from 'react';
36
- import { jsx, jsxs } from 'react/jsx-runtime';
36
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
37
37
 
38
38
  function ResourcesPage({
39
39
  initialFilter,
@@ -237,5 +237,290 @@ function ResourcesPage({
237
237
  ) })
238
238
  ] });
239
239
  }
240
+ var FILTER_STATE_ICONS = {
241
+ neutral: IconCircleDashed,
242
+ include: IconCircleCheck,
243
+ exclude: IconCircleX
244
+ };
245
+ var FILTER_STATE_COLORS = {
246
+ neutral: "var(--color-text-subtle)",
247
+ include: "var(--mantine-color-green-6)",
248
+ exclude: "var(--mantine-color-red-6)"
249
+ };
250
+ var FILTER_STATE_LABELS = {
251
+ neutral: "Not filtered",
252
+ include: "Include only",
253
+ exclude: "Exclude"
254
+ };
255
+ function ResourcesSidebar({ timeRange }) {
256
+ const searchQuery = useResourceSearch((s) => s.query);
257
+ const setSearchQuery = useResourceSearch((s) => s.set);
258
+ const statusFilter = useStatusFilter((s) => s.value);
259
+ const setStatusFilter = useStatusFilter((s) => s.set);
260
+ const [domainsOpen, setDomainsOpen] = useState(true);
261
+ const domainFilters = useResourcesDomainFilters((s) => s.filters);
262
+ const cycleDomainFilter = useResourcesDomainFilters((s) => s.cycle);
263
+ const { organizationReady } = useInitialization();
264
+ const { data: resources, isLoading: isResourcesLoading, error, refetch } = useResources();
265
+ const theme = useMantineTheme();
266
+ const colors = useCyberColors();
267
+ const { data: executionData } = useRecentExecutionsByResource({ timeRange });
268
+ const activeDomains = useMemo(() => {
269
+ if (!resources) return [];
270
+ const allResources = [...resources.workflows || [], ...resources.agents || []];
271
+ const domainSet = /* @__PURE__ */ new Set();
272
+ allResources.forEach((r) => r.domains?.forEach((d) => domainSet.add(d)));
273
+ const bottomDomains = /* @__PURE__ */ new Set(["utility", "diagnostic"]);
274
+ return Array.from(domainSet).sort((a, b) => {
275
+ const aBottom = bottomDomains.has(a) ? 1 : 0;
276
+ const bBottom = bottomDomains.has(b) ? 1 : 0;
277
+ if (aBottom !== bBottom) return aBottom - bBottom;
278
+ return a.localeCompare(b);
279
+ });
280
+ }, [resources]);
281
+ const domainFilteredResources = useMemo(() => {
282
+ if (!resources) return [];
283
+ const allResources = [...resources.workflows || [], ...resources.agents || []];
284
+ return filterByDomainFilters(allResources, domainFilters);
285
+ }, [resources, domainFilters]);
286
+ const { donutSuccessCount, donutFailedCount } = useMemo(() => {
287
+ if (!executionData?.resources || domainFilteredResources.length === 0) {
288
+ return { donutSuccessCount: 0, donutFailedCount: 0 };
289
+ }
290
+ const filteredIds = new Set(domainFilteredResources.map((r) => r.resourceId));
291
+ let success = 0;
292
+ let failed = 0;
293
+ for (const r of executionData.resources) {
294
+ if (filteredIds.has(r.resourceId)) {
295
+ success += r.successCount;
296
+ failed += r.failureCount;
297
+ }
298
+ }
299
+ return { donutSuccessCount: success, donutFailedCount: failed };
300
+ }, [executionData, domainFilteredResources]);
301
+ if (!organizationReady || isResourcesLoading) {
302
+ return /* @__PURE__ */ jsx(Box, { style: { flex: 1, minHeight: 0, padding: theme.spacing.sm }, children: /* @__PURE__ */ jsx(Center, { p: "xl", children: /* @__PURE__ */ jsx(Loader, {}) }) });
303
+ }
304
+ if (error) {
305
+ return /* @__PURE__ */ jsxs(Box, { style: { flex: 1, minHeight: 0, padding: theme.spacing.sm }, children: [
306
+ /* @__PURE__ */ jsx(
307
+ Text,
308
+ {
309
+ size: "xs",
310
+ fw: 600,
311
+ c: "dimmed",
312
+ tt: "uppercase",
313
+ mb: "md",
314
+ style: { fontFamily: "var(--elevasis-font-family-subtitle)" },
315
+ children: "Error Loading Resources"
316
+ }
317
+ ),
318
+ /* @__PURE__ */ jsx(Text, { size: "sm", c: "red", mb: "md", children: error instanceof Error ? error.message : "Failed to load resources" }),
319
+ /* @__PURE__ */ jsx(Button, { size: "xs", leftSection: /* @__PURE__ */ jsx(IconRefresh, { size: 14 }), onClick: () => refetch(), variant: "light", children: "Retry" })
320
+ ] });
321
+ }
322
+ const totalExecutions = donutSuccessCount + donutFailedCount;
323
+ const successRate = totalExecutions > 0 ? donutSuccessCount / totalExecutions * 100 : 0;
324
+ const healthSegments = [
325
+ { name: "Completed", value: donutSuccessCount, color: colors.green },
326
+ { name: "Failed", value: donutFailedCount, color: colors.red }
327
+ ];
328
+ const centerValueColor = totalExecutions === 0 ? "var(--mantine-color-dimmed)" : successRate >= 95 ? colors.green : successRate >= 80 ? colors.yellow : colors.red;
329
+ return /* @__PURE__ */ jsxs(Stack, { gap: 0, style: { flex: 1, minHeight: 0, overflow: "hidden" }, children: [
330
+ /* @__PURE__ */ jsx(Box, { p: "sm", pb: 0, children: /* @__PURE__ */ jsx(Box, { pb: "xs", mb: 4, children: /* @__PURE__ */ jsx(
331
+ CyberDonut,
332
+ {
333
+ title: `Execution Health (${timeRange})`,
334
+ segments: healthSegments,
335
+ centerValue: totalExecutions === 0 ? "\u2014" : `${Math.round(successRate)}%`,
336
+ centerLabel: `${totalExecutions} runs`,
337
+ centerValueColor,
338
+ glowId: "resHealthGlow",
339
+ colors
340
+ }
341
+ ) }) }),
342
+ /* @__PURE__ */ jsx(
343
+ SubshellSidebarSection,
344
+ {
345
+ icon: IconAdjustmentsHorizontal,
346
+ label: "Resource Filters",
347
+ withTopBorder: true,
348
+ rightSection: /* @__PURE__ */ jsx(UnstyledButton, { title: "Refresh resources", onClick: () => refetch(), children: /* @__PURE__ */ jsx(IconRefresh, { size: 16, color: "var(--color-text-subtle)" }) })
349
+ }
350
+ ),
351
+ /* @__PURE__ */ jsxs(Box, { p: "sm", style: { flex: 1, minHeight: 0, display: "flex", flexDirection: "column", overflowY: "auto" }, children: [
352
+ resources && (() => {
353
+ const stats = [
354
+ {
355
+ key: "all",
356
+ label: "All",
357
+ count: domainFilteredResources.length,
358
+ color: "var(--color-text)",
359
+ activeColor: "var(--color-primary)"
360
+ },
361
+ {
362
+ key: "prod",
363
+ label: "Prod",
364
+ count: domainFilteredResources.filter((r) => r.status === "prod").length,
365
+ color: "var(--color-text)",
366
+ activeColor: "var(--color-primary)"
367
+ },
368
+ {
369
+ key: "dev",
370
+ label: "Dev",
371
+ count: domainFilteredResources.filter((r) => r.status === "dev").length,
372
+ color: "var(--color-text)",
373
+ activeColor: "var(--color-primary)"
374
+ }
375
+ ];
376
+ return /* @__PURE__ */ jsx(
377
+ Group,
378
+ {
379
+ gap: 0,
380
+ mb: "sm",
381
+ style: {
382
+ flexShrink: 0,
383
+ borderRadius: "var(--mantine-radius-default)",
384
+ border: "1px solid var(--color-border)",
385
+ background: "var(--glass-background)",
386
+ overflow: "hidden"
387
+ },
388
+ children: stats.map((stat, i) => {
389
+ const isActive = statusFilter === stat.key;
390
+ return /* @__PURE__ */ jsx(
391
+ UnstyledButton,
392
+ {
393
+ onClick: () => setStatusFilter(stat.key),
394
+ style: {
395
+ flex: 1,
396
+ borderLeft: i > 0 ? "1px solid var(--color-border)" : void 0,
397
+ background: isActive ? "var(--active-background)" : "transparent",
398
+ boxShadow: isActive ? "inset 0 -2px 0 var(--color-primary)" : "none",
399
+ transition: "all var(--duration-fast) var(--easing)"
400
+ },
401
+ children: /* @__PURE__ */ jsxs(Stack, { gap: 0, align: "center", py: 8, children: [
402
+ /* @__PURE__ */ jsx(
403
+ Text,
404
+ {
405
+ size: "md",
406
+ fw: 700,
407
+ ff: "monospace",
408
+ style: { color: isActive ? stat.activeColor : "var(--color-text)", lineHeight: 1.2 },
409
+ children: stat.count
410
+ }
411
+ ),
412
+ /* @__PURE__ */ jsx(
413
+ Text,
414
+ {
415
+ size: "xs",
416
+ c: isActive ? void 0 : "dimmed",
417
+ fw: isActive ? 600 : 400,
418
+ style: { lineHeight: 1.2 },
419
+ children: stat.label
420
+ }
421
+ )
422
+ ] })
423
+ },
424
+ stat.key
425
+ );
426
+ })
427
+ }
428
+ );
429
+ })(),
430
+ /* @__PURE__ */ jsx(
431
+ TextInput,
432
+ {
433
+ placeholder: "Filter resources...",
434
+ leftSection: /* @__PURE__ */ jsx(IconSearch, { size: 16 }),
435
+ size: "sm",
436
+ value: searchQuery,
437
+ onChange: (e) => setSearchQuery(e.currentTarget.value),
438
+ mb: "sm",
439
+ style: { flexShrink: 0 }
440
+ }
441
+ ),
442
+ activeDomains.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
443
+ /* @__PURE__ */ jsx(UnstyledButton, { onClick: () => setDomainsOpen((o) => !o), style: { width: "100%", flexShrink: 0 }, mt: 4, children: /* @__PURE__ */ jsxs(Group, { justify: "space-between", children: [
444
+ /* @__PURE__ */ jsx(
445
+ Text,
446
+ {
447
+ size: "sm",
448
+ fw: 600,
449
+ c: "dimmed",
450
+ tt: "uppercase",
451
+ style: { fontFamily: "var(--elevasis-font-family-subtitle)" },
452
+ children: "Domains"
453
+ }
454
+ ),
455
+ /* @__PURE__ */ jsx(
456
+ IconChevronDown,
457
+ {
458
+ size: 14,
459
+ style: {
460
+ transform: domainsOpen ? "rotate(180deg)" : "rotate(0deg)",
461
+ transition: "transform var(--duration-fast) var(--easing)",
462
+ color: "var(--color-text-subtle)"
463
+ }
464
+ }
465
+ )
466
+ ] }) }),
467
+ /* @__PURE__ */ jsx(
468
+ "div",
469
+ {
470
+ style: {
471
+ display: "grid",
472
+ gridTemplateRows: domainsOpen ? "1fr" : "0fr",
473
+ transition: "grid-template-rows 200ms cubic-bezier(0.4, 0, 0.2, 1)"
474
+ },
475
+ children: /* @__PURE__ */ jsx("div", { style: { overflow: "hidden" }, children: /* @__PURE__ */ jsx(Stack, { gap: 2, mt: "xs", style: { flexShrink: 0 }, children: activeDomains.map((domainId) => {
476
+ const domain = DOMAIN_MAP[domainId];
477
+ if (!domain) return null;
478
+ const filterState = domainFilters[domainId] || "neutral";
479
+ const StateIcon = FILTER_STATE_ICONS[filterState];
480
+ return /* @__PURE__ */ jsx(
481
+ UnstyledButton,
482
+ {
483
+ title: FILTER_STATE_LABELS[filterState],
484
+ onClick: () => cycleDomainFilter(domainId),
485
+ py: 5,
486
+ px: 6,
487
+ style: {
488
+ transition: "background-color var(--duration-fast) var(--easing)",
489
+ "&:hover": { backgroundColor: "var(--color-surface-hover)" }
490
+ },
491
+ children: /* @__PURE__ */ jsxs(Group, { gap: 10, wrap: "nowrap", children: [
492
+ /* @__PURE__ */ jsx(
493
+ StateIcon,
494
+ {
495
+ size: 16,
496
+ style: {
497
+ color: FILTER_STATE_COLORS[filterState],
498
+ flexShrink: 0,
499
+ transition: "color var(--duration-fast) var(--easing)"
500
+ }
501
+ }
502
+ ),
503
+ /* @__PURE__ */ jsx(
504
+ Text,
505
+ {
506
+ size: "sm",
507
+ truncate: true,
508
+ fw: filterState !== "neutral" ? 500 : 400,
509
+ c: filterState !== "neutral" ? void 0 : "dimmed",
510
+ children: domain.name
511
+ }
512
+ )
513
+ ] })
514
+ },
515
+ domainId
516
+ );
517
+ }) }) })
518
+ }
519
+ ),
520
+ /* @__PURE__ */ jsx(Divider, { my: "sm", color: "var(--color-border)", style: { flexShrink: 0 } })
521
+ ] })
522
+ ] })
523
+ ] });
524
+ }
240
525
 
241
- export { ResourcesPage };
526
+ export { ResourcesPage, ResourcesSidebar };
@@ -1,20 +1,20 @@
1
- export { ApiKeyService, CredentialService, DeploymentService, OrganizationMembershipService, WebhookEndpointService, filterByDomainFilters, useActivateDeployment, useActivityFilters, useCommandViewDomainFilters, useCreateApiKey, useCreateCredential, useCreateWebhookEndpoint, useCredentials, useDeactivateDeployment, useDeactivateMembership, useDeleteApiKey, useDeleteCredential, useDeleteDeployment, useDeleteWebhookEndpoint, useExecutionLogsFilters, useListApiKeys, useListDeployments, useListWebhookEndpoints, useOrganizationMembers, useReactivateMembership, useResourceSearch, useResourcesDomainFilters, useStatusFilter, useTimeRangeDates, useUpdateApiKey, useUpdateCredential, useUpdateMemberConfig, useUpdateWebhookEndpoint, useUserMemberships, useVisibleResources } from '../chunk-XGVD76EL.js';
2
- export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from '../chunk-TRVSTJTK.js';
1
+ export { ApiKeyService, CredentialService, DeploymentService, OrganizationMembershipService, WebhookEndpointService, filterByDomainFilters, useActivateDeployment, useActivityFilters, useCommandViewDomainFilters, useCreateApiKey, useCreateCredential, useCreateWebhookEndpoint, useCredentials, useDeactivateDeployment, useDeactivateMembership, useDeleteApiKey, useDeleteCredential, useDeleteDeployment, useDeleteWebhookEndpoint, useExecutionLogsFilters, useListApiKeys, useListDeployments, useListWebhookEndpoints, useOrganizationMembers, useReactivateMembership, useResourceSearch, useResourcesDomainFilters, useStatusFilter, useTimeRangeDates, useUpdateApiKey, useUpdateCredential, useUpdateMemberConfig, useUpdateWebhookEndpoint, useUserMemberships, useVisibleResources } from '../chunk-UTWJZEOJ.js';
2
+ export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from '../chunk-2Z7LYTIX.js';
3
3
  export { observabilityKeys, useErrorTrends } from '../chunk-LXHZYSMQ.js';
4
4
  import '../chunk-NJJ3NQ7B.js';
5
5
  import '../chunk-F6RBK7NJ.js';
6
6
  import '../chunk-L4XXM55J.js';
7
7
  import '../chunk-RNP5R5I3.js';
8
- import '../chunk-F25DUOWI.js';
8
+ import '../chunk-KNJKCD73.js';
9
9
  import '../chunk-NUULWBAD.js';
10
10
  import '../chunk-SZHARWKU.js';
11
- import '../chunk-UEYUPTAD.js';
11
+ import '../chunk-2YW3LDFT.js';
12
12
  import '../chunk-7ATCF6UL.js';
13
- import '../chunk-53GNREDV.js';
13
+ import '../chunk-UANJP5P7.js';
14
14
  import '../chunk-QJ2KCHKX.js';
15
15
  import '../chunk-U2522LSW.js';
16
- import '../chunk-RULQSZYX.js';
17
- export { REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY } from '../chunk-FCFLBMVI.js';
16
+ import '../chunk-JNBHUCKW.js';
17
+ export { REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY } from '../chunk-MBZDE6UT.js';
18
18
  import '../chunk-ALA56RGZ.js';
19
19
  import '../chunk-DVKEEY5J.js';
20
20
  import '../chunk-QEPXAWE2.js';
@@ -1,19 +1,19 @@
1
- export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from '../chunk-TRVSTJTK.js';
1
+ export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from '../chunk-2Z7LYTIX.js';
2
2
  export { observabilityKeys, useErrorTrends } from '../chunk-LXHZYSMQ.js';
3
3
  import '../chunk-NJJ3NQ7B.js';
4
4
  import '../chunk-F6RBK7NJ.js';
5
5
  import '../chunk-L4XXM55J.js';
6
6
  import '../chunk-RNP5R5I3.js';
7
- import '../chunk-F25DUOWI.js';
7
+ import '../chunk-KNJKCD73.js';
8
8
  import '../chunk-NUULWBAD.js';
9
9
  import '../chunk-SZHARWKU.js';
10
- import '../chunk-UEYUPTAD.js';
10
+ import '../chunk-2YW3LDFT.js';
11
11
  import '../chunk-7ATCF6UL.js';
12
- import '../chunk-53GNREDV.js';
12
+ import '../chunk-UANJP5P7.js';
13
13
  import '../chunk-QJ2KCHKX.js';
14
14
  import '../chunk-U2522LSW.js';
15
- import '../chunk-RULQSZYX.js';
16
- export { REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY } from '../chunk-FCFLBMVI.js';
15
+ import '../chunk-JNBHUCKW.js';
16
+ export { REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY } from '../chunk-MBZDE6UT.js';
17
17
  import '../chunk-ALA56RGZ.js';
18
18
  import '../chunk-DVKEEY5J.js';
19
19
  import '../chunk-QEPXAWE2.js';
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- export { useAvailablePresets } from './chunk-RYSPAQGW.js';
1
+ export { useAvailablePresets } from './chunk-ZFCG5SHW.js';
2
2
  import './chunk-XCYKC6OZ.js';
3
- export { ApiKeyService, CredentialService, DeploymentService, OrganizationMembershipService, WebhookEndpointService, filterByDomainFilters, useActivateDeployment, useActivityFilters, useCommandViewDomainFilters, useCreateApiKey, useCreateCredential, useCreateWebhookEndpoint, useCredentials, useDeactivateDeployment, useDeactivateMembership, useDeleteApiKey, useDeleteCredential, useDeleteDeployment, useDeleteWebhookEndpoint, useExecutionLogsFilters, useListApiKeys, useListDeployments, useListWebhookEndpoints, useOrganizationMembers, useReactivateMembership, useResourceSearch, useResourcesDomainFilters, useStatusFilter, useTimeRangeDates, useUpdateApiKey, useUpdateCredential, useUpdateMemberConfig, useUpdateWebhookEndpoint, useUserMemberships, useVisibleResources } from './chunk-XGVD76EL.js';
4
- export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from './chunk-TRVSTJTK.js';
3
+ export { ApiKeyService, CredentialService, DeploymentService, OrganizationMembershipService, WebhookEndpointService, filterByDomainFilters, useActivateDeployment, useActivityFilters, useCommandViewDomainFilters, useCreateApiKey, useCreateCredential, useCreateWebhookEndpoint, useCredentials, useDeactivateDeployment, useDeactivateMembership, useDeleteApiKey, useDeleteCredential, useDeleteDeployment, useDeleteWebhookEndpoint, useExecutionLogsFilters, useListApiKeys, useListDeployments, useListWebhookEndpoints, useOrganizationMembers, useReactivateMembership, useResourceSearch, useResourcesDomainFilters, useStatusFilter, useTimeRangeDates, useUpdateApiKey, useUpdateCredential, useUpdateMemberConfig, useUpdateWebhookEndpoint, useUserMemberships, useVisibleResources } from './chunk-UTWJZEOJ.js';
4
+ export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from './chunk-2Z7LYTIX.js';
5
5
  export { observabilityKeys, useErrorTrends } from './chunk-LXHZYSMQ.js';
6
6
  import './chunk-NJJ3NQ7B.js';
7
7
  export { ScrollToTop, TanStackRouterBridge } from './chunk-MHW43EOH.js';
@@ -11,16 +11,16 @@ import './chunk-ELJIFLCB.js';
11
11
  export { OrganizationSwitcher, createOrganizationsSlice, createUseOrgInitialization, createUseOrganizations } from './chunk-L4XXM55J.js';
12
12
  export { createUseAppInitialization } from './chunk-SLVC5OJ2.js';
13
13
  import './chunk-RNP5R5I3.js';
14
- export { ElevasisUIProvider } from './chunk-F25DUOWI.js';
14
+ export { ElevasisUIProvider } from './chunk-KNJKCD73.js';
15
15
  import './chunk-NUULWBAD.js';
16
16
  import './chunk-SZHARWKU.js';
17
- export { PresetsProvider, TOKEN_VAR_MAP, componentThemes, createCssVariablesResolver, generateShades, getPreset, mantineThemeOverride, PRESETS as presets, usePresetsContext } from './chunk-UEYUPTAD.js';
17
+ export { PresetsProvider, TOKEN_VAR_MAP, componentThemes, createCssVariablesResolver, generateShades, getPreset, mantineThemeOverride, PRESETS as presets, usePresetsContext } from './chunk-2YW3LDFT.js';
18
18
  import './chunk-7ATCF6UL.js';
19
- export { ElevasisCoreProvider, NotificationProvider, useNotificationAdapter } from './chunk-53GNREDV.js';
19
+ export { ElevasisCoreProvider, NotificationProvider, useNotificationAdapter } from './chunk-UANJP5P7.js';
20
20
  export { AppearanceProvider, useAppearance } from './chunk-QJ2KCHKX.js';
21
21
  export { OrganizationProvider } from './chunk-U2522LSW.js';
22
- export { ApiClientProvider, useApiClient, useApiClientContext } from './chunk-RULQSZYX.js';
23
- export { APIClientError, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, LIMIT_ACTIVITY_FEED, OAUTH_FLOW_TIMEOUT, OAUTH_POPUP_CHECK_INTERVAL, PAGE_SIZE_DEFAULT, REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_REALTIME, REFETCH_INTERVAL_RUNNING, REFETCH_INTERVAL_RUNNING_FAST, SSE_CLOSE_GRACE_PERIOD, SSE_TOKEN_REFRESH_DELAY, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getResourceColor, getResourceIcon, isAPIClientError, restoreConsole, suppressKnownWarnings, validateEmail } from './chunk-FCFLBMVI.js';
22
+ export { ApiClientProvider, useApiClient, useApiClientContext } from './chunk-JNBHUCKW.js';
23
+ export { APIClientError, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, LIMIT_ACTIVITY_FEED, OAUTH_FLOW_TIMEOUT, OAUTH_POPUP_CHECK_INTERVAL, PAGE_SIZE_DEFAULT, REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_REALTIME, REFETCH_INTERVAL_RUNNING, REFETCH_INTERVAL_RUNNING_FAST, SSE_CLOSE_GRACE_PERIOD, SSE_TOKEN_REFRESH_DELAY, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getResourceColor, getResourceIcon, isAPIClientError, restoreConsole, suppressKnownWarnings, validateEmail } from './chunk-MBZDE6UT.js';
24
24
  export { AdminGuard, ProtectedRoute, useSessionCheck as useRefocusSessionCheck, useSessionCheck } from './chunk-CC3SDRIF.js';
25
25
  export { useStableAccessToken } from './chunk-ALA56RGZ.js';
26
26
  export { InitializationContext, InitializationProvider, useInitialization } from './chunk-DVKEEY5J.js';
@@ -136,180 +136,7 @@ interface PerspectiveGridProps {
136
136
  /**
137
137
  * Override the grid line color. Defaults to a subtle border-tinted line
138
138
  * derived from `var(--color-border)` so non-cyber presets get a theme-aware
139
- * grid without the boldness of cyber variants (which pass the raw b-- =============================================================================
140
- -- Migrate prod delivery_* tables to match dev prj_* schema
141
- -- -----------------------------------------------------------------------------
142
- -- Context: dev uses the new prj_* prefix; prod still has the legacy delivery_*
143
- -- tables. All four prod delivery_* tables are currently empty (0 rows), so this
144
- -- migration does in-place RENAMEs plus additive column changes. RLS policies
145
- -- are dropped and recreated because their names embed the old table name.
146
- --
147
- -- Mapping:
148
- -- delivery_engagements -> prj_projects
149
- -- delivery_milestones -> prj_milestones (engagement_id -> project_id)
150
- -- delivery_deliverables -> prj_tasks (engagement_id -> project_id)
151
- -- delivery_notes -> prj_notes (engagement_id -> project_id)
152
- -- =============================================================================
153
-
154
- BEGIN;
155
-
156
- -- =============================================================================
157
- -- 1. delivery_engagements -> prj_projects
158
- -- =============================================================================
159
-
160
- DROP POLICY IF EXISTS "Org admins can manage delivery_engagements" ON public.delivery_engagements;
161
- DROP POLICY IF EXISTS "Org members can view delivery_engagements" ON public.delivery_engagements;
162
- DROP POLICY IF EXISTS "Platform admins have full access to delivery_engagements" ON public.delivery_engagements;
163
-
164
- ALTER TABLE public.delivery_engagements RENAME TO prj_projects;
165
-
166
- ALTER INDEX public.delivery_engagements_pkey RENAME TO prj_projects_pkey;
167
- ALTER INDEX public.idx_delivery_engagements_deal RENAME TO idx_prj_projects_deal;
168
- ALTER INDEX public.idx_delivery_engagements_org RENAME TO idx_prj_projects_org;
169
- ALTER INDEX public.idx_delivery_engagements_org_status RENAME TO idx_prj_projects_org_status;
170
-
171
- -- Missing column in prod
172
- ALTER TABLE public.prj_projects
173
- ADD COLUMN kind text NOT NULL DEFAULT 'client_engagement';
174
-
175
- -- Recreate RLS policies with new table name
176
- CREATE POLICY "Org admins can manage prj_projects" ON public.prj_projects
177
- FOR ALL
178
- USING (is_org_admin(organization_id))
179
- WITH CHECK (is_org_admin(organization_id));
180
-
181
- CREATE POLICY "Org members can view prj_projects" ON public.prj_projects
182
- FOR SELECT
183
- USING (is_org_member(organization_id));
184
-
185
- CREATE POLICY "Platform admins have full access to prj_projects" ON public.prj_projects
186
- FOR ALL
187
- USING (current_user_is_platform_admin())
188
- WITH CHECK (current_user_is_platform_admin());
189
-
190
-
191
- -- =============================================================================
192
- -- 2. delivery_milestones -> prj_milestones
193
- -- =============================================================================
194
-
195
- DROP POLICY IF EXISTS "Org admins can manage delivery_milestones" ON public.delivery_milestones;
196
- DROP POLICY IF EXISTS "Org members can view delivery_milestones" ON public.delivery_milestones;
197
- DROP POLICY IF EXISTS "Platform admins have full access to delivery_milestones" ON public.delivery_milestones;
198
-
199
- ALTER TABLE public.delivery_milestones RENAME TO prj_milestones;
200
- ALTER TABLE public.prj_milestones RENAME COLUMN engagement_id TO project_id;
201
-
202
- ALTER INDEX public.delivery_milestones_pkey RENAME TO prj_milestones_pkey;
203
- ALTER INDEX public.idx_delivery_milestones_engagement RENAME TO idx_prj_milestones_project;
204
- ALTER INDEX public.idx_delivery_milestones_org RENAME TO idx_prj_milestones_org;
205
- ALTER INDEX public.idx_delivery_milestones_status RENAME TO idx_prj_milestones_status;
206
-
207
- CREATE POLICY "Org admins can manage prj_milestones" ON public.prj_milestones
208
- FOR ALL
209
- USING (is_org_admin(organization_id))
210
- WITH CHECK (is_org_admin(organization_id));
211
-
212
- CREATE POLICY "Org members can view prj_milestones" ON public.prj_milestones
213
- FOR SELECT
214
- USING (is_org_member(organization_id));
215
-
216
- CREATE POLICY "Platform admins have full access to prj_milestones" ON public.prj_milestones
217
- FOR ALL
218
- USING (current_user_is_platform_admin())
219
- WITH CHECK (current_user_is_platform_admin());
220
-
221
-
222
- -- =============================================================================
223
- -- 3. delivery_deliverables -> prj_tasks
224
- -- =============================================================================
225
-
226
- DROP POLICY IF EXISTS "Org admins can manage delivery_deliverables" ON public.delivery_deliverables;
227
- DROP POLICY IF EXISTS "Org members can view delivery_deliverables" ON public.delivery_deliverables;
228
- DROP POLICY IF EXISTS "Platform admins have full access to delivery_deliverables" ON public.delivery_deliverables;
229
-
230
- ALTER TABLE public.delivery_deliverables RENAME TO prj_tasks;
231
- ALTER TABLE public.prj_tasks RENAME COLUMN engagement_id TO project_id;
232
-
233
- ALTER INDEX public.delivery_deliverables_pkey RENAME TO prj_tasks_pkey;
234
- ALTER INDEX public.idx_delivery_deliverables_engagement RENAME TO idx_prj_tasks_project;
235
- ALTER INDEX public.idx_delivery_deliverables_milestone RENAME TO idx_prj_tasks_milestone;
236
- ALTER INDEX public.idx_delivery_deliverables_org RENAME TO idx_prj_tasks_org;
237
- ALTER INDEX public.idx_delivery_deliverables_status RENAME TO idx_prj_tasks_status;
238
-
239
- -- Missing columns in prod
240
- ALTER TABLE public.prj_tasks
241
- ADD COLUMN parent_task_id uuid,
242
- ADD COLUMN checklist jsonb NOT NULL DEFAULT '[]'::jsonb,
243
- ADD COLUMN resume_context jsonb;
244
-
245
- -- Missing index in prod
246
- CREATE INDEX idx_prj_tasks_parent
247
- ON public.prj_tasks USING btree (parent_task_id)
248
- WHERE (parent_task_id IS NOT NULL);
249
-
250
- CREATE POLICY "Org admins can manage prj_tasks" ON public.prj_tasks
251
- FOR ALL
252
- USING (is_org_admin(organization_id))
253
- WITH CHECK (is_org_admin(organization_id));
254
-
255
- CREATE POLICY "Org members can view prj_tasks" ON public.prj_tasks
256
- FOR SELECT
257
- USING (is_org_member(organization_id));
258
-
259
- CREATE POLICY "Platform admins have full access to prj_tasks" ON public.prj_tasks
260
- FOR ALL
261
- USING (current_user_is_platform_admin())
262
- WITH CHECK (current_user_is_platform_admin());
263
-
264
-
265
- -- =============================================================================
266
- -- 4. delivery_notes -> prj_notes
267
- -- =============================================================================
268
-
269
- DROP POLICY IF EXISTS "Org admins can manage delivery_notes" ON public.delivery_notes;
270
- DROP POLICY IF EXISTS "Org members can view delivery_notes" ON public.delivery_notes;
271
- DROP POLICY IF EXISTS "Platform admins have full access to delivery_notes" ON public.delivery_notes;
272
-
273
- ALTER TABLE public.delivery_notes RENAME TO prj_notes;
274
- ALTER TABLE public.prj_notes RENAME COLUMN engagement_id TO project_id;
275
-
276
- ALTER INDEX public.delivery_notes_pkey RENAME TO prj_notes_pkey;
277
- ALTER INDEX public.idx_delivery_notes_engagement RENAME TO idx_prj_notes_project;
278
- ALTER INDEX public.idx_delivery_notes_org RENAME TO idx_prj_notes_org;
279
- ALTER INDEX public.idx_delivery_notes_occurred_at RENAME TO idx_prj_notes_occurred_at;
280
- ALTER INDEX public.idx_delivery_notes_type RENAME TO idx_prj_notes_type;
281
-
282
- -- Missing columns in prod
283
- ALTER TABLE public.prj_notes
284
- ADD COLUMN task_id uuid,
285
- ADD COLUMN milestone_id uuid;
286
-
287
- -- Missing indexes in prod
288
- CREATE INDEX idx_prj_notes_task
289
- ON public.prj_notes USING btree (task_id)
290
- WHERE (task_id IS NOT NULL);
291
-
292
- CREATE INDEX idx_prj_notes_milestone
293
- ON public.prj_notes USING btree (milestone_id)
294
- WHERE (milestone_id IS NOT NULL);
295
-
296
- CREATE POLICY "Org admins can manage prj_notes" ON public.prj_notes
297
- FOR ALL
298
- USING (is_org_admin(organization_id))
299
- WITH CHECK (is_org_admin(organization_id));
300
-
301
- CREATE POLICY "Org members can view prj_notes" ON public.prj_notes
302
- FOR SELECT
303
- USING (is_org_member(organization_id));
304
-
305
- CREATE POLICY "Platform admins have full access to prj_notes" ON public.prj_notes
306
- FOR ALL
307
- USING (current_user_is_platform_admin())
308
- WITH CHECK (current_user_is_platform_admin());
309
-
310
-
311
- COMMIT;
312
- order
139
+ * grid without the boldness of cyber variants (which pass the raw border
313
140
  * token explicitly).
314
141
  */
315
142
  lineColor?: string;
@@ -1,5 +1,5 @@
1
- export { AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, LinksGroup, PageContainer, Sidebar, SidebarContext, SidebarListItem, SidebarProvider, SubshellContainer, SubshellContentContainer, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarSection, Topbar, TopbarContainer, Vignette, subsidebarWidth, useSidebar, useSidebarCollapse } from '../chunk-QCEUL5QG.js';
2
- export { SubshellLoader } from '../chunk-ADSSLKKP.js';
1
+ export { AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, LinksGroup, PageContainer, Sidebar, SidebarContext, SidebarListItem, SidebarProvider, SubshellContainer, SubshellContentContainer, SubshellRightSideContainer, SubshellSidebar, Topbar, TopbarContainer, Vignette, subsidebarWidth, useSidebar, useSidebarCollapse } from '../chunk-WAPZN2U3.js';
2
+ export { SubshellLoader, SubshellSidebarSection } from '../chunk-35UWYH2A.js';
3
3
  export { sidebarBottomSectionCollapsedHeight, sidebarBottomSectionHeight, sidebarCollapsedWidth, sidebarGroupChevronSize, sidebarHoverDelay, sidebarIconInnerSize, sidebarIconSize, sidebarIconStroke, sidebarItemGap, sidebarItemHeight, sidebarItemPadding, sidebarListItemIconSize, sidebarSectionPadding, sidebarSubLinkIndent, sidebarSubLinkPaddingX, sidebarSubLinkPaddingY, sidebarToggleIconSize, sidebarTransitionDuration, sidebarWidth, topbarHeight } from '../chunk-KBLGVZBD.js';
4
4
  import '../chunk-MHW43EOH.js';
5
5
  export { AppBackground } from '../chunk-NUULWBAD.js';