@exulu/frontend 1.3.0 → 1.3.1

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 (122) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-build-manifest.json +81 -81
  3. package/dist/.next/app-path-routes-manifest.json +1 -1
  4. package/dist/.next/build-manifest.json +2 -2
  5. package/dist/.next/prerender-manifest.json +1 -1
  6. package/dist/.next/server/app/(application)/agents/edit/[id]/page.js +1 -1
  7. package/dist/.next/server/app/(application)/agents/edit/[id]/page.js.nft.json +1 -1
  8. package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
  9. package/dist/.next/server/app/(application)/agents/page.js +2 -2
  10. package/dist/.next/server/app/(application)/agents/page.js.nft.json +1 -1
  11. package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
  12. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +2 -2
  13. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js.nft.json +1 -1
  14. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
  15. package/dist/.next/server/app/(application)/chat/[agent]/page.js +1 -1
  16. package/dist/.next/server/app/(application)/chat/[agent]/page.js.nft.json +1 -1
  17. package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
  18. package/dist/.next/server/app/(application)/chat/page.js +1 -1
  19. package/dist/.next/server/app/(application)/chat/page.js.nft.json +1 -1
  20. package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
  21. package/dist/.next/server/app/(application)/configuration/page.js +1 -1
  22. package/dist/.next/server/app/(application)/configuration/page.js.nft.json +1 -1
  23. package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
  24. package/dist/.next/server/app/(application)/dashboard/page.js +1 -1
  25. package/dist/.next/server/app/(application)/dashboard/page.js.nft.json +1 -1
  26. package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
  27. package/dist/.next/server/app/(application)/data/[[...query]]/page.js +1 -1
  28. package/dist/.next/server/app/(application)/data/[[...query]]/page.js.nft.json +1 -1
  29. package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
  30. package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
  31. package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
  32. package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
  33. package/dist/.next/server/app/(application)/evals/[id]/runs/page.js +1 -1
  34. package/dist/.next/server/app/(application)/evals/[id]/runs/page.js.nft.json +1 -1
  35. package/dist/.next/server/app/(application)/evals/[id]/runs/page_client-reference-manifest.js +1 -1
  36. package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
  37. package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
  38. package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
  39. package/dist/.next/server/app/(application)/evals/page.js +1 -1
  40. package/dist/.next/server/app/(application)/evals/page.js.nft.json +1 -1
  41. package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
  42. package/dist/.next/server/app/(application)/explorer/page.js +1 -1
  43. package/dist/.next/server/app/(application)/explorer/page.js.nft.json +1 -1
  44. package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
  45. package/dist/.next/server/app/(application)/jobs/page.js +1 -1
  46. package/dist/.next/server/app/(application)/jobs/page.js.nft.json +1 -1
  47. package/dist/.next/server/app/(application)/jobs/page_client-reference-manifest.js +1 -1
  48. package/dist/.next/server/app/(application)/keys/page.js +1 -1
  49. package/dist/.next/server/app/(application)/keys/page.js.nft.json +1 -1
  50. package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
  51. package/dist/.next/server/app/(application)/page.js +1 -1
  52. package/dist/.next/server/app/(application)/page.js.nft.json +1 -1
  53. package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
  54. package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
  55. package/dist/.next/server/app/(application)/projects/[project]/page.js.nft.json +1 -1
  56. package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
  57. package/dist/.next/server/app/(application)/projects/page.js +1 -1
  58. package/dist/.next/server/app/(application)/projects/page.js.nft.json +1 -1
  59. package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
  60. package/dist/.next/server/app/(application)/roles/page.js +1 -1
  61. package/dist/.next/server/app/(application)/roles/page.js.nft.json +1 -1
  62. package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
  63. package/dist/.next/server/app/(application)/token/page.js +1 -1
  64. package/dist/.next/server/app/(application)/token/page.js.nft.json +1 -1
  65. package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
  66. package/dist/.next/server/app/(application)/users/page.js +1 -1
  67. package/dist/.next/server/app/(application)/users/page.js.nft.json +1 -1
  68. package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
  69. package/dist/.next/server/app/(application)/variables/create/page.js +1 -1
  70. package/dist/.next/server/app/(application)/variables/create/page.js.nft.json +1 -1
  71. package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
  72. package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page.js +1 -1
  73. package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page.js.nft.json +1 -1
  74. package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
  75. package/dist/.next/server/app/(application)/variables/page.js +1 -1
  76. package/dist/.next/server/app/(application)/variables/page.js.nft.json +1 -1
  77. package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
  78. package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page.js +1 -1
  79. package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page.js.nft.json +1 -1
  80. package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
  81. package/dist/.next/server/app/(application)/workflows/page.js +1 -1
  82. package/dist/.next/server/app/(application)/workflows/page.js.nft.json +1 -1
  83. package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
  84. package/dist/.next/server/app/(authentication)/login/page.js +3 -3
  85. package/dist/.next/server/app/(authentication)/login/page.js.nft.json +1 -1
  86. package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
  87. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  88. package/dist/.next/server/app/_not-found.html +1 -1
  89. package/dist/.next/server/app/_not-found.rsc +1 -1
  90. package/dist/.next/server/app-paths-manifest.json +3 -3
  91. package/dist/.next/server/chunks/1051.js +48 -0
  92. package/dist/.next/server/chunks/7944.js +1 -1
  93. package/dist/.next/server/middleware-manifest.json +5 -5
  94. package/dist/.next/server/pages/404.html +1 -1
  95. package/dist/.next/server/pages/500.html +1 -1
  96. package/dist/.next/server/server-reference-manifest.json +1 -1
  97. package/dist/.next/static/chunks/{3832-cfd7197465448e35.js → 3832-bfe8bd2edace90f9.js} +2 -2
  98. package/dist/.next/static/chunks/3832-bfe8bd2edace90f9.js.map +1 -0
  99. package/dist/.next/static/chunks/app/(application)/agents/page-499ac3bd1044306c.js +2 -0
  100. package/dist/.next/static/chunks/app/(application)/agents/page-499ac3bd1044306c.js.map +1 -0
  101. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-b600c0b270eedb7f.js +2 -0
  102. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-b600c0b270eedb7f.js.map +1 -0
  103. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-2238f1fb73d93328.js +2 -0
  104. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-2238f1fb73d93328.js.map +1 -0
  105. package/dist/.next/static/chunks/app/(authentication)/layout-0f416e1b9326e03a.js +2 -0
  106. package/dist/.next/static/chunks/app/(authentication)/layout-0f416e1b9326e03a.js.map +1 -0
  107. package/dist/.next/static/css/{175d6535ea9efb2c.css → 7b99daf4eb75ddb9.css} +2 -2
  108. package/dist/.next/static/css/{175d6535ea9efb2c.css.map → 7b99daf4eb75ddb9.css.map} +1 -1
  109. package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
  110. package/package.json +1 -1
  111. package/dist/.next/server/chunks/7223.js +0 -48
  112. package/dist/.next/static/chunks/3832-cfd7197465448e35.js.map +0 -1
  113. package/dist/.next/static/chunks/app/(application)/agents/page-4137487b76f09235.js +0 -2
  114. package/dist/.next/static/chunks/app/(application)/agents/page-4137487b76f09235.js.map +0 -1
  115. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-0f729a6df64d730e.js +0 -2
  116. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-0f729a6df64d730e.js.map +0 -1
  117. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-b2de62f11946627f.js +0 -2
  118. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-b2de62f11946627f.js.map +0 -1
  119. package/dist/.next/static/chunks/app/(authentication)/layout-2dfa18ea6e6dc5cd.js +0 -2
  120. package/dist/.next/static/chunks/app/(authentication)/layout-2dfa18ea6e6dc5cd.js.map +0 -1
  121. /package/dist/.next/static/{_G7TS_eJB-KA5rdSZzdGX → ilyTh3roMkVIbl9q2AwIk}/_buildManifest.js +0 -0
  122. /package/dist/.next/static/{_G7TS_eJB-KA5rdSZzdGX → ilyTh3roMkVIbl9q2AwIk}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/chunks/app/(application)/chat/[agent]/[session]/page-0f729a6df64d730e.js","mappings":"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","sources":["webpack://_N_E/?69f0","webpack://_N_E/./components/ai-elements/loader.tsx","webpack://_N_E/./components/ui/hover-card.tsx","webpack://_N_E/./components/ui/progress.tsx","webpack://_N_E/./components/ai-elements/context.tsx","webpack://_N_E/./components/ai-elements/tool.tsx","webpack://_N_E/./app/(application)/chat/[agent]/[session]/chat.tsx","webpack://_N_E/./app/(application)/chat/[agent]/[session]/page.tsx","webpack://_N_E/./components/ai-elements/conversation.tsx","webpack://_N_E/./components/ai-elements/message.tsx","webpack://_N_E/./components/ai-elements/actions.tsx","webpack://_N_E/./components/ai-elements/reasoning.tsx","webpack://_N_E/./components/ai-elements/source.tsx","webpack://_N_E/./components/message-renderer.tsx","webpack://_N_E/./lib/check-chat-session-write-access.ts"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/[session]/page.tsx\");\n","import { cn } from '@/lib/utils';\nimport type { HTMLAttributes } from 'react';\n\ntype LoaderIconProps = {\n size?: number;\n};\n\nconst LoaderIcon = ({ size = 16 }: LoaderIconProps) => (\n <svg\n height={size}\n strokeLinejoin=\"round\"\n style={{ color: 'currentcolor' }}\n viewBox=\"0 0 16 16\"\n width={size}\n >\n <title>Loader</title>\n <g clipPath=\"url(#clip0_2393_1490)\">\n <path d=\"M8 0V4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M8 16V12\"\n opacity=\"0.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M3.29773 1.52783L5.64887 4.7639\"\n opacity=\"0.9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M12.7023 1.52783L10.3511 4.7639\"\n opacity=\"0.1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M12.7023 14.472L10.3511 11.236\"\n opacity=\"0.4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M3.29773 14.472L5.64887 11.236\"\n opacity=\"0.6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M15.6085 5.52783L11.8043 6.7639\"\n opacity=\"0.2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M0.391602 10.472L4.19583 9.23598\"\n opacity=\"0.7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M15.6085 10.4722L11.8043 9.2361\"\n opacity=\"0.3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M0.391602 5.52783L4.19583 6.7639\"\n opacity=\"0.8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_2393_1490\">\n <rect fill=\"white\" height=\"16\" width=\"16\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport type LoaderProps = HTMLAttributes<HTMLDivElement> & {\n size?: number;\n};\n\nexport const Loader = ({ className, size = 16, ...props }: LoaderProps) => (\n <div\n className={cn(\n 'inline-flex animate-spin items-center justify-center',\n className\n )}\n {...props}\n >\n <LoaderIcon size={size} />\n </div>\n);\n","\"use client\";\n\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst HoverCard = HoverCardPrimitive.Root;\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","\"use client\";\n\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-4 w-full overflow-hidden rounded-full bg-secondary\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"size-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n));\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"@/components/ui/hover-card\";\nimport { Progress } from \"@/components/ui/progress\";\nimport { cn } from \"@/lib/utils\";\nimport type { LanguageModelUsage } from \"ai\";\nimport { type ComponentProps, createContext, useContext } from \"react\";\nimport { estimateCost, type ModelId } from \"tokenlens\";\n\nconst PERCENT_MAX = 100;\nconst ICON_RADIUS = 10;\nconst ICON_VIEWBOX = 24;\nconst ICON_CENTER = 12;\nconst ICON_STROKE_WIDTH = 2;\n\ntype ContextSchema = {\n usedTokens: number;\n maxTokens: number;\n usage?: LanguageModelUsage;\n modelId?: ModelId;\n};\n\nconst ContextContext = createContext<ContextSchema | null>(null);\n\nconst useContextValue = () => {\n const context = useContext(ContextContext);\n\n if (!context) {\n throw new Error(\"Context components must be used within Context\");\n }\n\n return context;\n};\n\nexport type ContextProps = ComponentProps<typeof HoverCard> & ContextSchema;\n\nexport const Context = ({\n usedTokens,\n maxTokens,\n usage,\n modelId,\n ...props\n}: ContextProps) => (\n <ContextContext.Provider\n value={{\n usedTokens,\n maxTokens,\n usage,\n modelId,\n }}\n >\n <HoverCard closeDelay={0} openDelay={0} {...props} />\n </ContextContext.Provider>\n);\n\nconst ContextIcon = () => {\n const { usedTokens, maxTokens } = useContextValue();\n const circumference = 2 * Math.PI * ICON_RADIUS;\n const usedPercent = usedTokens / maxTokens;\n const dashOffset = circumference * (1 - usedPercent);\n\n return (\n <svg\n aria-label=\"Model context usage\"\n height=\"20\"\n role=\"img\"\n style={{ color: \"currentcolor\" }}\n viewBox={`0 0 ${ICON_VIEWBOX} ${ICON_VIEWBOX}`}\n width=\"20\"\n >\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.25\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeWidth={ICON_STROKE_WIDTH}\n />\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.7\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeDasharray={`${circumference} ${circumference}`}\n strokeDashoffset={dashOffset}\n strokeLinecap=\"round\"\n strokeWidth={ICON_STROKE_WIDTH}\n style={{ transformOrigin: \"center\", transform: \"rotate(-90deg)\" }}\n />\n </svg>\n );\n};\n\nexport type ContextTriggerProps = ComponentProps<typeof Button>;\n\nexport const ContextTrigger = ({ children, ...props }: ContextTriggerProps) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const renderedPercent = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n maximumFractionDigits: 1,\n }).format(usedPercent);\n\n return (\n <HoverCardTrigger asChild>\n {children ?? (\n <Button type=\"button\" variant=\"ghost\" {...props}>\n <span className=\"font-medium text-muted-foreground\">\n {renderedPercent}\n </span>\n <ContextIcon />\n </Button>\n )}\n </HoverCardTrigger>\n );\n};\n\nexport type ContextContentProps = ComponentProps<typeof HoverCardContent>;\n\nexport const ContextContent = ({\n className,\n ...props\n}: ContextContentProps) => (\n <HoverCardContent\n className={cn(\"min-w-[240px] divide-y overflow-hidden p-0\", className)}\n {...props}\n />\n);\n\nexport type ContextContentHeader = ComponentProps<\"div\">;\n\nexport const ContextContentHeader = ({\n children,\n className,\n ...props\n}: ContextContentHeader) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const displayPct = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n maximumFractionDigits: 1,\n }).format(usedPercent);\n const used = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(usedTokens);\n const total = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(maxTokens);\n\n return (\n <div className={cn(\"w-full space-y-2 p-3\", className)} {...props}>\n {children ?? (\n <>\n <div className=\"flex items-center justify-between gap-3 text-xs\">\n <p>{displayPct}</p>\n <p className=\"font-mono text-muted-foreground\">\n {used} / {total}\n </p>\n </div>\n <div className=\"space-y-2\">\n <Progress className=\"bg-muted\" value={usedPercent * PERCENT_MAX} />\n </div>\n </>\n )}\n </div>\n );\n};\n\nexport type ContextContentBody = ComponentProps<\"div\">;\n\nexport const ContextContentBody = ({\n children,\n className,\n ...props\n}: ContextContentBody) => (\n <div className={cn(\"w-full p-3\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type ContextContentFooter = ComponentProps<\"div\">;\n\nexport const ContextContentFooter = ({\n children,\n className,\n ...props\n}: ContextContentFooter) => {\n const { modelId, usage } = useContextValue();\n const costUSD = modelId\n ? estimateCost({\n modelId,\n usage: {\n input: usage?.inputTokens ?? 0,\n output: usage?.outputTokens ?? 0,\n },\n }).totalUSD\n : undefined;\n const totalCost = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(costUSD ?? 0);\n\n return (\n <div\n className={cn(\n \"flex w-full items-center justify-between gap-3 bg-secondary p-3 text-xs\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n <span className=\"text-muted-foreground\">Total cost</span>\n <span>{totalCost}</span>\n </>\n )}\n </div>\n );\n};\n\nexport type ContextInputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextInputUsage = ({\n className,\n children,\n ...props\n}: ContextInputUsageProps) => {\n const { usage, modelId } = useContextValue();\n const inputTokens = usage?.inputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!inputTokens) {\n return null;\n }\n\n const inputCost = modelId\n ? estimateCost({\n modelId,\n usage: { input: inputTokens, output: 0 },\n }).totalUSD\n : undefined;\n const inputCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(inputCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Input</span>\n <TokensWithCost costText={inputCostText} tokens={inputTokens} />\n </div>\n );\n};\n\nexport type ContextOutputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextOutputUsage = ({\n className,\n children,\n ...props\n}: ContextOutputUsageProps) => {\n const { usage, modelId } = useContextValue();\n const outputTokens = usage?.outputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!outputTokens) {\n return null;\n }\n\n const outputCost = modelId\n ? estimateCost({\n modelId,\n usage: { input: 0, output: outputTokens },\n }).totalUSD\n : undefined;\n const outputCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(outputCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Output</span>\n <TokensWithCost costText={outputCostText} tokens={outputTokens} />\n </div>\n );\n};\n\nexport type ContextReasoningUsageProps = ComponentProps<\"div\">;\n\nexport const ContextReasoningUsage = ({\n className,\n children,\n ...props\n}: ContextReasoningUsageProps) => {\n const { usage, modelId } = useContextValue();\n const reasoningTokens = usage?.reasoningTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!reasoningTokens) {\n return null;\n }\n\n const reasoningCost = modelId\n ? estimateCost({\n modelId,\n usage: { reasoningTokens },\n }).totalUSD\n : undefined;\n const reasoningCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(reasoningCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Reasoning</span>\n <TokensWithCost costText={reasoningCostText} tokens={reasoningTokens} />\n </div>\n );\n};\n\nexport type ContextCacheUsageProps = ComponentProps<\"div\">;\n\nexport const ContextCacheUsage = ({\n className,\n children,\n ...props\n}: ContextCacheUsageProps) => {\n const { usage, modelId } = useContextValue();\n const cacheTokens = usage?.cachedInputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!cacheTokens) {\n return null;\n }\n\n const cacheCost = modelId\n ? estimateCost({\n modelId,\n usage: { cacheReads: cacheTokens, input: 0, output: 0 },\n }).totalUSD\n : undefined;\n const cacheCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(cacheCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Cache</span>\n <TokensWithCost costText={cacheCostText} tokens={cacheTokens} />\n </div>\n );\n};\n\nconst TokensWithCost = ({\n tokens,\n costText,\n}: {\n tokens?: number;\n costText?: string;\n}) => (\n <span>\n {tokens === undefined\n ? \"—\"\n : new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(tokens)}\n {costText ? (\n <span className=\"ml-2 text-muted-foreground\">• {costText}</span>\n ) : null}\n </span>\n);\n","'use client';\n\nimport { Badge } from '@/components/ui/badge';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport { cn } from '@/lib/utils';\nimport type { ToolUIPart } from 'ai';\nimport {\n CheckCircleIcon,\n ChevronDownIcon,\n CircleIcon,\n ClockIcon,\n WrenchIcon,\n XCircleIcon,\n} from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { CodeBlock } from './code-block';\n\nexport type ToolProps = ComponentProps<typeof Collapsible>;\n\nexport const Tool = ({ className, ...props }: ToolProps) => (\n <Collapsible\n className={cn('not-prose mb-4 w-full rounded-md border', className)}\n {...props}\n />\n);\n\nexport type ToolHeaderProps = {\n type: ToolUIPart['type'];\n state: ToolUIPart['state'];\n className?: string;\n};\n\nconst getStatusBadge = (status: ToolUIPart['state']) => {\n const labels = {\n 'input-streaming': 'Pending',\n 'input-available': 'Running',\n 'output-available': 'Completed',\n 'output-error': 'Error',\n } as const;\n\n const icons = {\n 'input-streaming': <CircleIcon className=\"size-4 mr-2\" />,\n 'input-available': <ClockIcon className=\"size-4 animate-pulse mr-2\" />,\n 'output-available': <CheckCircleIcon className=\"size-4 text-green-600 mr-2\" />,\n 'output-error': <XCircleIcon className=\"size-4 text-red-600 mr-2\" />,\n } as const;\n\n return (\n <Badge className=\"rounded-full text-xs\" variant=\"secondary\">\n {icons[status]}\n {labels[status]}\n </Badge>\n );\n};\n\nexport const ToolHeader = ({\n className,\n type,\n state,\n ...props\n}: ToolHeaderProps) => (\n <CollapsibleTrigger\n className={cn(\n 'flex w-full items-center justify-between gap-4 p-3',\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <WrenchIcon className=\"size-4 text-muted-foreground\" />\n <span className=\"font-medium text-sm\">{type}</span>\n {getStatusBadge(state)}\n </div>\n <ChevronDownIcon className=\"size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180\" />\n </CollapsibleTrigger>\n);\n\nexport type ToolContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ToolContent = ({ className, ...props }: ToolContentProps) => (\n <CollapsibleContent\n className={cn(\n 'data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in',\n className\n )}\n {...props}\n />\n);\n\nexport type ToolInputProps = ComponentProps<'div'> & {\n input: ToolUIPart['input'];\n};\n\nexport const ToolInput = ({ className, input, ...props }: ToolInputProps) => (\n <div className={cn('space-y-2 overflow-hidden p-4', className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n Parameters\n </h4>\n <div className=\"rounded-md bg-muted/50\">\n <CodeBlock code={JSON.stringify(input, null, 2)} language=\"json\" />\n </div>\n </div>\n);\n\nexport type ToolOutputProps = ComponentProps<'div'> & {\n output: ReactNode;\n errorText: ToolUIPart['errorText'];\n};\n\nexport const ToolOutput = ({\n className,\n output,\n errorText,\n ...props\n}: ToolOutputProps): JSX.Element => {\n if (!(output || errorText)) {\n return <></>;\n }\n\n return (\n <div className={cn('space-y-2 p-4', className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs tracking-wide\">\n {errorText ? 'Error' : 'Result'}\n </h4>\n <div\n className={cn(\n 'overflow-x-auto rounded-md text-xs [&_table]:w-full p-5',\n errorText\n ? 'bg-destructive/10 text-destructive'\n : 'bg-muted/50 text-foreground'\n )}\n >\n {errorText && <div>{errorText}</div>}\n {output && <div>{output}</div>}\n </div>\n </div>\n );\n};\n","\"use client\"\n\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\";\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport { ChatRequestOptions, DefaultChatTransport, DynamicToolUIPart, FileUIPart, lastAssistantMessageIsCompleteWithToolCalls, UIMessage } from \"ai\";\nimport { useChat } from '@ai-sdk/react';\nimport * as React from \"react\";\nimport { useContext, useEffect, useState, useMemo } from \"react\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { StopIcon } from \"@radix-ui/react-icons\";\nimport { AgentMessage, AgentSession } from \"@EXULU_SHARED/models/agent-session\";\nimport { Loader } from '@/components/ai-elements/loader';\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport {\n GET_AGENT_MESSAGES,\n GET_USER_BY_ID,\n UPDATE_AGENT_SESSION_RBAC,\n} from \"@/queries/queries\";\nimport { getToken } from \"@/util/api\"\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport Image from \"next/image\";\nimport { ConfigContext } from \"@/components/config-context\";\nimport { Workflow, Plus, ArrowUp, ChevronsUpDown } from \"lucide-react\";\nimport { useToast } from \"@/components/ui/use-toast\"\nimport { SaveWorkflowModal } from \"@/components/save-workflow-modal\";\nimport { Button } from \"@/components/ui/button\";\nimport { Switch } from \"@/components/ui/switch\";\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Conversation, ConversationContent } from \"@/components/ai-elements/conversation\";\nimport { useIsMobile } from \"@/hooks/use-mobile\";\nimport { RBACControl } from \"@/components/rbac\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { Loading } from \"@/components/ui/loading\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { checkChatSessionWriteAccess } from \"@/lib/check-chat-session-write-access\";\nimport UppyDashboard, { FileItem, getPresignedUrl } from \"@/components/uppy-dashboard\";\nimport { Item } from \"@/types/models/item\";\nimport { ExclamationTriangleIcon } from \"@radix-ui/react-icons\";\nimport {\n Context,\n ContextTrigger,\n ContextContent,\n ContextContentHeader,\n ContextContentBody,\n ContextInputUsage,\n ContextOutputUsage,\n ContextReasoningUsage,\n ContextCacheUsage,\n} from '@/components/ai-elements/context';\nimport { Progress } from \"@/components/ui/progress\";\nimport {\n Tool,\n ToolContent,\n ToolHeader,\n ToolOutput,\n ToolInput,\n} from '@/components/ai-elements/tool';\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { MessageRenderer } from \"@/components/message-renderer\";\nimport { Response } from '@/components/ai-elements/response';\nimport AgentVisual from \"@/components/lottie\";\n\nexport interface ChatProps {\n chatId?: string;\n agentId?: string;\n messages?: UIMessage[];\n input?: string;\n handleInputChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n addToolResult?: any\n handleSubmit?: (\n e: React.FormEvent<HTMLFormElement>,\n chatRequestOptions?: ChatRequestOptions,\n ) => void;\n isLoading: boolean;\n onFilesSelected: (file: any[]) => void;\n error?: undefined | Error;\n stop?: () => void;\n}\n\nexport function ChatLayout({ session, agent }: { session: AgentSession, agent: Agent }) {\n\n const [error, setError] = useState<string | null>(null);\n const configContext = React.useContext(ConfigContext);\n const isMobile = useIsMobile();\n const [files, setFiles] = useState<FileUIPart[] | null>(null);\n const [items, setItems] = useState<string[] | null>(null);\n const { user } = useContext(UserContext);\n const [copyingTableId, setCopyingTableId] = useState<string | null>(null);\n const [showSaveWorkflowModal, setShowSaveWorkflowModal] = useState(false);\n const [input, setInput] = useState('');\n const [disabledTools, setDisabledTools] = useState<string[]>([]);\n const inputRef = React.useRef<HTMLTextAreaElement>(null);\n const { toast } = useToast()\n\n const [rbac, setRbac] = useState({\n rights_mode: session?.rights_mode || 'private',\n users: session?.RBAC?.users || [],\n roles: session?.RBAC?.roles || [],\n projects: session?.RBAC?.projects || []\n })\n\n const creatorQuery = useQuery(GET_USER_BY_ID, {\n variables: { id: session.created_by },\n skip: !session.created_by\n })\n\n\n const [updateAgentSessionRbac, updateAgentSessionRbacResult] = useMutation(UPDATE_AGENT_SESSION_RBAC);\n const [tokenCounts, setTokenCounts] = useState<MessageMetadata>({\n totalTokens: 0,\n reasoningTokens: 0,\n inputTokens: 0,\n outputTokens: 0,\n cachedInputTokens: 0\n });\n\n useQuery<{\n agent_messagesPagination: {\n items: AgentMessage[]\n };\n }>(GET_AGENT_MESSAGES, {\n returnPartialData: true,\n fetchPolicy: \"network-only\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 50,\n filters: {\n session: {\n eq: session.id\n }\n },\n },\n onCompleted: (data) => {\n if (data?.agent_messagesPagination) {\n const messages = data?.agent_messagesPagination.items.map((item) => (JSON.parse(item.content)))\n setMessages(messages as any[]);\n }\n },\n });\n\n const {\n messages,\n sendMessage,\n status,\n stop,\n regenerate,\n setMessages,\n addToolResult\n } = useChat({\n sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls,\n // Throttle the messages and data updates to 50ms:\n experimental_throttle: 50,\n async onToolCall({ toolCall }) {\n // Check if it's a dynamic tool first for proper type narrowing\n if (toolCall.dynamic) {\n return;\n }\n\n if (toolCall.toolName === 'getLocation') {\n const cities = ['New York', 'Los Angeles', 'Chicago', 'San Francisco'];\n\n // No await - avoids potential deadlocks\n addToolResult({\n tool: 'confirm-tool-call',\n toolCallId: toolCall.toolCallId,\n output: cities[Math.floor(Math.random() * cities.length)],\n });\n }\n },\n onError: (error) => {\n console.log(\"error!!\", error?.message)\n try {\n const { message } = JSON.parse(error?.message)\n setError(message)\n } catch (x) {\n setError(error.message)\n }\n },\n transport: new DefaultChatTransport({\n api: `${configContext?.backend}${agent.slug}/${agent.id}`,\n // only send the last message to the server: we load\n // the history from the database.\n prepareSendMessagesRequest: async ({ messages, id: chatId, body }) => {\n const token = await getToken()\n if (!token) {\n throw new Error(\"No valid session token available.\")\n }\n return {\n body: {\n ...body,\n message: messages[messages.length - 1],\n id: chatId,\n session: session.id,\n }, headers: {\n User: user.id,\n Session: session.id,\n Authorization: `Bearer ${token}`,\n Stream: \"true\"\n }\n };\n },\n })\n });\n\n type MessageMetadata = {\n totalTokens: number;\n reasoningTokens: number;\n inputTokens: number;\n outputTokens: number;\n cachedInputTokens: number;\n }\n\n useEffect(() => {\n const totalCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.totalTokens || 0);\n }, 0);\n const reasoningCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.reasoningTokens || 0);\n }, 0);\n const inputCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.inputTokens || 0);\n }, 0);\n const outputCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.outputTokens || 0);\n }, 0);\n const cachedInputCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.cachedInputTokens || 0);\n }, 0);\n setTokenCounts({\n totalTokens: totalCount,\n reasoningTokens: reasoningCount,\n inputTokens: inputCount,\n outputTokens: outputCount,\n cachedInputTokens: cachedInputCount\n })\n }, [messages])\n\n // Check if conversation has enough content for a workflow\n const canCreateWorkflow = useMemo(() => {\n const userMessages = messages?.filter(m => m.role === 'user') || [];\n const assistantMessages = messages?.filter(m => m.role === 'assistant') || [];\n return userMessages.length >= 1 && assistantMessages.length >= 1;\n }, [messages]);\n\n const convertTableToCSV = (tableElement: HTMLTableElement): string => {\n const rows = Array.from(tableElement.querySelectorAll('tr'));\n const csvRows: string[] = [];\n\n rows.forEach(row => {\n const cells = Array.from(row.querySelectorAll('th, td'));\n const csvRow = cells.map(cell => {\n // Escape quotes and wrap in quotes if contains comma, newline, or quote\n let text = cell.textContent || '';\n text = text.replace(/\"/g, '\"\"');\n if (text.includes(',') || text.includes('\\n') || text.includes('\"')) {\n text = `\"${text}\"`;\n }\n return text;\n });\n csvRows.push(csvRow.join(','));\n });\n\n return csvRows.join('\\n');\n };\n\n const copyTableAsCSV = async (tableElement: HTMLTableElement, tableId: string) => {\n setCopyingTableId(tableId);\n\n try {\n const csv = convertTableToCSV(tableElement);\n await navigator.clipboard.writeText(csv);\n\n toast({\n title: \"Table copied!\",\n description: \"Table data has been copied to clipboard as CSV\",\n });\n\n // Reset the copying state after a short delay\n setTimeout(() => {\n setCopyingTableId(null);\n }, 2000);\n } catch (err) {\n toast({\n title: \"Copy failed\",\n description: \"Failed to copy table to clipboard\",\n variant: \"destructive\",\n });\n setCopyingTableId(null);\n }\n };\n\n const onSubmit = async (\n e: React.FormEvent,\n options?: ChatRequestOptions,\n ) => {\n e.preventDefault();\n sendMessage({\n text: input,\n files: files || []\n }, {\n body: {\n disabledTools: disabledTools,\n },\n });\n setInput('');\n };\n\n const handleKeyPress = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n onSubmit(e as unknown as React.FormEvent<HTMLFormElement>);\n }\n };\n\n const toggleTool = (id: string) => {\n setDisabledTools(prev =>\n prev.includes(id)\n ? prev.filter(name => name !== id)\n : [...prev, id]\n );\n };\n\n const writeAccess = checkChatSessionWriteAccess(session, user);\n\n const updateMessageFiles = async (items: Item[]) => {\n const files = await Promise.all(items.map(async (item) => {\n\n if (!item.s3key) {\n // Take all item fields and turn into a data url\n let content = \"\";\n Object.entries(item).forEach(([key, value]) => {\n content += `${key}: ${value}\\n`\n })\n return {\n type: \"file\" as const,\n mediaType: item.type,\n filename: item.name,\n url: `data:text/plain;base64,${btoa(content)}`\n }\n }\n\n return {\n type: \"file\" as const,\n mediaType: item.type,\n filename: item.name,\n url: await getPresignedUrl(item.s3key)\n }\n\n }))\n setFiles(files)\n }\n\n useEffect(() => {\n if (!items) {\n setFiles(null)\n return;\n }\n updateMessageFiles(items.map(item => ({\n s3key: item,\n name: item,\n type: \"file\"\n })))\n }, [items])\n\n return (\n <div className=\"flex flex-col w-full\">\n <div className=\"mx-auto relative size-full\">\n <div className=\"flex h-full w-full\">\n {/* Main conversation area */}\n <div className=\"flex flex-col flex-1 pb-6\">\n {/* @ts-ignore */}\n <Conversation className=\"overflow-y-hidden\">\n {/* Save as Workflow button - appears when conversation has content */}\n {canCreateWorkflow ? (\n <div className=\"flex justify-between absolute top-0 left-0 right-0 items-center px-4 py-2 border-b z-10 dark:bg-black bg-white\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Workflow className=\"w-4 h-4\" />\n Turn this conversation into a reusable workflow\n </div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setShowSaveWorkflowModal(true)}\n >\n <Plus className=\"w-4 h-4 mr-2\" />\n Save as Workflow\n </Button>\n </div>\n ) : null}\n {\n /* Show a bar that fills up depending on the total tokens used */\n agent.maxContextLength ? (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className={`absolute w-full ${canCreateWorkflow ? 'top-10' : 'top-0'}`}>\n <Progress className=\"w-full rounded-none\" value={tokenCounts.totalTokens / agent.maxContextLength * 100} />\n <div className=\"justify-between flex felx-row\">\n <div></div>\n <Context\n maxTokens={agent.maxContextLength || 0}\n usedTokens={tokenCounts.totalTokens}\n usage={{\n inputTokens: tokenCounts.inputTokens,\n outputTokens: tokenCounts.outputTokens,\n totalTokens: tokenCounts.totalTokens,\n cachedInputTokens: tokenCounts.cachedInputTokens,\n reasoningTokens: tokenCounts.reasoningTokens,\n }}>\n <ContextTrigger />\n <ContextContent>\n <ContextContentHeader />\n <ContextContentBody>\n {/* @ts-ignore */}\n <ContextInputUsage />\n {/* @ts-ignore */}\n <ContextOutputUsage />\n {/* @ts-ignore */}\n <ContextReasoningUsage />\n {/* @ts-ignore */}\n <ContextCacheUsage />\n </ContextContentBody>\n </ContextContent>\n </Context>\n </div>\n </div>\n </TooltipTrigger>\n <TooltipContent>\n <p>{Intl.NumberFormat('en-US').format(tokenCounts.totalTokens)} / {Intl.NumberFormat('en-US').format(agent.maxContextLength)} tokens in the context window used.</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ) : null}\n {messages?.length === 0 ?\n <div className=\"size-full flex justify-center items-center\">\n <div className=\"flex flex-col gap-4 items-center max-w-2xl w-full px-4 my-auto\">\n <img\n src={configContext?.backend + \"/logo.png\"}\n alt=\"AI\"\n width={120}\n height={120}\n className=\"h-30 w-40 object-contain\" /*invert dark:invert-0*/\n />\n <p className=\"text-center text-lg text-muted-foreground\">\n How can I help you today?\n </p>\n\n <AgentVisual agent={agent} status={status} className=\"w-80\"/>\n\n {/* Workflow Banner for new users */}\n <Card className=\"w-full mb-6\">\n <CardHeader className=\"text-center\">\n <CardTitle className=\"flex items-center justify-center gap-2\">\n <Workflow className=\"w-5 h-5\" />\n Create Reusable Workflows\n </CardTitle>\n <CardDescription>\n Turn your conversations into templates that can be reused with different inputs. Perfect for recurring tasks and processes.\n </CardDescription>\n </CardHeader>\n <CardContent className=\"text-center\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled\n className=\"text-muted-foreground\"\n >\n <Plus className=\"w-4 h-4 mr-2\" />\n Save as Workflow\n <span className=\"ml-2 text-xs\">(Available after chatting)</span>\n </Button>\n </CardContent>\n </Card>\n </div>\n </div> : null}\n {/* @ts-ignore */}\n <ConversationContent className=\"px-6\">\n {messages?.length > 0 && (\n <MessageRenderer\n messages={messages}\n config={{\n marginTopFirstMessage: 'mt-12'\n }}\n status={status}\n onRegenerate={regenerate}\n onAddToolResult={addToolResult}\n UntypedToolPartComponent={UntypedToolPart}\n addToContext={(item) => {\n setItems([...(items || []), item])\n }}\n writeAccess={writeAccess}\n />\n )}\n\n {status === \"streaming\" ? <Loader /> : null}\n\n </ConversationContent>\n </Conversation>\n {\n !writeAccess && (\n <div className=\"px-6 mx-auto mt-3\">\n <Badge variant=\"outline\">Read access only</Badge>\n </div>\n )\n }\n {error && (\n <div className=\"mx-5\">\n <Alert className=\"mb-3\" variant=\"destructive\">\n <ExclamationTriangleIcon className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n {error}\n </AlertDescription>\n </Alert>\n </div>\n )}\n {writeAccess && (\n <form\n onSubmit={onSubmit}\n className=\"px-6 border-input border rounded flex mx-5 p-5 flex-col gap-2\">\n <div className=\"items-center flex relative gap-2 w-full\">\n {\n configContext?.fileUploads?.s3endpoint && (<UppyDashboard\n id={`chat-${session.id}`}\n selectionLimit={10}\n allowedFileTypes={[\n ...agent.capabilities?.audio || [],\n ...agent.capabilities?.video || [],\n ...agent.capabilities?.files || [],\n ...agent.capabilities?.images || [],\n ]}\n dependencies={[]}\n onConfirm={(items) => {\n setItems(items)\n }}\n />)\n }\n <TextareaAutosize\n autoComplete=\"off\"\n autoFocus={true}\n minRows={1}\n value={input}\n ref={inputRef}\n onKeyDown={handleKeyPress}\n onChange={(e) => setInput(e.target.value)}\n name=\"message\"\n placeholder={`Ask me anything...`}\n className=\"max-h-40 px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 w-full items-center h-28 resize-none overflow-hidden dark:bg-card/35\"\n />\n {status !== \"streaming\" ? (\n <Button\n className=\"shrink-0\"\n variant=\"secondary\"\n size=\"icon\"\n disabled={status === \"submitted\" || !input?.trim()}\n >\n <ArrowUp className=\" size-6 text-muted-foreground\" />\n </Button>\n ) : (\n <Button\n className=\"shrink-0\"\n variant=\"secondary\"\n size=\"icon\"\n onClick={stop}\n >\n <StopIcon className=\"size-6 text-muted-foreground\" />\n </Button>\n )}\n </div>\n <div className=\"grid grid-cols-3 sm:grid-cols-4 gap-3\">\n {/* Show selected files */}\n {items?.map((item) => (\n <FileItem s3Key={item} disabled={true} active={false} onRemove={() => {\n setItems(items?.filter((i) => i !== item))\n }} />\n ))}\n </div>\n </form>\n )}\n {/* Save Workflow Modal */}\n <SaveWorkflowModal\n isOpen={showSaveWorkflowModal}\n onClose={() => setShowSaveWorkflowModal(false)}\n messages={messages || []}\n sessionTitle={session.title}\n />\n </div>\n\n {/* Agent Details Sidebar */}\n {writeAccess && (\n <div className=\"w-80 border-l bg-muted/20 p-4 space-y-4\">\n {\n messages?.length > 0 && (\n <div>\n <AgentVisual agent={agent} status={status} className=\"w-80\" />\n </div>\n )\n }\n <div>\n <p className=\"text-sm font-medium text-center\">{agent.name}</p>\n </div>\n {agent.description && (\n <p className=\"text-xs text-muted-foreground mt-1\">\n {agent.description}\n </p>\n )}\n <hr className=\"my-2\" />\n <div className=\"mt-1\">\n <div className=\"border rounded\">\n {\n creatorQuery.loading && (\n <div className=\"flex flex-row justify-between p-3\">\n <p className=\"text-sm font-medium\">Session created by</p>\n <Loading className=\"ml-2\" />\n </div>\n )\n }\n {creatorQuery.data?.userById && !creatorQuery.loading && (\n <div className=\"flex flex-row justify-between p-3\">\n <p className=\"text-sm font-medium\">Session created by</p>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <p className=\"text-sm font-medium capitalize\">{creatorQuery.data.userById.name}</p>\n </div>\n </div>\n )}\n </div>\n </div>\n <div>\n <p className=\"text-xs font-medium text-muted-foreground pt-2\">\n You can disable tools for individual messages in this session by clicking the switch:</p>\n <TooltipProvider>\n <div className=\"space-y-1 pt-2\">\n {agent.tools && agent.tools.length > 0 ? (\n agent.tools.map((tool) => {\n const isEnabled = !disabledTools.includes(tool.id);\n return (\n <Tooltip key={tool.name}>\n <TooltipTrigger asChild>\n <div className=\"p-2 rounded-md border text-xs bg-background flex items-center justify-between\">\n <p className=\"font-medium flex items-center gap-2\">\n {tool.name}\n </p>\n <Switch\n checked={isEnabled}\n onCheckedChange={() => toggleTool(tool.id)}\n />\n </div>\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-[200px] text-wrap\">{tool.description}</p>\n </TooltipContent>\n </Tooltip>\n );\n })\n ) : (\n <p className=\"text-xs text-muted-foreground\">No tools enabled.</p>\n )}\n </div>\n </TooltipProvider>\n </div>\n <div className=\"mt-1\">\n <Collapsible className=\"border rounded\">\n <CardHeader className=\"px-3 py-1\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex flex-col\">\n <p className=\"text-sm font-medium\">\n Access control ({session.rights_mode})\n </p>\n </div>\n <CollapsibleTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n <ChevronsUpDown className=\"size-4\" />\n <span className=\"sr-only\">Toggle</span>\n </Button>\n </CollapsibleTrigger>\n </div>\n </CardHeader>\n <CollapsibleContent>\n <CardContent className=\"space-y-4 p-3\">\n <RBACControl\n allowedModes={['private', 'users', 'roles', 'projects']}\n initialRightsMode={session.rights_mode}\n initialUsers={session.RBAC?.users}\n initialRoles={session.RBAC?.roles}\n initialProjects={session.RBAC?.projects}\n onChange={(rights_mode, users, roles, projects) => {\n setRbac({\n rights_mode,\n users,\n roles,\n projects\n })\n }}\n />\n <Button disabled={updateAgentSessionRbacResult.loading} onClick={() => {\n updateAgentSessionRbac({\n variables: {\n id: session.id,\n rights_mode: rbac.rights_mode,\n RBAC: {\n users: rbac.users,\n roles: rbac.roles,\n projects: rbac.projects\n }\n }\n })\n }}>Save access rights {updateAgentSessionRbacResult.loading && <Loading className=\"ml-2\" />} </Button>\n </CardContent>\n </CollapsibleContent>\n </Collapsible>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n\nconst UntypedToolPart = ({ untypedToolPart, callId, addToContext }: { untypedToolPart: DynamicToolUIPart, callId: string, addToContext: (item: string) => void }) => {\n\n const output = untypedToolPart.output as any;\n console.log(\"output\", output)\n // Replace - and _, replace 'tool-' prefix\n let styleToolName = untypedToolPart.type?.replace(/ /g, \"-\")\n styleToolName = styleToolName?.replace(/tool-/g, \"\")\n styleToolName = styleToolName?.replace(/_/g, \" \")\n styleToolName = styleToolName?.charAt(0).toUpperCase() + styleToolName?.slice(1)\n\n return <Tool key={callId} className=\"mt-3\" defaultOpen={false}>\n <ToolHeader className=\"capitalize\" type={styleToolName as `tool-${string}`} state={untypedToolPart.state} />\n <ToolContent>\n <ToolInput input={untypedToolPart.input} />\n {\n output?.items?.length ? <div className=\"grid grid-cols-3 sm:grid-cols-4 gap-3 px-4 pb-4\">\n {output.items.map((item) => <FileItem addToContext={(item) => {\n addToContext(item)\n }} s3Key={item} disabled={true} active={false} />)}\n </div> :\n <ToolOutput\n output={\n output ?\n <Response>\n {typeof output === 'string' ?\n output : JSON.stringify(output, null, 2)\n }\n </Response>\n : !untypedToolPart.errorText && <Skeleton className=\"h-4 w-full\" />\n }\n errorText={untypedToolPart.errorText}\n />\n }\n </ToolContent>\n </Tool>\n}","\"use client\"\n\nimport * as React from \"react\";\nimport { ChatLayout } from \"@/app/(application)/chat/[agent]/[session]/chat\";\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\";\nimport { ExclamationTriangleIcon } from \"@radix-ui/react-icons\";\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_AGENT_BY_ID, GET_AGENT_SESSION_BY_ID } from \"@/queries/queries\";\nimport { AgentSession } from \"@/types/models/agent-session\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default function SessionsPage({\n params,\n}: {\n params: { session: string, agent: string };\n}) {\n\n const { data: agentData, loading: agentLoading, error: agentError } = useQuery<{\n agentById: Agent\n }>(GET_AGENT_BY_ID, {\n variables: {\n id: params.agent,\n },\n });\n\n const { data: sessionData, loading: sessionLoading, error: sessionError } = useQuery<{\n agent_sessionById: AgentSession;\n }>(GET_AGENT_SESSION_BY_ID, {\n returnPartialData: true,\n fetchPolicy: \"network-only\",\n nextFetchPolicy: \"network-only\",\n variables: {\n id: params.session\n },\n });\n\n if (sessionLoading || agentLoading) {\n return <div>\n <Skeleton className=\"w-full h-full\" />\n </div>\n }\n\n if (sessionError || agentError) {\n return <Alert variant=\"destructive\">\n <ExclamationTriangleIcon className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n Error loading agent {agentError?.message || sessionError?.message}.\n </AlertDescription>\n </Alert>\n }\n\n if (!agentData?.agentById || !sessionData?.agent_sessionById) {\n return <Alert variant=\"destructive\">\n <ExclamationTriangleIcon className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n Agent or session not found.\n </AlertDescription>\n </Alert>\n }\n\n return <ChatLayout session={sessionData?.agent_sessionById} agent={agentData.agentById} />;\n}\n","'use client';\n\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/lib/utils';\nimport { ArrowDownIcon } from 'lucide-react';\nimport type { ComponentProps } from 'react';\nimport { useCallback } from 'react';\nimport { StickToBottom, useStickToBottomContext } from 'use-stick-to-bottom';\n\n// @ts-ignore\nexport type ConversationProps = ComponentProps<typeof StickToBottom>;\n\n// @ts-ignore\nexport const Conversation = ({ className, ...props }: ConversationProps) => (\n// @ts-ignore\n <StickToBottom\n className={cn('relative flex-1 overflow-y-auto', className)}\n initial=\"smooth\"\n resize=\"smooth\"\n role=\"log\"\n {...props}\n />\n);\n\nexport type ConversationContentProps = ComponentProps<\n // @ts-ignore\n typeof StickToBottom.Content\n>;\n\nexport const ConversationContent = ({\n // @ts-ignore\n className,\n ...props\n}: ConversationContentProps) => (\n // @ts-ignore\n <StickToBottom.Content className={cn('p-4', className)} {...props} />\n);\n\nexport type ConversationScrollButtonProps = ComponentProps<typeof Button>;\n\nexport const ConversationScrollButton = ({\n className,\n ...props\n}: ConversationScrollButtonProps) => {\n const { isAtBottom, scrollToBottom } = useStickToBottomContext();\n\n const handleScrollToBottom = useCallback(() => {\n scrollToBottom();\n }, [scrollToBottom]);\n\n return (\n !isAtBottom && (\n <Button\n className={cn(\n 'absolute bottom-4 left-[50%] translate-x-[-50%] rounded-full',\n className\n )}\n onClick={handleScrollToBottom}\n size=\"icon\"\n type=\"button\"\n variant=\"outline\"\n {...props}\n >\n <ArrowDownIcon className=\"size-4\" />\n </Button>\n )\n );\n};\n","import {\n Avatar,\n AvatarFallback,\n AvatarImage,\n} from '@/components/ui/avatar';\nimport { cn } from '@/lib/utils';\nimport type { UIMessage } from 'ai';\nimport type { ComponentProps, HTMLAttributes } from 'react';\n\nexport type MessageProps = HTMLAttributes<HTMLDivElement> & {\n from: UIMessage['role'];\n};\n\nexport const Message = ({ className, from, ...props }: MessageProps) => (\n <div\n className={cn(\n 'group flex w-full items-end justify-end gap-2 py-4',\n from === 'user' ? 'is-user flex-row-reverse justify-end' : 'is-assistant flex-row-reverse justify-end',\n '[&>div]:max-w-[80%]',\n className\n )}\n {...props}\n />\n);\n\nexport type MessageContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const MessageContent = ({\n children,\n className,\n ...props\n}: MessageContentProps) => (\n <div\n className={cn(\n 'flex flex-col gap-2 overflow-hidden rounded-lg py-3 text-foreground text-sm',\n 'group-[.is-user]:bg-secondary group-[.is-user]:text-primary-foreground group-[.is-user]:px-4',\n 'group-[.is-assistant]:bg-transparent group-[.is-assistant]:text-foreground',\n className\n )}\n {...props}\n >\n <div className=\"is-user:dark\">{children}</div>\n </div>\n);\n\nexport type MessageAvatarProps = ComponentProps<typeof Avatar> & {\n src: string;\n name?: string;\n};\n\nexport const MessageAvatar = ({\n src,\n name,\n className,\n ...props\n}: MessageAvatarProps) => (\n <Avatar\n className={cn('size-8 ring ring-1 ring-border', className)}\n {...props}\n >\n <AvatarImage alt=\"\" className=\"mt-0 mb-0\" src={src} />\n <AvatarFallback>{name?.slice(0, 2) || 'ME'}</AvatarFallback>\n </Avatar>\n);\n","'use client';\n\nimport { Button } from '@/components/ui/button';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/components/ui/tooltip';\nimport { cn } from '@/lib/utils';\nimport type { ComponentProps } from 'react';\n\nexport type ActionsProps = ComponentProps<'div'>;\n\nexport const Actions = ({ className, children, ...props }: ActionsProps) => (\n <div className={cn('flex items-center gap-1', className)} {...props}>\n {children}\n </div>\n);\n\nexport type ActionProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n label?: string;\n};\n\nexport const Action = ({\n tooltip,\n children,\n label,\n className,\n variant = 'ghost',\n size = 'sm',\n ...props\n}: ActionProps) => {\n const button = (\n <Button\n className={cn(\n 'size-9 p-1.5 text-muted-foreground hover:text-foreground',\n className\n )}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n {children}\n <span className=\"sr-only\">{label || tooltip}</span>\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n};\n","'use client';\n\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport { cn } from '@/lib/utils';\nimport { BrainIcon, ChevronDownIcon } from 'lucide-react';\nimport type { ComponentProps } from 'react';\nimport { createContext, memo, useContext, useEffect, useState } from 'react';\nimport { Response } from './response';\n\ntype ReasoningContextValue = {\n isStreaming: boolean;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n duration: number;\n};\n\nconst ReasoningContext = createContext<ReasoningContextValue | null>(null);\n\nconst useReasoning = () => {\n const context = useContext(ReasoningContext);\n if (!context) {\n throw new Error('Reasoning components must be used within Reasoning');\n }\n return context;\n};\n\nexport type ReasoningProps = ComponentProps<typeof Collapsible> & {\n isStreaming?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n duration?: number;\n};\n\nconst AUTO_CLOSE_DELAY = 1000;\n\nexport const Reasoning = memo(\n ({\n className,\n isStreaming = false,\n open,\n defaultOpen = false,\n onOpenChange,\n duration: durationProp,\n children,\n ...props\n }: ReasoningProps) => {\n const [isOpen, setIsOpen] = useControllableState({\n prop: open,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n const [duration, setDuration] = useControllableState({\n prop: durationProp,\n defaultProp: 0,\n });\n\n const [hasAutoClosedRef, setHasAutoClosedRef] = useState(false);\n const [startTime, setStartTime] = useState<number | null>(null);\n\n // Track duration when streaming starts and ends\n useEffect(() => {\n if (isStreaming) {\n if (startTime === null) {\n setStartTime(Date.now());\n }\n } else if (startTime !== null) {\n setDuration(Math.round((Date.now() - startTime) / 1000));\n setStartTime(null);\n }\n }, [isStreaming, startTime, setDuration]);\n\n // Auto-open when streaming starts, auto-close when streaming ends (once only)\n useEffect(() => {\n if (isStreaming && !isOpen) {\n setIsOpen(true);\n } else if (!isStreaming && isOpen && !defaultOpen && !hasAutoClosedRef) {\n // Add a small delay before closing to allow user to see the content\n const timer = setTimeout(() => {\n setIsOpen(false);\n setHasAutoClosedRef(true);\n }, AUTO_CLOSE_DELAY);\n return () => clearTimeout(timer);\n }\n }, [isStreaming, isOpen, defaultOpen, setIsOpen, hasAutoClosedRef]);\n\n const handleOpenChange = (newOpen: boolean) => {\n setIsOpen(newOpen);\n };\n\n return (\n <ReasoningContext.Provider\n value={{ isStreaming, isOpen, setIsOpen, duration }}\n >\n <Collapsible\n className={cn('not-prose mb-4', className)}\n onOpenChange={handleOpenChange}\n open={isOpen}\n {...props}\n >\n {children}\n </Collapsible>\n </ReasoningContext.Provider>\n );\n }\n);\n\nexport type ReasoningTriggerProps = ComponentProps<\n typeof CollapsibleTrigger\n> & {\n title?: string;\n};\n\nexport const ReasoningTrigger = memo(\n ({\n className,\n title = 'Reasoning',\n children,\n ...props\n }: ReasoningTriggerProps) => {\n const { isStreaming, isOpen, duration } = useReasoning();\n\n return (\n <CollapsibleTrigger\n className={cn(\n 'flex items-center gap-2 text-muted-foreground text-sm',\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n <BrainIcon className=\"size-4\" />\n {isStreaming || duration === 0 ? (\n <p>Thinking...</p>\n ) : (\n <p>Thought for {duration} seconds</p>\n )}\n <ChevronDownIcon\n className={cn(\n 'size-4 text-muted-foreground transition-transform',\n isOpen ? 'rotate-180' : 'rotate-0'\n )}\n />\n </>\n )}\n </CollapsibleTrigger>\n );\n }\n);\n\nexport type ReasoningContentProps = ComponentProps<\n typeof CollapsibleContent\n> & {\n children: string;\n};\n\nexport const ReasoningContent = memo(\n ({ className, children, ...props }: ReasoningContentProps) => (\n <CollapsibleContent\n className={cn(\n 'mt-4 text-sm',\n 'data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in',\n className\n )}\n {...props}\n >\n <Response className=\"grid gap-2\">{children}</Response>\n </CollapsibleContent>\n )\n);\n\nReasoning.displayName = 'Reasoning';\nReasoningTrigger.displayName = 'ReasoningTrigger';\nReasoningContent.displayName = 'ReasoningContent';\n","'use client';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport { cn } from '@/lib/utils';\nimport { BookIcon, ChevronDownIcon } from 'lucide-react';\nimport type { ComponentProps } from 'react';\n\nexport type SourcesProps = ComponentProps<'div'>;\n\nexport const Sources = ({ className, ...props }: SourcesProps) => (\n // @ts-ignore\n <Collapsible\n className={cn('not-prose mb-4 text-primary text-xs', className)}\n {...props}\n />\n);\n\nexport type SourcesTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {\n count: number;\n};\n\nexport const SourcesTrigger = ({\n className,\n count,\n children,\n ...props\n}: SourcesTriggerProps) => (\n <CollapsibleTrigger className=\"flex items-center gap-2\" {...props}>\n {children ?? (\n <>\n <p className=\"font-medium\">Used {count} sources</p>\n <ChevronDownIcon className=\"h-4 w-4\" />\n </>\n )}\n </CollapsibleTrigger>\n);\n\nexport type SourcesContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const SourcesContent = ({\n className,\n ...props\n}: SourcesContentProps) => (\n <CollapsibleContent\n className={cn(\n 'mt-3 flex w-fit flex-col gap-2',\n 'data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 outline-none data-[state=closed]:animate-out data-[state=open]:animate-in',\n className\n )}\n {...props}\n />\n);\n\nexport type SourceProps = ComponentProps<'a'>;\n\nexport const Source = ({ href, title, children, ...props }: SourceProps) => (\n <a\n className=\"flex items-center gap-2\"\n href={href}\n rel=\"noreferrer\"\n target=\"_blank\"\n {...props}\n >\n {children ?? (\n <>\n <BookIcon className=\"h-4 w-4\" />\n <span className=\"block font-medium\">{title}</span>\n </>\n )}\n </a>\n);\n","\"use client\"\n\nimport { DynamicToolUIPart, UIMessage } from \"ai\"\nimport { Message, MessageContent } from '@/components/ai-elements/message'\nimport { Actions, Action } from '@/components/ai-elements/actions'\nimport { Response } from '@/components/ai-elements/response'\nimport { Reasoning, ReasoningTrigger, ReasoningContent } from \"@/components/ai-elements/reasoning\"\nimport { Source, Sources, SourcesContent, SourcesTrigger } from \"@/components/ai-elements/source\"\nimport { RefreshCcwIcon, CopyIcon } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport Image from \"next/image\"\nimport { useToast } from \"@/components/ui/use-toast\"\n\ninterface MessageRendererProps {\n messages: UIMessage[]\n status?: \"streaming\" | \"idle\" | \"error\" | \"submitted\" | \"ready\"\n className?: string\n showActions?: boolean\n onRegenerate?: () => void\n onAddToolResult?: (args: { tool: string; toolCallId: string; output: string }) => void\n UntypedToolPartComponent?: React.ComponentType<{\n untypedToolPart: DynamicToolUIPart\n callId: string\n addToContext: (item: any) => void\n }>\n addToContext?: (item: any) => void\n writeAccess?: boolean\n config?: {\n marginTopFirstMessage?: string\n customAssistantClassnames?: string\n }\n}\n\nexport function MessageRenderer({\n messages,\n status = \"idle\",\n className,\n showActions = true,\n onRegenerate,\n onAddToolResult,\n UntypedToolPartComponent,\n addToContext,\n writeAccess = true,\n config\n}: MessageRendererProps) {\n const { toast } = useToast()\n\n return (\n <>\n {messages?.map((message, messageIndex) => {\n const isFirstMessage = messageIndex === 0\n const messageMetadata = message.metadata as any\n const isLastMessage = messageIndex === messages.length - 1\n\n return (\n <Message\n className={cn(\n message.role === 'assistant' && (\n config?.customAssistantClassnames ? config?.customAssistantClassnames : ''\n ),\n isFirstMessage && (\n config?.marginTopFirstMessage ? config?.marginTopFirstMessage : 'mt-12'\n ), className\n )}\n from={message.role}\n key={message.id}\n >\n <MessageContent>\n {message.parts.map((part, i) => {\n if (part.type === 'step-start') {\n return null\n }\n\n if (part.type === 'text') {\n return (\n <div key={`${message.id}-${i}`}>\n <Response className=\"chat-response-container\">\n {part.text}\n </Response>\n </div>\n )\n }\n\n if (part.type === 'tool-askForConfirmation' && onAddToolResult) {\n const callId = part.toolCallId\n\n switch (part.state) {\n case 'input-streaming':\n return (\n <div key={callId}>Loading confirmation request...</div>\n )\n case 'input-available':\n return (\n <div key={callId}>\n {(part.input as { message: string }).message}\n <div>\n <button\n onClick={() =>\n onAddToolResult({\n tool: 'askForConfirmation',\n toolCallId: callId,\n output: 'Yes, confirmed',\n })\n }\n >\n Yes\n </button>\n <button\n onClick={() =>\n onAddToolResult({\n tool: 'askForConfirmation',\n toolCallId: callId,\n output: 'No, denied',\n })\n }\n >\n No\n </button>\n </div>\n </div>\n )\n case 'output-available':\n return (\n <div key={callId}>\n Tool call allowed: {part.output as string}\n </div>\n )\n case 'output-error':\n return <div key={callId}>Error: {part.errorText}</div>\n }\n }\n\n if (\n (part.type.startsWith('tool-') || part.type === 'dynamic-tool') &&\n UntypedToolPartComponent &&\n addToContext\n ) {\n const untypedToolPart = part as DynamicToolUIPart\n const callId = untypedToolPart.toolCallId\n return (\n <UntypedToolPartComponent\n key={callId}\n untypedToolPart={untypedToolPart}\n callId={callId}\n addToContext={addToContext}\n />\n )\n }\n\n if (part.type === 'file') {\n if (part.mediaType?.startsWith('image/')) {\n return (\n <Image\n key={`${message.id}-${i}`}\n src={part.url}\n width={300}\n height={300}\n alt={\"Generated image\"}\n />\n )\n }\n }\n\n if (part.type === 'source-url') {\n return (\n <Sources key={`${message.id}-${i}`}>\n <SourcesTrigger\n count={message.parts.filter(\n (part) => part.type === 'source-url'\n ).length}\n />\n <SourcesContent key={`${message.id}`}>\n {message.parts.map((part, i) => {\n switch (part.type) {\n case 'source-url':\n return (\n <Source\n key={`${message.id}-${i}`}\n href={part.url}\n title={part.title}\n />\n )\n }\n })}\n </SourcesContent>\n </Sources>\n )\n }\n\n if (part.type === 'reasoning') {\n return (\n <Reasoning\n key={`${message.id}-${i}`}\n className=\"w-full\"\n isStreaming={status === 'streaming'}\n >\n <ReasoningTrigger />\n <ReasoningContent>{part.text}</ReasoningContent>\n </Reasoning>\n )\n }\n\n return null\n })}\n\n {showActions && message.role === 'assistant' && (\n <Actions className=\"mt-2\">\n {onRegenerate && (\n <Action\n onClick={() => onRegenerate()}\n label=\"Retry\"\n disabled={!writeAccess}\n >\n <RefreshCcwIcon className=\"size-3\" />\n </Action>\n )}\n <Action\n onClick={() => {\n navigator.clipboard.writeText(\n message.parts.map((part: any) => part?.text || \"\").join('\\n')\n )\n toast({\n title: \"Copied message\",\n description: \"The message was copied to your clipboard.\",\n })\n }}\n label=\"Copy\"\n >\n <CopyIcon className=\"size-3\" />\n </Action>\n {messageMetadata?.totalTokens && (\n <small className=\"text-muted-foreground\">\n {Intl.NumberFormat('en-US').format(messageMetadata?.totalTokens)} tokens\n </small>\n )}\n </Actions>\n )}\n </MessageContent>\n </Message>\n )\n })}\n </>\n )\n}\n","import { AgentSession } from \"@/types/models/agent-session\";\nimport { UserWithRole } from \"@/types/models/user\";\n\nexport const checkChatSessionWriteAccess = (session: AgentSession, user: UserWithRole) => {\n const isPrivate = session.rights_mode === 'private';\n const isPublic = session.rights_mode === 'public';\n const byUsers = session.rights_mode === 'users';\n const byRoles = session.rights_mode === 'roles';\n const isAdmin = user.super_admin;\n const isCreator = session.created_by === user.id.toString();\n \n let writeAccess = false;\n if (isPrivate && isCreator) {\n writeAccess = true;\n }\n if (isPublic) {\n writeAccess = true;\n }\n if (byUsers) {\n writeAccess = session.RBAC?.users?.find(u => u.id === user.id)?.rights === 'write';\n }\n if (byRoles) {\n writeAccess = session.RBAC?.roles?.find(r => r.id === user.role?.id)?.rights === 'write';\n }\n if (isAdmin) {\n writeAccess = true;\n }\n return writeAccess;\n}"],"names":["Promise","resolve","then","__webpack_require__","bind","LoaderIcon","size","param","jsx_runtime","jsxs","svg","height","strokeLinejoin","style","color","viewBox","width","jsx","title","g","clipPath","path","d","stroke","strokeWidth","opacity","defs","id","rect","fill","Loader","className","props","div","cn","HoverCard","HoverCardPrimitive","HoverCardTrigger","HoverCardContent","React","ref","align","sideOffset","displayName","Progress","value","ProgressPrimitive","transform","concat","ContextContext","createContext","useContextValue","context","useContext","Context","usedTokens","maxTokens","usage","modelId","Provider","closeDelay","openDelay","ContextIcon","circumference","Math","PI","aria-label","role","ICON_VIEWBOX","circle","cx","cy","r","strokeDasharray","strokeDashoffset","usedPercent","strokeLinecap","transformOrigin","ContextTrigger","children","renderedPercent","Intl","NumberFormat","maximumFractionDigits","format","asChild","Button","type","variant","span","ContextContent","ContextContentHeader","displayPct","used","notation","total","Fragment","p","ContextContentBody","ContextInputUsage","inputTokens","inputCost","estimateCost","input","output","totalUSD","undefined","inputCostText","currency","TokensWithCost","costText","tokens","ContextOutputUsage","outputTokens","outputCost","outputCostText","ContextReasoningUsage","reasoningTokens","reasoningCost","reasoningCostText","ContextCacheUsage","cacheTokens","cachedInputTokens","cacheCost","cacheReads","cacheCostText","Tool","Collapsible","getStatusBadge","icons","CircleIcon","ClockIcon","CheckCircleIcon","XCircleIcon","Badge","status","labels","ToolHeader","state","CollapsibleTrigger","WrenchIcon","ChevronDownIcon","ToolContent","CollapsibleContent","ToolInput","h4","CodeBlock","code","JSON","stringify","language","ToolOutput","errorText","ChatLayout","session","configContext","agent","creatorQuery","error","setError","useState","ConfigContext","useIsMobile","files","setFiles","items","setItems","user","UserContext","copyingTableId","setCopyingTableId","showSaveWorkflowModal","setShowSaveWorkflowModal","setInput","disabledTools","setDisabledTools","inputRef","toast","useToast","rbac","setRbac","rights_mode","users","RBAC","roles","projects","useQuery","GET_USER_BY_ID","variables","created_by","skip","updateAgentSessionRbac","updateAgentSessionRbacResult","useMutation","UPDATE_AGENT_SESSION_RBAC","tokenCounts","setTokenCounts","totalTokens","GET_AGENT_MESSAGES","returnPartialData","fetchPolicy","nextFetchPolicy","page","limit","filters","eq","onCompleted","data","agent_messagesPagination","setMessages","map","parse","item","content","messages","sendMessage","stop","regenerate","addToolResult","useChat","sendAutomaticallyWhen","lastAssistantMessageIsCompleteWithToolCalls","experimental_throttle","onToolCall","toolCall","dynamic","toolName","cities","tool","toolCallId","floor","random","length","onError","console","log","message","x","transport","DefaultChatTransport","api","backend","slug","prepareSendMessagesRequest","chatId","body","token","getToken","headers","User","Session","Authorization","Stream","useEffect","totalCount","reduce","acc","messageMetadata","metadata","reasoningCount","canCreateWorkflow","useMemo","userMessages","filter","m","assistantMessages","onSubmit","e","options","preventDefault","text","toggleTool","prev","includes","name","writeAccess","checkChatSessionWriteAccess","updateMessageFiles","all","s3key","Object","entries","forEach","key","mediaType","filename","url","btoa","getPresignedUrl","Conversation","Workflow","onClick","Plus","maxContextLength","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","img","src","alt","AgentVisual","Card","CardHeader","CardTitle","CardDescription","CardContent","disabled","ConversationContent","MessageRenderer","config","marginTopFirstMessage","onRegenerate","onAddToolResult","UntypedToolPartComponent","UntypedToolPart","addToContext","Alert","ExclamationTriangleIcon","AlertTitle","AlertDescription","form","fileUploads","s3endpoint","UppyDashboard","selectionLimit","allowedFileTypes","capabilities","audio","video","images","dependencies","onConfirm","TextareaAutosize","autoComplete","autoFocus","minRows","onKeyDown","shiftKey","onChange","target","placeholder","trim","ArrowUp","StopIcon","FileItem","s3Key","active","onRemove","i","SaveWorkflowModal","isOpen","onClose","sessionTitle","description","hr","loading","Loading","userById","tools","isEnabled","Switch","checked","onCheckedChange","ChevronsUpDown","RBACControl","allowedModes","initialRightsMode","initialUsers","initialRoles","initialProjects","untypedToolPart","callId","styleToolName","replace","charAt","toUpperCase","slice","defaultOpen","Response","Skeleton","SessionsPage","params","agentData","agentLoading","agentError","GET_AGENT_BY_ID","sessionData","sessionLoading","sessionError","GET_AGENT_SESSION_BY_ID","agentById","agent_sessionById","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","StickToBottom","initial","resize","Content","Message","from","MessageContent","Actions","Action","tooltip","label","button","ReasoningContext","useReasoning","Reasoning","memo","isStreaming","open","onOpenChange","duration","durationProp","setIsOpen","useControllableState","prop","defaultProp","setDuration","hasAutoClosedRef","setHasAutoClosedRef","startTime","setStartTime","Date","now","round","timer","setTimeout","clearTimeout","newOpen","ReasoningTrigger","BrainIcon","ReasoningContent","Sources","SourcesTrigger","count","SourcesContent","Source","href","a","rel","BookIcon","showActions","messageIndex","customAssistantClassnames","isFirstMessage","parts","part","startsWith","Image","RefreshCcwIcon","navigator","clipboard","writeText","join","CopyIcon","small","isPrivate","isPublic","byUsers","byRoles","isAdmin","super_admin","isCreator","toString","find","u","rights"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9727],{74083:function(e,s,t){Promise.resolve().then(t.bind(t,831))},831:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return A},dynamic:function(){return P}});var a=t(57437),l=t(2265),r=t(99376),i=t(7211),n=t(12199),c=t(13832),d=t(64972),o=t(32660),h=t(82023),u=t(33276),m=t(15863),x=t(83229),v=t(48736),f=t(45554),p=t(99397),j=t(88893),g=t(32489),N=t(65613),y=t(37099),b=t(62869),k=t(95186),w=t(26815),C=t(76818),Z=t(66070),_=t(35974),S=t(93022),E=t(77992),z=t(27689),R=t(73247),T=t(26110),M=t(19060),q=t(19378);function I(e){var s;let{open:t,onClose:r,onSelect:n,excludeIds:c=[]}=e,[d,o]=(0,l.useState)(""),[h,u]=(0,l.useState)([]),{loading:m,data:x}=(0,i.aM)(z.RV,{variables:{page:1,limit:100,filters:d?[{AND:[{name:{contains:d}},{eval_set_id:{eq:null}}]}]:[{eval_set_id:{eq:null}}]},skip:!t});(0,l.useEffect)(()=>{t||(u([]),o(""))},[t]);let v=((null==x?void 0:null===(s=x.test_casesPagination)||void 0===s?void 0:s.items)||[]).filter(e=>!c.includes(e.id)),f=e=>{u(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])};return(0,a.jsx)(T.Vq,{open:t,onOpenChange:r,children:(0,a.jsxs)(T.cZ,{className:"max-w-3xl max-h-[80vh] flex flex-col",children:[(0,a.jsxs)(T.fK,{children:[(0,a.jsx)(T.$N,{children:"Add Test Cases"}),(0,a.jsx)(T.Be,{children:"Select test cases to add to this eval set. Already added test cases are hidden."})]}),(0,a.jsxs)("div",{className:"space-y-4 flex-1 overflow-hidden flex flex-col",children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(R.Z,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,a.jsx)(k.I,{placeholder:"Search test cases by name...",value:d,onChange:e=>o(e.target.value),className:"pl-9"})]}),v.length>0&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,a.jsx)(M.X,{id:"select-all-test-cases",checked:h.length===v.length&&v.length>0,onCheckedChange:()=>{h.length===v.length?u([]):u(v.map(e=>e.id))}}),(0,a.jsxs)(w._,{htmlFor:"select-all-test-cases",className:"text-sm text-muted-foreground",children:["Select all (",h.length," selected)"]})]}),(0,a.jsx)(q.x,{className:"flex-1 border rounded-lg",children:(0,a.jsx)("div",{children:m?Array.from({length:3}).map((e,s)=>(0,a.jsx)(S.O,{className:"h-10 w-full"},s)):0===v.length?(0,a.jsx)("div",{className:"text-center py-12 text-muted-foreground mx-5",children:d?"No test cases found matching your search.":"No test cases available to add (note: you can only add test cases that are not already in an eval set, remove them from another eval set first if you want to add them to a new eval set)."}):v.map(e=>(0,a.jsxs)("div",{onClick:()=>{f(e.id)},className:"flex items-start gap-3 p-3 hover:bg-muted/50",children:[(0,a.jsx)(M.X,{checked:h.includes(e.id),id:"select-test-case-".concat(e.id),onCheckedChange:()=>f(e.id)}),(0,a.jsxs)(w._,{htmlFor:"select-test-case-".concat(e.id),className:"text-sm text-muted-foreground flex flex-col",children:[(0,a.jsx)("span",{children:e.name}),(0,a.jsx)("small",{children:e.description})]})]},e.id))})})]}),(0,a.jsxs)(T.cN,{children:[(0,a.jsx)(b.z,{variant:"outline",onClick:r,children:"Cancel"}),(0,a.jsxs)(b.z,{onClick:()=>{n(h)},disabled:0===h.length,children:["Add ",h.length," Test Case",1!==h.length?"s":""]})]})]})})}var O=t(82534);let P="force-dynamic";function A(){var e,s,t,R;let T=(0,r.useParams)(),M=(0,r.useRouter)(),{user:q}=(0,l.useContext)(c.S),{toast:P}=(0,E.pm)(),A=T.id,[V,D]=(0,l.useState)(""),[F,B]=(0,l.useState)(""),[L,X]=(0,l.useState)([]),[Y,$]=(0,l.useState)(!1),[W,H]=(0,l.useState)(!1),[K,G]=(0,l.useState)(null),[J,Q]=(0,l.useState)(null),U=q.super_admin||(null===(e=q.role)||void 0===e?void 0:e.evals)==="read"||(null===(s=q.role)||void 0===s?void 0:s.evals)==="write",ee=q.super_admin||(null===(t=q.role)||void 0===t?void 0:t.evals)==="write",{loading:es,data:et,refetch:ea}=(0,i.aM)(z.iA,{variables:{id:A},skip:!A,onCompleted:e=>{(null==e?void 0:e.eval_setById)&&(D(e.eval_setById.name),B(e.eval_setById.description||""))}}),{data:el,refetch:er}=(0,i.aM)(z.RV,{variables:{page:1,limit:500,filters:[{eval_set_id:{eq:A}}]}}),[ei,{loading:en}]=(0,n.D)(z.vP,{onCompleted:()=>{P({title:"Eval set updated",description:"The eval set has been successfully updated."}),ea()},onError:e=>{P({title:"Failed to update eval set",description:e.message,variant:"destructive"})}}),ec=e=>{G(e)},[ed,{loading:eo}]=(0,n.D)(z.Mh,{onError:e=>{P({title:"Failed to update test case",description:e.message,variant:"destructive"})}});if(!U)return(0,a.jsx)("div",{className:"flex h-full flex-1 flex-col space-y-8 p-8",children:(0,a.jsxs)(N.bZ,{variant:"destructive",children:[(0,a.jsx)(d.Z,{className:"h-4 w-4"}),(0,a.jsx)(N.X,{children:"You don't have permission to access Eval Sets. Contact your administrator to request access."})]})});if(es)return(0,a.jsxs)("div",{className:"flex h-full flex-1 flex-col space-y-8 p-8",children:[(0,a.jsx)(S.O,{className:"h-8 w-64"}),(0,a.jsx)(S.O,{className:"h-64 w-full"})]});let eh=(null==el?void 0:null===(R=el.test_casesPagination)||void 0===R?void 0:R.items)||[];return(0,a.jsxs)("div",{className:"flex h-full flex-1 flex-col space-y-8 p-8",children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-primary/5 rounded-lg blur-xl"}),(0,a.jsxs)("div",{className:"relative flex items-center justify-between p-6 border rounded-lg bg-card/50 backdrop-blur-sm",children:[(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsx)(b.z,{variant:"ghost",size:"icon",onClick:()=>M.push("/evals"),children:(0,a.jsx)(o.Z,{className:"h-4 w-4"})}),(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-primary",children:(0,a.jsx)(h.Z,{className:"h-5 w-5 text-primary-foreground"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-2xl font-bold tracking-tight",children:"Edit Eval Set"}),(0,a.jsx)("p",{className:"text-muted-foreground",children:"Configure test cases for this evaluation set."})]})]})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsxs)(b.z,{variant:"outline",onClick:()=>M.push("/evals/".concat(A,"/runs")),children:[(0,a.jsx)(u.Z,{className:"mr-2 h-4 w-4"}),"View Runs"]}),ee&&(0,a.jsxs)(b.z,{onClick:()=>{if(!V.trim()){P({title:"Validation error",description:"Name is required.",variant:"destructive"});return}if(L.length>500){P({title:"Validation error",description:"Maximum 500 test cases allowed per eval set.",variant:"destructive"});return}ei({variables:{id:A,data:{name:V.trim(),description:F.trim()||null}}})},disabled:en,children:[en?(0,a.jsx)(m.Z,{className:"mr-2 h-4 w-4 animate-spin"}):(0,a.jsx)(x.Z,{className:"mr-2 h-4 w-4"}),"Save Changes"]})]})]})]}),(0,a.jsxs)(Z.Zb,{className:"shadow-lg",children:[(0,a.jsx)(Z.Ol,{className:"border-b bg-accent/50",children:(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-primary/10",children:(0,a.jsx)(v.Z,{className:"h-4 w-4 text-primary"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)(Z.ll,{children:"Basic Information"}),(0,a.jsx)(Z.SZ,{children:"Edit the name and description of this eval set."})]})]})}),(0,a.jsxs)(Z.aY,{className:"space-y-4 pt-6",children:[(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(w._,{htmlFor:"name",className:"text-sm font-semibold",children:"Name *"}),(0,a.jsx)(k.I,{id:"name",placeholder:"Eval set name",value:V,onChange:e=>D(e.target.value),disabled:!ee})]}),(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(w._,{htmlFor:"description",className:"text-sm font-semibold",children:"Description"}),(0,a.jsx)(C.g,{id:"description",placeholder:"Describe what this eval set tests...",value:F,onChange:e=>B(e.target.value),disabled:!ee,rows:3})]})]})]}),(0,a.jsxs)(Z.Zb,{className:"shadow-lg",children:[(0,a.jsx)(Z.Ol,{className:"border-b bg-accent/50",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"p-2 rounded-lg bg-primary/10",children:(0,a.jsx)(f.Z,{className:"h-4 w-4 text-primary"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)(Z.ll,{children:"Test Cases"}),(0,a.jsxs)(Z.SZ,{children:["Add up to 500 test cases to this eval set."," ",(0,a.jsxs)(_.C,{variant:"secondary",className:"ml-1",children:[eh.length,"/500"]})]})]})]}),ee&&(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsxs)(b.z,{variant:"outline",size:"sm",onClick:()=>H(!0),children:[(0,a.jsx)(p.Z,{className:"mr-2 h-4 w-4"}),"Create New"]}),(0,a.jsxs)(b.z,{variant:"secondary",size:"sm",onClick:()=>$(!0),disabled:L.length>=500,children:[(0,a.jsx)(p.Z,{className:"mr-2 h-4 w-4"}),"Add Existing"]})]})]})}),(0,a.jsx)(Z.aY,{className:"pt-6",children:0===eh.length?(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[(0,a.jsx)("div",{className:"p-4 rounded-full bg-primary/10 mb-4",children:(0,a.jsx)(f.Z,{className:"h-8 w-8 text-primary"})}),(0,a.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"No test cases yet"}),(0,a.jsx)("p",{className:"text-muted-foreground max-w-sm",children:'Click "Create New" or "Add Existing" to start building your evaluation set.'})]}):(0,a.jsx)("div",{className:"space-y-3",children:eh.map(e=>(0,a.jsxs)("div",{className:"group relative flex items-center justify-between p-4 border rounded-lg transition-all hover:shadow-md hover:border-primary/50 hover:scale-[1.01] hover:bg-accent/30",children:[(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("div",{className:"p-1.5 rounded bg-primary/10",children:(0,a.jsx)(v.Z,{className:"h-3.5 w-3.5 text-primary"})}),(0,a.jsx)("span",{className:"font-semibold",children:e.name})]}),e.description&&(0,a.jsx)("p",{className:"text-sm text-muted-foreground mt-2 ml-8",children:e.description})]}),ee&&(0,a.jsxs)("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,a.jsxs)(b.z,{variant:"ghost",size:"sm",onClick:()=>{Q(e),H(!0)},className:"hover:bg-primary/10",children:[(0,a.jsx)(j.Z,{className:"mr-1 h-3.5 w-3.5"}),"Edit"]}),(0,a.jsxs)(b.z,{variant:"ghost",size:"sm",onClick:()=>ec(e.id),className:"hover:bg-destructive/10 hover:text-destructive",children:[(0,a.jsx)(g.Z,{className:"mr-1 h-3.5 w-3.5"}),"Remove"]})]})]},e.id))})})]}),(0,a.jsx)(I,{open:Y,onClose:()=>$(!1),onSelect:e=>{let s=Array.from(new Set([...L,...e]));if(s.length>500){P({title:"Too many test cases",description:"Maximum 500 test cases allowed per eval set.",variant:"destructive"});return}for(let e of(console.log("newTestCases",s),s))ed({variables:{id:e,data:{eval_set_id:A}}});er(),$(!1)},excludeIds:L}),(0,a.jsx)(O.F,{open:W,onClose:()=>H(!1),evalSetId:A,onSuccess:()=>{H(!1),er(),ea()},testCase:J}),(0,a.jsx)(y.aR,{open:!!K,onOpenChange:e=>!e&&G(null),children:(0,a.jsxs)(y._T,{children:[(0,a.jsxs)(y.fY,{children:[(0,a.jsx)(y.f$,{children:"Remove test case from eval set?"}),(0,a.jsx)(y.yT,{children:"This will remove the test case from this eval set. The test case itself will not be deleted and can be added back later."})]}),(0,a.jsxs)(y.xo,{children:[(0,a.jsx)(y.le,{children:"Cancel"}),(0,a.jsx)(y.OL,{onClick:()=>{K&&ed({variables:{id:K,data:{eval_set_id:null}},onCompleted:()=>{P({title:"Test case removed",description:"The test case has been removed from this eval set."}),er(),G(null)}})},children:"Remove"})]})]})})]})}},19060:function(e,s,t){"use strict";t.d(s,{X:function(){return c}});var a=t(57437),l=t(9270),r=t(30401),i=t(2265),n=t(94508);let c=i.forwardRef((e,s)=>{let{className:t,...i}=e;return(0,a.jsx)(l.fC,{ref:s,className:(0,n.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...i,children:(0,a.jsx)(l.z$,{className:(0,n.cn)("flex items-center justify-center text-current"),children:(0,a.jsx)(r.Z,{className:"size-4"})})})});c.displayName=l.fC.displayName},45554:function(e,s,t){"use strict";t.d(s,{Z:function(){return a}});let a=(0,t(39763).Z)("ListChecks",[["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]])},88893:function(e,s,t){"use strict";t.d(s,{Z:function(){return a}});let a=(0,t(39763).Z)("Pen",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}]])},33276:function(e,s,t){"use strict";t.d(s,{Z:function(){return a}});let a=(0,t(39763).Z)("Play",[["polygon",{points:"5 3 19 12 5 21 5 3",key:"191637"}]])},83229:function(e,s,t){"use strict";t.d(s,{Z:function(){return a}});let a=(0,t(39763).Z)("Save",[["path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z",key:"1owoqh"}],["polyline",{points:"17 21 17 13 7 13 7 21",key:"1md35c"}],["polyline",{points:"7 3 7 8 15 8",key:"8nz8an"}]])},73247:function(e,s,t){"use strict";t.d(s,{Z:function(){return a}});let a=(0,t(39763).Z)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]])},9270:function(e,s,t){"use strict";t.d(s,{fC:function(){return y},z$:function(){return k}});var a=t(2265),l=t(98575),r=t(73966),i=t(6741),n=t(80886),c=t(6718),d=t(90420),o=t(71599),h=t(66840),u=t(57437),m="Checkbox",[x,v]=(0,r.b)(m),[f,p]=x(m);function j(e){let{__scopeCheckbox:s,checked:t,children:l,defaultChecked:r,disabled:i,form:c,name:d,onCheckedChange:o,required:h,value:x="on",internal_do_not_use_render:v}=e,[p,j]=(0,n.T)({prop:t,defaultProp:null!=r&&r,onChange:o,caller:m}),[g,N]=a.useState(null),[y,b]=a.useState(null),k=a.useRef(!1),w=!g||!!c||!!g.closest("form"),C={checked:p,disabled:i,setChecked:j,control:g,setControl:N,name:d,form:c,value:x,hasConsumerStoppedPropagationRef:k,required:h,defaultChecked:!Z(r)&&r,isFormControl:w,bubbleInput:y,setBubbleInput:b};return(0,u.jsx)(f,{scope:s,...C,children:"function"==typeof v?v(C):l})}var g="CheckboxTrigger",N=a.forwardRef((e,s)=>{let{__scopeCheckbox:t,onKeyDown:r,onClick:n,...c}=e,{control:d,value:o,disabled:m,checked:x,required:v,setControl:f,setChecked:j,hasConsumerStoppedPropagationRef:N,isFormControl:y,bubbleInput:b}=p(g,t),k=(0,l.e)(s,f),w=a.useRef(x);return a.useEffect(()=>{let e=null==d?void 0:d.form;if(e){let s=()=>j(w.current);return e.addEventListener("reset",s),()=>e.removeEventListener("reset",s)}},[d,j]),(0,u.jsx)(h.WV.button,{type:"button",role:"checkbox","aria-checked":Z(x)?"mixed":x,"aria-required":v,"data-state":_(x),"data-disabled":m?"":void 0,disabled:m,value:o,...c,ref:k,onKeyDown:(0,i.M)(r,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,i.M)(n,e=>{j(e=>!!Z(e)||!e),b&&y&&(N.current=e.isPropagationStopped(),N.current||e.stopPropagation())})})});N.displayName=g;var y=a.forwardRef((e,s)=>{let{__scopeCheckbox:t,name:a,checked:l,defaultChecked:r,required:i,disabled:n,value:c,onCheckedChange:d,form:o,...h}=e;return(0,u.jsx)(j,{__scopeCheckbox:t,checked:l,defaultChecked:r,disabled:n,required:i,onCheckedChange:d,name:a,form:o,value:c,internal_do_not_use_render:e=>{let{isFormControl:a}=e;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(N,{...h,ref:s,__scopeCheckbox:t}),a&&(0,u.jsx)(C,{__scopeCheckbox:t})]})}})});y.displayName=m;var b="CheckboxIndicator",k=a.forwardRef((e,s)=>{let{__scopeCheckbox:t,forceMount:a,...l}=e,r=p(b,t);return(0,u.jsx)(o.z,{present:a||Z(r.checked)||!0===r.checked,children:(0,u.jsx)(h.WV.span,{"data-state":_(r.checked),"data-disabled":r.disabled?"":void 0,...l,ref:s,style:{pointerEvents:"none",...e.style}})})});k.displayName=b;var w="CheckboxBubbleInput",C=a.forwardRef((e,s)=>{let{__scopeCheckbox:t,...r}=e,{control:i,hasConsumerStoppedPropagationRef:n,checked:o,defaultChecked:m,required:x,disabled:v,name:f,value:j,form:g,bubbleInput:N,setBubbleInput:y}=p(w,t),b=(0,l.e)(s,y),k=(0,c.D)(o),C=(0,d.t)(i);a.useEffect(()=>{if(!N)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,s=!n.current;if(k!==o&&e){let t=new Event("click",{bubbles:s});N.indeterminate=Z(o),e.call(N,!Z(o)&&o),N.dispatchEvent(t)}},[N,k,o,n]);let _=a.useRef(!Z(o)&&o);return(0,u.jsx)(h.WV.input,{type:"checkbox","aria-hidden":!0,defaultChecked:null!=m?m:_.current,required:x,disabled:v,name:f,value:j,form:g,...r,tabIndex:-1,ref:b,style:{...r.style,...C,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function Z(e){return"indeterminate"===e}function _(e){return Z(e)?"indeterminate":e?"checked":"unchecked"}C.displayName=w}},function(e){e.O(0,[6840,329,8310,3954,9851,7629,7093,6148,847,1942,7648,7823,8068,5799,4567,605,85,4957,7398,1785,3397,1713,9141,6152,3145,428,6373,3832,4205,5978,2971,2117,1744],function(){return e(e.s=74083)}),_N_E=e.O()}]);
