@exulu/frontend 1.7.0 → 1.9.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 (167) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-build-manifest.json +124 -127
  3. package/dist/.next/app-path-routes-manifest.json +1 -1
  4. package/dist/.next/build-manifest.json +2 -2
  5. package/dist/.next/prerender-manifest.json +1 -1
  6. package/dist/.next/server/app/(application)/agents/edit/[id]/page.js +1 -1
  7. package/dist/.next/server/app/(application)/agents/edit/[id]/page.js.nft.json +1 -1
  8. package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
  9. package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
  10. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +7 -7
  11. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js.nft.json +1 -1
  12. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
  13. package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
  14. package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
  15. package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
  16. package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
  17. package/dist/.next/server/app/(application)/data/[[...query]]/page.js +4 -4
  18. package/dist/.next/server/app/(application)/data/[[...query]]/page.js.nft.json +1 -1
  19. package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
  20. package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
  21. package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
  22. package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
  23. package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
  24. package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
  25. package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
  26. package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
  27. package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
  28. package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
  29. package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
  30. package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
  31. package/dist/.next/server/app/(application)/projects/[project]/page.js.nft.json +1 -1
  32. package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
  33. package/dist/.next/server/app/(application)/projects/page.js +1 -1
  34. package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
  35. package/dist/.next/server/app/(application)/prompts/page.js +1 -1
  36. package/dist/.next/server/app/(application)/prompts/page_client-reference-manifest.js +1 -1
  37. package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
  38. package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
  39. package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
  40. package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
  41. package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
  42. package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
  43. package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
  44. package/dist/.next/server/app/(application)/workflows/page.js +1 -1
  45. package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
  46. package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
  47. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  48. package/dist/.next/server/app/_not-found.html +1 -1
  49. package/dist/.next/server/app/_not-found.rsc +1 -1
  50. package/dist/.next/server/app/api/auth/[...nextauth]/route.js +2 -2
  51. package/dist/.next/server/app-paths-manifest.json +4 -4
  52. package/dist/.next/server/chunks/1025.js +1 -0
  53. package/dist/.next/server/chunks/1051.js +2 -2
  54. package/dist/.next/server/chunks/2270.js +12 -48
  55. package/dist/.next/server/chunks/3434.js +1 -1
  56. package/dist/.next/server/chunks/3503.js +1 -0
  57. package/dist/.next/server/chunks/3575.js +1 -1
  58. package/dist/.next/server/chunks/5084.js +1 -0
  59. package/dist/.next/server/chunks/5192.js +1 -1
  60. package/dist/.next/server/chunks/5485.js +1 -0
  61. package/dist/.next/server/chunks/5600.js +1 -1
  62. package/dist/.next/server/chunks/5974.js +1 -0
  63. package/dist/.next/server/chunks/6590.js +1 -1
  64. package/dist/.next/server/chunks/7471.js +1 -1
  65. package/dist/.next/server/chunks/8286.js +1 -1
  66. package/dist/.next/server/chunks/{3679.js → 9874.js} +5 -5
  67. package/dist/.next/server/middleware-manifest.json +5 -5
  68. package/dist/.next/server/pages/404.html +1 -1
  69. package/dist/.next/server/pages/500.html +1 -1
  70. package/dist/.next/server/server-reference-manifest.json +1 -1
  71. package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js +2 -0
  72. package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js.map +1 -0
  73. package/dist/.next/static/chunks/{4811-316807e25b634f9f.js → 192-72d6868cd891ccc6.js} +8 -8
  74. package/dist/.next/static/chunks/192-72d6868cd891ccc6.js.map +1 -0
  75. package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js +2 -0
  76. package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js.map +1 -0
  77. package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.js +2 -0
  78. package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.js.map +1 -0
  79. package/dist/.next/static/chunks/{3750-90a213a3c7cceb29.js → 3750-f45c59ef1cc79417.js} +2 -2
  80. package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js.map +1 -0
  81. package/dist/.next/static/chunks/552-39155a93c527ec6d.js +2 -0
  82. package/dist/.next/static/chunks/552-39155a93c527ec6d.js.map +1 -0
  83. package/dist/.next/static/chunks/{7856-9fa733bdd6429ba8.js → 6066-65606593516b2a3a.js} +18 -18
  84. package/dist/.next/static/chunks/6066-65606593516b2a3a.js.map +1 -0
  85. package/dist/.next/static/chunks/6367-59655a85d75e19be.js +2 -0
  86. package/dist/.next/static/chunks/6367-59655a85d75e19be.js.map +1 -0
  87. package/dist/.next/static/chunks/6373-601400fab8a3bb55.js +2 -0
  88. package/dist/.next/static/chunks/6373-601400fab8a3bb55.js.map +1 -0
  89. package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js +2 -0
  90. package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js.map +1 -0
  91. package/dist/.next/static/chunks/{6805-792cc8008b165c07.js → 8293-0e69d89d2dac7111.js} +10 -10
  92. package/dist/.next/static/chunks/8293-0e69d89d2dac7111.js.map +1 -0
  93. package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js +2 -0
  94. package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js.map +1 -0
  95. package/dist/.next/static/chunks/9953-95900a236271a222.js +2 -0
  96. package/dist/.next/static/chunks/9953-95900a236271a222.js.map +1 -0
  97. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js +2 -0
  98. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js.map +1 -0
  99. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-7edb1c7c850f982c.js +2 -0
  100. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-7edb1c7c850f982c.js.map +1 -0
  101. package/dist/.next/static/chunks/app/(application)/chat/layout-093baa26f89338bc.js +2 -0
  102. package/dist/.next/static/chunks/app/(application)/chat/layout-093baa26f89338bc.js.map +1 -0
  103. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-8d2b3995cacfd832.js +2 -0
  104. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-8d2b3995cacfd832.js.map +1 -0
  105. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js +2 -0
  106. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js.map +1 -0
  107. package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js → page-827f50c6d1f150d0.js} +2 -2
  108. package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js.map → page-827f50c6d1f150d0.js.map} +1 -1
  109. package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js +2 -0
  110. package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js.map +1 -0
  111. package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js +2 -0
  112. package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js.map +1 -0
  113. package/dist/.next/static/chunks/app/(application)/workflows/{page-47dedb88cec600d5.js → page-e38f9456120dab69.js} +2 -2
  114. package/dist/.next/static/chunks/app/(application)/workflows/page-e38f9456120dab69.js.map +1 -0
  115. package/dist/.next/static/css/6f8c5212af8ef284.css +4 -0
  116. package/dist/.next/static/css/6f8c5212af8ef284.css.map +1 -0
  117. package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
  118. package/dist/package.json +1 -0
  119. package/package.json +1 -1
  120. package/dist/.next/server/chunks/2948.js +0 -1
  121. package/dist/.next/server/chunks/38.js +0 -1
  122. package/dist/.next/server/chunks/6623.js +0 -1
  123. package/dist/.next/server/chunks/7958.js +0 -1
  124. package/dist/.next/server/chunks/8050.js +0 -1
  125. package/dist/.next/static/chunks/1685-39351b8a15bbecab.js +0 -2
  126. package/dist/.next/static/chunks/1685-39351b8a15bbecab.js.map +0 -1
  127. package/dist/.next/static/chunks/1957-899d0d6d0d9c11fd.js +0 -2
  128. package/dist/.next/static/chunks/1957-899d0d6d0d9c11fd.js.map +0 -1
  129. package/dist/.next/static/chunks/3750-90a213a3c7cceb29.js.map +0 -1
  130. package/dist/.next/static/chunks/4811-316807e25b634f9f.js.map +0 -1
  131. package/dist/.next/static/chunks/5282-68f9880f1f951f44.js +0 -2
  132. package/dist/.next/static/chunks/5282-68f9880f1f951f44.js.map +0 -1
  133. package/dist/.next/static/chunks/6367-59cef3c74213925b.js +0 -2
  134. package/dist/.next/static/chunks/6367-59cef3c74213925b.js.map +0 -1
  135. package/dist/.next/static/chunks/6373-7908bd5269f95aa3.js +0 -2
  136. package/dist/.next/static/chunks/6373-7908bd5269f95aa3.js.map +0 -1
  137. package/dist/.next/static/chunks/6805-792cc8008b165c07.js.map +0 -1
  138. package/dist/.next/static/chunks/7856-9fa733bdd6429ba8.js.map +0 -1
  139. package/dist/.next/static/chunks/8030-c1b6be46253076cb.js +0 -2
  140. package/dist/.next/static/chunks/8030-c1b6be46253076cb.js.map +0 -1
  141. package/dist/.next/static/chunks/8269-0e17dac508340ccf.js +0 -2
  142. package/dist/.next/static/chunks/8269-0e17dac508340ccf.js.map +0 -1
  143. package/dist/.next/static/chunks/9105-78d236e8399181e0.js +0 -2
  144. package/dist/.next/static/chunks/9105-78d236e8399181e0.js.map +0 -1
  145. package/dist/.next/static/chunks/9621-f81c4d7c0ecf5a67.js +0 -2
  146. package/dist/.next/static/chunks/9621-f81c4d7c0ecf5a67.js.map +0 -1
  147. package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js +0 -2
  148. package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js.map +0 -1
  149. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-29794b9c33d2bf7e.js +0 -2
  150. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-29794b9c33d2bf7e.js.map +0 -1
  151. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-57021bb06089261a.js +0 -2
  152. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-57021bb06089261a.js.map +0 -1
  153. package/dist/.next/static/chunks/app/(application)/chat/layout-42021d301fc609b6.js +0 -2
  154. package/dist/.next/static/chunks/app/(application)/chat/layout-42021d301fc609b6.js.map +0 -1
  155. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-841b2ed48010048e.js +0 -2
  156. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-841b2ed48010048e.js.map +0 -1
  157. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-c1e7e0c81ca508c3.js +0 -2
  158. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-c1e7e0c81ca508c3.js.map +0 -1
  159. package/dist/.next/static/chunks/app/(application)/projects/[project]/page-0b2d9832e5a023e7.js +0 -2
  160. package/dist/.next/static/chunks/app/(application)/projects/[project]/page-0b2d9832e5a023e7.js.map +0 -1
  161. package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js +0 -2
  162. package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js.map +0 -1
  163. package/dist/.next/static/chunks/app/(application)/workflows/page-47dedb88cec600d5.js.map +0 -1
  164. package/dist/.next/static/css/a181dac3df0dc7a7.css +0 -4
  165. package/dist/.next/static/css/a181dac3df0dc7a7.css.map +0 -1
  166. /package/dist/.next/static/{J23NmkaMjAJYnE0jX_kO0 → ls-syPkq9-MWp-VWWDEZJ}/_buildManifest.js +0 -0
  167. /package/dist/.next/static/{J23NmkaMjAJYnE0jX_kO0 → ls-syPkq9-MWp-VWWDEZJ}/_ssgManifest.js +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6367],{76367:function(e,s,t){t.d(s,{$:function(){return S}});var a=t(57437),i=t(2265),l=t(66070),n=t(62869),r=t(35974),c=t(84190),d=t(31810),o=t(17684),m=t(78867),u=t(15868),x=t(18930),h=t(82222),p=t(42488),v=t(53417),f=t(92369),j=t(31047),g=t(91723),N=t(84544),w=t(12194),y=t(35283),b=t(14438),C=t(7211),_=t(27689),A=t(7598);function S(e){var s,t;let{prompt:S,user:D,onUpdate:Z}=e,[k,P]=(0,i.useState)(!1),[z,F]=(0,i.useState)(!1),[E]=(0,w.iJ)(),{toggleFavorite:B}=(0,w.Lq)(),R=function(e,s){var t,a,i,l;let n="private"===e.rights_mode,r="public"===e.rights_mode,c="users"===e.rights_mode,d="roles"===e.rights_mode,o=s.super_admin,m=e.created_by===s.id.toString(),u=!1;if(m&&(u=!0),!n||m||o||(u=!1),r&&(u=!0),c){let i=null===(a=e.RBAC)||void 0===a?void 0:null===(t=a.users)||void 0===t?void 0:t.find(e=>e.id===s.id);u=(null==i?void 0:i.rights)==="write"}if(d){let t=null===(l=e.RBAC)||void 0===l?void 0:null===(i=l.roles)||void 0===i?void 0:i.find(e=>{var t;return e.id===(null===(t=s.role)||void 0===t?void 0:t.id)});u=(null==t?void 0:t.rights)==="write"}return o&&(u=!0),u}(S,D),I=(0,N.H)(S.content),M=S.is_favorited||!1,{data:U}=(0,C.aM)(_.W9,{variables:{ids:S.assigned_agents||[]},skip:!S.assigned_agents||0===S.assigned_agents.length}),V=(null==U?void 0:null===(s=U.agentByIds)||void 0===s?void 0:s.map(e=>e.name))||[],{data:q}=(0,C.aM)(_.L5,{variables:{id:S.created_by},skip:!S.created_by}),O=(null==q?void 0:null===(t=q.userById)||void 0===t?void 0:t.name)||"Unknown",L=async()=>{if(confirm("Are you sure you want to delete this prompt?"))try{await E({variables:{id:S.id}}),b.Am.success("Prompt deleted successfully"),Z()}catch(e){b.Am.error("Failed to delete prompt"),console.error(e)}},Q=async()=>{if(!z){F(!0);try{await B(S.id,D.id,M,S.favorite_count,void 0),b.Am.success(M?"Removed from favorites":"Added to favorites",{icon:M?"\uD83D\uDC4E":"\uD83D\uDC4D",duration:2e3}),Z()}catch(e){b.Am.error("Failed to update favorite"),console.error(e)}finally{await new Promise(e=>setTimeout(e,200)),F(!1)}}};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(l.Zb,{className:"flex flex-col hover:shadow-md transition-shadow",children:[(0,a.jsx)(l.Ol,{className:"pb-3",children:(0,a.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("h3",{className:"font-semibold text-lg truncate",children:S.name}),S.description&&(0,a.jsx)("p",{className:"text-sm text-muted-foreground line-clamp-2 mt-1",children:S.description})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)(n.z,{variant:"ghost",size:"icon",className:"h-8 w-8 transition-all ".concat(z?"scale-125":""," ").concat(M?"text-yellow-500":""),onClick:Q,disabled:z,children:(0,a.jsx)(d.Z,{className:"h-4 w-4 transition-all ".concat(z?"animate-pulse":""," ").concat(M?"fill-yellow-400 text-yellow-400":"")})}),(0,a.jsxs)(c.h_,{modal:!1,children:[(0,a.jsx)(c.$F,{asChild:!0,children:(0,a.jsx)(n.z,{variant:"ghost",size:"icon",className:"h-8 w-8",children:(0,a.jsx)(o.Z,{className:"h-4 w-4"})})}),(0,a.jsxs)(c.AW,{align:"end",children:[(0,a.jsxs)(c.Xi,{onClick:()=>{navigator.clipboard.writeText(S.content),b.Am.success("Prompt copied to clipboard")},children:[(0,a.jsx)(m.Z,{className:"mr-2 h-4 w-4"}),"Copy Content"]}),R&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(c.Xi,{onClick:()=>P(!0),children:[(0,a.jsx)(u.Z,{className:"mr-2 h-4 w-4"}),"Edit"]}),(0,a.jsxs)(c.Xi,{onClick:L,className:"text-destructive",children:[(0,a.jsx)(x.Z,{className:"mr-2 h-4 w-4"}),"Delete"]})]})]})]})]})]})}),(0,a.jsx)(l.aY,{className:"flex-1 pb-3",children:(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground line-clamp-3",children:S.content}),I.length>0&&(0,a.jsxs)(r.C,{variant:"outline",className:"text-xs",children:[I.length," variable",1!==I.length?"s":""]}),V.length>0&&(0,a.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,a.jsx)(h.Z,{className:"h-3 w-3"}),(0,a.jsx)("span",{className:"font-medium",children:"Works with:"})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-1",children:[V.slice(0,2).map((e,s)=>(0,a.jsx)(r.C,{variant:"default",className:"text-xs bg-primary/10 text-primary hover:bg-primary/20",children:e},s)),V.length>2&&(0,a.jsxs)(r.C,{variant:"default",className:"text-xs bg-primary/10 text-primary hover:bg-primary/20",children:["+",V.length-2," more"]})]})]})]})}),(0,a.jsxs)(l.eW,{className:"flex flex-col gap-3 pt-3 border-t",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between w-full",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 text-xs text-muted-foreground",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1 transition-all ".concat(z?"scale-125":""," ").concat(M?"text-yellow-500":""),children:[(0,a.jsx)(d.Z,{className:"h-3.5 w-3.5"}),(0,a.jsx)("span",{children:S.favorite_count||0})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",title:"Times used",children:[(0,a.jsx)(p.Z,{className:"h-3.5 w-3.5"}),(0,a.jsx)("span",{children:S.usage_count||0})]})]}),(0,a.jsxs)(n.z,{variant:"secondary",size:"sm",type:"button",onClick:()=>P(!0),children:[(0,a.jsx)(v.Z,{className:"mr-2 h-3.5 w-3.5"}),"View"]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1.5 text-xs text-muted-foreground w-full",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)(f.Z,{className:"h-3 w-3"}),(0,a.jsxs)("span",{children:["Created by ",O]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)(j.Z,{className:"h-3 w-3"}),(0,a.jsxs)("span",{children:["Created ",(0,A.Q)(new Date(S.createdAt),{addSuffix:!0})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)(g.Z,{className:"h-3 w-3"}),(0,a.jsxs)("span",{children:["Updated ",(0,A.Q)(new Date(S.updatedAt),{addSuffix:!0})]})]})]})]})]}),(0,a.jsx)(y.D,{open:k,onOpenChange:P,prompt:S,onSuccess:Z,user:D})]})}},35283:function(e,s,t){t.d(s,{D:function(){return _}});var a=t(57437),i=t(2265),l=t(26110),n=t(62869),r=t(95186),c=t(26815),d=t(76818),o=t(35974),m=t(25846),u=t(24156),x=t(30401),h=t(32489),p=t(12194),v=t(84544),f=t(8014),j=t(14438),g=t(74928),N=t(23518),w=t(57054),y=t(7211),b=t(27689),C=t(94508);function _(e){var s;let{open:t,onOpenChange:_,prompt:A,onSuccess:S,user:D,defaultAssignedAgents:Z=[]}=e,k=!!A,[P,{loading:z}]=(0,p.EE)(),[F,{loading:E}]=(0,p.er)(),[B,R]=(0,i.useState)(""),[I,M]=(0,i.useState)(""),[U,V]=(0,i.useState)(""),[q,O]=(0,i.useState)("private"),[L,Q]=(0,i.useState)([]),[T,W]=(0,i.useState)([]),[$,H]=(0,i.useState)(!1),[J,X]=(0,i.useState)([]),[Y,K]=(0,i.useState)(!1),{data:G}=(0,y.aM)(b.ym,{variables:{page:1,limit:100}}),ee=(null==G?void 0:null===(s=G.agentsPagination)||void 0===s?void 0:s.items)||[],es=(0,v.H)(U),{isValid:et,invalidVariables:ea}=function(e){if(!e)return{isValid:!0,invalidVariables:[]};let s=e.matchAll(/\{\{([^}]+)\}\}/g),t=[];for(let e of Array.from(s)){let s=e[1];s&&/^[a-zA-Z0-9_]+$/.test(s)||t.push(s)}return{isValid:0===t.length,invalidVariables:t}}(U);(0,i.useEffect)(()=>{if(t){if(A){var e,s;R(A.name),M(A.description||""),V(A.content),O(A.rights_mode),Q((null===(e=A.RBAC)||void 0===e?void 0:e.users)||[]),W((null===(s=A.RBAC)||void 0===s?void 0:s.roles)||[]),X(A.assigned_agents||[])}else ei(),Z&&Z.length>0&&X(Z)}},[A,t]);let ei=()=>{R(""),M(""),V(""),O("private"),Q([]),W([]),H(!1),X([])},el=async()=>{if(!B.trim()){j.Am.error("Please enter a name for the prompt");return}if(!U.trim()){j.Am.error("Please enter prompt content");return}if(!et){j.Am.error("Invalid variable names: ".concat(ea.join(", "),". Use only letters, numbers, and underscores."));return}try{let e={name:B.trim(),description:I.trim()||void 0,content:U.trim(),rights_mode:q,RBAC:"private"!==q&&"public"!==q?{users:L.length>0?L:void 0,roles:T.length>0?T:void 0}:void 0,assigned_agents:J.length>0?J:void 0};k?(await F({variables:{id:A.id,...e}}),j.Am.success("Prompt updated successfully")):(await P({variables:e}),j.Am.success("Prompt created successfully")),S(),_(!1),ei()}catch(e){console.error(e),j.Am.error(k?"Failed to update prompt":"Failed to create prompt")}};return(0,a.jsx)(l.Vq,{open:t,onOpenChange:_,children:(0,a.jsxs)(l.cZ,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[(0,a.jsxs)(l.fK,{children:[(0,a.jsx)(l.$N,{children:k?"Edit Prompt":"Create New Prompt"}),(0,a.jsx)(l.Be,{children:k?"Update your prompt template":"Create a reusable prompt template with variables"})]}),(0,a.jsxs)("div",{className:"space-y-6 py-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)(c._,{htmlFor:"name",children:["Name ",(0,a.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,a.jsx)(r.I,{id:"name",placeholder:"Customer Support Template",value:B,onChange:e=>R(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(c._,{htmlFor:"description",children:"Description"}),(0,a.jsx)(r.I,{id:"description",placeholder:"Brief description of this prompt",value:I,onChange:e=>M(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)(c._,{htmlFor:"content",children:["Prompt Content ",(0,a.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,a.jsx)(d.g,{id:"content",placeholder:"You are helping {{customer_name}} with their {{issue}}...",value:U,onChange:e=>V(e.target.value),rows:8,className:"font-mono text-sm"}),(0,a.jsxs)("div",{className:"flex items-start gap-2 text-xs text-muted-foreground",children:[(0,a.jsx)(m.Z,{className:"h-3.5 w-3.5 mt-0.5 flex-shrink-0"}),(0,a.jsxs)("span",{children:["Use"," ",(0,a.jsxs)("code",{className:"bg-muted px-1 py-0.5 rounded",children:["{","{","variable_name","}}"]})," ","format for dynamic content. Variable names can only contain letters, numbers, and underscores."]})]}),es.length>0&&(0,a.jsxs)("div",{className:"flex flex-wrap gap-1 pt-2",children:[(0,a.jsx)("span",{className:"text-xs text-muted-foreground mr-2",children:"Detected variables:"}),es.map(e=>(0,a.jsx)(o.C,{variant:"outline",className:"text-xs",children:e},e))]}),!et&&(0,a.jsxs)("div",{className:"text-xs text-destructive",children:["Invalid variable names: ",ea.join(", ")]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(c._,{children:"Assign to Agents"}),(0,a.jsxs)(w.J2,{modal:!0,open:Y,onOpenChange:K,children:[(0,a.jsx)(w.xo,{asChild:!0,children:(0,a.jsxs)(n.z,{variant:"outline",role:"combobox","aria-expanded":Y,className:"w-full justify-between",children:[0===J.length?"Select agents...":"".concat(J.length," agent").concat(1!==J.length?"s":""," selected"),(0,a.jsx)(u.Z,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,a.jsx)(w.yk,{className:"w-full p-0",children:(0,a.jsxs)(N.mY,{children:[(0,a.jsx)(N.sZ,{placeholder:"Search agents..."}),(0,a.jsxs)(N.e8,{children:[(0,a.jsx)(N.rb,{children:"No agents found."}),(0,a.jsx)(N.fu,{children:ee.map(e=>(0,a.jsxs)(N.di,{value:e.id,onSelect:()=>{X(s=>s.includes(e.id)?s.filter(s=>s!==e.id):[...s,e.id])},children:[(0,a.jsx)(x.Z,{className:(0,C.cn)("mr-2 h-4 w-4",J.includes(e.id)?"opacity-100":"opacity-0")}),e.name]},e.id))})]})]})})]}),J.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap gap-2 pt-2",children:J.map(e=>{let s=ee.find(s=>s.id===e);return s?(0,a.jsxs)(o.C,{variant:"secondary",className:"text-sm",children:[s.name,(0,a.jsx)("button",{type:"button",onClick:()=>X(s=>s.filter(s=>s!==e)),className:"ml-1.5 hover:text-destructive",children:(0,a.jsx)(h.Z,{className:"h-3 w-3"})})]},e):null})}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"Assign this prompt to specific agents to show it as recommended in chat"})]}),(0,a.jsx)(g.zF,{open:$,onOpenChange:H,children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(g.wy,{asChild:!0,children:(0,a.jsxs)(n.z,{variant:"outline",className:"w-full justify-between",children:["Access Control",(0,a.jsxs)("span",{className:"text-xs text-muted-foreground",children:["private"===q&&"Private","public"===q&&"Public","users"===q&&"".concat(L.length," users"),"roles"===q&&"".concat(T.length," roles")]})]})}),(0,a.jsx)(g.Fw,{className:"pt-2",children:(0,a.jsx)(f.P,{initialRightsMode:q,initialUsers:L,initialRoles:T,modalMode:!0,onChange:(e,s,t)=>{O(e),Q(s),W(t)}})})]})})]}),(0,a.jsxs)(l.cN,{children:[(0,a.jsx)(n.z,{variant:"outline",onClick:()=>_(!1),children:"Cancel"}),(0,a.jsx)(n.z,{onClick:el,disabled:z||E||!B.trim()||!U.trim()||!et,children:z||E?"Saving...":k?"Save Changes":"Create Prompt"})]})]})})}},12194:function(e,s,t){t.d(s,{EE:function(){return r},Lq:function(){return x},Sh:function(){return n},VR:function(){return o},er:function(){return c},iJ:function(){return d}});var a=t(7211),i=t(12199),l=t(27689);let n=e=>{var s,t,i,n;return(0,a.aM)(l.xx,{variables:{page:null!==(s=null==e?void 0:e.page)&&void 0!==s?s:1,limit:null!==(t=null==e?void 0:e.limit)&&void 0!==t?t:20,filters:null!==(i=null==e?void 0:e.filters)&&void 0!==i?i:[],sort:null!==(n=null==e?void 0:e.sort)&&void 0!==n?n:{field:"updatedAt",direction:"DESC"}}})},r=()=>(0,i.D)(l.Iv,{refetchQueries:[{query:l.xx,variables:{page:1,limit:20}}]}),c=()=>(0,i.D)(l.jA),d=()=>(0,i.D)(l.Ll,{refetchQueries:[{query:l.xx,variables:{page:1,limit:20}}]}),o=()=>(0,i.D)(l.re),m=()=>(0,i.D)(l.Nl),u=()=>(0,i.D)(l.m8),x=()=>{let[e]=m(),[s]=u(),[t]=(0,i.D)(l.UK);return{toggleFavorite:async(a,i,l,n,r)=>{l&&r?(await s({variables:{id:r}}),await t({variables:{id:a,favorite_count:Math.max(0,n-1)}})):(await e({variables:{user_id:i,prompt_id:a}}),await t({variables:{id:a,favorite_count:n+1}}))}}}},84544:function(e,s,t){t.d(s,{H:function(){return a}});function a(e){if(!e)return[];let s=e.matchAll(/\{\{([a-zA-Z0-9_]+)\}\}/g),t=new Set;for(let e of Array.from(s))t.add(e[1]);return Array.from(t).sort()}}}]);
2
+ //# sourceMappingURL=6367-59655a85d75e19be.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/chunks/6367-59655a85d75e19be.js","mappings":"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","sources":["webpack://_N_E/./lib/prompts/check-prompt-access.ts","webpack://_N_E/./app/(application)/prompts/components/prompt-card.tsx","webpack://_N_E/./lib/prompts/validate-variable-name.ts","webpack://_N_E/./app/(application)/prompts/components/prompt-editor-modal.tsx","webpack://_N_E/./hooks/use-prompts.tsx","webpack://_N_E/./lib/prompts/extract-variables.ts"],"sourcesContent":["import { PromptLibrary } from \"@/types/models/prompt-library\";\nimport { UserWithRole } from \"@/types/models/user\";\n\n/**\n * Checks if a user has write access to a prompt\n *\n * @param prompt - The prompt to check access for\n * @param user - The user to check access for\n * @returns true if user has write access, false otherwise\n */\nexport function checkPromptWriteAccess(\n prompt: PromptLibrary,\n user: UserWithRole\n): boolean {\n const isPrivate = prompt.rights_mode === \"private\";\n const isPublic = prompt.rights_mode === \"public\";\n const byUsers = prompt.rights_mode === \"users\";\n const byRoles = prompt.rights_mode === \"roles\";\n const isAdmin = user.super_admin;\n const isCreator = prompt.created_by === user.id.toString();\n\n let writeAccess = false;\n\n // Creator always has write access\n if (isCreator) {\n writeAccess = true;\n }\n\n // Private: only creator + admins\n if (isPrivate && !isCreator && !isAdmin) {\n writeAccess = false;\n }\n\n // Public: everyone has write access\n if (isPublic) {\n writeAccess = true;\n }\n\n // By users: check if user has write permission\n if (byUsers) {\n const userAccess = prompt.RBAC?.users?.find((u) => u.id === user.id);\n writeAccess = userAccess?.rights === \"write\";\n }\n\n // By roles: check if user's role has write permission\n if (byRoles) {\n const roleAccess = prompt.RBAC?.roles?.find((r) => r.id === user.role?.id);\n writeAccess = roleAccess?.rights === \"write\";\n }\n\n // Admin override\n if (isAdmin) {\n writeAccess = true;\n }\n\n return writeAccess;\n}\n\n/**\n * Checks if a user has read access to a prompt\n *\n * @param prompt - The prompt to check access for\n * @param user - The user to check access for\n * @returns true if user has read access, false otherwise\n */\nexport function checkPromptReadAccess(\n prompt: PromptLibrary,\n user: UserWithRole\n): boolean {\n const isPrivate = prompt.rights_mode === \"private\";\n const isPublic = prompt.rights_mode === \"public\";\n const byUsers = prompt.rights_mode === \"users\";\n const byRoles = prompt.rights_mode === \"roles\";\n const isAdmin = user.super_admin;\n const isCreator = prompt.created_by === user.id.toString();\n\n // Creator always has read access\n if (isCreator) {\n return true;\n }\n\n // Admin always has read access\n if (isAdmin) {\n return true;\n }\n\n // Private: only creator + admins\n if (isPrivate) {\n return false;\n }\n\n // Public: everyone has read access\n if (isPublic) {\n return true;\n }\n\n // By users: check if user has read or write permission\n if (byUsers) {\n const userAccess = prompt.RBAC?.users?.find((u) => u.id === user.id);\n return userAccess !== undefined;\n }\n\n // By roles: check if user's role has read or write permission\n if (byRoles) {\n const roleAccess = prompt.RBAC?.roles?.find((r) => r.id === user.role?.id);\n return roleAccess !== undefined;\n }\n\n // By projects: would need project context to check\n /* if (prompt.rights_mode === \"projects\") {\n // This would require project context - for now return false\n // Can be enhanced when project context is available\n return false;\n } */\n\n return false;\n}\n","import { useState } from \"react\";\nimport { PromptLibrary } from \"@/types/models/prompt-library\";\nimport { UserWithRole } from \"@/types/models/user\";\nimport { Card, CardContent, CardFooter, CardHeader } from \"@/components/ui/card\";\nimport { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n Edit,\n Trash2,\n MoreVertical,\n Star,\n Activity,\n MessageSquare,\n Copy,\n Bot,\n User,\n Calendar,\n Clock,\n ThumbsUp,\n} from \"lucide-react\";\nimport { checkPromptWriteAccess } from \"@/lib/prompts/check-prompt-access\";\nimport { extractVariables } from \"@/lib/prompts/extract-variables\";\nimport { useDeletePrompt, useTogglePromptFavorite } from \"@/hooks/use-prompts\";\nimport { PromptEditorModal } from \"./prompt-editor-modal\";\nimport { toast } from \"sonner\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_AGENTS_BY_IDS, GET_USER_BY_ID } from \"@/queries/queries\";\nimport { formatDistanceToNow } from \"date-fns\";\n\ninterface PromptCardProps {\n prompt: PromptLibrary;\n user: UserWithRole;\n onUpdate: () => void;\n}\n\nexport function PromptCard({ prompt, user, onUpdate }: PromptCardProps) {\n const [isEditModalOpen, setIsEditModalOpen] = useState(false);\n const [isFavoriting, setIsFavoriting] = useState(false);\n const [deletePrompt] = useDeletePrompt();\n const { toggleFavorite } = useTogglePromptFavorite();\n\n const hasWriteAccess = checkPromptWriteAccess(prompt, user);\n const variables = extractVariables(prompt.content);\n const isFavorited = prompt.is_favorited || false;\n\n // Fetch only the assigned agents by their IDs\n const { data: agentsData } = useQuery(GET_AGENTS_BY_IDS, {\n variables: { ids: prompt.assigned_agents || [] },\n skip: !prompt.assigned_agents || prompt.assigned_agents.length === 0,\n });\n\n const assignedAgentNames =\n agentsData?.agentByIds?.map((agent: any) => agent.name) || [];\n\n // Fetch creator information\n const { data: creatorData } = useQuery(GET_USER_BY_ID, {\n variables: { id: prompt.created_by },\n skip: !prompt.created_by,\n });\n\n const creatorName = creatorData?.userById?.name || \"Unknown\";\n\n const handleDelete = async () => {\n if (confirm(\"Are you sure you want to delete this prompt?\")) {\n try {\n await deletePrompt({ variables: { id: prompt.id } });\n toast.success(\"Prompt deleted successfully\");\n onUpdate();\n } catch (error) {\n toast.error(\"Failed to delete prompt\");\n console.error(error);\n }\n }\n };\n\n const handleToggleFavorite = async () => {\n if (isFavoriting) return; // Prevent double-clicks\n\n setIsFavoriting(true);\n try {\n // This is a simplified version - you'd need to fetch the favorite ID\n // and current favorite status from the backend\n await toggleFavorite(\n prompt.id,\n user.id,\n isFavorited,\n prompt.favorite_count,\n undefined // favoriteId would come from querying favorites\n );\n toast.success(\n isFavorited ? \"Removed from favorites\" : \"Added to favorites\",\n {\n icon: isFavorited ? \"👎\" : \"👍\",\n duration: 2000,\n }\n );\n onUpdate();\n } catch (error) {\n toast.error(\"Failed to update favorite\");\n console.error(error);\n } finally {\n // wait 1 second\n await new Promise(resolve => setTimeout(resolve, 200));\n setIsFavoriting(false);\n }\n };\n\n const handleCopyContent = () => {\n navigator.clipboard.writeText(prompt.content);\n toast.success(\"Prompt copied to clipboard\");\n };\n\n return (\n <>\n <Card className=\"flex flex-col hover:shadow-md transition-shadow\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"font-semibold text-lg truncate\">{prompt.name}</h3>\n {prompt.description && (\n <p className=\"text-sm text-muted-foreground line-clamp-2 mt-1\">\n {prompt.description}\n </p>\n )}\n </div>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={`h-8 w-8 transition-all ${isFavoriting ? \"scale-125\" : \"\"\n } ${isFavorited ? \"text-yellow-500\" : \"\"}`}\n onClick={handleToggleFavorite}\n disabled={isFavoriting}\n >\n <ThumbsUp\n className={`h-4 w-4 transition-all ${isFavoriting ? \"animate-pulse\" : \"\"\n } ${isFavorited ? \"fill-yellow-400 text-yellow-400\" : \"\"}`}\n />\n </Button>\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n <MoreVertical className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={handleCopyContent}>\n <Copy className=\"mr-2 h-4 w-4\" />\n Copy Content\n </DropdownMenuItem>\n {hasWriteAccess && (\n <>\n <DropdownMenuItem onClick={() => setIsEditModalOpen(true)}>\n <Edit className=\"mr-2 h-4 w-4\" />\n Edit\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={handleDelete}\n className=\"text-destructive\"\n >\n <Trash2 className=\"mr-2 h-4 w-4\" />\n Delete\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </div>\n </CardHeader>\n\n <CardContent className=\"flex-1 pb-3\">\n <div className=\"space-y-3\">\n {/* Content Preview */}\n <p className=\"text-sm text-muted-foreground line-clamp-3\">\n {prompt.content}\n </p>\n\n {/* Variables Badge */}\n {variables.length > 0 && (\n <Badge variant=\"outline\" className=\"text-xs\">\n {variables.length} variable{variables.length !== 1 ? \"s\" : \"\"}\n </Badge>\n )}\n\n {/* Assigned Agents */}\n {assignedAgentNames.length > 0 && (\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex items-center gap-1 text-xs text-muted-foreground\">\n <Bot className=\"h-3 w-3\" />\n <span className=\"font-medium\">Works with:</span>\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {assignedAgentNames.slice(0, 2).map((name, index) => (\n <Badge\n key={index}\n variant=\"default\"\n className=\"text-xs bg-primary/10 text-primary hover:bg-primary/20\"\n >\n {name}\n </Badge>\n ))}\n {assignedAgentNames.length > 2 && (\n <Badge\n variant=\"default\"\n className=\"text-xs bg-primary/10 text-primary hover:bg-primary/20\"\n >\n +{assignedAgentNames.length - 2} more\n </Badge>\n )}\n </div>\n </div>\n )}\n </div>\n </CardContent>\n\n <CardFooter className=\"flex flex-col gap-3 pt-3 border-t\">\n {/* Stats Row */}\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex items-center gap-3 text-xs text-muted-foreground\">\n <div className={`flex items-center gap-1 transition-all ${isFavoriting ? \"scale-125\" : \"\"\n } ${isFavorited ? \"text-yellow-500\" : \"\"}`}>\n <ThumbsUp className=\"h-3.5 w-3.5\" />\n <span>{prompt.favorite_count || 0}</span>\n\n </div>\n <div className=\"flex items-center gap-1\" title=\"Times used\">\n <Activity className=\"h-3.5 w-3.5\" />\n <span>{prompt.usage_count || 0}</span>\n </div>\n </div>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n type=\"button\"\n onClick={() => setIsEditModalOpen(true)}\n >\n <MessageSquare className=\"mr-2 h-3.5 w-3.5\" />\n View\n </Button>\n </div>\n\n {/* Metadata Row */}\n <div className=\"flex flex-col gap-1.5 text-xs text-muted-foreground w-full\">\n <div className=\"flex items-center gap-1\">\n <User className=\"h-3 w-3\" />\n <span>Created by {creatorName}</span>\n </div>\n <div className=\"flex items-center gap-1\">\n <Calendar className=\"h-3 w-3\" />\n <span>\n Created {formatDistanceToNow(new Date(prompt.createdAt), { addSuffix: true })}\n </span>\n </div>\n <div className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" />\n <span>\n Updated {formatDistanceToNow(new Date(prompt.updatedAt), { addSuffix: true })}\n </span>\n </div>\n </div>\n </CardFooter>\n </Card>\n\n <PromptEditorModal\n open={isEditModalOpen}\n onOpenChange={setIsEditModalOpen}\n prompt={prompt}\n onSuccess={onUpdate}\n user={user}\n />\n </>\n );\n}\n","/**\n * Validates that a variable name follows the allowed pattern\n * Valid: alphanumeric characters and underscores only\n *\n * @param variable - The variable name to validate\n * @returns true if valid, false otherwise\n *\n * @example\n * validateVariableName(\"customer_name\") // Returns: true\n * validateVariableName(\"issue-id\") // Returns: false (hyphen not allowed)\n * validateVariableName(\"user@email\") // Returns: false (@ not allowed)\n */\nexport function validateVariableName(variable: string): boolean {\n if (!variable) return false;\n\n // Only allow alphanumeric characters and underscores\n const validPattern = /^[a-zA-Z0-9_]+$/;\n return validPattern.test(variable);\n}\n\n/**\n * Validates all variables in a prompt content\n *\n * @param content - The prompt content to validate\n * @returns Object with isValid boolean and array of invalid variables\n *\n * @example\n * validatePromptVariables(\"Hello {{name}}, issue {{issue-id}}\")\n * // Returns: { isValid: false, invalidVariables: [\"issue-id\"] }\n */\nexport function validatePromptVariables(content: string): {\n isValid: boolean;\n invalidVariables: string[];\n} {\n if (!content) return { isValid: true, invalidVariables: [] };\n\n // Match all {{...}} patterns, including invalid ones\n const regex = /\\{\\{([^}]+)\\}\\}/g;\n const matches = content.matchAll(regex);\n const invalidVariables: string[] = [];\n\n for (const match of Array.from(matches)) {\n const variableName = match[1];\n if (!validateVariableName(variableName)) {\n invalidVariables.push(variableName);\n }\n }\n\n return {\n isValid: invalidVariables.length === 0,\n invalidVariables,\n };\n}\n","import { useState, useEffect } from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { X, Lightbulb, Check, ChevronsUpDown } from \"lucide-react\";\nimport { PromptLibrary } from \"@/types/models/prompt-library\";\nimport { UserWithRole } from \"@/types/models/user\";\nimport { useCreatePrompt, useUpdatePrompt } from \"@/hooks/use-prompts\";\nimport { extractVariables, validatePromptVariables } from \"@/lib/prompts\";\nimport { RBACControl } from \"@/components/rbac\";\nimport { toast } from \"sonner\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_AGENTS } from \"@/queries/queries\";\nimport { cn } from \"@/lib/utils\";\n\ninterface PromptEditorModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n prompt?: PromptLibrary;\n onSuccess: () => void;\n user: UserWithRole;\n defaultAssignedAgents?: string[];\n}\n\nexport function PromptEditorModal({\n open,\n onOpenChange,\n prompt,\n onSuccess,\n user,\n defaultAssignedAgents = [],\n}: PromptEditorModalProps) {\n const isEditing = !!prompt;\n const [createPrompt, { loading: creating }] = useCreatePrompt();\n const [updatePrompt, { loading: updating }] = useUpdatePrompt();\n\n // Form state\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [content, setContent] = useState(\"\");\n const [rightsMode, setRightsMode] = useState<\n \"private\" | \"users\" | \"roles\" | \"public\"/* | \"projects\" */\n >(\"private\");\n const [rbacUsers, setRbacUsers] = useState<\n { id: number; rights: \"read\" | \"write\" }[]\n >([]);\n const [rbacRoles, setRbacRoles] = useState<\n { id: string; rights: \"read\" | \"write\" }[]\n >([]);\n /* const [rbacProjects, setRbacProjects] = useState<\n { id: string; rights: \"read\" | \"write\" }[]\n >([]); */\n const [rbacOpen, setRbacOpen] = useState(false);\n const [assignedAgents, setAssignedAgents] = useState<string[]>([]);\n const [agentSelectorOpen, setAgentSelectorOpen] = useState(false);\n\n // Fetch agents\n const { data: agentsData } = useQuery(GET_AGENTS, {\n variables: { page: 1, limit: 100 },\n });\n\n const agents = agentsData?.agentsPagination?.items || [];\n\n // Extract variables from content\n const variables = extractVariables(content);\n const { isValid, invalidVariables } = validatePromptVariables(content);\n\n // Initialize form when editing\n useEffect(() => {\n if (!open) return; // Only run when modal opens\n\n if (prompt) {\n setName(prompt.name);\n setDescription(prompt.description || \"\");\n setContent(prompt.content);\n setRightsMode(prompt.rights_mode);\n setRbacUsers(prompt.RBAC?.users || []);\n setRbacRoles(prompt.RBAC?.roles || []);\n // setRbacProjects(prompt.RBAC?.projects || []);\n setAssignedAgents(prompt.assigned_agents || []);\n } else {\n resetForm();\n // Apply default assigned agents when creating new prompt\n if (defaultAssignedAgents && defaultAssignedAgents.length > 0) {\n setAssignedAgents(defaultAssignedAgents);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [prompt, open]);\n\n const resetForm = () => {\n setName(\"\");\n setDescription(\"\");\n setContent(\"\");\n setRightsMode(\"private\");\n setRbacUsers([]);\n setRbacRoles([]);\n // setRbacProjects([]);\n setRbacOpen(false);\n setAssignedAgents([]);\n };\n\n const handleSubmit = async () => {\n // Validation\n if (!name.trim()) {\n toast.error(\"Please enter a name for the prompt\");\n return;\n }\n if (!content.trim()) {\n toast.error(\"Please enter prompt content\");\n return;\n }\n if (!isValid) {\n toast.error(\n `Invalid variable names: ${invalidVariables.join(\", \")}. Use only letters, numbers, and underscores.`\n );\n return;\n }\n\n try {\n const input = {\n name: name.trim(),\n description: description.trim() || undefined,\n content: content.trim(),\n rights_mode: rightsMode,\n RBAC:\n rightsMode !== \"private\" && rightsMode !== \"public\"\n ? {\n users: rbacUsers.length > 0 ? rbacUsers : undefined,\n roles: rbacRoles.length > 0 ? rbacRoles : undefined,\n // projects: rbacProjects.length > 0 ? rbacProjects : undefined,\n }\n : undefined,\n assigned_agents: assignedAgents.length > 0 ? assignedAgents : undefined,\n };\n\n if (isEditing) {\n await updatePrompt({\n variables: {\n id: prompt.id,\n ...input,\n },\n });\n toast.success(\"Prompt updated successfully\");\n } else {\n await createPrompt({\n variables: input,\n });\n toast.success(\"Prompt created successfully\");\n }\n\n onSuccess();\n onOpenChange(false);\n resetForm();\n } catch (error) {\n console.error(error);\n toast.error(isEditing ? \"Failed to update prompt\" : \"Failed to create prompt\");\n }\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-3xl max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>{isEditing ? \"Edit Prompt\" : \"Create New Prompt\"}</DialogTitle>\n <DialogDescription>\n {isEditing\n ? \"Update your prompt template\"\n : \"Create a reusable prompt template with variables\"}\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"space-y-6 py-4\">\n {/* Name */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"name\">\n Name <span className=\"text-destructive\">*</span>\n </Label>\n <Input\n id=\"name\"\n placeholder=\"Customer Support Template\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n />\n </div>\n\n {/* Description */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"description\">Description</Label>\n <Input\n id=\"description\"\n placeholder=\"Brief description of this prompt\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n\n {/* Content */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"content\">\n Prompt Content <span className=\"text-destructive\">*</span>\n </Label>\n <Textarea\n id=\"content\"\n placeholder=\"You are helping {{customer_name}} with their {{issue}}...\"\n value={content}\n onChange={(e) => setContent(e.target.value)}\n rows={8}\n className=\"font-mono text-sm\"\n />\n <div className=\"flex items-start gap-2 text-xs text-muted-foreground\">\n <Lightbulb className=\"h-3.5 w-3.5 mt-0.5 flex-shrink-0\" />\n <span>\n Use{\" \"}\n <code className=\"bg-muted px-1 py-0.5 rounded\">\n {\"{\"}\n {\"{\"}variable_name{\"}}\"}\n </code>{\" \"}\n format for dynamic content. Variable names can only contain letters,\n numbers, and underscores.\n </span>\n </div>\n\n {/* Detected Variables */}\n {variables.length > 0 && (\n <div className=\"flex flex-wrap gap-1 pt-2\">\n <span className=\"text-xs text-muted-foreground mr-2\">\n Detected variables:\n </span>\n {variables.map((variable) => (\n <Badge key={variable} variant=\"outline\" className=\"text-xs\">\n {variable}\n </Badge>\n ))}\n </div>\n )}\n\n {/* Invalid Variables Warning */}\n {!isValid && (\n <div className=\"text-xs text-destructive\">\n Invalid variable names: {invalidVariables.join(\", \")}\n </div>\n )}\n </div>\n\n {/* Assign to Agents */}\n <div className=\"space-y-2\">\n <Label>Assign to Agents</Label>\n <Popover modal={true} open={agentSelectorOpen} onOpenChange={setAgentSelectorOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={agentSelectorOpen}\n className=\"w-full justify-between\"\n >\n {assignedAgents.length === 0\n ? \"Select agents...\"\n : `${assignedAgents.length} agent${assignedAgents.length !== 1 ? \"s\" : \"\"} selected`}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search agents...\" />\n <CommandList>\n <CommandEmpty>No agents found.</CommandEmpty>\n <CommandGroup>\n {agents.map((agent: any) => (\n <CommandItem\n key={agent.id}\n value={agent.id}\n onSelect={() => {\n setAssignedAgents((prev) =>\n prev.includes(agent.id)\n ? prev.filter((id) => id !== agent.id)\n : [...prev, agent.id]\n );\n }}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n assignedAgents.includes(agent.id)\n ? \"opacity-100\"\n : \"opacity-0\"\n )}\n />\n {agent.name}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n {assignedAgents.length > 0 && (\n <div className=\"flex flex-wrap gap-2 pt-2\">\n {assignedAgents.map((agentId) => {\n const agent = agents.find((a: any) => a.id === agentId);\n return agent ? (\n <Badge key={agentId} variant=\"secondary\" className=\"text-sm\">\n {agent.name}\n <button\n type=\"button\"\n onClick={() =>\n setAssignedAgents((prev) =>\n prev.filter((id) => id !== agentId)\n )\n }\n className=\"ml-1.5 hover:text-destructive\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </Badge>\n ) : null;\n })}\n </div>\n )}\n <p className=\"text-xs text-muted-foreground\">\n Assign this prompt to specific agents to show it as recommended in chat\n </p>\n </div>\n\n {/* RBAC Control */}\n <Collapsible open={rbacOpen} onOpenChange={setRbacOpen}>\n <div className=\"space-y-2\">\n <CollapsibleTrigger asChild>\n <Button variant=\"outline\" className=\"w-full justify-between\">\n Access Control\n <span className=\"text-xs text-muted-foreground\">\n {rightsMode === \"private\" && \"Private\"}\n {rightsMode === \"public\" && \"Public\"}\n {rightsMode === \"users\" && `${rbacUsers.length} users`}\n {rightsMode === \"roles\" && `${rbacRoles.length} roles`}\n {/* {rightsMode === \"projects\" && `${rbacProjects.length} projects`} */}\n </span>\n </Button>\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-2\">\n <RBACControl\n initialRightsMode={rightsMode}\n initialUsers={rbacUsers}\n initialRoles={rbacRoles}\n modalMode={true}\n // initialProjects={rbacProjects}\n onChange={(mode, users, roles) => {\n setRightsMode(mode);\n setRbacUsers(users);\n setRbacRoles(roles);\n // setRbacProjects(projects);\n }}\n />\n </CollapsibleContent>\n </div>\n </Collapsible>\n </div>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => onOpenChange(false)}>\n Cancel\n </Button>\n <Button\n onClick={handleSubmit}\n disabled={creating || updating || !name.trim() || !content.trim() || !isValid}\n >\n {creating || updating ? \"Saving...\" : isEditing ? \"Save Changes\" : \"Create Prompt\"}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","import { useMutation, useQuery } from \"@apollo/client\";\nimport {\n CREATE_PROMPT,\n CREATE_PROMPT_FAVORITE,\n DELETE_PROMPT,\n DELETE_PROMPT_FAVORITE,\n GET_PROMPT_BY_ID,\n GET_PROMPTS,\n GET_USER_PROMPT_FAVORITES,\n INCREMENT_PROMPT_FAVORITES,\n INCREMENT_PROMPT_USAGE,\n UPDATE_PROMPT,\n} from \"@/queries/queries\";\nimport {\n CreatePromptInput,\n PromptFavorite,\n PromptLibrary,\n UpdatePromptInput,\n} from \"@/types/models/prompt-library\";\n\ninterface PromptsData {\n prompt_libraryPagination: {\n pageInfo: {\n pageCount: number;\n itemCount: number;\n currentPage: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n };\n items: PromptLibrary[];\n };\n}\n\ninterface PromptData {\n prompt_library_itemById: PromptLibrary;\n}\n\ninterface PromptFavoritesData {\n prompt_favoritesPagination: {\n items: PromptFavorite[];\n };\n}\n\n/**\n * Hook to fetch paginated prompts with filtering and sorting\n */\nexport const usePrompts = (variables?: {\n page?: number;\n limit?: number;\n filters?: any[];\n sort?: { field: string; direction: \"ASC\" | \"DESC\" };\n}) => {\n return useQuery<PromptsData>(GET_PROMPTS, {\n variables: {\n page: variables?.page ?? 1,\n limit: variables?.limit ?? 20,\n filters: variables?.filters ?? [],\n sort: variables?.sort ?? { field: \"updatedAt\", direction: \"DESC\" },\n },\n });\n};\n\n/**\n * Hook to fetch a single prompt by ID\n */\nexport const usePrompt = (id: string) => {\n return useQuery<PromptData>(GET_PROMPT_BY_ID, {\n variables: { id },\n skip: !id,\n });\n};\n\n/**\n * Hook to create a new prompt\n */\nexport const useCreatePrompt = () => {\n return useMutation<{ prompt_libraryCreateOne: { item: PromptLibrary } }>(\n CREATE_PROMPT,\n {\n refetchQueries: [{ query: GET_PROMPTS, variables: { page: 1, limit: 20 } }],\n }\n );\n};\n\n/**\n * Hook to update an existing prompt\n */\nexport const useUpdatePrompt = () => {\n return useMutation<{ prompt_libraryUpdateOneById: { item: PromptLibrary } }>(\n UPDATE_PROMPT\n );\n};\n\n/**\n * Hook to delete a prompt\n */\nexport const useDeletePrompt = () => {\n return useMutation<{ prompt_libraryRemoveOneById: { id: string } }>(\n DELETE_PROMPT,\n {\n refetchQueries: [{ query: GET_PROMPTS, variables: { page: 1, limit: 20 } }],\n }\n );\n};\n\n/**\n * Hook to increment prompt usage count\n */\nexport const useIncrementPromptUsage = () => {\n return useMutation<{\n prompt_libraryUpdateOneById: { item: Pick<PromptLibrary, \"id\" | \"usage_count\"> };\n }>(INCREMENT_PROMPT_USAGE);\n};\n\n/**\n * Hook to fetch user's favorited prompts\n */\nexport const useUserPromptFavorites = (userId: number) => {\n return useQuery<PromptFavoritesData>(GET_USER_PROMPT_FAVORITES, {\n variables: { user_id: userId },\n skip: !userId,\n });\n};\n\n/**\n * Hook to create a prompt favorite\n */\nexport const useCreatePromptFavorite = () => {\n return useMutation<{ prompt_favoritesCreateOne: { item: PromptFavorite } }>(\n CREATE_PROMPT_FAVORITE\n );\n};\n\n/**\n * Hook to delete a prompt favorite\n */\nexport const useDeletePromptFavorite = () => {\n return useMutation<{ prompt_favoritesRemoveOneById: { id: string } }>(\n DELETE_PROMPT_FAVORITE\n );\n};\n\n/**\n * Hook to toggle favorite status of a prompt\n * Handles both creating and deleting favorites, and updating the favorite count\n */\nexport const useTogglePromptFavorite = () => {\n const [createFavorite] = useCreatePromptFavorite();\n const [deleteFavorite] = useDeletePromptFavorite();\n const [incrementFavorites] = useMutation(INCREMENT_PROMPT_FAVORITES);\n\n const toggleFavorite = async (\n promptId: string,\n userId: number,\n isFavorited: boolean,\n currentFavoriteCount: number,\n favoriteId?: string\n ) => {\n if (isFavorited && favoriteId) {\n // Remove favorite\n await deleteFavorite({ variables: { id: favoriteId } });\n await incrementFavorites({\n variables: {\n id: promptId,\n favorite_count: Math.max(0, currentFavoriteCount - 1),\n },\n });\n } else {\n // Add favorite\n await createFavorite({\n variables: { user_id: userId, prompt_id: promptId },\n });\n await incrementFavorites({\n variables: { id: promptId, favorite_count: currentFavoriteCount + 1 },\n });\n }\n };\n\n return { toggleFavorite };\n};\n","/**\n * Extracts all variable names from a prompt template\n * Variables are in the format {{variable_name}}\n * Only alphanumeric characters and underscores are allowed in variable names\n *\n * @param content - The prompt content to extract variables from\n * @returns Array of unique variable names found in the content\n *\n * @example\n * extractVariables(\"Hello {{name}}, your issue {{issue_id}} is resolved\")\n * // Returns: [\"name\", \"issue_id\"]\n */\nexport function extractVariables(content: string): string[] {\n if (!content) return [];\n\n // Match {{variable_name}} where variable_name contains only alphanumeric and underscore\n const regex = /\\{\\{([a-zA-Z0-9_]+)\\}\\}/g;\n const matches = content.matchAll(regex);\n const variables = new Set<string>();\n\n for (const match of Array.from(matches)) {\n variables.add(match[1]);\n }\n\n return Array.from(variables).sort();\n}\n"],"names":["PromptCard","param","agentsData","creatorData","prompt","user","onUpdate","isEditModalOpen","setIsEditModalOpen","useState","isFavoriting","setIsFavoriting","deletePrompt","useDeletePrompt","toggleFavorite","useTogglePromptFavorite","hasWriteAccess","checkPromptWriteAccess","isPrivate","rights_mode","isPublic","byUsers","byRoles","isAdmin","super_admin","isCreator","created_by","id","toString","writeAccess","userAccess","RBAC","users","find","u","rights","roleAccess","roles","r","role","variables","extractVariables","content","isFavorited","is_favorited","data","useQuery","GET_AGENTS_BY_IDS","ids","assigned_agents","skip","length","assignedAgentNames","agentByIds","map","agent","name","GET_USER_BY_ID","creatorName","userById","handleDelete","confirm","toast","success","error","console","handleToggleFavorite","favorite_count","undefined","icon","duration","Promise","resolve","setTimeout","jsx_runtime","jsxs","Fragment","Card","className","jsx","CardHeader","div","h3","description","p","Button","variant","size","concat","onClick","disabled","ThumbsUp","DropdownMenu","modal","DropdownMenuTrigger","asChild","MoreVertical","DropdownMenuContent","align","DropdownMenuItem","navigator","clipboard","writeText","Copy","Edit","Trash2","CardContent","Badge","Bot","span","slice","index","CardFooter","title","Activity","usage_count","type","MessageSquare","User","Calendar","formatDistanceToNow","Date","createdAt","addSuffix","Clock","updatedAt","PromptEditorModal","open","onOpenChange","onSuccess","defaultAssignedAgents","isEditing","createPrompt","loading","creating","useCreatePrompt","updatePrompt","updating","useUpdatePrompt","setName","setDescription","setContent","rightsMode","setRightsMode","rbacUsers","setRbacUsers","rbacRoles","setRbacRoles","rbacOpen","setRbacOpen","assignedAgents","setAssignedAgents","agentSelectorOpen","setAgentSelectorOpen","GET_AGENTS","page","limit","agents","agentsPagination","items","isValid","invalidVariables","validatePromptVariables","matches","matchAll","match","Array","from","variableName","validPattern","test","push","useEffect","resetForm","handleSubmit","trim","join","input","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","Label","htmlFor","Input","placeholder","value","onChange","e","target","Textarea","rows","Lightbulb","code","variable","Popover","PopoverTrigger","aria-expanded","ChevronsUpDown","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandItem","onSelect","prev","includes","filter","Check","cn","a","agentId","button","X","Collapsible","CollapsibleTrigger","CollapsibleContent","RBACControl","initialRightsMode","initialUsers","initialRoles","modalMode","mode","DialogFooter","usePrompts","GET_PROMPTS","filters","sort","field","direction","useMutation","CREATE_PROMPT","refetchQueries","query","UPDATE_PROMPT","DELETE_PROMPT","useIncrementPromptUsage","INCREMENT_PROMPT_USAGE","useCreatePromptFavorite","CREATE_PROMPT_FAVORITE","useDeletePromptFavorite","DELETE_PROMPT_FAVORITE","createFavorite","deleteFavorite","incrementFavorites","INCREMENT_PROMPT_FAVORITES","promptId","userId","currentFavoriteCount","favoriteId","Math","max","user_id","prompt_id","Set","add"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6373],{62869:function(n,t,e){e.d(t,{d:function(){return s},z:function(){return d}});var r=e(57437),i=e(37053),u=e(90535),o=e(2265),a=e(94508);let s=(0,u.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"size-10"}},defaultVariants:{variant:"default",size:"default"}}),d=o.forwardRef((n,t)=>{let{className:e,variant:u,size:o,asChild:d=!1,...c}=n,l=d?i.g7:"button";return(0,r.jsx)(l,{className:(0,a.cn)(s({variant:u,size:o,className:e})),ref:t,...c})});d.displayName="Button"},94508:function(n,t,e){e.d(t,{L:function(){return o},cn:function(){return u}});var r=e(61994),i=e(53335);function u(){for(var n=arguments.length,t=Array(n),e=0;e<n;e++)t[e]=arguments[e];return(0,i.m6)((0,r.W)(t))}function o(n){if(!n)return"0s";let t=Math.floor(n/3600),e=Math.floor(n%3600/60),r=Math.round(n%60);return t>0?"".concat(t,"h ").concat(e,"m"):e>0?"".concat(e,"m ").concat(r,"s"):"".concat(r,"s")}},27689:function(n,t,e){e.d(t,{$6:function(){return en},$W:function(){return eR},A1:function(){return ty},Ak:function(){return e$},Au:function(){return es},Az:function(){return tH},B4:function(){return eJ},BK:function(){return t2},B_:function(){return t4},C3:function(){return tS},CN:function(){return ec},Dt:function(){return tT},E3:function(){return tM},Ep:function(){return eV},Eq:function(){return tv},GJ:function(){return tm},Hk:function(){return eo},Iv:function(){return eZ},JL:function(){return tq},JM:function(){return tz},Jq:function(){return ex},L5:function(){return t6},Ll:function(){return eY},MU:function(){return tB},Md:function(){return to},Mh:function(){return eh},Mp:function(){return t5},N:function(){return tD},Nl:function(){return e3},Nu:function(){return eT},OP:function(){return eW},P3:function(){return tp},Pe:function(){return tw},QW:function(){return eF},Qf:function(){return tY},RV:function(){return eA},S9:function(){return tZ},Tj:function(){return er},Tp:function(){return tJ},Ts:function(){return eD},UK:function(){return e0},Ul:function(){return tF},W6:function(){return ee},W9:function(){return tO},Wc:function(){return ta},Wr:function(){return eG},X0:function(){return eK},YH:function(){return el},Yr:function(){return eP},ZA:function(){return ed},ZX:function(){return tG},Zy:function(){return t8},_J:function(){return t7},as:function(){return tk},b2:function(){return ey},bI:function(){return tb},c2:function(){return t1},ci:function(){return tX},d5:function(){return ep},dc:function(){return t_},eY:function(){return tL},fA:function(){return eM},fB:function(){return tN},fG:function(){return tK},fM:function(){return em},fV:function(){return tg},fc:function(){return eN},fo:function(){return tj},hx:function(){return eC},i9:function(){return eO},iA:function(){return eq},iC:function(){return eE},j9:function(){return ea},jA:function(){return eH},jL:function(){return eg},jm:function(){return eb},k9:function(){return ew},kH:function(){return tQ},kZ:function(){return ei},kk:function(){return et},kp:function(){return e_},l1:function(){return tR},lU:function(){return t9},lW:function(){return eB},lk:function(){return tU},m8:function(){return e9},mN:function(){return tC},oo:function(){return eU},ps:function(){return tI},qK:function(){return tW},r1:function(){return th},rR:function(){return tE},re:function(){return eX},s5:function(){return ek},s7:function(){return t0},tK:function(){return eu},tO:function(){return tP},ty:function(){return tA},ui:function(){return tV},uw:function(){return t$},vP:function(){return ej},ve:function(){return tx},xR:function(){return t3},xx:function(){return ez},ym:function(){return tf}});var r=e(45008),i=e(70080);function u(){let n=(0,r._)(['\n query GetAgents(\n $page: Int!\n $limit: Int!\n $filters: [FilterAgent]\n $sort: SortBy = { field: "updatedAt", direction: DESC }\n ) {\n agentsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ',"\n }\n }\n }\n"]);return u=function(){return n},n}function o(){let n=(0,r._)(['\n query GetAgentSessions(\n $page: Int!\n $limit: Int!\n $filters: [FilterAgent_session]\n $sort: SortBy = { field: "updatedAt", direction: DESC }\n ) {\n agent_sessionsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n createdAt\n updatedAt\n user\n title\n agent\n project\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n id\n }\n }\n }\n']);return o=function(){return n},n}function a(){let n=(0,r._)(["\n query GetContexts {\n contexts {\n items {\n ","\n }\n }\n }\n"]);return a=function(){return n},n}function s(){let n=(0,r._)(["\n query GetContextById($id: ID!) {\n contextById(id: $id) {\n ","\n }\n }\n"]);return s=function(){return n},n}function d(){let n=(0,r._)(["\n query ","Pagination($page: Int!, $limit: Int!, $filters: [Filter",'_items], $sort: SortBy = { field: "updatedAt", direction: DESC }) {\n ',"","(page: $page, limit: $limit, filters: $filters, sort: $sort) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ","\n }\n }\n }\n "]);return d=function(){return n},n}function c(){let n=(0,r._)(["\n mutation ProcessItemField","($item: ID!, $field: ","_itemsProcessorFieldEnum!) {\n ","_itemsProcessItemField(item: $item, field: $field) {\n message\n result\n job\n }\n }\n "]);return c=function(){return n},n}function l(){let n=(0,r._)(["\n query ","ById($id: ID!) {\n ","_itemsById(id: $id) {\n ","\n ","\n }\n }\n "]);return l=function(){return n},n}function f(){let n=(0,r._)(["\n mutation CreateOne","($input: ","_itemsInput!) {\n ","_itemsCreateOne(input: $input) {\n item {\n id\n }\n job\n }\n }\n "]);return f=function(){return n},n}function m(){let n=(0,r._)(["\n mutation DeleteChunks","($where: [Filter","_items]) {\n ","_itemsDeleteChunks(where: $where) {\n items\n jobs\n }\n }\n "]);return m=function(){return n},n}function $(){let n=(0,r._)(["\n mutation GenerateChunks","($where: [Filter","_items]) {\n ","_itemsGenerateChunks(where: $where) {\n items\n jobs\n }\n }\n "]);return $=function(){return n},n}function g(){let n=(0,r._)(["\n mutation ExecuteSource","($source: ID!, $inputs: JSON!) {\n ","_itemsExecuteSource(source: $source, inputs: $inputs) {\n message\n jobs\n items\n }\n }\n "]);return g=function(){return n},n}function p(){let n=(0,r._)(["\n mutation UpdateOneById","($id: ID!, $input: ","_itemsInput!) {\n ","_itemsUpdateOneById(id: $id, input: $input) {\n item {\n id\n }\n job\n }\n }\n "]);return p=function(){return n},n}function _(){let n=(0,r._)(["\n mutation DeleteOneById","($id: ID!) {\n ","_itemsRemoveOneById(id: $id) {\n id\n ","\n }\n }\n "]);return _=function(){return n},n}function y(){let n=(0,r._)(["\n mutation UpdateAgentSessionRbac(\n $id: ID!\n $RBAC: RBACInput\n $rights_mode: String\n ) {\n agent_sessionsUpdateOneById(id: $id, input: { rights_mode: $rights_mode, RBAC: $RBAC }) {\n item {\n id\n }\n }\n }\n"]);return y=function(){return n},n}function P(){let n=(0,r._)(["\n mutation UpdateAgentSessionProject(\n $id: ID!\n $project: String\n ) {\n agent_sessionsUpdateOneById(id: $id, input: {project: $project}) {\n item {\n id\n }\n }\n }\n"]);return P=function(){return n},n}function I(){let n=(0,r._)(["\n mutation UpdateAgentSessionTitle(\n $id: ID!\n $title: String\n ) {\n agent_sessionsUpdateOneById(id: $id, input: {title: $title}) {\n item {\n id\n title\n }\n }\n }\n"]);return I=function(){return n},n}function v(){let n=(0,r._)(['\n query GetAgentSessionMessages(\n $page: Int!\n $limit: Int!\n $filters: [FilterAgent_message]\n $sort: SortBy = { field: "createdAt", direction: ASC }\n ) {\n agent_messagesPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n session\n content\n createdAt\n }\n }\n }\n']);return v=function(){return n},n}function S(){let n=(0,r._)(['\n query GetJobResults(\n $page: Int!\n $limit: Int!\n $filters: [FilterJob_result]\n $sort: SortBy = {\n field: "createdAt",\n direction: DESC\n }\n ) {\n job_resultsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n items {\n job_id\n state\n error\n label\n result\n metadata\n createdAt\n updatedAt\n id\n }\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n }\n }\n']);return S=function(){return n},n}function A(){let n=(0,r._)(["\n query GetUserRoles($page: Int!, $limit: Int!) {\n rolesPagination(page: $page, limit: $limit) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n createdAt\n updatedAt\n agents\n workflows\n api\n variables\n users\n name\n }\n }\n }\n"]);return A=function(){return n},n}function C(){let n=(0,r._)(["\n query GetUsers(\n $page: Int!\n $limit: Int!\n $filters: [FilterUser]\n $sort: SortBy\n ) {\n usersPagination(page: $page, limit: $limit, filters: $filters, sort: $sort) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n name\n firstname\n lastname\n email\n last_used\n createdAt\n type\n apikey\n emailVerified\n anthropic_token\n super_admin\n role\n }\n }\n }\n"]);return C=function(){return n},n}function h(){let n=(0,r._)(["\n query GetUserRoleById($id: ID!) {\n roleById(id: $id) {\n id\n name\n agents\n workflows\n api\n variables\n users\n createdAt\n updatedAt\n }\n }\n"]);return h=function(){return n},n}function B(){let n=(0,r._)(["\n query GetJobResultById($id: ID!) {\n job_resultById(id: $id) {\n id\n job_id\n state\n error\n label\n result\n metadata\n createdAt\n updatedAt\n }\n }\n"]);return B=function(){return n},n}function b(){let n=(0,r._)(["\n query GetAgentById($id: ID!, $project: ID) {\n agentById(id: $id, project: $project) {\n ","\n }\n }\n"]);return b=function(){return n},n}function D(){let n=(0,r._)(["\n query GetAgentsByIds($ids: [ID!]!) {\n agentByIds(ids: $ids) {\n ","\n }\n }\n"]);return D=function(){return n},n}function q(){let n=(0,r._)(["\n query GetAgentSessionById($id: ID!) {\n agent_sessionById(id: $id) {\n createdAt\n updatedAt\n user\n title\n agent\n created_by\n rights_mode\n project\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n id\n }\n }\n"]);return q=function(){return n},n}function R(){let n=(0,r._)(["\n query GetAgentSession($filters: [FilterAgent_session]) {\n agent_sessionOne(filters: $filters) {\n createdAt\n project\n updatedAt\n user\n title\n agent\n id\n }\n }\n"]);return R=function(){return n},n}function j(){let n=(0,r._)(["\n mutation UpdateUser(\n $email: String,\n $firstname: String,\n $anthropic_token: String,\n $super_admin: Boolean,\n $lastname: String,\n $role: String,\n $favourite_agents: JSON,\n $id: ID!\n ) {\n usersUpdateOneById(id: $id, input: {\n email: $email,\n firstname: $firstname,\n anthropic_token: $anthropic_token,\n super_admin: $super_admin,\n lastname: $lastname,\n role: $role,\n favourite_agents: $favourite_agents\n }) {\n item {\n ","\n }\n }\n }\n"]);return j=function(){return n},n}function k(){let n=(0,r._)(["\n mutation CreateUser(\n $firstname: String,\n $type: String,\n $apikey: String,\n $email: String,\n $role: String\n ) {\n usersCreateOne(input: {\n firstname: $firstname,\n type: $type,\n apikey: $apikey,\n email: $email,\n role: $role\n }) {\n item {\n id\n }\n }\n }\n"]);return k=function(){return n},n}function O(){let n=(0,r._)(["\n mutation UpdateUserRole(\n $id: ID!\n $name: String\n $agents: String\n $workflows: String\n $api: String\n $variables: String\n $users: String\n ) {\n rolesUpdateOneById(\n id: $id\n input: {\n name: $name\n agents: $agents\n workflows: $workflows\n api: $api\n variables: $variables\n users: $users\n }\n ) {\n item {\n id\n createdAt\n agents\n api\n workflows\n variables\n users\n }\n }\n }\n"]);return O=function(){return n},n}function U(){let n=(0,r._)(["\n query GetUserByEmail($email: String!) {\n userOne(filters: {email: $email}) {\n ","\n }\n }\n"]);return U=function(){return n},n}function w(){let n=(0,r._)(["\n mutation createAgentSession(\n $title: String,\n $user: Float\n $agent: String\n $project: String\n $rights_mode: String\n $RBAC: RBACInput\n ) {\n agent_sessionsCreateOne(\n input: { agent: $agent, user: $user, project: $project, title: $title, rights_mode: $rights_mode, RBAC: $RBAC }\n ) {\n item {\n id\n }\n }\n }\n"]);return w=function(){return n},n}function x(){let n=(0,r._)(["\n mutation createAgent(\n $name: String!\n $description: String!\n $rights_mode: String!\n $backend: String!\n $image: String\n $RBAC: RBACInput\n ) {\n agentsCreateOne(\n input: {\n name: $name\n description: $description\n rights_mode: $rights_mode\n backend: $backend\n image: $image\n RBAC: $RBAC\n }\n ) {\n item {\n id\n name\n description\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n createdAt\n }\n }\n }\n"]);return x=function(){return n},n}function G(){let n=(0,r._)(["\n query GetTools($search: String, $category: String, $limit: Int, $page: Int) {\n tools(search: $search, category: $category, limit: $limit, page: $page) {\n items {\n id\n name\n category\n description\n config\n type\n }\n total\n page\n limit\n }\n }\n"]);return G=function(){return n},n}function N(){let n=(0,r._)(["\n query GetToolCategories {\n toolCategories\n }\n"]);return N=function(){return n},n}function E(){let n=(0,r._)(["\n mutation UpdateAgent(\n $id: ID!\n $name: String\n $backend: String\n $description: String\n $instructions: String\n $rights_mode: String\n $animation_idle: String\n $animation_responding: String\n $category: String\n $tools: JSON\n $active: Boolean\n $providerapikey: String\n $RBAC: RBACInput\n ) {\n agentsUpdateOneById(\n input: { \n name: $name\n backend: $backend\n description: $description\n category: $category\n instructions: $instructions\n animation_idle: $animation_idle\n animation_responding: $animation_responding\n rights_mode: $rights_mode\n active: $active\n tools: $tools\n providerapikey: $providerapikey\n RBAC: $RBAC\n }\n id: $id\n ) {\n item {\n id\n name\n description\n instructions\n category\n animation_idle\n animation_responding\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n }\n }\n }\n"]);return E=function(){return n},n}function F(){let n=(0,r._)(["\n mutation CreateUserRole($name: String!, $agents: String, $workflows: String, $variables: String, $users: String, $api: String) {\n rolesCreateOne(input: { name: $name, agents: $agents, workflows: $workflows, variables: $variables, users: $users, api: $api}) {\n item {\n id\n createdAt\n agents\n api\n workflows\n variables\n users\n name\n }\n }\n }\n"]);return F=function(){return n},n}function J(){let n=(0,r._)(["\n mutation CreateUser($email: String!, $password: String, $type: String, $emailVerified: String) {\n usersCreateOne(input: { email: $email, password: $password, type: $type, emailVerified: $emailVerified }) {\n item {\n id\n createdAt\n emailVerified\n type\n name\n }\n }\n }\n"]);return J=function(){return n},n}function T(){let n=(0,r._)(["\n mutation ResetUserPassword($id: ID!, $password: String!) {\n usersUpdateOneById(id: $id, input: { password: $password }) {\n item {\n id\n }\n }\n }\n"]);return T=function(){return n},n}function Q(){let n=(0,r._)(["\n query GetProviders {\n providers {\n items {\n id\n name\n description\n provider\n modelName\n providerName\n }\n }\n }\n"]);return Q=function(){return n},n}function W(){let n=(0,r._)(["\n mutation RemoveUserById($id: ID!) {\n usersRemoveOneById(id: $id) {\n id\n }\n }\n"]);return W=function(){return n},n}function V(){let n=(0,r._)(["\n mutation RemoveJobResultById($id: ID!) {\n job_resultsRemoveOneById(id: $id) {\n id\n }\n }\n"]);return V=function(){return n},n}function M(){let n=(0,r._)(["\n mutation RemoveUserRoleById($id: ID!) {\n rolesRemoveOneById(id: $id) {\n id\n }\n }\n"]);return M=function(){return n},n}function L(){let n=(0,r._)(["\n mutation RemoveAgentById($id: ID!) {\n agentsRemoveOneById(id: $id) {\n id\n }\n }\n"]);return L=function(){return n},n}function z(){let n=(0,r._)(["\n mutation RemoveAgentSessionById($id: ID!) {\n agent_sessionsRemoveOneById(id: $id) {\n id\n }\n }\n"]);return z=function(){return n},n}function K(){let n=(0,r._)(["\n query GetJobStatistics($user: Float, $agent: String, $from: String, $to: String) {\n jobStatistics(user: $user, agent: $agent, from: $from, to: $to) {\n completedCount\n failedCount\n averageDuration\n }\n }\n"]);return K=function(){return n},n}function Z(){let n=(0,r._)(['\n query GetVariables(\n $page: Int!\n $limit: Int!\n $filters: [FilterVariable]\n $sort: SortBy = { field: "updatedAt", direction: DESC }\n ) {\n variablesPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n }\n']);return Z=function(){return n},n}function H(){let n=(0,r._)(["\n query GetVariableById($id: ID!) {\n variableById(id: $id) {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n"]);return H=function(){return n},n}function Y(){let n=(0,r._)(["\n mutation CreateVariable(\n $name: String!\n $value: String!\n $encrypted: Boolean\n ) {\n variablesCreateOne(\n input: {\n name: $name\n value: $value\n encrypted: $encrypted\n }\n ) {\n item {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n }\n"]);return Y=function(){return n},n}function X(){let n=(0,r._)(["\n mutation CreateEmbedderConfig($name: String!, $value: String, $context: String!, $embedder: String!) {\n embedder_settingsCreateOne(input: { name: $name, value: $value, context: $context, embedder: $embedder }) {\n item {\n id\n name\n value\n context\n embedder\n }\n }\n }\n"]);return X=function(){return n},n}function nn(){let n=(0,r._)(["\n query GetEmbedderConfigs($context: String, $embedder: String) {\n embedder_settingsPagination(page: 1, limit: 100, filters: {\n context: {\n eq: $context\n },\n embedder: {\n eq: $embedder\n }\n }) {\n items {\n id\n name\n value\n createdAt\n updatedAt\n }\n }\n }\n"]);return nn=function(){return n},n}function nt(){let n=(0,r._)(["\n mutation UpdateEmbedderConfig($id: ID!, $name: String, $value: String) {\n embedder_settingsUpdateOneById(id: $id, input: { name: $name, value: $value }) {\n item {\n id\n }\n }\n }\n"]);return nt=function(){return n},n}function ne(){let n=(0,r._)(["\n mutation UpdateVariable(\n $id: ID!\n $name: String\n $value: String\n $encrypted: Boolean\n ) {\n variablesUpdateOneById(\n id: $id\n input: {\n name: $name\n value: $value\n encrypted: $encrypted\n }\n ) {\n item {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n }\n"]);return ne=function(){return n},n}function nr(){let n=(0,r._)(["\n mutation RemoveVariableById($id: ID!) {\n variablesRemoveOneById(id: $id) {\n id\n }\n }\n"]);return nr=function(){return n},n}function ni(){let n=(0,r._)(["\n query GetUserById($id: ID!) {\n userById(id: $id) {\n id\n name\n firstname\n lastname\n email\n }\n }\n"]);return ni=function(){return n},n}function nu(){let n=(0,r._)(["\n query GetUsersByIds($ids: [ID!]!) {\n userByIds(ids: $ids) {\n id\n name\n firstname\n lastname\n email\n }\n }\n"]);return nu=function(){return n},n}function no(){let n=(0,r._)(['\n query GetWorkflowTemplates(\n $page: Int!\n $limit: Int!\n $filters: [FilterWorkflow_template]\n $sort: SortBy = { field: "updatedAt", direction: DESC }\n ) {\n workflow_templatesPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n name\n description\n owner\n rights_mode\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n }\n }\n }\n']);return no=function(){return n},n}function na(){let n=(0,r._)(["\n query GetWorkflowTemplateById($id: ID!) {\n workflow_templateById(id: $id) {\n id\n name\n description\n owner\n rights_mode\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n }\n }\n"]);return na=function(){return n},n}function ns(){let n=(0,r._)(["\n mutation CreateWorkflowTemplate(\n $name: String!\n $description: String\n $owner: Float!\n $rights_mode: String!\n $RBAC: RBACInput\n $variables: JSON\n $steps_json: JSON!\n $example_metadata_json: JSON\n ) {\n workflow_templatesCreateOne(\n input: {\n name: $name\n description: $description\n owner: $owner\n rights_mode: $rights_mode\n RBAC: $RBAC\n variables: $variables\n steps_json: $steps_json\n example_metadata_json: $example_metadata_json\n }\n ) {\n id\n name\n description\n owner\n rights_mode\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n }\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n }\n }\n"]);return ns=function(){return n},n}function nd(){let n=(0,r._)(["\n mutation UpdateWorkflowTemplate(\n $id: ID!\n $name: String\n $description: String\n $rights_mode: String\n $RBAC: RBACInput\n $variables: JSON\n $steps_json: JSON\n $example_metadata_json: JSON\n ) {\n workflow_templatesUpdateOneById(\n id: $id\n input: {\n name: $name\n description: $description\n rights_mode: $rights_mode\n RBAC: $RBAC\n variables: $variables\n steps_json: $steps_json\n example_metadata_json: $example_metadata_json\n }\n ) {\n id\n name\n description\n owner\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n }\n }\n"]);return nd=function(){return n},n}function nc(){let n=(0,r._)(["\n mutation RemoveWorkflowTemplateById($id: ID!) {\n workflow_templatesRemoveOneById(id: $id) {\n id\n }\n }\n"]);return nc=function(){return n},n}function nl(){let n=(0,r._)(["\n query GetJobStatisticsEnhanced($user: Float, $agent: String, $from: String, $to: String) {\n jobStatistics(user: $user, agent: $agent, from: $from, to: $to) {\n runningCount\n erroredCount\n completedCount\n failedCount\n averageDuration\n }\n }\n"]);return nl=function(){return n},n}function nf(){let n=(0,r._)(["\n query AgentSessionsStatistics($from: Date!, $to: Date!) {\n agent_sessionsStatistics(filters: {\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n"]);return nf=function(){return n},n}function nm(){let n=(0,r._)(['\n query WorkflowRunsStatistics($from: Date!, $to: Date!) {\n jobsStatistics(filters: {\n type: { eq: "workflow" }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n']);return nm=function(){return n},n}function n$(){let n=(0,r._)(['\n query EmbeddingJobsStatistics($from: Date!, $to: Date!) {\n jobsStatistics(filters: {\n type: { eq: "embedder" }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n']);return n$=function(){return n},n}function ng(){let n=(0,r._)(["\n query FunctionCallsStatistics($from: Date!, $to: Date!) {\n trackingStatistics(filters: {\n type: { eq: TOOL_CALL }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n"]);return ng=function(){return n},n}function np(){let n=(0,r._)([' \n query AgentCallsStatistics($from: Date!, $to: Date!) {\n trackingStatistics(filters: {\n type: { eq: AGENT_RUN }\n name: { eq: "count" }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n']);return np=function(){return n},n}function n_(){let n=(0,r._)([' \n query AgentCallsStatistics($from: Date!, $to: Date!) {\n trackingStatistics(filters: {\n name: { in: ["inputTokens", "outputTokens"] }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n']);return n_=function(){return n},n}function ny(){let n=(0,r._)(['\n query TimeSeriesStatistics($type: typeEnum!, $from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: "createdAt"\n filters: {\n type: { eq: $type }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n name: { in: $names }\n }\n ) {\n group\n count\n }\n }\n']);return ny=function(){return n},n}function nP(){let n=(0,r._)(['\nquery UserStatistics($from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: "user"\n filters: {\n type: { eq: AGENT_RUN }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n name: { in: $names }\n }\n ) {\n group\n count\n }\n}\n']);return nP=function(){return n},n}function nI(){let n=(0,r._)(['\nquery ProjectStatistics($from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: "project"\n filters: {\n type: { eq: AGENT_RUN }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n name: { in: $names }\n }\n ) {\n group\n count\n }\n}\n']);return nI=function(){return n},n}function nv(){let n=(0,r._)(['\nquery AgentStatistics($from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: "label"\n filters: {\n type: { eq: AGENT_RUN }\n name: { in: $names }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }\n ) {\n group\n count\n }\n}\n']);return nv=function(){return n},n}function nS(){let n=(0,r._)(["\n query GetUserNameById($id: ID!) {\n userById(id: $id) {\n name\n }\n }\n"]);return nS=function(){return n},n}function nA(){let n=(0,r._)(["\n query GetProjectNameById($id: ID!) {\n projectById(id: $id) {\n name\n }\n }\n"]);return nA=function(){return n},n}function nC(){let n=(0,r._)(["\n query DonutStatistics($type: typeEnum!, $groupBy: String!, $from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: $groupBy\n filters: {\n type: { eq: $type }\n name: { in: $names }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }\n ) {\n group\n count\n }\n }\n"]);return nC=function(){return n},n}function nh(){let n=(0,r._)(['\n query GetProjects(\n $page: Int!\n $limit: Int!\n $filters: [FilterProject]\n $sort: SortBy = { field: "updatedAt", direction: DESC }\n ) {\n projectsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ',"\n }\n }\n }\n"]);return nh=function(){return n},n}function nB(){let n=(0,r._)(["\n query GetProjectsByIds($ids: [ID!]!) {\n projectByIds(ids: $ids) {\n ","\n }\n }\n"]);return nB=function(){return n},n}function nb(){let n=(0,r._)(["\n query GetProjectById($id: ID!) {\n projectById(id: $id) {\n ","\n }\n }\n"]);return nb=function(){return n},n}function nD(){let n=(0,r._)(["\n mutation UpdateUserFavouriteProjects($id: ID!, $favourite_projects: JSON) {\n userUpdateById(input: { favourite_projects: $favourite_projects }, filter: { id: $id }) {\n item {\n id\n favourite_projects\n }\n }\n }\n"]);return nD=function(){return n},n}function nq(){let n=(0,r._)(["\n mutation CreateProject($input: projectInput!) {\n projectsCreateOne(input: $input) {\n item {\n ","\n }\n }\n }\n"]);return nq=function(){return n},n}function nR(){let n=(0,r._)(["\n mutation UpdateProject($id: ID!, $input: projectInput!) {\n projectsUpdateOneById(id: $id, input: $input) {\n item {\n ","\n }\n }\n }\n"]);return nR=function(){return n},n}function nj(){let n=(0,r._)(["\n mutation DeleteProject($id: ID!) {\n projectsRemoveOneById(id: $id) {\n id\n name\n }\n }\n"]);return nj=function(){return n},n}function nk(){let n=(0,r._)(["\n query GetTestCases(\n $page: Int!\n $limit: Int!\n $filters: [FilterTest_case]\n ) {\n test_casesPagination(page: $page, limit: $limit, filters: $filters) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ","\n }\n }\n }\n"]);return nk=function(){return n},n}function nO(){let n=(0,r._)(["\n query GetTestCaseById($id: ID!) {\n test_caseById(id: $id) {\n ","\n }\n }\n"]);return nO=function(){return n},n}function nU(){let n=(0,r._)(["\n mutation CreateTestCase($data: test_caseInput!) {\n test_casesCreateOne(input: $data) {\n item {\n ","\n }\n }\n }\n"]);return nU=function(){return n},n}function nw(){let n=(0,r._)(["\n mutation UpdateTestCase($id: ID!, $data: test_caseInput!) {\n test_casesUpdateOneById(id: $id, input: $data) {\n item {\n ","\n }\n }\n }\n"]);return nw=function(){return n},n}function nx(){let n=(0,r._)(["\n mutation DeleteTestCase($id: ID!) {\n test_casesRemoveOneById(id: $id) {\n id\n name\n }\n }\n"]);return nx=function(){return n},n}function nG(){let n=(0,r._)(["\n query GetEvalSets(\n $page: Int!\n $limit: Int!\n $filters: [FilterEval_set]\n ) {\n eval_setsPagination(page: $page, limit: $limit, filters: $filters) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ","\n }\n }\n }\n"]);return nG=function(){return n},n}function nN(){let n=(0,r._)(["\n query GetEvals {\n evals {\n items {\n ","\n }\n }\n }\n"]);return nN=function(){return n},n}function nE(){let n=(0,r._)(["\n query GetEvalSetById($id: ID!) {\n eval_setById(id: $id) {\n ","\n }\n }\n"]);return nE=function(){return n},n}function nF(){let n=(0,r._)(["\n mutation CreateEvalSet($data: eval_setInput!) {\n eval_setsCreateOne(input: $data) {\n item {\n ","\n }\n }\n }\n"]);return nF=function(){return n},n}function nJ(){let n=(0,r._)(["\n mutation UpdateEvalSet($id: ID!, $data: eval_setInput!) {\n eval_setsUpdateOneById(id: $id, input: $data) {\n item {\n ","\n }\n }\n }\n"]);return nJ=function(){return n},n}function nT(){let n=(0,r._)(["\n mutation DeleteEvalSet($id: ID!) {\n eval_setsRemoveOneById(id: $id) {\n id\n name\n }\n }\n"]);return nT=function(){return n},n}function nQ(){let n=(0,r._)(["\n query GetEvalRuns(\n $page: Int!\n $limit: Int!\n $filters: [FilterEval_run]\n ) {\n eval_runsPagination(page: $page, limit: $limit, filters: $filters) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ","\n }\n }\n }\n"]);return nQ=function(){return n},n}function nW(){let n=(0,r._)(["\n query GetEvalRunById($id: ID!) {\n eval_runById(id: $id) {\n ","\n }\n }\n"]);return nW=function(){return n},n}function nV(){let n=(0,r._)(["\n mutation CreateEvalRun($data: eval_runInput!) {\n eval_runsCreateOne(input: $data) {\n item {\n ","\n }\n }\n }\n"]);return nV=function(){return n},n}function nM(){let n=(0,r._)(["\n query GetQueue($queue: QueueEnum!) {\n queue(queue: $queue) {\n name\n concurrency\n ratelimit\n isMaxed\n isPaused\n jobs {\n paused\n completed\n failed\n waiting\n active\n delayed\n }\n }\n }\n"]);return nM=function(){return n},n}function nL(){let n=(0,r._)(["\n query GetJobs($queue: QueueEnum!, $statusses: [JobStateEnum!], $page: Int, $limit: Int) {\n jobs(queue: $queue, statusses: $statusses, page: $page, limit: $limit) {\n items {\n name\n id\n returnvalue\n stacktrace\n failedReason\n state\n data\n timestamp\n }\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n }\n }\n"]);return nL=function(){return n},n}function nz(){let n=(0,r._)(["\n mutation DeleteJob($queue: QueueEnum!, $id: String!) {\n deleteJob(queue: $queue, id: $id) {\n success\n }\n }\n"]);return nz=function(){return n},n}function nK(){let n=(0,r._)(["\n mutation PauseQueue($queue: QueueEnum!) {\n pauseQueue(queue: $queue) {\n success\n }\n }\n"]);return nK=function(){return n},n}function nZ(){let n=(0,r._)(["\n mutation ResumeQueue($queue: QueueEnum!) {\n resumeQueue(queue: $queue) {\n success\n }\n }\n"]);return nZ=function(){return n},n}function nH(){let n=(0,r._)(["\n mutation DrainQueue($queue: QueueEnum!) {\n drainQueue(queue: $queue) {\n success\n }\n }\n"]);return nH=function(){return n},n}function nY(){let n=(0,r._)(["\n mutation RunEval($id: ID!) {\n runEval(id: $id) {\n jobs\n count\n }\n }\n"]);return nY=function(){return n},n}function nX(){let n=(0,r._)(["\n mutation UpdateEvalRun($id: ID!, $data: eval_runInput!) {\n eval_runsUpdateOneById(id: $id, input: $data) {\n item {\n ","\n }\n }\n }\n"]);return nX=function(){return n},n}function n0(){let n=(0,r._)(["\n mutation DeleteEvalRun($id: ID!) {\n eval_runsRemoveOneById(id: $id) {\n id\n }\n }\n"]);return n0=function(){return n},n}function n1(){let n=(0,r._)(["\n query GetPlatformConfigurations {\n platform_configurationsPagination {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ","\n }\n }\n }\n"]);return n1=function(){return n},n}function n3(){let n=(0,r._)(["\n query GetPlatformConfigurationByKey($config_key: FilterOperatorString!) {\n platform_configurationsPagination(page: 1, limit: 1, filters: { config_key: $config_key }) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ","\n }\n }\n }\n"]);return n3=function(){return n},n}function n9(){let n=(0,r._)(["\n mutation CreatePlatformConfiguration($data: platform_configurationInput!) {\n platform_configurationsCreateOne(input: $data) {\n item {\n ","\n }\n }\n }\n"]);return n9=function(){return n},n}function n5(){let n=(0,r._)(["\n mutation UpdatePlatformConfiguration($id: ID!, $data: platform_configurationInput!) {\n platform_configurationsUpdateOneById(id: $id, input: $data) {\n item {\n ","\n }\n }\n }\n"]);return n5=function(){return n},n}function n6(){let n=(0,r._)(["\n mutation DeletePlatformConfiguration($id: ID!) {\n platform_configurationsRemoveOneById(id: $id) {\n id\n }\n }\n"]);return n6=function(){return n},n}function n2(){let n=(0,r._)(['\n query GetPrompts(\n $page: Int!\n $limit: Int!\n $filters: [FilterPrompt_library_item]\n $sort: SortBy = { field: "updatedAt", direction: DESC }\n ) {\n prompt_libraryPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ',"\n }\n }\n }\n"]);return n2=function(){return n},n}function n8(){let n=(0,r._)(["\n query GetPromptById($id: ID!) {\n prompt_library_itemById(id: $id) {\n ","\n }\n }\n"]);return n8=function(){return n},n}function n4(){let n=(0,r._)(["\n mutation CreatePrompt(\n $name: String!\n $description: String\n $content: String!\n $tags: JSON\n $rights_mode: String!\n $RBAC: RBACInput\n $assigned_agents: JSON\n ) {\n prompt_libraryCreateOne(\n input: {\n name: $name\n description: $description\n content: $content\n tags: $tags\n rights_mode: $rights_mode\n RBAC: $RBAC\n assigned_agents: $assigned_agents\n }\n ) {\n item {\n ","\n }\n }\n }\n"]);return n4=function(){return n},n}function n7(){let n=(0,r._)(["\n mutation UpdatePrompt(\n $id: ID!\n $name: String\n $description: String\n $content: String\n $tags: JSON\n $rights_mode: String\n $RBAC: RBACInput\n $assigned_agents: JSON\n ) {\n prompt_libraryUpdateOneById(\n id: $id\n input: {\n name: $name\n description: $description\n content: $content\n tags: $tags\n rights_mode: $rights_mode\n RBAC: $RBAC\n assigned_agents: $assigned_agents\n }\n ) {\n item {\n ","\n }\n }\n }\n"]);return n7=function(){return n},n}function tn(){let n=(0,r._)(["\n mutation DeletePrompt($id: ID!) {\n prompt_libraryRemoveOneById(id: $id) {\n id\n }\n }\n"]);return tn=function(){return n},n}function tt(){let n=(0,r._)(["\n mutation IncrementPromptUsage($id: ID!, $usage_count: Float!) {\n prompt_libraryUpdateOneById(\n id: $id\n input: { usage_count: $usage_count }\n ) {\n item {\n id\n usage_count\n }\n }\n }\n"]);return tt=function(){return n},n}function te(){let n=(0,r._)(["\n mutation IncrementPromptFavorites($id: ID!, $favorite_count: Float!) {\n prompt_libraryUpdateOneById(\n id: $id\n input: { favorite_count: $favorite_count }\n ) {\n item {\n id\n favorite_count\n }\n }\n }\n"]);return te=function(){return n},n}function tr(){let n=(0,r._)(["\n query GetUserPromptFavorites($user_id: Float!) {\n prompt_favoritesPagination(\n filters: [{ user_id: { eq: $user_id } }]\n ) {\n items {\n ","\n }\n }\n }\n"]);return tr=function(){return n},n}function ti(){let n=(0,r._)(["\n mutation CreatePromptFavorite($user_id: Float!, $prompt_id: String!) {\n prompt_favoritesCreateOne(\n input: { user_id: $user_id, prompt_id: $prompt_id }\n ) {\n item {\n ","\n }\n }\n }\n"]);return ti=function(){return n},n}function tu(){let n=(0,r._)(["\n mutation DeletePromptFavorite($id: ID!) {\n prompt_favoritesRemoveOneById(id: $id) {\n id\n }\n }\n"]);return tu=function(){return n},n}let to="_itemsPagination",ta="_itemsCreateOne",ts="\n id\n name\n description\n embedder {\n name\n id\n queue\n config {\n name\n description\n default\n }\n }\n slug\n active\n fields\n configuration\n sources {\n id\n name\n description\n config {\n params {\n name\n description\n default\n }\n schedule\n queue\n retries\n backoff {\n type\n delay\n }\n }\n }\n",td=n=>"\nid\nname\ndescription\ntags\nexternal_id\ncreatedAt\nembeddings_updated_at\nupdatedAt\nrights_mode\nRBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n}\n".concat(n.join("\n"),"\n"),tc="\nid\nfirstname\nlastname\nemail\nsuper_admin\napikey\nanthropic_token\ntype\nrole\nfavourite_agents\n",tl="\nid\nname\nproviderapikey\ninstructions\ndescription\nactive\nimage\nanimation_idle\nanimation_responding\ntools\nproviderName\nmodelName\nmaxContextLength\nprovider\nauthenticationInformation\nslug\ncategory\nrateLimit {\n name\n rate_limit {\n time\n limit\n }\n}\nstreaming\ncapabilities {\n text\n images\n files\n audio\n video\n}\nbackend\nrights_mode\nRBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n}\ncreatedAt\nupdatedAt\n",tf=(0,i.Ps)(u(),tl),tm=(0,i.Ps)(o()),t$=(0,i.Ps)(a(),ts),tg=(0,i.Ps)(s(),ts),tp=(n,t)=>{let e=n.charAt(0).toUpperCase()+n.slice(1);return(0,i.Ps)(d(),n,e,n,to,td(t))},t_=n=>(0,i.Ps)(c(),n,n,n),ty=function(n,t){let e=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return(0,i.Ps)(l(),n,n,td(t),e?"chunks { fts_rank hybrid_score content source chunk_index chunk_id chunk_created_at chunk_updated_at embedding_size }":"")},tP=n=>(0,i.Ps)(f(),n,n,n),tI=n=>{let t=n.charAt(0).toUpperCase()+n.slice(1);return(0,i.Ps)(m(),n,t,n)},tv=n=>{let t=n.charAt(0).toUpperCase()+n.slice(1);return(0,i.Ps)($(),n,t,n)},tS=n=>(0,i.Ps)(g(),n,n),tA=n=>(0,i.Ps)(p(),n,n,n),tC=(n,t)=>(0,i.Ps)(_(),n,n,t.join("\n")),th=(0,i.Ps)(y()),tB=(0,i.Ps)(P()),tb=(0,i.Ps)(I()),tD=(0,i.Ps)(v()),tq=(0,i.Ps)(S()),tR=(0,i.Ps)(A()),tj=(0,i.Ps)(C());(0,i.Ps)(h()),(0,i.Ps)(B());let tk=(0,i.Ps)(b(),tl),tO=(0,i.Ps)(D(),tl),tU=(0,i.Ps)(q());(0,i.Ps)(R());let tw=(0,i.Ps)(j(),tc),tx=(0,i.Ps)(k()),tG=(0,i.Ps)(O());(0,i.Ps)(U(),tc);let tN=(0,i.Ps)(w()),tE=(0,i.Ps)(x()),tF=(0,i.Ps)(G()),tJ=(0,i.Ps)(N()),tT=(0,i.Ps)(E()),tQ=(0,i.Ps)(F()),tW=(0,i.Ps)(J()),tV=(0,i.Ps)(T()),tM=(0,i.Ps)(Q()),tL=(0,i.Ps)(W());(0,i.Ps)(V());let tz=(0,i.Ps)(M()),tK=(0,i.Ps)(L()),tZ=(0,i.Ps)(z());(0,i.Ps)(K());let tH=(0,i.Ps)(Z()),tY=(0,i.Ps)(H()),tX=(0,i.Ps)(Y()),t0=(0,i.Ps)(X()),t1=(0,i.Ps)(nn()),t3=(0,i.Ps)(nt()),t9=(0,i.Ps)(ne()),t5=(0,i.Ps)(nr()),t6=(0,i.Ps)(ni()),t2=(0,i.Ps)(nu()),t8=(0,i.Ps)(no());(0,i.Ps)(na());let t4=(0,i.Ps)(ns()),t7=(0,i.Ps)(nd()),en=(0,i.Ps)(nc()),et=(0,i.Ps)(nl()),ee=(0,i.Ps)(nf()),er=(0,i.Ps)(nm());(0,i.Ps)(n$());let ei=(0,i.Ps)(ng()),eu=(0,i.Ps)(np()),eo=(0,i.Ps)(n_()),ea=(0,i.Ps)(ny()),es=(0,i.Ps)(nP()),ed=(0,i.Ps)(nI()),ec=(0,i.Ps)(nv());(0,i.Ps)(nS()),(0,i.Ps)(nA());let el=(0,i.Ps)(nC()),ef="\n id\n name\n description\n image\n custom_instructions\n rights_mode\n created_by\n createdAt\n updatedAt\n project_items\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n",em=(0,i.Ps)(nh(),ef),e$=(0,i.Ps)(nB(),ef),eg=(0,i.Ps)(nb(),ef),ep=(0,i.Ps)(nD()),e_=(0,i.Ps)(nq(),ef),ey=(0,i.Ps)(nR(),ef),eP=(0,i.Ps)(nj()),eI="\n id\n name\n description\n inputs\n expected_output\n expected_tools\n expected_knowledge_sources\n expected_agent_tools\n eval_set_id\n createdAt\n updatedAt\n",ev="\n id\n name\n description\n createdAt\n updatedAt\n",eS="\n id\n name\n eval_set_id\n agent_id\n eval_functions\n config\n scoring_method\n pass_threshold\n test_case_ids\n createdAt\n updatedAt\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n",eA=(0,i.Ps)(nk(),eI);(0,i.Ps)(nO(),eI);let eC=(0,i.Ps)(nU(),eI),eh=(0,i.Ps)(nw(),eI),eB=(0,i.Ps)(nx()),eb=(0,i.Ps)(nG(),ev),eD=(0,i.Ps)(nN(),"\n id\n name\n description\n config {\n name\n description\n }\n llm\n"),eq=(0,i.Ps)(nE(),ev),eR=(0,i.Ps)(nF(),ev),ej=(0,i.Ps)(nJ(),ev),ek=(0,i.Ps)(nT()),eO=(0,i.Ps)(nQ(),eS);(0,i.Ps)(nW(),eS);let eU=(0,i.Ps)(nV(),eS),ew=(0,i.Ps)(nM()),ex=(0,i.Ps)(nL()),eG=(0,i.Ps)(nz()),eN=(0,i.Ps)(nK()),eE=(0,i.Ps)(nZ()),eF=(0,i.Ps)(nH()),eJ=(0,i.Ps)(nY()),eT=(0,i.Ps)(nX(),eS);(0,i.Ps)(n0());let eQ="\n id\n config_key\n config_value\n description\n createdAt\n updatedAt\n",eW=(0,i.Ps)(n1(),eQ);(0,i.Ps)(n3(),eQ);let eV=(0,i.Ps)(n9(),eQ),eM=(0,i.Ps)(n5(),eQ);(0,i.Ps)(n6());let eL="\n id\n name\n description\n content\n tags\n usage_count\n favorite_count\n assigned_agents\n rights_mode\n created_by\n createdAt\n updatedAt\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n",ez=(0,i.Ps)(n2(),eL),eK=(0,i.Ps)(n8(),eL),eZ=(0,i.Ps)(n4(),eL),eH=(0,i.Ps)(n7(),eL),eY=(0,i.Ps)(tn()),eX=(0,i.Ps)(tt()),e0=(0,i.Ps)(te()),e1="\n id\n user_id\n prompt_id\n createdAt\n";(0,i.Ps)(tr(),e1);let e3=(0,i.Ps)(ti(),e1),e9=(0,i.Ps)(tu())}}]);
2
+ //# sourceMappingURL=6373-601400fab8a3bb55.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/chunks/6373-601400fab8a3bb55.js","mappings":"oNAMA,IAAMA,EAAiBC,CAAAA,EAAAA,EAAAA,CAAAA,EACrB,yRACA,CACEC,SAAU,CACRC,QAAS,CACPC,QAAS,yDACTC,YACE,qEACFC,QACE,iFACFC,UACE,+DACFC,MAAO,+CACPC,KAAM,iDACR,EACAC,KAAM,CACJN,QAAS,iBACTO,GAAI,sBACJC,GAAI,uBACJC,KAAM,SACR,CACF,EACAC,gBAAiB,CACfX,QAAS,UACTO,KAAM,SACR,CACF,GASIK,EAASC,EAAAA,UAAgB,CAC7B,CAAAC,EAA0DC,QAAzD,CAAEC,UAAAA,CAAS,CAAEhB,QAAAA,CAAO,CAAEO,KAAAA,CAAI,CAAEU,QAAAA,EAAU,EAAK,CAAE,GAAGC,EAAO,CAAAJ,EAChDK,EAAOF,EAAUG,EAAAA,EAAIA,CAAG,SAC9B,MACE,GAAAC,EAAAC,GAAA,EAACH,EAAAA,CACCH,UAAWO,CAAAA,EAAAA,EAAAA,EAAAA,EAAG1B,EAAe,CAAEG,QAAAA,EAASO,KAAAA,EAAMS,UAAAA,CAAU,IACxDD,IAAKA,EACJ,GAAGG,CAAK,EAGf,EAEFN,CAAAA,EAAOY,WAAW,CAAG,kHClDd,SAASD,IAAG,QAAAE,EAAAC,UAAAC,MAAA,CAAAC,EAAA,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAGD,CAAAA,CAAHC,EAAA,CAAAH,SAAA,CAAAG,EAAuB,CACxC,MAAOC,CAAAA,EAAAA,EAAAA,EAAAA,EAAQC,CAAAA,EAAAA,EAAAA,CAAAA,EAAKH,GACtB,CAEO,SAASI,EAAeC,CAAe,EAC5C,GAAI,CAACA,EAAS,MAAO,KAErB,IAAMC,EAAQC,KAAKC,KAAK,CAACH,EAAU,MAC7BI,EAAUF,KAAKC,KAAK,CAACH,EAAW,KAAQ,IACxCK,EAAmBH,KAAKI,KAAK,CAACN,EAAU,WAE9C,EAAY,EACH,GAAaI,MAAAA,CAAVH,EAAM,MAAYM,MAAA,CAARH,EAAQ,KACnBA,EAAU,EACZ,GAAeC,MAAAA,CAAZD,EAAQ,MAAqBG,MAAA,CAAjBF,EAAiB,KAEhC,GAAoBE,MAAA,CAAjBF,EAAiB,IAE/B,mwzCCnBO,IAAMG,GAAqB,mBACrBC,GAAqB,kBAE5BC,GAAkB,ogBAgDlBC,GAAc,GAAsB,oMAqBtBJ,MAAA,CAAlBK,EAAOC,IAAI,CAAC,MAAM,MAGdC,GAAe,yGAafC,GAAgB,8gBAkDTC,GAAaC,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IAqBnBF,IAMGG,GAAqBD,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KA6CxBE,GAAeF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IAIrBP,IAMGU,GAAoBH,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IAG5BP,IAKKW,GAAY,CAACC,EAAiBV,KACzC,IAAMW,EAAmBD,EAAQE,MAAM,CAAC,GAAGC,WAAW,GAAKH,EAAQI,KAAK,CAAC,GACzE,MAAOT,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IACAK,EAAiEC,EACrED,EAAUd,GASNG,GAAYC,GAKxB,EAEae,GAAqB,GACzBV,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IACmBK,EAA+BA,EACtDA,GASKM,GAAiB,SAACN,CAAAA,CAAiBV,CAAAA,MAAkBiB,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,EAAAA,SAAAA,CAAAA,EAAAA,CAChE,MAAOZ,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IACAK,EACJA,EACEX,GAAYC,GACZiB,EAAS,wHAA0H,GAI7I,EAEaC,GAAc,GAClBb,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IACYK,EAAmBA,EACnCA,GAUKS,GAAgB,IAC3B,IAAMR,EAAmBD,EAAQE,MAAM,CAAC,GAAGC,WAAW,GAAKH,EAAQI,KAAK,CAAC,GACzE,MAAOT,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IACeK,EAA0BC,EAC7CD,EAMR,EAGaU,GAAkB,IAC7B,IAAMT,EAAmBD,EAAQE,MAAM,CAAC,GAAGC,WAAW,GAAKH,EAAQI,KAAK,CAAC,GACzE,MAAOT,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IACiBK,EAA0BC,EAC/CD,EAMR,EAEaW,GAAiB,GACrBhB,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IACgBK,EACpBA,GASKY,GAAc,GAClBjB,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IACgBK,EAA6BA,EACjDA,GAUKa,GAAc,CAACb,EAAiBV,IACpCK,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IACgBK,EACpBA,EAEEV,EAAOC,IAAI,CAAC,OAMTuB,GAA4BnB,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAc/BoB,GAA+BpB,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAalCqB,GAA6BrB,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAchCsB,GAAqBtB,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KA8BxBuB,GAAkBvB,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAqCrBwB,GAAiBxB,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAwBpByB,GAAYzB,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAiCOA,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAeFA,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAehC,IAAM0B,GAAkB1B,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IAG1BF,IAIK6B,GAAoB3B,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IAG5BF,IAIK8B,GAA0B5B,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KA0BTA,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAc7B,IAAM6B,GAAoB7B,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IAqBtBH,IAKDiC,GAAkB9B,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAqBrB+B,GAAyB/B,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAiCRA,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,IAGtBH,IAKP,IAAMmC,GAAuBhC,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAkB1BiC,GAAejC,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAyClBkC,GAAYlC,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAkBfmC,GAAsBnC,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAMzBoC,GAAqBpC,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAyDxBqC,GAAmBrC,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAiBtBsC,GAActC,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAcjBuC,GAAsBvC,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAUzBwC,GAAgBxC,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAenByC,GAAoBzC,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAOGA,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAOnC,IAAM0C,GAAyB1C,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAO5B2C,GAAqB3C,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAOxB4C,GAA6B5C,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAQXA,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAU9B,IAAM6C,GAAgB7C,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAgCnB8C,GAAqB9C,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAaxB+C,GAAkB/C,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAyBrBgD,GAAyBhD,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAc5BiD,GAAuBjD,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAqB1BkD,GAAyBlD,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAU5BmD,GAAkBnD,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MA2BrBoD,GAAwBpD,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAQ3BqD,GAAiBrD,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAYpBsD,GAAmBtD,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAYtBuD,GAAyBvD,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MA+CEA,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAiBvC,IAAMwD,GAA2BxD,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAqD9ByD,GAA2BzD,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAgD9B0D,GAAiC1D,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAQpC2D,GAA8B3D,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAejC4D,GAAgC5D,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAWnC6D,GAA+B7D,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAYFA,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAYzC,IAAM8D,GAAgC9D,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAYnC+D,GAA2B/D,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAa9BgE,GAA6BhE,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAchCiE,GAA6BjE,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAgBhCkE,GAAsBlE,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAgBzBmE,GAAyBnE,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAgB5BoE,GAAuBpE,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAgBJA,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAQAA,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MASlC,IAAMqE,GAAuBrE,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAgBjCsE,GAAkB,2PAwBXC,GAAevE,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAqBrBsE,IAMGE,GAAsBxE,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAG9BsE,IAKKG,GAAoBzE,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAG5BsE,IAKKI,GAAiC1E,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAWpC2E,GAAiB3E,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAIvBsE,IAMGM,GAAiB5E,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAIvBsE,IAMGO,GAAiB7E,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAa3B8E,GAAoB,gLAcpBC,GAAmB,4DAQnBC,GAAmB,yRA2BZC,GAAiBjF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAevB8E,IAMyB9E,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAG9B8E,IAKD,IAAMI,GAAmBlF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAIzB8E,IAMGK,GAAmBnF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAIzB8E,IAMGM,GAAmBpF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAUtBqF,GAAgBrF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAetB+E,IAiBGO,GAAqBtF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAXhB,sFAqBRuF,GAAqBvF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAG7B+E,IAKKS,GAAkBxF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAIxB+E,IAMGU,GAAkBzF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAIxB+E,IAMGW,GAAkB1F,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAUrB2F,GAAgB3F,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAetBgF,IAMwBhF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAG7BgF,IAKD,IAAMY,GAAkB5F,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAIxBgF,IAMGa,GAAY7F,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAoBf8F,GAAW9F,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAwBd+F,GAAa/F,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAQhBgG,GAAchG,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAQjBiG,GAAejG,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAQlBkG,GAAclG,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAQjBmG,GAAWnG,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MASdoG,GAAkBpG,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAIxBgF,IAMqBhF,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAQlC,IAAMqG,GAAiC,kFAS1BC,GAA8BtG,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAWpCqG,IAMuCrG,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAW1CqG,IAMH,IAAME,GAAgCvG,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAItCqG,IAMGG,GAAgCxG,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAItCqG,IAMmCrG,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAYhD,IAAMyG,GAAyB,iRA0BlBC,GAAc1G,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAqBpByG,IAMGE,GAAmB3G,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAG3ByG,IAKKG,GAAgB5G,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAsBtByG,IAMGI,GAAgB7G,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAwBtByG,IAMGK,GAAgB9G,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAQnB+G,GAAyB/G,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAc5BgH,GAA6BhH,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,MAevCiH,GAA0B,gDAOSjH,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAMlCiH,IAMH,IAAMC,GAAyBlH,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA,KAM/BiH,IAMGE,GAAyBnH,CAAAA,EAAAA,EAAAA,EAAAA,EAAGA","sources":["webpack://_N_E/./components/ui/button.tsx","webpack://_N_E/./lib/utils.ts","webpack://_N_E/./queries/queries.ts"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function formatDuration(seconds: number): string {\n if (!seconds) return '0s';\n \n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const remainingSeconds = Math.round(seconds % 60);\n\n if (hours > 0) {\n return `${hours}h ${minutes}m`;\n } else if (minutes > 0) {\n return `${minutes}m ${remainingSeconds}s`;\n } else {\n return `${remainingSeconds}s`;\n }\n}","import { gql } from \"@apollo/client\";\n\nexport const PAGINATION_POSTFIX = \"_itemsPagination\";\nexport const CREATE_ONE_POSTFIX = \"_itemsCreateOne\";\n\nconst CONTEXT_FIELDS = `\n id\n name\n description\n embedder {\n name\n id\n queue\n config {\n name\n description\n default\n }\n }\n slug\n active\n fields\n configuration\n sources {\n id\n name\n description\n config {\n params {\n name\n description\n default\n }\n schedule\n queue\n retries\n backoff {\n type\n delay\n }\n }\n }\n`;\n\n\n/* \nRemoved\n projects {\n id\n rights\n }\n From RBAC below\n*/\nconst ITEM_FIELDS = (fields: string[]) => `\nid\nname\ndescription\ntags\nexternal_id\ncreatedAt\nembeddings_updated_at\nupdatedAt\nrights_mode\nRBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n}\n${fields.join(\"\\n\")}\n`;\n\nconst USER_FIELDS = `\nid\nfirstname\nlastname\nemail\nsuper_admin\napikey\nanthropic_token\ntype\nrole\nfavourite_agents\n`;\n\nconst AGENT_FIELDS = `\nid\nname\nproviderapikey\ninstructions\ndescription\nactive\nimage\nanimation_idle\nanimation_responding\ntools\nproviderName\nmodelName\nmaxContextLength\nprovider\nauthenticationInformation\nslug\ncategory\nrateLimit {\n name\n rate_limit {\n time\n limit\n }\n}\nstreaming\ncapabilities {\n text\n images\n files\n audio\n video\n}\nbackend\nrights_mode\nRBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n}\ncreatedAt\nupdatedAt\n`;\n\nexport const GET_AGENTS = gql`\n query GetAgents(\n $page: Int!\n $limit: Int!\n $filters: [FilterAgent]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n agentsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${AGENT_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_AGENT_SESSIONS = gql`\n query GetAgentSessions(\n $page: Int!\n $limit: Int!\n $filters: [FilterAgent_session]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n agent_sessionsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n createdAt\n updatedAt\n user\n title\n agent\n project\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n id\n }\n }\n }\n`;\n\nexport const GET_CONTEXTS = gql`\n query GetContexts {\n contexts {\n items {\n ${CONTEXT_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_CONTEXT_BY_ID = gql`\n query GetContextById($id: ID!) {\n contextById(id: $id) {\n ${CONTEXT_FIELDS}\n }\n }\n`;\n\nexport const GET_ITEMS = (context: string, fields: string[]) => {\n const upperCaseContext = context.charAt(0).toUpperCase() + context.slice(1)\n return gql`\n query ${context}Pagination($page: Int!, $limit: Int!, $filters: [Filter${upperCaseContext}_items], $sort: SortBy = { field: \"updatedAt\", direction: DESC }) {\n ${context}${PAGINATION_POSTFIX}(page: $page, limit: $limit, filters: $filters, sort: $sort) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${ITEM_FIELDS(fields)}\n }\n }\n }\n `;\n};\n\nexport const PROCESS_ITEM_FIELD = (context: string) => {\n return gql`\n mutation ProcessItemField${context}($item: ID!, $field: ${context}_itemsProcessorFieldEnum!) {\n ${context}_itemsProcessItemField(item: $item, field: $field) {\n message\n result\n job\n }\n }\n `;\n};\n\nexport const GET_ITEM_BY_ID = (context: string, fields: string[], chunks: boolean = false) => {\n return gql`\n query ${context}ById($id: ID!) {\n ${context}_itemsById(id: $id) {\n ${ITEM_FIELDS(fields)}\n ${chunks ? \"chunks { fts_rank hybrid_score content source chunk_index chunk_id chunk_created_at chunk_updated_at embedding_size }\" : \"\"}\n }\n }\n `;\n};\n\nexport const CREATE_ITEM = (context: string) => {\n return gql`\n mutation CreateOne${context}($input: ${context}_itemsInput!) {\n ${context}_itemsCreateOne(input: $input) {\n item {\n id\n }\n job\n }\n }\n `;\n};\n\nexport const DELETE_CHUNKS = (context: string) => {\n const upperCaseContext = context.charAt(0).toUpperCase() + context.slice(1)\n return gql`\n mutation DeleteChunks${context}($where: [Filter${upperCaseContext}_items]) {\n ${context}_itemsDeleteChunks(where: $where) {\n items\n jobs\n }\n }\n `;\n};\n\n\nexport const GENERATE_CHUNKS = (context: string) => {\n const upperCaseContext = context.charAt(0).toUpperCase() + context.slice(1)\n return gql`\n mutation GenerateChunks${context}($where: [Filter${upperCaseContext}_items]) {\n ${context}_itemsGenerateChunks(where: $where) {\n items\n jobs\n }\n }\n `;\n};\n\nexport const EXECUTE_SOURCE = (context: string) => {\n return gql`\n mutation ExecuteSource${context}($source: ID!, $inputs: JSON!) {\n ${context}_itemsExecuteSource(source: $source, inputs: $inputs) {\n message\n jobs\n items\n }\n }\n `;\n};\n\nexport const UPDATE_ITEM = (context: string) => {\n return gql`\n mutation UpdateOneById${context}($id: ID!, $input: ${context}_itemsInput!) {\n ${context}_itemsUpdateOneById(id: $id, input: $input) {\n item {\n id\n }\n job\n }\n }\n `;\n};\n\nexport const DELETE_ITEM = (context: string, fields: string[]) => {\n return gql`\n mutation DeleteOneById${context}($id: ID!) {\n ${context}_itemsRemoveOneById(id: $id) {\n id\n ${fields.join(\"\\n\")}\n }\n }\n `;\n};\n\nexport const UPDATE_AGENT_SESSION_RBAC = gql`\n mutation UpdateAgentSessionRbac(\n $id: ID!\n $RBAC: RBACInput\n $rights_mode: String\n ) {\n agent_sessionsUpdateOneById(id: $id, input: { rights_mode: $rights_mode, RBAC: $RBAC }) {\n item {\n id\n }\n }\n }\n`;\n\nexport const UPDATE_AGENT_SESSION_PROJECT = gql`\n mutation UpdateAgentSessionProject(\n $id: ID!\n $project: String\n ) {\n agent_sessionsUpdateOneById(id: $id, input: {project: $project}) {\n item {\n id\n }\n }\n }\n`;\n\nexport const UPDATE_AGENT_SESSION_TITLE = gql`\n mutation UpdateAgentSessionTitle(\n $id: ID!\n $title: String\n ) {\n agent_sessionsUpdateOneById(id: $id, input: {title: $title}) {\n item {\n id\n title\n }\n }\n }\n`;\n\nexport const GET_AGENT_MESSAGES = gql`\n query GetAgentSessionMessages(\n $page: Int!\n $limit: Int!\n $filters: [FilterAgent_message]\n $sort: SortBy = { field: \"createdAt\", direction: ASC }\n ) {\n agent_messagesPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n session\n content\n createdAt\n }\n }\n }\n`;\n\nexport const GET_JOB_RESULTS = gql`\n query GetJobResults(\n $page: Int!\n $limit: Int!\n $filters: [FilterJob_result]\n $sort: SortBy = {\n field: \"createdAt\",\n direction: DESC\n }\n ) {\n job_resultsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n items {\n job_id\n state\n error\n label\n result\n metadata\n createdAt\n updatedAt\n id\n }\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n }\n }\n`;\nexport const GET_USER_ROLES = gql`\n query GetUserRoles($page: Int!, $limit: Int!) {\n rolesPagination(page: $page, limit: $limit) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n createdAt\n updatedAt\n agents\n workflows\n api\n variables\n users\n name\n }\n }\n }\n`;\nexport const GET_USERS = gql`\n query GetUsers(\n $page: Int!\n $limit: Int!\n $filters: [FilterUser]\n $sort: SortBy\n ) {\n usersPagination(page: $page, limit: $limit, filters: $filters, sort: $sort) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n name\n firstname\n lastname\n email\n last_used\n createdAt\n type\n apikey\n emailVerified\n anthropic_token\n super_admin\n role\n }\n }\n }\n`;\nexport const GET_USER_ROLE_BY_ID = gql`\n query GetUserRoleById($id: ID!) {\n roleById(id: $id) {\n id\n name\n agents\n workflows\n api\n variables\n users\n createdAt\n updatedAt\n }\n }\n`;\nexport const GET_JOB_RESULT_BY_ID = gql`\n query GetJobResultById($id: ID!) {\n job_resultById(id: $id) {\n id\n job_id\n state\n error\n label\n result\n metadata\n createdAt\n updatedAt\n }\n }\n`;\nexport const GET_AGENT_BY_ID = gql`\n query GetAgentById($id: ID!, $project: ID) {\n agentById(id: $id, project: $project) {\n ${AGENT_FIELDS}\n }\n }\n`;\nexport const GET_AGENTS_BY_IDS = gql`\n query GetAgentsByIds($ids: [ID!]!) {\n agentByIds(ids: $ids) {\n ${AGENT_FIELDS}\n }\n }\n`;\nexport const GET_AGENT_SESSION_BY_ID = gql`\n query GetAgentSessionById($id: ID!) {\n agent_sessionById(id: $id) {\n createdAt\n updatedAt\n user\n title\n agent\n created_by\n rights_mode\n project\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n id\n }\n }\n`;\nexport const GET_AGENT_SESSION = gql`\n query GetAgentSession($filters: [FilterAgent_session]) {\n agent_sessionOne(filters: $filters) {\n createdAt\n project\n updatedAt\n user\n title\n agent\n id\n }\n }\n`;\n\nexport const UPDATE_USER_BY_ID = gql`\n mutation UpdateUser(\n $email: String,\n $firstname: String,\n $anthropic_token: String,\n $super_admin: Boolean,\n $lastname: String,\n $role: String,\n $favourite_agents: JSON,\n $id: ID!\n ) {\n usersUpdateOneById(id: $id, input: {\n email: $email,\n firstname: $firstname,\n anthropic_token: $anthropic_token,\n super_admin: $super_admin,\n lastname: $lastname,\n role: $role,\n favourite_agents: $favourite_agents\n }) {\n item {\n ${USER_FIELDS}\n }\n }\n }\n`;\nexport const CREATE_API_USER = gql`\n mutation CreateUser(\n $firstname: String,\n $type: String,\n $apikey: String,\n $email: String,\n $role: String\n ) {\n usersCreateOne(input: {\n firstname: $firstname,\n type: $type,\n apikey: $apikey,\n email: $email,\n role: $role\n }) {\n item {\n id\n }\n }\n }\n`;\nexport const UPDATE_USER_ROLE_BY_ID = gql`\n mutation UpdateUserRole(\n $id: ID!\n $name: String\n $agents: String\n $workflows: String\n $api: String\n $variables: String\n $users: String\n ) {\n rolesUpdateOneById(\n id: $id\n input: {\n name: $name\n agents: $agents\n workflows: $workflows\n api: $api\n variables: $variables\n users: $users\n }\n ) {\n item {\n id\n createdAt\n agents\n api\n workflows\n variables\n users\n }\n }\n }\n`;\nexport const GET_USER_BY_EMAIL = gql`\n query GetUserByEmail($email: String!) {\n userOne(filters: {email: $email}) {\n ${USER_FIELDS}\n }\n }\n`;\n\nexport const CREATE_AGENT_SESSION = gql`\n mutation createAgentSession(\n $title: String,\n $user: Float\n $agent: String\n $project: String\n $rights_mode: String\n $RBAC: RBACInput\n ) {\n agent_sessionsCreateOne(\n input: { agent: $agent, user: $user, project: $project, title: $title, rights_mode: $rights_mode, RBAC: $RBAC }\n ) {\n item {\n id\n }\n }\n }\n`;\nexport const CREATE_AGENT = gql`\n mutation createAgent(\n $name: String!\n $description: String!\n $rights_mode: String!\n $backend: String!\n $image: String\n $RBAC: RBACInput\n ) {\n agentsCreateOne(\n input: {\n name: $name\n description: $description\n rights_mode: $rights_mode\n backend: $backend\n image: $image\n RBAC: $RBAC\n }\n ) {\n item {\n id\n name\n description\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n createdAt\n }\n }\n }\n`;\n\nexport const GET_TOOLS = gql`\n query GetTools($search: String, $category: String, $limit: Int, $page: Int) {\n tools(search: $search, category: $category, limit: $limit, page: $page) {\n items {\n id\n name\n category\n description\n config\n type\n }\n total\n page\n limit\n }\n }\n`;\n\nexport const GET_TOOL_CATEGORIES = gql`\n query GetToolCategories {\n toolCategories\n }\n`;\n\nexport const UPDATE_AGENT_BY_ID = gql`\n mutation UpdateAgent(\n $id: ID!\n $name: String\n $backend: String\n $description: String\n $instructions: String\n $rights_mode: String\n $animation_idle: String\n $animation_responding: String\n $category: String\n $tools: JSON\n $active: Boolean\n $providerapikey: String\n $RBAC: RBACInput\n ) {\n agentsUpdateOneById(\n input: { \n name: $name\n backend: $backend\n description: $description\n category: $category\n instructions: $instructions\n animation_idle: $animation_idle\n animation_responding: $animation_responding\n rights_mode: $rights_mode\n active: $active\n tools: $tools\n providerapikey: $providerapikey\n RBAC: $RBAC\n }\n id: $id\n ) {\n item {\n id\n name\n description\n instructions\n category\n animation_idle\n animation_responding\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n }\n }\n }\n`;\nexport const CREATE_USER_ROLE = gql`\n mutation CreateUserRole($name: String!, $agents: String, $workflows: String, $variables: String, $users: String, $api: String) {\n rolesCreateOne(input: { name: $name, agents: $agents, workflows: $workflows, variables: $variables, users: $users, api: $api}) {\n item {\n id\n createdAt\n agents\n api\n workflows\n variables\n users\n name\n }\n }\n }\n`;\n\nexport const CREATE_USER = gql`\n mutation CreateUser($email: String!, $password: String, $type: String, $emailVerified: String) {\n usersCreateOne(input: { email: $email, password: $password, type: $type, emailVerified: $emailVerified }) {\n item {\n id\n createdAt\n emailVerified\n type\n name\n }\n }\n }\n`;\n\nexport const RESET_USER_PASSWORD = gql`\n mutation ResetUserPassword($id: ID!, $password: String!) {\n usersUpdateOneById(id: $id, input: { password: $password }) {\n item {\n id\n }\n }\n }\n`;\n\nexport const GET_PROVIDERS = gql`\n query GetProviders {\n providers {\n items {\n id\n name\n description\n provider\n modelName\n providerName\n }\n }\n }\n`;\n\nexport const REMOVE_USER_BY_ID = gql`\n mutation RemoveUserById($id: ID!) {\n usersRemoveOneById(id: $id) {\n id\n }\n }\n`;\nexport const REMOVE_JOB_RESULT_BY_ID = gql`\n mutation RemoveJobResultById($id: ID!) {\n job_resultsRemoveOneById(id: $id) {\n id\n }\n }\n`;\nexport const REMOVE_USER_ROLE_BY_ID = gql`\n mutation RemoveUserRoleById($id: ID!) {\n rolesRemoveOneById(id: $id) {\n id\n }\n }\n`;\nexport const REMOVE_AGENT_BY_ID = gql`\n mutation RemoveAgentById($id: ID!) {\n agentsRemoveOneById(id: $id) {\n id\n }\n }\n`;\nexport const REMOVE_AGENT_SESSION_BY_ID = gql`\n mutation RemoveAgentSessionById($id: ID!) {\n agent_sessionsRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\nexport const GET_JOB_STATISTICS = gql`\n query GetJobStatistics($user: Float, $agent: String, $from: String, $to: String) {\n jobStatistics(user: $user, agent: $agent, from: $from, to: $to) {\n completedCount\n failedCount\n averageDuration\n }\n }\n`;\n\nexport const GET_VARIABLES = gql`\n query GetVariables(\n $page: Int!\n $limit: Int!\n $filters: [FilterVariable]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n variablesPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const GET_VARIABLE_BY_ID = gql`\n query GetVariableById($id: ID!) {\n variableById(id: $id) {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const CREATE_VARIABLE = gql`\n mutation CreateVariable(\n $name: String!\n $value: String!\n $encrypted: Boolean\n ) {\n variablesCreateOne(\n input: {\n name: $name\n value: $value\n encrypted: $encrypted\n }\n ) {\n item {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const CREATE_EMBEDDER_CONFIG = gql`\n mutation CreateEmbedderConfig($name: String!, $value: String, $context: String!, $embedder: String!) {\n embedder_settingsCreateOne(input: { name: $name, value: $value, context: $context, embedder: $embedder }) {\n item {\n id\n name\n value\n context\n embedder\n }\n }\n }\n`;\n\nexport const GET_EMBEDDER_CONFIGS = gql`\n query GetEmbedderConfigs($context: String, $embedder: String) {\n embedder_settingsPagination(page: 1, limit: 100, filters: {\n context: {\n eq: $context\n },\n embedder: {\n eq: $embedder\n }\n }) {\n items {\n id\n name\n value\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const UPDATE_EMBEDDER_CONFIG = gql`\n mutation UpdateEmbedderConfig($id: ID!, $name: String, $value: String) {\n embedder_settingsUpdateOneById(id: $id, input: { name: $name, value: $value }) {\n item {\n id\n }\n }\n }\n`;\n\nexport const UPDATE_VARIABLE = gql`\n mutation UpdateVariable(\n $id: ID!\n $name: String\n $value: String\n $encrypted: Boolean\n ) {\n variablesUpdateOneById(\n id: $id\n input: {\n name: $name\n value: $value\n encrypted: $encrypted\n }\n ) {\n item {\n id\n name\n value\n encrypted\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const REMOVE_VARIABLE_BY_ID = gql`\n mutation RemoveVariableById($id: ID!) {\n variablesRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\nexport const GET_USER_BY_ID = gql`\n query GetUserById($id: ID!) {\n userById(id: $id) {\n id\n name\n firstname\n lastname\n email\n }\n }\n`;\n\nexport const GET_USERS_BY_IDS = gql`\n query GetUsersByIds($ids: [ID!]!) {\n userByIds(ids: $ids) {\n id\n name\n firstname\n lastname\n email\n }\n }\n`;\n\nexport const GET_WORKFLOW_TEMPLATES = gql`\n query GetWorkflowTemplates(\n $page: Int!\n $limit: Int!\n $filters: [FilterWorkflow_template]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n workflow_templatesPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n id\n name\n description\n owner\n rights_mode\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n }\n }\n }\n`;\n\nexport const GET_WORKFLOW_TEMPLATE_BY_ID = gql`\n query GetWorkflowTemplateById($id: ID!) {\n workflow_templateById(id: $id) {\n id\n name\n description\n owner\n rights_mode\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const CREATE_WORKFLOW_TEMPLATE = gql`\n mutation CreateWorkflowTemplate(\n $name: String!\n $description: String\n $owner: Float!\n $rights_mode: String!\n $RBAC: RBACInput\n $variables: JSON\n $steps_json: JSON!\n $example_metadata_json: JSON\n ) {\n workflow_templatesCreateOne(\n input: {\n name: $name\n description: $description\n owner: $owner\n rights_mode: $rights_mode\n RBAC: $RBAC\n variables: $variables\n steps_json: $steps_json\n example_metadata_json: $example_metadata_json\n }\n ) {\n id\n name\n description\n owner\n rights_mode\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n projects {\n id\n rights\n }\n }\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPDATE_WORKFLOW_TEMPLATE = gql`\n mutation UpdateWorkflowTemplate(\n $id: ID!\n $name: String\n $description: String\n $rights_mode: String\n $RBAC: RBACInput\n $variables: JSON\n $steps_json: JSON\n $example_metadata_json: JSON\n ) {\n workflow_templatesUpdateOneById(\n id: $id\n input: {\n name: $name\n description: $description\n rights_mode: $rights_mode\n RBAC: $RBAC\n variables: $variables\n steps_json: $steps_json\n example_metadata_json: $example_metadata_json\n }\n ) {\n id\n name\n description\n owner\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n variables\n steps_json\n example_metadata_json\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const REMOVE_WORKFLOW_TEMPLATE_BY_ID = gql`\n mutation RemoveWorkflowTemplateById($id: ID!) {\n workflow_templatesRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\nexport const GET_JOB_STATISTICS_ENHANCED = gql`\n query GetJobStatisticsEnhanced($user: Float, $agent: String, $from: String, $to: String) {\n jobStatistics(user: $user, agent: $agent, from: $from, to: $to) {\n runningCount\n erroredCount\n completedCount\n failedCount\n averageDuration\n }\n }\n`;\n\n// Analytics Dashboard Queries\n\n// Summary Cards Queries (24h vs 7-day average)\nexport const GET_AGENT_SESSIONS_STATISTICS = gql`\n query AgentSessionsStatistics($from: Date!, $to: Date!) {\n agent_sessionsStatistics(filters: {\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\nexport const GET_WORKFLOW_RUNS_STATISTICS = gql`\n query WorkflowRunsStatistics($from: Date!, $to: Date!) {\n jobsStatistics(filters: {\n type: { eq: \"workflow\" }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\nexport const GET_EMBEDDING_JOBS_STATISTICS = gql`\n query EmbeddingJobsStatistics($from: Date!, $to: Date!) {\n jobsStatistics(filters: {\n type: { eq: \"embedder\" }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\nexport const GET_FUNCTION_CALLS_STATISTICS = gql`\n query FunctionCallsStatistics($from: Date!, $to: Date!) {\n trackingStatistics(filters: {\n type: { eq: TOOL_CALL }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\nexport const GET_AGENT_RUN_STATISTICS = gql` \n query AgentCallsStatistics($from: Date!, $to: Date!) {\n trackingStatistics(filters: {\n type: { eq: AGENT_RUN }\n name: { eq: \"count\" }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\nexport const GET_TOKEN_USAGE_STATISTICS = gql` \n query AgentCallsStatistics($from: Date!, $to: Date!) {\n trackingStatistics(filters: {\n name: { in: [\"inputTokens\", \"outputTokens\"] }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }) {\n group\n count\n }\n }\n`;\n\n\n// Time Series Chart Query\nexport const GET_TIME_SERIES_STATISTICS = gql`\n query TimeSeriesStatistics($type: typeEnum!, $from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: \"createdAt\"\n filters: {\n type: { eq: $type }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n name: { in: $names }\n }\n ) {\n group\n count\n }\n }\n`;\n\nexport const GET_USER_STATISTICS = gql`\nquery UserStatistics($from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: \"user\"\n filters: {\n type: { eq: AGENT_RUN }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n name: { in: $names }\n }\n ) {\n group\n count\n }\n}\n`;\n\nexport const GET_PROJECT_STATISTICS = gql`\nquery ProjectStatistics($from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: \"project\"\n filters: {\n type: { eq: AGENT_RUN }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n name: { in: $names }\n }\n ) {\n group\n count\n }\n}\n`;\n\nexport const GET_AGENT_STATISTICS = gql`\nquery AgentStatistics($from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: \"label\"\n filters: {\n type: { eq: AGENT_RUN }\n name: { in: $names }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }\n ) {\n group\n count\n }\n}\n`;\n\nexport const GET_USER_NAME_BY_ID = gql`\n query GetUserNameById($id: ID!) {\n userById(id: $id) {\n name\n }\n }\n`;\n\nexport const GET_PROJECT_NAME_BY_ID = gql`\n query GetProjectNameById($id: ID!) {\n projectById(id: $id) {\n name\n }\n }\n`;\n\n// Donut Chart Query \nexport const GET_DONUT_STATISTICS = gql`\n query DonutStatistics($type: typeEnum!, $groupBy: String!, $from: Date!, $to: Date!, $names: [String!]) {\n trackingStatistics(\n groupBy: $groupBy\n filters: {\n type: { eq: $type }\n name: { in: $names }\n createdAt: { and: [{ gte: $from }, { lte: $to }] }\n }\n ) {\n group\n count\n }\n }\n`;\n\nconst PROJECT_FIELDS = `\n id\n name\n description\n image\n custom_instructions\n rights_mode\n created_by\n createdAt\n updatedAt\n project_items\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n`;\n\nexport const GET_PROJECTS = gql`\n query GetProjects(\n $page: Int!\n $limit: Int!\n $filters: [FilterProject]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n projectsPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${PROJECT_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_PROJECTS_BY_IDS = gql`\n query GetProjectsByIds($ids: [ID!]!) {\n projectByIds(ids: $ids) {\n ${PROJECT_FIELDS}\n }\n }\n`;\n\nexport const GET_PROJECT_BY_ID = gql`\n query GetProjectById($id: ID!) {\n projectById(id: $id) {\n ${PROJECT_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_USER_FAVOURITE_PROJECTS = gql`\n mutation UpdateUserFavouriteProjects($id: ID!, $favourite_projects: JSON) {\n userUpdateById(input: { favourite_projects: $favourite_projects }, filter: { id: $id }) {\n item {\n id\n favourite_projects\n }\n }\n }\n`;\n\nexport const CREATE_PROJECT = gql`\n mutation CreateProject($input: projectInput!) {\n projectsCreateOne(input: $input) {\n item {\n ${PROJECT_FIELDS}\n }\n }\n }\n`;\n\nexport const UPDATE_PROJECT = gql`\n mutation UpdateProject($id: ID!, $input: projectInput!) {\n projectsUpdateOneById(id: $id, input: $input) {\n item {\n ${PROJECT_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_PROJECT = gql`\n mutation DeleteProject($id: ID!) {\n projectsRemoveOneById(id: $id) {\n id\n name\n }\n }\n`;\n\n// ============================================\n// EVAL-RELATED QUERIES\n// ============================================\n\nconst TEST_CASE_FIELDS = `\n id\n name\n description\n inputs\n expected_output\n expected_tools\n expected_knowledge_sources\n expected_agent_tools\n eval_set_id\n createdAt\n updatedAt\n`;\n\nconst EVAL_SET_FIELDS = `\n id\n name\n description\n createdAt\n updatedAt\n`;\n\nconst EVAL_RUN_FIELDS = `\n id\n name\n eval_set_id\n agent_id\n eval_functions\n config\n scoring_method\n pass_threshold\n test_case_ids\n createdAt\n updatedAt\n rights_mode\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n`;\n\n// Test Cases\nexport const GET_TEST_CASES = gql`\n query GetTestCases(\n $page: Int!\n $limit: Int!\n $filters: [FilterTest_case]\n ) {\n test_casesPagination(page: $page, limit: $limit, filters: $filters) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${TEST_CASE_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_TEST_CASE_BY_ID = gql`\n query GetTestCaseById($id: ID!) {\n test_caseById(id: $id) {\n ${TEST_CASE_FIELDS}\n }\n }\n`;\n\nexport const CREATE_TEST_CASE = gql`\n mutation CreateTestCase($data: test_caseInput!) {\n test_casesCreateOne(input: $data) {\n item {\n ${TEST_CASE_FIELDS}\n }\n }\n }\n`;\n\nexport const UPDATE_TEST_CASE = gql`\n mutation UpdateTestCase($id: ID!, $data: test_caseInput!) {\n test_casesUpdateOneById(id: $id, input: $data) {\n item {\n ${TEST_CASE_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_TEST_CASE = gql`\n mutation DeleteTestCase($id: ID!) {\n test_casesRemoveOneById(id: $id) {\n id\n name\n }\n }\n`;\n\n// Eval Sets\nexport const GET_EVAL_SETS = gql`\n query GetEvalSets(\n $page: Int!\n $limit: Int!\n $filters: [FilterEval_set]\n ) {\n eval_setsPagination(page: $page, limit: $limit, filters: $filters) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${EVAL_SET_FIELDS}\n }\n }\n }\n`;\n\nconst EVAL_FIELDS = `\n id\n name\n description\n config {\n name\n description\n }\n llm\n`;\n\nexport const GET_EVAL_FUNCTIONS = gql`\n query GetEvals {\n evals {\n items {\n ${EVAL_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_EVAL_SET_BY_ID = gql`\n query GetEvalSetById($id: ID!) {\n eval_setById(id: $id) {\n ${EVAL_SET_FIELDS}\n }\n }\n`;\n\nexport const CREATE_EVAL_SET = gql`\n mutation CreateEvalSet($data: eval_setInput!) {\n eval_setsCreateOne(input: $data) {\n item {\n ${EVAL_SET_FIELDS}\n }\n }\n }\n`;\n\nexport const UPDATE_EVAL_SET = gql`\n mutation UpdateEvalSet($id: ID!, $data: eval_setInput!) {\n eval_setsUpdateOneById(id: $id, input: $data) {\n item {\n ${EVAL_SET_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_EVAL_SET = gql`\n mutation DeleteEvalSet($id: ID!) {\n eval_setsRemoveOneById(id: $id) {\n id\n name\n }\n }\n`;\n\n// Eval Runs\nexport const GET_EVAL_RUNS = gql`\n query GetEvalRuns(\n $page: Int!\n $limit: Int!\n $filters: [FilterEval_run]\n ) {\n eval_runsPagination(page: $page, limit: $limit, filters: $filters) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${EVAL_RUN_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_EVAL_RUN_BY_ID = gql`\n query GetEvalRunById($id: ID!) {\n eval_runById(id: $id) {\n ${EVAL_RUN_FIELDS}\n }\n }\n`;\n\nexport const CREATE_EVAL_RUN = gql`\n mutation CreateEvalRun($data: eval_runInput!) {\n eval_runsCreateOne(input: $data) {\n item {\n ${EVAL_RUN_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_QUEUE = gql`\n query GetQueue($queue: QueueEnum!) {\n queue(queue: $queue) {\n name\n concurrency\n ratelimit\n isMaxed\n isPaused\n jobs {\n paused\n completed\n failed\n waiting\n active\n delayed\n }\n }\n }\n`;\n\nexport const GET_JOBS = gql`\n query GetJobs($queue: QueueEnum!, $statusses: [JobStateEnum!], $page: Int, $limit: Int) {\n jobs(queue: $queue, statusses: $statusses, page: $page, limit: $limit) {\n items {\n name\n id\n returnvalue\n stacktrace\n failedReason\n state\n data\n timestamp\n }\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n }\n }\n`;\n\nexport const DELETE_JOB = gql`\n mutation DeleteJob($queue: QueueEnum!, $id: String!) {\n deleteJob(queue: $queue, id: $id) {\n success\n }\n }\n`;\n\nexport const PAUSE_QUEUE = gql`\n mutation PauseQueue($queue: QueueEnum!) {\n pauseQueue(queue: $queue) {\n success\n }\n }\n`;\n\nexport const RESUME_QUEUE = gql`\n mutation ResumeQueue($queue: QueueEnum!) {\n resumeQueue(queue: $queue) {\n success\n }\n }\n`;\n\nexport const DRAIN_QUEUE = gql`\n mutation DrainQueue($queue: QueueEnum!) {\n drainQueue(queue: $queue) {\n success\n }\n }\n`;\n\nexport const RUN_EVAL = gql`\n mutation RunEval($id: ID!) {\n runEval(id: $id) {\n jobs\n count\n }\n }\n`;\n\nexport const UPDATE_EVAL_RUN = gql`\n mutation UpdateEvalRun($id: ID!, $data: eval_runInput!) {\n eval_runsUpdateOneById(id: $id, input: $data) {\n item {\n ${EVAL_RUN_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_EVAL_RUN = gql`\n mutation DeleteEvalRun($id: ID!) {\n eval_runsRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\nconst PLATFORM_CONFIGURATION_FIELDS = `\n id\n config_key\n config_value\n description\n createdAt\n updatedAt\n`;\n\nexport const GET_PLATFORM_CONFIGURATIONS = gql`\n query GetPlatformConfigurations {\n platform_configurationsPagination {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${PLATFORM_CONFIGURATION_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_PLATFORM_CONFIGURATION_BY_KEY = gql`\n query GetPlatformConfigurationByKey($config_key: FilterOperatorString!) {\n platform_configurationsPagination(page: 1, limit: 1, filters: { config_key: $config_key }) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${PLATFORM_CONFIGURATION_FIELDS}\n }\n }\n }\n`;\n\nexport const CREATE_PLATFORM_CONFIGURATION = gql`\n mutation CreatePlatformConfiguration($data: platform_configurationInput!) {\n platform_configurationsCreateOne(input: $data) {\n item {\n ${PLATFORM_CONFIGURATION_FIELDS}\n }\n }\n }\n`;\n\nexport const UPDATE_PLATFORM_CONFIGURATION = gql`\n mutation UpdatePlatformConfiguration($id: ID!, $data: platform_configurationInput!) {\n platform_configurationsUpdateOneById(id: $id, input: $data) {\n item {\n ${PLATFORM_CONFIGURATION_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_PLATFORM_CONFIGURATION = gql`\n mutation DeletePlatformConfiguration($id: ID!) {\n platform_configurationsRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\n// ============================================\n// PROMPT LIBRARY QUERIES AND MUTATIONS\n// ============================================\n\nconst PROMPT_LIBRARY_FIELDS = `\n id\n name\n description\n content\n tags\n usage_count\n favorite_count\n assigned_agents\n rights_mode\n created_by\n createdAt\n updatedAt\n RBAC {\n type\n users {\n id\n rights\n }\n roles {\n id\n rights\n }\n }\n`;\n\nexport const GET_PROMPTS = gql`\n query GetPrompts(\n $page: Int!\n $limit: Int!\n $filters: [FilterPrompt_library_item]\n $sort: SortBy = { field: \"updatedAt\", direction: DESC }\n ) {\n prompt_libraryPagination(\n page: $page\n limit: $limit\n sort: $sort\n filters: $filters\n ) {\n pageInfo {\n pageCount\n itemCount\n currentPage\n hasPreviousPage\n hasNextPage\n }\n items {\n ${PROMPT_LIBRARY_FIELDS}\n }\n }\n }\n`;\n\nexport const GET_PROMPT_BY_ID = gql`\n query GetPromptById($id: ID!) {\n prompt_library_itemById(id: $id) {\n ${PROMPT_LIBRARY_FIELDS}\n }\n }\n`;\n\nexport const CREATE_PROMPT = gql`\n mutation CreatePrompt(\n $name: String!\n $description: String\n $content: String!\n $tags: JSON\n $rights_mode: String!\n $RBAC: RBACInput\n $assigned_agents: JSON\n ) {\n prompt_libraryCreateOne(\n input: {\n name: $name\n description: $description\n content: $content\n tags: $tags\n rights_mode: $rights_mode\n RBAC: $RBAC\n assigned_agents: $assigned_agents\n }\n ) {\n item {\n ${PROMPT_LIBRARY_FIELDS}\n }\n }\n }\n`;\n\nexport const UPDATE_PROMPT = gql`\n mutation UpdatePrompt(\n $id: ID!\n $name: String\n $description: String\n $content: String\n $tags: JSON\n $rights_mode: String\n $RBAC: RBACInput\n $assigned_agents: JSON\n ) {\n prompt_libraryUpdateOneById(\n id: $id\n input: {\n name: $name\n description: $description\n content: $content\n tags: $tags\n rights_mode: $rights_mode\n RBAC: $RBAC\n assigned_agents: $assigned_agents\n }\n ) {\n item {\n ${PROMPT_LIBRARY_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_PROMPT = gql`\n mutation DeletePrompt($id: ID!) {\n prompt_libraryRemoveOneById(id: $id) {\n id\n }\n }\n`;\n\nexport const INCREMENT_PROMPT_USAGE = gql`\n mutation IncrementPromptUsage($id: ID!, $usage_count: Float!) {\n prompt_libraryUpdateOneById(\n id: $id\n input: { usage_count: $usage_count }\n ) {\n item {\n id\n usage_count\n }\n }\n }\n`;\n\nexport const INCREMENT_PROMPT_FAVORITES = gql`\n mutation IncrementPromptFavorites($id: ID!, $favorite_count: Float!) {\n prompt_libraryUpdateOneById(\n id: $id\n input: { favorite_count: $favorite_count }\n ) {\n item {\n id\n favorite_count\n }\n }\n }\n`;\n\n// Prompt Favorites\nconst PROMPT_FAVORITE_FIELDS = `\n id\n user_id\n prompt_id\n createdAt\n`;\n\nexport const GET_USER_PROMPT_FAVORITES = gql`\n query GetUserPromptFavorites($user_id: Float!) {\n prompt_favoritesPagination(\n filters: [{ user_id: { eq: $user_id } }]\n ) {\n items {\n ${PROMPT_FAVORITE_FIELDS}\n }\n }\n }\n`;\n\nexport const CREATE_PROMPT_FAVORITE = gql`\n mutation CreatePromptFavorite($user_id: Float!, $prompt_id: String!) {\n prompt_favoritesCreateOne(\n input: { user_id: $user_id, prompt_id: $prompt_id }\n ) {\n item {\n ${PROMPT_FAVORITE_FIELDS}\n }\n }\n }\n`;\n\nexport const DELETE_PROMPT_FAVORITE = gql`\n mutation DeletePromptFavorite($id: ID!) {\n prompt_favoritesRemoveOneById(id: $id) {\n id\n }\n }\n`;"],"names":["buttonVariants","cva","variants","variant","default","destructive","outline","secondary","ghost","link","size","sm","lg","icon","defaultVariants","Button","React","param","ref","className","asChild","props","Comp","Slot","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","cn","displayName","_len","arguments","length","inputs","_key","twMerge","clsx","formatDuration","seconds","hours","Math","floor","minutes","remainingSeconds","round","concat","PAGINATION_POSTFIX","CREATE_ONE_POSTFIX","CONTEXT_FIELDS","ITEM_FIELDS","fields","join","USER_FIELDS","AGENT_FIELDS","GET_AGENTS","gql","GET_AGENT_SESSIONS","GET_CONTEXTS","GET_CONTEXT_BY_ID","GET_ITEMS","context","upperCaseContext","charAt","toUpperCase","slice","PROCESS_ITEM_FIELD","GET_ITEM_BY_ID","chunks","CREATE_ITEM","DELETE_CHUNKS","GENERATE_CHUNKS","EXECUTE_SOURCE","UPDATE_ITEM","DELETE_ITEM","UPDATE_AGENT_SESSION_RBAC","UPDATE_AGENT_SESSION_PROJECT","UPDATE_AGENT_SESSION_TITLE","GET_AGENT_MESSAGES","GET_JOB_RESULTS","GET_USER_ROLES","GET_USERS","GET_AGENT_BY_ID","GET_AGENTS_BY_IDS","GET_AGENT_SESSION_BY_ID","UPDATE_USER_BY_ID","CREATE_API_USER","UPDATE_USER_ROLE_BY_ID","CREATE_AGENT_SESSION","CREATE_AGENT","GET_TOOLS","GET_TOOL_CATEGORIES","UPDATE_AGENT_BY_ID","CREATE_USER_ROLE","CREATE_USER","RESET_USER_PASSWORD","GET_PROVIDERS","REMOVE_USER_BY_ID","REMOVE_USER_ROLE_BY_ID","REMOVE_AGENT_BY_ID","REMOVE_AGENT_SESSION_BY_ID","GET_VARIABLES","GET_VARIABLE_BY_ID","CREATE_VARIABLE","CREATE_EMBEDDER_CONFIG","GET_EMBEDDER_CONFIGS","UPDATE_EMBEDDER_CONFIG","UPDATE_VARIABLE","REMOVE_VARIABLE_BY_ID","GET_USER_BY_ID","GET_USERS_BY_IDS","GET_WORKFLOW_TEMPLATES","CREATE_WORKFLOW_TEMPLATE","UPDATE_WORKFLOW_TEMPLATE","REMOVE_WORKFLOW_TEMPLATE_BY_ID","GET_JOB_STATISTICS_ENHANCED","GET_AGENT_SESSIONS_STATISTICS","GET_WORKFLOW_RUNS_STATISTICS","GET_FUNCTION_CALLS_STATISTICS","GET_AGENT_RUN_STATISTICS","GET_TOKEN_USAGE_STATISTICS","GET_TIME_SERIES_STATISTICS","GET_USER_STATISTICS","GET_PROJECT_STATISTICS","GET_AGENT_STATISTICS","GET_DONUT_STATISTICS","PROJECT_FIELDS","GET_PROJECTS","GET_PROJECTS_BY_IDS","GET_PROJECT_BY_ID","UPDATE_USER_FAVOURITE_PROJECTS","CREATE_PROJECT","UPDATE_PROJECT","DELETE_PROJECT","TEST_CASE_FIELDS","EVAL_SET_FIELDS","EVAL_RUN_FIELDS","GET_TEST_CASES","CREATE_TEST_CASE","UPDATE_TEST_CASE","DELETE_TEST_CASE","GET_EVAL_SETS","GET_EVAL_FUNCTIONS","GET_EVAL_SET_BY_ID","CREATE_EVAL_SET","UPDATE_EVAL_SET","DELETE_EVAL_SET","GET_EVAL_RUNS","CREATE_EVAL_RUN","GET_QUEUE","GET_JOBS","DELETE_JOB","PAUSE_QUEUE","RESUME_QUEUE","DRAIN_QUEUE","RUN_EVAL","UPDATE_EVAL_RUN","PLATFORM_CONFIGURATION_FIELDS","GET_PLATFORM_CONFIGURATIONS","CREATE_PLATFORM_CONFIGURATION","UPDATE_PLATFORM_CONFIGURATION","PROMPT_LIBRARY_FIELDS","GET_PROMPTS","GET_PROMPT_BY_ID","CREATE_PROMPT","UPDATE_PROMPT","DELETE_PROMPT","INCREMENT_PROMPT_USAGE","INCREMENT_PROMPT_FAVORITES","PROMPT_FAVORITE_FIELDS","CREATE_PROMPT_FAVORITE","DELETE_PROMPT_FAVORITE"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8030],{8014:function(e,s,t){t.d(s,{P:function(){return z}});var a=t(57437),r=t(27689),l=t(2265),n=t(63251),i=t(7211),d=t(53647),o=t(66337),c=t(95805),m=t(98728),u=t(29202),f=t(24156),x=t(30401),p=t(15863),h=t(18930),g=t(95186),N=t(26110),j=t(19378),v=t(94508),y=t(57054),b=t(23518),w=t(62869),k=t(26815);let R=[{value:"private",label:"Private",description:"Only you can see this agent",icon:o.Z},{value:"users",label:"Shared with Users",description:"Share with specific users",icon:c.Z},{value:"roles",label:"Shared with Roles",description:"Share with specific roles",icon:m.Z},{value:"public",label:"Public",description:"Anyone can see this agent",icon:u.Z}];function z(e){var s,t;let{allowedModes:o,initialRightsMode:c,modalMode:m=!1,initialUsers:u,initialRoles:z,onChange:C}=e,[S,Z]=(0,l.useState)(c),[_,Y]=(0,l.useState)(u||[]),[V,P]=(0,l.useState)(z||[]),[B,O]=(0,l.useState)([]),[Q,E]=(0,l.useState)(!1),[I,L]=(0,l.useState)([]),[U,q]=(0,l.useState)(""),[D,A]=(0,l.useState)(!1),[F,G]=(0,l.useState)(!1),W=(0,n.x)(),{data:$,loading:J,refetch:T}=(0,i.aM)(r.fo,{variables:{page:1,limit:5,filters:I},skip:"users"!==S||!U}),H=(0,i.aM)(r.l1,{fetchPolicy:"cache-first",nextFetchPolicy:"network-only",variables:{page:1,limit:30,filters:[{type:{ne:"api"}}]}}),K=(0,l.useCallback)(e=>{q(e);let s=[...I,{type:{ne:"api"}}],t=s.find(e=>e.email);(null==t?void 0:t.email)?t.email.contains=e:s.push({email:{contains:e}}),L(s),T()},[I,T]),M=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5;if(G(!0),!_||0===_.length){O([]),G(!1);return}let s=null==_?void 0:_.slice(0,e).map(async e=>{let{id:s,rights:t}=e;return{...(await W.query({query:r.L5,variables:{id:s}})).data.userById,rights:t}});O(await Promise.all(s)),G(!1)};(0,l.useEffect)(()=>{M(5)},[]),(0,l.useEffect)(()=>{console.log("selectedUsers",_),console.log("hydratedUsers",B),C(S,_,V)},[S,_,V]);let X=null==B?void 0:B.slice(0,5).filter(e=>!!(null==e?void 0:e.id)),ee=R;return(null==o?void 0:o.length)&&(ee=R.filter(e=>o.includes(e.value))),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(k._,{className:"text-sm font-medium",children:"Visibility & sharing"}),(0,a.jsxs)(y.J2,{modal:m||!1,open:Q,onOpenChange:E,children:[(0,a.jsx)(y.xo,{asChild:!0,children:(0,a.jsxs)(w.z,{variant:"outline",role:"combobox","aria-expanded":Q,className:"w-full justify-between text-sm capitalize",children:[(null===(s=ee.find(e=>e.value===S))||void 0===s?void 0:s.label)||"Select visibility...",(0,a.jsx)(f.Z,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,a.jsx)(y.yk,{className:"w-full p-0",children:(0,a.jsxs)(b.mY,{children:[(0,a.jsx)(b.sZ,{placeholder:"Search options..."}),(0,a.jsxs)(b.e8,{children:[(0,a.jsx)(b.rb,{children:"No options found."}),(0,a.jsx)(b.fu,{children:ee.map(e=>(0,a.jsxs)(b.di,{onSelect:()=>{"users"!==e.value&&Y([]),"roles"!==e.value&&P([]),Z(e.value),E(!1)},children:[(0,a.jsx)(x.Z,{className:(0,v.cn)("mr-2 h-4 w-4",S===e.value?"opacity-100":"opacity-0")}),(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsx)("span",{children:e.label}),(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:e.description})]})]},e.value))})]})]})})]})]}),"users"===S&&(0,a.jsx)("div",{className:"space-y-3 pt-3",children:(0,a.jsxs)("div",{children:[(0,a.jsx)(k._,{className:"text-sm font-medium",children:"Share with users"}),(0,a.jsx)("div",{className:"mt-2",children:(0,a.jsx)(g.I,{placeholder:"Search users by email...",value:U,onChange:e=>K(e.target.value),className:"text-sm"})}),J&&(0,a.jsxs)("div",{className:"mt-2 flex items-center justify-center py-4",children:[(0,a.jsx)(p.Z,{className:"h-4 w-4 animate-spin mr-2"}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading users..."})]}),!J&&$&&(null===(t=$.usersPagination)||void 0===t?void 0:t.items.length)>0&&(0,a.jsxs)("div",{className:"mt-2",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Search Results:"}),(0,a.jsx)("div",{className:"max-h-50 overflow-y-auto border rounded-lg",children:$.usersPagination.items.filter(e=>!_.some(s=>s.id===e.id)).map(e=>(0,a.jsxs)("label",{className:"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer",children:[(0,a.jsx)("input",{type:"checkbox",checked:_.some(s=>s.id===e.id),onChange:s=>{Y(s=>[...s,{id:e.id,rights:"read"}]),O(s=>[...s,{...e,rights:"read"}])}}),(0,a.jsx)("span",{className:"text-sm",children:e.email})]},e.id))}),(0,a.jsxs)("div",{className:"text-xs text-muted-foreground mt-2",children:[(0,a.jsx)("span",{className:"font-medium",children:"Note:"})," Only the first 5 users are shown, use the Search bar to find more users."]})]}),!J&&U&&$&&0===$.usersPagination.items.length&&(0,a.jsx)("div",{className:"mt-2 text-center py-4",children:(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"No users found"})}),(null==X?void 0:X.length)>0?(0,a.jsxs)("div",{className:"mt-2",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Selected Users:"}),(0,a.jsxs)("div",{className:"space-y-1",children:[X.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2 border p-2 rounded-lg text-sm",children:[(0,a.jsx)("span",{className:"flex-1 pl-2",children:e.email}),(0,a.jsxs)(d.Ph,{value:e.rights,onValueChange:s=>{Y(t=>t.map(t=>t.id===e.id?{...t,rights:s}:t)),O(t=>t.map(t=>t.id===e.id?{...t,rights:s}:t))},children:[(0,a.jsx)(d.i4,{className:"h-6 w-20 text-xs",children:(0,a.jsx)(d.ki,{})}),(0,a.jsxs)(d.Bw,{children:[(0,a.jsx)(d.Ql,{value:"read",children:"Read"}),(0,a.jsx)(d.Ql,{value:"write",children:"Write"})]})]}),(0,a.jsx)(w.z,{size:"sm",variant:"ghost",className:"h-5 w-5 p-0 hover:bg-blue-100",onClick:()=>{Y(s=>s.filter(s=>s.id!==e.id)),O(s=>s.filter(s=>s.id!==e.id))},children:(0,a.jsx)(h.Z,{className:"w-3 h-3"})})]},e.id)),_&&_.length>5&&(0,a.jsxs)(w.z,{variant:"link",type:"button",className:"h-auto p-0 text-blue-600 hover:text-blue-800 text-xs",onClick:()=>{M(50),A(!0)},children:["+ ",_.length-5," more users"]})]})]}):(0,a.jsx)("div",{className:"mt-2 text-center py-4",children:(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"No users selected."})})]})}),"roles"===S&&(0,a.jsx)("div",{className:"space-y-3",children:(0,a.jsxs)("div",{children:[(0,a.jsxs)(k._,{className:"text-sm font-medium",children:["Share with roles (",(null==V?void 0:V.length)||0,")"]}),(0,a.jsxs)("div",{className:"mt-2",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Available Roles"}),H.loading&&(0,a.jsxs)("div",{className:"flex items-center justify-center py-4 border rounded-lg",children:[(0,a.jsx)(p.Z,{className:"h-4 w-4 animate-spin mr-2"}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading roles..."})]}),!H.loading&&H.data&&(0,a.jsx)("div",{className:"max-h-24 overflow-y-auto border rounded-lg",children:H.data.rolesPagination.items.map(e=>(0,a.jsxs)("label",{className:"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer",children:[(0,a.jsx)("input",{type:"checkbox",checked:V.some(s=>s.id===e.id),onChange:s=>{s.target.checked?P(s=>[...s,{id:e.id,rights:"read"}]):P(s=>s.filter(s=>s.id!==e.id))}}),(0,a.jsx)("span",{className:"text-sm capitalize",children:e.name})]},e.id))})]}),V.length>0&&H.data&&(0,a.jsxs)("div",{className:"mt-2",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Selected Roles:"}),(0,a.jsx)("div",{className:"space-y-1",children:V.map(e=>{let s=H.data.rolesPagination.items.find(s=>s.id===e.id);return(0,a.jsxs)("div",{className:"flex items-center gap-2 border p-2 rounded-lg text-sm",children:[(0,a.jsx)("span",{className:"flex-1 pl-2 capitalize",children:null==s?void 0:s.name}),(0,a.jsxs)(d.Ph,{value:e.rights,onValueChange:s=>{P(t=>t.map(t=>t.id===e.id?{...t,rights:s}:t))},children:[(0,a.jsx)(d.i4,{className:"h-6 text-xs w-20 border-none",children:(0,a.jsx)(d.ki,{})}),(0,a.jsxs)(d.Bw,{children:[(0,a.jsx)(d.Ql,{value:"read",children:(0,a.jsx)("span",{className:"pr-7",children:"Read"})}),(0,a.jsx)(d.Ql,{value:"write",children:(0,a.jsx)("span",{className:"pr-7",children:"Write"})})]})]}),(0,a.jsx)(w.z,{size:"sm",variant:"ghost",className:"h-5 w-5 p-0 hover:bg-blue-100",onClick:()=>{P(s=>s.filter(s=>s.id!==e.id))},children:(0,a.jsx)(h.Z,{className:"w-3 h-3"})})]},e.id)})})]})]})}),(0,a.jsx)(N.Vq,{open:D,onOpenChange:A,children:(0,a.jsxs)(N.cZ,{className:"sm:max-w-2xl max-h-[85vh] flex flex-col",children:[(0,a.jsxs)(N.fK,{children:[(0,a.jsxs)(N.$N,{children:["All Selected Users (",(null==_?void 0:_.length)||0,")"]}),(0,a.jsx)(N.Be,{children:"View and manage all selected users and their permissions"})]}),(0,a.jsxs)(j.x,{className:"flex-1 pr-4",children:[F&&(0,a.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,a.jsx)(p.Z,{className:"h-6 w-6 animate-spin mr-2"}),(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading users..."})]}),!F&&B.length>0&&(0,a.jsx)("div",{className:"space-y-2",children:B.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-3 border p-3 rounded-lg",children:[(0,a.jsx)("span",{className:"flex-1",children:e.email}),(0,a.jsxs)(d.Ph,{value:e.rights,onValueChange:s=>{Y(t=>t.map(t=>t.id===e.id?{...t,rights:s}:t)),O(t=>t.map(t=>t.id===e.id?{...t,rights:s}:t))},children:[(0,a.jsx)(d.i4,{className:"w-24",children:(0,a.jsx)(d.ki,{})}),(0,a.jsxs)(d.Bw,{children:[(0,a.jsx)(d.Ql,{value:"read",children:"Read"}),(0,a.jsx)(d.Ql,{value:"write",children:"Write"})]})]}),(0,a.jsx)(w.z,{size:"sm",variant:"ghost",className:"h-8 w-8 p-0 hover:bg-destructive/10",onClick:()=>{Y(s=>s.filter(s=>s.id!==e.id)),O(s=>s.filter(s=>s.id!==e.id))},children:(0,a.jsx)(h.Z,{className:"w-4 h-4"})})]},e.id))}),!F&&0===B.length&&(0,a.jsx)("div",{className:"text-center py-8",children:(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"No users selected"})})]})]})})]})}},35974:function(e,s,t){t.d(s,{C:function(){return i}});var a=t(57437),r=t(90535);t(2265);var l=t(94508);let n=(0,r.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 i(e){let{className:s,variant:t,...r}=e;return(0,a.jsx)("div",{className:(0,l.cn)(n({variant:t}),s),...r})}},66070:function(e,s,t){t.d(s,{Ol:function(){return i},SZ:function(){return o},Zb:function(){return n},aY:function(){return c},eW:function(){return m},ll:function(){return d}});var a=t(57437),r=t(2265),l=t(94508);let n=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,l.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",t),...r})});n.displayName="Card";let i=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,l.cn)("flex flex-col space-y-1.5 p-6",t),...r})});i.displayName="CardHeader";let d=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("h3",{ref:s,className:(0,l.cn)("text-2xl font-semibold leading-none tracking-tight",t),...r})});d.displayName="CardTitle";let o=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("p",{ref:s,className:(0,l.cn)("text-sm text-muted-foreground",t),...r})});o.displayName="CardDescription";let c=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,l.cn)("p-6 pt-0",t),...r})});c.displayName="CardContent";let m=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,l.cn)("flex items-center p-6 pt-0",t),...r})});m.displayName="CardFooter"},23518:function(e,s,t){t.d(s,{di:function(){return f},e8:function(){return c},fu:function(){return u},mY:function(){return d},rb:function(){return m},sZ:function(){return o}});var a=t(57437),r=t(83918),l=t(73247),n=t(2265);t(26110);var i=t(94508);let d=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.mY,{ref:s,className:(0,i.cn)("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",t),...l})});d.displayName=r.mY.displayName;let o=n.forwardRef((e,s)=>{let{className:t,...n}=e;return(0,a.jsxs)("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[(0,a.jsx)(l.Z,{className:"mr-2 size-4 shrink-0 opacity-50"}),(0,a.jsx)(r.mY.Input,{ref:s,className:(0,i.cn)("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",t),...n})]})});o.displayName=r.mY.Input.displayName;let c=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.mY.List,{ref:s,className:(0,i.cn)("max-h-[300px] overflow-y-auto overflow-x-hidden",t),...l})});c.displayName=r.mY.List.displayName;let m=n.forwardRef((e,s)=>(0,a.jsx)(r.mY.Empty,{ref:s,className:"py-6 text-center text-sm",...e}));m.displayName=r.mY.Empty.displayName;let u=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.mY.Group,{ref:s,className:(0,i.cn)("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",t),...l})});u.displayName=r.mY.Group.displayName,n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.mY.Separator,{ref:s,className:(0,i.cn)("-mx-1 h-px bg-border",t),...l})}).displayName=r.mY.Separator.displayName;let f=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.mY.Item,{ref:s,className:(0,i.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...l})});f.displayName=r.mY.Item.displayName},26110:function(e,s,t){t.d(s,{$N:function(){return p},Be:function(){return h},Vq:function(){return d},cN:function(){return x},cZ:function(){return u},fK:function(){return f},hg:function(){return o}});var a=t(57437),r=t(34567),l=t(32489),n=t(2265),i=t(94508);let d=r.fC,o=r.xz,c=r.h_;r.x8;let m=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.aV,{ref:s,className:(0,i.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...l})});m.displayName=r.aV.displayName;let u=n.forwardRef((e,s)=>{let{className:t,children:n,...d}=e;return(0,a.jsxs)(c,{children:[(0,a.jsx)(m,{}),(0,a.jsxs)(r.VY,{ref:s,className:(0,i.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...d,children:[n,(0,a.jsxs)(r.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,a.jsx)(l.Z,{className:"size-4"}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});u.displayName=r.VY.displayName;let f=e=>{let{className:s,...t}=e;return(0,a.jsx)("div",{className:(0,i.cn)("flex flex-col space-y-1.5 text-center sm:text-left",s),...t})};f.displayName="DialogHeader";let x=e=>{let{className:s,...t}=e;return(0,a.jsx)("div",{className:(0,i.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",s),...t})};x.displayName="DialogFooter";let p=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.Dx,{ref:s,className:(0,i.cn)("text-lg font-semibold leading-none tracking-tight",t),...l})});p.displayName=r.Dx.displayName;let h=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.dk,{ref:s,className:(0,i.cn)("text-sm text-muted-foreground",t),...l})});h.displayName=r.dk.displayName},26815:function(e,s,t){t.d(s,{_:function(){return o}});var a=t(57437),r=t(6394),l=t(90535),n=t(2265),i=t(94508);let d=(0,l.j)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),o=n.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.f,{ref:s,className:(0,i.cn)(d(),t),...l})});o.displayName=r.f.displayName},57054:function(e,s,t){t.d(s,{J2:function(){return i},xo:function(){return d},yk:function(){return o}});var a=t(57437),r=t(27312),l=t(2265),n=t(94508);let i=r.fC,d=r.xz,o=l.forwardRef((e,s)=>{let{className:t,align:l="center",sideOffset:i=4,...d}=e;return(0,a.jsx)(r.h_,{children:(0,a.jsx)(r.VY,{ref:s,align:l,sideOffset:i,className:(0,n.cn)("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...d})})});o.displayName=r.VY.displayName},19378:function(e,s,t){t.d(s,{B:function(){return d},x:function(){return i}});var a=t(57437),r=t(14488),l=t(2265),n=t(94508);let i=l.forwardRef((e,s)=>{let{className:t,children:l,...i}=e;return(0,a.jsxs)(r.fC,{ref:s,className:(0,n.cn)("relative overflow-hidden",t),...i,children:[(0,a.jsx)(r.l_,{className:"size-full rounded-[inherit]",children:l}),(0,a.jsx)(d,{}),(0,a.jsx)(r.Ns,{})]})});i.displayName=r.fC.displayName;let d=l.forwardRef((e,s)=>{let{className:t,orientation:l="vertical",...i}=e;return(0,a.jsx)(r.gb,{ref:s,orientation:l,className:(0,n.cn)("flex touch-none select-none transition-colors","vertical"===l&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===l&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...i,children:(0,a.jsx)(r.q4,{className:"relative flex-1 rounded-full bg-border"})})});d.displayName=r.gb.displayName},53647:function(e,s,t){t.d(s,{Bw:function(){return p},Ph:function(){return c},Ql:function(){return h},i4:function(){return u},ki:function(){return m}});var a=t(57437),r=t(46943),l=t(40875),n=t(22135),i=t(30401),d=t(2265),o=t(94508);let c=r.fC;r.ZA;let m=r.B4,u=d.forwardRef((e,s)=>{let{className:t,children:n,...i}=e;return(0,a.jsxs)(r.xz,{ref:s,className:(0,o.cn)("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...i,children:[n,(0,a.jsx)(r.JO,{asChild:!0,children:(0,a.jsx)(l.Z,{className:"size-4 opacity-50"})})]})});u.displayName=r.xz.displayName;let f=d.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.u_,{ref:s,className:(0,o.cn)("flex cursor-default items-center justify-center py-1",t),...l,children:(0,a.jsx)(n.Z,{className:"size-4"})})});f.displayName=r.u_.displayName;let x=d.forwardRef((e,s)=>{let{className:t,...n}=e;return(0,a.jsx)(r.$G,{ref:s,className:(0,o.cn)("flex cursor-default items-center justify-center py-1",t),...n,children:(0,a.jsx)(l.Z,{className:"size-4"})})});x.displayName=r.$G.displayName;let p=d.forwardRef((e,s)=>{let{className:t,children:l,position:n="popper",...i}=e;return(0,a.jsx)(r.h_,{children:(0,a.jsxs)(r.VY,{ref:s,className:(0,o.cn)("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===n&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,...i,children:[(0,a.jsx)(f,{}),(0,a.jsx)(r.l_,{className:(0,o.cn)("p-1","popper"===n&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:l}),(0,a.jsx)(x,{})]})})});p.displayName=r.VY.displayName,d.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.__,{ref:s,className:(0,o.cn)("py-1.5 pl-8 pr-2 text-sm font-semibold",t),...l})}).displayName=r.__.displayName;let h=d.forwardRef((e,s)=>{let{className:t,children:l,...n}=e;return(0,a.jsxs)(r.ck,{ref:s,className:(0,o.cn)("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[(0,a.jsx)("span",{className:"absolute left-2 flex size-3.5 items-center justify-center",children:(0,a.jsx)(r.wU,{children:(0,a.jsx)(i.Z,{className:"size-4"})})}),(0,a.jsx)(r.eT,{children:l})]})});h.displayName=r.ck.displayName,d.forwardRef((e,s)=>{let{className:t,...l}=e;return(0,a.jsx)(r.Z0,{ref:s,className:(0,o.cn)("-mx-1 my-1 h-px bg-muted",t),...l})}).displayName=r.Z0.displayName},76818:function(e,s,t){t.d(s,{g:function(){return n}});var a=t(57437),r=t(2265),l=t(94508);let n=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("textarea",{className:(0,l.cn)("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t),ref:s,...r})});n.displayName="Textarea"}}]);
2
+ //# sourceMappingURL=8030-9c926ea4dfd3a54e.js.map