@recombine-ai/bosun 0.3.7 → 0.3.9

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 (453) hide show
  1. package/build/client/_app/immutable/assets/0.XjKA4GPF.css +1 -0
  2. package/build/client/_app/immutable/assets/0.XjKA4GPF.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.XjKA4GPF.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/2.DOE0DQ6H.css +1 -0
  5. package/build/client/_app/immutable/assets/2.DOE0DQ6H.css.br +0 -0
  6. package/build/client/_app/immutable/assets/2.DOE0DQ6H.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.DoLA3Mkm.css +1 -0
  11. package/build/client/_app/immutable/assets/8.DoLA3Mkm.css.br +0 -0
  12. package/build/client/_app/immutable/assets/8.DoLA3Mkm.css.gz +0 -0
  13. package/build/client/_app/immutable/assets/{Tab.BxaGw9IG.css → Tab.jOjMVh6j.css} +1 -1
  14. package/build/client/_app/immutable/assets/Tab.jOjMVh6j.css.br +0 -0
  15. package/build/client/_app/immutable/assets/Tab.jOjMVh6j.css.gz +0 -0
  16. package/build/client/_app/immutable/chunks/7wcu2ga1.js +1 -0
  17. package/build/client/_app/immutable/chunks/7wcu2ga1.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/7wcu2ga1.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/B3K88SyC.js +1 -0
  20. package/build/client/_app/immutable/chunks/B3K88SyC.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/B3K88SyC.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/{D5fGPlBk.js → BGEE3mf3.js} +1 -1
  23. package/build/client/_app/immutable/chunks/BGEE3mf3.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/BGEE3mf3.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/{BOQMymse.js → BH7VBnJ7.js} +1 -1
  26. package/build/client/_app/immutable/chunks/BH7VBnJ7.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/BH7VBnJ7.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/BHkx8tAH.js +1 -0
  29. package/build/client/_app/immutable/chunks/BHkx8tAH.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/BHkx8tAH.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/BMwJcaLS.js +1 -0
  32. package/build/client/_app/immutable/chunks/BMwJcaLS.js.br +2 -0
  33. package/build/client/_app/immutable/chunks/BMwJcaLS.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/{CfKHaDCm.js → BOrnwyTp.js} +1 -1
  35. package/build/client/_app/immutable/chunks/BOrnwyTp.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/BOrnwyTp.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/BbaH2eDw.js +1 -0
  38. package/build/client/_app/immutable/chunks/BbaH2eDw.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/BbaH2eDw.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/{C769zFCl.js → Bub2VLj9.js} +1 -1
  41. package/build/client/_app/immutable/chunks/Bub2VLj9.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/Bub2VLj9.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/{yOR3vtRx.js → ByppsbS-.js} +1 -1
  44. package/build/client/_app/immutable/chunks/ByppsbS-.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/ByppsbS-.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/C0mQlu7J.js +1 -0
  47. package/build/client/_app/immutable/chunks/C0mQlu7J.js.br +1 -0
  48. package/build/client/_app/immutable/chunks/C0mQlu7J.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/C0pV4x1v.js +1 -0
  50. package/build/client/_app/immutable/chunks/C0pV4x1v.js.br +2 -0
  51. package/build/client/_app/immutable/chunks/C0pV4x1v.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/C0sQKHpE.js +1 -0
  53. package/build/client/_app/immutable/chunks/C0sQKHpE.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/C0sQKHpE.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/{CRlLKhPr.js → CFcfsVkY.js} +1 -1
  56. package/build/client/_app/immutable/chunks/CFcfsVkY.js.br +0 -0
  57. package/build/client/_app/immutable/chunks/CFcfsVkY.js.gz +0 -0
  58. package/build/client/_app/immutable/chunks/{BHL1bMOV.js → CYkx2jgw.js} +1 -1
  59. package/build/client/_app/immutable/chunks/CYkx2jgw.js.br +0 -0
  60. package/build/client/_app/immutable/chunks/CYkx2jgw.js.gz +0 -0
  61. package/build/client/_app/immutable/chunks/CZ6iREyA.js +8 -0
  62. package/build/client/_app/immutable/chunks/CZ6iREyA.js.br +0 -0
  63. package/build/client/_app/immutable/chunks/CZ6iREyA.js.gz +0 -0
  64. package/build/client/_app/immutable/chunks/CbCJfhin.js +1 -0
  65. package/build/client/_app/immutable/chunks/CbCJfhin.js.br +0 -0
  66. package/build/client/_app/immutable/chunks/CbCJfhin.js.gz +0 -0
  67. package/build/client/_app/immutable/chunks/{DaRvw8c-.js → CdTjAjKm.js} +7 -7
  68. package/build/client/_app/immutable/chunks/CdTjAjKm.js.br +0 -0
  69. package/build/client/_app/immutable/chunks/CdTjAjKm.js.gz +0 -0
  70. package/build/client/_app/immutable/chunks/{4PztAao_.js → CmPVG-ki.js} +1 -1
  71. package/build/client/_app/immutable/chunks/CmPVG-ki.js.br +0 -0
  72. package/build/client/_app/immutable/chunks/CmPVG-ki.js.gz +0 -0
  73. package/build/client/_app/immutable/chunks/{DJ_lsF0V.js → Cnr0cZA4.js} +1 -1
  74. package/build/client/_app/immutable/chunks/Cnr0cZA4.js.br +0 -0
  75. package/build/client/_app/immutable/chunks/Cnr0cZA4.js.gz +0 -0
  76. package/build/client/_app/immutable/chunks/CojkI8AD.js +33 -0
  77. package/build/client/_app/immutable/chunks/CojkI8AD.js.br +0 -0
  78. package/build/client/_app/immutable/chunks/CojkI8AD.js.gz +0 -0
  79. package/build/client/_app/immutable/chunks/Cp_hX0eh.js +1 -0
  80. package/build/client/_app/immutable/chunks/Cp_hX0eh.js.br +0 -0
  81. package/build/client/_app/immutable/chunks/Cp_hX0eh.js.gz +0 -0
  82. package/build/client/_app/immutable/chunks/Cv6CwVfk.js +3 -0
  83. package/build/client/_app/immutable/chunks/Cv6CwVfk.js.br +0 -0
  84. package/build/client/_app/immutable/chunks/Cv6CwVfk.js.gz +0 -0
  85. package/build/client/_app/immutable/chunks/{DAfsp-82.js → D8qEOlWC.js} +1 -1
  86. package/build/client/_app/immutable/chunks/D8qEOlWC.js.br +0 -0
  87. package/build/client/_app/immutable/chunks/D8qEOlWC.js.gz +0 -0
  88. package/build/client/_app/immutable/chunks/{Bf1oCG9-.js → DOMF1VtZ.js} +1 -1
  89. package/build/client/_app/immutable/chunks/DOMF1VtZ.js.br +0 -0
  90. package/build/client/_app/immutable/chunks/DOMF1VtZ.js.gz +0 -0
  91. package/build/client/_app/immutable/chunks/{Bd7SZbXQ.js → DRaGXt8e.js} +1 -1
  92. package/build/client/_app/immutable/chunks/DRaGXt8e.js.br +0 -0
  93. package/build/client/_app/immutable/chunks/DRaGXt8e.js.gz +0 -0
  94. package/build/client/_app/immutable/chunks/{Bw2f0Pmg.js → DU-D8S0B.js} +1 -1
  95. package/build/client/_app/immutable/chunks/DU-D8S0B.js.br +0 -0
  96. package/build/client/_app/immutable/chunks/DU-D8S0B.js.gz +0 -0
  97. package/build/client/_app/immutable/chunks/{Culo9hD6.js → DadWvtYR.js} +1 -1
  98. package/build/client/_app/immutable/chunks/DadWvtYR.js.br +0 -0
  99. package/build/client/_app/immutable/chunks/DadWvtYR.js.gz +0 -0
  100. package/build/client/_app/immutable/chunks/{Cx_xzGPa.js → DbYdNz4J.js} +1 -1
  101. package/build/client/_app/immutable/chunks/DbYdNz4J.js.br +0 -0
  102. package/build/client/_app/immutable/chunks/DbYdNz4J.js.gz +0 -0
  103. package/build/client/_app/immutable/chunks/DiFAgw_s.js +1 -0
  104. package/build/client/_app/immutable/chunks/DiFAgw_s.js.br +0 -0
  105. package/build/client/_app/immutable/chunks/DiFAgw_s.js.gz +0 -0
  106. package/build/client/_app/immutable/chunks/DrMdBz9b.js +1 -0
  107. package/build/client/_app/immutable/chunks/DrMdBz9b.js.br +0 -0
  108. package/build/client/_app/immutable/chunks/DrMdBz9b.js.gz +0 -0
  109. package/build/client/_app/immutable/chunks/{qXu78w_4.js → DsvX5v5e.js} +1 -1
  110. package/build/client/_app/immutable/chunks/DsvX5v5e.js.br +0 -0
  111. package/build/client/_app/immutable/chunks/DsvX5v5e.js.gz +0 -0
  112. package/build/client/_app/immutable/chunks/Y0ymTIHd.js +1 -0
  113. package/build/client/_app/immutable/chunks/Y0ymTIHd.js.br +0 -0
  114. package/build/client/_app/immutable/chunks/Y0ymTIHd.js.gz +0 -0
  115. package/build/client/_app/immutable/chunks/_HWrJCgx.js +1 -0
  116. package/build/client/_app/immutable/chunks/_HWrJCgx.js.br +0 -0
  117. package/build/client/_app/immutable/chunks/_HWrJCgx.js.gz +0 -0
  118. package/build/client/_app/immutable/chunks/{CRTtd6by.js → qPgPowuc.js} +1 -1
  119. package/build/client/_app/immutable/chunks/qPgPowuc.js.br +0 -0
  120. package/build/client/_app/immutable/chunks/qPgPowuc.js.gz +0 -0
  121. package/build/client/_app/immutable/chunks/ri5tqg4N.js +1 -0
  122. package/build/client/_app/immutable/chunks/ri5tqg4N.js.br +0 -0
  123. package/build/client/_app/immutable/chunks/ri5tqg4N.js.gz +0 -0
  124. package/build/client/_app/immutable/chunks/{Codln_pl.js → sdLD1XcR.js} +1 -1
  125. package/build/client/_app/immutable/chunks/sdLD1XcR.js.br +0 -0
  126. package/build/client/_app/immutable/chunks/sdLD1XcR.js.gz +0 -0
  127. package/build/client/_app/immutable/chunks/t1v2-usS.js +4 -0
  128. package/build/client/_app/immutable/chunks/t1v2-usS.js.br +0 -0
  129. package/build/client/_app/immutable/chunks/t1v2-usS.js.gz +0 -0
  130. package/build/client/_app/immutable/chunks/tLFXBP7P.js +2 -0
  131. package/build/client/_app/immutable/chunks/tLFXBP7P.js.br +0 -0
  132. package/build/client/_app/immutable/chunks/tLFXBP7P.js.gz +0 -0
  133. package/build/client/_app/immutable/entry/app.jP0Pyfdy.js +2 -0
  134. package/build/client/_app/immutable/entry/app.jP0Pyfdy.js.br +0 -0
  135. package/build/client/_app/immutable/entry/app.jP0Pyfdy.js.gz +0 -0
  136. package/build/client/_app/immutable/entry/start.KD1JZMOT.js +1 -0
  137. package/build/client/_app/immutable/entry/start.KD1JZMOT.js.br +2 -0
  138. package/build/client/_app/immutable/entry/start.KD1JZMOT.js.gz +0 -0
  139. package/build/client/_app/immutable/nodes/0.ByrdmeSo.js +3 -0
  140. package/build/client/_app/immutable/nodes/0.ByrdmeSo.js.br +0 -0
  141. package/build/client/_app/immutable/nodes/0.ByrdmeSo.js.gz +0 -0
  142. package/build/client/_app/immutable/nodes/1.VLeq38lN.js +1 -0
  143. package/build/client/_app/immutable/nodes/1.VLeq38lN.js.br +0 -0
  144. package/build/client/_app/immutable/nodes/1.VLeq38lN.js.gz +0 -0
  145. package/build/client/_app/immutable/nodes/10.BHSGZYEC.js +1 -0
  146. package/build/client/_app/immutable/nodes/10.BHSGZYEC.js.br +0 -0
  147. package/build/client/_app/immutable/nodes/10.BHSGZYEC.js.gz +0 -0
  148. package/build/client/_app/immutable/nodes/11.CZ_7M4AF.js +1 -0
  149. package/build/client/_app/immutable/nodes/11.CZ_7M4AF.js.br +0 -0
  150. package/build/client/_app/immutable/nodes/11.CZ_7M4AF.js.gz +0 -0
  151. package/build/client/_app/immutable/nodes/12.DRr2l3NZ.js +1 -0
  152. package/build/client/_app/immutable/nodes/12.DRr2l3NZ.js.br +2 -0
  153. package/build/client/_app/immutable/nodes/12.DRr2l3NZ.js.gz +0 -0
  154. package/build/client/_app/immutable/nodes/13.DetV1tDO.js +1 -0
  155. package/build/client/_app/immutable/nodes/13.DetV1tDO.js.br +0 -0
  156. package/build/client/_app/immutable/nodes/13.DetV1tDO.js.gz +0 -0
  157. package/build/client/_app/immutable/nodes/14.I-eiMWQu.js +11 -0
  158. package/build/client/_app/immutable/nodes/14.I-eiMWQu.js.br +0 -0
  159. package/build/client/_app/immutable/nodes/14.I-eiMWQu.js.gz +0 -0
  160. package/build/client/_app/immutable/nodes/2.DX9U9zLg.js +35 -0
  161. package/build/client/_app/immutable/nodes/2.DX9U9zLg.js.br +0 -0
  162. package/build/client/_app/immutable/nodes/2.DX9U9zLg.js.gz +0 -0
  163. package/build/client/_app/immutable/nodes/3.Bh8il5iy.js +1 -0
  164. package/build/client/_app/immutable/nodes/3.Bh8il5iy.js.br +0 -0
  165. package/build/client/_app/immutable/nodes/3.Bh8il5iy.js.gz +0 -0
  166. package/build/client/_app/immutable/nodes/{3.C-B1sGi_.js → 4.CtzHYc6x.js} +1 -1
  167. package/build/client/_app/immutable/nodes/4.CtzHYc6x.js.br +0 -0
  168. package/build/client/_app/immutable/nodes/4.CtzHYc6x.js.gz +0 -0
  169. package/build/client/_app/immutable/nodes/5.B4dlomkV.js +1 -0
  170. package/build/client/_app/immutable/nodes/5.B4dlomkV.js.br +0 -0
  171. package/build/client/_app/immutable/nodes/5.B4dlomkV.js.gz +0 -0
  172. package/build/client/_app/immutable/nodes/6.CPYhLc46.js +1 -0
  173. package/build/client/_app/immutable/nodes/6.CPYhLc46.js.br +4 -0
  174. package/build/client/_app/immutable/nodes/6.CPYhLc46.js.gz +0 -0
  175. package/build/client/_app/immutable/nodes/7.CBPrYfFp.js +2 -0
  176. package/build/client/_app/immutable/nodes/7.CBPrYfFp.js.br +0 -0
  177. package/build/client/_app/immutable/nodes/7.CBPrYfFp.js.gz +0 -0
  178. package/build/client/_app/immutable/nodes/8.4NTWYv4c.js +6 -0
  179. package/build/client/_app/immutable/nodes/8.4NTWYv4c.js.br +0 -0
  180. package/build/client/_app/immutable/nodes/8.4NTWYv4c.js.gz +0 -0
  181. package/build/client/_app/immutable/nodes/9.BVI-eEdV.js +1 -0
  182. package/build/client/_app/immutable/nodes/9.BVI-eEdV.js.br +0 -0
  183. package/build/client/_app/immutable/nodes/9.BVI-eEdV.js.gz +0 -0
  184. package/build/client/_app/version.json +1 -1
  185. package/build/client/_app/version.json.br +0 -0
  186. package/build/client/_app/version.json.gz +0 -0
  187. package/build/server/chunks/0-CjpeDbMt.js +9 -0
  188. package/build/server/chunks/{0-CqdHgLFy.js.map → 0-CjpeDbMt.js.map} +1 -1
  189. package/build/server/chunks/1-M0YzuUQM.js +9 -0
  190. package/build/server/chunks/{1-CptSbbsC.js.map → 1-M0YzuUQM.js.map} +1 -1
  191. package/build/server/chunks/{7-soEaW5k5.js → 10-C7WLHR92.js} +5 -5
  192. package/build/server/chunks/10-C7WLHR92.js.map +1 -0
  193. package/build/server/chunks/11-CPYwUx-7.js +21 -0
  194. package/build/server/chunks/11-CPYwUx-7.js.map +1 -0
  195. package/build/server/chunks/12-C5OSs5Op.js +20 -0
  196. package/build/server/chunks/12-C5OSs5Op.js.map +1 -0
  197. package/build/server/chunks/13-BQ9R_Ex-.js +9 -0
  198. package/build/server/chunks/13-BQ9R_Ex-.js.map +1 -0
  199. package/build/server/chunks/14-BFsI6u_W.js +9 -0
  200. package/build/server/chunks/14-BFsI6u_W.js.map +1 -0
  201. package/build/server/chunks/2-Cjh0UTU6.js +9 -0
  202. package/build/server/chunks/2-Cjh0UTU6.js.map +1 -0
  203. package/build/server/chunks/3-VrGFs76T.js +9 -0
  204. package/build/server/chunks/3-VrGFs76T.js.map +1 -0
  205. package/build/server/chunks/4-CSgrzh2F.js +9 -0
  206. package/build/server/chunks/4-CSgrzh2F.js.map +1 -0
  207. package/build/server/chunks/5-zKehYil3.js +9 -0
  208. package/build/server/chunks/5-zKehYil3.js.map +1 -0
  209. package/build/server/chunks/6-uS_X9B0s.js +21 -0
  210. package/build/server/chunks/6-uS_X9B0s.js.map +1 -0
  211. package/build/server/chunks/7-DewREBAN.js +9 -0
  212. package/build/server/chunks/7-DewREBAN.js.map +1 -0
  213. package/build/server/chunks/8-Dk3ms3jm.js +9 -0
  214. package/build/server/chunks/8-Dk3ms3jm.js.map +1 -0
  215. package/build/server/chunks/9-W6XYayeK.js +25 -0
  216. package/build/server/chunks/9-W6XYayeK.js.map +1 -0
  217. package/build/server/chunks/{AgentSidebar-BIVt78i3.js → AgentSidebar-BB_yQ9s0.js} +4 -4
  218. package/build/server/chunks/AgentSidebar-BB_yQ9s0.js.map +1 -0
  219. package/build/server/chunks/{Button-ZjVPI4zo.js → Button-Cd4Yzpdy.js} +4 -4
  220. package/build/server/chunks/Button-Cd4Yzpdy.js.map +1 -0
  221. package/build/server/chunks/{CopyTracesDropdown-B8MjGOwT.js → ChatStepTrace-cq26gF4B.js} +162 -145
  222. package/build/server/chunks/ChatStepTrace-cq26gF4B.js.map +1 -0
  223. package/build/server/chunks/ContextEditor-CfjBPLpI.js +67 -0
  224. package/build/server/chunks/ContextEditor-CfjBPLpI.js.map +1 -0
  225. package/build/server/chunks/{Icon-Csjrnozq.js → Icon-BgknHaZs.js} +2 -2
  226. package/build/server/chunks/{Icon-Csjrnozq.js.map → Icon-BgknHaZs.js.map} +1 -1
  227. package/build/server/chunks/{Input-BCU2QEQ2.js → Input-BJW36iKz.js} +2 -2
  228. package/build/server/chunks/{Input-BCU2QEQ2.js.map → Input-BJW36iKz.js.map} +1 -1
  229. package/build/server/chunks/{Modal-bmttP-F1.js → Modal-D4tx0Bdo.js} +3 -3
  230. package/build/server/chunks/Modal-D4tx0Bdo.js.map +1 -0
  231. package/build/server/chunks/{Tab-Jw_OwV7Q.js → Tab-DheAG-QC.js} +3 -3
  232. package/build/server/chunks/Tab-DheAG-QC.js.map +1 -0
  233. package/build/server/chunks/{_layout.svelte-GwcIlDHC.js → _layout.svelte-BL8XnK1E.js} +23 -28
  234. package/build/server/chunks/_layout.svelte-BL8XnK1E.js.map +1 -0
  235. package/build/server/chunks/_layout.svelte-DHgaGTP_.js +844 -0
  236. package/build/server/chunks/_layout.svelte-DHgaGTP_.js.map +1 -0
  237. package/build/server/chunks/{_layout.svelte-CrT993Da.js → _layout.svelte-Svi5xbzP.js} +1 -14
  238. package/build/server/chunks/_layout.svelte-Svi5xbzP.js.map +1 -0
  239. package/build/server/chunks/{_page.svelte-CVO2CdmB.js → _page.svelte-39hvC6-Q.js} +4 -4
  240. package/build/server/chunks/{_page.svelte-CVO2CdmB.js.map → _page.svelte-39hvC6-Q.js.map} +1 -1
  241. package/build/server/chunks/{_page.svelte-D8d07zd0.js → _page.svelte-BpnUXzfh.js} +25 -10
  242. package/build/server/chunks/_page.svelte-BpnUXzfh.js.map +1 -0
  243. package/build/server/chunks/{_page.svelte--l_LvFv_.js → _page.svelte-C1YaC_Qg.js} +498 -496
  244. package/build/server/chunks/_page.svelte-C1YaC_Qg.js.map +1 -0
  245. package/build/server/chunks/{_page.svelte-BAi74pJ3.js → _page.svelte-CbqAsz26.js} +3 -3
  246. package/build/server/chunks/_page.svelte-CbqAsz26.js.map +1 -0
  247. package/build/server/chunks/{_page.svelte-BOzS_rqK.js → _page.svelte-CmsDxzfh.js} +19 -27
  248. package/build/server/chunks/_page.svelte-CmsDxzfh.js.map +1 -0
  249. package/build/server/chunks/{_page.svelte-d8hJxmZl.js → _page.svelte-DCP-PSh0.js} +243 -379
  250. package/build/server/chunks/_page.svelte-DCP-PSh0.js.map +1 -0
  251. package/build/server/chunks/edit-workspace-context-OTOIRCI0.js +13 -0
  252. package/build/server/chunks/edit-workspace-context-OTOIRCI0.js.map +1 -0
  253. package/build/server/chunks/hooks-BJphIAi-.js +8 -0
  254. package/build/server/chunks/hooks-BJphIAi-.js.map +1 -0
  255. package/build/server/chunks/{Tab.svelte_svelte_type_style_lang-ByZ0KVzO.js → index-server-CefdgakO.js} +2 -2
  256. package/build/server/chunks/index-server-CefdgakO.js.map +1 -0
  257. package/build/server/chunks/{index2-C572SQM_.js → index2-BuOY2QE4.js} +2 -2
  258. package/build/server/chunks/{index2-C572SQM_.js.map → index2-BuOY2QE4.js.map} +1 -1
  259. package/build/server/chunks/log-content.svelte-B3ZvaoLs.js +20 -0
  260. package/build/server/chunks/log-content.svelte-B3ZvaoLs.js.map +1 -0
  261. package/build/server/index.js +3 -2
  262. package/build/server/index.js.map +1 -1
  263. package/build/server/manifest.js +51 -18
  264. package/build/server/manifest.js.map +1 -1
  265. package/package.json +3 -1
  266. package/src/backend/lib/decode-html-entities.spec.ts +29 -0
  267. package/src/backend/lib/decode-html-entities.ts +25 -0
  268. package/src/backend/roleplay/router.ts +31 -0
  269. package/src/backend/tests/academy.ts +353 -115
  270. package/src/backend/tests/analyze.ts +357 -0
  271. package/src/backend/tests/data.ts +48 -12
  272. package/src/backend/tests/emulate-agents.ts +39 -4
  273. package/src/backend/tests/prompt-issues.ts +204 -0
  274. package/src/backend/tests/router.ts +51 -4
  275. package/build/client/_app/immutable/assets/0.BPqDeVAI.css +0 -1
  276. package/build/client/_app/immutable/assets/0.BPqDeVAI.css.br +0 -0
  277. package/build/client/_app/immutable/assets/0.BPqDeVAI.css.gz +0 -0
  278. package/build/client/_app/immutable/assets/4.BIrSikaZ.css +0 -1
  279. package/build/client/_app/immutable/assets/4.BIrSikaZ.css.br +0 -0
  280. package/build/client/_app/immutable/assets/4.BIrSikaZ.css.gz +0 -0
  281. package/build/client/_app/immutable/assets/6.C4C8vBUW.css +0 -1
  282. package/build/client/_app/immutable/assets/6.C4C8vBUW.css.br +0 -0
  283. package/build/client/_app/immutable/assets/6.C4C8vBUW.css.gz +0 -0
  284. package/build/client/_app/immutable/assets/Tab.BxaGw9IG.css.br +0 -0
  285. package/build/client/_app/immutable/assets/Tab.BxaGw9IG.css.gz +0 -0
  286. package/build/client/_app/immutable/chunks/4PztAao_.js.br +0 -0
  287. package/build/client/_app/immutable/chunks/4PztAao_.js.gz +0 -0
  288. package/build/client/_app/immutable/chunks/B2gGEZTS.js +0 -1
  289. package/build/client/_app/immutable/chunks/B2gGEZTS.js.br +0 -2
  290. package/build/client/_app/immutable/chunks/B2gGEZTS.js.gz +0 -0
  291. package/build/client/_app/immutable/chunks/BHL1bMOV.js.br +0 -0
  292. package/build/client/_app/immutable/chunks/BHL1bMOV.js.gz +0 -0
  293. package/build/client/_app/immutable/chunks/BOQMymse.js.br +0 -0
  294. package/build/client/_app/immutable/chunks/BOQMymse.js.gz +0 -0
  295. package/build/client/_app/immutable/chunks/Bd7SZbXQ.js.br +0 -0
  296. package/build/client/_app/immutable/chunks/Bd7SZbXQ.js.gz +0 -0
  297. package/build/client/_app/immutable/chunks/Bf1oCG9-.js.br +0 -0
  298. package/build/client/_app/immutable/chunks/Bf1oCG9-.js.gz +0 -0
  299. package/build/client/_app/immutable/chunks/BgaIh2D4.js +0 -1
  300. package/build/client/_app/immutable/chunks/BgaIh2D4.js.br +0 -0
  301. package/build/client/_app/immutable/chunks/BgaIh2D4.js.gz +0 -0
  302. package/build/client/_app/immutable/chunks/BrDK8TTs.js +0 -2
  303. package/build/client/_app/immutable/chunks/BrDK8TTs.js.br +0 -0
  304. package/build/client/_app/immutable/chunks/BrDK8TTs.js.gz +0 -0
  305. package/build/client/_app/immutable/chunks/BsKQRAyX.js +0 -1
  306. package/build/client/_app/immutable/chunks/BsKQRAyX.js.br +0 -0
  307. package/build/client/_app/immutable/chunks/BsKQRAyX.js.gz +0 -0
  308. package/build/client/_app/immutable/chunks/Bw2f0Pmg.js.br +0 -0
  309. package/build/client/_app/immutable/chunks/Bw2f0Pmg.js.gz +0 -0
  310. package/build/client/_app/immutable/chunks/BzAx_Qn3.js +0 -1
  311. package/build/client/_app/immutable/chunks/BzAx_Qn3.js.br +0 -0
  312. package/build/client/_app/immutable/chunks/BzAx_Qn3.js.gz +0 -0
  313. package/build/client/_app/immutable/chunks/C-dTPkQy.js +0 -1
  314. package/build/client/_app/immutable/chunks/C-dTPkQy.js.br +0 -0
  315. package/build/client/_app/immutable/chunks/C-dTPkQy.js.gz +0 -0
  316. package/build/client/_app/immutable/chunks/C769zFCl.js.br +0 -0
  317. package/build/client/_app/immutable/chunks/C769zFCl.js.gz +0 -0
  318. package/build/client/_app/immutable/chunks/C7FjDhij.js +0 -4
  319. package/build/client/_app/immutable/chunks/C7FjDhij.js.br +0 -0
  320. package/build/client/_app/immutable/chunks/C7FjDhij.js.gz +0 -0
  321. package/build/client/_app/immutable/chunks/CInh9KnU.js +0 -1
  322. package/build/client/_app/immutable/chunks/CInh9KnU.js.br +0 -2
  323. package/build/client/_app/immutable/chunks/CInh9KnU.js.gz +0 -0
  324. package/build/client/_app/immutable/chunks/CRTtd6by.js.br +0 -0
  325. package/build/client/_app/immutable/chunks/CRTtd6by.js.gz +0 -0
  326. package/build/client/_app/immutable/chunks/CRlLKhPr.js.br +0 -0
  327. package/build/client/_app/immutable/chunks/CRlLKhPr.js.gz +0 -0
  328. package/build/client/_app/immutable/chunks/CUfDVPpW.js +0 -1
  329. package/build/client/_app/immutable/chunks/CUfDVPpW.js.br +0 -0
  330. package/build/client/_app/immutable/chunks/CUfDVPpW.js.gz +0 -0
  331. package/build/client/_app/immutable/chunks/CfKHaDCm.js.br +0 -0
  332. package/build/client/_app/immutable/chunks/CfKHaDCm.js.gz +0 -0
  333. package/build/client/_app/immutable/chunks/Codln_pl.js.br +0 -0
  334. package/build/client/_app/immutable/chunks/Codln_pl.js.gz +0 -0
  335. package/build/client/_app/immutable/chunks/Culo9hD6.js.br +0 -0
  336. package/build/client/_app/immutable/chunks/Culo9hD6.js.gz +0 -0
  337. package/build/client/_app/immutable/chunks/CxDLEL1d.js +0 -8
  338. package/build/client/_app/immutable/chunks/CxDLEL1d.js.br +0 -0
  339. package/build/client/_app/immutable/chunks/CxDLEL1d.js.gz +0 -0
  340. package/build/client/_app/immutable/chunks/Cx_xzGPa.js.br +0 -0
  341. package/build/client/_app/immutable/chunks/Cx_xzGPa.js.gz +0 -0
  342. package/build/client/_app/immutable/chunks/D-51TRqM.js +0 -33
  343. package/build/client/_app/immutable/chunks/D-51TRqM.js.br +0 -0
  344. package/build/client/_app/immutable/chunks/D-51TRqM.js.gz +0 -0
  345. package/build/client/_app/immutable/chunks/D5fGPlBk.js.br +0 -0
  346. package/build/client/_app/immutable/chunks/D5fGPlBk.js.gz +0 -0
  347. package/build/client/_app/immutable/chunks/D9h7-Y-f.js +0 -1
  348. package/build/client/_app/immutable/chunks/D9h7-Y-f.js.br +0 -0
  349. package/build/client/_app/immutable/chunks/D9h7-Y-f.js.gz +0 -0
  350. package/build/client/_app/immutable/chunks/DAfsp-82.js.br +0 -0
  351. package/build/client/_app/immutable/chunks/DAfsp-82.js.gz +0 -0
  352. package/build/client/_app/immutable/chunks/DJ_lsF0V.js.br +0 -0
  353. package/build/client/_app/immutable/chunks/DJ_lsF0V.js.gz +0 -0
  354. package/build/client/_app/immutable/chunks/DaRvw8c-.js.br +0 -0
  355. package/build/client/_app/immutable/chunks/DaRvw8c-.js.gz +0 -0
  356. package/build/client/_app/immutable/chunks/FawE95CY.js +0 -1
  357. package/build/client/_app/immutable/chunks/FawE95CY.js.br +0 -0
  358. package/build/client/_app/immutable/chunks/FawE95CY.js.gz +0 -0
  359. package/build/client/_app/immutable/chunks/HBgR5qMR.js +0 -3
  360. package/build/client/_app/immutable/chunks/HBgR5qMR.js.br +0 -0
  361. package/build/client/_app/immutable/chunks/HBgR5qMR.js.gz +0 -0
  362. package/build/client/_app/immutable/chunks/I-mny6CH.js +0 -1
  363. package/build/client/_app/immutable/chunks/I-mny6CH.js.br +0 -0
  364. package/build/client/_app/immutable/chunks/I-mny6CH.js.gz +0 -0
  365. package/build/client/_app/immutable/chunks/aeuWzujc.js +0 -1
  366. package/build/client/_app/immutable/chunks/aeuWzujc.js.br +0 -2
  367. package/build/client/_app/immutable/chunks/aeuWzujc.js.gz +0 -0
  368. package/build/client/_app/immutable/chunks/qXu78w_4.js.br +0 -0
  369. package/build/client/_app/immutable/chunks/qXu78w_4.js.gz +0 -0
  370. package/build/client/_app/immutable/chunks/yOR3vtRx.js.br +0 -0
  371. package/build/client/_app/immutable/chunks/yOR3vtRx.js.gz +0 -0
  372. package/build/client/_app/immutable/entry/app.Dd7V5oBZ.js +0 -2
  373. package/build/client/_app/immutable/entry/app.Dd7V5oBZ.js.br +0 -0
  374. package/build/client/_app/immutable/entry/app.Dd7V5oBZ.js.gz +0 -0
  375. package/build/client/_app/immutable/entry/start.I6276KWl.js +0 -1
  376. package/build/client/_app/immutable/entry/start.I6276KWl.js.br +0 -2
  377. package/build/client/_app/immutable/entry/start.I6276KWl.js.gz +0 -0
  378. package/build/client/_app/immutable/nodes/0.DgVTcUxG.js +0 -3
  379. package/build/client/_app/immutable/nodes/0.DgVTcUxG.js.br +0 -0
  380. package/build/client/_app/immutable/nodes/0.DgVTcUxG.js.gz +0 -0
  381. package/build/client/_app/immutable/nodes/1._3H1cdWd.js +0 -1
  382. package/build/client/_app/immutable/nodes/1._3H1cdWd.js.br +0 -0
  383. package/build/client/_app/immutable/nodes/1._3H1cdWd.js.gz +0 -0
  384. package/build/client/_app/immutable/nodes/2.BO0WBJz3.js +0 -1
  385. package/build/client/_app/immutable/nodes/2.BO0WBJz3.js.br +0 -0
  386. package/build/client/_app/immutable/nodes/2.BO0WBJz3.js.gz +0 -0
  387. package/build/client/_app/immutable/nodes/3.C-B1sGi_.js.br +0 -0
  388. package/build/client/_app/immutable/nodes/3.C-B1sGi_.js.gz +0 -0
  389. package/build/client/_app/immutable/nodes/4.SsrvuMXV.js +0 -35
  390. package/build/client/_app/immutable/nodes/4.SsrvuMXV.js.br +0 -0
  391. package/build/client/_app/immutable/nodes/4.SsrvuMXV.js.gz +0 -0
  392. package/build/client/_app/immutable/nodes/5.DM_0dw43.js +0 -1
  393. package/build/client/_app/immutable/nodes/5.DM_0dw43.js.br +0 -0
  394. package/build/client/_app/immutable/nodes/5.DM_0dw43.js.gz +0 -0
  395. package/build/client/_app/immutable/nodes/6.BLcf1-sM.js +0 -5
  396. package/build/client/_app/immutable/nodes/6.BLcf1-sM.js.br +0 -0
  397. package/build/client/_app/immutable/nodes/6.BLcf1-sM.js.gz +0 -0
  398. package/build/client/_app/immutable/nodes/7.BLozkJCY.js +0 -1
  399. package/build/client/_app/immutable/nodes/7.BLozkJCY.js.br +0 -0
  400. package/build/client/_app/immutable/nodes/7.BLozkJCY.js.gz +0 -0
  401. package/build/client/_app/immutable/nodes/8.BeHRzquW.js +0 -1
  402. package/build/client/_app/immutable/nodes/8.BeHRzquW.js.br +0 -0
  403. package/build/client/_app/immutable/nodes/8.BeHRzquW.js.gz +0 -0
  404. package/build/client/_app/immutable/nodes/9.B1qNbiqD.js +0 -11
  405. package/build/client/_app/immutable/nodes/9.B1qNbiqD.js.br +0 -0
  406. package/build/client/_app/immutable/nodes/9.B1qNbiqD.js.gz +0 -0
  407. package/build/server/chunks/0-CqdHgLFy.js +0 -9
  408. package/build/server/chunks/1-CptSbbsC.js +0 -9
  409. package/build/server/chunks/2-CVrU1q5e.js +0 -9
  410. package/build/server/chunks/2-CVrU1q5e.js.map +0 -1
  411. package/build/server/chunks/3-Bi3FZgxy.js +0 -9
  412. package/build/server/chunks/3-Bi3FZgxy.js.map +0 -1
  413. package/build/server/chunks/4-Cg81z1QT.js +0 -9
  414. package/build/server/chunks/4-Cg81z1QT.js.map +0 -1
  415. package/build/server/chunks/5-BDZ8fU2l.js +0 -9
  416. package/build/server/chunks/5-BDZ8fU2l.js.map +0 -1
  417. package/build/server/chunks/6-_jdLZ_Lr.js +0 -33
  418. package/build/server/chunks/6-_jdLZ_Lr.js.map +0 -1
  419. package/build/server/chunks/7-soEaW5k5.js.map +0 -1
  420. package/build/server/chunks/8-Yp_dUmRS.js +0 -9
  421. package/build/server/chunks/8-Yp_dUmRS.js.map +0 -1
  422. package/build/server/chunks/9-Cb4lmLGK.js +0 -9
  423. package/build/server/chunks/9-Cb4lmLGK.js.map +0 -1
  424. package/build/server/chunks/AgentSidebar-BIVt78i3.js.map +0 -1
  425. package/build/server/chunks/Button-ZjVPI4zo.js.map +0 -1
  426. package/build/server/chunks/ContextEditor-Dgs8Ax9B.js +0 -45
  427. package/build/server/chunks/ContextEditor-Dgs8Ax9B.js.map +0 -1
  428. package/build/server/chunks/CopyTracesDropdown-B8MjGOwT.js.map +0 -1
  429. package/build/server/chunks/Modal-bmttP-F1.js.map +0 -1
  430. package/build/server/chunks/Tab-Jw_OwV7Q.js.map +0 -1
  431. package/build/server/chunks/Tab.svelte_svelte_type_style_lang-ByZ0KVzO.js.map +0 -1
  432. package/build/server/chunks/_layout.svelte-CrT993Da.js.map +0 -1
  433. package/build/server/chunks/_layout.svelte-GwcIlDHC.js.map +0 -1
  434. package/build/server/chunks/_page.svelte--l_LvFv_.js.map +0 -1
  435. package/build/server/chunks/_page.svelte-BAi74pJ3.js.map +0 -1
  436. package/build/server/chunks/_page.svelte-BOzS_rqK.js.map +0 -1
  437. package/build/server/chunks/_page.svelte-D8d07zd0.js.map +0 -1
  438. package/build/server/chunks/_page.svelte-d8hJxmZl.js.map +0 -1
  439. /package/build/client/_app/immutable/assets/{9.C5apk4jm.css → 14.C5apk4jm.css} +0 -0
  440. /package/build/client/_app/immutable/assets/{9.C5apk4jm.css.br → 14.C5apk4jm.css.br} +0 -0
  441. /package/build/client/_app/immutable/assets/{9.C5apk4jm.css.gz → 14.C5apk4jm.css.gz} +0 -0
  442. /package/build/client/_app/immutable/assets/{2.Dzh7_Q8n.css → 3.Dzh7_Q8n.css} +0 -0
  443. /package/build/client/_app/immutable/assets/{2.Dzh7_Q8n.css.br → 3.Dzh7_Q8n.css.br} +0 -0
  444. /package/build/client/_app/immutable/assets/{2.Dzh7_Q8n.css.gz → 3.Dzh7_Q8n.css.gz} +0 -0
  445. /package/build/client/_app/immutable/assets/{3.CZVw96CJ.css → 4.CZVw96CJ.css} +0 -0
  446. /package/build/client/_app/immutable/assets/{3.CZVw96CJ.css.br → 4.CZVw96CJ.css.br} +0 -0
  447. /package/build/client/_app/immutable/assets/{3.CZVw96CJ.css.gz → 4.CZVw96CJ.css.gz} +0 -0
  448. /package/build/client/_app/immutable/assets/{CopyTracesDropdown.NFJFjHv0.css → ChatStepTrace.NFJFjHv0.css} +0 -0
  449. /package/build/client/_app/immutable/assets/{CopyTracesDropdown.NFJFjHv0.css.br → ChatStepTrace.NFJFjHv0.css.br} +0 -0
  450. /package/build/client/_app/immutable/assets/{CopyTracesDropdown.NFJFjHv0.css.gz → ChatStepTrace.NFJFjHv0.css.gz} +0 -0
  451. /package/build/client/_app/immutable/assets/{Modal.tn0RQdqM.css → bosun-theme.tn0RQdqM.css} +0 -0
  452. /package/build/client/_app/immutable/assets/{Modal.tn0RQdqM.css.br → bosun-theme.tn0RQdqM.css.br} +0 -0
  453. /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';
