@elevasis/ui 2.18.0 → 2.20.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 (93) hide show
  1. package/dist/{CoreAuthKitInner-I32JCNE7.js → CoreAuthKitInner-QC62UHTZ.js} +1 -0
  2. package/dist/api/index.js +3 -2
  3. package/dist/app/index.js +6 -5
  4. package/dist/auth/context.js +1 -0
  5. package/dist/auth/index.js +1 -0
  6. package/dist/charts/index.js +4 -3
  7. package/dist/{chunk-LT33DSMO.js → chunk-2CFOFSSG.js} +4 -4
  8. package/dist/chunk-3JCMO7SD.js +14 -0
  9. package/dist/chunk-7XKCG5CT.js +125 -0
  10. package/dist/{chunk-SQPM2QDH.js → chunk-BHR7IV72.js} +3 -2
  11. package/dist/{chunk-DDZMBNTY.js → chunk-CTTY6FUT.js} +2 -2
  12. package/dist/chunk-DRQPEMJI.js +42 -0
  13. package/dist/{chunk-EY322HXF.js → chunk-FMFX4K6E.js} +19 -6
  14. package/dist/{chunk-UA36WILN.js → chunk-GP3AFJYG.js} +145 -211
  15. package/dist/{chunk-P6TC4K7I.js → chunk-GTYUP7MB.js} +4 -4
  16. package/dist/chunk-HJ4CJIWN.js +38 -0
  17. package/dist/chunk-I2KLQ2HA.js +19 -0
  18. package/dist/{chunk-B6FIIEFO.js → chunk-JR5WNTLA.js} +128 -117
  19. package/dist/{chunk-A2AZY5SF.js → chunk-LR5CRY5A.js} +1 -1
  20. package/dist/{chunk-GRGRBWIO.js → chunk-M7W7CGPL.js} +1 -1
  21. package/dist/{chunk-SS2UVUSG.js → chunk-MZFJWCPH.js} +73 -121
  22. package/dist/{chunk-P3TFNFZS.js → chunk-OUYH2SBS.js} +3 -3
  23. package/dist/{chunk-66VY5EMV.js → chunk-PJVG3ISO.js} +5 -5
  24. package/dist/{chunk-I3LQGLUC.js → chunk-Q4QJOSVS.js} +1 -1
  25. package/dist/{chunk-R73EHHPN.js → chunk-Q5HC6ENG.js} +18 -2
  26. package/dist/{chunk-VDM6DQES.js → chunk-R7OJCNL3.js} +1 -1
  27. package/dist/{chunk-6RWMRQN5.js → chunk-TIIPYB2Z.js} +1 -1
  28. package/dist/{chunk-34NQLV2W.js → chunk-TO7QXDBX.js} +3 -3
  29. package/dist/{chunk-WP3IYOVJ.js → chunk-YP6T426C.js} +107 -56
  30. package/dist/{chunk-FM6LSZ45.js → chunk-ZE2KQSHL.js} +4 -4
  31. package/dist/components/chat/index.js +1 -0
  32. package/dist/components/index.d.ts +218 -2808
  33. package/dist/components/index.js +26 -25
  34. package/dist/components/navigation/index.js +1 -0
  35. package/dist/execution/index.js +1 -0
  36. package/dist/features/auth/index.js +1 -0
  37. package/dist/features/crm/index.d.ts +54 -53
  38. package/dist/features/crm/index.js +12 -11
  39. package/dist/features/dashboard/index.js +13 -12
  40. package/dist/features/delivery/index.d.ts +2642 -2605
  41. package/dist/features/delivery/index.js +12 -11
  42. package/dist/features/lead-gen/index.js +12 -22
  43. package/dist/features/monitoring/index.js +14 -13
  44. package/dist/features/monitoring/requests/index.d.ts +38 -27
  45. package/dist/features/monitoring/requests/index.js +213 -106
  46. package/dist/features/operations/index.d.ts +8 -26
  47. package/dist/features/operations/index.js +16 -15
  48. package/dist/features/seo/index.js +1 -0
  49. package/dist/features/settings/index.d.ts +36 -37
  50. package/dist/features/settings/index.js +13 -12
  51. package/dist/graph/index.js +1 -0
  52. package/dist/hooks/delivery/index.d.ts +2712 -2699
  53. package/dist/hooks/delivery/index.js +3 -2
  54. package/dist/hooks/index.d.ts +1674 -4617
  55. package/dist/hooks/index.js +11 -10
  56. package/dist/hooks/operations/command-view/utils/transformCommandViewData.js +1 -0
  57. package/dist/hooks/published.d.ts +1674 -4617
  58. package/dist/hooks/published.js +11 -10
  59. package/dist/index.d.ts +773 -3635
  60. package/dist/index.js +12 -11
  61. package/dist/initialization/index.js +1 -0
  62. package/dist/layout/index.d.ts +14 -2
  63. package/dist/layout/index.js +2 -1
  64. package/dist/organization/index.js +1 -0
  65. package/dist/profile/index.js +1 -0
  66. package/dist/provider/ElevasisServiceContext.js +1 -0
  67. package/dist/provider/index.d.ts +320 -249
  68. package/dist/provider/index.js +9 -8
  69. package/dist/provider/published.d.ts +320 -249
  70. package/dist/provider/published.js +6 -5
  71. package/dist/router/context.js +1 -0
  72. package/dist/router/index.js +1 -0
  73. package/dist/sse/index.d.ts +1 -6
  74. package/dist/sse/index.js +1 -1
  75. package/dist/supabase/index.js +1 -0
  76. package/dist/test-utils/index.d.ts +117 -0
  77. package/dist/test-utils/index.js +136 -0
  78. package/dist/test-utils/setup-integration.d.ts +2 -0
  79. package/dist/test-utils/setup-integration.js +26 -0
  80. package/dist/test-utils/setup.d.ts +2 -0
  81. package/dist/test-utils/setup.js +47 -0
  82. package/dist/theme/index.js +3 -2
  83. package/dist/typeform/index.js +1 -0
  84. package/dist/typeform/schemas.js +1 -0
  85. package/dist/types/index.d.ts +1604 -2489
  86. package/dist/utils/index.d.ts +32 -1
  87. package/dist/utils/index.js +2 -1
  88. package/dist/zustand/index.d.ts +4 -8
  89. package/dist/zustand/index.js +2 -0
  90. package/package.json +33 -5
  91. package/src/test-utils/README.md +5 -0
  92. package/dist/chunk-ADSSLKKP.js +0 -10
  93. /package/dist/{chunk-GCBWGGI6.js → chunk-OD7GWIZS.js} +0 -0
