@recombine-ai/platform 0.8.0-test.2 → 0.8.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 (284) hide show
  1. package/build/agent/experiment.d.ts +21 -0
  2. package/build/agent/experiment.d.ts.map +1 -0
  3. package/build/agent/experiment.js +29 -0
  4. package/build/agent/index.d.ts +2 -0
  5. package/build/agent/index.d.ts.map +1 -1
  6. package/build/agent/index.js +1 -0
  7. package/build/bosun/index.d.ts +1 -0
  8. package/build/bosun/index.d.ts.map +1 -1
  9. package/build/bosun/interfaces/agent.d.ts +1 -0
  10. package/build/bosun/interfaces/agent.d.ts.map +1 -1
  11. package/build/bosun/interfaces/project.d.ts +25 -0
  12. package/build/bosun/interfaces/project.d.ts.map +1 -0
  13. package/build/bosun/interfaces/project.js +1 -0
  14. package/build/bosun-app/backend/server.js +252 -60
  15. package/build/bosun-app/backend/server.js.map +2 -2
  16. package/build/bosun-app/frontend/client/_app/immutable/chunks/{CR5IRTqC.js → AmpxVxY6.js} +1 -1
  17. package/build/bosun-app/frontend/client/_app/immutable/chunks/AmpxVxY6.js.br +0 -0
  18. package/build/bosun-app/frontend/client/_app/immutable/chunks/AmpxVxY6.js.gz +0 -0
  19. package/build/bosun-app/frontend/client/_app/immutable/chunks/{DjDpMqch.js → B-5g3xS8.js} +20 -20
  20. package/build/bosun-app/frontend/client/_app/immutable/chunks/B-5g3xS8.js.br +0 -0
  21. package/build/bosun-app/frontend/client/_app/immutable/chunks/B-5g3xS8.js.gz +0 -0
  22. package/build/bosun-app/frontend/client/_app/immutable/chunks/{BBk8_Xpk.js → B1MxGo6p.js} +1 -1
  23. package/build/bosun-app/frontend/client/_app/immutable/chunks/B1MxGo6p.js.br +0 -0
  24. package/build/bosun-app/frontend/client/_app/immutable/chunks/B1MxGo6p.js.gz +0 -0
  25. package/build/bosun-app/frontend/client/_app/immutable/chunks/{joiJcRPz.js → BqH4VDQz.js} +1 -1
  26. package/build/bosun-app/frontend/client/_app/immutable/chunks/BqH4VDQz.js.br +0 -0
  27. package/build/bosun-app/frontend/client/_app/immutable/chunks/BqH4VDQz.js.gz +0 -0
  28. package/build/bosun-app/frontend/client/_app/immutable/chunks/{B3N9vN4_.js → CQvDMTjY.js} +1 -1
  29. package/build/bosun-app/frontend/client/_app/immutable/chunks/CQvDMTjY.js.br +0 -0
  30. package/build/bosun-app/frontend/client/_app/immutable/chunks/CQvDMTjY.js.gz +0 -0
  31. package/build/bosun-app/frontend/client/_app/immutable/chunks/{C0rPkxmP.js → CVZT6n14.js} +1 -1
  32. package/build/bosun-app/frontend/client/_app/immutable/chunks/CVZT6n14.js.br +0 -0
  33. package/build/bosun-app/frontend/client/_app/immutable/chunks/CVZT6n14.js.gz +0 -0
  34. package/build/bosun-app/frontend/client/_app/immutable/chunks/{D89azUgT.js → CWPN78Jk.js} +1 -1
  35. package/build/bosun-app/frontend/client/_app/immutable/chunks/CWPN78Jk.js.br +0 -0
  36. package/build/bosun-app/frontend/client/_app/immutable/chunks/CWPN78Jk.js.gz +0 -0
  37. package/build/bosun-app/frontend/client/_app/immutable/chunks/{ouMvMh56.js → CkstLsmI.js} +1 -1
  38. package/build/bosun-app/frontend/client/_app/immutable/chunks/CkstLsmI.js.br +0 -0
  39. package/build/bosun-app/frontend/client/_app/immutable/chunks/CkstLsmI.js.gz +0 -0
  40. package/build/bosun-app/frontend/client/_app/immutable/chunks/{C3cROXCy.js → CuwQtXBl.js} +1 -1
  41. package/build/bosun-app/frontend/client/_app/immutable/chunks/CuwQtXBl.js.br +0 -0
  42. package/build/bosun-app/frontend/client/_app/immutable/chunks/CuwQtXBl.js.gz +0 -0
  43. package/build/bosun-app/frontend/client/_app/immutable/chunks/{BEdAvgYp.js → D9YsE4-8.js} +1 -1
  44. package/build/bosun-app/frontend/client/_app/immutable/chunks/D9YsE4-8.js.br +0 -0
  45. package/build/bosun-app/frontend/client/_app/immutable/chunks/D9YsE4-8.js.gz +0 -0
  46. package/build/bosun-app/frontend/client/_app/immutable/chunks/{Diqx_kju.js → DK7_9Rr4.js} +1 -1
  47. package/build/bosun-app/frontend/client/_app/immutable/chunks/DK7_9Rr4.js.br +3 -0
  48. package/build/bosun-app/frontend/client/_app/immutable/chunks/DK7_9Rr4.js.gz +0 -0
  49. package/build/bosun-app/frontend/client/_app/immutable/chunks/{Bwiy-Sk7.js → O3fJLrRA.js} +1 -1
  50. package/build/bosun-app/frontend/client/_app/immutable/chunks/O3fJLrRA.js.br +0 -0
  51. package/build/bosun-app/frontend/client/_app/immutable/chunks/O3fJLrRA.js.gz +0 -0
  52. package/build/bosun-app/frontend/client/_app/immutable/chunks/{DJnDF3d9.js → dL_jwANm.js} +1 -1
  53. package/build/bosun-app/frontend/client/_app/immutable/chunks/dL_jwANm.js.br +0 -0
  54. package/build/bosun-app/frontend/client/_app/immutable/chunks/dL_jwANm.js.gz +0 -0
  55. package/build/bosun-app/frontend/client/_app/immutable/chunks/w7_NKWP1.js +3 -0
  56. package/build/bosun-app/frontend/client/_app/immutable/chunks/w7_NKWP1.js.br +0 -0
  57. package/build/bosun-app/frontend/client/_app/immutable/chunks/w7_NKWP1.js.gz +0 -0
  58. package/build/bosun-app/frontend/client/_app/immutable/entry/{app.DYrvpbQq.js → app.Bq7QRKSZ.js} +2 -2
  59. package/build/bosun-app/frontend/client/_app/immutable/entry/app.Bq7QRKSZ.js.br +0 -0
  60. package/build/bosun-app/frontend/client/_app/immutable/entry/app.Bq7QRKSZ.js.gz +0 -0
  61. package/build/bosun-app/frontend/client/_app/immutable/entry/start.Ct26YHfm.js +1 -0
  62. package/build/bosun-app/frontend/client/_app/immutable/entry/start.Ct26YHfm.js.br +0 -0
  63. package/build/bosun-app/frontend/client/_app/immutable/entry/start.Ct26YHfm.js.gz +0 -0
  64. package/build/bosun-app/frontend/client/_app/immutable/nodes/{0.DXIuJQso.js → 0.CIBqOQKB.js} +1 -1
  65. package/build/bosun-app/frontend/client/_app/immutable/nodes/0.CIBqOQKB.js.br +0 -0
  66. package/build/bosun-app/frontend/client/_app/immutable/nodes/0.CIBqOQKB.js.gz +0 -0
  67. package/build/bosun-app/frontend/client/_app/immutable/nodes/{1.CsX5iplT.js → 1.Dv78wD0F.js} +1 -1
  68. package/build/bosun-app/frontend/client/_app/immutable/nodes/1.Dv78wD0F.js.br +0 -0
  69. package/build/bosun-app/frontend/client/_app/immutable/nodes/1.Dv78wD0F.js.gz +0 -0
  70. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.Htrpia-u.js +35 -0
  71. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.Htrpia-u.js.br +0 -0
  72. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.Htrpia-u.js.gz +0 -0
  73. package/build/bosun-app/frontend/client/_app/immutable/nodes/{17.BIO8m3DR.js → 17.DmVfus5a.js} +1 -1
  74. package/build/bosun-app/frontend/client/_app/immutable/nodes/17.DmVfus5a.js.br +0 -0
  75. package/build/bosun-app/frontend/client/_app/immutable/nodes/17.DmVfus5a.js.gz +0 -0
  76. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.DvJVYeXp.js +11 -0
  77. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.DvJVYeXp.js.br +0 -0
  78. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.DvJVYeXp.js.gz +0 -0
  79. package/build/bosun-app/frontend/client/_app/immutable/nodes/2.tyuQRxDb.js +35 -0
  80. package/build/bosun-app/frontend/client/_app/immutable/nodes/2.tyuQRxDb.js.br +0 -0
  81. package/build/bosun-app/frontend/client/_app/immutable/nodes/2.tyuQRxDb.js.gz +0 -0
  82. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.B0NtJamE.js +1 -0
  83. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.B0NtJamE.js.br +0 -0
  84. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.B0NtJamE.js.gz +0 -0
  85. package/build/bosun-app/frontend/client/_app/immutable/nodes/{4.BzhaMuo5.js → 4.DKTRRObl.js} +1 -1
  86. package/build/bosun-app/frontend/client/_app/immutable/nodes/4.DKTRRObl.js.br +0 -0
  87. package/build/bosun-app/frontend/client/_app/immutable/nodes/4.DKTRRObl.js.gz +0 -0
  88. package/build/bosun-app/frontend/client/_app/immutable/nodes/{5.BG8ylHWg.js → 5.D9SClLPX.js} +1 -1
  89. package/build/bosun-app/frontend/client/_app/immutable/nodes/5.D9SClLPX.js.br +0 -0
  90. package/build/bosun-app/frontend/client/_app/immutable/nodes/5.D9SClLPX.js.gz +0 -0
  91. package/build/bosun-app/frontend/client/_app/immutable/nodes/{6.DkDEANSN.js → 6.DdAs7BvU.js} +1 -1
  92. package/build/bosun-app/frontend/client/_app/immutable/nodes/6.DdAs7BvU.js.br +0 -0
  93. package/build/bosun-app/frontend/client/_app/immutable/nodes/6.DdAs7BvU.js.gz +0 -0
  94. package/build/bosun-app/frontend/client/_app/immutable/nodes/{8.3fEbISY6.js → 8.DNEyJy0a.js} +1 -1
  95. package/build/bosun-app/frontend/client/_app/immutable/nodes/8.DNEyJy0a.js.br +0 -0
  96. package/build/bosun-app/frontend/client/_app/immutable/nodes/8.DNEyJy0a.js.gz +0 -0
  97. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.DcyIUk-F.js +2 -0
  98. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.DcyIUk-F.js.br +0 -0
  99. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.DcyIUk-F.js.gz +0 -0
  100. package/build/bosun-app/frontend/client/_app/version.json +1 -1
  101. package/build/bosun-app/frontend/client/_app/version.json.br +0 -0
  102. package/build/bosun-app/frontend/client/_app/version.json.gz +0 -0
  103. package/build/bosun-app/frontend/handler.js +4 -4
  104. package/build/bosun-app/frontend/index.js +4 -4
  105. package/build/bosun-app/frontend/server/chunks/chunks/{ChatStepTrace.js-VTtwaKGp.js → ChatStepTrace.js-BY0y3Vbb.js} +3 -1
  106. package/build/bosun-app/frontend/server/chunks/chunks/ChatStepTrace.js-BY0y3Vbb.js.map +1 -0
  107. package/build/bosun-app/frontend/server/chunks/chunks/{internal.js-B7oaNMJQ.js → internal.js-CTNBeiir.js} +2 -2
  108. package/build/bosun-app/frontend/server/chunks/chunks/{internal.js-B7oaNMJQ.js.map → internal.js-CTNBeiir.js.map} +1 -1
  109. package/build/bosun-app/frontend/server/chunks/chunks/{source-selection.js-D5B8gfq2.js → source-selection.js-DFpObbhz.js} +3 -1
  110. package/build/bosun-app/frontend/server/chunks/chunks/source-selection.js-DFpObbhz.js.map +1 -0
  111. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/{_layout.svelte.js-B2wHKJV7.js → _layout.svelte.js-b9Q5TFEZ.js} +134 -24
  112. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/_layout.svelte.js-b9Q5TFEZ.js.map +1 -0
  113. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/roleplay/{_page.svelte.js-DDcIjgZD.js → _page.svelte.js-Chv8ybaj.js} +10 -4
  114. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/roleplay/_page.svelte.js-Chv8ybaj.js.map +1 -0
  115. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/tests/{_page.svelte.js-UVUg89-t.js → _page.svelte.js-Dkst1C_3.js} +3 -1
  116. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/tests/_page.svelte.js-Dkst1C_3.js.map +1 -0
  117. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/latency/{_page.svelte.js-SjAtxtA0.js → _page.svelte.js-DFZznMhQ.js} +2 -2
  118. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/latency/{_page.svelte.js-SjAtxtA0.js.map → _page.svelte.js-DFZznMhQ.js.map} +1 -1
  119. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/traces/{_page.svelte.js-DiZKDT2v.js → _page.svelte.js-Bxdn8vG5.js} +7 -3
  120. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/traces/_page.svelte.js-Bxdn8vG5.js.map +1 -0
  121. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/{_layout.svelte.js-CfkCQ2Th.js → _layout.svelte.js-DhdYiNVL.js} +61 -9
  122. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_layout.svelte.js-DhdYiNVL.js.map +1 -0
  123. package/build/bosun-app/frontend/server/chunks/{handler-D9QLNo8w.js → handler-kZm9DU-v.js} +3 -3
  124. package/build/bosun-app/frontend/server/chunks/{handler-D9QLNo8w.js.map → handler-kZm9DU-v.js.map} +1 -1
  125. package/build/bosun-app/frontend/server/chunks/{index.js-B0gyG8Jr.js → index.js-BYV_PeV-.js} +2 -2
  126. package/build/bosun-app/frontend/server/chunks/{index.js-B0gyG8Jr.js.map → index.js-BYV_PeV-.js.map} +1 -1
  127. package/build/bosun-app/frontend/server/chunks/{manifest.js-BJwjpIJ3.js → manifest.js-DknJwtFc.js} +14 -14
  128. package/build/bosun-app/frontend/server/chunks/{manifest.js-BJwjpIJ3.js.map → manifest.js-DknJwtFc.js.map} +1 -1
  129. package/build/bosun-app/frontend/server/chunks/nodes/{0.js-CzIAnGix.js → 0.js-B947oA7Q.js} +2 -2
  130. package/build/bosun-app/frontend/server/chunks/nodes/{0.js-CzIAnGix.js.map → 0.js-B947oA7Q.js.map} +1 -1
  131. package/build/bosun-app/frontend/server/chunks/nodes/{1.js-dcMNeOrp.js → 1.js-D-bO8SBw.js} +2 -2
  132. package/build/bosun-app/frontend/server/chunks/nodes/{1.js-dcMNeOrp.js.map → 1.js-D-bO8SBw.js.map} +1 -1
  133. package/build/bosun-app/frontend/server/chunks/nodes/{10.js-BJiZIzMv.js → 10.js-BPINRsAS.js} +3 -3
  134. package/build/bosun-app/frontend/server/chunks/nodes/{10.js-BJiZIzMv.js.map → 10.js-BPINRsAS.js.map} +1 -1
  135. package/build/bosun-app/frontend/server/chunks/nodes/{17.js-D2Tp888g.js → 17.js-BvBqWcLx.js} +3 -3
  136. package/build/bosun-app/frontend/server/chunks/nodes/{17.js-D2Tp888g.js.map → 17.js-BvBqWcLx.js.map} +1 -1
  137. package/build/bosun-app/frontend/server/chunks/nodes/{18.js-u_njdfH1.js → 18.js-BEfVGplP.js} +3 -3
  138. package/build/bosun-app/frontend/server/chunks/nodes/{18.js-u_njdfH1.js.map → 18.js-BEfVGplP.js.map} +1 -1
  139. package/build/bosun-app/frontend/server/chunks/nodes/{2.js-CmkWii-m.js → 2.js-XaMsKwVG.js} +3 -3
  140. package/build/bosun-app/frontend/server/chunks/nodes/{2.js-CmkWii-m.js.map → 2.js-XaMsKwVG.js.map} +1 -1
  141. package/build/bosun-app/frontend/server/chunks/nodes/{3.js-CEcqDZwI.js → 3.js-9Rmo9ovG.js} +3 -3
  142. package/build/bosun-app/frontend/server/chunks/nodes/{3.js-CEcqDZwI.js.map → 3.js-9Rmo9ovG.js.map} +1 -1
  143. package/build/bosun-app/frontend/server/chunks/nodes/{4.js-DoWmHMTv.js → 4.js-DHzNp2kw.js} +2 -2
  144. package/build/bosun-app/frontend/server/chunks/nodes/{4.js-DoWmHMTv.js.map → 4.js-DHzNp2kw.js.map} +1 -1
  145. package/build/bosun-app/frontend/server/chunks/nodes/{5.js-hFh1mvzS.js → 5.js-BtTetd8U.js} +2 -2
  146. package/build/bosun-app/frontend/server/chunks/nodes/{5.js-hFh1mvzS.js.map → 5.js-BtTetd8U.js.map} +1 -1
  147. package/build/bosun-app/frontend/server/chunks/nodes/{6.js-C9qNqJg2.js → 6.js-dyYItn4O.js} +2 -2
  148. package/build/bosun-app/frontend/server/chunks/nodes/{6.js-C9qNqJg2.js.map → 6.js-dyYItn4O.js.map} +1 -1
  149. package/build/bosun-app/frontend/server/chunks/nodes/{8.js-Btfm0qj5.js → 8.js-D5qfNA9r.js} +2 -2
  150. package/build/bosun-app/frontend/server/chunks/nodes/{8.js-Btfm0qj5.js.map → 8.js-D5qfNA9r.js.map} +1 -1
  151. package/build/bosun-app/frontend/server/chunks/nodes/{9.js-Ca7GzK3u.js → 9.js-CxI4tPnx.js} +3 -3
  152. package/build/bosun-app/frontend/server/chunks/nodes/{9.js-Ca7GzK3u.js.map → 9.js-CxI4tPnx.js.map} +1 -1
  153. package/build/call-control/call-control.d.ts.map +1 -1
  154. package/build/call-control/call-control.js +0 -2
  155. package/build/call-control/index.d.ts +0 -1
  156. package/build/call-control/index.d.ts.map +1 -1
  157. package/build/call-control/index.js +0 -1
  158. package/build/call-control/schemas.generated.d.ts +2 -1
  159. package/build/call-control/schemas.generated.d.ts.map +1 -1
  160. package/build/call-control/schemas.generated.js +4 -4
  161. package/build/call-control/types.d.ts +156 -3
  162. package/build/call-control/types.d.ts.map +1 -1
  163. package/build/call-control/types.js +3 -3
  164. package/build/engine/interfaces/other.d.ts +1 -1
  165. package/build/engine/interfaces/other.d.ts.map +1 -1
  166. package/build/telescope/api.d.ts.map +1 -1
  167. package/build/telescope/api.js +8 -2
  168. package/build/telescope/index.d.ts +1 -1
  169. package/build/telescope/index.d.ts.map +1 -1
  170. package/build/telescope/interfaces/conversation.d.ts +8 -0
  171. package/build/telescope/interfaces/conversation.d.ts.map +1 -1
  172. package/build/telescope/interfaces/event-tracer.d.ts +8 -0
  173. package/build/telescope/interfaces/event-tracer.d.ts.map +1 -1
  174. package/build/telescope/interfaces/storage.d.ts +2 -2
  175. package/build/telescope/interfaces/storage.d.ts.map +1 -1
  176. package/build/telescope/interfaces/telescope.d.ts +1 -0
  177. package/build/telescope/interfaces/telescope.d.ts.map +1 -1
  178. package/build/telescope/stub-storage.d.ts +2 -2
  179. package/build/telescope/stub-storage.d.ts.map +1 -1
  180. package/build/telescope/stub-storage.js +3 -8
  181. package/build/telescope/tracers/event-tracer.d.ts.map +1 -1
  182. package/build/telescope/tracers/event-tracer.js +5 -0
  183. package/build/text-agent-handlers/incoming-message.js +1 -1
  184. package/build/text-agent-handlers/index.d.ts +1 -0
  185. package/build/text-agent-handlers/index.d.ts.map +1 -1
  186. package/build/text-agent-handlers/index.js +1 -0
  187. package/build/text-agent-handlers/instrument.d.ts +1 -0
  188. package/build/text-agent-handlers/instrument.d.ts.map +1 -1
  189. package/build/text-agent-handlers/instrument.js +6 -2
  190. package/build/text-agent-handlers/jobs-handler.js +1 -1
  191. package/build/text-agent-handlers/jobs.d.ts +1 -0
  192. package/build/text-agent-handlers/jobs.d.ts.map +1 -1
  193. package/build/text-agent-handlers/message-acceptor.d.ts +4 -0
  194. package/build/text-agent-handlers/message-acceptor.d.ts.map +1 -1
  195. package/build/text-agent-handlers/message-acceptor.js +8 -2
  196. package/build/text-agent-handlers/ports.d.ts +2 -1
  197. package/build/text-agent-handlers/ports.d.ts.map +1 -1
  198. package/build/text-agent-handlers/ports.js +6 -5
  199. package/build/text-agent-handlers/variant-scheduler.d.ts +3 -0
  200. package/build/text-agent-handlers/variant-scheduler.d.ts.map +1 -0
  201. package/build/text-agent-handlers/variant-scheduler.js +9 -0
  202. package/build/voice-agent-api/index.d.ts +2 -0
  203. package/build/voice-agent-api/index.d.ts.map +1 -1
  204. package/build/voice-agent-api/index.js +1 -0
  205. package/build/voice-agent-api/route-resolver.d.ts +19 -0
  206. package/build/voice-agent-api/route-resolver.d.ts.map +1 -0
  207. package/build/voice-agent-api/route-resolver.js +57 -0
  208. package/build/voice-agent-api/voice-http.d.ts +8 -4
  209. package/build/voice-agent-api/voice-http.d.ts.map +1 -1
  210. package/build/voice-agent-api/voice-http.js +31 -32
  211. package/package.json +1 -1
  212. package/build/bosun-app/frontend/client/_app/immutable/chunks/B3N9vN4_.js.br +0 -0
  213. package/build/bosun-app/frontend/client/_app/immutable/chunks/B3N9vN4_.js.gz +0 -0
  214. package/build/bosun-app/frontend/client/_app/immutable/chunks/BBk8_Xpk.js.br +0 -0
  215. package/build/bosun-app/frontend/client/_app/immutable/chunks/BBk8_Xpk.js.gz +0 -0
  216. package/build/bosun-app/frontend/client/_app/immutable/chunks/BEdAvgYp.js.br +0 -0
  217. package/build/bosun-app/frontend/client/_app/immutable/chunks/BEdAvgYp.js.gz +0 -0
  218. package/build/bosun-app/frontend/client/_app/immutable/chunks/BaP19BGR.js +0 -3
  219. package/build/bosun-app/frontend/client/_app/immutable/chunks/BaP19BGR.js.br +0 -0
  220. package/build/bosun-app/frontend/client/_app/immutable/chunks/BaP19BGR.js.gz +0 -0
  221. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bwiy-Sk7.js.br +0 -0
  222. package/build/bosun-app/frontend/client/_app/immutable/chunks/Bwiy-Sk7.js.gz +0 -0
  223. package/build/bosun-app/frontend/client/_app/immutable/chunks/C0rPkxmP.js.br +0 -0
  224. package/build/bosun-app/frontend/client/_app/immutable/chunks/C0rPkxmP.js.gz +0 -0
  225. package/build/bosun-app/frontend/client/_app/immutable/chunks/C3cROXCy.js.br +0 -0
  226. package/build/bosun-app/frontend/client/_app/immutable/chunks/C3cROXCy.js.gz +0 -0
  227. package/build/bosun-app/frontend/client/_app/immutable/chunks/CR5IRTqC.js.br +0 -0
  228. package/build/bosun-app/frontend/client/_app/immutable/chunks/CR5IRTqC.js.gz +0 -0
  229. package/build/bosun-app/frontend/client/_app/immutable/chunks/D89azUgT.js.br +0 -0
  230. package/build/bosun-app/frontend/client/_app/immutable/chunks/D89azUgT.js.gz +0 -0
  231. package/build/bosun-app/frontend/client/_app/immutable/chunks/DJnDF3d9.js.br +0 -0
  232. package/build/bosun-app/frontend/client/_app/immutable/chunks/DJnDF3d9.js.gz +0 -0
  233. package/build/bosun-app/frontend/client/_app/immutable/chunks/Diqx_kju.js.br +0 -1
  234. package/build/bosun-app/frontend/client/_app/immutable/chunks/Diqx_kju.js.gz +0 -0
  235. package/build/bosun-app/frontend/client/_app/immutable/chunks/DjDpMqch.js.br +0 -0
  236. package/build/bosun-app/frontend/client/_app/immutable/chunks/DjDpMqch.js.gz +0 -0
  237. package/build/bosun-app/frontend/client/_app/immutable/chunks/joiJcRPz.js.br +0 -0
  238. package/build/bosun-app/frontend/client/_app/immutable/chunks/joiJcRPz.js.gz +0 -0
  239. package/build/bosun-app/frontend/client/_app/immutable/chunks/ouMvMh56.js.br +0 -0
  240. package/build/bosun-app/frontend/client/_app/immutable/chunks/ouMvMh56.js.gz +0 -0
  241. package/build/bosun-app/frontend/client/_app/immutable/entry/app.DYrvpbQq.js.br +0 -0
  242. package/build/bosun-app/frontend/client/_app/immutable/entry/app.DYrvpbQq.js.gz +0 -0
  243. package/build/bosun-app/frontend/client/_app/immutable/entry/start.ZRGJFDNa.js +0 -1
  244. package/build/bosun-app/frontend/client/_app/immutable/entry/start.ZRGJFDNa.js.br +0 -0
  245. package/build/bosun-app/frontend/client/_app/immutable/entry/start.ZRGJFDNa.js.gz +0 -0
  246. package/build/bosun-app/frontend/client/_app/immutable/nodes/0.DXIuJQso.js.br +0 -0
  247. package/build/bosun-app/frontend/client/_app/immutable/nodes/0.DXIuJQso.js.gz +0 -0
  248. package/build/bosun-app/frontend/client/_app/immutable/nodes/1.CsX5iplT.js.br +0 -0
  249. package/build/bosun-app/frontend/client/_app/immutable/nodes/1.CsX5iplT.js.gz +0 -0
  250. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.D6gFo5CY.js +0 -35
  251. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.D6gFo5CY.js.br +0 -0
  252. package/build/bosun-app/frontend/client/_app/immutable/nodes/10.D6gFo5CY.js.gz +0 -0
  253. package/build/bosun-app/frontend/client/_app/immutable/nodes/17.BIO8m3DR.js.br +0 -0
  254. package/build/bosun-app/frontend/client/_app/immutable/nodes/17.BIO8m3DR.js.gz +0 -0
  255. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.D4L67K6t.js +0 -11
  256. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.D4L67K6t.js.br +0 -0
  257. package/build/bosun-app/frontend/client/_app/immutable/nodes/18.D4L67K6t.js.gz +0 -0
  258. package/build/bosun-app/frontend/client/_app/immutable/nodes/2.6RK8LtTD.js +0 -35
  259. package/build/bosun-app/frontend/client/_app/immutable/nodes/2.6RK8LtTD.js.br +0 -0
  260. package/build/bosun-app/frontend/client/_app/immutable/nodes/2.6RK8LtTD.js.gz +0 -0
  261. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.CbcbRLFb.js +0 -1
  262. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.CbcbRLFb.js.br +0 -0
  263. package/build/bosun-app/frontend/client/_app/immutable/nodes/3.CbcbRLFb.js.gz +0 -0
  264. package/build/bosun-app/frontend/client/_app/immutable/nodes/4.BzhaMuo5.js.br +0 -0
  265. package/build/bosun-app/frontend/client/_app/immutable/nodes/4.BzhaMuo5.js.gz +0 -0
  266. package/build/bosun-app/frontend/client/_app/immutable/nodes/5.BG8ylHWg.js.br +0 -0
  267. package/build/bosun-app/frontend/client/_app/immutable/nodes/5.BG8ylHWg.js.gz +0 -0
  268. package/build/bosun-app/frontend/client/_app/immutable/nodes/6.DkDEANSN.js.br +0 -0
  269. package/build/bosun-app/frontend/client/_app/immutable/nodes/6.DkDEANSN.js.gz +0 -0
  270. package/build/bosun-app/frontend/client/_app/immutable/nodes/8.3fEbISY6.js.br +0 -0
  271. package/build/bosun-app/frontend/client/_app/immutable/nodes/8.3fEbISY6.js.gz +0 -0
  272. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.CoX3jzbC.js +0 -2
  273. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.CoX3jzbC.js.br +0 -0
  274. package/build/bosun-app/frontend/client/_app/immutable/nodes/9.CoX3jzbC.js.gz +0 -0
  275. package/build/bosun-app/frontend/server/chunks/chunks/ChatStepTrace.js-VTtwaKGp.js.map +0 -1
  276. package/build/bosun-app/frontend/server/chunks/chunks/source-selection.js-D5B8gfq2.js.map +0 -1
  277. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/_layout.svelte.js-B2wHKJV7.js.map +0 -1
  278. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/roleplay/_page.svelte.js-DDcIjgZD.js.map +0 -1
  279. package/build/bosun-app/frontend/server/chunks/entries/pages/edit/_agent_/tests/_page.svelte.js-UVUg89-t.js.map +0 -1
  280. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/traces/_page.svelte.js-DiZKDT2v.js.map +0 -1
  281. package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_layout.svelte.js-CfkCQ2Th.js.map +0 -1
  282. package/build/call-control/voice-agent-config.d.ts +0 -155
  283. package/build/call-control/voice-agent-config.d.ts.map +0 -1
  284. package/build/call-control/voice-agent-config.js +0 -53
