@qredence/fleet 0.5.10 → 0.6.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/CHANGELOG.md +22 -0
- package/dist/web/client/assets/agent-activity-CwMDU7aP.js +1 -0
- package/dist/web/client/assets/artifacts-panel-CJ75gQub.js +1 -0
- package/dist/web/client/assets/chat-Ci2cEQrR.js +52 -0
- package/dist/web/client/assets/{chat-command-palette-DfYSPPXI.js → chat-command-palette-CkISHfKE.js} +1 -1
- package/dist/web/client/assets/{citations-BQ_pr_9_.js → citations-C_tPOJE_.js} +1 -1
- package/dist/web/client/assets/{command-DPfiaYUL.js → command-_WjnervL.js} +1 -1
- package/dist/web/client/assets/fleet-message-queue-BCno4XP-.js +1 -0
- package/dist/web/client/assets/{fleet-pi-tool-renderer-AJoMbXBa.js → fleet-pi-tool-renderer-BEDIO3al.js} +4 -4
- package/dist/web/client/assets/fleet-reasoning-panel-CbkO7u-v.js +1 -0
- package/dist/web/client/assets/{fleet-subagent-list-BnRnrWKS.js → fleet-subagent-list-iKUtLJKZ.js} +1 -1
- package/dist/web/client/assets/fleet-tool-timeline-C8heL7ae.js +1 -0
- package/dist/web/client/assets/{fork-picker-dialog-CkcSekBl.js → fork-picker-dialog-ByBOGVsa.js} +1 -1
- package/dist/web/client/assets/globals-B_I1Eq1u.css +2 -0
- package/dist/web/client/assets/horizontal-resize-CwoDojST.js +1 -0
- package/dist/web/client/assets/{index-DlnHLDpx.js → index-DJ1fFbQu.js} +3 -3
- package/dist/web/client/assets/input-group-Tb5TYbzi.js +1 -0
- package/dist/web/client/assets/{ipython-tool-BrMePqD-.js → ipython-tool-ldJ9F1Cw.js} +1 -1
- package/dist/web/client/assets/model-selector-list-Ch05B2nZ.js +1 -0
- package/dist/web/client/assets/{openui-renderer-DwYFJdbe.js → openui-renderer-Bf60nxNi.js} +4 -4
- package/dist/web/client/assets/pencil-DcUwsKLn.js +1 -0
- package/dist/web/client/assets/prompt-input-qPIXZ-Rb.js +1 -0
- package/dist/web/client/assets/prompt-suggestions-Cc--lSNR.js +1 -0
- package/dist/web/client/assets/{provider-label-BCJh04J5.js → provider-label-DDLRnZyC.js} +1 -1
- package/dist/web/client/assets/repl-panel-DsPX04Xr.js +1 -0
- package/dist/web/client/assets/{resources-panel-Bo8dfUdm.js → resources-panel-D867-goy.js} +1 -1
- package/dist/web/client/assets/right-panel-registry-Dp8yX-oL.js +2 -0
- package/dist/web/client/assets/routes-DpgMJZ5n.js +16 -0
- package/dist/web/client/assets/safe-storage-s25GrfpH.js +1 -0
- package/dist/web/client/assets/session-insights-panel-YnaXvTpi.js +1 -0
- package/dist/web/client/assets/settings-dialog-YJkvt5EB.js +2 -0
- package/dist/web/client/assets/skeleton-loaders-C9vHwAYV.js +1 -0
- package/dist/web/client/assets/{subagent-chat-panel-DseoO31p.js → subagent-chat-panel-Yujplxpb.js} +1 -1
- package/dist/web/client/assets/subagent-transcript-CnI-mqN0.js +1 -0
- package/dist/web/client/assets/subagents-panel-CjXEdimj.js +1 -0
- package/dist/web/client/assets/{surfaces-cW-gp56p.js → surfaces-DI-U-_2a.js} +1 -1
- package/dist/web/client/assets/tool-result-DfnPN0FQ.js +4 -0
- package/dist/web/client/assets/ui-preferences-CImQGZm_.js +1 -0
- package/dist/web/client/assets/virtualized-turn-list--Vynre4D.js +6 -0
- package/dist/web/client/assets/{workspace-panel-DI1W3ce9.js → workspace-panel-CPPIznT9.js} +1 -1
- package/dist/web/client/bundle-budget.json +6 -6
- package/dist/web/server/{_tanstack-start-manifest_v-Cdx6hy2i-I7A5YJRU.js → _tanstack-start-manifest_v-DS_CSIFQ-WB3VTKF3.js} +15 -13
- package/dist/web/server/{agent-activity-B-JMvecd-SLE3GGY2.js → agent-activity-CS2rbF_C-A3R26CYH.js} +2 -2
- package/dist/web/server/{artifacts-panel-DLMK1O8P-42T45JMA.js → artifacts-panel-CaKrX2XC-R37I4BHF.js} +12 -12
- package/dist/web/server/{chat-command-palette-CdYwoTMe-4LBAZF7K.js → chat-command-palette-7gbqEnm9-6XICQZN7.js} +4 -4
- package/dist/web/server/{chunk-EBCYJSBR.js → chunk-7SD2ZSEA.js} +3 -3
- package/dist/web/server/{chunk-6AW2XFTZ.js → chunk-BBBS5AS7.js} +194 -10
- package/dist/web/server/{chunk-EOVMHQ2H.js → chunk-CNXJN5HN.js} +7 -7
- package/dist/web/server/{chunk-XKKXXG6N.js → chunk-DI7XRK2H.js} +2 -2
- package/dist/web/server/{chunk-KNJUSMBT.js → chunk-DZ2IC3FH.js} +2 -2
- package/dist/web/server/{chunk-K5ESTT4A.js → chunk-EAE2QXRK.js} +11 -3
- package/dist/web/server/{chunk-VHBFU4TG.js → chunk-EH4BZ6QM.js} +123 -16
- package/dist/web/server/{chunk-54II5QXQ.js → chunk-ETTDO4UO.js} +6 -3
- package/dist/web/server/{chunk-EHNIN245.js → chunk-GETSIVNU.js} +5 -5
- package/dist/web/server/{chunk-X2R5YPQZ.js → chunk-IJPCV6DH.js} +3 -2
- package/dist/web/server/{chunk-AJJ2S5FF.js → chunk-JQDLJ7KI.js} +20 -20
- package/dist/web/server/{chunk-M564UIEY.js → chunk-KELEYPVK.js} +8 -8
- package/dist/web/server/{chunk-OB5OSYJK.js → chunk-LXJD6IGW.js} +53 -29
- package/dist/web/server/chunk-M5RSPNYN.js +22 -0
- package/dist/web/server/{chunk-2TRF62K5.js → chunk-N6NOTURM.js} +3 -3
- package/dist/web/server/{chunk-5XX7RKJ6.js → chunk-NXJ32VFR.js} +5 -5
- package/dist/web/server/{chunk-P7H2OPKF.js → chunk-PIOFZUOU.js} +9 -1
- package/dist/web/server/chunk-PTCKOR23.js +39 -0
- package/dist/web/server/chunk-SZJUXVWG.js +40 -0
- package/dist/web/server/{chunk-TCH3U26B.js → chunk-TWYHHG5N.js} +2 -10
- package/dist/web/server/{chunk-FED63ZHU.js → chunk-WHBVQJ4K.js} +11 -6
- package/dist/web/server/{chunk-ANL4B775.js → chunk-XLNCWZMZ.js} +2 -2
- package/dist/web/server/{chunk-GM32R7JW.js → chunk-YKVGQBZA.js} +10 -8
- package/dist/web/server/{chunk-NRDG2ISJ.js → chunk-YNUWKMNQ.js} +59 -52
- package/dist/web/server/{chunk-3PIUR75R.js → chunk-YXXRP3NS.js} +9 -9
- package/dist/web/server/fleet-message-queue-BS-cZ56r-GLZXUKDF.js +152 -0
- package/dist/web/server/{fleet-pi-tool-renderer-RIeVlM9J-D6MISCQC.js → fleet-pi-tool-renderer-umKunT3K-O4GBH35V.js} +5 -5
- package/dist/web/server/{fleet-reasoning-panel-D_K48UOT-GN2PA6KT.js → fleet-reasoning-panel-BxC2COxi-GPLMQSTT.js} +9 -9
- package/dist/web/server/{fleet-subagent-list-5luKtpds-3OTVFHJQ.js → fleet-subagent-list-CpSYzCIq-JDH2LHSS.js} +1 -1
- package/dist/web/server/{fleet-tool-timeline-DwRqQgOj-HUFLGMDV.js → fleet-tool-timeline-IB36_PB2-XJENTO6I.js} +1 -1
- package/dist/web/server/{fork-picker-dialog-B9yGc8Au-IL63F2DN.js → fork-picker-dialog-DlINz9UQ-UWIXFDJX.js} +3 -3
- package/dist/web/server/{model-selector-list-cb2-ewoA-KIVU6LD3.js → model-selector-list-jBTZc2Mu-OXJOS5NA.js} +7 -7
- package/dist/web/server/{openui-renderer-Czy5Vo2L-BLXPJD65.js → openui-renderer-Biyyjhjn-SJOEKPTJ.js} +4 -4
- package/dist/web/server/{prompt-suggestions-BOmHi4-J-C563CHFU.js → prompt-suggestions-D4AEEY7K-RZSP7PWV.js} +3 -3
- package/dist/web/server/{repl-panel-yyxhwe4c-7U6HXYPS.js → repl-panel-D5KsoJik-BQKO53JO.js} +9 -9
- package/dist/web/server/{resources-panel-j4fAIi9g-5C267IXV.js → resources-panel-CE5pD4vy-V5FXBTYC.js} +2 -2
- package/dist/web/server/{router-CgSWrAYc-5UBYSZTJ.js → router-DWALoX_M-I5CBL7FQ.js} +1461 -515
- package/dist/web/server/{routes-CP_BBhD0-BAWQYGKY.js → routes-BBVirYfL-5WXMOT7M.js} +908 -566
- package/dist/web/server/server.js +2 -2
- package/dist/web/server/{session-insights-panel-BHZyKDTo-LRMAMA3O.js → session-insights-panel-CUhdgvRt-VB2HUCQP.js} +4 -4
- package/dist/web/server/{settings-dialog-CxHe8nym-KKXDPTIW.js → settings-dialog-DndPbM-v-RFNXXEAN.js} +902 -575
- package/dist/web/server/{subagent-chat-panel-DlSsM59d-DBW7DI3T.js → subagent-chat-panel-C0RpnXav-J7VYO7QY.js} +11 -11
- package/dist/web/server/{subagents-panel-Txzk8oDb-NRKLASYN.js → subagents-panel-jDqIn9Nh-YEV6QLUY.js} +13 -13
- package/dist/web/server/{workspace-panel-BOs-58Cv-SWQBMZSB.js → workspace-panel-CX_Vo6As-EWO6AMPI.js} +5 -4
- package/package.json +1 -1
- package/dist/web/client/assets/agent-activity-CDcDNVC6.js +0 -1
- package/dist/web/client/assets/artifacts-panel-CObI-DMt.js +0 -1
- package/dist/web/client/assets/chat-C8XDWWXz.js +0 -52
- package/dist/web/client/assets/fleet-message-queue-zWM5-y18.js +0 -1
- package/dist/web/client/assets/fleet-reasoning-panel-MtbSdoCv.js +0 -1
- package/dist/web/client/assets/fleet-tool-timeline-COzPrwr8.js +0 -1
- package/dist/web/client/assets/generative-text-renderer-CDKHv-v_.js +0 -6
- package/dist/web/client/assets/globals-DisQPFtV.css +0 -2
- package/dist/web/client/assets/horizontal-resize-Bl3AyBJg.js +0 -1
- package/dist/web/client/assets/input-group-BFDsCVS9.js +0 -1
- package/dist/web/client/assets/model-selector-list-DQaPFUYt.js +0 -1
- package/dist/web/client/assets/prompt-input-DZ4cho_e.js +0 -1
- package/dist/web/client/assets/prompt-suggestions-CXM6knMK.js +0 -1
- package/dist/web/client/assets/repl-panel-BDQ5MEgV.js +0 -1
- package/dist/web/client/assets/right-panel-registry-VVRPktV3.js +0 -2
- package/dist/web/client/assets/routes-DAikUNzO.js +0 -16
- package/dist/web/client/assets/session-insights-panel-CQdT90Op.js +0 -1
- package/dist/web/client/assets/settings-dialog-DS64KmwC.js +0 -1
- package/dist/web/client/assets/skeleton-loaders-DjGv9LLA.js +0 -1
- package/dist/web/client/assets/subagent-transcript-cxVKYnh9.js +0 -1
- package/dist/web/client/assets/subagents-panel-CHC96I68.js +0 -1
- package/dist/web/client/assets/tool-result-Baj3CdL_.js +0 -4
- package/dist/web/client/assets/ui-preferences-DUEFuJFj.js +0 -1
- package/dist/web/server/chunk-QK4CHLVV.js +0 -17
- package/dist/web/server/fleet-message-queue-BxycG26e-2XLOTCLP.js +0 -75
|
@@ -6,10 +6,11 @@ import {
|
|
|
6
6
|
MessageContent,
|
|
7
7
|
MessageScroller,
|
|
8
8
|
UserMessage,
|
|
9
|
+
VirtualizedTurnList,
|
|
9
10
|
buildAssistantElements,
|
|
10
11
|
groupMessages,
|
|
11
12
|
normalizeAssistantToolParts
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-BBBS5AS7.js";
|
|
13
14
|
import {
|
|
14
15
|
RefreshCw
|
|
15
16
|
} from "./chunk-OKL5ZRVB.js";
|
|
@@ -18,16 +19,16 @@ import {
|
|
|
18
19
|
} from "./chunk-UCA4WN66.js";
|
|
19
20
|
import {
|
|
20
21
|
FleetPiToolRenderer
|
|
21
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-JQDLJ7KI.js";
|
|
22
23
|
import {
|
|
23
24
|
PI_TOOL_RENDERERS
|
|
24
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-N6NOTURM.js";
|
|
25
26
|
import {
|
|
26
27
|
FleetToolTimeline
|
|
27
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-IJPCV6DH.js";
|
|
28
29
|
import {
|
|
29
30
|
FleetSubagentList
|
|
30
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-7SD2ZSEA.js";
|
|
31
32
|
import {
|
|
32
33
|
derivePrimeAgentArtifactRuns
|
|
33
34
|
} from "./chunk-4UBOIY2S.js";
|
|
@@ -41,8 +42,8 @@ import {
|
|
|
41
42
|
cn
|
|
42
43
|
} from "./chunk-DJMHPJBP.js";
|
|
43
44
|
|
|
44
|
-
// web/app/dist/server/assets/subagent-transcript-
|
|
45
|
-
import { useMemo } from "react";
|
|
45
|
+
// web/app/dist/server/assets/subagent-transcript-D4VGGQxn.js
|
|
46
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
46
47
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
47
48
|
function transcriptStatus(child) {
|
|
48
49
|
if (child.status === "running" || child.status === "recovering") return "streaming";
|
|
@@ -86,20 +87,44 @@ function SubagentTurnView({ turn, isLast, isStreaming, artifacts, presentation }
|
|
|
86
87
|
children: assistantElements
|
|
87
88
|
}),
|
|
88
89
|
isLast && presentation ? /* @__PURE__ */ jsx(FleetSubagentList, {
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
tree: presentation.rlmTree,
|
|
91
|
+
children: presentation.rlmChildren
|
|
91
92
|
}) : null
|
|
92
93
|
] })
|
|
93
94
|
}) })
|
|
94
95
|
}) : null]
|
|
95
96
|
});
|
|
96
97
|
}
|
|
98
|
+
function getSubagentTurnKey(turn, index) {
|
|
99
|
+
return turn.user?.id ?? turn.assistants[0]?.id ?? `subagent-turn-${index}`;
|
|
100
|
+
}
|
|
97
101
|
function SubagentTranscriptView({ child, parentSessionId, transcript, onRefresh, fullWidth = false, status: statusOverride }) {
|
|
98
102
|
const turns = useMemo(() => transcript?.status !== "loading" ? groupMessages(transcript?.messages ?? []) : [], [transcript]);
|
|
99
103
|
const childStatus = statusOverride ?? transcriptStatus(child);
|
|
100
104
|
const artifactRuns = useMemo(() => transcript?.status !== "loading" ? derivePrimeAgentArtifactRuns(transcript?.messages ?? [], transcript?.presentation, childStatus) : [], [childStatus, transcript]);
|
|
101
105
|
const artifacts = useMemo(() => artifactRuns.flatMap((run) => run.artifacts), [artifactRuns]);
|
|
106
|
+
const presentation = transcript?.presentation;
|
|
107
|
+
const renderSubagentTurn = useCallback((turn, index) => {
|
|
108
|
+
const isLast = index === turns.length - 1;
|
|
109
|
+
return /* @__PURE__ */ jsx(SubagentTurnView, {
|
|
110
|
+
turn,
|
|
111
|
+
isLast,
|
|
112
|
+
isStreaming: isLast && childStatus === "streaming",
|
|
113
|
+
artifacts: isLast ? artifacts : [],
|
|
114
|
+
presentation: isLast ? presentation : void 0
|
|
115
|
+
});
|
|
116
|
+
}, [
|
|
117
|
+
artifacts,
|
|
118
|
+
childStatus,
|
|
119
|
+
presentation,
|
|
120
|
+
turns.length
|
|
121
|
+
]);
|
|
102
122
|
const title = child.sessionName || child.label;
|
|
123
|
+
const [heartbeatLabel, setHeartbeatLabel] = useState(null);
|
|
124
|
+
useEffect(() => {
|
|
125
|
+
setHeartbeatLabel(child.lastHeardFrom ? new Date(child.lastHeardFrom).toLocaleTimeString() : null);
|
|
126
|
+
}, [child.lastHeardFrom]);
|
|
127
|
+
const viewportRef = useRef(null);
|
|
103
128
|
return /* @__PURE__ */ jsxs("section", {
|
|
104
129
|
"aria-label": `Subagent thread: ${child.label}`,
|
|
105
130
|
className: cn(fullWidth ? "flex min-h-0 min-w-0 flex-1 flex-col" : "space-y-2", "min-w-0"),
|
|
@@ -117,20 +142,20 @@ function SubagentTranscriptView({ child, parentSessionId, transcript, onRefresh,
|
|
|
117
142
|
className: "min-w-0 flex-1 truncate text-xs font-medium text-foreground/80",
|
|
118
143
|
children: title
|
|
119
144
|
}), /* @__PURE__ */ jsx("span", {
|
|
120
|
-
className: "shrink-0 text-[
|
|
145
|
+
className: "shrink-0 text-[0.625rem] capitalize text-foreground/45",
|
|
121
146
|
children: child.status
|
|
122
147
|
})]
|
|
123
148
|
}),
|
|
124
149
|
child.model ? /* @__PURE__ */ jsx("p", {
|
|
125
|
-
className: "truncate font-mono text-[
|
|
150
|
+
className: "truncate font-mono text-[0.625rem] text-foreground/40",
|
|
126
151
|
children: child.model
|
|
127
152
|
}) : null,
|
|
128
|
-
|
|
129
|
-
className: "truncate text-[
|
|
130
|
-
children: ["Heartbeat: ",
|
|
153
|
+
heartbeatLabel ? /* @__PURE__ */ jsxs("p", {
|
|
154
|
+
className: "truncate text-[0.625rem] text-foreground/40",
|
|
155
|
+
children: ["Heartbeat: ", heartbeatLabel]
|
|
131
156
|
}) : null,
|
|
132
157
|
child.answerPreview || child.recap ? /* @__PURE__ */ jsx("p", {
|
|
133
|
-
className: "mt-1 line-clamp-3 whitespace-pre-wrap text-[
|
|
158
|
+
className: "mt-1 line-clamp-3 whitespace-pre-wrap text-[0.6875rem] leading-4 text-foreground/55",
|
|
134
159
|
children: child.answerPreview ?? child.recap
|
|
135
160
|
}) : null
|
|
136
161
|
]
|
|
@@ -147,23 +172,23 @@ function SubagentTranscriptView({ child, parentSessionId, transcript, onRefresh,
|
|
|
147
172
|
}) : null
|
|
148
173
|
]
|
|
149
174
|
}), !parentSessionId ? /* @__PURE__ */ jsx("p", {
|
|
150
|
-
className: "rounded-md border border-dashed border-border/70
|
|
175
|
+
className: "rounded-md border border-dashed border-border/70 p-3 text-[0.6875rem] leading-4 text-foreground/45",
|
|
151
176
|
children: "This subagent thread is unavailable until the parent session is active."
|
|
152
177
|
}) : transcript?.status === "loading" ? /* @__PURE__ */ jsx("div", {
|
|
153
|
-
className: cn("flex items-center justify-center rounded-md border border-dashed border-border/70 text-[
|
|
178
|
+
className: cn("flex items-center justify-center rounded-md border border-dashed border-border/70 text-[0.6875rem] text-foreground/45", fullWidth ? "min-h-32 flex-1" : "min-h-32"),
|
|
154
179
|
children: "Loading subagent thread\u2026"
|
|
155
180
|
}) : transcript?.status === "error" && turns.length === 0 ? /* @__PURE__ */ jsxs("div", {
|
|
156
181
|
role: "alert",
|
|
157
|
-
className: "flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-[
|
|
182
|
+
className: "flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-[0.6875rem] leading-4 text-destructive",
|
|
158
183
|
children: [/* @__PURE__ */ jsx(CircleAlert, { className: "mt-0.5 size-3.5 shrink-0" }), /* @__PURE__ */ jsx("span", { children: transcript.error?.message ?? "Unable to load this subagent thread." })]
|
|
159
184
|
}) : turns.length === 0 ? /* @__PURE__ */ jsx("p", {
|
|
160
|
-
className: "rounded-md border border-dashed border-border/70
|
|
185
|
+
className: "rounded-md border border-dashed border-border/70 p-3 text-[0.6875rem] leading-4 text-foreground/45",
|
|
161
186
|
children: "This subagent thread has no messages yet."
|
|
162
187
|
}) : /* @__PURE__ */ jsxs("div", {
|
|
163
188
|
className: "flex min-h-0 flex-1 flex-col",
|
|
164
189
|
children: [transcript?.error ? /* @__PURE__ */ jsxs("div", {
|
|
165
190
|
role: "alert",
|
|
166
|
-
className: "mx-4 mt-2 flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-[
|
|
191
|
+
className: "mx-4 mt-2 flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-[0.6875rem] leading-4 text-destructive sm:mx-6",
|
|
167
192
|
children: [/* @__PURE__ */ jsx(CircleAlert, { className: "mt-0.5 size-3.5 shrink-0" }), /* @__PURE__ */ jsx("span", { children: transcript.error.message })]
|
|
168
193
|
}) : null, /* @__PURE__ */ jsx("div", {
|
|
169
194
|
className: cn("min-h-0 rounded-md border border-border/60 bg-background", fullWidth ? "flex min-h-0 flex-1 flex-col border-x-0 rounded-none border-b-0" : "h-96 max-h-[calc(100svh-18rem)]"),
|
|
@@ -173,17 +198,16 @@ function SubagentTranscriptView({ child, parentSessionId, transcript, onRefresh,
|
|
|
173
198
|
followOutput: childStatus === "streaming",
|
|
174
199
|
label: `Transcript for ${child.label}`,
|
|
175
200
|
smooth: childStatus === "streaming",
|
|
201
|
+
viewportRef,
|
|
176
202
|
viewportClassName: fullWidth ? "px-0" : void 0,
|
|
177
203
|
contentClassName: cn("flex flex-col gap-4", fullWidth ? "mx-auto w-full max-w-3xl px-4 py-6 sm:px-6" : "px-2.5 py-3"),
|
|
178
|
-
children:
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
presentation: isLast ? transcript?.presentation : void 0
|
|
186
|
-
}, turn.user?.id ?? `subagent-turn-${index}`);
|
|
204
|
+
children: /* @__PURE__ */ jsx(VirtualizedTurnList, {
|
|
205
|
+
estimateSize: 320,
|
|
206
|
+
getItemKey: getSubagentTurnKey,
|
|
207
|
+
itemGap: 16,
|
|
208
|
+
items: turns,
|
|
209
|
+
renderItem: renderSubagentTurn,
|
|
210
|
+
viewportRef
|
|
187
211
|
})
|
|
188
212
|
})
|
|
189
213
|
})]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createLucideIcon
|
|
3
|
+
} from "./chunk-4ZIEVI5O.js";
|
|
4
|
+
|
|
5
|
+
// web/app/dist/server/assets/pencil-BbtQVrFg.js
|
|
6
|
+
var Pencil = createLucideIcon("pencil", [["path", {
|
|
7
|
+
d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
|
|
8
|
+
key: "1a8usu"
|
|
9
|
+
}], ["path", {
|
|
10
|
+
d: "m15 5 4 4",
|
|
11
|
+
key: "1mk7zo"
|
|
12
|
+
}]]);
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
Pencil
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* @license lucide-react v1.38.0 - ISC
|
|
19
|
+
*
|
|
20
|
+
* This source code is licensed under the ISC license.
|
|
21
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
22
|
+
*/
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
cn
|
|
31
31
|
} from "./chunk-DJMHPJBP.js";
|
|
32
32
|
|
|
33
|
-
// web/app/dist/server/assets/citations-
|
|
33
|
+
// web/app/dist/server/assets/citations-CYHZanjq.js
|
|
34
34
|
import { Suspense, lazy, useCallback, useEffect, useId, useState } from "react";
|
|
35
35
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
36
36
|
var BookOpenText = createLucideIcon("book-open-text", [
|
|
@@ -191,7 +191,7 @@ function CitationRow({ citation, index, idPrefix }) {
|
|
|
191
191
|
/* @__PURE__ */ jsxs("span", {
|
|
192
192
|
className: "flex shrink-0 items-center gap-1.5",
|
|
193
193
|
children: [/* @__PURE__ */ jsx("span", {
|
|
194
|
-
className: "grid size-5 place-items-center rounded-md bg-foreground/[0.05] text-[
|
|
194
|
+
className: "grid size-5 place-items-center rounded-md bg-foreground/[0.05] text-[0.625rem] font-semibold tabular-nums text-muted-foreground",
|
|
195
195
|
children: index
|
|
196
196
|
}), safeUrl ? /* @__PURE__ */ jsx(ExternalLink, { className: "size-3.5 text-muted-foreground/40 transition-colors group-hover/citation:text-muted-foreground" }) : null]
|
|
197
197
|
})
|
|
@@ -276,7 +276,7 @@ function Citations({ citations, title = "Sources", open, defaultOpen = false, on
|
|
|
276
276
|
children: title
|
|
277
277
|
}),
|
|
278
278
|
/* @__PURE__ */ jsx("span", {
|
|
279
|
-
className: "rounded-full bg-muted px-1.5 py-0.5 text-[
|
|
279
|
+
className: "rounded-full bg-muted px-1.5 py-0.5 text-[0.625rem] font-semibold tabular-nums",
|
|
280
280
|
children: citations.length
|
|
281
281
|
}),
|
|
282
282
|
/* @__PURE__ */ jsx(m.span, {
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
cn
|
|
6
6
|
} from "./chunk-DJMHPJBP.js";
|
|
7
7
|
|
|
8
|
-
// web/app/dist/server/assets/ipython-tool-
|
|
8
|
+
// web/app/dist/server/assets/ipython-tool-XRT6nQzr.js
|
|
9
9
|
import React, { memo, useEffect, useMemo, useRef, useState } from "react";
|
|
10
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
11
|
var CodeXml = createLucideIcon("code-xml", [
|
|
@@ -273,7 +273,7 @@ function IpythonCardHeader({ isPending, isBashCell, hasError, kernelRestarted })
|
|
|
273
273
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
274
274
|
className: "flex min-w-0 items-center gap-1.5 overflow-hidden",
|
|
275
275
|
children: [/* @__PURE__ */ jsxs("span", {
|
|
276
|
-
className: "inline-flex items-center gap-1 rounded-sm bg-muted px-1.5 py-0.5 font-mono text-[
|
|
276
|
+
className: "inline-flex items-center gap-1 rounded-sm bg-muted px-1.5 py-0.5 font-mono text-[0.625rem] leading-none text-muted-foreground uppercase",
|
|
277
277
|
children: [/* @__PURE__ */ jsx(CodeXml, { className: "h-3 w-3" }), isBashCell ? "shell" : "python"]
|
|
278
278
|
}), isPending ? /* @__PURE__ */ jsx(ToolTextShimmer, {
|
|
279
279
|
as: "span",
|
|
@@ -303,9 +303,9 @@ function IpythonCardHeader({ isPending, isBashCell, hasError, kernelRestarted })
|
|
|
303
303
|
}
|
|
304
304
|
function IpythonBackgroundOutput({ output }) {
|
|
305
305
|
return /* @__PURE__ */ jsxs("div", {
|
|
306
|
-
className: "mt-1.5 border-t border-dashed border-border/70 pt-1.5 font-mono text-[
|
|
306
|
+
className: "mt-1.5 border-t border-dashed border-border/70 pt-1.5 font-mono text-[0.6875rem] leading-[15px]",
|
|
307
307
|
children: [/* @__PURE__ */ jsx("span", {
|
|
308
|
-
className: "text-[
|
|
308
|
+
className: "text-[0.625rem] font-semibold uppercase tracking-wider text-amber-600/90 dark:text-amber-400/90",
|
|
309
309
|
children: "Unattributed background output:"
|
|
310
310
|
}), /* @__PURE__ */ jsx("div", {
|
|
311
311
|
className: "mt-0.5 max-h-[140px] overflow-auto whitespace-pre-wrap rounded bg-muted/40 p-1.5 text-muted-foreground",
|
|
@@ -333,7 +333,7 @@ function IpythonCellCard({ step, state, onComplete, approval, cellIndex, part })
|
|
|
333
333
|
kernelRestarted: details?.kernelRestarted
|
|
334
334
|
}),
|
|
335
335
|
/* @__PURE__ */ jsxs("div", {
|
|
336
|
-
className: "overflow-hidden border-t border-border bg-background px-2.5 py-1.5 font-mono text-[
|
|
336
|
+
className: "overflow-hidden border-t border-border bg-background px-2.5 py-1.5 font-mono text-[0.75rem] leading-[16px]",
|
|
337
337
|
children: [
|
|
338
338
|
/* @__PURE__ */ jsxs("div", {
|
|
339
339
|
className: "break-all whitespace-pre-wrap",
|
|
@@ -9,9 +9,16 @@ import {
|
|
|
9
9
|
cn
|
|
10
10
|
} from "./chunk-DJMHPJBP.js";
|
|
11
11
|
|
|
12
|
-
// web/app/dist/server/assets/input-group-
|
|
12
|
+
// web/app/dist/server/assets/input-group-TQw1asH2.js
|
|
13
13
|
import "react";
|
|
14
14
|
import { jsx } from "react/jsx-runtime";
|
|
15
|
+
function Textarea({ className, ...props }) {
|
|
16
|
+
return /* @__PURE__ */ jsx("textarea", {
|
|
17
|
+
"data-slot": "textarea",
|
|
18
|
+
className: cn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", className),
|
|
19
|
+
...props
|
|
20
|
+
});
|
|
21
|
+
}
|
|
15
22
|
function InputGroup({ className, ...props }) {
|
|
16
23
|
return /* @__PURE__ */ jsx("div", {
|
|
17
24
|
"data-slot": "input-group",
|
|
@@ -69,6 +76,7 @@ function InputGroupInput({ className, ...props }) {
|
|
|
69
76
|
}
|
|
70
77
|
|
|
71
78
|
export {
|
|
79
|
+
Textarea,
|
|
72
80
|
InputGroup,
|
|
73
81
|
InputGroupAddon,
|
|
74
82
|
InputGroupButton,
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// web/app/dist/server/assets/session-label-DAwGAfxA.js
|
|
2
|
+
var SECRET_VALUE_PATTERNS = [
|
|
3
|
+
/\bsk-[A-Za-z0-9._-]{8,}\b/g,
|
|
4
|
+
/\b(?:github_pat_|gh[pousr]_)[A-Za-z0-9_]{8,}\b/g,
|
|
5
|
+
/\bxox[baprs]-[A-Za-z0-9-]{8,}\b/g,
|
|
6
|
+
/\bAIza[A-Za-z0-9_-]{20,}\b/g
|
|
7
|
+
];
|
|
8
|
+
var NAMED_SECRET_PATTERN = /\b(api[ _-]?key|access[ _-]?token|auth[ _-]?token|bearer|password|secret)\s*([:=])\s*(?:"[^"]*"|'[^']*'|[^\s,;]+)/gi;
|
|
9
|
+
function redactSessionLabelSecrets(label) {
|
|
10
|
+
let redacted = label.replace(NAMED_SECRET_PATTERN, (_match, name, separator) => `${name}${separator} [redacted]`);
|
|
11
|
+
for (const pattern of SECRET_VALUE_PATTERNS) redacted = redacted.replace(pattern, "[redacted]");
|
|
12
|
+
return redacted;
|
|
13
|
+
}
|
|
14
|
+
function meaningfulSessionLabel(value) {
|
|
15
|
+
const trimmed = value?.trim();
|
|
16
|
+
if (!trimmed || trimmed === "(no messages)") return void 0;
|
|
17
|
+
const redacted = redactSessionLabelSecrets(trimmed).trim();
|
|
18
|
+
return redacted.length > 0 ? redacted : void 0;
|
|
19
|
+
}
|
|
20
|
+
function fallbackSessionLabel(sessionId) {
|
|
21
|
+
return sessionId.slice(0, 8);
|
|
22
|
+
}
|
|
23
|
+
function sessionListTitle(input) {
|
|
24
|
+
return meaningfulSessionLabel(input.title) ?? meaningfulSessionLabel(input.firstMessage) ?? fallbackSessionLabel(input.sessionId);
|
|
25
|
+
}
|
|
26
|
+
function disambiguateSessionLabel(base, sessionId, collidingCount) {
|
|
27
|
+
if (collidingCount <= 1) return base;
|
|
28
|
+
const suffix = sessionId.slice(-4);
|
|
29
|
+
if (base.endsWith(suffix)) return base;
|
|
30
|
+
return `${base} \xB7 ${suffix}`;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export {
|
|
34
|
+
redactSessionLabelSecrets,
|
|
35
|
+
meaningfulSessionLabel,
|
|
36
|
+
fallbackSessionLabel,
|
|
37
|
+
sessionListTitle,
|
|
38
|
+
disambiguateSessionLabel
|
|
39
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// web/app/dist/server/assets/safe-storage-BmW7IjhZ.js
|
|
2
|
+
function getStorage(kind) {
|
|
3
|
+
if (typeof window === "undefined") return null;
|
|
4
|
+
try {
|
|
5
|
+
return kind === "local" ? window.localStorage : window.sessionStorage;
|
|
6
|
+
} catch {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function readStoredValue(key, kind = "local") {
|
|
11
|
+
const storage = getStorage(kind);
|
|
12
|
+
if (!storage) return null;
|
|
13
|
+
try {
|
|
14
|
+
return storage.getItem(key);
|
|
15
|
+
} catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function writeStoredValue(key, value, kind = "local") {
|
|
20
|
+
const storage = getStorage(kind);
|
|
21
|
+
if (!storage) return;
|
|
22
|
+
try {
|
|
23
|
+
storage.setItem(key, value);
|
|
24
|
+
} catch {
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function removeStoredValue(key, kind = "local") {
|
|
28
|
+
const storage = getStorage(kind);
|
|
29
|
+
if (!storage) return;
|
|
30
|
+
try {
|
|
31
|
+
storage.removeItem(key);
|
|
32
|
+
} catch {
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export {
|
|
37
|
+
readStoredValue,
|
|
38
|
+
writeStoredValue,
|
|
39
|
+
removeStoredValue
|
|
40
|
+
};
|
|
@@ -70,7 +70,7 @@ import {
|
|
|
70
70
|
cn
|
|
71
71
|
} from "./chunk-DJMHPJBP.js";
|
|
72
72
|
|
|
73
|
-
// web/app/dist/server/assets/provider-label-
|
|
73
|
+
// web/app/dist/server/assets/provider-label-Bp5Y1v8Y.js
|
|
74
74
|
import * as React$1 from "react";
|
|
75
75
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
76
76
|
import * as ReactDOM from "react-dom";
|
|
@@ -181,13 +181,6 @@ var Cpu = createLucideIcon("cpu", [
|
|
|
181
181
|
key: "z9xiuo"
|
|
182
182
|
}]
|
|
183
183
|
]);
|
|
184
|
-
var Pencil = createLucideIcon("pencil", [["path", {
|
|
185
|
-
d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
|
|
186
|
-
key: "1a8usu"
|
|
187
|
-
}], ["path", {
|
|
188
|
-
d: "m15 5 4 4",
|
|
189
|
-
key: "1mk7zo"
|
|
190
|
-
}]]);
|
|
191
184
|
var Server = createLucideIcon("server", [
|
|
192
185
|
["rect", {
|
|
193
186
|
width: "20",
|
|
@@ -908,7 +901,7 @@ function safePolygon(options = {}) {
|
|
|
908
901
|
};
|
|
909
902
|
return fn;
|
|
910
903
|
}
|
|
911
|
-
var COMPACT_ACTION_BUTTON_CLASS = "h-8 shrink-0 cursor-pointer rounded-full border-border/45 bg-background/65 px-3 text-[
|
|
904
|
+
var COMPACT_ACTION_BUTTON_CLASS = "h-8 shrink-0 cursor-pointer rounded-full border-border/45 bg-background/65 px-3 text-[0.6875rem] font-semibold text-foreground/75 shadow-sm transition-[background-color,border-color,box-shadow,opacity,transform] duration-150 hover:bg-foreground/5 active:scale-[0.96] disabled:opacity-50";
|
|
912
905
|
var HIT_AREA_EXPAND_CLASS = "relative after:absolute after:top-1/2 after:left-1/2 after:size-10 after:-translate-x-1/2 after:-translate-y-1/2";
|
|
913
906
|
var HIT_AREA_EXPAND_DENSE_CLASS = "relative after:absolute after:inset-x-0 after:-top-1.5 after:-bottom-1.5";
|
|
914
907
|
var CHROME_PILL_CLASS = "relative inline-flex h-9 items-center gap-1.5 rounded-[10px] border border-border/70 px-3 text-label font-medium whitespace-nowrap shadow-sm backdrop-blur transition-colors";
|
|
@@ -1166,7 +1159,6 @@ function formatProviderLabel(provider) {
|
|
|
1166
1159
|
export {
|
|
1167
1160
|
ArrowLeft,
|
|
1168
1161
|
Cpu,
|
|
1169
|
-
Pencil,
|
|
1170
1162
|
Settings,
|
|
1171
1163
|
Trash2,
|
|
1172
1164
|
getDelay,
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
redactSessionLabelSecrets
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PTCKOR23.js";
|
|
4
|
+
import {
|
|
5
|
+
readStoredValue,
|
|
6
|
+
writeStoredValue
|
|
7
|
+
} from "./chunk-SZJUXVWG.js";
|
|
4
8
|
import {
|
|
5
9
|
AnimatePresence,
|
|
6
10
|
useReducedMotion
|
|
@@ -16,7 +20,7 @@ import {
|
|
|
16
20
|
cn
|
|
17
21
|
} from "./chunk-DJMHPJBP.js";
|
|
18
22
|
|
|
19
|
-
// web/app/dist/server/assets/horizontal-resize-
|
|
23
|
+
// web/app/dist/server/assets/horizontal-resize-By86nXcf.js
|
|
20
24
|
import { Children, cloneElement, forwardRef, isValidElement, useId, useState } from "react";
|
|
21
25
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
22
26
|
var File = createLucideIcon("file", [["path", {
|
|
@@ -30,7 +34,7 @@ var FolderOpen = createLucideIcon("folder-open", [["path", {
|
|
|
30
34
|
d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",
|
|
31
35
|
key: "usdka0"
|
|
32
36
|
}]]);
|
|
33
|
-
var RESOURCE_CANVAS_VIEWPORT_RATIO = 0.
|
|
37
|
+
var RESOURCE_CANVAS_VIEWPORT_RATIO = 0.4;
|
|
34
38
|
var DESKTOP_PANEL_ONLY = "min-[960px]:hidden";
|
|
35
39
|
var WORKSPACE_SPLIT_HIDDEN_BLOCK = "hidden min-[640px]:block";
|
|
36
40
|
var WORKSPACE_SPLIT_GAP_RESET = "min-[640px]:gap-0";
|
|
@@ -184,12 +188,13 @@ function isDaytonaNotConnectedError(error) {
|
|
|
184
188
|
}
|
|
185
189
|
function readStoredWidth(storageKey, defaultWidth, clamp) {
|
|
186
190
|
if (typeof window === "undefined") return defaultWidth;
|
|
187
|
-
const
|
|
191
|
+
const stored = readStoredValue(storageKey);
|
|
192
|
+
if (stored === null) return defaultWidth;
|
|
193
|
+
const value = Number(stored);
|
|
188
194
|
return Number.isFinite(value) ? clamp(value) : defaultWidth;
|
|
189
195
|
}
|
|
190
196
|
function storeStoredWidth(storageKey, width) {
|
|
191
|
-
|
|
192
|
-
window.localStorage.setItem(storageKey, String(Math.round(width)));
|
|
197
|
+
writeStoredValue(storageKey, String(Math.round(width)));
|
|
193
198
|
}
|
|
194
199
|
function startHorizontalResize({ event, getNextWidth, onWidthChange, startWidth, startX }) {
|
|
195
200
|
event.preventDefault();
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
cn
|
|
3
3
|
} from "./chunk-DJMHPJBP.js";
|
|
4
4
|
|
|
5
|
-
// web/app/dist/server/assets/surfaces-
|
|
5
|
+
// web/app/dist/server/assets/surfaces-DlT92b6L.js
|
|
6
6
|
import { useLayoutEffect, useRef, useState } from "react";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
var paper = "bg-background shadow-[0_1px_2px_rgba(0,0,0,0.04),0_12px_32px_-16px_rgba(0,0,0,0.12)] dark:bg-popover dark:shadow-none";
|
|
@@ -12,7 +12,7 @@ var labelSwap = "col-start-1 row-start-1 flex w-max items-center gap-1.5 leading
|
|
|
12
12
|
var labelSwapIn = "opacity-100 blur-none";
|
|
13
13
|
var labelSwapOut = "pointer-events-none select-none opacity-0 blur-[2px]";
|
|
14
14
|
var collapsePanel = "h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-200 ease-[cubic-bezier(0.32,0.72,0,1)] data-[ending-style]:h-0 data-[starting-style]:h-0 motion-reduce:transition-none";
|
|
15
|
-
var mono = "font-mono text-[
|
|
15
|
+
var mono = "font-mono text-[0.6875rem] tracking-tight";
|
|
16
16
|
function ShimmerLabel({ active = true, className, ...props }) {
|
|
17
17
|
return /* @__PURE__ */ jsx("span", {
|
|
18
18
|
className: cn(active && "shimmer motion-reduce:animate-none", className),
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-PVJCTQFK.js";
|
|
7
7
|
import {
|
|
8
8
|
useHoverCapable
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-N6NOTURM.js";
|
|
10
10
|
import {
|
|
11
11
|
LoaderCircle
|
|
12
12
|
} from "./chunk-TNL4YV63.js";
|
|
@@ -50,7 +50,7 @@ import {
|
|
|
50
50
|
cn
|
|
51
51
|
} from "./chunk-DJMHPJBP.js";
|
|
52
52
|
|
|
53
|
-
// web/app/dist/server/assets/prompt-input-
|
|
53
|
+
// web/app/dist/server/assets/prompt-input-CQuyIgBz.js
|
|
54
54
|
import { cloneElement, createContext, forwardRef, isValidElement, useCallback, useContext, useEffect, useEffectEvent, useId, useInsertionEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
55
55
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
56
56
|
import { createPortal } from "react-dom";
|
|
@@ -498,15 +498,15 @@ forwardRef(function StatefulButton({ state = "idle", children, loadingText = "Lo
|
|
|
498
498
|
children: [
|
|
499
499
|
state === "loading" ? /* @__PURE__ */ jsx(IconSlot, {
|
|
500
500
|
keyId: "loading-icon",
|
|
501
|
-
children: /* @__PURE__ */ jsx(LoaderCircle, { className: "
|
|
501
|
+
children: /* @__PURE__ */ jsx(LoaderCircle, { className: "size-4 animate-spin" })
|
|
502
502
|
}) : null,
|
|
503
503
|
state === "success" ? /* @__PURE__ */ jsx(IconSlot, {
|
|
504
504
|
keyId: "success-icon",
|
|
505
|
-
children: /* @__PURE__ */ jsx(Check, { className: "
|
|
505
|
+
children: /* @__PURE__ */ jsx(Check, { className: "size-4" })
|
|
506
506
|
}) : null,
|
|
507
507
|
state === "error" ? /* @__PURE__ */ jsx(IconSlot, {
|
|
508
508
|
keyId: "error-icon",
|
|
509
|
-
children: /* @__PURE__ */ jsx(X, { className: "
|
|
509
|
+
children: /* @__PURE__ */ jsx(X, { className: "size-4" })
|
|
510
510
|
}) : null
|
|
511
511
|
]
|
|
512
512
|
}),
|
|
@@ -894,7 +894,7 @@ function AnimatedSelectTrigger({ className, children }) {
|
|
|
894
894
|
animate: { rotate: ctx.open ? 180 : 0 },
|
|
895
895
|
transition: ctx.reduce ? { duration: 0 } : CHEVRON_TRANSITION,
|
|
896
896
|
className: "text-muted-foreground",
|
|
897
|
-
children: /* @__PURE__ */ jsx(ChevronDown, { className: "
|
|
897
|
+
children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-4" })
|
|
898
898
|
})]
|
|
899
899
|
});
|
|
900
900
|
}
|
|
@@ -1028,7 +1028,7 @@ function AnimatedSelectItem({ value, disabled = false, className, children }) {
|
|
|
1028
1028
|
disabled,
|
|
1029
1029
|
onClick: () => ctx.select(value),
|
|
1030
1030
|
className: cn("flex w-full items-center justify-between gap-2 rounded-lg px-2.5 py-1.5 text-left text-sm outline-none transition-colors", selected ? "bg-muted text-foreground" : "text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:bg-muted", "disabled:pointer-events-none disabled:opacity-50", className),
|
|
1031
|
-
children: [children, selected ? /* @__PURE__ */ jsx(Check, { className: "
|
|
1031
|
+
children: [children, selected ? /* @__PURE__ */ jsx(Check, { className: "size-3.5 shrink-0" }) : null]
|
|
1032
1032
|
})
|
|
1033
1033
|
});
|
|
1034
1034
|
}
|
|
@@ -1059,7 +1059,9 @@ function PromptInput({ value, defaultValue = "", onValueChange, models = [], mod
|
|
|
1059
1059
|
resizeTextarea();
|
|
1060
1060
|
}, [resizeTextarea]);
|
|
1061
1061
|
const resizeRef = useRef(resizeTextarea);
|
|
1062
|
-
|
|
1062
|
+
useEffect(() => {
|
|
1063
|
+
resizeRef.current = resizeTextarea;
|
|
1064
|
+
});
|
|
1063
1065
|
useEffect(() => {
|
|
1064
1066
|
const textarea = textareaRef.current;
|
|
1065
1067
|
if (!textarea || typeof ResizeObserver === "undefined") return;
|