@@ -1,25 +1,25 @@
1
- import '../../../chunk-TUMSNGTX.js';
1
+ import { TableSelectionToolbar } from '../../../chunk-TUMSNGTX.js';
2
2
  import { FilterBar } from '../../../chunk-PDHTXPSF.js';
3
- import { ConfirmationModal } from '../../../chunk-GBMNCNHX.js';
3
+ import { ConfirmationModal, CustomModal } from '../../../chunk-GBMNCNHX.js';
4
4
  import '../../../chunk-7M2VOCYN.js';
5
- import { usePaginationState, useRequestsList, useUpdateRequestStatus, useRequest } from '../../../chunk-EY322HXF.js';
5
+ import { usePaginationState, useRequestsList, useUpdateRequestStatus, useDeleteRequest, useTableSelection, useRequest } from '../../../chunk-FMFX4K6E.js';
6
6
  import '../../../chunk-BRXELOHC.js';
7
7
  import '../../../chunk-QSTH6T77.js';
8
- import '../../../chunk-GRGRBWIO.js';
8
+ import '../../../chunk-M7W7CGPL.js';
9
9
  import '../../../chunk-22UVE3RA.js';
10
10
  import '../../../chunk-3ZMAGTWF.js';
11
- import '../../../chunk-I3LQGLUC.js';
12
- import '../../../chunk-34NQLV2W.js';
13
- import '../../../chunk-R73EHHPN.js';
11
+ import '../../../chunk-Q4QJOSVS.js';
12
+ import '../../../chunk-TO7QXDBX.js';
13
+ import '../../../chunk-Q5HC6ENG.js';
14
14
  import '../../../chunk-WLOQ4IBG.js';
15
- import '../../../chunk-A2AZY5SF.js';
16
- import '../../../chunk-P3TFNFZS.js';
15
+ import '../../../chunk-LR5CRY5A.js';
16
+ import '../../../chunk-OUYH2SBS.js';
17
17
  import '../../../chunk-RX4UWZZR.js';
18
- import { PageTitleCaption, ContextViewer, JsonViewer } from '../../../chunk-SQPM2QDH.js';
18
+ import { PageTitleCaption, CardHeader, ContextViewer, JsonViewer } from '../../../chunk-BHR7IV72.js';
19
19
  import '../../../chunk-SZHARWKU.js';
20
20
  import '../../../chunk-3KMDHCAR.js';
21
21
  import '../../../chunk-NYBEU5TE.js';
22
- import '../../../chunk-VDM6DQES.js';
22
+ import '../../../chunk-R7OJCNL3.js';
23
23
  import '../../../chunk-2IFYDILW.js';
24
24
  import '../../../chunk-Q7DJKLEN.js';
25
25
  import '../../../chunk-7YQKVWSD.js';
@@ -28,7 +28,7 @@ import '../../../chunk-QJ2KCHKX.js';
28
28
  import '../../../chunk-HQ7M6PBW.js';
29
29
  import '../../../chunk-DT3QYZVU.js';
