@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.
Files changed (174) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-build-manifest.json +163 -160
  3. package/dist/.next/app-path-routes-manifest.json +1 -1
  4. package/dist/.next/build-manifest.json +2 -2
  5. package/dist/.next/prerender-manifest.json +1 -1
  6. package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
  7. package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
  8. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +1 -1
  9. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
  10. package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
  11. package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
  12. package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
  13. package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
  14. package/dist/.next/server/app/(application)/data/[[...query]]/page.js +2 -2
  15. package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
  16. package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
  17. package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
  18. package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
  19. package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
  20. package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
  21. package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
  22. package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
  23. package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
  24. package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
  25. package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
  26. package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
  27. package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
  28. package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
  29. package/dist/.next/server/app/(application)/prompts/page_client-reference-manifest.js +1 -1
  30. package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
  31. package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
  32. package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
  33. package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
  34. package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
  35. package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
  36. package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
  37. package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
  38. package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
  39. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/dist/.next/server/app/_not-found.html +1 -1
  41. package/dist/.next/server/app/_not-found.rsc +1 -1
  42. package/dist/.next/server/app-paths-manifest.json +5 -5
  43. package/dist/.next/server/chunks/2270.js +145 -132
  44. package/dist/.next/server/chunks/{5084.js → 2587.js} +1 -1
  45. package/dist/.next/server/chunks/3503.js +1 -1
  46. package/dist/.next/server/chunks/5485.js +1 -1
  47. package/dist/.next/server/chunks/5974.js +1 -1
  48. package/dist/.next/server/chunks/7944.js +1 -1
  49. package/dist/.next/server/chunks/8286.js +1 -1
  50. package/dist/.next/server/middleware-manifest.json +5 -5
  51. package/dist/.next/server/pages/404.html +1 -1
  52. package/dist/.next/server/pages/500.html +1 -1
  53. package/dist/.next/server/server-reference-manifest.json +1 -1
  54. package/dist/.next/static/chunks/1707-06e693c4a709c147.js +2 -0
  55. package/dist/.next/static/chunks/1707-06e693c4a709c147.js.map +1 -0
  56. package/dist/.next/static/chunks/{1957-cf44b1d31a9c7d5c.js → 1957-34f17de1e14e45de.js} +1 -1
  57. package/dist/.next/static/chunks/{1957-cf44b1d31a9c7d5c.js.map → 1957-34f17de1e14e45de.js.map} +1 -1
  58. package/dist/.next/static/chunks/{2293-48a95904b834eccc.js → 2293-592e22dde70d632b.js} +1 -1
  59. package/dist/.next/static/chunks/{2293-48a95904b834eccc.js.map → 2293-592e22dde70d632b.js.map} +1 -1
  60. package/dist/.next/static/chunks/2534-3dd7a9fabfbdb9d8.js +2 -0
  61. package/dist/.next/static/chunks/2534-3dd7a9fabfbdb9d8.js.map +1 -0
  62. package/dist/.next/static/chunks/2823-324b1cd8f15ff9c5.js +2 -0
  63. package/dist/.next/static/chunks/2823-324b1cd8f15ff9c5.js.map +1 -0
  64. package/dist/.next/static/chunks/3246-1812de142455a0ac.js +2 -0
  65. package/dist/.next/static/chunks/3246-1812de142455a0ac.js.map +1 -0
  66. package/dist/.next/static/chunks/{3750-e3d1b2cccd265190.js → 3750-d0ae5d73288be8de.js} +2 -2
  67. package/dist/.next/static/chunks/3750-d0ae5d73288be8de.js.map +1 -0
  68. package/dist/.next/static/chunks/{3832-d7782d6a2771ae6c.js → 3832-0b8edbcc671f4cc0.js} +2 -2
  69. package/dist/.next/static/chunks/3832-0b8edbcc671f4cc0.js.map +1 -0
  70. package/dist/.next/static/chunks/{4386-45b79e656a244d8a.js → 4386-21ac377a719ebdfa.js} +1 -1
  71. package/dist/.next/static/chunks/{4386-45b79e656a244d8a.js.map → 4386-21ac377a719ebdfa.js.map} +1 -1
  72. package/dist/.next/static/chunks/4612-da512770f949561a.js +2 -0
  73. package/dist/.next/static/chunks/4612-da512770f949561a.js.map +1 -0
  74. package/dist/.next/static/chunks/{5825-efd4db1da512bd7f.js → 4760-d5ceb992b68e35ca.js} +2 -2
  75. package/dist/.next/static/chunks/4760-d5ceb992b68e35ca.js.map +1 -0
  76. package/dist/.next/static/chunks/{6367-59655a85d75e19be.js → 6367-aa5020cbea5354e2.js} +1 -1
  77. package/dist/.next/static/chunks/{6367-59655a85d75e19be.js.map → 6367-aa5020cbea5354e2.js.map} +1 -1
  78. package/dist/.next/static/chunks/6373-3eee0b6c8b8fd459.js +2 -0
  79. package/dist/.next/static/chunks/6373-3eee0b6c8b8fd459.js.map +1 -0
  80. package/dist/.next/static/chunks/{8030-9c926ea4dfd3a54e.js → 8030-5d38a3f1a4ad44cb.js} +1 -1
  81. package/dist/.next/static/chunks/{8030-9c926ea4dfd3a54e.js.map → 8030-5d38a3f1a4ad44cb.js.map} +1 -1
  82. package/dist/.next/static/chunks/9105-143f12397a76a332.js +2 -0
  83. package/dist/.next/static/chunks/9105-143f12397a76a332.js.map +1 -0
  84. package/dist/.next/static/chunks/9877-378934ae38c6760c.js +2 -0
  85. package/dist/.next/static/chunks/9877-378934ae38c6760c.js.map +1 -0
  86. package/dist/.next/static/chunks/{9953-95900a236271a222.js → 9953-02d5b52553a5c573.js} +2 -2
  87. package/dist/.next/static/chunks/{9953-95900a236271a222.js.map → 9953-02d5b52553a5c573.js.map} +1 -1
  88. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-e4a4693953329671.js → page-37918149a8e909b0.js} +2 -2
  89. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-e4a4693953329671.js.map → page-37918149a8e909b0.js.map} +1 -1
  90. package/dist/.next/static/chunks/app/(application)/agents/{page-b77c21a993c55901.js → page-9cff3b35b042d46a.js} +1 -1
  91. package/dist/.next/static/chunks/app/(application)/agents/{page-b77c21a993c55901.js.map → page-9cff3b35b042d46a.js.map} +1 -1
  92. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-53a99d8df53380c7.js +2 -0
  93. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-53a99d8df53380c7.js.map +1 -0
  94. package/dist/.next/static/chunks/app/(application)/chat/{layout-093baa26f89338bc.js → layout-ba702af6bb56baa2.js} +1 -1
  95. package/dist/.next/static/chunks/app/(application)/chat/{layout-093baa26f89338bc.js.map → layout-ba702af6bb56baa2.js.map} +1 -1
  96. package/dist/.next/static/chunks/app/(application)/chat/{page-8a1fcfb68cf9c8c0.js → page-8b00a98d285829b1.js} +1 -1
  97. package/dist/.next/static/chunks/app/(application)/chat/{page-8a1fcfb68cf9c8c0.js.map → page-8b00a98d285829b1.js.map} +1 -1
  98. package/dist/.next/static/chunks/app/(application)/configuration/{page-f315ede6d66922e6.js → page-1e978e117d5086a1.js} +1 -1
  99. package/dist/.next/static/chunks/app/(application)/configuration/{page-f315ede6d66922e6.js.map → page-1e978e117d5086a1.js.map} +1 -1
  100. package/dist/.next/static/chunks/app/(application)/dashboard/{page-4a1956febf5235b6.js → page-c54b4bc8d0ac4ac8.js} +1 -1
  101. package/dist/.next/static/chunks/app/(application)/dashboard/{page-4a1956febf5235b6.js.map → page-c54b4bc8d0ac4ac8.js.map} +1 -1
  102. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/{layout-0c7c1b0e1713bf60.js → layout-dfdb5c1cdc7ddefc.js} +2 -2
  103. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/{layout-0c7c1b0e1713bf60.js.map → layout-dfdb5c1cdc7ddefc.js.map} +1 -1
  104. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-faaee5fe82b45966.js +2 -0
  105. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-faaee5fe82b45966.js.map +1 -0
  106. package/dist/.next/static/chunks/app/(application)/evals/[id]/{page-a7728cf9b0524489.js → page-c956d9892676aa4f.js} +2 -2
  107. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-c956d9892676aa4f.js.map +1 -0
  108. package/dist/.next/static/chunks/app/(application)/evals/cases/page-6b4dde82376e9aac.js +2 -0
  109. package/dist/.next/static/chunks/app/(application)/evals/cases/page-6b4dde82376e9aac.js.map +1 -0
  110. package/dist/.next/static/chunks/app/(application)/evals/{page-8b38d8d29f275704.js → page-944bfc4f0a001e4c.js} +1 -1
  111. package/dist/.next/static/chunks/app/(application)/evals/page-944bfc4f0a001e4c.js.map +1 -0
  112. package/dist/.next/static/chunks/app/(application)/explorer/page-07d67145bb176711.js +2 -0
  113. package/dist/.next/static/chunks/app/(application)/explorer/page-07d67145bb176711.js.map +1 -0
  114. package/dist/.next/static/chunks/app/(application)/keys/{page-afe59c91cc347208.js → page-6c0cd9ef20cd1461.js} +2 -2
  115. package/dist/.next/static/chunks/app/(application)/keys/{page-afe59c91cc347208.js.map → page-6c0cd9ef20cd1461.js.map} +1 -1
  116. package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-f04fd5291a1ef7b1.js → page-5e2be54e76b8509c.js} +2 -2
  117. package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-f04fd5291a1ef7b1.js.map → page-5e2be54e76b8509c.js.map} +1 -1
  118. package/dist/.next/static/chunks/app/(application)/projects/{layout-a8e1830ef3faafb9.js → layout-f2e0f42a08c96bb8.js} +1 -1
  119. package/dist/.next/static/chunks/app/(application)/projects/{layout-a8e1830ef3faafb9.js.map → layout-f2e0f42a08c96bb8.js.map} +1 -1
  120. package/dist/.next/static/chunks/app/(application)/prompts/{page-2c500e9898447506.js → page-2c03bbe32800acc3.js} +2 -2
  121. package/dist/.next/static/chunks/app/(application)/prompts/{page-2c500e9898447506.js.map → page-2c03bbe32800acc3.js.map} +1 -1
  122. package/dist/.next/static/chunks/app/(application)/roles/{page-873911198c17d9a7.js → page-b977b5c658004717.js} +1 -1
  123. package/dist/.next/static/chunks/app/(application)/roles/{page-873911198c17d9a7.js.map → page-b977b5c658004717.js.map} +1 -1
  124. package/dist/.next/static/chunks/app/(application)/token/{page-3acc39cb8a718331.js → page-08596ece49a811b9.js} +2 -2
  125. package/dist/.next/static/chunks/app/(application)/token/page-08596ece49a811b9.js.map +1 -0
  126. package/dist/.next/static/chunks/app/(application)/users/{page-0d7f0d7e80cd1436.js → page-49212081be40aeca.js} +2 -2
  127. package/dist/.next/static/chunks/app/(application)/users/{page-0d7f0d7e80cd1436.js.map → page-49212081be40aeca.js.map} +1 -1
  128. package/dist/.next/static/chunks/app/(application)/variables/create/{page-8ebf4e3d4d17443b.js → page-9ce762918374f616.js} +1 -1
  129. package/dist/.next/static/chunks/app/(application)/variables/create/{page-8ebf4e3d4d17443b.js.map → page-9ce762918374f616.js.map} +1 -1
  130. package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-006145e82e054e72.js → page-0e2b7038546d9f7a.js} +1 -1
  131. package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-006145e82e054e72.js.map → page-0e2b7038546d9f7a.js.map} +1 -1
  132. package/dist/.next/static/chunks/app/(application)/variables/{page-51a8aeece444d388.js → page-141d5d3f735454fe.js} +1 -1
  133. package/dist/.next/static/chunks/app/(application)/variables/{page-51a8aeece444d388.js.map → page-141d5d3f735454fe.js.map} +1 -1
  134. package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-8f5cfc9565fd919a.js → page-fb1bb3ea6f7cae47.js} +1 -1
  135. package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-8f5cfc9565fd919a.js.map → page-fb1bb3ea6f7cae47.js.map} +1 -1
  136. package/dist/.next/static/chunks/app/(application)/workflows/{page-e38f9456120dab69.js → page-2b839fdbc55c297b.js} +2 -2
  137. package/dist/.next/static/chunks/app/(application)/workflows/page-2b839fdbc55c297b.js.map +1 -0
  138. package/dist/.next/static/css/0f539b50cca35462.css +4 -0
  139. package/dist/.next/static/css/0f539b50cca35462.css.map +1 -0
  140. package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
  141. package/package.json +1 -1
  142. package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js +0 -2
  143. package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js.map +0 -1
  144. package/dist/.next/static/chunks/3171-6996819b8863d41f.js +0 -2
  145. package/dist/.next/static/chunks/3171-6996819b8863d41f.js.map +0 -1
  146. package/dist/.next/static/chunks/3750-e3d1b2cccd265190.js.map +0 -1
  147. package/dist/.next/static/chunks/3832-d7782d6a2771ae6c.js.map +0 -1
  148. package/dist/.next/static/chunks/4419-b9be79d8cd46a97d.js +0 -2
  149. package/dist/.next/static/chunks/4419-b9be79d8cd46a97d.js.map +0 -1
  150. package/dist/.next/static/chunks/5110-098aa924c3108fa4.js +0 -2
  151. package/dist/.next/static/chunks/5110-098aa924c3108fa4.js.map +0 -1
  152. package/dist/.next/static/chunks/5825-efd4db1da512bd7f.js.map +0 -1
  153. package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js +0 -2
  154. package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js.map +0 -1
  155. package/dist/.next/static/chunks/6373-aef582adc575d3ca.js +0 -2
  156. package/dist/.next/static/chunks/6373-aef582adc575d3ca.js.map +0 -1
  157. package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js +0 -2
  158. package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js.map +0 -1
  159. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js +0 -2
  160. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js.map +0 -1
  161. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js +0 -2
  162. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js.map +0 -1
  163. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js.map +0 -1
  164. package/dist/.next/static/chunks/app/(application)/evals/cases/page-827f50c6d1f150d0.js +0 -2
  165. package/dist/.next/static/chunks/app/(application)/evals/cases/page-827f50c6d1f150d0.js.map +0 -1
  166. package/dist/.next/static/chunks/app/(application)/evals/page-8b38d8d29f275704.js.map +0 -1
  167. package/dist/.next/static/chunks/app/(application)/explorer/page-e6b1c034c07776e2.js +0 -2
  168. package/dist/.next/static/chunks/app/(application)/explorer/page-e6b1c034c07776e2.js.map +0 -1
  169. package/dist/.next/static/chunks/app/(application)/token/page-3acc39cb8a718331.js.map +0 -1
  170. package/dist/.next/static/chunks/app/(application)/workflows/page-e38f9456120dab69.js.map +0 -1
  171. package/dist/.next/static/css/9c08ae5d990a6b14.css +0 -4
  172. package/dist/.next/static/css/9c08ae5d990a6b14.css.map +0 -1
  173. /package/dist/.next/static/{3j63p6b3zZZB_v1Hn8Mxp → exslB-IPXi_veOKFA4L1Z}/_buildManifest.js +0 -0
  174. /package/dist/.next/static/{3j63p6b3zZZB_v1Hn8Mxp → exslB-IPXi_veOKFA4L1Z}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"static/chunks/app/(application)/chat/layout-093baa26f89338bc.js","mappings":"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","sources":["webpack://_N_E/?dfc3","webpack://_N_E/./app/(application)/chat/[agent]/chat-sessions.tsx","webpack://_N_E/./components/agent-nav.tsx","webpack://_N_E/./app/(application)/chat/layout.tsx","webpack://_N_E/./components/truncated-text.tsx","webpack://_N_E/./components/ui/use-toast.ts","webpack://_N_E/./lib/check-chat-session-write-access.ts","webpack://_N_E/../../../src/icons/chevron-left.ts","webpack://_N_E/../../../src/icons/file-text.ts","webpack://_N_E/../../../src/icons/image.ts","webpack://_N_E/../../../src/icons/info.ts","webpack://_N_E/../../../src/icons/plus.ts","webpack://_N_E/../../../src/icons/search.ts","webpack://_N_E/../../../src/icons/shield.ts","webpack://_N_E/../../../src/icons/star.ts","webpack://_N_E/../../../src/icons/text.ts","webpack://_N_E/../../../src/icons/video.ts","webpack://_N_E/../../../src/icons/volume-2.ts","webpack://_N_E/../../../src/icons/wrench.ts","webpack://_N_E/./node_modules/@apollo/client/react/hooks/internal/useIsomorphicLayoutEffect.js","webpack://_N_E/./node_modules/@apollo/client/react/hooks/useMutation.js"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/layout.tsx\");\n","\"use client\"\n\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport { DotsHorizontalIcon } from \"@radix-ui/react-icons\";\nimport { formatDistanceToNow } from \"date-fns/formatDistanceToNow\";\nimport { PlusIcon, Search } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport * as React from \"react\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport { AgentSession } from \"@EXULU_SHARED/models/agent-session\";\nimport {\n CREATE_AGENT_SESSION,\n GET_AGENT_SESSIONS,\n REMOVE_AGENT_SESSION_BY_ID,\n UPDATE_AGENT_SESSION_TITLE,\n} from \"@/queries/queries\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { cn } from \"@/lib/utils\";\nimport { usePathname } from \"next/navigation\";\nimport { useIsMobile } from \"@/hooks/use-mobile\";\nimport Link from \"next/link\";\nimport { checkChatSessionWriteAccess } from \"@/lib/check-chat-session-write-access\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\nexport function ChatSessionsComponent({ agent, type }: { agent: string, type: string }) {\n\n const pathname = usePathname();\n const { toast } = useToast();\n const { user } = useContext(UserContext);\n const [sessionName, setSessionName] = useState(\"\");\n const isMobile = useIsMobile();\n const router = useRouter();\n let [search, setSearch]: any = useState({ searchString: null });\n const [renameDialogOpen, setRenameDialogOpen] = useState(false);\n const [renameSessionId, setRenameSessionId] = useState<string | null>(null);\n const [newSessionName, setNewSessionName] = useState(\"\");\n\n const sessionsQuery = useQuery(GET_AGENT_SESSIONS, {\n returnPartialData: true,\n fetchPolicy: \"network-only\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 40,\n filters: {\n agent: {\n eq: agent\n }\n }\n },\n });\n\n const [removeSession, removeSessionResult] = useMutation(\n REMOVE_AGENT_SESSION_BY_ID,\n {\n refetchQueries: [\n GET_AGENT_SESSIONS,\n \"GetAgentSessions\",\n ],\n },\n );\n\n const [createAgentSession, createAgentSessionResult] = useMutation(\n CREATE_AGENT_SESSION,\n );\n\n const [updateSessionTitle, updateSessionTitleResult] = useMutation(\n UPDATE_AGENT_SESSION_TITLE,\n {\n refetchQueries: [\n GET_AGENT_SESSIONS,\n \"GetAgentSessions\",\n ],\n },\n );\n\n useEffect(() => {\n let variables: any = {\n page: 1,\n limit: 40,\n };\n if (search && search?.length > 2) {\n variables.filters = { agent: { eq: agent }, title: { contains: search } };\n } else {\n variables.filters = { agent: { eq: agent } };\n }\n sessionsQuery.refetch(variables);\n }, [search]);\n\n const handleCreateSession = async () => {\n const newSession = await createAgentSession({\n variables: {\n user: user.id,\n agent: agent,\n type: \"FLOW\",\n title: sessionName.trim(),\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n });\n if (newSession.errors) {\n console.error(\"error\", newSession.errors);\n return;\n }\n if (\n !newSession.data?.agent_sessionsCreateOne?.item?.id\n ) {\n console.error(\"error\", \"failed to create session\");\n return;\n }\n setSessionName(\"\");\n sessionsQuery.refetch();\n router.push(\n `/chat/${agent}/${newSession.data?.agent_sessionsCreateOne?.item?.id}`,\n );\n }\n\n const handleRenameSession = async () => {\n if (!renameSessionId || !newSessionName.trim()) return;\n\n const result = await updateSessionTitle({\n variables: {\n id: renameSessionId,\n title: newSessionName.trim(),\n },\n });\n\n if (result.errors) {\n console.error(\"error\", result.errors);\n toast({\n title: \"Error\",\n description: \"Failed to rename session.\",\n variant: \"destructive\",\n });\n return;\n }\n\n toast({\n title: \"Session renamed\",\n description: \"The session has been renamed successfully.\",\n });\n\n setRenameDialogOpen(false);\n setRenameSessionId(null);\n setNewSessionName(\"\");\n }\n\n return (\n <div\n key={agent + type}\n className=\"relative hidden flex-col items-start md:flex border-r\"\n x-chunk=\"dashboard-03-chunk-0\">\n <h2 className=\"mb-2 px-4 text-lg font-semibold tracking-tight\">Sessions</h2>\n\n <div className=\"bg-background/95 w-full backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <form>\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-2.5 size-4 text-muted-foreground\" />\n <Input\n onKeyUp={(e) => {\n const searchString = e.currentTarget.value;\n setSearch(searchString);\n }}\n placeholder=\"Search sessions\"\n className=\"pl-8 border-0\"\n />\n </div>\n </form>\n </div>\n\n <div className=\"flex w-full items-center gap-2 p-3 border-t justify-between\">\n <Input\n autoFocus={true}\n value={sessionName}\n onChange={(e) => setSessionName(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleCreateSession();\n }\n }}\n placeholder=\"Name\"\n className=\"flex-1\"\n />\n <Button\n variant=\"secondary\"\n tabIndex={1}\n disabled={createAgentSessionResult.loading || !sessionName.trim()}\n onClick={async () => {\n // create a new session\n handleCreateSession();\n }}\n >\n <div className=\"font-semibold\">\n <PlusIcon />\n </div>\n </Button>\n </div>\n {sessionsQuery.loading && (\n <div className=\"w-full flex flex-col p-2 pt-0 pb-2\">\n <Skeleton className=\"w-full rounded h-[70px] rounded-md\" />\n <Skeleton className=\"w-full rounded h-[70px] rounded-md mt-3\" />\n <Skeleton className=\"w-full rounded h-[70px] rounded-md mt-3\" />\n <Skeleton className=\"w-full rounded h-[70px] rounded-md mt-3\" />\n </div>\n )}\n\n {!sessionsQuery.loading && !sessionsQuery?.data?.agent_sessionsPagination?.items?.length && (\n <div className=\"w-full flex\">\n <p className=\"mx-auto mt-5\">No sessions found.</p>\n </div>\n )}\n\n {!sessionsQuery.loading\n ? sessionsQuery?.data?.agent_sessionsPagination?.items?.map(\n (\n item: Omit<AgentSession, \"agent\"> & {\n agent: Agent;\n },\n ) => {\n\n const writeAccess = checkChatSessionWriteAccess({\n ...item,\n agent: item.agent.id\n }, user);\n\n return (\n <div key={item.id} className={`w-full px-2 flex flex-col items-start gap-0 rounded-none border-none text-left text-sm mb-2`}>\n <Link\n key={item.id}\n href={`/chat/${agent}/${item.id}`}\n className={cn(\n `p-2 w-full flex flex-col items-start gap-2 rounded-md p-3 text-left text-sm transition-all hover:bg-accent`,\n pathname.includes(item.id) && \"bg-muted\",\n writeAccess ? \"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\",\n )}\n >\n <div className=\"flex w-full flex-col px-2\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex flex-col gap-2\">\n <div className=\"text-md font-medium max-w-[80%] truncate\">\n {item.title\n ? item.title?.substring(0, 20)\n : \"No title\"}\n </div>\n\n <div\n className={cn(\n \"ml-0 text-xs capitalize\",\n pathname.includes(item.id)\n ? \"text-foreground\"\n : \"text-muted-foreground\",\n )}\n >\n {item.updatedAt\n ? formatDistanceToNow(\n new Date(item.updatedAt),\n {\n addSuffix: true,\n },\n )\n : null}.\n </div>\n </div>\n\n {writeAccess && (\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n className=\"flex size-8 p-0 data-[state=open]:bg-muted\"\n >\n <DotsHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">Open menu</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n className=\"w-[160px]\">\n <DropdownMenuItem\n className=\"cursor-pointer\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setRenameSessionId(item.id);\n setNewSessionName(item.title || \"\");\n setRenameDialogOpen(true);\n }}>\n Rename\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"cursor-pointer\"\n onClick={() => {\n removeSession({\n variables: {\n id: item.id,\n },\n });\n toast({\n title: \"Deleting session\",\n description: \"We deleted the session.\",\n });\n }}>\n Delete\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n <small className=\"text-xs text-muted-foreground\">\n {item.agent?.name}\n </small>\n </div>\n </Link>\n </div>\n )\n },\n )\n : null}\n\n <Dialog open={renameDialogOpen} onOpenChange={setRenameDialogOpen}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Rename Session</DialogTitle>\n <DialogDescription>\n Enter a new name for this session.\n </DialogDescription>\n </DialogHeader>\n <Input\n value={newSessionName}\n onChange={(e) => setNewSessionName(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleRenameSession();\n }\n }}\n placeholder=\"Session name\"\n />\n <DialogFooter>\n <Button\n variant=\"outline\"\n onClick={() => {\n setRenameDialogOpen(false);\n setRenameSessionId(null);\n setNewSessionName(\"\");\n }}\n >\n Cancel\n </Button>\n <Button\n onClick={handleRenameSession}\n disabled={updateSessionTitleResult.loading || !newSessionName.trim()}\n >\n Rename\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n","import Link from \"next/link\"\nimport { ChevronLeft, Info, Search, Star } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_AGENTS, GET_AGENTS_BY_IDS, UPDATE_USER_BY_ID } from \"@/queries/queries\";\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport * as React from \"react\";\nimport { TruncatedText } from \"./truncated-text\";\nimport { useParams, usePathname } from \"next/navigation\";\nimport { Skeleton } from \"./ui/skeleton\";\nimport { AgentDetailsSheet } from \"@/app/(application)/agents/components/agent-details-sheet\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { useContext, useState, useEffect } from \"react\";\nimport { User } from \"@/types/models/user\";\nimport { ChatSessionsComponent } from \"@/app/(application)/chat/[agent]/chat-sessions\";\n\nexport function AgentNav() {\n const [searchQuery, setSearchQuery] = React.useState(\"\");\n const [selectedAgentId, setSelectedAgentId] = React.useState<string | null>(null);\n const [sheetOpen, setSheetOpen] = React.useState(false);\n const [showAllFavorites, setShowAllFavorites] = React.useState(false);\n const [showAllAgents, setShowAllAgents] = React.useState(false);\n const params = useParams();\n const pathname = usePathname();\n const { user: init } = useContext(UserContext);\n const [user, setUser] = useState<User>(init);\n\n // Fetch favourite agents using GET_AGENTS_BY_IDS\n const favouriteAgents = useQuery(GET_AGENTS_BY_IDS, {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n variables: {\n ids: user?.favourite_agents || []\n },\n skip: !user?.favourite_agents?.length,\n });\n\n // Fetch regular agents (excluding favourites when not searching)\n const agents = useQuery(GET_AGENTS, {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 200,\n filters: {\n ...(user?.super_admin ? {} : {\n active: true\n }),\n ...(searchQuery ? {\n name: {\n contains: searchQuery\n }\n } : {})\n },\n },\n });\n\n const [updateUser] = useMutation(UPDATE_USER_BY_ID, {\n onCompleted: (data) => {\n setUser({ ...user, favourite_agents: data.usersUpdateOneById?.item?.favourite_agents });\n },\n });\n\n const handleInfoClick = (agentId: string, event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n setSelectedAgentId(agentId);\n setSheetOpen(true);\n };\n\n const handleFavouriteToggle = (agentId: string, event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n console.log(\"user\", user);\n const currentFavourites = user?.favourite_agents || [];\n const isFavourite = currentFavourites.includes(agentId);\n\n let newFavourites: string[];\n if (isFavourite) {\n newFavourites = currentFavourites.filter((id: string) => id !== agentId);\n } else {\n newFavourites = [...currentFavourites, agentId];\n }\n\n console.log(\"newFavourites\", newFavourites);\n\n updateUser({\n variables: {\n id: user.id,\n favourite_agents: newFavourites\n }\n });\n };\n\n // Check if an agent is currently selected\n const selectedAgent = params.agent ? agents?.data?.agentsPagination?.items?.find(\n (agent: Agent) => agent.id === params.agent\n ) : null;\n\n const renderAgentImage = (agent: Agent) => {\n if (agent.image) {\n return (\n <img\n src={agent.image}\n alt={`${agent.name} profile`}\n className=\"h-4 w-4 rounded-full object-cover\"\n />\n );\n } else {\n return (\n <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\">\n {agent.name?.charAt(0).toUpperCase() || 'A'}\n </div>\n );\n }\n };\n\n useEffect(() => {\n setShowAllAgents(false)\n setShowAllFavorites(false)\n }, [params.agent]);\n\n return (\n <>\n <div className=\"pb-12 w-[250px] max-h-[calc(100vh)] overflow-y-auto overflow-x-hidden\">\n <div className=\"space-y-4 py-4\">\n <div>\n <h2 className=\"mb-2 px-4 text-lg font-semibold tracking-tight\">Agents</h2>\n <div>\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder=\"Search agents...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-8 h-9 border-0\"\n />\n </div>\n </div>\n <div className=\"space-y-1 border-t px-2 pt-2\">\n {\n (selectedAgent && !showAllAgents) && (\n <div key={`fav-${selectedAgent.id}`} className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={() => setShowAllAgents(!showAllAgents)}\n >\n <ChevronLeft className=\"h-3 w-3\" />\n </Button>\n <Link onClick={() => setShowAllAgents(false)} href={`/chat/${selectedAgent.id}`} className=\"flex-1\">\n <Button\n onClick={() => setShowAllAgents(false)}\n variant={pathname.includes(selectedAgent.id) ? \"secondary\" : \"ghost\"}\n className=\"w-full justify-start gap-2 pr-5\">\n {renderAgentImage(selectedAgent)}\n <span className=\"flex-1 text-left\">\n <TruncatedText text={selectedAgent.name} length={7} />\n </span>\n </Button>\n </Link>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleFavouriteToggle(selectedAgent.id, e)}\n >\n <Star className=\"h-3 w-3 fill-yellow-400 text-yellow-400\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleInfoClick(selectedAgent.id, e)}\n >\n <Info className=\"h-3 w-3\" />\n </Button>\n </div>\n )\n }\n {\n (!selectedAgent || showAllAgents || searchQuery) && (\n <>\n {user?.favourite_agents && user?.favourite_agents?.length > 0 && !searchQuery && (\n <>\n {favouriteAgents.loading && (\n <>\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n </>\n )}\n {!favouriteAgents.loading && (() => {\n const favoriteAgentsList = favouriteAgents?.data?.agentByIds || [];\n const displayedFavorites = showAllFavorites ? favoriteAgentsList : favoriteAgentsList.slice(0, 4);\n\n return (\n <>\n {displayedFavorites.map((agent: Agent) => (\n <div key={`fav-${agent.id}`} className=\"flex items-center gap-1\">\n <Link href={`/chat/${agent.id}`} className=\"flex-1\">\n <Button\n variant={pathname.includes(agent.id) ? \"secondary\" : \"ghost\"}\n className=\"w-full justify-start gap-2 pr-1\">\n {renderAgentImage(agent)}\n <span className=\"flex-1 text-left\">\n <TruncatedText text={agent.name} length={10} />\n </span>\n </Button>\n </Link>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleFavouriteToggle(agent.id, e)}\n >\n <Star className=\"h-3 w-3 fill-yellow-400 text-yellow-400\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleInfoClick(agent.id, e)}\n >\n <Info className=\"h-3 w-3\" />\n </Button>\n </div>\n ))}\n {favoriteAgentsList.length > 4 && (\n <Button\n variant=\"ghost\"\n className=\"w-full justify-center text-xs text-muted-foreground h-8\"\n onClick={() => setShowAllFavorites(!showAllFavorites)}\n >\n {showAllFavorites\n ? 'Show less'\n : `Show more (${favoriteAgentsList.length - 4})`\n }\n </Button>\n )}\n </>\n );\n })()}\n </>\n )}\n\n {/* Regular Agents */}\n {agents.loading && <>\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n </>}\n {!agents.loading && (() => {\n const regularAgentsList = agents?.data?.agentsPagination?.items\n ?.filter((agent: Agent) => !user?.favourite_agents?.includes(agent.id) || searchQuery) || [];\n const displayedAgents = (searchQuery || showAllAgents) ? regularAgentsList : regularAgentsList.slice(0, 4);\n\n return (\n <>\n {displayedAgents.map((agent: Agent) => (\n <div key={agent.id} className=\"flex items-center gap-1\">\n <Link href={`/chat/${agent.id}`} className=\"flex-1\">\n <Button\n variant={pathname.includes(agent.id) ? \"secondary\" : \"ghost\"}\n className=\"w-full justify-start gap-2 pr-1\">\n {renderAgentImage(agent)}\n <span className=\"flex-1 text-left\">\n <TruncatedText text={agent.name} length={14} />\n </span>\n </Button>\n </Link>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleFavouriteToggle(agent.id, e)}\n >\n <Star className={`h-3 w-3 ${user?.favourite_agents?.includes(agent.id) ? 'fill-yellow-400 text-yellow-400' : ''}`} />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleInfoClick(agent.id, e)}\n >\n <Info className=\"h-3 w-3\" />\n </Button>\n </div>\n ))}\n {!searchQuery && regularAgentsList.length > 4 && (\n <Button\n variant=\"ghost\"\n className=\"w-full justify-center text-xs text-muted-foreground h-8\"\n onClick={() => setShowAllAgents(!showAllAgents)}\n >\n {showAllAgents\n ? 'Show less'\n : `Show more (${regularAgentsList.length - 4})`\n }\n </Button>\n )}\n </>\n );\n })()}\n </>\n )}\n </div>\n </div>\n {/*<div className=\"px-3 py-2\">\n <h2 className=\"mb-2 px-4 text-lg font-semibold tracking-tight\">Settings</h2>\n <div className=\"space-y-1\">\n <Link href=\"/settings\">\n <Button variant=\"ghost\" className=\"w-full justify-start gap-2\">\n <Settings className=\"h-4 w-4\" />\n Settings\n </Button>\n </Link>\n </div>\n </div>*/}\n </div>\n {\n params.agent && (\n <ChatSessionsComponent agent={params.agent as string} type={\"chat\"} />\n )\n }\n </div>\n\n {selectedAgentId && (\n <AgentDetailsSheet\n agentId={selectedAgentId}\n open={sheetOpen}\n onOpenChange={(open) => {\n setSheetOpen(open);\n if (!open) {\n setSelectedAgentId(null);\n }\n }}\n />\n )}\n </>\n )\n}\n\n","\"use client\";\n\nimport {AgentNav} from \"@/components/agent-nav\";\nimport * as React from \"react\";\n\nexport default function ChatLayout({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"flex h-full\">\n <div className=\"border-r bg-muted/10\">\n <AgentNav/>\n </div>\n {children}\n </div>\n );\n}\n","export function TruncatedText({ text, length }: { text: string, length: number }) {\n if (text.length > length) {\n return <>{text.slice(0, length)}...</>\n } else {\n return <>{text}</>;\n }\n}","\"use client\";\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","import { 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}","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('ChevronLeft', [\n ['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }],\n]);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQuNSAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNy41TDE0LjUgMnoiIC8+CiAgPHBvbHlsaW5lIHBvaW50cz0iMTQgMiAxNCA4IDIwIDgiIC8+CiAgPGxpbmUgeDE9IjE2IiB4Mj0iOCIgeTE9IjEzIiB5Mj0iMTMiIC8+CiAgPGxpbmUgeDE9IjE2IiB4Mj0iOCIgeTE9IjE3IiB5Mj0iMTciIC8+CiAgPGxpbmUgeDE9IjEwIiB4Mj0iOCIgeTE9IjkiIHkyPSI5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('FileText', [\n [\n 'path',\n { 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' },\n ],\n ['polyline', { points: '14 2 14 8 20 8', key: '1ew0cm' }],\n ['line', { x1: '16', x2: '8', y1: '13', y2: '13', key: '14keom' }],\n ['line', { x1: '16', x2: '8', y1: '17', y2: '17', key: '17nazh' }],\n ['line', { x1: '10', x2: '8', y1: '9', y2: '9', key: '1a5vjj' }],\n]);\n\nexport default FileText;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Image\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiByeT0iMiIgLz4KICA8Y2lyY2xlIGN4PSI5IiBjeT0iOSIgcj0iMiIgLz4KICA8cGF0aCBkPSJtMjEgMTUtMy4wODYtMy4wODZhMiAyIDAgMCAwLTIuODI4IDBMNiAyMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Image = createLucideIcon('Image', [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ['circle', { cx: '9', cy: '9', r: '2', key: 'af1f0g' }],\n ['path', { d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21', key: '1xmnt7' }],\n]);\n\nexport default Image;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Info\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNMTIgMTZ2LTQiIC8+CiAgPHBhdGggZD0iTTEyIDhoLjAxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/info\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Info = createLucideIcon('Info', [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 16v-4', key: '1dtifu' }],\n ['path', { d: 'M12 8h.01', key: 'e9boi3' }],\n]);\n\nexport default Info;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('Plus', [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n]);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI4IiAvPgogIDxwYXRoIGQ9Im0yMSAyMS00LjMtNC4zIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('Search', [\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n ['path', { d: 'm21 21-4.3-4.3', key: '1qie3q' }],\n]);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMjJzOC00IDgtMTBWNWwtOC0zLTggM3Y3YzAgNiA4IDEwIDggMTAiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('Shield', [\n ['path', { d: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10', key: '1irkt0' }],\n]);\n\nexport default Shield;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWdvbiBwb2ludHM9IjEyIDIgMTUuMDkgOC4yNiAyMiA5LjI3IDE3IDE0LjE0IDE4LjE4IDIxLjAyIDEyIDE3Ljc3IDUuODIgMjEuMDIgNyAxNC4xNCAyIDkuMjcgOC45MSA4LjI2IDEyIDIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/star\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Star = createLucideIcon('Star', [\n [\n 'polygon',\n {\n points:\n '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',\n key: '8f66p6',\n },\n ],\n]);\n\nexport default Star;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Text\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTcgNi4xSDMiIC8+CiAgPHBhdGggZD0iTTIxIDEyLjFIMyIgLz4KICA8cGF0aCBkPSJNMTUuMSAxOEgzIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Text = createLucideIcon('Text', [\n ['path', { d: 'M17 6.1H3', key: 'wptmhv' }],\n ['path', { d: 'M21 12.1H3', key: '1j38uz' }],\n ['path', { d: 'M15.1 18H3', key: '1nb16a' }],\n]);\n\nexport default Text;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Video\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjIgOC02IDQgNiA0VjhaIiAvPgogIDxyZWN0IHdpZHRoPSIxNCIgaGVpZ2h0PSIxMiIgeD0iMiIgeT0iNiIgcng9IjIiIHJ5PSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/video\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Video = createLucideIcon('Video', [\n ['path', { d: 'm22 8-6 4 6 4V8Z', key: '50v9me' }],\n ['rect', { width: '14', height: '12', x: '2', y: '6', rx: '2', ry: '2', key: '1rqjg6' }],\n]);\n\nexport default Video;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Volume2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWdvbiBwb2ludHM9IjExIDUgNiA5IDIgOSAyIDE1IDYgMTUgMTEgMTkgMTEgNSIgLz4KICA8cGF0aCBkPSJNMTUuNTQgOC40NmE1IDUgMCAwIDEgMCA3LjA3IiAvPgogIDxwYXRoIGQ9Ik0xOS4wNyA0LjkzYTEwIDEwIDAgMCAxIDAgMTQuMTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/volume-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Volume2 = createLucideIcon('Volume2', [\n ['polygon', { points: '11 5 6 9 2 9 2 15 6 15 11 19 11 5', key: '16drj5' }],\n ['path', { d: 'M15.54 8.46a5 5 0 0 1 0 7.07', key: 'ltjumu' }],\n ['path', { d: 'M19.07 4.93a10 10 0 0 1 0 14.14', key: '1kegas' }],\n]);\n\nexport default Volume2;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Wrench\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQuNyA2LjNhMSAxIDAgMCAwIDAgMS40bDEuNiAxLjZhMSAxIDAgMCAwIDEuNCAwbDMuNzctMy43N2E2IDYgMCAwIDEtNy45NCA3Ljk0bC02LjkxIDYuOTFhMi4xMiAyLjEyIDAgMCAxLTMtM2w2LjkxLTYuOTFhNiA2IDAgMCAxIDcuOTQtNy45NGwtMy43NiAzLjc2eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/wrench\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Wrench = createLucideIcon('Wrench', [\n [\n 'path',\n {\n 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',\n key: 'cbrjhi',\n },\n ],\n]);\n\nexport default Wrench;\n","import * as React from \"rehackt\";\nimport { canUseDOM } from \"../../../utilities/index.js\";\n// use canUseDOM here instead of canUseLayoutEffect because we want to be able\n// to use useLayoutEffect in our jest tests. useLayoutEffect seems to work fine\n// in useSuspenseQuery tests, but to honor the original comment about the\n// warnings for useSyncExternalStore implementation, canUseLayoutEffect is left\n// alone.\nexport var useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;\n//# sourceMappingURL=useIsomorphicLayoutEffect.js.map","import { __assign } from \"tslib\";\nimport * as React from \"rehackt\";\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { useIsomorphicLayoutEffect } from \"./internal/useIsomorphicLayoutEffect.js\";\n/**\n *\n *\n * > Refer to the [Mutations](https://www.apollographql.com/docs/react/data/mutations/) section for a more in-depth overview of `useMutation`.\n *\n * @example\n * ```jsx\n * import { gql, useMutation } from '@apollo/client';\n *\n * const ADD_TODO = gql`\n * mutation AddTodo($type: String!) {\n * addTodo(type: $type) {\n * id\n * type\n * }\n * }\n * `;\n *\n * function AddTodo() {\n * let input;\n * const [addTodo, { data }] = useMutation(ADD_TODO);\n *\n * return (\n * <div>\n * <form\n * onSubmit={e => {\n * e.preventDefault();\n * addTodo({ variables: { type: input.value } });\n * input.value = '';\n * }}\n * >\n * <input\n * ref={node => {\n * input = node;\n * }}\n * />\n * <button type=\"submit\">Add Todo</button>\n * </form>\n * </div>\n * );\n * }\n * ```\n * @since 3.0.0\n * @param mutation - A GraphQL mutation document parsed into an AST by `gql`.\n * @param options - Options to control how the mutation is executed.\n * @returns A tuple in the form of `[mutate, result]`\n */\nexport function useMutation(mutation, options) {\n var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);\n verifyDocumentType(mutation, DocumentType.Mutation);\n var _a = React.useState({\n called: false,\n loading: false,\n client: client,\n }), result = _a[0], setResult = _a[1];\n var ref = React.useRef({\n result: result,\n mutationId: 0,\n isMounted: true,\n client: client,\n mutation: mutation,\n options: options,\n });\n useIsomorphicLayoutEffect(function () {\n Object.assign(ref.current, { client: client, options: options, mutation: mutation });\n });\n var execute = React.useCallback(function (executeOptions) {\n if (executeOptions === void 0) { executeOptions = {}; }\n var _a = ref.current, options = _a.options, mutation = _a.mutation;\n var baseOptions = __assign(__assign({}, options), { mutation: mutation });\n var client = executeOptions.client || ref.current.client;\n if (!ref.current.result.loading &&\n !baseOptions.ignoreResults &&\n ref.current.isMounted) {\n setResult((ref.current.result = {\n loading: true,\n error: void 0,\n data: void 0,\n called: true,\n client: client,\n }));\n }\n var mutationId = ++ref.current.mutationId;\n var clientOptions = mergeOptions(baseOptions, executeOptions);\n return client\n .mutate(clientOptions)\n .then(function (response) {\n var _a, _b;\n var data = response.data, errors = response.errors;\n var error = errors && errors.length > 0 ?\n new ApolloError({ graphQLErrors: errors })\n : void 0;\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (error && onError) {\n onError(error, clientOptions);\n }\n if (mutationId === ref.current.mutationId &&\n !clientOptions.ignoreResults) {\n var result_1 = {\n called: true,\n loading: false,\n data: data,\n error: error,\n client: client,\n };\n if (ref.current.isMounted && !equal(ref.current.result, result_1)) {\n setResult((ref.current.result = result_1));\n }\n }\n var onCompleted = executeOptions.onCompleted || ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onCompleted);\n if (!error) {\n onCompleted === null || onCompleted === void 0 ? void 0 : onCompleted(response.data, clientOptions);\n }\n return response;\n }, function (error) {\n var _a;\n if (mutationId === ref.current.mutationId &&\n ref.current.isMounted) {\n var result_2 = {\n loading: false,\n error: error,\n data: void 0,\n called: true,\n client: client,\n };\n if (!equal(ref.current.result, result_2)) {\n setResult((ref.current.result = result_2));\n }\n }\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (onError) {\n onError(error, clientOptions);\n // TODO(brian): why are we returning this here???\n return { data: void 0, errors: error };\n }\n throw error;\n });\n }, []);\n var reset = React.useCallback(function () {\n if (ref.current.isMounted) {\n var result_3 = {\n called: false,\n loading: false,\n client: ref.current.client,\n };\n Object.assign(ref.current, { mutationId: 0, result: result_3 });\n setResult(result_3);\n }\n }, []);\n React.useEffect(function () {\n var current = ref.current;\n // eslint-disable-next-line react-compiler/react-compiler\n current.isMounted = true;\n return function () {\n current.isMounted = false;\n };\n }, []);\n return [execute, __assign({ reset: reset }, result)];\n}\n//# sourceMappingURL=useMutation.js.map"],"names":["Promise","resolve","then","__webpack_require__","bind","ChatSessionsComponent","param","sessionsQuery","agent","type","pathname","usePathname","toast","useToast","user","useContext","UserContext","sessionName","setSessionName","useState","useIsMobile","router","useRouter","search","setSearch","searchString","renameDialogOpen","setRenameDialogOpen","renameSessionId","setRenameSessionId","newSessionName","setNewSessionName","useQuery","GET_AGENT_SESSIONS","returnPartialData","fetchPolicy","nextFetchPolicy","variables","page","limit","filters","eq","removeSession","removeSessionResult","useMutation","REMOVE_AGENT_SESSION_BY_ID","refetchQueries","createAgentSession","createAgentSessionResult","CREATE_AGENT_SESSION","updateSessionTitle","updateSessionTitleResult","UPDATE_AGENT_SESSION_TITLE","useEffect","length","title","contains","refetch","handleCreateSession","newSession","id","trim","createdAt","Date","toISOString","updatedAt","errors","console","error","data","agent_sessionsCreateOne","item","push","concat","handleRenameSession","result","description","variant","jsx_runtime","jsxs","div","className","x-chunk","jsx","h2","form","Search","Input","onKeyUp","e","currentTarget","value","placeholder","autoFocus","onChange","target","onKeyDown","key","Button","tabIndex","disabled","loading","onClick","PlusIcon","Skeleton","agent_sessionsPagination","items","p","map","writeAccess","checkChatSessionWriteAccess","Link","href","cn","includes","substring","formatDistanceToNow","addSuffix","DropdownMenu","modal","DropdownMenuTrigger","asChild","DotsHorizontalIcon","span","DropdownMenuContent","align","DropdownMenuItem","preventDefault","stopPropagation","small","name","Dialog","open","onOpenChange","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","AgentNav","agents","searchQuery","setSearchQuery","React","selectedAgentId","setSelectedAgentId","sheetOpen","setSheetOpen","showAllFavorites","setShowAllFavorites","showAllAgents","setShowAllAgents","params","useParams","init","setUser","favouriteAgents","GET_AGENTS_BY_IDS","ids","favourite_agents","skip","GET_AGENTS","super_admin","active","updateUser","UPDATE_USER_BY_ID","onCompleted","usersUpdateOneById","handleInfoClick","agentId","event","handleFavouriteToggle","newFavourites","log","currentFavourites","filter","selectedAgent","agentsPagination","find","renderAgentImage","image","img","src","alt","charAt","toUpperCase","Fragment","size","ChevronLeft","TruncatedText","text","Star","Info","favoriteAgentsList","agentByIds","displayedFavorites","slice","regularAgentsList","displayedAgents","AgentDetailsSheet","ChatLayout","children","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","count","toastTimeouts","Map","addToRemoveQueue","has","toastId","timeout","setTimeout","delete","dispatch","set","reducer","state","action","toasts","t","forEach","undefined","listeners","memoryState","listener","props","Number","MAX_SAFE_INTEGER","toString","dismiss","update","setState","index","indexOf","splice","session","isPrivate","rights_mode","isPublic","byUsers","byRoles","isAdmin","isCreator","created_by","RBAC","users","u","rights","roles","r","role","createLucideIcon","d","FileText","points","x1","x2","y1","y2","Image","width","height","x","y","rx","ry","cx","cy","Plus","Shield","Text","Video","Volume2","Wrench","useIsomorphicLayoutEffect","canUse","Nq","rehackt","useLayoutEffect","mutation","options","client","useApolloClient","parser","Vp","n_","Mutation","_a","called","setResult","ref","useRef","mutationId","isMounted","Object","assign","current","execute","useCallback","executeOptions","baseOptions","tslib_es6","pi","ignoreResults","clientOptions","mergeOptions","J","mutate","response","_b","client_errors","cA","graphQLErrors","onError","result_1","lib","D","result_2","reset","result_3"],"sourceRoot":""}
