@recombine-ai/bosun 0.12.2 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/build/client/_app/immutable/assets/0.B-Br6U4N.css +1 -0
  2. package/build/client/_app/immutable/assets/0.B-Br6U4N.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.B-Br6U4N.css.gz +0 -0
  4. package/build/client/_app/immutable/chunks/BOuo-4gP.js +1 -0
  5. package/build/client/_app/immutable/chunks/BOuo-4gP.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BOuo-4gP.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/Cyj62X2W.js +2 -0
  8. package/build/client/_app/immutable/chunks/Cyj62X2W.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/Cyj62X2W.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/DSDSeO7L.js +1 -0
  11. package/build/client/_app/immutable/chunks/DSDSeO7L.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/DSDSeO7L.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{CFkSbzDR.js → De8YgKS3.js} +1 -1
  14. package/build/client/_app/immutable/chunks/De8YgKS3.js.br +1 -0
  15. package/build/client/_app/immutable/chunks/De8YgKS3.js.gz +0 -0
  16. package/build/client/_app/immutable/entry/{app.o-KFh_Cb.js → app.DK_wVDeR.js} +2 -2
  17. package/build/client/_app/immutable/entry/app.DK_wVDeR.js.br +0 -0
  18. package/build/client/_app/immutable/entry/app.DK_wVDeR.js.gz +0 -0
  19. package/build/client/_app/immutable/entry/start.xQy-2aGo.js +1 -0
  20. package/build/client/_app/immutable/entry/start.xQy-2aGo.js.br +2 -0
  21. package/build/client/_app/immutable/entry/start.xQy-2aGo.js.gz +0 -0
  22. package/build/client/_app/immutable/nodes/{0.DzAzg3lC.js → 0.5fEbn14Q.js} +1 -1
  23. package/build/client/_app/immutable/nodes/0.5fEbn14Q.js.br +0 -0
  24. package/build/client/_app/immutable/nodes/0.5fEbn14Q.js.gz +0 -0
  25. package/build/client/_app/immutable/nodes/{1.CgJnX42R.js → 1.CJrSN8zL.js} +1 -1
  26. package/build/client/_app/immutable/nodes/1.CJrSN8zL.js.br +0 -0
  27. package/build/client/_app/immutable/nodes/1.CJrSN8zL.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/10.SZwTlOEA.js +12 -0
  29. package/build/client/_app/immutable/nodes/10.SZwTlOEA.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/10.SZwTlOEA.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{17.Dh0U5ZLs.js → 17.D-KFl7Vk.js} +1 -1
  32. package/build/client/_app/immutable/nodes/17.D-KFl7Vk.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/17.D-KFl7Vk.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/18.DqRdJY9A.js +11 -0
  35. package/build/client/_app/immutable/nodes/18.DqRdJY9A.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/18.DqRdJY9A.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{2.CUHzTabj.js → 2.B3Uuk25v.js} +1 -1
  38. package/build/client/_app/immutable/nodes/2.B3Uuk25v.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/2.B3Uuk25v.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{3.fG_Roq0i.js → 3.B1RGTOJ8.js} +1 -1
  41. package/build/client/_app/immutable/nodes/3.B1RGTOJ8.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/3.B1RGTOJ8.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{4.CLFkMI6C.js → 4.D2jcIUpD.js} +1 -1
  44. package/build/client/_app/immutable/nodes/4.D2jcIUpD.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/4.D2jcIUpD.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{5.DTNqvnb6.js → 5.CUyCIyRd.js} +1 -1
  47. package/build/client/_app/immutable/nodes/5.CUyCIyRd.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/5.CUyCIyRd.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/{6.4xYVoDHd.js → 6.B8HsGA2V.js} +1 -1
  50. package/build/client/_app/immutable/nodes/6.B8HsGA2V.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/6.B8HsGA2V.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{8.CRjSjXfT.js → 8.jY56-_OU.js} +1 -1
  53. package/build/client/_app/immutable/nodes/8.jY56-_OU.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/8.jY56-_OU.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/9.v5dX6L9n.js +2 -0
  56. package/build/client/_app/immutable/nodes/9.v5dX6L9n.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/9.v5dX6L9n.js.gz +0 -0
  58. package/build/client/_app/version.json +1 -1
  59. package/build/client/_app/version.json.br +0 -0
  60. package/build/client/_app/version.json.gz +0 -0
  61. package/build/server/chunks/{0-DZjFjCYb.js → 0-4QCErf9j.js} +4 -4
  62. package/build/server/chunks/{0-DZjFjCYb.js.map → 0-4QCErf9j.js.map} +1 -1
  63. package/build/server/chunks/{1-BnDJQctI.js → 1-Dsjy8Hzc.js} +3 -3
  64. package/build/server/chunks/{1-BnDJQctI.js.map → 1-Dsjy8Hzc.js.map} +1 -1
  65. package/build/server/chunks/{10-CaY_D1yr.js → 10-8061c8ui.js} +3 -3
  66. package/build/server/chunks/{10-CaY_D1yr.js.map → 10-8061c8ui.js.map} +1 -1
  67. package/build/server/chunks/{15-BMEAVslz.js → 15-BRw8wtLp.js} +2 -2
  68. package/build/server/chunks/{15-BMEAVslz.js.map → 15-BRw8wtLp.js.map} +1 -1
  69. package/build/server/chunks/{17-n_LzmOIf.js → 17-3_5wsIEX.js} +3 -3
  70. package/build/server/chunks/{17-n_LzmOIf.js.map → 17-3_5wsIEX.js.map} +1 -1
  71. package/build/server/chunks/{18-DGfJMJic.js → 18-D73Mw140.js} +3 -3
  72. package/build/server/chunks/{18-DGfJMJic.js.map → 18-D73Mw140.js.map} +1 -1
  73. package/build/server/chunks/{2-CNylBPwc.js → 2-DM0VjzFi.js} +3 -3
  74. package/build/server/chunks/{2-CNylBPwc.js.map → 2-DM0VjzFi.js.map} +1 -1
  75. package/build/server/chunks/{3-Cfx-Gcr_.js → 3-B3zlFGkL.js} +3 -3
  76. package/build/server/chunks/{3-Cfx-Gcr_.js.map → 3-B3zlFGkL.js.map} +1 -1
  77. package/build/server/chunks/{4-B6TVtBCA.js → 4-tESdMZpI.js} +3 -3
  78. package/build/server/chunks/{4-B6TVtBCA.js.map → 4-tESdMZpI.js.map} +1 -1
  79. package/build/server/chunks/{5-BLm6rhN5.js → 5-BJMTlq4U.js} +3 -3
  80. package/build/server/chunks/{5-BLm6rhN5.js.map → 5-BJMTlq4U.js.map} +1 -1
  81. package/build/server/chunks/{6-DNRqV68B.js → 6-CDK2Aia6.js} +3 -3
  82. package/build/server/chunks/{6-DNRqV68B.js.map → 6-CDK2Aia6.js.map} +1 -1
  83. package/build/server/chunks/{8-CMgxOut_.js → 8-BJbDytoU.js} +3 -3
  84. package/build/server/chunks/{8-CMgxOut_.js.map → 8-BJbDytoU.js.map} +1 -1
  85. package/build/server/chunks/{9-6WeCfWuG.js → 9-BNfIeSqk.js} +3 -3
  86. package/build/server/chunks/{9-6WeCfWuG.js.map → 9-BNfIeSqk.js.map} +1 -1
  87. package/build/server/chunks/{AgentSidebar-DvIlda-E.js → AgentSidebar-C--dGIV5.js} +4 -4
  88. package/build/server/chunks/{AgentSidebar-DvIlda-E.js.map → AgentSidebar-C--dGIV5.js.map} +1 -1
  89. package/build/server/chunks/{Button-BLigKkGG.js → Button-oIUr2LUP.js} +2 -2
  90. package/build/server/chunks/{Button-BLigKkGG.js.map → Button-oIUr2LUP.js.map} +1 -1
  91. package/build/server/chunks/{ChatStepTrace-CqqIjRLU.js → ChatStepTrace-DQL3qlna.js} +84 -13
  92. package/build/server/chunks/ChatStepTrace-DQL3qlna.js.map +1 -0
  93. package/build/server/chunks/{ContextEditor-D5B2mO8Z.js → ContextEditor-ngRBOJVc.js} +4 -4
  94. package/build/server/chunks/{ContextEditor-D5B2mO8Z.js.map → ContextEditor-ngRBOJVc.js.map} +1 -1
  95. package/build/server/chunks/{Dropdown-7dp1qEYv.js → Dropdown-DfCyYHqi.js} +2 -2
  96. package/build/server/chunks/{Dropdown-7dp1qEYv.js.map → Dropdown-DfCyYHqi.js.map} +1 -1
  97. package/build/server/chunks/{Icon-CXFHkSIr.js → Icon-DadJPtVP.js} +2 -2
  98. package/build/server/chunks/{Icon-CXFHkSIr.js.map → Icon-DadJPtVP.js.map} +1 -1
  99. package/build/server/chunks/{Input-OdQKNdS6.js → Input-R74u4cO5.js} +2 -2
  100. package/build/server/chunks/{Input-OdQKNdS6.js.map → Input-R74u4cO5.js.map} +1 -1
  101. package/build/server/chunks/{Modal-DtVsRmmO.js → Modal-CAzVFw5x.js} +4 -4
  102. package/build/server/chunks/Modal-CAzVFw5x.js.map +1 -0
  103. package/build/server/chunks/{Tab-CD1H0E3P.js → Tab-D13L_Up5.js} +4 -4
  104. package/build/server/chunks/{Tab-CD1H0E3P.js.map → Tab-D13L_Up5.js.map} +1 -1
  105. package/build/server/chunks/{_layout.svelte-B-CkD4a0.js → _layout.svelte-BIMexfnk.js} +128 -15
  106. package/build/server/chunks/_layout.svelte-BIMexfnk.js.map +1 -0
  107. package/build/server/chunks/{_layout.svelte-C5eqrEen.js → _layout.svelte-D4EOIHJJ.js} +8 -8
  108. package/build/server/chunks/_layout.svelte-D4EOIHJJ.js.map +1 -0
  109. package/build/server/chunks/{_layout.svelte-BBFCF-xw.js → _layout.svelte-DK7yl8vI.js} +17 -17
  110. package/build/server/chunks/_layout.svelte-DK7yl8vI.js.map +1 -0
  111. package/build/server/chunks/{_layout.svelte-cPhmW5bZ.js → _layout.svelte-Dk-9LkfL.js} +10 -10
  112. package/build/server/chunks/_layout.svelte-Dk-9LkfL.js.map +1 -0
  113. package/build/server/chunks/{_page.svelte-_sXVlB3C.js → _page.svelte-BTKQMuSz.js} +88 -37
  114. package/build/server/chunks/_page.svelte-BTKQMuSz.js.map +1 -0
  115. package/build/server/chunks/{_page.svelte-DbV3HGn5.js → _page.svelte-CeO_ScC8.js} +2 -2
  116. package/build/server/chunks/{_page.svelte-DbV3HGn5.js.map → _page.svelte-CeO_ScC8.js.map} +1 -1
  117. package/build/server/chunks/{_page.svelte-BYVcy49A.js → _page.svelte-Cu8a_kUO.js} +4 -4
  118. package/build/server/chunks/{_page.svelte-BYVcy49A.js.map → _page.svelte-Cu8a_kUO.js.map} +1 -1
  119. package/build/server/chunks/{_page.svelte-BgoX8Y6N.js → _page.svelte-D5S0QjlI.js} +12 -12
  120. package/build/server/chunks/_page.svelte-D5S0QjlI.js.map +1 -0
  121. package/build/server/chunks/{_page.svelte-0J2xaeyC.js → _page.svelte-D6bSXGHX.js} +21 -172
  122. package/build/server/chunks/_page.svelte-D6bSXGHX.js.map +1 -0
  123. package/build/server/chunks/{_page.svelte-CqGOvPRO.js → _page.svelte-YoDx7gDL.js} +6 -6
  124. package/build/server/chunks/{_page.svelte-CqGOvPRO.js.map → _page.svelte-YoDx7gDL.js.map} +1 -1
  125. package/build/server/chunks/{_page.svelte-Cxh9_vUl.js → _page.svelte-ZWNBigwS.js} +15 -12
  126. package/build/server/chunks/_page.svelte-ZWNBigwS.js.map +1 -0
  127. package/build/server/chunks/{_page.svelte-C_S_qUgZ.js → _page.svelte-ej3vdYeF.js} +10 -10
  128. package/build/server/chunks/{_page.svelte-C_S_qUgZ.js.map → _page.svelte-ej3vdYeF.js.map} +1 -1
  129. package/build/server/chunks/{agents-context-rV2narXG.js → agents-context-w03Lz_6n.js} +2 -2
  130. package/build/server/chunks/{agents-context-rV2narXG.js.map → agents-context-w03Lz_6n.js.map} +1 -1
  131. package/build/server/chunks/client-WFEvX_be.js +33 -0
  132. package/build/server/chunks/client-WFEvX_be.js.map +1 -0
  133. package/build/server/chunks/{conversation-view-memory-BZguFlTt.js → conversation-view-memory-B0PllWRL.js} +2 -2
  134. package/build/server/chunks/{conversation-view-memory-BZguFlTt.js.map → conversation-view-memory-B0PllWRL.js.map} +1 -1
  135. package/build/server/chunks/{edit-workspace-context-B1nYQ5hD.js → edit-workspace-context-BEioXKWB.js} +2 -2
  136. package/build/server/chunks/{edit-workspace-context-B1nYQ5hD.js.map → edit-workspace-context-BEioXKWB.js.map} +1 -1
  137. package/build/server/chunks/error.svelte-BjIDhioc.js +15 -0
  138. package/build/server/chunks/{error.svelte-DA-yulF5.js.map → error.svelte-BjIDhioc.js.map} +1 -1
  139. package/build/server/chunks/{index-CSpGrMM2.js → index-rHCWxLFZ.js} +5 -5
  140. package/build/server/chunks/{index-CSpGrMM2.js.map → index-rHCWxLFZ.js.map} +1 -1
  141. package/build/server/chunks/{index-server-DsYEXu5n.js → index-server-BMxlf3ZC.js} +2 -2
  142. package/build/server/chunks/{index-server-DsYEXu5n.js.map → index-server-BMxlf3ZC.js.map} +1 -1
  143. package/build/server/chunks/index2-DdOgqE2_.js +24 -0
  144. package/build/server/chunks/index2-DdOgqE2_.js.map +1 -0
  145. package/build/server/chunks/{index3-qVi61CNf.js → index3-DC4GTqD1.js} +2 -2
  146. package/build/server/chunks/{index3-qVi61CNf.js.map → index3-DC4GTqD1.js.map} +1 -1
  147. package/build/server/chunks/{root-CDJwhpIB.js → root-UeqiktJA.js} +118 -4
  148. package/build/server/chunks/root-UeqiktJA.js.map +1 -0
  149. package/build/server/chunks/{state.svelte-DT7cgvTK.js → state.svelte-CLOYXiU6.js} +3 -3
  150. package/build/server/chunks/{state.svelte-DT7cgvTK.js.map → state.svelte-CLOYXiU6.js.map} +1 -1
  151. package/build/server/index.js +10 -11
  152. package/build/server/index.js.map +1 -1
  153. package/build/server/manifest.js +14 -14
  154. package/build/server/manifest.js.map +1 -1
  155. package/package.json +2 -2
  156. package/src/backend/tests/academy-json.spec.ts +65 -0
  157. package/src/backend/tests/academy.ts +83 -46
  158. package/src/backend/tests/data.ts +6 -2
  159. package/src/backend/tests/emulate-agents.ts +61 -17
  160. package/src/backend/tests/json-field-match.ts +73 -0
  161. package/src/backend/tests/router.ts +5 -1
  162. package/src/backend/tests/suite.spec.ts +54 -0
  163. package/src/backend/tests/suite.ts +20 -11
  164. package/build/client/_app/immutable/assets/0.CH-WU4JN.css +0 -1
  165. package/build/client/_app/immutable/assets/0.CH-WU4JN.css.br +0 -0
  166. package/build/client/_app/immutable/assets/0.CH-WU4JN.css.gz +0 -0
  167. package/build/client/_app/immutable/chunks/CFkSbzDR.js.br +0 -0
  168. package/build/client/_app/immutable/chunks/CFkSbzDR.js.gz +0 -0
  169. package/build/client/_app/immutable/chunks/DQmjMBKm.js +0 -1
  170. package/build/client/_app/immutable/chunks/DQmjMBKm.js.br +0 -0
  171. package/build/client/_app/immutable/chunks/DQmjMBKm.js.gz +0 -0
  172. package/build/client/_app/immutable/chunks/DUdfYZrb.js +0 -3
  173. package/build/client/_app/immutable/chunks/DUdfYZrb.js.br +0 -0
  174. package/build/client/_app/immutable/chunks/DUdfYZrb.js.gz +0 -0
  175. package/build/client/_app/immutable/chunks/W6dJ5sed.js +0 -1
  176. package/build/client/_app/immutable/chunks/W6dJ5sed.js.br +0 -0
  177. package/build/client/_app/immutable/chunks/W6dJ5sed.js.gz +0 -0
  178. package/build/client/_app/immutable/entry/app.o-KFh_Cb.js.br +0 -0
  179. package/build/client/_app/immutable/entry/app.o-KFh_Cb.js.gz +0 -0
  180. package/build/client/_app/immutable/entry/start.B5RrntSX.js +0 -1
  181. package/build/client/_app/immutable/entry/start.B5RrntSX.js.br +0 -2
  182. package/build/client/_app/immutable/entry/start.B5RrntSX.js.gz +0 -0
  183. package/build/client/_app/immutable/nodes/0.DzAzg3lC.js.br +0 -0
  184. package/build/client/_app/immutable/nodes/0.DzAzg3lC.js.gz +0 -0
  185. package/build/client/_app/immutable/nodes/1.CgJnX42R.js.br +0 -0
  186. package/build/client/_app/immutable/nodes/1.CgJnX42R.js.gz +0 -0
  187. package/build/client/_app/immutable/nodes/10.BiOIt6Na.js +0 -7
  188. package/build/client/_app/immutable/nodes/10.BiOIt6Na.js.br +0 -0
  189. package/build/client/_app/immutable/nodes/10.BiOIt6Na.js.gz +0 -0
  190. package/build/client/_app/immutable/nodes/17.Dh0U5ZLs.js.br +0 -0
  191. package/build/client/_app/immutable/nodes/17.Dh0U5ZLs.js.gz +0 -0
  192. package/build/client/_app/immutable/nodes/18.CgBjPl-X.js +0 -11
  193. package/build/client/_app/immutable/nodes/18.CgBjPl-X.js.br +0 -0
  194. package/build/client/_app/immutable/nodes/18.CgBjPl-X.js.gz +0 -0
  195. package/build/client/_app/immutable/nodes/2.CUHzTabj.js.br +0 -0
  196. package/build/client/_app/immutable/nodes/2.CUHzTabj.js.gz +0 -0
  197. package/build/client/_app/immutable/nodes/3.fG_Roq0i.js.br +0 -0
  198. package/build/client/_app/immutable/nodes/3.fG_Roq0i.js.gz +0 -0
  199. package/build/client/_app/immutable/nodes/4.CLFkMI6C.js.br +0 -0
  200. package/build/client/_app/immutable/nodes/4.CLFkMI6C.js.gz +0 -0
  201. package/build/client/_app/immutable/nodes/5.DTNqvnb6.js.br +0 -0
  202. package/build/client/_app/immutable/nodes/5.DTNqvnb6.js.gz +0 -0
  203. package/build/client/_app/immutable/nodes/6.4xYVoDHd.js.br +0 -0
  204. package/build/client/_app/immutable/nodes/6.4xYVoDHd.js.gz +0 -0
  205. package/build/client/_app/immutable/nodes/8.CRjSjXfT.js.br +0 -0
  206. package/build/client/_app/immutable/nodes/8.CRjSjXfT.js.gz +0 -0
  207. package/build/client/_app/immutable/nodes/9.KqgZD6ts.js +0 -2
  208. package/build/client/_app/immutable/nodes/9.KqgZD6ts.js.br +0 -0
  209. package/build/client/_app/immutable/nodes/9.KqgZD6ts.js.gz +0 -0
  210. package/build/server/chunks/ChatStepTrace-CqqIjRLU.js.map +0 -1
  211. package/build/server/chunks/MockGenerator-GEpXTgX0.js +0 -117
  212. package/build/server/chunks/MockGenerator-GEpXTgX0.js.map +0 -1
  213. package/build/server/chunks/Modal-DtVsRmmO.js.map +0 -1
  214. package/build/server/chunks/_layout.svelte-B-CkD4a0.js.map +0 -1
  215. package/build/server/chunks/_layout.svelte-BBFCF-xw.js.map +0 -1
  216. package/build/server/chunks/_layout.svelte-C5eqrEen.js.map +0 -1
  217. package/build/server/chunks/_layout.svelte-cPhmW5bZ.js.map +0 -1
  218. package/build/server/chunks/_page.svelte-0J2xaeyC.js.map +0 -1
  219. package/build/server/chunks/_page.svelte-BgoX8Y6N.js.map +0 -1
  220. package/build/server/chunks/_page.svelte-Cxh9_vUl.js.map +0 -1
  221. package/build/server/chunks/_page.svelte-_sXVlB3C.js.map +0 -1
  222. package/build/server/chunks/error.svelte-DA-yulF5.js +0 -15
  223. package/build/server/chunks/events-BQ65tUJo.js +0 -120
  224. package/build/server/chunks/events-BQ65tUJo.js.map +0 -1
  225. package/build/server/chunks/index2-DO4B3D-P.js +0 -52
  226. package/build/server/chunks/index2-DO4B3D-P.js.map +0 -1
  227. package/build/server/chunks/root-CDJwhpIB.js.map +0 -1
