@recombine-ai/bosun 0.13.0 → 0.15.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.
- package/bin/bosun.js +7 -0
- package/build/client/_app/immutable/assets/0.b0jhAoSC.css +1 -0
- package/build/client/_app/immutable/assets/0.b0jhAoSC.css.br +0 -0
- package/build/client/_app/immutable/assets/0.b0jhAoSC.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BTX1tKMW.js +1 -0
- package/build/client/_app/immutable/chunks/BTX1tKMW.js.br +0 -0
- package/build/client/_app/immutable/chunks/BTX1tKMW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BVxLHCs8.js +1 -0
- package/build/client/_app/immutable/chunks/BVxLHCs8.js.br +0 -0
- package/build/client/_app/immutable/chunks/BVxLHCs8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{De8YgKS3.js → ChVBNPUb.js} +1 -1
- package/build/client/_app/immutable/chunks/ChVBNPUb.js.br +0 -0
- package/build/client/_app/immutable/chunks/ChVBNPUb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/E9rdsnHb.js +1 -0
- package/build/client/_app/immutable/chunks/E9rdsnHb.js.br +0 -0
- package/build/client/_app/immutable/chunks/E9rdsnHb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Z1_c4us_.js +3 -0
- package/build/client/_app/immutable/chunks/Z1_c4us_.js.br +0 -0
- package/build/client/_app/immutable/chunks/Z1_c4us_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Bj8jfBTi.js → lmnC3bvv.js} +1 -1
- package/build/client/_app/immutable/chunks/lmnC3bvv.js.br +0 -0
- package/build/client/_app/immutable/chunks/lmnC3bvv.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.DK_wVDeR.js → app.BY5DP2K_.js} +2 -2
- package/build/client/_app/immutable/entry/app.BY5DP2K_.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BY5DP2K_.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BeIIwvvV.js +1 -0
- package/build/client/_app/immutable/entry/start.BeIIwvvV.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BeIIwvvV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.5fEbn14Q.js → 0.Cao0LJwW.js} +1 -1
- package/build/client/_app/immutable/nodes/0.Cao0LJwW.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Cao0LJwW.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.CJrSN8zL.js → 1.Kjgu6yxL.js} +1 -1
- package/build/client/_app/immutable/nodes/1.Kjgu6yxL.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.Kjgu6yxL.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{10.SZwTlOEA.js → 10.yW2mHq85.js} +1 -1
- package/build/client/_app/immutable/nodes/10.yW2mHq85.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.yW2mHq85.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{17.D-KFl7Vk.js → 17.COHkD98p.js} +3 -3
- package/build/client/_app/immutable/nodes/17.COHkD98p.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.COHkD98p.js.gz +0 -0
- package/build/client/_app/immutable/nodes/18.DQVit7Md.js +11 -0
- package/build/client/_app/immutable/nodes/18.DQVit7Md.js.br +0 -0
- package/build/client/_app/immutable/nodes/18.DQVit7Md.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DVwYttKv.js +35 -0
- package/build/client/_app/immutable/nodes/2.DVwYttKv.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DVwYttKv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.B1RGTOJ8.js → 3.BhmyTb3R.js} +1 -1
- package/build/client/_app/immutable/nodes/3.BhmyTb3R.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.BhmyTb3R.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.D2jcIUpD.js → 4.CxATX0ci.js} +1 -1
- package/build/client/_app/immutable/nodes/4.CxATX0ci.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.CxATX0ci.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.CUyCIyRd.js → 5.Dal1qxB1.js} +1 -1
- package/build/client/_app/immutable/nodes/5.Dal1qxB1.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.Dal1qxB1.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.B8HsGA2V.js → 6.iAOxBhJw.js} +1 -1
- package/build/client/_app/immutable/nodes/6.iAOxBhJw.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.iAOxBhJw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.jY56-_OU.js → 8.DFhKu3dp.js} +1 -1
- package/build/client/_app/immutable/nodes/8.DFhKu3dp.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DFhKu3dp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.DRIEv5m9.js +2 -0
- package/build/client/_app/immutable/nodes/9.DRIEv5m9.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.DRIEv5m9.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-4QCErf9j.js → 0-CIzAMtA3.js} +3 -3
- package/build/server/chunks/{0-4QCErf9j.js.map → 0-CIzAMtA3.js.map} +1 -1
- package/build/server/chunks/{1-Dsjy8Hzc.js → 1-D1heuNbf.js} +2 -2
- package/build/server/chunks/{1-Dsjy8Hzc.js.map → 1-D1heuNbf.js.map} +1 -1
- package/build/server/chunks/{10-8061c8ui.js → 10-CjLtjXyZ.js} +2 -2
- package/build/server/chunks/{10-8061c8ui.js.map → 10-CjLtjXyZ.js.map} +1 -1
- package/build/server/chunks/{17-3_5wsIEX.js → 17-DklEmmOx.js} +4 -4
- package/build/server/chunks/{17-3_5wsIEX.js.map → 17-DklEmmOx.js.map} +1 -1
- package/build/server/chunks/{18-D73Mw140.js → 18-BJS-eRcz.js} +4 -4
- package/build/server/chunks/18-BJS-eRcz.js.map +1 -0
- package/build/server/chunks/{2-DM0VjzFi.js → 2-DCrAVYXs.js} +4 -4
- package/build/server/chunks/2-DCrAVYXs.js.map +1 -0
- package/build/server/chunks/{3-B3zlFGkL.js → 3-BpTqa4DU.js} +2 -2
- package/build/server/chunks/{3-B3zlFGkL.js.map → 3-BpTqa4DU.js.map} +1 -1
- package/build/server/chunks/{4-tESdMZpI.js → 4-B7GjwQzI.js} +2 -2
- package/build/server/chunks/{4-tESdMZpI.js.map → 4-B7GjwQzI.js.map} +1 -1
- package/build/server/chunks/{5-BJMTlq4U.js → 5-XjS__bcp.js} +2 -2
- package/build/server/chunks/{5-BJMTlq4U.js.map → 5-XjS__bcp.js.map} +1 -1
- package/build/server/chunks/{6-CDK2Aia6.js → 6-DWkWptmB.js} +2 -2
- package/build/server/chunks/{6-CDK2Aia6.js.map → 6-DWkWptmB.js.map} +1 -1
- package/build/server/chunks/{8-BJbDytoU.js → 8-_swAx6gL.js} +2 -2
- package/build/server/chunks/{8-BJbDytoU.js.map → 8-_swAx6gL.js.map} +1 -1
- package/build/server/chunks/{9-BNfIeSqk.js → 9-NEe24O4u.js} +4 -4
- package/build/server/chunks/9-NEe24O4u.js.map +1 -0
- package/build/server/chunks/{ChatStepTrace-DQL3qlna.js → ChatStepTrace-CX2Zolmp.js} +21 -8
- package/build/server/chunks/ChatStepTrace-CX2Zolmp.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-DK7yl8vI.js → _layout.svelte-PtdpfgwJ.js} +66 -4
- package/build/server/chunks/_layout.svelte-PtdpfgwJ.js.map +1 -0
- package/build/server/chunks/{_page.svelte-ZWNBigwS.js → _page.svelte-C3gizoSD.js} +7 -4
- package/build/server/chunks/_page.svelte-C3gizoSD.js.map +1 -0
- package/build/server/chunks/{_page.svelte-D6bSXGHX.js → _page.svelte-CoCBnE2l.js} +8 -5
- package/build/server/chunks/_page.svelte-CoCBnE2l.js.map +1 -0
- package/build/server/chunks/{_page.svelte-ej3vdYeF.js → _page.svelte-DZvcjON6.js} +3 -2
- package/build/server/chunks/_page.svelte-DZvcjON6.js.map +1 -0
- package/build/server/chunks/steps-DzZCg39h.js +8 -0
- package/build/server/chunks/steps-DzZCg39h.js.map +1 -0
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +13 -13
- package/build/server/manifest.js.map +1 -1
- package/package.json +4 -4
- package/src/backend/lib/backend-restart.ts +15 -0
- package/src/backend/roleplay/router.ts +42 -5
- package/src/backend/roleplay/schema-file.spec.ts +38 -0
- package/src/backend/roleplay/schema-file.ts +33 -0
- package/src/backend/tests/academy.ts +4 -2
- package/src/backend/tests/analyze.ts +2 -1
- package/src/backend/tests/emulate-agents.ts +13 -21
- package/src/backend/tests/pii-sanitized-test-drafts.spec.ts +162 -0
- package/src/backend/tests/pii-sanitized-test-drafts.ts +106 -0
- package/src/backend/tests/pii-sanitizer.spec.ts +145 -0
- package/src/backend/tests/pii-sanitizer.ts +171 -0
- package/src/backend/tests/router.ts +37 -0
- package/src/lib/agent-catalog.ts +4 -0
- package/src/lib/agents-context.ts +8 -0
- package/src/lib/api-telescope/client.ts +174 -0
- package/src/lib/api-telescope/index.ts +4 -0
- package/src/lib/api-telescope/latency-timeline-view-state.spec.ts +25 -0
- package/src/lib/api-telescope/latency-timeline-view-state.ts +86 -0
- package/src/lib/api-telescope/latency.ts +252 -0
- package/src/lib/api-telescope/source-selection.ts +20 -0
- package/src/lib/api-telescope/sources.server.ts +94 -0
- package/src/lib/api-telescope/types.ts +143 -0
- package/src/lib/components/Button.svelte +62 -0
- package/src/lib/components/CollapseExpand.svelte +425 -0
- package/src/lib/components/CopyTracesDropdown.svelte +118 -0
- package/src/lib/components/Dialog.svelte +69 -0
- package/src/lib/components/Dropdown.svelte +111 -0
- package/src/lib/components/History.svelte +174 -0
- package/src/lib/components/Icon.svelte +94 -0
- package/src/lib/components/Input.svelte +43 -0
- package/src/lib/components/Link.svelte +45 -0
- package/src/lib/components/Modal.svelte +45 -0
- package/src/lib/components/Panel.svelte +12 -0
- package/src/lib/components/PopoverModal.svelte +34 -0
- package/src/lib/components/Popper.svelte +109 -0
- package/src/lib/components/Tab.svelte +91 -0
- package/src/lib/components/Tabs.svelte +140 -0
- package/src/lib/components/agent-colors.ts +70 -0
- package/src/lib/dom/text-selection.ts +97 -0
- package/src/lib/edit/edit-vm.spec.ts +115 -0
- package/src/lib/edit/edit-vm.ts +169 -0
- package/src/lib/edit/edit-workspace-context.ts +56 -0
- package/src/lib/edit/highlight-styles.spec.ts +14 -0
- package/src/lib/edit/prompt-highlighter.spec.ts +80 -0
- package/src/lib/edit/prompt-highlighter.ts +155 -0
- package/src/lib/edit/quote-matching.ts +97 -0
- package/src/lib/monaco/bosun-theme.ts +125 -0
- package/src/lib/monaco/font.ts +2 -0
- package/src/lib/monaco-workers.ts +28 -0
- package/src/lib/steps.ts +19 -0
- package/src/lib/tests/pii-sanitized-test-draft.ts +50 -0
- package/src/lib/trpc-client.ts +16 -0
- package/src/lib/ws-client.ts +144 -0
- package/src/lib/ws-message.ts +150 -0
- package/build/client/_app/immutable/assets/0.B-Br6U4N.css +0 -1
- package/build/client/_app/immutable/assets/0.B-Br6U4N.css.br +0 -0
- package/build/client/_app/immutable/assets/0.B-Br6U4N.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BOuo-4gP.js +0 -1
- package/build/client/_app/immutable/chunks/BOuo-4gP.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOuo-4gP.js.gz +0 -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/CX0Ekq8t.js +0 -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/Cyj62X2W.js +0 -2
- package/build/client/_app/immutable/chunks/Cyj62X2W.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cyj62X2W.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DSDSeO7L.js +0 -1
- package/build/client/_app/immutable/chunks/DSDSeO7L.js.br +0 -0
- package/build/client/_app/immutable/chunks/DSDSeO7L.js.gz +0 -0
- package/build/client/_app/immutable/chunks/De8YgKS3.js.br +0 -1
- package/build/client/_app/immutable/chunks/De8YgKS3.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.DK_wVDeR.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DK_wVDeR.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.xQy-2aGo.js +0 -1
- package/build/client/_app/immutable/entry/start.xQy-2aGo.js.br +0 -2
- package/build/client/_app/immutable/entry/start.xQy-2aGo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.5fEbn14Q.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.5fEbn14Q.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.CJrSN8zL.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CJrSN8zL.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.SZwTlOEA.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.SZwTlOEA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/17.D-KFl7Vk.js.br +0 -0
- package/build/client/_app/immutable/nodes/17.D-KFl7Vk.js.gz +0 -0
- package/build/client/_app/immutable/nodes/18.DqRdJY9A.js +0 -11
- package/build/client/_app/immutable/nodes/18.DqRdJY9A.js.br +0 -0
- package/build/client/_app/immutable/nodes/18.DqRdJY9A.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.B3Uuk25v.js +0 -35
- package/build/client/_app/immutable/nodes/2.B3Uuk25v.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.B3Uuk25v.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.B1RGTOJ8.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.B1RGTOJ8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.D2jcIUpD.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.D2jcIUpD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CUyCIyRd.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CUyCIyRd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.B8HsGA2V.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.B8HsGA2V.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.jY56-_OU.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.jY56-_OU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.v5dX6L9n.js +0 -2
- package/build/client/_app/immutable/nodes/9.v5dX6L9n.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.v5dX6L9n.js.gz +0 -0
- package/build/server/chunks/18-D73Mw140.js.map +0 -1
- package/build/server/chunks/2-DM0VjzFi.js.map +0 -1
- package/build/server/chunks/9-BNfIeSqk.js.map +0 -1
- package/build/server/chunks/ChatStepTrace-DQL3qlna.js.map +0 -1
- package/build/server/chunks/_layout.svelte-DK7yl8vI.js.map +0 -1
- package/build/server/chunks/_page.svelte-D6bSXGHX.js.map +0 -1
- package/build/server/chunks/_page.svelte-ZWNBigwS.js.map +0 -1
- package/build/server/chunks/_page.svelte-ej3vdYeF.js.map +0 -1
- /package/build/client/_app/immutable/assets/{Popper.CLTyHc88.css → steps.CLTyHc88.css} +0 -0
- /package/build/client/_app/immutable/assets/{Popper.CLTyHc88.css.br → steps.CLTyHc88.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{Popper.CLTyHc88.css.gz → steps.CLTyHc88.css.gz} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { k as escape_html, p as attr_class, az as clsx, l as attr, n as stringify, m as derived } from './index-rHCWxLFZ.js';
|
|
2
2
|
import { o as onDestroy } from './index-server-BMxlf3ZC.js';
|
|
3
3
|
import { I as Icon } from './Icon-DadJPtVP.js';
|
|
4
|
+
import { i as isMainStepName } from './steps-DzZCg39h.js';
|
|
4
5
|
import './trpc-client-D8L6vWf4.js';
|
|
5
6
|
|
|
6
7
|
function createDragSelectClickGuard(options = {}) {
|
|
@@ -119,7 +120,7 @@ function isStepTrace(entry) {
|
|
|
119
120
|
return !("operationName" in entry) && !("eventName" in entry);
|
|
120
121
|
}
|
|
121
122
|
function isMainStepTrace(entry) {
|
|
122
|
-
return isStepTrace(entry) && (entry.name
|
|
123
|
+
return isStepTrace(entry) && isMainStepName(entry.name);
|
|
123
124
|
}
|
|
124
125
|
function findMainStepTraceNear(entries, index, options = {}) {
|
|
125
126
|
if (index < 0) return null;
|
|
@@ -145,6 +146,7 @@ function ChatConversationalTrace($$renderer, $$props) {
|
|
|
145
146
|
testSourceStep = void 0,
|
|
146
147
|
testEntries = void 0,
|
|
147
148
|
requireTestSourceStep = false,
|
|
149
|
+
testCreationMode,
|
|
148
150
|
analyzeDisabled = false,
|
|
149
151
|
onAnalyze,
|
|
150
152
|
onRegenerate,
|
|
@@ -156,6 +158,7 @@ function ChatConversationalTrace($$renderer, $$props) {
|
|
|
156
158
|
suppressActionRow = false
|
|
157
159
|
} = $$props;
|
|
158
160
|
let added = "idle";
|
|
161
|
+
let testDraftOpen = false;
|
|
159
162
|
const clickGuard = createDragSelectClickGuard();
|
|
160
163
|
onDestroy(clickGuard.cleanup);
|
|
161
164
|
function agentName(id) {
|
|
@@ -261,7 +264,7 @@ function ChatConversationalTrace($$renderer, $$props) {
|
|
|
261
264
|
$$renderer3.push(`<div class="mt-1 flex flex-wrap items-center gap-x-2 gap-y-1">`);
|
|
262
265
|
if (isAddTestCandidate()) {
|
|
263
266
|
$$renderer3.push("<!--[0-->");
|
|
264
|
-
$$renderer3.push(`<button type="button"${attr("disabled", !isAddTestEligible() || added !== "idle", true)}${attr("title", !isAddTestEligible() ? "Select an agent in the sidebar before adding a test" : void 0)}${attr_class(`inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 transition-colors focus:outline-none focus-visible:outline-none ${!isAddTestEligible() ? "cursor-default text-rc-gray-400" : "cursor-pointer text-rc-gray-400 hover:bg-rc-gray-900 hover:text-rc-gray-200"}`)}>`);
|
|
267
|
+
$$renderer3.push(`<button type="button"${attr("disabled", !isAddTestEligible() || added !== "idle" || testDraftOpen, true)}${attr("title", !isAddTestEligible() ? "Select an agent in the sidebar before adding a test" : void 0)}${attr_class(`inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 transition-colors focus:outline-none focus-visible:outline-none ${!isAddTestEligible() ? "cursor-default text-rc-gray-400" : "cursor-pointer text-rc-gray-400 hover:bg-rc-gray-900 hover:text-rc-gray-200"}`)}>`);
|
|
265
268
|
if (!isAddTestEligible()) {
|
|
266
269
|
$$renderer3.push("<!--[2-->");
|
|
267
270
|
$$renderer3.push(`Select agent to add test`);
|
|
@@ -304,6 +307,10 @@ function ChatConversationalTrace($$renderer, $$props) {
|
|
|
304
307
|
{
|
|
305
308
|
$$renderer3.push("<!--[-1-->");
|
|
306
309
|
}
|
|
310
|
+
$$renderer3.push(`<!--]--> `);
|
|
311
|
+
{
|
|
312
|
+
$$renderer3.push("<!--[-1-->");
|
|
313
|
+
}
|
|
307
314
|
$$renderer3.push(`<!--]-->`);
|
|
308
315
|
}
|
|
309
316
|
do {
|
|
@@ -322,9 +329,11 @@ function ChatStepTrace($$renderer, $$props) {
|
|
|
322
329
|
agentId,
|
|
323
330
|
region = null,
|
|
324
331
|
fallbackConversation = null,
|
|
325
|
-
runtimeContext
|
|
332
|
+
runtimeContext,
|
|
333
|
+
testCreationMode
|
|
326
334
|
} = $$props;
|
|
327
335
|
let addStatus = "idle";
|
|
336
|
+
let testDraftOpen = false;
|
|
328
337
|
const clickGuard = createDragSelectClickGuard();
|
|
329
338
|
onDestroy(clickGuard.cleanup);
|
|
330
339
|
function getPromptForDiff(t) {
|
|
@@ -417,14 +426,14 @@ function ChatStepTrace($$renderer, $$props) {
|
|
|
417
426
|
const hasError = derived(() => trace.error != null);
|
|
418
427
|
const oneLine = derived(() => trace.name);
|
|
419
428
|
const mainPromptSimilarityPct = derived(() => {
|
|
420
|
-
if (trace.name
|
|
429
|
+
if (!isMainStepName(trace.name)) return null;
|
|
421
430
|
const current = getPromptForDiff(trace);
|
|
422
431
|
const baseline = getPromptForDiff(compareTrace);
|
|
423
432
|
if (current == null || baseline == null) return null;
|
|
424
433
|
return similarityPercent(current, baseline);
|
|
425
434
|
});
|
|
426
435
|
const mainCachedTokensPct = derived(() => {
|
|
427
|
-
if (trace.name
|
|
436
|
+
if (!isMainStepName(trace.name)) return null;
|
|
428
437
|
return cachedPromptTokensPercent(trace);
|
|
429
438
|
});
|
|
430
439
|
const CACHE_OK_THRESHOLD_PCT = 90;
|
|
@@ -435,7 +444,7 @@ function ChatStepTrace($$renderer, $$props) {
|
|
|
435
444
|
return typeof value === "string" && BREAK_TAG_REGEX.test(value);
|
|
436
445
|
}
|
|
437
446
|
const mainPromptCacheLabel = derived(() => {
|
|
438
|
-
if (trace.name
|
|
447
|
+
if (!isMainStepName(trace.name)) return null;
|
|
439
448
|
if (mainCachedTokensPct() != null) {
|
|
440
449
|
const cacheMiss = mainCachedTokensPct() === 0 && mainPromptSimilarityPct() != null && mainPromptSimilarityPct() >= CACHE_MISS_SIMILARITY_THRESHOLD_PCT;
|
|
441
450
|
if (cacheMiss) {
|
|
@@ -516,7 +525,7 @@ function ChatStepTrace($$renderer, $$props) {
|
|
|
516
525
|
$$renderer3.push(`<!--]--></div> `);
|
|
517
526
|
if (hasJsonResponse()) {
|
|
518
527
|
$$renderer3.push("<!--[0-->");
|
|
519
|
-
$$renderer3.push(`<div class="mb-2 ml-7 max-w-[83%]"><button type="button" class="block w-full cursor-pointer overflow-hidden rounded-lg border border-rc-gray-110 bg-rc-gray-800 p-3 text-left hover:bg-rc-gray-700"><pre class="truncate whitespace-pre font-mono text-sm text-rc-gray-100">${escape_html(responsePreview())}</pre></button> <div class="mt-1 flex items-center"><button type="button"${attr("disabled", !agentId?.trim() || typeof trace.receivedContext === "undefined" || addStatus !== "idle", true)} class="inline-flex items-center rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 disabled:cursor-not-allowed disabled:opacity-50">${escape_html("Add test")}</button></div></div>`);
|
|
528
|
+
$$renderer3.push(`<div class="mb-2 ml-7 max-w-[83%]"><button type="button" class="block w-full cursor-pointer overflow-hidden rounded-lg border border-rc-gray-110 bg-rc-gray-800 p-3 text-left hover:bg-rc-gray-700"><pre class="truncate whitespace-pre font-mono text-sm text-rc-gray-100">${escape_html(responsePreview())}</pre></button> <div class="mt-1 flex items-center"><button type="button"${attr("disabled", !agentId?.trim() || typeof trace.receivedContext === "undefined" || addStatus !== "idle" || testDraftOpen, true)} class="inline-flex items-center rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 disabled:cursor-not-allowed disabled:opacity-50">${escape_html("Add test")}</button></div></div>`);
|
|
520
529
|
} else {
|
|
521
530
|
$$renderer3.push("<!--[-1-->");
|
|
522
531
|
}
|
|
@@ -528,6 +537,10 @@ function ChatStepTrace($$renderer, $$props) {
|
|
|
528
537
|
{
|
|
529
538
|
$$renderer3.push("<!--[-1-->");
|
|
530
539
|
}
|
|
540
|
+
$$renderer3.push(`<!--]--> `);
|
|
541
|
+
{
|
|
542
|
+
$$renderer3.push("<!--[-1-->");
|
|
543
|
+
}
|
|
531
544
|
$$renderer3.push(`<!--]-->`);
|
|
532
545
|
}
|
|
533
546
|
do {
|
|
@@ -540,4 +553,4 @@ function ChatStepTrace($$renderer, $$props) {
|
|
|
540
553
|
}
|
|
541
554
|
|
|
542
555
|
export { ChatApiCallTrace as C, ChatConversationalTrace as a, ChatStepTrace as b, findStringifiedConversationBefore as c, findMainStepTraceNear as f };
|
|
543
|
-
//# sourceMappingURL=ChatStepTrace-
|
|
556
|
+
//# sourceMappingURL=ChatStepTrace-CX2Zolmp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatStepTrace-CX2Zolmp.js","sources":["../../../.svelte-kit/adapter-node/chunks/ChatStepTrace.js"],"sourcesContent":["import { e as escape_html, b as attr_class, g as clsx, f as derived, d as attr, s as stringify } from \"./index.js\";\nimport { o as onDestroy } from \"./index-server.js\";\n/* empty css */\n/* empty css */\nimport { I as Icon } from \"./Icon.js\";\nimport { i as isMainStepName } from \"./steps.js\";\nimport \"./trpc-client.js\";\nfunction createDragSelectClickGuard(options = {}) {\n const thresholdPx = options.thresholdPx ?? 4;\n const dragCursor = options.dragCursor ?? \"text\";\n let startX = 0;\n let startY = 0;\n let didDrag = false;\n let pointerDown = false;\n let cursorEl = null;\n let abortController = null;\n function cleanup() {\n pointerDown = false;\n didDrag = false;\n cursorEl?.style.removeProperty(\"cursor\");\n cursorEl = null;\n abortController?.abort();\n abortController = null;\n }\n function onPointerDown(event) {\n if (typeof window === \"undefined\") return;\n if (event.button !== 0) return;\n abortController?.abort();\n abortController = null;\n cursorEl?.style.removeProperty(\"cursor\");\n startX = event.clientX;\n startY = event.clientY;\n didDrag = false;\n pointerDown = true;\n cursorEl = event.currentTarget instanceof HTMLElement ? event.currentTarget : null;\n const controller = new AbortController();\n abortController = controller;\n const onMove = (moveEvent) => {\n if (!pointerDown || didDrag) return;\n const dx = Math.abs(moveEvent.clientX - startX);\n const dy = Math.abs(moveEvent.clientY - startY);\n if (dx + dy < thresholdPx) return;\n didDrag = true;\n cursorEl?.style.setProperty(\"cursor\", dragCursor);\n };\n const onEnd = () => {\n pointerDown = false;\n cursorEl?.style.removeProperty(\"cursor\");\n cursorEl = null;\n controller.abort();\n if (abortController === controller) abortController = null;\n };\n window.addEventListener(\"pointermove\", onMove, { signal: controller.signal });\n window.addEventListener(\"pointerup\", onEnd, { signal: controller.signal });\n window.addEventListener(\"pointercancel\", onEnd, { signal: controller.signal });\n }\n function shouldSuppressClick(event) {\n return event.detail > 0 && didDrag;\n }\n return { onPointerDown, shouldSuppressClick, cleanup };\n}\nfunction ChatApiCallTrace($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { trace } = $$props;\n const clickGuard = createDragSelectClickGuard();\n onDestroy(clickGuard.cleanup);\n function formatHHmmss(ms) {\n if (typeof ms !== \"number\" || !Number.isFinite(ms)) return null;\n const d = new Date(ms);\n if (Number.isNaN(d.getTime())) return null;\n const hh = String(d.getHours()).padStart(2, \"0\");\n const mm = String(d.getMinutes()).padStart(2, \"0\");\n const ss = String(d.getSeconds()).padStart(2, \"0\");\n return `${hh}:${mm}:${ss}`;\n }\n const time = derived(() => formatHHmmss(trace.createdAt));\n const derivedError = derived(() => {\n if (trace.error != null) return trace.error;\n const isFailed = trace.ok === false || typeof trace.status === \"number\" && trace.status >= 400;\n if (!isFailed) return void 0;\n const resp = trace.response;\n if (resp && typeof resp === \"object\") {\n if (\"error\" in resp && resp.error != null) return resp.error;\n }\n return { status: trace.status, ok: trace.ok };\n });\n const hasError = derived(() => derivedError() != null);\n const oneLine = derived(() => trace.operationName);\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n $$renderer3.push(`<button type=\"button\" class=\"flex w-full cursor-pointer select-text items-baseline gap-2 truncate rounded-md bg-transparent px-2 py-1 text-left text-sm text-rc-gray-200 hover:bg-rc-gray-800/40\">`);\n Icon($$renderer3, {\n name: hasError() ? \"close\" : \"checkmark\",\n width: 18,\n height: 18,\n class: hasError() ? \"self-center text-red-400\" : \"self-center text-rc-green-200\"\n });\n $$renderer3.push(`<!----> `);\n if (time()) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<span class=\"text-[13px] leading-none text-rc-gray-400\">${escape_html(time())}</span>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> <span${attr_class(clsx(hasError() ? \"text-red-200\" : \"\"))}>${escape_html(oneLine())}</span></button> `);\n {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]-->`);\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n });\n}\nfunction isStepTrace(entry) {\n return !(\"operationName\" in entry) && !(\"eventName\" in entry);\n}\nfunction isMainStepTrace(entry) {\n return isStepTrace(entry) && isMainStepName(entry.name);\n}\nfunction findMainStepTraceNear(entries, index, options = {}) {\n if (index < 0) return null;\n const matches = (entry) => {\n if (!isMainStepTrace(entry)) return false;\n if (!options.requireRenderedPrompt) return true;\n return typeof entry.renderedPrompt === \"string\" && entry.renderedPrompt.trim().length > 0;\n };\n return [...entries.slice(0, index)].reverse().find(matches) ?? entries.slice(index + 1).find(matches) ?? null;\n}\nfunction findStringifiedConversationBefore(entries, index) {\n if (index <= 0) return null;\n return [...entries.slice(0, index)].reverse().map((entry) => isStepTrace(entry) ? entry.stringifiedConversation?.trim() : \"\").find(Boolean) ?? null;\n}\nfunction ChatConversationalTrace($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let {\n trace,\n context,\n agentId,\n region = null,\n allowAddTest = true,\n testSourceStep = void 0,\n testEntries = void 0,\n requireTestSourceStep = false,\n testCreationMode,\n analyzeDisabled = false,\n onAnalyze,\n onRegenerate,\n onRevert,\n showSeeVariants = false,\n onSeeVariants,\n variantSelectionState = \"none\",\n onSelectInVariantMode,\n suppressActionRow = false\n } = $$props;\n let added = \"idle\";\n let testDraftOpen = false;\n const clickGuard = createDragSelectClickGuard();\n onDestroy(clickGuard.cleanup);\n function agentName(id) {\n if (!id) return \"\";\n return id.split(\"/\").at(-1) ?? id;\n }\n function getInitial(id) {\n const first = agentName(id).trim().charAt(0);\n return first ? first.toUpperCase() : \"?\";\n }\n const sender = derived(() => {\n if (trace.eventName === \"finished-main-streaming-step\" || trace.eventName === \"sent-message\") {\n return \"agent\";\n }\n if (trace.role === \"system\" || trace?.bosunInputMessageSender === \"system\") {\n return \"system\";\n }\n return trace.role === \"user\" ? \"user\" : \"user\";\n });\n const bubbleMaxWidthClass = derived(() => {\n if (sender() === \"agent\") return \"max-w-[83%]\";\n if (sender() === \"user\") return \"max-w-[90%] sm:max-w-[80%] md:max-w-[70%]\";\n if (sender() === \"system\") return \"max-w-[90%] sm:max-w-[85%] md:max-w-[75%]\";\n return \"\";\n });\n const showRevert = derived(() => (sender() === \"user\" || sender() === \"system\") && !!onRevert && // Hide for older traces that predate bosun state metadata.\n trace?.bosunPrevStateId !== void 0);\n const hasError = derived(() => trace.error != null);\n const isVariantSelectable = derived(() => variantSelectionState === \"source\");\n function formatHHmmss(ms) {\n if (typeof ms !== \"number\" || !Number.isFinite(ms)) return null;\n const d = new Date(ms);\n if (Number.isNaN(d.getTime())) return null;\n const hh = String(d.getHours()).padStart(2, \"0\");\n const mm = String(d.getMinutes()).padStart(2, \"0\");\n const ss = String(d.getSeconds()).padStart(2, \"0\");\n return `${hh}:${mm}:${ss}`;\n }\n const time = derived(() => formatHHmmss(trace?.createdAt));\n function isAddTestCandidate() {\n return allowAddTest && sender() === \"agent\" && trace.eventName !== \"transfer-requested\" && (trace.eventName === \"finished-main-streaming-step\" || trace.eventName === \"sent-message\");\n }\n function isAddTestEligible() {\n if (!isAddTestCandidate() || !(agentId && agentId.trim())) return false;\n if (!requireTestSourceStep) return true;\n return !!testSourceStep && typeof testSourceStep.receivedContext !== \"undefined\";\n }\n function isAnalyzeEligible() {\n return sender() === \"agent\" && trace.eventName !== \"transfer-requested\" && !!(agentId && agentId.trim()) && (trace.eventName === \"finished-main-streaming-step\" || trace.eventName === \"sent-message\");\n }\n function isRegenerateEligible() {\n return isAnalyzeEligible();\n }\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n $$renderer3.push(`<div${attr_class(\"group mb-2 flex w-full items-start\", void 0, { \"justify-end\": sender() === \"user\" || sender() === \"system\" })}>`);\n if (trace.eventName === \"transfer-requested\" || trace.eventName === \"hangup-requested\") {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<div class=\"flex w-full justify-center\"><div${attr_class(`cursor-pointer select-text rounded-full border border-rc-gray-650 bg-rc-gray-800/40 px-4 py-2 text-sm text-rc-gray-100 ${hasError() ? \"border-red-500 bg-red-950/30 text-red-200\" : \"\"}`)} role=\"button\" tabindex=\"0\"><div class=\"flex flex-wrap items-baseline gap-x-2 gap-y-0\">`);\n if (time()) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<span class=\"text-[13px] leading-none text-rc-gray-400\">${escape_html(time())}</span>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> `);\n if (trace.eventName === \"transfer-requested\") {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<div class=\"min-w-0 break-words\">Transfer requested: ${escape_html(trace.content)}</div>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n $$renderer3.push(`<div class=\"min-w-0 break-words\">Conversation hanged up.</div>`);\n }\n $$renderer3.push(`<!--]--></div></div></div>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n if (sender() === \"agent\" && agentId) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<div class=\"mr-2 mt-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-sm bg-rc-green-700 text-sm uppercase text-rc-gray-100 backdrop-blur-md\"${attr(\"title\", agentName(agentId))}>${escape_html(getInitial(agentId))}</div>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> `);\n if (showRevert()) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<button type=\"button\" title=\"Edit this message\" class=\"mr-2 mt-1 shrink-0 self-start rounded p-1 text-rc-gray-500 opacity-80 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none\">`);\n Icon($$renderer3, { name: \"undo\", width: 16, height: 16 });\n $$renderer3.push(`<!----></button>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> <div${attr_class(`min-w-0 ${stringify(bubbleMaxWidthClass())}`)}><div role=\"button\" tabindex=\"0\" class=\"cursor-pointer select-text\"><div${attr_class(`rounded-lg ${sender() === \"system\" ? \"justify-between whitespace-pre-line break-words border border-emerald-500 text-emerald-500\" : isVariantSelectable() ? \"w-full whitespace-pre-line break-words border border-rc-green-450 bg-transparent backdrop-blur-md hover:bg-rc-green-700\" : sender() !== \"user\" ? \"w-full whitespace-pre-line break-words bg-rc-green-700 backdrop-blur-md\" : \"whitespace-pre-line break-words bg-rc-gray-700\"} ${sender() === \"system\" || isVariantSelectable() ? \"\" : \"border-thin border-rc-gray-110\"} p-2 pt-1 text-rc-gray-100 ${hasError() ? \"border-red-500 bg-red-950/30 text-red-200\" : \"\"}`)}><div>${escape_html(trace.content)}</div> `);\n if (time()) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<div class=\"mt-1 text-right text-xs text-rc-gray-200/70\">${escape_html(time())}</div>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--></div></div> `);\n if (!suppressActionRow && (isAnalyzeEligible() || isAddTestCandidate() || isRegenerateEligible() && onRegenerate || showSeeVariants)) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<div class=\"mt-1 flex flex-wrap items-center gap-x-2 gap-y-1\">`);\n if (isAddTestCandidate()) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<button type=\"button\"${attr(\"disabled\", !isAddTestEligible() || added !== \"idle\" || testDraftOpen, true)}${attr(\"title\", !isAddTestEligible() ? \"Select an agent in the sidebar before adding a test\" : void 0)}${attr_class(`inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 transition-colors focus:outline-none focus-visible:outline-none ${!isAddTestEligible() ? \"cursor-default text-rc-gray-400\" : \"cursor-pointer text-rc-gray-400 hover:bg-rc-gray-900 hover:text-rc-gray-200\"}`)}>`);\n if (!isAddTestEligible()) {\n $$renderer3.push(\"<!--[2-->\");\n $$renderer3.push(`Select agent to add test`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n $$renderer3.push(`Add test`);\n }\n $$renderer3.push(`<!--]--></button>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> `);\n if (isAnalyzeEligible() && onAnalyze) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<button type=\"button\"${attr(\"disabled\", analyzeDisabled, true)} class=\"inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent disabled:hover:text-rc-gray-400\">Analyze</button>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> `);\n if (isRegenerateEligible() && onRegenerate) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<button type=\"button\" class=\"inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none\">Regenerate</button>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> `);\n if (showSeeVariants && onSeeVariants) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<button type=\"button\" class=\"inline-flex items-center text-nowrap rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 focus:outline-none focus-visible:outline-none\">See variants</button>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--></div>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--></div>`);\n }\n $$renderer3.push(`<!--]--></div> `);\n {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> `);\n {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]-->`);\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n });\n}\nfunction ChatStepTrace($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let {\n trace,\n compareTrace,\n agentId,\n region = null,\n fallbackConversation = null,\n runtimeContext,\n testCreationMode\n } = $$props;\n let addStatus = \"idle\";\n let testDraftOpen = false;\n const clickGuard = createDragSelectClickGuard();\n onDestroy(clickGuard.cleanup);\n function getPromptForDiff(t) {\n if (!t) return null;\n if (typeof t.renderedPrompt === \"string\") return t.renderedPrompt;\n return null;\n }\n function commonPrefixLength(a, b) {\n if (a === b) return a.length;\n const max = Math.min(a.length, b.length);\n for (let i = 0; i < max; i++) {\n if (a.charCodeAt(i) !== b.charCodeAt(i)) return i;\n }\n return max;\n }\n function similarityPercent(current, baseline) {\n const denom = Math.max(current.length, baseline.length);\n if (denom === 0) return 100;\n const prefixLen = commonPrefixLength(current, baseline);\n return Math.floor(prefixLen / denom * 100);\n }\n function cachedPromptTokensPercent(trace2) {\n const usage = trace2.llmUsage;\n if (!usage) return null;\n if (typeof usage.promptTokens !== \"number\" || !Number.isFinite(usage.promptTokens)) return null;\n if (usage.promptTokens <= 0) return null;\n if (typeof usage.cachedPromptTokens !== \"number\" || !Number.isFinite(usage.cachedPromptTokens)) return null;\n if (usage.cachedPromptTokens < 0) return null;\n return Math.max(0, Math.min(100, Math.floor(usage.cachedPromptTokens / usage.promptTokens * 100)));\n }\n function safeJsonStringify(value) {\n const seen = /* @__PURE__ */ new WeakSet();\n try {\n return JSON.stringify(\n value,\n (_, v) => {\n if (typeof v === \"bigint\") return v.toString();\n if (v instanceof Error) {\n return { name: v.name, message: v.message, stack: v.stack };\n }\n if (typeof v === \"object\" && v !== null) {\n if (seen.has(v)) return \"[Circular]\";\n seen.add(v);\n }\n return v;\n },\n 2\n ) ?? \"\";\n } catch {\n return String(value);\n }\n }\n function formatMaybeJson(value) {\n if (value == null) return \"\";\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) return \"\";\n try {\n return JSON.stringify(JSON.parse(trimmed), null, 2);\n } catch {\n return value;\n }\n }\n return safeJsonStringify(value);\n }\n function jsonPreview(value) {\n const formatted = formatMaybeJson(value);\n const lines = formatted.split(\"\\n\");\n if (lines.length <= 1) return formatted;\n const opening = lines[0]?.trim();\n const firstContentLine = lines.slice(1).find((line) => line.trim())?.trim();\n if (!opening || !firstContentLine) return formatted;\n const closing = opening === \"[\" ? \"]\" : \"}\";\n if (lines.length === 3 && lines.at(-1)?.trim() === closing) {\n return `${opening} ${firstContentLine} ${closing}`;\n }\n const nestedClosing = firstContentLine.endsWith(\"{\") ? \" }\" : firstContentLine.endsWith(\"[\") ? \" ]\" : \"\";\n return `${opening} ${firstContentLine} …${nestedClosing} ${closing}`;\n }\n function formatHHmmss(ms) {\n if (typeof ms !== \"number\" || !Number.isFinite(ms)) return null;\n const d = new Date(ms);\n if (Number.isNaN(d.getTime())) return null;\n const hh = String(d.getHours()).padStart(2, \"0\");\n const mm = String(d.getMinutes()).padStart(2, \"0\");\n const ss = String(d.getSeconds()).padStart(2, \"0\");\n return `${hh}:${mm}:${ss}`;\n }\n const time = derived(() => formatHHmmss(trace.createdAt));\n const hasError = derived(() => trace.error != null);\n const oneLine = derived(() => trace.name);\n const mainPromptSimilarityPct = derived(() => {\n if (!isMainStepName(trace.name)) return null;\n const current = getPromptForDiff(trace);\n const baseline = getPromptForDiff(compareTrace);\n if (current == null || baseline == null) return null;\n return similarityPercent(current, baseline);\n });\n const mainCachedTokensPct = derived(() => {\n if (!isMainStepName(trace.name)) return null;\n return cachedPromptTokensPercent(trace);\n });\n const CACHE_OK_THRESHOLD_PCT = 90;\n const CACHE_MISS_SIMILARITY_THRESHOLD_PCT = 90;\n const BREAK_TAG_REGEX = /<break\\b[^>]*\\/?>/i;\n const BREAK_TAG_TOOLTIP = '<break /> tag disables streaming and increases latency. If pauses are not large enough, use \"...\" instead.';\n function hasBreakTag(value) {\n return typeof value === \"string\" && BREAK_TAG_REGEX.test(value);\n }\n const mainPromptCacheLabel = derived(() => {\n if (!isMainStepName(trace.name)) return null;\n if (mainCachedTokensPct() != null) {\n const cacheMiss = mainCachedTokensPct() === 0 && mainPromptSimilarityPct() != null && mainPromptSimilarityPct() >= CACHE_MISS_SIMILARITY_THRESHOLD_PCT;\n if (cacheMiss) {\n return {\n text: \"0% tokens cached. Cache miss\",\n className: \"text-red-200\"\n };\n }\n const ok = mainCachedTokensPct() >= CACHE_OK_THRESHOLD_PCT;\n return ok ? {\n text: `${mainCachedTokensPct()}% tokens cached`,\n className: \"text-rc-gray-400\"\n } : {\n text: `${mainCachedTokensPct()}% tokens cached - move dynamic parts of prompt to the bottom`,\n className: \"text-red-200\"\n };\n }\n if (mainPromptSimilarityPct() != null) {\n const ok = mainPromptSimilarityPct() >= CACHE_OK_THRESHOLD_PCT;\n return ok ? {\n text: `${mainPromptSimilarityPct()}%`,\n className: \"text-rc-gray-400\"\n } : {\n text: `${mainPromptSimilarityPct()}% cached - move dynamic parts of prompt to the bottom`,\n className: \"text-red-200\"\n };\n }\n return null;\n });\n const breakTagLabel = derived(() => {\n if (!hasBreakTag(trace.response)) return null;\n return {\n text: \"LLM output has <break /> tags\",\n className: \"text-red-200\"\n };\n });\n const responsePreview = derived(() => jsonPreview(trace.response));\n const hasJsonResponse = derived(() => {\n if (typeof trace.response !== \"string\" || !trace.response.trim()) return false;\n try {\n const parsed = JSON.parse(trace.response);\n return typeof parsed === \"object\" && parsed !== null;\n } catch {\n return false;\n }\n });\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n $$renderer3.push(`<div class=\"flex w-full select-text items-baseline gap-2 truncate rounded-md bg-transparent px-2 py-1 text-left text-sm text-rc-gray-200 hover:bg-rc-gray-800/40\"><button type=\"button\" class=\"flex min-w-0 cursor-pointer items-baseline gap-2 truncate bg-transparent p-0 text-left text-sm text-rc-gray-200\">`);\n Icon($$renderer3, {\n name: hasError() ? \"close\" : \"checkmark\",\n width: 18,\n height: 18,\n class: hasError() ? \"self-center text-red-400\" : \"self-center text-rc-green-200\"\n });\n $$renderer3.push(`<!----> `);\n if (time()) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<span class=\"text-[13px] leading-none text-rc-gray-400\">${escape_html(time())}</span>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> <span${attr_class(clsx(hasError() ? \"text-red-200\" : \"\"))}>AI: ${escape_html(oneLine())}</span></button> `);\n if (mainPromptCacheLabel() != null) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<span${attr_class(`shrink-0 text-xs ${mainPromptCacheLabel().className}`)}><span class=\"cursor-pointer\" title=\"Show prompt-cache calc\">${escape_html(mainPromptCacheLabel().text)}</span></span>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> `);\n if (breakTagLabel() != null) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<span${attr_class(`shrink-0 text-xs ${breakTagLabel().className}`)}${attr(\"title\", BREAK_TAG_TOOLTIP)}>${escape_html(breakTagLabel().text)}</span>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--></div> `);\n if (hasJsonResponse()) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<div class=\"mb-2 ml-7 max-w-[83%]\"><button type=\"button\" class=\"block w-full cursor-pointer overflow-hidden rounded-lg border border-rc-gray-110 bg-rc-gray-800 p-3 text-left hover:bg-rc-gray-700\"><pre class=\"truncate whitespace-pre font-mono text-sm text-rc-gray-100\">${escape_html(responsePreview())}</pre></button> <div class=\"mt-1 flex items-center\"><button type=\"button\"${attr(\"disabled\", !agentId?.trim() || typeof trace.receivedContext === \"undefined\" || addStatus !== \"idle\" || testDraftOpen, true)} class=\"inline-flex items-center rounded border-0 bg-transparent px-1 py-0.5 text-rc-gray-400 transition-colors hover:bg-rc-gray-900 hover:text-rc-gray-200 disabled:cursor-not-allowed disabled:opacity-50\">${escape_html(\"Add test\")}</button></div></div>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> `);\n {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> `);\n {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--> `);\n {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]-->`);\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n });\n}\nexport {\n ChatApiCallTrace as C,\n ChatConversationalTrace as a,\n ChatStepTrace as b,\n findStringifiedConversationBefore as c,\n findMainStepTraceNear as f\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -531,10 +531,41 @@ function _layout($$renderer, $$props) {
|
|
|
531
531
|
const schemaValue = derived(() => workspace.currentStep?.schema ?? null);
|
|
532
532
|
const hasSchema = derived(() => !!schemaValue() && schemaValue().trim().length > 0);
|
|
533
533
|
let schemaModalOpen = false;
|
|
534
|
+
let schemaDraft = "";
|
|
535
|
+
let schemaSaving = false;
|
|
536
|
+
let schemaSaveError = null;
|
|
537
|
+
let schemaSaveNotice = null;
|
|
538
|
+
const schemaDirty = derived(() => schemaDraft !== (schemaValue() ?? ""));
|
|
534
539
|
function openSchemaModal() {
|
|
535
540
|
if (!schemaValue()) return;
|
|
541
|
+
schemaDraft = schemaValue();
|
|
542
|
+
schemaSaveError = null;
|
|
543
|
+
schemaSaveNotice = null;
|
|
536
544
|
schemaModalOpen = true;
|
|
537
545
|
}
|
|
546
|
+
async function saveSchema() {
|
|
547
|
+
const stepName = workspace.currentStep?.name;
|
|
548
|
+
const agentId = workspace.agentId.trim();
|
|
549
|
+
if (!stepName || !agentId || !schemaDirty() || schemaSaving) return;
|
|
550
|
+
schemaSaving = true;
|
|
551
|
+
schemaSaveError = null;
|
|
552
|
+
schemaSaveNotice = null;
|
|
553
|
+
try {
|
|
554
|
+
await flushPromptSave();
|
|
555
|
+
const result = await trpc.agents.saveSchema.mutate({ agentId, step: stepName, schema: schemaDraft });
|
|
556
|
+
workspace.steps = workspace.steps.map((step) => step.name === stepName ? { ...step, schema: schemaDraft } : step);
|
|
557
|
+
workspace.currentStep = workspace.steps.find((step) => step.name === stepName) ?? workspace.currentStep;
|
|
558
|
+
schemaSaveNotice = result.restartScheduled ? "Saved. Reloading the project…" : "Saved. Restart Bosun to use this schema in tests.";
|
|
559
|
+
if (result.restartScheduled) {
|
|
560
|
+
setTimeout(() => window.location.reload(), 1200);
|
|
561
|
+
}
|
|
562
|
+
} catch (error) {
|
|
563
|
+
console.error("Failed to save schema", error);
|
|
564
|
+
schemaSaveError = error instanceof Error ? error.message : "Failed to save schema";
|
|
565
|
+
} finally {
|
|
566
|
+
schemaSaving = false;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
538
569
|
function handleModeTabChange({ value }) {
|
|
539
570
|
if (value === workspace.edit.tab) return;
|
|
540
571
|
void flushPromptSave();
|
|
@@ -975,9 +1006,39 @@ function _layout($$renderer, $$props) {
|
|
|
975
1006
|
{
|
|
976
1007
|
let children2 = function($$renderer4) {
|
|
977
1008
|
SchemaEditor($$renderer4, {
|
|
978
|
-
class: "h-[70vh] min-w-0"
|
|
979
|
-
schema: schemaValue()
|
|
1009
|
+
class: "h-[70vh] min-w-0"
|
|
980
1010
|
});
|
|
1011
|
+
}, footer = function($$renderer4) {
|
|
1012
|
+
if (schemaSaveError) {
|
|
1013
|
+
$$renderer4.push("<!--[0-->");
|
|
1014
|
+
$$renderer4.push(`<span class="text-rc-red-500 mr-auto text-sm">${escape_html(schemaSaveError)}</span>`);
|
|
1015
|
+
} else if (schemaSaveNotice) {
|
|
1016
|
+
$$renderer4.push("<!--[1-->");
|
|
1017
|
+
$$renderer4.push(`<span class="mr-auto text-sm text-rc-gray-300">${escape_html(schemaSaveNotice)}</span>`);
|
|
1018
|
+
} else {
|
|
1019
|
+
$$renderer4.push("<!--[-1-->");
|
|
1020
|
+
}
|
|
1021
|
+
$$renderer4.push(`<!--]--> `);
|
|
1022
|
+
Button($$renderer4, {
|
|
1023
|
+
variant: "outlined",
|
|
1024
|
+
size: "small",
|
|
1025
|
+
onclick: () => schemaModalOpen = false,
|
|
1026
|
+
children: ($$renderer5) => {
|
|
1027
|
+
$$renderer5.push(`<!---->${escape_html(schemaDirty() ? "Cancel" : "Close")}`);
|
|
1028
|
+
},
|
|
1029
|
+
$$slots: { default: true }
|
|
1030
|
+
});
|
|
1031
|
+
$$renderer4.push(`<!----> `);
|
|
1032
|
+
Button($$renderer4, {
|
|
1033
|
+
size: "small",
|
|
1034
|
+
disabled: !schemaDirty() || schemaSaving,
|
|
1035
|
+
onclick: saveSchema,
|
|
1036
|
+
children: ($$renderer5) => {
|
|
1037
|
+
$$renderer5.push(`<!---->${escape_html(schemaSaving ? "Saving…" : "Save")}`);
|
|
1038
|
+
},
|
|
1039
|
+
$$slots: { default: true }
|
|
1040
|
+
});
|
|
1041
|
+
$$renderer4.push(`<!---->`);
|
|
981
1042
|
};
|
|
982
1043
|
Modal($$renderer3, {
|
|
983
1044
|
title: "Schema",
|
|
@@ -990,7 +1051,8 @@ function _layout($$renderer, $$props) {
|
|
|
990
1051
|
$$settled = false;
|
|
991
1052
|
},
|
|
992
1053
|
children: children2,
|
|
993
|
-
|
|
1054
|
+
footer,
|
|
1055
|
+
$$slots: { default: true, footer: true }
|
|
994
1056
|
});
|
|
995
1057
|
}
|
|
996
1058
|
} else {
|
|
@@ -1008,4 +1070,4 @@ function _layout($$renderer, $$props) {
|
|
|
1008
1070
|
}
|
|
1009
1071
|
|
|
1010
1072
|
export { _layout as default };
|
|
1011
|
-
//# sourceMappingURL=_layout.svelte-
|
|
1073
|
+
//# sourceMappingURL=_layout.svelte-PtdpfgwJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_layout.svelte-PtdpfgwJ.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/edit/_agent_/_layout.svelte.js"],"sourcesContent":["import { e as escape_html, s as stringify, d as attr, f as derived, a as ensure_array_like, b as attr_class } from \"../../../../chunks/index.js\";\nimport { P as Panel, g as getEditWorkspaceContext, s as setEditWorkspaceContext } from \"../../../../chunks/edit-workspace-context.js\";\nimport { B as Button } from \"../../../../chunks/Button.js\";\nimport { D as Dropdown } from \"../../../../chunks/Dropdown.js\";\nimport { I as Icon } from \"../../../../chunks/Icon.js\";\nimport { T as Tabs, a as Tab } from \"../../../../chunks/Tab.js\";\nimport { M as Modal } from \"../../../../chunks/Modal.js\";\nimport \"clsx\";\nimport { o as onDestroy } from \"../../../../chunks/index-server.js\";\nimport { g as goto, r as replaceState } from \"../../../../chunks/client.js\";\nimport { p as page } from \"../../../../chunks/index2.js\";\nimport { p as public_env } from \"../../../../chunks/shared-server.js\";\nimport { t as trpc } from \"../../../../chunks/trpc-client.js\";\nimport \"nunjucks\";\nimport { A as AgentSidebar } from \"../../../../chunks/AgentSidebar.js\";\nimport { g as getAgentsContext } from \"../../../../chunks/agents-context.js\";\nimport { C as ContextEditor } from \"../../../../chunks/ContextEditor.js\";\nimport { c as clearChatContent, a as clearLogs } from \"../../../../chunks/log-content.svelte.js\";\nfunction PopoverModal($$renderer, $$props) {\n let { title, onClose, children } = $$props;\n $$renderer.push(`<div class=\"absolute inset-0 z-20 bg-black/20\"></div> <div class=\"absolute inset-2 z-30 flex min-w-0 flex-col overflow-hidden rounded-lg border border-rc-gray-600 bg-rc-gray-900 shadow-2xl\"><div class=\"flex items-center justify-between border-b border-rc-gray-700 px-3 py-2\"><button type=\"button\" class=\"inline-flex h-7 w-7 items-center justify-center rounded-md text-rc-gray-200 hover:bg-rc-gray-700\" aria-label=\"Close\" title=\"Close\">X</button> <div class=\"text-sm font-semibold text-rc-gray-200\">${escape_html(title)}</div> <div class=\"w-7\"></div></div> <div class=\"flex min-h-0 flex-1 flex-col overflow-hidden\">`);\n children($$renderer);\n $$renderer.push(`<!----></div></div>`);\n}\nclass WebSocketClient {\n constructor(wsUrl) {\n this.wsUrl = wsUrl;\n }\n ws = null;\n openHandler = null;\n closeHandler = null;\n errorHandler = null;\n messageHandler = null;\n retries = 0;\n maxRetries = 5;\n retryDelay = 500;\n retryTimeout = null;\n isOpen = false;\n isDestroyed = false;\n agentsLoaded = false;\n init = () => {\n if (this.isOpen) {\n return;\n }\n this.agentsLoaded = false;\n console.log(`Initializing websocket connection with [${this.wsUrl}]`);\n try {\n this.ws = new WebSocket(this.wsUrl);\n } catch {\n this.retryConnect();\n return;\n }\n this.isDestroyed = false;\n this.ws.onmessage = (event) => {\n const message = JSON.parse(event.data);\n if (message.channel === \"error\") {\n this.errorHandler?.(message.message);\n } else if (message.channel === \"app-events\") {\n console.log(\"MSG:\", message.event.type);\n if (message.event.type === \"agents-loaded\") {\n this.agentsLoaded = true;\n }\n } else if (message.channel === \"log\") {\n console.log(`MSG: log [${message.message.severity}]`, message.message.message);\n } else if (message.channel === \"api-call-trace\") {\n console.log(\n \"MSG: api-call-trace\",\n message.trace?.operationName,\n message.trace?.method,\n message.trace?.path\n );\n } else if (message.channel === \"conversational-trace\") {\n console.log(\n \"MSG: conversational-trace\",\n message.trace?.eventName,\n message.trace?.role,\n message.trace?.medium\n );\n }\n this.messageHandler?.(message);\n };\n this.ws.onerror = (error) => {\n console.error(\"Websocket error:\", error);\n this.ws?.close();\n this.retryConnect();\n };\n this.ws.onclose = () => {\n console.log(\"Websocket closed\");\n this.isOpen = false;\n this.retryConnect();\n };\n this.ws.onopen = () => {\n this.retries = 0;\n this.isOpen = true;\n if (this.retryTimeout) {\n clearTimeout(this.retryTimeout);\n }\n this.openHandler?.();\n console.log(\"Websocket connected\");\n };\n };\n destroy = () => {\n this.isDestroyed = true;\n this.ws?.close();\n };\n onOpen = (handler) => {\n this.openHandler = handler;\n if (this.isOpen) {\n handler();\n }\n };\n onClose = (handler) => {\n this.closeHandler = handler;\n if (!this.isOpen) {\n handler();\n }\n };\n onError = (handler) => {\n this.errorHandler = handler;\n };\n onMessage = (handler) => {\n this.messageHandler = handler;\n };\n sendMessage = (message) => {\n if (message.channel === \"app-events\") ;\n this.ws?.send(JSON.stringify(message));\n };\n isReady = () => this.isOpen && this.agentsLoaded;\n retryConnect = () => {\n if (this.isDestroyed) return;\n if (!this.isOpen && this.retries < this.maxRetries) {\n this.retries++;\n this.init();\n this.retryTimeout = setTimeout(this.retryConnect, this.retryDelay);\n } else {\n this.errorHandler?.(\"WebSocket Error, please reload the browser\");\n this.closeHandler?.();\n }\n };\n}\nconst wsHost = public_env.PUBLIC_WS_HOST ?? `ws://${public_env.PUBLIC_WS_HOSTNAME ?? \"localhost\"}:${public_env.PUBLIC_WS_PORT ?? \"8080\"}`;\nconst wsClient = new WebSocketClient(wsHost);\nfunction SchemaEditor($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let editor = null;\n let model = null;\n let disposables = [];\n let { class: className } = $$props;\n onDestroy(() => {\n for (const d of disposables) {\n try {\n d.dispose();\n } catch {\n }\n }\n disposables = [];\n const toDisposeModel = model;\n model = null;\n try {\n if (editor) {\n try {\n editor.setModel(null);\n } catch {\n }\n editor.dispose();\n }\n } finally {\n editor = null;\n }\n try {\n toDisposeModel?.dispose();\n } catch {\n }\n });\n Panel($$renderer2, {\n class: `overflow-hidden ${stringify(className)}`,\n children: ($$renderer3) => {\n $$renderer3.push(`<div class=\"flex h-full flex-col\"><div class=\"h-full w-full\"></div></div>`);\n }\n });\n });\n}\nfunction PromptEditor($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let {\n class: className,\n showSchemaButton,\n onSchemaClick,\n readOnly = false,\n showPreviewToggle = true,\n preview = null\n } = $$props;\n let internalPreview = false;\n const effectivePreview = derived(() => preview !== null ? preview : internalPreview);\n Panel($$renderer2, {\n class: `relative overflow-hidden ${stringify(className)}`,\n children: ($$renderer3) => {\n $$renderer3.push(`<div class=\"prompt-editor flex h-full flex-col\"><div class=\"relative flex-1\"><div class=\"h-full w-full\"></div> `);\n if (showPreviewToggle && !readOnly) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<label class=\"absolute right-6 top-1 z-10 inline-flex cursor-pointer items-center gap-2 bg-transparent text-rc-gray-100 focus:outline-none focus:ring-0\"><input type=\"checkbox\"${attr(\"checked\", effectivePreview(), true)} class=\"checkbox svelte-1br1z62\"/> <span>Preview</span></label>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--></div> `);\n if (showSchemaButton && onSchemaClick) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<div class=\"flex justify-end\">`);\n Button($$renderer3, {\n variant: \"secondary\",\n onclick: onSchemaClick,\n class: \"absolute bottom-2 right-6 !font-medium\",\n children: ($$renderer4) => {\n $$renderer4.push(`<!---->Schema`);\n },\n $$slots: { default: true }\n });\n $$renderer3.push(`<!----></div>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--></div>`);\n }\n });\n });\n}\nfunction ModeAsyncPopoverContent($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n const { state: workspace, actions } = getEditWorkspaceContext();\n let popoverTab = \"results\";\n if (workspace.edit.popover) {\n $$renderer2.push(\"<!--[0-->\");\n const popover = workspace.edit.popover;\n $$renderer2.push(`<div class=\"border-b border-rc-gray-700 px-2 py-1\">`);\n Tabs($$renderer2, {\n value: popoverTab,\n ariaLabel: \"Popover tabs\",\n onChange: ({ value }) => popoverTab = value,\n children: ($$renderer3) => {\n Tab($$renderer3, {\n value: \"results\",\n children: ($$renderer4) => {\n $$renderer4.push(`<!---->Results`);\n }\n });\n $$renderer3.push(`<!----> `);\n Tab($$renderer3, {\n value: \"raw\",\n children: ($$renderer4) => {\n $$renderer4.push(`<!---->Raw`);\n }\n });\n $$renderer3.push(`<!---->`);\n },\n $$slots: { default: true }\n });\n $$renderer2.push(`<!----></div> <div class=\"min-h-0 flex-1 overflow-auto p-3\">`);\n if (popover.status === \"loading\") {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"flex h-full items-center justify-center text-sm text-rc-gray-300\">Loading</div>`);\n } else if (popover.status === \"error\") {\n $$renderer2.push(\"<!--[1-->\");\n if (popoverTab === \"raw\") {\n $$renderer2.push(\"<!--[0-->\");\n const raw = typeof popover.data?.raw === \"string\" ? popover.data.raw : popover.error;\n $$renderer2.push(`<pre class=\"whitespace-pre-wrap font-mono text-xs text-rc-gray-200\">${escape_html(raw || \"—\")}</pre>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n $$renderer2.push(`<div class=\"flex h-full flex-col gap-3\"><div class=\"text-sm text-red-400\">${escape_html(popover.error)}</div></div>`);\n }\n $$renderer2.push(`<!--]-->`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n const data = popover.data;\n if (popoverTab === \"raw\") {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<pre class=\"whitespace-pre-wrap font-mono text-xs text-rc-gray-200\">${escape_html(typeof data?.raw === \"string\" ? data.raw : \"—\")}</pre>`);\n } else if (popover.kind === \"analyze\") {\n $$renderer2.push(\"<!--[1-->\");\n const totalCalls = typeof data?.parallelCalls === \"number\" && Number.isFinite(data.parallelCalls) ? data.parallelCalls : 10;\n $$renderer2.push(`<div class=\"mb-3 text-sm font-semibold text-rc-gray-100\">${escape_html(data?.title ?? \"Analysis\")}</div> `);\n if (Array.isArray(data?.rationales) && data.rationales.length > 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"mb-4\"><div class=\"mb-2 text-xs font-semibold text-rc-gray-400\">Why this response</div> <div class=\"flex flex-col gap-2\"><!--[-->`);\n const each_array = ensure_array_like(data.rationales);\n for (let i = 0, $$length = each_array.length; i < $$length; i++) {\n let r = each_array[i];\n $$renderer2.push(`<div class=\"rounded-md border border-rc-gray-700 bg-rc-gray-900/40 px-3 py-2\"><div class=\"flex items-center justify-between text-xs text-rc-gray-400\"><div>Analysis ${escape_html(r.attempt ?? i + 1)}</div> `);\n if (r.status === \"error\") {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"text-red-400\">Error</div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div> <div class=\"whitespace-pre-wrap break-words text-sm text-rc-gray-100\">${escape_html(r.text)}</div></div>`);\n }\n $$renderer2.push(`<!--]--></div></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (Array.isArray(data?.quotes) && data.quotes.length > 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"flex flex-col gap-2\"><!--[-->`);\n const each_array_1 = ensure_array_like(data.quotes);\n for (let i = 0, $$length = each_array_1.length; i < $$length; i++) {\n let q = each_array_1[i];\n $$renderer2.push(`<button type=\"button\" class=\"rounded-md border border-rc-gray-700 bg-rc-gray-900/40 px-3 py-2 text-left hover:border-rc-gray-500\"><div class=\"flex items-center justify-between text-xs text-rc-gray-400\"><div>Quote ${escape_html(i + 1)}</div> <div>x${escape_html(q.count)}/${escape_html(totalCalls)}</div></div> <div class=\"whitespace-pre-wrap break-words text-sm text-rc-gray-100\">${escape_html(q.quote)}</div></button>`);\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n $$renderer2.push(`<div class=\"text-sm text-rc-gray-300\">No quotes returned.</div>`);\n }\n $$renderer2.push(`<!--]-->`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n $$renderer2.push(`<div class=\"mb-3 text-sm font-semibold text-rc-gray-100\">${escape_html(data?.title ?? \"Prompt issues\")}</div> `);\n if (Array.isArray(data?.issues) && data.issues.length > 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"flex flex-col gap-3\"><!--[-->`);\n const each_array_2 = ensure_array_like(data.issues);\n for (let i = 0, $$length = each_array_2.length; i < $$length; i++) {\n let issue = each_array_2[i];\n $$renderer2.push(`<div class=\"rounded-md border border-rc-gray-700 bg-rc-gray-900/40 p-3\"><div class=\"flex items-start justify-between gap-3\"><div class=\"text-xs font-semibold text-rc-gray-400\">Issue ${escape_html(i + 1)}</div> <div class=\"text-xs text-rc-gray-500\">${escape_html(issue.type)}</div></div> <div class=\"mt-1 whitespace-pre-wrap break-words text-sm text-rc-gray-100\">${escape_html(issue.reason)}</div> `);\n if (issue.contradictingQuotes && issue.contradictingQuotes.length > 0) {\n $$renderer2.push(\"<!--[0-->\");\n $$renderer2.push(`<div class=\"mt-3 flex flex-col gap-2\"><!--[-->`);\n const each_array_3 = ensure_array_like(issue.contradictingQuotes);\n for (let $$index_2 = 0, $$length2 = each_array_3.length; $$index_2 < $$length2; $$index_2++) {\n let q = each_array_3[$$index_2];\n $$renderer2.push(`<button type=\"button\" class=\"rounded-md border border-rc-gray-700 bg-rc-gray-900/40 px-3 py-2 text-left hover:border-rc-gray-500\"><div class=\"whitespace-pre-wrap break-words text-sm text-rc-gray-100\">${escape_html(q)}</div></button>`);\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]--></div>`);\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n $$renderer2.push(`<div class=\"text-sm text-rc-gray-300\">No issues found.</div>`);\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[-1-->\");\n }\n $$renderer2.push(`<!--]-->`);\n });\n}\nfunction ModeContextPopoverContent($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n const tmp = getEditWorkspaceContext(), workspace = tmp.state, actions = tmp.actions;\n function handleContextChanged(newContext) {\n workspace.context = newContext;\n actions.sendAppEvent({ type: \"context-updated\", context: newContext });\n }\n $$renderer2.push(`<div class=\"min-h-0 flex-1 overflow-hidden p-3\">`);\n ContextEditor($$renderer2, {\n class: \"h-full min-h-0 border-thin border-rc-gray-650 shadow-inner-white-soft backdrop-blur-3xl focus:outline-none focus:ring-0\",\n context: workspace.context,\n onContextChanged: handleContextChanged,\n editorStateKey: `editorState/context/${workspace.agentId}/${workspace.currentStep?.name ?? \"main\"}`,\n suppressErrors: true\n });\n $$renderer2.push(`<!----></div>`);\n });\n}\nfunction safeDecodeURIComponent(raw) {\n try {\n return decodeURIComponent(raw);\n } catch {\n return raw;\n }\n}\nfunction parseEditPath(pathname) {\n const cleaned = String(pathname || \"\").split(\"?\")[0]?.split(\"#\")[0] ?? \"\";\n const parts = cleaned.split(\"/\").filter(Boolean);\n if (parts[0] !== \"edit\") return { agentId: null, tab: null };\n if (parts.length === 1) return { agentId: null, tab: null };\n const agentId = safeDecodeURIComponent(parts[1] ?? \"\");\n const maybeTab = parts[2] ?? null;\n if (!maybeTab) return { agentId, tab: \"roleplay\" };\n if (maybeTab === \"roleplay\") return { agentId, tab: \"roleplay\" };\n if (maybeTab === \"tests\") return { agentId, tab: \"tests\" };\n if (maybeTab === \"configure\") return { agentId, tab: \"configure\" };\n return { agentId, tab: null };\n}\nfunction initEditState(input) {\n const parsed = parseEditPath(input.pathname);\n const tab = parsed.tab ?? \"roleplay\";\n return {\n tab,\n popover: null,\n highlights: null,\n requestSeq: 0\n };\n}\nfunction openPopover(state, input) {\n const requestSeq = state.requestSeq + 1;\n return {\n ...state,\n requestSeq,\n popover: {\n kind: input.kind,\n status: \"loading\",\n requestId: requestSeq\n },\n highlights: null\n };\n}\nfunction setPopoverReady(state, input) {\n if (!state.popover) return state;\n if (state.popover.requestId !== input.requestId) return state;\n return {\n ...state,\n popover: { ...state.popover, status: \"ready\", data: input.data, error: void 0 }\n };\n}\nfunction setPopoverError(state, input) {\n if (!state.popover) return state;\n if (state.popover.requestId !== input.requestId) return state;\n return {\n ...state,\n popover: {\n ...state.popover,\n status: \"error\",\n error: String(input.error || \"Unknown error\"),\n data: input.data\n }\n };\n}\nfunction closePopover(state) {\n return {\n ...state,\n popover: null,\n highlights: null\n };\n}\nfunction setHighlightQuotes(state, quotes) {\n return {\n ...state,\n highlights: {\n quotes: quotes ?? [],\n focusQuote: null,\n focusNonce: 0\n }\n };\n}\nfunction focusQuote(state, quote) {\n const q = String(quote || \"\");\n if (!q) return state;\n const prev = state.highlights ?? { quotes: [], focusQuote: null, focusNonce: 0 };\n return {\n ...state,\n highlights: {\n ...prev,\n focusQuote: q,\n focusNonce: (prev.focusNonce ?? 0) + 1\n }\n };\n}\nfunction _layout($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { params, children } = $$props;\n const { onError } = getAgentsContext();\n let agents = [];\n const dec = (s) => {\n try {\n return s ? decodeURIComponent(s) : \"\";\n } catch {\n return s || \"\";\n }\n };\n const enc = (s) => encodeURIComponent(s);\n function normalizeAgentId(raw) {\n return dec(raw).trim().replace(/^\\/+|\\/+$/g, \"\");\n }\n const workspace = {\n agentId: normalizeAgentId(params.agent),\n region: null,\n availableRegions: [],\n defaultRegion: null,\n agentType: void 0,\n wsLoaded: false,\n chatReady: false,\n steps: [],\n currentStep: null,\n promptDrafts: {},\n context: null,\n promptContext: null,\n agentStates: [],\n currentState: null,\n contextPopoverOpen: false,\n edit: initEditState({ pathname: page.url.pathname })\n };\n const regionDropdownId = \"region-dropdown\";\n let regionDropdownOpen = false;\n let regionDropdownAnchorEl = null;\n function setQueryParam(key, value) {\n if (typeof window === \"undefined\") return;\n const url = new URL(window.location.href);\n if (value === null) url.searchParams.delete(key);\n else url.searchParams.set(key, value);\n replaceState(url.toString());\n }\n function sendAppEvent(event) {\n wsClient.sendMessage({ channel: \"app-events\", event });\n }\n const activeStepName = derived(() => workspace.currentStep?.name ?? null);\n const activePromptDraft = derived(() => {\n const stepName = activeStepName();\n if (!stepName) return \"\";\n const draft = workspace.promptDrafts[stepName];\n return typeof draft === \"string\" ? draft : \"\";\n });\n Promise.resolve();\n async function flushPromptSave() {\n return;\n }\n const schemaValue = derived(() => workspace.currentStep?.schema ?? null);\n const hasSchema = derived(() => !!schemaValue() && schemaValue().trim().length > 0);\n let schemaModalOpen = false;\n let schemaDraft = \"\";\n let schemaSaving = false;\n let schemaSaveError = null;\n let schemaSaveNotice = null;\n const schemaDirty = derived(() => schemaDraft !== (schemaValue() ?? \"\"));\n function openSchemaModal() {\n if (!schemaValue()) return;\n schemaDraft = schemaValue();\n schemaSaveError = null;\n schemaSaveNotice = null;\n schemaModalOpen = true;\n }\n async function saveSchema() {\n const stepName = workspace.currentStep?.name;\n const agentId = workspace.agentId.trim();\n if (!stepName || !agentId || !schemaDirty() || schemaSaving) return;\n schemaSaving = true;\n schemaSaveError = null;\n schemaSaveNotice = null;\n try {\n await flushPromptSave();\n const result = await trpc.agents.saveSchema.mutate({ agentId, step: stepName, schema: schemaDraft });\n workspace.steps = workspace.steps.map((step) => step.name === stepName ? { ...step, schema: schemaDraft } : step);\n workspace.currentStep = workspace.steps.find((step) => step.name === stepName) ?? workspace.currentStep;\n schemaSaveNotice = result.restartScheduled ? \"Saved. Reloading the project…\" : \"Saved. Restart Bosun to use this schema in tests.\";\n if (result.restartScheduled) {\n setTimeout(() => window.location.reload(), 1200);\n }\n } catch (error) {\n console.error(\"Failed to save schema\", error);\n schemaSaveError = error instanceof Error ? error.message : \"Failed to save schema\";\n } finally {\n schemaSaving = false;\n }\n }\n function handleModeTabChange({ value }) {\n if (value === workspace.edit.tab) return;\n void flushPromptSave();\n closeAllPopovers();\n const stepName = page.url.searchParams.get(\"step\");\n const region = page.url.searchParams.get(\"region\");\n const base = `/edit/${enc(workspace.agentId)}/${value}`;\n const qs = new URLSearchParams();\n if (stepName) qs.set(\"step\", stepName);\n if (region) qs.set(\"region\", region);\n qs.size ? `${base}?${qs.toString()}` : base;\n goto();\n }\n const activeTopTab = derived(() => {\n const head = page.url.pathname.split(\"/\")[1];\n return head === \"traces\" ? \"view\" : head;\n });\n function handleTopTabChange({ value }) {\n if (value === activeTopTab()) return;\n void flushPromptSave();\n closeAllPopovers();\n if (value === \"edit\") return goto();\n if (value === \"view\") {\n const qs = new URLSearchParams({ agent: workspace.agentId });\n if (workspace.region) qs.set(\"region\", workspace.region);\n return goto(`/view?${qs.toString()}`);\n }\n goto();\n }\n function openModePopover(kind) {\n workspace.contextPopoverOpen = false;\n workspace.edit = openPopover(workspace.edit, { kind });\n return workspace.edit.popover?.requestId ?? 0;\n }\n function setModePopoverReady(requestId, data) {\n workspace.edit = setPopoverReady(workspace.edit, { requestId, data });\n }\n function setModePopoverError(requestId, error, data) {\n workspace.edit = setPopoverError(workspace.edit, { requestId, error, data });\n }\n function closeModePopover() {\n workspace.edit = closePopover(workspace.edit);\n }\n function openContextPopover() {\n closeModePopover();\n workspace.contextPopoverOpen = true;\n }\n function closeContextPopover() {\n workspace.contextPopoverOpen = false;\n }\n function toggleContextPopover() {\n if (workspace.contextPopoverOpen) closeContextPopover();\n else openContextPopover();\n }\n function closeAllPopovers() {\n closeModePopover();\n closeContextPopover();\n }\n function popoverTitle(kind) {\n if (kind === \"analyze\") return \"Analyze\";\n return \"Find issues\";\n }\n function setQuotes(quotes) {\n workspace.edit = setHighlightQuotes(workspace.edit, quotes);\n }\n function focusOnQuote(quote) {\n workspace.edit = focusQuote(workspace.edit, quote);\n }\n let promptHighlighter = null;\n let previewEnabled = false;\n function clamp(n, min, max) {\n return Math.max(min, Math.min(max, n));\n }\n function buildQuoteCountsFromIssues(issues) {\n const counts = /* @__PURE__ */ new Map();\n for (const issue of issues || []) {\n for (const raw of issue.contradictingQuotes || []) {\n const q = String(raw || \"\").trim();\n if (!q) continue;\n counts.set(q, (counts.get(q) || 0) + 1);\n }\n }\n return [...counts.entries()].map(([quote, count]) => ({ quote, count: clamp(count, 1, 10) })).sort((a, b) => b.count - a.count || a.quote.localeCompare(b.quote));\n }\n let findIssuesRunning = false;\n async function handleFindIssues() {\n if (findIssuesRunning) return;\n if (!workspace.currentStep) return;\n findIssuesRunning = true;\n const requestId = openModePopover(\"findIssues\");\n try {\n const res = await trpc.tests.findPromptIssues.mutate({\n agent: workspace.agentId,\n step: workspace.currentStep.name,\n prompt: activePromptDraft()\n });\n const quoteCounts = buildQuoteCountsFromIssues(res.issues || []);\n if (workspace.edit.popover?.requestId !== requestId) return;\n setQuotes(quoteCounts);\n let raw = null;\n try {\n raw = JSON.stringify(res.raw, null, 2);\n } catch {\n raw = null;\n }\n setModePopoverReady(requestId, {\n title: `Prompt issues — ${workspace.currentStep.name}`,\n issues: res.issues,\n raw\n });\n } catch (e) {\n console.error(e);\n const message = typeof e?.message === \"string\" ? e.message : (() => {\n try {\n return JSON.stringify(e);\n } catch {\n return String(e);\n }\n })();\n setModePopoverError(requestId, message || \"Failed to find issues in this prompt\", {\n title: `Prompt issues failed — ${workspace.currentStep.name}`,\n raw: message\n });\n } finally {\n findIssuesRunning = false;\n }\n }\n function handleAgentClick(agentId) {\n void flushPromptSave();\n closeAllPopovers();\n const stepName = page.url.searchParams.get(\"step\");\n const region = page.url.searchParams.get(\"region\");\n const base = `/edit/${enc(agentId)}/${workspace.edit.tab}`;\n const qs = new URLSearchParams();\n if (stepName) qs.set(\"step\", stepName);\n if (region) qs.set(\"region\", region);\n qs.size ? `${base}?${qs.toString()}` : base;\n goto();\n }\n function handleRegionSelectChange(next) {\n if (!next || next === workspace.region) return;\n void flushPromptSave();\n workspace.region = next;\n setQueryParam(\"region\", next);\n }\n setEditWorkspaceContext({\n state: workspace,\n actions: {\n openPopover: openModePopover,\n setPopoverReady: setModePopoverReady,\n setPopoverError: setModePopoverError,\n closePopover: closeModePopover,\n setHighlightQuotes: setQuotes,\n focusQuote: focusOnQuote,\n openContextPopover,\n closeContextPopover,\n toggleContextPopover,\n sendAppEvent,\n sendChatMessage: (message) => {\n if (!workspace.wsLoaded || !workspace.chatReady) {\n console.warn(\"[roleplay] Ignoring chat message while websocket session is reconnecting\");\n return;\n }\n wsClient.sendMessage({ channel: \"chat\", message });\n },\n flushPromptSave,\n selectState: (stateId) => {\n void flushPromptSave();\n closeAllPopovers();\n workspace.currentState = stateId;\n clearChatContent();\n clearLogs();\n sendAppEvent({\n type: \"select-agent\",\n agent: workspace.agentId,\n state: stateId,\n region: workspace.region\n });\n },\n hangup() {\n sendAppEvent({\n type: \"hangup\",\n agentId: workspace.agentId,\n region: workspace.region\n });\n }\n }\n });\n onDestroy(() => {\n void flushPromptSave();\n promptHighlighter?.dispose();\n promptHighlighter = null;\n });\n let $$settled = true;\n let $$inner_renderer;\n function $$render_inner($$renderer3) {\n $$renderer3.push(`<div class=\"flex h-screen\">`);\n AgentSidebar($$renderer3, {\n className: \"flex-none\",\n agents,\n currentAgent: workspace.agentId,\n onAgentClick: handleAgentClick\n });\n $$renderer3.push(`<!----> <div class=\"flex h-full min-w-0 flex-1 flex-col bg-rc-gray-980 pb-3 pr-4 pt-2\"><nav class=\"flex flex-none items-center bg-rc-gray-980\"><div class=\"flex w-1/3 justify-start\"></div> <div class=\"flex w-1/3 justify-center\">`);\n Tabs($$renderer3, {\n value: activeTopTab(),\n ariaLabel: \"Top tabs\",\n onChange: handleTopTabChange,\n children: ($$renderer4) => {\n Tab($$renderer4, {\n value: \"edit\",\n children: ($$renderer5) => {\n $$renderer5.push(`<!---->Edit`);\n }\n });\n $$renderer4.push(`<!----> `);\n Tab($$renderer4, {\n value: \"view\",\n children: ($$renderer5) => {\n $$renderer5.push(`<!---->View`);\n }\n });\n $$renderer4.push(`<!---->`);\n },\n $$slots: { default: true }\n });\n $$renderer3.push(`<!----></div> <div class=\"flex w-1/3 items-center justify-end gap-2 pr-2\">`);\n if (workspace.availableRegions.length > 0 && workspace.region) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<span class=\"text-sm text-rc-gray-300\">Region</span> <div>`);\n Button($$renderer3, {\n variant: \"secondary\",\n size: \"small\",\n \"aria-expanded\": regionDropdownOpen,\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": regionDropdownId,\n onclick: (e) => {\n e.stopPropagation();\n regionDropdownOpen = !regionDropdownOpen;\n },\n class: \"flex w-32 items-center justify-between gap-1 !px-3 !py-1\",\n get el() {\n return regionDropdownAnchorEl;\n },\n set el($$value) {\n regionDropdownAnchorEl = $$value;\n $$settled = false;\n },\n children: ($$renderer4) => {\n $$renderer4.push(`<span class=\"truncate\">${escape_html(workspace.region)}</span> `);\n Icon($$renderer4, {\n name: \"chevron-down\",\n class: \"size-5 text-rc-gray-400 transition-transform duration-200 \" + (regionDropdownOpen ? \"rotate-180\" : \"\")\n });\n $$renderer4.push(`<!---->`);\n },\n $$slots: { default: true }\n });\n $$renderer3.push(`<!----> `);\n {\n let children2 = function($$renderer4) {\n $$renderer4.push(`<div class=\"mt-1 overflow-hidden rounded-lg border border-rc-gray-110 bg-rc-gray-930 shadow-inner-white-soft backdrop-blur-2xl\" role=\"listbox\" aria-label=\"Region\"><!--[-->`);\n const each_array = ensure_array_like(workspace.availableRegions);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let r = each_array[$$index];\n Button($$renderer4, {\n variant: \"ghost\",\n size: \"small\",\n role: \"option\",\n \"aria-selected\": r === workspace.region,\n onclick: (e) => {\n e.stopPropagation();\n regionDropdownOpen = false;\n handleRegionSelectChange(r);\n },\n class: `w-full rounded-none py-2 pr-3 text-left backdrop-blur-2xl hover:bg-rc-gray-700 focus:bg-rc-gray-400 ${r === workspace.region ? \"bg-rc-gray-800 text-rc-gray-100\" : \"text-rc-gray-200\"}`,\n children: ($$renderer5) => {\n $$renderer5.push(`<!---->${escape_html(r)}`);\n },\n $$slots: { default: true }\n });\n }\n $$renderer4.push(`<!--]--></div>`);\n };\n Dropdown($$renderer3, {\n id: regionDropdownId,\n open: regionDropdownOpen,\n onClose: () => regionDropdownOpen = false,\n anchorEl: regionDropdownAnchorEl,\n placement: \"bottom-end\",\n offset: [0, 1],\n children: children2\n });\n }\n $$renderer3.push(`<!----></div>`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]--></div></nav> <div class=\"flex-1 overflow-hidden\"><div class=\"grid h-full w-full grid-cols-[minmax(140px,2fr)_minmax(0,10fr)_minmax(0,11fr)]\">`);\n Panel($$renderer3, {\n class: \"flex h-full min-w-0 flex-col !rounded-none p-0\",\n children: ($$renderer4) => {\n $$renderer4.push(`<div class=\"rc-scroll min-h-0 flex-1 overflow-auto p-2\">`);\n if (!workspace.wsLoaded) {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<div class=\"p-2 text-rc-gray-400\">Connecting…</div>`);\n } else if (workspace.steps.length === 0) {\n $$renderer4.push(\"<!--[1-->\");\n $$renderer4.push(`<div class=\"p-2 text-rc-gray-400\">No steps</div>`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n $$renderer4.push(`<!--[-->`);\n const each_array_1 = ensure_array_like(workspace.steps);\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let step = each_array_1[$$index_1];\n $$renderer4.push(`<button${attr_class(`my-1 w-full rounded-lg px-3 py-2 text-left text-rc-gray-200 hover:bg-rc-gray-700 ${step.name === workspace.currentStep?.name ? \"bg-rc-gray-600\" : \"bg-transparent\"}`)}><span class=\"block truncate\">${escape_html(step.name)}</span></button>`);\n }\n $$renderer4.push(`<!--]-->`);\n }\n $$renderer4.push(`<!--]--></div>`);\n }\n });\n $$renderer3.push(`<!----> <div class=\"flex h-full min-w-0 flex-col\"><div class=\"flex h-14 flex-none items-center justify-between gap-3 border-b border-rc-gray-700 p-2\"><div class=\"min-w-0\"><div class=\"truncate font-semibold text-rc-gray-100\">${escape_html(workspace.currentStep?.name ?? \"Prompt\")}</div></div> <div class=\"flex items-center gap-3\"><label class=\"inline-flex items-center gap-2 text-rc-gray-300\"><input type=\"checkbox\"${attr(\"checked\", previewEnabled, true)}${attr(\"disabled\", !workspace.currentStep, true)} aria-label=\"Preview rendered prompt\" class=\"h-4 w-4 appearance-none rounded border border-rc-gray-300 bg-rc-gray-600 !accent-rc-gray-600 outline-none ring-0 checked:border-rc-gray-200 checked:bg-rc-gray-600 hover:border-rc-gray-200 hover:bg-rc-gray-600 focus:outline-none focus:ring-0 active:border-rc-gray-200 active:bg-rc-gray-600 disabled:cursor-not-allowed disabled:opacity-50\"/> <span>Preview</span></label> `);\n Button($$renderer3, {\n variant: \"secondary\",\n disabled: !workspace.currentStep || findIssuesRunning,\n onclick: handleFindIssues,\n children: ($$renderer4) => {\n $$renderer4.push(`<!---->Find issues`);\n },\n $$slots: { default: true }\n });\n $$renderer3.push(`<!----></div></div> <div class=\"min-h-0 flex-1\">`);\n if (workspace.currentStep) {\n $$renderer3.push(\"<!--[0-->\");\n $$renderer3.push(`<!---->`);\n {\n PromptEditor($$renderer3, {\n class: \"h-full min-w-0 border-thin border-rc-gray-650 bg-rc-gray-800 shadow-inner-white-soft backdrop-blur-3xl focus:outline-none focus:ring-0\",\n initialPrompt: activePromptDraft(),\n agentId: workspace.agentId,\n stepName: workspace.currentStep.name,\n showSchemaButton: hasSchema(),\n onSchemaClick: openSchemaModal,\n showPreviewToggle: false,\n preview: previewEnabled\n });\n }\n $$renderer3.push(`<!---->`);\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n Panel($$renderer3, {\n class: \"flex h-full min-w-0 items-center justify-center !rounded-none p-4 text-sm text-rc-gray-400\",\n children: ($$renderer4) => {\n $$renderer4.push(`<!---->Select a step to edit its prompt`);\n }\n });\n }\n $$renderer3.push(`<!--]--></div></div> `);\n Panel($$renderer3, {\n class: \"relative flex h-full min-w-0 flex-col overflow-hidden !rounded-none p-0\",\n children: ($$renderer4) => {\n $$renderer4.push(`<div class=\"border-b border-rc-gray-700 p-2\">`);\n Tabs($$renderer4, {\n value: workspace.edit.tab,\n ariaLabel: \"Mode tabs\",\n onChange: handleModeTabChange,\n children: ($$renderer5) => {\n Tab($$renderer5, {\n value: \"roleplay\",\n children: ($$renderer6) => {\n $$renderer6.push(`<!---->Roleplay`);\n }\n });\n $$renderer5.push(`<!----> `);\n Tab($$renderer5, {\n value: \"tests\",\n children: ($$renderer6) => {\n $$renderer6.push(`<!---->Tests`);\n }\n });\n $$renderer5.push(`<!----> `);\n if (workspace.defaultRegion !== null) {\n $$renderer5.push(\"<!--[0-->\");\n Tab($$renderer5, {\n value: \"configure\",\n children: ($$renderer6) => {\n $$renderer6.push(`<!---->Configure`);\n }\n });\n } else {\n $$renderer5.push(\"<!--[-1-->\");\n }\n $$renderer5.push(`<!--]-->`);\n },\n $$slots: { default: true }\n });\n $$renderer4.push(`<!----></div> <div class=\"min-h-0 flex-1\">`);\n children($$renderer4);\n $$renderer4.push(`<!----></div> `);\n if (workspace.edit.popover) {\n $$renderer4.push(\"<!--[0-->\");\n {\n let children2 = function($$renderer5) {\n ModeAsyncPopoverContent($$renderer5);\n };\n PopoverModal($$renderer4, {\n title: popoverTitle(workspace.edit.popover.kind),\n onClose: closeModePopover,\n children: children2\n });\n }\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n }\n $$renderer4.push(`<!--]--> `);\n if (workspace.contextPopoverOpen) {\n $$renderer4.push(\"<!--[0-->\");\n {\n let children2 = function($$renderer5) {\n ModeContextPopoverContent($$renderer5);\n };\n PopoverModal($$renderer4, {\n title: \"Edit context\",\n onClose: closeContextPopover,\n children: children2\n });\n }\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n }\n $$renderer4.push(`<!--]-->`);\n }\n });\n $$renderer3.push(`<!----></div></div></div></div> `);\n if (schemaValue()) {\n $$renderer3.push(\"<!--[0-->\");\n {\n let children2 = function($$renderer4) {\n SchemaEditor($$renderer4, {\n class: \"h-[70vh] min-w-0\"\n });\n }, footer = function($$renderer4) {\n if (schemaSaveError) {\n $$renderer4.push(\"<!--[0-->\");\n $$renderer4.push(`<span class=\"text-rc-red-500 mr-auto text-sm\">${escape_html(schemaSaveError)}</span>`);\n } else if (schemaSaveNotice) {\n $$renderer4.push(\"<!--[1-->\");\n $$renderer4.push(`<span class=\"mr-auto text-sm text-rc-gray-300\">${escape_html(schemaSaveNotice)}</span>`);\n } else {\n $$renderer4.push(\"<!--[-1-->\");\n }\n $$renderer4.push(`<!--]--> `);\n Button($$renderer4, {\n variant: \"outlined\",\n size: \"small\",\n onclick: () => schemaModalOpen = false,\n children: ($$renderer5) => {\n $$renderer5.push(`<!---->${escape_html(schemaDirty() ? \"Cancel\" : \"Close\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer4.push(`<!----> `);\n Button($$renderer4, {\n size: \"small\",\n disabled: !schemaDirty() || schemaSaving,\n onclick: saveSchema,\n children: ($$renderer5) => {\n $$renderer5.push(`<!---->${escape_html(schemaSaving ? \"Saving…\" : \"Save\")}`);\n },\n $$slots: { default: true }\n });\n $$renderer4.push(`<!---->`);\n };\n Modal($$renderer3, {\n title: \"Schema\",\n class: \"!w-[80vw] !max-w-5xl\",\n get open() {\n return schemaModalOpen;\n },\n set open($$value) {\n schemaModalOpen = $$value;\n $$settled = false;\n },\n children: children2,\n footer,\n $$slots: { default: true, footer: true }\n });\n }\n } else {\n $$renderer3.push(\"<!--[-1-->\");\n }\n $$renderer3.push(`<!--]-->`);\n }\n do {\n $$settled = true;\n $$inner_renderer = $$renderer2.copy();\n $$render_inner($$inner_renderer);\n } while (!$$settled);\n $$renderer2.subsume($$inner_renderer);\n });\n}\nexport {\n _layout as default\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@ import { D as Dropdown } from './Dropdown-DfCyYHqi.js';
|
|
|
4
4
|
import { I as Icon } from './Icon-DadJPtVP.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-BEioXKWB.js';
|
|
7
|
-
import { C as ChatApiCallTrace, a as ChatConversationalTrace, f as findMainStepTraceNear, b as ChatStepTrace, c as findStringifiedConversationBefore } from './ChatStepTrace-
|
|
7
|
+
import { C as ChatApiCallTrace, a as ChatConversationalTrace, f as findMainStepTraceNear, b as ChatStepTrace, c as findStringifiedConversationBefore } from './ChatStepTrace-CX2Zolmp.js';
|
|
8
|
+
import { i as isMainStepName } from './steps-DzZCg39h.js';
|
|
8
9
|
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
10
|
import { I as Input } from './Input-R74u4cO5.js';
|
|
10
11
|
import './shared-server-DaWdgxVh.js';
|
|
@@ -538,7 +539,7 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
538
539
|
function findMainComparisonTrace(entries, index) {
|
|
539
540
|
for (let i = index - 1; i >= 0; i--) {
|
|
540
541
|
const entry = entries[i];
|
|
541
|
-
if (isStepTrace(entry) && entry.name
|
|
542
|
+
if (isStepTrace(entry) && isMainStepName(entry.name) && getPromptForDiff(entry)) return entry;
|
|
542
543
|
}
|
|
543
544
|
for (let i = index - 1; i >= 0; i--) {
|
|
544
545
|
const entry = entries[i];
|
|
@@ -788,6 +789,7 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
788
789
|
} else if (isConversationalTrace(entry)) {
|
|
789
790
|
$$renderer4.push("<!--[1-->");
|
|
790
791
|
ChatConversationalTrace($$renderer4, {
|
|
792
|
+
testCreationMode: "direct",
|
|
791
793
|
trace: entry,
|
|
792
794
|
context,
|
|
793
795
|
agentId,
|
|
@@ -807,12 +809,13 @@ function PlaygroundChat($$renderer, $$props) {
|
|
|
807
809
|
} else if (isStepTrace(entry)) {
|
|
808
810
|
$$renderer4.push("<!--[2-->");
|
|
809
811
|
ChatStepTrace($$renderer4, {
|
|
812
|
+
testCreationMode: "direct",
|
|
810
813
|
trace: entry,
|
|
811
814
|
agentId,
|
|
812
815
|
region,
|
|
813
816
|
fallbackConversation: findStringifiedConversationBefore(renderableEntries(), idx),
|
|
814
817
|
runtimeContext: context,
|
|
815
|
-
compareTrace: entry.name
|
|
818
|
+
compareTrace: isMainStepName(entry.name) ? findMainComparisonTrace(renderableEntries(), idx) : null
|
|
816
819
|
});
|
|
817
820
|
} else {
|
|
818
821
|
$$renderer4.push("<!--[-1-->");
|
|
@@ -1422,4 +1425,4 @@ function _page($$renderer, $$props) {
|
|
|
1422
1425
|
}
|
|
1423
1426
|
|
|
1424
1427
|
export { _page as default };
|
|
1425
|
-
//# sourceMappingURL=_page.svelte-
|
|
1428
|
+
//# sourceMappingURL=_page.svelte-C3gizoSD.js.map
|