@recombine-ai/bosun 0.3.7 → 0.3.10

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 (462) hide show
  1. package/build/client/_app/immutable/assets/0.CJ5NCdBm.css +1 -0
  2. package/build/client/_app/immutable/assets/0.CJ5NCdBm.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.CJ5NCdBm.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/2.DxwYfh1z.css +1 -0
  5. package/build/client/_app/immutable/assets/2.DxwYfh1z.css.br +0 -0
  6. package/build/client/_app/immutable/assets/2.DxwYfh1z.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/7.DlSPCZj0.css +1 -0
  8. package/build/client/_app/immutable/assets/7.DlSPCZj0.css.br +0 -0
  9. package/build/client/_app/immutable/assets/7.DlSPCZj0.css.gz +0 -0
  10. package/build/client/_app/immutable/assets/8.BX46PfEJ.css +1 -0
  11. package/build/client/_app/immutable/assets/8.BX46PfEJ.css.br +0 -0
  12. package/build/client/_app/immutable/assets/8.BX46PfEJ.css.gz +0 -0
  13. package/build/client/_app/immutable/assets/{AgentSidebar.QeNZJtLq.css → AgentSidebar.BL1i3rB_.css} +1 -1
  14. package/build/client/_app/immutable/assets/AgentSidebar.BL1i3rB_.css.br +0 -0
  15. package/build/client/_app/immutable/assets/AgentSidebar.BL1i3rB_.css.gz +0 -0
  16. package/build/client/_app/immutable/assets/Tab.DlCfjMY1.css +1 -0
  17. package/build/client/_app/immutable/assets/Tab.DlCfjMY1.css.br +0 -0
  18. package/build/client/_app/immutable/assets/Tab.DlCfjMY1.css.gz +0 -0
  19. package/build/client/_app/immutable/chunks/{BHL1bMOV.js → BNoAJ1Rf.js} +1 -1
  20. package/build/client/_app/immutable/chunks/BNoAJ1Rf.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/BNoAJ1Rf.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/BVDwc-2z.js +1 -0
  23. package/build/client/_app/immutable/chunks/BVDwc-2z.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/BVDwc-2z.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/BXkrt826.js +1 -0
  26. package/build/client/_app/immutable/chunks/BXkrt826.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/BXkrt826.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/{Cx_xzGPa.js → Bdb5tyDH.js} +1 -1
  29. package/build/client/_app/immutable/chunks/Bdb5tyDH.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/Bdb5tyDH.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/{DaRvw8c-.js → BfHUxT3G.js} +7 -7
  32. package/build/client/_app/immutable/chunks/BfHUxT3G.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/BfHUxT3G.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/{CRlLKhPr.js → Bk1rEq7o.js} +1 -1
  35. package/build/client/_app/immutable/chunks/Bk1rEq7o.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/Bk1rEq7o.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/BkclRFLx.js +3 -0
  38. package/build/client/_app/immutable/chunks/BkclRFLx.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/BkclRFLx.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/{DJ_lsF0V.js → BnxfhlSj.js} +1 -1
  41. package/build/client/_app/immutable/chunks/BnxfhlSj.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/BnxfhlSj.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/BqROrg0C.js +1 -0
  44. package/build/client/_app/immutable/chunks/BqROrg0C.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/BqROrg0C.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/{C769zFCl.js → ByQey8Oa.js} +1 -1
  47. package/build/client/_app/immutable/chunks/ByQey8Oa.js.br +0 -0
  48. package/build/client/_app/immutable/chunks/ByQey8Oa.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/CFwu9ET3.js +1 -0
  50. package/build/client/_app/immutable/chunks/CFwu9ET3.js.br +0 -0
  51. package/build/client/_app/immutable/chunks/CFwu9ET3.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/{D5fGPlBk.js → CIIE25ox.js} +1 -1
  53. package/build/client/_app/immutable/chunks/CIIE25ox.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/CIIE25ox.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/{DAfsp-82.js → CNMNmz2q.js} +1 -1
  56. package/build/client/_app/immutable/chunks/CNMNmz2q.js.br +0 -0
  57. package/build/client/_app/immutable/chunks/CNMNmz2q.js.gz +0 -0
  58. package/build/client/_app/immutable/chunks/CNvyTQrC.js +1 -0
  59. package/build/client/_app/immutable/chunks/CNvyTQrC.js.br +2 -0
  60. package/build/client/_app/immutable/chunks/CNvyTQrC.js.gz +0 -0
  61. package/build/client/_app/immutable/chunks/CVHvdSBf.js +1 -0
  62. package/build/client/_app/immutable/chunks/CVHvdSBf.js.br +0 -0
  63. package/build/client/_app/immutable/chunks/CVHvdSBf.js.gz +0 -0
  64. package/build/client/_app/immutable/chunks/CYiRxJxs.js +1 -0
  65. package/build/client/_app/immutable/chunks/CYiRxJxs.js.br +0 -0
  66. package/build/client/_app/immutable/chunks/CYiRxJxs.js.gz +0 -0
  67. package/build/client/_app/immutable/chunks/CZPhtqrs.js +8 -0
  68. package/build/client/_app/immutable/chunks/CZPhtqrs.js.br +0 -0
  69. package/build/client/_app/immutable/chunks/CZPhtqrs.js.gz +0 -0
  70. package/build/client/_app/immutable/chunks/{CRTtd6by.js → CdzpH-Ca.js} +1 -1
  71. package/build/client/_app/immutable/chunks/CdzpH-Ca.js.br +0 -0
  72. package/build/client/_app/immutable/chunks/CdzpH-Ca.js.gz +0 -0
  73. package/build/client/_app/immutable/chunks/Cf8q8_nj.js +1 -0
  74. package/build/client/_app/immutable/chunks/Cf8q8_nj.js.br +0 -0
  75. package/build/client/_app/immutable/chunks/Cf8q8_nj.js.gz +0 -0
  76. package/build/client/_app/immutable/chunks/Cg3F7Z11.js +1 -0
  77. package/build/client/_app/immutable/chunks/Cg3F7Z11.js.br +0 -0
  78. package/build/client/_app/immutable/chunks/Cg3F7Z11.js.gz +0 -0
  79. package/build/client/_app/immutable/chunks/CpSIcnXs.js +1 -0
  80. package/build/client/_app/immutable/chunks/CpSIcnXs.js.br +0 -0
  81. package/build/client/_app/immutable/chunks/CpSIcnXs.js.gz +0 -0
  82. package/build/client/_app/immutable/chunks/{Codln_pl.js → Ct9HfpvA.js} +1 -1
  83. package/build/client/_app/immutable/chunks/Ct9HfpvA.js.br +0 -0
  84. package/build/client/_app/immutable/chunks/Ct9HfpvA.js.gz +0 -0
  85. package/build/client/_app/immutable/chunks/DJPBfZIx.js +1 -0
  86. package/build/client/_app/immutable/chunks/DJPBfZIx.js.br +0 -0
  87. package/build/client/_app/immutable/chunks/DJPBfZIx.js.gz +0 -0
  88. package/build/client/_app/immutable/chunks/{BOQMymse.js → DOatwnEt.js} +1 -1
  89. package/build/client/_app/immutable/chunks/DOatwnEt.js.br +0 -0
  90. package/build/client/_app/immutable/chunks/DOatwnEt.js.gz +0 -0
  91. package/build/client/_app/immutable/chunks/DQqJYxgt.js +1 -0
  92. package/build/client/_app/immutable/chunks/DQqJYxgt.js.br +0 -0
  93. package/build/client/_app/immutable/chunks/DQqJYxgt.js.gz +0 -0
  94. package/build/client/_app/immutable/chunks/{Culo9hD6.js → DSfxalyG.js} +1 -1
  95. package/build/client/_app/immutable/chunks/DSfxalyG.js.br +0 -0
  96. package/build/client/_app/immutable/chunks/DSfxalyG.js.gz +0 -0
  97. package/build/client/_app/immutable/chunks/Djx0Ybbq.js +8 -0
  98. package/build/client/_app/immutable/chunks/Djx0Ybbq.js.br +0 -0
  99. package/build/client/_app/immutable/chunks/Djx0Ybbq.js.gz +0 -0
  100. package/build/client/_app/immutable/chunks/Drkf9Bgr.js +33 -0
  101. package/build/client/_app/immutable/chunks/Drkf9Bgr.js.br +0 -0
  102. package/build/client/_app/immutable/chunks/Drkf9Bgr.js.gz +0 -0
  103. package/build/client/_app/immutable/chunks/DujX6kBV.js +2 -0
  104. package/build/client/_app/immutable/chunks/DujX6kBV.js.br +0 -0
  105. package/build/client/_app/immutable/chunks/DujX6kBV.js.gz +0 -0
  106. package/build/client/_app/immutable/chunks/{4PztAao_.js → HPBQctDD.js} +1 -1
  107. package/build/client/_app/immutable/chunks/HPBQctDD.js.br +0 -0
  108. package/build/client/_app/immutable/chunks/HPBQctDD.js.gz +0 -0
  109. package/build/client/_app/immutable/chunks/Jaf1TUfw.js +1 -0
  110. package/build/client/_app/immutable/chunks/Jaf1TUfw.js.br +2 -0
  111. package/build/client/_app/immutable/chunks/Jaf1TUfw.js.gz +0 -0
  112. package/build/client/_app/immutable/chunks/{yOR3vtRx.js → KDW88ZZa.js} +1 -1
  113. package/build/client/_app/immutable/chunks/KDW88ZZa.js.br +0 -0
  114. package/build/client/_app/immutable/chunks/KDW88ZZa.js.gz +0 -0
  115. package/build/client/_app/immutable/chunks/{CfKHaDCm.js → TO5ESkEd.js} +1 -1
  116. package/build/client/_app/immutable/chunks/TO5ESkEd.js.br +0 -0
  117. package/build/client/_app/immutable/chunks/TO5ESkEd.js.gz +0 -0
  118. package/build/client/_app/immutable/chunks/axPa8Xqj.js +1 -0
  119. package/build/client/_app/immutable/chunks/axPa8Xqj.js.br +0 -0
  120. package/build/client/_app/immutable/chunks/axPa8Xqj.js.gz +0 -0
  121. package/build/client/_app/immutable/chunks/mbM5jWoB.js +4 -0
  122. package/build/client/_app/immutable/chunks/mbM5jWoB.js.br +0 -0
  123. package/build/client/_app/immutable/chunks/mbM5jWoB.js.gz +0 -0
  124. package/build/client/_app/immutable/chunks/{Bw2f0Pmg.js → oeB0PCTX.js} +1 -1
  125. package/build/client/_app/immutable/chunks/oeB0PCTX.js.br +0 -0
  126. package/build/client/_app/immutable/chunks/oeB0PCTX.js.gz +0 -0
  127. package/build/client/_app/immutable/chunks/{qXu78w_4.js → rtsVMmSs.js} +1 -1
  128. package/build/client/_app/immutable/chunks/rtsVMmSs.js.br +0 -0
  129. package/build/client/_app/immutable/chunks/rtsVMmSs.js.gz +0 -0
  130. package/build/client/_app/immutable/chunks/trViNh3G.js +1 -0
  131. package/build/client/_app/immutable/chunks/trViNh3G.js.br +0 -0
  132. package/build/client/_app/immutable/chunks/trViNh3G.js.gz +0 -0
  133. package/build/client/_app/immutable/chunks/yWz0pZR0.js +1 -0
  134. package/build/client/_app/immutable/chunks/yWz0pZR0.js.br +0 -0
  135. package/build/client/_app/immutable/chunks/yWz0pZR0.js.gz +0 -0
  136. package/build/client/_app/immutable/entry/app.Bf26VmYF.js +2 -0
  137. package/build/client/_app/immutable/entry/app.Bf26VmYF.js.br +0 -0
  138. package/build/client/_app/immutable/entry/app.Bf26VmYF.js.gz +0 -0
  139. package/build/client/_app/immutable/entry/start.B7gGsWVa.js +1 -0
  140. package/build/client/_app/immutable/entry/start.B7gGsWVa.js.br +2 -0
  141. package/build/client/_app/immutable/entry/start.B7gGsWVa.js.gz +0 -0
  142. package/build/client/_app/immutable/nodes/0.DzfWS9dq.js +3 -0
  143. package/build/client/_app/immutable/nodes/0.DzfWS9dq.js.br +0 -0
  144. package/build/client/_app/immutable/nodes/0.DzfWS9dq.js.gz +0 -0
  145. package/build/client/_app/immutable/nodes/1.DXQZr-dH.js +1 -0
  146. package/build/client/_app/immutable/nodes/1.DXQZr-dH.js.br +0 -0
  147. package/build/client/_app/immutable/nodes/1.DXQZr-dH.js.gz +0 -0
  148. package/build/client/_app/immutable/nodes/10.BHSGZYEC.js +1 -0
  149. package/build/client/_app/immutable/nodes/10.BHSGZYEC.js.br +0 -0
  150. package/build/client/_app/immutable/nodes/10.BHSGZYEC.js.gz +0 -0
  151. package/build/client/_app/immutable/nodes/11.CZ_7M4AF.js +1 -0
  152. package/build/client/_app/immutable/nodes/11.CZ_7M4AF.js.br +0 -0
  153. package/build/client/_app/immutable/nodes/11.CZ_7M4AF.js.gz +0 -0
  154. package/build/client/_app/immutable/nodes/12.DRr2l3NZ.js +1 -0
  155. package/build/client/_app/immutable/nodes/12.DRr2l3NZ.js.br +2 -0
  156. package/build/client/_app/immutable/nodes/12.DRr2l3NZ.js.gz +0 -0
  157. package/build/client/_app/immutable/nodes/13.DaAF9e8t.js +1 -0
  158. package/build/client/_app/immutable/nodes/13.DaAF9e8t.js.br +0 -0
  159. package/build/client/_app/immutable/nodes/13.DaAF9e8t.js.gz +0 -0
  160. package/build/client/_app/immutable/nodes/14.f9d5b8IR.js +11 -0
  161. package/build/client/_app/immutable/nodes/14.f9d5b8IR.js.br +0 -0
  162. package/build/client/_app/immutable/nodes/14.f9d5b8IR.js.gz +0 -0
  163. package/build/client/_app/immutable/nodes/2.pYR7L1PM.js +35 -0
  164. package/build/client/_app/immutable/nodes/2.pYR7L1PM.js.br +0 -0
  165. package/build/client/_app/immutable/nodes/2.pYR7L1PM.js.gz +0 -0
  166. package/build/client/_app/immutable/nodes/3.D-_vDp-o.js +1 -0
  167. package/build/client/_app/immutable/nodes/3.D-_vDp-o.js.br +0 -0
  168. package/build/client/_app/immutable/nodes/3.D-_vDp-o.js.gz +0 -0
  169. package/build/client/_app/immutable/nodes/{3.C-B1sGi_.js → 4.DylMSvDw.js} +1 -1
  170. package/build/client/_app/immutable/nodes/4.DylMSvDw.js.br +0 -0
  171. package/build/client/_app/immutable/nodes/4.DylMSvDw.js.gz +0 -0
  172. package/build/client/_app/immutable/nodes/5.DqrhJj9B.js +1 -0
  173. package/build/client/_app/immutable/nodes/5.DqrhJj9B.js.br +0 -0
  174. package/build/client/_app/immutable/nodes/5.DqrhJj9B.js.gz +0 -0
  175. package/build/client/_app/immutable/nodes/6.CPYhLc46.js +1 -0
  176. package/build/client/_app/immutable/nodes/6.CPYhLc46.js.br +4 -0
  177. package/build/client/_app/immutable/nodes/6.CPYhLc46.js.gz +0 -0
  178. package/build/client/_app/immutable/nodes/7.C1zE2WMk.js +2 -0
  179. package/build/client/_app/immutable/nodes/7.C1zE2WMk.js.br +0 -0
  180. package/build/client/_app/immutable/nodes/7.C1zE2WMk.js.gz +0 -0
  181. package/build/client/_app/immutable/nodes/8.CiDoIZSu.js +6 -0
  182. package/build/client/_app/immutable/nodes/8.CiDoIZSu.js.br +0 -0
  183. package/build/client/_app/immutable/nodes/8.CiDoIZSu.js.gz +0 -0
  184. package/build/client/_app/immutable/nodes/9.BVI-eEdV.js +1 -0
  185. package/build/client/_app/immutable/nodes/9.BVI-eEdV.js.br +0 -0
  186. package/build/client/_app/immutable/nodes/9.BVI-eEdV.js.gz +0 -0
  187. package/build/client/_app/version.json +1 -1
  188. package/build/client/_app/version.json.br +0 -0
  189. package/build/client/_app/version.json.gz +0 -0
  190. package/build/server/chunks/0-aCCGn5tt.js +9 -0
  191. package/build/server/chunks/{0-CqdHgLFy.js.map → 0-aCCGn5tt.js.map} +1 -1
  192. package/build/server/chunks/1-PJOfwEJU.js +9 -0
  193. package/build/server/chunks/{1-CptSbbsC.js.map → 1-PJOfwEJU.js.map} +1 -1
  194. package/build/server/chunks/{7-soEaW5k5.js → 10-C7WLHR92.js} +5 -5
  195. package/build/server/chunks/10-C7WLHR92.js.map +1 -0
  196. package/build/server/chunks/11-CPYwUx-7.js +21 -0
  197. package/build/server/chunks/11-CPYwUx-7.js.map +1 -0
  198. package/build/server/chunks/12-C5OSs5Op.js +20 -0
  199. package/build/server/chunks/12-C5OSs5Op.js.map +1 -0
  200. package/build/server/chunks/13-DPcsc1p-.js +9 -0
  201. package/build/server/chunks/13-DPcsc1p-.js.map +1 -0
  202. package/build/server/chunks/14-PJnTNd-L.js +9 -0
  203. package/build/server/chunks/14-PJnTNd-L.js.map +1 -0
  204. package/build/server/chunks/2-CGWn8izo.js +9 -0
  205. package/build/server/chunks/2-CGWn8izo.js.map +1 -0
  206. package/build/server/chunks/3-DSX59wuh.js +9 -0
  207. package/build/server/chunks/3-DSX59wuh.js.map +1 -0
  208. package/build/server/chunks/4-BML64sIA.js +9 -0
  209. package/build/server/chunks/4-BML64sIA.js.map +1 -0
  210. package/build/server/chunks/5-vxvPoTJ3.js +9 -0
  211. package/build/server/chunks/5-vxvPoTJ3.js.map +1 -0
  212. package/build/server/chunks/6-uS_X9B0s.js +21 -0
  213. package/build/server/chunks/6-uS_X9B0s.js.map +1 -0
  214. package/build/server/chunks/7-C3AnIPYT.js +9 -0
  215. package/build/server/chunks/7-C3AnIPYT.js.map +1 -0
  216. package/build/server/chunks/8-BJTCvcMs.js +9 -0
  217. package/build/server/chunks/8-BJTCvcMs.js.map +1 -0
  218. package/build/server/chunks/9-W6XYayeK.js +25 -0
  219. package/build/server/chunks/9-W6XYayeK.js.map +1 -0
  220. package/build/server/chunks/{AgentSidebar-BIVt78i3.js → AgentSidebar-BB_yQ9s0.js} +4 -4
  221. package/build/server/chunks/AgentSidebar-BB_yQ9s0.js.map +1 -0
  222. package/build/server/chunks/{Button-ZjVPI4zo.js → Button-DZYrr6c0.js} +6 -6
  223. package/build/server/chunks/Button-DZYrr6c0.js.map +1 -0
  224. package/build/server/chunks/{CopyTracesDropdown-B8MjGOwT.js → ChatStepTrace-COI_fylM.js} +29 -146
  225. package/build/server/chunks/ChatStepTrace-COI_fylM.js.map +1 -0
  226. package/build/server/chunks/{ContextEditor-Dgs8Ax9B.js → ContextEditor-ByGoXY5_.js} +28 -13
  227. package/build/server/chunks/ContextEditor-ByGoXY5_.js.map +1 -0
  228. package/build/server/chunks/{Icon-Csjrnozq.js → Icon-BgknHaZs.js} +2 -2
  229. package/build/server/chunks/{Icon-Csjrnozq.js.map → Icon-BgknHaZs.js.map} +1 -1
  230. package/build/server/chunks/{Input-BCU2QEQ2.js → Input-DZT3Mm_-.js} +3 -2
  231. package/build/server/chunks/Input-DZT3Mm_-.js.map +1 -0
  232. package/build/server/chunks/{Modal-bmttP-F1.js → Modal-D4tx0Bdo.js} +3 -3
  233. package/build/server/chunks/Modal-D4tx0Bdo.js.map +1 -0
  234. package/build/server/chunks/{Tab-Jw_OwV7Q.js → Tab-ClYAMM-e.js} +4 -4
  235. package/build/server/chunks/Tab-ClYAMM-e.js.map +1 -0
  236. package/build/server/chunks/_layout.svelte-BdnWuh8V.js +849 -0
  237. package/build/server/chunks/_layout.svelte-BdnWuh8V.js.map +1 -0
  238. package/build/server/chunks/{_layout.svelte-CrT993Da.js → _layout.svelte-Svi5xbzP.js} +1 -14
  239. package/build/server/chunks/_layout.svelte-Svi5xbzP.js.map +1 -0
  240. package/build/server/chunks/{_layout.svelte-GwcIlDHC.js → _layout.svelte-h89mGXIj.js} +25 -31
  241. package/build/server/chunks/_layout.svelte-h89mGXIj.js.map +1 -0
  242. package/build/server/chunks/{_page.svelte-CVO2CdmB.js → _page.svelte-39hvC6-Q.js} +4 -4
  243. package/build/server/chunks/{_page.svelte-CVO2CdmB.js.map → _page.svelte-39hvC6-Q.js.map} +1 -1
  244. package/build/server/chunks/{_page.svelte-d8hJxmZl.js → _page.svelte-B3PTKffw.js} +374 -361
  245. package/build/server/chunks/_page.svelte-B3PTKffw.js.map +1 -0
  246. package/build/server/chunks/{_page.svelte-D8d07zd0.js → _page.svelte-B4py4PyV.js} +160 -12
  247. package/build/server/chunks/_page.svelte-B4py4PyV.js.map +1 -0
  248. package/build/server/chunks/_page.svelte-CC26hDwf.js +675 -0
  249. package/build/server/chunks/_page.svelte-CC26hDwf.js.map +1 -0
  250. package/build/server/chunks/{_page.svelte-BAi74pJ3.js → _page.svelte-CbqAsz26.js} +3 -3
  251. package/build/server/chunks/_page.svelte-CbqAsz26.js.map +1 -0
  252. package/build/server/chunks/{_page.svelte-BOzS_rqK.js → _page.svelte-CnjXZO9K.js} +18 -27
  253. package/build/server/chunks/_page.svelte-CnjXZO9K.js.map +1 -0
  254. package/build/server/chunks/edit-workspace-context-OTOIRCI0.js +13 -0
  255. package/build/server/chunks/edit-workspace-context-OTOIRCI0.js.map +1 -0
  256. package/build/server/chunks/hooks-BJphIAi-.js +8 -0
  257. package/build/server/chunks/hooks-BJphIAi-.js.map +1 -0
  258. package/build/server/chunks/{Tab.svelte_svelte_type_style_lang-ByZ0KVzO.js → index-server-CefdgakO.js} +2 -2
  259. package/build/server/chunks/index-server-CefdgakO.js.map +1 -0
  260. package/build/server/chunks/{index2-C572SQM_.js → index2-BuOY2QE4.js} +2 -2
  261. package/build/server/chunks/{index2-C572SQM_.js.map → index2-BuOY2QE4.js.map} +1 -1
  262. package/build/server/chunks/log-content.svelte-B3ZvaoLs.js +20 -0
  263. package/build/server/chunks/log-content.svelte-B3ZvaoLs.js.map +1 -0
  264. package/build/server/index.js +3 -2
  265. package/build/server/index.js.map +1 -1
  266. package/build/server/manifest.js +51 -18
  267. package/build/server/manifest.js.map +1 -1
  268. package/package.json +3 -1
  269. package/src/backend/lib/decode-html-entities.spec.ts +29 -0
  270. package/src/backend/lib/decode-html-entities.ts +25 -0
  271. package/src/backend/roleplay/router.ts +31 -0
  272. package/src/backend/tests/academy.ts +353 -115
  273. package/src/backend/tests/analyze.ts +357 -0
  274. package/src/backend/tests/data.ts +48 -12
  275. package/src/backend/tests/emulate-agents.ts +39 -4
  276. package/src/backend/tests/prompt-issues.ts +204 -0
  277. package/src/backend/tests/router.ts +51 -4
  278. package/build/client/_app/immutable/assets/0.BPqDeVAI.css +0 -1
  279. package/build/client/_app/immutable/assets/0.BPqDeVAI.css.br +0 -0
  280. package/build/client/_app/immutable/assets/0.BPqDeVAI.css.gz +0 -0
  281. package/build/client/_app/immutable/assets/4.BIrSikaZ.css +0 -1
  282. package/build/client/_app/immutable/assets/4.BIrSikaZ.css.br +0 -0
  283. package/build/client/_app/immutable/assets/4.BIrSikaZ.css.gz +0 -0
  284. package/build/client/_app/immutable/assets/6.C4C8vBUW.css +0 -1
  285. package/build/client/_app/immutable/assets/6.C4C8vBUW.css.br +0 -0
  286. package/build/client/_app/immutable/assets/6.C4C8vBUW.css.gz +0 -0
  287. package/build/client/_app/immutable/assets/AgentSidebar.QeNZJtLq.css.br +0 -0
  288. package/build/client/_app/immutable/assets/AgentSidebar.QeNZJtLq.css.gz +0 -0
  289. package/build/client/_app/immutable/assets/Tab.BxaGw9IG.css +0 -1
  290. package/build/client/_app/immutable/assets/Tab.BxaGw9IG.css.br +0 -0
  291. package/build/client/_app/immutable/assets/Tab.BxaGw9IG.css.gz +0 -0
  292. package/build/client/_app/immutable/chunks/4PztAao_.js.br +0 -0
  293. package/build/client/_app/immutable/chunks/4PztAao_.js.gz +0 -0
  294. package/build/client/_app/immutable/chunks/B2gGEZTS.js +0 -1
  295. package/build/client/_app/immutable/chunks/B2gGEZTS.js.br +0 -2
  296. package/build/client/_app/immutable/chunks/B2gGEZTS.js.gz +0 -0
  297. package/build/client/_app/immutable/chunks/BHL1bMOV.js.br +0 -0
  298. package/build/client/_app/immutable/chunks/BHL1bMOV.js.gz +0 -0
  299. package/build/client/_app/immutable/chunks/BOQMymse.js.br +0 -0
  300. package/build/client/_app/immutable/chunks/BOQMymse.js.gz +0 -0
  301. package/build/client/_app/immutable/chunks/Bd7SZbXQ.js +0 -1
  302. package/build/client/_app/immutable/chunks/Bd7SZbXQ.js.br +0 -0
  303. package/build/client/_app/immutable/chunks/Bd7SZbXQ.js.gz +0 -0
  304. package/build/client/_app/immutable/chunks/Bf1oCG9-.js +0 -8
  305. package/build/client/_app/immutable/chunks/Bf1oCG9-.js.br +0 -0
  306. package/build/client/_app/immutable/chunks/Bf1oCG9-.js.gz +0 -0
  307. package/build/client/_app/immutable/chunks/BgaIh2D4.js +0 -1
  308. package/build/client/_app/immutable/chunks/BgaIh2D4.js.br +0 -0
  309. package/build/client/_app/immutable/chunks/BgaIh2D4.js.gz +0 -0
  310. package/build/client/_app/immutable/chunks/BrDK8TTs.js +0 -2
  311. package/build/client/_app/immutable/chunks/BrDK8TTs.js.br +0 -0
  312. package/build/client/_app/immutable/chunks/BrDK8TTs.js.gz +0 -0
  313. package/build/client/_app/immutable/chunks/BsKQRAyX.js +0 -1
  314. package/build/client/_app/immutable/chunks/BsKQRAyX.js.br +0 -0
  315. package/build/client/_app/immutable/chunks/BsKQRAyX.js.gz +0 -0
  316. package/build/client/_app/immutable/chunks/Bw2f0Pmg.js.br +0 -0
  317. package/build/client/_app/immutable/chunks/Bw2f0Pmg.js.gz +0 -0
  318. package/build/client/_app/immutable/chunks/BzAx_Qn3.js +0 -1
  319. package/build/client/_app/immutable/chunks/BzAx_Qn3.js.br +0 -0
  320. package/build/client/_app/immutable/chunks/BzAx_Qn3.js.gz +0 -0
  321. package/build/client/_app/immutable/chunks/C-dTPkQy.js +0 -1
  322. package/build/client/_app/immutable/chunks/C-dTPkQy.js.br +0 -0
  323. package/build/client/_app/immutable/chunks/C-dTPkQy.js.gz +0 -0
  324. package/build/client/_app/immutable/chunks/C769zFCl.js.br +0 -0
  325. package/build/client/_app/immutable/chunks/C769zFCl.js.gz +0 -0
  326. package/build/client/_app/immutable/chunks/C7FjDhij.js +0 -4
  327. package/build/client/_app/immutable/chunks/C7FjDhij.js.br +0 -0
  328. package/build/client/_app/immutable/chunks/C7FjDhij.js.gz +0 -0
  329. package/build/client/_app/immutable/chunks/CInh9KnU.js +0 -1
  330. package/build/client/_app/immutable/chunks/CInh9KnU.js.br +0 -2
  331. package/build/client/_app/immutable/chunks/CInh9KnU.js.gz +0 -0
  332. package/build/client/_app/immutable/chunks/CRTtd6by.js.br +0 -0
  333. package/build/client/_app/immutable/chunks/CRTtd6by.js.gz +0 -0
  334. package/build/client/_app/immutable/chunks/CRlLKhPr.js.br +0 -0
  335. package/build/client/_app/immutable/chunks/CRlLKhPr.js.gz +0 -0
  336. package/build/client/_app/immutable/chunks/CUfDVPpW.js +0 -1
  337. package/build/client/_app/immutable/chunks/CUfDVPpW.js.br +0 -0
  338. package/build/client/_app/immutable/chunks/CUfDVPpW.js.gz +0 -0
  339. package/build/client/_app/immutable/chunks/CfKHaDCm.js.br +0 -0
  340. package/build/client/_app/immutable/chunks/CfKHaDCm.js.gz +0 -0
  341. package/build/client/_app/immutable/chunks/Codln_pl.js.br +0 -0
  342. package/build/client/_app/immutable/chunks/Codln_pl.js.gz +0 -0
  343. package/build/client/_app/immutable/chunks/Culo9hD6.js.br +0 -0
  344. package/build/client/_app/immutable/chunks/Culo9hD6.js.gz +0 -0
  345. package/build/client/_app/immutable/chunks/CxDLEL1d.js +0 -8
  346. package/build/client/_app/immutable/chunks/CxDLEL1d.js.br +0 -0
  347. package/build/client/_app/immutable/chunks/CxDLEL1d.js.gz +0 -0
  348. package/build/client/_app/immutable/chunks/Cx_xzGPa.js.br +0 -0
  349. package/build/client/_app/immutable/chunks/Cx_xzGPa.js.gz +0 -0
  350. package/build/client/_app/immutable/chunks/D-51TRqM.js +0 -33
  351. package/build/client/_app/immutable/chunks/D-51TRqM.js.br +0 -0
  352. package/build/client/_app/immutable/chunks/D-51TRqM.js.gz +0 -0
  353. package/build/client/_app/immutable/chunks/D5fGPlBk.js.br +0 -0
  354. package/build/client/_app/immutable/chunks/D5fGPlBk.js.gz +0 -0
  355. package/build/client/_app/immutable/chunks/D9h7-Y-f.js +0 -1
  356. package/build/client/_app/immutable/chunks/D9h7-Y-f.js.br +0 -0
  357. package/build/client/_app/immutable/chunks/D9h7-Y-f.js.gz +0 -0
  358. package/build/client/_app/immutable/chunks/DAfsp-82.js.br +0 -0
  359. package/build/client/_app/immutable/chunks/DAfsp-82.js.gz +0 -0
  360. package/build/client/_app/immutable/chunks/DJ_lsF0V.js.br +0 -0
  361. package/build/client/_app/immutable/chunks/DJ_lsF0V.js.gz +0 -0
  362. package/build/client/_app/immutable/chunks/DaRvw8c-.js.br +0 -0
  363. package/build/client/_app/immutable/chunks/DaRvw8c-.js.gz +0 -0
  364. package/build/client/_app/immutable/chunks/FawE95CY.js +0 -1
  365. package/build/client/_app/immutable/chunks/FawE95CY.js.br +0 -0
  366. package/build/client/_app/immutable/chunks/FawE95CY.js.gz +0 -0
  367. package/build/client/_app/immutable/chunks/HBgR5qMR.js +0 -3
  368. package/build/client/_app/immutable/chunks/HBgR5qMR.js.br +0 -0
  369. package/build/client/_app/immutable/chunks/HBgR5qMR.js.gz +0 -0
  370. package/build/client/_app/immutable/chunks/I-mny6CH.js +0 -1
  371. package/build/client/_app/immutable/chunks/I-mny6CH.js.br +0 -0
  372. package/build/client/_app/immutable/chunks/I-mny6CH.js.gz +0 -0
  373. package/build/client/_app/immutable/chunks/aeuWzujc.js +0 -1
  374. package/build/client/_app/immutable/chunks/aeuWzujc.js.br +0 -2
  375. package/build/client/_app/immutable/chunks/aeuWzujc.js.gz +0 -0
  376. package/build/client/_app/immutable/chunks/qXu78w_4.js.br +0 -0
  377. package/build/client/_app/immutable/chunks/qXu78w_4.js.gz +0 -0
  378. package/build/client/_app/immutable/chunks/yOR3vtRx.js.br +0 -0
  379. package/build/client/_app/immutable/chunks/yOR3vtRx.js.gz +0 -0
  380. package/build/client/_app/immutable/entry/app.Dd7V5oBZ.js +0 -2
  381. package/build/client/_app/immutable/entry/app.Dd7V5oBZ.js.br +0 -0
  382. package/build/client/_app/immutable/entry/app.Dd7V5oBZ.js.gz +0 -0
  383. package/build/client/_app/immutable/entry/start.I6276KWl.js +0 -1
  384. package/build/client/_app/immutable/entry/start.I6276KWl.js.br +0 -2
  385. package/build/client/_app/immutable/entry/start.I6276KWl.js.gz +0 -0
  386. package/build/client/_app/immutable/nodes/0.DgVTcUxG.js +0 -3
  387. package/build/client/_app/immutable/nodes/0.DgVTcUxG.js.br +0 -0
  388. package/build/client/_app/immutable/nodes/0.DgVTcUxG.js.gz +0 -0
  389. package/build/client/_app/immutable/nodes/1._3H1cdWd.js +0 -1
  390. package/build/client/_app/immutable/nodes/1._3H1cdWd.js.br +0 -0
  391. package/build/client/_app/immutable/nodes/1._3H1cdWd.js.gz +0 -0
  392. package/build/client/_app/immutable/nodes/2.BO0WBJz3.js +0 -1
  393. package/build/client/_app/immutable/nodes/2.BO0WBJz3.js.br +0 -0
  394. package/build/client/_app/immutable/nodes/2.BO0WBJz3.js.gz +0 -0
  395. package/build/client/_app/immutable/nodes/3.C-B1sGi_.js.br +0 -0
  396. package/build/client/_app/immutable/nodes/3.C-B1sGi_.js.gz +0 -0
  397. package/build/client/_app/immutable/nodes/4.SsrvuMXV.js +0 -35
  398. package/build/client/_app/immutable/nodes/4.SsrvuMXV.js.br +0 -0
  399. package/build/client/_app/immutable/nodes/4.SsrvuMXV.js.gz +0 -0
  400. package/build/client/_app/immutable/nodes/5.DM_0dw43.js +0 -1
  401. package/build/client/_app/immutable/nodes/5.DM_0dw43.js.br +0 -0
  402. package/build/client/_app/immutable/nodes/5.DM_0dw43.js.gz +0 -0
  403. package/build/client/_app/immutable/nodes/6.BLcf1-sM.js +0 -5
  404. package/build/client/_app/immutable/nodes/6.BLcf1-sM.js.br +0 -0
  405. package/build/client/_app/immutable/nodes/6.BLcf1-sM.js.gz +0 -0
  406. package/build/client/_app/immutable/nodes/7.BLozkJCY.js +0 -1
  407. package/build/client/_app/immutable/nodes/7.BLozkJCY.js.br +0 -0
  408. package/build/client/_app/immutable/nodes/7.BLozkJCY.js.gz +0 -0
  409. package/build/client/_app/immutable/nodes/8.BeHRzquW.js +0 -1
  410. package/build/client/_app/immutable/nodes/8.BeHRzquW.js.br +0 -0
  411. package/build/client/_app/immutable/nodes/8.BeHRzquW.js.gz +0 -0
  412. package/build/client/_app/immutable/nodes/9.B1qNbiqD.js +0 -11
  413. package/build/client/_app/immutable/nodes/9.B1qNbiqD.js.br +0 -0
  414. package/build/client/_app/immutable/nodes/9.B1qNbiqD.js.gz +0 -0
  415. package/build/server/chunks/0-CqdHgLFy.js +0 -9
  416. package/build/server/chunks/1-CptSbbsC.js +0 -9
  417. package/build/server/chunks/2-CVrU1q5e.js +0 -9
  418. package/build/server/chunks/2-CVrU1q5e.js.map +0 -1
  419. package/build/server/chunks/3-Bi3FZgxy.js +0 -9
  420. package/build/server/chunks/3-Bi3FZgxy.js.map +0 -1
  421. package/build/server/chunks/4-Cg81z1QT.js +0 -9
  422. package/build/server/chunks/4-Cg81z1QT.js.map +0 -1
  423. package/build/server/chunks/5-BDZ8fU2l.js +0 -9
  424. package/build/server/chunks/5-BDZ8fU2l.js.map +0 -1
  425. package/build/server/chunks/6-_jdLZ_Lr.js +0 -33
  426. package/build/server/chunks/6-_jdLZ_Lr.js.map +0 -1
  427. package/build/server/chunks/7-soEaW5k5.js.map +0 -1
  428. package/build/server/chunks/8-Yp_dUmRS.js +0 -9
  429. package/build/server/chunks/8-Yp_dUmRS.js.map +0 -1
  430. package/build/server/chunks/9-Cb4lmLGK.js +0 -9
  431. package/build/server/chunks/9-Cb4lmLGK.js.map +0 -1
  432. package/build/server/chunks/AgentSidebar-BIVt78i3.js.map +0 -1
  433. package/build/server/chunks/Button-ZjVPI4zo.js.map +0 -1
  434. package/build/server/chunks/ContextEditor-Dgs8Ax9B.js.map +0 -1
  435. package/build/server/chunks/CopyTracesDropdown-B8MjGOwT.js.map +0 -1
  436. package/build/server/chunks/Input-BCU2QEQ2.js.map +0 -1
  437. package/build/server/chunks/Modal-bmttP-F1.js.map +0 -1
  438. package/build/server/chunks/Tab-Jw_OwV7Q.js.map +0 -1
  439. package/build/server/chunks/Tab.svelte_svelte_type_style_lang-ByZ0KVzO.js.map +0 -1
  440. package/build/server/chunks/_layout.svelte-CrT993Da.js.map +0 -1
  441. package/build/server/chunks/_layout.svelte-GwcIlDHC.js.map +0 -1
  442. package/build/server/chunks/_page.svelte--l_LvFv_.js +0 -2307
  443. package/build/server/chunks/_page.svelte--l_LvFv_.js.map +0 -1
  444. package/build/server/chunks/_page.svelte-BAi74pJ3.js.map +0 -1
  445. package/build/server/chunks/_page.svelte-BOzS_rqK.js.map +0 -1
  446. package/build/server/chunks/_page.svelte-D8d07zd0.js.map +0 -1
  447. package/build/server/chunks/_page.svelte-d8hJxmZl.js.map +0 -1
  448. /package/build/client/_app/immutable/assets/{9.C5apk4jm.css → 14.C5apk4jm.css} +0 -0
  449. /package/build/client/_app/immutable/assets/{9.C5apk4jm.css.br → 14.C5apk4jm.css.br} +0 -0
  450. /package/build/client/_app/immutable/assets/{9.C5apk4jm.css.gz → 14.C5apk4jm.css.gz} +0 -0
  451. /package/build/client/_app/immutable/assets/{2.Dzh7_Q8n.css → 3.Dzh7_Q8n.css} +0 -0
  452. /package/build/client/_app/immutable/assets/{2.Dzh7_Q8n.css.br → 3.Dzh7_Q8n.css.br} +0 -0
  453. /package/build/client/_app/immutable/assets/{2.Dzh7_Q8n.css.gz → 3.Dzh7_Q8n.css.gz} +0 -0
  454. /package/build/client/_app/immutable/assets/{3.CZVw96CJ.css → 4.CZVw96CJ.css} +0 -0
  455. /package/build/client/_app/immutable/assets/{3.CZVw96CJ.css.br → 4.CZVw96CJ.css.br} +0 -0
  456. /package/build/client/_app/immutable/assets/{3.CZVw96CJ.css.gz → 4.CZVw96CJ.css.gz} +0 -0
  457. /package/build/client/_app/immutable/assets/{CopyTracesDropdown.NFJFjHv0.css → ChatStepTrace.NFJFjHv0.css} +0 -0
  458. /package/build/client/_app/immutable/assets/{CopyTracesDropdown.NFJFjHv0.css.br → ChatStepTrace.NFJFjHv0.css.br} +0 -0
  459. /package/build/client/_app/immutable/assets/{CopyTracesDropdown.NFJFjHv0.css.gz → ChatStepTrace.NFJFjHv0.css.gz} +0 -0
  460. /package/build/client/_app/immutable/assets/{Modal.tn0RQdqM.css → bosun-theme.tn0RQdqM.css} +0 -0
  461. /package/build/client/_app/immutable/assets/{Modal.tn0RQdqM.css.br → bosun-theme.tn0RQdqM.css.br} +0 -0
  462. /package/build/client/_app/immutable/assets/{Modal.tn0RQdqM.css.gz → bosun-theme.tn0RQdqM.css.gz} +0 -0
