@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
@@ -17,11 +17,11 @@
17
17
  "wasm": [],
18
18
  "assets": [],
19
19
  "env": {
20
- "__NEXT_BUILD_ID": "J23NmkaMjAJYnE0jX_kO0",
21
- "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "RH33BHGT08dLinjjhsFZaSsR5CH4fKPTsb3Xj2BI3K4=",
22
- "__NEXT_PREVIEW_MODE_ID": "c7913608ffee224d1eb581e5c6ebee6e",
23
- "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "a6194b8f916cdb8562104d1a90163f33729e3471581bb4a5a5ea60074365cc90",
24
- "__NEXT_PREVIEW_MODE_SIGNING_KEY": "cb22045a0e876ae3d175ade08d447aa7efe55b109b4064526d61fd222c486fee"
20
+ "__NEXT_BUILD_ID": "ls-syPkq9-MWp-VWWDEZJ",
21
+ "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "+day2b4DBbQD+ZdKBqud8vA/1ypYAZroTa+2I+svV10=",
22
+ "__NEXT_PREVIEW_MODE_ID": "87d3dc86b59c9219f980af9c371c35e2",
23
+ "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "788062639fd378e5e4728e055df6f798f8f27deebfa4ad4a49a3ca9263cab371",
24
+ "__NEXT_PREVIEW_MODE_SIGNING_KEY": "1190d9fd48f771e38bae48ecd365bfb6983b12b9bf284391298415c4d10d933f"
25
25
  }
26
26
  }