30
30
  import '../../../chunk-RNP5R5I3.js';
31
- import { formatTimeAgo } from '../../../chunk-GCBWGGI6.js';
31
+ import { formatTimeAgo } from '../../../chunk-OD7GWIZS.js';
32
32
  import '../../../chunk-KRWALB24.js';
33
33
  import '../../../chunk-SLH2QLKV.js';
34
34
  import '../../../chunk-DK2HVHCY.js';
@@ -36,11 +36,12 @@ import '../../../chunk-DD3CCMCZ.js';
36
36
  import '../../../chunk-QHSW4WHM.js';
37
37
  import '../../../chunk-IRW7JMQ4.js';
38
38
  import '../../../chunk-BRJ3QZ4E.js';
39
+ import '../../../chunk-I2KLQ2HA.js';
39
40
  import { useState } from 'react';
40
41
  import { useNavigate } from '@tanstack/react-router';
41
- import { Badge, Menu, Button, Stack, Paper, Select, Center, Loader, Text, Table, Group, Pagination, Skeleton, SimpleGrid, Title, SegmentedControl } from '@mantine/core';
42
+ import { Badge, Menu, Button, Stack, Paper, Select, Center, Loader, Text, Table, Checkbox, Group, Pagination, Title, Skeleton, SimpleGrid, CopyButton, Tooltip, ActionIcon, SegmentedControl } from '@mantine/core';
43
+ import { IconChevronDown, IconAlertTriangle, IconCheck, IconCopy, IconClipboardText, IconFileDescription, IconAlertCircle, IconInfoCircle, IconArrowLeft } from '@tabler/icons-react';
42
44
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
43
- import { IconChevronDown, IconAlertTriangle, IconArrowLeft } from '@tabler/icons-react';
44
45
  import { notifications } from '@mantine/notifications';
45
46
 
46
47
  // src/features/monitoring/requests/manifest.ts