@@ -1,13 +1,16 @@
1
- import { p as head, n as ensure_array_like, o as attr_class, j as escape_html, az as clsx, k as attr, q as attr_style, l as derived, ay as attributes } from './index-CSpGrMM2.js';
2
- import { B as Button } from './Button-BLigKkGG.js';
3
- import { M as Modal } from './Modal-DtVsRmmO.js';
4
- import { I as Input } from './Input-OdQKNdS6.js';
5
- import { o as onDestroy } from './index-server-DsYEXu5n.js';
6
- import { I as Icon$1, h as html } from './Icon-CXFHkSIr.js';
7
- import { C as ContextEditor } from './ContextEditor-D5B2mO8Z.js';
1
+ import { q as head, o as ensure_array_like, p as attr_class, k as escape_html, az as clsx, l as attr, r as attr_style, m as derived, ay as attributes } from './index-rHCWxLFZ.js';
2
+ import { B as Button } from './Button-oIUr2LUP.js';
3
+ import { M as Modal } from './Modal-CAzVFw5x.js';
4
+ import { I as Input } from './Input-R74u4cO5.js';
5
+ import { o as onDestroy } from './index-server-BMxlf3ZC.js';
6
+ import { I as Icon$1, h as html } from './Icon-DadJPtVP.js';
7
+ import './client-WFEvX_be.js';
8
+ import { C as ContextEditor } from './ContextEditor-ngRBOJVc.js';
8
9
  import { t as trpc } from './trpc-client-D8L6vWf4.js';
