@recombine-ai/bosun 0.4.1 → 0.5.1

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 (324) hide show
  1. package/build/client/_app/immutable/assets/0.oanZa5fp.css +1 -0
  2. package/build/client/_app/immutable/assets/0.oanZa5fp.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.oanZa5fp.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/ChatStepTrace.CDucuryp.css +1 -0
  5. package/build/client/_app/immutable/assets/ChatStepTrace.CDucuryp.css.br +0 -0
  6. package/build/client/_app/immutable/assets/ChatStepTrace.CDucuryp.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/Input.D_a_Hn-e.css +1 -0
  8. package/build/client/_app/immutable/assets/Input.D_a_Hn-e.css.br +0 -0
  9. package/build/client/_app/immutable/assets/Input.D_a_Hn-e.css.gz +0 -0
  10. package/build/client/_app/immutable/chunks/{BdZ7JhAm.js → 5mKQEBmA.js} +1 -1
  11. package/build/client/_app/immutable/chunks/5mKQEBmA.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/5mKQEBmA.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{C-xhOnoy.js → B375rjLA.js} +1 -1
  14. package/build/client/_app/immutable/chunks/B375rjLA.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/B375rjLA.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/B5CoBEt2.js +1330 -0
  17. package/build/client/_app/immutable/chunks/B5CoBEt2.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/B5CoBEt2.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/{wtOMB7ao.js → BAbuLHvf.js} +1 -1
  20. package/build/client/_app/immutable/chunks/BAbuLHvf.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/BAbuLHvf.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/{BCG4zvjp.js → BH51oU1k.js} +2 -2
  23. package/build/client/_app/immutable/chunks/BH51oU1k.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/BH51oU1k.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/{Bmb8cHfR.js → BPR9ibgw.js} +1 -1
  26. package/build/client/_app/immutable/chunks/BPR9ibgw.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/BPR9ibgw.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/{OMeqFb0I.js → BgzmmD_x.js} +1 -1
  29. package/build/client/_app/immutable/chunks/BgzmmD_x.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/BgzmmD_x.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/Bv4OM4kB.js +1 -0
  32. package/build/client/_app/immutable/chunks/Bv4OM4kB.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/Bv4OM4kB.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/C232NBSx.js +1 -0
  35. package/build/client/_app/immutable/chunks/C232NBSx.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/C232NBSx.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/{JA_7cQFn.js → C9f-9-Wt.js} +1 -1
  38. package/build/client/_app/immutable/chunks/C9f-9-Wt.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/C9f-9-Wt.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/{DQA6NP5y.js → CFWooaMM.js} +1 -1
  41. package/build/client/_app/immutable/chunks/CFWooaMM.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/CFWooaMM.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/{DGa-EyU2.js → CKAQS_Ig.js} +1 -1
  44. package/build/client/_app/immutable/chunks/CKAQS_Ig.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/CKAQS_Ig.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/{CNPsxMFi.js → CKb0QqXx.js} +1 -1
  47. package/build/client/_app/immutable/chunks/CKb0QqXx.js.br +0 -0
  48. package/build/client/_app/immutable/chunks/CKb0QqXx.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/{CsYbWoTD.js → COR6mdUG.js} +1 -1
  50. package/build/client/_app/immutable/chunks/COR6mdUG.js.br +0 -0
  51. package/build/client/_app/immutable/chunks/COR6mdUG.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/{CqcOmWJt.js → CXaO9BO2.js} +1 -1
  53. package/build/client/_app/immutable/chunks/CXaO9BO2.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/CXaO9BO2.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/{BmadykGs.js → CfrwacJp.js} +1 -1
  56. package/build/client/_app/immutable/chunks/CfrwacJp.js.br +0 -0
  57. package/build/client/_app/immutable/chunks/CfrwacJp.js.gz +0 -0
  58. package/build/client/_app/immutable/chunks/D9tAw4x5.js +1 -0
  59. package/build/client/_app/immutable/chunks/D9tAw4x5.js.br +2 -0
  60. package/build/client/_app/immutable/chunks/D9tAw4x5.js.gz +0 -0
  61. package/build/client/_app/immutable/chunks/{BA8mqPb-.js → DXFUtTrQ.js} +1 -1
  62. package/build/client/_app/immutable/chunks/DXFUtTrQ.js.br +0 -0
  63. package/build/client/_app/immutable/chunks/DXFUtTrQ.js.gz +0 -0
  64. package/build/client/_app/immutable/chunks/DhhcRlSv.js +1 -0
  65. package/build/client/_app/immutable/chunks/DhhcRlSv.js.br +0 -0
  66. package/build/client/_app/immutable/chunks/DhhcRlSv.js.gz +0 -0
  67. package/build/client/_app/immutable/chunks/DklI6PZ2.js +1 -0
  68. package/build/client/_app/immutable/chunks/DklI6PZ2.js.br +2 -0
  69. package/build/client/_app/immutable/chunks/DklI6PZ2.js.gz +0 -0
  70. package/build/client/_app/immutable/chunks/{Dl6q6wVH.js → DmeFJZBo.js} +1 -1
  71. package/build/client/_app/immutable/chunks/DmeFJZBo.js.br +0 -0
  72. package/build/client/_app/immutable/chunks/DmeFJZBo.js.gz +0 -0
  73. package/build/client/_app/immutable/chunks/{W8E9z4jl.js → JSHVX3nZ.js} +1 -1
  74. package/build/client/_app/immutable/chunks/JSHVX3nZ.js.br +0 -0
  75. package/build/client/_app/immutable/chunks/{W8E9z4jl.js.gz → JSHVX3nZ.js.gz} +0 -0
  76. package/build/client/_app/immutable/chunks/{Bx2X1niE.js → L6ABQ5uZ.js} +1 -1
  77. package/build/client/_app/immutable/chunks/L6ABQ5uZ.js.br +2 -0
  78. package/build/client/_app/immutable/chunks/L6ABQ5uZ.js.gz +0 -0
  79. package/build/client/_app/immutable/chunks/NpmsW6m-.js +1 -0
  80. package/build/client/_app/immutable/chunks/NpmsW6m-.js.br +0 -0
  81. package/build/client/_app/immutable/chunks/NpmsW6m-.js.gz +0 -0
  82. package/build/client/_app/immutable/chunks/{wDFujNbC.js → UO83B563.js} +1 -1
  83. package/build/client/_app/immutable/chunks/UO83B563.js.br +0 -0
  84. package/build/client/_app/immutable/chunks/UO83B563.js.gz +0 -0
  85. package/build/client/_app/immutable/chunks/WVoYdfwC.js +2 -0
  86. package/build/client/_app/immutable/chunks/WVoYdfwC.js.br +0 -0
  87. package/build/client/_app/immutable/chunks/WVoYdfwC.js.gz +0 -0
  88. package/build/client/_app/immutable/chunks/jPRwMprt.js +5 -0
  89. package/build/client/_app/immutable/chunks/jPRwMprt.js.br +0 -0
  90. package/build/client/_app/immutable/chunks/jPRwMprt.js.gz +0 -0
  91. package/build/client/_app/immutable/entry/app.oAXSW36_.js +2 -0
  92. package/build/client/_app/immutable/entry/app.oAXSW36_.js.br +0 -0
  93. package/build/client/_app/immutable/entry/app.oAXSW36_.js.gz +0 -0
  94. package/build/client/_app/immutable/entry/start.C3H3zN_Q.js +1 -0
  95. package/build/client/_app/immutable/entry/start.C3H3zN_Q.js.br +2 -0
  96. package/build/client/_app/immutable/entry/start.C3H3zN_Q.js.gz +0 -0
  97. package/build/client/_app/immutable/nodes/{0.Dub0qZPU.js → 0.BVv0ZVNF.js} +1 -1
  98. package/build/client/_app/immutable/nodes/0.BVv0ZVNF.js.br +0 -0
  99. package/build/client/_app/immutable/nodes/0.BVv0ZVNF.js.gz +0 -0
  100. package/build/client/_app/immutable/nodes/1.BocieXSV.js +1 -0
  101. package/build/client/_app/immutable/nodes/1.BocieXSV.js.br +0 -0
  102. package/build/client/_app/immutable/nodes/1.BocieXSV.js.gz +0 -0
  103. package/build/client/_app/immutable/nodes/13.D96_XEm-.js +1 -0
  104. package/build/client/_app/immutable/nodes/13.D96_XEm-.js.br +0 -0
  105. package/build/client/_app/immutable/nodes/13.D96_XEm-.js.gz +0 -0
  106. package/build/client/_app/immutable/nodes/{14.zP-B7lEl.js → 14.PLVwHmf8.js} +1 -1
  107. package/build/client/_app/immutable/nodes/14.PLVwHmf8.js.br +0 -0
  108. package/build/client/_app/immutable/nodes/14.PLVwHmf8.js.gz +0 -0
  109. package/build/client/_app/immutable/nodes/{15.D2YLTl3S.js → 15.CSwvVdKE.js} +1 -1
  110. package/build/client/_app/immutable/nodes/15.CSwvVdKE.js.br +0 -0
  111. package/build/client/_app/immutable/nodes/15.CSwvVdKE.js.gz +0 -0
  112. package/build/client/_app/immutable/nodes/2.IJ8N1LYx.js +35 -0
  113. package/build/client/_app/immutable/nodes/2.IJ8N1LYx.js.br +0 -0
  114. package/build/client/_app/immutable/nodes/2.IJ8N1LYx.js.gz +0 -0
  115. package/build/client/_app/immutable/nodes/3.Ck1xHlrV.js +1 -0
  116. package/build/client/_app/immutable/nodes/3.Ck1xHlrV.js.br +0 -0
  117. package/build/client/_app/immutable/nodes/3.Ck1xHlrV.js.gz +0 -0
  118. package/build/client/_app/immutable/nodes/4.ChQxJfCA.js +1 -0
  119. package/build/client/_app/immutable/nodes/4.ChQxJfCA.js.br +0 -0
  120. package/build/client/_app/immutable/nodes/4.ChQxJfCA.js.gz +0 -0
  121. package/build/client/_app/immutable/nodes/{5.BpnPdti2.js → 5.zSWDxriP.js} +1 -1
  122. package/build/client/_app/immutable/nodes/5.zSWDxriP.js.br +0 -0
  123. package/build/client/_app/immutable/nodes/5.zSWDxriP.js.gz +0 -0
  124. package/build/client/_app/immutable/nodes/{7.CB2Z5SOz.js → 7.BYKTckLf.js} +1 -1
  125. package/build/client/_app/immutable/nodes/7.BYKTckLf.js.br +0 -0
  126. package/build/client/_app/immutable/nodes/7.BYKTckLf.js.gz +0 -0
  127. package/build/client/_app/immutable/nodes/8.B6qN8uAv.js +2 -0
  128. package/build/client/_app/immutable/nodes/8.B6qN8uAv.js.br +0 -0
  129. package/build/client/_app/immutable/nodes/8.B6qN8uAv.js.gz +0 -0
  130. package/build/client/_app/immutable/nodes/9.DRayViio.js +5 -0
  131. package/build/client/_app/immutable/nodes/9.DRayViio.js.br +0 -0
  132. package/build/client/_app/immutable/nodes/9.DRayViio.js.gz +0 -0
  133. package/build/client/_app/version.json +1 -1
  134. package/build/client/_app/version.json.br +0 -0
  135. package/build/client/_app/version.json.gz +0 -0
  136. package/build/server/chunks/0-DWCTA9UP.js +9 -0
  137. package/build/server/chunks/{0-CbLBIQC7.js.map → 0-DWCTA9UP.js.map} +1 -1
  138. package/build/server/chunks/1-BQuoNKyB.js +9 -0
  139. package/build/server/chunks/{1-gh5xP1Bp.js.map → 1-BQuoNKyB.js.map} +1 -1
  140. package/build/server/chunks/{13-11CHqz2G.js → 13-C067TjV7.js} +3 -3
  141. package/build/server/chunks/13-C067TjV7.js.map +1 -0
  142. package/build/server/chunks/{14-C4iOZL2L.js → 14-CG4GBZSP.js} +2 -2
  143. package/build/server/chunks/{14-C4iOZL2L.js.map → 14-CG4GBZSP.js.map} +1 -1
  144. package/build/server/chunks/15-A9aJ00Nj.js +9 -0
  145. package/build/server/chunks/15-A9aJ00Nj.js.map +1 -0
  146. package/build/server/chunks/2-Dxx2KPQl.js +9 -0
  147. package/build/server/chunks/2-Dxx2KPQl.js.map +1 -0
  148. package/build/server/chunks/3-B1_UzEKm.js +9 -0
  149. package/build/server/chunks/3-B1_UzEKm.js.map +1 -0
  150. package/build/server/chunks/4-CDrszL6M.js +9 -0
  151. package/build/server/chunks/4-CDrszL6M.js.map +1 -0
  152. package/build/server/chunks/5-BZLccXTR.js +9 -0
  153. package/build/server/chunks/5-BZLccXTR.js.map +1 -0
  154. package/build/server/chunks/7-qXoxThoS.js +9 -0
  155. package/build/server/chunks/7-qXoxThoS.js.map +1 -0
  156. package/build/server/chunks/8-DKi0Ar-v.js +9 -0
  157. package/build/server/chunks/8-DKi0Ar-v.js.map +1 -0
  158. package/build/server/chunks/9-Bm1zqhnj.js +9 -0
  159. package/build/server/chunks/9-Bm1zqhnj.js.map +1 -0
  160. package/build/server/chunks/{AgentSidebar-BB_yQ9s0.js → AgentSidebar-DUAwX8yz.js} +23 -6
  161. package/build/server/chunks/AgentSidebar-DUAwX8yz.js.map +1 -0
  162. package/build/server/chunks/{ChatStepTrace-BIghWRaw.js → ChatStepTrace-BraUG8oN.js} +228 -24
  163. package/build/server/chunks/ChatStepTrace-BraUG8oN.js.map +1 -0
  164. package/build/server/chunks/{Icon-BgknHaZs.js → Icon-zMNuTF_-.js} +5 -1
  165. package/build/server/chunks/Icon-zMNuTF_-.js.map +1 -0
  166. package/build/server/chunks/{_layout.svelte-WXSvPGRU.js → _layout.svelte-D7OHpm3Z.js} +51 -16
  167. package/build/server/chunks/_layout.svelte-D7OHpm3Z.js.map +1 -0
  168. package/build/server/chunks/{_layout.svelte-BKnunWZl.js → _layout.svelte-DccBBHFo.js} +44 -17
  169. package/build/server/chunks/_layout.svelte-DccBBHFo.js.map +1 -0
  170. package/build/server/chunks/{_page.svelte-CLBi-ypL.js → _page.svelte-87WiaCHD.js} +3 -3
  171. package/build/server/chunks/{_page.svelte-CLBi-ypL.js.map → _page.svelte-87WiaCHD.js.map} +1 -1
  172. package/build/server/chunks/{_page.svelte-39hvC6-Q.js → _page.svelte-BRsvOt3E.js} +3 -3
  173. package/build/server/chunks/{_page.svelte-39hvC6-Q.js.map → _page.svelte-BRsvOt3E.js.map} +1 -1
  174. package/build/server/chunks/{_page.svelte-CLiLwJTq.js → _page.svelte-CaMij-Vg.js} +72 -7
  175. package/build/server/chunks/_page.svelte-CaMij-Vg.js.map +1 -0
  176. package/build/server/chunks/{_page.svelte-DBrprjQP.js → _page.svelte-Ct157UWV.js} +4 -4
  177. package/build/server/chunks/{_page.svelte-DBrprjQP.js.map → _page.svelte-Ct157UWV.js.map} +1 -1
  178. package/build/server/chunks/{_page.svelte-CdczF37D.js → _page.svelte-rYYB_tCn.js} +3 -1
  179. package/build/server/chunks/_page.svelte-rYYB_tCn.js.map +1 -0
  180. package/build/server/chunks/{source-selection-Dx7LqMVs.js → source-selection-DJzHsjzD.js} +10 -1
  181. package/build/server/chunks/source-selection-DJzHsjzD.js.map +1 -0
  182. package/build/server/index.js +1 -1
  183. package/build/server/index.js.map +1 -1
  184. package/build/server/manifest.js +13 -13
  185. package/build/server/manifest.js.map +1 -1
  186. package/package.json +5 -1
  187. package/src/backend/roleplay/agents.ts +33 -25
  188. package/src/backend/roleplay/old-server.ts +59 -41
  189. package/src/backend/tests/analyze.ts +120 -17
  190. package/src/backend/tests/config.ts +6 -6
  191. package/src/backend/tests/data.ts +37 -5
  192. package/src/backend/tests/suite.ts +3 -13
  193. package/build/client/_app/immutable/assets/0.B5gApcUL.css +0 -1
  194. package/build/client/_app/immutable/assets/0.B5gApcUL.css.br +0 -0
  195. package/build/client/_app/immutable/assets/0.B5gApcUL.css.gz +0 -0
  196. package/build/client/_app/immutable/assets/Input.NBh3BL7E.css +0 -1
  197. package/build/client/_app/immutable/assets/Input.NBh3BL7E.css.br +0 -0
  198. package/build/client/_app/immutable/assets/Input.NBh3BL7E.css.gz +0 -0
  199. package/build/client/_app/immutable/chunks/8B3OPwlB.js +0 -1
  200. package/build/client/_app/immutable/chunks/8B3OPwlB.js.br +0 -2
  201. package/build/client/_app/immutable/chunks/8B3OPwlB.js.gz +0 -0
  202. package/build/client/_app/immutable/chunks/B5-6Ezv3.js +0 -1
  203. package/build/client/_app/immutable/chunks/B5-6Ezv3.js.br +0 -2
  204. package/build/client/_app/immutable/chunks/B5-6Ezv3.js.gz +0 -0
  205. package/build/client/_app/immutable/chunks/BA8mqPb-.js.br +0 -0
  206. package/build/client/_app/immutable/chunks/BA8mqPb-.js.gz +0 -0
  207. package/build/client/_app/immutable/chunks/BCG4zvjp.js.br +0 -0
  208. package/build/client/_app/immutable/chunks/BCG4zvjp.js.gz +0 -0
  209. package/build/client/_app/immutable/chunks/BEJ5fU19.js +0 -1
  210. package/build/client/_app/immutable/chunks/BEJ5fU19.js.br +0 -0
  211. package/build/client/_app/immutable/chunks/BEJ5fU19.js.gz +0 -0
  212. package/build/client/_app/immutable/chunks/BdZ7JhAm.js.br +0 -0
  213. package/build/client/_app/immutable/chunks/BdZ7JhAm.js.gz +0 -0
  214. package/build/client/_app/immutable/chunks/BmadykGs.js.br +0 -0
  215. package/build/client/_app/immutable/chunks/BmadykGs.js.gz +0 -0
  216. package/build/client/_app/immutable/chunks/Bmb8cHfR.js.br +0 -0
  217. package/build/client/_app/immutable/chunks/Bmb8cHfR.js.gz +0 -0
  218. package/build/client/_app/immutable/chunks/Bx2X1niE.js.br +0 -2
  219. package/build/client/_app/immutable/chunks/Bx2X1niE.js.gz +0 -0
  220. package/build/client/_app/immutable/chunks/C-xhOnoy.js.br +0 -0
  221. package/build/client/_app/immutable/chunks/C-xhOnoy.js.gz +0 -0
  222. package/build/client/_app/immutable/chunks/CI-reiW2.js +0 -1
  223. package/build/client/_app/immutable/chunks/CI-reiW2.js.br +0 -0
  224. package/build/client/_app/immutable/chunks/CI-reiW2.js.gz +0 -0
  225. package/build/client/_app/immutable/chunks/CNPsxMFi.js.br +0 -1
  226. package/build/client/_app/immutable/chunks/CNPsxMFi.js.gz +0 -0
  227. package/build/client/_app/immutable/chunks/C_ZSt1CI.js +0 -2
  228. package/build/client/_app/immutable/chunks/C_ZSt1CI.js.br +0 -0
  229. package/build/client/_app/immutable/chunks/C_ZSt1CI.js.gz +0 -0
  230. package/build/client/_app/immutable/chunks/CfbYRn5k.js +0 -1
  231. package/build/client/_app/immutable/chunks/CfbYRn5k.js.br +0 -0
  232. package/build/client/_app/immutable/chunks/CfbYRn5k.js.gz +0 -0
  233. package/build/client/_app/immutable/chunks/CqcOmWJt.js.br +0 -0
  234. package/build/client/_app/immutable/chunks/CqcOmWJt.js.gz +0 -0
  235. package/build/client/_app/immutable/chunks/CsYbWoTD.js.br +0 -0
  236. package/build/client/_app/immutable/chunks/CsYbWoTD.js.gz +0 -0
  237. package/build/client/_app/immutable/chunks/DGa-EyU2.js.br +0 -0
  238. package/build/client/_app/immutable/chunks/DGa-EyU2.js.gz +0 -0
  239. package/build/client/_app/immutable/chunks/DQA6NP5y.js.br +0 -0
  240. package/build/client/_app/immutable/chunks/DQA6NP5y.js.gz +0 -0
  241. package/build/client/_app/immutable/chunks/DaR1ExPh.js +0 -1
  242. package/build/client/_app/immutable/chunks/DaR1ExPh.js.br +0 -0
  243. package/build/client/_app/immutable/chunks/DaR1ExPh.js.gz +0 -0
  244. package/build/client/_app/immutable/chunks/Dl6q6wVH.js.br +0 -0
  245. package/build/client/_app/immutable/chunks/Dl6q6wVH.js.gz +0 -0
  246. package/build/client/_app/immutable/chunks/DptDdzMi.js +0 -4
  247. package/build/client/_app/immutable/chunks/DptDdzMi.js.br +0 -0
  248. package/build/client/_app/immutable/chunks/DptDdzMi.js.gz +0 -0
  249. package/build/client/_app/immutable/chunks/JA_7cQFn.js.br +0 -0
  250. package/build/client/_app/immutable/chunks/JA_7cQFn.js.gz +0 -0
  251. package/build/client/_app/immutable/chunks/OMeqFb0I.js.br +0 -0
  252. package/build/client/_app/immutable/chunks/OMeqFb0I.js.gz +0 -0
  253. package/build/client/_app/immutable/chunks/W8E9z4jl.js.br +0 -0
  254. package/build/client/_app/immutable/chunks/i_HX2z3K.js +0 -1
  255. package/build/client/_app/immutable/chunks/i_HX2z3K.js.br +0 -0
  256. package/build/client/_app/immutable/chunks/i_HX2z3K.js.gz +0 -0
  257. package/build/client/_app/immutable/chunks/wDFujNbC.js.br +0 -0
  258. package/build/client/_app/immutable/chunks/wDFujNbC.js.gz +0 -0
  259. package/build/client/_app/immutable/chunks/wtOMB7ao.js.br +0 -0
  260. package/build/client/_app/immutable/chunks/wtOMB7ao.js.gz +0 -0
  261. package/build/client/_app/immutable/entry/app.DfqDSpBG.js +0 -2
  262. package/build/client/_app/immutable/entry/app.DfqDSpBG.js.br +0 -0
  263. package/build/client/_app/immutable/entry/app.DfqDSpBG.js.gz +0 -0
  264. package/build/client/_app/immutable/entry/start.Duif51BE.js +0 -1
  265. package/build/client/_app/immutable/entry/start.Duif51BE.js.br +0 -2
  266. package/build/client/_app/immutable/entry/start.Duif51BE.js.gz +0 -0
  267. package/build/client/_app/immutable/nodes/0.Dub0qZPU.js.br +0 -0
  268. package/build/client/_app/immutable/nodes/0.Dub0qZPU.js.gz +0 -0
  269. package/build/client/_app/immutable/nodes/1.DsLuferm.js +0 -1
  270. package/build/client/_app/immutable/nodes/1.DsLuferm.js.br +0 -0
  271. package/build/client/_app/immutable/nodes/1.DsLuferm.js.gz +0 -0
  272. package/build/client/_app/immutable/nodes/13.DRr2l3NZ.js +0 -1
  273. package/build/client/_app/immutable/nodes/13.DRr2l3NZ.js.br +0 -2
  274. package/build/client/_app/immutable/nodes/13.DRr2l3NZ.js.gz +0 -0
  275. package/build/client/_app/immutable/nodes/14.zP-B7lEl.js.br +0 -0
  276. package/build/client/_app/immutable/nodes/14.zP-B7lEl.js.gz +0 -0
  277. package/build/client/_app/immutable/nodes/15.D2YLTl3S.js.br +0 -0
  278. package/build/client/_app/immutable/nodes/15.D2YLTl3S.js.gz +0 -0
  279. package/build/client/_app/immutable/nodes/2.BbzjrdMu.js +0 -35
  280. package/build/client/_app/immutable/nodes/2.BbzjrdMu.js.br +0 -0
  281. package/build/client/_app/immutable/nodes/2.BbzjrdMu.js.gz +0 -0
  282. package/build/client/_app/immutable/nodes/3.CS8k_54b.js +0 -1
  283. package/build/client/_app/immutable/nodes/3.CS8k_54b.js.br +0 -0
  284. package/build/client/_app/immutable/nodes/3.CS8k_54b.js.gz +0 -0
  285. package/build/client/_app/immutable/nodes/4.DBO0gLSr.js +0 -1
  286. package/build/client/_app/immutable/nodes/4.DBO0gLSr.js.br +0 -0
  287. package/build/client/_app/immutable/nodes/4.DBO0gLSr.js.gz +0 -0
  288. package/build/client/_app/immutable/nodes/5.BpnPdti2.js.br +0 -0
  289. package/build/client/_app/immutable/nodes/5.BpnPdti2.js.gz +0 -0
  290. package/build/client/_app/immutable/nodes/7.CB2Z5SOz.js.br +0 -0
  291. package/build/client/_app/immutable/nodes/7.CB2Z5SOz.js.gz +0 -0
  292. package/build/client/_app/immutable/nodes/8.ARGsrw2j.js +0 -2
  293. package/build/client/_app/immutable/nodes/8.ARGsrw2j.js.br +0 -0
  294. package/build/client/_app/immutable/nodes/8.ARGsrw2j.js.gz +0 -0
  295. package/build/client/_app/immutable/nodes/9.C3E_sxSn.js +0 -5
  296. package/build/client/_app/immutable/nodes/9.C3E_sxSn.js.br +0 -0
  297. package/build/client/_app/immutable/nodes/9.C3E_sxSn.js.gz +0 -0
  298. package/build/server/chunks/0-CbLBIQC7.js +0 -9
  299. package/build/server/chunks/1-gh5xP1Bp.js +0 -9
  300. package/build/server/chunks/13-11CHqz2G.js.map +0 -1
  301. package/build/server/chunks/15-kvHsGxjF.js +0 -9
  302. package/build/server/chunks/15-kvHsGxjF.js.map +0 -1
  303. package/build/server/chunks/2-C5u7WpBH.js +0 -9
  304. package/build/server/chunks/2-C5u7WpBH.js.map +0 -1
  305. package/build/server/chunks/3-BrobxxI7.js +0 -9
  306. package/build/server/chunks/3-BrobxxI7.js.map +0 -1
  307. package/build/server/chunks/4-ClIdwABM.js +0 -9
  308. package/build/server/chunks/4-ClIdwABM.js.map +0 -1
  309. package/build/server/chunks/5-ox8PkWxC.js +0 -9
  310. package/build/server/chunks/5-ox8PkWxC.js.map +0 -1
  311. package/build/server/chunks/7-BgYWIBj-.js +0 -9
  312. package/build/server/chunks/7-BgYWIBj-.js.map +0 -1
  313. package/build/server/chunks/8-CgCeoIqV.js +0 -9
  314. package/build/server/chunks/8-CgCeoIqV.js.map +0 -1
  315. package/build/server/chunks/9-CWM_WQXH.js +0 -9
  316. package/build/server/chunks/9-CWM_WQXH.js.map +0 -1
  317. package/build/server/chunks/AgentSidebar-BB_yQ9s0.js.map +0 -1
  318. package/build/server/chunks/ChatStepTrace-BIghWRaw.js.map +0 -1
  319. package/build/server/chunks/Icon-BgknHaZs.js.map +0 -1
  320. package/build/server/chunks/_layout.svelte-BKnunWZl.js.map +0 -1
  321. package/build/server/chunks/_layout.svelte-WXSvPGRU.js.map +0 -1
  322. package/build/server/chunks/_page.svelte-CLiLwJTq.js.map +0 -1
  323. package/build/server/chunks/_page.svelte-CdczF37D.js.map +0 -1
  324. package/build/server/chunks/source-selection-Dx7LqMVs.js.map +0 -1