@@ -165,6 +166,7 @@ function RequestsListPage({
165
166
  const [severityFilter, setSeverityFilter] = useState(severityProp);
166
167
  const [statusFilter, setStatusFilter] = useState(statusProp ?? "open");
167
168
  const [sourceFilter, setSourceFilter] = useState(sourceProp);
169
+ const [showBatchDelete, setShowBatchDelete] = useState(false);
168
170
  const { page, setPage, offset, totalPages } = usePaginationState(PAGE_SIZE, [
169
171
  typeFilter,
170
172
  severityFilter,
@@ -180,6 +182,8 @@ function RequestsListPage({
180
182
  offset
181
183
  });
182
184
  const { mutate: updateStatus } = useUpdateRequestStatus();
185
+ const deleteRequest = useDeleteRequest();
186
+ const selection = useTableSelection(requests);
183
187
  function pushSearchParam(patch) {
184
188
  navigate({
185
189
  // @ts-expect-error — search type is narrowed by each route wrapper
@@ -206,6 +210,11 @@ function RequestsListPage({
206
210
  setSourceFilter(next);
207
211
  pushSearchParam({ source: next });
208
212
  }
213
+ const handleDeleteSelected = async () => {
214
+ await Promise.all([...selection.selectedIds].map((id) => deleteRequest.mutateAsync(id)));
215
+ setShowBatchDelete(false);
216
+ selection.clear();
217
+ };
209
218
  const estimatedTotal = requests.length < PAGE_SIZE ? offset + requests.length : offset + PAGE_SIZE + 1;
210
219
  const pageCount = totalPages(estimatedTotal);
211
220
  return /* @__PURE__ */ jsxs(Stack, { children: [
@@ -217,79 +226,100 @@ function RequestsListPage({
217
226
  }
218
227
  ),
219
228
  /* @__PURE__ */ jsx(Paper, { children: /* @__PURE__ */ jsxs(Stack, { gap: 0, children: [
220
- /* @__PURE__ */ jsxs(FilterBar, { children: [
221
- /* @__PURE__ */ jsx(
222
- Select,
223
- {
224
- placeholder: "All types",
225
- value: typeFilter ?? null,
226
- onChange: handleTypeChange,
227
- data: [
228
- { value: "bug", label: "Bug" },
229
- { value: "feature", label: "Feature" },
230
- { value: "question", label: "Question" },
231
- { value: "other", label: "Other" }
232
- ],
233
- clearable: true,
234
- size: "sm",
235
- w: 150
236
- }
237
- ),
238
- /* @__PURE__ */ jsx(
239
- Select,
240
- {
241
- placeholder: "All severities",
242
- value: severityFilter ?? null,
243
- onChange: handleSeverityChange,
244
- data: [
245
- { value: "critical", label: "Critical" },
246
- { value: "warning", label: "Warning" },
247
- { value: "info", label: "Info" }
248
- ],
249
- clearable: true,
250
- size: "sm",
251
- w: 160
252
- }
253
- ),
254
- /* @__PURE__ */ jsx(
255
- Select,
256
- {
257
- placeholder: "All statuses",
258
- value: statusFilter ?? null,
259
- onChange: handleStatusChange,
260
- data: [
261
- { value: "open", label: "Open" },
262
- { value: "investigating", label: "Investigating" },
263
- { value: "resolved", label: "Resolved" },
264
- { value: "wont_fix", label: "Won't Fix" }
265
- ],
266
- clearable: true,
267
- size: "sm",
268
- w: 170
269
- }
270
- ),
271
- /* @__PURE__ */ jsx(
272
- Select,
273
- {
274
- placeholder: "All sources",
275
- value: sourceFilter ?? null,
276
- onChange: handleSourceChange,
277
- data: [
278
- { value: "agent", label: "Agent" },
279
- { value: "cli", label: "CLI" },
280
- { value: "api", label: "API" },
281
- { value: "webhook", label: "Webhook" },
282
- { value: "user", label: "User" },
283
- { value: "external", label: "External" }
284
- ],
285
- clearable: true,
286
- size: "sm",
287
- w: 150
288
- }
289
- )
290
- ] }),
229
+ /* @__PURE__ */ jsxs(
230
+ FilterBar,
231
+ {
232
+ actions: /* @__PURE__ */ jsx(
233
+ TableSelectionToolbar,
234
+ {
235
+ selectedCount: selection.selectedCount,
236
+ onDelete: () => setShowBatchDelete(true),
237
+ isDeleting: deleteRequest.isPending
238
+ }
239
+ ),
240
+ children: [
241
+ /* @__PURE__ */ jsx(
242
+ Select,
243
+ {
244
+ placeholder: "All types",
245
+ value: typeFilter ?? null,
246
+ onChange: handleTypeChange,
247
+ data: [
248
+ { value: "bug", label: "Bug" },
249
+ { value: "feature", label: "Feature" },
250
+ { value: "question", label: "Question" },
251
+ { value: "other", label: "Other" }
252
+ ],
253
+ clearable: true,
254
+ size: "sm",
255
+ w: 150
256
+ }
257
+ ),
258
+ /* @__PURE__ */ jsx(
259
+ Select,
260
+ {
261
+ placeholder: "All severities",
262
+ value: severityFilter ?? null,
263
+ onChange: handleSeverityChange,
264
+ data: [
265
+ { value: "critical", label: "Critical" },
266
+ { value: "warning", label: "Warning" },
267
+ { value: "info", label: "Info" }
268
+ ],
269
+ clearable: true,
270
+ size: "sm",
271
+ w: 160
272
+ }
273
+ ),
274
+ /* @__PURE__ */ jsx(
275
+ Select,
276
+ {
277
+ placeholder: "All statuses",
278
+ value: statusFilter ?? null,
279
+ onChange: handleStatusChange,
280
+ data: [
281
+ { value: "open", label: "Open" },
282
+ { value: "investigating", label: "Investigating" },
283
+ { value: "resolved", label: "Resolved" },
284
+ { value: "wont_fix", label: "Won't Fix" }
285
+ ],
286
+ clearable: true,
287
+ size: "sm",
288
+ w: 170
289
+ }
290
+ ),
291
+ /* @__PURE__ */ jsx(
292
+ Select,
293
+ {
294
+ placeholder: "All sources",
295
+ value: sourceFilter ?? null,
296
+ onChange: handleSourceChange,
297
+ data: [
298
+ { value: "agent", label: "Agent" },
299
+ { value: "cli", label: "CLI" },
300
+ { value: "api", label: "API" },
301
+ { value: "webhook", label: "Webhook" },
302
+ { value: "user", label: "User" },
303
+ { value: "external", label: "External" }
304
+ ],
305
+ clearable: true,
306
+ size: "sm",
307
+ w: 150
308
+ }
309
+ )
310
+ ]
311
+ }
312
+ ),
291
313
  isLoading ? /* @__PURE__ */ jsx(Center, { py: "xl", children: /* @__PURE__ */ jsx(Loader, { size: "md" }) }) : requests.length === 0 ? /* @__PURE__ */ jsx(Center, { py: "xl", children: /* @__PURE__ */ jsx(Text, { c: "dimmed", children: "No requests yet" }) }) : /* @__PURE__ */ jsxs(Table, { highlightOnHover: true, style: { cursor: "pointer" }, children: [
292
314
  /* @__PURE__ */ jsx(Table.Thead, { children: /* @__PURE__ */ jsxs(Table.Tr, { children: [
315
+ /* @__PURE__ */ jsx(Table.Th, { w: 40, children: /* @__PURE__ */ jsx(
316
+ Checkbox,
317
+ {
318
+ checked: selection.isPageAllSelected,
319
+ indeterminate: selection.isPagePartiallySelected,
320
+ onChange: selection.togglePage
321
+ }
322
+ ) }),
293
323
  /* @__PURE__ */ jsx(Table.Th, { children: "Type" }),
294
324
  /* @__PURE__ */ jsx(Table.Th, { children: "Severity" }),
295
325
  /* @__PURE__ */ jsx(Table.Th, { children: "Title" }),
@@ -299,6 +329,13 @@ function RequestsListPage({
299
329
  /* @__PURE__ */ jsx(Table.Th, { children: "Actions" })
300
330
  ] }) }),
301
331
  /* @__PURE__ */ jsx(Table.Tbody, { children: requests.map((request) => /* @__PURE__ */ jsxs(Table.Tr, { onClick: () => onNavigateToRequest?.(request.id), children: [
332
+ /* @__PURE__ */ jsx(Table.Td, { onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsx(
333
+ Checkbox,
334
+ {
335
+ checked: selection.isSelected(request.id),
336
+ onChange: () => selection.toggle(request.id)
337
+ }
338
+ ) }),
302
339
  /* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(RequestTypeBadge, { type: request.type }) }),
303
340
  /* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(SeverityBadge, { severity: request.severity }) }),
304
341
  /* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Text, { size: "sm", lineClamp: 1, children: request.title }) }),
@@ -315,7 +352,38 @@ function RequestsListPage({
315
352
  ] }, request.id)) })
316
353
  ] }),
317
354
  pageCount > 1 && /* @__PURE__ */ jsx(Group, { justify: "flex-start", px: "md", pb: "md", children: /* @__PURE__ */ jsx(Pagination, { size: "sm", total: pageCount, value: page, onChange: setPage, boundaries: 1 }) })
318
- ] }) })
355
+ ] }) }),
356
+ /* @__PURE__ */ jsx(
357
+ CustomModal,
358
+ {
359
+ opened: showBatchDelete,
360
+ onClose: () => !deleteRequest.isPending && setShowBatchDelete(false),
361
+ size: "sm",
362
+ loading: deleteRequest.isPending,
363
+ children: /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
364
+ /* @__PURE__ */ jsxs(Group, { gap: "sm", children: [
365
+ /* @__PURE__ */ jsx(IconAlertTriangle, { size: 24, color: "var(--color-error)" }),
366
+ /* @__PURE__ */ jsxs(Title, { order: 4, children: [
367
+ "Delete ",
368
+ selection.selectedCount,
369
+ " Requests"
370
+ ] })
371
+ ] }),
372
+ /* @__PURE__ */ jsxs(Text, { size: "sm", children: [
373
+ "Are you sure you want to delete",
374
+ " ",
375
+ /* @__PURE__ */ jsx(Text, { span: true, fw: 600, children: selection.selectedCount }),
376
+ " ",
377
+ "selected requests?"
378
+ ] }),
379
+ /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "This action cannot be undone." }),
380
+ /* @__PURE__ */ jsxs(Group, { justify: "flex-end", mt: "md", children: [
381
+ /* @__PURE__ */ jsx(Button, { variant: "light", onClick: () => setShowBatchDelete(false), disabled: deleteRequest.isPending, children: "Cancel" }),
382
+ /* @__PURE__ */ jsx(Button, { color: "red", loading: deleteRequest.isPending, onClick: () => void handleDeleteSelected(), children: "Delete" })
383
+ ] })
384
+ ] })
385
+ }
386
+ )
319
387
  ] });
320
388
  }
321
389
  function formatDateTime(isoString) {
@@ -331,24 +399,28 @@ function MetaField({ label, children }) {
331
399
  /* @__PURE__ */ jsx("div", { children })
332
400
  ] });
333
401
  }
334
- function JsonSection({ title, data, emptyLabel }) {
402
+ function JsonSection({ title, icon, data, emptyLabel }) {
335
403
  const [view, setView] = useState("formatted");
336
404
  return /* @__PURE__ */ jsx(Paper, { withBorder: true, children: /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
337
- /* @__PURE__ */ jsxs(Group, { justify: "space-between", align: "center", children: [
338
- /* @__PURE__ */ jsx(Title, { order: 3, children: title }),
339
- data !== null && data !== void 0 && /* @__PURE__ */ jsx(
340
- SegmentedControl,
341
- {
342
- value: view,
343
- onChange: (v) => setView(v),
344
- size: "xs",
345
- data: [
346
- { label: "Formatted", value: "formatted" },
347
- { label: "JSON", value: "json" }
348
- ]
349
- }
350
- )
351
- ] }),
405
+ /* @__PURE__ */ jsx(
406
+ CardHeader,
407
+ {
408
+ icon,
409
+ title,
410
+ rightSection: data !== null && data !== void 0 ? /* @__PURE__ */ jsx(
411
+ SegmentedControl,
412
+ {
413
+ value: view,
414
+ onChange: (v) => setView(v),
415
+ size: "xs",
416
+ data: [
417
+ { label: "Formatted", value: "formatted" },
418
+ { label: "JSON", value: "json" }
419
+ ]
420
+ }
421
+ ) : null
422
+ }
423
+ ),
352
424
  data === null || data === void 0 ? /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", fs: "italic", children: emptyLabel }) : view === "formatted" ? /* @__PURE__ */ jsx(ContextViewer, { data }) : /* @__PURE__ */ jsx(JsonViewer, { data })
353
425
  ] }) });
354
426
  }
@@ -417,7 +489,26 @@ function RequestsDetailPage({ requestId, onNavigateBack }) {
417
489
  }
418
490
  ),
419
491
  /* @__PURE__ */ jsx(Paper, { withBorder: true, children: /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
420
- /* @__PURE__ */ jsx(Title, { order: 3, children: "Details" }),
492
+ /* @__PURE__ */ jsx(
493
+ CardHeader,
494
+ {
495
+ icon: /* @__PURE__ */ jsx(IconClipboardText, { size: 18 }),
496
+ title: "Details",
497
+ rightSection: /* @__PURE__ */ jsxs(Group, { gap: "xs", children: [
498
+ /* @__PURE__ */ jsx(Text, { size: "sm", ff: "monospace", c: "var(--color-text-subtle)", children: request.id }),
499
+ /* @__PURE__ */ jsx(CopyButton, { value: `/requests review ${request.id}`, children: ({ copied, copy }) => /* @__PURE__ */ jsx(Tooltip, { label: copied ? "Copied!" : "Copy ID", withArrow: true, children: /* @__PURE__ */ jsx(
500
+ ActionIcon,
501
+ {
502
+ onClick: copy,
503
+ variant: "subtle",
504
+ size: "xs",
505
+ color: copied ? "green" : "var(--color-text-subtle)",
506
+ children: copied ? /* @__PURE__ */ jsx(IconCheck, { size: 14 }) : /* @__PURE__ */ jsx(IconCopy, { size: 14 })
507
+ }
508
+ ) }) })
509
+ ] })
510
+ }
511
+ ),
421
512
  /* @__PURE__ */ jsxs(SimpleGrid, { cols: 2, spacing: "md", children: [
422
513
  /* @__PURE__ */ jsxs(MetaField, { label: "Status", children: [
423
514
  /* @__PURE__ */ jsx(StatusBadge, { status: currentStatus }),
@@ -433,11 +524,27 @@ function RequestsDetailPage({ requestId, onNavigateBack }) {
433
524
  ] })
434
525
  ] }) }),
435
526
  /* @__PURE__ */ jsx(Paper, { withBorder: true, children: /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
436
- /* @__PURE__ */ jsx(Title, { order: 3, children: "Description" }),
527
+ /* @__PURE__ */ jsx(CardHeader, { icon: /* @__PURE__ */ jsx(IconFileDescription, { size: 18 }), title: "Description" }),
437
528
  /* @__PURE__ */ jsx(Text, { size: "sm", style: { whiteSpace: "pre-wrap" }, children: request.description })
438
529
  ] }) }),
439
- /* @__PURE__ */ jsx(JsonSection, { title: "Evidence", data: request.evidence, emptyLabel: "No evidence recorded." }),
440
- /* @__PURE__ */ jsx(JsonSection, { title: "Context", data: request.context, emptyLabel: "No context recorded." })
530
+ /* @__PURE__ */ jsx(
531
+ JsonSection,
532
+ {
533
+ title: "Evidence",
534
+ icon: /* @__PURE__ */ jsx(IconAlertCircle, { size: 18 }),
535
+ data: request.evidence,
536
+ emptyLabel: "No evidence recorded."
537
+ }
538
+ ),
539
+ /* @__PURE__ */ jsx(
540
+ JsonSection,
541
+ {
542
+ title: "Context",
543
+ icon: /* @__PURE__ */ jsx(IconInfoCircle, { size: 18 }),
544
+ data: request.context,
545
+ emptyLabel: "No context recorded."
546
+ }
547
+ )
441
548
  ] });