@@ -1,25 +1,16 @@
1
- import { h as head, a as attr_class, e as ensure_array_like, s as stringify, b as attr, d as clsx, c as attr_style } from './index2-C572SQM_.js';
2
- import { p as page, g as goto } from './index3-DeV2OWZf.js';
3
- import { B as Button } from './Button-ZjVPI4zo.js';
4
- import { D as Dropdown, C as CopyTracesDropdown, a as ChatApiCallTrace, b as ChatConversationalTrace, c as ChatStepTrace } from './CopyTracesDropdown-B8MjGOwT.js';
5
- import { I as Icon } from './Icon-Csjrnozq.js';
1
+ import { B as Button } from './Button-DZYrr6c0.js';
2
+ import { D as Dropdown, C as ChatApiCallTrace, a as ChatConversationalTrace, b as ChatStepTrace } from './ChatStepTrace-COI_fylM.js';
3
+ import { b as attr_class, s as stringify, e as ensure_array_like, a as attr, g as clsx, c as attr_style } from './index2-BuOY2QE4.js';
4
+ import { I as Icon } from './Icon-BgknHaZs.js';
6
5
  import { X as escape_html } from './context-zH5kvtGY.js';
7
- import { o as onDestroy } from './Tab.svelte_svelte_type_style_lang-ByZ0KVzO.js';
8
- import { C as ContextEditor, P as Panel } from './ContextEditor-Dgs8Ax9B.js';
9
- import { I as Input } from './Input-BCU2QEQ2.js';
10
- import './trpc-client-Bucti7HD.js';
11
- import 'nunjucks';
12
- import { A as AgentSidebar } from './AgentSidebar-BIVt78i3.js';
13
- import { T as Tabs, a as Tab } from './Tab-Jw_OwV7Q.js';
14
- import { p as public_env } from './shared-server-DaWdgxVh.js';
15
- import { g as getAgentsContext } from './agents-context-BrlIlkOW.js';
16
- import './state.svelte-DtOGaiYC.js';
6
+ import { t as trpc } from './trpc-client-Bucti7HD.js';
7
+ import { g as getEditWorkspaceContext, P as Panel } from './edit-workspace-context-OTOIRCI0.js';
8
+ import { b as chatContent, i as isApiCallTrace, d as isStepTrace, e as isConversationalTrace, l as logContent } from './log-content.svelte-B3ZvaoLs.js';
9
+ import { I as Input } from './Input-DZT3Mm_-.js';
17
10
  import './utils-KcIDVAAe.js';
