@exulu/frontend 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +98 -99
- package/dist/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/prerender-manifest.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js +3 -3
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/prompts/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +1 -1
- package/dist/.next/server/app/api/auth/[...nextauth]/route.js +2 -2
- package/dist/.next/server/app-paths-manifest.json +4 -4
- package/dist/.next/server/chunks/1051.js +2 -2
- package/dist/.next/server/chunks/2270.js +1 -0
- package/dist/.next/server/chunks/2948.js +1 -1
- package/dist/.next/server/chunks/3434.js +1 -1
- package/dist/.next/server/chunks/3575.js +1 -1
- package/dist/.next/server/chunks/5485.js +1 -0
- package/dist/.next/server/chunks/8050.js +1 -1
- package/dist/.next/server/middleware-manifest.json +5 -5
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js +2 -0
- package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js.map +1 -0
- package/dist/.next/static/chunks/1957-39a01a3915f246ab.js +2 -0
- package/dist/.next/static/chunks/1957-39a01a3915f246ab.js.map +1 -0
- package/dist/.next/static/chunks/{3750-90a213a3c7cceb29.js → 3750-f45c59ef1cc79417.js} +2 -2
- package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js.map +1 -0
- package/dist/.next/static/chunks/{7856-9fa733bdd6429ba8.js → 6066-65606593516b2a3a.js} +18 -18
- package/dist/.next/static/chunks/6066-65606593516b2a3a.js.map +1 -0
- package/dist/.next/static/chunks/{6373-7908bd5269f95aa3.js → 6373-4c5dffaf4193621c.js} +2 -2
- package/dist/.next/static/chunks/6373-4c5dffaf4193621c.js.map +1 -0
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js +2 -0
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-29794b9c33d2bf7e.js → page-4e7e02768ed1a72a.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-4e7e02768ed1a72a.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/layout-093baa26f89338bc.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/layout-093baa26f89338bc.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js +2 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-0b2d9832e5a023e7.js → page-bc859da58d8505f7.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-bc859da58d8505f7.js.map +1 -0
- package/dist/.next/static/css/c8c015815c72d053.css +4 -0
- package/dist/.next/static/css/c8c015815c72d053.css.map +1 -0
- package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
- package/dist/package.json +1 -0
- package/package.json +1 -1
- package/dist/.next/server/chunks/6623.js +0 -1
- package/dist/.next/static/chunks/1685-39351b8a15bbecab.js +0 -2
- package/dist/.next/static/chunks/1685-39351b8a15bbecab.js.map +0 -1
- package/dist/.next/static/chunks/1957-899d0d6d0d9c11fd.js +0 -2
- package/dist/.next/static/chunks/1957-899d0d6d0d9c11fd.js.map +0 -1
- package/dist/.next/static/chunks/3750-90a213a3c7cceb29.js.map +0 -1
- package/dist/.next/static/chunks/6373-7908bd5269f95aa3.js.map +0 -1
- package/dist/.next/static/chunks/7856-9fa733bdd6429ba8.js.map +0 -1
- package/dist/.next/static/chunks/8269-0e17dac508340ccf.js +0 -2
- package/dist/.next/static/chunks/8269-0e17dac508340ccf.js.map +0 -1
- package/dist/.next/static/chunks/9105-78d236e8399181e0.js +0 -2
- package/dist/.next/static/chunks/9105-78d236e8399181e0.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-29794b9c33d2bf7e.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-57021bb06089261a.js +0 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-57021bb06089261a.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/layout-42021d301fc609b6.js +0 -2
- package/dist/.next/static/chunks/app/(application)/chat/layout-42021d301fc609b6.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-841b2ed48010048e.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-841b2ed48010048e.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-c1e7e0c81ca508c3.js +0 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-c1e7e0c81ca508c3.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-0b2d9832e5a023e7.js.map +0 -1
- package/dist/.next/static/css/a181dac3df0dc7a7.css +0 -4
- package/dist/.next/static/css/a181dac3df0dc7a7.css.map +0 -1
- /package/dist/.next/static/{J23NmkaMjAJYnE0jX_kO0 → GOwerAkBncYx0J8q1TqQb}/_buildManifest.js +0 -0
- /package/dist/.next/static/{J23NmkaMjAJYnE0jX_kO0 → GOwerAkBncYx0J8q1TqQb}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/3750-90a213a3c7cceb29.js","mappings":"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","sources":["webpack://_N_E/./components/ai-elements/code-block.tsx","webpack://_N_E/./components/ai-elements/response.tsx","webpack://_N_E/./components/ui/alert.tsx","webpack://_N_E/./components/ui/collapsible.tsx","webpack://_N_E/./components/ui/tabs.tsx","webpack://_N_E/./components/ui/use-toast.ts","webpack://_N_E/./hooks/use-uppy.tsx","webpack://_N_E/./components/uppy-dashboard.tsx"],"sourcesContent":["'use client';\n\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/lib/utils';\nimport { CheckIcon, CopyIcon } from 'lucide-react';\nimport type { ComponentProps, HTMLAttributes, ReactNode } from 'react';\nimport { createContext, useContext, useState } from 'react';\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport {\n oneDark,\n oneLight,\n} from 'react-syntax-highlighter/dist/esm/styles/prism';\n\ntype CodeBlockContextType = {\n code: string;\n};\n\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n code: '',\n});\n\nexport type CodeBlockProps = HTMLAttributes<HTMLDivElement> & {\n code: string;\n language: string;\n showLineNumbers?: boolean;\n children?: ReactNode;\n};\n\nexport const CodeBlock = ({\n code,\n language,\n showLineNumbers = false,\n className,\n children,\n ...props\n}: CodeBlockProps) => (\n <CodeBlockContext.Provider value={{ code }}>\n <div\n className={cn(\n 'relative w-full overflow-hidden rounded-md border bg-background text-foreground',\n className\n )}\n {...props}\n >\n <div className=\"relative\">\n <SyntaxHighlighter\n className=\"overflow-hidden dark:hidden\"\n codeTagProps={{\n className: 'font-mono text-sm',\n }}\n customStyle={{\n margin: 0,\n padding: '1rem',\n fontSize: '0.875rem',\n background: 'hsl(var(--background))',\n color: 'hsl(var(--foreground))',\n }}\n language={language}\n lineNumberStyle={{\n color: 'hsl(var(--muted-foreground))',\n paddingRight: '1rem',\n minWidth: '2.5rem',\n }}\n showLineNumbers={showLineNumbers}\n style={oneLight}\n >\n {code}\n </SyntaxHighlighter>\n <SyntaxHighlighter\n className=\"hidden overflow-hidden dark:block\"\n codeTagProps={{\n className: 'font-mono text-sm',\n }}\n customStyle={{\n margin: 0,\n padding: '1rem',\n fontSize: '0.875rem',\n background: 'hsl(var(--background))',\n color: 'hsl(var(--foreground))',\n }}\n language={language}\n lineNumberStyle={{\n color: 'hsl(var(--muted-foreground))',\n paddingRight: '1rem',\n minWidth: '2.5rem',\n }}\n showLineNumbers={showLineNumbers}\n style={oneDark}\n >\n {code}\n </SyntaxHighlighter>\n {children && (\n <div className=\"absolute top-2 right-2 flex items-center gap-2\">\n {children}\n </div>\n )}\n </div>\n </div>\n </CodeBlockContext.Provider>\n);\n\nexport type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {\n onCopy?: () => void;\n onError?: (error: Error) => void;\n timeout?: number;\n};\n\nexport const CodeBlockCopyButton = ({\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n}: CodeBlockCopyButtonProps) => {\n const [isCopied, setIsCopied] = useState(false);\n const { code } = useContext(CodeBlockContext);\n\n const copyToClipboard = async () => {\n if (typeof window === 'undefined' || !navigator.clipboard.writeText) {\n onError?.(new Error('Clipboard API not available'));\n return;\n }\n\n try {\n await navigator.clipboard.writeText(code);\n setIsCopied(true);\n onCopy?.();\n setTimeout(() => setIsCopied(false), timeout);\n } catch (error) {\n onError?.(error as Error);\n }\n };\n\n const Icon = isCopied ? CheckIcon : CopyIcon;\n\n return (\n <Button\n className={cn('shrink-0', className)}\n onClick={copyToClipboard}\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <Icon size={14} />}\n </Button>\n );\n};\n","'use client';\n\nimport { cn } from '@/lib/utils';\nimport type { ComponentProps, HTMLAttributes } from 'react';\nimport { isValidElement, memo } from 'react';\nimport ReactMarkdown, { type Options } from 'react-markdown';\nimport rehypeKatex from 'rehype-katex';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport { CodeBlock, CodeBlockCopyButton } from './code-block';\nimport 'katex/dist/katex.min.css';\nimport hardenReactMarkdown from 'harden-react-markdown';\n\n/**\n * Parses markdown text and removes incomplete tokens to prevent partial rendering\n * of links, images, bold, and italic formatting during streaming.\n */\nfunction parseIncompleteMarkdown(text: string): string {\n if (!text || typeof text !== 'string') {\n return text;\n }\n\n let result = text;\n\n // Handle incomplete links and images\n // Pattern: [...] or ![...] where the closing ] is missing\n const linkImagePattern = /(!?\\[)([^\\]]*?)$/;\n const linkMatch = result.match(linkImagePattern);\n if (linkMatch) {\n // If we have an unterminated [ or ![, remove it and everything after\n const startIndex = result.lastIndexOf(linkMatch[1]);\n result = result.substring(0, startIndex);\n }\n\n // Handle incomplete bold formatting (**)\n const boldPattern = /(\\*\\*)([^*]*?)$/;\n const boldMatch = result.match(boldPattern);\n if (boldMatch) {\n // Count the number of ** in the entire string\n const asteriskPairs = (result.match(/\\*\\*/g) || []).length;\n // If odd number of **, we have an incomplete bold - complete it\n if (asteriskPairs % 2 === 1) {\n result = `${result}**`;\n }\n }\n\n // Handle incomplete italic formatting (__)\n const italicPattern = /(__)([^_]*?)$/;\n const italicMatch = result.match(italicPattern);\n if (italicMatch) {\n // Count the number of __ in the entire string\n const underscorePairs = (result.match(/__/g) || []).length;\n // If odd number of __, we have an incomplete italic - complete it\n if (underscorePairs % 2 === 1) {\n result = `${result}__`;\n }\n }\n\n // Handle incomplete single asterisk italic (*)\n const singleAsteriskPattern = /(\\*)([^*]*?)$/;\n const singleAsteriskMatch = result.match(singleAsteriskPattern);\n if (singleAsteriskMatch) {\n // Count single asterisks that aren't part of **\n const singleAsterisks = result.split('').reduce((acc, char, index) => {\n if (char === '*') {\n // Check if it's part of a ** pair\n const prevChar = result[index - 1];\n const nextChar = result[index + 1];\n if (prevChar !== '*' && nextChar !== '*') {\n return acc + 1;\n }\n }\n return acc;\n }, 0);\n\n // If odd number of single *, we have an incomplete italic - complete it\n if (singleAsterisks % 2 === 1) {\n result = `${result}*`;\n }\n }\n\n // Handle incomplete single underscore italic (_)\n const singleUnderscorePattern = /(_)([^_]*?)$/;\n const singleUnderscoreMatch = result.match(singleUnderscorePattern);\n if (singleUnderscoreMatch) {\n // Count single underscores that aren't part of __\n const singleUnderscores = result.split('').reduce((acc, char, index) => {\n if (char === '_') {\n // Check if it's part of a __ pair\n const prevChar = result[index - 1];\n const nextChar = result[index + 1];\n if (prevChar !== '_' && nextChar !== '_') {\n return acc + 1;\n }\n }\n return acc;\n }, 0);\n\n // If odd number of single _, we have an incomplete italic - complete it\n if (singleUnderscores % 2 === 1) {\n result = `${result}_`;\n }\n }\n\n // Handle incomplete inline code blocks (`) - but avoid code blocks (```)\n const inlineCodePattern = /(`)([^`]*?)$/;\n const inlineCodeMatch = result.match(inlineCodePattern);\n if (inlineCodeMatch) {\n // Check if we're dealing with a code block (triple backticks)\n const hasCodeBlockStart = result.includes('```');\n const codeBlockPattern = /```[\\s\\S]*?```/g;\n const completeCodeBlocks = (result.match(codeBlockPattern) || []).length;\n const allTripleBackticks = (result.match(/```/g) || []).length;\n\n // If we have an odd number of ``` sequences, we're inside an incomplete code block\n // In this case, don't complete inline code\n const insideIncompleteCodeBlock = allTripleBackticks % 2 === 1;\n\n if (!insideIncompleteCodeBlock) {\n // Count the number of single backticks that are NOT part of triple backticks\n let singleBacktickCount = 0;\n for (let i = 0; i < result.length; i++) {\n if (result[i] === '`') {\n // Check if this backtick is part of a triple backtick sequence\n const isTripleStart = result.substring(i, i + 3) === '```';\n const isTripleMiddle =\n i > 0 && result.substring(i - 1, i + 2) === '```';\n const isTripleEnd = i > 1 && result.substring(i - 2, i + 1) === '```';\n\n if (!(isTripleStart || isTripleMiddle || isTripleEnd)) {\n singleBacktickCount++;\n }\n }\n }\n\n // If odd number of single backticks, we have an incomplete inline code - complete it\n if (singleBacktickCount % 2 === 1) {\n result = `${result}\\``;\n }\n }\n }\n\n // Handle incomplete strikethrough formatting (~~)\n const strikethroughPattern = /(~~)([^~]*?)$/;\n const strikethroughMatch = result.match(strikethroughPattern);\n if (strikethroughMatch) {\n // Count the number of ~~ in the entire string\n const tildePairs = (result.match(/~~/g) || []).length;\n // If odd number of ~~, we have an incomplete strikethrough - complete it\n if (tildePairs % 2 === 1) {\n result = `${result}~~`;\n }\n }\n\n return result;\n}\n\n// Create a hardened version of ReactMarkdown\nconst HardenedMarkdown = hardenReactMarkdown(ReactMarkdown);\n\nexport type ResponseProps = HTMLAttributes<HTMLDivElement> & {\n options?: Options;\n children: Options['children'];\n allowedImagePrefixes?: ComponentProps<\n ReturnType<typeof hardenReactMarkdown>\n >['allowedImagePrefixes'];\n allowedLinkPrefixes?: ComponentProps<\n ReturnType<typeof hardenReactMarkdown>\n >['allowedLinkPrefixes'];\n defaultOrigin?: ComponentProps<\n ReturnType<typeof hardenReactMarkdown>\n >['defaultOrigin'];\n parseIncompleteMarkdown?: boolean;\n};\n\nconst components: Options['components'] = {\n ol: ({ node, children, className, ...props }) => (\n <ol className={cn('ml-4 list-outside list-decimal', className)} {...props}>\n {children}\n </ol>\n ),\n li: ({ node, children, className, ...props }) => (\n <li className={cn('py-1', className)} {...props}>\n {children}\n </li>\n ),\n ul: ({ node, children, className, ...props }) => (\n <ul className={cn('ml-4 list-outside list-disc', className)} {...props}>\n {children}\n </ul>\n ),\n hr: ({ node, className, ...props }) => (\n <hr className={cn('my-6 border-border', className)} {...props} />\n ),\n strong: ({ node, children, className, ...props }) => (\n <span className={cn('font-semibold', className)} {...props}>\n {children}\n </span>\n ),\n a: ({ node, children, className, ...props }) => (\n <a\n className={cn('font-medium text-primary underline', className)}\n rel=\"noreferrer\"\n target=\"_blank\"\n {...props}\n >\n {children}\n </a>\n ),\n h1: ({ node, children, className, ...props }) => (\n <h1\n className={cn('mt-6 mb-2 font-semibold text-3xl', className)}\n {...props}\n >\n {children}\n </h1>\n ),\n h2: ({ node, children, className, ...props }) => (\n <h2\n className={cn('mt-6 mb-2 font-semibold text-2xl', className)}\n {...props}\n >\n {children}\n </h2>\n ),\n h3: ({ node, children, className, ...props }) => (\n <h3 className={cn('mt-6 mb-2 font-semibold text-xl', className)} {...props}>\n {children}\n </h3>\n ),\n h4: ({ node, children, className, ...props }) => (\n <h4 className={cn('mt-6 mb-2 font-semibold text-lg', className)} {...props}>\n {children}\n </h4>\n ),\n h5: ({ node, children, className, ...props }) => (\n <h5\n className={cn('mt-6 mb-2 font-semibold text-base', className)}\n {...props}\n >\n {children}\n </h5>\n ),\n h6: ({ node, children, className, ...props }) => (\n <h6 className={cn('mt-6 mb-2 font-semibold text-sm', className)} {...props}>\n {children}\n </h6>\n ),\n table: ({ node, children, className, ...props }) => (\n <div className=\"my-4 overflow-x-auto\">\n <table\n className={cn('w-full border-collapse border border-border', className)}\n {...props}\n >\n {children}\n </table>\n </div>\n ),\n thead: ({ node, children, className, ...props }) => (\n <thead className={cn('bg-muted/50', className)} {...props}>\n {children}\n </thead>\n ),\n tbody: ({ node, children, className, ...props }) => (\n <tbody className={cn('divide-y divide-border', className)} {...props}>\n {children}\n </tbody>\n ),\n tr: ({ node, children, className, ...props }) => (\n <tr className={cn('border-border border-b', className)} {...props}>\n {children}\n </tr>\n ),\n th: ({ node, children, className, ...props }) => (\n <th\n className={cn('px-4 py-2 text-left font-semibold text-sm', className)}\n {...props}\n >\n {children}\n </th>\n ),\n td: ({ node, children, className, ...props }) => (\n <td className={cn('px-4 py-2 text-sm', className)} {...props}>\n {children}\n </td>\n ),\n blockquote: ({ node, children, className, ...props }) => (\n <blockquote\n className={cn(\n 'my-4 border-muted-foreground/30 border-l-4 pl-4 text-muted-foreground italic',\n className\n )}\n {...props}\n >\n {children}\n </blockquote>\n ),\n code: ({ node, className, ...props }) => {\n const inline = node?.position?.start.line === node?.position?.end.line;\n\n if (!inline) {\n return <code className={className} {...props} />;\n }\n\n return (\n <code\n className={cn(\n 'rounded bg-muted px-1.5 py-0.5 font-mono text-sm',\n className\n )}\n {...props}\n />\n );\n },\n pre: ({ node, className, children }) => {\n let language = 'javascript';\n\n if (typeof node?.properties?.className === 'string') {\n language = node.properties.className.replace('language-', '');\n }\n\n // Extract code content from children safely\n let code = '';\n if (\n isValidElement(children) &&\n children.props &&\n typeof children.props.children === 'string'\n ) {\n code = children.props.children;\n } else if (typeof children === 'string') {\n code = children;\n }\n\n return (\n <CodeBlock\n className={cn('my-4 h-auto', className)}\n code={code}\n language={language}\n >\n <CodeBlockCopyButton\n onCopy={() => console.log('Copied code to clipboard')}\n onError={() => console.error('Failed to copy code to clipboard')}\n />\n </CodeBlock>\n );\n },\n};\n\nexport const Response = memo(\n ({\n className,\n options,\n children,\n allowedImagePrefixes,\n allowedLinkPrefixes,\n defaultOrigin,\n parseIncompleteMarkdown: shouldParseIncompleteMarkdown = true,\n ...props\n }: ResponseProps) => {\n // Parse the children to remove incomplete markdown tokens if enabled\n const parsedChildren =\n typeof children === 'string' && shouldParseIncompleteMarkdown\n ? parseIncompleteMarkdown(children)\n : children;\n\n return (\n <div\n className={cn(\n 'size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0',\n className\n )}\n {...props}\n >\n <HardenedMarkdown\n allowedImagePrefixes={allowedImagePrefixes ?? ['*']}\n allowedLinkPrefixes={allowedLinkPrefixes ?? ['*']}\n components={components}\n defaultOrigin={defaultOrigin}\n rehypePlugins={[rehypeKatex]}\n remarkPlugins={[remarkGfm, remarkMath]}\n {...options}\n >\n {parsedChildren}\n </HardenedMarkdown>\n </div>\n );\n },\n (prevProps, nextProps) => prevProps.children === nextProps.children\n);\n\nResponse.displayName = 'Response';\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","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","\"use client\";\n\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","\"use client\";\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","import { useEffect, useState, useContext } from \"react\";\nimport Uppy from \"@uppy/core\";\nimport AwsS3 from \"@uppy/aws-s3\";\nimport \"@uppy/core/dist/style.min.css\";\nimport \"@uppy/dashboard/dist/style.min.css\";\nimport '@uppy/core/dist/style.min.css';\nimport '@uppy/dashboard/dist/style.min.css';\nimport { getToken } from \"@/util/api\";\nimport { ConfigContext } from \"@/components/config-context\";\n\ninterface InitializeOptions {\n backend: string;\n callbacks?: {\n uploadSuccess?: (response: {\n file: any | null;\n url: string\n key: string\n }) => void;\n };\n fileKey?: string;\n fileKeyPrefix?: string;\n maxNumberOfFiles?: number;\n uppyOptions?: {\n id?: string;\n allowedFileTypes: string[];\n };\n useName?: boolean;\n}\n\nexport const initializeUppy = async (options: InitializeOptions): Promise<Uppy> => {\n if (!options.backend) {\n throw new Error(\"No backend set.\")\n }\n const { callbacks, maxNumberOfFiles, uppyOptions } = options || {};\n const { uploadSuccess } = callbacks || {};\n const { allowedFileTypes, id } = uppyOptions || {};\n const token = await getToken()\n\n const uppy = new Uppy({\n autoProceed: true,\n debug: false,\n id: id || \"uppy\",\n restrictions: {\n maxNumberOfFiles: maxNumberOfFiles || 5,\n allowedFileTypes: allowedFileTypes || [\".heic\", \".jpg\", \".jpeg\", \".png\", \".webp\", \".svg\"],\n }\n })\n .use(AwsS3, {\n id: \"Exulu\",\n endpoint: options.backend,\n headers: { \n Authorization: `Bearer ${token}`,\n Session: localStorage.getItem(\"session\") ?? \"\",\n }\n })\n .on(\"file-added\", async (file) => {\n console.debug(\"added\", file);\n })\n .on(\"upload-error\", (file, error) => {\n if (!file?.id) {\n return;\n }\n uppy.removeFile(file?.id);\n console.error(\"error\", error);\n })\n .on(\"upload-success\", (file, response) => {\n if (!response.uploadURL) {\n return;\n }\n if (uploadSuccess) {\n console.log(\"response\", response)\n uploadSuccess({\n file: file,\n key: response.uploadURL.split(\"/\").pop() || \"\",\n url: response.uploadURL,\n });\n }\n });\n\n return uppy;\n};\n\nfunction useUppy(options: InitializeOptions, deps: any[] = []) {\n const configContext = useContext(ConfigContext);\n const [uppy, setUppy] = useState<Uppy | undefined>(undefined);\n useEffect(() => {\n const initUppy = async () => {\n const uppyInstance = await initializeUppy({\n ...options,\n backend: configContext?.backend || \"\",\n });\n setUppy(uppyInstance);\n };\n initUppy()\n return () => {\n if (uppy) {\n uppy.destroy();\n setUppy(undefined);\n }\n };\n }, [...deps]);\n\n return uppy;\n}\n\nexport default useUppy;\n","import useUppy from \"@/hooks/use-uppy\";\nimport { Dashboard } from '@uppy/react';\nimport { useContext, useEffect, useState } from \"react\"\nimport { X, File, ImageIcon, FileText, FilePlus, Download, LoaderIcon, FileWarning, Upload, PlusSquareIcon, EyeIcon, PlusIcon, ChevronRightIcon, ChevronLeftIcon } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport '@uppy/core/dist/style.min.css';\nimport '@uppy/dashboard/dist/style.min.css';\nimport { files, S3FileListOutput } from \"@/util/api\"\nimport { useTheme } from \"next-themes\";\nimport { ConfigContext } from \"./config-context\";\nimport { useQuery as useTanstackQuery, useMutation as useTanstackMutation } from \"@tanstack/react-query\";\nimport { Loading } from \"./ui/loading\";\nimport { allFileTypes } from \"@/types/models/agent\";\nimport { Input } from \"./ui/input\";\nimport { DoubleArrowLeftIcon } from \"@radix-ui/react-icons\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"./ui/card\";\nimport { Skeleton } from \"./ui/skeleton\";\n\nexport function FileDataCard({ s3key, children }: { s3key: string, children?: React.ReactNode }) {\n const { data, isLoading, error, refetch } = useTanstackQuery({\n queryKey: ['fileObject', s3key],\n queryFn: async () => {\n if (!s3key) {\n return null;\n }\n const result = await files.object(s3key);\n return result;\n },\n enabled: s3key !== undefined && s3key !== null,\n })\n\n useEffect(() => {\n if (s3key) {\n refetch();\n }\n }, [s3key]);\n\n if (!s3key) {\n return <Card>\n <CardContent className=\"p-3 flex\">\n <p className=\"text-sm text-muted-foreground m-auto\">No file selected</p>\n {children}\n </CardContent>\n </Card>;\n }\n\n return <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm truncate\">{s3key.split(\"_EXULU_\").pop()}</CardTitle>\n </CardHeader>\n <CardContent className=\"pt-0\">\n {\n isLoading && (\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-2/3\" />\n </div>\n )\n }\n {!isLoading && data && (\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span className=\"capitalize\">{data?.ContentType.split(\"/\").pop()}</span>\n <span>{(data?.ContentLength / 1024 / 1024).toFixed(2)} MB</span>\n </div>\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span>Last modified: {new Date(data?.LastModified).toLocaleDateString(\"en-US\", { year: \"numeric\", month: \"long\", day: \"numeric\", hour: \"2-digit\", minute: \"2-digit\" })}</span>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n type=\"button\"\n className=\"h-7 px-2\"\n onClick={() => {\n files.download(s3key).then(async res => {\n console.log(\"res\", res);\n const json = await res.json()\n console.log(\"res\", json);\n const downloadUrl = json.url;\n window.open(downloadUrl, '_blank');\n return;\n })\n }}>\n <span className=\"mr-1 text-xs\">View</span>\n <Download className=\"h-3 w-3\" />\n </Button>\n </div>\n </div>\n )}\n {\n !isLoading && error && (\n <p className=\"text-xs text-muted-foreground\">{error.message}</p>\n )\n }\n {children}\n </CardContent>\n </Card>\n}\n\nexport default function UppyDashboard({ id, allowedFileTypes, dependencies, onConfirm, selectionLimit, buttonText }: {\n id: string,\n buttonText?: string,\n allowedFileTypes?: allFileTypes[],\n selectionLimit: number,\n dependencies: any[],\n onConfirm: (keys: string[]) => void\n}) {\n const [open, setOpen] = useState(false)\n return <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>\n <Button variant=\"outline\">\n {buttonText && (\n <span className=\"mr-2\">{buttonText}</span>\n )\n }\n <FilePlus className=\"h-4 w-4\" />\n </Button>\n </DialogTrigger>\n <DialogContent className=\"sm:max-w-[900px]\">\n <DialogHeader>\n <DialogTitle>File Gallery</DialogTitle>\n <DialogDescription>Browse your previously uploaded files or upload new ones.</DialogDescription>\n </DialogHeader>\n <FileGalleryAndUpload\n id={id}\n allowedFileTypes={allowedFileTypes}\n dependencies={dependencies}\n selectionLimit={selectionLimit}\n onConfirm={(data) => {\n onConfirm(data)\n setOpen(false)\n }}\n />\n </DialogContent>\n </Dialog>;\n}\n\nexport const FileGalleryAndUpload = ({ id, allowedFileTypes, dependencies, onConfirm, selectionLimit }: {\n id: string,\n allowedFileTypes?: allFileTypes[],\n dependencies: any[],\n selectionLimit: number,\n onConfirm: (keys: string[]) => void\n}) => {\n\n if (!allowedFileTypes) {\n allowedFileTypes = [\n '.png',\n '.jpg',\n '.jpeg',\n '.gif',\n '.webp',\n '.pdf',\n '.docx',\n '.xlsx',\n '.xls',\n '.csv',\n '.pptx',\n '.ppt',\n '.mp3',\n '.wav',\n '.m4a',\n '.mp4',\n '.mpeg',\n '.mp4',\n '.m4a',\n '.mp3',\n '.mpeg',\n '.wav'\n ]\n }\n\n const [search, setSearch] = useState<string | undefined>(undefined)\n const [previousContinuationToken, setPreviousContinuationToken] = useState<string | undefined>(undefined)\n const [currentContinuationToken, setCurrentContinuationToken] = useState<string | undefined>(undefined)\n const configContext = useContext(ConfigContext);\n const [selected, setSelected] = useState<string[]>([])\n\n const addSelected = (key: string) => {\n if (selected.includes(key)) {\n setSelected(selected.filter((s) => s !== key))\n return;\n }\n if (selectionLimit === 1) {\n setSelected([key])\n return;\n }\n if (selected.length >= selectionLimit) {\n return;\n }\n setSelected([...selected, key])\n }\n\n const deleteFile = useTanstackMutation({\n mutationFn: async ({ key }: { key: string }) => {\n await files.delete(key)\n refetch();\n return;\n }\n })\n\n const { data, isLoading: loading, error, refetch } = useTanstackQuery({\n queryKey: ['filesQuery', search, currentContinuationToken],\n staleTime: 30000,\n queryFn: async (): Promise<S3FileListOutput> => {\n return files.list({\n search,\n continuationToken: currentContinuationToken\n })\n },\n })\n\n console.log(\"!! data !!\", data)\n\n const { theme } = useTheme()\n const uppy = useUppy(\n {\n backend: configContext?.backend || \"\",\n uppyOptions: {\n id,\n allowedFileTypes\n },\n callbacks: {\n uploadSuccess: async (data) => {\n console.log(\"data\", data)\n /* \n We no longer create items automatically for files uploaded via uppy.\n const item = {\n name: data.file.name,\n type: data.file.type,\n rights_mode: \"private\",\n s3key: `${user?.id}/${data.key}`\n }\n await createItemMutation({ variables: { input: item } }) */\n },\n },\n maxNumberOfFiles: 10,\n },\n dependencies,\n );\n\n useEffect(() => {\n refetch();\n }, [search, currentContinuationToken]);\n\n // Loading state\n if (!uppy) {\n return null;\n }\n\n return <>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4\">\n {/* Left side - Gallery of previously uploaded files */}\n <div className=\"border rounded-lg p-4\">\n <h3 className=\"text-sm font-medium mb-3\">Previously Uploaded Files</h3>\n\n {/* search */}\n <Input\n placeholder=\"Search files...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"mb-3\"\n />\n <div className=\"flex items-center justify-between text-xs text-muted-foreground pb-2\">\n <span>{selected.length} / {selectionLimit} files selected</span>\n <span>Allowed file types: {allowedFileTypes?.map((type) => type).join(\", \")}</span>\n </div>\n <ScrollArea>\n {loading && (\n <div className=\"flex items-center justify-center h-full w-full grid grid-cols-2 sm:grid-cols-3 gap-3\">\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n </div>\n )}\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-3\">\n {\n !loading && !data?.Contents?.length && (\n <div className=\"col-span-full flex flex-col items-center justify-center py-12 text-center\">\n <FileWarning className=\"h-12 w-12 text-muted-foreground/50 mb-3\" />\n <p className=\"text-sm font-medium text-muted-foreground\">Nothing to see here... yet!</p>\n <p className=\"text-xs text-muted-foreground/75 mt-1\">Upload some files to get started</p>\n </div>\n )\n }\n {data?.Contents?.map((item: S3FileListOutput[\"Contents\"][0]) => {\n return (\n <FileItem s3Key={item.Key} onSelect={addSelected} active={selected.some((s) => s === item.Key)} onRemove={() => {\n deleteFile.mutate({\n key: item.Key\n })\n }} disabled={!allowedFileTypes ? false : !allowedFileTypes?.some((type) => item.Key.endsWith(type))} />\n )\n })}\n </div>\n\n <div className=\"flex items-center space-x-6 lg:space-x-8 pt-3\">\n <div className=\"flex items-center space-x-2\">\n <Button\n variant=\"outline\"\n className=\"hidden size-8 p-0 lg:flex\"\n onClick={() => {\n setCurrentContinuationToken(undefined)\n }}\n disabled={\n !currentContinuationToken ||\n loading\n }\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"size-8 p-0\"\n onClick={() => {\n setCurrentContinuationToken(previousContinuationToken)\n }}\n disabled={\n !currentContinuationToken ||\n loading\n }\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"size-8 p-0\"\n onClick={() => {\n setPreviousContinuationToken(currentContinuationToken)\n setCurrentContinuationToken(data?.NextContinuationToken)\n }}\n disabled={\n !data?.NextContinuationToken ||\n loading\n }>\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n </div>\n </div>\n </ScrollArea>\n </div>\n {/* Right side - Upload area */}\n <div className=\"border rounded-lg p-4\">\n <h3 className=\"text-sm font-medium mb-3\">Upload New Files</h3>\n <Dashboard uppy={uppy} theme={theme === \"dark\" ? \"dark\" : \"light\"} />\n </div>\n </div>\n <div className=\"flex justify-end\">\n <Button variant=\"outline\" onClick={() => {\n onConfirm(selected)\n setSelected([])\n }}>\n Confirm\n </Button>\n </div>\n </>\n}\n\nexport const FileItem = ({ s3Key, onSelect, onRemove, active, disabled, addToContext }: {\n s3Key: string,\n onSelect?: (key: string) => void,\n onRemove?: (key: string) => void,\n active: boolean,\n disabled: boolean,\n addToContext?: (key: string) => void\n}) => {\n const getFileIcon = (s3Key: string) => {\n if (!s3Key) {\n return <FileText className=\"h-6 w-6 text-gray-500\" />\n }\n if (\n s3Key.toLowerCase().endsWith(\"jpg\") ||\n s3Key.toLowerCase().endsWith(\"jpeg\") ||\n s3Key.toLowerCase().endsWith(\"png\") ||\n s3Key.toLowerCase().endsWith(\"svg\")\n ) {\n return <ImageIcon className=\"h-6 w-6 text-blue-500\" />\n } else if (s3Key.endsWith(\"pdf\")) {\n return <File className=\"h-6 w-6 text-red-500\" />\n } else if (s3Key.endsWith(\"xls\") || s3Key.endsWith(\"xlsx\") || s3Key.endsWith(\"csv\")) {\n return <FileText className=\"h-6 w-6 text-green-500\" />\n } else if (s3Key.endsWith(\"ppt\") || s3Key.endsWith(\"pptx\")) {\n return <FileText className=\"h-6 w-6 text-orange-500\" />\n } else {\n return <FileText className=\"h-6 w-6 text-gray-500\" />\n }\n }\n\n return (\n <div\n key={s3Key}\n className={`${disabled ? 'opacity-50' : ''} group relative rounded-lg p-2 hover:bg-muted transition-colors cursor-pointer ${active ? 'border border-purple-500' : 'border'}`}\n onClick={() => {\n if (!disabled && onSelect) {\n onSelect(s3Key)\n }\n }}>\n <div className=\"aspect-square relative mb-2 bg-muted/50 rounded-md overflow-hidden flex items-center justify-center\">\n {(\n s3Key && (\n s3Key.toLowerCase().endsWith(\"jpg\") ||\n s3Key.toLowerCase().endsWith(\"jpeg\") ||\n s3Key.toLowerCase().endsWith(\"png\") ||\n s3Key.toLowerCase().endsWith(\"svg\")\n )\n ) ? (\n <SecureImageRenderComponent fileKey={s3Key} />\n ) : (\n <div className=\"flex flex-col items-center justify-center h-full\">\n {getFileIcon(s3Key)}\n <span className=\"text-xs text-muted-foreground mt-1 text-center\">{s3Key ? s3Key.split(\"_EXULU_\").pop() : s3Key}</span>\n </div>\n )}\n </div>\n <p className=\"text-xs truncate\">{s3Key ? s3Key.split(\"_EXULU_\").pop() : s3Key}</p>\n <div className=\"opacity-0 group-hover:opacity-100 flex absolute top-1 right-1\">\n\n {addToContext && (\n <Button variant=\"ghost\" size=\"icon\" type=\"button\" className=\"h-6 w-6 bg-background/80 hover:bg-background\" onClick={() => {\n addToContext(s3Key)\n }}>\n <PlusIcon className=\"h-3 w-3\" />\n <span className=\"sr-only\">Add</span>\n </Button>\n )}\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n type=\"button\"\n className=\"h-6 w-6 bg-background/80 hover:bg-background\"\n onClick={() => {\n files.download(s3Key).then(async res => {\n console.log(\"res\", res);\n const json = await res.json()\n console.log(\"res\", json);\n const downloadUrl = json.url;\n window.open(downloadUrl, '_blank');\n return;\n })\n }}>\n <Download className=\"h-3 w-3\" />\n <span className=\"sr-only\">View</span>\n </Button>\n\n {onRemove && (\n <Button\n onClick={(e) => {\n e.stopPropagation()\n onRemove(s3Key)\n }}\n variant=\"ghost\"\n type=\"button\"\n size=\"icon\"\n className=\"h-6 w-6 opacity-0 group-hover:opacity-100 bg-background/80 hover:bg-background ml-1\">\n <X className=\"h-3 w-3\" />\n <span className=\"sr-only\">Remove</span>\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nlet signedUrlCache: {\n [key: string]: {\n url: string;\n expiresAt: number;\n }\n} = {};\n\nexport const getPresignedUrl = async (fileKey: string) => {\n if (signedUrlCache[fileKey]) {\n if (signedUrlCache[fileKey].expiresAt < Date.now()) {\n delete signedUrlCache[fileKey];\n } else {\n return signedUrlCache[fileKey].url;\n }\n }\n const response = await files.download(fileKey)\n const json = await response.json();\n console.log(\"json\", json)\n signedUrlCache[fileKey] = {\n url: json.url,\n expiresAt: Date.now() + 60 * 1000, // 1 minute\n }\n return json.url;\n}\n\nconst SecureImageRenderComponent = ({ fileKey }: { fileKey: string }) => {\n // Gets a signed key to show the image\n console.log(\"key\", fileKey)\n const query = useTanstackQuery({\n queryKey: ['imageQuery', fileKey],\n staleTime: 30000,\n queryFn: async () => {\n return getPresignedUrl(fileKey)\n },\n })\n\n if (query.isLoading) {\n return <div><LoaderIcon /></div>\n }\n\n if (!query.isLoading && !query.data) {\n return <div><FileWarning /></div>\n }\n\n return (<img\n src={query.data}\n alt={fileKey}\n className=\"object-cover w-full h-full\"\n />)\n\n}"],"names":["CodeBlockContext","createContext","code","CodeBlock","language","showLineNumbers","className","children","props","param","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Provider","value","div","cn","jsxs","SyntaxHighlighter","codeTagProps","customStyle","margin","padding","fontSize","background","color","lineNumberStyle","paddingRight","minWidth","style","oneLight","oneDark","CodeBlockCopyButton","onCopy","onError","timeout","isCopied","setIsCopied","useState","useContext","copyToClipboard","navigator","clipboard","writeText","setTimeout","error","Icon","CheckIcon","CopyIcon","Button","onClick","size","variant","HardenedMarkdown","hardenReactMarkdown","ReactMarkdown","components","ol","node","li","ul","hr","strong","span","a","rel","target","h1","h2","h3","h4","h5","h6","table","thead","tbody","tr","th","td","blockquote","position","start","line","end","pre","properties","replace","isValidElement","console","log","Response","memo","options","allowedImagePrefixes","allowedLinkPrefixes","defaultOrigin","parseIncompleteMarkdown","shouldParseIncompleteMarkdown","parsedChildren","text","result","linkMatch","match","startIndex","lastIndexOf","substring","asteriskPairs","length","concat","underscorePairs","singleAsterisks","split","reduce","acc","char","index","prevChar","nextChar","singleUnderscores","includes","singleBacktickCount","i","isTripleStart","isTripleMiddle","isTripleEnd","tildePairs","rehypePlugins","rehypeKatex","remarkPlugins","remarkGfm","remarkMath","prevProps","nextProps","displayName","alertVariants","cva","variants","default","destructive","info","defaultVariants","Alert","React","ref","role","AlertTitle","AlertDescription","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","count","toastTimeouts","Map","addToRemoveQueue","has","toastId","delete","dispatch","type","set","reducer","state","action","toasts","toast","slice","map","t","id","forEach","undefined","open","filter","listeners","memoryState","listener","Number","MAX_SAFE_INTEGER","toString","dismiss","onOpenChange","update","useToast","setState","push","indexOf","splice","initializeUppy","localStorage","backend","callbacks","maxNumberOfFiles","uppyOptions","uploadSuccess","allowedFileTypes","token","getToken","uppy","Uppy","autoProceed","debug","restrictions","use","AwsS3","endpoint","headers","Authorization","Session","getItem","on","file","removeFile","response","uploadURL","key","pop","url","use_uppy","deps","configContext","ConfigContext","setUppy","useEffect","initUppy","destroy","FileDataCard","s3key","data","isLoading","refetch","useTanstackQuery","queryKey","queryFn","files","object","enabled","jsx_runtime","Card","CardHeader","CardTitle","CardContent","Skeleton","ContentType","ContentLength","toFixed","Date","LastModified","toLocaleDateString","year","month","day","hour","minute","download","then","res","json","downloadUrl","window","Download","p","message","UppyDashboard","dependencies","onConfirm","selectionLimit","buttonText","setOpen","Dialog","DialogTrigger","asChild","FilePlus","DialogContent","DialogHeader","DialogTitle","DialogDescription","FileGalleryAndUpload","search","setSearch","previousContinuationToken","setPreviousContinuationToken","currentContinuationToken","setCurrentContinuationToken","selected","setSelected","addSelected","s","deleteFile","useTanstackMutation","mutationFn","loading","staleTime","list","continuationToken","theme","useTheme","useUppy","Fragment","Input","placeholder","onChange","e","join","ScrollArea","Contents","FileWarning","FileItem","s3Key","item","Key","onSelect","active","some","onRemove","mutate","disabled","endsWith","DoubleArrowLeftIcon","ChevronLeftIcon","NextContinuationToken","ChevronRightIcon","Dashboard","addToContext","toLowerCase","SecureImageRenderComponent","fileKey","ImageIcon","File","FileText","PlusIcon","stopPropagation","X","signedUrlCache","getPresignedUrl","expiresAt","now","query","LoaderIcon","img","src","alt"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/6373-7908bd5269f95aa3.js","mappings":"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","sources":["webpack://_N_E/./components/ui/button.tsx","webpack://_N_E/./lib/utils.ts","webpack://_N_E/./queries/queries.ts"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function formatDuration(seconds: number): string {\n if (!seconds) return '0s';\n \n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const remainingSeconds = Math.round(seconds % 60);\n\n if (hours > 0) {\n return `${hours}h ${minutes}m`;\n } else if (minutes > 0) {\n return `${minutes}m ${remainingSeconds}s`;\n } else {\n return `${remainingSeconds}s`;\n }\n}","import { gql } from \"@apollo/client\";\n\nexport const PAGINATION_POSTFIX = \"_itemsPagination\";\nexport const CREATE_ONE_POSTFIX = \"_itemsCreateOne\";\n\nconst CONTEXT_FIELDS = `\n id\n name\n description\n embedder {\n name\n id\n config {\n name\n description\n default\n }\n }\n slug\n active\n fields\n configuration\n sources {\n id\n name\n description\n config {\n params {\n name\n description\n default\n }\n schedule\n queue\n retries\n backoff {\n type\n delay\n }\n }\n }\n`;\n\nconst ITEM_FIELDS = (fields: string[]) => `\nid\nname\ndescription\ntags\nexternal_id\ncreatedAt\nembeddings_updated_at\nupdatedAt\nrights_mode\nRBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n}\n${fields.join(\"\\n\")}\n`;\n\nconst USER_FIELDS = `\nid\nfirstname\nlastname\nemail\nsuper_admin\napikey\nanthropic_token\ntype\nrole\nfavourite_agents\n`;\n\nconst AGENT_FIELDS = `\nid\nname\nproviderapikey\ninstructions\ndescription\nactive\nimage\nanimation_idle\nanimation_responding\ntools\nproviderName\nmodelName\nmaxContextLength\nprovider\nauthenticationInformation\nslug\ncategory\nrateLimit {\n name\n rate_limit {\n time\n limit\n }\n}\nstreaming\ncapabilities {\n text\n images\n files\n audio\n video\n}\nbackend\nrights_mode\nRBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n}\ncreatedAt\nupdatedAt\n`;\n\nexport const GET_AGENTS = gql`\n query GetAgents(\n $page: Int!\n $limit: Int!\n $filters: [FilterAgent]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n agentsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${AGENT_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_AGENT_SESSIONS = gql`\n query GetAgentSessions(\n $page: Int!\n $limit: Int!\n $filters: [FilterAgent_session]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n agent_sessionsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n createdAt\n updatedAt\n user\n title\n agent\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n }\n id\n }\n }\n }\n`;\n\nexport const GET_CONTEXTS = gql`\n query GetContexts {\n contexts {\n items {\n ${CONTEXT_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_CONTEXT_BY_ID = gql`\n query GetContextById($id: ID!) {\n contextById(id: $id) {\n ${CONTEXT_FIELDS}\n }\n }\n`;\n\nexport const GET_ITEMS = (context: string, fields: string[]) => {\n const upperCaseContext = context.charAt(0).toUpperCase() + context.slice(1)\n return gql`\n query ${context}Pagination($page: Int!, $limit: Int!, $filters: [Filter${upperCaseContext}_items], $sort: SortBy = { field: \"updatedAt\", direction: DESC }) {\n ${context}${PAGINATION_POSTFIX}(page: $page, limit: $limit, filters: $filters, sort: $sort) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${ITEM_FIELDS(fields)}\n }\n }\n }\n `;\n};\n\nexport const PROCESS_ITEM_FIELD = (context: string) => {\n return gql`\n mutation ProcessItemField${context}($item: ID!, $field: ${context}_itemsProcessorFieldEnum!) {\n ${context}_itemsProcessItemField(item: $item, field: $field) {\n message\n result\n job\n }\n }\n `;\n};\n\nexport const GET_ITEM_BY_ID = (context: string, fields: string[], chunks: boolean = false) => {\n return gql`\n query ${context}ById($id: ID!) {\n ${context}_itemsById(id: $id) {\n ${ITEM_FIELDS(fields)}\n ${chunks ? \"chunks { fts_rank hybrid_score content source chunk_index chunk_id chunk_created_at chunk_updated_at embedding_size }\" : \"\"}\n }\n }\n `;\n};\n\nexport const CREATE_ITEM = (context: string) => {\n return gql`\n mutation CreateOne${context}($input: ${context}_itemsInput!) {\n ${context}_itemsCreateOne(input: $input) {\n item {\n id\n }\n job\n }\n }\n `;\n};\n\nexport const DELETE_CHUNKS = (context: string) => {\n const upperCaseContext = context.charAt(0).toUpperCase() + context.slice(1)\n return gql`\n mutation DeleteChunks${context}($where: [Filter${upperCaseContext}_items]) {\n ${context}_itemsDeleteChunks(where: $where) {\n items\n jobs\n }\n }\n `;\n};\n\n\nexport const GENERATE_CHUNKS = (context: string) => {\n const upperCaseContext = context.charAt(0).toUpperCase() + context.slice(1)\n return gql`\n mutation GenerateChunks${context}($where: [Filter${upperCaseContext}_items]) {\n ${context}_itemsGenerateChunks(where: $where) {\n items\n jobs\n }\n }\n `;\n};\n\nexport const EXECUTE_SOURCE = (context: string) => {\n return gql`\n mutation ExecuteSource${context}($source: ID!, $inputs: JSON!) {\n ${context}_itemsExecuteSource(source: $source, inputs: $inputs) {\n message\n jobs\n items\n }\n }\n `;\n};\n\nexport const UPDATE_ITEM = (context: string) => {\n return gql`\n mutation UpdateOneById${context}($id: ID!, $input: ${context}_itemsInput!) {\n ${context}_itemsUpdateOneById(id: $id, input: $input) {\n item {\n id\n }\n job\n }\n }\n `;\n};\n\nexport const DELETE_ITEM = (context: string, fields: string[]) => {\n return gql`\n mutation DeleteOneById${context}($id: ID!) {\n ${context}_itemsRemoveOneById(id: $id) {\n id\n ${fields.join(\"\\n\")}\n }\n }\n `;\n};\n\nexport const UPDATE_AGENT_SESSION_RBAC = gql`\n mutation UpdateAgentSessionRbac(\n $id: ID!\n $RBAC: RBACInput\n $rights_mode: String\n ) {\n agent_sessionsUpdateOneById(id: $id, input: { rights_mode: $rights_mode, RBAC: $RBAC }) {\n item {\n id\n }\n }\n }\n`;\n\nexport const UPDATE_AGENT_SESSION_PROJECT = gql`\n mutation UpdateAgentSessionProject(\n $id: ID!\n $project: String\n ) {\n agent_sessionsUpdateOneById(id: $id, input: {project: $project}) {\n item {\n id\n }\n }\n }\n`;\n\nexport const UPDATE_AGENT_SESSION_TITLE = gql`\n mutation UpdateAgentSessionTitle(\n $id: ID!\n $title: String\n ) {\n agent_sessionsUpdateOneById(id: $id, input: {title: $title}) {\n item {\n id\n title\n }\n }\n }\n`;\n\nexport const GET_AGENT_MESSAGES = gql`\n query GetAgentSessionMessages(\n $page: Int!\n $limit: Int!\n $filters: [FilterAgent_message]\n $sort: SortBy = { field: \"createdAt\", direction: ASC }\n ) {\n agent_messagesPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n session\n content\n createdAt\n }\n }\n }\n`;\n\nexport const GET_JOB_RESULTS = gql`\n query GetJobResults(\n $page: Int!\n $limit: Int!\n $filters: [FilterJob_result]\n $sort: SortBy = {\n field: \"createdAt\",\n direction: DESC\n }\n ) {\n job_resultsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n items {\n job_id\n state\n error\n label\n result\n metadata\n createdAt\n updatedAt\n id\n }\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n }\n }\n`;\nexport const GET_USER_ROLES = gql`\n query GetUserRoles($page: Int!, $limit: Int!) {\n rolesPagination(page: $page, limit: $limit) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n createdAt\n updatedAt\n agents\n workflows\n api\n variables\n users\n name\n }\n }\n }\n`;\nexport const GET_USERS = gql`\n query GetUsers(\n $page: Int!\n $limit: Int!\n $filters: [FilterUser]\n $sort: SortBy\n ) {\n usersPagination(page: $page, limit: $limit, filters: $filters, sort: $sort) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n name\n firstname\n lastname\n email\n last_used\n createdAt\n type\n apikey\n emailVerified\n anthropic_token\n super_admin\n role\n }\n }\n }\n`;\nexport const GET_USER_ROLE_BY_ID = gql`\n query GetUserRoleById($id: ID!) {\n roleById(id: $id) {\n id\n name\n agents\n workflows\n api\n variables\n users\n createdAt\n updatedAt\n }\n }\n`;\nexport const GET_JOB_RESULT_BY_ID = gql`\n query GetJobResultById($id: ID!) {\n job_resultById(id: $id) {\n id\n job_id\n state\n error\n label\n result\n metadata\n createdAt\n updatedAt\n }\n }\n`;\nexport const GET_AGENT_BY_ID = gql`\n query GetAgentById($id: ID!) {\n agentById(id: $id) {\n ${AGENT_FIELDS}\n }\n }\n`;\nexport const GET_AGENTS_BY_IDS = gql`\n query GetAgentsByIds($ids: [ID!]!) {\n agentByIds(ids: $ids) {\n ${AGENT_FIELDS}\n }\n }\n`;\nexport const GET_AGENT_SESSION_BY_ID = gql`\n query GetAgentSessionById($id: ID!) {\n agent_sessionById(id: $id) {\n createdAt\n updatedAt\n user\n title\n agent\n created_by\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n }\n id\n }\n }\n`;\nexport const GET_AGENT_SESSION = gql`\n query GetAgentSession($filters: [FilterAgent_session]) {\n agent_sessionOne(filters: $filters) {\n createdAt\n updatedAt\n user\n title\n agent\n id\n }\n }\n`;\n\nexport const UPDATE_USER_BY_ID = gql`\n mutation UpdateUser(\n $email: String,\n $firstname: String,\n $anthropic_token: String,\n $super_admin: Boolean,\n $lastname: String,\n $role: String,\n $favourite_agents: JSON,\n $id: ID!\n ) {\n usersUpdateOneById(id: $id, input: {\n email: $email,\n firstname: $firstname,\n anthropic_token: $anthropic_token,\n super_admin: $super_admin,\n lastname: $lastname,\n role: $role,\n favourite_agents: $favourite_agents\n }) {\n item {\n ${USER_FIELDS}\n }\n }\n }\n`;\nexport const CREATE_API_USER = gql`\n mutation CreateUser(\n $firstname: String,\n $type: String,\n $apikey: String,\n $email: String,\n $role: String\n ) {\n usersCreateOne(input: {\n firstname: $firstname,\n type: $type,\n apikey: $apikey,\n email: $email,\n role: $role\n }) {\n item {\n id\n }\n }\n }\n`;\nexport const UPDATE_USER_ROLE_BY_ID = gql`\n mutation UpdateUserRole(\n $id: ID!\n $name: String\n $agents: String\n $workflows: String\n $api: String\n $variables: String\n $users: String\n ) {\n rolesUpdateOneById(\n id: $id\n input: {\n name: $name\n agents: $agents\n workflows: $workflows\n api: $api\n variables: $variables\n users: $users\n }\n ) {\n item {\n id\n createdAt\n agents\n api\n workflows\n variables\n users\n }\n }\n }\n`;\nexport const GET_USER_BY_EMAIL = gql`\n query GetUserByEmail($email: String!) {\n userOne(filters: {email: $email}) {\n ${USER_FIELDS}\n }\n }\n`;\n\nexport const CREATE_AGENT_SESSION = gql`\n mutation createAgentSession(\n $title: String,\n $user: Float\n $agent: String\n $project: String\n $rights_mode: String\n $RBAC: RBACInput\n ) {\n agent_sessionsCreateOne(\n input: { agent: $agent, user: $user, title: $title, project: $project, rights_mode: $rights_mode, RBAC: $RBAC }\n ) {\n item {\n id\n }\n }\n }\n`;\nexport const CREATE_AGENT = gql`\n mutation createAgent(\n $name: String!\n $description: String!\n $rights_mode: String!\n $backend: String!\n $image: String\n $RBAC: RBACInput\n ) {\n agentsCreateOne(\n input: {\n name: $name\n description: $description\n rights_mode: $rights_mode\n backend: $backend\n image: $image\n RBAC: $RBAC\n }\n ) {\n item {\n id\n name\n description\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n }\n createdAt\n }\n }\n }\n`;\n\nexport const GET_TOOLS = gql`\n query GetTools($search: String, $category: String, $limit: Int, $page: Int) {\n tools(search: $search, category: $category, limit: $limit, page: $page) {\n items {\n id\n name\n category\n description\n config\n type\n }\n total\n page\n limit\n }\n }\n`;\n\nexport const GET_TOOL_CATEGORIES = gql`\n query GetToolCategories {\n toolCategories\n }\n`;\n\nexport const UPDATE_AGENT_BY_ID = gql`\n mutation UpdateAgent(\n $id: ID!\n $name: String\n $backend: String\n $description: String\n $instructions: String\n $rights_mode: String\n $animation_idle: String\n $animation_responding: String\n $category: String\n $tools: JSON\n $active: Boolean\n $providerapikey: String\n $RBAC: RBACInput\n ) {\n agentsUpdateOneById(\n input: { \n name: $name\n backend: $backend\n description: $description\n category: $category\n instructions: $instructions\n animation_idle: $animation_idle\n animation_responding: $animation_responding\n rights_mode: $rights_mode\n active: $active\n tools: $tools\n providerapikey: $providerapikey\n RBAC: $RBAC\n }\n id: $id\n ) {\n item {\n id\n name\n description\n instructions\n category\n animation_idle\n animation_responding\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n }\n }\n }\n }\n`;\nexport const CREATE_USER_ROLE = gql`\n mutation CreateUserRole($name: String!, $agents: String, $workflows: String, $variables: String, $users: String, $api: String) {\n rolesCreateOne(input: { name: $name, agents: $agents, workflows: $workflows, variables: $variables, users: $users, api: $api}) {\n item {\n id\n createdAt\n agents\n api\n workflows\n variables\n users\n name\n }\n }\n }\n`;\n\nexport const CREATE_USER = gql`\n mutation CreateUser($email: String!, $password: String, $type: String, $emailVerified: String) {\n usersCreateOne(input: { email: $email, password: $password, type: $type, emailVerified: $emailVerified }) {\n item {\n id\n createdAt\n emailVerified\n type\n name\n }\n }\n }\n`;\n\nexport const RESET_USER_PASSWORD = gql`\n mutation ResetUserPassword($id: ID!, $password: String!) {\n usersUpdateOneById(id: $id, input: { password: $password }) {\n item {\n id\n }\n }\n }\n`;\n\nexport const GET_PROVIDERS = gql`\n query GetProviders {\n providers {\n items {\n id\n name\n description\n provider\n modelName\n providerName\n }\n }\n }\n`;\n\nexport const REMOVE_USER_BY_ID = gql`\n mutation RemoveUserById($id: ID!) {\n usersRemoveOneById(id: $id) {\n id\n }\n }\n`;\nexport const REMOVE_JOB_RESULT_BY_ID = gql`\n mutation RemoveJobResultById($id: ID!) {\n job_resultsRemoveOneById(id: $id) {\n id\n }\n }\n`;\nexport const REMOVE_USER_ROLE_BY_ID = gql`\n mutation RemoveUserRoleById($id: ID!) {\n rolesRemoveOneById(id: $id) {\n id\n }\n }\n`;\nexport const REMOVE_AGENT_BY_ID = gql`\n mutation RemoveAgentById($id: ID!) {\n agentsRemoveOneById(id: $id) {\n id\n }\n }\n`;\nexport const REMOVE_AGENT_SESSION_BY_ID = gql`\n mutation RemoveAgentSessionById($id: ID!) {\n agent_sessionsRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\nexport const GET_JOB_STATISTICS = gql`\n query GetJobStatistics($user: Float, $agent: String, $from: String, $to: String) {\n jobStatistics(user: $user, agent: $agent, from: $from, to: $to) {\n completedCount\n failedCount\n averageDuration\n }\n }\n`;\n\nexport const GET_VARIABLES = gql`\n query GetVariables(\n $page: Int!\n $limit: Int!\n $filters: [FilterVariable]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n variablesPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const GET_VARIABLE_BY_ID = gql`\n query GetVariableById($id: ID!) {\n variableById(id: $id) {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const CREATE_VARIABLE = gql`\n mutation CreateVariable(\n $name: String!\n $value: String!\n $encrypted: Boolean\n ) {\n variablesCreateOne(\n input: {\n name: $name\n value: $value\n encrypted: $encrypted\n }\n ) {\n item {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const CREATE_EMBEDDER_CONFIG = gql`\n mutation CreateEmbedderConfig($name: String!, $value: String, $context: String!, $embedder: String!) {\n embedder_settingsCreateOne(input: { name: $name, value: $value, context: $context, embedder: $embedder }) {\n item {\n id\n name\n value\n context\n embedder\n }\n }\n }\n`;\n\nexport const GET_EMBEDDER_CONFIGS = gql`\n query GetEmbedderConfigs($context: String, $embedder: String) {\n embedder_settingsPagination(page: 1, limit: 100, filters: {\n context: {\n eq: $context\n },\n embedder: {\n eq: $embedder\n }\n }) {\n items {\n id\n name\n value\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const UPDATE_EMBEDDER_CONFIG = gql`\n mutation UpdateEmbedderConfig($id: ID!, $name: String, $value: String) {\n embedder_settingsUpdateOneById(id: $id, input: { name: $name, value: $value }) {\n item {\n id\n }\n }\n }\n`;\n\nexport const UPDATE_VARIABLE = gql`\n mutation UpdateVariable(\n $id: ID!\n $name: String\n $value: String\n $encrypted: Boolean\n ) {\n variablesUpdateOneById(\n id: $id\n input: {\n name: $name\n value: $value\n encrypted: $encrypted\n }\n ) {\n item {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const REMOVE_VARIABLE_BY_ID = gql`\n mutation RemoveVariableById($id: ID!) {\n variablesRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\nexport const GET_USER_BY_ID = gql`\n query GetUserById($id: ID!) {\n userById(id: $id) {\n id\n name\n firstname\n lastname\n email\n }\n }\n`;\n\nexport const GET_USERS_BY_IDS = gql`\n query GetUsersByIds($ids: [ID!]!) {\n userByIds(ids: $ids) {\n id\n name\n firstname\n lastname\n email\n }\n }\n`;\n\nexport const GET_WORKFLOW_TEMPLATES = gql`\n query GetWorkflowTemplates(\n $page: Int!\n $limit: Int!\n $filters: [FilterWorkflow_template]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n workflow_templatesPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n name\n description\n owner\n rights_mode\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n }\n }\n }\n }\n`;\n\nexport const GET_WORKFLOW_TEMPLATE_BY_ID = gql`\n query GetWorkflowTemplateById($id: ID!) {\n workflow_templateById(id: $id) {\n id\n name\n description\n owner\n rights_mode\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const CREATE_WORKFLOW_TEMPLATE = gql`\n mutation CreateWorkflowTemplate(\n $name: String!\n $description: String\n $owner: Float!\n $rights_mode: String!\n $RBAC: RBACInput\n $variables: JSON\n $steps_json: JSON!\n $example_metadata_json: JSON\n ) {\n workflow_templatesCreateOne(\n input: {\n name: $name\n description: $description\n owner: $owner\n rights_mode: $rights_mode\n RBAC: $RBAC\n variables: $variables\n steps_json: $steps_json\n example_metadata_json: $example_metadata_json\n }\n ) {\n id\n name\n description\n owner\n rights_mode\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n }\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPDATE_WORKFLOW_TEMPLATE = gql`\n mutation UpdateWorkflowTemplate(\n $id: ID!\n $name: String\n $description: String\n $rights_mode: String\n $RBAC: RBACInput\n $variables: JSON\n $steps_json: JSON\n $example_metadata_json: JSON\n ) {\n workflow_templatesUpdateOneById(\n id: $id\n input: {\n name: $name\n description: $description\n rights_mode: $rights_mode\n RBAC: $RBAC\n variables: $variables\n steps_json: $steps_json\n example_metadata_json: $example_metadata_json\n }\n ) {\n id\n name\n description\n owner\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n }\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const REMOVE_WORKFLOW_TEMPLATE_BY_ID = gql`\n mutation RemoveWorkflowTemplateById($id: ID!) {\n workflow_templatesRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\nexport const GET_JOB_STATISTICS_ENHANCED = gql`\n query GetJobStatisticsEnhanced($user: Float, $agent: String, $from: String, $to: String) {\n jobStatistics(user: $user, agent: $agent, from: $from, to: $to) {\n runningCount\n erroredCount\n completedCount\n failedCount\n averageDuration\n }\n }\n`;\n\n// Analytics Dashboard Queries\n\n// Summary Cards Queries (24h vs 7-day average)\nexport const GET_AGENT_SESSIONS_STATISTICS = gql`\n query AgentSessionsStatistics($from: Date!, $to: Date!) {\n agent_sessionsStatistics(filters: {\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\nexport const GET_WORKFLOW_RUNS_STATISTICS = gql`\n query WorkflowRunsStatistics($from: Date!, $to: Date!) {\n jobsStatistics(filters: {\n type: { eq: \"workflow\" }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\nexport const GET_EMBEDDING_JOBS_STATISTICS = gql`\n query EmbeddingJobsStatistics($from: Date!, $to: Date!) {\n jobsStatistics(filters: {\n type: { eq: \"embedder\" }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\nexport const GET_FUNCTION_CALLS_STATISTICS = gql`\n query FunctionCallsStatistics($from: Date!, $to: Date!) {\n trackingStatistics(filters: {\n type: { eq: TOOL_CALL }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\nexport const GET_AGENT_RUN_STATISTICS = gql` \n query AgentCallsStatistics($from: Date!, $to: Date!) {\n trackingStatistics(filters: {\n type: { eq: AGENT_RUN }\n name: { eq: \"count\" }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\nexport const GET_TOKEN_USAGE_STATISTICS = gql` \n query AgentCallsStatistics($from: Date!, $to: Date!) {\n trackingStatistics(filters: {\n name: { in: [\"inputTokens\", \"outputTokens\"] }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\n\n// Time Series Chart Query\nexport const GET_TIME_SERIES_STATISTICS = gql`\n query TimeSeriesStatistics($type: typeEnum!, $from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: \"createdAt\"\n filters: {\n type: { eq: $type }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n name: { in: $names }\n }\n ) {\n group\n count\n }\n }\n`;\n\nexport const GET_USER_STATISTICS = gql`\nquery UserStatistics($from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: \"user\"\n filters: {\n type: { eq: AGENT_RUN }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n name: { in: $names }\n }\n ) {\n group\n count\n }\n}\n`;\n\nexport const GET_PROJECT_STATISTICS = gql`\nquery ProjectStatistics($from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: \"project\"\n filters: {\n type: { eq: AGENT_RUN }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n name: { in: $names }\n }\n ) {\n group\n count\n }\n}\n`;\n\nexport const GET_AGENT_STATISTICS = gql`\nquery AgentStatistics($from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: \"label\"\n filters: {\n type: { eq: AGENT_RUN }\n name: { in: $names }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }\n ) {\n group\n count\n }\n}\n`;\n\nexport const GET_USER_NAME_BY_ID = gql`\n query GetUserNameById($id: ID!) {\n userById(id: $id) {\n name\n }\n }\n`;\n\nexport const GET_PROJECT_NAME_BY_ID = gql`\n query GetProjectNameById($id: ID!) {\n projectById(id: $id) {\n name\n }\n }\n`;\n\n// Donut Chart Query \nexport const GET_DONUT_STATISTICS = gql`\n query DonutStatistics($type: typeEnum!, $groupBy: String!, $from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: $groupBy\n filters: {\n type: { eq: $type }\n name: { in: $names }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }\n ) {\n group\n count\n }\n }\n`;\n\nconst PROJECT_FIELDS = `\n id\n name\n description\n image\n custom_instructions\n rights_mode\n created_by\n createdAt\n updatedAt\n project_items\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n`;\n\nexport const GET_PROJECTS = gql`\n query GetProjects(\n $page: Int!\n $limit: Int!\n $filters: [FilterProject]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n projectsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${PROJECT_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_PROJECTS_BY_IDS = gql`\n query GetProjectsByIds($ids: [ID!]!) {\n projectByIds(ids: $ids) {\n ${PROJECT_FIELDS}\n }\n }\n`;\n\nexport const GET_PROJECT_BY_ID = gql`\n query GetProjectById($id: ID!) {\n projectById(id: $id) {\n ${PROJECT_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_USER_FAVOURITE_PROJECTS = gql`\n mutation UpdateUserFavouriteProjects($id: ID!, $favourite_projects: JSON) {\n userUpdateById(input: { favourite_projects: $favourite_projects }, filter: { id: $id }) {\n item {\n id\n favourite_projects\n }\n }\n }\n`;\n\nexport const CREATE_PROJECT = gql`\n mutation CreateProject($input: projectInput!) {\n projectsCreateOne(input: $input) {\n item {\n ${PROJECT_FIELDS}\n }\n }\n }\n`;\n\nexport const UPDATE_PROJECT = gql`\n mutation UpdateProject($id: ID!, $input: projectInput!) {\n projectsUpdateOneById(id: $id, input: $input) {\n item {\n ${PROJECT_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_PROJECT = gql`\n mutation DeleteProject($id: ID!) {\n projectsRemoveOneById(id: $id) {\n id\n name\n }\n }\n`;\n\n// ============================================\n// EVAL-RELATED QUERIES\n// ============================================\n\nconst TEST_CASE_FIELDS = `\n id\n name\n description\n inputs\n expected_output\n expected_tools\n expected_knowledge_sources\n expected_agent_tools\n eval_set_id\n createdAt\n updatedAt\n`;\n\nconst EVAL_SET_FIELDS = `\n id\n name\n description\n createdAt\n updatedAt\n`;\n\nconst EVAL_RUN_FIELDS = `\n id\n name\n eval_set_id\n agent_id\n eval_functions\n config\n scoring_method\n pass_threshold\n test_case_ids\n createdAt\n updatedAt\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n }\n`;\n\n// Test Cases\nexport const GET_TEST_CASES = gql`\n query GetTestCases(\n $page: Int!\n $limit: Int!\n $filters: [FilterTest_case]\n ) {\n test_casesPagination(page: $page, limit: $limit, filters: $filters) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${TEST_CASE_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_TEST_CASE_BY_ID = gql`\n query GetTestCaseById($id: ID!) {\n test_caseById(id: $id) {\n ${TEST_CASE_FIELDS}\n }\n }\n`;\n\nexport const CREATE_TEST_CASE = gql`\n mutation CreateTestCase($data: test_caseInput!) {\n test_casesCreateOne(input: $data) {\n item {\n ${TEST_CASE_FIELDS}\n }\n }\n }\n`;\n\nexport const UPDATE_TEST_CASE = gql`\n mutation UpdateTestCase($id: ID!, $data: test_caseInput!) {\n test_casesUpdateOneById(id: $id, input: $data) {\n item {\n ${TEST_CASE_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_TEST_CASE = gql`\n mutation DeleteTestCase($id: ID!) {\n test_casesRemoveOneById(id: $id) {\n id\n name\n }\n }\n`;\n\n// Eval Sets\nexport const GET_EVAL_SETS = gql`\n query GetEvalSets(\n $page: Int!\n $limit: Int!\n $filters: [FilterEval_set]\n ) {\n eval_setsPagination(page: $page, limit: $limit, filters: $filters) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${EVAL_SET_FIELDS}\n }\n }\n }\n`;\n\nconst EVAL_FIELDS = `\n id\n name\n description\n config {\n name\n description\n }\n llm\n`;\n\nexport const GET_EVAL_FUNCTIONS = gql`\n query GetEvals {\n evals {\n items {\n ${EVAL_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_EVAL_SET_BY_ID = gql`\n query GetEvalSetById($id: ID!) {\n eval_setById(id: $id) {\n ${EVAL_SET_FIELDS}\n }\n }\n`;\n\nexport const CREATE_EVAL_SET = gql`\n mutation CreateEvalSet($data: eval_setInput!) {\n eval_setsCreateOne(input: $data) {\n item {\n ${EVAL_SET_FIELDS}\n }\n }\n }\n`;\n\nexport const UPDATE_EVAL_SET = gql`\n mutation UpdateEvalSet($id: ID!, $data: eval_setInput!) {\n eval_setsUpdateOneById(id: $id, input: $data) {\n item {\n ${EVAL_SET_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_EVAL_SET = gql`\n mutation DeleteEvalSet($id: ID!) {\n eval_setsRemoveOneById(id: $id) {\n id\n name\n }\n }\n`;\n\n// Eval Runs\nexport const GET_EVAL_RUNS = gql`\n query GetEvalRuns(\n $page: Int!\n $limit: Int!\n $filters: [FilterEval_run]\n ) {\n eval_runsPagination(page: $page, limit: $limit, filters: $filters) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${EVAL_RUN_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_EVAL_RUN_BY_ID = gql`\n query GetEvalRunById($id: ID!) {\n eval_runById(id: $id) {\n ${EVAL_RUN_FIELDS}\n }\n }\n`;\n\nexport const CREATE_EVAL_RUN = gql`\n mutation CreateEvalRun($data: eval_runInput!) {\n eval_runsCreateOne(input: $data) {\n item {\n ${EVAL_RUN_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_QUEUE = gql`\n query GetQueue($queue: QueueEnum!) {\n queue(queue: $queue) {\n name\n concurrency\n ratelimit\n isMaxed\n isPaused\n jobs {\n paused\n completed\n failed\n waiting\n active\n delayed\n }\n }\n }\n`;\n\nexport const GET_JOBS = gql`\n query GetJobs($queue: QueueEnum!, $statusses: [JobStateEnum!], $page: Int, $limit: Int) {\n jobs(queue: $queue, statusses: $statusses, page: $page, limit: $limit) {\n items {\n name\n id\n returnvalue\n stacktrace\n failedReason\n state\n data\n timestamp\n }\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n }\n }\n`;\n\nexport const DELETE_JOB = gql`\n mutation DeleteJob($queue: QueueEnum!, $id: String!) {\n deleteJob(queue: $queue, id: $id) {\n success\n }\n }\n`;\n\nexport const PAUSE_QUEUE = gql`\n mutation PauseQueue($queue: QueueEnum!) {\n pauseQueue(queue: $queue) {\n success\n }\n }\n`;\n\nexport const RESUME_QUEUE = gql`\n mutation ResumeQueue($queue: QueueEnum!) {\n resumeQueue(queue: $queue) {\n success\n }\n }\n`;\n\nexport const DRAIN_QUEUE = gql`\n mutation DrainQueue($queue: QueueEnum!) {\n drainQueue(queue: $queue) {\n success\n }\n }\n`;\n\nexport const RUN_EVAL = gql`\n mutation RunEval($id: ID!) {\n runEval(id: $id) {\n jobs\n count\n }\n }\n`;\n\nexport const UPDATE_EVAL_RUN = gql`\n mutation UpdateEvalRun($id: ID!, $data: eval_runInput!) {\n eval_runsUpdateOneById(id: $id, input: $data) {\n item {\n ${EVAL_RUN_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_EVAL_RUN = gql`\n mutation DeleteEvalRun($id: ID!) {\n eval_runsRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\nconst PLATFORM_CONFIGURATION_FIELDS = `\n id\n config_key\n config_value\n description\n createdAt\n updatedAt\n`;\n\nexport const GET_PLATFORM_CONFIGURATIONS = gql`\n query GetPlatformConfigurations {\n platform_configurationsPagination {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${PLATFORM_CONFIGURATION_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_PLATFORM_CONFIGURATION_BY_KEY = gql`\n query GetPlatformConfigurationByKey($config_key: FilterOperatorString!) {\n platform_configurationsPagination(page: 1, limit: 1, filters: { config_key: $config_key }) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${PLATFORM_CONFIGURATION_FIELDS}\n }\n }\n }\n`;\n\nexport const CREATE_PLATFORM_CONFIGURATION = gql`\n mutation CreatePlatformConfiguration($data: platform_configurationInput!) {\n platform_configurationsCreateOne(input: $data) {\n item {\n ${PLATFORM_CONFIGURATION_FIELDS}\n }\n }\n }\n`;\n\nexport const UPDATE_PLATFORM_CONFIGURATION = gql`\n mutation UpdatePlatformConfiguration($id: ID!, $data: platform_configurationInput!) {\n platform_configurationsUpdateOneById(id: $id, input: $data) {\n item {\n ${PLATFORM_CONFIGURATION_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_PLATFORM_CONFIGURATION = gql`\n mutation DeletePlatformConfiguration($id: ID!) {\n platform_configurationsRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\n// ============================================\n// PROMPT LIBRARY QUERIES AND MUTATIONS\n// ============================================\n\nconst PROMPT_LIBRARY_FIELDS = `\n id\n name\n description\n content\n tags\n usage_count\n favorite_count\n assigned_agents\n rights_mode\n created_by\n createdAt\n updatedAt\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n }\n`;\n\nexport const GET_PROMPTS = gql`\n query GetPrompts(\n $page: Int!\n $limit: Int!\n $filters: [FilterPrompt_library_item]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n prompt_libraryPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${PROMPT_LIBRARY_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_PROMPT_BY_ID = gql`\n query GetPromptById($id: ID!) {\n prompt_library_itemById(id: $id) {\n ${PROMPT_LIBRARY_FIELDS}\n }\n }\n`;\n\nexport const CREATE_PROMPT = gql`\n mutation CreatePrompt(\n $name: String!\n $description: String\n $content: String!\n $tags: JSON\n $rights_mode: String!\n $RBAC: RBACInput\n $assigned_agents: JSON\n ) {\n prompt_libraryCreateOne(\n input: {\n name: $name\n description: $description\n content: $content\n tags: $tags\n rights_mode: $rights_mode\n RBAC: $RBAC\n assigned_agents: $assigned_agents\n }\n ) {\n item {\n ${PROMPT_LIBRARY_FIELDS}\n }\n }\n }\n`;\n\nexport const UPDATE_PROMPT = gql`\n mutation UpdatePrompt(\n $id: ID!\n $name: String\n $description: String\n $content: String\n $tags: JSON\n $rights_mode: String\n $RBAC: RBACInput\n $assigned_agents: JSON\n ) {\n prompt_libraryUpdateOneById(\n id: $id\n input: {\n name: $name\n description: $description\n content: $content\n tags: $tags\n rights_mode: $rights_mode\n RBAC: $RBAC\n assigned_agents: $assigned_agents\n }\n ) {\n item {\n ${PROMPT_LIBRARY_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_PROMPT = gql`\n mutation DeletePrompt($id: ID!) {\n prompt_libraryRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\nexport const INCREMENT_PROMPT_USAGE = gql`\n mutation IncrementPromptUsage($id: ID!, $usage_count: Float!) {\n prompt_libraryUpdateOneById(\n id: $id\n input: { usage_count: $usage_count }\n ) {\n item {\n id\n usage_count\n }\n }\n }\n`;\n\nexport const INCREMENT_PROMPT_FAVORITES = gql`\n mutation IncrementPromptFavorites($id: ID!, $favorite_count: Float!) {\n prompt_libraryUpdateOneById(\n id: $id\n input: { favorite_count: $favorite_count }\n ) {\n item {\n id\n favorite_count\n }\n }\n }\n`;\n\n// Prompt Favorites\nconst PROMPT_FAVORITE_FIELDS = `\n id\n user_id\n prompt_id\n createdAt\n`;\n\nexport const GET_USER_PROMPT_FAVORITES = gql`\n query GetUserPromptFavorites($user_id: Float!) {\n prompt_favoritesPagination(\n filters: [{ user_id: { eq: $user_id } }]\n ) {\n items {\n ${PROMPT_FAVORITE_FIELDS}\n }\n }\n }\n`;\n\nexport const CREATE_PROMPT_FAVORITE = gql`\n mutation CreatePromptFavorite($user_id: Float!, $prompt_id: String!) {\n prompt_favoritesCreateOne(\n input: { user_id: $user_id, prompt_id: $prompt_id }\n ) {\n item {\n ${PROMPT_FAVORITE_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_PROMPT_FAVORITE = gql`\n mutation DeletePromptFavorite($id: ID!) {\n prompt_favoritesRemoveOneById(id: $id) {\n id\n }\n }\n`;"],"names":["buttonVariants","cva","variants","variant","default","destructive","outline","secondary","ghost","link","size","sm","lg","icon","defaultVariants","Button","React","param","ref","className","asChild","props","Comp","Slot","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","cn","displayName","_len","arguments","length","inputs","_key","twMerge","clsx","formatDuration","seconds","hours","Math","floor","minutes","remainingSeconds","round","concat","PAGINATION_POSTFIX","CREATE_ONE_POSTFIX","CONTEXT_FIELDS","ITEM_FIELDS","fields","join","USER_FIELDS","AGENT_FIELDS","GET_AGENTS","gql","GET_AGENT_SESSIONS","GET_CONTEXTS","GET_CONTEXT_BY_ID","GET_ITEMS","context","upperCaseContext","charAt","toUpperCase","slice","PROCESS_ITEM_FIELD","GET_ITEM_BY_ID","chunks","CREATE_ITEM","DELETE_CHUNKS","GENERATE_CHUNKS","EXECUTE_SOURCE","UPDATE_ITEM","DELETE_ITEM","UPDATE_AGENT_SESSION_RBAC","UPDATE_AGENT_SESSION_PROJECT","UPDATE_AGENT_SESSION_TITLE","GET_AGENT_MESSAGES","GET_JOB_RESULTS","GET_USER_ROLES","GET_USERS","GET_AGENT_BY_ID","GET_AGENTS_BY_IDS","GET_AGENT_SESSION_BY_ID","UPDATE_USER_BY_ID","CREATE_API_USER","UPDATE_USER_ROLE_BY_ID","CREATE_AGENT_SESSION","CREATE_AGENT","GET_TOOLS","GET_TOOL_CATEGORIES","UPDATE_AGENT_BY_ID","CREATE_USER_ROLE","CREATE_USER","RESET_USER_PASSWORD","GET_PROVIDERS","REMOVE_USER_BY_ID","REMOVE_USER_ROLE_BY_ID","REMOVE_AGENT_BY_ID","REMOVE_AGENT_SESSION_BY_ID","GET_VARIABLES","GET_VARIABLE_BY_ID","CREATE_VARIABLE","CREATE_EMBEDDER_CONFIG","GET_EMBEDDER_CONFIGS","UPDATE_EMBEDDER_CONFIG","UPDATE_VARIABLE","REMOVE_VARIABLE_BY_ID","GET_USER_BY_ID","GET_USERS_BY_IDS","GET_WORKFLOW_TEMPLATES","CREATE_WORKFLOW_TEMPLATE","UPDATE_WORKFLOW_TEMPLATE","REMOVE_WORKFLOW_TEMPLATE_BY_ID","GET_JOB_STATISTICS_ENHANCED","GET_AGENT_SESSIONS_STATISTICS","GET_WORKFLOW_RUNS_STATISTICS","GET_FUNCTION_CALLS_STATISTICS","GET_AGENT_RUN_STATISTICS","GET_TOKEN_USAGE_STATISTICS","GET_TIME_SERIES_STATISTICS","GET_USER_STATISTICS","GET_PROJECT_STATISTICS","GET_AGENT_STATISTICS","GET_DONUT_STATISTICS","PROJECT_FIELDS","GET_PROJECTS","GET_PROJECTS_BY_IDS","GET_PROJECT_BY_ID","UPDATE_USER_FAVOURITE_PROJECTS","CREATE_PROJECT","UPDATE_PROJECT","DELETE_PROJECT","TEST_CASE_FIELDS","EVAL_SET_FIELDS","EVAL_RUN_FIELDS","GET_TEST_CASES","CREATE_TEST_CASE","UPDATE_TEST_CASE","DELETE_TEST_CASE","GET_EVAL_SETS","GET_EVAL_FUNCTIONS","GET_EVAL_SET_BY_ID","CREATE_EVAL_SET","UPDATE_EVAL_SET","DELETE_EVAL_SET","GET_EVAL_RUNS","CREATE_EVAL_RUN","GET_QUEUE","GET_JOBS","DELETE_JOB","PAUSE_QUEUE","RESUME_QUEUE","DRAIN_QUEUE","RUN_EVAL","UPDATE_EVAL_RUN","PLATFORM_CONFIGURATION_FIELDS","GET_PLATFORM_CONFIGURATIONS","CREATE_PLATFORM_CONFIGURATION","UPDATE_PLATFORM_CONFIGURATION","PROMPT_LIBRARY_FIELDS","GET_PROMPTS","GET_PROMPT_BY_ID","CREATE_PROMPT","UPDATE_PROMPT","DELETE_PROMPT","INCREMENT_PROMPT_USAGE","INCREMENT_PROMPT_FAVORITES","PROMPT_FAVORITE_FIELDS","CREATE_PROMPT_FAVORITE","DELETE_PROMPT_FAVORITE"],"sourceRoot":""}
|