1
+ {"version":3,"file":"static/chunks/app/(application)/chat/layout-ba702af6bb56baa2.js","mappings":"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","sources":["webpack://_N_E/?dfc3","webpack://_N_E/./app/(application)/chat/[agent]/chat-sessions.tsx","webpack://_N_E/./components/agent-nav.tsx","webpack://_N_E/./app/(application)/chat/layout.tsx","webpack://_N_E/./components/truncated-text.tsx","webpack://_N_E/./components/ui/use-toast.ts","webpack://_N_E/./lib/check-chat-session-write-access.ts","webpack://_N_E/../../../src/icons/chevron-left.ts","webpack://_N_E/../../../src/icons/file-text.ts","webpack://_N_E/../../../src/icons/image.ts","webpack://_N_E/../../../src/icons/info.ts","webpack://_N_E/../../../src/icons/plus.ts","webpack://_N_E/../../../src/icons/search.ts","webpack://_N_E/../../../src/icons/shield.ts","webpack://_N_E/../../../src/icons/star.ts","webpack://_N_E/../../../src/icons/text.ts","webpack://_N_E/../../../src/icons/video.ts","webpack://_N_E/../../../src/icons/volume-2.ts","webpack://_N_E/../../../src/icons/wrench.ts","webpack://_N_E/./node_modules/@apollo/client/react/hooks/internal/useIsomorphicLayoutEffect.js","webpack://_N_E/./node_modules/@apollo/client/react/hooks/useMutation.js"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/layout.tsx\");\n","\"use client\"\n\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport { DotsHorizontalIcon } from \"@radix-ui/react-icons\";\nimport { formatDistanceToNow } from \"date-fns/formatDistanceToNow\";\nimport { PlusIcon, Search } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport * as React from \"react\";\nimport { useContext, useEffect, useState } from \"react\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport { AgentSession } from \"@EXULU_SHARED/models/agent-session\";\nimport {\n CREATE_AGENT_SESSION,\n GET_AGENT_SESSIONS,\n REMOVE_AGENT_SESSION_BY_ID,\n UPDATE_AGENT_SESSION_TITLE,\n} from \"@/queries/queries\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { cn } from \"@/lib/utils\";\nimport { usePathname } from \"next/navigation\";\nimport { useIsMobile } from \"@/hooks/use-mobile\";\nimport Link from \"next/link\";\nimport { checkChatSessionWriteAccess } from \"@/lib/check-chat-session-write-access\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\nexport function ChatSessionsComponent({ agent, type }: { agent: string, type: string }) {\n\n const pathname = usePathname();\n const { toast } = useToast();\n const { user } = useContext(UserContext);\n const [sessionName, setSessionName] = useState(\"\");\n const isMobile = useIsMobile();\n const router = useRouter();\n let [search, setSearch]: any = useState({ searchString: null });\n const [renameDialogOpen, setRenameDialogOpen] = useState(false);\n const [renameSessionId, setRenameSessionId] = useState<string | null>(null);\n const [newSessionName, setNewSessionName] = useState(\"\");\n\n const sessionsQuery = useQuery(GET_AGENT_SESSIONS, {\n returnPartialData: true,\n fetchPolicy: \"network-only\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 40,\n filters: {\n agent: {\n eq: agent\n }\n }\n },\n });\n\n const [removeSession, removeSessionResult] = useMutation(\n REMOVE_AGENT_SESSION_BY_ID,\n {\n refetchQueries: [\n GET_AGENT_SESSIONS,\n \"GetAgentSessions\",\n ],\n },\n );\n\n const [createAgentSession, createAgentSessionResult] = useMutation(\n CREATE_AGENT_SESSION,\n );\n\n const [updateSessionTitle, updateSessionTitleResult] = useMutation(\n UPDATE_AGENT_SESSION_TITLE,\n {\n refetchQueries: [\n GET_AGENT_SESSIONS,\n \"GetAgentSessions\",\n ],\n },\n );\n\n useEffect(() => {\n let variables: any = {\n page: 1,\n limit: 40,\n };\n if (search && search?.length > 2) {\n variables.filters = { agent: { eq: agent }, title: { contains: search } };\n } else {\n variables.filters = { agent: { eq: agent } };\n }\n sessionsQuery.refetch(variables);\n }, [search]);\n\n const handleCreateSession = async () => {\n const newSession = await createAgentSession({\n variables: {\n user: user.id,\n agent: agent,\n type: \"FLOW\",\n title: sessionName.trim(),\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n });\n if (newSession.errors) {\n console.error(\"error\", newSession.errors);\n return;\n }\n if (\n !newSession.data?.agent_sessionsCreateOne?.item?.id\n ) {\n console.error(\"error\", \"failed to create session\");\n return;\n }\n setSessionName(\"\");\n sessionsQuery.refetch();\n router.push(\n `/chat/${agent}/${newSession.data?.agent_sessionsCreateOne?.item?.id}`,\n );\n }\n\n const handleRenameSession = async () => {\n if (!renameSessionId || !newSessionName.trim()) return;\n\n const result = await updateSessionTitle({\n variables: {\n id: renameSessionId,\n title: newSessionName.trim(),\n },\n });\n\n if (result.errors) {\n console.error(\"error\", result.errors);\n toast({\n title: \"Error\",\n description: \"Failed to rename session.\",\n variant: \"destructive\",\n });\n return;\n }\n\n toast({\n title: \"Session renamed\",\n description: \"The session has been renamed successfully.\",\n });\n\n setRenameDialogOpen(false);\n setRenameSessionId(null);\n setNewSessionName(\"\");\n }\n\n return (\n <div\n key={agent + type}\n className=\"relative hidden flex-col items-start md:flex border-r\"\n x-chunk=\"dashboard-03-chunk-0\">\n <h2 className=\"mb-2 px-4 text-lg font-semibold tracking-tight\">Sessions</h2>\n\n <div className=\"bg-background/95 w-full backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n <form>\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-2.5 size-4 text-muted-foreground\" />\n <Input\n onKeyUp={(e) => {\n const searchString = e.currentTarget.value;\n setSearch(searchString);\n }}\n placeholder=\"Search sessions\"\n className=\"pl-8 border-0\"\n />\n </div>\n </form>\n </div>\n\n <div className=\"flex w-full items-center gap-2 p-3 border-t justify-between\">\n <Input\n autoFocus={true}\n value={sessionName}\n onChange={(e) => setSessionName(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleCreateSession();\n }\n }}\n placeholder=\"Name\"\n className=\"flex-1\"\n />\n <Button\n variant=\"secondary\"\n tabIndex={1}\n disabled={createAgentSessionResult.loading || !sessionName.trim()}\n onClick={async () => {\n // create a new session\n handleCreateSession();\n }}\n >\n <div className=\"font-semibold\">\n <PlusIcon />\n </div>\n </Button>\n </div>\n {sessionsQuery.loading && (\n <div className=\"w-full flex flex-col p-2 pt-0 pb-2\">\n <Skeleton className=\"w-full rounded h-[70px] rounded-md\" />\n <Skeleton className=\"w-full rounded h-[70px] rounded-md mt-3\" />\n <Skeleton className=\"w-full rounded h-[70px] rounded-md mt-3\" />\n <Skeleton className=\"w-full rounded h-[70px] rounded-md mt-3\" />\n </div>\n )}\n\n {!sessionsQuery.loading && !sessionsQuery?.data?.agent_sessionsPagination?.items?.length && (\n <div className=\"w-full flex\">\n <p className=\"mx-auto mt-5\">No sessions found.</p>\n </div>\n )}\n\n {!sessionsQuery.loading\n ? sessionsQuery?.data?.agent_sessionsPagination?.items?.map(\n (\n item: Omit<AgentSession, \"agent\"> & {\n agent: Agent;\n },\n ) => {\n\n const writeAccess = checkChatSessionWriteAccess({\n ...item,\n agent: item.agent.id\n }, user);\n\n return (\n <div key={item.id} className={`w-full px-2 flex flex-col items-start gap-0 rounded-none border-none text-left text-sm mb-2`}>\n <Link\n key={item.id}\n href={`/chat/${agent}/${item.id}`}\n className={cn(\n `p-2 w-full flex flex-col items-start gap-2 rounded-md p-3 text-left text-sm transition-all hover:bg-accent`,\n pathname.includes(item.id) && \"bg-muted\",\n writeAccess ? \"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\",\n )}\n >\n <div className=\"flex w-full flex-col px-2\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex flex-col gap-2\">\n <div className=\"text-md font-medium max-w-[80%] truncate\">\n {item.title\n ? item.title?.substring(0, 20)\n : \"No title\"}\n </div>\n\n <div\n className={cn(\n \"ml-0 text-xs capitalize\",\n pathname.includes(item.id)\n ? \"text-foreground\"\n : \"text-muted-foreground\",\n )}\n >\n {item.updatedAt\n ? formatDistanceToNow(\n new Date(item.updatedAt),\n {\n addSuffix: true,\n },\n )\n : null}.\n </div>\n </div>\n\n {writeAccess && (\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n className=\"flex size-8 p-0 data-[state=open]:bg-muted\"\n >\n <DotsHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">Open menu</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n className=\"w-[160px]\">\n <DropdownMenuItem\n className=\"cursor-pointer\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setRenameSessionId(item.id);\n setNewSessionName(item.title || \"\");\n setRenameDialogOpen(true);\n }}>\n Rename\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"cursor-pointer\"\n onClick={() => {\n removeSession({\n variables: {\n id: item.id,\n },\n });\n toast({\n title: \"Deleting session\",\n description: \"We deleted the session.\",\n });\n }}>\n Delete\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n <small className=\"text-xs text-muted-foreground\">\n {item.agent?.name}\n </small>\n </div>\n </Link>\n </div>\n )\n },\n )\n : null}\n\n <Dialog open={renameDialogOpen} onOpenChange={setRenameDialogOpen}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Rename Session</DialogTitle>\n <DialogDescription>\n Enter a new name for this session.\n </DialogDescription>\n </DialogHeader>\n <Input\n value={newSessionName}\n onChange={(e) => setNewSessionName(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleRenameSession();\n }\n }}\n placeholder=\"Session name\"\n />\n <DialogFooter>\n <Button\n variant=\"outline\"\n onClick={() => {\n setRenameDialogOpen(false);\n setRenameSessionId(null);\n setNewSessionName(\"\");\n }}\n >\n Cancel\n </Button>\n <Button\n onClick={handleRenameSession}\n disabled={updateSessionTitleResult.loading || !newSessionName.trim()}\n >\n Rename\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n","import Link from \"next/link\"\nimport { ChevronLeft, Info, Search, Star } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_AGENTS, GET_AGENTS_BY_IDS, UPDATE_USER_BY_ID } from \"@/queries/queries\";\nimport { Agent } from \"@EXULU_SHARED/models/agent\";\nimport * as React from \"react\";\nimport { TruncatedText } from \"./truncated-text\";\nimport { useParams, usePathname } from \"next/navigation\";\nimport { Skeleton } from \"./ui/skeleton\";\nimport { AgentDetailsSheet } from \"@/app/(application)/agents/components/agent-details-sheet\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { useContext, useState, useEffect } from \"react\";\nimport { User } from \"@/types/models/user\";\nimport { ChatSessionsComponent } from \"@/app/(application)/chat/[agent]/chat-sessions\";\n\nexport function AgentNav() {\n const [searchQuery, setSearchQuery] = React.useState(\"\");\n const [selectedAgentId, setSelectedAgentId] = React.useState<string | null>(null);\n const [sheetOpen, setSheetOpen] = React.useState(false);\n const [showAllFavorites, setShowAllFavorites] = React.useState(false);\n const [showAllAgents, setShowAllAgents] = React.useState(false);\n const params = useParams();\n const pathname = usePathname();\n const { user: init } = useContext(UserContext);\n const [user, setUser] = useState<User>(init);\n\n // Fetch favourite agents using GET_AGENTS_BY_IDS\n const favouriteAgents = useQuery(GET_AGENTS_BY_IDS, {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n variables: {\n ids: user?.favourite_agents || []\n },\n skip: !user?.favourite_agents?.length,\n });\n\n // Fetch regular agents (excluding favourites when not searching)\n const agents = useQuery(GET_AGENTS, {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 200,\n filters: {\n ...(user?.super_admin ? {} : {\n active: true\n }),\n ...(searchQuery ? {\n name: {\n contains: searchQuery\n }\n } : {})\n },\n },\n });\n\n const [updateUser] = useMutation(UPDATE_USER_BY_ID, {\n onCompleted: (data) => {\n setUser({ ...user, favourite_agents: data.usersUpdateOneById?.item?.favourite_agents });\n },\n });\n\n const handleInfoClick = (agentId: string, event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n setSelectedAgentId(agentId);\n setSheetOpen(true);\n };\n\n const handleFavouriteToggle = (agentId: string, event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n console.log(\"user\", user);\n const currentFavourites = user?.favourite_agents || [];\n const isFavourite = currentFavourites.includes(agentId);\n\n let newFavourites: string[];\n if (isFavourite) {\n newFavourites = currentFavourites.filter((id: string) => id !== agentId);\n } else {\n newFavourites = [...currentFavourites, agentId];\n }\n\n console.log(\"newFavourites\", newFavourites);\n\n updateUser({\n variables: {\n id: user.id,\n favourite_agents: newFavourites\n }\n });\n };\n\n // Check if an agent is currently selected\n const selectedAgent = params.agent ? agents?.data?.agentsPagination?.items?.find(\n (agent: Agent) => agent.id === params.agent\n ) : null;\n\n const renderAgentImage = (agent: Agent) => {\n if (agent.image) {\n return (\n <img\n src={agent.image}\n alt={`${agent.name} profile`}\n className=\"h-4 w-4 rounded-full object-cover\"\n />\n );\n } else {\n return (\n <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\">\n {agent.name?.charAt(0).toUpperCase() || 'A'}\n </div>\n );\n }\n };\n\n useEffect(() => {\n setShowAllAgents(false)\n setShowAllFavorites(false)\n }, [params.agent]);\n\n return (\n <>\n <div className=\"pb-12 w-[250px] max-h-[calc(100vh)] overflow-y-auto overflow-x-hidden\">\n <div className=\"space-y-4 py-4\">\n <div>\n <h2 className=\"mb-2 px-4 text-lg font-semibold tracking-tight\">Agents</h2>\n <div>\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder=\"Search agents...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-8 h-9 border-0\"\n />\n </div>\n </div>\n <div className=\"space-y-1 border-t px-2 pt-2\">\n {\n (selectedAgent && !showAllAgents) && (\n <div key={`fav-${selectedAgent.id}`} className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={() => setShowAllAgents(!showAllAgents)}\n >\n <ChevronLeft className=\"h-3 w-3\" />\n </Button>\n <Link onClick={() => setShowAllAgents(false)} href={`/chat/${selectedAgent.id}`} className=\"flex-1\">\n <Button\n onClick={() => setShowAllAgents(false)}\n variant={pathname.includes(selectedAgent.id) ? \"secondary\" : \"ghost\"}\n className=\"w-full justify-start gap-2 pr-5\">\n {renderAgentImage(selectedAgent)}\n <span className=\"flex-1 text-left\">\n <TruncatedText text={selectedAgent.name} length={7} />\n </span>\n </Button>\n </Link>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleFavouriteToggle(selectedAgent.id, e)}\n >\n <Star className=\"h-3 w-3 fill-yellow-400 text-yellow-400\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleInfoClick(selectedAgent.id, e)}\n >\n <Info className=\"h-3 w-3\" />\n </Button>\n </div>\n )\n }\n {\n (!selectedAgent || showAllAgents || searchQuery) && (\n <>\n {user?.favourite_agents && user?.favourite_agents?.length > 0 && !searchQuery && (\n <>\n {favouriteAgents.loading && (\n <>\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n </>\n )}\n {!favouriteAgents.loading && (() => {\n const favoriteAgentsList = favouriteAgents?.data?.agentByIds || [];\n const displayedFavorites = showAllFavorites ? favoriteAgentsList : favoriteAgentsList.slice(0, 4);\n\n return (\n <>\n {displayedFavorites.map((agent: Agent) => (\n <div key={`fav-${agent.id}`} className=\"flex items-center gap-1\">\n <Link href={`/chat/${agent.id}`} className=\"flex-1\">\n <Button\n variant={pathname.includes(agent.id) ? \"secondary\" : \"ghost\"}\n className=\"w-full justify-start gap-2 pr-1\">\n {renderAgentImage(agent)}\n <span className=\"flex-1 text-left\">\n <TruncatedText text={agent.name} length={10} />\n </span>\n </Button>\n </Link>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleFavouriteToggle(agent.id, e)}\n >\n <Star className=\"h-3 w-3 fill-yellow-400 text-yellow-400\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleInfoClick(agent.id, e)}\n >\n <Info className=\"h-3 w-3\" />\n </Button>\n </div>\n ))}\n {favoriteAgentsList.length > 4 && (\n <Button\n variant=\"ghost\"\n className=\"w-full justify-center text-xs text-muted-foreground h-8\"\n onClick={() => setShowAllFavorites(!showAllFavorites)}\n >\n {showAllFavorites\n ? 'Show less'\n : `Show more (${favoriteAgentsList.length - 4})`\n }\n </Button>\n )}\n </>\n );\n })()}\n </>\n )}\n\n {/* Regular Agents */}\n {agents.loading && <>\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n </>}\n {!agents.loading && (() => {\n const regularAgentsList = agents?.data?.agentsPagination?.items\n ?.filter((agent: Agent) => !user?.favourite_agents?.includes(agent.id) || searchQuery) || [];\n const displayedAgents = (searchQuery || showAllAgents) ? regularAgentsList : regularAgentsList.slice(0, 4);\n\n return (\n <>\n {displayedAgents.map((agent: Agent) => (\n <div key={agent.id} className=\"flex items-center gap-1\">\n <Link href={`/chat/${agent.id}`} className=\"flex-1\">\n <Button\n variant={pathname.includes(agent.id) ? \"secondary\" : \"ghost\"}\n className=\"w-full justify-start gap-2 pr-1\">\n {renderAgentImage(agent)}\n <span className=\"flex-1 text-left\">\n <TruncatedText text={agent.name} length={14} />\n </span>\n </Button>\n </Link>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleFavouriteToggle(agent.id, e)}\n >\n <Star className={`h-3 w-3 ${user?.favourite_agents?.includes(agent.id) ? 'fill-yellow-400 text-yellow-400' : ''}`} />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleInfoClick(agent.id, e)}\n >\n <Info className=\"h-3 w-3\" />\n </Button>\n </div>\n ))}\n {!searchQuery && regularAgentsList.length > 4 && (\n <Button\n variant=\"ghost\"\n className=\"w-full justify-center text-xs text-muted-foreground h-8\"\n onClick={() => setShowAllAgents(!showAllAgents)}\n >\n {showAllAgents\n ? 'Show less'\n : `Show more (${regularAgentsList.length - 4})`\n }\n </Button>\n )}\n </>\n );\n })()}\n </>\n )}\n </div>\n </div>\n {/*<div className=\"px-3 py-2\">\n <h2 className=\"mb-2 px-4 text-lg font-semibold tracking-tight\">Settings</h2>\n <div className=\"space-y-1\">\n <Link href=\"/settings\">\n <Button variant=\"ghost\" className=\"w-full justify-start gap-2\">\n <Settings className=\"h-4 w-4\" />\n Settings\n </Button>\n </Link>\n </div>\n </div>*/}\n </div>\n {\n params.agent && (\n <ChatSessionsComponent agent={params.agent as string} type={\"chat\"} />\n )\n }\n </div>\n\n {selectedAgentId && (\n <AgentDetailsSheet\n agentId={selectedAgentId}\n open={sheetOpen}\n onOpenChange={(open) => {\n setSheetOpen(open);\n if (!open) {\n setSelectedAgentId(null);\n }\n }}\n />\n )}\n </>\n )\n}\n\n","\"use client\";\n\nimport {AgentNav} from \"@/components/agent-nav\";\nimport * as React from \"react\";\n\nexport default function ChatLayout({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"flex h-full\">\n <div className=\"border-r bg-muted/10\">\n <AgentNav/>\n </div>\n {children}\n </div>\n );\n}\n","export function TruncatedText({ text, length }: { text: string, length: number }) {\n if (text.length > length) {\n return <>{text.slice(0, length)}...</>\n } else {\n return <>{text}</>;\n }\n}","\"use client\";\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","import { 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}","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('ChevronLeft', [\n ['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }],\n]);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQuNSAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNy41TDE0LjUgMnoiIC8+CiAgPHBvbHlsaW5lIHBvaW50cz0iMTQgMiAxNCA4IDIwIDgiIC8+CiAgPGxpbmUgeDE9IjE2IiB4Mj0iOCIgeTE9IjEzIiB5Mj0iMTMiIC8+CiAgPGxpbmUgeDE9IjE2IiB4Mj0iOCIgeTE9IjE3IiB5Mj0iMTciIC8+CiAgPGxpbmUgeDE9IjEwIiB4Mj0iOCIgeTE9IjkiIHkyPSI5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('FileText', [\n [\n 'path',\n { 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' },\n ],\n ['polyline', { points: '14 2 14 8 20 8', key: '1ew0cm' }],\n ['line', { x1: '16', x2: '8', y1: '13', y2: '13', key: '14keom' }],\n ['line', { x1: '16', x2: '8', y1: '17', y2: '17', key: '17nazh' }],\n ['line', { x1: '10', x2: '8', y1: '9', y2: '9', key: '1a5vjj' }],\n]);\n\nexport default FileText;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Image\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiByeT0iMiIgLz4KICA8Y2lyY2xlIGN4PSI5IiBjeT0iOSIgcj0iMiIgLz4KICA8cGF0aCBkPSJtMjEgMTUtMy4wODYtMy4wODZhMiAyIDAgMCAwLTIuODI4IDBMNiAyMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Image = createLucideIcon('Image', [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ['circle', { cx: '9', cy: '9', r: '2', key: 'af1f0g' }],\n ['path', { d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21', key: '1xmnt7' }],\n]);\n\nexport default Image;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Info\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNMTIgMTZ2LTQiIC8+CiAgPHBhdGggZD0iTTEyIDhoLjAxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/info\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Info = createLucideIcon('Info', [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 16v-4', key: '1dtifu' }],\n ['path', { d: 'M12 8h.01', key: 'e9boi3' }],\n]);\n\nexport default Info;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('Plus', [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n]);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI4IiAvPgogIDxwYXRoIGQ9Im0yMSAyMS00LjMtNC4zIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('Search', [\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n ['path', { d: 'm21 21-4.3-4.3', key: '1qie3q' }],\n]);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMjJzOC00IDgtMTBWNWwtOC0zLTggM3Y3YzAgNiA4IDEwIDggMTAiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('Shield', [\n ['path', { d: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10', key: '1irkt0' }],\n]);\n\nexport default Shield;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWdvbiBwb2ludHM9IjEyIDIgMTUuMDkgOC4yNiAyMiA5LjI3IDE3IDE0LjE0IDE4LjE4IDIxLjAyIDEyIDE3Ljc3IDUuODIgMjEuMDIgNyAxNC4xNCAyIDkuMjcgOC45MSA4LjI2IDEyIDIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/star\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Star = createLucideIcon('Star', [\n [\n 'polygon',\n {\n points:\n '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',\n key: '8f66p6',\n },\n ],\n]);\n\nexport default Star;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Text\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTcgNi4xSDMiIC8+CiAgPHBhdGggZD0iTTIxIDEyLjFIMyIgLz4KICA8cGF0aCBkPSJNMTUuMSAxOEgzIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Text = createLucideIcon('Text', [\n ['path', { d: 'M17 6.1H3', key: 'wptmhv' }],\n ['path', { d: 'M21 12.1H3', key: '1j38uz' }],\n ['path', { d: 'M15.1 18H3', key: '1nb16a' }],\n]);\n\nexport default Text;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Video\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjIgOC02IDQgNiA0VjhaIiAvPgogIDxyZWN0IHdpZHRoPSIxNCIgaGVpZ2h0PSIxMiIgeD0iMiIgeT0iNiIgcng9IjIiIHJ5PSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/video\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Video = createLucideIcon('Video', [\n ['path', { d: 'm22 8-6 4 6 4V8Z', key: '50v9me' }],\n ['rect', { width: '14', height: '12', x: '2', y: '6', rx: '2', ry: '2', key: '1rqjg6' }],\n]);\n\nexport default Video;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Volume2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWdvbiBwb2ludHM9IjExIDUgNiA5IDIgOSAyIDE1IDYgMTUgMTEgMTkgMTEgNSIgLz4KICA8cGF0aCBkPSJNMTUuNTQgOC40NmE1IDUgMCAwIDEgMCA3LjA3IiAvPgogIDxwYXRoIGQ9Ik0xOS4wNyA0LjkzYTEwIDEwIDAgMCAxIDAgMTQuMTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/volume-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Volume2 = createLucideIcon('Volume2', [\n ['polygon', { points: '11 5 6 9 2 9 2 15 6 15 11 19 11 5', key: '16drj5' }],\n ['path', { d: 'M15.54 8.46a5 5 0 0 1 0 7.07', key: 'ltjumu' }],\n ['path', { d: 'M19.07 4.93a10 10 0 0 1 0 14.14', key: '1kegas' }],\n]);\n\nexport default Volume2;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Wrench\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQuNyA2LjNhMSAxIDAgMCAwIDAgMS40bDEuNiAxLjZhMSAxIDAgMCAwIDEuNCAwbDMuNzctMy43N2E2IDYgMCAwIDEtNy45NCA3Ljk0bC02LjkxIDYuOTFhMi4xMiAyLjEyIDAgMCAxLTMtM2w2LjkxLTYuOTFhNiA2IDAgMCAxIDcuOTQtNy45NGwtMy43NiAzLjc2eiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/wrench\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Wrench = createLucideIcon('Wrench', [\n [\n 'path',\n {\n 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',\n key: 'cbrjhi',\n },\n ],\n]);\n\nexport default Wrench;\n","import * as React from \"rehackt\";\nimport { canUseDOM } from \"../../../utilities/index.js\";\n// use canUseDOM here instead of canUseLayoutEffect because we want to be able\n// to use useLayoutEffect in our jest tests. useLayoutEffect seems to work fine\n// in useSuspenseQuery tests, but to honor the original comment about the\n// warnings for useSyncExternalStore implementation, canUseLayoutEffect is left\n// alone.\nexport var useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;\n//# sourceMappingURL=useIsomorphicLayoutEffect.js.map","import { __assign } from \"tslib\";\nimport * as React from \"rehackt\";\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { useIsomorphicLayoutEffect } from \"./internal/useIsomorphicLayoutEffect.js\";\n/**\n *\n *\n * > Refer to the [Mutations](https://www.apollographql.com/docs/react/data/mutations/) section for a more in-depth overview of `useMutation`.\n *\n * @example\n * ```jsx\n * import { gql, useMutation } from '@apollo/client';\n *\n * const ADD_TODO = gql`\n * mutation AddTodo($type: String!) {\n * addTodo(type: $type) {\n * id\n * type\n * }\n * }\n * `;\n *\n * function AddTodo() {\n * let input;\n * const [addTodo, { data }] = useMutation(ADD_TODO);\n *\n * return (\n * <div>\n * <form\n * onSubmit={e => {\n * e.preventDefault();\n * addTodo({ variables: { type: input.value } });\n * input.value = '';\n * }}\n * >\n * <input\n * ref={node => {\n * input = node;\n * }}\n * />\n * <button type=\"submit\">Add Todo</button>\n * </form>\n * </div>\n * );\n * }\n * ```\n * @since 3.0.0\n * @param mutation - A GraphQL mutation document parsed into an AST by `gql`.\n * @param options - Options to control how the mutation is executed.\n * @returns A tuple in the form of `[mutate, result]`\n */\nexport function useMutation(mutation, options) {\n var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);\n verifyDocumentType(mutation, DocumentType.Mutation);\n var _a = React.useState({\n called: false,\n loading: false,\n client: client,\n }), result = _a[0], setResult = _a[1];\n var ref = React.useRef({\n result: result,\n mutationId: 0,\n isMounted: true,\n client: client,\n mutation: mutation,\n options: options,\n });\n useIsomorphicLayoutEffect(function () {\n Object.assign(ref.current, { client: client, options: options, mutation: mutation });\n });\n var execute = React.useCallback(function (executeOptions) {\n if (executeOptions === void 0) { executeOptions = {}; }\n var _a = ref.current, options = _a.options, mutation = _a.mutation;\n var baseOptions = __assign(__assign({}, options), { mutation: mutation });\n var client = executeOptions.client || ref.current.client;\n if (!ref.current.result.loading &&\n !baseOptions.ignoreResults &&\n ref.current.isMounted) {\n setResult((ref.current.result = {\n loading: true,\n error: void 0,\n data: void 0,\n called: true,\n client: client,\n }));\n }\n var mutationId = ++ref.current.mutationId;\n var clientOptions = mergeOptions(baseOptions, executeOptions);\n return client\n .mutate(clientOptions)\n .then(function (response) {\n var _a, _b;\n var data = response.data, errors = response.errors;\n var error = errors && errors.length > 0 ?\n new ApolloError({ graphQLErrors: errors })\n : void 0;\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (error && onError) {\n onError(error, clientOptions);\n }\n if (mutationId === ref.current.mutationId &&\n !clientOptions.ignoreResults) {\n var result_1 = {\n called: true,\n loading: false,\n data: data,\n error: error,\n client: client,\n };\n if (ref.current.isMounted && !equal(ref.current.result, result_1)) {\n setResult((ref.current.result = result_1));\n }\n }\n var onCompleted = executeOptions.onCompleted || ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onCompleted);\n if (!error) {\n onCompleted === null || onCompleted === void 0 ? void 0 : onCompleted(response.data, clientOptions);\n }\n return response;\n }, function (error) {\n var _a;\n if (mutationId === ref.current.mutationId &&\n ref.current.isMounted) {\n var result_2 = {\n loading: false,\n error: error,\n data: void 0,\n called: true,\n client: client,\n };\n if (!equal(ref.current.result, result_2)) {\n setResult((ref.current.result = result_2));\n }\n }\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (onError) {\n onError(error, clientOptions);\n // TODO(brian): why are we returning this here???\n return { data: void 0, errors: error };\n }\n throw error;\n });\n }, []);\n var reset = React.useCallback(function () {\n if (ref.current.isMounted) {\n var result_3 = {\n called: false,\n loading: false,\n client: ref.current.client,\n };\n Object.assign(ref.current, { mutationId: 0, result: result_3 });\n setResult(result_3);\n }\n }, []);\n React.useEffect(function () {\n var current = ref.current;\n // eslint-disable-next-line react-compiler/react-compiler\n current.isMounted = true;\n return function () {\n current.isMounted = false;\n };\n }, []);\n return [execute, __assign({ reset: reset }, result)];\n}\n//# sourceMappingURL=useMutation.js.map"],"names":["Promise","resolve","then","__webpack_require__","bind","ChatSessionsComponent","param","sessionsQuery","agent","type","pathname","usePathname","toast","useToast","user","useContext","UserContext","sessionName","setSessionName","useState","useIsMobile","router","useRouter","search","setSearch","searchString","renameDialogOpen","setRenameDialogOpen","renameSessionId","setRenameSessionId","newSessionName","setNewSessionName","useQuery","GET_AGENT_SESSIONS","returnPartialData","fetchPolicy","nextFetchPolicy","variables","page","limit","filters","eq","removeSession","removeSessionResult","useMutation","REMOVE_AGENT_SESSION_BY_ID","refetchQueries","createAgentSession","createAgentSessionResult","CREATE_AGENT_SESSION","updateSessionTitle","updateSessionTitleResult","UPDATE_AGENT_SESSION_TITLE","useEffect","length","title","contains","refetch","handleCreateSession","newSession","id","trim","createdAt","Date","toISOString","updatedAt","errors","console","error","data","agent_sessionsCreateOne","item","push","concat","handleRenameSession","result","description","variant","jsx_runtime","jsxs","div","className","x-chunk","jsx","h2","form","Search","Input","onKeyUp","e","currentTarget","value","placeholder","autoFocus","onChange","target","onKeyDown","key","Button","tabIndex","disabled","loading","onClick","PlusIcon","Skeleton","agent_sessionsPagination","items","p","map","writeAccess","checkChatSessionWriteAccess","Link","href","cn","includes","substring","formatDistanceToNow","addSuffix","DropdownMenu","modal","DropdownMenuTrigger","asChild","DotsHorizontalIcon","span","DropdownMenuContent","align","DropdownMenuItem","preventDefault","stopPropagation","small","name","Dialog","open","onOpenChange","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","AgentNav","agents","searchQuery","setSearchQuery","React","selectedAgentId","setSelectedAgentId","sheetOpen","setSheetOpen","showAllFavorites","setShowAllFavorites","showAllAgents","setShowAllAgents","params","useParams","init","setUser","favouriteAgents","GET_AGENTS_BY_IDS","ids","favourite_agents","skip","GET_AGENTS","super_admin","active","updateUser","UPDATE_USER_BY_ID","onCompleted","usersUpdateOneById","handleInfoClick","agentId","event","handleFavouriteToggle","newFavourites","log","currentFavourites","filter","selectedAgent","agentsPagination","find","renderAgentImage","image","img","src","alt","charAt","toUpperCase","Fragment","size","ChevronLeft","TruncatedText","text","Star","Info","favoriteAgentsList","agentByIds","displayedFavorites","slice","regularAgentsList","displayedAgents","AgentDetailsSheet","ChatLayout","children","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","count","toastTimeouts","Map","addToRemoveQueue","has","toastId","timeout","setTimeout","delete","dispatch","set","reducer","state","action","toasts","t","forEach","undefined","listeners","memoryState","listener","props","Number","MAX_SAFE_INTEGER","toString","dismiss","update","setState","index","indexOf","splice","session","isPrivate","rights_mode","isPublic","byUsers","byRoles","isAdmin","isCreator","created_by","RBAC","users","u","rights","roles","r","role","createLucideIcon","d","FileText","points","x1","x2","y1","y2","Image","width","height","x","y","rx","ry","cx","cy","Plus","Shield","Text","Video","Volume2","Wrench","useIsomorphicLayoutEffect","canUse","Nq","rehackt","useLayoutEffect","mutation","options","client","useApolloClient","parser","Vp","n_","Mutation","_a","called","setResult","ref","useRef","mutationId","isMounted","Object","assign","current","execute","useCallback","executeOptions","baseOptions","tslib_es6","pi","ignoreResults","clientOptions","mergeOptions","J","mutate","response","_b","client_errors","cA","graphQLErrors","onError","result_1","lib","D","result_2","reset","result_3"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
1
  (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7011],{75667:function(e,t,r){Promise.resolve().then(r.bind(r,18551))},18551:function(e,t,r){"use strict";r.d(t,{ChatEmptyState:function(){return j}});var n=r(57437),a=r(99376),s=r(82222),i=r(82023),l=r(31810),o=r(42208),c=r(12194),d=r(12199),u=r(7211),m=r(27689),f=r(84544),x=r(35974),v=r(62869),p=r(66070),h=r(93022),g=r(13832),N=r(2265);function j(){var e;let t=(0,a.useRouter)(),{user:r}=(0,N.useContext)(g.S),[j]=(0,d.D)(m.fB),{data:b,loading:w}=(0,c.Sh)({page:1,limit:6,sort:{field:"favorite_count",direction:"DESC"}}),y=(null==b?void 0:null===(e=b.prompt_libraryPagination)||void 0===e?void 0:e.items)||[],C=Array.from(new Set(y.flatMap(e=>e.assigned_agents||[]))),{data:_,loading:E}=(0,u.aM)(m.W9,{variables:{ids:C},skip:0===C.length}),Z=new Map(((null==_?void 0:_.agentByIds)||[]).map(e=>[e.id,e])),M=async(e,n)=>{var a,s,i;let l=await j({variables:{title:"New session",user:r.id,agent:e}});console.log("result",l);let o=null==l?void 0:null===(i=l.data)||void 0===i?void 0:null===(s=i.agent_sessionsCreateOne)||void 0===s?void 0:null===(a=s.item)||void 0===a?void 0:a.id;t.push("/chat/".concat(e,"/").concat(o,"?promptId=").concat(n))};return w?(0,n.jsx)("div",{className:"m-auto max-w-4xl w-full px-4",children:(0,n.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,n.jsxs)("div",{className:"flex flex-col items-center gap-4 mb-8",children:[(0,n.jsx)(s.Z,{className:"h-20 w-20 text-muted-foreground"}),(0,n.jsx)("h2",{className:"text-2xl font-semibold text-center",children:"Select an agent"}),(0,n.jsx)("p",{className:"text-muted-foreground text-center",children:"Choose a prompt template below to get started"})]}),(0,n.jsx)("div",{className:"grid gap-4 md:grid-cols-2",children:[1,2,3,4].map(e=>(0,n.jsx)(h.O,{className:"h-48 w-full"},e))})]})}):y.length?(0,n.jsx)("div",{className:"m-auto max-w-4xl w-full px-4 py-8",children:(0,n.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,n.jsxs)("div",{className:"flex flex-col items-center gap-4 mb-4",children:[(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)(s.Z,{className:"h-16 w-16 text-muted-foreground"}),(0,n.jsx)(i.Z,{className:"h-6 w-6 text-primary absolute -top-1 -right-1"})]}),(0,n.jsxs)("div",{className:"text-center",children:[(0,n.jsx)("h2",{className:"text-2xl font-semibold mb-2",children:"Get started with a prompt"}),(0,n.jsx)("p",{className:"text-muted-foreground",children:"Select a prompt template and choose which agent to chat with"})]})]}),(0,n.jsx)("div",{className:"grid gap-4 md:grid-cols-2",children:y.map(e=>{var t;let r=(0,f.H)(e.content),a=(e.assigned_agents||[]).map(e=>Z.get(e)).filter(e=>void 0!==e);return(0,n.jsxs)(p.Zb,{className:"flex flex-col",children:[(0,n.jsxs)(p.Ol,{children:[(0,n.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-2",children:[(0,n.jsx)(p.ll,{className:"text-lg",children:e.name}),(0,n.jsxs)("div",{className:"flex items-center gap-3 text-xs text-muted-foreground flex-shrink-0",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)(l.Z,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:e.favorite_count||0})]}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)(o.Z,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:e.usage_count||0})]})]})]}),e.description&&(0,n.jsx)(p.SZ,{className:"line-clamp-2",children:e.description})]}),(0,n.jsxs)(p.aY,{className:"flex-1 flex flex-col gap-4",children:[(0,n.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[r.length>0&&(0,n.jsxs)(x.C,{variant:"outline",className:"text-xs",children:[r.length," variable",1!==r.length?"s":""]}),null===(t=e.tags)||void 0===t?void 0:t.slice(0,3).map(e=>(0,n.jsx)(x.C,{variant:"secondary",className:"text-xs",children:e},e)),e.tags&&e.tags.length>3&&(0,n.jsxs)(x.C,{variant:"secondary",className:"text-xs",children:["+",e.tags.length-3]})]}),a.length>0?(0,n.jsxs)("div",{className:"mt-auto",children:[(0,n.jsx)("p",{className:"text-xs text-muted-foreground mb-2",children:"Start chat with:"}),(0,n.jsx)("div",{className:"flex flex-wrap gap-2",children:a.map(t=>(0,n.jsxs)(v.z,{variant:"default",size:"sm",onClick:()=>M(t.id,e.id),className:"flex items-center gap-2",children:[t.image&&(0,n.jsx)("img",{src:t.image,alt:t.name,className:"h-4 w-4 rounded-full object-cover"}),(0,n.jsx)("span",{children:t.name})]},t.id))})]}):(0,n.jsx)("div",{className:"mt-auto",children:(0,n.jsx)("p",{className:"text-xs text-muted-foreground italic",children:"No agents assigned to this prompt"})})]})]},e.id)})}),(0,n.jsx)("div",{className:"text-center text-sm text-muted-foreground mt-4",children:"You can also select an agent from the sidebar to start chatting"})]})}):(0,n.jsx)("div",{className:"m-auto",children:(0,n.jsxs)("div",{className:"flex flex-col",children:[(0,n.jsx)("div",{className:"mx-auto",children:(0,n.jsx)(s.Z,{className:"h-20 w-20"})}),(0,n.jsx)("h2",{className:"text-center",children:"Select an agent."}),(0,n.jsx)("small",{className:"text-center",children:"Bleep bleep bloop..."})]})})}},35974:function(e,t,r){"use strict";r.d(t,{C:function(){return l}});var n=r(57437),a=r(90535);r(2265);var s=r(94508);let i=(0,a.j)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:r,...a}=e;return(0,n.jsx)("div",{className:(0,s.cn)(i({variant:r}),t),...a})}},66070:function(e,t,r){"use strict";r.d(t,{Ol:function(){return l},SZ:function(){return c},Zb:function(){return i},aY:function(){return d},eW:function(){return u},ll:function(){return o}});var n=r(57437),a=r(2265),s=r(94508);let i=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("div",{ref:t,className:(0,s.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",r),...a})});i.displayName="Card";let l=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("div",{ref:t,className:(0,s.cn)("flex flex-col space-y-1.5 p-6",r),...a})});l.displayName="CardHeader";let o=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("h3",{ref:t,className:(0,s.cn)("text-2xl font-semibold leading-none tracking-tight",r),...a})});o.displayName="CardTitle";let c=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("p",{ref:t,className:(0,s.cn)("text-sm text-muted-foreground",r),...a})});c.displayName="CardDescription";let d=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("div",{ref:t,className:(0,s.cn)("p-6 pt-0",r),...a})});d.displayName="CardContent";let u=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("div",{ref:t,className:(0,s.cn)("flex items-center p-6 pt-0",r),...a})});u.displayName="CardFooter"},12194:function(e,t,r){"use strict";r.d(t,{EE:function(){return l},Lq:function(){return f},Sh:function(){return i},VR:function(){return d},er:function(){return o},iJ:function(){return c}});var n=r(7211),a=r(12199),s=r(27689);let i=e=>{var t,r,a,i;return(0,n.aM)(s.xx,{variables:{page:null!==(t=null==e?void 0:e.page)&&void 0!==t?t:1,limit:null!==(r=null==e?void 0:e.limit)&&void 0!==r?r:20,filters:null!==(a=null==e?void 0:e.filters)&&void 0!==a?a:[],sort:null!==(i=null==e?void 0:e.sort)&&void 0!==i?i:{field:"updatedAt",direction:"DESC"}}})},l=()=>(0,a.D)(s.Iv,{refetchQueries:[{query:s.xx,variables:{page:1,limit:20}}]}),o=()=>(0,a.D)(s.jA),c=()=>(0,a.D)(s.Ll,{refetchQueries:[{query:s.xx,variables:{page:1,limit:20}}]}),d=()=>(0,a.D)(s.re),u=()=>(0,a.D)(s.Nl),m=()=>(0,a.D)(s.m8),f=()=>{let[e]=u(),[t]=m(),[r]=(0,a.D)(s.UK);return{toggleFavorite:async(n,a,s,i,l)=>{s&&l?(await t({variables:{id:l}}),await r({variables:{id:n,favorite_count:Math.max(0,i-1)}})):(await e({variables:{user_id:a,prompt_id:n}}),await r({variables:{id:n,favorite_count:i+1}}))}}}},84544:function(e,t,r){"use strict";function n(e){if(!e)return[];let t=e.matchAll(/\{\{([a-zA-Z0-9_]+)\}\}/g),r=new Set;for(let e of Array.from(t))r.add(e[1]);return Array.from(r).sort()}r.d(t,{H:function(){return n}})},42208:function(e,t,r){"use strict";r.d(t,{Z:function(){return n}});let n=(0,r(39763).Z)("Eye",[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]])},31810:function(e,t,r){"use strict";r.d(t,{Z:function(){return n}});let n=(0,r(39763).Z)("ThumbsUp",[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2h0a3.13 3.13 0 0 1 3 3.88Z",key:"y3tblf"}]])},12199:function(e,t,r){"use strict";r.d(t,{D:function(){return u}});var n=r(5853),a=r(79285),s=r(49466),i=r(36628),l=r(59058),o=r(77828),c=r(63251),d=r(59394).Nq?a.useLayoutEffect:a.useEffect;function u(e,t){var r=(0,c.x)(null==t?void 0:t.client);(0,l.Vp)(e,l.n_.Mutation);var u=a.useState({called:!1,loading:!1,client:r}),m=u[0],f=u[1],x=a.useRef({result:m,mutationId:0,isMounted:!0,client:r,mutation:e,options:t});d(function(){Object.assign(x.current,{client:r,options:t,mutation:e})});var v=a.useCallback(function(e){void 0===e&&(e={});var t=x.current,r=t.options,a=t.mutation,l=(0,n.pi)((0,n.pi)({},r),{mutation:a}),c=e.client||x.current.client;x.current.result.loading||l.ignoreResults||!x.current.isMounted||f(x.current.result={loading:!0,error:void 0,data:void 0,called:!0,client:c});var d=++x.current.mutationId,u=(0,s.J)(l,e);return c.mutate(u).then(function(t){var r,n,a=t.data,s=t.errors,l=s&&s.length>0?new o.cA({graphQLErrors:s}):void 0,m=e.onError||(null===(r=x.current.options)||void 0===r?void 0:r.onError);if(l&&m&&m(l,u),d===x.current.mutationId&&!u.ignoreResults){var v={called:!0,loading:!1,data:a,error:l,client:c};x.current.isMounted&&!(0,i.D)(x.current.result,v)&&f(x.current.result=v)}var p=e.onCompleted||(null===(n=x.current.options)||void 0===n?void 0:n.onCompleted);return l||null==p||p(t.data,u),t},function(t){if(d===x.current.mutationId&&x.current.isMounted){var r,n={loading:!1,error:t,data:void 0,called:!0,client:c};(0,i.D)(x.current.result,n)||f(x.current.result=n)}var a=e.onError||(null===(r=x.current.options)||void 0===r?void 0:r.onError);if(a)return a(t,u),{data:void 0,errors:t};throw t})},[]),p=a.useCallback(function(){if(x.current.isMounted){var e={called:!1,loading:!1,client:x.current.client};Object.assign(x.current,{mutationId:0,result:e}),f(e)}},[]);return a.useEffect(function(){var e=x.current;return e.isMounted=!0,function(){e.isMounted=!1}},[]),[v,(0,n.pi)({reset:p},m)]}}},function(e){e.O(0,[9851,7629,7093,6148,847,1942,7648,7823,8068,5799,605,4567,1206,5338,6373,3832,2971,2117,1744],function(){return e(e.s=75667)}),_N_E=e.O()}]);
2
- //# sourceMappingURL=page-8a1fcfb68cf9c8c0.js.map
2
+ //# sourceMappingURL=page-8b00a98d285829b1.js.map