18
- import './index-DxaLoiKh.js';
19
- import 'js-yaml';
11
+ import './state.svelte-DtOGaiYC.js';
20
12
  import '@trpc/client';
21
13
 
22
- /* empty css */
23
14
  function History($$renderer, $$props) {
24
15
  $$renderer.component(($$renderer2) => {
25
16
  let {
@@ -30,6 +21,20 @@ function History($$renderer, $$props) {
30
21
  } = $$props;
31
22
  let isOpen = false;
32
23
  let anchorEl = null;
24
+ const MONTHS_SHORT = [
25
+ "Jan",
26
+ "Feb",
27
+ "Mar",
28
+ "Apr",
29
+ "May",
30
+ "Jun",
31
+ "Jul",
32
+ "Aug",
33
+ "Sep",
34
+ "Oct",
35
+ "Nov",
36
+ "Dec"
37
+ ];
33
38
  function toggleDropdown() {
34
39
  isOpen = !isOpen;
35
40
  }
@@ -60,8 +65,28 @@ function History($$renderer, $$props) {
60
65
  event.preventDefault();
61
66
  }
62
67
  }
68
+ function formatStateTime(d) {
69
+ const day = d.getDate();
70
+ const month = MONTHS_SHORT[d.getMonth()];
71
+ let hour = d.getHours();
72
+ const ampm = hour >= 12 ? "PM" : "AM";
73
+ hour = hour % 12;
74
+ if (hour === 0) hour = 12;
75
+ const minute = String(d.getMinutes()).padStart(2, "0");
76
+ const now = /* @__PURE__ */ new Date();
77
+ const year = d.getFullYear();
78
+ const yearPart = year !== now.getFullYear() ? ` ${year}` : "";
79
+ return `${day} ${month}${yearPart}, ${hour}:${minute} ${ampm}`;
80
+ }
81
+ function formatStateLabel(state) {
82
+ const fromId = new Date(state.id);
83
+ if (!Number.isNaN(fromId.getTime())) return formatStateTime(fromId);
84
+ const fromName = new Date(state.name);
85
+ if (!Number.isNaN(fromName.getTime())) return formatStateTime(fromName);
86
+ return state.name || "History";
87
+ }
63
88
  let selectedState = agentStates.find((s) => s.id === currentState) ?? null;
64
- let triggerTitle = selectedState?.name ?? "History";
89
+ let triggerTitle = selectedState ? formatStateLabel(selectedState) : "History";
65
90
  let $$settled = true;
66
91
  let $$inner_renderer;
67
92
  function $$render_inner($$renderer3) {
@@ -73,7 +98,7 @@ function History($$renderer, $$props) {
73
98
  "aria-controls": "history-dropdown",
74
99
  onclick: toggleDropdown,
75
100
  onkeydown: handleKeyDown,
76
- class: "flex w-60 items-center gap-2 text-nowrap rounded-lg border border-transparent !bg-rc-gray-700 !px-3 !pb-1 !pt-[5px] text-justify text-rc-gray-200 hover:border hover:border-rc-gray-500 focus:outline-none focus:ring-0",
101
+ class: "inline-flex w-40 items-center rounded-lg border border-transparent !bg-rc-gray-700 !px-3 !pb-1 !pt-[5px] text-rc-gray-200 hover:border hover:border-rc-gray-500 focus:outline-none focus:ring-0",
77
102
  get el() {
78
103
  return anchorEl;
79
104
  },
@@ -82,10 +107,10 @@ function History($$renderer, $$props) {
82
107
  $$settled = false;
83
108
  },
84
109
  children: ($$renderer4) => {
85
- $$renderer4.push(`<span>${escape_html(triggerTitle)}</span> `);
110
+ $$renderer4.push(`<span class="min-w-0 flex-1 truncate text-left">${escape_html(triggerTitle)}</span> `);
86
111
  Icon($$renderer4, {
87
112
  name: "chevron-down",
88
- class: "size-7 text-rc-gray-500 transition-transform duration-200 " + (isOpen ? "rotate-180" : "")
113
+ class: "size-7 shrink-0 text-rc-gray-500 transition-transform duration-200 " + (isOpen ? "rotate-180" : "")
89
114
  });
90
115
  $$renderer4.push(`<!---->`);
91
116
  },
@@ -94,7 +119,7 @@ function History($$renderer, $$props) {
94
119
  $$renderer3.push(`<!----> `);
95
120
  {
96
121
  let children = function($$renderer4) {
97
- $$renderer4.push(`<div class="mt-1 max-h-96 w-60 overflow-y-auto rounded-lg border border-rc-gray-110 bg-rc-gray-930 shadow-inner-white-soft backdrop-blur-2xl" role="listbox"><!--[-->`);
122
+ $$renderer4.push(`<div class="mt-1 max-h-96 w-max min-w-full max-w-[min(26rem,90vw)] overflow-y-auto overflow-x-hidden rounded-lg border border-rc-gray-110 bg-rc-gray-930 backdrop-blur-2xl" role="listbox"><!--[-->`);
98
123
  const each_array = ensure_array_like(agentStates.slice().reverse());
99
124
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
100
125
  let state = each_array[$$index];
@@ -106,13 +131,13 @@ function History($$renderer, $$props) {
106
131
  onclick: () => handleSelectState(state.id),
107
132
  class: "group w-full rounded-none border-b border-rc-gray-110 py-2 pr-3 text-left backdrop-blur-2xl last:border-b-0 hover:bg-rc-gray-700 focus:bg-rc-gray-400",
108
133
  children: ($$renderer5) => {
109
- $$renderer5.push(`<div class="flex items-start gap-2"><div class="min-w-0"><div class="p-1 text-sm text-rc-gray-300 group-hover:text-rc-gray-200">${escape_html(state.name)}</div> `);
134
+ $$renderer5.push(`<div class="flex items-start gap-2"><div class="min-w-0"><div class="truncate p-1 text-sm text-rc-gray-300 group-hover:text-rc-gray-200">${escape_html(formatStateLabel(state))}</div> `);
110
135
  if (state.id === currentState) {
111
136
  $$renderer5.push("<!--[-->");
112
- $$renderer5.push(`<div class="p-1 text-base font-semibold text-rc-green-200">${escape_html(truncateMessage(getUserMessage(state)))}</div>`);
137
+ $$renderer5.push(`<div class="truncate p-1 text-base font-semibold text-rc-green-200">${escape_html(truncateMessage(getUserMessage(state)))}</div>`);
113
138
  } else {
114
139
  $$renderer5.push("<!--[!-->");
115
- $$renderer5.push(`<div class="p-1 text-base font-semibold text-rc-gray-100">${escape_html(truncateMessage(getUserMessage(state)))}</div>`);
140
+ $$renderer5.push(`<div class="truncate p-1 text-base font-semibold text-rc-gray-100">${escape_html(truncateMessage(getUserMessage(state)))}</div>`);
116
141
  }
117
142
  $$renderer5.push(`<!--]--></div></div>`);
118
143
  },
@@ -141,23 +166,6 @@ function History($$renderer, $$props) {
141
166
  $$renderer2.subsume($$inner_renderer);
142
167
  });
143
168
  }
144
- let chatContent = [];
145
- function isStepTrace(entry) {
146
- return !isApiCallTrace(entry) && !isConversationalTrace(entry);
147
- }
148
- function isApiCallTrace(entry) {
149
- return "operationName" in entry && "method" in entry && "path" in entry;
150
- }
151
- function isConversationalTrace(entry) {
152
- return "eventName" in entry && "role" in entry && "medium" in entry && "content" in entry;
153
- }
154
- function clearChatContent() {
155
- chatContent.length = 0;
156
- }
157
- let logContent = [];
158
- function clearLogs() {
159
- logContent.length = 0;
160
- }
161
169
  function Dialog($$renderer, $$props) {
162
170
  $$renderer.component(($$renderer2) => {
163
171
  let dialog;
@@ -305,7 +313,13 @@ function buildSegments(text, ranges) {
305
313
  }
306
314
  function PlaygroundChat($$renderer, $$props) {
307
315
  $$renderer.component(($$renderer2) => {
308
- let { class: className, context, agentId } = $$props;
316
+ let {
317
+ class: className,
318
+ context,
319
+ agentId,
320
+ analyzeDisabled = false,
321
+ onAnalyzeTrace
322
+ } = $$props;
309
323
  let text = "";
310
324
  let imageUrlInputValue = "";
311
325
  let inputEl = null;
@@ -435,34 +449,70 @@ function PlaygroundChat($$renderer, $$props) {
435
449
  return false;
436
450
  });
437
451
  })();
438
- let copiedLogs = false;
439
- let logsTimer = null;
440
- function tracesForCopy(includePrompts) {
441
- if (includePrompts) return chatContent;
442
- return chatContent.map((entry) => {
443
- if (!isStepTrace(entry)) return entry;
444
- const {
445
- receivedPrompt: _receivedPrompt,
446
- renderedPrompt: _renderedPrompt,
447
- ...rest
448
- } = entry;
449
- return rest;
450
- });
452
+ function findMainStepTraceForConversationTrace(idx) {
453
+ for (let i = idx - 1; i >= 0; i--) {
454
+ const entry = chatContent[i];
455
+ if (!isStepTrace(entry)) continue;
456
+ if (entry.name !== "main" && entry.name !== "mainReply") continue;
457
+ if (typeof entry.renderedPrompt !== "string") continue;
458
+ if (!entry.renderedPrompt.trim()) continue;
459
+ return entry;
460
+ }
461
+ for (let i = idx + 1; i < chatContent.length; i++) {
462
+ const entry = chatContent[i];
463
+ if (!isStepTrace(entry)) continue;
464
+ if (entry.name !== "main" && entry.name !== "mainReply") continue;
465
+ if (typeof entry.renderedPrompt !== "string") continue;
466
+ if (!entry.renderedPrompt.trim()) continue;
467
+ return entry;
468
+ }
469
+ return null;
470
+ }
471
+ function findNearestStringifiedConversation(idx) {
472
+ for (let i = idx - 1; i >= 0; i--) {
473
+ const entry = chatContent[i];
474
+ if (!isStepTrace(entry)) continue;
475
+ if (typeof entry.stringifiedConversation !== "string") continue;
476
+ const sc = entry.stringifiedConversation.trim();
477
+ if (!sc) continue;
478
+ return sc;
479
+ }
480
+ return null;
451
481
  }
452
- async function copyAllLogs() {
482
+ function buildAnalyzeTraceInput(trace) {
483
+ const agent = (agentId ?? "").trim();
484
+ if (!agent) throw new Error("Agent id is not available; cannot analyze");
485
+ const idx = chatContent.indexOf(trace);
486
+ if (idx === -1) throw new Error("Could not locate trace in chat history");
487
+ const stepTrace = findMainStepTraceForConversationTrace(idx);
488
+ if (!stepTrace) {
489
+ throw new Error("Could not find main step trace for this message");
490
+ }
491
+ const renderedPrompt = typeof stepTrace.renderedPrompt === "string" ? stepTrace.renderedPrompt : "";
492
+ if (!renderedPrompt.trim()) throw new Error("Main step rendered prompt is missing");
493
+ const stringifiedConversation = typeof stepTrace.stringifiedConversation === "string" && stepTrace.stringifiedConversation.trim() ? stepTrace.stringifiedConversation : findNearestStringifiedConversation(idx) ?? "";
494
+ if (!stringifiedConversation.trim()) throw new Error("Main step conversation is missing");
495
+ const response = String(trace?.content ?? "");
496
+ if (!response.trim()) throw new Error("Message content is missing");
497
+ const model = typeof stepTrace?.model === "string" ? String(stepTrace.model) : void 0;
498
+ const createdAtRaw = trace?.createdAt;
499
+ const createdAt = typeof createdAtRaw === "number" && Number.isFinite(createdAtRaw) ? createdAtRaw : void 0;
500
+ return {
501
+ trace,
502
+ stepTrace,
503
+ renderedPrompt,
504
+ stringifiedConversation,
505
+ response,
506
+ model,
507
+ createdAt
508
+ };
509
+ }
510
+ function handleAnalyzeTrace(trace) {
511
+ if (!onAnalyzeTrace) return;
453
512
  try {
454
- await navigator.clipboard.writeText(JSON.stringify(logContent, null, 2));
455
- copiedLogs = true;
456
- if (logsTimer) clearTimeout(logsTimer);
457
- logsTimer = window.setTimeout(
458
- () => {
459
- copiedLogs = false;
460
- logsTimer = null;
461
- },
462
- 2e3
463
- );
513
+ onAnalyzeTrace(buildAnalyzeTraceInput(trace));
464
514
  } catch (e) {
465
- console.error("Failed to copy logs", e);
515
+ console.error(e);
466
516
  }
467
517
  }
468
518
  let $$settled = true;
@@ -502,29 +552,9 @@ function PlaygroundChat($$renderer, $$props) {
502
552
  });
503
553
  $$renderer3.push(`<!----> `);
504
554
  Panel($$renderer3, {
505
- class: `relative flex flex-col p-2 pb-16 ${stringify(className)}`,
555
+ class: `relative flex min-h-0 flex-col p-2 pb-16 ${stringify(className)}`,
506
556
  children: ($$renderer4) => {
507
- $$renderer4.push(`<div class="mb-2 flex flex-wrap items-center justify-end gap-2">`);
508
- CopyTracesDropdown($$renderer4, {
509
- disabled: !chatContent.length,
510
- getWithPromptsText: () => JSON.stringify(tracesForCopy(true), null, 2),
511
- getWithoutPromptsText: () => JSON.stringify(tracesForCopy(false), null, 2)
512
- });
513
- $$renderer4.push(`<!----> `);
514
- Button($$renderer4, {
515
- variant: "secondary",
516
- size: "small",
517
- disabled: !logContent.length,
518
- onclick: (e) => {
519
- e.stopPropagation();
520
- copyAllLogs();
521
- },
522
- children: ($$renderer5) => {
523
- $$renderer5.push(`<!---->${escape_html(copiedLogs ? "Copied all logs" : "Copy all logs")}`);
524
- },
525
- $$slots: { default: true }
526
- });
527
- $$renderer4.push(`<!----></div> <div class="rc-scroll flex-1 overflow-y-auto pr-1"><!--[-->`);
557
+ $$renderer4.push(`<div class="rc-scroll min-h-0 flex-1 overflow-y-auto pr-1"><!--[-->`);
528
558
  const each_array = ensure_array_like(renderableEntries);
529
559
  for (let idx = 0, $$length = each_array.length; idx < $$length; idx++) {
530
560
  let entry = each_array[idx];
@@ -545,7 +575,13 @@ function PlaygroundChat($$renderer, $$props) {
545
575
  $$renderer4.push("<!--[!-->");
546
576
  if (isConversationalTrace(entry)) {
547
577
  $$renderer4.push("<!--[-->");
548
- ChatConversationalTrace($$renderer4, { trace: entry, context, agentId });
578
+ ChatConversationalTrace($$renderer4, {
579
+ trace: entry,
580
+ context,
581
+ agentId,
582
+ analyzeDisabled,
583
+ onAnalyze: onAnalyzeTrace ? handleAnalyzeTrace : void 0
584
+ });
549
585
  } else {
550
586
  $$renderer4.push("<!--[!-->");
551
587
  if (isStepTrace(entry)) {
@@ -645,309 +681,286 @@ function PlaygroundChat($$renderer, $$props) {
645
681
  $$renderer2.subsume($$inner_renderer);
646
682
  });
647
683
  }
648
- class WebSocketClient {
649
- constructor(wsUrl) {
650
- this.wsUrl = wsUrl;
651
- }
652
- ws = null;
653
- openHandler = null;
654
- closeHandler = null;
655
- errorHandler = null;
656
- messageHandler = null;
657
- retries = 0;
658
- maxRetries = 5;
659
- retryDelay = 500;
660
- retryTimeout = null;
661
- isOpen = false;
662
- isDestroyed = false;
663
- init = () => {
664
- if (this.isOpen) {
665
- return;
666
- }
667
- console.log(`Initializing websocket connection with [${this.wsUrl}]`);
668
- try {
669
- this.ws = new WebSocket(this.wsUrl);
670
- } catch (e) {
671
- this.retryConnect();
672
- return;
673
- }
674
- this.isDestroyed = false;
675
- this.ws.onmessage = (event) => {
676
- const message = JSON.parse(event.data);
677
- if (message.channel === "error") {
678
- this.errorHandler?.(message.message);
679
- } else if (message.channel === "app-events") {
680
- console.log("MSG:", message.event.type);
681
- } else if (message.channel === "log") {
682
- console.log(`MSG: log [${message.message.severity}]`, message.message.message);
683
- } else if (message.channel === "api-call-trace") {
684
- console.log(
685
- "MSG: api-call-trace",
686
- message.trace?.operationName,
687
- message.trace?.method,
688
- message.trace?.path
689
- );
690
- } else if (message.channel === "conversational-trace") {
691
- console.log(
692
- "MSG: conversational-trace",
693
- message.trace?.eventName,
694
- message.trace?.role,
695
- message.trace?.medium
696
- );
697
- }
698
- this.messageHandler?.(message);
699
- };
700
- this.ws.onerror = (error) => {
701
- console.error("Websocket error:", error);
702
- this.ws?.close();
703
- this.retryConnect();
704
- };
705
- this.ws.onclose = () => {
706
- console.log("Websocket closed");
707
- this.isOpen = false;
708
- this.retryConnect();
709
- };
710
- this.ws.onopen = () => {
711
- this.retries = 0;
712
- this.isOpen = true;
713
- if (this.retryTimeout) {
714
- clearTimeout(this.retryTimeout);
715
- }
716
- this.openHandler?.();
717
- console.log("Websocket connected");
718
- };
719
- };
720
- destroy = () => {
721
- this.isDestroyed = true;
722
- this.ws?.close();
723
- };
724
- onOpen = (handler) => {
725
- this.openHandler = handler;
726
- if (this.isOpen) {
727
- handler();
728
- }
729
- };
730
- onClose = (handler) => {
731
- this.closeHandler = handler;
732
- if (!this.isOpen) {
733
- handler();
734
- }
735
- };
736
- onError = (handler) => {
737
- this.errorHandler = handler;
738
- };
739
- onMessage = (handler) => {
740
- this.messageHandler = handler;
741
- };
742
- sendMessage = (message) => {
743
- if (message.channel === "app-events") ;
744
- this.ws?.send(JSON.stringify(message));
745
- };
746
- retryConnect = () => {
747
- if (this.isDestroyed) return;
748
- if (!this.isOpen && this.retries < this.maxRetries) {
749
- this.retries++;
750
- this.init();
751
- this.retryTimeout = setTimeout(this.retryConnect, this.retryDelay);
752
- } else {
753
- this.errorHandler?.("WebSocket Error, please reload the browser");
754
- this.closeHandler?.();
755
- }
756
- };
757
- }
758
- const wsHost = public_env.PUBLIC_WS_HOST ?? "ws://localhost:8080";
759
- const wsClient = new WebSocketClient(wsHost);
760
684
  function _page($$renderer, $$props) {
761
685
  $$renderer.component(($$renderer2) => {
762
- const { onAgentSelect, onError } = getAgentsContext();
763
- let agents = [];
764
- let steps = [];
765
- let currentStep = null;
766
- let agentStates = [];
767
- let context = null;
768
- let currentState = null;
769
- function getQueryParam(key, params) {
770
- if (params) return params.get(key);
771
- if (typeof window === "undefined") return null;
772
- const url = new URL(window.location.href);
773
- return url.searchParams.get(key);
774
- }
775
- const agentIdFromUrl = getQueryParam("agent", page.url.searchParams);
776
- onDestroy(() => {
777
- wsClient.destroy();
778
- });
779
- function sendEvent(event) {
780
- wsClient.sendMessage({ channel: "app-events", event });
781
- }
782
- function handleContextChanged(newContext) {
783
- console.log("Context changed", newContext);
784
- sendEvent({ type: "context-updated", context: newContext });
785
- }
786
- function selectAgent(agent) {
787
- onAgentSelect(agent);
788
- }
789
- function handleSelectState(stateId) {
790
- if (!agentIdFromUrl) {
791
- return;
686
+ const { state: workspace, actions } = getEditWorkspaceContext();
687
+ let analyzeRunning = false;
688
+ let copied = null;
689
+ let copyTimer = null;
690
+ let copyMenuOpen = false;
691
+ let copyMenuAnchorEl = null;
692
+ function agentLabel(agentId) {
693
+ const label = (agentId || "").trim();
694
+ if (!label) return "Agent";
695
+ return label.split("/").at(-1) ?? label;
696
+ }
697
+ function formatHHmmss(ms) {
698
+ if (typeof ms !== "number" || !Number.isFinite(ms)) return null;
699
+ const d = new Date(ms);
700
+ if (Number.isNaN(d.getTime())) return null;
701
+ const hh = String(d.getHours()).padStart(2, "0");
702
+ const mm = String(d.getMinutes()).padStart(2, "0");
703
+ const ss = String(d.getSeconds()).padStart(2, "0");
704
+ return `${hh}:${mm}:${ss}`;
705
+ }
706
+ async function handleAnalyzeTrace(input) {
707
+ if (analyzeRunning) return;
708
+ analyzeRunning = true;
709
+ const requestId = actions.openPopover("analyze");
710
+ const time = formatHHmmss(input.createdAt);
711
+ const titleSuffix = time ? ` • ${time}` : "";
712
+ const title = `Analysis — ${agentLabel(workspace.agentId)}${titleSuffix}`;
713
+ try {
714
+ const res = await trpc.agents.analyzeTrace.mutate({
715
+ agentId: workspace.agentId,
716
+ traceId: input.trace?.traceId,
717
+ eventName: input.trace.eventName,
718
+ createdAt: input.createdAt,
719
+ model: input.model,
720
+ renderedPrompt: input.renderedPrompt,
721
+ stringifiedConversation: input.stringifiedConversation,
722
+ response: input.response,
723
+ stepTrace: input.stepTrace
724
+ });
725
+ if (workspace.edit.popover?.requestId !== requestId) return;
726
+ actions.setHighlightQuotes(res.quotes);
727
+ let raw = null;
728
+ try {
729
+ raw = JSON.stringify(res.raw, null, 2);
730
+ } catch {
731
+ raw = null;
732
+ }
733
+ actions.setPopoverReady(requestId, { title, quotes: res.quotes, raw });
734
+ } catch (e) {
735
+ console.error(e);
736
+ const message = typeof e?.message === "string" ? e.message : (() => {
737
+ try {
738
+ return JSON.stringify(e);
739
+ } catch {
740
+ return String(e);
741
+ }
742
+ })();
743
+ actions.setPopoverError(requestId, message || "Failed to analyze this response", { raw: message });
744
+ } finally {
745
+ analyzeRunning = false;
792
746
  }
793
- currentState = stateId;
794
- clearChatContent();
795
- clearLogs();
796
- sendEvent({
797
- type: "select-agent",
798
- agent: agentIdFromUrl,
799
- state: currentState
800
- });
801
747
  }
802
- function handleNew() {
803
- if (!agentIdFromUrl) {
804
- return;
805
- }
806
- clearChatContent();
807
- clearLogs();
808
- currentState = null;
809
- sendEvent({
810
- type: "select-agent",
811
- agent: agentIdFromUrl,
812
- state: currentState
748
+ function tracesForCopy(includePrompts) {
749
+ if (includePrompts) return chatContent;
750
+ return chatContent.map((entry) => {
751
+ if (!isStepTrace(entry)) return entry;
752
+ const {
753
+ receivedPrompt: _receivedPrompt,
754
+ renderedPrompt: _renderedPrompt,
755
+ ...rest
756
+ } = entry;
757
+ return rest;
813
758
  });
814
759
  }
815
- const panels = {
816
- sidebar: {
817
- width: "flex-[1] min-w-[140px] max-w-xs shrink-0"
818
- },
819
- promptColumn: {
820
- width: "hidden",
821
- visibility: "hidden"
822
- },
823
- chat: {
824
- width: "flex-[4] min-w-0"
825
- },
826
- contextEditor: { width: "flex-[2] min-w-0 max-w-xl" }
827
- };
828
- function handleTabChange({ value }) {
829
- if (value === "roleplay") return;
830
- const agentId = getQueryParam("agent", page.url.searchParams);
831
- getQueryParam("step");
832
- if (value === "tests") {
833
- if (agentId) {
834
- goto();
835
- } else {
836
- goto();
837
- }
838
- return;
760
+ function setCopied(mode) {
761
+ copied = mode;
762
+ if (copyTimer) clearTimeout(copyTimer);
763
+ copyTimer = window.setTimeout(
764
+ () => {
765
+ copied = null;
766
+ copyTimer = null;
767
+ },
768
+ 2e3
769
+ );
770
+ }
771
+ async function copyLogs() {
772
+ try {
773
+ await navigator.clipboard.writeText(JSON.stringify(logContent, null, 2));
774
+ setCopied("logs");
775
+ } catch (e) {
776
+ console.error("Failed to copy logs", e);
839
777
  }
840
- if (value === "traces") {
841
- goto();
842
- return;
778
+ }
779
+ async function copyTraces(includePrompts) {
780
+ try {
781
+ await navigator.clipboard.writeText(JSON.stringify(tracesForCopy(includePrompts), null, 2));
782
+ setCopied(includePrompts ? "with-prompts" : "without-prompts");
783
+ } catch (e) {
784
+ console.error("Failed to copy traces", e);
843
785
  }
844
- goto();
786
+ }
787
+ function handleNewChat() {
788
+ actions.closePopover();
789
+ actions.closeContextPopover();
790
+ actions.selectState(null);
845
791
  }
846
792
  let $$settled = true;
847
793
  let $$inner_renderer;
848
794
  function $$render_inner($$renderer3) {
849
- head($$renderer3, ($$renderer4) => {
850
- $$renderer4.title(($$renderer5) => {
851
- $$renderer5.push(`<title>Bosun: Playground</title>`);
795
+ $$renderer3.push(`<div class="relative flex h-full min-h-0 flex-col"><div class="flex flex-none flex-nowrap items-center gap-2 p-2">`);
796
+ if (workspace.agentStates.length > 1) {
797
+ $$renderer3.push("<!--[-->");
798
+ History($$renderer3, {
799
+ agentStates: workspace.agentStates,
800
+ currentState: workspace.currentState,
801
+ class: "ml-9",
802
+ onSelectState: (id) => actions.selectState(id)
852
803
  });
804
+ } else {
805
+ $$renderer3.push("<!--[!-->");
806
+ }
807
+ $$renderer3.push(`<!--]--> <div class="ml-auto flex flex-none flex-nowrap items-center gap-2">`);
808
+ Button($$renderer3, {
809
+ variant: "secondary",
810
+ size: "small",
811
+ disabled: !workspace.agentId,
812
+ "aria-expanded": workspace.contextPopoverOpen,
813
+ "aria-haspopup": "dialog",
814
+ onclick: actions.toggleContextPopover,
815
+ children: ($$renderer4) => {
816
+ $$renderer4.push(`<!---->Edit context`);
817
+ },
818
+ $$slots: { default: true }
853
819
  });
854
- $$renderer3.push(`<div class="flex h-screen">`);
855
- AgentSidebar($$renderer3, {
856
- className: "flex-none w-16",
857
- agents,
858
- currentAgent: agentIdFromUrl || "",
859
- onSelect: selectAgent
860
- });
861
- $$renderer3.push(`<!----> <div class="flex h-full min-w-0 flex-1 flex-col bg-rc-gray-980 pb-3 pr-4 pt-2"><nav class="mb-3 flex h-14 flex-none items-center justify-between bg-rc-gray-980"><div class="flex items-center">`);
862
- Tabs($$renderer3, {
863
- value: page.url.pathname.replace(/^\//, ""),
864
- ariaLabel: "Top tabs",
865
- onChange: handleTabChange,
820
+ $$renderer3.push(`<!----> `);
821
+ Button($$renderer3, {
822
+ variant: "secondary",
823
+ size: "small",
824
+ disabled: !chatContent.length && !logContent.length,
825
+ "aria-expanded": copyMenuOpen,
826
+ "aria-haspopup": "listbox",
827
+ "aria-controls": "roleplay-copy-dropdown",
828
+ onclick: (e) => {
829
+ e.stopPropagation();
830
+ copyMenuOpen = !copyMenuOpen;
831
+ },
832
+ get el() {
833
+ return copyMenuAnchorEl;
834
+ },
835
+ set el($$value) {
836
+ copyMenuAnchorEl = $$value;
837
+ $$settled = false;
838
+ },
866
839
  children: ($$renderer4) => {
867
- Tab($$renderer4, {
868
- value: "roleplay",
869
- class: "px-3",
870
- children: ($$renderer5) => {
871
- $$renderer5.push(`<!---->Roleplay`);
840
+ if (copied === "logs") {
841
+ $$renderer4.push("<!--[-->");
842
+ $$renderer4.push(`Copied logs`);
843
+ } else {
844
+ $$renderer4.push("<!--[!-->");
845
+ if (copied === "with-prompts") {
846
+ $$renderer4.push("<!--[-->");
847
+ $$renderer4.push(`Copied traces (with prompts)`);
848
+ } else {
849
+ $$renderer4.push("<!--[!-->");
850
+ if (copied === "without-prompts") {
851
+ $$renderer4.push("<!--[-->");
852
+ $$renderer4.push(`Copied traces (without prompts)`);
853
+ } else {
854
+ $$renderer4.push("<!--[!-->");
855
+ $$renderer4.push(`Copy...`);
856
+ }
857
+ $$renderer4.push(`<!--]-->`);
872
858
  }
859
+ $$renderer4.push(`<!--]-->`);
860
+ }
861
+ $$renderer4.push(`<!--]-->`);
862
+ },
863
+ $$slots: { default: true }
864
+ });
865
+ $$renderer3.push(`<!----> `);
866
+ {
867
+ let children = function($$renderer4) {
868
+ $$renderer4.push(`<div class="mt-1 w-max overflow-hidden rounded-lg border border-rc-gray-110 bg-rc-gray-930 shadow-inner-white-soft backdrop-blur-2xl" role="listbox">`);
869
+ Button($$renderer4, {
870
+ variant: "ghost",
871
+ size: "small",
872
+ role: "option",
873
+ disabled: !logContent.length,
874
+ onclick: (e) => {
875
+ e.stopPropagation();
876
+ copyMenuOpen = false;
877
+ copyLogs();
878
+ },
879
+ class: "block rounded-none border-b border-rc-gray-110 py-2 pr-3 text-left backdrop-blur-2xl hover:bg-rc-gray-700 focus:bg-rc-gray-400",
880
+ children: ($$renderer5) => {
881
+ $$renderer5.push(`<!---->Copy logs`);
882
+ },
883
+ $$slots: { default: true }
873
884
  });
874
885
  $$renderer4.push(`<!----> `);
875
- Tab($$renderer4, {
876
- value: "tests",
877
- class: "px-3",
886
+ Button($$renderer4, {
887
+ variant: "ghost",
888
+ size: "small",
889
+ role: "option",
890
+ disabled: !chatContent.length,
891
+ onclick: (e) => {
892
+ e.stopPropagation();
893
+ copyMenuOpen = false;
894
+ copyTraces(true);
895
+ },
896
+ class: "block rounded-none border-b border-rc-gray-110 py-2 pr-3 text-left backdrop-blur-2xl hover:bg-rc-gray-700 focus:bg-rc-gray-400",
878
897
  children: ($$renderer5) => {
879
- $$renderer5.push(`<!---->Tests`);
880
- }
898
+ $$renderer5.push(`<!---->Copy traces with prompts`);
899
+ },
900
+ $$slots: { default: true }
881
901
  });
882
902
  $$renderer4.push(`<!----> `);
883
- Tab($$renderer4, {
884
- value: "traces",
885
- class: "px-3",
903
+ Button($$renderer4, {
904
+ variant: "ghost",
905
+ size: "small",
906
+ role: "option",
907
+ disabled: !chatContent.length,
908
+ onclick: (e) => {
909
+ e.stopPropagation();
910
+ copyMenuOpen = false;
911
+ copyTraces(false);
912
+ },
913
+ class: "block rounded-none py-2 pr-3 text-left backdrop-blur-2xl hover:bg-rc-gray-700 focus:bg-rc-gray-400",
886
914
  children: ($$renderer5) => {
887
- $$renderer5.push(`<!---->Traces`);
888
- }
915
+ $$renderer5.push(`<!---->Copy traces without prompts`);
916
+ },
917
+ $$slots: { default: true }
889
918
  });
890
- $$renderer4.push(`<!---->`);
891
- },
892
- $$slots: { default: true }
893
- });
894
- $$renderer3.push(`<!----></div> <div class="ml-auto flex items-baseline gap-2">`);
895
- if (agentStates.length > 1) {
896
- $$renderer3.push("<!--[-->");
897
- $$renderer3.push(`<span class="mr-2 font-semibold leading-5 text-rc-gray-500 hover:text-rc-gray-200">Chat version</span> `);
898
- History($$renderer3, {
899
- agentStates,
900
- currentState,
901
- onSelectState: handleSelectState,
902
- class: "mr-4 self-baseline"
919
+ $$renderer4.push(`<!----></div>`);
920
+ };
921
+ Dropdown($$renderer3, {
922
+ id: "roleplay-copy-dropdown",
923
+ open: copyMenuOpen,
924
+ onClose: () => copyMenuOpen = false,
925
+ anchorEl: copyMenuAnchorEl,
926
+ placement: "bottom-end",
927
+ offset: [0, 1],
928
+ children
903
929
  });
904
- $$renderer3.push(`<!---->`);
905
- } else {
906
- $$renderer3.push("<!--[!-->");
907
930
  }
908
- $$renderer3.push(`<!--]--> `);
931
+ $$renderer3.push(`<!----> `);
909
932
  Button($$renderer3, {
910
- onclick: handleNew,
911
- class: "self-baseline text-lg font-bold",
933
+ size: "small",
934
+ onclick: handleNewChat,
912
935
  children: ($$renderer4) => {
913
936
  $$renderer4.push(`<!---->New chat`);
914
937
  },
915
938
  $$slots: { default: true }
916
939
  });
917
- $$renderer3.push(`<!----></div></nav> <div class="flex-1 overflow-hidden"><div${attr_class(`${stringify("hidden")} h-full w-full gap-x-2 focus:outline-none focus:ring-0`)}><div${attr_class(`flex h-full ${stringify(panels.sidebar.width)} flex-col text-rc-gray-200`)}><!--[-->`);
918
- const each_array = ensure_array_like(steps);
919
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
920
- let step = each_array[$$index];
921
- $$renderer3.push(`<button${attr_class(`my-1 ml-2 mr-0 rounded-lg px-3 py-2 text-left hover:bg-rc-gray-700 ${stringify(step.name === currentStep?.name ? "bg-rc-gray-600" : "bg-transparent")}`)}><span>${escape_html(step.name)}</span></button>`);
922
- }
923
- $$renderer3.push(`<!--]--></div> <div${attr_class(`${stringify(panels.promptColumn.visibility)} ${stringify(panels.promptColumn.width)} flex h-full flex-col`)}>`);
924
- {
925
- $$renderer3.push("<!--[!-->");
926
- }
927
- $$renderer3.push(`<!--]--> `);
928
- {
929
- $$renderer3.push("<!--[!-->");
930
- }
931
- $$renderer3.push(`<!--]--></div> `);
932
- if (agentIdFromUrl) {
940
+ $$renderer3.push(`<!----></div></div> <div class="min-h-0 flex-1">`);
941
+ if (!workspace.wsLoaded) {
933
942
  $$renderer3.push("<!--[-->");
934
- PlaygroundChat($$renderer3, {
935
- class: `h-full min-w-0 border-thin border-rc-gray-650 shadow-inner-white-soft backdrop-blur-3xl ${stringify(panels.chat.width)}`,
936
- context,
937
- agentId: agentIdFromUrl
938
- });
939
- $$renderer3.push(`<!----> `);
940
- ContextEditor($$renderer3, {
941
- class: `h-full ${stringify(panels.contextEditor.width)} min-h-0 min-w-0 border-thin border-rc-gray-650 shadow-inner-white-soft backdrop-blur-3xl focus:outline-none focus:ring-0`,
942
- context,
943
- onContextChanged: handleContextChanged
944
- });
945
- $$renderer3.push(`<!---->`);
943
+ $$renderer3.push(`<div class="flex h-full items-center justify-center text-sm text-rc-gray-300">Connecting…</div>`);
946
944
  } else {
947
945
  $$renderer3.push("<!--[!-->");
948
- $$renderer3.push(`<div${attr_class(`h-full ${stringify(panels.chat.width)} flex items-start justify-center pt-40 text-rc-gray-200`)}>Select an agent on the left panel to start chatting</div>`);
946
+ if (!workspace.agentId) {
947
+ $$renderer3.push("<!--[-->");
948
+ $$renderer3.push(`<div class="flex h-full items-center justify-center text-sm text-rc-gray-300">Select an agent to start chatting</div>`);
949
+ } else {
950
+ $$renderer3.push("<!--[!-->");
951
+ $$renderer3.push(`<div class="h-full min-h-0 p-2">`);
952
+ PlaygroundChat($$renderer3, {
953
+ class: "h-full min-w-0",
954
+ context: workspace.context,
955
+ agentId: workspace.agentId,
956
+ analyzeDisabled: analyzeRunning,
957
+ onAnalyzeTrace: handleAnalyzeTrace
958
+ });
959
+ $$renderer3.push(`<!----></div>`);
960
+ }
961
+ $$renderer3.push(`<!--]-->`);
949
962
  }
950
- $$renderer3.push(`<!--]--></div> <div${attr_class(`${stringify("flex")} h-full items-center justify-center`)}><div class="text-rc-gray-100">Connecting...</div></div></div></div></div>`);
963
+ $$renderer3.push(`<!--]--></div></div>`);
951
964
  }
952
965
  do {
953
966
  $$settled = true;
@@ -959,4 +972,4 @@ function _page($$renderer, $$props) {
959
972
  }
960
973
 
961
974
  export { _page as default };
962
- //# sourceMappingURL=_page.svelte-d8hJxmZl.js.map
975
+ //# sourceMappingURL=_page.svelte-B3PTKffw.js.map