6
1
  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';
2
+ import { B as Button } from './Button-Cd4Yzpdy.js';
3
+ import { C as CopyTracesDropdown, D as Dropdown, a as ChatApiCallTrace, b as ChatConversationalTrace, c as ChatStepTrace } from './ChatStepTrace-cq26gF4B.js';
4
+ 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';
5
+ import { I as Icon } from './Icon-BgknHaZs.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-BJW36iKz.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 {
@@ -141,23 +132,6 @@ function History($$renderer, $$props) {
141
132
  $$renderer2.subsume($$inner_renderer);
142
133
  });
143
134
  }
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
135
  function Dialog($$renderer, $$props) {
162
136
  $$renderer.component(($$renderer2) => {
163
137
  let dialog;
@@ -305,7 +279,13 @@ function buildSegments(text, ranges) {
305
279
  }
306
280
  function PlaygroundChat($$renderer, $$props) {
307
281
  $$renderer.component(($$renderer2) => {
308
- let { class: className, context, agentId } = $$props;
282
+ let {
283
+ class: className,
284
+ context,
285
+ agentId,
286
+ analyzeDisabled = false,
287
+ onAnalyzeTrace
288
+ } = $$props;
309
289
  let text = "";
310
290
  let imageUrlInputValue = "";
311
291
  let inputEl = null;
@@ -435,34 +415,70 @@ function PlaygroundChat($$renderer, $$props) {
435
415
  return false;
436
416
  });
437
417
  })();
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
- });
418
+ function findMainStepTraceForConversationTrace(idx) {
419
+ for (let i = idx - 1; i >= 0; i--) {
420
+ const entry = chatContent[i];
421
+ if (!isStepTrace(entry)) continue;
422
+ if (entry.name !== "main" && entry.name !== "mainReply") continue;
423
+ if (typeof entry.renderedPrompt !== "string") continue;
424
+ if (!entry.renderedPrompt.trim()) continue;
425
+ return entry;
426
+ }
427
+ for (let i = idx + 1; i < chatContent.length; i++) {
428
+ const entry = chatContent[i];
429
+ if (!isStepTrace(entry)) continue;
430
+ if (entry.name !== "main" && entry.name !== "mainReply") continue;
431
+ if (typeof entry.renderedPrompt !== "string") continue;
432
+ if (!entry.renderedPrompt.trim()) continue;
433
+ return entry;
434
+ }
435
+ return null;
451
436
  }
452
- async function copyAllLogs() {
437
+ function findNearestStringifiedConversation(idx) {
438
+ for (let i = idx - 1; i >= 0; i--) {
439
+ const entry = chatContent[i];
440
+ if (!isStepTrace(entry)) continue;
441
+ if (typeof entry.stringifiedConversation !== "string") continue;
442
+ const sc = entry.stringifiedConversation.trim();
443
+ if (!sc) continue;
444
+ return sc;
445
+ }
446
+ return null;
447
+ }
448
+ function buildAnalyzeTraceInput(trace) {
449
+ const agent = (agentId ?? "").trim();
450
+ if (!agent) throw new Error("Agent id is not available; cannot analyze");
451
+ const idx = chatContent.indexOf(trace);
452
+ if (idx === -1) throw new Error("Could not locate trace in chat history");
453
+ const stepTrace = findMainStepTraceForConversationTrace(idx);
454
+ if (!stepTrace) {
455
+ throw new Error("Could not find main step trace for this message");
456
+ }
457
+ const renderedPrompt = typeof stepTrace.renderedPrompt === "string" ? stepTrace.renderedPrompt : "";
458
+ if (!renderedPrompt.trim()) throw new Error("Main step rendered prompt is missing");
459
+ const stringifiedConversation = typeof stepTrace.stringifiedConversation === "string" && stepTrace.stringifiedConversation.trim() ? stepTrace.stringifiedConversation : findNearestStringifiedConversation(idx) ?? "";
460
+ if (!stringifiedConversation.trim()) throw new Error("Main step conversation is missing");
461
+ const response = String(trace?.content ?? "");
462
+ if (!response.trim()) throw new Error("Message content is missing");
463
+ const model = typeof stepTrace?.model === "string" ? String(stepTrace.model) : void 0;
464
+ const createdAtRaw = trace?.createdAt;
465
+ const createdAt = typeof createdAtRaw === "number" && Number.isFinite(createdAtRaw) ? createdAtRaw : void 0;
466
+ return {
467
+ trace,
468
+ stepTrace,
469
+ renderedPrompt,
470
+ stringifiedConversation,
471
+ response,
472
+ model,
473
+ createdAt
474
+ };
475
+ }
476
+ function handleAnalyzeTrace(trace) {
477
+ if (!onAnalyzeTrace) return;
453
478
  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
- );
479
+ onAnalyzeTrace(buildAnalyzeTraceInput(trace));
464
480
  } catch (e) {
465
- console.error("Failed to copy logs", e);
481
+ console.error(e);
466
482
  }
467
483
  }
