@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/chunks/app/(application)/agents/page-499ac3bd1044306c.js","mappings":"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","sources":["webpack://_N_E/?50da","webpack://_N_E/./app/(application)/agents/components/agent-card.tsx","webpack://_N_E/./app/(application)/agents/components/agent-backend-selector.tsx","webpack://_N_E/./app/(application)/agents/components/create-new-agent.tsx","webpack://_N_E/./app/(application)/agents/components/create-new-agent-card.tsx","webpack://_N_E/./app/(application)/agents/page.tsx","webpack://_N_E/./components/ui/alert.tsx","webpack://_N_E/./components/ui/card.tsx","webpack://_N_E/./components/ui/checkbox.tsx","webpack://_N_E/./components/ui/label.tsx","webpack://_N_E/./components/ui/loading.tsx","webpack://_N_E/./components/ui/select.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/agents/page.tsx\");\n","\"use client\";\n\nimport { Agent } from \"@EXULU_SHARED//models/agent\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Card,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\";\nimport { Info } from \"lucide-react\";\n\ninterface AgentCardProps {\n agent: Agent;\n onSelect?: (agent: Agent) => void;\n showDetails: (agent: Agent) => void;\n}\n\nexport function AgentCard({ agent, onSelect, showDetails }: AgentCardProps) {\n\n const handleCardClick = () => {\n if (onSelect) {\n onSelect(agent);\n }\n };\n\n const handleDetailsClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n showDetails(agent);\n };\n\n // Truncate description to 200 characters\n const truncatedDescription = agent.description\n ? agent.description.length > 200\n ? agent.description.substring(0, 200) + \"...\"\n : agent.description\n : \"No description available\";\n\n return (\n <>\n <Card\n className=\"cursor-pointer hover:shadow-md transition-shadow duration-200 h-full flex flex-col pb-3\"\n onClick={handleCardClick}\n >\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start gap-3\">\n {/* Agent Profile Image */}\n <div className=\"w-20 h-20 bg-gradient-to-br from-primary/20 to-primary/5 rounded-full flex items-center justify-center flex-shrink-0 overflow-hidden\">\n {agent.image ? (\n <img\n src={agent.image}\n alt={`${agent.name?.charAt(0).toUpperCase() || 'A'}`}\n className=\"w-full h-full object-cover rounded-full\"\n />\n ) : (\n <div className=\"text-lg font-bold text-primary\">\n {agent.name?.charAt(0).toUpperCase() || 'A'}\n </div>\n )}\n </div>\n {/* Agent Info */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center justify-between mb-2\">\n <CardTitle className=\"text-lg line-clamp-1 flex-1 min-w-0\">{agent.name}</CardTitle>\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleDetailsClick}\n className=\"p-1 h-auto\"\n >\n <Info className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n <CardDescription className=\"text-sm line-clamp-2\">\n {truncatedDescription}\n </CardDescription>\n\n <Badge\n variant={agent.active ? \"default\" : \"secondary\"}\n className=\"text-xs mt-2\"\n >\n {agent.active ? \"Active\" : \"Inactive\"}\n </Badge>\n\n </div>\n </div>\n </CardHeader>\n </Card>\n </>\n );\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { AgentBackend } from \"@EXULU_SHARED/models/agent-backend\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_PROVIDERS } from \"@/queries/queries\";\nimport { Input } from \"@/components/ui/input\";\n\nexport function AgentBackendSelector({\n onSelect,\n}: any & { onSelect: (id) => void}) {\n\n const [selected, setSelected] = React.useState<AgentBackend | undefined>();\n const [searchTerm, setSearchTerm] = React.useState(\"\");\n const searchInputRef = React.useRef<HTMLInputElement>(null);\n const { loading: isLoading, error, data, refetch, previousData } = useQuery(GET_PROVIDERS, {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n });\n\n let providers: AgentBackend[] = []\n providers = data?.providers?.items || [];\n\n const filteredProviders = providers.filter((provider) =>\n `${provider.provider} - ${provider.name}`.toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n return (\n <Select\n onOpenChange={(open) => {\n if (open) {\n setTimeout(() => searchInputRef.current?.focus(), 0);\n }\n }}\n onValueChange={(value) => {\n setSelected(providers?.find((agent) => agent.id === value))\n onSelect(value);\n }}\n >\n <SelectTrigger>\n <SelectValue placeholder={selected?.name || `Select an agent backend`} />\n </SelectTrigger>\n <SelectContent>\n <div className=\"p-2\">\n <Input\n ref={searchInputRef}\n placeholder=\"Search providers...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n onKeyDown={(e) => e.stopPropagation()}\n className=\"h-8\"\n />\n </div>\n {\n isLoading ? (\n <SelectItem key=\"loading\" value=\"loading\">\n Loading...\n </SelectItem>\n ) :\n filteredProviders?.map((agent) => (\n <SelectItem key={agent.id} value={agent.id}>\n {agent.provider + \" - \" + agent.name}\n </SelectItem>\n ))\n }\n </SelectContent>\n </Select>\n );\n}\n","import { useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Loading } from \"@/components/ui/loading\";\nimport { AgentBackendSelector } from \"@/app/(application)/agents/components/agent-backend-selector\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";\nimport { Alert, AlertDescription } from \"@/components/ui/alert\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { agents, ImageStyle } from \"@/util/api\";\nimport { toast } from \"sonner\";\n\nexport function CreateNewAgent({ createAgent, createAgentResult, company, children }) {\n\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [backend, setBackend] = useState(\"\");\n const [generateImage, setGenerateImage] = useState(true);\n const [generatedImages, setGeneratedImages] = useState<string[]>([]);\n const [selectedImage, setSelectedImage] = useState<string | null>(null);\n const [imageGenerating, setImageGenerating] = useState(false);\n const [imageGenerationProgress, setImageGenerationProgress] = useState(0);\n const [imageStyle, setImageStyle] = useState<ImageStyle>(\"app_icon\");\n\n const imageStyles = [\n { value: \"origami\", label: \"Origami\" },\n { value: \"anime\", label: \"Anime\" },\n { value: \"japanese_anime\", label: \"Japanese Anime\" },\n { value: \"vaporwave\", label: \"Vaporwave\" },\n { value: \"lego\", label: \"Lego\" },\n { value: \"paper_cut\", label: \"Paper Cut\" },\n { value: \"felt_puppet\", label: \"Felt Puppet\" },\n { value: \"3d\", label: \"3D\" },\n { value: \"app_icon\", label: \"App Icon\" },\n { value: \"pixel_art\", label: \"Pixel Art\" },\n { value: \"isometric\", label: \"Isometric\" },\n ];\n\n return (\n <Dialog>\n <DialogTrigger asChild>\n {children || <Button variant=\"secondary\">Create new agent</Button>}\n </DialogTrigger>\n <DialogContent className=\"sm:max-w-[475px]\">\n <DialogHeader>\n <DialogTitle>Create a new agent</DialogTitle>\n <DialogDescription>\n Give your new agent a name and a description (optional).\n </DialogDescription>\n </DialogHeader>\n {\n !generateImage && (<div className=\"h-32 bg-gradient-to-br from-primary/20 to-primary/5 rounded-lg flex items-center justify-center\">\n <div className=\"text-4xl font-bold text-primary\">\n {name?.charAt(0).toUpperCase() || 'A'}\n </div>\n </div>)\n }\n {\n (imageGenerating) && (\n <div className=\"grid gap-4 py-4\">\n <div className=\"w-full mb-4\">\n <div className=\"space-y-4\">\n <div className=\"text-center\">\n <h3 className=\"text-lg font-semibold mb-2\">Generating your agent images...</h3>\n <p className=\"text-sm text-muted-foreground mb-4\">Creating {imageGenerationProgress}/4 image options</p>\n <div className=\"w-32 h-2 bg-muted rounded-full overflow-hidden mx-auto\">\n <div\n className=\"h-full bg-primary transition-all duration-300 ease-out\"\n style={{ width: `${(imageGenerationProgress / 4) * 100}%` }}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n {Array.from({ length: 4 }, (_, index) => (\n <div key={index} className=\"relative h-32 rounded-lg overflow-hidden border-2 border-dashed border-muted-foreground/30\">\n <div className=\"w-full h-full bg-gradient-to-br from-muted/50 to-muted/20 flex flex-col items-center justify-center\">\n {index < imageGenerationProgress ? (\n <div className=\"text-green-500\">\n <svg className=\"w-8 h-8\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clipRule=\"evenodd\" />\n </svg>\n </div>\n ) : (\n <Loading className=\"w-6 h-6 text-muted-foreground\" />\n )}\n <span className=\"text-xs text-muted-foreground mt-2\">\n {index < imageGenerationProgress ? 'Complete' : 'Generating...'}\n </span>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n }\n\n {generatedImages.length > 0 && (\n <div className=\"grid\">\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-3\">\n {generatedImages.map((image, index) => (\n <button\n key={index}\n onClick={() => setSelectedImage(image)}\n className={`relative h-32 rounded-lg overflow-hidden border-2 transition-all hover:scale-105 ${selectedImage === image ? 'border-primary ring-2 ring-primary/20' : 'border-border hover:border-primary/50'\n }`}\n >\n <img src={image} alt={`Generated option ${index + 1}`} className=\"w-full h-full object-cover\" />\n {selectedImage === image && (\n <div className=\"absolute inset-0 bg-primary/10 flex items-center justify-center\">\n <div className=\"w-6 h-6 rounded-full bg-primary flex items-center justify-center\">\n <svg className=\"w-4 h-4 text-primary-foreground\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clipRule=\"evenodd\" />\n </svg>\n </div>\n </div>\n )}\n </button>\n ))}\n </div>\n </div>\n </div>\n )}\n\n {\n !imageGenerating && generatedImages.length <= 0 && (\n <div className=\"grid gap-4 py-4\">\n <div className=\"w-full mb-4\">\n <div className=\"grid gap-2\">\n <Label htmlFor=\"name\">Name</Label>\n <Input\n onChange={(e) => {\n setName(e.target.value);\n }}\n id=\"name\"\n autoFocus\n />\n </div>\n <div className=\"grid gap-2 mt-3\">\n <Label htmlFor=\"description\">Description</Label>\n <Input\n onChange={(e) => {\n setDescription(e.target.value);\n }}\n id=\"description\"\n />\n </div>\n <div className=\"grid gap-2 mt-3\">\n <Label htmlFor=\"backend\">Backend</Label>\n <AgentBackendSelector onSelect={(id) => {\n setBackend(id)\n }} />\n </div>\n <div className=\"flex items-center space-x-2 mt-2\">\n <Checkbox\n id=\"generateImage\"\n checked={generateImage}\n onCheckedChange={(checked) => setGenerateImage(checked === true)}\n />\n <Label htmlFor=\"generateImage\" className=\"text-sm font-normal\">\n Generate AI image for this agent\n </Label>\n </div>\n {generateImage && (\n <div className=\"grid gap-2 mt-3\">\n <Label htmlFor=\"imageStyle\">Image Style</Label>\n <Select onValueChange={(value) => setImageStyle(value as typeof imageStyle)} defaultValue={imageStyle}>\n <SelectTrigger>\n <SelectValue placeholder=\"Select image style\" />\n </SelectTrigger>\n <SelectContent>\n {imageStyles.map((style) => (\n <SelectItem key={style.value} value={style.value}>\n {style.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n <Alert variant=\"info\" className=\"mt-3\">\n <AlertDescription>\n Exulu can generate a cool image for your agent if an <strong>OPENAI_IMAGE_GENERATION_API_KEY</strong> has been added to your{\" \"}\n <a href=\"/variables\" className=\"text-primary hover:underline\">\n variables page\n </a>\n .\n </AlertDescription>\n </Alert>\n </div>\n </div>\n )\n }\n\n <DialogFooter>\n <Button\n disabled={createAgentResult.loading || imageGenerating}\n onClick={async () => {\n try {\n // If we have generated images, create the agent with selected image\n if (generatedImages.length > 0 && selectedImage) {\n createAgent({\n variables: {\n name,\n description,\n rights_mode: \"private\",\n backend,\n image: selectedImage\n },\n });\n return;\n }\n\n // Validate required fields\n if (!name) {\n toast.error(\"Please fill in all fields\");\n return;\n }\n\n // If not generating images, create agent without image\n if (!generateImage) {\n createAgent({\n variables: {\n name,\n description,\n rights_mode: \"private\",\n backend,\n },\n });\n return;\n }\n\n // Start image generation process\n if (generateImage && generatedImages.length === 0) {\n setImageGenerating(true);\n setImageGenerationProgress(0);\n\n try {\n // Generate 4 images simultaneously\n const promises = Array.from({ length: 4 }, async () => {\n const response = await agents.image.generate({ name, description, style: imageStyle });\n const result = await response.json();\n setImageGenerationProgress(prev => prev + 1);\n return result.image;\n });\n\n const results = await Promise.all(promises);\n const images = results.filter(Boolean);\n setGeneratedImages(images);\n\n if (images.length > 0) {\n setSelectedImage(images[0]); // Auto-select first image\n }\n } catch (error) {\n console.error(\"Failed to generate images:\", error);\n toast.error(\"Failed to generate images. Please try again.\");\n } finally {\n setImageGenerating(false);\n }\n }\n\n } catch (error) {\n console.error(\"Failed to create agent:\", error);\n toast.error(\"Failed to create agent. Please try again.\");\n }\n }}\n type=\"submit\">\n {(generatedImages.length > 0 || !generateImage) ? 'Create Agent' : (imageGenerating ? 'Generating...' : 'Generate Images')} \n {(createAgentResult.loading || imageGenerating) && <Loading className=\"ml-2\" />}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog >\n );\n}\n","\"use client\";\n\nimport {\n Card,\n CardHeader,\n} from \"@/components/ui/card\";\nimport { CreateNewAgent } from \"./create-new-agent\";\n\ninterface CreateNewAgentCardProps {\n createAgent: any;\n createAgentResult: any;\n company: any;\n}\n\nexport function CreateNewAgentCard({ createAgent, createAgentResult, company }: CreateNewAgentCardProps) {\n return (\n <CreateNewAgent\n createAgent={createAgent}\n createAgentResult={createAgentResult}\n company={company}\n >\n <Card className=\"cursor-pointer hover:shadow-md transition-shadow duration-200 h-full flex flex-col border-dashed border-2 hover:border-primary/50\">\n <CardHeader className=\"pb-3 h-full\">\n <div className=\"w-full h-full rounded-lg flex items-center justify-center mb-4 flex-col\">\n <div className=\"text-center text-muted-foreground\">\n <p className=\"text-lg\">Create New Agent</p>\n </div>\n </div>\n </CardHeader>\n </Card>\n </CreateNewAgent>\n );\n}","\"use client\";\n\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport { useRouter } from \"next/navigation\";\nimport * as React from \"react\";\nimport { useContext, useState, useMemo } from \"react\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { AgentCard } from \"@/app/(application)/agents/components/agent-card\";\nimport { CreateNewAgentCard } from \"@/app/(application)/agents/components/create-new-agent-card\";\nimport { CREATE_AGENT, GET_AGENTS } from \"@/queries/queries\";\nimport { Agent } from \"@EXULU_SHARED//models/agent\";\nimport { Input } from \"@/components/ui/input\";\nimport { Search } from \"lucide-react\";\nimport { AgentDetailsSheet } from \"./components/agent-details-sheet\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default function AgentsPage() {\n const router = useRouter();\n const { user } = useContext(UserContext);\n const company = user.company;\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [showDetails, setShowDetails] = useState<Agent | null>(null);\n\n const { data, loading: isLoading, error } = useQuery<{\n agentsPagination: {\n items: Agent[]\n }\n }>(GET_AGENTS, {\n variables: {\n page: 1,\n limit: 100,\n filters: [],\n sort: { field: \"updatedAt\", direction: \"DESC\" },\n },\n });\n\n // Filter agents based on search query\n const filteredAgents = useMemo(() => {\n if (!data?.agentsPagination?.items) return [];\n if (!searchQuery.trim()) return data.agentsPagination.items;\n\n return data.agentsPagination.items.filter(agent =>\n agent.name.toLowerCase().includes(searchQuery.toLowerCase())\n );\n }, [data, searchQuery]);\n\n const [createAgent, createAgentResult] = useMutation(\n CREATE_AGENT,\n {\n onCompleted: (data: {\n agentsCreateOne: { item: { id: string, type: \"chat\" } };\n }) => {\n console.log(data);\n router.push(`/agents/edit/${data?.agentsCreateOne?.item?.id}`, {\n scroll: false,\n });\n },\n },\n );\n\n const handleAgentSelect = (agent: Agent) => {\n router.push(`/agents/edit/${agent.id}`, { scroll: false });\n };\n\n\n if (error) {\n return (\n <div className=\"container mx-auto py-12 text-center\">\n <h1 className=\"text-2xl font-bold mb-4\">Error loading agents</h1>\n <p className=\"text-muted-foreground\">\n There was an error loading your agents. Please try again.\n </p>\n </div>\n );\n }\n\n return (\n <div className=\"container mx-auto py-12 px-6\">\n <div className=\"mb-8\">\n <h1 className=\"text-3xl font-bold mb-2\">Agents</h1>\n <p className=\"text-muted-foreground mb-6\">\n Manage your AI agents and create new ones.\n </p>\n {/* Search Bar */}\n <div className=\"relative max-w-md\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n type=\"text\"\n placeholder=\"Search agents...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-10\"\n />\n </div>\n </div>\n\n {isLoading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6\">\n {/* Loading skeleton cards */}\n {Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"h-80 bg-muted animate-pulse rounded-lg\" />\n ))}\n </div>\n ) : (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6\">\n {/* Create new agent card */}\n <CreateNewAgentCard\n createAgent={createAgent}\n createAgentResult={createAgentResult}\n company={company}\n />\n\n {/* Agent cards */}\n {filteredAgents.map((agent: Agent) => (\n <AgentCard\n key={agent.id}\n agent={agent}\n onSelect={handleAgentSelect}\n showDetails={setShowDetails}\n />\n ))}\n </div>\n )}\n\n\n {showDetails && (\n <AgentDetailsSheet\n agentId={showDetails.id}\n open={!!showDetails}\n onOpenChange={() => setShowDetails(null)}\n />\n )}\n </div>\n );\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n info: \"border-info/50 text-info dark:border-info [&>svg]:text-info\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n));\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\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","\"use client\";\n\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import { cn } from \"@/lib/utils\";\n\nexport const Loading = ({ className }: { className?: null | string }) => {\n return (\n <svg\n aria-hidden=\"true\"\n role=\"status\"\n className={cn(\"inline w-4 h-4 text-white animate-spin fill-inherit\", className)}\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n className=\"fill-inherit opacity-20\"\n ></path>\n <path\n d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n className=\"fill-inherit\"\n ></path>\n </svg>\n );\n};\n","\"use client\";\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUp className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDown className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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 position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n"],"names":["Promise","resolve","then","__webpack_require__","bind","AgentCard","param","agent","onSelect","showDetails","truncatedDescription","description","length","substring","jsx_runtime","jsx","Fragment","Card","className","onClick","CardHeader","jsxs","div","image","img","src","alt","concat","name","charAt","toUpperCase","CardTitle","Button","variant","size","e","stopPropagation","Info","CardDescription","Badge","active","AgentBackendSelector","data","selected","setSelected","React","searchTerm","setSearchTerm","searchInputRef","loading","isLoading","error","refetch","previousData","useQuery","GET_PROVIDERS","fetchPolicy","nextFetchPolicy","providers","filteredProviders","items","filter","provider","toLowerCase","includes","Select","onOpenChange","open","setTimeout","current","focus","onValueChange","find","id","value","SelectTrigger","SelectValue","placeholder","SelectContent","Input","ref","onChange","target","onKeyDown","SelectItem","map","CreateNewAgent","createAgent","createAgentResult","company","children","setName","useState","setDescription","backend","setBackend","generateImage","setGenerateImage","generatedImages","setGeneratedImages","selectedImage","setSelectedImage","imageGenerating","setImageGenerating","imageGenerationProgress","setImageGenerationProgress","imageStyle","setImageStyle","Dialog","DialogTrigger","asChild","DialogContent","DialogHeader","DialogTitle","DialogDescription","h3","p","style","width","Array","from","_","index","svg","fill","viewBox","path","fillRule","d","clipRule","Loading","span","button","Label","htmlFor","autoFocus","Checkbox","checked","onCheckedChange","defaultValue","imageStyles","label","Alert","AlertDescription","strong","a","href","DialogFooter","disabled","variables","rights_mode","toast","promises","response","agents","generate","result","json","prev","images","results","all","Boolean","console","type","CreateNewAgentCard","dynamic","AgentsPage","router","useRouter","user","useContext","UserContext","searchQuery","setSearchQuery","setShowDetails","GET_AGENTS","page","limit","filters","sort","field","direction","filteredAgents","useMemo","agentsPagination","trim","useMutation","CREATE_AGENT","onCompleted","log","push","agentsCreateOne","item","scroll","handleAgentSelect","h1","Search","i","AgentDetailsSheet","agentId","alertVariants","cva","variants","default","destructive","info","defaultVariants","props","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","role","cn","displayName","AlertTitle","h5","CardContent","CardFooter","CheckboxPrimitive","Check","labelVariants","LabelPrimitive","aria-hidden","xmlns","SelectPrimitive","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","position","SelectLabel","SelectSeparator"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4709],{395:function(e,t,s){Promise.resolve().then(s.bind(s,99593))},99593:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return eC},dynamic:function(){return ek}});var n=s(57437),l=s(2265),a=s(65613),r=s(7211),i=s(12199),o=s(41658),d=s(80834),c=s(13832),u=s(20653),m=s(94508);let x=e=>{let{size:t=16}=e;return(0,n.jsxs)("svg",{height:t,strokeLinejoin:"round",style:{color:"currentcolor"},viewBox:"0 0 16 16",width:t,children:[(0,n.jsx)("title",{children:"Loader"}),(0,n.jsxs)("g",{clipPath:"url(#clip0_2393_1490)",children:[(0,n.jsx)("path",{d:"M8 0V4",stroke:"currentColor",strokeWidth:"1.5"}),(0,n.jsx)("path",{d:"M8 16V12",opacity:"0.5",stroke:"currentColor",strokeWidth:"1.5"}),(0,n.jsx)("path",{d:"M3.29773 1.52783L5.64887 4.7639",opacity:"0.9",stroke:"currentColor",strokeWidth:"1.5"}),(0,n.jsx)("path",{d:"M12.7023 1.52783L10.3511 4.7639",opacity:"0.1",stroke:"currentColor",strokeWidth:"1.5"}),(0,n.jsx)("path",{d:"M12.7023 14.472L10.3511 11.236",opacity:"0.4",stroke:"currentColor",strokeWidth:"1.5"}),(0,n.jsx)("path",{d:"M3.29773 14.472L5.64887 11.236",opacity:"0.6",stroke:"currentColor",strokeWidth:"1.5"}),(0,n.jsx)("path",{d:"M15.6085 5.52783L11.8043 6.7639",opacity:"0.2",stroke:"currentColor",strokeWidth:"1.5"}),(0,n.jsx)("path",{d:"M0.391602 10.472L4.19583 9.23598",opacity:"0.7",stroke:"currentColor",strokeWidth:"1.5"}),(0,n.jsx)("path",{d:"M15.6085 10.4722L11.8043 9.2361",opacity:"0.3",stroke:"currentColor",strokeWidth:"1.5"}),(0,n.jsx)("path",{d:"M0.391602 5.52783L4.19583 6.7639",opacity:"0.8",stroke:"currentColor",strokeWidth:"1.5"})]}),(0,n.jsx)("defs",{children:(0,n.jsx)("clipPath",{id:"clip0_2393_1490",children:(0,n.jsx)("rect",{fill:"white",height:"16",width:"16"})})})]})},p=e=>{let{className:t,size:s=16,...l}=e;return(0,n.jsx)("div",{className:(0,m.cn)("inline-flex animate-spin items-center justify-center",t),...l,children:(0,n.jsx)(x,{size:s})})};var h=s(27315),f=s(81103),j=s(27689),v=s(6374),g=s(44045),N=s(42042),y=s(99397),w=s(20265),b=s(24156),k=s(77992),C=s(27699),T=s(62869),z=s(1828),S=s(66070),F=s(27182),I=s(866),_=s(8014),R=s(74928),P=s(10492),M=s(35974),U=s(87393),Z=s(78361),L=s(23462);let D=L.fC,W=L.xz,A=l.forwardRef((e,t)=>{let{className:s,align:l="center",sideOffset:a=4,...r}=e;return(0,n.jsx)(L.VY,{ref:t,align:l,sideOffset:a,className:(0,m.cn)("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",s),...r})});A.displayName=L.VY.displayName;var E=s(60610);let B=l.forwardRef((e,t)=>{let{className:s,value:l,...a}=e;return(0,n.jsx)(E.fC,{ref:t,className:(0,m.cn)("relative h-4 w-full overflow-hidden rounded-full bg-secondary",s),...a,children:(0,n.jsx)(E.z$,{className:"size-full flex-1 bg-primary transition-all",style:{transform:"translateX(-".concat(100-(l||0),"%)")}})})});B.displayName=E.fC.displayName;var O=s(72543);let J=(0,l.createContext)(null),Y=()=>{let e=(0,l.useContext)(J);if(!e)throw Error("Context components must be used within Context");return e},K=e=>{let{usedTokens:t,maxTokens:s,usage:l,modelId:a,...r}=e;return(0,n.jsx)(J.Provider,{value:{usedTokens:t,maxTokens:s,usage:l,modelId:a},children:(0,n.jsx)(D,{closeDelay:0,openDelay:0,...r})})},q=()=>{let{usedTokens:e,maxTokens:t}=Y(),s=2*Math.PI*10;return(0,n.jsxs)("svg",{"aria-label":"Model context usage",height:"20",role:"img",style:{color:"currentcolor"},viewBox:"0 0 ".concat(24," ").concat(24),width:"20",children:[(0,n.jsx)("circle",{cx:12,cy:12,fill:"none",opacity:"0.25",r:10,stroke:"currentColor",strokeWidth:2}),(0,n.jsx)("circle",{cx:12,cy:12,fill:"none",opacity:"0.7",r:10,stroke:"currentColor",strokeDasharray:"".concat(s," ").concat(s),strokeDashoffset:s*(1-e/t),strokeLinecap:"round",strokeWidth:2,style:{transformOrigin:"center",transform:"rotate(-90deg)"}})]})},H=e=>{let{children:t,...s}=e,{usedTokens:l,maxTokens:a}=Y(),r=new Intl.NumberFormat("en-US",{style:"percent",maximumFractionDigits:1}).format(l/a);return(0,n.jsx)(W,{asChild:!0,children:null!=t?t:(0,n.jsxs)(T.z,{type:"button",variant:"ghost",...s,children:[(0,n.jsx)("span",{className:"font-medium text-muted-foreground",children:r}),(0,n.jsx)(q,{})]})})},V=e=>{let{className:t,...s}=e;return(0,n.jsx)(A,{className:(0,m.cn)("min-w-[240px] divide-y overflow-hidden p-0",t),...s})},X=e=>{let{children:t,className:s,...l}=e,{usedTokens:a,maxTokens:r}=Y(),i=a/r,o=new Intl.NumberFormat("en-US",{style:"percent",maximumFractionDigits:1}).format(i),d=new Intl.NumberFormat("en-US",{notation:"compact"}).format(a),c=new Intl.NumberFormat("en-US",{notation:"compact"}).format(r);return(0,n.jsx)("div",{className:(0,m.cn)("w-full space-y-2 p-3",s),...l,children:null!=t?t:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-3 text-xs",children:[(0,n.jsx)("p",{children:o}),(0,n.jsxs)("p",{className:"font-mono text-muted-foreground",children:[d," / ",c]})]}),(0,n.jsx)("div",{className:"space-y-2",children:(0,n.jsx)(B,{className:"bg-muted",value:100*i})})]})})},G=e=>{let{children:t,className:s,...l}=e;return(0,n.jsx)("div",{className:(0,m.cn)("w-full p-3",s),...l,children:t})},$=e=>{var t;let{className:s,children:l,...a}=e,{usage:r,modelId:i}=Y(),o=null!==(t=null==r?void 0:r.inputTokens)&&void 0!==t?t:0;if(l)return l;if(!o)return null;let d=i?(0,O.Wn)({modelId:i,usage:{input:o,output:0}}).totalUSD:void 0,c=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(null!=d?d:0);return(0,n.jsxs)("div",{className:(0,m.cn)("flex items-center justify-between text-xs",s),...a,children:[(0,n.jsx)("span",{className:"text-muted-foreground",children:"Input"}),(0,n.jsx)(es,{costText:c,tokens:o})]})},Q=e=>{var t;let{className:s,children:l,...a}=e,{usage:r,modelId:i}=Y(),o=null!==(t=null==r?void 0:r.outputTokens)&&void 0!==t?t:0;if(l)return l;if(!o)return null;let d=i?(0,O.Wn)({modelId:i,usage:{input:0,output:o}}).totalUSD:void 0,c=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(null!=d?d:0);return(0,n.jsxs)("div",{className:(0,m.cn)("flex items-center justify-between text-xs",s),...a,children:[(0,n.jsx)("span",{className:"text-muted-foreground",children:"Output"}),(0,n.jsx)(es,{costText:c,tokens:o})]})},ee=e=>{var t;let{className:s,children:l,...a}=e,{usage:r,modelId:i}=Y(),o=null!==(t=null==r?void 0:r.reasoningTokens)&&void 0!==t?t:0;if(l)return l;if(!o)return null;let d=i?(0,O.Wn)({modelId:i,usage:{reasoningTokens:o}}).totalUSD:void 0,c=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(null!=d?d:0);return(0,n.jsxs)("div",{className:(0,m.cn)("flex items-center justify-between text-xs",s),...a,children:[(0,n.jsx)("span",{className:"text-muted-foreground",children:"Reasoning"}),(0,n.jsx)(es,{costText:c,tokens:o})]})},et=e=>{var t;let{className:s,children:l,...a}=e,{usage:r,modelId:i}=Y(),o=null!==(t=null==r?void 0:r.cachedInputTokens)&&void 0!==t?t:0;if(l)return l;if(!o)return null;let d=i?(0,O.Wn)({modelId:i,usage:{cacheReads:o,input:0,output:0}}).totalUSD:void 0,c=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(null!=d?d:0);return(0,n.jsxs)("div",{className:(0,m.cn)("flex items-center justify-between text-xs",s),...a,children:[(0,n.jsx)("span",{className:"text-muted-foreground",children:"Cache"}),(0,n.jsx)(es,{costText:c,tokens:o})]})},es=e=>{let{tokens:t,costText:s}=e;return(0,n.jsxs)("span",{children:[void 0===t?"—":new Intl.NumberFormat("en-US",{notation:"compact"}).format(t),s?(0,n.jsxs)("span",{className:"ml-2 text-muted-foreground",children:["• ",s]}):null]})};var en=s(40519),el=s(91723),ea=s(65302),er=s(45131),ei=s(29525),eo=s(40875),ed=s(53245);let ec=e=>{let{className:t,...s}=e;return(0,n.jsx)(R.zF,{className:(0,m.cn)("not-prose mb-4 w-full rounded-md border",t),...s})},eu=e=>{let t={"input-streaming":(0,n.jsx)(en.Z,{className:"size-4 mr-2"}),"input-available":(0,n.jsx)(el.Z,{className:"size-4 animate-pulse mr-2"}),"output-available":(0,n.jsx)(ea.Z,{className:"size-4 text-green-600 mr-2"}),"output-error":(0,n.jsx)(er.Z,{className:"size-4 text-red-600 mr-2"})};return(0,n.jsxs)(M.C,{className:"rounded-full text-xs",variant:"secondary",children:[t[e],{"input-streaming":"Pending","input-available":"Running","output-available":"Completed","output-error":"Error"}[e]]})},em=e=>{let{className:t,type:s,state:l,...a}=e;return(0,n.jsxs)(R.wy,{className:(0,m.cn)("flex w-full items-center justify-between gap-4 p-3",t),...a,children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(ei.Z,{className:"size-4 text-muted-foreground"}),(0,n.jsx)("span",{className:"font-medium text-sm",children:s}),eu(l)]}),(0,n.jsx)(eo.Z,{className:"size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180"})]})},ex=e=>{let{className:t,...s}=e;return(0,n.jsx)(R.Fw,{className:(0,m.cn)("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",t),...s})},ep=e=>{let{className:t,input:s,...l}=e;return(0,n.jsxs)("div",{className:(0,m.cn)("space-y-2 overflow-hidden p-4",t),...l,children:[(0,n.jsx)("h4",{className:"font-medium text-muted-foreground text-xs uppercase tracking-wide",children:"Parameters"}),(0,n.jsx)("div",{className:"rounded-md bg-muted/50",children:(0,n.jsx)(ed.d,{code:JSON.stringify(s,null,2),language:"json"})})]})},eh=e=>{let{className:t,output:s,errorText:l,...a}=e;return s||l?(0,n.jsxs)("div",{className:(0,m.cn)("space-y-2 p-4",t),...a,children:[(0,n.jsx)("h4",{className:"font-medium text-muted-foreground text-xs tracking-wide",children:l?"Error":"Result"}),(0,n.jsxs)("div",{className:(0,m.cn)("overflow-x-auto rounded-md text-xs [&_table]:w-full p-5",l?"bg-destructive/10 text-destructive":"bg-muted/50 text-foreground"),children:[l&&(0,n.jsx)("div",{children:l}),s&&(0,n.jsx)("div",{children:s})]})]}):(0,n.jsx)(n.Fragment,{})};var ef=s(93022),ej=s(69836),ev=s(35629),eg=s(21827),eN=s(78298),ey=s(21391);function ew(e){var t,s,m,x,L,D,W,A,E,O,J,Y;let{session:q,agent:es}=e,[en,el]=(0,l.useState)(null),ea=l.useContext(g.E);(0,I.d)();let{theme:er}=(0,eN.F)(),[ei,eo]=(0,l.useState)(null),[ed,ec]=(0,l.useState)(null),{user:eu}=(0,l.useContext)(c.S),[em,ex]=(0,l.useState)(null),[ep,eh]=(0,l.useState)(!1),[ef,ev]=(0,l.useState)(""),[ew,ek]=(0,l.useState)([]),eC=l.useRef(null),{toast:eT}=(0,k.pm)(),[ez,eS]=(0,l.useState)({rights_mode:(null==q?void 0:q.rights_mode)||"private",users:(null==q?void 0:null===(t=q.RBAC)||void 0===t?void 0:t.users)||[],roles:(null==q?void 0:null===(s=q.RBAC)||void 0===s?void 0:s.roles)||[],projects:(null==q?void 0:null===(m=q.RBAC)||void 0===m?void 0:m.projects)||[]}),eF=(0,r.aM)(j.L5,{variables:{id:q.created_by},skip:!q.created_by}),[eI,e_]=(0,i.D)(j.r1),[eR,eP]=(0,l.useState)({totalTokens:0,reasoningTokens:0,inputTokens:0,outputTokens:0,cachedInputTokens:0});(0,r.aM)(j.N,{returnPartialData:!0,fetchPolicy:"network-only",nextFetchPolicy:"network-only",variables:{page:1,limit:50,filters:{session:{eq:q.id}}},onCompleted:e=>{(null==e?void 0:e.agent_messagesPagination)&&eW(null==e?void 0:e.agent_messagesPagination.items.map(e=>JSON.parse(e.content)))}});let{messages:eM,sendMessage:eU,status:eZ,stop:eL,regenerate:eD,setMessages:eW,addToolResult:eA}=(0,d.RJ)({sendAutomaticallyWhen:o.l0,experimental_throttle:50,async onToolCall(e){let{toolCall:t}=e;if(!t.dynamic&&"getLocation"===t.toolName){let e=["New York","Los Angeles","Chicago","San Francisco"];eA({tool:"confirm-tool-call",toolCallId:t.toolCallId,output:e[Math.floor(Math.random()*e.length)]})}},onError:e=>{console.log("error!!",null==e?void 0:e.message);try{let{message:t}=JSON.parse(null==e?void 0:e.message);el(t)}catch(t){el(e.message)}},transport:new o.PD({api:"".concat(null==ea?void 0:ea.backend).concat(es.slug,"/").concat(es.id),prepareSendMessagesRequest:async e=>{let{messages:t,id:s,body:n}=e,l=await (0,v.LP)();if(!l)throw Error("No valid session token available.");return{body:{...n,message:t[t.length-1],id:s,session:q.id},headers:{User:eu.id,Session:q.id,Authorization:"Bearer ".concat(l),Stream:"true"}}}})});(0,l.useEffect)(()=>{let e=null==eM?void 0:eM.reduce((e,t)=>{let s=t.metadata;return e+((null==s?void 0:s.totalTokens)||0)},0),t=null==eM?void 0:eM.reduce((e,t)=>{let s=t.metadata;return e+((null==s?void 0:s.reasoningTokens)||0)},0);eP({totalTokens:e,reasoningTokens:t,inputTokens:null==eM?void 0:eM.reduce((e,t)=>{let s=t.metadata;return e+((null==s?void 0:s.inputTokens)||0)},0),outputTokens:null==eM?void 0:eM.reduce((e,t)=>{let s=t.metadata;return e+((null==s?void 0:s.outputTokens)||0)},0),cachedInputTokens:null==eM?void 0:eM.reduce((e,t)=>{let s=t.metadata;return e+((null==s?void 0:s.cachedInputTokens)||0)},0)})},[eM]);let eE=(0,l.useMemo)(()=>{let e=(null==eM?void 0:eM.filter(e=>"user"===e.role))||[],t=(null==eM?void 0:eM.filter(e=>"assistant"===e.role))||[];return e.length>=1&&t.length>=1},[eM]),eB=async(e,t)=>{e.preventDefault(),eU({text:ef,files:ei||[]},{body:{disabledTools:ew}}),ev("")},eO=e=>{ek(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},eJ=(0,U.I)(q,eu),eY=async e=>{eo(await Promise.all(e.map(async e=>{if(!e.s3key){let t="";return Object.entries(e).forEach(e=>{let[s,n]=e;t+="".concat(s,": ").concat(n,"\n")}),{type:"file",mediaType:e.type,filename:e.name,url:"data:text/plain;base64,".concat(btoa(t))}}return{type:"file",mediaType:e.type,filename:e.name,url:await (0,Z.NF)(e.s3key)}})))};return(0,l.useEffect)(()=>{if(!ed){eo(null);return}eY(ed.map(e=>({s3key:e,name:e,type:"file"})))},[ed]),(0,n.jsx)("div",{className:"flex flex-col w-full",children:(0,n.jsx)("div",{className:"mx-auto relative size-full",children:(0,n.jsxs)("div",{className:"flex h-full w-full",children:[(0,n.jsxs)("div",{className:"flex flex-col flex-1 pb-6",children:[(0,n.jsxs)(F.ri,{className:"overflow-y-hidden",children:[eE?(0,n.jsxs)("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",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,n.jsx)(N.Z,{className:"w-4 h-4"}),"Turn this conversation into a reusable workflow"]}),(0,n.jsxs)(T.z,{variant:"outline",size:"sm",onClick:()=>eh(!0),children:[(0,n.jsx)(y.Z,{className:"w-4 h-4 mr-2"}),"Save as Workflow"]})]}):null,es.maxContextLength?(0,n.jsx)(f.pn,{children:(0,n.jsxs)(f.u,{children:[(0,n.jsx)(f.aJ,{asChild:!0,children:(0,n.jsxs)("div",{className:"absolute w-full ".concat(eE?"top-10":"top-0"),children:[(0,n.jsx)(B,{className:"w-full rounded-none",value:eR.totalTokens/es.maxContextLength*100}),(0,n.jsxs)("div",{className:"justify-between flex felx-row",children:[(0,n.jsx)("div",{}),(0,n.jsxs)(K,{maxTokens:es.maxContextLength||0,usedTokens:eR.totalTokens,usage:{inputTokens:eR.inputTokens,outputTokens:eR.outputTokens,totalTokens:eR.totalTokens,cachedInputTokens:eR.cachedInputTokens,reasoningTokens:eR.reasoningTokens},children:[(0,n.jsx)(H,{}),(0,n.jsxs)(V,{children:[(0,n.jsx)(X,{}),(0,n.jsxs)(G,{children:[(0,n.jsx)($,{}),(0,n.jsx)(Q,{}),(0,n.jsx)(ee,{}),(0,n.jsx)(et,{})]})]})]})]})]})}),(0,n.jsx)(f._v,{children:(0,n.jsxs)("p",{children:[Intl.NumberFormat("en-US").format(eR.totalTokens)," / ",Intl.NumberFormat("en-US").format(es.maxContextLength)," tokens in the context window used."]})})]})}):null,(null==eM?void 0:eM.length)===0?(0,n.jsx)("div",{className:"size-full flex justify-center items-center",children:(0,n.jsxs)("div",{className:"flex flex-col gap-4 items-center max-w-2xl w-full px-4 my-auto",children:[(0,n.jsx)(ey.default,{alt:"Logo",width:120,height:120,className:"h-30 w-40 object-contain"}),(0,n.jsx)("p",{className:"text-center text-lg text-muted-foreground",children:"How can I help you today?"}),(0,n.jsx)(eg.Z,{agent:es,status:eZ,className:"w-80"}),(0,n.jsxs)(S.Zb,{className:"w-full mb-6",children:[(0,n.jsxs)(S.Ol,{className:"text-center",children:[(0,n.jsxs)(S.ll,{className:"flex items-center justify-center gap-2",children:[(0,n.jsx)(N.Z,{className:"w-5 h-5"}),"Create Reusable Workflows"]}),(0,n.jsx)(S.SZ,{children:"Turn your conversations into templates that can be reused with different inputs. Perfect for recurring tasks and processes."})]}),(0,n.jsx)(S.aY,{className:"text-center",children:(0,n.jsxs)(T.z,{variant:"outline",size:"sm",disabled:!0,className:"text-muted-foreground",children:[(0,n.jsx)(y.Z,{className:"w-4 h-4 mr-2"}),"Save as Workflow",(0,n.jsx)("span",{className:"ml-2 text-xs",children:"(Available after chatting)"})]})})]})]})}):null,(0,n.jsxs)(F.iG,{className:"px-6",children:[(null==eM?void 0:eM.length)>0&&(0,n.jsx)(ej.K,{messages:eM,config:{marginTopFirstMessage:"mt-12"},status:eZ,onRegenerate:eD,onAddToolResult:eA,UntypedToolPartComponent:eb,addToContext:e=>{ec([...ed||[],e])},writeAccess:eJ}),"streaming"===eZ?(0,n.jsx)(p,{}):null]})]}),!eJ&&(0,n.jsx)("div",{className:"px-6 mx-auto mt-3",children:(0,n.jsx)(M.C,{variant:"outline",children:"Read access only"})}),en&&(0,n.jsx)("div",{className:"mx-5",children:(0,n.jsxs)(a.bZ,{className:"mb-3",variant:"destructive",children:[(0,n.jsx)(u.LPM,{className:"size-4"}),(0,n.jsx)(a.Cd,{children:"Error"}),(0,n.jsx)(a.X,{children:en})]})}),eJ&&(0,n.jsxs)("form",{onSubmit:eB,className:"px-6 border-input border rounded flex mx-5 p-5 flex-col gap-2",children:[(0,n.jsxs)("div",{className:"items-center flex relative gap-2 w-full",children:[(null==ea?void 0:null===(x=ea.fileUploads)||void 0===x?void 0:x.s3endpoint)&&(0,n.jsx)(Z.ZP,{id:"chat-".concat(q.id),selectionLimit:10,allowedFileTypes:[...(null===(L=es.capabilities)||void 0===L?void 0:L.audio)||[],...(null===(D=es.capabilities)||void 0===D?void 0:D.video)||[],...(null===(W=es.capabilities)||void 0===W?void 0:W.files)||[],...(null===(A=es.capabilities)||void 0===A?void 0:A.images)||[]],dependencies:[],onConfirm:e=>{ec(e)}}),(0,n.jsx)(h.Z,{autoComplete:"off",autoFocus:!0,minRows:1,value:ef,ref:eC,onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),eB(e))},onChange:e=>ev(e.target.value),name:"message",placeholder:"Ask me anything...",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"}),"streaming"!==eZ?(0,n.jsx)(T.z,{className:"shrink-0",variant:"secondary",size:"icon",disabled:"submitted"===eZ||!(null==ef?void 0:ef.trim()),children:(0,n.jsx)(w.Z,{className:" size-6 text-muted-foreground"})}):(0,n.jsx)(T.z,{className:"shrink-0",variant:"secondary",size:"icon",onClick:eL,children:(0,n.jsx)(u.wNq,{className:"size-6 text-muted-foreground"})})]}),(0,n.jsx)("div",{className:"grid grid-cols-3 sm:grid-cols-4 gap-3",children:null==ed?void 0:ed.map(e=>(0,n.jsx)(Z.jU,{s3Key:e,disabled:!0,active:!1,onRemove:()=>{ec(null==ed?void 0:ed.filter(t=>t!==e))}}))})]}),(0,n.jsx)(C.x,{isOpen:ep,onClose:()=>eh(!1),messages:eM||[],sessionTitle:q.title})]}),eJ&&(0,n.jsxs)("div",{className:"w-80 border-l bg-muted/20 p-4 space-y-4",children:[(null==eM?void 0:eM.length)>0&&(0,n.jsx)("div",{children:(0,n.jsx)(eg.Z,{agent:es,status:eZ,className:"w-80"})}),(0,n.jsx)("div",{children:(0,n.jsx)("p",{className:"text-sm font-medium text-center",children:es.name})}),es.description&&(0,n.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:es.description}),(0,n.jsx)("hr",{className:"my-2"}),(0,n.jsx)("div",{className:"mt-1",children:(0,n.jsxs)("div",{className:"border rounded",children:[eF.loading&&(0,n.jsxs)("div",{className:"flex flex-row justify-between p-3",children:[(0,n.jsx)("p",{className:"text-sm font-medium",children:"Session created by"}),(0,n.jsx)(P.g,{className:"ml-2"})]}),(null===(E=eF.data)||void 0===E?void 0:E.userById)&&!eF.loading&&(0,n.jsxs)("div",{className:"flex flex-row justify-between p-3",children:[(0,n.jsx)("p",{className:"text-sm font-medium",children:"Session created by"}),(0,n.jsx)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:(0,n.jsx)("p",{className:"text-sm font-medium capitalize",children:eF.data.userById.name})})]})]})}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"text-xs font-medium text-muted-foreground pt-2",children:"You can disable tools for individual messages in this session by clicking the switch:"}),(0,n.jsx)(f.pn,{children:(0,n.jsx)("div",{className:"space-y-1 pt-2",children:es.tools&&es.tools.length>0?es.tools.map(e=>{let t=!ew.includes(e.id);return(0,n.jsxs)(f.u,{children:[(0,n.jsx)(f.aJ,{asChild:!0,children:(0,n.jsxs)("div",{className:"p-2 rounded-md border text-xs bg-background flex items-center justify-between",children:[(0,n.jsx)("p",{className:"font-medium flex items-center gap-2",children:e.name}),(0,n.jsx)(z.r,{checked:t,onCheckedChange:()=>eO(e.id)})]})}),(0,n.jsx)(f._v,{children:(0,n.jsx)("p",{className:"max-w-[200px] text-wrap",children:e.description})})]},e.name)}):(0,n.jsx)("p",{className:"text-xs text-muted-foreground",children:"No tools enabled."})})})]}),(0,n.jsx)("div",{className:"mt-1",children:(0,n.jsxs)(R.zF,{className:"border rounded",children:[(0,n.jsx)(S.Ol,{className:"px-3 py-1",children:(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("div",{className:"flex flex-col",children:(0,n.jsxs)("p",{className:"text-sm font-medium",children:["Access control (",q.rights_mode,")"]})}),(0,n.jsx)(R.wy,{asChild:!0,children:(0,n.jsxs)(T.z,{variant:"ghost",size:"icon",className:"size-8",children:[(0,n.jsx)(b.Z,{className:"size-4"}),(0,n.jsx)("span",{className:"sr-only",children:"Toggle"})]})})]})}),(0,n.jsx)(R.Fw,{children:(0,n.jsxs)(S.aY,{className:"space-y-4 p-3",children:[(0,n.jsx)(_.P,{allowedModes:["private","users","roles","projects"],initialRightsMode:q.rights_mode,initialUsers:null===(O=q.RBAC)||void 0===O?void 0:O.users,initialRoles:null===(J=q.RBAC)||void 0===J?void 0:J.roles,initialProjects:null===(Y=q.RBAC)||void 0===Y?void 0:Y.projects,onChange:(e,t,s,n)=>{eS({rights_mode:e,users:t,roles:s,projects:n})}}),(0,n.jsxs)(T.z,{disabled:e_.loading,onClick:()=>{eI({variables:{id:q.id,rights_mode:ez.rights_mode,RBAC:{users:ez.users,roles:ez.roles,projects:ez.projects}}})},children:["Save access rights ",e_.loading&&(0,n.jsx)(P.g,{className:"ml-2"})," "]})]})})]})})]})]})})})}let eb=e=>{var t,s;let{untypedToolPart:l,callId:a,addToContext:r}=e,i=l.output;console.log("output",i);let o=null===(t=l.type)||void 0===t?void 0:t.replace(/ /g,"-");return o=(null==(o=null==(o=null==o?void 0:o.replace(/tool-/g,""))?void 0:o.replace(/_/g," "))?void 0:o.charAt(0).toUpperCase())+(null==o?void 0:o.slice(1)),(0,n.jsxs)(ec,{className:"mt-3",defaultOpen:!1,children:[(0,n.jsx)(em,{className:"capitalize",type:o,state:l.state}),(0,n.jsxs)(ex,{children:[(0,n.jsx)(ep,{input:l.input}),(null==i?void 0:null===(s=i.items)||void 0===s?void 0:s.length)?(0,n.jsx)("div",{className:"grid grid-cols-3 sm:grid-cols-4 gap-3 px-4 pb-4",children:i.items.map(e=>(0,n.jsx)(Z.jU,{addToContext:e=>{r(e)},s3Key:e,disabled:!0,active:!1}))}):(0,n.jsx)(eh,{output:i?(0,n.jsx)(ev.H,{children:"string"==typeof i?i:JSON.stringify(i,null,2)}):!l.errorText&&(0,n.jsx)(ef.O,{className:"h-4 w-full"}),errorText:l.errorText})]})]},a)},ek="force-dynamic";function eC(e){let{params:t}=e,{data:s,loading:l,error:i}=(0,r.aM)(j.as,{variables:{id:t.agent}}),{data:o,loading:d,error:c}=(0,r.aM)(j.lk,{returnPartialData:!0,fetchPolicy:"network-only",nextFetchPolicy:"network-only",variables:{id:t.session}});return d||l?(0,n.jsx)("div",{children:(0,n.jsx)(ef.O,{className:"w-full h-full"})}):c||i?(0,n.jsxs)(a.bZ,{variant:"destructive",children:[(0,n.jsx)(u.LPM,{className:"size-4"}),(0,n.jsx)(a.Cd,{children:"Error"}),(0,n.jsxs)(a.X,{children:["Error loading agent ",(null==i?void 0:i.message)||(null==c?void 0:c.message),"."]})]}):(null==s?void 0:s.agentById)&&(null==o?void 0:o.agent_sessionById)?(0,n.jsx)(ew,{session:null==o?void 0:o.agent_sessionById,agent:s.agentById}):(0,n.jsxs)(a.bZ,{variant:"destructive",children:[(0,n.jsx)(u.LPM,{className:"size-4"}),(0,n.jsx)(a.Cd,{children:"Error"}),(0,n.jsx)(a.X,{children:"Agent or session not found."})]})}},27182:function(e,t,s){"use strict";s.d(t,{iG:function(){return i},ri:function(){return r}});var n=s(57437);s(62869);var l=s(94508);s(2265);var a=s(20460);let r=e=>{let{className:t,...s}=e;return(0,n.jsx)(a.h,{className:(0,l.cn)("relative flex-1 overflow-y-auto",t),initial:"smooth",resize:"smooth",role:"log",...s})},i=e=>{let{className:t,...s}=e;return(0,n.jsx)(a.h.Content,{className:(0,l.cn)("p-4",t),...s})}},69836:function(e,t,s){"use strict";s.d(t,{K:function(){return _}});var n=s(57437);s(16831);var l=s(94508);let a=e=>{let{className:t,from:s,...a}=e;return(0,n.jsx)("div",{className:(0,l.cn)("group flex w-full items-end justify-end gap-2 py-4","user"===s?"is-user flex-row-reverse justify-end":"is-assistant flex-row-reverse justify-end","[&>div]:max-w-[80%]",t),...a})},r=e=>{let{children:t,className:s,...a}=e;return(0,n.jsx)("div",{className:(0,l.cn)("flex flex-col gap-2 overflow-hidden rounded-lg py-3 text-foreground text-sm","group-[.is-user]:bg-secondary group-[.is-user]:text-primary-foreground group-[.is-user]:px-4","group-[.is-assistant]:bg-transparent group-[.is-assistant]:text-foreground",s),...a,children:(0,n.jsx)("div",{className:"is-user:dark",children:t})})};var i=s(62869),o=s(81103);let d=e=>{let{className:t,children:s,...a}=e;return(0,n.jsx)("div",{className:(0,l.cn)("flex items-center gap-1",t),...a,children:s})},c=e=>{let{tooltip:t,children:s,label:a,className:r,variant:d="ghost",size:c="sm",...u}=e,m=(0,n.jsxs)(i.z,{className:(0,l.cn)("size-9 p-1.5 text-muted-foreground hover:text-foreground",r),size:c,type:"button",variant:d,...u,children:[s,(0,n.jsx)("span",{className:"sr-only",children:a||t})]});return t?(0,n.jsx)(o.pn,{children:(0,n.jsxs)(o.u,{children:[(0,n.jsx)(o.aJ,{asChild:!0,children:m}),(0,n.jsx)(o._v,{children:(0,n.jsx)("p",{children:t})})]})}):m};var u=s(35629),m=s(80886),x=s(74928),p=s(64972),h=s(40875),f=s(2265);let j=(0,f.createContext)(null),v=()=>{let e=(0,f.useContext)(j);if(!e)throw Error("Reasoning components must be used within Reasoning");return e},g=(0,f.memo)(e=>{let{className:t,isStreaming:s=!1,open:a,defaultOpen:r=!1,onOpenChange:i,duration:o,children:d,...c}=e,[u,p]=(0,m.T)({prop:a,defaultProp:r,onChange:i}),[h,v]=(0,m.T)({prop:o,defaultProp:0}),[g,N]=(0,f.useState)(!1),[y,w]=(0,f.useState)(null);return(0,f.useEffect)(()=>{s?null===y&&w(Date.now()):null!==y&&(v(Math.round((Date.now()-y)/1e3)),w(null))},[s,y,v]),(0,f.useEffect)(()=>{if(s&&!u)p(!0);else if(!s&&u&&!r&&!g){let e=setTimeout(()=>{p(!1),N(!0)},1e3);return()=>clearTimeout(e)}},[s,u,r,p,g]),(0,n.jsx)(j.Provider,{value:{isStreaming:s,isOpen:u,setIsOpen:p,duration:h},children:(0,n.jsx)(x.zF,{className:(0,l.cn)("not-prose mb-4",t),onOpenChange:e=>{p(e)},open:u,...c,children:d})})}),N=(0,f.memo)(e=>{let{className:t,title:s="Reasoning",children:a,...r}=e,{isStreaming:i,isOpen:o,duration:d}=v();return(0,n.jsx)(x.wy,{className:(0,l.cn)("flex items-center gap-2 text-muted-foreground text-sm",t),...r,children:null!=a?a:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(p.Z,{className:"size-4"}),i||0===d?(0,n.jsx)("p",{children:"Thinking..."}):(0,n.jsxs)("p",{children:["Thought for ",d," seconds"]}),(0,n.jsx)(h.Z,{className:(0,l.cn)("size-4 text-muted-foreground transition-transform",o?"rotate-180":"rotate-0")})]})})}),y=(0,f.memo)(e=>{let{className:t,children:s,...a}=e;return(0,n.jsx)(x.Fw,{className:(0,l.cn)("mt-4 text-sm","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",t),...a,children:(0,n.jsx)(u.H,{className:"grid gap-2",children:s})})});g.displayName="Reasoning",N.displayName="ReasoningTrigger",y.displayName="ReasoningContent";var w=s(55455);let b=e=>{let{className:t,...s}=e;return(0,n.jsx)(x.zF,{className:(0,l.cn)("not-prose mb-4 text-primary text-xs",t),...s})},k=e=>{let{className:t,count:s,children:l,...a}=e;return(0,n.jsx)(x.wy,{className:"flex items-center gap-2",...a,children:null!=l?l:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("p",{className:"font-medium",children:["Used ",s," sources"]}),(0,n.jsx)(h.Z,{className:"h-4 w-4"})]})})},C=e=>{let{className:t,...s}=e;return(0,n.jsx)(x.Fw,{className:(0,l.cn)("mt-3 flex w-fit flex-col gap-2","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",t),...s})},T=e=>{let{href:t,title:s,children:l,...a}=e;return(0,n.jsx)("a",{className:"flex items-center gap-2",href:t,rel:"noreferrer",target:"_blank",...a,children:null!=l?l:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(w.Z,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"block font-medium",children:s})]})})};var z=s(52636),S=s(78867),F=s(33145),I=s(77992);function _(e){let{messages:t,status:s="idle",className:i,showActions:o=!0,onRegenerate:m,onAddToolResult:x,UntypedToolPartComponent:p,addToContext:h,writeAccess:f=!0,config:j}=e,{toast:v}=(0,I.pm)();return(0,n.jsx)(n.Fragment,{children:null==t?void 0:t.map((e,w)=>{let I=e.metadata;return t.length,(0,n.jsx)(a,{className:(0,l.cn)("assistant"===e.role&&((null==j?void 0:j.customAssistantClassnames)?null==j?void 0:j.customAssistantClassnames:""),0===w&&((null==j?void 0:j.marginTopFirstMessage)?null==j?void 0:j.marginTopFirstMessage:"mt-12"),i),from:e.role,children:(0,n.jsxs)(r,{children:[e.parts.map((t,l)=>{if("step-start"===t.type)return null;if("text"===t.type)return(0,n.jsx)("div",{children:(0,n.jsx)(u.H,{className:"chat-response-container",children:t.text})},"".concat(e.id,"-").concat(l));if("tool-askForConfirmation"===t.type&&x){let e=t.toolCallId;switch(t.state){case"input-streaming":return(0,n.jsx)("div",{children:"Loading confirmation request..."},e);case"input-available":return(0,n.jsxs)("div",{children:[t.input.message,(0,n.jsxs)("div",{children:[(0,n.jsx)("button",{onClick:()=>x({tool:"askForConfirmation",toolCallId:e,output:"Yes, confirmed"}),children:"Yes"}),(0,n.jsx)("button",{onClick:()=>x({tool:"askForConfirmation",toolCallId:e,output:"No, denied"}),children:"No"})]})]},e);case"output-available":return(0,n.jsxs)("div",{children:["Tool call allowed: ",t.output]},e);case"output-error":return(0,n.jsxs)("div",{children:["Error: ",t.errorText]},e)}}if((t.type.startsWith("tool-")||"dynamic-tool"===t.type)&&p&&h){let e=t.toolCallId;return(0,n.jsx)(p,{untypedToolPart:t,callId:e,addToContext:h},e)}if("file"===t.type){var a;if(null===(a=t.mediaType)||void 0===a?void 0:a.startsWith("image/"))return(0,n.jsx)(F.default,{src:t.url,width:300,height:300,alt:"Generated image"},"".concat(e.id,"-").concat(l))}return"source-url"===t.type?(0,n.jsxs)(b,{children:[(0,n.jsx)(k,{count:e.parts.filter(e=>"source-url"===e.type).length}),(0,n.jsx)(C,{children:e.parts.map((t,s)=>{if("source-url"===t.type)return(0,n.jsx)(T,{href:t.url,title:t.title},"".concat(e.id,"-").concat(s))})},"".concat(e.id))]},"".concat(e.id,"-").concat(l)):"reasoning"===t.type?(0,n.jsxs)(g,{className:"w-full",isStreaming:"streaming"===s,children:[(0,n.jsx)(N,{}),(0,n.jsx)(y,{children:t.text})]},"".concat(e.id,"-").concat(l)):null}),o&&"assistant"===e.role&&(0,n.jsxs)(d,{className:"mt-2",children:[m&&(0,n.jsx)(c,{onClick:()=>m(),label:"Retry",disabled:!f,children:(0,n.jsx)(z.Z,{className:"size-3"})}),(0,n.jsx)(c,{onClick:()=>{navigator.clipboard.writeText(e.parts.map(e=>(null==e?void 0:e.text)||"").join("\n")),v({title:"Copied message",description:"The message was copied to your clipboard."})},label:"Copy",children:(0,n.jsx)(S.Z,{className:"size-3"})}),(null==I?void 0:I.totalTokens)&&(0,n.jsxs)("small",{className:"text-muted-foreground",children:[Intl.NumberFormat("en-US").format(null==I?void 0:I.totalTokens)," tokens"]})]})]})},e.id)})})}},87393:function(e,t,s){"use strict";s.d(t,{I:function(){return n}});let n=(e,t)=>{var s,n,l,a,r,i;let o="private"===e.rights_mode,d="public"===e.rights_mode,c="users"===e.rights_mode,u="roles"===e.rights_mode,m=t.super_admin,x=e.created_by===t.id.toString(),p=!1;return o&&x&&(p=!0),d&&(p=!0),c&&(p=(null===(l=e.RBAC)||void 0===l?void 0:null===(n=l.users)||void 0===n?void 0:null===(s=n.find(e=>e.id===t.id))||void 0===s?void 0:s.rights)==="write"),u&&(p=(null===(i=e.RBAC)||void 0===i?void 0:null===(r=i.roles)||void 0===r?void 0:null===(a=r.find(e=>{var s;return e.id===(null===(s=t.role)||void 0===s?void 0:s.id)}))||void 0===a?void 0:a.rights)==="write"),m&&(p=!0),p}}},function(e){e.O(0,[329,6840,8310,3954,4705,3611,6989,5987,9851,7629,7093,6148,847,1942,7648,7823,8068,5799,4567,605,85,4957,7398,1785,3702,1713,9141,6152,7119,3145,5615,6373,3832,4205,3119,7699,2971,2117,1744],function(){return e(e.s=395)}),_N_E=e.O()}]);
2
+ //# sourceMappingURL=page-b600c0b270eedb7f.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/chunks/app/(application)/chat/[agent]/[session]/page-b600c0b270eedb7f.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\";\nimport { useTheme } from \"next-themes\";\nimport Logo from \"@/components/logo\";\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 { theme } = useTheme();\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 <Logo alt=\"Logo\" width={120} height={120} className=\"h-30 w-40 object-contain\" />\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","theme","useTheme","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","Logo","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","src","RefreshCcwIcon","navigator","clipboard","writeText","join","CopyIcon","small","isPrivate","isPublic","byUsers","byRoles","isAdmin","super_admin","isCreator","toString","find","u","rights"],"sourceRoot":""}