2
- //# sourceMappingURL=page-b2de62f11946627f.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/chunks/app/(application)/evals/[id]/page-b2de62f11946627f.js","mappings":"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","sources":["webpack://_N_E/?c683","webpack://_N_E/./app/(application)/evals/[id]/components/test-case-selection-modal.tsx","webpack://_N_E/./app/(application)/evals/[id]/page.tsx","webpack://_N_E/./components/ui/checkbox.tsx","webpack://_N_E/../../../src/icons/list-checks.ts","webpack://_N_E/../../../src/icons/pen.ts","webpack://_N_E/../../../src/icons/play.ts","webpack://_N_E/../../../src/icons/save.ts","webpack://_N_E/../../../src/icons/search.ts","webpack://_N_E/../src/checkbox.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/evals/[id]/page.tsx\");\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport { Search } from \"lucide-react\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { GET_TEST_CASES } from \"@/queries/queries\";\nimport { Label } from \"@/components/ui/label\"\n\ninterface TestCaseSelectionModalProps {\n open: boolean;\n onClose: () => void;\n onSelect: (testCaseIds: string[]) => void;\n excludeIds?: string[];\n}\n\nexport function TestCaseSelectionModal({\n open,\n onClose,\n onSelect,\n excludeIds = [],\n}: TestCaseSelectionModalProps) {\n const [search, setSearch] = useState(\"\");\n const [selectedIds, setSelectedIds] = useState<string[]>([]);\n\n const { loading, data } = useQuery(GET_TEST_CASES, {\n variables: {\n page: 1,\n limit: 100,\n filters: search ? [{ AND: [{ name: { contains: search } }, { eval_set_id: { eq: null } }] }] : [{ eval_set_id: { eq: null } }],\n },\n skip: !open,\n });\n\n useEffect(() => {\n if (!open) {\n setSelectedIds([]);\n setSearch(\"\");\n }\n }, [open]);\n\n const testCases = data?.test_casesPagination?.items || [];\n const availableTestCases = testCases.filter((tc: any) => !excludeIds.includes(tc.id));\n\n const handleToggle = (id: string) => {\n setSelectedIds(prev =>\n prev.includes(id)\n ? prev.filter(x => x !== id)\n : [...prev, id]\n );\n };\n\n const handleSelectAll = () => {\n if (selectedIds.length === availableTestCases.length) {\n setSelectedIds([]);\n } else {\n setSelectedIds(availableTestCases.map((tc: any) => tc.id));\n }\n };\n\n const handleSubmit = () => {\n onSelect(selectedIds);\n };\n\n return (\n <Dialog open={open} onOpenChange={onClose}>\n <DialogContent className=\"max-w-3xl max-h-[80vh] flex flex-col\">\n <DialogHeader>\n <DialogTitle>Add Test Cases</DialogTitle>\n <DialogDescription>\n Select test cases to add to this eval set. Already added test cases are hidden.\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"space-y-4 flex-1 overflow-hidden flex flex-col\">\n {/* Search */}\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder=\"Search test cases by name...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n\n {/* Select All */}\n {availableTestCases.length > 0 && (\n <div className=\"flex items-center gap-2 px-1\">\n <Checkbox\n id=\"select-all-test-cases\"\n checked={selectedIds.length === availableTestCases.length && availableTestCases.length > 0}\n onCheckedChange={handleSelectAll}\n />\n <Label htmlFor=\"select-all-test-cases\" className=\"text-sm text-muted-foreground\">\n Select all ({selectedIds.length} selected)\n </Label>\n </div>\n )}\n\n {/* Test Cases List */}\n <ScrollArea className=\"flex-1 border rounded-lg\">\n <div>\n {loading ? (\n Array.from({ length: 3 }).map((_, i) => (\n <Skeleton key={i} className=\"h-10 w-full\" />\n ))\n ) : availableTestCases.length === 0 ? (\n <div className=\"text-center py-12 text-muted-foreground mx-5\">\n {search ? \"No test cases found matching your search.\" : \"No test cases available to add (note: you can only add test cases that are not already in an eval set, remove them from another eval set first if you want to add them to a new eval set).\"}\n </div>\n ) : (\n availableTestCases.map((testCase: any) => (\n <div\n key={testCase.id}\n onClick={() => {\n handleToggle(testCase.id)\n }}\n className=\"flex items-start gap-3 p-3 hover:bg-muted/50\"\n >\n <Checkbox\n checked={selectedIds.includes(testCase.id)}\n id={`select-test-case-${testCase.id}`}\n onCheckedChange={() => handleToggle(testCase.id)}\n />\n <Label htmlFor={`select-test-case-${testCase.id}`} className=\"text-sm text-muted-foreground flex flex-col\">\n <span>{testCase.name}</span>\n <small>{testCase.description}</small>\n </Label>\n </div>\n ))\n )}\n </div>\n </ScrollArea>\n </div>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n onClick={handleSubmit}\n disabled={selectedIds.length === 0}\n >\n Add {selectedIds.length} Test Case{selectedIds.length !== 1 ? 's' : ''}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","\"use client\";\n\nimport { useContext, useState } from \"react\";\nimport { useParams, useRouter } from \"next/navigation\";\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { Brain, ArrowLeft, Plus, Save, Loader2, Play, FileText, ListChecks, Sparkles, Edit2, X } from \"lucide-react\";\nimport { Alert, AlertDescription } from \"@/components/ui/alert\";\nimport { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from \"@/components/ui/alert-dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { GET_EVAL_SET_BY_ID, UPDATE_EVAL_SET, GET_TEST_CASES, UPDATE_TEST_CASE } from \"@/queries/queries\";\nimport { TestCaseSelectionModal } from \"./components/test-case-selection-modal\";\nimport { TestCaseModal } from \"../cases/components/test-case-modal\";\nimport { TestCase } from \"@/types/models/test-case\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default function EvalSetEditorPage() {\n const params = useParams();\n const router = useRouter();\n const { user } = useContext(UserContext);\n const { toast } = useToast();\n const evalSetId = params.id as string;\n\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [testCases, setTestCases] = useState<string[]>([]);\n const [showSelectionModal, setShowSelectionModal] = useState(false);\n const [showCreateModal, setShowCreateModal] = useState(false);\n const [testCaseToRemove, setTestCaseToRemove] = useState<string | null>(null);\n const [editingTestCase, setEditingTestCase] = useState<TestCase | null>(null);\n\n // Check if user has evals access\n const hasEvalsAccess = user.super_admin || user.role?.evals === \"read\" || user.role?.evals === \"write\";\n const canWrite = user.super_admin || user.role?.evals === \"write\";\n\n // Fetch eval set\n const { loading: loadingEvalSet, data: evalSetData, refetch } = useQuery(GET_EVAL_SET_BY_ID, {\n variables: { id: evalSetId },\n skip: !evalSetId,\n onCompleted: (data) => {\n if (data?.eval_setById) {\n setName(data.eval_setById.name);\n setDescription(data.eval_setById.description || \"\");\n }\n },\n });\n\n // Fetch test cases details\n const { data: testCasesData, refetch: refetchTestCases } = useQuery(GET_TEST_CASES, {\n variables: {\n page: 1,\n limit: 500,\n filters: [{ eval_set_id: { eq: evalSetId } }],\n }\n });\n\n const [updateEvalSet, { loading: updating }] = useMutation(UPDATE_EVAL_SET, {\n onCompleted: () => {\n toast({\n title: \"Eval set updated\",\n description: \"The eval set has been successfully updated.\",\n });\n refetch();\n },\n onError: (error) => {\n toast({\n title: \"Failed to update eval set\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const handleSave = () => {\n if (!name.trim()) {\n toast({\n title: \"Validation error\",\n description: \"Name is required.\",\n variant: \"destructive\",\n });\n return;\n }\n\n if (testCases.length > 500) {\n toast({\n title: \"Validation error\",\n description: \"Maximum 500 test cases allowed per eval set.\",\n variant: \"destructive\",\n });\n return;\n }\n\n updateEvalSet({\n variables: {\n id: evalSetId,\n data: {\n name: name.trim(),\n description: description.trim() || null,\n },\n },\n });\n };\n\n const handleRemoveTestCase = (testCaseId: string) => {\n setTestCaseToRemove(testCaseId);\n };\n\n const confirmRemoveTestCase = () => {\n if (!testCaseToRemove) return;\n\n updateTestCase({\n variables: {\n id: testCaseToRemove,\n data: { eval_set_id: null },\n },\n onCompleted: () => {\n toast({\n title: \"Test case removed\",\n description: \"The test case has been removed from this eval set.\",\n });\n refetchTestCases();\n setTestCaseToRemove(null);\n },\n });\n };\n\n const [updateTestCase, { loading: updatingTestCase }] = useMutation(UPDATE_TEST_CASE, {\n onError: (error) => {\n toast({\n title: \"Failed to update test case\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const handleAddTestCases = (selectedTestCaseIds: string[]) => {\n // Add new test cases, avoiding duplicates\n const newTestCases = Array.from(new Set([...testCases, ...selectedTestCaseIds]));\n\n if (newTestCases.length > 500) {\n toast({\n title: \"Too many test cases\",\n description: \"Maximum 500 test cases allowed per eval set.\",\n variant: \"destructive\",\n });\n return;\n }\n\n console.log(\"newTestCases\", newTestCases);\n\n for (const testCaseId of newTestCases) {\n updateTestCase({\n variables: {\n id: testCaseId,\n data: { eval_set_id: evalSetId },\n },\n });\n }\n\n refetchTestCases();\n setShowSelectionModal(false);\n };\n\n if (!hasEvalsAccess) {\n return (\n <div className=\"flex h-full flex-1 flex-col space-y-8 p-8\">\n <Alert variant=\"destructive\">\n <Brain className=\"h-4 w-4\" />\n <AlertDescription>\n You don't have permission to access Eval Sets. Contact your administrator to request access.\n </AlertDescription>\n </Alert>\n </div>\n );\n }\n\n if (loadingEvalSet) {\n return (\n <div className=\"flex h-full flex-1 flex-col space-y-8 p-8\">\n <Skeleton className=\"h-8 w-64\" />\n <Skeleton className=\"h-64 w-full\" />\n </div>\n );\n }\n\n const testCasesList = testCasesData?.test_casesPagination?.items || [];\n\n return (\n <div className=\"flex h-full flex-1 flex-col space-y-8 p-8\">\n {/* Header with gradient accent */}\n <div className=\"relative\">\n <div className=\"absolute inset-0 bg-primary/5 rounded-lg blur-xl\" />\n <div className=\"relative flex items-center justify-between p-6 border rounded-lg bg-card/50 backdrop-blur-sm\">\n <div className=\"flex items-center gap-4\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => router.push(\"/evals\")}\n >\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-lg bg-primary\">\n <Sparkles className=\"h-5 w-5 text-primary-foreground\" />\n </div>\n <div>\n <h2 className=\"text-2xl font-bold tracking-tight\">Edit Eval Set</h2>\n <p className=\"text-muted-foreground\">\n Configure test cases for this evaluation set.\n </p>\n </div>\n </div>\n </div>\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n onClick={() => router.push(`/evals/${evalSetId}/runs`)}\n >\n <Play className=\"mr-2 h-4 w-4\" />\n View Runs\n </Button>\n {canWrite && (\n <Button onClick={handleSave} disabled={updating}>\n {updating ? (\n <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n ) : (\n <Save className=\"mr-2 h-4 w-4\" />\n )}\n Save Changes\n </Button>\n )}\n </div>\n </div>\n </div>\n\n {/* Basic Info */}\n <Card className=\"shadow-lg\">\n <CardHeader className=\"border-b bg-accent/50\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-lg bg-primary/10\">\n <FileText className=\"h-4 w-4 text-primary\" />\n </div>\n <div>\n <CardTitle>Basic Information</CardTitle>\n <CardDescription>\n Edit the name and description of this eval set.\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-4 pt-6\">\n <div className=\"grid gap-2\">\n <Label htmlFor=\"name\" className=\"text-sm font-semibold\">Name *</Label>\n <Input\n id=\"name\"\n placeholder=\"Eval set name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n disabled={!canWrite}\n />\n </div>\n <div className=\"grid gap-2\">\n <Label htmlFor=\"description\" className=\"text-sm font-semibold\">Description</Label>\n <Textarea\n id=\"description\"\n placeholder=\"Describe what this eval set tests...\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n disabled={!canWrite}\n rows={3}\n />\n </div>\n </CardContent>\n </Card>\n\n {/* Test Cases */}\n <Card className=\"shadow-lg\">\n <CardHeader className=\"border-b bg-accent/50\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-lg bg-primary/10\">\n <ListChecks className=\"h-4 w-4 text-primary\" />\n </div>\n <div>\n <CardTitle>Test Cases</CardTitle>\n <CardDescription>\n Add up to 500 test cases to this eval set.{\" \"}\n <Badge variant=\"secondary\" className=\"ml-1\">\n {testCasesList.length}/500\n </Badge>\n </CardDescription>\n </div>\n </div>\n {canWrite && (\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setShowCreateModal(true)}\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n Create New\n </Button>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => setShowSelectionModal(true)}\n disabled={testCases.length >= 500}\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n Add Existing\n </Button>\n </div>\n )}\n </div>\n </CardHeader>\n <CardContent className=\"pt-6\">\n {testCasesList.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <div className=\"p-4 rounded-full bg-primary/10 mb-4\">\n <ListChecks className=\"h-8 w-8 text-primary\" />\n </div>\n <h3 className=\"text-lg font-semibold mb-2\">No test cases yet</h3>\n <p className=\"text-muted-foreground max-w-sm\">\n Click \"Create New\" or \"Add Existing\" to start building your evaluation set.\n </p>\n </div>\n ) : (\n <div className=\"space-y-3\">\n {testCasesList.map((testCase: any) => (\n <div\n key={testCase.id}\n className=\"group relative flex items-center justify-between p-4 border rounded-lg transition-all hover:shadow-md hover:border-primary/50 hover:scale-[1.01] hover:bg-accent/30\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <div className=\"p-1.5 rounded bg-primary/10\">\n <FileText className=\"h-3.5 w-3.5 text-primary\" />\n </div>\n <span className=\"font-semibold\">{testCase.name}</span>\n </div>\n {testCase.description && (\n <p className=\"text-sm text-muted-foreground mt-2 ml-8\">\n {testCase.description}\n </p>\n )}\n </div>\n {canWrite && (\n <div className=\"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n setEditingTestCase(testCase);\n setShowCreateModal(true);\n }}\n className=\"hover:bg-primary/10\"\n >\n <Edit2 className=\"mr-1 h-3.5 w-3.5\" />\n Edit\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handleRemoveTestCase(testCase.id)}\n className=\"hover:bg-destructive/10 hover:text-destructive\"\n >\n <X className=\"mr-1 h-3.5 w-3.5\" />\n Remove\n </Button>\n </div>\n )}\n </div>\n ))}\n </div>\n )}\n </CardContent>\n </Card>\n\n {/* Modals */}\n <TestCaseSelectionModal\n open={showSelectionModal}\n onClose={() => setShowSelectionModal(false)}\n onSelect={handleAddTestCases}\n excludeIds={testCases}\n />\n\n <TestCaseModal\n open={showCreateModal}\n onClose={() => setShowCreateModal(false)}\n evalSetId={evalSetId}\n onSuccess={() => {\n setShowCreateModal(false);\n // Refetch to get the new test case in the list\n refetchTestCases();\n refetch();\n }}\n testCase={editingTestCase}\n />\n\n {/* Remove Test Case Confirmation Dialog */}\n <AlertDialog open={!!testCaseToRemove} onOpenChange={(open) => !open && setTestCaseToRemove(null)}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Remove test case from eval set?</AlertDialogTitle>\n <AlertDialogDescription>\n This will remove the test case from this eval set. The test case itself will not be deleted and can be added back later.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction onClick={confirmRemoveTestCase}>Remove</AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </div>\n );\n}\n","\"use client\";\n\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"size-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ListChecks\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMyAxNyAyIDIgNC00IiAvPgogIDxwYXRoIGQ9Im0zIDcgMiAyIDQtNCIgLz4KICA8cGF0aCBkPSJNMTMgNmg4IiAvPgogIDxwYXRoIGQ9Ik0xMyAxMmg4IiAvPgogIDxwYXRoIGQ9Ik0xMyAxOGg4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/list-checks\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ListChecks = createLucideIcon('ListChecks', [\n ['path', { d: 'm3 17 2 2 4-4', key: '1jhpwq' }],\n ['path', { d: 'm3 7 2 2 4-4', key: '1obspn' }],\n ['path', { d: 'M13 6h8', key: '15sg57' }],\n ['path', { d: 'M13 12h8', key: 'h98zly' }],\n ['path', { d: 'M13 18h8', key: 'oe0vm4' }],\n]);\n\nexport default ListChecks;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Pen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTcgM2EyLjg1IDIuODMgMCAxIDEgNCA0TDcuNSAyMC41IDIgMjJsMS41LTUuNVoiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/pen\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pen = createLucideIcon('Pen', [\n ['path', { d: 'M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z', key: '5qss01' }],\n]);\n\nexport default Pen;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Play\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWdvbiBwb2ludHM9IjUgMyAxOSAxMiA1IDIxIDUgMyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/play\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Play = createLucideIcon('Play', [\n ['polygon', { points: '5 3 19 12 5 21 5 3', key: '191637' }],\n]);\n\nexport default Play;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Save\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjFINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgxMWw1IDV2MTFhMiAyIDAgMCAxLTIgMnoiIC8+CiAgPHBvbHlsaW5lIHBvaW50cz0iMTcgMjEgMTcgMTMgNyAxMyA3IDIxIiAvPgogIDxwb2x5bGluZSBwb2ludHM9IjcgMyA3IDggMTUgOCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/save\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Save = createLucideIcon('Save', [\n ['path', { d: 'M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z', key: '1owoqh' }],\n ['polyline', { points: '17 21 17 13 7 13 7 21', key: '1md35c' }],\n ['polyline', { points: '7 3 7 8 15 8', key: '8nz8an' }],\n]);\n\nexport default Save;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI4IiAvPgogIDxwYXRoIGQ9Im0yMSAyMS00LjMtNC4zIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('Search', [\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n ['path', { d: 'm21 21-4.3-4.3', key: '1qie3q' }],\n]);\n\nexport default Search;\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type { Scope } from '@radix-ui/react-context';\n\nconst CHECKBOX_NAME = 'Checkbox';\n\ntype ScopedProps<P> = P & { __scopeCheckbox?: Scope };\nconst [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\n\ntype CheckedState = boolean | 'indeterminate';\n\ntype CheckboxContextValue<State extends CheckedState | boolean = CheckedState> = {\n checked: State | boolean;\n setChecked: React.Dispatch<React.SetStateAction<State | boolean>>;\n disabled: boolean | undefined;\n control: HTMLButtonElement | null;\n setControl: React.Dispatch<React.SetStateAction<HTMLButtonElement | null>>;\n name: string | undefined;\n form: string | undefined;\n value: string | number | readonly string[];\n hasConsumerStoppedPropagationRef: React.RefObject<boolean>;\n required: boolean | undefined;\n defaultChecked: boolean | undefined;\n isFormControl: boolean;\n bubbleInput: HTMLInputElement | null;\n setBubbleInput: React.Dispatch<React.SetStateAction<HTMLInputElement | null>>;\n};\n\nconst [CheckboxProviderImpl, useCheckboxContext] =\n createCheckboxContext<CheckboxContextValue>(CHECKBOX_NAME);\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CheckboxProviderProps<State extends CheckedState = CheckedState> {\n checked?: State | boolean;\n defaultChecked?: State | boolean;\n required?: boolean;\n onCheckedChange?(checked: State | boolean): void;\n name?: string;\n form?: string;\n disabled?: boolean;\n value?: string | number | readonly string[];\n children?: React.ReactNode;\n}\n\nfunction CheckboxProvider<State extends CheckedState = CheckedState>(\n props: ScopedProps<CheckboxProviderProps<State>>\n) {\n const {\n __scopeCheckbox,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = 'on',\n // @ts-expect-error\n internal_do_not_use_render,\n } = props;\n\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME,\n });\n const [control, setControl] = React.useState<HTMLButtonElement | null>(null);\n const [bubbleInput, setBubbleInput] = React.useState<HTMLInputElement | null>(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control\n ? !!form || !!control.closest('form')\n : // We set this to true by default so that events bubble to forms without JS (SSR)\n true;\n\n const context: CheckboxContextValue<State> = {\n checked: checked,\n disabled: disabled,\n setChecked: setChecked,\n control: control,\n setControl: setControl,\n name: name,\n form: form,\n value: value,\n hasConsumerStoppedPropagationRef: hasConsumerStoppedPropagationRef,\n required: required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl: isFormControl,\n bubbleInput,\n setBubbleInput,\n };\n\n return (\n <CheckboxProviderImpl\n scope={__scopeCheckbox}\n {...(context as unknown as CheckboxContextValue<CheckedState>)}\n >\n {isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children}\n </CheckboxProviderImpl>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CheckboxTrigger';\n\ninterface CheckboxTriggerProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof Primitive.button>,\n keyof CheckboxProviderProps\n > {\n children?: React.ReactNode;\n}\n\nconst CheckboxTrigger = React.forwardRef<HTMLButtonElement, CheckboxTriggerProps>(\n (\n { __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }: ScopedProps<CheckboxTriggerProps>,\n forwardedRef\n ) => {\n const {\n control,\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput,\n } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form = control?.form;\n if (form) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form.addEventListener('reset', reset);\n return () => form.removeEventListener('reset', reset);\n }\n }, [control, setChecked]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={isIndeterminate(checked) ? 'mixed' : checked}\n aria-required={required}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...checkboxProps}\n ref={composedRefs}\n onKeyDown={composeEventHandlers(onKeyDown, (event) => {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onClick={composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => (isIndeterminate(prevChecked) ? true : !prevChecked));\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if checkbox has a bubble input and is a form control, stop\n // propagation from the button so that we only propagate one click\n // event (from the input). We propagate changes from an input so\n // that native form validation works and form events reflect\n // checkbox updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n );\n }\n);\n\nCheckboxTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Checkbox\n * -----------------------------------------------------------------------------------------------*/\n\ntype CheckboxElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CheckboxProps extends Omit<PrimitiveButtonProps, 'checked' | 'defaultChecked'> {\n checked?: CheckedState;\n defaultChecked?: CheckedState;\n required?: boolean;\n onCheckedChange?(checked: CheckedState): void;\n}\n\nconst Checkbox = React.forwardRef<CheckboxElement, CheckboxProps>(\n (props: ScopedProps<CheckboxProps>, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n\n return (\n <CheckboxProvider\n __scopeCheckbox={__scopeCheckbox}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n required={required}\n onCheckedChange={onCheckedChange}\n name={name}\n form={form}\n value={value}\n // @ts-expect-error\n internal_do_not_use_render={({ isFormControl }: CheckboxContextValue) => (\n <>\n <CheckboxTrigger\n {...checkboxProps}\n ref={forwardedRef}\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n {isFormControl && (\n <CheckboxBubbleInput\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n )}\n </>\n )}\n />\n );\n }\n);\n\nCheckbox.displayName = CHECKBOX_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'CheckboxIndicator';\n\ntype CheckboxIndicatorElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface CheckboxIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CheckboxIndicator = React.forwardRef<CheckboxIndicatorElement, CheckboxIndicatorProps>(\n (props: ScopedProps<CheckboxIndicatorProps>, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return (\n <Presence\n present={forceMount || isIndeterminate(context.checked) || context.checked === true}\n >\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n style={{ pointerEvents: 'none', ...props.style }}\n />\n </Presence>\n );\n }\n);\n\nCheckboxIndicator.displayName = INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'CheckboxBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface CheckboxBubbleInputProps extends Omit<InputProps, 'checked'> {}\n\nconst CheckboxBubbleInput = React.forwardRef<HTMLInputElement, CheckboxBubbleInputProps>(\n ({ __scopeCheckbox, ...props }: ScopedProps<CheckboxBubbleInputProps>, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput,\n } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n 'checked'\n ) as PropertyDescriptor;\n const setChecked = descriptor.set;\n\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return (\n <Primitive.input\n type=\"checkbox\"\n aria-hidden\n defaultChecked={defaultChecked ?? defaultCheckedRef.current}\n required={required}\n disabled={disabled}\n name={name}\n value={value}\n form={form}\n {...props}\n tabIndex={-1}\n ref={composedRefs}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: 'translateX(-100%)',\n }}\n />\n );\n }\n);\n\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n\nfunction isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {\n return checked === 'indeterminate';\n}\n\nfunction getState(checked: CheckedState) {\n return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createCheckboxScope,\n //\n Checkbox,\n CheckboxProvider,\n CheckboxTrigger,\n CheckboxIndicator,\n CheckboxBubbleInput,\n //\n Checkbox as Root,\n CheckboxProvider as Provider,\n CheckboxTrigger as Trigger,\n CheckboxIndicator as Indicator,\n CheckboxBubbleInput as BubbleInput,\n};\nexport type {\n CheckboxProps,\n CheckboxProviderProps,\n CheckboxTriggerProps,\n CheckboxIndicatorProps,\n CheckboxBubbleInputProps,\n CheckedState,\n};\n"],"names":["Promise","resolve","then","__webpack_require__","bind","TestCaseSelectionModal","param","data","open","onClose","onSelect","excludeIds","search","setSearch","useState","selectedIds","setSelectedIds","loading","useQuery","GET_TEST_CASES","variables","page","limit","filters","AND","name","contains","eval_set_id","eq","skip","useEffect","availableTestCases","testCases","test_casesPagination","items","filter","includes","tc","id","handleToggle","prev","x","jsx_runtime","jsx","Dialog","onOpenChange","jsxs","DialogContent","className","DialogHeader","DialogTitle","DialogDescription","div","Search","Input","placeholder","value","onChange","e","target","length","Checkbox","checked","onCheckedChange","map","Label","htmlFor","ScrollArea","Array","from","_","i","Skeleton","onClick","testCase","concat","span","small","description","DialogFooter","Button","variant","disabled","dynamic","EvalSetEditorPage","user","testCasesData","params","useParams","router","useRouter","useContext","UserContext","toast","useToast","evalSetId","setName","setDescription","setTestCases","showSelectionModal","setShowSelectionModal","showCreateModal","setShowCreateModal","testCaseToRemove","setTestCaseToRemove","editingTestCase","setEditingTestCase","hasEvalsAccess","super_admin","role","evals","canWrite","loadingEvalSet","evalSetData","refetch","GET_EVAL_SET_BY_ID","onCompleted","eval_setById","refetchTestCases","updateEvalSet","updating","useMutation","UPDATE_EVAL_SET","title","onError","error","message","handleRemoveTestCase","testCaseId","updateTestCase","updatingTestCase","UPDATE_TEST_CASE","Alert","Brain","AlertDescription","testCasesList","size","push","ArrowLeft","Sparkles","h2","p","Play","trim","Loader2","Save","Card","CardHeader","FileText","CardTitle","CardDescription","CardContent","Textarea","rows","ListChecks","Badge","Plus","h3","Edit2","X","newTestCases","Set","selectedTestCaseIds","console","log","TestCaseModal","onSuccess","AlertDialog","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","AlertDialogFooter","AlertDialogCancel","AlertDialogAction","React","ref","props","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","CheckboxPrimitive","cn","Check","displayName","createLucideIcon","d","key","Pen","points","cx","cy","r","CHECKBOX_NAME","createCheckboxContext","createCheckboxScope","createContextScope","CheckboxProviderImpl","useCheckboxContext","CheckboxProvider","__scopeCheckbox","checkedProp","children","defaultChecked","form","required","internal_do_not_use_render","setChecked","useControllableState","prop","defaultProp","caller","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","closest","context","isIndeterminate","scope","isFunction","TRIGGER_NAME","CheckboxTrigger","forwardedRef","onKeyDown","checkboxProps","composedRefs","useComposedRefs","initialCheckedStateRef","reset","current","addEventListener","removeEventListener","Primitive","button","type","getState","composeEventHandlers","event","preventDefault","prevChecked","isPropagationStopped","stopPropagation","Fragment","CheckboxBubbleInput","INDICATOR_NAME","CheckboxIndicator","forceMount","indicatorProps","Presence","present","style","pointerEvents","BUBBLE_INPUT_NAME","usePrevious","controlSize","useSize","descriptor","getOwnPropertyDescriptor","window","HTMLInputElement","prototype","set","bubbles","Event","input","indeterminate","call","dispatchEvent","defaultCheckedRef","tabIndex","position","opacity","margin","transform"],"sourceRoot":""}