@exulu/frontend 1.10.0 → 1.11.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 +163 -160
- 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 +2 -2
- 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.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +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.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-paths-manifest.json +5 -5
- package/dist/.next/server/chunks/2270.js +145 -132
- package/dist/.next/server/chunks/{5084.js → 2587.js} +1 -1
- package/dist/.next/server/chunks/3503.js +1 -1
- package/dist/.next/server/chunks/5485.js +1 -1
- package/dist/.next/server/chunks/5974.js +1 -1
- package/dist/.next/server/chunks/7944.js +1 -1
- package/dist/.next/server/chunks/8286.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/1707-06e693c4a709c147.js +2 -0
- package/dist/.next/static/chunks/1707-06e693c4a709c147.js.map +1 -0
- package/dist/.next/static/chunks/{1957-cf44b1d31a9c7d5c.js → 1957-34f17de1e14e45de.js} +1 -1
- package/dist/.next/static/chunks/{1957-cf44b1d31a9c7d5c.js.map → 1957-34f17de1e14e45de.js.map} +1 -1
- package/dist/.next/static/chunks/{2293-48a95904b834eccc.js → 2293-592e22dde70d632b.js} +1 -1
- package/dist/.next/static/chunks/{2293-48a95904b834eccc.js.map → 2293-592e22dde70d632b.js.map} +1 -1
- package/dist/.next/static/chunks/2534-3dd7a9fabfbdb9d8.js +2 -0
- package/dist/.next/static/chunks/2534-3dd7a9fabfbdb9d8.js.map +1 -0
- package/dist/.next/static/chunks/2823-324b1cd8f15ff9c5.js +2 -0
- package/dist/.next/static/chunks/2823-324b1cd8f15ff9c5.js.map +1 -0
- package/dist/.next/static/chunks/3246-1812de142455a0ac.js +2 -0
- package/dist/.next/static/chunks/3246-1812de142455a0ac.js.map +1 -0
- package/dist/.next/static/chunks/{3750-e3d1b2cccd265190.js → 3750-d0ae5d73288be8de.js} +2 -2
- package/dist/.next/static/chunks/3750-d0ae5d73288be8de.js.map +1 -0
- package/dist/.next/static/chunks/{3832-d7782d6a2771ae6c.js → 3832-0b8edbcc671f4cc0.js} +2 -2
- package/dist/.next/static/chunks/3832-0b8edbcc671f4cc0.js.map +1 -0
- package/dist/.next/static/chunks/{4386-45b79e656a244d8a.js → 4386-21ac377a719ebdfa.js} +1 -1
- package/dist/.next/static/chunks/{4386-45b79e656a244d8a.js.map → 4386-21ac377a719ebdfa.js.map} +1 -1
- package/dist/.next/static/chunks/4612-da512770f949561a.js +2 -0
- package/dist/.next/static/chunks/4612-da512770f949561a.js.map +1 -0
- package/dist/.next/static/chunks/{5825-efd4db1da512bd7f.js → 4760-d5ceb992b68e35ca.js} +2 -2
- package/dist/.next/static/chunks/4760-d5ceb992b68e35ca.js.map +1 -0
- package/dist/.next/static/chunks/{6367-59655a85d75e19be.js → 6367-aa5020cbea5354e2.js} +1 -1
- package/dist/.next/static/chunks/{6367-59655a85d75e19be.js.map → 6367-aa5020cbea5354e2.js.map} +1 -1
- package/dist/.next/static/chunks/6373-3eee0b6c8b8fd459.js +2 -0
- package/dist/.next/static/chunks/6373-3eee0b6c8b8fd459.js.map +1 -0
- package/dist/.next/static/chunks/{8030-9c926ea4dfd3a54e.js → 8030-5d38a3f1a4ad44cb.js} +1 -1
- package/dist/.next/static/chunks/{8030-9c926ea4dfd3a54e.js.map → 8030-5d38a3f1a4ad44cb.js.map} +1 -1
- package/dist/.next/static/chunks/9105-143f12397a76a332.js +2 -0
- package/dist/.next/static/chunks/9105-143f12397a76a332.js.map +1 -0
- package/dist/.next/static/chunks/9877-378934ae38c6760c.js +2 -0
- package/dist/.next/static/chunks/9877-378934ae38c6760c.js.map +1 -0
- package/dist/.next/static/chunks/{9953-95900a236271a222.js → 9953-02d5b52553a5c573.js} +2 -2
- package/dist/.next/static/chunks/{9953-95900a236271a222.js.map → 9953-02d5b52553a5c573.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-e4a4693953329671.js → page-37918149a8e909b0.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-e4a4693953329671.js.map → page-37918149a8e909b0.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/agents/{page-b77c21a993c55901.js → page-9cff3b35b042d46a.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/agents/{page-b77c21a993c55901.js.map → page-9cff3b35b042d46a.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-53a99d8df53380c7.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-53a99d8df53380c7.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/{layout-093baa26f89338bc.js → layout-ba702af6bb56baa2.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/{layout-093baa26f89338bc.js.map → layout-ba702af6bb56baa2.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/{page-8a1fcfb68cf9c8c0.js → page-8b00a98d285829b1.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/{page-8a1fcfb68cf9c8c0.js.map → page-8b00a98d285829b1.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/configuration/{page-f315ede6d66922e6.js → page-1e978e117d5086a1.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/configuration/{page-f315ede6d66922e6.js.map → page-1e978e117d5086a1.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/dashboard/{page-4a1956febf5235b6.js → page-c54b4bc8d0ac4ac8.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/dashboard/{page-4a1956febf5235b6.js.map → page-c54b4bc8d0ac4ac8.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/{layout-0c7c1b0e1713bf60.js → layout-dfdb5c1cdc7ddefc.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/{layout-0c7c1b0e1713bf60.js.map → layout-dfdb5c1cdc7ddefc.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-faaee5fe82b45966.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-faaee5fe82b45966.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/{page-a7728cf9b0524489.js → page-c956d9892676aa4f.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-c956d9892676aa4f.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-6b4dde82376e9aac.js +2 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-6b4dde82376e9aac.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/{page-8b38d8d29f275704.js → page-944bfc4f0a001e4c.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/evals/page-944bfc4f0a001e4c.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/explorer/page-07d67145bb176711.js +2 -0
- package/dist/.next/static/chunks/app/(application)/explorer/page-07d67145bb176711.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/keys/{page-afe59c91cc347208.js → page-6c0cd9ef20cd1461.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/keys/{page-afe59c91cc347208.js.map → page-6c0cd9ef20cd1461.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-f04fd5291a1ef7b1.js → page-5e2be54e76b8509c.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-f04fd5291a1ef7b1.js.map → page-5e2be54e76b8509c.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/{layout-a8e1830ef3faafb9.js → layout-f2e0f42a08c96bb8.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/{layout-a8e1830ef3faafb9.js.map → layout-f2e0f42a08c96bb8.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/prompts/{page-2c500e9898447506.js → page-2c03bbe32800acc3.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/prompts/{page-2c500e9898447506.js.map → page-2c03bbe32800acc3.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/roles/{page-873911198c17d9a7.js → page-b977b5c658004717.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/roles/{page-873911198c17d9a7.js.map → page-b977b5c658004717.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/token/{page-3acc39cb8a718331.js → page-08596ece49a811b9.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/token/page-08596ece49a811b9.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/users/{page-0d7f0d7e80cd1436.js → page-49212081be40aeca.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/users/{page-0d7f0d7e80cd1436.js.map → page-49212081be40aeca.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/create/{page-8ebf4e3d4d17443b.js → page-9ce762918374f616.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/create/{page-8ebf4e3d4d17443b.js.map → page-9ce762918374f616.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-006145e82e054e72.js → page-0e2b7038546d9f7a.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-006145e82e054e72.js.map → page-0e2b7038546d9f7a.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/{page-51a8aeece444d388.js → page-141d5d3f735454fe.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/{page-51a8aeece444d388.js.map → page-141d5d3f735454fe.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-8f5cfc9565fd919a.js → page-fb1bb3ea6f7cae47.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-8f5cfc9565fd919a.js.map → page-fb1bb3ea6f7cae47.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/workflows/{page-e38f9456120dab69.js → page-2b839fdbc55c297b.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/workflows/page-2b839fdbc55c297b.js.map +1 -0
- package/dist/.next/static/css/0f539b50cca35462.css +4 -0
- package/dist/.next/static/css/0f539b50cca35462.css.map +1 -0
- package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
- package/package.json +1 -1
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js +0 -2
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js.map +0 -1
- package/dist/.next/static/chunks/3171-6996819b8863d41f.js +0 -2
- package/dist/.next/static/chunks/3171-6996819b8863d41f.js.map +0 -1
- package/dist/.next/static/chunks/3750-e3d1b2cccd265190.js.map +0 -1
- package/dist/.next/static/chunks/3832-d7782d6a2771ae6c.js.map +0 -1
- package/dist/.next/static/chunks/4419-b9be79d8cd46a97d.js +0 -2
- package/dist/.next/static/chunks/4419-b9be79d8cd46a97d.js.map +0 -1
- package/dist/.next/static/chunks/5110-098aa924c3108fa4.js +0 -2
- package/dist/.next/static/chunks/5110-098aa924c3108fa4.js.map +0 -1
- package/dist/.next/static/chunks/5825-efd4db1da512bd7f.js.map +0 -1
- package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js +0 -2
- package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js.map +0 -1
- package/dist/.next/static/chunks/6373-aef582adc575d3ca.js +0 -2
- package/dist/.next/static/chunks/6373-aef582adc575d3ca.js.map +0 -1
- package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js +0 -2
- package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js +0 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-827f50c6d1f150d0.js +0 -2
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-827f50c6d1f150d0.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/page-8b38d8d29f275704.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/explorer/page-e6b1c034c07776e2.js +0 -2
- package/dist/.next/static/chunks/app/(application)/explorer/page-e6b1c034c07776e2.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/token/page-3acc39cb8a718331.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/workflows/page-e38f9456120dab69.js.map +0 -1
- package/dist/.next/static/css/9c08ae5d990a6b14.css +0 -4
- package/dist/.next/static/css/9c08ae5d990a6b14.css.map +0 -1
- /package/dist/.next/static/{3j63p6b3zZZB_v1Hn8Mxp → exslB-IPXi_veOKFA4L1Z}/_buildManifest.js +0 -0
- /package/dist/.next/static/{3j63p6b3zZZB_v1Hn8Mxp → exslB-IPXi_veOKFA4L1Z}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/chunks/app/(application)/chat/[agent]/[session]/page-53a99d8df53380c7.js","mappings":"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","sources":["webpack://_N_E/?69f0","webpack://_N_E/./components/ai-elements/loader.tsx","webpack://_N_E/./components/ui/hover-card.tsx","webpack://_N_E/./components/ui/progress.tsx","webpack://_N_E/./components/ai-elements/context.tsx","webpack://_N_E/./components/ai-elements/tool.tsx","webpack://_N_E/./app/(application)/chat/[agent]/[session]/components/prompt-selector-modal.tsx","webpack://_N_E/./lib/prompts/format-variable-name.ts","webpack://_N_E/./app/(application)/chat/[agent]/[session]/components/prompt-variable-form.tsx","webpack://_N_E/./lib/prompts/fill-prompt-variables.ts","webpack://_N_E/./app/(application)/chat/[agent]/[session]/chat.tsx","webpack://_N_E/./app/(application)/chat/[agent]/[session]/page.tsx","webpack://_N_E/./components/lottie.tsx","webpack://_N_E/./components/ui/switch.tsx","webpack://_N_E/./hooks/use-prompts.tsx","webpack://_N_E/./lib/check-chat-session-write-access.ts","webpack://_N_E/./lib/prompts/extract-variables.ts"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/[session]/page.tsx\");\n","import { cn } from '@/lib/utils';\nimport type { HTMLAttributes } from 'react';\n\ntype LoaderIconProps = {\n size?: number;\n};\n\nconst LoaderIcon = ({ size = 16 }: LoaderIconProps) => (\n <svg\n height={size}\n strokeLinejoin=\"round\"\n style={{ color: 'currentcolor' }}\n viewBox=\"0 0 16 16\"\n width={size}\n >\n <title>Loader</title>\n <g clipPath=\"url(#clip0_2393_1490)\">\n <path d=\"M8 0V4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M8 16V12\"\n opacity=\"0.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M3.29773 1.52783L5.64887 4.7639\"\n opacity=\"0.9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M12.7023 1.52783L10.3511 4.7639\"\n opacity=\"0.1\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M12.7023 14.472L10.3511 11.236\"\n opacity=\"0.4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M3.29773 14.472L5.64887 11.236\"\n opacity=\"0.6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M15.6085 5.52783L11.8043 6.7639\"\n opacity=\"0.2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M0.391602 10.472L4.19583 9.23598\"\n opacity=\"0.7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M15.6085 10.4722L11.8043 9.2361\"\n opacity=\"0.3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M0.391602 5.52783L4.19583 6.7639\"\n opacity=\"0.8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_2393_1490\">\n <rect fill=\"white\" height=\"16\" width=\"16\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport type LoaderProps = HTMLAttributes<HTMLDivElement> & {\n size?: number;\n};\n\nexport const Loader = ({ className, size = 16, ...props }: LoaderProps) => (\n <div\n className={cn(\n 'inline-flex animate-spin items-center justify-center',\n className\n )}\n {...props}\n >\n <LoaderIcon size={size} />\n </div>\n);\n","\"use client\";\n\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst HoverCard = HoverCardPrimitive.Root;\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","\"use client\";\n\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-4 w-full overflow-hidden rounded-full bg-secondary\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"size-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n));\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"@/components/ui/hover-card\";\nimport { Progress } from \"@/components/ui/progress\";\nimport { cn } from \"@/lib/utils\";\nimport type { LanguageModelUsage } from \"ai\";\nimport { type ComponentProps, createContext, useContext } from \"react\";\nimport { estimateCost, type ModelId } from \"tokenlens\";\n\nconst PERCENT_MAX = 100;\nconst ICON_RADIUS = 10;\nconst ICON_VIEWBOX = 24;\nconst ICON_CENTER = 12;\nconst ICON_STROKE_WIDTH = 2;\n\ntype ContextSchema = {\n usedTokens: number;\n maxTokens: number;\n usage?: LanguageModelUsage;\n modelId?: ModelId;\n};\n\nconst ContextContext = createContext<ContextSchema | null>(null);\n\nconst useContextValue = () => {\n const context = useContext(ContextContext);\n\n if (!context) {\n throw new Error(\"Context components must be used within Context\");\n }\n\n return context;\n};\n\nexport type ContextProps = ComponentProps<typeof HoverCard> & ContextSchema;\n\nexport const Context = ({\n usedTokens,\n maxTokens,\n usage,\n modelId,\n ...props\n}: ContextProps) => (\n <ContextContext.Provider\n value={{\n usedTokens,\n maxTokens,\n usage,\n modelId,\n }}\n >\n <HoverCard closeDelay={0} openDelay={0} {...props} />\n </ContextContext.Provider>\n);\n\nconst ContextIcon = () => {\n const { usedTokens, maxTokens } = useContextValue();\n const circumference = 2 * Math.PI * ICON_RADIUS;\n const usedPercent = usedTokens / maxTokens;\n const dashOffset = circumference * (1 - usedPercent);\n\n return (\n <svg\n aria-label=\"Model context usage\"\n height=\"20\"\n role=\"img\"\n style={{ color: \"currentcolor\" }}\n viewBox={`0 0 ${ICON_VIEWBOX} ${ICON_VIEWBOX}`}\n width=\"20\"\n >\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.25\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeWidth={ICON_STROKE_WIDTH}\n />\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.7\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeDasharray={`${circumference} ${circumference}`}\n strokeDashoffset={dashOffset}\n strokeLinecap=\"round\"\n strokeWidth={ICON_STROKE_WIDTH}\n style={{ transformOrigin: \"center\", transform: \"rotate(-90deg)\" }}\n />\n </svg>\n );\n};\n\nexport type ContextTriggerProps = ComponentProps<typeof Button>;\n\nexport const ContextTrigger = ({ children, ...props }: ContextTriggerProps) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const renderedPercent = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n maximumFractionDigits: 1,\n }).format(usedPercent);\n\n return (\n <HoverCardTrigger asChild>\n {children ?? (\n <Button type=\"button\" variant=\"ghost\" {...props}>\n <span className=\"font-medium text-muted-foreground\">\n {renderedPercent}\n </span>\n <ContextIcon />\n </Button>\n )}\n </HoverCardTrigger>\n );\n};\n\nexport type ContextContentProps = ComponentProps<typeof HoverCardContent>;\n\nexport const ContextContent = ({\n className,\n ...props\n}: ContextContentProps) => (\n <HoverCardContent\n className={cn(\"min-w-[240px] divide-y overflow-hidden p-0\", className)}\n {...props}\n />\n);\n\nexport type ContextContentHeader = ComponentProps<\"div\">;\n\nexport const ContextContentHeader = ({\n children,\n className,\n ...props\n}: ContextContentHeader) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const displayPct = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n maximumFractionDigits: 1,\n }).format(usedPercent);\n const used = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(usedTokens);\n const total = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(maxTokens);\n\n return (\n <div className={cn(\"w-full space-y-2 p-3\", className)} {...props}>\n {children ?? (\n <>\n <div className=\"flex items-center justify-between gap-3 text-xs\">\n <p>{displayPct}</p>\n <p className=\"font-mono text-muted-foreground\">\n {used} / {total}\n </p>\n </div>\n <div className=\"space-y-2\">\n <Progress className=\"bg-muted\" value={usedPercent * PERCENT_MAX} />\n </div>\n </>\n )}\n </div>\n );\n};\n\nexport type ContextContentBody = ComponentProps<\"div\">;\n\nexport const ContextContentBody = ({\n children,\n className,\n ...props\n}: ContextContentBody) => (\n <div className={cn(\"w-full p-3\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type ContextContentFooter = ComponentProps<\"div\">;\n\nexport const ContextContentFooter = ({\n children,\n className,\n ...props\n}: ContextContentFooter) => {\n const { modelId, usage } = useContextValue();\n const costUSD = modelId\n ? estimateCost({\n modelId,\n usage: {\n input: usage?.inputTokens ?? 0,\n output: usage?.outputTokens ?? 0,\n },\n }).totalUSD\n : undefined;\n const totalCost = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(costUSD ?? 0);\n\n return (\n <div\n className={cn(\n \"flex w-full items-center justify-between gap-3 bg-secondary p-3 text-xs\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n <span className=\"text-muted-foreground\">Total cost</span>\n <span>{totalCost}</span>\n </>\n )}\n </div>\n );\n};\n\nexport type ContextInputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextInputUsage = ({\n className,\n children,\n ...props\n}: ContextInputUsageProps) => {\n const { usage, modelId } = useContextValue();\n const inputTokens = usage?.inputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!inputTokens) {\n return null;\n }\n\n const inputCost = modelId\n ? estimateCost({\n modelId,\n usage: { input: inputTokens, output: 0 },\n }).totalUSD\n : undefined;\n const inputCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(inputCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Input</span>\n <TokensWithCost costText={inputCostText} tokens={inputTokens} />\n </div>\n );\n};\n\nexport type ContextOutputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextOutputUsage = ({\n className,\n children,\n ...props\n}: ContextOutputUsageProps) => {\n const { usage, modelId } = useContextValue();\n const outputTokens = usage?.outputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!outputTokens) {\n return null;\n }\n\n const outputCost = modelId\n ? estimateCost({\n modelId,\n usage: { input: 0, output: outputTokens },\n }).totalUSD\n : undefined;\n const outputCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(outputCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Output</span>\n <TokensWithCost costText={outputCostText} tokens={outputTokens} />\n </div>\n );\n};\n\nexport type ContextReasoningUsageProps = ComponentProps<\"div\">;\n\nexport const ContextReasoningUsage = ({\n className,\n children,\n ...props\n}: ContextReasoningUsageProps) => {\n const { usage, modelId } = useContextValue();\n const reasoningTokens = usage?.reasoningTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!reasoningTokens) {\n return null;\n }\n\n const reasoningCost = modelId\n ? estimateCost({\n modelId,\n usage: { reasoningTokens },\n }).totalUSD\n : undefined;\n const reasoningCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(reasoningCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Reasoning</span>\n <TokensWithCost costText={reasoningCostText} tokens={reasoningTokens} />\n </div>\n );\n};\n\nexport type ContextCacheUsageProps = ComponentProps<\"div\">;\n\nexport const ContextCacheUsage = ({\n className,\n children,\n ...props\n}: ContextCacheUsageProps) => {\n const { usage, modelId } = useContextValue();\n const cacheTokens = usage?.cachedInputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!cacheTokens) {\n return null;\n }\n\n const cacheCost = modelId\n ? estimateCost({\n modelId,\n usage: { cacheReads: cacheTokens, input: 0, output: 0 },\n }).totalUSD\n : undefined;\n const cacheCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(cacheCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Cache</span>\n <TokensWithCost costText={cacheCostText} tokens={cacheTokens} />\n </div>\n );\n};\n\nconst TokensWithCost = ({\n tokens,\n costText,\n}: {\n tokens?: number;\n costText?: string;\n}) => (\n <span>\n {tokens === undefined\n ? \"—\"\n : new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(tokens)}\n {costText ? (\n <span className=\"ml-2 text-muted-foreground\">• {costText}</span>\n ) : null}\n </span>\n);\n","'use client';\n\nimport { Badge } from '@/components/ui/badge';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport { cn } from '@/lib/utils';\nimport type { ToolUIPart } from 'ai';\nimport {\n CheckCircleIcon,\n ChevronDownIcon,\n CircleIcon,\n ClockIcon,\n WrenchIcon,\n XCircleIcon,\n} from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { CodeBlock } from './code-block';\n\nexport type ToolProps = ComponentProps<typeof Collapsible>;\n\nexport const Tool = ({ className, ...props }: ToolProps) => (\n <Collapsible\n className={cn('not-prose mb-4 w-full rounded-md border', className)}\n {...props}\n />\n);\n\nexport type ToolHeaderProps = {\n type: ToolUIPart['type'];\n state: ToolUIPart['state'];\n className?: string;\n};\n\nconst getStatusBadge = (status: ToolUIPart['state']) => {\n const labels = {\n 'input-streaming': 'Pending',\n 'input-available': 'Running',\n 'output-available': 'Completed',\n 'output-error': 'Error',\n } as const;\n\n const icons = {\n 'input-streaming': <CircleIcon className=\"size-4 mr-2\" />,\n 'input-available': <ClockIcon className=\"size-4 animate-pulse mr-2\" />,\n 'output-available': <CheckCircleIcon className=\"size-4 text-green-600 mr-2\" />,\n 'output-error': <XCircleIcon className=\"size-4 text-red-600 mr-2\" />,\n } as const;\n\n return (\n <Badge className=\"rounded-full text-xs\" variant=\"secondary\">\n {icons[status]}\n {labels[status]}\n </Badge>\n );\n};\n\nexport const ToolHeader = ({\n className,\n type,\n state,\n ...props\n}: ToolHeaderProps) => (\n <CollapsibleTrigger\n className={cn(\n 'flex w-full items-center justify-between gap-4 p-3',\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <WrenchIcon className=\"size-4 text-muted-foreground\" />\n <span className=\"font-medium text-sm\">{type}</span>\n {getStatusBadge(state)}\n </div>\n <ChevronDownIcon className=\"size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180\" />\n </CollapsibleTrigger>\n);\n\nexport type ToolContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ToolContent = ({ className, ...props }: ToolContentProps) => (\n <CollapsibleContent\n className={cn(\n 'data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in',\n className\n )}\n {...props}\n />\n);\n\nexport type ToolInputProps = ComponentProps<'div'> & {\n input: ToolUIPart['input'];\n};\n\nexport const ToolInput = ({ className, input, ...props }: ToolInputProps) => (\n <div className={cn('space-y-2 overflow-hidden p-4', className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n Parameters\n </h4>\n <div className=\"rounded-md bg-muted/50\">\n <CodeBlock code={JSON.stringify(input, null, 2)} language=\"json\" />\n </div>\n </div>\n);\n\nexport type ToolOutputProps = ComponentProps<'div'> & {\n output: ReactNode;\n errorText: ToolUIPart['errorText'];\n};\n\nexport const ToolOutput = ({\n className,\n output,\n errorText,\n ...props\n}: ToolOutputProps): JSX.Element => {\n if (!(output || errorText)) {\n return <></>;\n }\n\n return (\n <div className={cn('space-y-2 p-4', className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs tracking-wide\">\n {errorText ? 'Error' : 'Result'}\n </h4>\n <div\n className={cn(\n 'overflow-x-auto rounded-md text-xs [&_table]:w-full p-5',\n errorText\n ? 'bg-destructive/10 text-destructive'\n : 'bg-muted/50 text-foreground'\n )}\n >\n {errorText && <div>{errorText}</div>}\n {output && <div>{output}</div>}\n </div>\n </div>\n );\n};\n","import { useState } from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Search, Star, Eye, FileText, ThumbsUp } from \"lucide-react\";\nimport { usePrompts } from \"@/hooks/use-prompts\";\nimport { PromptLibrary } from \"@/types/models/prompt-library\";\nimport { extractVariables } from \"@/lib/prompts/extract-variables\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\ninterface PromptSelectorModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onSelectPrompt: (prompt: PromptLibrary) => void;\n agentId?: string;\n}\n\nexport function PromptSelectorModal({\n open,\n onOpenChange,\n onSelectPrompt,\n agentId,\n}: PromptSelectorModalProps) {\n const [searchQuery, setSearchQuery] = useState(\"\");\n\n // Build filters based on search\n const filters: any[] = [];\n if (searchQuery) {\n filters.push({\n or: [\n { name: { contains: searchQuery } },\n { description: { contains: searchQuery } },\n { content: { contains: searchQuery } },\n ],\n });\n }\n\n // Fetch prompts\n const { data, loading } = usePrompts({\n page: 1,\n limit: 50,\n filters,\n sort: { field: \"favorite_count\", direction: \"DESC\" },\n });\n\n const prompts = data?.prompt_libraryPagination?.items || [];\n\n // Filter by agent assignment (client-side since assigned_agents is JSON)\n const agentPrompts = agentId\n ? prompts.filter(\n (p) => p.assigned_agents && p.assigned_agents.includes(agentId)\n )\n : [];\n\n const otherPrompts = agentId\n ? prompts.filter(\n (p) => !p.assigned_agents || !p.assigned_agents.includes(agentId)\n )\n : prompts;\n\n const handleSelectPrompt = (prompt: PromptLibrary) => {\n onSelectPrompt(prompt);\n onOpenChange(false);\n setSearchQuery(\"\");\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-2xl max-h-[80vh]\">\n <DialogHeader>\n <DialogTitle>Select a Prompt</DialogTitle>\n <DialogDescription>\n Choose a prompt template to insert into your message\n </DialogDescription>\n </DialogHeader>\n\n {/* Search */}\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder=\"Search prompts...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-10\"\n />\n </div>\n\n {/* Prompts List */}\n <ScrollArea className=\"h-[400px] pr-4\">\n {loading ? (\n <div className=\"space-y-3\">\n {[1, 2, 3].map((i) => (\n <Skeleton key={i} className=\"h-24 w-full\" />\n ))}\n </div>\n ) : (\n <div className=\"space-y-4\">\n {/* Recommended Prompts (assigned to agent) */}\n {agentPrompts.length > 0 && (\n <div>\n <div className=\"flex items-center gap-2 mb-2\">\n <ThumbsUp className=\"h-4 w-4 text-yellow-500\" />\n <h3 className=\"text-sm font-medium\">Recommended for this agent</h3>\n </div>\n <div className=\"space-y-2\">\n {agentPrompts.map((prompt) => (\n <PromptListItem\n key={prompt.id}\n prompt={prompt}\n onSelect={handleSelectPrompt}\n />\n ))}\n </div>\n </div>\n )}\n\n {/* All Other Prompts */}\n {otherPrompts.length > 0 && (\n <div>\n {agentPrompts.length > 0 && (\n <h3 className=\"text-sm font-medium mb-2\">All Prompts</h3>\n )}\n <div className=\"space-y-2\">\n {otherPrompts.map((prompt) => (\n <PromptListItem\n key={prompt.id}\n prompt={prompt}\n onSelect={handleSelectPrompt}\n />\n ))}\n </div>\n </div>\n )}\n\n {/* Empty State */}\n {prompts.length === 0 && !loading && (\n <div className=\"flex flex-col items-center justify-center py-12 text-center\">\n <FileText className=\"h-12 w-12 text-muted-foreground mb-3\" />\n <h3 className=\"text-lg font-medium\">No prompts found</h3>\n <p className=\"text-sm text-muted-foreground\">\n {searchQuery\n ? \"Try a different search term\"\n : \"Create your first prompt in the Prompt Library\"}\n </p>\n </div>\n )}\n </div>\n )}\n </ScrollArea>\n </DialogContent>\n </Dialog>\n );\n}\n\ninterface PromptListItemProps {\n prompt: PromptLibrary;\n onSelect: (prompt: PromptLibrary) => void;\n}\n\nfunction PromptListItem({ prompt, onSelect }: PromptListItemProps) {\n const variables = extractVariables(prompt.content);\n\n return (\n <button\n onClick={() => onSelect(prompt)}\n className=\"w-full text-left p-3 rounded-lg border hover:bg-accent transition-colors\"\n >\n <div className=\"flex items-start justify-between gap-2 mb-1\">\n <h4 className=\"font-medium text-sm\">{prompt.name}</h4>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground flex-shrink-0\">\n <div className=\"flex items-center gap-0.5\">\n <ThumbsUp className=\"h-3 w-3\" />\n <span>{prompt.favorite_count || 0}</span>\n </div>\n <div className=\"flex items-center gap-0.5\">\n <Eye className=\"h-3 w-3\" />\n <span>{prompt.usage_count || 0}</span>\n </div>\n </div>\n </div>\n\n {prompt.description && (\n <p className=\"text-xs text-muted-foreground line-clamp-2 mb-2\">\n {prompt.description}\n </p>\n )}\n\n <div className=\"flex flex-wrap gap-1\">\n {variables.length > 0 && (\n <Badge variant=\"outline\" className=\"text-xs\">\n {variables.length} variable{variables.length !== 1 ? \"s\" : \"\"}\n </Badge>\n )}\n {prompt.tags?.slice(0, 2).map((tag) => (\n <Badge key={tag} variant=\"secondary\" className=\"text-xs\">\n {tag}\n </Badge>\n ))}\n {prompt.tags && prompt.tags.length > 2 && (\n <Badge variant=\"secondary\" className=\"text-xs\">\n +{prompt.tags.length - 2}\n </Badge>\n )}\n </div>\n </button>\n );\n}\n","/**\n * Formats a variable name from snake_case to Title Case for display\n *\n * @param variable - The variable name to format (e.g., \"customer_name\")\n * @returns Formatted string in Title Case (e.g., \"Customer Name\")\n *\n * @example\n * formatVariableName(\"customer_name\") // Returns: \"Customer Name\"\n * formatVariableName(\"issue_id\") // Returns: \"Issue Id\"\n * formatVariableName(\"firstName\") // Returns: \"FirstName\"\n */\nexport function formatVariableName(variable: string): string {\n if (!variable) return \"\";\n\n return variable\n .split(\"_\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n","import { useState, useEffect } from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Label } from \"@/components/ui/label\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { formatVariableName } from \"@/lib/prompts/format-variable-name\";\n\ninterface PromptVariableFormProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n variables: string[];\n promptName: string;\n onSubmit: (values: Record<string, string>) => void;\n}\n\nexport function PromptVariableForm({\n open,\n onOpenChange,\n variables,\n promptName,\n onSubmit,\n}: PromptVariableFormProps) {\n const [values, setValues] = useState<Record<string, string>>({});\n\n // Initialize values when variables change\n useEffect(() => {\n const initialValues: Record<string, string> = {};\n variables.forEach((variable) => {\n initialValues[variable] = \"\";\n });\n setValues(initialValues);\n }, [variables]);\n\n const handleValueChange = (variable: string, value: string) => {\n setValues((prev) => ({\n ...prev,\n [variable]: value,\n }));\n };\n\n const handleSubmit = () => {\n onSubmit(values);\n setValues({});\n };\n\n const allFieldsFilled = variables.every((variable) => values[variable]?.trim());\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-md\">\n <DialogHeader>\n <DialogTitle>Fill in Variables</DialogTitle>\n <DialogDescription>\n Complete the following fields for \"{promptName}\"\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"space-y-4 py-4\">\n {variables.map((variable) => (\n <div key={variable} className=\"space-y-2\">\n <Label htmlFor={variable}>{formatVariableName(variable)}</Label>\n <Input\n id={variable}\n placeholder={`Enter ${formatVariableName(variable).toLowerCase()}...`}\n value={values[variable] || \"\"}\n onChange={(e) => handleValueChange(variable, e.target.value)}\n />\n </div>\n ))}\n </div>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => onOpenChange(false)}>\n Cancel\n </Button>\n <Button onClick={handleSubmit} disabled={!allFieldsFilled}>\n Insert Prompt\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","/**\n * Fills a prompt template by replacing all {{variable}} placeholders with provided values\n *\n * @param content - The prompt template content with {{variable}} placeholders\n * @param values - Object mapping variable names to their replacement values\n * @returns The filled prompt with all variables replaced\n *\n * @example\n * fillPromptVariables(\n * \"Hello {{name}}, your issue {{issue_id}} is resolved\",\n * { name: \"John\", issue_id: \"123\" }\n * )\n * // Returns: \"Hello John, your issue 123 is resolved\"\n */\nexport function fillPromptVariables(\n content: string,\n values: Record<string, string>\n): string {\n if (!content) return \"\";\n if (!values || Object.keys(values).length === 0) return content;\n\n let filled = content;\n\n for (const [key, value] of Object.entries(values)) {\n // Escape special regex characters in the key\n const escapedKey = key.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const regex = new RegExp(`\\\\{\\\\{${escapedKey}\\\\}\\\\}`, \"g\");\n filled = filled.replace(regex, value || \"\");\n }\n\n return filled;\n}\n\n/**\n * Checks if a prompt has any unfilled variables\n *\n * @param content - The prompt content to check\n * @returns true if there are unfilled {{variable}} placeholders, false otherwise\n *\n * @example\n * hasUnfilledVariables(\"Hello {{name}}\") // Returns: true\n * hasUnfilledVariables(\"Hello John\") // Returns: false\n */\nexport function hasUnfilledVariables(content: string): boolean {\n if (!content) return false;\n return /\\{\\{[a-zA-Z0-9_]+\\}\\}/.test(content);\n}\n","\"use client\"\n\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\";\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport { ChatRequestOptions, DefaultChatTransport, DynamicToolUIPart, FileUIPart, lastAssistantMessageIsCompleteWithToolCalls, UIMessage } from \"ai\";\nimport { useChat } from '@ai-sdk/react';\nimport * as React from \"react\";\nimport { useContext, useEffect, useState, useMemo } from \"react\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { StopIcon } from \"@radix-ui/react-icons\";\nimport { AgentMessage, AgentSession } from \"@EXULU_SHARED/models/agent-session\";\nimport { Loader } from '@/components/ai-elements/loader';\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport {\n GET_AGENT_MESSAGES,\n GET_USER_BY_ID,\n UPDATE_AGENT_SESSION_RBAC,\n GET_PROMPT_BY_ID,\n GET_PROJECT_BY_ID,\n} from \"@/queries/queries\";\nimport { getToken } from \"@/util/api\"\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport { ConfigContext } from \"@/components/config-context\";\nimport { ArrowUp, ChevronsUpDown, FileText } from \"lucide-react\";\nimport { useToast } from \"@/components/ui/use-toast\"\nimport { SaveWorkflowModal } from \"@/components/save-workflow-modal\";\nimport { Button } from \"@/components/ui/button\";\nimport { Switch } from \"@/components/ui/switch\";\nimport { CardContent, CardHeader } from \"@/components/ui/card\";\nimport { Conversation, ConversationContent } from \"@/components/ai-elements/conversation\";\nimport { useIsMobile } from \"@/hooks/use-mobile\";\nimport { RBACControl } from \"@/components/rbac\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport { Loading } from \"@/components/ui/loading\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { checkChatSessionWriteAccess } from \"@/lib/check-chat-session-write-access\";\nimport UppyDashboard, { FileItem, getPresignedUrl } from \"@/components/uppy-dashboard\";\nimport { Item } from \"@/types/models/item\";\nimport { ExclamationTriangleIcon } from \"@radix-ui/react-icons\";\nimport {\n Context,\n ContextTrigger,\n ContextContent,\n ContextContentHeader,\n ContextContentBody,\n ContextInputUsage,\n ContextOutputUsage,\n ContextReasoningUsage,\n ContextCacheUsage,\n} from '@/components/ai-elements/context';\nimport { Progress } from \"@/components/ui/progress\";\nimport {\n Tool,\n ToolContent,\n ToolHeader,\n ToolOutput,\n ToolInput,\n} from '@/components/ai-elements/tool';\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { MessageRenderer } from \"@/components/message-renderer\";\nimport { Response } from '@/components/ai-elements/response';\nimport AgentVisual from \"@/components/lottie\";\nimport { useTheme } from \"next-themes\";\nimport Logo from \"@/components/logo\";\nimport { PromptSelectorModal } from \"./components/prompt-selector-modal\";\nimport { PromptVariableForm } from \"./components/prompt-variable-form\";\nimport { PromptLibrary } from \"@/types/models/prompt-library\";\nimport { extractVariables, fillPromptVariables } from \"@/lib/prompts\";\nimport { useIncrementPromptUsage } from \"@/hooks/use-prompts\";\nimport { Project } from \"@/types/models/project\";\nimport Link from \"next/link\";\n\nexport interface ChatProps {\n chatId?: string;\n agentId?: string;\n messages?: UIMessage[];\n input?: string;\n handleInputChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n addToolResult?: any\n handleSubmit?: (\n e: React.FormEvent<HTMLFormElement>,\n chatRequestOptions?: ChatRequestOptions,\n ) => void;\n isLoading: boolean;\n onFilesSelected: (file: any[]) => void;\n error?: undefined | Error;\n stop?: () => void;\n}\n\nexport function ChatLayout({\n session,\n agent,\n initialPromptId\n}: {\n session: AgentSession;\n agent: Agent;\n initialPromptId?: string;\n}) {\n\n const [error, setError] = useState<string | null>(null);\n const configContext = React.useContext(ConfigContext);\n const isMobile = useIsMobile();\n const { theme } = useTheme();\n const [files, setFiles] = useState<FileUIPart[] | null>(null);\n const [fileItems, setFileItems] = useState<string[] | null>(null);\n const { user } = useContext(UserContext);\n const [copyingTableId, setCopyingTableId] = useState<string | null>(null);\n const [showSaveWorkflowModal, setShowSaveWorkflowModal] = useState(false);\n const [input, setInput] = useState('');\n const [disabledTools, setDisabledTools] = useState<string[]>([]);\n const inputRef = React.useRef<HTMLTextAreaElement>(null);\n const { toast } = useToast()\n\n // Prompt selector state\n const [promptSelectorOpen, setPromptSelectorOpen] = useState(false);\n const [promptVariableFormOpen, setPromptVariableFormOpen] = useState(false);\n const [selectedPrompt, setSelectedPrompt] = useState<PromptLibrary | null>(null);\n const [incrementPromptUsage] = useIncrementPromptUsage();\n\n const [rbac, setRbac] = useState({\n rights_mode: session?.rights_mode || 'private',\n users: session?.RBAC?.users || [],\n roles: session?.RBAC?.roles || [],\n // projects: session?.RBAC?.projects || []\n })\n\n const creatorQuery = useQuery(GET_USER_BY_ID, {\n variables: { id: session.created_by },\n skip: !session.created_by\n })\n\n const projectQuery = useQuery<{\n projectById: Project;\n }>(GET_PROJECT_BY_ID, {\n variables: { id: session.project },\n skip: !session.project\n })\n\n // Fetch initial prompt if provided\n const { data: initialPromptData } = useQuery<{\n prompt_library_itemById: PromptLibrary;\n }>(GET_PROMPT_BY_ID, {\n variables: { id: initialPromptId },\n skip: !initialPromptId,\n });\n\n // Track if we've already processed the initial prompt\n const [initialPromptProcessed, setInitialPromptProcessed] = useState(false);\n\n const [updateAgentSessionRbac, updateAgentSessionRbacResult] = useMutation(UPDATE_AGENT_SESSION_RBAC);\n const [tokenCounts, setTokenCounts] = useState<MessageMetadata>({\n totalTokens: 0,\n reasoningTokens: 0,\n inputTokens: 0,\n outputTokens: 0,\n cachedInputTokens: 0\n });\n\n useQuery<{\n agent_messagesPagination: {\n items: AgentMessage[]\n };\n }>(GET_AGENT_MESSAGES, {\n returnPartialData: true,\n fetchPolicy: \"network-only\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 50,\n filters: {\n session: {\n eq: session.id\n }\n },\n },\n onCompleted: (data) => {\n if (data?.agent_messagesPagination) {\n const messages = data?.agent_messagesPagination.items.map((item) => (JSON.parse(item.content)))\n setMessages(messages as any[]);\n }\n },\n });\n\n const {\n messages,\n sendMessage,\n status,\n stop,\n regenerate,\n setMessages,\n addToolResult\n } = useChat({\n sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls,\n // Throttle the messages and data updates to 50ms:\n experimental_throttle: 50,\n async onToolCall({ toolCall }) {\n // Check if it's a dynamic tool first for proper type narrowing\n if (toolCall.dynamic) {\n return;\n }\n\n if (toolCall.toolName === 'getLocation') {\n const cities = ['New York', 'Los Angeles', 'Chicago', 'San Francisco'];\n\n // No await - avoids potential deadlocks\n addToolResult({\n tool: 'confirm-tool-call',\n toolCallId: toolCall.toolCallId,\n output: cities[Math.floor(Math.random() * cities.length)],\n });\n }\n },\n onError: (error) => {\n console.log(\"error!!\", error?.message)\n try {\n const { message } = JSON.parse(error?.message)\n setError(message)\n } catch (x) {\n setError(error.message)\n }\n },\n transport: new DefaultChatTransport({\n api: `${configContext?.backend}${agent.slug}/${agent.id}`,\n // only send the last message to the server: we load\n // the history from the database.\n prepareSendMessagesRequest: async ({ messages, id: chatId, body }) => {\n const token = await getToken()\n if (!token) {\n throw new Error(\"No valid session token available.\")\n }\n return {\n body: {\n ...body,\n message: messages[messages.length - 1],\n id: chatId,\n session: session.id,\n }, headers: {\n User: user.id,\n Session: session.id,\n Authorization: `Bearer ${token}`,\n Stream: \"true\"\n }\n };\n },\n })\n });\n\n type MessageMetadata = {\n totalTokens: number;\n reasoningTokens: number;\n inputTokens: number;\n outputTokens: number;\n cachedInputTokens: number;\n }\n\n useEffect(() => {\n const totalCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.totalTokens || 0);\n }, 0);\n const reasoningCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.reasoningTokens || 0);\n }, 0);\n const inputCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.inputTokens || 0);\n }, 0);\n const outputCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.outputTokens || 0);\n }, 0);\n const cachedInputCount = messages?.reduce((acc, message) => {\n const messageMetadata: MessageMetadata = message.metadata as any;\n return acc + (messageMetadata?.cachedInputTokens || 0);\n }, 0);\n setTokenCounts({\n totalTokens: totalCount,\n reasoningTokens: reasoningCount,\n inputTokens: inputCount,\n outputTokens: outputCount,\n cachedInputTokens: cachedInputCount\n })\n }, [messages])\n\n // Check if conversation has enough content for a workflow\n const canCreateWorkflow = useMemo(() => {\n const userMessages = messages?.filter(m => m.role === 'user') || [];\n const assistantMessages = messages?.filter(m => m.role === 'assistant') || [];\n return userMessages.length >= 1 && assistantMessages.length >= 1;\n }, [messages]);\n\n // Prompt selector handlers\n const handleSelectPrompt = (prompt: PromptLibrary) => {\n const variables = extractVariables(prompt.content);\n\n if (variables.length > 0) {\n // Prompt has variables, show form\n setSelectedPrompt(prompt);\n setPromptVariableFormOpen(true);\n } else {\n // No variables, insert directly\n insertPromptIntoChat(prompt.content);\n\n // Increment usage count\n incrementPromptUsage({\n variables: {\n id: prompt.id,\n usage_count: (prompt.usage_count || 0) + 1,\n },\n });\n }\n };\n\n const handleSubmitVariables = (values: Record<string, string>) => {\n if (!selectedPrompt) return;\n\n const filledPrompt = fillPromptVariables(selectedPrompt.content, values);\n insertPromptIntoChat(filledPrompt);\n\n // Increment usage count\n incrementPromptUsage({\n variables: {\n id: selectedPrompt.id,\n usage_count: (selectedPrompt.usage_count || 0) + 1,\n },\n });\n\n setPromptVariableFormOpen(false);\n setSelectedPrompt(null);\n };\n\n const insertPromptIntoChat = (promptText: string) => {\n // Append to existing input or replace if empty\n setInput((prev) => (prev ? `${prev}\\n\\n${promptText}` : promptText));\n\n // Focus the input\n inputRef.current?.focus();\n };\n\n // Handle initial prompt auto-fill when navigating from empty state\n useEffect(() => {\n if (initialPromptData?.prompt_library_itemById && !initialPromptProcessed) {\n const prompt = initialPromptData.prompt_library_itemById;\n setInitialPromptProcessed(true);\n handleSelectPrompt(prompt);\n }\n }, [initialPromptData, initialPromptProcessed]);\n\n const convertTableToCSV = (tableElement: HTMLTableElement): string => {\n const rows = Array.from(tableElement.querySelectorAll('tr'));\n const csvRows: string[] = [];\n\n rows.forEach(row => {\n const cells = Array.from(row.querySelectorAll('th, td'));\n const csvRow = cells.map(cell => {\n // Escape quotes and wrap in quotes if contains comma, newline, or quote\n let text = cell.textContent || '';\n text = text.replace(/\"/g, '\"\"');\n if (text.includes(',') || text.includes('\\n') || text.includes('\"')) {\n text = `\"${text}\"`;\n }\n return text;\n });\n csvRows.push(csvRow.join(','));\n });\n\n return csvRows.join('\\n');\n };\n\n const copyTableAsCSV = async (tableElement: HTMLTableElement, tableId: string) => {\n setCopyingTableId(tableId);\n\n try {\n const csv = convertTableToCSV(tableElement);\n await navigator.clipboard.writeText(csv);\n\n toast({\n title: \"Table copied!\",\n description: \"Table data has been copied to clipboard as CSV\",\n });\n\n // Reset the copying state after a short delay\n setTimeout(() => {\n setCopyingTableId(null);\n }, 2000);\n } catch (err) {\n toast({\n title: \"Copy failed\",\n description: \"Failed to copy table to clipboard\",\n variant: \"destructive\",\n });\n setCopyingTableId(null);\n }\n };\n\n const onSubmit = async (\n e: React.FormEvent,\n options?: ChatRequestOptions,\n ) => {\n e.preventDefault();\n sendMessage({\n text: input,\n files: files || []\n }, {\n body: {\n disabledTools: disabledTools,\n },\n });\n setInput('');\n setFiles(null);\n setFileItems(null);\n };\n\n const handleKeyPress = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n onSubmit(e as unknown as React.FormEvent<HTMLFormElement>);\n }\n };\n\n const toggleTool = (id: string) => {\n setDisabledTools(prev =>\n prev.includes(id)\n ? prev.filter(name => name !== id)\n : [...prev, id]\n );\n };\n\n const writeAccess = checkChatSessionWriteAccess(session, user);\n\n const updateMessageFiles = async (items: Item[]) => {\n const files = await Promise.all(items.map(async (item) => {\n\n if (!item.s3key) {\n // Take all item fields and turn into a data url\n let content = \"\";\n Object.entries(item).forEach(([key, value]) => {\n content += `${key}: ${value}\\n`\n })\n return {\n type: \"file\" as const,\n mediaType: item.type,\n filename: item.name,\n url: `data:text/plain;base64,${btoa(content)}`\n }\n }\n\n return {\n type: \"file\" as const,\n mediaType: item.type,\n filename: item.name,\n url: await getPresignedUrl(item.s3key)\n }\n\n }))\n setFiles(files)\n }\n\n useEffect(() => {\n if (!fileItems) {\n setFiles(null)\n return;\n }\n updateMessageFiles(fileItems.map(item => ({\n s3key: item,\n name: item,\n type: \"file\"\n })))\n }, [fileItems])\n\n return (\n <div className=\"flex flex-col w-full mx-auto relative size-full\">\n <div className=\"mx-auto relative size-full\">\n <div className=\"flex h-full w-full max-h-[calc(100vh)] overflow-y-auto overflow-x-hidden\">\n {/* Main conversation area */}\n <div className=\"flex flex-col flex-1 pb-6\">\n {/* @ts-ignore */}\n <Conversation className=\"overflow-y-hidden\">\n {/* Save as Workflow button - appears when conversation has content */}\n {/* {canCreateWorkflow ? (\n <div className=\"flex justify-between absolute top-0 left-0 right-0 items-center px-4 py-2 border-b z-10 dark:bg-black bg-white\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Workflow className=\"w-4 h-4\" />\n Turn this conversation into a reusable workflow\n </div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setShowSaveWorkflowModal(true)}\n >\n <Plus className=\"w-4 h-4 mr-2\" />\n Save as Workflow\n </Button>\n </div>\n ) : null} */}\n {\n /* Show a bar that fills up depending on the total tokens used */\n agent.maxContextLength ? (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className={`absolute w-full ${canCreateWorkflow ? 'top-0' /* top-10 */ : 'top-0'}`}>\n <Progress className=\"w-full rounded-none\" value={tokenCounts.totalTokens / agent.maxContextLength * 100} />\n <div className=\"justify-between flex felx-row\">\n <div></div>\n <Context\n maxTokens={agent.maxContextLength || 0}\n usedTokens={tokenCounts.totalTokens}\n usage={{\n inputTokens: tokenCounts.inputTokens,\n outputTokens: tokenCounts.outputTokens,\n totalTokens: tokenCounts.totalTokens,\n cachedInputTokens: tokenCounts.cachedInputTokens,\n reasoningTokens: tokenCounts.reasoningTokens,\n }}>\n <ContextTrigger />\n <ContextContent>\n <ContextContentHeader />\n <ContextContentBody>\n {/* @ts-ignore */}\n <ContextInputUsage />\n {/* @ts-ignore */}\n <ContextOutputUsage />\n {/* @ts-ignore */}\n <ContextReasoningUsage />\n {/* @ts-ignore */}\n <ContextCacheUsage />\n </ContextContentBody>\n </ContextContent>\n </Context>\n </div>\n </div>\n </TooltipTrigger>\n <TooltipContent>\n <p>{Intl.NumberFormat('en-US').format(tokenCounts.totalTokens)} / {Intl.NumberFormat('en-US').format(agent.maxContextLength)} tokens in the context window used.</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ) : null}\n {messages?.length === 0 ?\n <div className=\"size-full flex justify-center items-center\">\n <div className=\"flex flex-col gap-4 items-center max-w-2xl w-full px-4 my-auto\">\n <Logo alt=\"Logo\" width={120} height={120} className=\"h-30 w-40 object-contain\" />\n <p className=\"text-center text-lg text-muted-foreground\">\n How can I help you today?\n </p>\n\n <AgentVisual agent={agent} status={status} className=\"w-80\" />\n\n {/* Workflow Banner for new users */}\n {/* <Card className=\"w-full mb-6\">\n <CardHeader className=\"text-center\">\n <CardTitle className=\"flex items-center justify-center gap-2\">\n <Workflow className=\"w-5 h-5\" />\n Create Reusable Workflows\n </CardTitle>\n <CardDescription>\n Turn your conversations into templates that can be reused with different inputs. Perfect for recurring tasks and processes.\n </CardDescription>\n </CardHeader>\n <CardContent className=\"text-center\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled\n className=\"text-muted-foreground\"\n >\n <Plus className=\"w-4 h-4 mr-2\" />\n Save as Workflow\n <span className=\"ml-2 text-xs\">(Available after chatting)</span>\n </Button>\n </CardContent>\n </Card> */}\n </div>\n </div> : null}\n {/* @ts-ignore */}\n <ConversationContent className=\"px-6\">\n {messages?.length > 0 && (\n <MessageRenderer\n messages={messages}\n config={{\n marginTopFirstMessage: 'mt-12'\n }}\n status={status}\n onRegenerate={regenerate}\n onAddToolResult={addToolResult}\n UntypedToolPartComponent={UntypedToolPart}\n addToContext={(item) => {\n setFileItems([...(fileItems || []), item])\n }}\n writeAccess={writeAccess}\n />\n )}\n\n {status === \"streaming\" ? <Loader /> : null}\n\n </ConversationContent>\n </Conversation>\n {\n !writeAccess && (\n <div className=\"px-6 mx-auto mt-3\">\n <Badge variant=\"outline\">Read access only</Badge>\n </div>\n )\n }\n {error && (\n <div className=\"mx-5\">\n <Alert className=\"mb-3\" variant=\"destructive\">\n <ExclamationTriangleIcon className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n {error}\n </AlertDescription>\n </Alert>\n </div>\n )}\n {writeAccess && (\n <form\n onSubmit={onSubmit}\n className=\"px-6 border-input border rounded flex mx-5 p-5 flex-col gap-2\">\n <div className=\"items-center flex relative gap-2 w-full\">\n {\n configContext?.fileUploads?.s3endpoint && (<UppyDashboard\n id={`chat-${session.id}`}\n selectionLimit={10}\n allowedFileTypes={[\n ...agent.capabilities?.audio || [],\n ...agent.capabilities?.video || [],\n ...agent.capabilities?.files || [],\n ...agent.capabilities?.images || [],\n ]}\n dependencies={[]}\n onConfirm={(items) => {\n setFileItems(items)\n }}\n />)\n }\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon\"\n className=\"shrink-0\"\n onClick={() => setPromptSelectorOpen(true)}\n >\n <FileText className=\"h-5 w-5 text-muted-foreground\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Insert prompt from library</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <TextareaAutosize\n autoComplete=\"off\"\n autoFocus={true}\n minRows={1}\n value={input}\n ref={inputRef}\n onKeyDown={handleKeyPress}\n onChange={(e) => setInput(e.target.value)}\n name=\"message\"\n placeholder={`Ask me anything...`}\n className=\"max-h-40 px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 w-full items-center h-28 resize-none overflow-hidden dark:bg-card/35\"\n />\n {status !== \"streaming\" ? (\n <Button\n className=\"shrink-0\"\n variant=\"secondary\"\n size=\"icon\"\n disabled={status === \"submitted\" || !input?.trim()}\n >\n <ArrowUp className=\" size-6 text-muted-foreground\" />\n </Button>\n ) : (\n <Button\n className=\"shrink-0\"\n variant=\"secondary\"\n size=\"icon\"\n onClick={stop}\n >\n <StopIcon className=\"size-6 text-muted-foreground\" />\n </Button>\n )}\n </div>\n <div className=\"grid grid-cols-3 sm:grid-cols-4 gap-3\">\n {/* Show selected files */}\n {fileItems?.map((item) => (\n <FileItem s3Key={item} disabled={true} active={false} onRemove={() => {\n setFileItems(fileItems?.filter((i) => i !== item))\n }} />\n ))}\n </div>\n </form>\n )}\n {/* Save Workflow Modal */}\n <SaveWorkflowModal\n isOpen={showSaveWorkflowModal}\n onClose={() => setShowSaveWorkflowModal(false)}\n messages={messages || []}\n sessionTitle={session.title}\n />\n\n {/* Prompt Selector Modal */}\n <PromptSelectorModal\n open={promptSelectorOpen}\n onOpenChange={setPromptSelectorOpen}\n onSelectPrompt={handleSelectPrompt}\n agentId={agent.id}\n />\n\n {/* Prompt Variable Form */}\n {selectedPrompt && (\n <PromptVariableForm\n open={promptVariableFormOpen}\n onOpenChange={setPromptVariableFormOpen}\n variables={extractVariables(selectedPrompt.content)}\n promptName={selectedPrompt.name}\n onSubmit={handleSubmitVariables}\n />\n )}\n </div>\n\n {/* Agent Details Sidebar */}\n {writeAccess && (\n <div className=\"w-80 border-l bg-muted/20 p-4 space-y-4\">\n {\n messages?.length > 0 && (\n <div>\n <AgentVisual agent={agent} status={status} className=\"w-80\" />\n </div>\n )\n }\n <div>\n <p className=\"text-sm font-medium text-center\">{agent.name}</p>\n </div>\n {agent.description && (\n <p className=\"text-xs text-muted-foreground mt-1\">\n {agent.description}\n </p>\n )}\n <hr className=\"my-2\" />\n <div className=\"mt-1\">\n <div className=\"border rounded\">\n {\n creatorQuery.loading && (\n <div className=\"flex flex-row justify-between p-3\">\n <p className=\"text-sm font-medium\">Session created by</p>\n <Loading className=\"ml-2\" />\n </div>\n )\n }\n {creatorQuery.data?.userById && !creatorQuery.loading && (\n <div className=\"flex flex-row justify-between p-3\">\n <p className=\"text-sm font-medium\">Session created by</p>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <p className=\"text-sm font-medium capitalize\">{creatorQuery.data.userById.name}</p>\n </div>\n </div>\n )}\n </div>\n </div>\n {session.project && (\n <div className=\"mt-1\">\n <div className=\"border rounded\">\n {\n projectQuery.loading && (\n <div className=\"flex flex-row justify-between p-3\">\n <p className=\"text-sm font-medium\">This chat is part of a project:</p>\n <Loading className=\"ml-2\" />\n </div>\n )\n }\n {projectQuery.data?.projectById && !projectQuery.loading && (\n <div className=\"flex flex-col p-3 gap-2\">\n <p className=\"text-sm font-medium\">Project</p>\n <Link\n href={`/projects/${session.project}`}\n className=\"text-sm text-primary hover:underline\"\n >\n {projectQuery.data.projectById.name}\n </Link>\n {projectQuery.data.projectById.description && (\n <p className=\"text-xs text-muted-foreground\">\n {projectQuery.data.projectById.description}\n </p>\n )}\n </div>\n )}\n </div>\n </div>\n )}\n <div>\n <p className=\"text-xs font-medium text-muted-foreground pt-2\">\n You can disable tools for individual messages in this session by clicking the switch:</p>\n <TooltipProvider>\n <div className=\"space-y-1 pt-2\">\n {agent.tools && agent.tools.length > 0 ? (\n agent.tools.map((tool) => {\n const isEnabled = !disabledTools.includes(tool.id);\n return (\n <Tooltip key={tool.name}>\n <TooltipTrigger asChild>\n <div className=\"p-2 rounded-md border text-xs bg-background flex items-center justify-between\">\n <p className=\"font-medium flex items-center gap-2\">\n {tool.name}\n </p>\n <Switch\n checked={isEnabled}\n onCheckedChange={() => toggleTool(tool.id)}\n />\n </div>\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-[200px] text-wrap\">{tool.description}</p>\n </TooltipContent>\n </Tooltip>\n );\n })\n ) : (\n <p className=\"text-xs text-muted-foreground\">No tools enabled.</p>\n )}\n </div>\n </TooltipProvider>\n </div>\n <div className=\"mt-1\">\n <Collapsible className=\"border rounded\">\n <CardHeader className=\"px-3 py-1\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex flex-col\">\n <p className=\"text-sm font-medium\">\n Access control ({session.rights_mode})\n </p>\n </div>\n <CollapsibleTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n <ChevronsUpDown className=\"size-4\" />\n <span className=\"sr-only\">Toggle</span>\n </Button>\n </CollapsibleTrigger>\n </div>\n </CardHeader>\n <CollapsibleContent>\n <CardContent className=\"space-y-4 p-3\">\n <RBACControl\n allowedModes={['private', 'users', 'roles']}\n initialRightsMode={session.rights_mode}\n initialUsers={session.RBAC?.users}\n initialRoles={session.RBAC?.roles}\n // initialProjects={session.RBAC?.projects}\n onChange={(rights_mode, users, roles) => {\n setRbac({\n rights_mode,\n users,\n roles,\n // projects\n })\n }}\n />\n <Button disabled={updateAgentSessionRbacResult.loading} onClick={() => {\n updateAgentSessionRbac({\n variables: {\n id: session.id,\n rights_mode: rbac.rights_mode,\n RBAC: {\n users: rbac.users,\n roles: rbac.roles,\n // projects: rbac.projects\n }\n }\n })\n }}>Save access rights {updateAgentSessionRbacResult.loading && <Loading className=\"ml-2\" />} </Button>\n </CardContent>\n </CollapsibleContent>\n </Collapsible>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n\nconst UntypedToolPart = ({ untypedToolPart, callId, addToContext }: { untypedToolPart: DynamicToolUIPart, callId: string, addToContext: (item: string) => void }) => {\n\n const output = untypedToolPart.output as any;\n console.log(\"output\", output)\n // Replace - and _, replace 'tool-' prefix\n let styleToolName = untypedToolPart.type?.replace(/ /g, \"-\")\n styleToolName = styleToolName?.replace(/tool-/g, \"\")\n styleToolName = styleToolName?.replace(/_/g, \" \")\n styleToolName = styleToolName?.charAt(0).toUpperCase() + styleToolName?.slice(1)\n\n return <Tool key={callId} className=\"mt-3\" defaultOpen={false}>\n <ToolHeader className=\"capitalize\" type={styleToolName as `tool-${string}`} state={untypedToolPart.state} />\n <ToolContent>\n <ToolInput input={untypedToolPart.input} />\n <ToolOutput\n output={\n output ?\n <Response>\n {typeof output === 'string' ?\n output : JSON.stringify(output, null, 2)\n }\n </Response>\n : !untypedToolPart.errorText && <Skeleton className=\"h-4 w-full\" />\n }\n errorText={untypedToolPart.errorText}\n />\n </ToolContent>\n </Tool >\n}","\"use client\"\n\nimport * as React from \"react\";\nimport { useSearchParams } from \"next/navigation\";\nimport { ChatLayout } from \"@/app/(application)/chat/[agent]/[session]/chat\";\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\";\nimport { ExclamationTriangleIcon } from \"@radix-ui/react-icons\";\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_AGENT_BY_ID, GET_AGENT_SESSION_BY_ID } from \"@/queries/queries\";\nimport { AgentSession } from \"@/types/models/agent-session\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default function SessionsPage({\n params,\n}: {\n params: { session: string, agent: string };\n}) {\n\n const searchParams = useSearchParams();\n const promptId = searchParams.get(\"promptId\");\n\n const { data: sessionData, loading: sessionLoading, error: sessionError } = useQuery<{\n agent_sessionById: AgentSession;\n }>(GET_AGENT_SESSION_BY_ID, {\n returnPartialData: true,\n fetchPolicy: \"network-only\",\n nextFetchPolicy: \"network-only\",\n variables: {\n id: params.session\n },\n });\n\n // Wait for the session to be loaded before loading \n // the agent. Because then we know if the session has\n // a project associated with it, which the backend\n // uses to ingest a project retrieval tool.\n const { data: agentData, loading: agentLoading, error: agentError } = useQuery<{\n agentById: Agent\n }>(GET_AGENT_BY_ID, {\n skip: !sessionData?.agent_sessionById,\n variables: {\n id: params.agent,\n project: sessionData?.agent_sessionById?.project || undefined\n },\n });\n\n if (sessionLoading || agentLoading) {\n return <div>\n <Skeleton className=\"w-full h-full\" />\n </div>\n }\n\n if (sessionError || agentError) {\n return <Alert variant=\"destructive\">\n <ExclamationTriangleIcon className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n Error loading agent {agentError?.message || sessionError?.message}.\n </AlertDescription>\n </Alert>\n }\n\n if (!agentData?.agentById || !sessionData?.agent_sessionById) {\n return <Alert variant=\"destructive\">\n <ExclamationTriangleIcon className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n Agent or session not found.\n </AlertDescription>\n </Alert>\n }\n\n return <ChatLayout\n session={sessionData?.agent_sessionById}\n agent={agentData.agentById}\n initialPromptId={promptId || undefined}\n />;\n}\n","\"use client\";\n\nimport { Agent } from \"@/types/models/agent\";\nimport { useLottie } from \"lottie-react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { getPresignedUrl } from \"./uppy-dashboard\";\n\nconst AgentVisual = ({ agent, status, className }: { agent: Agent, status: 'submitted' | 'streaming' | 'ready' | 'error', className?: string }) => {\n return <LottieVisual className={className} agent={agent} status={status} />\n};\n\nconst LottieVisual = ({ agent, status, className }: { agent: Agent, status: 'submitted' | 'streaming' | 'ready' | 'error', className?: string }) => {\n\n const { data: defaultIdleData } = useQuery({\n queryKey: ['defaultAnimation', 'idle'],\n queryFn: async () => {\n const response = await fetch(\"/agent-idle.json\");\n return response.json();\n },\n staleTime: 60 * 60 * 1000, // 1 hour\n enabled: !agent.animation_idle,\n });\n\n const { data: defaultRespondingData } = useQuery({\n queryKey: ['defaultAnimation', 'responding'],\n queryFn: async () => {\n const response = await fetch(\"/agent-responding.json\");\n return response.json();\n },\n staleTime: 60 * 60 * 1000, // 1 hour\n enabled: !agent.animation_responding,\n });\n\n // Fetch custom animation data if available\n const { data: customIdleData } = useQuery({\n queryKey: ['customAnimation', agent.animation_idle],\n queryFn: async () => {\n if (!agent.animation_idle) return null;\n const url = await getPresignedUrl(agent.animation_idle);\n const response = await fetch(url);\n return response.json();\n },\n enabled: !!agent.animation_idle,\n staleTime: 5 * 60 * 1000, // 5 minutes\n });\n\n const { data: customRespondingData } = useQuery({\n queryKey: ['customAnimation', agent.animation_responding],\n queryFn: async () => {\n if (!agent.animation_responding) return null;\n const url = await getPresignedUrl(agent.animation_responding);\n const response = await fetch(url);\n return response.json();\n },\n enabled: !!agent.animation_responding,\n staleTime: 5 * 60 * 1000, // 5 minutes\n });\n\n // Map status to animation configuration\n const getAnimationOptions = () => {\n switch (status) {\n case 'submitted':\n return {\n animationData: customIdleData || defaultIdleData,\n loop: true,\n autoplay: true,\n };\n case 'streaming':\n return {\n animationData: customRespondingData || defaultRespondingData,\n loop: true,\n autoplay: true,\n };\n case 'ready':\n return {\n animationData: customIdleData || defaultIdleData,\n loop: true,\n autoplay: true,\n };\n case 'error':\n return {\n animationData: customIdleData || defaultIdleData,\n loop: true,\n autoplay: true,\n };\n default:\n return {\n animationData: customIdleData || defaultIdleData,\n loop: true,\n autoplay: true,\n };\n }\n };\n\n const { View } = useLottie(getAnimationOptions());\n\n return (\n <>\n <div className=\"\">\n <div className={className}>{View}</div>\n </div>\n </>\n );\n}\n\nexport default AgentVisual;","\"use client\";\n\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import { useMutation, useQuery } from \"@apollo/client\";\nimport {\n CREATE_PROMPT,\n CREATE_PROMPT_FAVORITE,\n DELETE_PROMPT,\n DELETE_PROMPT_FAVORITE,\n GET_PROMPT_BY_ID,\n GET_PROMPTS,\n GET_USER_PROMPT_FAVORITES,\n INCREMENT_PROMPT_FAVORITES,\n INCREMENT_PROMPT_USAGE,\n UPDATE_PROMPT,\n} from \"@/queries/queries\";\nimport {\n CreatePromptInput,\n PromptFavorite,\n PromptLibrary,\n UpdatePromptInput,\n} from \"@/types/models/prompt-library\";\n\ninterface PromptsData {\n prompt_libraryPagination: {\n pageInfo: {\n pageCount: number;\n itemCount: number;\n currentPage: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n };\n items: PromptLibrary[];\n };\n}\n\ninterface PromptData {\n prompt_library_itemById: PromptLibrary;\n}\n\ninterface PromptFavoritesData {\n prompt_favoritesPagination: {\n items: PromptFavorite[];\n };\n}\n\n/**\n * Hook to fetch paginated prompts with filtering and sorting\n */\nexport const usePrompts = (variables?: {\n page?: number;\n limit?: number;\n filters?: any[];\n sort?: { field: string; direction: \"ASC\" | \"DESC\" };\n}) => {\n return useQuery<PromptsData>(GET_PROMPTS, {\n variables: {\n page: variables?.page ?? 1,\n limit: variables?.limit ?? 20,\n filters: variables?.filters ?? [],\n sort: variables?.sort ?? { field: \"updatedAt\", direction: \"DESC\" },\n },\n });\n};\n\n/**\n * Hook to fetch a single prompt by ID\n */\nexport const usePrompt = (id: string) => {\n return useQuery<PromptData>(GET_PROMPT_BY_ID, {\n variables: { id },\n skip: !id,\n });\n};\n\n/**\n * Hook to create a new prompt\n */\nexport const useCreatePrompt = () => {\n return useMutation<{ prompt_libraryCreateOne: { item: PromptLibrary } }>(\n CREATE_PROMPT,\n {\n refetchQueries: [{ query: GET_PROMPTS, variables: { page: 1, limit: 20 } }],\n }\n );\n};\n\n/**\n * Hook to update an existing prompt\n */\nexport const useUpdatePrompt = () => {\n return useMutation<{ prompt_libraryUpdateOneById: { item: PromptLibrary } }>(\n UPDATE_PROMPT\n );\n};\n\n/**\n * Hook to delete a prompt\n */\nexport const useDeletePrompt = () => {\n return useMutation<{ prompt_libraryRemoveOneById: { id: string } }>(\n DELETE_PROMPT,\n {\n refetchQueries: [{ query: GET_PROMPTS, variables: { page: 1, limit: 20 } }],\n }\n );\n};\n\n/**\n * Hook to increment prompt usage count\n */\nexport const useIncrementPromptUsage = () => {\n return useMutation<{\n prompt_libraryUpdateOneById: { item: Pick<PromptLibrary, \"id\" | \"usage_count\"> };\n }>(INCREMENT_PROMPT_USAGE);\n};\n\n/**\n * Hook to fetch user's favorited prompts\n */\nexport const useUserPromptFavorites = (userId: number) => {\n return useQuery<PromptFavoritesData>(GET_USER_PROMPT_FAVORITES, {\n variables: { user_id: userId },\n skip: !userId,\n });\n};\n\n/**\n * Hook to create a prompt favorite\n */\nexport const useCreatePromptFavorite = () => {\n return useMutation<{ prompt_favoritesCreateOne: { item: PromptFavorite } }>(\n CREATE_PROMPT_FAVORITE\n );\n};\n\n/**\n * Hook to delete a prompt favorite\n */\nexport const useDeletePromptFavorite = () => {\n return useMutation<{ prompt_favoritesRemoveOneById: { id: string } }>(\n DELETE_PROMPT_FAVORITE\n );\n};\n\n/**\n * Hook to toggle favorite status of a prompt\n * Handles both creating and deleting favorites, and updating the favorite count\n */\nexport const useTogglePromptFavorite = () => {\n const [createFavorite] = useCreatePromptFavorite();\n const [deleteFavorite] = useDeletePromptFavorite();\n const [incrementFavorites] = useMutation(INCREMENT_PROMPT_FAVORITES);\n\n const toggleFavorite = async (\n promptId: string,\n userId: number,\n isFavorited: boolean,\n currentFavoriteCount: number,\n favoriteId?: string\n ) => {\n if (isFavorited && favoriteId) {\n // Remove favorite\n await deleteFavorite({ variables: { id: favoriteId } });\n await incrementFavorites({\n variables: {\n id: promptId,\n favorite_count: Math.max(0, currentFavoriteCount - 1),\n },\n });\n } else {\n // Add favorite\n await createFavorite({\n variables: { user_id: userId, prompt_id: promptId },\n });\n await incrementFavorites({\n variables: { id: promptId, favorite_count: currentFavoriteCount + 1 },\n });\n }\n };\n\n return { toggleFavorite };\n};\n","import { AgentSession } from \"@/types/models/agent-session\";\nimport { UserWithRole } from \"@/types/models/user\";\n\nexport const checkChatSessionWriteAccess = (session: AgentSession, user: UserWithRole) => {\n const isPrivate = session.rights_mode === 'private';\n const isPublic = session.rights_mode === 'public';\n const byUsers = session.rights_mode === 'users';\n const byRoles = session.rights_mode === 'roles';\n const isAdmin = user.super_admin;\n const isCreator = session.created_by === user.id.toString();\n \n let writeAccess = false;\n if (isPrivate && isCreator) {\n writeAccess = true;\n }\n if (isPublic) {\n writeAccess = true;\n }\n if (byUsers) {\n writeAccess = session.RBAC?.users?.find(u => u.id === user.id)?.rights === 'write';\n }\n if (byRoles) {\n writeAccess = session.RBAC?.roles?.find(r => r.id === user.role?.id)?.rights === 'write';\n }\n if (isAdmin) {\n writeAccess = true;\n }\n return writeAccess;\n}","/**\n * Extracts all variable names from a prompt template\n * Variables are in the format {{variable_name}}\n * Only alphanumeric characters and underscores are allowed in variable names\n *\n * @param content - The prompt content to extract variables from\n * @returns Array of unique variable names found in the content\n *\n * @example\n * extractVariables(\"Hello {{name}}, your issue {{issue_id}} is resolved\")\n * // Returns: [\"name\", \"issue_id\"]\n */\nexport function extractVariables(content: string): string[] {\n if (!content) return [];\n\n // Match {{variable_name}} where variable_name contains only alphanumeric and underscore\n const regex = /\\{\\{([a-zA-Z0-9_]+)\\}\\}/g;\n const matches = content.matchAll(regex);\n const variables = new Set<string>();\n\n for (const match of Array.from(matches)) {\n variables.add(match[1]);\n }\n\n return Array.from(variables).sort();\n}\n"],"names":["Promise","resolve","then","__webpack_require__","bind","LoaderIcon","size","param","jsx_runtime","jsxs","svg","height","strokeLinejoin","style","color","viewBox","width","jsx","title","g","clipPath","path","d","stroke","strokeWidth","opacity","defs","id","rect","fill","Loader","className","props","div","cn","HoverCard","HoverCardPrimitive","HoverCardTrigger","HoverCardContent","React","ref","align","sideOffset","displayName","Progress","value","ProgressPrimitive","transform","concat","ContextContext","createContext","useContextValue","context","useContext","Context","usedTokens","maxTokens","usage","modelId","Provider","closeDelay","openDelay","ContextIcon","circumference","Math","PI","aria-label","role","ICON_VIEWBOX","circle","cx","cy","r","strokeDasharray","strokeDashoffset","usedPercent","strokeLinecap","transformOrigin","ContextTrigger","children","renderedPercent","Intl","NumberFormat","maximumFractionDigits","format","asChild","Button","type","variant","span","ContextContent","ContextContentHeader","displayPct","used","notation","total","Fragment","p","ContextContentBody","ContextInputUsage","inputTokens","inputCost","estimateCost","input","output","totalUSD","undefined","inputCostText","currency","TokensWithCost","costText","tokens","ContextOutputUsage","outputTokens","outputCost","outputCostText","ContextReasoningUsage","reasoningTokens","reasoningCost","reasoningCostText","ContextCacheUsage","cacheTokens","cachedInputTokens","cacheCost","cacheReads","cacheCostText","Tool","Collapsible","getStatusBadge","icons","CircleIcon","ClockIcon","CheckCircleIcon","XCircleIcon","Badge","status","labels","ToolHeader","state","CollapsibleTrigger","WrenchIcon","ChevronDownIcon","ToolContent","CollapsibleContent","ToolInput","h4","CodeBlock","code","JSON","stringify","language","ToolOutput","errorText","PromptSelectorModal","data","open","onOpenChange","onSelectPrompt","agentId","searchQuery","setSearchQuery","useState","filters","push","or","name","contains","description","content","loading","usePrompts","page","limit","sort","field","direction","prompts","prompt_libraryPagination","items","agentPrompts","filter","assigned_agents","includes","otherPrompts","handleSelectPrompt","prompt","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","Search","Input","placeholder","onChange","e","target","ScrollArea","map","Skeleton","i","length","ThumbsUp","h3","PromptListItem","onSelect","FileText","variables","extractVariables","button","onClick","favorite_count","Eye","usage_count","tags","slice","tag","formatVariableName","variable","split","word","charAt","toUpperCase","join","PromptVariableForm","promptName","onSubmit","values","setValues","useEffect","initialValues","forEach","handleValueChange","prev","allFieldsFilled","every","trim","Label","htmlFor","toLowerCase","DialogFooter","disabled","ChatLayout","session","configContext","agent","creatorQuery","projectQuery","initialPromptId","error","setError","ConfigContext","useIsMobile","theme","useTheme","files","setFiles","fileItems","setFileItems","user","UserContext","copyingTableId","setCopyingTableId","showSaveWorkflowModal","setShowSaveWorkflowModal","setInput","disabledTools","setDisabledTools","inputRef","toast","useToast","promptSelectorOpen","setPromptSelectorOpen","promptVariableFormOpen","setPromptVariableFormOpen","selectedPrompt","setSelectedPrompt","incrementPromptUsage","useIncrementPromptUsage","rbac","setRbac","rights_mode","users","RBAC","roles","useQuery","GET_USER_BY_ID","created_by","skip","GET_PROJECT_BY_ID","project","initialPromptData","GET_PROMPT_BY_ID","initialPromptProcessed","setInitialPromptProcessed","updateAgentSessionRbac","updateAgentSessionRbacResult","useMutation","UPDATE_AGENT_SESSION_RBAC","tokenCounts","setTokenCounts","totalTokens","GET_AGENT_MESSAGES","returnPartialData","fetchPolicy","nextFetchPolicy","eq","onCompleted","agent_messagesPagination","setMessages","parse","item","messages","sendMessage","stop","regenerate","addToolResult","useChat","sendAutomaticallyWhen","lastAssistantMessageIsCompleteWithToolCalls","experimental_throttle","onToolCall","toolCall","dynamic","toolName","cities","tool","toolCallId","floor","random","onError","console","log","message","x","transport","DefaultChatTransport","api","backend","slug","prepareSendMessagesRequest","chatId","body","token","getToken","headers","User","Session","Authorization","Stream","totalCount","reduce","acc","messageMetadata","metadata","reasoningCount","useMemo","userMessages","m","assistantMessages","insertPromptIntoChat","promptText","current","focus","prompt_library_itemById","options","preventDefault","text","toggleTool","writeAccess","checkChatSessionWriteAccess","updateMessageFiles","all","s3key","Object","entries","key","mediaType","filename","url","btoa","getPresignedUrl","Conversation","maxContextLength","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","Logo","alt","AgentVisual","ConversationContent","MessageRenderer","config","marginTopFirstMessage","onRegenerate","onAddToolResult","UntypedToolPartComponent","UntypedToolPart","addToContext","Alert","ExclamationTriangleIcon","AlertTitle","AlertDescription","form","fileUploads","s3endpoint","UppyDashboard","selectionLimit","allowedFileTypes","capabilities","audio","video","images","dependencies","onConfirm","TextareaAutosize","autoComplete","autoFocus","minRows","onKeyDown","shiftKey","ArrowUp","StopIcon","FileItem","s3Key","active","onRemove","SaveWorkflowModal","isOpen","onClose","sessionTitle","fillPromptVariables","keys","filled","escapedKey","replace","regex","hr","Loading","userById","projectById","Link","href","tools","isEnabled","Switch","checked","onCheckedChange","CardHeader","ChevronsUpDown","CardContent","RBACControl","allowedModes","initialRightsMode","initialUsers","initialRoles","untypedToolPart","callId","styleToolName","defaultOpen","Response","SessionsPage","sessionData","params","promptId","searchParams","useSearchParams","get","sessionLoading","sessionError","GET_AGENT_SESSION_BY_ID","agentData","agentLoading","agentError","GET_AGENT_BY_ID","agent_sessionById","agentById","LottieVisual","defaultIdleData","queryKey","queryFn","response","fetch","json","staleTime","enabled","animation_idle","defaultRespondingData","animation_responding","customIdleData","customRespondingData","View","useLottie","getAnimationOptions","animationData","loop","autoplay","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","__webpack_exports__","Z","SwitchPrimitives","GET_PROMPTS","useCreatePrompt","CREATE_PROMPT","refetchQueries","query","useUpdatePrompt","UPDATE_PROMPT","useDeletePrompt","DELETE_PROMPT","INCREMENT_PROMPT_USAGE","useCreatePromptFavorite","CREATE_PROMPT_FAVORITE","useDeletePromptFavorite","DELETE_PROMPT_FAVORITE","useTogglePromptFavorite","createFavorite","deleteFavorite","incrementFavorites","INCREMENT_PROMPT_FAVORITES","toggleFavorite","userId","isFavorited","currentFavoriteCount","favoriteId","max","user_id","prompt_id","isPrivate","isPublic","byUsers","byRoles","isAdmin","super_admin","isCreator","toString","find","u","rights","matches","matchAll","Set","match","Array","from","add"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3143],{12646:function(e,t,n){Promise.resolve().then(n.bind(n,41587))},41587:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return I}});var s=n(57437),l=n(27648),i=n(73247),r=n(92451),a=n(86595),o=n(33245),d=n(62869),c=n(95186),u=n(7211),h=n(12199),f=n(27689),m=n(2265),x=n(37091),v=n(99376),g=n(93022),p=n(25915),j=n(13832),y=n(20653),N=n(7598),w=n(99397),k=n(84190),b=n(26110),S=n(77992),_=n(94508),C=n(866),O=n(87393);function Z(e){var t,n,r,a,o,x;let{agent:p,type:Z}=e,z=(0,v.usePathname)(),{toast:I}=(0,S.pm)(),{user:M}=(0,m.useContext)(j.S),[A,E]=(0,m.useState)("");(0,C.d)();let D=(0,v.useRouter)(),[T,P]=(0,m.useState)({searchString:null}),[F,R]=(0,m.useState)(!1),[L,V]=(0,m.useState)(null),[q,B]=(0,m.useState)(""),G=(0,u.aM)(f.GJ,{returnPartialData:!0,fetchPolicy:"network-only",nextFetchPolicy:"network-only",variables:{page:1,limit:40,filters:{agent:{eq:p}}}}),[W,U]=(0,h.D)(f.S9,{refetchQueries:[f.GJ,"GetAgentSessions"]}),[H,J]=(0,h.D)(f.fB),[K,Q]=(0,h.D)(f.bI,{refetchQueries:[f.GJ,"GetAgentSessions"]});(0,m.useEffect)(()=>{let e={page:1,limit:40};T&&(null==T?void 0:T.length)>2?e.filters={agent:{eq:p},title:{contains:T}}:e.filters={agent:{eq:p}},G.refetch(e)},[T]);let X=async()=>{var e,t,n,s,l,i;let r=await H({variables:{user:M.id,agent:p,type:"FLOW",title:A.trim(),createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}});if(r.errors){console.error("error",r.errors);return}if(!(null===(n=r.data)||void 0===n?void 0:null===(t=n.agent_sessionsCreateOne)||void 0===t?void 0:null===(e=t.item)||void 0===e?void 0:e.id)){console.error("error","failed to create session");return}E(""),G.refetch(),D.push("/chat/".concat(p,"/").concat(null===(i=r.data)||void 0===i?void 0:null===(l=i.agent_sessionsCreateOne)||void 0===l?void 0:null===(s=l.item)||void 0===s?void 0:s.id))},$=async()=>{if(!L||!q.trim())return;let e=await K({variables:{id:L,title:q.trim()}});if(e.errors){console.error("error",e.errors),I({title:"Error",description:"Failed to rename session.",variant:"destructive"});return}I({title:"Session renamed",description:"The session has been renamed successfully."}),R(!1),V(null),B("")};return(0,s.jsxs)("div",{className:"relative hidden flex-col items-start md:flex border-r","x-chunk":"dashboard-03-chunk-0",children:[(0,s.jsx)("h2",{className:"mb-2 px-4 text-lg font-semibold tracking-tight",children:"Sessions"}),(0,s.jsx)("div",{className:"bg-background/95 w-full backdrop-blur supports-[backdrop-filter]:bg-background/60",children:(0,s.jsx)("form",{children:(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(i.Z,{className:"absolute left-2 top-2.5 size-4 text-muted-foreground"}),(0,s.jsx)(c.I,{onKeyUp:e=>{P(e.currentTarget.value)},placeholder:"Search sessions",className:"pl-8 border-0"})]})})}),(0,s.jsxs)("div",{className:"flex w-full items-center gap-2 p-3 border-t justify-between",children:[(0,s.jsx)(c.I,{autoFocus:!0,value:A,onChange:e=>E(e.target.value),onKeyDown:e=>{"Enter"===e.key&&X()},placeholder:"Name",className:"flex-1"}),(0,s.jsx)(d.z,{variant:"secondary",tabIndex:1,disabled:J.loading||!A.trim(),onClick:async()=>{X()},children:(0,s.jsx)("div",{className:"font-semibold",children:(0,s.jsx)(w.Z,{})})})]}),G.loading&&(0,s.jsxs)("div",{className:"w-full flex flex-col p-2 pt-0 pb-2",children:[(0,s.jsx)(g.O,{className:"w-full rounded h-[70px] rounded-md"}),(0,s.jsx)(g.O,{className:"w-full rounded h-[70px] rounded-md mt-3"}),(0,s.jsx)(g.O,{className:"w-full rounded h-[70px] rounded-md mt-3"}),(0,s.jsx)(g.O,{className:"w-full rounded h-[70px] rounded-md mt-3"})]}),!G.loading&&!(null==G?void 0:null===(r=G.data)||void 0===r?void 0:null===(n=r.agent_sessionsPagination)||void 0===n?void 0:null===(t=n.items)||void 0===t?void 0:t.length)&&(0,s.jsx)("div",{className:"w-full flex",children:(0,s.jsx)("p",{className:"mx-auto mt-5",children:"No sessions found."})}),G.loading?null:null==G?void 0:null===(x=G.data)||void 0===x?void 0:null===(o=x.agent_sessionsPagination)||void 0===o?void 0:null===(a=o.items)||void 0===a?void 0:a.map(e=>{var t,n;let i=(0,O.I)({...e,agent:e.agent.id},M);return(0,s.jsx)("div",{className:"w-full px-2 flex flex-col items-start gap-0 rounded-none border-none text-left text-sm mb-2",children:(0,s.jsx)(l.default,{href:"/chat/".concat(p,"/").concat(e.id),className:(0,_.cn)("p-2 w-full flex flex-col items-start gap-2 rounded-md p-3 text-left text-sm transition-all hover:bg-accent",z.includes(e.id)&&"bg-muted",i?"border border-l-4 border-r-0 border-y-0 border-gray-700":"border border-l-4 border-r-0 border-y-0 border-yellow-900"),children:(0,s.jsxs)("div",{className:"flex w-full flex-col px-2",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsx)("div",{className:"text-md font-medium max-w-[80%] truncate",children:e.title?null===(t=e.title)||void 0===t?void 0:t.substring(0,20):"No title"}),(0,s.jsxs)("div",{className:(0,_.cn)("ml-0 text-xs capitalize",z.includes(e.id)?"text-foreground":"text-muted-foreground"),children:[e.updatedAt?(0,N.Q)(new Date(e.updatedAt),{addSuffix:!0}):null,"."]})]}),i&&(0,s.jsxs)(k.h_,{modal:!1,children:[(0,s.jsx)(k.$F,{asChild:!0,children:(0,s.jsxs)(d.z,{variant:"ghost",className:"flex size-8 p-0 data-[state=open]:bg-muted",children:[(0,s.jsx)(y.nWS,{className:"size-4"}),(0,s.jsx)("span",{className:"sr-only",children:"Open menu"})]})}),(0,s.jsxs)(k.AW,{align:"end",className:"w-[160px]",children:[(0,s.jsx)(k.Xi,{className:"cursor-pointer",onClick:t=>{t.preventDefault(),t.stopPropagation(),V(e.id),B(e.title||""),R(!0)},children:"Rename"}),(0,s.jsx)(k.Xi,{className:"cursor-pointer",onClick:()=>{W({variables:{id:e.id}}),I({title:"Deleting session",description:"We deleted the session."})},children:"Delete"})]})]})]}),(0,s.jsx)("small",{className:"text-xs text-muted-foreground",children:null===(n=e.agent)||void 0===n?void 0:n.name})]})},e.id)},e.id)}),(0,s.jsx)(b.Vq,{open:F,onOpenChange:R,children:(0,s.jsxs)(b.cZ,{children:[(0,s.jsxs)(b.fK,{children:[(0,s.jsx)(b.$N,{children:"Rename Session"}),(0,s.jsx)(b.Be,{children:"Enter a new name for this session."})]}),(0,s.jsx)(c.I,{value:q,onChange:e=>B(e.target.value),onKeyDown:e=>{"Enter"===e.key&&$()},placeholder:"Session name"}),(0,s.jsxs)(b.cN,{children:[(0,s.jsx)(d.z,{variant:"outline",onClick:()=>{R(!1),V(null),B("")},children:"Cancel"}),(0,s.jsx)(d.z,{onClick:$,disabled:Q.loading||!q.trim(),children:"Rename"})]})]})})]},p+Z)}function z(){var e,t,n,y,N;let[w,k]=m.useState(""),[b,S]=m.useState(null),[_,C]=m.useState(!1),[O,z]=m.useState(!1),[I,M]=m.useState(!1),A=(0,v.useParams)(),E=(0,v.usePathname)(),{user:D}=(0,m.useContext)(j.S),[T,P]=(0,m.useState)(D),F=(0,u.aM)(f.W9,{fetchPolicy:"no-cache",nextFetchPolicy:"network-only",variables:{ids:(null==T?void 0:T.favourite_agents)||[]},skip:!(null==T?void 0:null===(e=T.favourite_agents)||void 0===e?void 0:e.length)}),R=(0,u.aM)(f.ym,{fetchPolicy:"no-cache",nextFetchPolicy:"network-only",variables:{page:1,limit:200,filters:{...(null==T?void 0:T.super_admin)?{}:{active:!0},...w?{name:{contains:w}}:{}}}}),[L]=(0,h.D)(f.Pe,{onCompleted:e=>{var t,n;P({...T,favourite_agents:null===(n=e.usersUpdateOneById)||void 0===n?void 0:null===(t=n.item)||void 0===t?void 0:t.favourite_agents})}}),V=(e,t)=>{t.preventDefault(),t.stopPropagation(),S(e),C(!0)},q=(e,t)=>{let n;t.preventDefault(),t.stopPropagation(),console.log("user",T);let s=(null==T?void 0:T.favourite_agents)||[];console.log("newFavourites",n=s.includes(e)?s.filter(t=>t!==e):[...s,e]),L({variables:{id:T.id,favourite_agents:n}})},B=A.agent?null==R?void 0:null===(y=R.data)||void 0===y?void 0:null===(n=y.agentsPagination)||void 0===n?void 0:null===(t=n.items)||void 0===t?void 0:t.find(e=>e.id===A.agent):null,G=e=>{var t;return e.image?(0,s.jsx)("img",{src:e.image,alt:"".concat(e.name," profile"),className:"h-4 w-4 rounded-full object-cover"}):(0,s.jsx)("div",{className:"h-4 w-4 rounded-full bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center text-white text-xs font-medium",children:(null===(t=e.name)||void 0===t?void 0:t.charAt(0).toUpperCase())||"A"})};return(0,m.useEffect)(()=>{M(!1),z(!1)},[A.agent]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"pb-12 w-[250px] max-h-[calc(100vh)] overflow-y-auto overflow-x-hidden",children:[(0,s.jsx)("div",{className:"space-y-4 py-4",children:(0,s.jsxs)("div",{children:[(0,s.jsx)("h2",{className:"mb-2 px-4 text-lg font-semibold tracking-tight",children:"Agents"}),(0,s.jsx)("div",{children:(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(i.Z,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),(0,s.jsx)(c.I,{placeholder:"Search agents...",value:w,onChange:e=>k(e.target.value),className:"pl-8 h-9 border-0"})]})}),(0,s.jsxs)("div",{className:"space-y-1 border-t px-2 pt-2",children:[B&&!I&&(0,s.jsxs)("div",{className:"flex items-center gap-1",children:[(0,s.jsx)(d.z,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0 flex-shrink-0",onClick:()=>M(!I),children:(0,s.jsx)(r.Z,{className:"h-3 w-3"})}),(0,s.jsx)(l.default,{onClick:()=>M(!1),href:"/chat/".concat(B.id),className:"flex-1",children:(0,s.jsxs)(d.z,{onClick:()=>M(!1),variant:E.includes(B.id)?"secondary":"ghost",className:"w-full justify-start gap-2 pr-5",children:[G(B),(0,s.jsx)("span",{className:"flex-1 text-left",children:(0,s.jsx)(x.L,{text:B.name,length:7})})]})}),(0,s.jsx)(d.z,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0 flex-shrink-0",onClick:e=>q(B.id,e),children:(0,s.jsx)(a.Z,{className:"h-3 w-3 fill-yellow-400 text-yellow-400"})}),(0,s.jsx)(d.z,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0 flex-shrink-0",onClick:e=>V(B.id,e),children:(0,s.jsx)(o.Z,{className:"h-3 w-3"})})]},"fav-".concat(B.id)),(!B||I||w)&&(0,s.jsxs)(s.Fragment,{children:[(null==T?void 0:T.favourite_agents)&&(null==T?void 0:null===(N=T.favourite_agents)||void 0===N?void 0:N.length)>0&&!w&&(0,s.jsxs)(s.Fragment,{children:[F.loading&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(g.O,{className:"w-[100%] h-[32px] rounded-lg"}),(0,s.jsx)(g.O,{className:"w-[100%] h-[32px] rounded-lg"})]}),!F.loading&&(()=>{var e;let t=(null==F?void 0:null===(e=F.data)||void 0===e?void 0:e.agentByIds)||[],n=O?t:t.slice(0,4);return(0,s.jsxs)(s.Fragment,{children:[n.map(e=>(0,s.jsxs)("div",{className:"flex items-center gap-1",children:[(0,s.jsx)(l.default,{href:"/chat/".concat(e.id),className:"flex-1",children:(0,s.jsxs)(d.z,{variant:E.includes(e.id)?"secondary":"ghost",className:"w-full justify-start gap-2 pr-1",children:[G(e),(0,s.jsx)("span",{className:"flex-1 text-left",children:(0,s.jsx)(x.L,{text:e.name,length:10})})]})}),(0,s.jsx)(d.z,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0 flex-shrink-0",onClick:t=>q(e.id,t),children:(0,s.jsx)(a.Z,{className:"h-3 w-3 fill-yellow-400 text-yellow-400"})}),(0,s.jsx)(d.z,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0 flex-shrink-0",onClick:t=>V(e.id,t),children:(0,s.jsx)(o.Z,{className:"h-3 w-3"})})]},"fav-".concat(e.id))),t.length>4&&(0,s.jsx)(d.z,{variant:"ghost",className:"w-full justify-center text-xs text-muted-foreground h-8",onClick:()=>z(!O),children:O?"Show less":"Show more (".concat(t.length-4,")")})]})})()]}),R.loading&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(g.O,{className:"w-[100%] h-[32px] rounded-lg"}),(0,s.jsx)(g.O,{className:"w-[100%] h-[32px] rounded-lg"}),(0,s.jsx)(g.O,{className:"w-[100%] h-[32px] rounded-lg"}),(0,s.jsx)(g.O,{className:"w-[100%] h-[32px] rounded-lg"}),(0,s.jsx)(g.O,{className:"w-[100%] h-[32px] rounded-lg"})]}),!R.loading&&(()=>{var e,t,n;let i=(null==R?void 0:null===(n=R.data)||void 0===n?void 0:null===(t=n.agentsPagination)||void 0===t?void 0:null===(e=t.items)||void 0===e?void 0:e.filter(e=>{var t;return!(null==T?void 0:null===(t=T.favourite_agents)||void 0===t?void 0:t.includes(e.id))||w}))||[],r=w||I?i:i.slice(0,4);return(0,s.jsxs)(s.Fragment,{children:[r.map(e=>{var t;return(0,s.jsxs)("div",{className:"flex items-center gap-1",children:[(0,s.jsx)(l.default,{href:"/chat/".concat(e.id),className:"flex-1",children:(0,s.jsxs)(d.z,{variant:E.includes(e.id)?"secondary":"ghost",className:"w-full justify-start gap-2 pr-1",children:[G(e),(0,s.jsx)("span",{className:"flex-1 text-left",children:(0,s.jsx)(x.L,{text:e.name,length:14})})]})}),(0,s.jsx)(d.z,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0 flex-shrink-0",onClick:t=>q(e.id,t),children:(0,s.jsx)(a.Z,{className:"h-3 w-3 ".concat((null==T?void 0:null===(t=T.favourite_agents)||void 0===t?void 0:t.includes(e.id))?"fill-yellow-400 text-yellow-400":"")})}),(0,s.jsx)(d.z,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0 flex-shrink-0",onClick:t=>V(e.id,t),children:(0,s.jsx)(o.Z,{className:"h-3 w-3"})})]},e.id)}),!w&&i.length>4&&(0,s.jsx)(d.z,{variant:"ghost",className:"w-full justify-center text-xs text-muted-foreground h-8",onClick:()=>M(!I),children:I?"Show less":"Show more (".concat(i.length-4,")")})]})})()]})]})]})}),A.agent&&(0,s.jsx)(Z,{agent:A.agent,type:"chat"})]}),b&&(0,s.jsx)(p.z,{agentId:b,open:_,onOpenChange:e=>{C(e),e||S(null)}})]})}function I(e){let{children:t}=e;return(0,s.jsxs)("div",{className:"flex h-full",children:[(0,s.jsx)("div",{className:"border-r bg-muted/10",children:(0,s.jsx)(z,{})}),t]})}},37091:function(e,t,n){"use strict";n.d(t,{L:function(){return l}});var s=n(57437);function l(e){let{text:t,length:n}=e;return t.length>n?(0,s.jsxs)(s.Fragment,{children:[t.slice(0,n),"..."]}):(0,s.jsx)(s.Fragment,{children:t})}},77992:function(e,t,n){"use strict";n.d(t,{Am:function(){return u},pm:function(){return h}});var s=n(2265);let l=0,i=new Map,r=e=>{if(i.has(e))return;let t=setTimeout(()=>{i.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);i.set(e,t)},a=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:n}=t;return n?r(n):e.toasts.forEach(e=>{r(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===n||void 0===n?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},o=[],d={toasts:[]};function c(e){d=a(d,e),o.forEach(e=>{e(d)})}function u(e){let{...t}=e,n=(l=(l+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:n});return c({type:"ADD_TOAST",toast:{...t,id:n,open:!0,onOpenChange:e=>{e||s()}}}),{id:n,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:n}})}}function h(){let[e,t]=s.useState(d);return s.useEffect(()=>(o.push(t),()=>{let e=o.indexOf(t);e>-1&&o.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},87393:function(e,t,n){"use strict";n.d(t,{I:function(){return s}});let s=(e,t)=>{var n,s,l,i,r,a;let o="private"===e.rights_mode,d="public"===e.rights_mode,c="users"===e.rights_mode,u="roles"===e.rights_mode,h=t.super_admin,f=e.created_by===t.id.toString(),m=!1;return o&&f&&(m=!0),d&&(m=!0),c&&(m=(null===(l=e.RBAC)||void 0===l?void 0:null===(s=l.users)||void 0===s?void 0:null===(n=s.find(e=>e.id===t.id))||void 0===n?void 0:n.rights)==="write"),u&&(m=(null===(a=e.RBAC)||void 0===a?void 0:null===(r=a.roles)||void 0===r?void 0:null===(i=r.find(e=>{var n;return e.id===(null===(n=t.role)||void 0===n?void 0:n.id)}))||void 0===i?void 0:i.rights)==="write"),h&&(m=!0),m}},92451:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]])},48736:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("FileText",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["line",{x1:"16",x2:"8",y1:"13",y2:"13",key:"14keom"}],["line",{x1:"16",x2:"8",y1:"17",y2:"17",key:"17nazh"}],["line",{x1:"10",x2:"8",y1:"9",y2:"9",key:"1a5vjj"}]])},53113:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("Image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]])},33245:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},99397:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},73247:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]])},88906:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("Shield",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}]])},86595:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("Star",[["polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2",key:"8f66p6"}]])},49137:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("Text",[["path",{d:"M17 6.1H3",key:"wptmhv"}],["path",{d:"M21 12.1H3",key:"1j38uz"}],["path",{d:"M15.1 18H3",key:"1nb16a"}]])},29374:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("Video",[["path",{d:"m22 8-6 4 6 4V8Z",key:"50v9me"}],["rect",{width:"14",height:"12",x:"2",y:"6",rx:"2",ry:"2",key:"1rqjg6"}]])},81706:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("Volume2",[["polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5",key:"16drj5"}],["path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07",key:"ltjumu"}],["path",{d:"M19.07 4.93a10 10 0 0 1 0 14.14",key:"1kegas"}]])},29525:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});let s=(0,n(39763).Z)("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]])},12199:function(e,t,n){"use strict";n.d(t,{D:function(){return u}});var s=n(5853),l=n(79285),i=n(49466),r=n(36628),a=n(59058),o=n(77828),d=n(63251),c=n(59394).Nq?l.useLayoutEffect:l.useEffect;function u(e,t){var n=(0,d.x)(null==t?void 0:t.client);(0,a.Vp)(e,a.n_.Mutation);var u=l.useState({called:!1,loading:!1,client:n}),h=u[0],f=u[1],m=l.useRef({result:h,mutationId:0,isMounted:!0,client:n,mutation:e,options:t});c(function(){Object.assign(m.current,{client:n,options:t,mutation:e})});var x=l.useCallback(function(e){void 0===e&&(e={});var t=m.current,n=t.options,l=t.mutation,a=(0,s.pi)((0,s.pi)({},n),{mutation:l}),d=e.client||m.current.client;m.current.result.loading||a.ignoreResults||!m.current.isMounted||f(m.current.result={loading:!0,error:void 0,data:void 0,called:!0,client:d});var c=++m.current.mutationId,u=(0,i.J)(a,e);return d.mutate(u).then(function(t){var n,s,l=t.data,i=t.errors,a=i&&i.length>0?new o.cA({graphQLErrors:i}):void 0,h=e.onError||(null===(n=m.current.options)||void 0===n?void 0:n.onError);if(a&&h&&h(a,u),c===m.current.mutationId&&!u.ignoreResults){var x={called:!0,loading:!1,data:l,error:a,client:d};m.current.isMounted&&!(0,r.D)(m.current.result,x)&&f(m.current.result=x)}var v=e.onCompleted||(null===(s=m.current.options)||void 0===s?void 0:s.onCompleted);return a||null==v||v(t.data,u),t},function(t){if(c===m.current.mutationId&&m.current.isMounted){var n,s={loading:!1,error:t,data:void 0,called:!0,client:d};(0,r.D)(m.current.result,s)||f(m.current.result=s)}var l=e.onError||(null===(n=m.current.options)||void 0===n?void 0:n.onError);if(l)return l(t,u),{data:void 0,errors:t};throw t})},[]),v=l.useCallback(function(){if(m.current.isMounted){var e={called:!1,loading:!1,client:m.current.client};Object.assign(m.current,{mutationId:0,result:e}),f(e)}},[]);return l.useEffect(function(){var e=m.current;return e.isMounted=!0,function(){e.isMounted=!1}},[]),[x,(0,s.pi)({reset:v},h)]}}},function(e){e.O(0,[8310,9851,7629,7093,6148,847,1942,7648,7823,8068,5799,605,4567,1206,5338,3825,7598,6373,3832,2293,2971,2117,1744],function(){return e(e.s=12646)}),_N_E=e.O()}]);
|
|
2
|
-
//# sourceMappingURL=layout-
|
|
2
|
+
//# sourceMappingURL=layout-ba702af6bb56baa2.js.map
|