@tangle-network/sandbox-ui 0.134.4 → 0.134.6
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/dist/{chat-DRkKyE8E.js → chat-_aHUfqtH.js} +86 -20
- package/dist/chat.d.ts +1 -1
- package/dist/chat.js +1 -1
- package/dist/{dashboard-A-7sV4Na.js → dashboard-Ba7DlJHW.js} +110 -57
- package/dist/dashboard.d.ts +1 -1
- package/dist/dashboard.js +1 -1
- package/dist/globals.css +8 -0
- package/dist/{index-DQzli0pf.d.ts → index-AVDzT8Jw.d.ts} +19 -4
- package/dist/{index-CzSwq_cU.d.ts → index-ByzdHyte.d.ts} +1 -1
- package/dist/{index-04xUKbln.d.ts → index-QBCEflyf.d.ts} +12 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/styles.css +8 -0
- package/dist/{workbench-D3IKFGHo.js → workbench-Ai6g85oA.js} +1 -1
- package/dist/workbench.d.ts +1 -1
- package/dist/workbench.js +1 -1
- package/package.json +1 -1
|
@@ -315,31 +315,73 @@ function profileSubtitle(profile) {
|
|
|
315
315
|
* because the inline form needs its own focus and typing without the menu
|
|
316
316
|
* stealing keystrokes.
|
|
317
317
|
*/
|
|
318
|
-
function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate, onUpdate, onDelete, disabled, locked, lockReason, onNewChat, className, triggerClassName, popoverClassName, side = "top" }) {
|
|
318
|
+
function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate, onUpdate, onDelete, onEdit, onNew, disabled, locked, lockReason, onNewChat, className, triggerClassName, popoverClassName, side = "top" }) {
|
|
319
319
|
const [open, setOpen] = React$1.useState(false);
|
|
320
|
-
const [composing,
|
|
320
|
+
const [composing, setComposingState] = React$1.useState(null);
|
|
321
|
+
const [saving, setSaving] = React$1.useState(false);
|
|
322
|
+
const [saveError, setSaveError] = React$1.useState(null);
|
|
323
|
+
const pendingSave = React$1.useRef(false);
|
|
324
|
+
const editorEpoch = React$1.useRef(0);
|
|
325
|
+
const setComposing = React$1.useCallback((next) => {
|
|
326
|
+
editorEpoch.current += 1;
|
|
327
|
+
pendingSave.current = false;
|
|
328
|
+
setSaving(false);
|
|
329
|
+
setSaveError(null);
|
|
330
|
+
setComposingState(next);
|
|
331
|
+
}, []);
|
|
332
|
+
React$1.useEffect(() => () => {
|
|
333
|
+
editorEpoch.current += 1;
|
|
334
|
+
}, []);
|
|
321
335
|
const popoverRef = React$1.useRef(null);
|
|
322
336
|
const ref = useClickOutside(() => {
|
|
337
|
+
if (pendingSave.current) return;
|
|
323
338
|
setOpen(false);
|
|
324
339
|
setComposing(null);
|
|
325
340
|
}, [popoverRef]);
|
|
326
|
-
const canAuthor = Boolean(capabilities &&
|
|
341
|
+
const canAuthor = Boolean(onNew || capabilities && onCreate);
|
|
342
|
+
const editIn = (profile) => onEdit ? () => {
|
|
343
|
+
setOpen(false);
|
|
344
|
+
onEdit(profile.id);
|
|
345
|
+
} : onUpdate ? () => setComposing(profile) : void 0;
|
|
327
346
|
const builtins = profiles.filter((profile) => profile.builtin);
|
|
328
347
|
const custom = profiles.filter((profile) => !profile.builtin);
|
|
329
348
|
const selectedName = profiles.find((profile) => profile.id === value)?.name ?? value;
|
|
330
349
|
React$1.useEffect(() => {
|
|
331
|
-
if (!locked) return;
|
|
350
|
+
if (!locked && !disabled) return;
|
|
332
351
|
setOpen(false);
|
|
333
352
|
setComposing(null);
|
|
334
|
-
}, [
|
|
353
|
+
}, [
|
|
354
|
+
locked,
|
|
355
|
+
disabled,
|
|
356
|
+
setComposing
|
|
357
|
+
]);
|
|
335
358
|
function select(id) {
|
|
336
359
|
onChange(id);
|
|
337
360
|
setOpen(false);
|
|
338
361
|
}
|
|
339
362
|
async function save(draft) {
|
|
340
|
-
if (
|
|
341
|
-
|
|
342
|
-
|
|
363
|
+
if (pendingSave.current || locked || disabled) return;
|
|
364
|
+
const epoch = editorEpoch.current;
|
|
365
|
+
pendingSave.current = true;
|
|
366
|
+
setSaving(true);
|
|
367
|
+
setSaveError(null);
|
|
368
|
+
try {
|
|
369
|
+
if (draft.id) {
|
|
370
|
+
if (!onUpdate) throw new Error("Editing this agent is unavailable.");
|
|
371
|
+
await onUpdate(draft.id, draft);
|
|
372
|
+
} else {
|
|
373
|
+
if (!onCreate) throw new Error("Creating an agent is unavailable.");
|
|
374
|
+
await onCreate(draft);
|
|
375
|
+
}
|
|
376
|
+
if (editorEpoch.current === epoch) setComposing(null);
|
|
377
|
+
} catch (error) {
|
|
378
|
+
if (editorEpoch.current === epoch) setSaveError(error instanceof Error && error.message.trim() ? error.message : "Could not save this agent. Your draft is still here; try again.");
|
|
379
|
+
} finally {
|
|
380
|
+
if (editorEpoch.current === epoch) {
|
|
381
|
+
pendingSave.current = false;
|
|
382
|
+
setSaving(false);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
343
385
|
}
|
|
344
386
|
if (locked && onNewChat) return /* @__PURE__ */ jsxs(InformativeLock, {
|
|
345
387
|
ariaLabel: "Agent profile (locked)",
|
|
@@ -361,9 +403,13 @@ function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate,
|
|
|
361
403
|
className: cn$1("relative inline-flex", className),
|
|
362
404
|
children: [/* @__PURE__ */ jsxs("button", {
|
|
363
405
|
type: "button",
|
|
364
|
-
disabled: disabled || locked,
|
|
406
|
+
disabled: disabled || locked || saving,
|
|
365
407
|
title: locked ? lockReason : void 0,
|
|
366
|
-
onClick: () =>
|
|
408
|
+
onClick: () => {
|
|
409
|
+
if (pendingSave.current) return;
|
|
410
|
+
if (open) setComposing(null);
|
|
411
|
+
setOpen((v) => !v);
|
|
412
|
+
},
|
|
367
413
|
className: cn$1("inline-flex h-8 items-center gap-1.5 rounded-lg border border-[var(--md3-outline-variant)] bg-surface-container px-2.5", "text-xs font-medium text-foreground shadow-sm transition-colors", "hover:border-[var(--md3-outline-variant)] hover:bg-surface-container-high", focusRing, "data-[state=open]:border-[var(--md3-outline-variant)] data-[state=open]:bg-surface-container-high", "disabled:cursor-not-allowed disabled:opacity-60", triggerClassName),
|
|
368
414
|
"data-state": open ? "open" : "closed",
|
|
369
415
|
"aria-label": "Agent profile",
|
|
@@ -375,7 +421,7 @@ function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate,
|
|
|
375
421
|
}),
|
|
376
422
|
!locked && /* @__PURE__ */ jsx(ChevronDown, { className: "ml-auto h-3.5 w-3.5 shrink-0 text-muted-foreground" })
|
|
377
423
|
]
|
|
378
|
-
}), open && !locked && /* @__PURE__ */ jsx(AnchoredPopover, {
|
|
424
|
+
}), open && !locked && !disabled && /* @__PURE__ */ jsx(AnchoredPopover, {
|
|
379
425
|
ref: popoverRef,
|
|
380
426
|
anchorRef: ref,
|
|
381
427
|
side,
|
|
@@ -384,7 +430,11 @@ function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate,
|
|
|
384
430
|
children: composing ? /* @__PURE__ */ jsx(ProfileForm, {
|
|
385
431
|
capabilities: capabilities ?? [],
|
|
386
432
|
initial: composing === "new" ? void 0 : composing,
|
|
387
|
-
|
|
433
|
+
saving,
|
|
434
|
+
error: saveError,
|
|
435
|
+
onCancel: () => {
|
|
436
|
+
if (!pendingSave.current) setComposing(null);
|
|
437
|
+
},
|
|
388
438
|
onSave: save
|
|
389
439
|
}) : /* @__PURE__ */ jsxs("div", {
|
|
390
440
|
className: "max-h-[min(60vh,420px)] overflow-y-auto",
|
|
@@ -394,7 +444,8 @@ function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate,
|
|
|
394
444
|
active: profile.id === value,
|
|
395
445
|
title: profile.name,
|
|
396
446
|
subtitle: profileSubtitle(profile),
|
|
397
|
-
onSelect: () => select(profile.id)
|
|
447
|
+
onSelect: () => select(profile.id),
|
|
448
|
+
onEdit: onEdit ? editIn(profile) : void 0
|
|
398
449
|
}, profile.id)),
|
|
399
450
|
custom.length > 0 && /* @__PURE__ */ jsx(SectionHeader, { children: "Your agents" }),
|
|
400
451
|
custom.map((profile) => /* @__PURE__ */ jsx(ProfileRow, {
|
|
@@ -402,12 +453,17 @@ function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate,
|
|
|
402
453
|
title: profile.name,
|
|
403
454
|
subtitle: profileSubtitle(profile),
|
|
404
455
|
onSelect: () => select(profile.id),
|
|
405
|
-
onEdit:
|
|
456
|
+
onEdit: editIn(profile),
|
|
406
457
|
onDelete: onDelete ? () => void onDelete(profile.id) : void 0
|
|
407
458
|
}, profile.id)),
|
|
408
459
|
canAuthor && /* @__PURE__ */ jsxs("button", {
|
|
409
460
|
type: "button",
|
|
410
|
-
onClick: () =>
|
|
461
|
+
onClick: () => {
|
|
462
|
+
if (onNew) {
|
|
463
|
+
setOpen(false);
|
|
464
|
+
onNew();
|
|
465
|
+
} else setComposing("new");
|
|
466
|
+
},
|
|
411
467
|
className: "mt-1 flex w-full items-center gap-2 rounded-md px-2.5 py-2 text-left text-sm text-[var(--accent-text)] transition-colors hover:bg-accent/40",
|
|
412
468
|
children: [/* @__PURE__ */ jsx(Plus, { className: "h-4 w-4" }), " New agent…"]
|
|
413
469
|
})
|
|
@@ -443,7 +499,7 @@ function ProfileRow({ active, title, subtitle, onSelect, onEdit, onDelete }) {
|
|
|
443
499
|
})]
|
|
444
500
|
})]
|
|
445
501
|
}), (onEdit || onDelete) && /* @__PURE__ */ jsxs("span", {
|
|
446
|
-
className: "flex shrink-0 items-center gap-1 opacity-
|
|
502
|
+
className: "flex shrink-0 items-center gap-1 opacity-100 transition-opacity [@media(hover:hover)]:opacity-0 group-hover:opacity-100 group-focus-within:opacity-100",
|
|
447
503
|
children: [onEdit && /* @__PURE__ */ jsx("button", {
|
|
448
504
|
type: "button",
|
|
449
505
|
onClick: onEdit,
|
|
@@ -460,16 +516,18 @@ function ProfileRow({ active, title, subtitle, onSelect, onEdit, onDelete }) {
|
|
|
460
516
|
})]
|
|
461
517
|
});
|
|
462
518
|
}
|
|
463
|
-
function ProfileForm({ capabilities, initial, onCancel, onSave }) {
|
|
519
|
+
function ProfileForm({ capabilities, initial, saving, error, onCancel, onSave }) {
|
|
464
520
|
const [name, setName] = React$1.useState(initial?.name ?? "");
|
|
465
521
|
const [caps, setCaps] = React$1.useState(initial?.capabilities ? [...initial.capabilities] : capabilities.map((c) => c.id));
|
|
466
522
|
const [instructions, setInstructions] = React$1.useState(initial?.instructions ?? "");
|
|
467
523
|
const toggle = (id) => setCaps((prev) => prev.includes(id) ? prev.filter((c) => c !== id) : [...prev, id]);
|
|
468
524
|
return /* @__PURE__ */ jsxs("div", {
|
|
469
525
|
className: "space-y-3 p-2.5",
|
|
526
|
+
"aria-busy": saving,
|
|
470
527
|
children: [
|
|
471
528
|
/* @__PURE__ */ jsx("input", {
|
|
472
529
|
autoFocus: true,
|
|
530
|
+
disabled: saving,
|
|
473
531
|
value: name,
|
|
474
532
|
onChange: (event) => setName(event.target.value),
|
|
475
533
|
placeholder: "Agent name (e.g. Tax Reviewer)",
|
|
@@ -484,6 +542,7 @@ function ProfileForm({ capabilities, initial, onCancel, onSave }) {
|
|
|
484
542
|
className: "flex cursor-pointer items-start gap-2 rounded-md px-2 py-1.5 hover:bg-accent/40",
|
|
485
543
|
children: [/* @__PURE__ */ jsx("input", {
|
|
486
544
|
type: "checkbox",
|
|
545
|
+
disabled: saving,
|
|
487
546
|
checked: caps.includes(cap.id),
|
|
488
547
|
onChange: () => toggle(cap.id),
|
|
489
548
|
className: "mt-0.5"
|
|
@@ -500,30 +559,37 @@ function ProfileForm({ capabilities, initial, onCancel, onSave }) {
|
|
|
500
559
|
}, cap.id))
|
|
501
560
|
})] }),
|
|
502
561
|
/* @__PURE__ */ jsx("textarea", {
|
|
562
|
+
disabled: saving,
|
|
503
563
|
value: instructions,
|
|
504
564
|
onChange: (event) => setInstructions(event.target.value),
|
|
505
565
|
rows: 2,
|
|
506
566
|
placeholder: "Instructions (optional) — how this agent should behave",
|
|
507
567
|
className: `w-full resize-none rounded-lg border bg-surface-container px-3 py-2 text-sm ${focusField}`
|
|
508
568
|
}),
|
|
569
|
+
error && /* @__PURE__ */ jsx("p", {
|
|
570
|
+
role: "alert",
|
|
571
|
+
className: "text-sm text-destructive",
|
|
572
|
+
children: error
|
|
573
|
+
}),
|
|
509
574
|
/* @__PURE__ */ jsxs("div", {
|
|
510
575
|
className: "flex justify-end gap-2",
|
|
511
576
|
children: [/* @__PURE__ */ jsx("button", {
|
|
512
577
|
type: "button",
|
|
578
|
+
disabled: saving,
|
|
513
579
|
onClick: onCancel,
|
|
514
580
|
className: "rounded-lg px-3 py-1.5 text-sm text-muted-foreground hover:bg-accent/40",
|
|
515
581
|
children: "Cancel"
|
|
516
582
|
}), /* @__PURE__ */ jsx("button", {
|
|
517
583
|
type: "button",
|
|
518
|
-
disabled: !name.trim(),
|
|
519
|
-
onClick: () => onSave({
|
|
584
|
+
disabled: saving || !name.trim(),
|
|
585
|
+
onClick: () => void onSave({
|
|
520
586
|
id: initial?.id,
|
|
521
587
|
name: name.trim(),
|
|
522
588
|
capabilities: caps,
|
|
523
589
|
instructions: instructions.trim()
|
|
524
590
|
}),
|
|
525
591
|
className: "rounded-lg bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground transition-opacity hover:opacity-90 disabled:opacity-40",
|
|
526
|
-
children: "Save agent"
|
|
592
|
+
children: saving ? "Saving agent…" : "Save agent"
|
|
527
593
|
})]
|
|
528
594
|
})
|
|
529
595
|
]
|
package/dist/chat.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as ArtifactDockMessage, B as AgentProfilePickerProps, C as ThinkingIndicatorProps, D as ArtifactAgentDock, E as isViewerMessage, F as snapHarnessToModel, G as ReasoningLevelPicker, H as HARNESS_REASONING_OPTIONS, I as AgentProfileCapability, K as ReasoningLevelPickerProps, L as AgentProfileDraft, M as ArtifactKind, N as ArtifactScope, O as ArtifactAgentDockProps, P as modelProvider, R as AgentProfileOption, S as ThinkingIndicator, T as UserMessageProps, U as ReasoningLevel, V as DEFAULT_REASONING_LEVEL_OPTIONS, W as ReasoningLevelOption, _ as MessageAuthorProps, a as AgentTimelineMessageItem, b as MessageRole, c as AgentTimelineTone, d as ChatAuthor, f as ChatContainer, g as MessageAuthor, h as ChatMessageProps, i as AgentTimelineItem, j as ArtifactDockStreamEvent, k as ArtifactAgentDockTransport, l as AgentTimelineToolGroupItem, m as ChatMessage, n as AgentTimelineArtifactItem, o as AgentTimelineProps, p as ChatContainerProps, r as AgentTimelineCustomItem, s as AgentTimelineStatusItem, t as AgentTimeline, u as AgentTimelineToolItem, v as MessageList, w as UserMessage, x as TRANSCRIPT_TEXT, y as MessageListProps, z as AgentProfilePicker } from "./index-
|
|
1
|
+
import { A as ArtifactDockMessage, B as AgentProfilePickerProps, C as ThinkingIndicatorProps, D as ArtifactAgentDock, E as isViewerMessage, F as snapHarnessToModel, G as ReasoningLevelPicker, H as HARNESS_REASONING_OPTIONS, I as AgentProfileCapability, K as ReasoningLevelPickerProps, L as AgentProfileDraft, M as ArtifactKind, N as ArtifactScope, O as ArtifactAgentDockProps, P as modelProvider, R as AgentProfileOption, S as ThinkingIndicator, T as UserMessageProps, U as ReasoningLevel, V as DEFAULT_REASONING_LEVEL_OPTIONS, W as ReasoningLevelOption, _ as MessageAuthorProps, a as AgentTimelineMessageItem, b as MessageRole, c as AgentTimelineTone, d as ChatAuthor, f as ChatContainer, g as MessageAuthor, h as ChatMessageProps, i as AgentTimelineItem, j as ArtifactDockStreamEvent, k as ArtifactAgentDockTransport, l as AgentTimelineToolGroupItem, m as ChatMessage, n as AgentTimelineArtifactItem, o as AgentTimelineProps, p as ChatContainerProps, r as AgentTimelineCustomItem, s as AgentTimelineStatusItem, t as AgentTimeline, u as AgentTimelineToolItem, v as MessageList, w as UserMessage, x as TRANSCRIPT_TEXT, y as MessageListProps, z as AgentProfilePicker } from "./index-QBCEflyf.js";
|
|
2
2
|
export { type AgentProfileCapability, type AgentProfileDraft, type AgentProfileOption, AgentProfilePicker, type AgentProfilePickerProps, AgentTimeline, type AgentTimelineArtifactItem, type AgentTimelineCustomItem, type AgentTimelineItem, type AgentTimelineMessageItem, type AgentTimelineProps, type AgentTimelineStatusItem, type AgentTimelineTone, type AgentTimelineToolGroupItem, type AgentTimelineToolItem, ArtifactAgentDock, type ArtifactAgentDockProps, type ArtifactAgentDockTransport, type ArtifactDockMessage, type ArtifactDockStreamEvent, type ArtifactKind, type ArtifactScope, type ChatAuthor, ChatContainer, type ChatContainerProps, ChatMessage, type ChatMessageProps, DEFAULT_REASONING_LEVEL_OPTIONS, HARNESS_REASONING_OPTIONS, MessageAuthor, type MessageAuthorProps, MessageList, type MessageListProps, type MessageRole, type ReasoningLevel, type ReasoningLevelOption, ReasoningLevelPicker, type ReasoningLevelPickerProps, TRANSCRIPT_TEXT, ThinkingIndicator, type ThinkingIndicatorProps, UserMessage, type UserMessageProps, isViewerMessage, modelProvider, snapHarnessToModel };
|
package/dist/chat.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as MessageList, c as UserMessage, d as modelProvider, f as snapHarnessToModel, g as ReasoningLevelPicker, h as HARNESS_REASONING_OPTIONS, i as MessageAuthor, l as isViewerMessage, m as DEFAULT_REASONING_LEVEL_OPTIONS, n as ChatContainer, o as TRANSCRIPT_TEXT, p as AgentProfilePicker, r as ChatMessage, s as ThinkingIndicator, t as AgentTimeline, u as ArtifactAgentDock } from "./chat-
|
|
1
|
+
import { a as MessageList, c as UserMessage, d as modelProvider, f as snapHarnessToModel, g as ReasoningLevelPicker, h as HARNESS_REASONING_OPTIONS, i as MessageAuthor, l as isViewerMessage, m as DEFAULT_REASONING_LEVEL_OPTIONS, n as ChatContainer, o as TRANSCRIPT_TEXT, p as AgentProfilePicker, r as ChatMessage, s as ThinkingIndicator, t as AgentTimeline, u as ArtifactAgentDock } from "./chat-_aHUfqtH.js";
|
|
2
2
|
export { AgentProfilePicker, AgentTimeline, ArtifactAgentDock, ChatContainer, ChatMessage, DEFAULT_REASONING_LEVEL_OPTIONS, HARNESS_REASONING_OPTIONS, MessageAuthor, MessageList, ReasoningLevelPicker, TRANSCRIPT_TEXT, ThinkingIndicator, UserMessage, isViewerMessage, modelProvider, snapHarnessToModel };
|
|
@@ -155,10 +155,21 @@ function useSidebar() {
|
|
|
155
155
|
* the whole nav would re-stagger on a collapse that moved nothing off screen.
|
|
156
156
|
* One element type, both states.
|
|
157
157
|
*/
|
|
158
|
-
function RailTooltip({ label, children, disabled, className }) {
|
|
158
|
+
function RailTooltip({ label, description, children, disabled, className }) {
|
|
159
159
|
const ref = React$1.useRef(null);
|
|
160
|
+
const tooltipRef = React$1.useRef(null);
|
|
160
161
|
const timer = React$1.useRef(null);
|
|
161
162
|
const [coords, setCoords] = React$1.useState(null);
|
|
163
|
+
React$1.useLayoutEffect(() => {
|
|
164
|
+
if (!description || !coords || !tooltipRef.current) return;
|
|
165
|
+
const { offsetWidth: width, offsetHeight: height } = tooltipRef.current;
|
|
166
|
+
const left = Math.max(8, Math.min(coords.left, window.innerWidth - width - 8));
|
|
167
|
+
const top = Math.max(height / 2 + 8, Math.min(coords.top, window.innerHeight - height / 2 - 8));
|
|
168
|
+
if (left !== coords.left || top !== coords.top) setCoords({
|
|
169
|
+
left,
|
|
170
|
+
top
|
|
171
|
+
});
|
|
172
|
+
}, [coords, description]);
|
|
162
173
|
React$1.useEffect(() => () => {
|
|
163
174
|
if (timer.current) clearTimeout(timer.current);
|
|
164
175
|
}, []);
|
|
@@ -202,11 +213,18 @@ function RailTooltip({ label, children, disabled, className }) {
|
|
|
202
213
|
transform: "translateY(-50%)"
|
|
203
214
|
},
|
|
204
215
|
className: "pointer-events-none z-[70]",
|
|
205
|
-
children: /* @__PURE__ */
|
|
216
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
217
|
+
ref: tooltipRef,
|
|
206
218
|
role: "tooltip",
|
|
207
219
|
"aria-hidden": "true",
|
|
208
|
-
className: cn$1("agent-pop-in block
|
|
209
|
-
children:
|
|
220
|
+
className: cn$1("agent-pop-in block px-2 py-1 text-xs font-medium text-popover-foreground", description ? "w-max max-w-[min(16rem,calc(100vw-1rem))]" : "whitespace-nowrap", "rounded-md border border-[var(--md3-outline-variant)] bg-surface-container-highest shadow-[0_8px_30px_rgba(0,0,0,0.45)] ring-1 ring-[#ffffff14]"),
|
|
221
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
222
|
+
className: description ? "block break-words" : "block whitespace-nowrap",
|
|
223
|
+
children: label
|
|
224
|
+
}), description ? /* @__PURE__ */ jsx("span", {
|
|
225
|
+
className: "mt-0.5 block font-normal leading-snug text-muted-foreground",
|
|
226
|
+
children: description
|
|
227
|
+
}) : null]
|
|
210
228
|
})
|
|
211
229
|
}), document.body)]
|
|
212
230
|
});
|
|
@@ -430,12 +448,14 @@ function RailSeparator({ className }) {
|
|
|
430
448
|
return /* @__PURE__ */ jsx("div", { className: cn$1("my-2 h-px w-10 bg-[var(--md3-outline-variant)]", className) });
|
|
431
449
|
}
|
|
432
450
|
const defaultBadgeLabel = (count) => `${count} new`;
|
|
433
|
-
function RailButton({ icon: Icon, label, isActive, badge, badgeLabel = defaultBadgeLabel, onClick, className, showLabel, asChild, children, variant = "normal", style }) {
|
|
451
|
+
function RailButton({ icon: Icon, label, isActive, badge, badgeLabel = defaultBadgeLabel, onClick, className, showLabel, description, asChild, children, variant = "normal", style }) {
|
|
434
452
|
const classes = cn$1("relative flex shrink-0 items-center justify-center rounded-md transition-colors", MOTION_CONTROL, showLabel ? "w-full justify-start px-2.5 h-9 gap-2.5" : "w-9 h-9 justify-center", focusRing, variant === "primary" || isActive ? "bg-[var(--accent-surface-strong)] text-[var(--accent-text)] font-medium ring-1 ring-inset ring-[var(--border-accent)]" : "text-muted-foreground hover:bg-[var(--accent-surface-soft)] hover:text-foreground", className);
|
|
435
453
|
const hasBadge = badge !== void 0 && badge > 0;
|
|
436
454
|
const badgeDot = hasBadge && !showLabel && badge > 9;
|
|
437
455
|
const badgeDescription = hasBadge ? badgeLabel(badge) : void 0;
|
|
438
456
|
const tooltipLabel = hasBadge ? `${label} · ${badgeDescription}` : label;
|
|
457
|
+
const accessibleDescription = [badgeDescription, description].filter(Boolean).join(". ") || void 0;
|
|
458
|
+
const tooltipDisabled = showLabel && !description;
|
|
439
459
|
const content = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("span", {
|
|
440
460
|
className: "relative flex shrink-0 items-center justify-center",
|
|
441
461
|
children: [/* @__PURE__ */ jsx(Icon, { className: "h-[17px] w-[17px] shrink-0" }), badgeDot ? /* @__PURE__ */ jsx("span", {
|
|
@@ -457,7 +477,7 @@ function RailButton({ icon: Icon, label, isActive, badge, badgeLabel = defaultBa
|
|
|
457
477
|
const merged = React$1.cloneElement(child, {
|
|
458
478
|
className: cn$1(classes, child.props.className),
|
|
459
479
|
"aria-label": child.props["aria-label"] ?? label,
|
|
460
|
-
"aria-description": child.props["aria-description"] ??
|
|
480
|
+
"aria-description": child.props["aria-description"] ?? accessibleDescription,
|
|
461
481
|
"aria-current": child.props["aria-current"] ?? (isActive ? "page" : void 0),
|
|
462
482
|
style: {
|
|
463
483
|
...child.props.style,
|
|
@@ -466,20 +486,22 @@ function RailButton({ icon: Icon, label, isActive, badge, badgeLabel = defaultBa
|
|
|
466
486
|
}, content);
|
|
467
487
|
return /* @__PURE__ */ jsx(RailTooltip, {
|
|
468
488
|
label: tooltipLabel,
|
|
469
|
-
|
|
489
|
+
description,
|
|
490
|
+
disabled: tooltipDisabled,
|
|
470
491
|
className: showLabel ? "w-full" : void 0,
|
|
471
492
|
children: merged
|
|
472
493
|
});
|
|
473
494
|
}
|
|
474
495
|
return /* @__PURE__ */ jsx(RailTooltip, {
|
|
475
496
|
label: tooltipLabel,
|
|
476
|
-
|
|
497
|
+
description,
|
|
498
|
+
disabled: tooltipDisabled,
|
|
477
499
|
className: showLabel ? "w-full" : void 0,
|
|
478
500
|
children: /* @__PURE__ */ jsx("button", {
|
|
479
501
|
type: "button",
|
|
480
502
|
onClick,
|
|
481
503
|
"aria-label": label,
|
|
482
|
-
"aria-description":
|
|
504
|
+
"aria-description": accessibleDescription,
|
|
483
505
|
className: classes,
|
|
484
506
|
style,
|
|
485
507
|
children: content
|
|
@@ -493,7 +515,7 @@ function RailButton({ icon: Icon, label, isActive, badge, badgeLabel = defaultBa
|
|
|
493
515
|
* item inside it. Use for a single "door" (e.g. Studio) that fronts several
|
|
494
516
|
* related destinations without permanently spending rail height on them.
|
|
495
517
|
*/
|
|
496
|
-
function RailFlyout({ icon: Icon, label, isActive, showLabel, title, children, className, style }) {
|
|
518
|
+
function RailFlyout({ icon: Icon, label, description, isActive, showLabel, title, children, className, style }) {
|
|
497
519
|
const [open, setOpen] = React$1.useState(false);
|
|
498
520
|
const ref = React$1.useRef(null);
|
|
499
521
|
React$1.useEffect(() => {
|
|
@@ -518,11 +540,13 @@ function RailFlyout({ icon: Icon, label, isActive, showLabel, title, children, c
|
|
|
518
540
|
style,
|
|
519
541
|
children: [/* @__PURE__ */ jsx(RailTooltip, {
|
|
520
542
|
label,
|
|
521
|
-
|
|
543
|
+
description,
|
|
544
|
+
disabled: open || showLabel && !description,
|
|
522
545
|
className: showLabel ? "w-full" : void 0,
|
|
523
546
|
children: /* @__PURE__ */ jsxs("button", {
|
|
524
547
|
type: "button",
|
|
525
548
|
"aria-label": label,
|
|
549
|
+
"aria-description": description,
|
|
526
550
|
"aria-haspopup": "menu",
|
|
527
551
|
"aria-expanded": open,
|
|
528
552
|
onClick: () => setOpen((v) => !v),
|
|
@@ -542,10 +566,17 @@ function RailFlyout({ icon: Icon, label, isActive, showLabel, title, children, c
|
|
|
542
566
|
if (e.target.closest("a,button")) setOpen(false);
|
|
543
567
|
},
|
|
544
568
|
className: cn$1("absolute left-full top-0 z-50 ml-2 min-w-[12rem] p-1.5", "agent-pop-in", "rounded-md border border-[var(--md3-outline-variant)] bg-surface-container-highest shadow-[0_8px_30px_rgba(0,0,0,0.45)] ring-1 ring-[#ffffff14]"),
|
|
545
|
-
children: [
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
569
|
+
children: [
|
|
570
|
+
/* @__PURE__ */ jsx("p", {
|
|
571
|
+
className: "px-2 pb-1 pt-1 text-sm font-semibold uppercase tracking-wider text-muted-foreground/70 select-none",
|
|
572
|
+
children: title ?? label
|
|
573
|
+
}),
|
|
574
|
+
description && /* @__PURE__ */ jsx("p", {
|
|
575
|
+
className: "px-2 pb-2 text-xs text-muted-foreground",
|
|
576
|
+
children: description
|
|
577
|
+
}),
|
|
578
|
+
children
|
|
579
|
+
]
|
|
549
580
|
})]
|
|
550
581
|
});
|
|
551
582
|
}
|
|
@@ -609,7 +640,7 @@ function SubItemsSkeleton() {
|
|
|
609
640
|
* Sub-items can be fixed (`subItems`) or lazy (`loadSubItems`, with a loading
|
|
610
641
|
* skeleton). Used for e.g. a "History" entry fronting recent sessions.
|
|
611
642
|
*/
|
|
612
|
-
function RailExpandable({ icon: Icon, label, href, isActive, showLabel, subItems, loadSubItems, activeSubIds, emptyLabel = "Nothing here yet", defaultOpen, onNavigate, LinkComponent, className, style }) {
|
|
643
|
+
function RailExpandable({ icon: Icon, label, description, href, isActive, showLabel, subItems, loadSubItems, activeSubIds, emptyLabel = "Nothing here yet", defaultOpen, onNavigate, LinkComponent, className, style }) {
|
|
613
644
|
const Link = LinkComponent ?? DefaultLink$2;
|
|
614
645
|
const [open, setOpen] = React$1.useState(defaultOpen ?? false);
|
|
615
646
|
const { items, loading, ensureLoaded } = useExpandableItems(subItems, loadSubItems);
|
|
@@ -738,12 +769,14 @@ function RailExpandable({ icon: Icon, label, href, isActive, showLabel, subItems
|
|
|
738
769
|
to: href,
|
|
739
770
|
onClick: onNavigate,
|
|
740
771
|
"aria-label": label,
|
|
772
|
+
"aria-description": description,
|
|
741
773
|
"aria-current": rowCurrent,
|
|
742
774
|
className: triggerClasses,
|
|
743
775
|
children: /* @__PURE__ */ jsx(Icon, { className: "h-[17px] w-[17px] shrink-0" })
|
|
744
776
|
}) : /* @__PURE__ */ jsx("button", {
|
|
745
777
|
type: "button",
|
|
746
778
|
"aria-label": label,
|
|
779
|
+
"aria-description": description,
|
|
747
780
|
"aria-haspopup": "menu",
|
|
748
781
|
"aria-expanded": open,
|
|
749
782
|
className: triggerClasses,
|
|
@@ -763,13 +796,20 @@ function RailExpandable({ icon: Icon, label, href, isActive, showLabel, subItems
|
|
|
763
796
|
if (e.target.closest("a")) setOpen(false);
|
|
764
797
|
},
|
|
765
798
|
className: cn$1("agent-pop-in z-[70] flex w-60 flex-col overflow-hidden p-1.5", "rounded-md border border-[var(--md3-outline-variant)] bg-surface-container-highest shadow-[0_8px_30px_rgba(0,0,0,0.45)] ring-1 ring-[#ffffff14]"),
|
|
766
|
-
children: [
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
799
|
+
children: [
|
|
800
|
+
/* @__PURE__ */ jsx("p", {
|
|
801
|
+
className: "shrink-0 px-2 pb-1 pt-1 text-sm font-semibold uppercase tracking-wider text-muted-foreground/70 select-none",
|
|
802
|
+
children: label
|
|
803
|
+
}),
|
|
804
|
+
description && /* @__PURE__ */ jsx("p", {
|
|
805
|
+
className: "shrink-0 px-2 pb-2 text-xs text-muted-foreground",
|
|
806
|
+
children: description
|
|
807
|
+
}),
|
|
808
|
+
/* @__PURE__ */ jsx("div", {
|
|
809
|
+
className: "flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto",
|
|
810
|
+
children: list
|
|
811
|
+
})
|
|
812
|
+
]
|
|
773
813
|
}), document.body)]
|
|
774
814
|
});
|
|
775
815
|
}
|
|
@@ -786,41 +826,50 @@ function RailExpandable({ icon: Icon, label, href, isActive, showLabel, subItems
|
|
|
786
826
|
return /* @__PURE__ */ jsxs("div", {
|
|
787
827
|
className: cn$1("w-full", className),
|
|
788
828
|
style,
|
|
789
|
-
children: [/* @__PURE__ */
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
"
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
"aria-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
829
|
+
children: [/* @__PURE__ */ jsx(RailTooltip, {
|
|
830
|
+
label,
|
|
831
|
+
description,
|
|
832
|
+
disabled: !description,
|
|
833
|
+
className: "w-full",
|
|
834
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
835
|
+
className: cn$1("group/exp relative flex h-9 w-full items-center rounded-md transition-colors", MOTION_CONTROL, isActive ? "bg-[var(--accent-surface-strong)] text-[var(--accent-text)] font-medium ring-1 ring-inset ring-[var(--border-accent)]" : "text-muted-foreground hover:bg-[var(--accent-surface-soft)] hover:text-foreground"),
|
|
836
|
+
children: [/* @__PURE__ */ jsxs("button", {
|
|
837
|
+
type: "button",
|
|
838
|
+
onClick: toggle,
|
|
839
|
+
"aria-expanded": open,
|
|
840
|
+
"aria-controls": discloseId,
|
|
841
|
+
"aria-label": open ? `Collapse ${label}` : `Expand ${label}`,
|
|
842
|
+
"aria-description": description,
|
|
843
|
+
className: `flex h-9 w-12 shrink-0 items-center gap-1 rounded-md pl-2 pr-1 ${focusRing}`,
|
|
844
|
+
children: [/* @__PURE__ */ jsx(Icon, {
|
|
845
|
+
className: "h-[17px] w-[17px] shrink-0",
|
|
846
|
+
"aria-hidden": true
|
|
847
|
+
}), /* @__PURE__ */ jsx(ChevronRightIcon, {
|
|
848
|
+
className: cn$1("h-3.5 w-3.5 shrink-0 transition-transform", MOTION_CONTROL, open && "rotate-90"),
|
|
849
|
+
"aria-hidden": true
|
|
850
|
+
})]
|
|
851
|
+
}), href ? /* @__PURE__ */ jsx(Link, {
|
|
852
|
+
href,
|
|
853
|
+
to: href,
|
|
854
|
+
onClick: onNavigate,
|
|
855
|
+
"aria-current": rowCurrent,
|
|
856
|
+
"aria-description": description,
|
|
857
|
+
className: "flex h-9 min-w-0 flex-1 items-center pr-2.5 text-sm font-medium",
|
|
858
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
859
|
+
className: "truncate",
|
|
860
|
+
children: label
|
|
861
|
+
})
|
|
862
|
+
}) : /* @__PURE__ */ jsx("button", {
|
|
863
|
+
type: "button",
|
|
864
|
+
onClick: toggle,
|
|
865
|
+
"aria-description": description,
|
|
866
|
+
className: "flex h-9 min-w-0 flex-1 items-center pr-2.5 text-left text-sm font-medium",
|
|
867
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
868
|
+
className: "truncate",
|
|
869
|
+
children: label
|
|
870
|
+
})
|
|
804
871
|
})]
|
|
805
|
-
})
|
|
806
|
-
href,
|
|
807
|
-
to: href,
|
|
808
|
-
onClick: onNavigate,
|
|
809
|
-
"aria-current": rowCurrent,
|
|
810
|
-
className: "flex h-9 min-w-0 flex-1 items-center pr-2.5 text-sm font-medium",
|
|
811
|
-
children: /* @__PURE__ */ jsx("span", {
|
|
812
|
-
className: "truncate",
|
|
813
|
-
children: label
|
|
814
|
-
})
|
|
815
|
-
}) : /* @__PURE__ */ jsx("button", {
|
|
816
|
-
type: "button",
|
|
817
|
-
onClick: toggle,
|
|
818
|
-
className: "flex h-9 min-w-0 flex-1 items-center pr-2.5 text-left text-sm font-medium",
|
|
819
|
-
children: /* @__PURE__ */ jsx("span", {
|
|
820
|
-
className: "truncate",
|
|
821
|
-
children: label
|
|
822
|
-
})
|
|
823
|
-
})]
|
|
872
|
+
})
|
|
824
873
|
}), /* @__PURE__ */ jsx("div", {
|
|
825
874
|
ref: discloseRef,
|
|
826
875
|
id: discloseId,
|
|
@@ -2877,6 +2926,7 @@ function SidebarLayoutInner({ children, navItems, activeId, panel, logo, logoHre
|
|
|
2877
2926
|
if (item.expandable) return /* @__PURE__ */ jsx(RailExpandable, {
|
|
2878
2927
|
icon: item.icon,
|
|
2879
2928
|
label: item.label,
|
|
2929
|
+
description: item.description,
|
|
2880
2930
|
href: item.href,
|
|
2881
2931
|
isActive: activeId === item.id,
|
|
2882
2932
|
showLabel: showLabels,
|
|
@@ -2894,6 +2944,7 @@ function SidebarLayoutInner({ children, navItems, activeId, panel, logo, logoHre
|
|
|
2894
2944
|
return /* @__PURE__ */ jsx(RailFlyout, {
|
|
2895
2945
|
icon: item.icon,
|
|
2896
2946
|
label: item.label,
|
|
2947
|
+
description: item.description,
|
|
2897
2948
|
title: item.label,
|
|
2898
2949
|
showLabel: showLabels,
|
|
2899
2950
|
isActive: activeId === item.id || item.flyoutItems.some((f) => activeSet.has(f.id)),
|
|
@@ -2921,6 +2972,7 @@ function SidebarLayoutInner({ children, navItems, activeId, panel, logo, logoHre
|
|
|
2921
2972
|
label: item.label,
|
|
2922
2973
|
badge: item.badge,
|
|
2923
2974
|
badgeLabel: item.badgeLabel,
|
|
2975
|
+
description: item.description,
|
|
2924
2976
|
isActive: panelOpen,
|
|
2925
2977
|
onClick: () => {
|
|
2926
2978
|
togglePanel();
|
|
@@ -2933,6 +2985,7 @@ function SidebarLayoutInner({ children, navItems, activeId, panel, logo, logoHre
|
|
|
2933
2985
|
label: item.label,
|
|
2934
2986
|
badge: item.badge,
|
|
2935
2987
|
badgeLabel: item.badgeLabel,
|
|
2988
|
+
description: item.description,
|
|
2936
2989
|
isActive: activeId === item.id,
|
|
2937
2990
|
showLabel: showLabels,
|
|
2938
2991
|
variant: item.variant,
|
package/dist/dashboard.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as SandboxTable, $t as Sidebar, A as MetricChartPoint, At as SIDEBAR_TOTAL_WIDTH, B as ProductVariant, Bt as RailButton, C as UsageSummary, Ct as OutOfCreditsModal, D as SystemLogsViewerProps, Dt as SIDEBAR_PANEL_WIDTH, E as SystemLogsViewer, Et as SIDEBAR_MOBILE_WIDTH, F as SidebarLayoutProps, Ft as RailTooltipProps, G as HARNESS_OPTIONS, Gt as RailFlyout, H as HarnessBrand, Ht as RailExpandable, I as DashboardLayout, It as McpServer, J as HarnessType, Jt as RailHeaderProps, K as HarnessPicker, Kt as RailFlyoutProps, L as DashboardLayoutProps, Lt as AppearanceController, M as SidebarLayout, Mt as SidebarProviderProps, N as SidebarLayoutFlyoutItem, Nt as useSidebar, O as MetricAreaChart, Ot as SIDEBAR_RAIL_LABELED_WIDTH, P as SidebarLayoutNavItem, Pt as RailTooltip, Q as BackendSelectorProps, Qt as RailSeparatorProps, R as DashboardUser, Rt as ProfileAvatar, S as GitStatusData, St as InsufficientBalance, T as UsageSummaryProps, Tt as parseInsufficientBalance, U as HarnessLogo, Ut as RailExpandableProps, V as HARNESS_BRAND, Vt as RailButtonProps, W as HarnessLogoProps, Wt as RailExpandableSubItem, X as Backend, Xt as RailModeButtonProps, Y as chatCapableHarnesses, Yt as RailModeButton, Z as BackendSelector, Zt as RailSeparator, _ as PortsList, _t as ResourceSnapshotItem, a as PromoBanner, an as SidebarPanelHeader, at as NewSandboxCard, b as GitPanel, bt as ResourceMeterProps, c as SnapshotList, cn as SidebarProps, ct as SandboxCardData, d as ProcessList, dn as SidebarRailFooterProps, dt as TeamRole, en as SidebarContent, et as SandboxTableProps, f as ProcessListProps, fn as SidebarRailNav, ft as canAdminSandbox, g as ExposedPort, gn as ThemeMode, gt as ResourceSnapshot, h as TemplateCardProps, hn as SidebarUser, ht as ActivityItem, i as SandboxPageShellProps, in as SidebarPanelContentProps, it as sandboxStatus, j as MetricChartTone, jt as SidebarProvider, k as MetricAreaChartProps, kt as SIDEBAR_RAIL_WIDTH, l as SnapshotListProps, ln as SidebarRail, lt as SandboxCardProps, m as TemplateCardData, mn as SidebarRailProps, mt as ActivityFeedProps, n as DashboardPageHeaderProps, nn as SidebarPanel, nt as SandboxStatusPill, o as PromoBannerProps, on as SidebarPanelHeaderProps, ot as NewSandboxCardProps, p as TemplateCard, pn as SidebarRailNavProps, pt as ActivityFeed, q as HarnessPickerProps, qt as RailHeader, r as SandboxPageShell, rn as SidebarPanelContent, rt as SandboxStatusPillProps, s as SnapshotInfo, sn as SidebarPanelProps, st as SandboxCard, t as DashboardPageHeader, tn as SidebarContentProps, tt as SANDBOX_STATUS, u as ProcessInfo, un as SidebarRailFooter, ut as SandboxStatus, v as PortsListProps, vt as ResourceSnapshotProps, w as UsageSummaryData, wt as OutOfCreditsModalProps, x as GitPanelProps, xt as INSUFFICIENT_BALANCE_CODE, y as GitCommitData, yt as ResourceMeter, z as NavItem, zt as ProfileAvatarProps } from "./index-
|
|
1
|
+
import { $ as SandboxTable, $t as Sidebar, A as MetricChartPoint, At as SIDEBAR_TOTAL_WIDTH, B as ProductVariant, Bt as RailButton, C as UsageSummary, Ct as OutOfCreditsModal, D as SystemLogsViewerProps, Dt as SIDEBAR_PANEL_WIDTH, E as SystemLogsViewer, Et as SIDEBAR_MOBILE_WIDTH, F as SidebarLayoutProps, Ft as RailTooltipProps, G as HARNESS_OPTIONS, Gt as RailFlyout, H as HarnessBrand, Ht as RailExpandable, I as DashboardLayout, It as McpServer, J as HarnessType, Jt as RailHeaderProps, K as HarnessPicker, Kt as RailFlyoutProps, L as DashboardLayoutProps, Lt as AppearanceController, M as SidebarLayout, Mt as SidebarProviderProps, N as SidebarLayoutFlyoutItem, Nt as useSidebar, O as MetricAreaChart, Ot as SIDEBAR_RAIL_LABELED_WIDTH, P as SidebarLayoutNavItem, Pt as RailTooltip, Q as BackendSelectorProps, Qt as RailSeparatorProps, R as DashboardUser, Rt as ProfileAvatar, S as GitStatusData, St as InsufficientBalance, T as UsageSummaryProps, Tt as parseInsufficientBalance, U as HarnessLogo, Ut as RailExpandableProps, V as HARNESS_BRAND, Vt as RailButtonProps, W as HarnessLogoProps, Wt as RailExpandableSubItem, X as Backend, Xt as RailModeButtonProps, Y as chatCapableHarnesses, Yt as RailModeButton, Z as BackendSelector, Zt as RailSeparator, _ as PortsList, _t as ResourceSnapshotItem, a as PromoBanner, an as SidebarPanelHeader, at as NewSandboxCard, b as GitPanel, bt as ResourceMeterProps, c as SnapshotList, cn as SidebarProps, ct as SandboxCardData, d as ProcessList, dn as SidebarRailFooterProps, dt as TeamRole, en as SidebarContent, et as SandboxTableProps, f as ProcessListProps, fn as SidebarRailNav, ft as canAdminSandbox, g as ExposedPort, gn as ThemeMode, gt as ResourceSnapshot, h as TemplateCardProps, hn as SidebarUser, ht as ActivityItem, i as SandboxPageShellProps, in as SidebarPanelContentProps, it as sandboxStatus, j as MetricChartTone, jt as SidebarProvider, k as MetricAreaChartProps, kt as SIDEBAR_RAIL_WIDTH, l as SnapshotListProps, ln as SidebarRail, lt as SandboxCardProps, m as TemplateCardData, mn as SidebarRailProps, mt as ActivityFeedProps, n as DashboardPageHeaderProps, nn as SidebarPanel, nt as SandboxStatusPill, o as PromoBannerProps, on as SidebarPanelHeaderProps, ot as NewSandboxCardProps, p as TemplateCard, pn as SidebarRailNavProps, pt as ActivityFeed, q as HarnessPickerProps, qt as RailHeader, r as SandboxPageShell, rn as SidebarPanelContent, rt as SandboxStatusPillProps, s as SnapshotInfo, sn as SidebarPanelProps, st as SandboxCard, t as DashboardPageHeader, tn as SidebarContentProps, tt as SANDBOX_STATUS, u as ProcessInfo, un as SidebarRailFooter, ut as SandboxStatus, v as PortsListProps, vt as ResourceSnapshotProps, w as UsageSummaryData, wt as OutOfCreditsModalProps, x as GitPanelProps, xt as INSUFFICIENT_BALANCE_CODE, y as GitCommitData, yt as ResourceMeter, z as NavItem, zt as ProfileAvatarProps } from "./index-AVDzT8Jw.js";
|
|
2
2
|
import { a as canonicalModelId, i as ProviderMark, n as ModelBrandStack, o as modelBrandFor, r as ModelInfo, t as ModelBrandIdentity } from "./model-brand-B57CV8Lg.js";
|
|
3
3
|
import { a as PricingPageProps, c as BillingBalance, d as BillingSubscription, f as BillingUsage, i as PricingPage, l as BillingDashboard, n as UsageChartProps, o as PricingTier, r as UsageDataPoint, s as formatPrice, t as UsageChart, u as BillingDashboardProps } from "./usage-chart-BjM8ShvX.js";
|
|
4
4
|
export { ActivityFeed, type ActivityFeedProps, type ActivityItem, type AppearanceController, type Backend, BackendSelector, type BackendSelectorProps, type BillingBalance, BillingDashboard, type BillingDashboardProps, type BillingSubscription, type BillingUsage, DashboardLayout, type DashboardLayoutProps, DashboardPageHeader, type DashboardPageHeaderProps, type SnapshotInfo as DashboardSnapshotInfo, type DashboardUser, type ExposedPort, type GitCommitData, GitPanel, type GitPanelProps, type GitStatusData, HARNESS_BRAND, HARNESS_OPTIONS, type HarnessBrand, HarnessLogo, type HarnessLogoProps, HarnessPicker, type HarnessPickerProps, type HarnessType, INSUFFICIENT_BALANCE_CODE, type InsufficientBalance, type McpServer, MetricAreaChart, type MetricAreaChartProps, type MetricChartPoint, type MetricChartTone, type ModelBrandIdentity, ModelBrandStack, type ModelInfo, type NavItem, NewSandboxCard, type NewSandboxCardProps, OutOfCreditsModal, type OutOfCreditsModalProps, PortsList, type PortsListProps, PricingPage, type PricingPageProps, type PricingTier, type ProcessInfo, ProcessList, type ProcessListProps, type ProductVariant, ProfileAvatar, type ProfileAvatarProps, PromoBanner, type PromoBannerProps, ProviderMark, RailButton, type RailButtonProps, RailExpandable, type RailExpandableProps, type RailExpandableSubItem, RailFlyout, type RailFlyoutProps, RailHeader, type RailHeaderProps, RailModeButton, type RailModeButtonProps, RailSeparator, type RailSeparatorProps, RailTooltip, type RailTooltipProps, ResourceMeter, type ResourceMeterProps, ResourceSnapshot, type ResourceSnapshotItem, type ResourceSnapshotProps, SANDBOX_STATUS, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, type SandboxCardData, type SandboxCardProps, SandboxPageShell, type SandboxPageShellProps, type SandboxStatus, SandboxStatusPill, type SandboxStatusPillProps, SandboxTable, type SandboxTableProps, Sidebar, SidebarContent, type SidebarContentProps, SidebarLayout, type SidebarLayoutFlyoutItem, type SidebarLayoutNavItem, type SidebarLayoutProps, SidebarPanel, SidebarPanelContent, type SidebarPanelContentProps, SidebarPanelHeader, type SidebarPanelHeaderProps, type SidebarPanelProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarRail, SidebarRailFooter, type SidebarRailFooterProps, SidebarRailNav, type SidebarRailNavProps, type SidebarRailProps, type SidebarUser, SnapshotList, type SnapshotListProps, SystemLogsViewer, type SystemLogsViewerProps, type TeamRole, TemplateCard, type TemplateCardData, type TemplateCardProps, type ThemeMode, UsageChart, type UsageChartProps, type UsageDataPoint, UsageSummary, type UsageSummaryData, type UsageSummaryProps, canAdminSandbox, canonicalModelId, chatCapableHarnesses, formatPrice, modelBrandFor, parseInsufficientBalance, sandboxStatus, useSidebar };
|
package/dist/dashboard.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-
|
|
1
|
+
import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-Ba7DlJHW.js";
|
|
2
2
|
import { i as modelBrandFor, n as ProviderMark, r as canonicalModelId, t as ModelBrandStack } from "./model-brand-BSr9on8C.js";
|
|
3
3
|
import { a as formatPrice, i as PricingPage, n as SandboxPageShell, o as BillingDashboard, r as UsageChart, t as DashboardPageHeader } from "./page-layout-2IRtfx51.js";
|
|
4
4
|
export { ActivityFeed, BackendSelector, BillingDashboard, DashboardLayout, DashboardPageHeader, GitPanel, HARNESS_BRAND, HARNESS_OPTIONS, HarnessLogo, HarnessPicker, INSUFFICIENT_BALANCE_CODE, MetricAreaChart, ModelBrandStack, NewSandboxCard, OutOfCreditsModal, PortsList, PricingPage, ProcessList, ProfileAvatar, PromoBanner, ProviderMark, RailButton, RailExpandable, RailFlyout, RailHeader, RailModeButton, RailSeparator, RailTooltip, ResourceMeter, ResourceSnapshot, SANDBOX_STATUS, SIDEBAR_MOBILE_WIDTH, SIDEBAR_PANEL_WIDTH, SIDEBAR_RAIL_LABELED_WIDTH, SIDEBAR_RAIL_WIDTH, SIDEBAR_TOTAL_WIDTH, SandboxCard, SandboxPageShell, SandboxStatusPill, SandboxTable, Sidebar, SidebarContent, SidebarLayout, SidebarPanel, SidebarPanelContent, SidebarPanelHeader, SidebarProvider, SidebarRail, SidebarRailFooter, SidebarRailNav, SnapshotList, SystemLogsViewer, TemplateCard, UsageChart, UsageSummary, canAdminSandbox, canonicalModelId, chatCapableHarnesses, formatPrice, modelBrandFor, parseInsufficientBalance, sandboxStatus, useSidebar };
|
package/dist/globals.css
CHANGED
|
@@ -1548,6 +1548,9 @@
|
|
|
1548
1548
|
.max-w-\[calc\(100vw-24px\)\] {
|
|
1549
1549
|
max-width: calc(100vw - 24px);
|
|
1550
1550
|
}
|
|
1551
|
+
.max-w-\[min\(16rem\,calc\(100vw-1rem\)\)\] {
|
|
1552
|
+
max-width: min(16rem, calc(100vw - 1rem));
|
|
1553
|
+
}
|
|
1551
1554
|
.max-w-\[min\(640px\,calc\(100vw-2rem\)\)\] {
|
|
1552
1555
|
max-width: min(640px, calc(100vw - 2rem));
|
|
1553
1556
|
}
|
|
@@ -6102,6 +6105,11 @@
|
|
|
6102
6105
|
.tangle-prose .\[\.tangle-prose_\&\]\:no-underline\! {
|
|
6103
6106
|
text-decoration-line: none !important;
|
|
6104
6107
|
}
|
|
6108
|
+
@media (hover:hover) {
|
|
6109
|
+
.\[\@media\(hover\:hover\)\]\:opacity-0 {
|
|
6110
|
+
opacity: 0%;
|
|
6111
|
+
}
|
|
6112
|
+
}
|
|
6105
6113
|
@media (pointer:coarse) {
|
|
6106
6114
|
.\[\@media\(pointer\:coarse\)\]\:min-h-10 {
|
|
6107
6115
|
min-height: calc(var(--spacing) * 10);
|
|
@@ -106,6 +106,13 @@ interface RailButtonProps {
|
|
|
106
106
|
className?: string;
|
|
107
107
|
/** Show label text next to icon (for mobile drawer) */
|
|
108
108
|
showLabel?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* One line saying what the destination is for, e.g. "Every past agent run".
|
|
111
|
+
* Shown in the hover tooltip under the label (the labeled rail shows the
|
|
112
|
+
* tooltip only when a description exists) and announced as the link's
|
|
113
|
+
* accessible description, so an unfamiliar nav item explains itself.
|
|
114
|
+
*/
|
|
115
|
+
description?: string;
|
|
109
116
|
/**
|
|
110
117
|
* Render the rail-button styling onto a single child element (e.g. a router
|
|
111
118
|
* `<Link>`) instead of an inner `<button>`. The child receives the button
|
|
@@ -128,12 +135,14 @@ interface RailButtonProps {
|
|
|
128
135
|
*/
|
|
129
136
|
style?: React$1.CSSProperties;
|
|
130
137
|
}
|
|
131
|
-
declare function RailButton({ icon: Icon, label, isActive, badge, badgeLabel, onClick, className, showLabel, asChild, children, variant, style }: RailButtonProps): React$1.JSX.Element;
|
|
138
|
+
declare function RailButton({ icon: Icon, label, isActive, badge, badgeLabel, onClick, className, showLabel, description, asChild, children, variant, style }: RailButtonProps): React$1.JSX.Element;
|
|
132
139
|
interface RailFlyoutProps {
|
|
133
140
|
icon: React$1.ComponentType<{
|
|
134
141
|
className?: string;
|
|
135
142
|
}>;
|
|
136
143
|
label: string;
|
|
144
|
+
/** Explains this destination in accessible text and its tooltip or open flyout. */
|
|
145
|
+
description?: string;
|
|
137
146
|
/** Highlight the trigger (e.g. when a child route is active). */
|
|
138
147
|
isActive?: boolean;
|
|
139
148
|
/** Show the label text beside the icon (labeled rail) vs. icon-only. */
|
|
@@ -153,7 +162,7 @@ interface RailFlyoutProps {
|
|
|
153
162
|
* item inside it. Use for a single "door" (e.g. Studio) that fronts several
|
|
154
163
|
* related destinations without permanently spending rail height on them.
|
|
155
164
|
*/
|
|
156
|
-
declare function RailFlyout({ icon: Icon, label, isActive, showLabel, title, children, className, style }: RailFlyoutProps): React$1.JSX.Element;
|
|
165
|
+
declare function RailFlyout({ icon: Icon, label, description, isActive, showLabel, title, children, className, style }: RailFlyoutProps): React$1.JSX.Element;
|
|
157
166
|
/** A single entry in a sub-item's hover actions menu (kebab). */
|
|
158
167
|
interface RailSubItemAction {
|
|
159
168
|
id: string;
|
|
@@ -191,6 +200,8 @@ interface RailExpandableProps {
|
|
|
191
200
|
className?: string;
|
|
192
201
|
}>;
|
|
193
202
|
label: string;
|
|
203
|
+
/** Explains this destination in accessible text and its tooltip or open flyout. */
|
|
204
|
+
description?: string;
|
|
194
205
|
/** Destination for the row itself. Clicking the label navigates here. */
|
|
195
206
|
href?: string;
|
|
196
207
|
/** Highlight the row (e.g. its own route or a child route is active). */
|
|
@@ -222,7 +233,7 @@ interface RailExpandableProps {
|
|
|
222
233
|
* Sub-items can be fixed (`subItems`) or lazy (`loadSubItems`, with a loading
|
|
223
234
|
* skeleton). Used for e.g. a "History" entry fronting recent sessions.
|
|
224
235
|
*/
|
|
225
|
-
declare function RailExpandable({ icon: Icon, label, href, isActive, showLabel, subItems, loadSubItems, activeSubIds, emptyLabel, defaultOpen, onNavigate, LinkComponent, className, style }: RailExpandableProps): React$1.JSX.Element;
|
|
236
|
+
declare function RailExpandable({ icon: Icon, label, description, href, isActive, showLabel, subItems, loadSubItems, activeSubIds, emptyLabel, defaultOpen, onNavigate, LinkComponent, className, style }: RailExpandableProps): React$1.JSX.Element;
|
|
226
237
|
interface RailModeButtonProps {
|
|
227
238
|
mode: string;
|
|
228
239
|
icon: React$1.ComponentType<{
|
|
@@ -294,6 +305,8 @@ interface McpServer {
|
|
|
294
305
|
interface RailTooltipProps {
|
|
295
306
|
/** Tooltip text shown to the right of the trigger. */
|
|
296
307
|
label: string;
|
|
308
|
+
/** A second, quieter line under the label that may wrap, e.g. what a nav item is for. */
|
|
309
|
+
description?: string;
|
|
297
310
|
/** The trigger element (icon button / link). */
|
|
298
311
|
children: React$1.ReactNode;
|
|
299
312
|
/** Disable the tooltip (e.g. when the rail is expanded and the label is inline). */
|
|
@@ -317,7 +330,7 @@ interface RailTooltipProps {
|
|
|
317
330
|
* the whole nav would re-stagger on a collapse that moved nothing off screen.
|
|
318
331
|
* One element type, both states.
|
|
319
332
|
*/
|
|
320
|
-
declare function RailTooltip({ label, children, disabled, className }: RailTooltipProps): React$1.JSX.Element;
|
|
333
|
+
declare function RailTooltip({ label, description, children, disabled, className }: RailTooltipProps): React$1.JSX.Element;
|
|
321
334
|
//#endregion
|
|
322
335
|
//#region src/dashboard/sidebar-context.d.ts
|
|
323
336
|
/** Width constants (px) — Tangle Quiet density (ChatGPT-minimal) */
|
|
@@ -906,6 +919,8 @@ interface SidebarLayoutNavItem {
|
|
|
906
919
|
icon: React$1.ComponentType<{
|
|
907
920
|
className?: string;
|
|
908
921
|
}>;
|
|
922
|
+
/** @see {@link RailButtonProps.description} — one line saying what this destination is for. */
|
|
923
|
+
description?: string;
|
|
909
924
|
/** Destination for link items. Omit when `togglesPanel` or `flyoutItems` is set. */
|
|
910
925
|
href?: string;
|
|
911
926
|
/** Render this item as the panel toggle instead of a link. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as ExposedPort } from "./index-
|
|
1
|
+
import { g as ExposedPort } from "./index-AVDzT8Jw.js";
|
|
2
2
|
import { D as RichFileTreeGitStatus, E as RichFileTreeGitEntry } from "./index-BoHOpP2_.js";
|
|
3
3
|
import { a as PreviewReadiness, i as PreviewAccess } from "./embedded-app-view-B_vMTtJn.js";
|
|
4
4
|
import * as React$1 from "react";
|
|
@@ -100,9 +100,20 @@ interface AgentProfilePickerProps {
|
|
|
100
100
|
* selection-only picker (the New / edit / delete affordances stay hidden).
|
|
101
101
|
*/
|
|
102
102
|
capabilities?: ReadonlyArray<AgentProfileCapability>;
|
|
103
|
+
/** Resolve after commit; reject write failures to retain the draft and show its error. Do not reject a post-commit refresh failure. */
|
|
103
104
|
onCreate?: (draft: AgentProfileDraft) => void | Promise<void>;
|
|
105
|
+
/** Same commit/rejection contract as onCreate. */
|
|
104
106
|
onUpdate?: (id: string, draft: AgentProfileDraft) => void | Promise<void>;
|
|
105
107
|
onDelete?: (id: string) => void | Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Open the host's full profile editor for this profile instead of the inline
|
|
110
|
+
* name-and-persona form. When set, every row (built-in modes included) gets
|
|
111
|
+
* an edit action that closes the menu and calls this; `onUpdate` is then
|
|
112
|
+
* unused by the menu.
|
|
113
|
+
*/
|
|
114
|
+
onEdit?: (id: string) => void;
|
|
115
|
+
/** Open the host's editor for a new profile instead of the inline form. */
|
|
116
|
+
onNew?: () => void;
|
|
106
117
|
disabled?: boolean;
|
|
107
118
|
/** Keep the pinned profile visible while preventing profile selection. */
|
|
108
119
|
locked?: boolean;
|
|
@@ -127,7 +138,7 @@ interface AgentProfilePickerProps {
|
|
|
127
138
|
* because the inline form needs its own focus and typing without the menu
|
|
128
139
|
* stealing keystrokes.
|
|
129
140
|
*/
|
|
130
|
-
declare function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate, onUpdate, onDelete, disabled, locked, lockReason, onNewChat, className, triggerClassName, popoverClassName, side }: AgentProfilePickerProps): React$1.JSX.Element;
|
|
141
|
+
declare function AgentProfilePicker({ value, onChange, profiles, capabilities, onCreate, onUpdate, onDelete, onEdit, onNew, disabled, locked, lockReason, onNewChat, className, triggerClassName, popoverClassName, side }: AgentProfilePickerProps): React$1.JSX.Element;
|
|
131
142
|
//#endregion
|
|
132
143
|
//#region src/chat/artifact-agent-dock.d.ts
|
|
133
144
|
type ArtifactKind = string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as LoginLayout, c as UserMenu, d as TangleLoginButtonProps, i as GitHubLoginButtonProps, l as UserMenuProps, n as AuthHeaderProps, o as LoginLayoutProps, r as GitHubLoginButton, s as SessionUser, t as AuthHeader, u as TangleLoginButton } from "./index-DvmZLMT1.js";
|
|
2
|
-
import { A as ArtifactDockMessage, B as AgentProfilePickerProps, C as ThinkingIndicatorProps, D as ArtifactAgentDock, E as isViewerMessage, F as snapHarnessToModel, G as ReasoningLevelPicker, H as HARNESS_REASONING_OPTIONS, I as AgentProfileCapability, K as ReasoningLevelPickerProps, L as AgentProfileDraft, M as ArtifactKind, N as ArtifactScope, O as ArtifactAgentDockProps, P as modelProvider, R as AgentProfileOption, S as ThinkingIndicator, T as UserMessageProps, U as ReasoningLevel, V as DEFAULT_REASONING_LEVEL_OPTIONS, W as ReasoningLevelOption, _ as MessageAuthorProps, a as AgentTimelineMessageItem, b as MessageRole, c as AgentTimelineTone, d as ChatAuthor, f as ChatContainer, g as MessageAuthor, h as ChatMessageProps, i as AgentTimelineItem, j as ArtifactDockStreamEvent, k as ArtifactAgentDockTransport, l as AgentTimelineToolGroupItem, m as ChatMessage, n as AgentTimelineArtifactItem, o as AgentTimelineProps, p as ChatContainerProps, r as AgentTimelineCustomItem, s as AgentTimelineStatusItem, t as AgentTimeline, u as AgentTimelineToolItem, v as MessageList, w as UserMessage, x as TRANSCRIPT_TEXT, y as MessageListProps, z as AgentProfilePicker } from "./index-
|
|
2
|
+
import { A as ArtifactDockMessage, B as AgentProfilePickerProps, C as ThinkingIndicatorProps, D as ArtifactAgentDock, E as isViewerMessage, F as snapHarnessToModel, G as ReasoningLevelPicker, H as HARNESS_REASONING_OPTIONS, I as AgentProfileCapability, K as ReasoningLevelPickerProps, L as AgentProfileDraft, M as ArtifactKind, N as ArtifactScope, O as ArtifactAgentDockProps, P as modelProvider, R as AgentProfileOption, S as ThinkingIndicator, T as UserMessageProps, U as ReasoningLevel, V as DEFAULT_REASONING_LEVEL_OPTIONS, W as ReasoningLevelOption, _ as MessageAuthorProps, a as AgentTimelineMessageItem, b as MessageRole, c as AgentTimelineTone, d as ChatAuthor, f as ChatContainer, g as MessageAuthor, h as ChatMessageProps, i as AgentTimelineItem, j as ArtifactDockStreamEvent, k as ArtifactAgentDockTransport, l as AgentTimelineToolGroupItem, m as ChatMessage, n as AgentTimelineArtifactItem, o as AgentTimelineProps, p as ChatContainerProps, r as AgentTimelineCustomItem, s as AgentTimelineStatusItem, t as AgentTimeline, u as AgentTimelineToolItem, v as MessageList, w as UserMessage, x as TRANSCRIPT_TEXT, y as MessageListProps, z as AgentProfilePicker } from "./index-QBCEflyf.js";
|
|
3
3
|
import { a as SharedMessagingRouteViewState, i as AgentTargetSummary, n as AgentMessagingConnection, r as AgentMessagingConnectionProps, t as AgentEnrollmentViewState } from "./index-ClRHbsoX.js";
|
|
4
|
-
import { $ as SandboxTable, $t as Sidebar, A as MetricChartPoint, At as SIDEBAR_TOTAL_WIDTH, B as ProductVariant, Bt as RailButton, C as UsageSummary, Ct as OutOfCreditsModal, D as SystemLogsViewerProps, Dt as SIDEBAR_PANEL_WIDTH, E as SystemLogsViewer, Et as SIDEBAR_MOBILE_WIDTH, F as SidebarLayoutProps, Ft as RailTooltipProps, G as HARNESS_OPTIONS, Gt as RailFlyout, H as HarnessBrand, Ht as RailExpandable, I as DashboardLayout, It as McpServer, J as HarnessType, Jt as RailHeaderProps, K as HarnessPicker, Kt as RailFlyoutProps, L as DashboardLayoutProps, Lt as AppearanceController, M as SidebarLayout, Mt as SidebarProviderProps, N as SidebarLayoutFlyoutItem, Nt as useSidebar, O as MetricAreaChart, Ot as SIDEBAR_RAIL_LABELED_WIDTH, P as SidebarLayoutNavItem, Pt as RailTooltip, Q as BackendSelectorProps, Qt as RailSeparatorProps, R as DashboardUser, Rt as ProfileAvatar, S as GitStatusData, St as InsufficientBalance, T as UsageSummaryProps, Tt as parseInsufficientBalance, U as HarnessLogo, Ut as RailExpandableProps, V as HARNESS_BRAND, Vt as RailButtonProps, W as HarnessLogoProps, Wt as RailExpandableSubItem, X as Backend, Xt as RailModeButtonProps, Y as chatCapableHarnesses, Yt as RailModeButton, Z as BackendSelector, Zt as RailSeparator, _ as PortsList, _t as ResourceSnapshotItem, a as PromoBanner, an as SidebarPanelHeader, at as NewSandboxCard, b as GitPanel, bt as ResourceMeterProps, c as SnapshotList, cn as SidebarProps, ct as SandboxCardData, d as ProcessList, dn as SidebarRailFooterProps, dt as TeamRole, en as SidebarContent, et as SandboxTableProps, f as ProcessListProps, fn as SidebarRailNav, ft as canAdminSandbox, g as ExposedPort, gn as ThemeMode, gt as ResourceSnapshot, h as TemplateCardProps, hn as SidebarUser, ht as ActivityItem, i as SandboxPageShellProps, in as SidebarPanelContentProps, it as sandboxStatus, j as MetricChartTone, jt as SidebarProvider, k as MetricAreaChartProps, kt as SIDEBAR_RAIL_WIDTH, l as SnapshotListProps, ln as SidebarRail, lt as SandboxCardProps, m as TemplateCardData, mn as SidebarRailProps, mt as ActivityFeedProps, n as DashboardPageHeaderProps, nn as SidebarPanel, nt as SandboxStatusPill, o as PromoBannerProps, on as SidebarPanelHeaderProps, ot as NewSandboxCardProps, p as TemplateCard, pn as SidebarRailNavProps, pt as ActivityFeed, q as HarnessPickerProps, qt as RailHeader, r as SandboxPageShell, rn as SidebarPanelContent, rt as SandboxStatusPillProps, s as SnapshotInfo, sn as SidebarPanelProps, st as SandboxCard, t as DashboardPageHeader, tn as SidebarContentProps, tt as SANDBOX_STATUS, u as ProcessInfo, un as SidebarRailFooter, ut as SandboxStatus, v as PortsListProps, vt as ResourceSnapshotProps, w as UsageSummaryData, wt as OutOfCreditsModalProps, x as GitPanelProps, xt as INSUFFICIENT_BALANCE_CODE, y as GitCommitData, yt as ResourceMeter, z as NavItem, zt as ProfileAvatarProps } from "./index-
|
|
4
|
+
import { $ as SandboxTable, $t as Sidebar, A as MetricChartPoint, At as SIDEBAR_TOTAL_WIDTH, B as ProductVariant, Bt as RailButton, C as UsageSummary, Ct as OutOfCreditsModal, D as SystemLogsViewerProps, Dt as SIDEBAR_PANEL_WIDTH, E as SystemLogsViewer, Et as SIDEBAR_MOBILE_WIDTH, F as SidebarLayoutProps, Ft as RailTooltipProps, G as HARNESS_OPTIONS, Gt as RailFlyout, H as HarnessBrand, Ht as RailExpandable, I as DashboardLayout, It as McpServer, J as HarnessType, Jt as RailHeaderProps, K as HarnessPicker, Kt as RailFlyoutProps, L as DashboardLayoutProps, Lt as AppearanceController, M as SidebarLayout, Mt as SidebarProviderProps, N as SidebarLayoutFlyoutItem, Nt as useSidebar, O as MetricAreaChart, Ot as SIDEBAR_RAIL_LABELED_WIDTH, P as SidebarLayoutNavItem, Pt as RailTooltip, Q as BackendSelectorProps, Qt as RailSeparatorProps, R as DashboardUser, Rt as ProfileAvatar, S as GitStatusData, St as InsufficientBalance, T as UsageSummaryProps, Tt as parseInsufficientBalance, U as HarnessLogo, Ut as RailExpandableProps, V as HARNESS_BRAND, Vt as RailButtonProps, W as HarnessLogoProps, Wt as RailExpandableSubItem, X as Backend, Xt as RailModeButtonProps, Y as chatCapableHarnesses, Yt as RailModeButton, Z as BackendSelector, Zt as RailSeparator, _ as PortsList, _t as ResourceSnapshotItem, a as PromoBanner, an as SidebarPanelHeader, at as NewSandboxCard, b as GitPanel, bt as ResourceMeterProps, c as SnapshotList, cn as SidebarProps, ct as SandboxCardData, d as ProcessList, dn as SidebarRailFooterProps, dt as TeamRole, en as SidebarContent, et as SandboxTableProps, f as ProcessListProps, fn as SidebarRailNav, ft as canAdminSandbox, g as ExposedPort, gn as ThemeMode, gt as ResourceSnapshot, h as TemplateCardProps, hn as SidebarUser, ht as ActivityItem, i as SandboxPageShellProps, in as SidebarPanelContentProps, it as sandboxStatus, j as MetricChartTone, jt as SidebarProvider, k as MetricAreaChartProps, kt as SIDEBAR_RAIL_WIDTH, l as SnapshotListProps, ln as SidebarRail, lt as SandboxCardProps, m as TemplateCardData, mn as SidebarRailProps, mt as ActivityFeedProps, n as DashboardPageHeaderProps, nn as SidebarPanel, nt as SandboxStatusPill, o as PromoBannerProps, on as SidebarPanelHeaderProps, ot as NewSandboxCardProps, p as TemplateCard, pn as SidebarRailNavProps, pt as ActivityFeed, q as HarnessPickerProps, qt as RailHeader, r as SandboxPageShell, rn as SidebarPanelContent, rt as SandboxStatusPillProps, s as SnapshotInfo, sn as SidebarPanelProps, st as SandboxCard, t as DashboardPageHeader, tn as SidebarContentProps, tt as SANDBOX_STATUS, u as ProcessInfo, un as SidebarRailFooter, ut as SandboxStatus, v as PortsListProps, vt as ResourceSnapshotProps, w as UsageSummaryData, wt as OutOfCreditsModalProps, x as GitPanelProps, xt as INSUFFICIENT_BALANCE_CODE, y as GitCommitData, yt as ResourceMeter, z as NavItem, zt as ProfileAvatarProps } from "./index-AVDzT8Jw.js";
|
|
5
5
|
import { a as canonicalModelId, i as ProviderMark, n as ModelBrandStack, o as modelBrandFor, r as ModelInfo, t as ModelBrandIdentity } from "./model-brand-B57CV8Lg.js";
|
|
6
6
|
import { a as PricingPageProps, c as BillingBalance, d as BillingSubscription, f as BillingUsage, i as PricingPage, l as BillingDashboard, n as UsageChartProps, o as PricingTier, r as UsageDataPoint, s as formatPrice, t as UsageChart, u as BillingDashboardProps } from "./usage-chart-BjM8ShvX.js";
|
|
7
7
|
import { A as configurePdfViewer, C as PdfViewerConfig, D as RichFileTreeGitStatus, E as RichFileTreeGitEntry, F as getFormatLabel, I as getSyntaxLanguage, L as parseCsv, M as fileExtension, N as filterFileTree, O as RichFileTreeProps, P as getCodeLanguage, R as resolveFilePreviewKind, S as PdfViewer, T as RichFileTree, _ as FileTabsProps, a as FileCardProps, b as FileTreeVisibilityOptions, c as FileList, d as FileNode, f as FilePreview, g as FileTabs, h as FileTabData, i as FileCard, j as detectFileFormat, k as RichFileTreeThemeVars, l as FileListItem, m as FilePreviewProps, n as FileArtifactPane, o as FileDetails, p as FilePreviewKind, r as FileArtifactPaneProps, s as FileFormat, t as CSV_PREVIEW_ROW_LIMIT, u as FileListProps, v as FileTree, w as PdfViewerProps, x as FileUploader, y as FileTreeProps } from "./index-BoHOpP2_.js";
|
|
@@ -11,7 +11,7 @@ import { d as useSessionStream, l as UseSessionStreamOptions, n as UseSidecarAut
|
|
|
11
11
|
import { AgentStreamEvent, AppendUserMessageOptions, ApplySdkEventOptions, AuthUser, AutomationStreamEvent, BeginAssistantMessageOptions, BotStreamEvent, CompleteAssistantMessageOptions, RealtimeSessionOptions, RealtimeSessionRegistry, RealtimeSessionRegistryProps, RealtimeSessionState, RealtimeSessionTarget, SSEEvent, SandboxMetrics, SdkSessionAttachment, SdkSessionEvent, SdkSessionSeed, SidecarMetricsPayload, TaskStreamEvent, TerminalStreamEvent, UseAuthOptions, UseAuthResult, UseRunGroupsOptions, UseSSEStreamOptions, UseSSEStreamResult, UseSandboxMetricsOptions, UseSandboxMetricsResult, UseSdkSessionOptions, UseSdkSessionReturn, UseToolCallStreamReturn, createAuthFetcher, useApiKey, useAuth, useAutoScroll, useCreateSession, useDeleteSession, useDropdownMenu, useLiveTime, useRealtimeSession, useRenameSession, useRunCollapseState, useRunGroups, useSSEStream, useSandboxMetrics, useSdkSession, useSessions, useToolCallStream } from "./hooks.js";
|
|
12
12
|
import { $ as ContextMenuRadioGroup, $n as Table, $r as TangleKnot, $t as MetricProps, A as Card, An as Sheet, Ar as Toolbar, At as DropdownMenuRadioItem, B as ChipProps, Bn as SidebarDropZone, Br as buttonVariants, Bt as FilterFieldProps, C as BadgeProps, Cn as SelectLabel, Cr as TimeSelect, Ct as DropdownMenuCheckboxItem, D as Calendar, Dn as SelectTrigger, Dr as ToastProvider, Dt as DropdownMenuLabel, E as CATEGORY_TONES, En as SelectSeparator, Er as ToastContainer, Et as DropdownMenuItem, F as CardTitle, Fn as SheetHeader, Fr as TooltipTrigger, Ft as DropdownMenuSubTrigger, G as CollapsibleTrigger, Gn as Slider, Gr as toneFor, Gt as IconTile, H as CodeBlockProps, Hn as Skeleton, Hr as initialsOf, Ht as HeadingVariant, I as CardTitleProps, In as SheetOverlay, Ir as UploadFile, It as DropdownMenuTrigger, J as ContextMenuContent, Jn as StatusPill, Jr as HeadingProps, Jt as InlineCodeProps, K as ContextMenu, Kn as StatCard, Kr as useTheme, Kt as IconTileProps, L as CategoryTone, Ln as SheetPortal, Lr as UploadProgress, Lt as EmptyState, M as CardDescription, Mn as SheetContent, Mr as Tooltip, Mt as DropdownMenuShortcut, N as CardFooter, Nn as SheetDescription, Nr as TooltipContent, Nt as DropdownMenuSub, O as CalendarDate, On as SelectValue, Or as Tone, Ot as DropdownMenuPortal, P as CardHeader, Pn as SheetFooter, Pr as TooltipProvider, Pt as DropdownMenuSubContent, Q as ContextMenuPortal, Qn as TONE_CLASSES, Qr as LogoProps, Qt as Metric, R as Checkbox, Rn as SheetTitle, Rr as UploadProgressProps, Rt as EmptyStateProps, S as Badge, Sn as SelectItem, Sr as ThemeToggle, St as DropdownMenu, T as ButtonProps, Tn as SelectScrollUpButton, Tr as Toast, Tt as DropdownMenuGroup, U as Collapsible, Un as SkeletonCard, Ur as localToday, Ut as HelpText, V as CodeBlock, Vn as SidebarDropZoneProps, Vr as formatCalendarDate, Vt as Heading, W as CollapsibleContent, Wn as SkeletonTable, Wr as parseCalendarDate, Wt as HelpTextProps, X as ContextMenuItem, Xn as StatusTone, Xr as SectionTitleProps, Xt as InputProps, Y as ContextMenuGroup, Yn as StatusPillProps, Yr as SectionTitle, Yt as Input, Z as ContextMenuLabel, Zn as Switch, Zr as Logo, Zt as Label, _n as SegmentedControlOption, _t as DialogPortal, a as AlertDialogCancel, an as PageShellProps, ar as TableHeader, at as ContextMenuSubTrigger, b as AvatarFallback, bn as SelectContent, br as Textarea, bt as DropZone, c as AlertDialogFooter, cn as Popover, cr as Tabs, ct as DatePicker, d as AlertDialogPortal, dn as PopoverContent, dr as TabsTrigger, dt as DialogClose, en as MetricStrip, er as TableBody, et as ContextMenuRadioItem, f as AlertDialogTitle, fn as PopoverTrigger, fr as Tag, ft as DialogContent, g as AlertTone, gn as SegmentedControl, gt as DialogOverlay, h as AlertTitle, hn as RadioGroupItem, hr as TerminalDisplay, ht as DialogHeader, i as AlertDialogAction, in as PageShell, ir as TableHead, it as ContextMenuSubContent, j as CardContent, jn as SheetClose, jr as ToolbarProps, jt as DropdownMenuSeparator, k as CalendarProps, kn as Separator, kr as ToneClasses, kt as DropdownMenuRadioGroup, l as AlertDialogHeader, ln as PopoverAnchor, lr as TabsContent, lt as DatePickerProps, m as AlertProps, mn as RadioGroup, mt as DialogFooter, n as AlertDescription, nn as PageHeader, nr as TableCell, nt as ContextMenuShortcut, o as AlertDialogContent, on as Pagination, or as TableProps, ot as ContextMenuTrigger, p as AlertDialogTrigger, pn as Progress, pr as TagProps, pt as DialogDescription, q as ContextMenuCheckboxItem, qn as StatCardProps, qr as useToast, qt as InlineCode, r as AlertDialog, rn as PageHeaderProps, rr as TableFooter, rt as ContextMenuSub, s as AlertDialogDescription, sn as PaginationProps, sr as TableRow, st as CopyButton, t as Alert, tn as MetricStripProps, tr as TableCaption, tt as ContextMenuSeparator, u as AlertDialogOverlay, un as PopoverClose, ur as TabsList, ut as Dialog, vn as SegmentedControlProps, vr as TextShimmer, vt as DialogTitle, w as Button, wn as SelectScrollDownButton, wr as TimeSelectProps, wt as DropdownMenuContent, x as AvatarImage, xn as SelectGroup, xr as TextareaProps, xt as DropZoneProps, y as Avatar, yn as Select, yr as TextShimmerProps, yt as DialogTrigger, z as Chip, zn as SheetTrigger, zr as badgeVariants, zt as FilterField } from "./index-BqRlajlc.js";
|
|
13
13
|
import { $ as StatusBar, A as createShellShouldRevalidate, B as SessionSidebarVariant, C as SandboxWorkbenchLayoutOptions, D as SandboxWorkbenchSessionProps, E as SandboxWorkbenchProps, F as SessionSidebarFilter, G as dispatchSessionCreated, H as SessionCreatedDetail, I as SessionSidebarGroupBy, J as RuntimePaneProps, K as useOptimisticSessionItems, L as SessionSidebarItem, M as formatRelativeAge, N as SessionSidebar, O as ShellShouldRevalidateArgs, P as SessionSidebarBadge, Q as ContextBadge, R as SessionSidebarLink, S as SandboxWorkbenchFileArtifact, T as SandboxWorkbenchOpenUIArtifact, U as SessionOptimisticController, V as SESSION_CREATED_EVENT, W as UseOptimisticSessionItemsOptions, X as TerminalPanel, Y as TerminalLine, Z as TerminalProps, _ as TaskBoardItem, _t as WorkspaceSurfaceTitle, a as WorkspaceFilesPane, at as DirectoryPaneProps, b as SandboxWorkbenchArtifact, bt as WorkspaceLayoutProps, c as ApprovalConfidenceStat, ct as ShellHeader, d as ApprovalQueueProps, dt as WorkspacePaneHeaderProps, et as StatusBarProps, f as CalendarEvent, ft as WorkspaceSurface, g as TaskBoardColumn, gt as WorkspaceSurfaceProps, h as TaskBoard, ht as WorkspaceSurfaceHeadingLevel, i as WorkspaceArtifactViewProps, it as DirectoryPane, j as shellShouldRevalidate, k as ShellShouldRevalidateOptions, l as ApprovalItem, lt as ShellHeaderProps, m as CalendarViewProps, mt as WorkspaceSurfaceFrameProps, n as ArtifactPaneProps, nt as StatusBanner, o as WorkspaceFilesPaneProps, ot as SHELL_HEADER_HEIGHT, p as CalendarView, pt as WorkspaceSurfaceFrame, q as RuntimePane, r as WorkspaceArtifactView, rt as StatusBannerProps, s as WorkspaceFilesPreview, st as SHELL_INSET_GUTTER, t as ArtifactPane, tt as BannerType, u as ApprovalQueue, ut as WorkspacePaneHeader, v as TaskBoardProps, vt as WorkspaceSurfaceTitleProps, w as SandboxWorkbenchMarkdownArtifact, x as SandboxWorkbenchCustomArtifact, y as SandboxWorkbench, yt as WorkspaceLayout, z as SessionSidebarProps } from "./index-C61CTrhx.js";
|
|
14
|
-
import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-
|
|
14
|
+
import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-ByzdHyte.js";
|
|
15
15
|
import { a as PreviewReadiness, i as PreviewAccess, n as EmbeddedAppView, r as EmbeddedAppViewProps, t as EmbeddedApp } from "./embedded-app-view-B_vMTtJn.js";
|
|
16
16
|
import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIAction, OpenUIActionsNode, OpenUIArtifactRenderer, OpenUIArtifactRendererProps, OpenUIBadgeNode, OpenUICardNode, OpenUICodeNode, OpenUIComponentNode, OpenUIGridNode, OpenUIHeadingNode, OpenUIKeyValueNode, OpenUIMarkdownNode, OpenUIPrimitive, OpenUISchemaIssue, OpenUISchemaValidation, OpenUISeparatorNode, OpenUIStackNode, OpenUIStatNode, OpenUITableNode, OpenUITextNode, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
|
|
17
17
|
import { ApprovalCard, ApprovalCardProps, ApprovalDiffFile, ApprovalDiffSummary, ApprovalPlanStep, ExpandedToolDetail, ExpandedToolDetailProps, FeedSegment, InlineThinkingItem, InlineThinkingItemProps, InlineToolItem, InlineToolItemProps, LiveDuration, RunGroup, RunGroupProps, RunPhase, RunPhaseList, RunRowShell, RunRowShellProps, RunRowStatus, RunRowStatusDot, TaskList, TaskListItem, TaskListProps, TaskStatus, ToolCallData, ToolCallFeed, ToolCallFeedProps, ToolCallStatus, ToolCallType, parseToolEvent, showsTaskPriority, taskProgress, taskStatus } from "./run.js";
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-
|
|
1
|
+
import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-Ai6g85oA.js";
|
|
2
2
|
import { $ as DialogClose, $n as formatCalendarDate, $t as SelectSeparator, A as Chip, An as Tabs, At as Input, B as ContextMenuLabel, Bn as Textarea, Bt as PopoverContent, C as Card, Cn as TableBody, Ct as DropdownMenuTrigger, D as CardHeader, Dn as TableHead, Dt as HelpText, E as CardFooter, En as TableFooter, Et as Heading, F as ContextMenu, Ft as PageShell, G as ContextMenuShortcut, Gn as Toolbar, Gt as SegmentedControl, H as ContextMenuRadioGroup, Hn as TimeSelect, Ht as Progress, I as ContextMenuCheckboxItem, In as TerminalDisplay, It as Pagination, J as ContextMenuSubTrigger, Jn as TooltipProvider, Jt as SelectGroup, K as ContextMenuSub, Kn as Tooltip, Kt as Select, L as ContextMenuContent, Lt as Popover, M as Collapsible, Mn as TabsList, Mt as Metric, N as CollapsibleContent, Nn as TabsTrigger, Nt as MetricStrip, O as CardTitle, On as TableHeader, Ot as IconTile, P as CollapsibleTrigger, Pn as Tag, Pt as PageHeader, Q as Dialog, Qn as buttonVariants, Qt as SelectScrollUpButton, R as ContextMenuGroup, Rt as PopoverAnchor, S as Calendar, Sn as Table, St as DropdownMenuSubTrigger, T as CardDescription, Tn as TableCell, Tt as FilterField, U as ContextMenuRadioItem, Un as ToastContainer, Ut as RadioGroup, V as ContextMenuPortal, Vn as ThemeToggle, Vt as PopoverTrigger, W as ContextMenuSeparator, Wn as ToastProvider, Wt as RadioGroupItem, X as CopyButton, Xn as UploadProgress, Xt as SelectLabel, Y as ContextMenuTrigger, Yn as TooltipTrigger, Yt as SelectItem, Z as DatePicker, Zn as badgeVariants, Zt as SelectScrollDownButton, _ as AvatarFallback, _n as Slider, _t as DropdownMenuRadioItem, a as AlertDialogCancel, an as SheetContent, ar as useToast, at as DialogPortal, b as Button, bn as Switch, bt as DropdownMenuSub, c as AlertDialogFooter, cn as SheetHeader, cr as TangleKnot, ct as DropZone, d as AlertDialogPortal, dn as SheetTitle, dt as DropdownMenuContent, en as SelectTrigger, er as initialsOf, et as DialogContent, f as AlertDialogTitle, fn as SheetTrigger, ft as DropdownMenuGroup, g as Avatar, gn as SkeletonTable, gt as DropdownMenuRadioGroup, hn as SkeletonCard, ht as DropdownMenuPortal, i as AlertDialogAction, in as SheetClose, ir as useTheme, it as DialogOverlay, j as CodeBlock, jn as TabsContent, jt as Label, k as Checkbox, kn as TableRow, kt as InlineCode, l as AlertDialogHeader, ln as SheetOverlay, lt as DropdownMenu, m as AlertTitle, mn as Skeleton, mt as DropdownMenuLabel, n as AlertDescription, nn as Separator, nr as parseCalendarDate, nt as DialogFooter, o as AlertDialogContent, on as SheetDescription, or as SectionTitle, ot as DialogTitle, p as AlertDialogTrigger, pn as SidebarDropZone, pt as DropdownMenuItem, q as ContextMenuSubContent, qn as TooltipContent, qt as SelectContent, r as AlertDialog, rn as Sheet, rr as toneFor, rt as DialogHeader, s as AlertDialogDescription, sn as SheetFooter, sr as Logo, st as DialogTrigger, t as Alert, tn as SelectValue, tr as localToday, tt as DialogDescription, u as AlertDialogOverlay, un as SheetPortal, ut as DropdownMenuCheckboxItem, v as AvatarImage, vn as StatCard, vt as DropdownMenuSeparator, w as CardContent, wn as TableCaption, wt as EmptyState, x as CATEGORY_TONES, xn as TONE_CLASSES, xt as DropdownMenuSubContent, y as Badge, yn as StatusPill, yt as DropdownMenuShortcut, z as ContextMenuItem, zn as TextShimmer, zt as PopoverClose } from "./primitives-DSpl1Thf.js";
|
|
3
3
|
import { i as WorkspacePaneHeader, n as SHELL_INSET_GUTTER, r as ShellHeader, t as SHELL_HEADER_HEIGHT } from "./shell-header-CTh3oV_e.js";
|
|
4
4
|
import { C as WorkspaceSurfaceTitle, S as WorkspaceSurfaceFrame, _ as StatusBar, a as TaskBoard, b as WorkspaceLayout, c as createShellShouldRevalidate, d as SESSION_CREATED_EVENT, f as dispatchSessionCreated, g as TerminalPanel, h as RuntimePane, i as CalendarView, l as shellShouldRevalidate, m as formatRelativeAge, n as WorkspaceFilesPane, o as SandboxWorkbench, p as useOptimisticSessionItems, r as ApprovalQueue, s as WorkspaceArtifactView, t as ArtifactPane, u as SessionSidebar, v as StatusBanner, x as WorkspaceSurface, y as DirectoryPane } from "./workspace-ElQALzwV.js";
|
|
5
5
|
import { i as VaultTree, n as filterFileNodes, r as VAULT_TREE_CHILD_PAGE, t as fileTreeFromPaths } from "./tree-data-DtoCNNBJ.js";
|
|
6
|
-
import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-
|
|
6
|
+
import { $ as useSidebar, A as parseInsufficientBalance, B as SidebarPanel, C as SandboxStatusPill, D as ResourceMeter, E as ResourceSnapshot, F as RailHeader, G as SidebarRailNav, H as SidebarPanelHeader, I as RailModeButton, J as SIDEBAR_PANEL_WIDTH, K as RailTooltip, L as RailSeparator, M as RailButton, N as RailExpandable, O as INSUFFICIENT_BALANCE_CODE, P as RailFlyout, Q as SidebarProvider, R as Sidebar, S as SANDBOX_STATUS, T as ActivityFeed, U as SidebarRail, V as SidebarPanelContent, W as SidebarRailFooter, X as SIDEBAR_RAIL_WIDTH, Y as SIDEBAR_RAIL_LABELED_WIDTH, Z as SIDEBAR_TOTAL_WIDTH, _ as BackendSelector, a as PortsList, b as SandboxCard, c as SystemLogsViewer, d as DashboardLayout, f as HARNESS_OPTIONS, g as HarnessLogo, h as HARNESS_BRAND, i as TemplateCard, j as ProfileAvatar, k as OutOfCreditsModal, l as MetricAreaChart, m as chatCapableHarnesses, n as SnapshotList, o as GitPanel, p as HarnessPicker, q as SIDEBAR_MOBILE_WIDTH, r as ProcessList, s as UsageSummary, t as PromoBanner, u as SidebarLayout, v as SandboxTable, w as sandboxStatus, x as canAdminSandbox, y as NewSandboxCard, z as SidebarContent } from "./dashboard-Ba7DlJHW.js";
|
|
7
7
|
import { i as modelBrandFor, n as ProviderMark, r as canonicalModelId, t as ModelBrandStack } from "./model-brand-BSr9on8C.js";
|
|
8
8
|
import { a as formatPrice, i as PricingPage, n as SandboxPageShell, o as BillingDashboard, r as UsageChart, t as DashboardPageHeader } from "./page-layout-2IRtfx51.js";
|
|
9
9
|
import { t as usePtySession } from "./use-pty-session-Bf4hBLXJ.js";
|
|
10
10
|
import { CSV_PREVIEW_ROW_LIMIT, FileArtifactPane, FileCard, FileList, FilePreview, FileTabs, FileTree, PdfViewer, RichFileTree, configurePdfViewer, detectFileFormat, fileExtension, filterFileTree, getCodeLanguage, getFormatLabel, getSyntaxLanguage, parseCsv, resolveFilePreviewKind } from "./files.js";
|
|
11
11
|
import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CYb9hevq.js";
|
|
12
12
|
import { OPENUI_NODE_JSON_SCHEMA, OPENUI_NODE_TYPES, OpenUIArtifactRenderer, findUnsupportedOpenUINode, validateOpenUIJsonArtifact, validateOpenUIJsonNode } from "./openui.js";
|
|
13
|
-
import { a as MessageList, c as UserMessage, d as modelProvider, f as snapHarnessToModel, g as ReasoningLevelPicker, h as HARNESS_REASONING_OPTIONS, i as MessageAuthor, l as isViewerMessage, m as DEFAULT_REASONING_LEVEL_OPTIONS, n as ChatContainer, o as TRANSCRIPT_TEXT, p as AgentProfilePicker, r as ChatMessage, s as ThinkingIndicator, t as AgentTimeline, u as ArtifactAgentDock } from "./chat-
|
|
13
|
+
import { a as MessageList, c as UserMessage, d as modelProvider, f as snapHarnessToModel, g as ReasoningLevelPicker, h as HARNESS_REASONING_OPTIONS, i as MessageAuthor, l as isViewerMessage, m as DEFAULT_REASONING_LEVEL_OPTIONS, n as ChatContainer, o as TRANSCRIPT_TEXT, p as AgentProfilePicker, r as ChatMessage, s as ThinkingIndicator, t as AgentTimeline, u as ArtifactAgentDock } from "./chat-_aHUfqtH.js";
|
|
14
14
|
import { ApprovalCard, ApprovalDiffSummary, ExpandedToolDetail, InlineThinkingItem, InlineToolItem, LiveDuration, RunGroup, RunPhaseList, RunRowShell, RunRowStatusDot, TaskList, ToolCallFeed, parseToolEvent, showsTaskPriority, taskProgress, taskStatus } from "./run.js";
|
|
15
15
|
import "./vault-tree.js";
|
|
16
16
|
import { a as TangleLoginButton, i as UserMenu, n as GitHubLoginButton, r as LoginLayout, t as AuthHeader } from "./auth-CWe17Hly.js";
|
package/dist/styles.css
CHANGED
|
@@ -1548,6 +1548,9 @@
|
|
|
1548
1548
|
.max-w-\[calc\(100vw-24px\)\] {
|
|
1549
1549
|
max-width: calc(100vw - 24px);
|
|
1550
1550
|
}
|
|
1551
|
+
.max-w-\[min\(16rem\,calc\(100vw-1rem\)\)\] {
|
|
1552
|
+
max-width: min(16rem, calc(100vw - 1rem));
|
|
1553
|
+
}
|
|
1551
1554
|
.max-w-\[min\(640px\,calc\(100vw-2rem\)\)\] {
|
|
1552
1555
|
max-width: min(640px, calc(100vw - 2rem));
|
|
1553
1556
|
}
|
|
@@ -6102,6 +6105,11 @@
|
|
|
6102
6105
|
.tangle-prose .\[\.tangle-prose_\&\]\:no-underline\! {
|
|
6103
6106
|
text-decoration-line: none !important;
|
|
6104
6107
|
}
|
|
6108
|
+
@media (hover:hover) {
|
|
6109
|
+
.\[\@media\(hover\:hover\)\]\:opacity-0 {
|
|
6110
|
+
opacity: 0%;
|
|
6111
|
+
}
|
|
6112
|
+
}
|
|
6105
6113
|
@media (pointer:coarse) {
|
|
6106
6114
|
.\[\@media\(pointer\:coarse\)\]\:min-h-10 {
|
|
6107
6115
|
min-height: calc(var(--spacing) * 10);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as cn$1 } from "./utils-DzWbktWG.js";
|
|
2
|
-
import { a as PortsList } from "./dashboard-
|
|
2
|
+
import { a as PortsList } from "./dashboard-Ba7DlJHW.js";
|
|
3
3
|
import { n as TerminalView } from "./terminal-DmSUfGha.js";
|
|
4
4
|
import { RichFileTree } from "./files.js";
|
|
5
5
|
import { n as PreviewView } from "./embedded-app-view-CYb9hevq.js";
|
package/dist/workbench.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-
|
|
1
|
+
import { A as SandboxArtifactTerminal, C as ChangesPane, D as ChangesPaneProps, E as ChangedFile, O as SandboxArtifact, S as PillTabsProps, T as ArtifactView, _ as DiffStats, a as PreviewView, b as PillTabItem, c as DiffViewProps, d as FileBreadcrumb, f as FileBreadcrumbProps, g as PanelHeaderProps, h as PanelHeader, i as resolveLanguage, k as SandboxArtifactPaneProps, l as CodeView, m as GitStatusBadge, n as CodeSurface, o as PreviewViewProps, p as DiffStatsBadge, r as CodeSurfaceProps, s as DiffView, t as BRAND_PRISM_THEME, u as CodeViewProps, v as buildUnifiedPatch, w as SandboxArtifactPane, x as PillTabs, y as computeDiffStats } from "./index-ByzdHyte.js";
|
|
2
2
|
import { a as PreviewReadiness, i as PreviewAccess, n as EmbeddedAppView, r as EmbeddedAppViewProps, t as EmbeddedApp } from "./embedded-app-view-B_vMTtJn.js";
|
|
3
3
|
export { type ArtifactView, BRAND_PRISM_THEME, type ChangedFile, ChangesPane, type ChangesPaneProps, CodeSurface, type CodeSurfaceProps, CodeView, type CodeViewProps, type DiffStats, DiffStatsBadge, DiffView, type DiffViewProps, type EmbeddedApp, EmbeddedAppView, type EmbeddedAppViewProps, FileBreadcrumb, type FileBreadcrumbProps, GitStatusBadge, PanelHeader, type PanelHeaderProps, type PillTabItem, PillTabs, type PillTabsProps, type PreviewAccess, type PreviewReadiness, PreviewView, type PreviewViewProps, type SandboxArtifact, SandboxArtifactPane, type SandboxArtifactPaneProps, type SandboxArtifactTerminal, buildUnifiedPatch, computeDiffStats, resolveLanguage };
|
package/dist/workbench.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-
|
|
1
|
+
import { a as computeDiffStats, c as BRAND_PRISM_THEME, d as DiffStatsBadge, f as GitStatusBadge, i as buildUnifiedPatch, l as CodeSurface, m as PillTabs, n as SandboxArtifactPane, o as CodeView, p as PanelHeader, r as DiffView, s as FileBreadcrumb, t as ChangesPane, u as resolveLanguage } from "./workbench-Ai6g85oA.js";
|
|
2
2
|
import { n as PreviewView, t as EmbeddedAppView } from "./embedded-app-view-CYb9hevq.js";
|
|
3
3
|
export { BRAND_PRISM_THEME, ChangesPane, CodeSurface, CodeView, DiffStatsBadge, DiffView, EmbeddedAppView, FileBreadcrumb, GitStatusBadge, PanelHeader, PillTabs, PreviewView, SandboxArtifactPane, buildUnifiedPatch, computeDiffStats, resolveLanguage };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/sandbox-ui",
|
|
3
|
-
"version": "0.134.
|
|
3
|
+
"version": "0.134.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Unified UI component library for Tangle Sandbox — primitives, chat, dashboard, terminal, editor, and workspace components",
|
|
6
6
|
"repository": {
|