@@ -1,13 +1,70 @@
1
1
  import { b as attr_class, g as clsx, s as stringify, a as attr } from './index2-BuOY2QE4.js';
2
- import { I as Icon } from './Icon-BgknHaZs.js';
2
+ import { o as onDestroy } from './index-server-CefdgakO.js';
3
+ import { I as Icon } from './Icon-zMNuTF_-.js';
3
4
  import { X as escape_html } from './context-zH5kvtGY.js';
4
5
  import './utils-KcIDVAAe.js';
5
6
  import './state.svelte-DtOGaiYC.js';
6
7
  import './trpc-client-Bucti7HD.js';
7
8
 
9
+ function createDragSelectClickGuard(options = {}) {
10
+ const thresholdPx = options.thresholdPx ?? 4;
11
+ const dragCursor = options.dragCursor ?? "text";
12
+ let startX = 0;
13
+ let startY = 0;
14
+ let didDrag = false;
15
+ let pointerDown = false;
16
+ let cursorEl = null;
17
+ let abortController = null;
18
+ function cleanup() {
19
+ pointerDown = false;
20
+ didDrag = false;
21
+ cursorEl?.style.removeProperty("cursor");
22
+ cursorEl = null;
23
+ abortController?.abort();
24
+ abortController = null;
25
+ }
26
+ function onPointerDown(event) {
27
+ if (typeof window === "undefined") return;
28
+ if (event.button !== 0) return;
29
+ abortController?.abort();
30
+ abortController = null;
31
+ cursorEl?.style.removeProperty("cursor");
32
+ startX = event.clientX;
33
+ startY = event.clientY;
34
+ didDrag = false;
35
+ pointerDown = true;
36
+ cursorEl = event.currentTarget instanceof HTMLElement ? event.currentTarget : null;
37
+ const controller = new AbortController();
38
+ abortController = controller;
39
+ const onMove = (moveEvent) => {
40
+ if (!pointerDown || didDrag) return;
41
+ const dx = Math.abs(moveEvent.clientX - startX);
42
+ const dy = Math.abs(moveEvent.clientY - startY);
43
+ if (dx + dy < thresholdPx) return;
44
+ didDrag = true;
45
+ cursorEl?.style.setProperty("cursor", dragCursor);
46
+ };
47
+ const onEnd = () => {
48
+ pointerDown = false;
49
+ cursorEl?.style.removeProperty("cursor");
50
+ cursorEl = null;
51
+ controller.abort();
52
+ if (abortController === controller) abortController = null;
53
+ };
54
+ window.addEventListener("pointermove", onMove, { signal: controller.signal });
55
+ window.addEventListener("pointerup", onEnd, { signal: controller.signal });
56
+ window.addEventListener("pointercancel", onEnd, { signal: controller.signal });
57
+ }
58
+ function shouldSuppressClick(event) {
59
+ return event.detail > 0 && didDrag;
60
+ }
61
+ return { onPointerDown, shouldSuppressClick, cleanup };
62
+ }
8
63
  function ChatApiCallTrace($$renderer, $$props) {
9
64
  $$renderer.component(($$renderer2) => {
10
65
  let { trace } = $$props;
66
+ const clickGuard = createDragSelectClickGuard();
67
+ onDestroy(clickGuard.cleanup);
11
68
  function safeJson(value) {
12
69
  try {
13
70
  if (typeof value === "string") {
@@ -70,7 +127,7 @@ function ChatApiCallTrace($$renderer, $$props) {
70
127
  let $$settled = true;
71
128
  let $$inner_renderer;
72
129
  function $$render_inner($$renderer3) {
73
- $$renderer3.push(`<button type="button" class="flex w-full items-baseline gap-2 truncate rounded-md bg-transparent px-2 py-1 text-left text-sm text-rc-gray-200 hover:bg-rc-gray-800/40">`);
130
+ $$renderer3.push(`<button type="button" class="flex w-full cursor-pointer select-text items-baseline gap-2 truncate rounded-md bg-transparent px-2 py-1 text-left text-sm text-rc-gray-200 hover:bg-rc-gray-800/40">`);
74
131
  Icon($$renderer3, {
75
132
  name: hasError ? "close" : "checkmark",
76
133
  width: 18,
@@ -100,7 +157,17 @@ function ChatApiCallTrace($$renderer, $$props) {
100
157
  }
101
158
  function ChatConversationalTrace($$renderer, $$props) {
102
159
  $$renderer.component(($$renderer2) => {
103
- let { trace, context, agentId, analyzeDisabled = false, onAnalyze } = $$props;
160
+ let {
161
+ trace,
162
+ context,
163
+ agentId,
164
+ analyzeDisabled = false,
165
+ onAnalyze,
166
+ onRegenerate,
167
+ onRevert
168
+ } = $$props;
169
+ const clickGuard = createDragSelectClickGuard();
170
+ onDestroy(clickGuard.cleanup);
104
171
  function agentName(id) {
105
172
  if (!id) return "";
106
173
  return id.split("/").at(-1) ?? id;
@@ -116,7 +183,18 @@ function ChatConversationalTrace($$renderer, $$props) {
116
183
  }
117
184
  return trace.role === "user" ? "user" : "user";
118
185
  })();
186
+ const bubbleMaxWidthClass = (() => {
187
+ if (sender === "agent") return "max-w-[83%]";
188
+ if (sender === "user") return "max-w-[90%] sm:max-w-[80%] md:max-w-[70%]";
189
+ if (sender === "system") return "max-w-[90%] sm:max-w-[85%] md:max-w-[75%]";
190
+ return "";
191
+ })();
192
+ const showRevert = (() => sender === "user" && !!onRevert && // Hide for older traces that predate bosun state metadata.
193
+ trace?.bosunPrevStateId !== void 0)();
119
194
  const hasError = (() => trace.error != null)();
195
+ const metrics = (() => trace?.metrics)();
196
+ const llmToAudioLatencyMs = (() => metrics?.summary?.llmToAudioLatencyMs)();
197
+ const isHighLatency = (() => typeof llmToAudioLatencyMs === "number" && llmToAudioLatencyMs > 800)();
120
198
  function formatHHmmss(ms) {
121
199
  if (typeof ms !== "number" || !Number.isFinite(ms)) return null;
122
200
  const d = new Date(ms);
@@ -133,13 +211,16 @@ function ChatConversationalTrace($$renderer, $$props) {
133
211
  function isAnalyzeEligible() {
134
212
  return sender === "agent" && trace.eventName !== "transfer-requested" && !!(agentId && agentId.trim()) && (trace.eventName === "finished-main-streaming-step" || trace.eventName === "sent-message");
135
213
  }
214
+ function isRegenerateEligible() {
215
+ return isAnalyzeEligible();
216
+ }
136
217
  let $$settled = true;
137
218
  let $$inner_renderer;
138
219
  function $$render_inner($$renderer3) {
139
- $$renderer3.push(`<div${attr_class("group mb-2 flex w-full items-center", void 0, { "justify-end": sender === "user" || sender === "system" })}>`);
220
+ $$renderer3.push(`<div${attr_class("group mb-2 flex w-full items-start", void 0, { "justify-end": sender === "user" || sender === "system" })}>`);
140
221
  if (trace.eventName === "transfer-requested") {
141
222
  $$renderer3.push("<!--[-->");
142
- $$renderer3.push(`<div class="flex w-full justify-center"><div${attr_class(`rounded-full border border-rc-gray-650 bg-rc-gray-800/40 px-4 py-2 text-sm text-rc-gray-100 ${stringify(hasError ? "border-red-500 bg-red-950/30 text-red-200" : "")}`)} role="button" tabindex="0"><div class="flex flex-wrap items-baseline gap-x-2 gap-y-0">`);
223
+ $$renderer3.push(`<div class="flex w-full justify-center"><div${attr_class(`cursor-pointer select-text rounded-full border border-rc-gray-650 bg-rc-gray-800/40 px-4 py-2 text-sm text-rc-gray-100 ${stringify(hasError ? "border-red-500 bg-red-950/30 text-red-200" : "")}`)} role="button" tabindex="0"><div class="flex flex-wrap items-baseline gap-x-2 gap-y-0">`);
143
224
  if (time) {
144
225
  $$renderer3.push("<!--[-->");
145
226
  $$renderer3.push(`<span class="text-[13px] leading-none text-rc-gray-400">${escape_html(time)}</span>`);
@@ -155,20 +236,36 @@ function ChatConversationalTrace($$renderer, $$props) {
155
236
  } else {
156
237
  $$renderer3.push("<!--[!-->");
157
238
  }
158
- $$renderer3.push(`<!--]--> <div${attr_class(`min-w-0 ${stringify(sender === "agent" ? "max-w-[83%]" : "")}`)} role="button" tabindex="0"><div${attr_class(`rounded-lg ${stringify(sender === "system" ? "justify-between whitespace-pre-line break-words border border-emerald-500 text-emerald-500" : sender !== "user" ? "w-full whitespace-pre-line break-words bg-rc-green-700 backdrop-blur-md" : "max-w5/6 justify-self-end bg-rc-gray-700")} border-thin border-rc-gray-110 p-2 pt-1 text-rc-gray-100 ${stringify(hasError ? "border-red-500 bg-red-950/30 text-red-200" : "")}`)}><div>${escape_html(trace.content)}</div> `);
239
+ $$renderer3.push(`<!--]--> `);
240
+ if (showRevert) {
241
+ $$renderer3.push("<!--[-->");
242
+ $$renderer3.push(`<button type="button" title="Revert to before this message" class="mr-2 mt-1 shrink-0 self-start rounded p-1 text-rc-gray-500 opacity-80 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none">`);
243
+ Icon($$renderer3, { name: "undo", width: 16, height: 16 });
244
+ $$renderer3.push(`<!----></button>`);
245
+ } else {
246
+ $$renderer3.push("<!--[!-->");
247
+ }
248
+ $$renderer3.push(`<!--]--> <div${attr_class(`min-w-0 ${stringify(bubbleMaxWidthClass)}`)}><div role="button" tabindex="0" class="cursor-pointer select-text"><div${attr_class(`rounded-lg ${stringify(sender === "system" ? "justify-between whitespace-pre-line break-words border border-emerald-500 text-emerald-500" : sender !== "user" ? "w-full whitespace-pre-line break-words bg-rc-green-700 backdrop-blur-md" : "whitespace-pre-line break-words bg-rc-gray-700")} border-thin border-rc-gray-110 p-2 pt-1 text-rc-gray-100 ${stringify(hasError ? "border-red-500 bg-red-950/30 text-red-200" : "")} ${stringify(isHighLatency ? "relative pb-5 ring-1 ring-red-500/60" : "")} ${stringify(isHighLatency && !hasError ? "border-red-500" : "")}`)}><div>${escape_html(trace.content)}</div> `);
159
249
  if (time) {
160
250
  $$renderer3.push("<!--[-->");
161
- $$renderer3.push(`<div class="mt-1 text-right text-xs text-rc-gray-200/70">${escape_html(time)}</div>`);
251
+ $$renderer3.push(`<div${attr_class(`${stringify(isHighLatency ? "absolute bottom-1 right-2" : "mt-1 text-right")} text-xs text-rc-gray-200/70`)}>${escape_html(time)}</div>`);
252
+ } else {
253
+ $$renderer3.push("<!--[!-->");
254
+ }
255
+ $$renderer3.push(`<!--]--> `);
256
+ if (isHighLatency) {
257
+ $$renderer3.push("<!--[-->");
258
+ $$renderer3.push(`<div class="absolute bottom-1 left-2 rounded bg-red-950/60 px-2 py-0.5 text-[11px] text-red-200">High LLM to audio latency: ${escape_html(Math.round(llmToAudioLatencyMs))} ms</div>`);
162
259
  } else {
163
260
  $$renderer3.push("<!--[!-->");
164
261
  }
165
262
  $$renderer3.push(`<!--]--></div></div> `);
166
- if (isAnalyzeEligible() || isAddTestEligible()) {
263
+ if (isAnalyzeEligible() || isAddTestEligible() || isRegenerateEligible() && onRegenerate) {
167
264
  $$renderer3.push("<!--[-->");
168
- $$renderer3.push(`<div class="ml-0 flex flex-col items-start">`);
265
+ $$renderer3.push(`<div class="mt-1 flex flex-wrap items-center gap-x-2 gap-y-1">`);
169
266
  if (isAddTestEligible()) {
170
267
  $$renderer3.push("<!--[-->");
171
- $$renderer3.push(`<button type="button"${attr_class(`cursor-pointer text-nowrap border-0 bg-transparent pb-1 pl-3 pr-1 transition-colors focus:outline-none focus-visible:outline-none ${stringify("text-rc-gray-300 hover:text-rc-green-200")}`)}>`);
268
+ $$renderer3.push(`<button type="button"${attr_class(`inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 transition-colors focus:outline-none focus-visible:outline-none ${stringify("cursor-pointer text-rc-gray-400 hover:bg-rc-gray-900 hover:text-rc-gray-200")}`)}>`);
172
269
  {
173
270
  $$renderer3.push("<!--[!-->");
174
271
  {
@@ -184,7 +281,14 @@ function ChatConversationalTrace($$renderer, $$props) {
184
281
  $$renderer3.push(`<!--]--> `);
185
282
  if (isAnalyzeEligible() && onAnalyze) {
186
283
  $$renderer3.push("<!--[-->");
187
- $$renderer3.push(`<button type="button"${attr("disabled", analyzeDisabled, true)} class="cursor-pointer text-nowrap border-0 bg-transparent pb-1 pl-3 pr-1 text-rc-gray-300 transition-colors hover:text-rc-green-200 focus:outline-none focus-visible:outline-none disabled:cursor-not-allowed disabled:text-rc-gray-400 disabled:hover:text-rc-gray-400">Analyze</button>`);
284
+ $$renderer3.push(`<button type="button"${attr("disabled", analyzeDisabled, true)} class="inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent disabled:hover:text-rc-gray-400">Analyze</button>`);
285
+ } else {
286
+ $$renderer3.push("<!--[!-->");
287
+ }
288
+ $$renderer3.push(`<!--]--> `);
289
+ if (isRegenerateEligible() && onRegenerate) {
290
+ $$renderer3.push("<!--[-->");
291
+ $$renderer3.push(`<button type="button" class="inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none">Regenerate</button>`);
188
292
  } else {
189
293
  $$renderer3.push("<!--[!-->");
190
294
  }
@@ -192,7 +296,7 @@ function ChatConversationalTrace($$renderer, $$props) {
192
296
  } else {
193
297
  $$renderer3.push("<!--[!-->");
194
298
  }
195
- $$renderer3.push(`<!--]-->`);
299
+ $$renderer3.push(`<!--]--></div>`);
196
300
  }
197
301
  $$renderer3.push(`<!--]--></div> `);
198
302
  {
@@ -211,6 +315,8 @@ function ChatConversationalTrace($$renderer, $$props) {
211
315
  function ChatStepTrace($$renderer, $$props) {
212
316
  $$renderer.component(($$renderer2) => {
213
317
  let { trace, compareTrace } = $$props;
318
+ const clickGuard = createDragSelectClickGuard();
319
+ onDestroy(clickGuard.cleanup);
214
320
  function getPromptForDiff(t) {
215
321
  if (!t) return null;
216
322
  if (typeof t.renderedPrompt === "string") return t.renderedPrompt;
@@ -230,6 +336,37 @@ function ChatStepTrace($$renderer, $$props) {
230
336
  const prefixLen = commonPrefixLength(current, baseline);
231
337
  return Math.floor(prefixLen / denom * 100);
232
338
  }
339
+ function similarityDetails(current, baseline) {
340
+ const currentLength = current.length;
341
+ const baselineLength = baseline.length;
342
+ const commonPrefixLen = commonPrefixLength(current, baseline);
343
+ const denom = Math.max(currentLength, baselineLength);
344
+ const similarityPct = denom === 0 ? 100 : Math.floor(commonPrefixLen / denom * 100);
345
+ return {
346
+ currentLength,
347
+ baselineLength,
348
+ commonPrefixLength: commonPrefixLen,
349
+ denom,
350
+ similarityPct
351
+ };
352
+ }
353
+ function stringPreview(value, opts) {
354
+ const headChars = 600;
355
+ const tailChars = 600;
356
+ const head = value.slice(0, headChars);
357
+ const tail = value.slice(Math.max(head.length, value.length - tailChars));
358
+ const omittedChars = Math.max(0, value.length - head.length - tail.length);
359
+ return { length: value.length, head, tail, omittedChars };
360
+ }
361
+ function cachedPromptTokensPercent(trace2) {
362
+ const usage = trace2.llmUsage;
363
+ if (!usage) return null;
364
+ if (typeof usage.promptTokens !== "number" || !Number.isFinite(usage.promptTokens)) return null;
365
+ if (usage.promptTokens <= 0) return null;
366
+ if (typeof usage.cachedPromptTokens !== "number" || !Number.isFinite(usage.cachedPromptTokens)) return null;
367
+ if (usage.cachedPromptTokens < 0) return null;
368
+ return Math.max(0, Math.min(100, Math.floor(usage.cachedPromptTokens / usage.promptTokens * 100)));
369
+ }
233
370
  function safeJsonStringify(value) {
234
371
  const seen = /* @__PURE__ */ new WeakSet();
235
372
  try {
@@ -285,6 +422,77 @@ function ChatStepTrace($$renderer, $$props) {
285
422
  if (current == null || baseline == null) return null;
286
423
  return similarityPercent(current, baseline);
287
424
  })();
425
+ const mainCachedTokensPct = (() => {
426
+ if (trace.name !== "main") return null;
427
+ return cachedPromptTokensPercent(trace);
428
+ })();
429
+ const CACHE_OK_THRESHOLD_PCT = 90;
430
+ const CACHE_MISS_SIMILARITY_THRESHOLD_PCT = 90;
431
+ const mainPromptCacheLabel = (() => {
432
+ if (trace.name !== "main") return null;
433
+ if (mainCachedTokensPct != null) {
434
+ const cacheMiss = mainCachedTokensPct === 0 && mainPromptSimilarityPct != null && mainPromptSimilarityPct >= CACHE_MISS_SIMILARITY_THRESHOLD_PCT;
435
+ if (cacheMiss) {
436
+ return {
437
+ text: "0% tokens cached. Cache miss",
438
+ className: "text-red-200"
439
+ };
440
+ }
441
+ const ok = mainCachedTokensPct >= CACHE_OK_THRESHOLD_PCT;
442
+ return ok ? {
443
+ text: `${mainCachedTokensPct}% tokens cached`,
444
+ className: "text-rc-gray-400"
445
+ } : {
446
+ text: `${mainCachedTokensPct}% tokens cached - move dynamic parts of prompt to the bottom`,
447
+ className: "text-red-200"
448
+ };
449
+ }
450
+ if (mainPromptSimilarityPct != null) {
451
+ const ok = mainPromptSimilarityPct >= CACHE_OK_THRESHOLD_PCT;
452
+ return ok ? {
453
+ text: `${mainPromptSimilarityPct}%`,
454
+ className: "text-rc-gray-400"
455
+ } : {
456
+ text: `${mainPromptSimilarityPct}% cached - move dynamic parts of prompt to the bottom`,
457
+ className: "text-red-200"
458
+ };
459
+ }
460
+ return null;
461
+ })();
462
+ const cacheDebugPayload = (() => {
463
+ if (trace.name !== "main") return null;
464
+ const currentPrompt = getPromptForDiff(trace);
465
+ const baselinePrompt = getPromptForDiff(compareTrace);
466
+ const promptSimilarity = currentPrompt != null && baselinePrompt != null ? similarityDetails(currentPrompt, baselinePrompt) : null;
467
+ const usage = trace.llmUsage ?? null;
468
+ const cachedTokensPct = mainCachedTokensPct;
469
+ const cacheMiss = cachedTokensPct === 0 && promptSimilarity?.similarityPct != null && promptSimilarity.similarityPct >= CACHE_MISS_SIMILARITY_THRESHOLD_PCT;
470
+ const labelSource = cachedTokensPct != null ? "llmUsage" : mainPromptSimilarityPct != null ? "promptSimilarityFallback" : "none";
471
+ return {
472
+ version: 1,
473
+ labelSource,
474
+ thresholds: {
475
+ okPct: CACHE_OK_THRESHOLD_PCT,
476
+ cacheMissSimilarityPct: CACHE_MISS_SIMILARITY_THRESHOLD_PCT
477
+ },
478
+ inputs: {
479
+ llmUsage: usage,
480
+ currentRenderedPrompt: currentPrompt != null ? stringPreview(currentPrompt) : null,
481
+ baselineRenderedPrompt: baselinePrompt != null ? stringPreview(baselinePrompt) : null
482
+ },
483
+ computed: {
484
+ cachedTokensPct,
485
+ promptSimilarityPct: promptSimilarity?.similarityPct ?? null,
486
+ promptSimilarity,
487
+ cacheMiss
488
+ },
489
+ decision: { text: mainPromptCacheLabel?.text ?? null }
490
+ };
491
+ })();
492
+ (() => {
493
+ if (!cacheDebugPayload) return "{}";
494
+ return safeJsonStringify(cacheDebugPayload);
495
+ })();
288
496
  formatMaybeJson(trace.response);
289
497
  (() => {
290
498
  const raw = trace.response;
@@ -312,7 +520,7 @@ function ChatStepTrace($$renderer, $$props) {
312
520
  let $$settled = true;
313
521
  let $$inner_renderer;
314
522
  function $$render_inner($$renderer3) {
315
- $$renderer3.push(`<button type="button" class="flex w-full items-baseline gap-2 truncate rounded-md bg-transparent px-2 py-1 text-left text-sm text-rc-gray-200 hover:bg-rc-gray-800/40">`);
523
+ $$renderer3.push(`<button type="button" class="flex w-full cursor-pointer select-text items-baseline gap-2 truncate rounded-md bg-transparent px-2 py-1 text-left text-sm text-rc-gray-200 hover:bg-rc-gray-800/40">`);
316
524
  Icon($$renderer3, {
317
525
  name: hasError ? "close" : "checkmark",
318
526
  width: 18,
@@ -327,17 +535,9 @@ function ChatStepTrace($$renderer, $$props) {
327
535
  $$renderer3.push("<!--[!-->");
328
536
  }
329
537
  $$renderer3.push(`<!--]--> <span${attr_class(clsx(hasError ? "text-red-200" : ""))}>AI: ${escape_html(oneLine)}</span> `);
330
- if (mainPromptSimilarityPct != null) {
538
+ if (mainPromptCacheLabel != null) {
331
539
  $$renderer3.push("<!--[-->");
332
- $$renderer3.push(`<span${attr_class(`shrink-0 text-xs ${mainPromptSimilarityPct < 80 ? "text-red-200" : "text-rc-gray-400"}`)}>`);
333
- if (mainPromptSimilarityPct < 80) {
334
- $$renderer3.push("<!--[-->");
335
- $$renderer3.push(`${escape_html(mainPromptSimilarityPct)}% cached - move dynamic parts of prompt to the bottom`);
336
- } else {
337
- $$renderer3.push("<!--[!-->");
338
- $$renderer3.push(`${escape_html(mainPromptSimilarityPct)}%`);
339
- }
340
- $$renderer3.push(`<!--]--></span>`);
540
+ $$renderer3.push(`<span${attr_class(`shrink-0 text-xs ${mainPromptCacheLabel.className}`)}><span class="cursor-pointer" title="Show prompt-cache calc JSON">${escape_html(mainPromptCacheLabel.text)}</span></span>`);
341
541
  } else {
342
542
  $$renderer3.push("<!--[!-->");
343
543
  }
@@ -345,6 +545,10 @@ function ChatStepTrace($$renderer, $$props) {
345
545
  {
346
546
  $$renderer3.push("<!--[!-->");
347
547
  }
548
+ $$renderer3.push(`<!--]--> `);
549
+ {
550
+ $$renderer3.push("<!--[!-->");
551
+ }
348
552
  $$renderer3.push(`<!--]-->`);
349
553
  }
350
554
  do {
@@ -357,4 +561,4 @@ function ChatStepTrace($$renderer, $$props) {
357
561
  }
358
562
 
359
563
  export { ChatApiCallTrace as C, ChatConversationalTrace as a, ChatStepTrace as b };
360
- //# sourceMappingURL=ChatStepTrace-BIghWRaw.js.map
564
+ //# sourceMappingURL=ChatStepTrace-BraUG8oN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatStepTrace-BraUG8oN.js","sources":["../../../.svelte-kit/adapter-node/chunks/ChatStepTrace.js"],"sourcesContent":["import { b as attr_class, j as clsx, s as stringify, a as attr } from \"./index2.js\";\nimport { o as onDestroy } from \"./index-server.js\";\n/* empty css */\n/* empty css */\nimport { I as Icon } from \"./Icon.js\";\nimport { W as escape_html } from \"./context.js\";\nimport \"@sveltejs/kit/internal\";\nimport \"./exports.js\";\nimport \"./utils.js\";\nimport \"@sveltejs/kit/internal/server\";\nimport \"./state.svelte.js\";\nimport \"./trpc-client.js\";\nfunction createDragSelectClickGuard(options = {}) {\n const thresholdPx = options.thresholdPx ?? 4;\n const dragCursor = options.dragCursor ?? \"text\";\n let startX = 0;\n let startY = 0;\n let didDrag = false;\n let pointerDown = false;\n let cursorEl = null;\n let abortController = null;\n function cleanup() {\n pointerDown = false;\n didDrag = false;\n cursorEl?.style.removeProperty(\"cursor\");\n cursorEl = null;\n abortController?.abort();\n abortController = null;\n }\n function onPointerDown(event) {\n if (typeof window === \"undefined\") return;\n if (event.button !== 0) return;\n abortController?.abort();\n abortController = null;\n cursorEl?.style.removeProperty(\"cursor\");\n startX = event.clientX;\n startY = event.clientY;\n didDrag = false;\n pointerDown = true;\n cursorEl = event.currentTarget instanceof HTMLElement ? event.currentTarget : null;\n const controller = new AbortController();\n abortController = controller;\n const onMove = (moveEvent) => {\n if (!pointerDown || didDrag) return;\n const dx = Math.abs(moveEvent.clientX - startX);\n const dy = Math.abs(moveEvent.clientY - startY);\n if (dx + dy < thresholdPx) return;\n didDrag = true;\n cursorEl?.style.setProperty(\"cursor\", dragCursor);\n };\n const onEnd = () => {\n pointerDown = false;\n cursorEl?.style.removeProperty(\"cursor\");\n cursorEl = null;\n controller.abort();\n if (abortController === controller) abortController = null;\n };\n window.addEventListener(\"pointermove\", onMove, { signal: controller.signal });\n window.addEventListener(\"pointerup\", onEnd, { signal: controller.signal });\n window.addEventListener(\"pointercancel\", onEnd, { signal: controller.signal });\n }\n function shouldSuppressClick(event) {\n return event.detail > 0 && didDrag;\n }\n return { onPointerDown, shouldSuppressClick, cleanup };\n}\nfunction ChatApiCallTrace($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { trace } = $$props;\n const clickGuard = createDragSelectClickGuard();\n onDestroy(clickGuard.cleanup);\n function safeJson(value) {\n try {\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return \"\";\n const maybe = JSON.parse(trimmed);\n return JSON.stringify(maybe, null, 2);\n }\n } catch {\n }\n try {\n return JSON.stringify(value ?? null, null, 2);\n } catch {\n return String(value);\n }\n }\n function fmtDate(ms) {\n return new Date(ms).toISOString();\n }\n function formatHHmmss(ms) {\n if (typeof ms !== \"number\" || !Number.isFinite(ms)) return null;\n const d = new Date(ms);\n if (Number.isNaN(d.getTime())) return null;\n const hh = String(d.getHours()).padStart(2, \"0\");\n const mm = String(d.getMinutes()).padStart(2, \"0\");\n const ss = String(d.getSeconds()).padStart(2, \"0\");\n return `${hh}:${mm}:${ss}`;\n }\n const time = (() => formatHHmmss(trace.createdAt))();\n const derivedError = (() => {\n if (trace.error != null) return trace.error;\n const isFailed = trace.ok === false || typeof trace.status === \"number\" && trace.status >= 400;\n if (!isFailed) return void 0;\n const resp = trace.response;\n if (resp && typeof resp === \"object\") {\n if (\"error\" in resp && resp.error != null) return resp.error;\n }\n return { status: trace.status, ok: trace.ok };\n })();\n const hasError = derivedError != null;\n `API: ${trace.operationName}`;\n const oneLine = trace.operationName;\n (() => {\n if (typeof trace.createdAt !== \"number\") return \"—\";\n return fmtDate(trace.createdAt);\n })();\n safeJson({\n method: trace.method,\n path: trace.path,\n baseUrl: trace.baseUrl,\n request: trace.request\n });\n safeJson({\n status: trace.status,\n ok: trace.ok,\n response: trace.response,\n error: derivedError\n });\n derivedError != null ? safeJson(derivedError) : \"\";\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n $$renderer3.push(`<button type=\"button\" class=\"flex w-full cursor-pointer select-text items-baseline gap-2 truncate rounded-md bg-transparent px-2 py-1 text-left text-sm text-rc-gray-200 hover:bg-rc-gray-800/40\">`);\n Icon($$renderer3, {\n name: hasError ? \"close\" : \"checkmark\",\n width: 18,\n height: 18,\n class: hasError ? \"self-center text-red-400\" : \"self-center text-rc-green-200\"\n });\n $$renderer3.push(`<!----> `);\n if (time) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<span class=\"text-[13px] leading-none text-rc-gray-400\">${escape_html(time)}</span>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--> <span${attr_class(clsx(hasError ? \"text-red-200\" : \"\"))}>${escape_html(oneLine)}</span></button> `);\n {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]-->`);\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n });\n}\nfunction ChatConversationalTrace($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let {\n trace,\n context,\n agentId,\n analyzeDisabled = false,\n onAnalyze,\n onRegenerate,\n onRevert\n } = $$props;\n const clickGuard = createDragSelectClickGuard();\n onDestroy(clickGuard.cleanup);\n function agentName(id) {\n if (!id) return \"\";\n return id.split(\"/\").at(-1) ?? id;\n }\n function getInitial(id) {\n const first = agentName(id).trim().charAt(0);\n return first ? first.toUpperCase() : \"?\";\n }\n const sender = (() => {\n if (trace.role === \"system\") return \"system\";\n if (trace.eventName === \"finished-main-streaming-step\" || trace.eventName === \"sent-message\") {\n return \"agent\";\n }\n return trace.role === \"user\" ? \"user\" : \"user\";\n })();\n const bubbleMaxWidthClass = (() => {\n if (sender === \"agent\") return \"max-w-[83%]\";\n if (sender === \"user\") return \"max-w-[90%] sm:max-w-[80%] md:max-w-[70%]\";\n if (sender === \"system\") return \"max-w-[90%] sm:max-w-[85%] md:max-w-[75%]\";\n return \"\";\n })();\n const showRevert = (() => sender === \"user\" && !!onRevert && // Hide for older traces that predate bosun state metadata.\n trace?.bosunPrevStateId !== void 0)();\n const hasError = (() => trace.error != null)();\n const metrics = (() => trace?.metrics)();\n const llmToAudioLatencyMs = (() => metrics?.summary?.llmToAudioLatencyMs)();\n const isHighLatency = (() => typeof llmToAudioLatencyMs === \"number\" && llmToAudioLatencyMs > 800)();\n function formatHHmmss(ms) {\n if (typeof ms !== \"number\" || !Number.isFinite(ms)) return null;\n const d = new Date(ms);\n if (Number.isNaN(d.getTime())) return null;\n const hh = String(d.getHours()).padStart(2, \"0\");\n const mm = String(d.getMinutes()).padStart(2, \"0\");\n const ss = String(d.getSeconds()).padStart(2, \"0\");\n return `${hh}:${mm}:${ss}`;\n }\n const time = (() => formatHHmmss(trace?.createdAt))();\n function isAddTestEligible() {\n return sender === \"agent\" && trace.eventName !== \"transfer-requested\" && !!(agentId && agentId.trim()) && (trace.eventName === \"finished-main-streaming-step\" || trace.eventName === \"sent-message\");\n }\n function isAnalyzeEligible() {\n return sender === \"agent\" && trace.eventName !== \"transfer-requested\" && !!(agentId && agentId.trim()) && (trace.eventName === \"finished-main-streaming-step\" || trace.eventName === \"sent-message\");\n }\n function isRegenerateEligible() {\n return isAnalyzeEligible();\n }\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n $$renderer3.push(`<div${attr_class(\"group mb-2 flex w-full items-start\", void 0, { \"justify-end\": sender === \"user\" || sender === \"system\" })}>`);\n if (trace.eventName === \"transfer-requested\") {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<div class=\"flex w-full justify-center\"><div${attr_class(`cursor-pointer select-text rounded-full border border-rc-gray-650 bg-rc-gray-800/40 px-4 py-2 text-sm text-rc-gray-100 ${stringify(hasError ? \"border-red-500 bg-red-950/30 text-red-200\" : \"\")}`)} role=\"button\" tabindex=\"0\"><div class=\"flex flex-wrap items-baseline gap-x-2 gap-y-0\">`);\n if (time) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<span class=\"text-[13px] leading-none text-rc-gray-400\">${escape_html(time)}</span>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--> <div class=\"min-w-0 break-words\">Transfer requested: ${escape_html(trace.content)}</div></div></div></div>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n if (sender === \"agent\" && agentId) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<div class=\"mr-2 mt-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-sm bg-rc-green-700 text-sm uppercase text-rc-gray-100 backdrop-blur-md\"${attr(\"title\", agentName(agentId))}>${escape_html(getInitial(agentId))}</div>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--> `);\n if (showRevert) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<button type=\"button\" title=\"Revert to before this message\" class=\"mr-2 mt-1 shrink-0 self-start rounded p-1 text-rc-gray-500 opacity-80 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none\">`);\n Icon($$renderer3, { name: \"undo\", width: 16, height: 16 });\n $$renderer3.push(`<!----></button>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--> <div${attr_class(`min-w-0 ${stringify(bubbleMaxWidthClass)}`)}><div role=\"button\" tabindex=\"0\" class=\"cursor-pointer select-text\"><div${attr_class(`rounded-lg ${stringify(sender === \"system\" ? \"justify-between whitespace-pre-line break-words border border-emerald-500 text-emerald-500\" : sender !== \"user\" ? \"w-full whitespace-pre-line break-words bg-rc-green-700 backdrop-blur-md\" : \"whitespace-pre-line break-words bg-rc-gray-700\")} border-thin border-rc-gray-110 p-2 pt-1 text-rc-gray-100 ${stringify(hasError ? \"border-red-500 bg-red-950/30 text-red-200\" : \"\")} ${stringify(isHighLatency ? \"relative pb-5 ring-1 ring-red-500/60\" : \"\")} ${stringify(isHighLatency && !hasError ? \"border-red-500\" : \"\")}`)}><div>${escape_html(trace.content)}</div> `);\n if (time) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<div${attr_class(`${stringify(isHighLatency ? \"absolute bottom-1 right-2\" : \"mt-1 text-right\")} text-xs text-rc-gray-200/70`)}>${escape_html(time)}</div>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--> `);\n if (isHighLatency) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<div class=\"absolute bottom-1 left-2 rounded bg-red-950/60 px-2 py-0.5 text-[11px] text-red-200\">High LLM to audio latency: ${escape_html(Math.round(llmToAudioLatencyMs))} ms</div>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--></div></div> `);\n if (isAnalyzeEligible() || isAddTestEligible() || isRegenerateEligible() && onRegenerate) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<div class=\"mt-1 flex flex-wrap items-center gap-x-2 gap-y-1\">`);\n if (isAddTestEligible()) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<button type=\"button\"${attr_class(`inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 transition-colors focus:outline-none focus-visible:outline-none ${stringify(\"cursor-pointer text-rc-gray-400 hover:bg-rc-gray-900 hover:text-rc-gray-200\")}`)}>`);\n {\n $$renderer3.push(\"<!--[!-->\");\n {\n $$renderer3.push(\"<!--[!-->\");\n $$renderer3.push(`Add test`);\n }\n $$renderer3.push(`<!--]-->`);\n }\n $$renderer3.push(`<!--]--></button>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--> `);\n if (isAnalyzeEligible() && onAnalyze) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<button type=\"button\"${attr(\"disabled\", analyzeDisabled, true)} class=\"inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent disabled:hover:text-rc-gray-400\">Analyze</button>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--> `);\n if (isRegenerateEligible() && onRegenerate) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<button type=\"button\" class=\"inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none\">Regenerate</button>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--></div>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--></div>`);\n }\n $$renderer3.push(`<!--]--></div> `);\n {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]-->`);\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n });\n}\nfunction ChatStepTrace($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { trace, compareTrace } = $$props;\n const clickGuard = createDragSelectClickGuard();\n onDestroy(clickGuard.cleanup);\n function getPromptForDiff(t) {\n if (!t) return null;\n if (typeof t.renderedPrompt === \"string\") return t.renderedPrompt;\n return null;\n }\n function commonPrefixLength(a, b) {\n if (a === b) return a.length;\n const max = Math.min(a.length, b.length);\n for (let i = 0; i < max; i++) {\n if (a.charCodeAt(i) !== b.charCodeAt(i)) return i;\n }\n return max;\n }\n function similarityPercent(current, baseline) {\n const denom = Math.max(current.length, baseline.length);\n if (denom === 0) return 100;\n const prefixLen = commonPrefixLength(current, baseline);\n return Math.floor(prefixLen / denom * 100);\n }\n function similarityDetails(current, baseline) {\n const currentLength = current.length;\n const baselineLength = baseline.length;\n const commonPrefixLen = commonPrefixLength(current, baseline);\n const denom = Math.max(currentLength, baselineLength);\n const similarityPct = denom === 0 ? 100 : Math.floor(commonPrefixLen / denom * 100);\n return {\n currentLength,\n baselineLength,\n commonPrefixLength: commonPrefixLen,\n denom,\n similarityPct\n };\n }\n function stringPreview(value, opts) {\n const headChars = 600;\n const tailChars = 600;\n const head = value.slice(0, headChars);\n const tail = value.slice(Math.max(head.length, value.length - tailChars));\n const omittedChars = Math.max(0, value.length - head.length - tail.length);\n return { length: value.length, head, tail, omittedChars };\n }\n function cachedPromptTokensPercent(trace2) {\n const usage = trace2.llmUsage;\n if (!usage) return null;\n if (typeof usage.promptTokens !== \"number\" || !Number.isFinite(usage.promptTokens)) return null;\n if (usage.promptTokens <= 0) return null;\n if (typeof usage.cachedPromptTokens !== \"number\" || !Number.isFinite(usage.cachedPromptTokens)) return null;\n if (usage.cachedPromptTokens < 0) return null;\n return Math.max(0, Math.min(100, Math.floor(usage.cachedPromptTokens / usage.promptTokens * 100)));\n }\n function safeJsonStringify(value) {\n const seen = /* @__PURE__ */ new WeakSet();\n try {\n return JSON.stringify(\n value,\n (_, v) => {\n if (typeof v === \"bigint\") return v.toString();\n if (v instanceof Error) {\n return { name: v.name, message: v.message, stack: v.stack };\n }\n if (typeof v === \"object\" && v !== null) {\n if (seen.has(v)) return \"[Circular]\";\n seen.add(v);\n }\n return v;\n },\n 2\n ) ?? \"\";\n } catch {\n return String(value);\n }\n }\n function formatMaybeJson(value) {\n if (value == null) return \"\";\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return \"\";\n try {\n return JSON.stringify(JSON.parse(trimmed), null, 2);\n } catch {\n return value;\n }\n }\n return safeJsonStringify(value);\n }\n function formatHHmmss(ms) {\n if (typeof ms !== \"number\" || !Number.isFinite(ms)) return null;\n const d = new Date(ms);\n if (Number.isNaN(d.getTime())) return null;\n const hh = String(d.getHours()).padStart(2, \"0\");\n const mm = String(d.getMinutes()).padStart(2, \"0\");\n const ss = String(d.getSeconds()).padStart(2, \"0\");\n return `${hh}:${mm}:${ss}`;\n }\n const time = (() => formatHHmmss(trace.createdAt))();\n const hasError = trace.error != null;\n `AI: ${trace.name}`;\n const oneLine = trace.name;\n const mainPromptSimilarityPct = (() => {\n if (trace.name !== \"main\") return null;\n const current = getPromptForDiff(trace);\n const baseline = getPromptForDiff(compareTrace);\n if (current == null || baseline == null) return null;\n return similarityPercent(current, baseline);\n })();\n const mainCachedTokensPct = (() => {\n if (trace.name !== \"main\") return null;\n return cachedPromptTokensPercent(trace);\n })();\n const CACHE_OK_THRESHOLD_PCT = 90;\n const CACHE_MISS_SIMILARITY_THRESHOLD_PCT = 90;\n const mainPromptCacheLabel = (() => {\n if (trace.name !== \"main\") return null;\n if (mainCachedTokensPct != null) {\n const cacheMiss = mainCachedTokensPct === 0 && mainPromptSimilarityPct != null && mainPromptSimilarityPct >= CACHE_MISS_SIMILARITY_THRESHOLD_PCT;\n if (cacheMiss) {\n return {\n text: \"0% tokens cached. Cache miss\",\n className: \"text-red-200\"\n };\n }\n const ok = mainCachedTokensPct >= CACHE_OK_THRESHOLD_PCT;\n return ok ? {\n text: `${mainCachedTokensPct}% tokens cached`,\n className: \"text-rc-gray-400\"\n } : {\n text: `${mainCachedTokensPct}% tokens cached - move dynamic parts of prompt to the bottom`,\n className: \"text-red-200\"\n };\n }\n if (mainPromptSimilarityPct != null) {\n const ok = mainPromptSimilarityPct >= CACHE_OK_THRESHOLD_PCT;\n return ok ? {\n text: `${mainPromptSimilarityPct}%`,\n className: \"text-rc-gray-400\"\n } : {\n text: `${mainPromptSimilarityPct}% cached - move dynamic parts of prompt to the bottom`,\n className: \"text-red-200\"\n };\n }\n return null;\n })();\n const cacheDebugPayload = (() => {\n if (trace.name !== \"main\") return null;\n const currentPrompt = getPromptForDiff(trace);\n const baselinePrompt = getPromptForDiff(compareTrace);\n const promptSimilarity = currentPrompt != null && baselinePrompt != null ? similarityDetails(currentPrompt, baselinePrompt) : null;\n const usage = trace.llmUsage ?? null;\n const cachedTokensPct = mainCachedTokensPct;\n const cacheMiss = cachedTokensPct === 0 && promptSimilarity?.similarityPct != null && promptSimilarity.similarityPct >= CACHE_MISS_SIMILARITY_THRESHOLD_PCT;\n const labelSource = cachedTokensPct != null ? \"llmUsage\" : mainPromptSimilarityPct != null ? \"promptSimilarityFallback\" : \"none\";\n return {\n version: 1,\n labelSource,\n thresholds: {\n okPct: CACHE_OK_THRESHOLD_PCT,\n cacheMissSimilarityPct: CACHE_MISS_SIMILARITY_THRESHOLD_PCT\n },\n inputs: {\n llmUsage: usage,\n currentRenderedPrompt: currentPrompt != null ? stringPreview(currentPrompt) : null,\n baselineRenderedPrompt: baselinePrompt != null ? stringPreview(baselinePrompt) : null\n },\n computed: {\n cachedTokensPct,\n promptSimilarityPct: promptSimilarity?.similarityPct ?? null,\n promptSimilarity,\n cacheMiss\n },\n decision: { text: mainPromptCacheLabel?.text ?? null }\n };\n })();\n (() => {\n if (!cacheDebugPayload) return \"{}\";\n return safeJsonStringify(cacheDebugPayload);\n })();\n formatMaybeJson(trace.response);\n (() => {\n const raw = trace.response;\n if (typeof raw !== \"string\") return \"json\";\n try {\n JSON.parse(raw);\n return \"json\";\n } catch {\n return \"text\";\n }\n })();\n trace.stringifiedConversation ?? \"\";\n formatMaybeJson(trace.renderedPrompt);\n formatMaybeJson(trace.receivedPrompt);\n formatMaybeJson(trace.receivedContext);\n formatMaybeJson(trace.schema);\n trace.error ? safeJsonStringify(trace.error) : \"\";\n function toCopyablePrompt(value) {\n if (value == null) return \"\";\n if (typeof value === \"string\") return value;\n return safeJsonStringify(value);\n }\n toCopyablePrompt(trace.receivedPrompt);\n toCopyablePrompt(trace.renderedPrompt);\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n $$renderer3.push(`<button type=\"button\" class=\"flex w-full cursor-pointer select-text items-baseline gap-2 truncate rounded-md bg-transparent px-2 py-1 text-left text-sm text-rc-gray-200 hover:bg-rc-gray-800/40\">`);\n Icon($$renderer3, {\n name: hasError ? \"close\" : \"checkmark\",\n width: 18,\n height: 18,\n class: hasError ? \"self-center text-red-400\" : \"self-center text-rc-green-200\"\n });\n $$renderer3.push(`<!----> `);\n if (time) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<span class=\"text-[13px] leading-none text-rc-gray-400\">${escape_html(time)}</span>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--> <span${attr_class(clsx(hasError ? \"text-red-200\" : \"\"))}>AI: ${escape_html(oneLine)}</span> `);\n if (mainPromptCacheLabel != null) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.push(`<span${attr_class(`shrink-0 text-xs ${mainPromptCacheLabel.className}`)}><span class=\"cursor-pointer\" title=\"Show prompt-cache calc JSON\">${escape_html(mainPromptCacheLabel.text)}</span></span>`);\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--></button> `);\n {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]--> `);\n {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]-->`);\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n });\n}\nexport {\n ChatApiCallTrace as C,\n ChatConversationalTrace as a,\n ChatStepTrace as b\n};\n"],"names":[],"mappings":"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"}
@@ -48,6 +48,10 @@ function Icon($$renderer, $$props) {
48
48
  copy: {
49
49
  viewBox: "0 0 24 24",
50
50
  path: '<rect x="4" y="4" width="11" height="11" rx="2" ry="2" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round" /><rect x="9" y="9" width="11" height="11" rx="2" ry="2" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round" />'
51
+ },
52
+ undo: {
53
+ viewBox: "0 0 24 24",
54
+ path: '<path d="M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6 0 1.09-.29 2.11-.8 3l1.46 1.46C19.54 16.14 20 14.62 20 13c0-4.42-3.58-8-8-8z" />'
51
55
  }
52
56
  };
53
57
  let icon = icons[name];
@@ -62,4 +66,4 @@ function Icon($$renderer, $$props) {
62
66
  }
63
67
 
64
68
  export { Icon as I, html as h };
65
- //# sourceMappingURL=Icon-BgknHaZs.js.map
69
+ //# sourceMappingURL=Icon-zMNuTF_-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon-zMNuTF_-.js","sources":["../../../.svelte-kit/adapter-node/chunks/Icon.js"],"sourcesContent":["import { a as attr, b as attr_class, j as clsx } from \"./index2.js\";\nfunction html(value) {\n var html2 = String(value ?? \"\");\n var open = \"<!---->\";\n return open + html2 + \"<!---->\";\n}\nfunction Icon($$renderer, $$props) {\n let { name, width = 25, height = 25, class: className = \"\" } = $$props;\n const icons = {\n paperclip: {\n viewBox: \"0 0 32 32\",\n path: '<image href=\"/ui/paperclip.svg\" width=\"32\" height=\"32\" />'\n },\n send: {\n viewBox: \"0 0 32 32\",\n path: '<image href=\"/ui/send.svg\" width=\"32\" height=\"32\" />'\n },\n checkmark: {\n viewBox: \"0 0 24 24\",\n path: '<path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />'\n },\n \"chevron-down\": {\n viewBox: \"0 0 24 24\",\n path: '<path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />'\n },\n \"chevron-up\": {\n viewBox: \"0 0 24 24\",\n path: '<path d=\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z\" />'\n },\n \"chevron-left\": {\n viewBox: \"0 0 24 24\",\n path: '<path d=\"M14.41 7.41L13 6l-6 6 6 6 1.41-1.41L9.83 12z\" />'\n },\n \"chevron-right\": {\n viewBox: \"0 0 24 24\",\n path: '<path d=\"M9.59 16.59L11 18l6-6-6-6-1.41 1.41L14.17 12z\" />'\n },\n log: {\n viewBox: \"0 0 24 24\",\n path: '<path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-1-6h2v2h-2v-2zm0-4h2v3h-2v-3z\" />'\n },\n close: {\n viewBox: \"0 0 24 24\",\n path: `<path d=\"M6 6L18 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n\t\t\t<path d=\"M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>`\n },\n copy: {\n viewBox: \"0 0 24 24\",\n path: '<rect x=\"4\" y=\"4\" width=\"11\" height=\"11\" rx=\"2\" ry=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\" /><rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\" ry=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\" />'\n },\n undo: {\n viewBox: \"0 0 24 24\",\n path: '<path d=\"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6 0 1.09-.29 2.11-.8 3l1.46 1.46C19.54 16.14 20 14.62 20 13c0-4.42-3.58-8-8-8z\" />'\n }\n };\n let icon = icons[name];\n if (icon) {\n $$renderer.push(\"<!--[-->\");\n $$renderer.push(`<svg xmlns=\"http://www.w3.org/2000/svg\"${attr(\"width\", width)}${attr(\"height\", height)}${attr(\"viewBox\", icon.viewBox)} fill=\"currentColor\" stroke-width=\"1\"${attr_class(clsx(className))} aria-hidden=\"true\">${html(icon.path)}</svg>`);\n } else {\n $$renderer.push(\"<!--[!-->\");\n $$renderer.push(`<div class=\"flex h-xl w-xl items-center justify-center rounded bg-gray-200 text-xs text-gray-500\">?</div>`);\n }\n $$renderer.push(`<!--]-->`);\n}\nexport {\n Icon as I,\n html as h\n};\n"],"names":[],"mappings":";;AACA,SAAS,IAAI,CAAC,KAAK,EAAE;AACrB,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AACjC,EAAE,IAAI,IAAI,GAAG,SAAS;AACtB,EAAE,OAAO,IAAI,GAAG,KAAK,GAAG,SAAS;AACjC;AACA,SAAS,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AACnC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,OAAO;AACxE,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,SAAS,EAAE;AACf,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE;AACZ,KAAK;AACL,IAAI,IAAI,EAAE;AACV,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE;AACZ,KAAK;AACL,IAAI,SAAS,EAAE;AACf,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE;AACZ,KAAK;AACL,IAAI,cAAc,EAAE;AACpB,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE;AACZ,KAAK;AACL,IAAI,YAAY,EAAE;AAClB,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE;AACZ,KAAK;AACL,IAAI,cAAc,EAAE;AACpB,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE;AACZ,KAAK;AACL,IAAI,eAAe,EAAE;AACrB,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE;AACZ,KAAK;AACL,IAAI,GAAG,EAAE;AACT,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE;AACZ,KAAK;AACL,IAAI,KAAK,EAAE;AACX,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE,CAAC;AACb,yFAAyF;AACzF,KAAK;AACL,IAAI,IAAI,EAAE;AACV,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE;AACZ,KAAK;AACL,IAAI,IAAI,EAAE;AACV,MAAM,OAAO,EAAE,WAAW;AAC1B,MAAM,IAAI,EAAE;AACZ;AACA,GAAG;AACH,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACxB,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,uCAAuC,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,qCAAqC,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7P,EAAE,CAAC,MAAM;AACT,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,yGAAyG,CAAC,CAAC;AAChI,EAAE;AACF,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7B;;;;"}