@anvia/studio 0.5.11 → 0.5.13
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/ui/assets/ArrowClockwise.es-cF7OPZy5.js.map +1 -1
- package/dist/ui/assets/Path.es-D-NB-Xon.js.map +1 -1
- package/dist/ui/assets/Play.es-BoMnJL28.js.map +1 -1
- package/dist/ui/assets/index-rc2RWnWD.js.map +1 -1
- package/dist/ui/assets/jsx-runtime-ZfyQks-z.js.map +1 -1
- package/dist/ui/assets/pipelines-page-Byb_JYxi.js.map +1 -1
- package/dist/ui/assets/renderers-C8RHOlPz.js.map +1 -1
- package/dist/ui/assets/sessions-page-CV8GZKjN.js.map +1 -1
- package/dist/ui/assets/trace-browser-dvGDi7ji.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions-page-CV8GZKjN.js","names":["s","e","t","Dialog","PortalPrimitive","RemoveScroll","DialogContent","Fragment","DialogTitle","DialogDescription","createContext"],"sources":["../../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/Trash.es.js","../../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/Trash.es.js","../../../../../../node_modules/.pnpm/@radix-ui+react-dialog@1.1.16_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_677c17d5ce90af52e6a9c3192fd27371/node_modules/@radix-ui/react-dialog/dist/index.mjs","../../../src/ui/app/components/ui/dialog.tsx","../../../src/ui/app/modules/sessions/sessions-page.tsx"],"sourcesContent":["import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H180V36A28,28,0,0,0,152,8H104A28,28,0,0,0,76,36V48H40a12,12,0,0,0,0,24h4V208a20,20,0,0,0,20,20H192a20,20,0,0,0,20-20V72h4a12,12,0,0,0,0-24ZM100,36a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V48H100Zm88,168H68V72H188ZM116,104v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Zm48,0v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M200,56V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V56Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM112,168a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm0-120H96V40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,50H174V40a22,22,0,0,0-22-22H104A22,22,0,0,0,82,40V50H40a6,6,0,0,0,0,12H50V208a14,14,0,0,0,14,14H192a14,14,0,0,0,14-14V62h10a6,6,0,0,0,0-12ZM94,40a10,10,0,0,1,10-10h48a10,10,0,0,1,10,10V50H94ZM194,208a2,2,0,0,1-2,2H64a2,2,0,0,1-2-2V62H194ZM110,104v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Zm48,0v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,52H172V40a20,20,0,0,0-20-20H104A20,20,0,0,0,84,40V52H40a4,4,0,0,0,0,8H52V208a12,12,0,0,0,12,12H192a12,12,0,0,0,12-12V60h12a4,4,0,0,0,0-8ZM92,40a12,12,0,0,1,12-12h48a12,12,0,0,1,12,12V52H92ZM196,208a4,4,0,0,1-4,4H64a4,4,0,0,1-4-4V60H196ZM108,104v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Zm48,0v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport s from \"../lib/IconBase.es.js\";\nimport t from \"../defs/Trash.es.js\";\nconst r = o.forwardRef((a, e) => /* @__PURE__ */ o.createElement(s, { ref: e, ...a, weights: t }));\nr.displayName = \"TrashIcon\";\nconst n = r;\nexport {\n n as Trash,\n r as TrashIcon\n};\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: forwardedRef,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n useFocusGuards();\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: composedRefs,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n ] })\n ] });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n Close,\n Content,\n Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogClose = DialogPrimitive.Close;\n\nexport function DialogContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\" />\n <DialogPrimitive.Content\n className={cn(\n \"fixed left-1/2 top-1/2 z-50 grid w-[min(420px,calc(100vw-32px))] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl border border-border bg-popover p-5 text-popover-foreground shadow-2xl shadow-black/40\",\n className,\n )}\n {...props}\n >\n {children}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n}\n\nexport function DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"grid gap-1.5\", className)} {...props} />;\n}\n\nexport function DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"flex justify-end gap-2\", className)} {...props} />;\n}\n\nexport function DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return <DialogPrimitive.Title className={cn(\"text-base font-bold\", className)} {...props} />;\n}\n\nexport function DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n className={cn(\"text-sm leading-6 text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n","import { ActivityIcon as Activity, Trash } from \"@phosphor-icons/react\";\nimport type { StudioConfig, StudioSessionSummary } from \"../../../../types\";\nimport { Button } from \"../../components/ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"../../components/ui/dialog\";\nimport { cn } from \"../../lib/utils\";\nimport { agentLabel, formatRelativeTime } from \"../shared/format\";\nimport type { SessionLoadState } from \"../shared/types\";\n\nexport function SessionsPage(props: {\n agents: StudioConfig[\"agents\"];\n sessions: StudioSessionSummary[];\n sessionsEnabled: boolean;\n sessionLoadState: SessionLoadState;\n selectedSessionId: string;\n onOpenSession: (sessionId: string) => void;\n onViewSessionTracing: (sessionId: string) => void;\n onDeleteSession: (session: StudioSessionSummary) => void;\n}) {\n if (!props.sessionsEnabled) {\n return (\n <div className=\"w-full rounded-lg border border-dashed border-border p-8 text-sm font-medium text-muted-foreground\">\n Sessions are disabled\n </div>\n );\n }\n\n return (\n <section className=\"grid min-h-0 w-full overflow-auto pb-6 pl-0 pr-6\" aria-label=\"Sessions\">\n <div className=\"min-w-225 overflow-hidden rounded-xl border border-border/80 bg-card/70 p-2 shadow-sm\">\n <div className=\"sticky top-0 z-10 grid min-h-11 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px_72px] items-center gap-4 rounded-lg border border-border/60 bg-card/95 px-4 font-mono text-[11px] font-semibold uppercase tracking-[0.18em] text-muted-foreground backdrop-blur\">\n <span>Session</span>\n <span>Agent</span>\n <span>Messages</span>\n <span>Updated</span>\n <span className=\"sr-only\">Actions</span>\n </div>\n {props.sessionLoadState === \"loading\" && props.sessions.length === 0 ? (\n <div className=\"px-5 py-4 text-sm font-medium text-muted-foreground\">\n Loading sessions\n </div>\n ) : null}\n {props.sessionLoadState === \"idle\" && props.sessions.length === 0 ? (\n <div className=\"px-5 py-4 text-sm font-medium text-muted-foreground\">No sessions</div>\n ) : null}\n {props.sessions.map((session) => (\n <div\n className={cn(\n \"mt-1 grid min-h-14 w-full min-w-0 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px_72px] items-center gap-4 rounded-lg border border-transparent px-4 text-left text-muted-foreground transition duration-200 hover:border-primary/20 hover:bg-accent/80 hover:text-accent-foreground\",\n session.id === props.selectedSessionId &&\n \"border-primary/35 bg-primary/10 text-primary\",\n )}\n key={session.id}\n >\n <Button\n className=\"col-span-4 grid h-full min-h-14 min-w-0 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px] items-center justify-start gap-4 border-0 bg-transparent p-0 text-left text-inherit shadow-none hover:bg-transparent hover:text-inherit\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onOpenSession(session.id)}\n >\n <span className=\"grid min-w-0 gap-0.5\">\n <strong className=\"min-w-0 truncate text-sm font-medium text-foreground\">\n {session.title ?? \"Untitled chat\"}\n </strong>\n <span className=\"min-w-0 truncate font-mono text-xs font-medium text-muted-foreground\">\n {session.id}\n </span>\n </span>\n <span className=\"min-w-0 truncate text-xs font-medium\">\n {agentLabel(props.agents, session.agentId)}\n </span>\n <span className=\"text-xs font-medium tabular-nums text-muted-foreground\">\n {session.messageCount} messages\n </span>\n <time className=\"text-xs font-medium text-muted-foreground\">\n {formatRelativeTime(session.updatedAt)}\n </time>\n </Button>\n <span className=\"flex items-center justify-end gap-1\">\n <Button\n aria-label={`View tracing for ${session.title ?? \"Untitled chat\"}`}\n className=\"h-7 min-h-7 w-7 border-0 bg-transparent p-0 text-muted-foreground opacity-80 hover:bg-transparent hover:text-primary hover:opacity-100 [&_svg]:h-3.5 [&_svg]:w-3.5\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={(event) => {\n event.stopPropagation();\n props.onViewSessionTracing(session.id);\n }}\n >\n <Activity aria-hidden=\"true\" />\n </Button>\n <Button\n aria-label={`Delete ${session.title ?? \"Untitled chat\"}`}\n className=\"h-7 min-h-7 w-7 border-0 bg-transparent p-0 text-muted-foreground opacity-80 hover:bg-transparent hover:text-destructive hover:opacity-100 [&_svg]:h-3.5 [&_svg]:w-3.5\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={(event) => {\n event.stopPropagation();\n props.onDeleteSession(session);\n }}\n >\n <Trash aria-hidden=\"true\" />\n </Button>\n </span>\n </div>\n ))}\n </div>\n </section>\n );\n}\n\nexport function DeleteSessionDialog(props: {\n session: StudioSessionSummary | undefined;\n onOpenChange: (open: boolean) => void;\n onConfirm: (session: StudioSessionSummary) => void;\n}) {\n const title = props.session?.title ?? \"Untitled chat\";\n\n return (\n <Dialog open={props.session !== undefined} onOpenChange={props.onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Delete session</DialogTitle>\n <DialogDescription>\n Delete \"{title}\" and its traces. This cannot be undone.\n </DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <Button type=\"button\" variant=\"ghost\" onClick={() => props.onOpenChange(false)}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n variant=\"destructive\"\n onClick={() => {\n if (props.session !== undefined) {\n props.onConfirm(props.session);\n }\n }}\n >\n Delete\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sessions-page-CV8GZKjN.js","names":["s","e","t","Dialog","PortalPrimitive","RemoveScroll","DialogContent","Fragment","DialogTitle","DialogDescription","createContext"],"sources":["../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/Trash.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/Trash.es.js","../../../../../node_modules/.pnpm/@radix-ui+react-dialog@1.1.16_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_677c17d5ce90af52e6a9c3192fd27371/node_modules/@radix-ui/react-dialog/dist/index.mjs","../../../src/ui/app/components/ui/dialog.tsx","../../../src/ui/app/modules/sessions/sessions-page.tsx"],"sourcesContent":["import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H180V36A28,28,0,0,0,152,8H104A28,28,0,0,0,76,36V48H40a12,12,0,0,0,0,24h4V208a20,20,0,0,0,20,20H192a20,20,0,0,0,20-20V72h4a12,12,0,0,0,0-24ZM100,36a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V48H100Zm88,168H68V72H188ZM116,104v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Zm48,0v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M200,56V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V56Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM112,168a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm0-120H96V40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,50H174V40a22,22,0,0,0-22-22H104A22,22,0,0,0,82,40V50H40a6,6,0,0,0,0,12H50V208a14,14,0,0,0,14,14H192a14,14,0,0,0,14-14V62h10a6,6,0,0,0,0-12ZM94,40a10,10,0,0,1,10-10h48a10,10,0,0,1,10,10V50H94ZM194,208a2,2,0,0,1-2,2H64a2,2,0,0,1-2-2V62H194ZM110,104v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Zm48,0v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,52H172V40a20,20,0,0,0-20-20H104A20,20,0,0,0,84,40V52H40a4,4,0,0,0,0,8H52V208a12,12,0,0,0,12,12H192a12,12,0,0,0,12-12V60h12a4,4,0,0,0,0-8ZM92,40a12,12,0,0,1,12-12h48a12,12,0,0,1,12,12V52H92ZM196,208a4,4,0,0,1-4,4H64a4,4,0,0,1-4-4V60H196ZM108,104v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Zm48,0v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport s from \"../lib/IconBase.es.js\";\nimport t from \"../defs/Trash.es.js\";\nconst r = o.forwardRef((a, e) => /* @__PURE__ */ o.createElement(s, { ref: e, ...a, weights: t }));\nr.displayName = \"TrashIcon\";\nconst n = r;\nexport {\n n as Trash,\n r as TrashIcon\n};\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: forwardedRef,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n useFocusGuards();\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: composedRefs,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n ] })\n ] });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n Close,\n Content,\n Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogClose = DialogPrimitive.Close;\n\nexport function DialogContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\" />\n <DialogPrimitive.Content\n className={cn(\n \"fixed left-1/2 top-1/2 z-50 grid w-[min(420px,calc(100vw-32px))] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl border border-border bg-popover p-5 text-popover-foreground shadow-2xl shadow-black/40\",\n className,\n )}\n {...props}\n >\n {children}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n}\n\nexport function DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"grid gap-1.5\", className)} {...props} />;\n}\n\nexport function DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"flex justify-end gap-2\", className)} {...props} />;\n}\n\nexport function DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return <DialogPrimitive.Title className={cn(\"text-base font-bold\", className)} {...props} />;\n}\n\nexport function DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n className={cn(\"text-sm leading-6 text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n","import { ActivityIcon as Activity, Trash } from \"@phosphor-icons/react\";\nimport type { StudioConfig, StudioSessionSummary } from \"../../../../types\";\nimport { Button } from \"../../components/ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"../../components/ui/dialog\";\nimport { cn } from \"../../lib/utils\";\nimport { agentLabel, formatRelativeTime } from \"../shared/format\";\nimport type { SessionLoadState } from \"../shared/types\";\n\nexport function SessionsPage(props: {\n agents: StudioConfig[\"agents\"];\n sessions: StudioSessionSummary[];\n sessionsEnabled: boolean;\n sessionLoadState: SessionLoadState;\n selectedSessionId: string;\n onOpenSession: (sessionId: string) => void;\n onViewSessionTracing: (sessionId: string) => void;\n onDeleteSession: (session: StudioSessionSummary) => void;\n}) {\n if (!props.sessionsEnabled) {\n return (\n <div className=\"w-full rounded-lg border border-dashed border-border p-8 text-sm font-medium text-muted-foreground\">\n Sessions are disabled\n </div>\n );\n }\n\n return (\n <section className=\"grid min-h-0 w-full overflow-auto pb-6 pl-0 pr-6\" aria-label=\"Sessions\">\n <div className=\"min-w-225 overflow-hidden rounded-xl border border-border/80 bg-card/70 p-2 shadow-sm\">\n <div className=\"sticky top-0 z-10 grid min-h-11 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px_72px] items-center gap-4 rounded-lg border border-border/60 bg-card/95 px-4 font-mono text-[11px] font-semibold uppercase tracking-[0.18em] text-muted-foreground backdrop-blur\">\n <span>Session</span>\n <span>Agent</span>\n <span>Messages</span>\n <span>Updated</span>\n <span className=\"sr-only\">Actions</span>\n </div>\n {props.sessionLoadState === \"loading\" && props.sessions.length === 0 ? (\n <div className=\"px-5 py-4 text-sm font-medium text-muted-foreground\">\n Loading sessions\n </div>\n ) : null}\n {props.sessionLoadState === \"idle\" && props.sessions.length === 0 ? (\n <div className=\"px-5 py-4 text-sm font-medium text-muted-foreground\">No sessions</div>\n ) : null}\n {props.sessions.map((session) => (\n <div\n className={cn(\n \"mt-1 grid min-h-14 w-full min-w-0 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px_72px] items-center gap-4 rounded-lg border border-transparent px-4 text-left text-muted-foreground transition duration-200 hover:border-primary/20 hover:bg-accent/80 hover:text-accent-foreground\",\n session.id === props.selectedSessionId &&\n \"border-primary/35 bg-primary/10 text-primary\",\n )}\n key={session.id}\n >\n <Button\n className=\"col-span-4 grid h-full min-h-14 min-w-0 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px] items-center justify-start gap-4 border-0 bg-transparent p-0 text-left text-inherit shadow-none hover:bg-transparent hover:text-inherit\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onOpenSession(session.id)}\n >\n <span className=\"grid min-w-0 gap-0.5\">\n <strong className=\"min-w-0 truncate text-sm font-medium text-foreground\">\n {session.title ?? \"Untitled chat\"}\n </strong>\n <span className=\"min-w-0 truncate font-mono text-xs font-medium text-muted-foreground\">\n {session.id}\n </span>\n </span>\n <span className=\"min-w-0 truncate text-xs font-medium\">\n {agentLabel(props.agents, session.agentId)}\n </span>\n <span className=\"text-xs font-medium tabular-nums text-muted-foreground\">\n {session.messageCount} messages\n </span>\n <time className=\"text-xs font-medium text-muted-foreground\">\n {formatRelativeTime(session.updatedAt)}\n </time>\n </Button>\n <span className=\"flex items-center justify-end gap-1\">\n <Button\n aria-label={`View tracing for ${session.title ?? \"Untitled chat\"}`}\n className=\"h-7 min-h-7 w-7 border-0 bg-transparent p-0 text-muted-foreground opacity-80 hover:bg-transparent hover:text-primary hover:opacity-100 [&_svg]:h-3.5 [&_svg]:w-3.5\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={(event) => {\n event.stopPropagation();\n props.onViewSessionTracing(session.id);\n }}\n >\n <Activity aria-hidden=\"true\" />\n </Button>\n <Button\n aria-label={`Delete ${session.title ?? \"Untitled chat\"}`}\n className=\"h-7 min-h-7 w-7 border-0 bg-transparent p-0 text-muted-foreground opacity-80 hover:bg-transparent hover:text-destructive hover:opacity-100 [&_svg]:h-3.5 [&_svg]:w-3.5\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={(event) => {\n event.stopPropagation();\n props.onDeleteSession(session);\n }}\n >\n <Trash aria-hidden=\"true\" />\n </Button>\n </span>\n </div>\n ))}\n </div>\n </section>\n );\n}\n\nexport function DeleteSessionDialog(props: {\n session: StudioSessionSummary | undefined;\n onOpenChange: (open: boolean) => void;\n onConfirm: (session: StudioSessionSummary) => void;\n}) {\n const title = props.session?.title ?? \"Untitled chat\";\n\n return (\n <Dialog open={props.session !== undefined} onOpenChange={props.onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Delete session</DialogTitle>\n <DialogDescription>\n Delete \"{title}\" and its traces. This cannot be undone.\n </DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <Button type=\"button\" variant=\"ghost\" onClick={() => props.onOpenChange(false)}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n variant=\"destructive\"\n onClick={() => {\n if (props.session !== undefined) {\n props.onConfirm(props.session);\n }\n }}\n >\n Delete\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
|