@tangle-network/sandbox-ui 0.6.1 → 0.9.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/README.md +5 -6
- package/dist/auth.d.ts +10 -6
- package/dist/auth.js +3 -3
- package/dist/{chat-container-Cg-GwyiK.d.ts → chat-container-f4yEs6KN.d.ts} +9 -1
- package/dist/chat.d.ts +12 -2
- package/dist/chat.js +10 -10
- package/dist/{chunk-WBQ7VULC.js → chunk-34A66VBG.js} +7 -7
- package/dist/{chunk-JP725R4W.js → chunk-34I7UFSX.js} +2 -2
- package/dist/{chunk-CNWVHQFY.js → chunk-54SQQMMM.js} +6 -24
- package/dist/{chunk-DLCFZDGX.js → chunk-5UM2XMEJ.js} +39 -14
- package/dist/{chunk-YYGECNZZ.js → chunk-66EZOYZR.js} +3 -3
- package/dist/{chunk-6V4XVKFY.js → chunk-7YWFOGKQ.js} +344 -338
- package/dist/{chunk-DCPYTL4W.js → chunk-D4CZWJCD.js} +72 -148
- package/dist/{chunk-XTPAWK7L.js → chunk-DI3NZ5ZX.js} +15 -51
- package/dist/{chunk-MXRQ4MJE.js → chunk-DXMIEK4K.js} +34 -23
- package/dist/{chunk-ZMWWE5RF.js → chunk-EXSOPXIY.js} +141 -123
- package/dist/{chunk-GW4GRAWJ.js → chunk-GSZA3TSY.js} +18 -12
- package/dist/{chunk-W4LM3QYZ.js → chunk-HB5Y37YU.js} +8 -8
- package/dist/{chunk-RKXIRRKQ.js → chunk-JLKYXLFN.js} +70 -66
- package/dist/{chunk-BRBTD7RH.js → chunk-MA7YKRUP.js} +28 -18
- package/dist/{chunk-TSE423UF.js → chunk-MKTSMWVD.js} +6 -6
- package/dist/{chunk-MJUDMVRU.js → chunk-MT5FJ3ZT.js} +17 -17
- package/dist/{chunk-565V6JTN.js → chunk-OHPW55EV.js} +60 -99
- package/dist/chunk-OKLQVY3Y.js +139 -0
- package/dist/{chunk-OVNLOE3Y.js → chunk-PLTZB5BC.js} +41 -41
- package/dist/{chunk-E2XT3G52.js → chunk-QC4BJEG6.js} +136 -137
- package/dist/{chunk-KH5UDAJ2.js → chunk-QDH5GEGY.js} +58 -54
- package/dist/{chunk-33W2TLUL.js → chunk-QID2OOMG.js} +12 -3
- package/dist/{chunk-FJSVPBKY.js → chunk-S7OXQTST.js} +17 -3
- package/dist/chunk-T7HMZEVO.js +216 -0
- package/dist/{chunk-FNYJFCGU.js → chunk-U6QTHMY6.js} +145 -256
- package/dist/{chunk-YS66Q3RC.js → chunk-US6JKJKH.js} +2 -2
- package/dist/chunk-VX3XOUEB.js +63 -0
- package/dist/{chunk-TDYQBLL5.js → chunk-ZMNSRDMH.js} +6 -6
- package/dist/dashboard.d.ts +156 -4
- package/dist/dashboard.js +885 -8
- package/dist/{document-editor-pane-DWWUTTTZ.js → document-editor-pane-TLPVRBBU.js} +3 -3
- package/dist/editor.d.ts +9 -8
- package/dist/editor.js +3 -3
- package/dist/files.js +3 -3
- package/dist/globals.css +4787 -69
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +7 -7
- package/dist/index.d.ts +4 -4
- package/dist/index.js +28 -28
- package/dist/markdown.js +1 -1
- package/dist/openui.js +5 -5
- package/dist/pages.d.ts +114 -5
- package/dist/pages.js +1978 -365
- package/dist/primitives.d.ts +5 -2
- package/dist/primitives.js +10 -10
- package/dist/run.js +4 -4
- package/dist/sdk-hooks.d.ts +2 -3
- package/dist/sdk-hooks.js +5 -5
- package/dist/styles.css +4787 -69
- package/dist/template-card-BAtvcAkU.d.ts +18 -0
- package/dist/terminal.d.ts +3 -1
- package/dist/terminal.js +66 -32
- package/dist/tokens.css +289 -237
- package/dist/{usage-chart-XCoB_7Xu.d.ts → usage-chart-SSiOgeQI.d.ts} +3 -1
- package/dist/{use-pty-session-COzVkhtc.d.ts → use-pty-session-0AOuwXgq.d.ts} +2 -0
- package/dist/{index-BT_-ecpc.d.ts → variant-list-CsS6ydgm.d.ts} +16 -7
- package/dist/workspace.d.ts +2 -2
- package/dist/workspace.js +13 -13
- package/package.json +18 -3
- package/tailwind.config.cjs +3 -2
- package/dist/chunk-3HW53XTH.js +0 -228
- package/dist/chunk-OKCIKTXQ.js +0 -63
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
CodeBlock,
|
|
12
12
|
CopyButton,
|
|
13
13
|
Markdown
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-T7HMZEVO.js";
|
|
15
15
|
import {
|
|
16
16
|
cn
|
|
17
17
|
} from "./chunk-RQHJBTEU.js";
|
|
@@ -39,17 +39,17 @@ function PreviewCard({
|
|
|
39
39
|
"div",
|
|
40
40
|
{
|
|
41
41
|
className: cn(
|
|
42
|
-
"overflow-hidden rounded-[var(--radius-lg)] border border-
|
|
42
|
+
"overflow-hidden rounded-[var(--radius-lg)] border border-border bg-card shadow-[var(--shadow-card)]",
|
|
43
43
|
className
|
|
44
44
|
),
|
|
45
45
|
children: [
|
|
46
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5 border-b border-
|
|
47
|
-
/* @__PURE__ */ jsx("div", { className: "flex h-[var(--tool-icon-size)] w-[var(--tool-icon-size)] shrink-0 items-center justify-center rounded-[var(--radius-sm)] border border-[var(--border-accent)] bg-
|
|
46
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5 border-b border-border bg-card px-[var(--tool-card-px)] py-[var(--tool-card-py)]", children: [
|
|
47
|
+
/* @__PURE__ */ jsx("div", { className: "flex h-[var(--tool-icon-size)] w-[var(--tool-icon-size)] shrink-0 items-center justify-center rounded-[var(--radius-sm)] border border-[var(--border-accent)] bg-muted text-primary", children: icon }),
|
|
48
48
|
/* @__PURE__ */ jsx("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
49
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-
|
|
50
|
-
description ? /* @__PURE__ */ jsx("span", { className: "truncate text-xs font-
|
|
49
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-foreground", children: title }),
|
|
50
|
+
description ? /* @__PURE__ */ jsx("span", { className: "truncate text-xs font-mono text-muted-foreground", children: description }) : null
|
|
51
51
|
] }) }),
|
|
52
|
-
meta ? /* @__PURE__ */ jsx("div", { className: "shrink-0 text-xs text-
|
|
52
|
+
meta ? /* @__PURE__ */ jsx("div", { className: "shrink-0 text-xs text-muted-foreground", children: meta }) : null
|
|
53
53
|
] }),
|
|
54
54
|
children ? /* @__PURE__ */ jsx("div", { className: "space-y-2 px-[var(--tool-card-px)] py-[var(--tool-card-py)]", children }) : null
|
|
55
55
|
]
|
|
@@ -64,7 +64,7 @@ function PreviewEmpty({
|
|
|
64
64
|
"div",
|
|
65
65
|
{
|
|
66
66
|
className: cn(
|
|
67
|
-
"rounded-[var(--radius-md)] border border-dashed border-
|
|
67
|
+
"rounded-[var(--radius-md)] border border-dashed border-border bg-muted px-3 py-2.5 text-xs text-muted-foreground",
|
|
68
68
|
className
|
|
69
69
|
),
|
|
70
70
|
children: label
|
|
@@ -75,8 +75,8 @@ function PreviewError({ error }) {
|
|
|
75
75
|
return /* @__PURE__ */ jsx("div", { className: "rounded-[var(--radius-md)] border border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] px-3 py-3 text-sm text-[var(--surface-danger-text)]", children: error });
|
|
76
76
|
}
|
|
77
77
|
function PreviewLoading({ label = "Running\u2026" }) {
|
|
78
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 rounded-[var(--radius-md)] border border-
|
|
79
|
-
/* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin text-
|
|
78
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 rounded-[var(--radius-md)] border border-border bg-muted px-3 py-2 text-xs text-muted-foreground", children: [
|
|
79
|
+
/* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin text-primary" }),
|
|
80
80
|
/* @__PURE__ */ jsx("span", { children: label })
|
|
81
81
|
] });
|
|
82
82
|
}
|
|
@@ -114,7 +114,7 @@ var CommandPreview = memo(({ part }) => {
|
|
|
114
114
|
"span",
|
|
115
115
|
{
|
|
116
116
|
className: cn(
|
|
117
|
-
"inline-flex items-center rounded-full border px-2 py-0.5 font-
|
|
117
|
+
"inline-flex items-center rounded-full border px-2 py-0.5 font-mono",
|
|
118
118
|
isError ? "border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] text-[var(--surface-danger-text)]" : "border-[var(--surface-success-border)] bg-[var(--surface-success-bg)] text-[var(--surface-success-text)]"
|
|
119
119
|
),
|
|
120
120
|
children: [
|
|
@@ -128,23 +128,23 @@ var CommandPreview = memo(({ part }) => {
|
|
|
128
128
|
"button",
|
|
129
129
|
{
|
|
130
130
|
onClick: () => setExpanded((value) => !value),
|
|
131
|
-
className: "flex w-full items-center gap-2 rounded-[var(--radius-md)] border border-
|
|
131
|
+
className: "flex w-full items-center gap-2 rounded-[var(--radius-md)] border border-border bg-muted px-3 py-2 text-left transition-colors hover:border-[var(--border-accent-hover)] hover:bg-accent/45",
|
|
132
132
|
children: [
|
|
133
|
-
/* @__PURE__ */ jsx2("code", { className: "min-w-0 flex-1 truncate text-xs font-
|
|
134
|
-
lineCount > 0 ? /* @__PURE__ */ jsxs2("span", { className: "shrink-0 text-xs text-
|
|
133
|
+
/* @__PURE__ */ jsx2("code", { className: "min-w-0 flex-1 truncate text-xs font-mono text-foreground", children: command }),
|
|
134
|
+
lineCount > 0 ? /* @__PURE__ */ jsxs2("span", { className: "shrink-0 text-xs text-muted-foreground", children: [
|
|
135
135
|
lineCount,
|
|
136
136
|
" line",
|
|
137
137
|
lineCount === 1 ? "" : "s"
|
|
138
138
|
] }) : null,
|
|
139
|
-
expanded ? /* @__PURE__ */ jsx2(ChevronDown, { className: "h-3.5 w-3.5 text-
|
|
139
|
+
expanded ? /* @__PURE__ */ jsx2(ChevronDown, { className: "h-3.5 w-3.5 text-muted-foreground" }) : /* @__PURE__ */ jsx2(ChevronRight, { className: "h-3.5 w-3.5 text-muted-foreground" })
|
|
140
140
|
]
|
|
141
141
|
}
|
|
142
142
|
),
|
|
143
143
|
part.state.status === "running" ? /* @__PURE__ */ jsx2(PreviewLoading, {}) : null,
|
|
144
144
|
errorText ? /* @__PURE__ */ jsx2(PreviewError, { error: errorText }) : null,
|
|
145
|
-
expanded && output ? /* @__PURE__ */ jsxs2("div", { className: "overflow-hidden rounded-[var(--radius-md)] border border-
|
|
146
|
-
output.stdout ? /* @__PURE__ */ jsx2("pre", { className: "max-h-80 overflow-auto px-3 py-3 text-xs font-
|
|
147
|
-
output.stderr ? /* @__PURE__ */ jsx2("pre", { className: "max-h-80 overflow-auto border-t border-
|
|
145
|
+
expanded && output ? /* @__PURE__ */ jsxs2("div", { className: "overflow-hidden rounded-[var(--radius-md)] border border-border bg-muted", children: [
|
|
146
|
+
output.stdout ? /* @__PURE__ */ jsx2("pre", { className: "max-h-80 overflow-auto px-3 py-3 text-xs font-mono whitespace-pre-wrap break-all text-foreground", children: output.stdout }) : null,
|
|
147
|
+
output.stderr ? /* @__PURE__ */ jsx2("pre", { className: "max-h-80 overflow-auto border-t border-border px-3 py-3 text-xs font-mono whitespace-pre-wrap break-all text-red-200", children: output.stderr }) : null
|
|
148
148
|
] }) : null
|
|
149
149
|
]
|
|
150
150
|
}
|
|
@@ -202,7 +202,7 @@ var WriteFilePreview = memo2(({ part }) => {
|
|
|
202
202
|
icon: /* @__PURE__ */ jsx3(FileEdit, { className: "h-4 w-4" }),
|
|
203
203
|
title: "Write file",
|
|
204
204
|
description: write.path,
|
|
205
|
-
meta: /* @__PURE__ */ jsxs3("span", { className: "text-xs text-
|
|
205
|
+
meta: /* @__PURE__ */ jsxs3("span", { className: "text-xs text-muted-foreground", children: [
|
|
206
206
|
"+",
|
|
207
207
|
lineCount,
|
|
208
208
|
" line",
|
|
@@ -308,12 +308,12 @@ var GrepResultsPreview = memo3(({ part }) => {
|
|
|
308
308
|
groupedMatches.map(([path, pathMatches]) => /* @__PURE__ */ jsxs4(
|
|
309
309
|
"div",
|
|
310
310
|
{
|
|
311
|
-
className: "rounded-[var(--radius-md)] border border-
|
|
311
|
+
className: "rounded-[var(--radius-md)] border border-border bg-muted/55",
|
|
312
312
|
children: [
|
|
313
|
-
/* @__PURE__ */ jsx4("div", { className: "border-b border-
|
|
314
|
-
/* @__PURE__ */ jsx4("div", { className: "divide-y divide-
|
|
315
|
-
/* @__PURE__ */ jsx4("div", { className: "pt-0.5 text-xs font-mono text-
|
|
316
|
-
/* @__PURE__ */ jsx4("pre", { className: "overflow-x-auto whitespace-pre-wrap break-words text-xs font-
|
|
313
|
+
/* @__PURE__ */ jsx4("div", { className: "border-b border-border px-3 py-2 text-xs font-medium text-foreground", children: path }),
|
|
314
|
+
/* @__PURE__ */ jsx4("div", { className: "divide-y divide-border", children: pathMatches.map((match, index) => /* @__PURE__ */ jsxs4("div", { className: "grid grid-cols-[auto_minmax(0,1fr)] gap-3 px-3 py-2", children: [
|
|
315
|
+
/* @__PURE__ */ jsx4("div", { className: "pt-0.5 text-xs font-mono text-muted-foreground", children: match.line ?? "\xB7" }),
|
|
316
|
+
/* @__PURE__ */ jsx4("pre", { className: "overflow-x-auto whitespace-pre-wrap break-words text-xs font-mono text-foreground", children: match.text })
|
|
317
317
|
] }, `${path}-${match.line ?? index}-${index}`)) })
|
|
318
318
|
]
|
|
319
319
|
},
|
|
@@ -378,10 +378,10 @@ var GlobResultsPreview = memo4(({ part }) => {
|
|
|
378
378
|
return /* @__PURE__ */ jsxs5(
|
|
379
379
|
"div",
|
|
380
380
|
{
|
|
381
|
-
className: "flex items-center gap-2 rounded-[var(--radius-md)] border border-
|
|
381
|
+
className: "flex items-center gap-2 rounded-[var(--radius-md)] border border-border bg-muted/55 px-3 py-2",
|
|
382
382
|
children: [
|
|
383
|
-
/* @__PURE__ */ jsx5(Icon, { className: "h-4 w-4 shrink-0 text-
|
|
384
|
-
/* @__PURE__ */ jsx5("span", { className: "min-w-0 truncate text-xs font-
|
|
383
|
+
/* @__PURE__ */ jsx5(Icon, { className: "h-4 w-4 shrink-0 text-primary" }),
|
|
384
|
+
/* @__PURE__ */ jsx5("span", { className: "min-w-0 truncate text-xs font-mono text-foreground", children: file })
|
|
385
385
|
]
|
|
386
386
|
},
|
|
387
387
|
file
|
|
@@ -460,11 +460,11 @@ var WebSearchPreview = memo5(({ part }) => {
|
|
|
460
460
|
href: result.url,
|
|
461
461
|
target: "_blank",
|
|
462
462
|
rel: "noreferrer",
|
|
463
|
-
className: "block rounded-[var(--radius-md)] border border-
|
|
463
|
+
className: "block rounded-[var(--radius-md)] border border-border bg-muted/55 px-3 py-3 transition-colors hover:border-[var(--border-accent-hover)] hover:bg-accent/50",
|
|
464
464
|
children: [
|
|
465
|
-
/* @__PURE__ */ jsx6("div", { className: "text-sm font-medium text-
|
|
466
|
-
/* @__PURE__ */ jsx6("div", { className: "mt-1 truncate text-xs text-
|
|
467
|
-
result.snippet ? /* @__PURE__ */ jsx6("p", { className: "mt-2 text-sm leading-relaxed text-
|
|
465
|
+
/* @__PURE__ */ jsx6("div", { className: "text-sm font-medium text-foreground", children: result.title }),
|
|
466
|
+
/* @__PURE__ */ jsx6("div", { className: "mt-1 truncate text-xs text-primary", children: result.url }),
|
|
467
|
+
result.snippet ? /* @__PURE__ */ jsx6("p", { className: "mt-2 text-sm leading-relaxed text-muted-foreground", children: result.snippet }) : null
|
|
468
468
|
]
|
|
469
469
|
},
|
|
470
470
|
result.url
|
|
@@ -539,14 +539,14 @@ var QuestionPreview = memo6(({ part }) => {
|
|
|
539
539
|
questions.map((question, index) => /* @__PURE__ */ jsxs7(
|
|
540
540
|
"div",
|
|
541
541
|
{
|
|
542
|
-
className: "rounded-[var(--radius-md)] border border-
|
|
542
|
+
className: "rounded-[var(--radius-md)] border border-border bg-muted px-3 py-3",
|
|
543
543
|
children: [
|
|
544
|
-
/* @__PURE__ */ jsxs7("div", { className: "text-xs font-semibold uppercase tracking-[0.08em] text-
|
|
544
|
+
/* @__PURE__ */ jsxs7("div", { className: "text-xs font-semibold uppercase tracking-[0.08em] text-muted-foreground", children: [
|
|
545
545
|
"Question ",
|
|
546
546
|
index + 1
|
|
547
547
|
] }),
|
|
548
|
-
/* @__PURE__ */ jsx7("div", { className: "mt-2 text-sm leading-relaxed text-
|
|
549
|
-
/* @__PURE__ */ jsx7("div", { className: "mt-3 rounded-[var(--radius-sm)] border border-
|
|
548
|
+
/* @__PURE__ */ jsx7("div", { className: "mt-2 text-sm leading-relaxed text-foreground", children: question }),
|
|
549
|
+
/* @__PURE__ */ jsx7("div", { className: "mt-3 rounded-[var(--radius-sm)] border border-border bg-card px-3 py-2 text-sm text-foreground", children: answers[index] ?? (part.state.status === "completed" ? "No answer recorded." : "Awaiting answer") })
|
|
550
550
|
]
|
|
551
551
|
},
|
|
552
552
|
`${question}-${index}`
|
|
@@ -600,11 +600,11 @@ var DiffPreview = memo7(({ part }) => {
|
|
|
600
600
|
!payload.diff && !payload.before && !payload.after ? /* @__PURE__ */ jsx8(PreviewEmpty, { label: "No structured diff payload was provided." }) : null,
|
|
601
601
|
payload.diff ? /* @__PURE__ */ jsx8(CodeBlock, { code: payload.diff, language: "diff", className: "rounded-[var(--radius-md)]" }) : null,
|
|
602
602
|
!payload.diff && payload.before ? /* @__PURE__ */ jsxs8("div", { className: "space-y-2", children: [
|
|
603
|
-
/* @__PURE__ */ jsx8("div", { className: "text-xs font-semibold uppercase tracking-[0.08em] text-
|
|
603
|
+
/* @__PURE__ */ jsx8("div", { className: "text-xs font-semibold uppercase tracking-[0.08em] text-muted-foreground", children: "Before" }),
|
|
604
604
|
/* @__PURE__ */ jsx8(CodeBlock, { code: payload.before, language: "text", className: "rounded-[var(--radius-md)]" })
|
|
605
605
|
] }) : null,
|
|
606
606
|
!payload.diff && payload.after ? /* @__PURE__ */ jsxs8("div", { className: "space-y-2", children: [
|
|
607
|
-
/* @__PURE__ */ jsx8("div", { className: "text-xs font-semibold uppercase tracking-[0.08em] text-
|
|
607
|
+
/* @__PURE__ */ jsx8("div", { className: "text-xs font-semibold uppercase tracking-[0.08em] text-muted-foreground", children: "After" }),
|
|
608
608
|
/* @__PURE__ */ jsx8(CodeBlock, { code: payload.after, language: "text", className: "rounded-[var(--radius-md)]" })
|
|
609
609
|
] }) : null
|
|
610
610
|
]
|
|
@@ -686,16 +686,16 @@ var ExpandedToolDetail = memo8(({ part }) => {
|
|
|
686
686
|
return /* @__PURE__ */ jsx9(DiffPreview, { part });
|
|
687
687
|
}
|
|
688
688
|
if (meta.displayVariant === "read-file") {
|
|
689
|
-
return /* @__PURE__ */ jsxs9("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-
|
|
690
|
-
/* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2.5 border-b border-
|
|
691
|
-
/* @__PURE__ */ jsx9("div", { className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] border border-[var(--border-accent)] bg-
|
|
689
|
+
return /* @__PURE__ */ jsxs9("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-border bg-card shadow-[var(--shadow-card)]", children: [
|
|
690
|
+
/* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2.5 border-b border-border bg-card px-3 py-2", children: [
|
|
691
|
+
/* @__PURE__ */ jsx9("div", { className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-[var(--radius-sm)] border border-[var(--border-accent)] bg-muted text-primary", children: /* @__PURE__ */ jsx9(FileText2, { className: "h-3.5 w-3.5" }) }),
|
|
692
692
|
/* @__PURE__ */ jsxs9("div", { className: "min-w-0 flex items-center gap-2", children: [
|
|
693
|
-
/* @__PURE__ */ jsx9("span", { className: "text-xs font-semibold text-
|
|
694
|
-
meta.targetPath ? /* @__PURE__ */ jsx9("span", { className: "truncate text-xs font-
|
|
693
|
+
/* @__PURE__ */ jsx9("span", { className: "text-xs font-semibold text-foreground", children: "Read file" }),
|
|
694
|
+
meta.targetPath ? /* @__PURE__ */ jsx9("span", { className: "truncate text-xs font-mono text-muted-foreground", children: meta.targetPath }) : null
|
|
695
695
|
] })
|
|
696
696
|
] }),
|
|
697
697
|
/* @__PURE__ */ jsxs9("div", { className: "space-y-2 px-3 py-2.5", children: [
|
|
698
|
-
typeof output === "string" ? /* @__PURE__ */ jsx9(CodeBlock, { code: output, language: langFromPath(meta.targetPath) ?? "text", className: "rounded-[var(--radius-md)]" }) : /* @__PURE__ */ jsx9("div", { className: "rounded-[var(--radius-md)] border border-dashed border-
|
|
698
|
+
typeof output === "string" ? /* @__PURE__ */ jsx9(CodeBlock, { code: output, language: langFromPath(meta.targetPath) ?? "text", className: "rounded-[var(--radius-md)]" }) : /* @__PURE__ */ jsx9("div", { className: "rounded-[var(--radius-md)] border border-dashed border-border bg-muted px-3 py-4 text-sm text-muted-foreground", children: "No readable file content was returned." }),
|
|
699
699
|
error ? /* @__PURE__ */ jsx9("div", { className: "rounded-[var(--radius-md)] border border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] px-3 py-3 text-sm text-[var(--surface-danger-text)]", children: error }) : null
|
|
700
700
|
] })
|
|
701
701
|
] });
|
|
@@ -703,17 +703,17 @@ var ExpandedToolDetail = memo8(({ part }) => {
|
|
|
703
703
|
const inputStr = formatOutput(input);
|
|
704
704
|
const outputStr = formatOutput(output);
|
|
705
705
|
return /* @__PURE__ */ jsxs9("div", { className: "space-y-3", children: [
|
|
706
|
-
inputStr && /* @__PURE__ */ jsxs9("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-
|
|
707
|
-
/* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 border-b border-
|
|
708
|
-
/* @__PURE__ */ jsx9(ArrowRight, { className: "h-3 w-3 text-
|
|
709
|
-
/* @__PURE__ */ jsx9("span", { className: "text-xs font-medium uppercase tracking-[0.08em] text-
|
|
706
|
+
inputStr && /* @__PURE__ */ jsxs9("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-border bg-card", children: [
|
|
707
|
+
/* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 border-b border-border bg-background px-3 py-2", children: [
|
|
708
|
+
/* @__PURE__ */ jsx9(ArrowRight, { className: "h-3 w-3 text-primary" }),
|
|
709
|
+
/* @__PURE__ */ jsx9("span", { className: "text-xs font-medium uppercase tracking-[0.08em] text-muted-foreground", children: "Input" })
|
|
710
710
|
] }),
|
|
711
711
|
/* @__PURE__ */ jsx9(CodeBlock, { code: inputStr, language: "json", className: "rounded-none border-0" })
|
|
712
712
|
] }),
|
|
713
|
-
status === "completed" && outputStr && /* @__PURE__ */ jsxs9("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-
|
|
714
|
-
/* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 border-b border-
|
|
715
|
-
/* @__PURE__ */ jsx9(ArrowLeft, { className: "h-3 w-3 text-
|
|
716
|
-
/* @__PURE__ */ jsx9("span", { className: "text-xs font-medium uppercase tracking-[0.08em] text-
|
|
713
|
+
status === "completed" && outputStr && /* @__PURE__ */ jsxs9("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-border bg-card", children: [
|
|
714
|
+
/* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 border-b border-border bg-background px-3 py-2", children: [
|
|
715
|
+
/* @__PURE__ */ jsx9(ArrowLeft, { className: "h-3 w-3 text-primary" }),
|
|
716
|
+
/* @__PURE__ */ jsx9("span", { className: "text-xs font-medium uppercase tracking-[0.08em] text-muted-foreground", children: "Output" })
|
|
717
717
|
] }),
|
|
718
718
|
/* @__PURE__ */ jsx9(
|
|
719
719
|
CodeBlock,
|
|
@@ -729,10 +729,10 @@ var ExpandedToolDetail = memo8(({ part }) => {
|
|
|
729
729
|
/* @__PURE__ */ jsx9(AlertCircle, { className: "h-3 w-3 text-[var(--surface-danger-text)]" }),
|
|
730
730
|
/* @__PURE__ */ jsx9("span", { className: "text-xs font-medium uppercase tracking-[0.08em] text-[var(--surface-danger-text)]", children: "Error" })
|
|
731
731
|
] }),
|
|
732
|
-
/* @__PURE__ */ jsx9("pre", { className: "bg-[var(--surface-danger-bg)] p-3 text-xs font-
|
|
732
|
+
/* @__PURE__ */ jsx9("pre", { className: "bg-[var(--surface-danger-bg)] p-3 text-xs font-mono whitespace-pre-wrap break-all text-[var(--surface-danger-text)]", children: error })
|
|
733
733
|
] }),
|
|
734
|
-
(status === "pending" || status === "running") && /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 rounded-[var(--radius-md)] border border-
|
|
735
|
-
/* @__PURE__ */ jsx9(Loader23, { className: cn("h-3 w-3 animate-spin text-
|
|
734
|
+
(status === "pending" || status === "running") && /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 rounded-[var(--radius-md)] border border-border bg-muted px-3 py-3 text-xs text-muted-foreground", children: [
|
|
735
|
+
/* @__PURE__ */ jsx9(Loader23, { className: cn("h-3 w-3 animate-spin text-primary") }),
|
|
736
736
|
"Running\u2026"
|
|
737
737
|
] })
|
|
738
738
|
] });
|
|
@@ -816,8 +816,8 @@ var InlineToolItem = memo9(
|
|
|
816
816
|
{
|
|
817
817
|
className: cn(
|
|
818
818
|
"w-full border text-left transition-colors",
|
|
819
|
-
"border-
|
|
820
|
-
open && "border-
|
|
819
|
+
"border-border bg-card hover:border-[var(--border-accent-hover)] hover:bg-accent/35",
|
|
820
|
+
open && "border-border bg-accent/30",
|
|
821
821
|
shapeClass,
|
|
822
822
|
className
|
|
823
823
|
),
|
|
@@ -825,22 +825,22 @@ var InlineToolItem = memo9(
|
|
|
825
825
|
/* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-2 px-2.5 py-1.5", children: [
|
|
826
826
|
/* @__PURE__ */ jsx11("div", { className: cn(
|
|
827
827
|
"shrink-0",
|
|
828
|
-
isRunning && "text-
|
|
828
|
+
isRunning && "text-primary",
|
|
829
829
|
isComplete && "text-[var(--surface-success-text)]",
|
|
830
830
|
isError && "text-[var(--surface-danger-text)]",
|
|
831
|
-
!isRunning && !isComplete && !isError && "text-
|
|
831
|
+
!isRunning && !isComplete && !isError && "text-muted-foreground"
|
|
832
832
|
), children: isRunning ? /* @__PURE__ */ jsx11(Loader24, { className: "h-3.5 w-3.5 animate-spin" }) : isComplete ? /* @__PURE__ */ jsx11(CheckCircle2, { className: "h-3.5 w-3.5" }) : isError ? /* @__PURE__ */ jsx11(AlertCircle2, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx11(DefaultIcon, { className: "h-3.5 w-3.5" }) }),
|
|
833
|
-
/* @__PURE__ */ jsx11("span", { className: "truncate text-xs font-medium text-
|
|
834
|
-
meta.description ? /* @__PURE__ */ jsx11("span", { className: "hidden truncate text-xs font-
|
|
833
|
+
/* @__PURE__ */ jsx11("span", { className: "truncate text-xs font-medium text-foreground", children: meta.title }),
|
|
834
|
+
meta.description ? /* @__PURE__ */ jsx11("span", { className: "hidden truncate text-xs font-mono text-muted-foreground sm:inline", children: meta.description }) : null,
|
|
835
835
|
/* @__PURE__ */ jsxs10("div", { className: "ml-auto flex shrink-0 items-center gap-1.5", children: [
|
|
836
836
|
isRunning && startTime ? /* @__PURE__ */ jsx11(LiveDuration, { startTime }) : null,
|
|
837
|
-
!isRunning && durationMs != null ? /* @__PURE__ */ jsx11("span", { className: "text-[10px] font-
|
|
837
|
+
!isRunning && durationMs != null ? /* @__PURE__ */ jsx11("span", { className: "text-[10px] font-mono tabular-nums text-muted-foreground", children: formatDuration(durationMs) }) : null,
|
|
838
838
|
isError ? /* @__PURE__ */ jsx11("span", { className: "rounded-full border border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] px-1.5 py-px text-[10px] font-semibold uppercase text-[var(--surface-danger-text)]", children: "Failed" }) : null,
|
|
839
|
-
isRunning ? /* @__PURE__ */ jsx11("span", { className: "rounded-full border border-[var(--border-accent)] bg-
|
|
840
|
-
open ? /* @__PURE__ */ jsx11(ChevronDown2, { className: "h-3 w-3 text-
|
|
839
|
+
isRunning ? /* @__PURE__ */ jsx11("span", { className: "rounded-full border border-[var(--border-accent)] bg-primary/10 px-1.5 py-px text-[10px] font-semibold uppercase text-primary", children: "Running" }) : null,
|
|
840
|
+
open ? /* @__PURE__ */ jsx11(ChevronDown2, { className: "h-3 w-3 text-muted-foreground" }) : /* @__PURE__ */ jsx11(ChevronRight2, { className: "h-3 w-3 text-muted-foreground" })
|
|
841
841
|
] })
|
|
842
842
|
] }),
|
|
843
|
-
errorText && !open ? /* @__PURE__ */ jsx11("div", { className: "border-t border-
|
|
843
|
+
errorText && !open ? /* @__PURE__ */ jsx11("div", { className: "border-t border-border px-3 py-2 text-xs text-red-200", children: errorText }) : null
|
|
844
844
|
]
|
|
845
845
|
}
|
|
846
846
|
) }),
|
|
@@ -862,7 +862,7 @@ InlineToolItem.displayName = "InlineToolItem";
|
|
|
862
862
|
// src/run/inline-thinking-item.tsx
|
|
863
863
|
import { memo as memo10, useEffect as useEffect2, useRef, useState as useState4 } from "react";
|
|
864
864
|
import * as Collapsible2 from "@radix-ui/react-collapsible";
|
|
865
|
-
import { Brain,
|
|
865
|
+
import { Brain, ChevronRight as ChevronRight3 } from "lucide-react";
|
|
866
866
|
import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
867
867
|
var InlineThinkingItem = memo10(
|
|
868
868
|
({
|
|
@@ -893,38 +893,60 @@ var InlineThinkingItem = memo10(
|
|
|
893
893
|
return () => window.clearTimeout(timer);
|
|
894
894
|
}
|
|
895
895
|
}, [autoCollapse, durationMs, isActive]);
|
|
896
|
-
return /* @__PURE__ */
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
896
|
+
return /* @__PURE__ */ jsx12(Collapsible2.Root, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs11(
|
|
897
|
+
"div",
|
|
898
|
+
{
|
|
899
|
+
className: cn(
|
|
900
|
+
"overflow-hidden rounded-[var(--radius-lg)] border bg-card transition-colors",
|
|
901
|
+
isActive ? "border-[var(--border-accent)]" : "border-border hover:border-[var(--border-accent)]",
|
|
902
|
+
className
|
|
903
|
+
),
|
|
904
|
+
children: [
|
|
905
|
+
/* @__PURE__ */ jsx12(Collapsible2.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs11(
|
|
906
|
+
"button",
|
|
907
|
+
{
|
|
908
|
+
className: "flex w-full items-center gap-2.5 px-3 py-2 text-left text-sm cursor-pointer",
|
|
909
|
+
children: [
|
|
910
|
+
/* @__PURE__ */ jsx12(
|
|
911
|
+
"div",
|
|
912
|
+
{
|
|
913
|
+
className: cn(
|
|
914
|
+
"flex h-6 w-6 shrink-0 items-center justify-center rounded-[var(--radius-sm)] border",
|
|
915
|
+
isActive ? "border-[var(--border-accent)] bg-[var(--accent-surface-soft)] text-primary" : "border-border bg-muted text-muted-foreground"
|
|
916
|
+
),
|
|
917
|
+
children: /* @__PURE__ */ jsx12(Brain, { className: cn("h-3 w-3 shrink-0", isActive && "animate-pulse") })
|
|
918
|
+
}
|
|
919
|
+
),
|
|
920
|
+
/* @__PURE__ */ jsx12("p", { className: "min-w-0 flex-1 truncate font-[var(--font-sans)] text-muted-foreground", children: preview ?? (isActive ? "Thinking\u2026" : "Reasoning") }),
|
|
921
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
922
|
+
isActive && startTime ? /* @__PURE__ */ jsx12(LiveDuration, { startTime }) : null,
|
|
923
|
+
!isActive && durationMs != null ? /* @__PURE__ */ jsx12("span", { className: "shrink-0 text-xs tabular-nums text-muted-foreground", children: formatDuration(durationMs) }) : null,
|
|
924
|
+
/* @__PURE__ */ jsx12(
|
|
925
|
+
ChevronRight3,
|
|
926
|
+
{
|
|
927
|
+
className: cn(
|
|
928
|
+
"h-3 w-3 text-muted-foreground transition-transform shrink-0",
|
|
929
|
+
open && "rotate-90"
|
|
930
|
+
)
|
|
931
|
+
}
|
|
932
|
+
)
|
|
933
|
+
] })
|
|
934
|
+
]
|
|
935
|
+
}
|
|
936
|
+
) }),
|
|
937
|
+
/* @__PURE__ */ jsx12(Collapsible2.Content, { className: "overflow-hidden data-[state=open]:animate-slideDown data-[state=closed]:animate-slideUp", children: part.text ? /* @__PURE__ */ jsx12(
|
|
938
|
+
"div",
|
|
939
|
+
{
|
|
940
|
+
className: cn(
|
|
941
|
+
"max-h-60 overflow-y-auto border-t border-border bg-muted px-3 py-3 text-sm leading-relaxed text-muted-foreground",
|
|
942
|
+
contentClassName
|
|
943
|
+
),
|
|
944
|
+
children: /* @__PURE__ */ jsx12(Markdown, { children: part.text })
|
|
945
|
+
}
|
|
946
|
+
) : /* @__PURE__ */ jsx12("div", { className: "border-t border-border bg-muted px-3 py-2.5 text-xs text-muted-foreground", children: "No reasoning text provided." }) })
|
|
947
|
+
]
|
|
948
|
+
}
|
|
949
|
+
) });
|
|
928
950
|
}
|
|
929
951
|
);
|
|
930
952
|
InlineThinkingItem.displayName = "InlineThinkingItem";
|
|
@@ -935,7 +957,7 @@ import * as Collapsible3 from "@radix-ui/react-collapsible";
|
|
|
935
957
|
import {
|
|
936
958
|
Bot as Bot2,
|
|
937
959
|
Loader2 as Loader25,
|
|
938
|
-
ChevronDown as
|
|
960
|
+
ChevronDown as ChevronDown3,
|
|
939
961
|
ChevronRight as ChevronRight4,
|
|
940
962
|
Terminal as Terminal3,
|
|
941
963
|
FileEdit as FileEdit3,
|
|
@@ -950,12 +972,12 @@ import {
|
|
|
950
972
|
import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
951
973
|
var DEFAULT_BRANDING = {
|
|
952
974
|
label: "Agent",
|
|
953
|
-
accentClass: "text-
|
|
975
|
+
accentClass: "text-primary",
|
|
954
976
|
bgClass: "bg-[var(--accent-surface-soft)]",
|
|
955
|
-
containerBgClass: "bg-
|
|
956
|
-
borderClass: "border-
|
|
977
|
+
containerBgClass: "bg-muted",
|
|
978
|
+
borderClass: "border-border",
|
|
957
979
|
iconClass: "",
|
|
958
|
-
textClass: "text-
|
|
980
|
+
textClass: "text-primary"
|
|
959
981
|
};
|
|
960
982
|
var CATEGORY_ICON_MAP = {
|
|
961
983
|
command: Terminal3,
|
|
@@ -991,7 +1013,7 @@ function CategoryBadges({ categories }) {
|
|
|
991
1013
|
"span",
|
|
992
1014
|
{
|
|
993
1015
|
title: cat,
|
|
994
|
-
className: "flex h-5 w-5 items-center justify-center rounded border border-
|
|
1016
|
+
className: "flex h-5 w-5 items-center justify-center rounded border border-border text-muted-foreground",
|
|
995
1017
|
children: /* @__PURE__ */ jsx13(Icon, { className: "h-3 w-3" })
|
|
996
1018
|
},
|
|
997
1019
|
cat
|
|
@@ -1052,54 +1074,50 @@ var RunGroup = memo11(
|
|
|
1052
1074
|
if (!hasRenderableParts) {
|
|
1053
1075
|
return null;
|
|
1054
1076
|
}
|
|
1055
|
-
return /* @__PURE__ */
|
|
1056
|
-
/* @__PURE__ */ jsxs12("div", { className: "flex items-start gap-3", children: [
|
|
1077
|
+
return /* @__PURE__ */ jsx13(Collapsible3.Root, { open: !collapsed, onOpenChange: () => onToggle(), children: /* @__PURE__ */ jsxs12("div", { className: "rounded-[var(--radius-xl)] border border-border bg-card shadow-[var(--shadow-card)]", children: [
|
|
1078
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex items-start gap-3 px-4 py-4", children: [
|
|
1057
1079
|
/* @__PURE__ */ jsx13(Collapsible3.Trigger, { asChild: true, children: /* @__PURE__ */ jsx13(
|
|
1058
1080
|
"button",
|
|
1059
1081
|
{
|
|
1060
1082
|
className: cn(
|
|
1061
|
-
"w-full rounded-[
|
|
1062
|
-
"bg-
|
|
1063
|
-
collapsed ? branding.borderClass : "border-[var(--border-subtle)]",
|
|
1064
|
-
branding.bgClass
|
|
1083
|
+
"w-full rounded-[20px] px-0 py-0 text-left transition-colors",
|
|
1084
|
+
"bg-transparent hover:bg-transparent"
|
|
1065
1085
|
),
|
|
1066
1086
|
children: /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2.5", children: [
|
|
1067
1087
|
/* @__PURE__ */ jsx13(
|
|
1068
1088
|
"div",
|
|
1069
1089
|
{
|
|
1070
1090
|
className: cn(
|
|
1071
|
-
"flex h-
|
|
1072
|
-
branding.borderClass
|
|
1091
|
+
"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[var(--brand-primary)] text-white"
|
|
1073
1092
|
),
|
|
1074
|
-
children: /* @__PURE__ */ jsx13(Bot2, { className:
|
|
1093
|
+
children: /* @__PURE__ */ jsx13(Bot2, { className: "h-4 w-4" })
|
|
1075
1094
|
}
|
|
1076
1095
|
),
|
|
1077
|
-
/* @__PURE__ */ jsx13("span", { className: cn("text-
|
|
1078
|
-
renderSummary(run) ? /* @__PURE__ */ jsx13("span", { className: "text-[11px] text-
|
|
1079
|
-
collapsed && run.summaryText ? /* @__PURE__ */ jsx13("span", { className: "min-w-0 truncate text-[11px] text-
|
|
1096
|
+
/* @__PURE__ */ jsx13("span", { className: cn("text-sm font-semibold", branding.textClass), children: branding.label }),
|
|
1097
|
+
renderSummary(run) ? /* @__PURE__ */ jsx13("span", { className: "text-[11px] text-muted-foreground", children: renderSummary(run) }) : null,
|
|
1098
|
+
collapsed && run.summaryText ? /* @__PURE__ */ jsx13("span", { className: "min-w-0 truncate text-[11px] text-foreground/70", children: run.summaryText }) : null,
|
|
1080
1099
|
/* @__PURE__ */ jsxs12("div", { className: "ml-auto flex shrink-0 items-center gap-1.5", children: [
|
|
1081
1100
|
/* @__PURE__ */ jsx13(CategoryBadges, { categories: stats.toolCategories }),
|
|
1082
1101
|
isStreaming ? /* @__PURE__ */ jsxs12("span", { className: "inline-flex items-center gap-1 rounded-full border border-[var(--border-accent)] bg-[var(--accent-surface-soft)] px-2 py-px text-[10px] font-semibold uppercase text-[var(--accent-text)]", children: [
|
|
1083
1102
|
/* @__PURE__ */ jsx13(Loader25, { className: "h-2.5 w-2.5 animate-spin" }),
|
|
1084
1103
|
"Running"
|
|
1085
|
-
] }) : /* @__PURE__ */ jsxs12("span", { className: "inline-flex items-center gap-1 rounded-full border border-
|
|
1104
|
+
] }) : /* @__PURE__ */ jsxs12("span", { className: "inline-flex items-center gap-1 rounded-full border border-border px-2 py-px text-[10px] font-semibold uppercase text-muted-foreground", children: [
|
|
1086
1105
|
/* @__PURE__ */ jsx13(Sparkles, { className: "h-2.5 w-2.5" }),
|
|
1087
1106
|
"Done"
|
|
1088
1107
|
] }),
|
|
1089
|
-
!collapsed ? /* @__PURE__ */ jsx13(
|
|
1108
|
+
!collapsed ? /* @__PURE__ */ jsx13(ChevronDown3, { className: "h-3.5 w-3.5 text-muted-foreground" }) : /* @__PURE__ */ jsx13(ChevronRight4, { className: "h-3.5 w-3.5 text-muted-foreground" })
|
|
1090
1109
|
] })
|
|
1091
1110
|
] })
|
|
1092
1111
|
}
|
|
1093
1112
|
) }),
|
|
1094
1113
|
headerActions ? /* @__PURE__ */ jsx13("div", { className: "flex shrink-0 flex-wrap items-center justify-end gap-1.5 pt-1", children: headerActions }) : null
|
|
1095
1114
|
] }),
|
|
1096
|
-
collapsed && run.summaryText && /* @__PURE__ */ jsx13("div", { className: "px-4
|
|
1115
|
+
collapsed && run.summaryText && /* @__PURE__ */ jsx13("div", { className: "px-4 pb-4 text-sm leading-6 text-muted-foreground line-clamp-2", children: run.summaryText }),
|
|
1097
1116
|
/* @__PURE__ */ jsx13(Collapsible3.Content, { className: "overflow-hidden data-[state=open]:animate-slideDown data-[state=closed]:animate-slideUp", children: /* @__PURE__ */ jsx13(
|
|
1098
1117
|
"div",
|
|
1099
1118
|
{
|
|
1100
1119
|
className: cn(
|
|
1101
|
-
"
|
|
1102
|
-
branding.containerBgClass
|
|
1120
|
+
"space-y-3 border-t border-border px-4 pb-4 pt-3"
|
|
1103
1121
|
),
|
|
1104
1122
|
children: allParts.map(({ part, msgId, index }, partIndex) => {
|
|
1105
1123
|
const key = `${msgId}-${index}`;
|
|
@@ -1133,8 +1151,8 @@ var RunGroup = memo11(
|
|
|
1133
1151
|
return /* @__PURE__ */ jsx13(
|
|
1134
1152
|
"div",
|
|
1135
1153
|
{
|
|
1136
|
-
className: "
|
|
1137
|
-
children: /* @__PURE__ */ jsx13(Markdown, { children: part.text })
|
|
1154
|
+
className: "px-1 py-1",
|
|
1155
|
+
children: /* @__PURE__ */ jsx13(Markdown, { className: "tangle-prose text-[15px] leading-7", children: part.text })
|
|
1138
1156
|
},
|
|
1139
1157
|
key
|
|
1140
1158
|
);
|
|
@@ -1143,7 +1161,7 @@ var RunGroup = memo11(
|
|
|
1143
1161
|
})
|
|
1144
1162
|
}
|
|
1145
1163
|
) })
|
|
1146
|
-
] });
|
|
1164
|
+
] }) });
|
|
1147
1165
|
}
|
|
1148
1166
|
);
|
|
1149
1167
|
RunGroup.displayName = "RunGroup";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Markdown
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-T7HMZEVO.js";
|
|
4
4
|
import {
|
|
5
5
|
cn
|
|
6
6
|
} from "./chunk-RQHJBTEU.js";
|
|
@@ -14,7 +14,12 @@ function ChatMessage({
|
|
|
14
14
|
toolCalls,
|
|
15
15
|
isStreaming,
|
|
16
16
|
timestamp,
|
|
17
|
-
className
|
|
17
|
+
className,
|
|
18
|
+
userLabel = "You",
|
|
19
|
+
assistantLabel = "Agent",
|
|
20
|
+
hideRoleLabel,
|
|
21
|
+
hideAvatar,
|
|
22
|
+
avatar
|
|
18
23
|
}) {
|
|
19
24
|
const isUser = role === "user";
|
|
20
25
|
return /* @__PURE__ */ jsxs(
|
|
@@ -26,31 +31,32 @@ function ChatMessage({
|
|
|
26
31
|
className
|
|
27
32
|
),
|
|
28
33
|
children: [
|
|
29
|
-
/* @__PURE__ */ jsx(
|
|
34
|
+
!hideAvatar && (avatar ? /* @__PURE__ */ jsx("div", { className: "mt-0.5 shrink-0", children: avatar }) : /* @__PURE__ */ jsx(
|
|
30
35
|
"div",
|
|
31
36
|
{
|
|
32
37
|
className: cn(
|
|
33
|
-
"mt-0.5 flex
|
|
34
|
-
|
|
38
|
+
"mt-0.5 flex shrink-0 items-center justify-center rounded-[calc(var(--radius-md)+2px)] border",
|
|
39
|
+
"h-[var(--avatar-size)] w-[var(--avatar-size)]",
|
|
40
|
+
isUser ? "border-border bg-[var(--accent-surface-soft)] text-[var(--accent-text)]" : "border-border bg-muted text-[var(--brand-cool)]"
|
|
35
41
|
),
|
|
36
42
|
children: isUser ? /* @__PURE__ */ jsx(User, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx(Bot, { className: "h-3.5 w-3.5" })
|
|
37
43
|
}
|
|
38
|
-
),
|
|
44
|
+
)),
|
|
39
45
|
/* @__PURE__ */ jsxs(
|
|
40
46
|
"div",
|
|
41
47
|
{
|
|
42
48
|
className: cn(
|
|
43
49
|
"min-w-0 max-w-[85%] space-y-1 rounded-[var(--radius-lg)] border",
|
|
44
50
|
"px-[var(--chat-message-px)] py-[var(--chat-message-py)]",
|
|
45
|
-
isUser ? "border-
|
|
51
|
+
isUser ? "border-border bg-muted/50" : "border-border bg-card"
|
|
46
52
|
),
|
|
47
53
|
children: [
|
|
48
|
-
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", isUser && "flex-row-reverse"), children: [
|
|
49
|
-
/* @__PURE__ */ jsx("span", { className: "text-[
|
|
50
|
-
timestamp && /* @__PURE__ */ jsx("span", { className: "text-[
|
|
54
|
+
!hideRoleLabel && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", isUser && "flex-row-reverse"), children: [
|
|
55
|
+
/* @__PURE__ */ jsx("span", { className: "text-[var(--font-size-xs)] font-[var(--chat-label-weight,600)] uppercase tracking-[var(--chat-label-tracking,0.14em)] text-foreground", children: isUser ? userLabel : assistantLabel }),
|
|
56
|
+
timestamp && /* @__PURE__ */ jsx("span", { className: "text-[var(--font-size-xs)] text-muted-foreground", children: formatTime(timestamp) })
|
|
51
57
|
] }),
|
|
52
|
-
isUser ? /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap text-[
|
|
53
|
-
content && /* @__PURE__ */ jsx(Markdown, { className: "tangle-prose text-[
|
|
58
|
+
isUser ? /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap text-[var(--font-size-base)] leading-[var(--line-height-base)] text-foreground", children: content }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
59
|
+
content && /* @__PURE__ */ jsx(Markdown, { className: "tangle-prose text-[var(--font-size-base)] leading-[var(--line-height-base)]", children: content }),
|
|
54
60
|
isStreaming && /* @__PURE__ */ jsx("span", { className: "ml-0.5 inline-block h-4 w-2 animate-pulse rounded-sm bg-[var(--brand-cool)] align-text-bottom" })
|
|
55
61
|
] }),
|
|
56
62
|
toolCalls
|