9
- import { g as getEditWorkspaceContext } from './edit-workspace-context-B1nYQ5hD.js';
10
- import './events-BQ65tUJo.js';
10
+ import { g as getEditWorkspaceContext } from './edit-workspace-context-BEioXKWB.js';
11
+ import './root-UeqiktJA.js';
12
+ import './state.svelte-CLOYXiU6.js';
13
+ import './index3-DC4GTqD1.js';
11
14
  import 'js-yaml';
12
15
  import './shared-server-DaWdgxVh.js';
13
16
  import '@trpc/client';
@@ -1431,6 +1434,7 @@ function RunResultActions($$renderer, $$props) {
1431
1434
  let {
1432
1435
  actionsDisabled = false,
1433
1436
  addTestDisabled = false,
1437
+ showAnalyze = true,
1434
1438
  analyzeDisabled = false
1435
1439
  } = $$props;
1436
1440
  let addStatus = "idle";
@@ -1439,7 +1443,14 @@ function RunResultActions($$renderer, $$props) {
1439
1443
  let $$settled = true;
1440
1444
  let $$inner_renderer;
1441
1445
  function $$render_inner($$renderer3) {
1442
- $$renderer3.push(`<div class="mt-1 flex flex-wrap items-center gap-x-2 gap-y-1"><button type="button"${attr("disabled", actionsDisabled || addTestDisabled || addStatus === "adding", 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">${escape_html("Add test")}</button> <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> <button type="button"${attr("disabled", actionsDisabled, 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">Regenerate</button> <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">See variants</button> <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">Prompt</button> <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">Conversation</button> <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">Context</button> <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">Debug</button></div> `);
1446
+ $$renderer3.push(`<div class="mt-1 flex flex-wrap items-center gap-x-2 gap-y-1"><button type="button"${attr("disabled", actionsDisabled || addTestDisabled || addStatus === "adding", 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">${escape_html("Add test")}</button> `);
1447
+ if (showAnalyze) {
1448
+ $$renderer3.push("<!--[0-->");
1449
+ $$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>`);
1450
+ } else {
1451
+ $$renderer3.push("<!--[-1-->");
1452
+ }
1453
+ $$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">See variants</button> <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">Prompt</button> <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">Conversation</button> <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">Context</button> <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">Debug</button></div> `);
1443
1454
  {
1444
1455
  $$renderer3.push("<!--[-1-->");
1445
1456
  }
@@ -1661,15 +1672,16 @@ function _page($$renderer, $$props) {
1661
1672
  id,
1662
1673
  pinned: test.pinned === "TRUE",
1663
1674
  scenario: test.scenario,
1664
- step: test.step ?? "",
1675
+ step: test.step || "main",
1676
+ evaluation_mode: test.evaluation_mode === "json-deep-equal" ? "json-deep-equal" : "assertion",
1677
+ context_mode: test.context_mode === "replace" ? "replace" : "merge",
1665
1678
  author: test.author || "",
1666
1679
  assertion_type: test.assertion_type,
1667
1680
  assertion_value: test.assertion_value,
1668
1681
  conversation: test.conversation,
1669
1682
  expected_output: test.expected_output,
1670
- conversation_ui: buildConversationEditorValue(test.conversation || "", test.expected_output || ""),
1683
+ conversation_ui: buildConversationEditorValue(test.conversation || "", test.expected_output || "", test.step || "main", test.evaluation_mode === "json-deep-equal"),
1671
1684
  timeout: Number(test.timeout),
1672
- capture_mode: test.capture_mode === "final" ? "final" : "immediate",
1673
1685
  similarity_threshold: Number(test.similarity_threshold),
1674
1686
  context: JSON.stringify(test.context),
1675
1687
  mocks: JSON.stringify(test.mocks || {}),
@@ -1747,22 +1759,44 @@ function _page($$renderer, $$props) {
1747
1759
  return {};
1748
1760
  }
1749
1761
  }
1750
- const roleMatch = (line) => line.match(/^\s*(agent|assistant|user|system)\s*:\s*(.*)$/i);
1751
- function formatExpectedAsAgentBlock(expected) {
1752
- const trimmed = String(expected ?? "").trimEnd();
1753
- if (!trimmed) return "";
1754
- if (/^\s*(agent|assistant)\s*:/i.test(trimmed)) return trimmed;
1755
- return `Agent: ${trimmed}`;
1762
+ const roleMatch = (line) => line.match(/^\s*(agent|assistant|user|system|step)\s*:\s*(.*)$/i);
1763
+ function expectedBlockRole(step) {
1764
+ return step === "main" ? "agent" : "step";
1765
+ }
1766
+ function formatJsonForDisplay(value) {
1767
+ try {
1768
+ const parsed = JSON.parse(value);
1769
+ const formatted = JSON.stringify(parsed, null, 2);
1770
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
1771
+ return formatted;
1772
+ }
1773
+ return formatted.split("\n").slice(1, -1).map((line) => line.startsWith(" ") ? line.slice(2) : line).join("\n");
1774
+ } catch {
1775
+ return value;
1776
+ }
1777
+ }
1778
+ function formatRunOutput(text, errors, jsonMode) {
1779
+ const value = String(text || errors || "—");
1780
+ return jsonMode ? formatJsonForDisplay(value) : value;
1756
1781
  }
1757
- function buildConversationEditorValue(conversation, expected) {
1782
+ function formatExpectedBlock(expected, step, jsonMode) {
1783
+ let value = String(expected ?? "").trimEnd();
1784
+ if (!value) return "";
1785
+ if (jsonMode) value = formatJsonForDisplay(value);
1786
+ const label = expectedBlockRole(step) === "agent" ? "Agent" : "Step";
1787
+ if (jsonMode) return value ? `${label}:
1788
+ ${value}` : `${label}:`;
1789
+ return `${label}: ${value}`;
1790
+ }
1791
+ function buildConversationEditorValue(conversation, expected, step, jsonMode) {
1758
1792
  const conv = String(conversation ?? "").trimEnd();
1759
- const expectedBlock = formatExpectedAsAgentBlock(expected);
1793
+ const expectedBlock = formatExpectedBlock(expected, step, jsonMode);
1760
1794
  if (!expectedBlock) return conv;
1761
1795
  if (!conv) return expectedBlock;
1762
1796
  return `${conv}
1763
1797
  ${expectedBlock}`;
1764
1798
  }
1765
- function parseExpectedFromConversationEditor(text) {
1799
+ function parseExpectedFromConversationEditor(text, row) {
1766
1800
  const raw = String(text ?? "");
1767
1801
  const lines = raw.split(/\r?\n/);
1768
1802
  const blocks = [];
@@ -1779,8 +1813,8 @@ ${expectedBlock}`;
1779
1813
  }
1780
1814
  if (current) blocks.push({ ...current, endLine: lines.length });
1781
1815
  const expectedBlock = blocks.at(-1);
1782
- const canExtractExpected = expectedBlock?.role === "agent";
1783
- const valid = canExtractExpected;
1816
+ const requiredRole = expectedBlockRole(row.step);
1817
+ const canExtractExpected = expectedBlock?.role === requiredRole;
1784
1818
  if (!canExtractExpected || !expectedBlock) {
1785
1819
  return { valid: false, expected: "", conversation: raw.trimEnd() };
1786
1820
  }
@@ -1788,14 +1822,29 @@ ${expectedBlock}`;
1788
1822
  const first = expectedLines[0] ?? "";
1789
1823
  const m = roleMatch(first);
1790
1824
  const firstContent = m ? m[2] ?? "" : "";
1791
- const expected = [firstContent, ...expectedLines.slice(1)].join("\n").trimEnd();
1825
+ const editorExpected = [firstContent, ...expectedLines.slice(1)].join("\n").trimEnd();
1826
+ let expected = editorExpected;
1827
+ let valid = true;
1828
+ if (row.evaluation_mode === "json-deep-equal") {
1829
+ const candidate = /^\s*[\[{]/.test(editorExpected) ? editorExpected : `{
1830
+ ${editorExpected}
1831
+ }`;
1832
+ try {
1833
+ const parsed = JSON.parse(candidate);
1834
+ valid = typeof parsed === "object" && parsed !== null;
1835
+ expected = valid ? JSON.stringify(parsed, null, 2) : candidate;
1836
+ } catch {
1837
+ valid = false;
1838
+ expected = candidate;
1839
+ }
1840
+ }
1792
1841
  const conversation = lines.slice(0, expectedBlock.startLine - 1).join("\n").trimEnd();
1793
1842
  return {
1794
1843
  valid,
1795
1844
  expected,
1796
1845
  conversation,
1797
1846
  highlight: {
1798
- startLine: expectedBlock.startLine,
1847
+ startLine: row.evaluation_mode === "json-deep-equal" ? Math.min(expectedBlock.endLine, expectedBlock.startLine + 1) : expectedBlock.startLine,
1799
1848
  endLine: expectedBlock.endLine
1800
1849
  }
1801
1850
  };
@@ -1932,7 +1981,7 @@ ${expectedBlock}`;
1932
1981
  const each_array_1 = ensure_array_like(historyTests());
1933
1982
  for (let $$index_2 = 0, $$length = each_array_1.length; $$index_2 < $$length; $$index_2++) {
1934
1983
  let t = each_array_1[$$index_2];
1935
- const expectedInfo = parseExpectedFromConversationEditor(t.conversation_ui);
1984
+ const expectedInfo = parseExpectedFromConversationEditor(t.conversation_ui, t);
1936
1985
  const isExpanded = historyExpandedTestIdSet().has(t.id);
1937
1986
  $$renderer4.push(`<div class="border-b border-rc-gray-700 p-2"${attr("data-id", t.id)}><div class="grid grid-cols-[2.25rem,1fr] gap-2"><div class="flex flex-col items-center gap-1 pt-1">`);
1938
1987
  Icon($$renderer4, {
@@ -1974,13 +2023,14 @@ ${expectedBlock}`;
1974
2023
  $$renderer4.push(`<!--]--></div> `);
1975
2024
  if (isExpanded) {
1976
2025
  $$renderer4.push("<!--[0-->");
1977
- $$renderer4.push(`<div class="flex flex-col gap-2 p-2"><input class="card-input-subtle pointer-events-none svelte-rdft55" type="text" placeholder="Author"${attr("value", t.author || "")} readonly=""/> <div class="flex items-center gap-2"><input class="rc-input w-44 svelte-rdft55" type="text"${attr("value", assertionLabel(t.assertion_type))} readonly=""/> <input class="rc-input min-w-0 flex-1 svelte-rdft55" type="text"${attr("value", t.assertion_value)} placeholder="Assertion value" readonly=""/></div> <div class="flex flex-wrap items-center gap-3"><div class="inline-flex h-8 overflow-hidden rounded border border-rc-gray-600 bg-rc-gray-900 p-0.5" aria-label="Capture mode"><button type="button"${attr_class(
1978
- `min-w-20 rounded px-2 text-sm font-semibold transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${t.capture_mode === "immediate" ? "bg-rc-gray-500 text-rc-gray-100" : "text-rc-gray-300"}`,
1979
- "svelte-rdft55"
1980
- )}${attr("aria-pressed", t.capture_mode === "immediate")} disabled="">Immediate</button> <button type="button"${attr_class(
1981
- `min-w-16 rounded px-2 text-sm font-semibold transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${t.capture_mode === "final" ? "bg-rc-gray-500 text-rc-gray-100" : "text-rc-gray-300"}`,
1982
- "svelte-rdft55"
1983
- )}${attr("aria-pressed", t.capture_mode === "final")} disabled="">Final</button></div> `);
2026
+ $$renderer4.push(`<div class="flex flex-col gap-2 p-2"><input class="card-input-subtle pointer-events-none svelte-rdft55" type="text" placeholder="Author"${attr("value", t.author || "")} readonly=""/> `);
2027
+ if (t.evaluation_mode !== "json-deep-equal") {
2028
+ $$renderer4.push("<!--[0-->");
2029
+ $$renderer4.push(`<div class="flex items-center gap-2"><input class="rc-input w-44 svelte-rdft55" type="text"${attr("value", assertionLabel(t.assertion_type))} readonly=""/> <input class="rc-input min-w-0 flex-1 svelte-rdft55" type="text"${attr("value", t.assertion_value)} placeholder="Assertion value" readonly=""/></div>`);
2030
+ } else {
2031
+ $$renderer4.push("<!--[-1-->");
2032
+ }
2033
+ $$renderer4.push(`<!--]--> <div class="flex flex-wrap items-center gap-3">`);
1984
2034
  Button($$renderer4, {
1985
2035
  variant: "secondary",
1986
2036
  size: "small",
@@ -2007,7 +2057,7 @@ ${expectedBlock}`;
2007
2057
  {
2008
2058
  startLine: expectedInfo.highlight.startLine,
2009
2059
  endLine: expectedInfo.highlight.endLine,
2010
- className: "test-expected-output"
2060
+ className: t.evaluation_mode === "json-deep-equal" ? "test-expected-json-output" : "test-expected-output"
2011
2061
  }
2012
2062
  ] : void 0,
2013
2063
  height: 220
@@ -2027,7 +2077,7 @@ ${expectedBlock}`;
2027
2077
  const each_array_2 = ensure_array_like(t.result.runs);
2028
2078
  for (let $$index_1 = 0, $$length2 = each_array_2.length; $$index_1 < $$length2; $$index_1++) {
2029
2079
  let run = each_array_2[$$index_1];
2030
- $$renderer4.push(`<div class="flex flex-col gap-2"><div${attr_class(`w-full whitespace-pre-wrap break-words rounded-lg px-3 py-2 text-rc-gray-100 ${run.success ? "bg-rc-green-700 backdrop-blur-md" : ""}`, "svelte-rdft55")}${attr_style(!run.success ? "background-color: rgb(156 80 80)" : "")}>${escape_html(run.text || run.errors || "")}</div> <div${attr_class(`flex w-full flex-col gap-x-4 whitespace-pre-wrap break-words ${run.success ? "text-rc-green-200" : "text-rc-red-800"}`, "svelte-rdft55")}><div class="flex items-center gap-0">`);
2080
+ $$renderer4.push(`<div class="flex flex-col gap-2"><div${attr_class(`w-full whitespace-pre-wrap break-words rounded-lg px-3 py-2 text-rc-gray-100 ${t.evaluation_mode === "json-deep-equal" ? "font-mono text-sm leading-6" : ""} ${run.success ? "bg-rc-green-700 backdrop-blur-md" : ""}`, "svelte-rdft55")}${attr_style(!run.success ? "background-color: rgb(156 80 80)" : "")}>${escape_html(formatRunOutput(run.text, run.errors, t.evaluation_mode === "json-deep-equal"))}</div> <div${attr_class(`flex w-full flex-col gap-x-4 whitespace-pre-wrap break-words ${run.success ? "text-rc-green-200" : "text-rc-red-800"}`, "svelte-rdft55")}><div class="flex items-center gap-0">`);
2031
2081
  if (run.success) {
2032
2082
  $$renderer4.push("<!--[0-->");
2033
2083
  Icon$1($$renderer4, {
@@ -2054,6 +2104,7 @@ ${expectedBlock}`;
2054
2104
  region: region(),
2055
2105
  actionsDisabled: isSaving(),
2056
2106
  addTestDisabled: !run.text.trim(),
2107
+ showAnalyze: t.evaluation_mode !== "json-deep-equal",
2057
2108
  analyzeDisabled: analyzeRunning
2058
2109
  });
2059
2110
  $$renderer4.push(`<!----></div></div>`);
@@ -2147,4 +2198,4 @@ ${expectedBlock}`;
2147
2198
  }
2148
2199
 
2149
2200
  export { _page as default };
2150
- //# sourceMappingURL=_page.svelte-_sXVlB3C.js.map
2201
+ //# sourceMappingURL=_page.svelte-BTKQMuSz.js.map