@@ -34571,16 +34571,18 @@ function createAgents(dispatcher, statePersistence, contextPersistence) {
34571
34571
  let basePath = "";
34572
34572
  let currentAgent = "";
34573
34573
  let currentRegion = null;
34574
+ let currentVariant = null;
34574
34575
  let currentStateId = null;
34575
34576
  let lastLoadedImportNonce = null;
34576
- function getAgentCacheKey(agentId, region) {
34577
- return region ? `${agentId}.${region}` : agentId;
34577
+ function getAgentCacheKey(agentId, region, variant = null) {
34578
+ const key = region ? `${agentId}.${region}` : agentId;
34579
+ return variant ? `${key}.${variant}` : key;
34578
34580
  }
34579
34581
  async function getCurrentAgent() {
34580
34582
  if (!currentAgent) {
34581
34583
  currentAgent = Object.keys(factories)[0];
34582
34584
  }
34583
- const cacheKey = getAgentCacheKey(currentAgent, currentRegion);
34585
+ const cacheKey = getAgentCacheKey(currentAgent, currentRegion, currentVariant);
34584
34586
  let agent = agents[cacheKey];
34585
34587
  if (!agent) {
34586
34588
  const factory = factories[currentAgent];
@@ -34594,6 +34596,7 @@ function createAgents(dispatcher, statePersistence, contextPersistence) {
34594
34596
  ...dispatcher,
34595
34597
  agentId: cacheKey,
34596
34598
  region: currentRegion,
34599
+ variantId: currentVariant,
34597
34600
  contextPersistence,
34598
34601
  statePersistence,
34599
34602
  factory,
@@ -34623,12 +34626,12 @@ function createAgents(dispatcher, statePersistence, contextPersistence) {
34623
34626
  await api.load();
34624
34627
  const agentId = currentAgent || Object.keys(factories)[0];
34625
34628
  if (!agentId) return;
34626
- const cacheKey = getAgentCacheKey(agentId, currentRegion);
34629
+ const cacheKey = getAgentCacheKey(agentId, currentRegion, currentVariant);
34627
34630
  delete agents[cacheKey];
34628
34631
  delete agentStates[cacheKey];
34629
- await api.select(agentId, currentStateId, currentRegion);
34632
+ await api.select(agentId, currentStateId, currentRegion, {}, currentVariant);
34630
34633
  },
34631
- select: async (agentId, stateId, region, promptOverrides = {}) => {
34634
+ select: async (agentId, stateId, region, promptOverrides = {}, variant) => {
34632
34635
  console.log(
34633
34636
  "createAgents, select; agents: ",
34634
34637
  Object.keys(agents),
@@ -34637,6 +34640,7 @@ function createAgents(dispatcher, statePersistence, contextPersistence) {
34637
34640
  );
34638
34641
  currentAgent = agentId;
34639
34642
  currentRegion = region || null;
34643
+ currentVariant = variant || null;
34640
34644
  const agent = await getCurrentAgent();
34641
34645
  agent.setPromptOverrides({});
34642
34646
  await dispatcher.sendAgentSelected({
@@ -34695,8 +34699,8 @@ function createAgents(dispatcher, statePersistence, contextPersistence) {
34695
34699
  handleMessage: async (message) => {
34696
34700
  currentStateId = await (await getCurrentAgent()).handleMessage(message);
34697
34701
  },
34698
- hangup: async (agentId, region) => {
34699
- const cacheKey = getAgentCacheKey(agentId, region);
34702
+ hangup: async (agentId, region, variant = null) => {
34703
+ const cacheKey = getAgentCacheKey(agentId, region, variant);
34700
34704
  const agent = agents[cacheKey];
34701
34705
  if (!agent) {
34702
34706
  throw new Error(`Cannot hangup: cannot find agent: ${cacheKey}`);
@@ -34807,6 +34811,7 @@ async function loadAgent(props) {
34807
34811
  stepTracer,
34808
34812
  stepRegistry,
34809
34813
  logger,
34814
+ variantId: props.variantId ?? void 0,
34810
34815
  apiCallTracer,
34811
34816
  conversationalTracer,
34812
34817
  scheduler,
@@ -35316,7 +35321,8 @@ async function oldServer(ws) {
35316
35321
  msg.event.agent,
35317
35322
  msg.event.state,
35318
35323
  msg.event.region,
35319
- msg.event.promptOverrides
35324
+ msg.event.promptOverrides,
35325
+ msg.event.variant
35320
35326
  );
35321
35327
  break;
35322
35328
  case "prompt-overrides-updated":
@@ -35338,7 +35344,11 @@ async function oldServer(ws) {
35338
35344
  await agents.selectStep(msg.event.step);
35339
35345
  break;
35340
35346
  case "hangup":
35341
- await agents.hangup(msg.event.agentId, msg.event.region);
35347
+ await agents.hangup(
35348
+ msg.event.agentId,
35349
+ msg.event.region,
35350
+ msg.event.variant ?? null
35351
+ );
35342
35352
  break;
35343
35353
  default:
35344
35354
  console.error(`Unknown event type: ${msg.event.type}`);
@@ -46164,7 +46174,7 @@ import { createContext as createContext3 } from "@recombine-ai/platform/bosun";
46164
46174
  import "@recombine-ai/platform/engine";
46165
46175
  import "@recombine-ai/platform/telescope";
46166
46176
  async function generateReplyVariants(props) {
46167
- const { agentId, region, states, count, context, promptOverrides = {} } = props;
46177
+ const { agentId, region, variantId, states, count, context, promptOverrides = {} } = props;
46168
46178
  if (!Number.isFinite(count) || count <= 0) return [];
46169
46179
  const targetState = states.at(-1);
46170
46180
  if (!targetState) throw new Error("No saved roleplay state found for variants");
@@ -46187,6 +46197,7 @@ async function generateReplyVariants(props) {
46187
46197
  index,
46188
46198
  factory,
46189
46199
  region,
46200
+ variantId,
46190
46201
  context,
46191
46202
  prevState,
46192
46203
  statesById,
@@ -46257,7 +46268,17 @@ function createVariantState(prev, index) {
46257
46268
  };
46258
46269
  }
46259
46270
  async function generateSingleReplyVariant(props) {
46260
- const { index, factory, region, context, prevState, statesById, message, promptOverrides } = props;
46271
+ const {
46272
+ index,
46273
+ factory,
46274
+ region,
46275
+ variantId,
46276
+ context,
46277
+ prevState,
46278
+ statesById,
46279
+ message,
46280
+ promptOverrides
46281
+ } = props;
46261
46282
  const state = createVariantState(prevState?.id ?? null, index);
46262
46283
  const scheduleSeed = clone3(prevState?.schedule ?? {});
46263
46284
  const log = (entry) => {
@@ -46316,6 +46337,7 @@ async function generateSingleReplyVariant(props) {
46316
46337
  stepTracer,
46317
46338
  stepRegistry,
46318
46339
  logger,
46340
+ variantId,
46319
46341
  apiCallTracer,
46320
46342
  conversationalTracer,
46321
46343
  scheduler,
@@ -46432,10 +46454,16 @@ function createRolePlayRouter(t3) {
46432
46454
  external_exports.object({
46433
46455
  agentId: AgentIdSchema,
46434
46456
  step: external_exports.string().trim().min(1).max(512),
46435
- prompt: external_exports.string().max(1e6)
46457
+ prompt: external_exports.string().max(1e6),
46458
+ variant: external_exports.string().trim().min(1).max(128).nullable().optional()
46436
46459
  })
46437
46460
  ).mutation(async ({ input }) => {
46438
- await persistPromptUpdate(input.agentId, input.step, input.prompt);
46461
+ await persistPromptUpdate(
46462
+ input.agentId,
46463
+ input.step,
46464
+ input.prompt,
46465
+ input.variant ?? void 0
46466
+ );
46439
46467
  return { ok: true };
46440
46468
  }),
46441
46469
  suggestPromptEdit: t3.procedure.input(
@@ -46443,10 +46471,16 @@ function createRolePlayRouter(t3) {
46443
46471
  agentId: AgentIdSchema,
46444
46472
  step: external_exports.string().trim().min(1).max(512),
46445
46473
  request: external_exports.string().trim().min(1).max(1e5),
46446
- progressId: external_exports.string().uuid()
46474
+ progressId: external_exports.string().uuid(),
46475
+ variant: external_exports.string().trim().min(1).max(128).nullable().optional()
46447
46476
  })
46448
46477
  ).mutation(async ({ input }) => {
46449
- const originalPrompt = await readEditablePrompt(input.agentId, input.step);
46478
+ const variantId = input.variant ?? void 0;
46479
+ const originalPrompt = await readEditablePrompt(
46480
+ input.agentId,
46481
+ input.step,
46482
+ variantId
46483
+ );
46450
46484
  const suggestedPrompt = await suggestPromptEdit({
46451
46485
  request: input.request,
46452
46486
  originalPrompt,
@@ -46456,6 +46490,7 @@ function createRolePlayRouter(t3) {
46456
46490
  const proposal = createPromptEditProposal({
46457
46491
  agentId: input.agentId,
46458
46492
  step: input.step,
46493
+ variantId,
46459
46494
  originalPrompt,
46460
46495
  suggestedPrompt
46461
46496
  });
@@ -46466,7 +46501,12 @@ function createRolePlayRouter(t3) {
46466
46501
  acceptPromptEdit: t3.procedure.input(external_exports.object({ id: external_exports.string().uuid() })).mutation(async ({ input }) => {
46467
46502
  const proposal = getPromptEditProposal(input.id);
46468
46503
  if (!proposal) throw new Error("This prompt suggestion is no longer available");
46469
- await persistPromptUpdate(proposal.agentId, proposal.step, proposal.suggestedPrompt);
46504
+ await persistPromptUpdate(
46505
+ proposal.agentId,
46506
+ proposal.step,
46507
+ proposal.suggestedPrompt,
46508
+ proposal.variantId
46509
+ );
46470
46510
  deletePromptEditProposal(proposal.id);
46471
46511
  return { ok: true, prompt: proposal.suggestedPrompt };
46472
46512
  }),
@@ -46475,10 +46515,16 @@ function createRolePlayRouter(t3) {
46475
46515
  external_exports.object({
46476
46516
  agentId: AgentIdSchema,
46477
46517
  step: external_exports.string().trim().min(1).max(512),
46478
- schema: external_exports.string().max(1e6)
46518
+ schema: external_exports.string().max(1e6),
46519
+ variant: external_exports.string().trim().min(1).max(128).nullable().optional()
46479
46520
  })
46480
46521
  ).mutation(async ({ input }) => {
46481
- await persistSchemaUpdate(input.agentId, input.step, input.schema);
46522
+ await persistSchemaUpdate(
46523
+ input.agentId,
46524
+ input.step,
46525
+ input.schema,
46526
+ input.variant ?? void 0
46527
+ );
46482
46528
  bumpImportNonce();
46483
46529
  return {
46484
46530
  ok: true,
@@ -46488,10 +46534,15 @@ function createRolePlayRouter(t3) {
46488
46534
  userMessageHistory: t3.procedure.input(
46489
46535
  external_exports.object({
46490
46536
  agentId: AgentIdSchema,
46491
- region: external_exports.string().trim().min(1).max(128).nullable().optional()
46537
+ region: external_exports.string().trim().min(1).max(128).nullable().optional(),
46538
+ variant: external_exports.string().trim().min(1).max(128).nullable().optional()
46492
46539
  })
46493
46540
  ).query(async ({ input }) => {
46494
- const stateKey = resolveAgentStateKey(input.agentId, input.region ?? null);
46541
+ const stateKey = resolveAgentStateKey(
46542
+ input.agentId,
46543
+ input.region ?? null,
46544
+ input.variant ?? null
46545
+ );
46495
46546
  const filePath = resolveAgentHistoryFile(stateKey);
46496
46547
  const states = await loadJsonArray(filePath);
46497
46548
  const byText = /* @__PURE__ */ new Map();
@@ -46527,18 +46578,24 @@ function createRolePlayRouter(t3) {
46527
46578
  external_exports.object({
46528
46579
  agentId: AgentIdSchema,
46529
46580
  region: external_exports.string().trim().min(1).max(128).nullable().optional(),
46581
+ variant: external_exports.string().trim().min(1).max(128).nullable().optional(),
46530
46582
  context: external_exports.record(external_exports.string(), external_exports.unknown()).nullable().optional(),
46531
46583
  promptOverrides: external_exports.record(external_exports.string(), external_exports.string().max(1e6)).optional(),
46532
46584
  count: external_exports.number().int().min(1).max(9).default(9)
46533
46585
  })
46534
46586
  ).mutation(async ({ input }) => {
46535
- const stateKey = resolveAgentStateKey(input.agentId, input.region ?? null);
46587
+ const stateKey = resolveAgentStateKey(
46588
+ input.agentId,
46589
+ input.region ?? null,
46590
+ input.variant ?? null
46591
+ );
46536
46592
  const rawStates = await fsStatePersistence.load(stateKey);
46537
46593
  const states = Array.isArray(rawStates) ? rawStates : [];
46538
46594
  const context = input.context ?? (await fsContextPersistence.load("default") || {});
46539
46595
  const variants = await generateReplyVariants({
46540
46596
  agentId: input.agentId,
46541
46597
  region: input.region ?? null,
46598
+ variantId: input.variant ?? void 0,
46542
46599
  states,
46543
46600
  count: input.count,
46544
46601
  context,
@@ -46557,13 +46614,18 @@ function createRolePlayRouter(t3) {
46557
46614
  external_exports.object({
46558
46615
  agentId: AgentIdSchema,
46559
46616
  region: external_exports.string().trim().min(1).max(128).nullable().optional(),
46617
+ variant: external_exports.string().trim().min(1).max(128).nullable().optional(),
46560
46618
  state: external_exports.object({
46561
46619
  history: external_exports.unknown(),
46562
46620
  schedule: external_exports.unknown()
46563
46621
  })
46564
46622
  })
46565
46623
  ).mutation(async ({ input }) => {
46566
- const stateKey = resolveAgentStateKey(input.agentId, input.region ?? null);
46624
+ const stateKey = resolveAgentStateKey(
46625
+ input.agentId,
46626
+ input.region ?? null,
46627
+ input.variant ?? null
46628
+ );
46567
46629
  const rawStates = await fsStatePersistence.load(stateKey);
46568
46630
  const states = Array.isArray(rawStates) ? rawStates : [];
46569
46631
  const latestState = states.at(-1);
@@ -46588,8 +46650,9 @@ function createRolePlayRouter(t3) {
46588
46650
  })
46589
46651
  });
46590
46652
  }
46591
- function resolveAgentStateKey(agentId, region) {
46592
- return region ? `${agentId}.${region}` : agentId;
46653
+ function resolveAgentStateKey(agentId, region, variant) {
46654
+ const key = region ? `${agentId}.${region}` : agentId;
46655
+ return variant ? `${key}.${variant}` : key;
46593
46656
  }
46594
46657
  function resolveAgentHistoryFile(agentId) {
46595
46658
  const baseDir = getProjectDataDir("history");
@@ -46614,23 +46677,23 @@ async function loadJsonArray(filePath) {
46614
46677
  }
46615
46678
  var noop2 = () => void 0;
46616
46679
  var noopAsync = () => Promise.resolve();
46617
- async function persistPromptUpdate(agentId, stepName, prompt) {
46618
- const { basePath, steps } = await loadAgentSteps(agentId);
46680
+ async function persistPromptUpdate(agentId, stepName, prompt, variantId) {
46681
+ const { basePath, steps } = await loadAgentSteps(agentId, variantId);
46619
46682
  const targetStep = steps.find((step) => step?.name === stepName);
46620
46683
  if (!targetStep || targetStep?.prompt?.type !== "file") return;
46621
46684
  const promptPath = path12.resolve(basePath, targetStep.prompt.path);
46622
46685
  await fs6.promises.writeFile(promptPath, prompt, "utf-8");
46623
46686
  }
46624
- async function readEditablePrompt(agentId, stepName) {
46625
- const { steps } = await loadAgentSteps(agentId);
46687
+ async function readEditablePrompt(agentId, stepName, variantId) {
46688
+ const { steps } = await loadAgentSteps(agentId, variantId);
46626
46689
  const targetStep = steps.find((step) => step?.name === stepName);
46627
46690
  if (!targetStep || targetStep?.prompt?.type !== "file") {
46628
46691
  throw new Error(`Step '${stepName}' does not have an editable file prompt`);
46629
46692
  }
46630
46693
  return targetStep.prompt.content();
46631
46694
  }
46632
- async function persistSchemaUpdate(agentId, stepName, schema2) {
46633
- const { basePath, steps } = await loadAgentSteps(agentId);
46695
+ async function persistSchemaUpdate(agentId, stepName, schema2, variantId) {
46696
+ const { basePath, steps } = await loadAgentSteps(agentId, variantId);
46634
46697
  const targetStep = steps.find((step) => step?.name === stepName);
46635
46698
  if (!targetStep || targetStep?.prompt?.type !== "file" || !targetStep.schema) {
46636
46699
  throw new Error(`Step '${stepName}' does not have an editable file schema`);
@@ -46640,7 +46703,7 @@ async function persistSchemaUpdate(agentId, stepName, schema2) {
46640
46703
  await fs6.promises.access(schemaPath);
46641
46704
  await validateAndReplaceSchemaFile(schemaPath, schema2);
46642
46705
  }
46643
- async function loadAgentSteps(agentId) {
46706
+ async function loadAgentSteps(agentId, variantId) {
46644
46707
  const { factory, basePath } = await getAgentFactory(agentId);
46645
46708
  const ctx = createContext4({});
46646
46709
  const steps = [];
@@ -46652,6 +46715,7 @@ async function loadAgentSteps(agentId) {
46652
46715
  };
46653
46716
  await factory({
46654
46717
  ctx,
46718
+ variantId,
46655
46719
  getMessages: () => [],
46656
46720
  logger: asLogger(console),
46657
46721
  scheduler: {
@@ -46882,6 +46946,7 @@ async function loadAgents(props) {
46882
46946
  const {
46883
46947
  agentId,
46884
46948
  region,
46949
+ variantId,
46885
46950
  getMessages,
46886
46951
  sendMessage,
46887
46952
  stepTracer,
@@ -46942,6 +47007,7 @@ async function loadAgents(props) {
46942
47007
  stepTracer,
46943
47008
  stepRegistry,
46944
47009
  logger,
47010
+ variantId,
46945
47011
  scheduler,
46946
47012
  getMessages: () => history,
46947
47013
  async sendMessage(message) {
@@ -47346,6 +47412,7 @@ var RecombineAgentProvider = class {
47346
47412
  await loadAgents({
47347
47413
  agentId: vars.agentId,
47348
47414
  region: vars.region,
47415
+ variantId: vars.variantId,
47349
47416
  getMessages: () => conv,
47350
47417
  sendMessage: async (message) => {
47351
47418
  const m2 = typeof message === "string" ? { sender: "agent", text: message } : message;
@@ -47574,6 +47641,7 @@ async function runPromptTests(suite, selection, requestedConfig, opts) {
47574
47641
  agentId: suite.agentId,
47575
47642
  testId: String(test.id ?? ""),
47576
47643
  ...suite.region ? { region: suite.region } : {},
47644
+ ...suite.variantId ? { variantId: suite.variantId } : {},
47577
47645
  context: test.context,
47578
47646
  step: test.step,
47579
47647
  promptOverrides: opts?.promptOverrides ?? {},
@@ -48254,53 +48322,101 @@ function envTextOrDefault2(key, defaultValue) {
48254
48322
  }
48255
48323
 
48256
48324
  // ../bosun-app/src/backend/tests/router.ts
48257
- async function resolveSuiteSelection(agentId, region) {
48325
+ async function resolveSuiteSelection(agentId, region, variant) {
48326
+ const variantId = variant || void 0;
48258
48327
  const bosunApi = await getProjectBosunApi();
48259
48328
  const meta3 = bosunApi ? await bosunApi.getAgentMeta(agentId) : null;
48260
48329
  const isRegionScoped = meta3?.testScope === "region";
48261
- if (!isRegionScoped) return { suiteKey: agentId, agentId };
48330
+ if (!isRegionScoped) return { suiteKey: agentId, agentId, variantId };
48262
48331
  if (!bosunApi) {
48263
48332
  throw new Error(`Project does not export bosunApi, cannot resolve suite for '${agentId}'.`);
48264
48333
  }
48265
- const resolved = await bosunApi.resolveTestSuite({ agentId, region });
48334
+ const resolved = await bosunApi.resolveTestSuite({ agentId, region, variantId });
48266
48335
  return {
48267
48336
  suiteKey: resolved.suiteKey,
48268
48337
  agentId,
48269
- region: resolved.resolvedRegion ?? void 0
48338
+ region: resolved.resolvedRegion ?? void 0,
48339
+ variantId
48270
48340
  };
48271
48341
  }
48272
48342
  function createTestsRouter(t3) {
48273
48343
  return t3.router({
48274
- list: t3.procedure.input(external_exports.object({ agent: external_exports.string(), region: external_exports.string().nullish() })).query(async ({ input }) => {
48275
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48344
+ list: t3.procedure.input(
48345
+ external_exports.object({
48346
+ agent: external_exports.string(),
48347
+ region: external_exports.string().nullish(),
48348
+ variant: external_exports.string().nullish()
48349
+ })
48350
+ ).query(async ({ input }) => {
48351
+ const { suiteKey } = await resolveSuiteSelection(
48352
+ input.agent,
48353
+ input.region,
48354
+ input.variant
48355
+ );
48276
48356
  return loadTests(suiteKey);
48277
48357
  }),
48278
- latestResult: t3.procedure.input(external_exports.object({ agent: external_exports.string(), region: external_exports.string().nullish() })).query(async ({ input }) => {
48279
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48358
+ latestResult: t3.procedure.input(
48359
+ external_exports.object({
48360
+ agent: external_exports.string(),
48361
+ region: external_exports.string().nullish(),
48362
+ variant: external_exports.string().nullish()
48363
+ })
48364
+ ).query(async ({ input }) => {
48365
+ const { suiteKey } = await resolveSuiteSelection(
48366
+ input.agent,
48367
+ input.region,
48368
+ input.variant
48369
+ );
48280
48370
  return loadLatestResultsByTest(suiteKey);
48281
48371
  }),
48282
- runProgress: t3.procedure.input(external_exports.object({ agent: external_exports.string(), region: external_exports.string().nullish() })).query(async ({ input }) => {
48283
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48372
+ runProgress: t3.procedure.input(
48373
+ external_exports.object({
48374
+ agent: external_exports.string(),
48375
+ region: external_exports.string().nullish(),
48376
+ variant: external_exports.string().nullish()
48377
+ })
48378
+ ).query(async ({ input }) => {
48379
+ const { suiteKey } = await resolveSuiteSelection(
48380
+ input.agent,
48381
+ input.region,
48382
+ input.variant
48383
+ );
48284
48384
  return getPromptTestsProgress(suiteKey);
48285
48385
  }),
48286
- historyList: t3.procedure.input(external_exports.object({ agent: external_exports.string(), region: external_exports.string().nullish() })).query(async ({ input }) => {
48287
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48386
+ historyList: t3.procedure.input(
48387
+ external_exports.object({
48388
+ agent: external_exports.string(),
48389
+ region: external_exports.string().nullish(),
48390
+ variant: external_exports.string().nullish()
48391
+ })
48392
+ ).query(async ({ input }) => {
48393
+ const { suiteKey } = await resolveSuiteSelection(
48394
+ input.agent,
48395
+ input.region,
48396
+ input.variant
48397
+ );
48288
48398
  return listRunHistory(suiteKey);
48289
48399
  }),
48290
48400
  historyRun: t3.procedure.input(
48291
48401
  external_exports.object({
48292
48402
  agent: external_exports.string(),
48293
48403
  region: external_exports.string().nullish(),
48404
+ variant: external_exports.string().nullish(),
48294
48405
  timestamp: external_exports.string()
48295
48406
  })
48296
48407
  ).query(async ({ input }) => {
48297
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48408
+ const { suiteKey } = await resolveSuiteSelection(
48409
+ input.agent,
48410
+ input.region,
48411
+ input.variant
48412
+ );
48298
48413
  return getRunHistory(suiteKey, input.timestamp);
48299
48414
  }),
48300
48415
  resultEntry: t3.procedure.input(
48301
48416
  external_exports.object({
48302
48417
  agent: external_exports.string(),
48303
48418
  region: external_exports.string().nullish(),
48419
+ variant: external_exports.string().nullish(),
48304
48420
  testId: external_exports.string(),
48305
48421
  // TODO resultKey should be keyof of ResultEntry
48306
48422
  resultKey: external_exports.string(),
@@ -48308,7 +48424,11 @@ function createTestsRouter(t3) {
48308
48424
  timestamp: external_exports.string().optional()
48309
48425
  })
48310
48426
  ).query(async ({ input }) => {
48311
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48427
+ const { suiteKey } = await resolveSuiteSelection(
48428
+ input.agent,
48429
+ input.region,
48430
+ input.variant
48431
+ );
48312
48432
  return getResultEntry(
48313
48433
  suiteKey,
48314
48434
  input.testId,
@@ -48321,12 +48441,17 @@ function createTestsRouter(t3) {
48321
48441
  external_exports.object({
48322
48442
  agent: external_exports.string(),
48323
48443
  region: external_exports.string().nullish(),
48444
+ variant: external_exports.string().nullish(),
48324
48445
  testId: external_exports.string(),
48325
48446
  index: external_exports.number().int().nonnegative(),
48326
48447
  timestamp: external_exports.string().optional()
48327
48448
  })
48328
48449
  ).mutation(async ({ input }) => {
48329
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48450
+ const { suiteKey } = await resolveSuiteSelection(
48451
+ input.agent,
48452
+ input.region,
48453
+ input.variant
48454
+ );
48330
48455
  return analyzeRunQuotes({
48331
48456
  agent: suiteKey,
48332
48457
  testId: input.testId,
@@ -48343,28 +48468,48 @@ function createTestsRouter(t3) {
48343
48468
  ).mutation(async ({ input }) => {
48344
48469
  return findPromptIssues(input);
48345
48470
  }),
48346
- suite: t3.procedure.input(external_exports.object({ agent: external_exports.string(), region: external_exports.string().nullish() })).query(async ({ input }) => {
48347
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48471
+ suite: t3.procedure.input(
48472
+ external_exports.object({
48473
+ agent: external_exports.string(),
48474
+ region: external_exports.string().nullish(),
48475
+ variant: external_exports.string().nullish()
48476
+ })
48477
+ ).query(async ({ input }) => {
48478
+ const { suiteKey } = await resolveSuiteSelection(
48479
+ input.agent,
48480
+ input.region,
48481
+ input.variant
48482
+ );
48348
48483
  return readSuite(suiteKey);
48349
48484
  }),
48350
48485
  addTest: t3.procedure.input(
48351
48486
  external_exports.object({
48352
48487
  agent: external_exports.string(),
48353
48488
  region: external_exports.string().nullish(),
48489
+ variant: external_exports.string().nullish(),
48354
48490
  seed: TestRowSchema.omit({ id: true, order: true }).partial()
48355
48491
  })
48356
48492
  ).mutation(async ({ input }) => {
48357
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48493
+ const { suiteKey } = await resolveSuiteSelection(
48494
+ input.agent,
48495
+ input.region,
48496
+ input.variant
48497
+ );
48358
48498
  return addTest(suiteKey, input.seed);
48359
48499
  }),
48360
48500
  createPiiSanitizedTestDraft: t3.procedure.input(
48361
48501
  external_exports.object({
48362
48502
  agent: external_exports.string(),
48363
48503
  region: external_exports.string().nullish(),
48504
+ variant: external_exports.string().nullish(),
48364
48505
  seed: TraceTestSeedSchema
48365
48506
  })
48366
48507
  ).mutation(async ({ input }) => {
48367
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48508
+ const { suiteKey } = await resolveSuiteSelection(
48509
+ input.agent,
48510
+ input.region,
48511
+ input.variant
48512
+ );
48368
48513
  try {
48369
48514
  const draft = await createPiiSanitizedTestDraft({ suiteKey, seed: input.seed });
48370
48515
  return { status: "ready", ...draft };
@@ -48381,11 +48526,16 @@ function createTestsRouter(t3) {
48381
48526
  external_exports.object({
48382
48527
  agent: external_exports.string(),
48383
48528
  region: external_exports.string().nullish(),
48529
+ variant: external_exports.string().nullish(),
48384
48530
  draftId: external_exports.string().uuid(),
48385
48531
  reviewed: TraceTestReviewContentSchema
48386
48532
  })
48387
48533
  ).mutation(async ({ input }) => {
48388
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48534
+ const { suiteKey } = await resolveSuiteSelection(
48535
+ input.agent,
48536
+ input.region,
48537
+ input.variant
48538
+ );
48389
48539
  return createTestFromPiiSanitizedTestDraft({
48390
48540
  suiteKey,
48391
48541
  draftId: input.draftId,
@@ -48396,17 +48546,23 @@ function createTestsRouter(t3) {
48396
48546
  external_exports.object({
48397
48547
  agent: external_exports.string(),
48398
48548
  region: external_exports.string().nullish(),
48549
+ variant: external_exports.string().nullish(),
48399
48550
  id: external_exports.string(),
48400
48551
  patch: TestRowSchema.omit({ id: true, order: true }).partial()
48401
48552
  })
48402
48553
  ).mutation(async ({ input }) => {
48403
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48554
+ const { suiteKey } = await resolveSuiteSelection(
48555
+ input.agent,
48556
+ input.region,
48557
+ input.variant
48558
+ );
48404
48559
  return patchTest(suiteKey, input.id, input.patch);
48405
48560
  }),
48406
48561
  patchTestsBatch: t3.procedure.input(
48407
48562
  external_exports.object({
48408
48563
  agent: external_exports.string(),
48409
48564
  region: external_exports.string().nullish(),
48565
+ variant: external_exports.string().nullish(),
48410
48566
  updates: external_exports.array(
48411
48567
  external_exports.object({
48412
48568
  id: external_exports.string(),
@@ -48415,21 +48571,41 @@ function createTestsRouter(t3) {
48415
48571
  )
48416
48572
  })
48417
48573
  ).mutation(async ({ input }) => {
48418
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48574
+ const { suiteKey } = await resolveSuiteSelection(
48575
+ input.agent,
48576
+ input.region,
48577
+ input.variant
48578
+ );
48419
48579
  return patchTestsBatch(suiteKey, input.updates);
48420
48580
  }),
48421
- deleteTest: t3.procedure.input(external_exports.object({ agent: external_exports.string(), region: external_exports.string().nullish(), id: external_exports.string() })).mutation(async ({ input }) => {
48422
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48581
+ deleteTest: t3.procedure.input(
48582
+ external_exports.object({
48583
+ agent: external_exports.string(),
48584
+ region: external_exports.string().nullish(),
48585
+ variant: external_exports.string().nullish(),
48586
+ id: external_exports.string()
48587
+ })
48588
+ ).mutation(async ({ input }) => {
48589
+ const { suiteKey } = await resolveSuiteSelection(
48590
+ input.agent,
48591
+ input.region,
48592
+ input.variant
48593
+ );
48423
48594
  return deleteTest(suiteKey, input.id);
48424
48595
  }),
48425
48596
  reorder: t3.procedure.input(
48426
48597
  external_exports.object({
48427
48598
  agent: external_exports.string(),
48428
48599
  region: external_exports.string().nullish(),
48600
+ variant: external_exports.string().nullish(),
48429
48601
  order: external_exports.array(external_exports.string())
48430
48602
  })
48431
48603
  ).mutation(async ({ input }) => {
48432
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48604
+ const { suiteKey } = await resolveSuiteSelection(
48605
+ input.agent,
48606
+ input.region,
48607
+ input.variant
48608
+ );
48433
48609
  return reorderTests(suiteKey, input.order);
48434
48610
  }),
48435
48611
  runTests: t3.procedure.input(
@@ -48437,6 +48613,7 @@ function createTestsRouter(t3) {
48437
48613
  external_exports.object({
48438
48614
  agent: external_exports.string(),
48439
48615
  region: external_exports.string().nullish(),
48616
+ variant: external_exports.string().nullish(),
48440
48617
  step: external_exports.string(),
48441
48618
  scope: external_exports.enum(["pinned", "all"]).optional(),
48442
48619
  promptOverrides: external_exports.record(external_exports.string(), external_exports.string().max(1e6)).optional(),
@@ -48446,6 +48623,7 @@ function createTestsRouter(t3) {
48446
48623
  external_exports.object({
48447
48624
  agent: external_exports.string(),
48448
48625
  region: external_exports.string().nullish(),
48626
+ variant: external_exports.string().nullish(),
48449
48627
  testId: external_exports.string(),
48450
48628
  promptOverrides: external_exports.record(external_exports.string(), external_exports.string().max(1e6)).optional(),
48451
48629
  repeats: external_exports.number().int().min(1).max(500),
@@ -48453,7 +48631,11 @@ function createTestsRouter(t3) {
48453
48631
  }).strict()
48454
48632
  ])
48455
48633
  ).mutation(async ({ input }) => {
48456
- const selection = await resolveSuiteSelection(input.agent, input.region);
48634
+ const selection = await resolveSuiteSelection(
48635
+ input.agent,
48636
+ input.region,
48637
+ input.variant
48638
+ );
48457
48639
  const runConfig = { repeats: input.repeats, concurrency: input.concurrency };
48458
48640
  if ("testId" in input) {
48459
48641
  return runPromptTestsManaged(
@@ -48473,8 +48655,18 @@ function createTestsRouter(t3) {
48473
48655
  input.promptOverrides
48474
48656
  );
48475
48657
  }),
48476
- cancelRun: t3.procedure.input(external_exports.object({ agent: external_exports.string(), region: external_exports.string().nullish() })).mutation(async ({ input }) => {
48477
- const { suiteKey } = await resolveSuiteSelection(input.agent, input.region);
48658
+ cancelRun: t3.procedure.input(
48659
+ external_exports.object({
48660
+ agent: external_exports.string(),
48661
+ region: external_exports.string().nullish(),
48662
+ variant: external_exports.string().nullish()
48663
+ })
48664
+ ).mutation(async ({ input }) => {
48665
+ const { suiteKey } = await resolveSuiteSelection(
48666
+ input.agent,
48667
+ input.region,
48668
+ input.variant
48669
+ );
48478
48670
  return cancelPromptTests(suiteKey);
48479
48671
  })
48480
48672
  });