27
27
  },
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-480cfeb2c2aa3f7e.js"/><script src="/_next/static/chunks/fd9d1056-f20120f69c10766e.js" async=""></script><script src="/_next/static/chunks/2117-7e0e97ffa5867cf9.js" async=""></script><script src="/_next/static/chunks/main-app-da1df2757744a2ea.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-480cfeb2c2aa3f7e.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:I[12846,[],\"\"]\n3:I[4707,[],\"\"]\n4:I[36423,[],\"\"]\na:I[61060,[],\"\"]\n5:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n6:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n7:{\"display\":\"inline-block\"}\n8:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L1\",null,{\"buildId\":\"J23NmkaMjAJYnE0jX_kO0\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L2\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[null,[\"$\",\"html\",null,{\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$5\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$6\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$7\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$8\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"2\",{\"name\":\"next-size-adjust\"}]]\n2:null\n"])</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-480cfeb2c2aa3f7e.js"/><script src="/_next/static/chunks/fd9d1056-f20120f69c10766e.js" async=""></script><script src="/_next/static/chunks/2117-7e0e97ffa5867cf9.js" async=""></script><script src="/_next/static/chunks/main-app-da1df2757744a2ea.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-480cfeb2c2aa3f7e.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:I[12846,[],\"\"]\n3:I[4707,[],\"\"]\n4:I[36423,[],\"\"]\na:I[61060,[],\"\"]\n5:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n6:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n7:{\"display\":\"inline-block\"}\n8:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L1\",null,{\"buildId\":\"ls-syPkq9-MWp-VWWDEZJ\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L2\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[null,[\"$\",\"html\",null,{\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$5\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$6\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$7\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$8\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"2\",{\"name\":\"next-size-adjust\"}]]\n2:null\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-480cfeb2c2aa3f7e.js" defer=""></script><script src="/_next/static/chunks/framework-9317b1ce0f036b87.js" defer=""></script><script src="/_next/static/chunks/main-bf608235d4e99320.js" defer=""></script><script src="/_next/static/chunks/pages/_app-9f5760457b3fbb4c.js" defer=""></script><script src="/_next/static/chunks/pages/_error-daa80f5b4d0fe27d.js" defer=""></script><script src="/_next/static/J23NmkaMjAJYnE0jX_kO0/_buildManifest.js" defer=""></script><script src="/_next/static/J23NmkaMjAJYnE0jX_kO0/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"J23NmkaMjAJYnE0jX_kO0","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-480cfeb2c2aa3f7e.js" defer=""></script><script src="/_next/static/chunks/framework-9317b1ce0f036b87.js" defer=""></script><script src="/_next/static/chunks/main-bf608235d4e99320.js" defer=""></script><script src="/_next/static/chunks/pages/_app-9f5760457b3fbb4c.js" defer=""></script><script src="/_next/static/chunks/pages/_error-daa80f5b4d0fe27d.js" defer=""></script><script src="/_next/static/ls-syPkq9-MWp-VWWDEZJ/_buildManifest.js" defer=""></script><script src="/_next/static/ls-syPkq9-MWp-VWWDEZJ/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"ls-syPkq9-MWp-VWWDEZJ","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"RH33BHGT08dLinjjhsFZaSsR5CH4fKPTsb3Xj2BI3K4="}
1
+ {"node":{},"edge":{},"encryptionKey":"+day2b4DBbQD+ZdKBqud8vA/1ypYAZroTa+2I+svV10="}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1685],{82534:function(e,t,s){s.d(t,{F:function(){return k}});var a=s(57437),r=s(2265),l=s(7211),n=s(12199),o=s(33245),i=s(53417),d=s(82023),c=s(99397),u=s(22252),m=s(15863),f=s(26110),p=s(62869),x=s(95186),g=s(26815),h=s(76818),v=s(27689),N=s(77992),j=s(12339),b=s(66070),y=s(35974),w=s(19378),C=s(78361),T=s(77256),_=s(27182);function k(e){let{open:t,onClose:s,evalSetId:k,onSuccess:R,testCase:F}=e,{toast:S}=(0,N.pm)(),z=!!F,{data:D}=(0,l.aM)(v.Ul,{variables:{page:1,limit:100}}),{regularTools:Z,agentTools:E,knowledgeSourceTools:P}=(0,r.useMemo)(()=>{var e;let t=(null==D?void 0:null===(e=D.tools)||void 0===e?void 0:e.items)||[];return console.log("tools",t),{regularTools:t.filter(e=>"function"===e.type),agentTools:t.filter(e=>"agent"===e.type),knowledgeSourceTools:t.filter(e=>"context"===e.type)}},[D]),[A,U]=(0,r.useState)(""),[V,I]=(0,r.useState)(""),[M,O]=(0,r.useState)(""),[K,Y]=(0,r.useState)([]),[L,q]=(0,r.useState)(""),[H,B]=(0,r.useState)(null),[J,$]=(0,r.useState)([]),[W,G]=(0,r.useState)([]),[Q,X]=(0,r.useState)([]),[ee,et]=(0,r.useState)([]),[es,ea]=(0,r.useState)(""),[er,el]=(0,r.useState)(""),[en,eo]=(0,r.useState)("");(0,r.useEffect)(()=>{F&&t?(U(F.name),I(F.description||""),O(F.expected_output),Y(F.inputs||[]),G(F.expected_tools||[]),X(F.expected_knowledge_sources||[]),et(F.expected_agent_tools||[])):t||(U(""),I(""),O(""),Y([]),q(""),B(null),$([]),G([]),X([]),et([]),ea(""),el(""),eo(""))},[F,t]);let ei=async e=>{$(await Promise.all(e.map(async e=>({type:"file",mediaType:e.split(".").pop()||"",filename:e,url:await (0,C.NF)(e)}))))};(0,r.useEffect)(()=>{if(!H||0===H.length){$([]);return}ei(H)},[H]);let[ed,{loading:ec}]=(0,n.D)(v.hx,{onCompleted:()=>{S({title:"Test case created",description:"The test case has been successfully created."}),R()},onError:e=>{S({title:"Failed to create test case",description:e.message,variant:"destructive"})}}),[eu,{loading:em}]=(0,n.D)(v.Mh,{onCompleted:()=>{S({title:"Test case updated",description:"The test case has been successfully updated."}),R()},onError:e=>{S({title:"Failed to update test case",description:e.message,variant:"destructive"})}}),ef=()=>{if(!L.trim()&&0===J.length)return;let e=[];L.trim()&&e.push({type:"text",text:L.trim()}),J.length>0&&e.push(...J),Y([...K,{id:"msg-".concat(Date.now()),role:"user",parts:e},{id:"msg-".concat(Date.now()),role:"assistant",metadata:{type:"placeholder"},parts:[{type:"text",text:"\uD83D\uDCAC Placeholder, generated agent response will be added here when the test case is run..."}]}]),q(""),B(null),$([])},ep=ec||em;return(0,a.jsx)(f.Vq,{open:t,onOpenChange:s,children:(0,a.jsxs)(f.cZ,{className:"max-w-4xl max-h-[90vh] overflow-hidden flex flex-col",children:[(0,a.jsxs)(f.fK,{children:[(0,a.jsxs)(f.$N,{children:[z?"Edit Test Case":"Create Test Case"," ",k?"for Eval Set: ".concat(k):""]}),(0,a.jsx)(f.Be,{children:z?"Update the test case details.":"Create a new test case with conversation inputs and expected outputs."})]}),(0,a.jsxs)("form",{onSubmit:e=>{if(e.preventDefault(),!A.trim()||!M.trim()||0===K.length){S({title:"Validation error",description:"Name, at least one input message, and expected output are required.",variant:"destructive"});return}let t={name:A.trim(),description:V.trim()||null,inputs:K,expected_output:M.trim(),expected_tools:W.length>0?W:null,expected_knowledge_sources:Q.length>0?Q:null,expected_agent_tools:ee.length>0?ee:null,...k?{eval_set_id:k}:{}};z?eu({variables:{id:F.id,data:t}}):ed({variables:{data:t}})},className:"flex-1 overflow-hidden flex flex-col",children:[(0,a.jsxs)(j.mQ,{defaultValue:"basic",className:"flex-1 overflow-hidden flex flex-col",children:[(0,a.jsxs)(j.dr,{className:"grid w-full grid-cols-2",children:[(0,a.jsxs)(j.SP,{value:"basic",className:"gap-2",children:[(0,a.jsx)(o.Z,{className:"h-4 w-4"}),"Basic Info"]}),(0,a.jsxs)(j.SP,{value:"conversation",className:"gap-2",children:[(0,a.jsx)(i.Z,{className:"h-4 w-4"}),"Conversation"]})]}),(0,a.jsxs)(w.x,{className:"flex-1",children:[(0,a.jsx)(j.nU,{value:"basic",className:"space-y-4 p-1 mt-4",children:(0,a.jsxs)("div",{className:"grid gap-5",children:[(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(g._,{htmlFor:"name",children:"Name *"}),(0,a.jsx)(x.I,{id:"name",placeholder:"e.g., Customer Support - Refund Request",value:A,onChange:e=>U(e.target.value),disabled:ep,required:!0})]}),(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(g._,{htmlFor:"description",children:"Description"}),(0,a.jsx)(h.g,{id:"description",placeholder:"Describe what this test case evaluates...",value:V,onChange:e=>I(e.target.value),disabled:ep,rows:3})]}),(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsx)(g._,{htmlFor:"expectedOutput",children:"Expected Output *"}),(0,a.jsx)(h.g,{id:"expectedOutput",placeholder:"Describe the expected final output (e.g., 'A JSON object containing refund details', 'An empathetic response offering alternatives')",value:M,onChange:e=>O(e.target.value),disabled:ep,rows:4,required:!0}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"This can be an exact expected response or a description of what the output should contain."})]})]})}),(0,a.jsx)(j.nU,{value:"conversation",className:"space-y-4 p-1 mt-4",children:(0,a.jsxs)(b.Zb,{children:[(0,a.jsx)(b.Ol,{className:"pb-3",children:(0,a.jsx)("div",{className:"flex items-start justify-between",children:(0,a.jsxs)("div",{children:[(0,a.jsxs)(b.ll,{className:"text-sm flex items-center gap-2",children:[(0,a.jsx)(i.Z,{className:"h-4 w-4"}),"Conversation Flow",K.length>0&&(0,a.jsxs)(y.C,{variant:"secondary",className:"ml-2",children:[K.length," ",1===K.length?"message":"messages"]})]}),(0,a.jsx)(b.SZ,{className:"mt-1.5",children:"Add user messages in order. The agent will run through this conversation flow and respond between each message automatically."})]})})}),(0,a.jsxs)(b.aY,{className:"space-y-6",children:[(null==K?void 0:K.length)===0?(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 px-4 text-center border-2 border-dashed border-muted rounded-lg",children:[(0,a.jsx)(d.Z,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),(0,a.jsx)("h3",{className:"font-semibold text-lg mb-2",children:"No messages yet"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground max-w-sm",children:"Start building your test conversation by adding user messages below."})]}):(0,a.jsx)(_.ri,{className:"max-h-[350px] overflow-y-auto border rounded-lg bg-muted/30 transition-all duration-300 ease-in-out",children:(0,a.jsx)(_.iG,{className:"px-6 py-4",children:(0,a.jsx)("div",{className:"animate-in fade-in duration-500",children:(0,a.jsx)(T.K,{messages:K,config:{marginTopFirstMessage:"mt-0",customAssistantClassnames:"bg-secondary/50 rounded-lg px-3 py-1 border-l-2 border-primary/30"},status:"ready",showActions:!1,writeAccess:!1})})})}),(0,a.jsxs)("div",{className:"space-y-3 pt-2 border-t",children:[(0,a.jsx)(g._,{htmlFor:"currentInput",className:"text-sm font-semibold",children:"Add User Message"}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)(h.g,{id:"currentInput",placeholder:"Type the user's message...",value:L,onChange:e=>q(e.target.value),disabled:ep,rows:2,onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),ef())}}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(C.ZP,{id:"test-case-files",selectionLimit:10,allowedFileTypes:[".png",".jpg",".jpeg",".gif",".webp",".pdf",".docx",".xlsx",".xls",".csv",".pptx",".ppt",".mp3",".wav",".m4a",".mp4",".mpeg"],dependencies:[],onConfirm:e=>{B(e)}}),(0,a.jsxs)(p.z,{type:"button",variant:"outline",onClick:ef,disabled:ep||!L.trim()&&0===J.length,className:"ml-auto",size:"default",children:[(0,a.jsx)(c.Z,{className:"h-4 w-4 mr-2"}),"Add Message"]})]}),H&&H.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"grid grid-cols-3 gap-2",children:H.map(e=>(0,a.jsx)(C.jU,{s3Key:e,disabled:!0,active:!1,onRemove:()=>{B(null==H?void 0:H.filter(t=>t!==e))}}))}),(0,a.jsxs)("div",{className:"flex items-start gap-2 p-3 bg-amber-500/10 border border-amber-500/20 rounded-lg",children:[(0,a.jsx)(u.Z,{className:"h-4 w-4 text-amber-600 dark:text-amber-500 mt-0.5 flex-shrink-0"}),(0,a.jsxs)("p",{className:"text-xs text-amber-900 dark:text-amber-200",children:[(0,a.jsx)("strong",{children:"Note:"})," When running this test case, ensure the selected agent supports the file types you've attached here (images, documents, audio, etc.)."]})]})]})]}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"Press Enter to add, Shift+Enter for new line. You can attach files to messages."})]})]})]})})]})]}),(0,a.jsxs)(f.cN,{className:"mt-4 gap-2",children:[(0,a.jsx)(p.z,{type:"button",variant:"outline",onClick:s,disabled:ep,children:"Cancel"}),(0,a.jsxs)(p.z,{type:"submit",disabled:ep||!A.trim()||!M.trim()||0===K.length,className:"shadow-sm hover:shadow-md transition-all",children:[ep&&(0,a.jsx)(m.Z,{className:"mr-2 h-4 w-4 animate-spin"}),z?"Update Test Case":"Create Test Case"]})]})]})]})})}},27182:function(e,t,s){s.d(t,{iG:function(){return o},ri:function(){return n}});var a=s(57437);s(62869);var r=s(94508);s(2265);var l=s(20460);let n=e=>{let{className:t,...s}=e;return(0,a.jsx)(l.h,{className:(0,r.cn)("relative flex-1 overflow-y-auto",t),initial:"smooth",resize:"smooth",role:"log",...s})},o=e=>{let{className:t,...s}=e;return(0,a.jsx)(l.h.Content,{className:(0,r.cn)("p-4",t),...s})}},77256:function(e,t,s){s.d(t,{K:function(){return I}});var a=s(57437);s(16831);var r=s(94508);let l=e=>{let{className:t,from:s,...l}=e;return(0,a.jsx)("div",{className:(0,r.cn)("group flex w-full items-end justify-end gap-2 py-4","user"===s?"is-user flex-row-reverse justify-end":"is-assistant flex-row-reverse justify-end","[&>div]:max-w-[80%]",t),...l})},n=e=>{let{children:t,className:s,...l}=e;return(0,a.jsx)("div",{className:(0,r.cn)("flex flex-col gap-2 overflow-hidden rounded-lg py-3 text-foreground text-sm","group-[.is-user]:bg-secondary group-[.is-user]:text-primary-foreground group-[.is-user]:px-4","group-[.is-assistant]:bg-transparent group-[.is-assistant]:text-foreground",s),...l,children:(0,a.jsx)("div",{className:"is-user:dark",children:t})})};var o=s(62869),i=s(81103);let d=e=>{let{className:t,children:s,...l}=e;return(0,a.jsx)("div",{className:(0,r.cn)("flex items-center gap-1",t),...l,children:s})},c=e=>{let{tooltip:t,children:s,label:l,className:n,variant:d="ghost",size:c="sm",...u}=e,m=(0,a.jsxs)(o.z,{className:(0,r.cn)("size-9 p-1.5 text-muted-foreground hover:text-foreground",n),size:c,type:"button",variant:d,...u,children:[s,(0,a.jsx)("span",{className:"sr-only",children:l||t})]});return t?(0,a.jsx)(i.pn,{children:(0,a.jsxs)(i.u,{children:[(0,a.jsx)(i.aJ,{asChild:!0,children:m}),(0,a.jsx)(i._v,{children:(0,a.jsx)("p",{children:t})})]})}):m};var u=s(35629),m=s(80886),f=s(74928),p=s(64972),x=s(40875),g=s(2265);let h=(0,g.createContext)(null),v=()=>{let e=(0,g.useContext)(h);if(!e)throw Error("Reasoning components must be used within Reasoning");return e},N=(0,g.memo)(e=>{let{className:t,isStreaming:s=!1,open:l,defaultOpen:n=!1,onOpenChange:o,duration:i,children:d,...c}=e,[u,p]=(0,m.T)({prop:l,defaultProp:n,onChange:o}),[x,v]=(0,m.T)({prop:i,defaultProp:0}),[N,j]=(0,g.useState)(!1),[b,y]=(0,g.useState)(null);return(0,g.useEffect)(()=>{s?null===b&&y(Date.now()):null!==b&&(v(Math.round((Date.now()-b)/1e3)),y(null))},[s,b,v]),(0,g.useEffect)(()=>{if(s&&!u)p(!0);else if(!s&&u&&!n&&!N){let e=setTimeout(()=>{p(!1),j(!0)},1e3);return()=>clearTimeout(e)}},[s,u,n,p,N]),(0,a.jsx)(h.Provider,{value:{isStreaming:s,isOpen:u,setIsOpen:p,duration:x},children:(0,a.jsx)(f.zF,{className:(0,r.cn)("not-prose mb-4",t),onOpenChange:e=>{p(e)},open:u,...c,children:d})})}),j=(0,g.memo)(e=>{let{className:t,title:s="Reasoning",children:l,...n}=e,{isStreaming:o,isOpen:i,duration:d}=v();return(0,a.jsx)(f.wy,{className:(0,r.cn)("flex items-center gap-2 text-muted-foreground text-sm",t),...n,children:null!=l?l:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(p.Z,{className:"size-4"}),o||0===d?(0,a.jsx)("p",{children:"Thinking..."}):(0,a.jsxs)("p",{children:["Thought for ",d," seconds"]}),(0,a.jsx)(x.Z,{className:(0,r.cn)("size-4 text-muted-foreground transition-transform",i?"rotate-180":"rotate-0")})]})})}),b=(0,g.memo)(e=>{let{className:t,children:s,...l}=e;return(0,a.jsx)(f.Fw,{className:(0,r.cn)("mt-4 text-sm","data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",t),...l,children:(0,a.jsx)(u.H,{className:"grid gap-2",children:s})})});N.displayName="Reasoning",j.displayName="ReasoningTrigger",b.displayName="ReasoningContent";var y=s(55455);let w=e=>{let{className:t,...s}=e;return(0,a.jsx)(f.zF,{className:(0,r.cn)("not-prose mb-4 text-primary text-xs",t),...s})},C=e=>{let{className:t,count:s,children:r,...l}=e;return(0,a.jsx)(f.wy,{className:"flex items-center gap-2",...l,children:null!=r?r:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("p",{className:"font-medium",children:["Used ",s," sources"]}),(0,a.jsx)(x.Z,{className:"h-4 w-4"})]})})},T=e=>{let{className:t,...s}=e;return(0,a.jsx)(f.Fw,{className:(0,r.cn)("mt-3 flex w-fit flex-col gap-2","data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",t),...s})},_=e=>{let{href:t,title:s,children:r,...l}=e;return(0,a.jsx)("a",{className:"flex items-center gap-2",href:t,rel:"noreferrer",target:"_blank",...l,children:null!=r?r:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(y.Z,{className:"h-4 w-4"}),(0,a.jsx)("span",{className:"block font-medium",children:s})]})})};var k=s(52636),R=s(78867),F=s(33145),S=s(77992),z=s(40519),D=s(15863),Z=s(66901),E=s(45131);let P={pending:{icon:z.Z,label:"Pending",className:"text-muted-foreground"},in_progress:{icon:D.Z,label:"In Progress",className:"text-blue-500 animate-spin"},completed:{icon:Z.Z,label:"Completed",className:"text-green-500"},cancelled:{icon:E.Z,label:"Cancelled",className:"text-red-500"}},A={high:{label:"High",className:"bg-red-500/10 text-red-500 border-red-500/20"},medium:{label:"Medium",className:"bg-yellow-500/10 text-yellow-500 border-yellow-500/20"},low:{label:"Low",className:"bg-blue-500/10 text-blue-500 border-blue-500/20"}},U=e=>{let{todos:t,showPriority:s=!1,state:l,className:n,...o}=e;if("string"==typeof t&&(t=JSON.parse(t)),!t||0===t.length)return null;let i=t.filter(e=>"completed"===e.status).length,d=t.length;return(0,a.jsxs)("div",{className:(0,r.cn)("my-2 space-y-1","input-streaming"===l&&"opacity-70",n),...o,children:[t.map((e,l)=>{let n=P[e.status]?P[e.status].icon:P.pending.icon,o=P[e.status]?P[e.status].className:P.pending.className;A[e.priority]?A[e.priority].className:A.medium.className;let i="in_progress"===e.status&&l===t.findIndex(e=>"in_progress"===e.status);return(0,a.jsxs)("div",{className:(0,r.cn)("flex items-start gap-2 py-0.5","cancelled"===e.status&&"opacity-50"),children:[(0,a.jsx)("div",{className:"flex-shrink-0 pt-0.5",children:(0,a.jsx)(n,{className:(0,r.cn)("size-3.5",o)})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("span",{className:(0,r.cn)("text-sm","completed"===e.status&&"text-muted-foreground line-through","cancelled"===e.status&&"text-muted-foreground line-through","in_progress"===e.status&&i&&"font-medium"),children:e.content}),s&&"high"===e.priority&&(0,a.jsx)("span",{className:"ml-2 text-red-500 text-xs",children:"(!)"})]})]},e.id)}),d>1&&(0,a.jsxs)("div",{className:"flex items-center gap-2 pt-1 text-muted-foreground text-xs",children:[(0,a.jsx)("div",{className:"h-1 flex-1 overflow-hidden rounded-full bg-secondary",children:(0,a.jsx)("div",{className:"h-full bg-primary transition-all duration-300",style:{width:"".concat(i/d*100,"%")}})}),(0,a.jsxs)("span",{className:"whitespace-nowrap",children:[i,"/",d]})]}),"output-error"===l&&(0,a.jsxs)("div",{className:"flex items-center gap-1 pt-1 text-red-500 text-xs",children:[(0,a.jsx)(E.Z,{className:"size-3"}),(0,a.jsx)("span",{children:"Error updating tasks"})]})]})};var V=s(78361);function I(e){let{messages:t,status:s="idle",className:o,showActions:i=!0,onRegenerate:m,onAddToolResult:f,UntypedToolPartComponent:p,addToContext:x,writeAccess:g=!0,config:h}=e,{toast:v}=(0,S.pm)();return(0,a.jsx)(a.Fragment,{children:null==t?void 0:t.map((e,t)=>{var y,S;let z=e.metadata,D=null!==(S=null===(y=e.parts.filter(e=>{var t;return"text"===e.type&&(null===(t=e.text)||void 0===t?void 0:t.includes('<file name="'))}))||void 0===y?void 0:y.flatMap(e=>{var t;let s=e.text.match(/<file name="([^"]+)">([^<]+)<\/file>/g);return null!==(t=null==s?void 0:s.map(e=>{var t,s,a,r;console.log("filePart",e);let l=null!==(a=null===(t=e.match(/<file name="([^"]+)">/))||void 0===t?void 0:t[1])&&void 0!==a?a:"";return console.log("s3Key",l),{s3Key:l,content:null!==(r=null===(s=e.match(/<file name="([^"]+)">([^<]+)<\/file>/))||void 0===s?void 0:s[2])&&void 0!==r?r:""}}))&&void 0!==t?t:[]}))&&void 0!==S?S:[];return console.log("files",D),(0,a.jsx)(l,{className:(0,r.cn)("assistant"===e.role&&((null==h?void 0:h.customAssistantClassnames)?null==h?void 0:h.customAssistantClassnames:""),0===t&&((null==h?void 0:h.marginTopFirstMessage)?null==h?void 0:h.marginTopFirstMessage:"mt-12"),o),from:e.role,children:(0,a.jsxs)(n,{children:[e.parts.map((t,r)=>{var l,n,o,i,d,c,m,g;if("step-start"===t.type)return null;if("text"===t.type){let s=t.text.replace(/<file name="([^"]+)">([^<]+)<\/file>/g,"");return(0,a.jsx)(u.H,{className:"chat-response-container",children:s},"".concat(e.id,"-").concat(r)+"_response")}if("tool-askForConfirmation"===t.type&&f){let e=t.toolCallId;switch(t.state){case"input-streaming":return(0,a.jsx)("div",{children:"Loading confirmation request..."},e);case"input-available":return(0,a.jsxs)("div",{children:[t.input.message,(0,a.jsxs)("div",{children:[(0,a.jsx)("button",{onClick:()=>f({tool:"askForConfirmation",toolCallId:e,output:"Yes, confirmed"}),children:"Yes"}),(0,a.jsx)("button",{onClick:()=>f({tool:"askForConfirmation",toolCallId:e,output:"No, denied"}),children:"No"})]})]},e);case"output-available":return(0,a.jsxs)("div",{children:["Tool call allowed: ",t.output]},e);case"output-error":return(0,a.jsxs)("div",{children:["Error: ",t.errorText]},e)}}if((null===(l=t.type)||void 0===l?void 0:l.toLowerCase().includes("preview_pdf"))||(null===(n=t.type)||void 0===n?void 0:n.toLowerCase().includes("pdf_file_in_a_web_view"))){let e=JSON.parse(null!==(c=null===(d=t.output)||void 0===d?void 0:d.result)&&void 0!==c?c:"{}");if(!(null==e?void 0:e.url))return(0,a.jsxs)("div",{children:["No URL provided for PDF preview ",JSON.stringify(e)]});let s="".concat(e.url,"#page=").concat(null!==(m=e.page)&&void 0!==m?m:1);return(0,a.jsx)("iframe",{src:s,style:{width:"100%",height:"100vh"},title:"PDF viewer"})}if((null===(o=t.type)||void 0===o?void 0:o.toLowerCase())==="tool-todo_write"||(null===(i=t.type)||void 0===i?void 0:i.toLowerCase())==="tool-todo_read"){let e=t.output;if(!(null==e?void 0:e.result))return null;let s=t.state;return(0,a.jsx)(U,{todos:e.result,showPriority:!0,state:s})}if((t.type.startsWith("tool-")||"dynamic-tool"===t.type)&&p&&x){let e=t.toolCallId;return(0,a.jsx)(p,{untypedToolPart:t,callId:e,addToContext:x},e)}return"file"===t.type&&(null===(g=t.mediaType)||void 0===g?void 0:g.startsWith("image/"))?(0,a.jsx)(F.default,{src:t.url,width:300,height:300,alt:"Generated image"},"".concat(e.id,"-").concat(r)):"source-url"===t.type?(0,a.jsxs)(w,{children:[(0,a.jsx)(C,{count:e.parts.filter(e=>"source-url"===e.type).length}),(0,a.jsx)(T,{children:e.parts.map((t,s)=>{if("source-url"===t.type)return(0,a.jsx)(_,{href:t.url,title:t.title},"".concat(e.id,"-").concat(s))})},"".concat(e.id))]},"".concat(e.id,"-").concat(r)):"reasoning"===t.type?(0,a.jsxs)(N,{className:"w-full",isStreaming:"streaming"===s,children:[(0,a.jsx)(j,{}),(0,a.jsx)(b,{children:t.text})]},"".concat(e.id,"-").concat(r)):null}),D.length>0&&(0,a.jsx)("div",{className:"grid grid-cols-6 min-w-[500px] gap-2 mt-3 mb-3",children:D.map(t=>(0,a.jsx)(V.jU,{s3Key:t.s3Key,onRemove:()=>{},active:!1,disabled:!1},t.s3Key+"_file_item_"+e.id))}),i&&"assistant"===e.role&&(0,a.jsxs)(d,{className:"mt-2",children:[m&&(0,a.jsx)(c,{onClick:()=>m(),label:"Retry",disabled:!g,children:(0,a.jsx)(k.Z,{className:"size-3"})}),(0,a.jsx)(c,{onClick:()=>{navigator.clipboard.writeText(e.parts.map(e=>(null==e?void 0:e.text)||"").join("\n")),v({title:"Copied message",description:"The message was copied to your clipboard."})},label:"Copy",children:(0,a.jsx)(R.Z,{className:"size-3"})}),(null==z?void 0:z.totalTokens)&&(0,a.jsxs)("small",{className:"text-muted-foreground",children:[Intl.NumberFormat("en-US").format(null==z?void 0:z.totalTokens)," tokens"]})]})]})},e.id)})})}},37099:function(e,t,s){s.d(t,{OL:function(){return g},_T:function(){return u},aR:function(){return i},f$:function(){return p},fY:function(){return m},le:function(){return h},xo:function(){return f},yT:function(){return x}});var a=s(57437),r=s(23619),l=s(2265),n=s(62869),o=s(94508);let i=r.fC;r.xz;let d=r.h_,c=l.forwardRef((e,t)=>{let{className:s,...l}=e;return(0,a.jsx)(r.aV,{className:(0,o.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",s),...l,ref:t})});c.displayName=r.aV.displayName;let u=l.forwardRef((e,t)=>{let{className:s,...l}=e;return(0,a.jsxs)(d,{children:[(0,a.jsx)(c,{}),(0,a.jsx)(r.VY,{ref:t,className:(0,o.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",s),...l})]})});u.displayName=r.VY.displayName;let m=e=>{let{className:t,...s}=e;return(0,a.jsx)("div",{className:(0,o.cn)("flex flex-col space-y-2 text-center sm:text-left",t),...s})};m.displayName="AlertDialogHeader";let f=e=>{let{className:t,...s}=e;return(0,a.jsx)("div",{className:(0,o.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...s})};f.displayName="AlertDialogFooter";let p=l.forwardRef((e,t)=>{let{className:s,...l}=e;return(0,a.jsx)(r.Dx,{ref:t,className:(0,o.cn)("text-lg font-semibold",s),...l})});p.displayName=r.Dx.displayName;let x=l.forwardRef((e,t)=>{let{className:s,...l}=e;return(0,a.jsx)(r.dk,{ref:t,className:(0,o.cn)("text-sm text-muted-foreground",s),...l})});x.displayName=r.dk.displayName;let g=l.forwardRef((e,t)=>{let{className:s,...l}=e;return(0,a.jsx)(r.aU,{ref:t,className:(0,o.cn)((0,n.d)(),s),...l})});g.displayName=r.aU.displayName;let h=l.forwardRef((e,t)=>{let{className:s,...l}=e;return(0,a.jsx)(r.$j,{ref:t,className:(0,o.cn)((0,n.d)({variant:"outline"}),"mt-2 sm:mt-0",s),...l})});h.displayName=r.$j.displayName},35974:function(e,t,s){s.d(t,{C:function(){return o}});var a=s(57437),r=s(90535);s(2265);var l=s(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 o(e){let{className:t,variant:s,...r}=e;return(0,a.jsx)("div",{className:(0,l.cn)(n({variant:s}),t),...r})}},66070:function(e,t,s){s.d(t,{Ol:function(){return o},SZ:function(){return d},Zb:function(){return n},aY:function(){return c},eW:function(){return u},ll:function(){return i}});var a=s(57437),r=s(2265),l=s(94508);let n=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",s),...r})});n.displayName="Card";let o=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("flex flex-col space-y-1.5 p-6",s),...r})});o.displayName="CardHeader";let i=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("h3",{ref:t,className:(0,l.cn)("text-2xl font-semibold leading-none tracking-tight",s),...r})});i.displayName="CardTitle";let d=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("p",{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",s),...r})});d.displayName="CardDescription";let c=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("p-6 pt-0",s),...r})});c.displayName="CardContent";let u=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("flex items-center p-6 pt-0",s),...r})});u.displayName="CardFooter"},26110:function(e,t,s){s.d(t,{$N:function(){return x},Be:function(){return g},Vq:function(){return i},cN:function(){return p},cZ:function(){return m},fK:function(){return f},hg:function(){return d}});var a=s(57437),r=s(34567),l=s(32489),n=s(2265),o=s(94508);let i=r.fC,d=r.xz,c=r.h_;r.x8;let u=n.forwardRef((e,t)=>{let{className:s,...l}=e;return(0,a.jsx)(r.aV,{ref:t,className:(0,o.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",s),...l})});u.displayName=r.aV.displayName;let m=n.forwardRef((e,t)=>{let{className:s,children:n,...i}=e;return(0,a.jsxs)(c,{children:[(0,a.jsx)(u,{}),(0,a.jsxs)(r.VY,{ref:t,className:(0,o.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",s),...i,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"})]})]})]})});m.displayName=r.VY.displayName;let f=e=>{let{className:t,...s}=e;return(0,a.jsx)("div",{className:(0,o.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...s})};f.displayName="DialogHeader";let p=e=>{let{className:t,...s}=e;return(0,a.jsx)("div",{className:(0,o.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...s})};p.displayName="DialogFooter";let x=n.forwardRef((e,t)=>{let{className:s,...l}=e;return(0,a.jsx)(r.Dx,{ref:t,className:(0,o.cn)("text-lg font-semibold leading-none tracking-tight",s),...l})});x.displayName=r.Dx.displayName;let g=n.forwardRef((e,t)=>{let{className:s,...l}=e;return(0,a.jsx)(r.dk,{ref:t,className:(0,o.cn)("text-sm text-muted-foreground",s),...l})});g.displayName=r.dk.displayName},26815:function(e,t,s){s.d(t,{_:function(){return d}});var a=s(57437),r=s(6394),l=s(90535),n=s(2265),o=s(94508);let i=(0,l.j)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),d=n.forwardRef((e,t)=>{let{className:s,...l}=e;return(0,a.jsx)(r.f,{ref:t,className:(0,o.cn)(i(),s),...l})});d.displayName=r.f.displayName},19378:function(e,t,s){s.d(t,{B:function(){return i},x:function(){return o}});var a=s(57437),r=s(14488),l=s(2265),n=s(94508);let o=l.forwardRef((e,t)=>{let{className:s,children:l,...o}=e;return(0,a.jsxs)(r.fC,{ref:t,className:(0,n.cn)("relative overflow-hidden",s),...o,children:[(0,a.jsx)(r.l_,{className:"size-full rounded-[inherit]",children:l}),(0,a.jsx)(i,{}),(0,a.jsx)(r.Ns,{})]})});o.displayName=r.fC.displayName;let i=l.forwardRef((e,t)=>{let{className:s,orientation:l="vertical",...o}=e;return(0,a.jsx)(r.gb,{ref:t,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]",s),...o,children:(0,a.jsx)(r.q4,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=r.gb.displayName},73578:function(e,t,s){s.d(t,{RM:function(){return i},Rn:function(){return m},SC:function(){return d},iA:function(){return n},pj:function(){return u},ss:function(){return c},xD:function(){return o}});var a=s(57437),r=s(2265),l=s(94508);let n=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("div",{className:"relative w-full overflow-auto",children:(0,a.jsx)("table",{ref:t,className:(0,l.cn)("w-full caption-bottom text-sm",s),...r})})});n.displayName="Table";let o=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("thead",{ref:t,className:(0,l.cn)("[&_tr]:border-b",s),...r})});o.displayName="TableHeader";let i=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("tbody",{ref:t,className:(0,l.cn)("[&_tr:last-child]:border-0",s),...r})});i.displayName="TableBody",r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("tfoot",{ref:t,className:(0,l.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",s),...r})}).displayName="TableFooter";let d=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("tr",{ref:t,className:(0,l.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",s),...r})});d.displayName="TableRow";let c=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("th",{ref:t,className:(0,l.cn)("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&:has([role=checkbox])]:w-[40px]",s),...r})});c.displayName="TableHead";let u=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("td",{ref:t,className:(0,l.cn)("p-4 align-middle [&:has([role=checkbox])]:pr-0 [&:has([role=checkbox])]:w-[40px]",s),...r})});u.displayName="TableCell";let m=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)("caption",{ref:t,className:(0,l.cn)("mt-4 text-sm text-muted-foreground",s),...r})});m.displayName="TableCaption"},76818:function(e,t,s){s.d(t,{g:function(){return n}});var a=s(57437),r=s(2265),l=s(94508);let n=r.forwardRef((e,t)=>{let{className:s,...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",s),ref:t,...r})});n.displayName="Textarea"}}]);
2
+ //# sourceMappingURL=1685-939396dad2f8f1e0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/chunks/1685-939396dad2f8f1e0.js","mappings":"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","sources":["webpack://_N_E/./app/(application)/evals/cases/components/test-case-modal.tsx","webpack://_N_E/./components/ai-elements/conversation.tsx","webpack://_N_E/./components/ai-elements/message.tsx","webpack://_N_E/./components/ai-elements/actions.tsx","webpack://_N_E/./components/ai-elements/reasoning.tsx","webpack://_N_E/./components/ai-elements/source.tsx","webpack://_N_E/./components/ai-elements/todo-list.tsx","webpack://_N_E/./components/message-renderer.tsx","webpack://_N_E/./components/ui/alert-dialog.tsx","webpack://_N_E/./components/ui/badge.tsx","webpack://_N_E/./components/ui/card.tsx","webpack://_N_E/./components/ui/dialog.tsx","webpack://_N_E/./components/ui/label.tsx","webpack://_N_E/./components/ui/scroll-area.tsx","webpack://_N_E/./components/ui/table.tsx","webpack://_N_E/./components/ui/textarea.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useEffect, useMemo } from \"react\";\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport { Loader2, Plus, MessageSquare, Info, Sparkles, Settings2, FileText, AlertCircle } from \"lucide-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 { CREATE_TEST_CASE, UPDATE_TEST_CASE, GET_TOOLS } from \"@/queries/queries\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { TestCase } from \"@/types/models/test-case\";\nimport { Tool } from \"@EXULU_SHARED/models/tool\";\nimport { UIMessage, FileUIPart } from \"ai\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport UppyDashboard, { FileItem, getPresignedUrl } from \"@/components/uppy-dashboard\";\nimport { MessageRenderer } from \"@/components/message-renderer\";\nimport { Conversation, ConversationContent } from \"@/components/ai-elements/conversation\";\n\ninterface TestCaseModalProps {\n open: boolean;\n onClose: () => void;\n onSuccess: () => void;\n testCase?: TestCase | null;\n evalSetId?: string;\n}\n\nexport function TestCaseModal({\n open,\n onClose,\n evalSetId,\n onSuccess,\n testCase,\n}: TestCaseModalProps) {\n const { toast } = useToast();\n const isEditing = !!testCase;\n\n // Fetch tools from server\n const { data: toolsData } = useQuery<{\n tools: {\n items: Tool[]\n }\n }>(GET_TOOLS, {\n variables: { page: 1, limit: 100 },\n });\n\n // Split tools by type\n const { regularTools, agentTools, knowledgeSourceTools } = useMemo(() => {\n const tools = toolsData?.tools?.items || [];\n console.log(\"tools\", tools);\n return {\n regularTools: tools.filter(t => t.type === \"function\"),\n agentTools: tools.filter(t => t.type === \"agent\"),\n knowledgeSourceTools: tools.filter(t => t.type === \"context\"),\n };\n }, [toolsData]);\n\n // Basic fields\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [expectedOutput, setExpectedOutput] = useState(\"\");\n\n // Conversation inputs (UIMessage array)\n const [inputs, setInputs] = useState<UIMessage[]>([]);\n const [currentInput, setCurrentInput] = useState(\"\");\n const [currentFiles, setCurrentFiles] = useState<string[] | null>(null);\n const [currentFileParts, setCurrentFileParts] = useState<FileUIPart[]>([]);\n\n // Optional expected fields\n const [expectedTools, setExpectedTools] = useState<string[]>([]);\n const [expectedKnowledgeSources, setExpectedKnowledgeSources] = useState<string[]>([]);\n const [expectedAgentTools, setExpectedAgentTools] = useState<string[]>([]);\n\n // Temp selectors\n const [selectedTool, setSelectedTool] = useState<string>(\"\");\n const [selectedContext, setSelectedContext] = useState<string>(\"\");\n const [selectedAgent, setSelectedAgent] = useState<string>(\"\");\n\n useEffect(() => {\n if (testCase && open) {\n setName(testCase.name);\n setDescription(testCase.description || \"\");\n setExpectedOutput(testCase.expected_output);\n setInputs(testCase.inputs || []);\n setExpectedTools(testCase.expected_tools || []);\n setExpectedKnowledgeSources(testCase.expected_knowledge_sources || []);\n setExpectedAgentTools(testCase.expected_agent_tools || []);\n } else if (!open) {\n // Reset when closing\n setName(\"\");\n setDescription(\"\");\n setExpectedOutput(\"\");\n setInputs([]);\n setCurrentInput(\"\");\n setCurrentFiles(null);\n setCurrentFileParts([]);\n setExpectedTools([]);\n setExpectedKnowledgeSources([]);\n setExpectedAgentTools([]);\n setSelectedTool(\"\");\n setSelectedContext(\"\");\n setSelectedAgent(\"\");\n }\n }, [testCase, open]);\n\n // Convert items to FileUIPart when files are selected\n const updateMessageFiles = async (keys: string[]) => {\n const files = await Promise.all(keys.map(async (key) => {\n /* if (!item.s3key) {\n // Take all item fields and turn into a data url\n let content = \"\";\n Object.entries(item).forEach(([key, value]) => {\n content += `${key}: ${value}\\n`\n })\n return {\n type: \"file\" as const,\n mediaType: item.type,\n filename: item.name,\n url: `data:text/plain;base64,${btoa(content)}`\n }\n } */\n\n return {\n type: \"file\" as const,\n mediaType: key.split(\".\").pop() || \"\",\n filename: key,\n url: await getPresignedUrl(key)\n }\n }))\n setCurrentFileParts(files)\n }\n\n useEffect(() => {\n if (!currentFiles || currentFiles.length === 0) {\n setCurrentFileParts([])\n return;\n }\n updateMessageFiles(currentFiles)\n }, [currentFiles])\n\n const [createTestCase, { loading: creating }] = useMutation(CREATE_TEST_CASE, {\n onCompleted: () => {\n toast({\n title: \"Test case created\",\n description: \"The test case has been successfully created.\",\n });\n onSuccess();\n },\n onError: (error) => {\n toast({\n title: \"Failed to create test case\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const [updateTestCase, { loading: updating }] = useMutation(UPDATE_TEST_CASE, {\n onCompleted: () => {\n toast({\n title: \"Test case updated\",\n description: \"The test case has been successfully updated.\",\n });\n onSuccess();\n },\n onError: (error) => {\n toast({\n title: \"Failed to update test case\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const handleAddMessage = () => {\n if (!currentInput.trim() && currentFileParts.length === 0) return;\n\n const parts: any[] = [];\n\n if (currentInput.trim()) {\n parts.push({\n type: \"text\",\n text: currentInput.trim(),\n });\n }\n\n // Add file parts\n if (currentFileParts.length > 0) {\n parts.push(...currentFileParts);\n }\n\n const newMessage: UIMessage = {\n id: `msg-${Date.now()}`,\n role: \"user\",\n parts,\n };\n\n const placeholderMessage: UIMessage = {\n id: `msg-${Date.now()}`,\n role: \"assistant\",\n metadata: {\n type: \"placeholder\",\n },\n parts: [{\n type: \"text\",\n text: \"💬 Placeholder, generated agent response will be added here when the test case is run...\",\n }],\n };\n\n setInputs([...inputs, newMessage, placeholderMessage]);\n setCurrentInput(\"\");\n setCurrentFiles(null);\n setCurrentFileParts([]);\n };\n\n const handleRemoveMessage = (index: number) => {\n setInputs(inputs.filter((_, i) => i !== index));\n };\n\n const handleAddTool = () => {\n console.log(\"selectedTool\", selectedTool);\n console.log(\"expectedTools\", expectedTools);\n if (selectedTool && !expectedTools.includes(selectedTool)) {\n console.log(\"adding tool\", selectedTool);\n console.log(\"new expectedTools\", [...expectedTools, selectedTool]);\n setExpectedTools([...expectedTools, selectedTool]);\n setSelectedTool(\"\");\n }\n };\n\n const handleAddContext = () => {\n console.log(\"selectedContext\", selectedContext);\n console.log(\"expectedKnowledgeSources\", expectedKnowledgeSources);\n if (selectedContext && !expectedKnowledgeSources.includes(selectedContext)) {\n console.log(\"adding context\", selectedContext);\n console.log(\"new expectedKnowledgeSources\", [...expectedKnowledgeSources, selectedContext]);\n setExpectedKnowledgeSources([...expectedKnowledgeSources, selectedContext]);\n setSelectedContext(\"\");\n }\n };\n\n const handleAddAgent = () => {\n console.log(\"selectedAgent\", selectedAgent);\n console.log(\"expectedAgentTools\", expectedAgentTools);\n if (selectedAgent && !expectedAgentTools.includes(selectedAgent)) {\n console.log(\"adding agent\", selectedAgent);\n console.log(\"new expectedAgentTools\", [...expectedAgentTools, selectedAgent]);\n setExpectedAgentTools([...expectedAgentTools, selectedAgent]);\n setSelectedAgent(\"\");\n }\n };\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!name.trim() || !expectedOutput.trim() || inputs.length === 0) {\n toast({\n title: \"Validation error\",\n description: \"Name, at least one input message, and expected output are required.\",\n variant: \"destructive\",\n });\n return;\n }\n\n const data = {\n name: name.trim(),\n description: description.trim() || null,\n inputs,\n expected_output: expectedOutput.trim(),\n expected_tools: expectedTools.length > 0 ? expectedTools : null,\n expected_knowledge_sources: expectedKnowledgeSources.length > 0 ? expectedKnowledgeSources : null,\n expected_agent_tools: expectedAgentTools.length > 0 ? expectedAgentTools : null,\n ...(evalSetId ? { eval_set_id: evalSetId } : {}),\n };\n\n if (isEditing) {\n updateTestCase({\n variables: {\n id: testCase.id,\n data,\n },\n });\n } else {\n createTestCase({\n variables: {\n data,\n },\n });\n }\n };\n\n const loading = creating || updating;\n\n const getToolName = (id: string) => {\n const tool = regularTools.find(t => t.id === id);\n return tool?.name || id;\n };\n\n const getContextName = (id: string) => {\n const context = knowledgeSourceTools.find(t => t.id === id);\n return context?.name || id;\n };\n\n const getAgentName = (id: string) => {\n const agent = agentTools.find(t => t.id === id);\n return agent?.name || id;\n };\n\n const getFileCount = (message: UIMessage) => {\n return message.parts.filter(part => part.type === \"file\").length;\n };\n\n return (\n <Dialog open={open} onOpenChange={onClose}>\n <DialogContent className=\"max-w-4xl max-h-[90vh] overflow-hidden flex flex-col\">\n <DialogHeader>\n <DialogTitle>{isEditing ? \"Edit Test Case\" : \"Create Test Case\"} {evalSetId ? `for Eval Set: ${evalSetId}` : \"\"}</DialogTitle>\n <DialogDescription>\n {isEditing ? \"Update the test case details.\" : \"Create a new test case with conversation inputs and expected outputs.\"}\n </DialogDescription>\n </DialogHeader>\n\n <form onSubmit={handleSubmit} className=\"flex-1 overflow-hidden flex flex-col\">\n <Tabs defaultValue=\"basic\" className=\"flex-1 overflow-hidden flex flex-col\">\n <TabsList className=\"grid w-full grid-cols-2\">\n <TabsTrigger value=\"basic\" className=\"gap-2\">\n <Info className=\"h-4 w-4\" />\n Basic Info\n </TabsTrigger>\n <TabsTrigger value=\"conversation\" className=\"gap-2\">\n <MessageSquare className=\"h-4 w-4\" />\n Conversation\n </TabsTrigger>\n {/* <TabsTrigger value=\"expected\" className=\"gap-2\">\n <Settings2 className=\"h-4 w-4\" />\n Expected Tools\n </TabsTrigger> */}\n </TabsList>\n\n <ScrollArea className=\"flex-1\">\n <TabsContent value=\"basic\" className=\"space-y-4 p-1 mt-4\">\n <div className=\"grid gap-5\">\n <div className=\"grid gap-2\">\n <Label htmlFor=\"name\">Name *</Label>\n <Input\n id=\"name\"\n placeholder=\"e.g., Customer Support - Refund Request\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n disabled={loading}\n required\n />\n </div>\n <div className=\"grid gap-2\">\n <Label htmlFor=\"description\">Description</Label>\n <Textarea\n id=\"description\"\n placeholder=\"Describe what this test case evaluates...\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n disabled={loading}\n rows={3}\n />\n </div>\n <div className=\"grid gap-2\">\n <Label htmlFor=\"expectedOutput\">Expected Output *</Label>\n <Textarea\n id=\"expectedOutput\"\n placeholder=\"Describe the expected final output (e.g., 'A JSON object containing refund details', 'An empathetic response offering alternatives')\"\n value={expectedOutput}\n onChange={(e) => setExpectedOutput(e.target.value)}\n disabled={loading}\n rows={4}\n required\n />\n <p className=\"text-xs text-muted-foreground\">\n This can be an exact expected response or a description of what the output should contain.\n </p>\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"conversation\" className=\"space-y-4 p-1 mt-4\">\n <Card>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between\">\n <div>\n <CardTitle className=\"text-sm flex items-center gap-2\">\n <MessageSquare className=\"h-4 w-4\" />\n Conversation Flow\n {inputs.length > 0 && (\n <Badge variant=\"secondary\" className=\"ml-2\">\n {inputs.length} {inputs.length === 1 ? 'message' : 'messages'}\n </Badge>\n )}\n </CardTitle>\n <CardDescription className=\"mt-1.5\">\n Add user messages in order. The agent will run through this conversation flow and respond between each message automatically.\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-6\">\n\n {inputs?.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-12 px-4 text-center border-2 border-dashed border-muted rounded-lg\">\n <Sparkles className=\"h-12 w-12 text-muted-foreground/50 mb-4\" />\n <h3 className=\"font-semibold text-lg mb-2\">No messages yet</h3>\n <p className=\"text-sm text-muted-foreground max-w-sm\">\n Start building your test conversation by adding user messages below.\n </p>\n </div>\n ) : (\n /* @ts-ignore */\n <Conversation className=\"max-h-[350px] overflow-y-auto border rounded-lg bg-muted/30 transition-all duration-300 ease-in-out\">\n {/* @ts-ignore */}\n <ConversationContent className=\"px-6 py-4\">\n <div className=\"animate-in fade-in duration-500\">\n <MessageRenderer\n messages={inputs}\n config={{\n marginTopFirstMessage: 'mt-0',\n customAssistantClassnames: 'bg-secondary/50 rounded-lg px-3 py-1 border-l-2 border-primary/30'\n }}\n status={\"ready\"}\n showActions={false}\n writeAccess={false}\n />\n </div>\n </ConversationContent>\n </Conversation>\n )}\n\n <div className=\"space-y-3 pt-2 border-t\">\n <Label htmlFor=\"currentInput\" className=\"text-sm font-semibold\">Add User Message</Label>\n <div className=\"space-y-3\">\n <Textarea\n id=\"currentInput\"\n placeholder=\"Type the user's message...\"\n value={currentInput}\n onChange={(e) => setCurrentInput(e.target.value)}\n disabled={loading}\n rows={2}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleAddMessage();\n }\n }}\n />\n\n <div className=\"flex items-center gap-2\">\n <UppyDashboard\n id=\"test-case-files\"\n selectionLimit={10}\n allowedFileTypes={[\n '.png', '.jpg', '.jpeg', '.gif', '.webp',\n '.pdf', '.docx', '.xlsx', '.xls', '.csv', '.pptx', '.ppt',\n '.mp3', '.wav', '.m4a', '.mp4', '.mpeg'\n ]}\n dependencies={[]}\n onConfirm={(items) => {\n setCurrentFiles(items)\n }}\n />\n\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddMessage}\n disabled={loading || (!currentInput.trim() && currentFileParts.length === 0)}\n className=\"ml-auto\"\n size=\"default\"\n >\n <Plus className=\"h-4 w-4 mr-2\" />\n Add Message\n </Button>\n </div>\n\n {currentFiles && currentFiles.length > 0 && (\n <>\n <div className=\"grid grid-cols-3 gap-2\">\n {currentFiles.map((item) => (\n <FileItem\n s3Key={item}\n disabled={true}\n active={false}\n onRemove={() => {\n setCurrentFiles(currentFiles?.filter((i) => i !== item))\n }}\n />\n ))}\n </div>\n <div className=\"flex items-start gap-2 p-3 bg-amber-500/10 border border-amber-500/20 rounded-lg\">\n <AlertCircle className=\"h-4 w-4 text-amber-600 dark:text-amber-500 mt-0.5 flex-shrink-0\" />\n <p className=\"text-xs text-amber-900 dark:text-amber-200\">\n <strong>Note:</strong> When running this test case, ensure the selected agent supports the file types you've attached here (images, documents, audio, etc.).\n </p>\n </div>\n </>\n )}\n </div>\n <p className=\"text-xs text-muted-foreground\">\n Press Enter to add, Shift+Enter for new line. You can attach files to messages.\n </p>\n </div>\n </CardContent>\n </Card>\n </TabsContent>\n\n {/* <TabsContent value=\"expected\" className=\"space-y-4 p-1 mt-4\">\n <div className=\"grid gap-5\">\n <Card className=\"border-l-2 border-l-blue-500/30\">\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm flex items-center gap-2\">\n <Settings2 className=\"h-4 w-4\" />\n Expected Tools (Optional)\n {expectedTools.length > 0 && (\n <Badge variant=\"secondary\" className=\"ml-2\">\n {expectedTools.length}\n </Badge>\n )}\n </CardTitle>\n <CardDescription>Regular tools that should be used during the conversation</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <div className=\"flex gap-2 flex-wrap\">\n {expectedTools.map((toolId, index) => (\n <Badge key={index} variant=\"secondary\">\n {getToolName(toolId)}\n <button\n type=\"button\"\n onClick={() => setExpectedTools(expectedTools.filter((_, i) => i !== index))}\n className=\"ml-2 hover:text-destructive\">\n ×\n </button>\n </Badge>\n ))}\n </div>\n <div className=\"flex gap-2\">\n <Select value={selectedTool} onValueChange={setSelectedTool} disabled={loading}>\n <SelectTrigger className=\"flex-1\">\n <SelectValue placeholder=\"Select a tool to add...\" />\n </SelectTrigger>\n <SelectContent>\n {regularTools.map((tool) => (\n <SelectItem key={tool.id} value={tool.id}>\n {tool.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Button\n type=\"button\"\n onClick={handleAddTool}\n disabled={loading || !selectedTool}\n className=\"gap-1.5\"\n variant={selectedTool ? \"default\" : \"outline\"}\n >\n <Plus className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">Add</span>\n </Button>\n </div>\n {!selectedTool && (\n <p className=\"text-xs text-muted-foreground/75 italic\">\n Select a tool from the dropdown, then click Add\n </p>\n )}\n </CardContent>\n </Card>\n\n <Card className=\"border-l-2 border-l-purple-500/30\">\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm flex items-center gap-2\">\n <FileText className=\"h-4 w-4\" />\n Expected Knowledge Sources (Optional)\n {expectedKnowledgeSources.length > 0 && (\n <Badge variant=\"secondary\" className=\"ml-2\">\n {expectedKnowledgeSources.length}\n </Badge>\n )}\n </CardTitle>\n <CardDescription>Context/knowledge sources that should be used</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <div className=\"flex gap-2 flex-wrap\">\n {expectedKnowledgeSources.map((contextId, index) => (\n <Badge key={index} variant=\"secondary\">\n {getContextName(contextId)}\n <button\n type=\"button\"\n onClick={() => setExpectedKnowledgeSources(expectedKnowledgeSources.filter((_, i) => i !== index))}\n className=\"ml-2 hover:text-destructive\"\n >\n ×\n </button>\n </Badge>\n ))}\n </div>\n <div className=\"flex gap-2\">\n <Select value={selectedContext} onValueChange={setSelectedContext} disabled={loading}>\n <SelectTrigger className=\"flex-1\">\n <SelectValue placeholder=\"Select a knowledge source to add...\" />\n </SelectTrigger>\n <SelectContent>\n {knowledgeSourceTools.map((context) => (\n <SelectItem key={context.id} value={context.id}>\n {context.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Button\n type=\"button\"\n onClick={handleAddContext}\n disabled={loading || !selectedContext}\n className=\"gap-1.5\"\n variant={selectedContext ? \"default\" : \"outline\"}\n >\n <Plus className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">Add</span>\n </Button>\n </div>\n {!selectedContext && (\n <p className=\"text-xs text-muted-foreground/75 italic\">\n Select a knowledge source from the dropdown, then click Add\n </p>\n )}\n </CardContent>\n </Card>\n\n <Card className=\"border-l-2 border-l-green-500/30\">\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm flex items-center gap-2\">\n <Sparkles className=\"h-4 w-4\" />\n Expected Agent Tools (Optional)\n {expectedAgentTools.length > 0 && (\n <Badge variant=\"secondary\" className=\"ml-2\">\n {expectedAgentTools.length}\n </Badge>\n )}\n </CardTitle>\n <CardDescription>Agents that should be called as tools</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <div className=\"flex gap-2 flex-wrap\">\n {expectedAgentTools.map((agentId, index) => (\n <Badge key={index} variant=\"secondary\">\n {getAgentName(agentId)}\n <button\n type=\"button\"\n onClick={() => setExpectedAgentTools(expectedAgentTools.filter((_, i) => i !== index))}\n className=\"ml-2 hover:text-destructive\"\n >\n ×\n </button>\n </Badge>\n ))}\n </div>\n <div className=\"flex gap-2\">\n <Select value={selectedAgent} onValueChange={setSelectedAgent} disabled={loading}>\n <SelectTrigger className=\"flex-1\">\n <SelectValue placeholder=\"Select an agent to add...\" />\n </SelectTrigger>\n <SelectContent>\n {agentTools.map((agent) => (\n <SelectItem key={agent.id} value={agent.id}>\n {agent.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Button\n type=\"button\"\n onClick={handleAddAgent}\n disabled={loading || !selectedAgent}\n className=\"gap-1.5\"\n variant={selectedAgent ? \"default\" : \"outline\"}\n >\n <Plus className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">Add</span>\n </Button>\n </div>\n {!selectedAgent && (\n <p className=\"text-xs text-muted-foreground/75 italic\">\n Select an agent from the dropdown, then click Add\n </p>\n )}\n </CardContent>\n </Card>\n </div>\n </TabsContent> */}\n </ScrollArea>\n </Tabs>\n\n <DialogFooter className=\"mt-4 gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={onClose}\n disabled={loading}\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n disabled={loading || !name.trim() || !expectedOutput.trim() || inputs.length === 0}\n className=\"shadow-sm hover:shadow-md transition-all\"\n >\n {loading && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n {isEditing ? \"Update Test Case\" : \"Create Test Case\"}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog >\n );\n}\n","'use client';\n\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/lib/utils';\nimport { ArrowDownIcon } from 'lucide-react';\nimport type { ComponentProps } from 'react';\nimport { useCallback } from 'react';\nimport { StickToBottom, useStickToBottomContext } from 'use-stick-to-bottom';\n\n// @ts-ignore\nexport type ConversationProps = ComponentProps<typeof StickToBottom>;\n\n// @ts-ignore\nexport const Conversation = ({ className, ...props }: ConversationProps) => (\n// @ts-ignore\n <StickToBottom\n className={cn('relative flex-1 overflow-y-auto', className)}\n initial=\"smooth\"\n resize=\"smooth\"\n role=\"log\"\n {...props}\n />\n);\n\nexport type ConversationContentProps = ComponentProps<\n // @ts-ignore\n typeof StickToBottom.Content\n>;\n\nexport const ConversationContent = ({\n // @ts-ignore\n className,\n ...props\n}: ConversationContentProps) => (\n // @ts-ignore\n <StickToBottom.Content className={cn('p-4', className)} {...props} />\n);\n\nexport type ConversationScrollButtonProps = ComponentProps<typeof Button>;\n\nexport const ConversationScrollButton = ({\n className,\n ...props\n}: ConversationScrollButtonProps) => {\n const { isAtBottom, scrollToBottom } = useStickToBottomContext();\n\n const handleScrollToBottom = useCallback(() => {\n scrollToBottom();\n }, [scrollToBottom]);\n\n return (\n !isAtBottom && (\n <Button\n className={cn(\n 'absolute bottom-4 left-[50%] translate-x-[-50%] rounded-full',\n className\n )}\n onClick={handleScrollToBottom}\n size=\"icon\"\n type=\"button\"\n variant=\"outline\"\n {...props}\n >\n <ArrowDownIcon className=\"size-4\" />\n </Button>\n )\n );\n};\n","import {\n Avatar,\n AvatarFallback,\n AvatarImage,\n} from '@/components/ui/avatar';\nimport { cn } from '@/lib/utils';\nimport type { UIMessage } from 'ai';\nimport type { ComponentProps, HTMLAttributes } from 'react';\n\nexport type MessageProps = HTMLAttributes<HTMLDivElement> & {\n from: UIMessage['role'];\n};\n\nexport const Message = ({ className, from, ...props }: MessageProps) => (\n <div\n className={cn(\n 'group flex w-full items-end justify-end gap-2 py-4',\n from === 'user' ? 'is-user flex-row-reverse justify-end' : 'is-assistant flex-row-reverse justify-end',\n '[&>div]:max-w-[80%]',\n className\n )}\n {...props}\n />\n);\n\nexport type MessageContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const MessageContent = ({\n children,\n className,\n ...props\n}: MessageContentProps) => (\n <div\n className={cn(\n 'flex flex-col gap-2 overflow-hidden rounded-lg py-3 text-foreground text-sm',\n 'group-[.is-user]:bg-secondary group-[.is-user]:text-primary-foreground group-[.is-user]:px-4',\n 'group-[.is-assistant]:bg-transparent group-[.is-assistant]:text-foreground',\n className\n )}\n {...props}\n >\n <div className=\"is-user:dark\">{children}</div>\n </div>\n);\n\nexport type MessageAvatarProps = ComponentProps<typeof Avatar> & {\n src: string;\n name?: string;\n};\n\nexport const MessageAvatar = ({\n src,\n name,\n className,\n ...props\n}: MessageAvatarProps) => (\n <Avatar\n className={cn('size-8 ring ring-1 ring-border', className)}\n {...props}\n >\n <AvatarImage alt=\"\" className=\"mt-0 mb-0\" src={src} />\n <AvatarFallback>{name?.slice(0, 2) || 'ME'}</AvatarFallback>\n </Avatar>\n);\n","'use client';\n\nimport { Button } from '@/components/ui/button';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/components/ui/tooltip';\nimport { cn } from '@/lib/utils';\nimport type { ComponentProps } from 'react';\n\nexport type ActionsProps = ComponentProps<'div'>;\n\nexport const Actions = ({ className, children, ...props }: ActionsProps) => (\n <div className={cn('flex items-center gap-1', className)} {...props}>\n {children}\n </div>\n);\n\nexport type ActionProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n label?: string;\n};\n\nexport const Action = ({\n tooltip,\n children,\n label,\n className,\n variant = 'ghost',\n size = 'sm',\n ...props\n}: ActionProps) => {\n const button = (\n <Button\n className={cn(\n 'size-9 p-1.5 text-muted-foreground hover:text-foreground',\n className\n )}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n {children}\n <span className=\"sr-only\">{label || tooltip}</span>\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n};\n","'use client';\n\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport { cn } from '@/lib/utils';\nimport { BrainIcon, ChevronDownIcon } from 'lucide-react';\nimport type { ComponentProps } from 'react';\nimport { createContext, memo, useContext, useEffect, useState } from 'react';\nimport { Response } from './response';\n\ntype ReasoningContextValue = {\n isStreaming: boolean;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n duration: number;\n};\n\nconst ReasoningContext = createContext<ReasoningContextValue | null>(null);\n\nconst useReasoning = () => {\n const context = useContext(ReasoningContext);\n if (!context) {\n throw new Error('Reasoning components must be used within Reasoning');\n }\n return context;\n};\n\nexport type ReasoningProps = ComponentProps<typeof Collapsible> & {\n isStreaming?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n duration?: number;\n};\n\nconst AUTO_CLOSE_DELAY = 1000;\n\nexport const Reasoning = memo(\n ({\n className,\n isStreaming = false,\n open,\n defaultOpen = false,\n onOpenChange,\n duration: durationProp,\n children,\n ...props\n }: ReasoningProps) => {\n const [isOpen, setIsOpen] = useControllableState({\n prop: open,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n const [duration, setDuration] = useControllableState({\n prop: durationProp,\n defaultProp: 0,\n });\n\n const [hasAutoClosedRef, setHasAutoClosedRef] = useState(false);\n const [startTime, setStartTime] = useState<number | null>(null);\n\n // Track duration when streaming starts and ends\n useEffect(() => {\n if (isStreaming) {\n if (startTime === null) {\n setStartTime(Date.now());\n }\n } else if (startTime !== null) {\n setDuration(Math.round((Date.now() - startTime) / 1000));\n setStartTime(null);\n }\n }, [isStreaming, startTime, setDuration]);\n\n // Auto-open when streaming starts, auto-close when streaming ends (once only)\n useEffect(() => {\n if (isStreaming && !isOpen) {\n setIsOpen(true);\n } else if (!isStreaming && isOpen && !defaultOpen && !hasAutoClosedRef) {\n // Add a small delay before closing to allow user to see the content\n const timer = setTimeout(() => {\n setIsOpen(false);\n setHasAutoClosedRef(true);\n }, AUTO_CLOSE_DELAY);\n return () => clearTimeout(timer);\n }\n }, [isStreaming, isOpen, defaultOpen, setIsOpen, hasAutoClosedRef]);\n\n const handleOpenChange = (newOpen: boolean) => {\n setIsOpen(newOpen);\n };\n\n return (\n <ReasoningContext.Provider\n value={{ isStreaming, isOpen, setIsOpen, duration }}\n >\n <Collapsible\n className={cn('not-prose mb-4', className)}\n onOpenChange={handleOpenChange}\n open={isOpen}\n {...props}\n >\n {children}\n </Collapsible>\n </ReasoningContext.Provider>\n );\n }\n);\n\nexport type ReasoningTriggerProps = ComponentProps<\n typeof CollapsibleTrigger\n> & {\n title?: string;\n};\n\nexport const ReasoningTrigger = memo(\n ({\n className,\n title = 'Reasoning',\n children,\n ...props\n }: ReasoningTriggerProps) => {\n const { isStreaming, isOpen, duration } = useReasoning();\n\n return (\n <CollapsibleTrigger\n className={cn(\n 'flex items-center gap-2 text-muted-foreground text-sm',\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n <BrainIcon className=\"size-4\" />\n {isStreaming || duration === 0 ? (\n <p>Thinking...</p>\n ) : (\n <p>Thought for {duration} seconds</p>\n )}\n <ChevronDownIcon\n className={cn(\n 'size-4 text-muted-foreground transition-transform',\n isOpen ? 'rotate-180' : 'rotate-0'\n )}\n />\n </>\n )}\n </CollapsibleTrigger>\n );\n }\n);\n\nexport type ReasoningContentProps = ComponentProps<\n typeof CollapsibleContent\n> & {\n children: string;\n};\n\nexport const ReasoningContent = memo(\n ({ className, children, ...props }: ReasoningContentProps) => (\n <CollapsibleContent\n className={cn(\n 'mt-4 text-sm',\n 'data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in',\n className\n )}\n {...props}\n >\n <Response className=\"grid gap-2\">{children}</Response>\n </CollapsibleContent>\n )\n);\n\nReasoning.displayName = 'Reasoning';\nReasoningTrigger.displayName = 'ReasoningTrigger';\nReasoningContent.displayName = 'ReasoningContent';\n","'use client';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport { cn } from '@/lib/utils';\nimport { BookIcon, ChevronDownIcon } from 'lucide-react';\nimport type { ComponentProps } from 'react';\n\nexport type SourcesProps = ComponentProps<'div'>;\n\nexport const Sources = ({ className, ...props }: SourcesProps) => (\n // @ts-ignore\n <Collapsible\n className={cn('not-prose mb-4 text-primary text-xs', className)}\n {...props}\n />\n);\n\nexport type SourcesTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {\n count: number;\n};\n\nexport const SourcesTrigger = ({\n className,\n count,\n children,\n ...props\n}: SourcesTriggerProps) => (\n <CollapsibleTrigger className=\"flex items-center gap-2\" {...props}>\n {children ?? (\n <>\n <p className=\"font-medium\">Used {count} sources</p>\n <ChevronDownIcon className=\"h-4 w-4\" />\n </>\n )}\n </CollapsibleTrigger>\n);\n\nexport type SourcesContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const SourcesContent = ({\n className,\n ...props\n}: SourcesContentProps) => (\n <CollapsibleContent\n className={cn(\n 'mt-3 flex w-fit flex-col gap-2',\n 'data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 outline-none data-[state=closed]:animate-out data-[state=open]:animate-in',\n className\n )}\n {...props}\n />\n);\n\nexport type SourceProps = ComponentProps<'a'>;\n\nexport const Source = ({ href, title, children, ...props }: SourceProps) => (\n <a\n className=\"flex items-center gap-2\"\n href={href}\n rel=\"noreferrer\"\n target=\"_blank\"\n {...props}\n >\n {children ?? (\n <>\n <BookIcon className=\"h-4 w-4\" />\n <span className=\"block font-medium\">{title}</span>\n </>\n )}\n </a>\n);\n","'use client';\n\nimport { cn } from '@/lib/utils';\nimport { CheckCircle2, Circle, Loader2, XCircle } from 'lucide-react';\nimport type { ComponentProps } from 'react';\n\nexport interface TodoItem {\n content: string;\n status: 'pending' | 'in_progress' | 'completed' | 'cancelled';\n priority: 'high' | 'medium' | 'low';\n id: string;\n}\n\nexport interface TodoListProps extends ComponentProps<'div'> {\n todos: TodoItem[];\n showPriority?: boolean;\n state?: 'input-streaming' | 'input-available' | 'output-available' | 'output-error';\n}\n\nconst statusConfig = {\n pending: {\n icon: Circle,\n label: 'Pending',\n className: 'text-muted-foreground',\n },\n in_progress: {\n icon: Loader2,\n label: 'In Progress',\n className: 'text-blue-500 animate-spin',\n },\n completed: {\n icon: CheckCircle2,\n label: 'Completed',\n className: 'text-green-500',\n },\n cancelled: {\n icon: XCircle,\n label: 'Cancelled',\n className: 'text-red-500',\n },\n};\n\nconst priorityConfig = {\n high: {\n label: 'High',\n className: 'bg-red-500/10 text-red-500 border-red-500/20',\n },\n medium: {\n label: 'Medium',\n className: 'bg-yellow-500/10 text-yellow-500 border-yellow-500/20',\n },\n low: {\n label: 'Low',\n className: 'bg-blue-500/10 text-blue-500 border-blue-500/20',\n },\n};\n\nexport const TodoList = ({\n todos,\n showPriority = false,\n state,\n className,\n ...props\n}: TodoListProps) => {\n\n if (typeof todos === 'string') {\n todos = JSON.parse(todos);\n }\n\n if (!todos || todos.length === 0) {\n return null;\n }\n\n const isStreaming = state === 'input-streaming';\n const hasError = state === 'output-error';\n const completedCount = todos.filter((t) => t.status === 'completed').length;\n const totalCount = todos.length;\n\n return (\n <div\n className={cn(\n 'my-2 space-y-1',\n isStreaming && 'opacity-70',\n className\n )}\n {...props}\n >\n {todos.map((todo, index) => {\n const StatusIcon = statusConfig[todo.status] ? statusConfig[todo.status].icon : statusConfig.pending.icon;\n const statusClass = statusConfig[todo.status] ? statusConfig[todo.status].className : statusConfig.pending.className;\n const priorityClass = priorityConfig[todo.priority] ? priorityConfig[todo.priority].className : priorityConfig.medium.className;\n const isLastInProgress = todo.status === 'in_progress' &&\n index === todos.findIndex(t => t.status === 'in_progress');\n\n return (\n <div\n key={todo.id}\n className={cn(\n 'flex items-start gap-2 py-0.5',\n todo.status === 'cancelled' && 'opacity-50'\n )}\n >\n <div className=\"flex-shrink-0 pt-0.5\">\n <StatusIcon className={cn('size-3.5', statusClass)} />\n </div>\n\n <div className=\"min-w-0 flex-1\">\n <span\n className={cn(\n 'text-sm',\n todo.status === 'completed' && 'text-muted-foreground line-through',\n todo.status === 'cancelled' && 'text-muted-foreground line-through',\n todo.status === 'in_progress' && isLastInProgress && 'font-medium'\n )}\n >\n {todo.content}\n </span>\n\n {showPriority && todo.priority === 'high' && (\n <span className=\"ml-2 text-red-500 text-xs\">(!)</span>\n )}\n </div>\n </div>\n );\n })}\n\n {/* Compact progress indicator */}\n {totalCount > 1 && (\n <div className=\"flex items-center gap-2 pt-1 text-muted-foreground text-xs\">\n <div className=\"h-1 flex-1 overflow-hidden rounded-full bg-secondary\">\n <div\n className=\"h-full bg-primary transition-all duration-300\"\n style={{\n width: `${(completedCount / totalCount) * 100}%`,\n }}\n />\n </div>\n <span className=\"whitespace-nowrap\">\n {completedCount}/{totalCount}\n </span>\n </div>\n )}\n\n {hasError && (\n <div className=\"flex items-center gap-1 pt-1 text-red-500 text-xs\">\n <XCircle className=\"size-3\" />\n <span>Error updating tasks</span>\n </div>\n )}\n </div>\n );\n};\n\nexport type TodoItemProps = ComponentProps<'div'> & {\n todo: TodoItem;\n showPriority?: boolean;\n state?: 'input-streaming' | 'input-available' | 'output-available' | 'output-error';\n};\n\nexport const TodoItemComponent = ({\n todo,\n showPriority = false,\n state,\n className,\n ...props\n}: TodoItemProps) => {\n const StatusIcon = statusConfig[todo.status].icon;\n const statusClass = statusConfig[todo.status].className;\n const isStreaming = state === 'input-streaming';\n\n return (\n <div\n className={cn(\n 'flex items-start gap-2 py-0.5',\n todo.status === 'cancelled' && 'opacity-50',\n isStreaming && 'opacity-70',\n className\n )}\n {...props}\n >\n <div className=\"flex-shrink-0 pt-0.5\">\n <StatusIcon className={cn('size-3.5', statusClass)} />\n </div>\n\n <div className=\"min-w-0 flex-1\">\n <span\n className={cn(\n 'text-sm',\n todo.status === 'completed' && 'text-muted-foreground line-through',\n todo.status === 'cancelled' && 'text-muted-foreground line-through',\n todo.status === 'in_progress' && 'font-medium'\n )}\n >\n {todo.content}\n </span>\n\n {showPriority && todo.priority === 'high' && (\n <span className=\"ml-2 text-red-500 text-xs\">(!)</span>\n )}\n </div>\n </div>\n );\n};\n","\"use client\"\n\nimport { DynamicToolUIPart, UIMessage } from \"ai\"\nimport { Message, MessageContent } from '@/components/ai-elements/message'\nimport { Actions, Action } from '@/components/ai-elements/actions'\nimport { Response } from '@/components/ai-elements/response'\nimport { Reasoning, ReasoningTrigger, ReasoningContent } from \"@/components/ai-elements/reasoning\"\nimport { Source, Sources, SourcesContent, SourcesTrigger } from \"@/components/ai-elements/source\"\nimport { RefreshCcwIcon, CopyIcon } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport Image from \"next/image\"\nimport { useToast } from \"@/components/ui/use-toast\"\nimport { TodoList } from \"./ai-elements/todo-list\"\nimport { FileItem } from \"./uppy-dashboard\"\n\ninterface MessageRendererProps {\n messages: UIMessage[]\n status?: \"streaming\" | \"idle\" | \"error\" | \"submitted\" | \"ready\"\n className?: string\n showActions?: boolean\n onRegenerate?: () => void\n onAddToolResult?: (args: { tool: string; toolCallId: string; output: string }) => void\n UntypedToolPartComponent?: React.ComponentType<{\n untypedToolPart: DynamicToolUIPart\n callId: string\n addToContext: (item: any) => void\n }>\n addToContext?: (item: any) => void\n writeAccess?: boolean\n config?: {\n marginTopFirstMessage?: string\n customAssistantClassnames?: string\n }\n}\n\nexport function MessageRenderer({\n messages,\n status = \"idle\",\n className,\n showActions = true,\n onRegenerate,\n onAddToolResult,\n UntypedToolPartComponent,\n addToContext,\n writeAccess = true,\n config\n}: MessageRendererProps) {\n const { toast } = useToast()\n\n return (\n <>\n {messages?.map((message, messageIndex) => {\n const isFirstMessage = messageIndex === 0\n const messageMetadata = message.metadata as any\n // iterate through all parts and find the ones that have a type of 'text' and contain '<file name=\"', if so\n // extract the filename and content, and return an array of objects with the filename and content\n // Remove the <file name=\"...\">...</file> from the text and return the text without the file parts\n const files: { s3Key: string, content: string }[] = message.parts.filter(\n (part) => part.type === 'text' &&\n part.text?.includes('<file name=\"')\n )?.flatMap((part) => {\n const fileParts = (part as any).text.match(/<file name=\"([^\"]+)\">([^<]+)<\\/file>/g);\n return fileParts?.map((filePart) => {\n console.log(\"filePart\", filePart);\n const s3Key = filePart.match(/<file name=\"([^\"]+)\">/)?.[1] ?? '';\n console.log(\"s3Key\", s3Key);\n const content = filePart.match(/<file name=\"([^\"]+)\">([^<]+)<\\/file>/)?.[2] ?? '';\n return { s3Key, content } as { s3Key: string, content: string };\n }) ?? []\n }) ?? [];\n console.log(\"files\", files);\n return (\n <Message\n className={cn(\n message.role === 'assistant' && (\n config?.customAssistantClassnames ? config?.customAssistantClassnames : ''\n ),\n isFirstMessage && (\n config?.marginTopFirstMessage ? config?.marginTopFirstMessage : 'mt-12'\n ), className\n )}\n from={message.role}\n key={message.id}\n >\n <MessageContent>\n {message.parts.map((part, i) => {\n if (part.type === 'step-start') {\n return null\n }\n\n if (part.type === 'text') {\n let text = part.text.replace(/<file name=\"([^\"]+)\">([^<]+)<\\/file>/g, '');\n return <Response className=\"chat-response-container\" key={`${message.id}-${i}` + \"_response\"}>\n {text}\n </Response>\n }\n\n if (part.type === 'tool-askForConfirmation' && onAddToolResult) {\n const callId = part.toolCallId\n\n switch (part.state) {\n case 'input-streaming':\n return (\n <div key={callId}>Loading confirmation request...</div>\n )\n case 'input-available':\n return (\n <div key={callId}>\n {(part.input as { message: string }).message}\n <div>\n <button\n onClick={() =>\n onAddToolResult({\n tool: 'askForConfirmation',\n toolCallId: callId,\n output: 'Yes, confirmed',\n })\n }\n >\n Yes\n </button>\n <button\n onClick={() =>\n onAddToolResult({\n tool: 'askForConfirmation',\n toolCallId: callId,\n output: 'No, denied',\n })\n }\n >\n No\n </button>\n </div>\n </div>\n )\n case 'output-available':\n return (\n <div key={callId}>\n Tool call allowed: {part.output as string}\n </div>\n )\n case 'output-error':\n return <div key={callId}>Error: {part.errorText}</div>\n }\n }\n\n if (part.type?.toLowerCase().includes('preview_pdf') || part.type?.toLowerCase().includes('pdf_file_in_a_web_view')) {\n const dynamicToolPart = part as any;\n const output = JSON.parse(dynamicToolPart.output?.result ?? '{}') as {\n url: string\n page: number\n };\n if (!output?.url) {\n return <div>No URL provided for PDF preview {JSON.stringify(output)}</div>;\n }\n const pdfUrl = `${output.url}#page=${output.page ?? 1}`;\n return <iframe src={pdfUrl} style={{ width: '100%', height: '100vh' }} title=\"PDF viewer\" />\n }\n\n if (part.type?.toLowerCase() === 'tool-todo_write' || part.type?.toLowerCase() === 'tool-todo_read') {\n const dynamicToolPart = part as any;\n const output = dynamicToolPart.output as {\n result: {\n content: string\n status: \"pending\" | \"in_progress\" | \"completed\" | \"cancelled\"\n priority: \"high\" | \"medium\" | \"low\"\n id: string\n }[]\n };\n if (!output?.result) {\n return null;\n }\n const state: \"input-streaming\" | \"input-available\" | \"output-available\" | \"output-error\" = dynamicToolPart.state;\n return (\n <TodoList todos={output.result} showPriority={true} state={state} />\n )\n }\n\n if (\n (part.type.startsWith('tool-') || part.type === 'dynamic-tool') &&\n UntypedToolPartComponent &&\n addToContext\n ) {\n const untypedToolPart = part as DynamicToolUIPart\n const callId = untypedToolPart.toolCallId\n return (\n <UntypedToolPartComponent\n key={callId}\n untypedToolPart={untypedToolPart}\n callId={callId}\n addToContext={addToContext}\n />\n )\n }\n\n if (part.type === 'file') {\n if (part.mediaType?.startsWith('image/')) {\n return (\n <Image\n key={`${message.id}-${i}`}\n src={part.url}\n width={300}\n height={300}\n alt={\"Generated image\"}\n />\n )\n }\n }\n\n if (part.type === 'source-url') {\n return (\n <Sources key={`${message.id}-${i}`}>\n <SourcesTrigger\n count={message.parts.filter(\n (part) => part.type === 'source-url'\n ).length}\n />\n <SourcesContent key={`${message.id}`}>\n {message.parts.map((part, i) => {\n switch (part.type) {\n case 'source-url':\n return (\n <Source\n key={`${message.id}-${i}`}\n href={part.url}\n title={part.title}\n />\n )\n }\n })}\n </SourcesContent>\n </Sources>\n )\n }\n\n if (part.type === 'reasoning') {\n return (\n <Reasoning\n key={`${message.id}-${i}`}\n className=\"w-full\"\n isStreaming={status === 'streaming'}\n >\n <ReasoningTrigger />\n <ReasoningContent>{part.text}</ReasoningContent>\n </Reasoning>\n )\n }\n\n return null\n })}\n\n {files.length > 0 && (\n <div className=\"grid grid-cols-6 min-w-[500px] gap-2 mt-3 mb-3\">\n {files.map((file) => (\n <FileItem key={file.s3Key + \"_file_item_\" + message.id} s3Key={file.s3Key} onRemove={() => { }} active={false} disabled={false} />\n ))}\n </div>\n )}\n\n {showActions && message.role === 'assistant' && (\n <Actions className=\"mt-2\">\n {onRegenerate && (\n <Action\n onClick={() => onRegenerate()}\n label=\"Retry\"\n disabled={!writeAccess}\n >\n <RefreshCcwIcon className=\"size-3\" />\n </Action>\n )}\n <Action\n onClick={() => {\n navigator.clipboard.writeText(\n message.parts.map((part: any) => part?.text || \"\").join('\\n')\n )\n toast({\n title: \"Copied message\",\n description: \"The message was copied to your clipboard.\",\n })\n }}\n label=\"Copy\"\n >\n <CopyIcon className=\"size-3\" />\n </Action>\n {messageMetadata?.totalTokens && (\n <small className=\"text-muted-foreground\">\n {Intl.NumberFormat('en-US').format(messageMetadata?.totalTokens)} tokens\n </small>\n )}\n </Actions>\n )}\n </MessageContent>\n </Message>\n )\n })}\n </>\n )\n}","\"use client\";\n\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport * as React from \"react\";\n\nimport { buttonVariants } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: \"outline\" }),\n \"mt-2 sm:mt-0\",\n className,\n )}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"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\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","\"use client\";\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close 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\">\n <X className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","\"use client\";\n\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","\"use client\";\n\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"size-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n));\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n));\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n));\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className,\n )}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&:has([role=checkbox])]:w-[40px]\",\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-4 align-middle [&:has([role=checkbox])]:pr-0 [&:has([role=checkbox])]:w-[40px]\",\n className,\n )}\n {...props}\n />\n));\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"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\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n"],"names":["TestCaseModal","param","open","onClose","evalSetId","onSuccess","testCase","toast","useToast","isEditing","data","toolsData","useQuery","GET_TOOLS","variables","page","limit","regularTools","agentTools","knowledgeSourceTools","useMemo","tools","items","console","log","filter","t","type","name","setName","useState","description","setDescription","expectedOutput","setExpectedOutput","inputs","setInputs","currentInput","setCurrentInput","currentFiles","setCurrentFiles","currentFileParts","setCurrentFileParts","expectedTools","setExpectedTools","expectedKnowledgeSources","setExpectedKnowledgeSources","expectedAgentTools","setExpectedAgentTools","selectedTool","setSelectedTool","selectedContext","setSelectedContext","selectedAgent","setSelectedAgent","useEffect","expected_output","expected_tools","expected_knowledge_sources","expected_agent_tools","updateMessageFiles","keys","Promise","all","map","key","mediaType","split","pop","filename","url","getPresignedUrl","length","createTestCase","loading","creating","useMutation","CREATE_TEST_CASE","onCompleted","title","onError","error","message","variant","updateTestCase","updating","UPDATE_TEST_CASE","handleAddMessage","trim","parts","push","text","id","concat","Date","now","role","metadata","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Dialog","onOpenChange","jsxs","DialogContent","className","DialogHeader","DialogTitle","DialogDescription","form","onSubmit","e","preventDefault","eval_set_id","Tabs","defaultValue","TabsList","TabsTrigger","value","Info","MessageSquare","ScrollArea","TabsContent","div","Label","htmlFor","Input","placeholder","onChange","target","disabled","required","Textarea","rows","p","Card","CardHeader","CardTitle","Badge","CardDescription","CardContent","Sparkles","h3","Conversation","ConversationContent","MessageRenderer","messages","config","marginTopFirstMessage","customAssistantClassnames","status","showActions","writeAccess","onKeyDown","shiftKey","UppyDashboard","selectionLimit","allowedFileTypes","dependencies","onConfirm","Button","onClick","size","Plus","Fragment","FileItem","s3Key","item","active","onRemove","i","AlertCircle","strong","DialogFooter","Loader2","props","StickToBottom","cn","initial","resize","Content","Message","from","jsx_runtime","MessageContent","children","Actions","Action","tooltip","label","button","span","TooltipProvider","Tooltip","TooltipTrigger","asChild","TooltipContent","ReasoningContext","createContext","useReasoning","context","useContext","Reasoning","memo","isStreaming","defaultOpen","duration","durationProp","isOpen","setIsOpen","useControllableState","prop","defaultProp","setDuration","hasAutoClosedRef","setHasAutoClosedRef","startTime","setStartTime","Math","round","timer","setTimeout","clearTimeout","Provider","Collapsible","newOpen","ReasoningTrigger","CollapsibleTrigger","BrainIcon","ChevronDownIcon","ReasoningContent","CollapsibleContent","Response","displayName","Sources","SourcesTrigger","count","SourcesContent","Source","href","a","rel","BookIcon","statusConfig","pending","icon","Circle","in_progress","completed","CheckCircle2","cancelled","XCircle","priorityConfig","high","medium","low","TodoList","todos","showPriority","state","JSON","parse","completedCount","totalCount","todo","index","StatusIcon","statusClass","priority","isLastInProgress","findIndex","content","style","width","hasError","onRegenerate","onAddToolResult","UntypedToolPartComponent","addToContext","messageIndex","messageMetadata","files","part","includes","flatMap","fileParts","match","filePart","isFirstMessage","dynamicToolPart","output","replace","callId","toolCallId","input","tool","errorText","toLowerCase","result","stringify","pdfUrl","iframe","src","height","startsWith","untypedToolPart","Image","alt","file","RefreshCcwIcon","navigator","clipboard","writeText","join","CopyIcon","totalTokens","small","Intl","NumberFormat","format","AlertDialog","AlertDialogPrimitive","AlertDialogPortal","AlertDialogOverlay","React","ref","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","buttonVariants","AlertDialogCancel","badgeVariants","cva","variants","default","secondary","destructive","outline","defaultVariants","CardFooter","DialogPrimitive","DialogTrigger","DialogPortal","DialogOverlay","X","labelVariants","LabelPrimitive","ScrollAreaPrimitive","ScrollBar","orientation","Table","table","TableHeader","thead","TableBody","tbody","TableFooter","tfoot","TableRow","tr","TableHead","th","TableCell","td","TableCaption","caption","textarea"],"sourceRoot":""}