442
549
  }
443
550
 
@@ -1,5 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode, ComponentType } from 'react';
3
+ import { EventSourceMessage } from '@microsoft/fetch-event-source';
3
4
 
4
5
  /**
5
6
  * Shared form field types for dynamic form generation
@@ -328,7 +329,7 @@ type ResourceStatus = 'dev' | 'prod';
328
329
  * All resource types in the platform
329
330
  * Used as the discriminator field in ResourceDefinition
330
331
  */
331
- type ResourceType$1 = 'agent' | 'workflow' | 'trigger' | 'integration' | 'external' | 'human';
332
+ type ResourceType = 'agent' | 'workflow' | 'trigger' | 'integration' | 'external' | 'human';
332
333
  /**
333
334
  * Base interface for ALL platform resources
334
335
  * Shared by both executable (agents, workflows) and non-executable (triggers, integrations, etc.) resources
@@ -343,7 +344,7 @@ interface ResourceDefinition {
343
344
  /** Version for change tracking and evolution */
344
345
  version: string;
345
346
  /** Resource type discriminator */
346
- type: ResourceType$1;
347
+ type: ResourceType;
347
348
  /** Environment/deployment status */
348
349
  status: ResourceStatus;
349
350
  /** Domain tags for filtering and organization */
@@ -385,9 +386,9 @@ type ResourceDomain = (typeof DOMAINS)[keyof typeof DOMAINS];
385
386
 
