@recombine-ai/bosun 0.10.1 → 0.11.2
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.
- package/README.md +12 -0
- package/bin/bosun.js +3 -44
- package/build/client/_app/immutable/assets/0.CH-WU4JN.css +1 -0
- package/build/client/_app/immutable/assets/0.CH-WU4JN.css.br +0 -0
- package/build/client/_app/immutable/assets/0.CH-WU4JN.css.gz +0 -0
- package/build/client/_app/immutable/assets/{10.BX46PfEJ.css → 10.DIVePEYf.css} +1 -1
- package/build/client/_app/immutable/assets/10.DIVePEYf.css.br +0 -0
- package/build/client/_app/immutable/assets/10.DIVePEYf.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{Dp760K13.js → 07xNIa59.js} +2 -2
- package/build/client/_app/immutable/chunks/07xNIa59.js.br +0 -0
- package/build/client/_app/immutable/chunks/07xNIa59.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BDl2QuyN.js +1 -0
- package/build/client/_app/immutable/chunks/BDl2QuyN.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDl2QuyN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CqxCTxvJ.js → BI42X8h_.js} +1 -1
- package/build/client/_app/immutable/chunks/BI42X8h_.js.br +0 -0
- package/build/client/_app/immutable/chunks/BI42X8h_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BJTwdUYr.js +1 -0
- package/build/client/_app/immutable/chunks/BJTwdUYr.js.br +0 -0
- package/build/client/_app/immutable/chunks/BJTwdUYr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BLu86SbA.js +1 -0
- package/build/client/_app/immutable/chunks/BLu86SbA.js.br +0 -0
- package/build/client/_app/immutable/chunks/BLu86SbA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BNifnXkO.js +1 -0
- package/build/client/_app/immutable/chunks/BNifnXkO.js.br +2 -0
- package/build/client/_app/immutable/chunks/BNifnXkO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BM0jKynj.js → BPNEONy5.js} +1 -1
- package/build/client/_app/immutable/chunks/BPNEONy5.js.br +0 -0
- package/build/client/_app/immutable/chunks/BPNEONy5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B_K7D6rX.js +2 -0
- package/build/client/_app/immutable/chunks/B_K7D6rX.js.br +0 -0
- package/build/client/_app/immutable/chunks/B_K7D6rX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bj8jfBTi.js +1 -0
- package/build/client/_app/immutable/chunks/Bj8jfBTi.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bj8jfBTi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BoPSJr4b.js +1 -0
- package/build/client/_app/immutable/chunks/BoPSJr4b.js.br +0 -0
- package/build/client/_app/immutable/chunks/BoPSJr4b.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BsDZe4N6.js +1 -0
- package/build/client/_app/immutable/chunks/BsDZe4N6.js.br +0 -0
- package/build/client/_app/immutable/chunks/BsDZe4N6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CXo2BVs0.js → Buo-57fF.js} +1 -1
- package/build/client/_app/immutable/chunks/Buo-57fF.js.br +0 -0
- package/build/client/_app/immutable/chunks/Buo-57fF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{C-whEtKd.js → C39ai1md.js} +1 -1
- package/build/client/_app/immutable/chunks/C39ai1md.js.br +0 -0
- package/build/client/_app/immutable/chunks/C39ai1md.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C7he4XPB.js +1 -0
- package/build/client/_app/immutable/chunks/C7he4XPB.js.br +0 -0
- package/build/client/_app/immutable/chunks/C7he4XPB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DYhTBLDc.js → CAjPRvNs.js} +2 -2
- package/build/client/_app/immutable/chunks/CAjPRvNs.js.br +0 -0
- package/build/client/_app/immutable/chunks/CAjPRvNs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CJYOmGlC.js +1 -0
- package/build/client/_app/immutable/chunks/CJYOmGlC.js.br +0 -0
- package/build/client/_app/immutable/chunks/CJYOmGlC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CNLU4B3p.js → CMQRtcOV.js} +1 -1
- package/build/client/_app/immutable/chunks/CMQRtcOV.js.br +0 -0
- package/build/client/_app/immutable/chunks/CMQRtcOV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{HJHYLHDn.js → CPXdAKdv.js} +1 -1
- package/build/client/_app/immutable/chunks/CPXdAKdv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CPXdAKdv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CVlsAO8k.js +11 -0
- package/build/client/_app/immutable/chunks/CVlsAO8k.js.br +0 -0
- package/build/client/_app/immutable/chunks/CVlsAO8k.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DNLcpWO_.js → CX0Ekq8t.js} +1 -1
- package/build/client/_app/immutable/chunks/CX0Ekq8t.js.br +0 -0
- package/build/client/_app/immutable/chunks/CX0Ekq8t.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ca197UDq.js +1 -0
- package/build/client/_app/immutable/chunks/Ca197UDq.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ca197UDq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CaHl3dME.js +1 -0
- package/build/client/_app/immutable/chunks/CaHl3dME.js.br +0 -0
- package/build/client/_app/immutable/chunks/CaHl3dME.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cql_e8Of.js +1 -0
- package/build/client/_app/immutable/chunks/Cql_e8Of.js.br +2 -0
- package/build/client/_app/immutable/chunks/Cql_e8Of.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Dv8m1cTI.js → CxLomzuE.js} +1 -1
- package/build/client/_app/immutable/chunks/CxLomzuE.js.br +0 -0
- package/build/client/_app/immutable/chunks/{Dv8m1cTI.js.gz → CxLomzuE.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/Cyai3SOj.js +1 -0
- package/build/client/_app/immutable/chunks/Cyai3SOj.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cyai3SOj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DTXUDKH5.js → CyvQWZoe.js} +4 -4
- package/build/client/_app/immutable/chunks/CyvQWZoe.js.br +0 -0
- package/build/client/_app/immutable/chunks/CyvQWZoe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CzXNWL4m.js +1 -0
- package/build/client/_app/immutable/chunks/CzXNWL4m.js.br +1 -0
- package/build/client/_app/immutable/chunks/CzXNWL4m.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D-B5X35l.js +1 -0
- package/build/client/_app/immutable/chunks/D-B5X35l.js.br +0 -0
- package/build/client/_app/immutable/chunks/D-B5X35l.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DJriQKD9.js +2 -0
- package/build/client/_app/immutable/chunks/DJriQKD9.js.br +0 -0
- package/build/client/_app/immutable/chunks/DJriQKD9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DXUXXCDA.js +1 -0
- package/build/client/_app/immutable/chunks/DXUXXCDA.js.br +0 -0
- package/build/client/_app/immutable/chunks/DXUXXCDA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CZLNSMhF.js → Dslf9OwW.js} +10 -10
- package/build/client/_app/immutable/chunks/Dslf9OwW.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dslf9OwW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/QpaC6J6s.js +1 -0
- package/build/client/_app/immutable/chunks/QpaC6J6s.js.br +0 -0
- package/build/client/_app/immutable/chunks/QpaC6J6s.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{HXxIsSOO.js → iAhzu4tv.js} +1 -1
- package/build/client/_app/immutable/chunks/iAhzu4tv.js.br +0 -0
- package/build/client/_app/immutable/chunks/iAhzu4tv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/i_5fJYKS.js +3 -0
- package/build/client/_app/immutable/chunks/i_5fJYKS.js.br +0 -0
- package/build/client/_app/immutable/chunks/i_5fJYKS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CF66fWJN.js → nYD9wsyN.js} +1 -1
- package/build/client/_app/immutable/chunks/nYD9wsyN.js.br +0 -0
- package/build/client/_app/immutable/chunks/nYD9wsyN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BIpSIzUr.js → uLGP0py1.js} +1 -1
- package/build/client/_app/immutable/chunks/uLGP0py1.js.br +0 -0
- package/build/client/_app/immutable/chunks/uLGP0py1.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Cr7CMG-3.js +2 -0
- package/build/client/_app/immutable/entry/app.Cr7CMG-3.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Cr7CMG-3.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CDNd0Bml.js +1 -0
- package/build/client/_app/immutable/entry/start.CDNd0Bml.js.br +2 -0
- package/build/client/_app/immutable/entry/start.CDNd0Bml.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.BCmKHiYo.js → 0.AyqKXI2h.js} +2 -2
- package/build/client/_app/immutable/nodes/0.AyqKXI2h.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.AyqKXI2h.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BRmfm-nN.js +1 -0
- package/build/client/_app/immutable/nodes/1.BRmfm-nN.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BRmfm-nN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.D03jjkr4.js +7 -0
- package/build/client/_app/immutable/nodes/10.D03jjkr4.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.D03jjkr4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{15.Wmhj7gOy.js → 15.BFy4oAT6.js} +1 -1
- package/build/client/_app/immutable/nodes/15.BFy4oAT6.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.BFy4oAT6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.BOYU_WTT.js +3 -0
- package/build/client/_app/immutable/nodes/17.BOYU_WTT.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.BOYU_WTT.js.gz +0 -0
- package/build/client/_app/immutable/nodes/18.Ddx80a4f.js +11 -0
- package/build/client/_app/immutable/nodes/18.Ddx80a4f.js.br +0 -0
- package/build/client/_app/immutable/nodes/18.Ddx80a4f.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.BdQ4KFOK.js → 2.CZEboQjo.js} +20 -20
- package/build/client/_app/immutable/nodes/2.CZEboQjo.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CZEboQjo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.dAV7FviN.js +1 -0
- package/build/client/_app/immutable/nodes/3.dAV7FviN.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.dAV7FviN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.Cm_vMAEA.js +1 -0
- package/build/client/_app/immutable/nodes/4.Cm_vMAEA.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.Cm_vMAEA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DPWuTlaI.js +1 -0
- package/build/client/_app/immutable/nodes/5.DPWuTlaI.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DPWuTlaI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DY-NLaRW.js +1 -0
- package/build/client/_app/immutable/nodes/6.DY-NLaRW.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DY-NLaRW.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.DWNYX1kH.js → 8.Chuqhf8W.js} +1 -1
- package/build/client/_app/immutable/nodes/8.Chuqhf8W.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Chuqhf8W.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.BOEM8f6B.js +2 -0
- package/build/client/_app/immutable/nodes/9.BOEM8f6B.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.BOEM8f6B.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/0-TQkJBtAu.js +9 -0
- package/build/server/chunks/0-TQkJBtAu.js.map +1 -0
- package/build/server/chunks/1-CKxKlw1l.js +9 -0
- package/build/server/chunks/{1-C1mGPV-S.js.map → 1-CKxKlw1l.js.map} +1 -1
- package/build/server/chunks/10-Bly5Nk7M.js +9 -0
- package/build/server/chunks/10-Bly5Nk7M.js.map +1 -0
- package/build/server/chunks/{15-CZBxPMAc.js → 15-BMEAVslz.js} +2 -2
- package/build/server/chunks/{15-CZBxPMAc.js.map → 15-BMEAVslz.js.map} +1 -1
- package/build/server/chunks/17-C8CYQOYP.js +9 -0
- package/build/server/chunks/17-C8CYQOYP.js.map +1 -0
- package/build/server/chunks/18-CtXVGBbS.js +9 -0
- package/build/server/chunks/18-CtXVGBbS.js.map +1 -0
- package/build/server/chunks/2-DvD0dAh0.js +9 -0
- package/build/server/chunks/2-DvD0dAh0.js.map +1 -0
- package/build/server/chunks/3-DBzpRDK8.js +9 -0
- package/build/server/chunks/3-DBzpRDK8.js.map +1 -0
- package/build/server/chunks/4-BUNytyC2.js +9 -0
- package/build/server/chunks/4-BUNytyC2.js.map +1 -0
- package/build/server/chunks/5-DNo8_tFS.js +9 -0
- package/build/server/chunks/{5-DblV-OAd.js.map → 5-DNo8_tFS.js.map} +1 -1
- package/build/server/chunks/6-DUMdIfbf.js +9 -0
- package/build/server/chunks/6-DUMdIfbf.js.map +1 -0
- package/build/server/chunks/8-DxTJ555u.js +9 -0
- package/build/server/chunks/8-DxTJ555u.js.map +1 -0
- package/build/server/chunks/9-B4-5k50d.js +9 -0
- package/build/server/chunks/9-B4-5k50d.js.map +1 -0
- package/build/server/chunks/{AgentSidebar-XdGj1sqT.js → AgentSidebar-DvIlda-E.js} +5 -6
- package/build/server/chunks/AgentSidebar-DvIlda-E.js.map +1 -0
- package/build/server/chunks/{Button-Dsy3QY7B.js → Button-BLigKkGG.js} +2 -2
- package/build/server/chunks/Button-BLigKkGG.js.map +1 -0
- package/build/server/chunks/{ChatStepTrace-1q74tVYO.js → ChatStepTrace-CqqIjRLU.js} +47 -11
- package/build/server/chunks/ChatStepTrace-CqqIjRLU.js.map +1 -0
- package/build/server/chunks/{Input-CHFlfduw.js → Input-OdQKNdS6.js} +1 -2
- package/build/server/chunks/Input-OdQKNdS6.js.map +1 -0
- package/build/server/chunks/MockGenerator-GEpXTgX0.js +117 -0
- package/build/server/chunks/MockGenerator-GEpXTgX0.js.map +1 -0
- package/build/server/chunks/Modal-DtVsRmmO.js.map +1 -1
- package/build/server/chunks/{_layout.svelte-DJ4kDgDL.js → _layout.svelte-B-CkD4a0.js} +14 -8
- package/build/server/chunks/_layout.svelte-B-CkD4a0.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-B2lwUacy.js → _layout.svelte-BBFCF-xw.js} +8 -4
- package/build/server/chunks/_layout.svelte-BBFCF-xw.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-C7JgNCIu.js → _layout.svelte-cPhmW5bZ.js} +3 -1
- package/build/server/chunks/_layout.svelte-cPhmW5bZ.js.map +1 -0
- package/build/server/chunks/{_page.svelte-FufhMKh4.js → _page.svelte-0J2xaeyC.js} +71 -16
- package/build/server/chunks/_page.svelte-0J2xaeyC.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BpRksNEG.js → _page.svelte-BgoX8Y6N.js} +2 -2
- package/build/server/chunks/{_page.svelte-BpRksNEG.js.map → _page.svelte-BgoX8Y6N.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-GaxktsuT.js → _page.svelte-C_S_qUgZ.js} +480 -72
- package/build/server/chunks/_page.svelte-C_S_qUgZ.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DDpBtd3X.js → _page.svelte-CqGOvPRO.js} +3 -4
- package/build/server/chunks/_page.svelte-CqGOvPRO.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CA3-vgl2.js → _page.svelte-Cxh9_vUl.js} +151 -100
- package/build/server/chunks/_page.svelte-Cxh9_vUl.js.map +1 -0
- package/build/server/chunks/_page.svelte-zOI_s_3J.js +2151 -0
- package/build/server/chunks/_page.svelte-zOI_s_3J.js.map +1 -0
- package/build/server/chunks/agents-context-rV2narXG.js.map +1 -1
- package/build/server/chunks/conversation-view-memory-BZguFlTt.js +20 -0
- package/build/server/chunks/conversation-view-memory-BZguFlTt.js.map +1 -0
- package/build/server/chunks/edit-workspace-context-B1nYQ5hD.js.map +1 -1
- package/build/server/chunks/index-CSpGrMM2.js.map +1 -1
- package/build/server/chunks/{client-DzvEkq51.js → source-selection-CcN1cgXc.js} +122 -117
- package/build/server/chunks/source-selection-CcN1cgXc.js.map +1 -0
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +14 -14
- package/build/server/manifest.js.map +1 -1
- package/package.json +4 -4
- package/src/backend/lib/get-agent-factories.spec.ts +59 -0
- package/src/backend/lib/get-agent-factories.ts +31 -1
- package/src/backend/lib/voice-agent-lifecycle.test.ts +31 -0
- package/src/backend/lib/voice-agent-lifecycle.ts +16 -0
- package/src/backend/roleplay/agents.ts +189 -69
- package/src/backend/roleplay/message-dispatcher.ts +0 -7
- package/src/backend/roleplay/router.ts +14 -17
- package/src/backend/roleplay/trace-serialization.spec.ts +35 -0
- package/src/backend/roleplay/trace-serialization.ts +57 -0
- package/src/backend/roleplay/variants.ts +33 -49
- package/src/backend/tests/academy.ts +202 -100
- package/src/backend/tests/analyze.ts +0 -3
- package/src/backend/tests/data.spec.ts +139 -0
- package/src/backend/tests/data.ts +452 -68
- package/src/backend/tests/emulate-agents.ts +60 -44
- package/src/backend/tests/openai-prompt-cache.ts +68 -0
- package/src/backend/tests/promptfoo-runtime.spec.ts +41 -0
- package/src/backend/tests/promptfoo-runtime.ts +27 -0
- package/src/backend/tests/report-files.spec.ts +42 -0
- package/src/backend/tests/report-files.ts +101 -0
- package/src/backend/tests/router.ts +28 -2
- package/src/backend/tests/suite.ts +13 -4
- package/build/client/_app/immutable/assets/0.B4t3dozz.css +0 -1
- package/build/client/_app/immutable/assets/0.B4t3dozz.css.br +0 -0
- package/build/client/_app/immutable/assets/0.B4t3dozz.css.gz +0 -0
- package/build/client/_app/immutable/assets/10.BX46PfEJ.css.br +0 -0
- package/build/client/_app/immutable/assets/10.BX46PfEJ.css.gz +0 -0
- package/build/client/_app/immutable/chunks/7E8m6dwk.js +0 -1
- package/build/client/_app/immutable/chunks/7E8m6dwk.js.br +0 -0
- package/build/client/_app/immutable/chunks/7E8m6dwk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/7qRqthsa.js +0 -1
- package/build/client/_app/immutable/chunks/7qRqthsa.js.br +0 -2
- package/build/client/_app/immutable/chunks/7qRqthsa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ajb1KYIn.js +0 -1
- package/build/client/_app/immutable/chunks/Ajb1KYIn.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ajb1KYIn.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B0iEglSe.js +0 -1
- package/build/client/_app/immutable/chunks/B0iEglSe.js.br +0 -0
- package/build/client/_app/immutable/chunks/B0iEglSe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BIpSIzUr.js.br +0 -0
- package/build/client/_app/immutable/chunks/BIpSIzUr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BM0jKynj.js.br +0 -0
- package/build/client/_app/immutable/chunks/BM0jKynj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BTvePR6r.js +0 -1
- package/build/client/_app/immutable/chunks/BTvePR6r.js.br +0 -2
- package/build/client/_app/immutable/chunks/BTvePR6r.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bcu62lFq.js +0 -1
- package/build/client/_app/immutable/chunks/Bcu62lFq.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bcu62lFq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BwtfALfL.js +0 -11
- package/build/client/_app/immutable/chunks/BwtfALfL.js.br +0 -0
- package/build/client/_app/immutable/chunks/BwtfALfL.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BxsDwlgp.js +0 -4
- package/build/client/_app/immutable/chunks/BxsDwlgp.js.br +0 -0
- package/build/client/_app/immutable/chunks/BxsDwlgp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C-whEtKd.js.br +0 -2
- package/build/client/_app/immutable/chunks/C-whEtKd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C1WqE8CP.js +0 -1
- package/build/client/_app/immutable/chunks/C1WqE8CP.js.br +0 -2
- package/build/client/_app/immutable/chunks/C1WqE8CP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C4D-JXnS.js +0 -1
- package/build/client/_app/immutable/chunks/C4D-JXnS.js.br +0 -0
- package/build/client/_app/immutable/chunks/C4D-JXnS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C4SnSfql.js +0 -1
- package/build/client/_app/immutable/chunks/C4SnSfql.js.br +0 -0
- package/build/client/_app/immutable/chunks/C4SnSfql.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CF66fWJN.js.br +0 -0
- package/build/client/_app/immutable/chunks/CF66fWJN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CNLU4B3p.js.br +0 -0
- package/build/client/_app/immutable/chunks/CNLU4B3p.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CXo2BVs0.js.br +0 -0
- package/build/client/_app/immutable/chunks/CXo2BVs0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CZLNSMhF.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZLNSMhF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CqO5tR2_.js +0 -1
- package/build/client/_app/immutable/chunks/CqO5tR2_.js.br +0 -0
- package/build/client/_app/immutable/chunks/CqO5tR2_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CqxCTxvJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CqxCTxvJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D-wf2QNc.js +0 -1
- package/build/client/_app/immutable/chunks/D-wf2QNc.js.br +0 -0
- package/build/client/_app/immutable/chunks/D-wf2QNc.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D4obUD_s.js +0 -1
- package/build/client/_app/immutable/chunks/D4obUD_s.js.br +0 -0
- package/build/client/_app/immutable/chunks/D4obUD_s.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D8e7SQh9.js +0 -1
- package/build/client/_app/immutable/chunks/D8e7SQh9.js.br +0 -0
- package/build/client/_app/immutable/chunks/D8e7SQh9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DNLcpWO_.js.br +0 -0
- package/build/client/_app/immutable/chunks/DNLcpWO_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DTXUDKH5.js.br +0 -0
- package/build/client/_app/immutable/chunks/DTXUDKH5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DYhTBLDc.js.br +0 -0
- package/build/client/_app/immutable/chunks/DYhTBLDc.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DhBm2Vx9.js +0 -1
- package/build/client/_app/immutable/chunks/DhBm2Vx9.js.br +0 -0
- package/build/client/_app/immutable/chunks/DhBm2Vx9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dp760K13.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dp760K13.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dv0gjm25.js +0 -1
- package/build/client/_app/immutable/chunks/Dv0gjm25.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dv0gjm25.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dv8m1cTI.js.br +0 -0
- package/build/client/_app/immutable/chunks/HJHYLHDn.js.br +0 -0
- package/build/client/_app/immutable/chunks/HJHYLHDn.js.gz +0 -0
- package/build/client/_app/immutable/chunks/HXxIsSOO.js.br +0 -0
- package/build/client/_app/immutable/chunks/HXxIsSOO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/_yZg6Sf-.js +0 -2
- package/build/client/_app/immutable/chunks/_yZg6Sf-.js.br +0 -0
- package/build/client/_app/immutable/chunks/_yZg6Sf-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xebNt8-Z.js +0 -1
- package/build/client/_app/immutable/chunks/xebNt8-Z.js.br +0 -0
- package/build/client/_app/immutable/chunks/xebNt8-Z.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.C4wJtvtH.js +0 -2
- package/build/client/_app/immutable/entry/app.C4wJtvtH.js.br +0 -0
- package/build/client/_app/immutable/entry/app.C4wJtvtH.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BId2vqhS.js +0 -1
- package/build/client/_app/immutable/entry/start.BId2vqhS.js.br +0 -2
- package/build/client/_app/immutable/entry/start.BId2vqhS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.BCmKHiYo.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.BCmKHiYo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.8skEZBEw.js +0 -1
- package/build/client/_app/immutable/nodes/1.8skEZBEw.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.8skEZBEw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.YgmBfSWN.js +0 -5
- package/build/client/_app/immutable/nodes/10.YgmBfSWN.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.YgmBfSWN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.Wmhj7gOy.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.Wmhj7gOy.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.D8ydco6g.js +0 -3
- package/build/client/_app/immutable/nodes/17.D8ydco6g.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.D8ydco6g.js.gz +0 -0
- package/build/client/_app/immutable/nodes/18.C67CqGm5.js +0 -11
- package/build/client/_app/immutable/nodes/18.C67CqGm5.js.br +0 -0
- package/build/client/_app/immutable/nodes/18.C67CqGm5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.BdQ4KFOK.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BdQ4KFOK.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.nCmkz6kS.js +0 -1
- package/build/client/_app/immutable/nodes/3.nCmkz6kS.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.nCmkz6kS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DAwO0_Am.js +0 -1
- package/build/client/_app/immutable/nodes/4.DAwO0_Am.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DAwO0_Am.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.C_SvvZjG.js +0 -1
- package/build/client/_app/immutable/nodes/5.C_SvvZjG.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.C_SvvZjG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DfOe9lph.js +0 -1
- package/build/client/_app/immutable/nodes/6.DfOe9lph.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DfOe9lph.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.DWNYX1kH.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DWNYX1kH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.D7SG4T7Z.js +0 -2
- package/build/client/_app/immutable/nodes/9.D7SG4T7Z.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.D7SG4T7Z.js.gz +0 -0
- package/build/server/chunks/0-D5BNSI7t.js +0 -9
- package/build/server/chunks/0-D5BNSI7t.js.map +0 -1
- package/build/server/chunks/1-C1mGPV-S.js +0 -9
- package/build/server/chunks/10-BUo1e_HG.js +0 -9
- package/build/server/chunks/10-BUo1e_HG.js.map +0 -1
- package/build/server/chunks/17-iNFqG1My.js +0 -9
- package/build/server/chunks/17-iNFqG1My.js.map +0 -1
- package/build/server/chunks/18-u8T5X6fM.js +0 -9
- package/build/server/chunks/18-u8T5X6fM.js.map +0 -1
- package/build/server/chunks/2-tLlSByHA.js +0 -9
- package/build/server/chunks/2-tLlSByHA.js.map +0 -1
- package/build/server/chunks/3-D1KY9yVZ.js +0 -9
- package/build/server/chunks/3-D1KY9yVZ.js.map +0 -1
- package/build/server/chunks/4-7zu0cJha.js +0 -9
- package/build/server/chunks/4-7zu0cJha.js.map +0 -1
- package/build/server/chunks/5-DblV-OAd.js +0 -9
- package/build/server/chunks/6-BDC5budM.js +0 -9
- package/build/server/chunks/6-BDC5budM.js.map +0 -1
- package/build/server/chunks/8-DhmD-opq.js +0 -9
- package/build/server/chunks/8-DhmD-opq.js.map +0 -1
- package/build/server/chunks/9-BGj28GI6.js +0 -9
- package/build/server/chunks/9-BGj28GI6.js.map +0 -1
- package/build/server/chunks/AgentSidebar-XdGj1sqT.js.map +0 -1
- package/build/server/chunks/Button-Dsy3QY7B.js.map +0 -1
- package/build/server/chunks/ChatStepTrace-1q74tVYO.js.map +0 -1
- package/build/server/chunks/Input-CHFlfduw.js.map +0 -1
- package/build/server/chunks/_layout.svelte-B2lwUacy.js.map +0 -1
- package/build/server/chunks/_layout.svelte-C7JgNCIu.js.map +0 -1
- package/build/server/chunks/_layout.svelte-DJ4kDgDL.js.map +0 -1
- package/build/server/chunks/_page.svelte-Bl1WcAXy.js +0 -671
- package/build/server/chunks/_page.svelte-Bl1WcAXy.js.map +0 -1
- package/build/server/chunks/_page.svelte-CA3-vgl2.js.map +0 -1
- package/build/server/chunks/_page.svelte-DDpBtd3X.js.map +0 -1
- package/build/server/chunks/_page.svelte-FufhMKh4.js.map +0 -1
- package/build/server/chunks/_page.svelte-GaxktsuT.js.map +0 -1
- package/build/server/chunks/client-DzvEkq51.js.map +0 -1
- package/build/server/chunks/source-selection-eA--VEKo.js +0 -124
- package/build/server/chunks/source-selection-eA--VEKo.js.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { l as derived, o as attr_class, j as escape_html, n as ensure_array_like, k as attr, az as clsx, m as stringify, q as attr_style } from './index-CSpGrMM2.js';
|
|
2
|
+
import { B as Button } from './Button-BLigKkGG.js';
|
|
2
3
|
import { D as Dropdown } from './Dropdown-7dp1qEYv.js';
|
|
3
|
-
import { o as attr_class, j as escape_html, n as ensure_array_like, k as attr, az as clsx, m as stringify, l as derived, q as attr_style } from './index-CSpGrMM2.js';
|
|
4
4
|
import { I as Icon } from './Icon-CXFHkSIr.js';
|
|
5
5
|
import { t as trpc } from './trpc-client-D8L6vWf4.js';
|
|
6
6
|
import { g as getEditWorkspaceContext, P as Panel } from './edit-workspace-context-B1nYQ5hD.js';
|
|
7
|
-
import { C as ChatApiCallTrace, a as ChatConversationalTrace, b as ChatStepTrace } from './ChatStepTrace-
|
|
7
|
+
import { C as ChatApiCallTrace, a as ChatConversationalTrace, b as ChatStepTrace, f as findMainStepTraceNear, c as findStringifiedConversationBefore } from './ChatStepTrace-CqqIjRLU.js';
|
|
8
8
|
import { i as isApiCallTrace, b as isConversationalTrace, d as isStepTrace, e as chatContent, l as logContent, c as clearChatContent, a as clearLogs } from './log-content.svelte-CfQzj-v_.js';
|
|
9
|
-
import { I as Input } from './Input-
|
|
9
|
+
import { I as Input } from './Input-OdQKNdS6.js';
|
|
10
10
|
import './shared-server-DaWdgxVh.js';
|
|
11
11
|
import '@trpc/client';
|
|
12
12
|
import './index-server-DsYEXu5n.js';
|
|
@@ -49,7 +49,8 @@ function History($$renderer, $$props) {
|
|
|
49
49
|
const raw = state.userMessage;
|
|
50
50
|
if (raw == null) return "No message";
|
|
51
51
|
const msg = (typeof raw === "string" ? raw : String(raw)).trim();
|
|
52
|
-
|
|
52
|
+
if (!msg) return "No message";
|
|
53
|
+
return state.userMessageSender === "system" ? `System: ${msg}` : msg;
|
|
53
54
|
}
|
|
54
55
|
function truncateMessage(message, maxLength = 50, ellipsis = "…") {
|
|
55
56
|
if (!message) return "";
|
|
@@ -169,6 +170,32 @@ function History($$renderer, $$props) {
|
|
|
169
170
|
$$renderer2.subsume($$inner_renderer);
|
|
170
171
|
});
|
|
171
172
|
}
|
|
173
|
+
function agentContextFromRuntime(value) {
|
|
174
|
+
if (isRecord(value) && isRecord(value.context)) return cloneRecord(value.context);
|
|
175
|
+
return cloneRecord(value);
|
|
176
|
+
}
|
|
177
|
+
function mocksFromRuntime(value) {
|
|
178
|
+
if (!isRecord(value) || !isRecord(value.mocks)) return void 0;
|
|
179
|
+
return cloneRecord(value.mocks);
|
|
180
|
+
}
|
|
181
|
+
function cloneRecord(value) {
|
|
182
|
+
if (!isRecord(value)) return {};
|
|
183
|
+
return cloneValue(value);
|
|
184
|
+
}
|
|
185
|
+
function isRecord(value) {
|
|
186
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
187
|
+
}
|
|
188
|
+
function cloneValue(value) {
|
|
189
|
+
try {
|
|
190
|
+
return structuredClone(value);
|
|
191
|
+
} catch {
|
|
192
|
+
try {
|
|
193
|
+
return JSON.parse(JSON.stringify(value));
|
|
194
|
+
} catch {
|
|
195
|
+
return value;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
172
199
|
function Dialog($$renderer, $$props) {
|
|
173
200
|
$$renderer.component(($$renderer2) => {
|
|
174
201
|
let dialog;
|
|
@@ -435,6 +462,8 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
435
462
|
let inputEl = null;
|
|
436
463
|
let ghostTextStyle = "";
|
|
437
464
|
let aiGenerating = false;
|
|
465
|
+
let sendRole = "user";
|
|
466
|
+
let actionError = null;
|
|
438
467
|
let userHistory = [];
|
|
439
468
|
let inputFocused = false;
|
|
440
469
|
let autocompleteDismissed = false;
|
|
@@ -521,17 +550,29 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
521
550
|
return null;
|
|
522
551
|
}
|
|
523
552
|
function isRenderableConversationalMessage(trace) {
|
|
553
|
+
if ((trace.eventName === "received-message" || trace.eventName === "llm-handler-stream-requested") && !String(trace.content ?? "").trim()) {
|
|
554
|
+
return false;
|
|
555
|
+
}
|
|
524
556
|
return trace.eventName === "received-message" || trace.eventName === "llm-handler-stream-requested" || trace.eventName === "finished-main-streaming-step" || trace.eventName === "sent-message" || trace.eventName === "transfer-requested" || trace.eventName === "hangup-requested";
|
|
525
557
|
}
|
|
526
558
|
function isVariantEligibleTrace(trace) {
|
|
527
559
|
return !!(agentId && agentId.trim()) && trace.eventName !== "transfer-requested" && (trace.eventName === "finished-main-streaming-step" || trace.eventName === "sent-message");
|
|
528
560
|
}
|
|
561
|
+
function isUserConversationalTrace(trace) {
|
|
562
|
+
return trace.role === "user" || trace.eventName === "received-message" || trace.eventName === "llm-handler-stream-requested";
|
|
563
|
+
}
|
|
529
564
|
function extractUserText(raw) {
|
|
530
565
|
const value = String(raw ?? "").trim();
|
|
531
566
|
if (!value) return "";
|
|
532
567
|
if (/^\[image\]\s+/.test(value)) return "";
|
|
533
568
|
return value;
|
|
534
569
|
}
|
|
570
|
+
function inputSenderForTrace(trace) {
|
|
571
|
+
const rawSender = trace?.bosunInputMessageSender;
|
|
572
|
+
if (rawSender === "system") return "system";
|
|
573
|
+
if (rawSender === "user") return "user";
|
|
574
|
+
return trace.role === "system" ? "system" : "user";
|
|
575
|
+
}
|
|
535
576
|
function handleRevertTrace(trace) {
|
|
536
577
|
if (!onRevertToState) return;
|
|
537
578
|
const rawPrev = trace?.bosunPrevStateId;
|
|
@@ -539,6 +580,9 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
539
580
|
onRevertToState(prevStateId);
|
|
540
581
|
const rawUserMessage = typeof trace?.bosunUserMessage === "string" ? trace.bosunUserMessage : trace.content;
|
|
541
582
|
text = extractUserText(rawUserMessage);
|
|
583
|
+
sendRole = inputSenderForTrace(trace);
|
|
584
|
+
autocompleteDismissed = false;
|
|
585
|
+
selectedSuggestionIndex = null;
|
|
542
586
|
requestAnimationFrame(() => {
|
|
543
587
|
try {
|
|
544
588
|
inputEl?.focus();
|
|
@@ -596,13 +640,11 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
596
640
|
return chatContent.findLast((e) => isConversationalTrace(e))?.eventName === "hangup-requested";
|
|
597
641
|
});
|
|
598
642
|
const lastVariantEligibleTrace = derived(() => {
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
}
|
|
605
|
-
return null;
|
|
643
|
+
const match = renderableEntries().map((entry, index) => ({ entry, index })).reverse().find(({ entry, index }) => {
|
|
644
|
+
if (!isConversationalTrace(entry) || !isVariantEligibleTrace(entry)) return false;
|
|
645
|
+
return renderableEntries().slice(0, index).some((candidate) => isConversationalTrace(candidate) && isUserConversationalTrace(candidate));
|
|
646
|
+
});
|
|
647
|
+
return match && isConversationalTrace(match.entry) ? match.entry : null;
|
|
606
648
|
});
|
|
607
649
|
const aiResponseContext = derived(() => {
|
|
608
650
|
const trace = lastVariantEligibleTrace();
|
|
@@ -618,49 +660,18 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
618
660
|
return null;
|
|
619
661
|
}
|
|
620
662
|
});
|
|
621
|
-
function findMainStepTraceForConversationTrace(idx) {
|
|
622
|
-
for (let i = idx - 1; i >= 0; i--) {
|
|
623
|
-
const entry = chatContent[i];
|
|
624
|
-
if (!isStepTrace(entry)) continue;
|
|
625
|
-
if (entry.name !== "main" && entry.name !== "mainReply") continue;
|
|
626
|
-
if (typeof entry.renderedPrompt !== "string") continue;
|
|
627
|
-
if (!entry.renderedPrompt.trim()) continue;
|
|
628
|
-
return entry;
|
|
629
|
-
}
|
|
630
|
-
for (let i = idx + 1; i < chatContent.length; i++) {
|
|
631
|
-
const entry = chatContent[i];
|
|
632
|
-
if (!isStepTrace(entry)) continue;
|
|
633
|
-
if (entry.name !== "main" && entry.name !== "mainReply") continue;
|
|
634
|
-
if (typeof entry.renderedPrompt !== "string") continue;
|
|
635
|
-
if (!entry.renderedPrompt.trim()) continue;
|
|
636
|
-
return entry;
|
|
637
|
-
}
|
|
638
|
-
return null;
|
|
639
|
-
}
|
|
640
|
-
function findNearestStringifiedConversation(idx) {
|
|
641
|
-
for (let i = idx - 1; i >= 0; i--) {
|
|
642
|
-
const entry = chatContent[i];
|
|
643
|
-
if (!isStepTrace(entry)) continue;
|
|
644
|
-
if (typeof entry.stringifiedConversation !== "string") continue;
|
|
645
|
-
const sc = entry.stringifiedConversation.trim();
|
|
646
|
-
if (!sc) continue;
|
|
647
|
-
return sc;
|
|
648
|
-
}
|
|
649
|
-
return null;
|
|
650
|
-
}
|
|
651
663
|
function buildAnalyzeTraceInput(trace) {
|
|
652
664
|
const agent = (agentId ?? "").trim();
|
|
653
665
|
if (!agent) throw new Error("Agent id is not available; cannot analyze");
|
|
654
666
|
const idx = chatContent.indexOf(trace);
|
|
655
667
|
if (idx === -1) throw new Error("Could not locate trace in chat history");
|
|
656
|
-
const stepTrace =
|
|
668
|
+
const stepTrace = findMainStepTraceNear(chatContent, idx, { requireRenderedPrompt: true });
|
|
657
669
|
if (!stepTrace) {
|
|
658
670
|
throw new Error("Could not find main step trace for this message");
|
|
659
671
|
}
|
|
660
672
|
const renderedPrompt = typeof stepTrace.renderedPrompt === "string" ? stepTrace.renderedPrompt : "";
|
|
661
673
|
if (!renderedPrompt.trim()) throw new Error("Main step rendered prompt is missing");
|
|
662
|
-
const stringifiedConversation = typeof stepTrace.stringifiedConversation === "string" && stepTrace.stringifiedConversation.trim() ? stepTrace.stringifiedConversation :
|
|
663
|
-
if (!stringifiedConversation.trim()) throw new Error("Main step conversation is missing");
|
|
674
|
+
const stringifiedConversation = typeof stepTrace.stringifiedConversation === "string" && stepTrace.stringifiedConversation.trim() ? stepTrace.stringifiedConversation : findStringifiedConversationBefore(chatContent, idx) ?? "";
|
|
664
675
|
const response = String(trace?.content ?? "");
|
|
665
676
|
if (!response.trim()) throw new Error("Message content is missing");
|
|
666
677
|
const model = typeof stepTrace?.model === "string" ? String(stepTrace.model) : void 0;
|
|
@@ -679,9 +690,21 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
679
690
|
function handleAnalyzeTrace(trace) {
|
|
680
691
|
if (!onAnalyzeTrace) return;
|
|
681
692
|
try {
|
|
693
|
+
actionError = null;
|
|
682
694
|
onAnalyzeTrace(buildAnalyzeTraceInput(trace));
|
|
683
695
|
} catch (e) {
|
|
684
696
|
console.error(e);
|
|
697
|
+
actionError = e instanceof Error ? e.message : String(e);
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
function handleRegenerateTrace(trace) {
|
|
701
|
+
if (!onRegenerateTrace) return;
|
|
702
|
+
try {
|
|
703
|
+
actionError = null;
|
|
704
|
+
onRegenerateTrace(trace);
|
|
705
|
+
} catch (e) {
|
|
706
|
+
console.error(e);
|
|
707
|
+
actionError = e instanceof Error ? e.message : String(e);
|
|
685
708
|
}
|
|
686
709
|
}
|
|
687
710
|
async function handleGenerateUserResponse() {
|
|
@@ -771,9 +794,10 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
771
794
|
trace: entry,
|
|
772
795
|
context,
|
|
773
796
|
agentId,
|
|
797
|
+
region,
|
|
774
798
|
analyzeDisabled,
|
|
775
799
|
onAnalyze: onAnalyzeTrace ? handleAnalyzeTrace : void 0,
|
|
776
|
-
onRegenerate: onRegenerateTrace,
|
|
800
|
+
onRegenerate: onRegenerateTrace ? handleRegenerateTrace : void 0,
|
|
777
801
|
onRevert: onRevertToState ? handleRevertTrace : void 0,
|
|
778
802
|
showSeeVariants: !!onSeeVariants && !variantSourceTrace && entry === lastVariantEligibleTrace(),
|
|
779
803
|
onSeeVariants,
|
|
@@ -825,7 +849,13 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
825
849
|
$$renderer4.push(`<div class="absolute bottom-2 left-2 right-2 z-10 flex items-center gap-3 rounded-lg border border-rc-green-450 bg-rc-gray-930/90 px-3 py-3 font-semibold text-rc-gray-100 shadow-inner-white-soft backdrop-blur-3xl"><span>Choose a variant above to continue</span> <button type="button"${attr("disabled", !onRegenerateVariants || variantLoading || variantApplyingId !== null, true)} class="rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-300 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-100 focus:outline-none focus-visible:outline-none disabled:cursor-wait disabled:opacity-50">Regenerate</button> <button type="button" class="rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-300 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-100 focus:outline-none focus-visible:outline-none">Cancel</button></div>`);
|
|
826
850
|
} else {
|
|
827
851
|
$$renderer4.push("<!--[-1-->");
|
|
828
|
-
|
|
852
|
+
if (actionError) {
|
|
853
|
+
$$renderer4.push("<!--[0-->");
|
|
854
|
+
$$renderer4.push(`<div class="absolute bottom-16 left-2 right-2 z-20 rounded-lg border border-red-500/60 bg-red-950/90 px-3 py-2 text-sm text-red-100 shadow-lg" role="alert">${escape_html(actionError)}</div>`);
|
|
855
|
+
} else {
|
|
856
|
+
$$renderer4.push("<!--[-1-->");
|
|
857
|
+
}
|
|
858
|
+
$$renderer4.push(`<!--]--> <form><fieldset${attr("disabled", controlsDisabled(), true)} class="absolute bottom-2 left-2 right-2 z-10 flex gap-2 disabled:opacity-35"><div class="relative flex-1">`);
|
|
829
859
|
if (dropdownOpen()) {
|
|
830
860
|
$$renderer4.push("<!--[0-->");
|
|
831
861
|
$$renderer4.push(`<div class="absolute bottom-full left-0 right-0 mb-1 max-h-60 overflow-y-auto rounded-lg border border-rc-gray-110 bg-rc-gray-930 shadow-inner-white-soft backdrop-blur-2xl" role="listbox"><!--[-->`);
|
|
@@ -847,7 +877,8 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
847
877
|
$$renderer4.push(`<!--]--> `);
|
|
848
878
|
Input($$renderer4, {
|
|
849
879
|
variant: "chat",
|
|
850
|
-
|
|
880
|
+
class: `!text-base !leading-6 !duration-75 ${sendRole === "system" ? "!border-emerald-500 !pl-[5.5rem] hover:!border-emerald-500 focus:!border-emerald-500" : "!pl-[4.25rem]"}`,
|
|
881
|
+
placeholder: aiGenerating ? "Generating" : "Enter message...",
|
|
851
882
|
autocomplete: "off",
|
|
852
883
|
readonly: aiGenerating,
|
|
853
884
|
onfocus: handleInputFocus,
|
|
@@ -869,7 +900,7 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
869
900
|
$$settled = false;
|
|
870
901
|
}
|
|
871
902
|
});
|
|
872
|
-
$$renderer4.push(`<!----> `);
|
|
903
|
+
$$renderer4.push(`<!----> <button type="button"${attr("title", sendRole === "system" ? "Switch to user" : "Switch to system")}${attr("aria-label", sendRole === "system" ? "Switch to user" : "Switch to system")}${attr("disabled", aiGenerating, true)} class="absolute bottom-0 left-3 top-0 z-20 inline-flex items-center border-r border-rc-gray-500/70 bg-transparent pr-2 text-base font-semibold leading-6 text-rc-gray-300 transition-colors duration-75 hover:text-rc-gray-300 focus:outline-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50">${escape_html(sendRole === "system" ? "System" : "User")}</button> `);
|
|
873
904
|
if (selectedSuggestionIndex !== null && ghostSuffix()) {
|
|
874
905
|
$$renderer4.push("<!--[0-->");
|
|
875
906
|
$$renderer4.push(`<div class="pointer-events-none absolute inset-0 z-10 overflow-hidden rounded-lg" aria-hidden="true"><div class="whitespace-pre text-rc-gray-400/70"${attr_style(ghostTextStyle)}><span class="invisible">${escape_html(text)}</span><span>${escape_html(ghostSuffix())}</span></div></div>`);
|
|
@@ -897,30 +928,40 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
897
928
|
$$slots: { default: true }
|
|
898
929
|
});
|
|
899
930
|
$$renderer4.push(`<!----> `);
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
931
|
+
if (showGenerateAction()) {
|
|
932
|
+
$$renderer4.push("<!--[0-->");
|
|
933
|
+
Button($$renderer4, {
|
|
934
|
+
size: "small",
|
|
935
|
+
type: "button",
|
|
936
|
+
title: "Generate response",
|
|
937
|
+
"aria-label": "Generate response",
|
|
938
|
+
disabled: aiGenerating || !aiResponseContext(),
|
|
939
|
+
class: "inline-flex !w-[59px] items-center justify-center !px-0",
|
|
940
|
+
onclick: (event) => {
|
|
941
|
+
event.preventDefault();
|
|
942
|
+
void handleGenerateUserResponse();
|
|
943
|
+
},
|
|
944
|
+
children: ($$renderer5) => {
|
|
914
945
|
Icon($$renderer5, { name: "sparkles" });
|
|
915
|
-
}
|
|
916
|
-
|
|
946
|
+
},
|
|
947
|
+
$$slots: { default: true }
|
|
948
|
+
});
|
|
949
|
+
} else {
|
|
950
|
+
$$renderer4.push("<!--[-1-->");
|
|
951
|
+
Button($$renderer4, {
|
|
952
|
+
size: "small",
|
|
953
|
+
type: "submit",
|
|
954
|
+
title: sendRole === "system" ? "Send as system" : "Send as user",
|
|
955
|
+
"aria-label": sendRole === "system" ? "Send as system" : "Send as user",
|
|
956
|
+
disabled: aiGenerating,
|
|
957
|
+
class: "inline-flex !w-[59px] items-center justify-center !px-0",
|
|
958
|
+
children: ($$renderer5) => {
|
|
917
959
|
Icon($$renderer5, { name: "send" });
|
|
918
|
-
}
|
|
919
|
-
$$
|
|
920
|
-
}
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
$$renderer4.push(`<!----></fieldset></form>`);
|
|
960
|
+
},
|
|
961
|
+
$$slots: { default: true }
|
|
962
|
+
});
|
|
963
|
+
}
|
|
964
|
+
$$renderer4.push(`<!--]--></fieldset></form>`);
|
|
924
965
|
}
|
|
925
966
|
$$renderer4.push(`<!--]-->`);
|
|
926
967
|
}
|
|
@@ -944,6 +985,10 @@ function _page($$renderer, $$props) {
|
|
|
944
985
|
let copyTimer = null;
|
|
945
986
|
let copyMenuOpen = false;
|
|
946
987
|
let copyMenuAnchorEl = null;
|
|
988
|
+
const canGenerateVariants = derived(() => {
|
|
989
|
+
const latestStateId = workspace.agentStates.at(-1)?.id ?? null;
|
|
990
|
+
return !!latestStateId && workspace.currentState === latestStateId;
|
|
991
|
+
});
|
|
947
992
|
function agentLabel(agentId) {
|
|
948
993
|
const label = (agentId || "").trim();
|
|
949
994
|
if (!label) return "Agent";
|
|
@@ -1051,34 +1096,44 @@ function _page($$renderer, $$props) {
|
|
|
1051
1096
|
actions.closeContextPopover();
|
|
1052
1097
|
actions.selectState(null);
|
|
1053
1098
|
}
|
|
1054
|
-
function
|
|
1099
|
+
function parseStoredInputMessage(raw, sender = "user") {
|
|
1055
1100
|
const trimmed = String(raw ?? "").trim();
|
|
1056
1101
|
if (!trimmed) return null;
|
|
1057
1102
|
const m = /^\[image\]\s+(.+)$/.exec(trimmed);
|
|
1058
1103
|
if (m) {
|
|
1059
1104
|
const url = (m[1] ?? "").trim();
|
|
1060
1105
|
if (!url) return null;
|
|
1061
|
-
return { text: "", imageUrl: url };
|
|
1106
|
+
return { sender, text: "", imageUrl: url };
|
|
1062
1107
|
}
|
|
1063
|
-
return { text: trimmed };
|
|
1108
|
+
return { sender, text: trimmed };
|
|
1109
|
+
}
|
|
1110
|
+
function normalizeInputSender(raw) {
|
|
1111
|
+
return raw === "system" ? "system" : "user";
|
|
1064
1112
|
}
|
|
1065
1113
|
function handleRegenerateTrace(trace) {
|
|
1066
1114
|
clearVariantMode();
|
|
1067
1115
|
const rawPrevStateId = trace?.bosunPrevStateId;
|
|
1068
1116
|
const prevStateId = typeof rawPrevStateId === "string" && rawPrevStateId.trim() ? rawPrevStateId : null;
|
|
1069
1117
|
const rawUserMessage = typeof trace?.bosunUserMessage === "string" && trace.bosunUserMessage || null;
|
|
1070
|
-
|
|
1118
|
+
const traceSender = normalizeInputSender(trace?.bosunInputMessageSender);
|
|
1119
|
+
let message = rawUserMessage ? parseStoredInputMessage(rawUserMessage, traceSender) : null;
|
|
1071
1120
|
if (!message) {
|
|
1072
1121
|
const traceStateId = trace?.bosunStateId;
|
|
1073
1122
|
if (typeof traceStateId === "string" && traceStateId.trim()) {
|
|
1074
1123
|
const state = workspace.agentStates.find((s) => s.id === traceStateId);
|
|
1075
|
-
message =
|
|
1124
|
+
message = parseStoredInputMessage(state?.userMessage ?? "", normalizeInputSender(state?.userMessageSender));
|
|
1076
1125
|
}
|
|
1077
1126
|
}
|
|
1078
|
-
if (!message)
|
|
1127
|
+
if (!message) {
|
|
1128
|
+
if (rawPrevStateId === void 0) {
|
|
1129
|
+
throw new Error("Cannot regenerate: this response has no saved state metadata");
|
|
1130
|
+
}
|
|
1131
|
+
actions.selectState(prevStateId);
|
|
1132
|
+
return;
|
|
1133
|
+
}
|
|
1079
1134
|
actions.selectState(prevStateId);
|
|
1080
1135
|
actions.sendChatMessage({
|
|
1081
|
-
sender:
|
|
1136
|
+
sender: message.sender,
|
|
1082
1137
|
text: message.text,
|
|
1083
1138
|
imageUrl: message.imageUrl
|
|
1084
1139
|
});
|
|
@@ -1093,26 +1148,25 @@ function _page($$renderer, $$props) {
|
|
|
1093
1148
|
if (typeof prompt !== "string") return null;
|
|
1094
1149
|
return { step: stepName, prompt };
|
|
1095
1150
|
}
|
|
1096
|
-
function
|
|
1097
|
-
const
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1151
|
+
function agentContextForVariant(trace) {
|
|
1152
|
+
const idx = chatContent.indexOf(trace);
|
|
1153
|
+
const stepTrace = idx === -1 ? null : findMainStepTraceNear(chatContent, idx);
|
|
1154
|
+
if (stepTrace && typeof stepTrace.receivedContext !== "undefined") {
|
|
1155
|
+
return cloneRecord(stepTrace.receivedContext);
|
|
1156
|
+
}
|
|
1157
|
+
return agentContextFromRuntime(workspace.context);
|
|
1158
|
+
}
|
|
1159
|
+
function bosunRuntimeContextForVariant(trace) {
|
|
1160
|
+
const context = agentContextForVariant(trace);
|
|
1161
|
+
const mocks = mocksFromRuntime(workspace.context);
|
|
1162
|
+
return mocks ? { context, mocks } : context;
|
|
1104
1163
|
}
|
|
1105
1164
|
async function requestVariants(trace) {
|
|
1106
|
-
|
|
1107
|
-
if (!workspace.agentId || !targetStateId) return;
|
|
1108
|
-
const rawUserMessage = rawUserMessageForTrace(trace);
|
|
1109
|
-
if (!rawUserMessage) return;
|
|
1110
|
-
const prevStateId = typeof trace?.bosunPrevStateId === "string" && trace.bosunPrevStateId.trim() ? trace.bosunPrevStateId.trim() : null;
|
|
1165
|
+
if (!workspace.agentId) return;
|
|
1111
1166
|
const promptUpdate = currentVariantPromptUpdate();
|
|
1112
1167
|
await actions.flushPromptSave();
|
|
1113
1168
|
variantMode = {
|
|
1114
1169
|
sourceTrace: trace,
|
|
1115
|
-
targetStateId,
|
|
1116
1170
|
choices: [],
|
|
1117
1171
|
loading: true,
|
|
1118
1172
|
applyingId: null,
|
|
@@ -1122,17 +1176,15 @@ function _page($$renderer, $$props) {
|
|
|
1122
1176
|
const choices = await trpc.agents.generateVariants.mutate({
|
|
1123
1177
|
agentId: workspace.agentId,
|
|
1124
1178
|
region: workspace.region,
|
|
1125
|
-
|
|
1126
|
-
rawUserMessage,
|
|
1127
|
-
context: workspace.context,
|
|
1179
|
+
context: bosunRuntimeContextForVariant(trace),
|
|
1128
1180
|
promptUpdate,
|
|
1129
1181
|
count: 9
|
|
1130
1182
|
});
|
|
1131
|
-
if (!variantMode || variantMode.sourceTrace !== trace
|
|
1183
|
+
if (!variantMode || variantMode.sourceTrace !== trace) return;
|
|
1132
1184
|
variantMode = { ...variantMode, choices, loading: false, error: null };
|
|
1133
1185
|
} catch (error) {
|
|
1134
1186
|
console.error("Failed to generate variants", error);
|
|
1135
|
-
if (!variantMode || variantMode.sourceTrace !== trace
|
|
1187
|
+
if (!variantMode || variantMode.sourceTrace !== trace) return;
|
|
1136
1188
|
variantMode = {
|
|
1137
1189
|
...variantMode,
|
|
1138
1190
|
choices: [],
|
|
@@ -1161,7 +1213,6 @@ function _page($$renderer, $$props) {
|
|
|
1161
1213
|
await trpc.agents.commitVariant.mutate({
|
|
1162
1214
|
agentId: workspace.agentId,
|
|
1163
1215
|
region: workspace.region,
|
|
1164
|
-
targetStateId: variantMode.targetStateId,
|
|
1165
1216
|
state: choice.state
|
|
1166
1217
|
});
|
|
1167
1218
|
clearVariantMode();
|
|
@@ -1342,7 +1393,7 @@ function _page($$renderer, $$props) {
|
|
|
1342
1393
|
onAnalyzeTrace: handleAnalyzeTrace,
|
|
1343
1394
|
onRegenerateTrace: handleRegenerateTrace,
|
|
1344
1395
|
onRevertToState: (stateId) => actions.selectState(stateId),
|
|
1345
|
-
onSeeVariants: handleSeeVariants,
|
|
1396
|
+
onSeeVariants: canGenerateVariants() ? handleSeeVariants : void 0,
|
|
1346
1397
|
onHangup: handleHangup,
|
|
1347
1398
|
variantSourceTrace: variantMode?.sourceTrace ?? null,
|
|
1348
1399
|
variantChoices: variantMode?.choices ?? [],
|
|
@@ -1368,4 +1419,4 @@ function _page($$renderer, $$props) {
|
|
|
1368
1419
|
}
|
|
1369
1420
|
|
|
1370
1421
|
export { _page as default };
|
|
1371
|
-
//# sourceMappingURL=_page.svelte-
|
|
1422
|
+
//# sourceMappingURL=_page.svelte-Cxh9_vUl.js.map
|