468
484
  let $$settled = true;
@@ -502,29 +518,9 @@ function PlaygroundChat($$renderer, $$props) {
502
518
  });
503
519
  $$renderer3.push(`<!----> `);
504
520
  Panel($$renderer3, {
505
- class: `relative flex flex-col p-2 pb-16 ${stringify(className)}`,
521
+ class: `relative flex min-h-0 flex-col p-2 pb-16 ${stringify(className)}`,
506
522
  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"><!--[-->`);
523
+ $$renderer4.push(`<div class="rc-scroll min-h-0 flex-1 overflow-y-auto pr-1"><!--[-->`);
528
524
  const each_array = ensure_array_like(renderableEntries);
529
525
  for (let idx = 0, $$length = each_array.length; idx < $$length; idx++) {
530
526
  let entry = each_array[idx];
@@ -545,7 +541,13 @@ function PlaygroundChat($$renderer, $$props) {
545
541
  $$renderer4.push("<!--[!-->");
546
542
  if (isConversationalTrace(entry)) {
547
543
  $$renderer4.push("<!--[-->");
548
- ChatConversationalTrace($$renderer4, { trace: entry, context, agentId });
544
+ ChatConversationalTrace($$renderer4, {
545
+ trace: entry,
546
+ context,
547
+ agentId,
548
+ analyzeDisabled,
549
+ onAnalyze: onAnalyzeTrace ? handleAnalyzeTrace : void 0
550
+ });
549
551
  } else {
550
552
  $$renderer4.push("<!--[!-->");
551
553
  if (isStepTrace(entry)) {
@@ -645,318 +647,180 @@ function PlaygroundChat($$renderer, $$props) {
645
647
  $$renderer2.subsume($$inner_renderer);
646
648
  });
647
649
  }
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
650
  function _page($$renderer, $$props) {
761
651
  $$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);
652
+ const { state: workspace, actions } = getEditWorkspaceContext();
653
+ let analyzeRunning = false;
654
+ let copiedLogs = false;
655
+ let logsTimer = null;
656
+ function agentLabel(agentId) {
657
+ const label = (agentId || "").trim();
658
+ if (!label) return "Agent";
659
+ return label.split("/").at(-1) ?? label;
788
660
  }
789
- function handleSelectState(stateId) {
790
- if (!agentIdFromUrl) {
791
- return;
661
+ function formatHHmmss(ms) {
662
+ if (typeof ms !== "number" || !Number.isFinite(ms)) return null;
663
+ const d = new Date(ms);
664
+ if (Number.isNaN(d.getTime())) return null;
665
+ const hh = String(d.getHours()).padStart(2, "0");
666
+ const mm = String(d.getMinutes()).padStart(2, "0");
667
+ const ss = String(d.getSeconds()).padStart(2, "0");
668
+ return `${hh}:${mm}:${ss}`;
669
+ }
670
+ async function handleAnalyzeTrace(input) {
671
+ if (analyzeRunning) return;
672
+ analyzeRunning = true;
673
+ const requestId = actions.openPopover("analyze");
674
+ const time = formatHHmmss(input.createdAt);
675
+ const titleSuffix = time ? ` • ${time}` : "";
676
+ const title = `Analysis — ${agentLabel(workspace.agentId)}${titleSuffix}`;
677
+ try {
678
+ const res = await trpc.agents.analyzeTrace.mutate({
679
+ agentId: workspace.agentId,
680
+ traceId: input.trace?.traceId,
681
+ eventName: input.trace.eventName,
682
+ createdAt: input.createdAt,
683
+ model: input.model,
684
+ renderedPrompt: input.renderedPrompt,
685
+ stringifiedConversation: input.stringifiedConversation,
686
+ response: input.response,
687
+ stepTrace: input.stepTrace
688
+ });
689
+ if (workspace.edit.popover?.requestId !== requestId) return;
690
+ actions.setHighlightQuotes(res.quotes);
691
+ let raw = null;
692
+ try {
693
+ raw = JSON.stringify(res.raw, null, 2);
694
+ } catch {
695
+ raw = null;
696
+ }
697
+ actions.setPopoverReady(requestId, { title, quotes: res.quotes, raw });
698
+ } catch (e) {
699
+ console.error(e);
700
+ const message = typeof e?.message === "string" ? e.message : (() => {
701
+ try {
702
+ return JSON.stringify(e);
703
+ } catch {
704
+ return String(e);
705
+ }
706
+ })();
707
+ actions.setPopoverError(requestId, message || "Failed to analyze this response", { raw: message });
708
+ } finally {
709
+ analyzeRunning = false;
792
710
  }
793
- currentState = stateId;
794
- clearChatContent();
795
- clearLogs();
796
- sendEvent({
797
- type: "select-agent",
798
- agent: agentIdFromUrl,
799
- state: currentState
711
+ }
712
+ function tracesForCopy(includePrompts) {
713
+ if (includePrompts) return chatContent;
714
+ return chatContent.map((entry) => {
715
+ if (!isStepTrace(entry)) return entry;
716
+ const {
717
+ receivedPrompt: _receivedPrompt,
718
+ renderedPrompt: _renderedPrompt,
719
+ ...rest
720
+ } = entry;
721
+ return rest;
800
722
  });
801
723
  }
802
- function handleNew() {
803
- if (!agentIdFromUrl) {
804
- return;
724
+ async function copyLogs() {
725
+ try {
726
+ await navigator.clipboard.writeText(JSON.stringify(logContent, null, 2));
727
+ copiedLogs = true;
728
+ if (logsTimer) clearTimeout(logsTimer);
729
+ logsTimer = window.setTimeout(
730
+ () => {
731
+ copiedLogs = false;
732
+ logsTimer = null;
733
+ },
734
+ 2e3
735
+ );
736
+ } catch (e) {
737
+ console.error("Failed to copy logs", e);
805
738
  }
806
- clearChatContent();
807
- clearLogs();
808
- currentState = null;
809
- sendEvent({
810
- type: "select-agent",
811
- agent: agentIdFromUrl,
812
- state: currentState
739
+ }
740
+ function handleNewChat() {
741
+ actions.closePopover();
742
+ actions.closeContextPopover();
743
+ actions.selectState(null);
744
+ }
745
+ $$renderer2.push(`<div class="relative flex h-full min-h-0 flex-col"><div class="flex flex-none flex-nowrap items-center justify-end gap-2 border-b border-rc-gray-700 p-2">`);
746
+ if (workspace.agentStates.length > 1) {
747
+ $$renderer2.push("<!--[-->");
748
+ History($$renderer2, {
749
+ agentStates: workspace.agentStates,
750
+ currentState: workspace.currentState,
751
+ onSelectState: (id) => actions.selectState(id)
813
752
  });
753
+ } else {
754
+ $$renderer2.push("<!--[!-->");
814
755
  }
815
- const panels = {
816
- sidebar: {
817
- width: "flex-[1] min-w-[140px] max-w-xs shrink-0"
756
+ $$renderer2.push(`<!--]--> `);
757
+ Button($$renderer2, {
758
+ variant: "secondary",
759
+ size: "small",
760
+ disabled: !workspace.agentId,
761
+ "aria-expanded": workspace.contextPopoverOpen,
762
+ "aria-haspopup": "dialog",
763
+ onclick: actions.toggleContextPopover,
764
+ children: ($$renderer3) => {
765
+ $$renderer3.push(`<!---->Edit context`);
818
766
  },
819
- promptColumn: {
820
- width: "hidden",
821
- visibility: "hidden"
767
+ $$slots: { default: true }
768
+ });
769
+ $$renderer2.push(`<!----> `);
770
+ CopyTracesDropdown($$renderer2, {
771
+ disabled: !chatContent.length,
772
+ getWithPromptsText: () => JSON.stringify(tracesForCopy(true), null, 2),
773
+ getWithoutPromptsText: () => JSON.stringify(tracesForCopy(false), null, 2)
774
+ });
775
+ $$renderer2.push(`<!----> `);
776
+ Button($$renderer2, {
777
+ variant: "secondary",
778
+ size: "small",
779
+ disabled: !logContent.length,
780
+ onclick: (e) => {
781
+ e.stopPropagation();
782
+ copyLogs();
822
783
  },
823
- chat: {
824
- width: "flex-[4] min-w-0"
784
+ children: ($$renderer3) => {
785
+ $$renderer3.push(`<!---->${escape_html(copiedLogs ? "Copied logs" : "Copy logs")}`);
825
786
  },
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;
839
- }
840
- if (value === "traces") {
841
- goto();
842
- return;
843
- }
844
- goto();
845
- }
846
- let $$settled = true;
847
- let $$inner_renderer;
848
- function $$render_inner($$renderer3) {
849
- head($$renderer3, ($$renderer4) => {
850
- $$renderer4.title(($$renderer5) => {
851
- $$renderer5.push(`<title>Bosun: Playground</title>`);
852
- });
853
- });
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,
866
- children: ($$renderer4) => {
867
- Tab($$renderer4, {
868
- value: "roleplay",
869
- class: "px-3",
870
- children: ($$renderer5) => {
871
- $$renderer5.push(`<!---->Roleplay`);
872
- }
873
- });
874
- $$renderer4.push(`<!----> `);
875
- Tab($$renderer4, {
876
- value: "tests",
877
- class: "px-3",
878
- children: ($$renderer5) => {
879
- $$renderer5.push(`<!---->Tests`);
880
- }
881
- });
882
- $$renderer4.push(`<!----> `);
883
- Tab($$renderer4, {
884
- value: "traces",
885
- class: "px-3",
886
- children: ($$renderer5) => {
887
- $$renderer5.push(`<!---->Traces`);
888
- }
889
- });
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"
903
- });
904
- $$renderer3.push(`<!---->`);
787
+ $$slots: { default: true }
788
+ });
789
+ $$renderer2.push(`<!----> `);
790
+ Button($$renderer2, {
791
+ onclick: handleNewChat,
792
+ class: "self-baseline text-sm font-bold",
793
+ children: ($$renderer3) => {
794
+ $$renderer3.push(`<!---->New chat`);
795
+ },
796
+ $$slots: { default: true }
797
+ });
798
+ $$renderer2.push(`<!----></div> <div class="min-h-0 flex-1">`);
799
+ if (!workspace.wsLoaded) {
800
+ $$renderer2.push("<!--[-->");
801
+ $$renderer2.push(`<div class="flex h-full items-center justify-center text-sm text-rc-gray-300">Connecting…</div>`);
802
+ } else {
803
+ $$renderer2.push("<!--[!-->");
804
+ if (!workspace.agentId) {
805
+ $$renderer2.push("<!--[-->");
806
+ $$renderer2.push(`<div class="flex h-full items-center justify-center text-sm text-rc-gray-300">Select an agent to start chatting</div>`);
905
807
  } else {
906
- $$renderer3.push("<!--[!-->");
907
- }
908
- $$renderer3.push(`<!--]--> `);
909
- Button($$renderer3, {
910
- onclick: handleNew,
911
- class: "self-baseline text-lg font-bold",
912
- children: ($$renderer4) => {
913
- $$renderer4.push(`<!---->New chat`);
914
- },
915
- $$slots: { default: true }
916
- });
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) {
933
- $$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
808
+ $$renderer2.push("<!--[!-->");
809
+ $$renderer2.push(`<div class="h-full min-h-0 p-2">`);
810
+ PlaygroundChat($$renderer2, {
811
+ class: "h-full min-w-0 border-thin border-rc-gray-650 shadow-inner-white-soft backdrop-blur-3xl",
812
+ context: workspace.context,
813
+ agentId: workspace.agentId,
814
+ analyzeDisabled: analyzeRunning,
815
+ onAnalyzeTrace: handleAnalyzeTrace
944
816
  });
945
- $$renderer3.push(`<!---->`);
946
- } else {
947
- $$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>`);
817
+ $$renderer2.push(`<!----></div>`);
949
818
  }
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>`);
819
+ $$renderer2.push(`<!--]-->`);
951
820
  }
952
- do {
953
- $$settled = true;
954
- $$inner_renderer = $$renderer2.copy();
955
- $$render_inner($$inner_renderer);
956
- } while (!$$settled);
957
- $$renderer2.subsume($$inner_renderer);
821
+ $$renderer2.push(`<!--]--></div></div>`);
958
822
  });
959
823
  }
960
824
 
961
825
  export { _page as default };
962
- //# sourceMappingURL=_page.svelte-d8hJxmZl.js.map
826
+ //# sourceMappingURL=_page.svelte-DCP-PSh0.js.map