386
387
  interface ResourcesPageProps {
387
388
  /** Initial filter type from the URL search param (caller-managed) */
388
- initialFilter?: ResourceType$1;
389
+ initialFilter?: ResourceType;
389
390
  /** Called when the user changes the tab filter — caller should update its URL */
390
- onTypeChange: (type: ResourceType$1 | undefined) => void;
391
+ onTypeChange: (type: ResourceType | undefined) => void;
391
392
  /** Current time range value — caller passes from its own store */
392
393
  timeRange: TimeRange;
393
394
  /** Called when the user clicks a resource row — caller handles navigation */
@@ -461,14 +462,14 @@ declare function ResourcesSidebar({ timeRange }: ResourcesSidebarProps): react_j
461
462
 
462
463
  interface ResourceDetailPageRenderExecutionPanelArgs {
463
464
  resourceId: string;
464
- resourceType: ResourceType$1;
465
+ resourceType: ResourceType;
465
466
  resourceName: string;
466
467
  resourceDefinition: AIResourceDefinition;
467
468
  onConnectionStatus: (connected: boolean, count: number) => void;
468
469
  }
469
470
  interface ResourceDetailPageProps {
470
471
  /** Resource type (workflow, agent, etc.) */
471
- type: ResourceType$1;
472
+ type: ResourceType;
472
473
  /** Resource identifier */
473
474
  resourceId: string;
474
475
  /** Current time range value — caller passes from its own store */
@@ -488,31 +489,12 @@ interface ResourceDetailPageProps {
488
489
  }
489
490
  declare function ResourceDetailPage({ type, resourceId, timeRange, renderExecutionPanel, onNavigateToResources, onNavigateToSessions, onNavigateBack }: ResourceDetailPageProps): react_jsx_runtime.JSX.Element;
490
491
 
491
- /**
492
- * Resource Registry type definitions
493
- */
494
-
495
-
496
-
497
- /**
498
- * All resource types in the platform
499
- * Used as the discriminator field in ResourceDefinition
500
- */
501
- type ResourceType = 'agent' | 'workflow' | 'trigger' | 'integration' | 'external' | 'human'
502
-
503
492
  interface ExecuteAsyncResult {
504
493
  executionId: string;
505
494
  status: string;
506
495
  resourceId: string;
507
496
  }
508
497
 
509
- interface EventSourceMessage {
510
- id: string;
511
- event: string;
512
- data: string;
513
- retry?: number;
514
- }
515
-
516
498
  interface FetchEventSourceWithTokenRefreshOptions {
517
499
  url: string;
518
500
  getToken: () => Promise<string | undefined>;
@@ -657,7 +639,7 @@ declare function CommandViewSidebarContent({ timeRange }: CommandViewSidebarCont
657
639
  type ExecutionSelectionControlProps$2 = Pick<UseExecutionPanelStateOptions, 'selectedId' | 'onSelectedIdChange'>;
658
640
  interface ExecutionPanelProps extends ExecutionSelectionControlProps$2 {
659
641
  resourceId: string;
660
- resourceType: ResourceType$1;
642
+ resourceType: ResourceType;
661
643
  resourceName?: string;
662
644
  resourceDefinition: AIResourceDefinition;
663
645
  sseManager: SSEConnectionManagerLike;
@@ -1,36 +1,36 @@
1
- export { AgentExecutionPanel, AgentSessionGroup, CommandQueueDetailPage, CommandQueuePage, CommandQueueShell, CommandViewPage, CommandViewSidebarContent, ExecuteWorkflowModal, ExecutionPanel, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, OrganizationGraphPage, ResourceDetailPage, ResourceExecuteDialog, ResourceExecuteForm, ResourcesPage, ResourcesSidebar, SessionChatArea, SessionChatInterface, SessionChatPage, SessionDetailsSidebar, SessionExecutionLogs, SessionHeader, SessionListItem, SessionsPage, SessionsSidebar, WorkflowExecutionPanel, operationsManifest } from '../../chunk-WP3IYOVJ.js';
1
+ export { AgentExecutionPanel, AgentSessionGroup, CommandQueueDetailPage, CommandQueuePage, CommandQueueShell, CommandViewPage, CommandViewSidebarContent, ExecuteWorkflowModal, ExecutionPanel, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, OrganizationGraphPage, ResourceDetailPage, ResourceExecuteDialog, ResourceExecuteForm, ResourcesPage, ResourcesSidebar, SessionChatArea, SessionChatInterface, SessionChatPage, SessionDetailsSidebar, SessionExecutionLogs, SessionHeader, SessionListItem, SessionsPage, SessionsSidebar, WorkflowExecutionPanel, operationsManifest } from '../../chunk-YP6T426C.js';
2
2
  import '../../chunk-ROSMICXG.js';
3
- import '../../chunk-ADSSLKKP.js';
3
+ import '../../chunk-3JCMO7SD.js';
4
4
  import '../../chunk-ZTWA5H77.js';
5
- export { OperationsOverview } from '../../chunk-66VY5EMV.js';
5
+ export { OperationsOverview } from '../../chunk-PJVG3ISO.js';
6
6
  import '../../chunk-442LZPIR.js';
7
- import '../../chunk-FM6LSZ45.js';
7
+ import '../../chunk-ZE2KQSHL.js';
8
8
  import '../../chunk-LGKLC5MG.js';
9
- import '../../chunk-DDZMBNTY.js';
9
+ import '../../chunk-CTTY6FUT.js';
10
10
  import '../../chunk-M25JL54Z.js';
11
11
  import '../../chunk-BZZCNLT6.js';
12
12
  import '../../chunk-IIMU5YAJ.js';
13
13
  import '../../chunk-GBMNCNHX.js';
14
14
  import '../../chunk-E4WQGJNS.js';
15
15
  import '../../chunk-7M2VOCYN.js';
16
- import '../../chunk-EY322HXF.js';
16
+ import '../../chunk-FMFX4K6E.js';
17
17
  import '../../chunk-BRXELOHC.js';
18
18
  import '../../chunk-QSTH6T77.js';
19
- import '../../chunk-GRGRBWIO.js';
19
+ import '../../chunk-M7W7CGPL.js';
20
20
  import '../../chunk-22UVE3RA.js';
21
21
  import '../../chunk-3ZMAGTWF.js';
22
- import '../../chunk-I3LQGLUC.js';
23
- import '../../chunk-34NQLV2W.js';
24
- import '../../chunk-R73EHHPN.js';
22
+ import '../../chunk-Q4QJOSVS.js';
23
+ import '../../chunk-TO7QXDBX.js';
24
+ import '../../chunk-Q5HC6ENG.js';
25
25
  import '../../chunk-WLOQ4IBG.js';
26
- import '../../chunk-A2AZY5SF.js';
27
- import '../../chunk-P3TFNFZS.js';
26
+ import '../../chunk-LR5CRY5A.js';
27
+ import '../../chunk-OUYH2SBS.js';
28
28
  import '../../chunk-RX4UWZZR.js';
29
- import '../../chunk-SQPM2QDH.js';
29
+ import '../../chunk-BHR7IV72.js';
30
30
  import '../../chunk-SZHARWKU.js';
31
31
  import '../../chunk-3KMDHCAR.js';
32
32
  import '../../chunk-NYBEU5TE.js';
33
- import '../../chunk-VDM6DQES.js';
33
+ import '../../chunk-R7OJCNL3.js';
34
34
  import '../../chunk-2IFYDILW.js';
35
35
  import '../../chunk-Q7DJKLEN.js';
36
36
  import '../../chunk-7YQKVWSD.js';
@@ -39,7 +39,7 @@ import '../../chunk-QJ2KCHKX.js';
39
39
  import '../../chunk-HQ7M6PBW.js';
40
40
  import '../../chunk-DT3QYZVU.js';
41
41
  import '../../chunk-RNP5R5I3.js';
42
- import '../../chunk-GCBWGGI6.js';
42
+ import '../../chunk-OD7GWIZS.js';
43
43
  import '../../chunk-KRWALB24.js';
44
44
  import '../../chunk-SLH2QLKV.js';
45
45
  import '../../chunk-DK2HVHCY.js';
@@ -47,3 +47,4 @@ import '../../chunk-DD3CCMCZ.js';
47
47
  import '../../chunk-QHSW4WHM.js';
48
48
  import '../../chunk-IRW7JMQ4.js';
49
49
  import '../../chunk-BRJ3QZ4E.js';
50
+ import '../../chunk-I2KLQ2HA.js';
@@ -4,3 +4,4 @@ import '../../chunk-IIMU5YAJ.js';
4
4
  import '../../chunk-2IFYDILW.js';
5
5
  import '../../chunk-Q7DJKLEN.js';
6
6
  import '../../chunk-DT3QYZVU.js';
7
+ import '../../chunk-I2KLQ2HA.js';