@tangle-network/sandbox-ui 0.112.0 → 0.113.1
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 +46 -0
- package/dist/{chunk-D5VXCWUG.js → chunk-2Q3KDQX7.js} +370 -156
- package/dist/{chunk-ISTJTUHJ.js → chunk-VEK3EZIW.js} +27 -6
- package/dist/globals.css +38 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +4 -2
- package/dist/styles.css +38 -0
- package/dist/workbench.d.ts +12 -3
- package/dist/workbench.js +1 -1
- package/dist/workspace.d.ts +114 -5
- package/dist/workspace.js +3 -1
- package/package.json +1 -1
|
@@ -7242,7 +7242,7 @@ function CodeView({
|
|
|
7242
7242
|
|
|
7243
7243
|
// src/workbench/diff-view.tsx
|
|
7244
7244
|
import * as React7 from "react";
|
|
7245
|
-
import {
|
|
7245
|
+
import { FileDiff, getSingularPatch } from "@pierre/diffs";
|
|
7246
7246
|
|
|
7247
7247
|
// src/workbench/diff-utils.ts
|
|
7248
7248
|
import { createTwoFilesPatch, diffLines } from "diff";
|
|
@@ -7280,19 +7280,40 @@ var DIFF_OPTIONS = {
|
|
|
7280
7280
|
themeType: "dark",
|
|
7281
7281
|
stickyHeader: true
|
|
7282
7282
|
};
|
|
7283
|
+
var DIFF_CONTAINER_TAG = "diffs-container";
|
|
7283
7284
|
function DiffView({ filename, baseline, current, showFileHeader = true, className }) {
|
|
7284
7285
|
const patch = React7.useMemo(
|
|
7285
7286
|
() => buildUnifiedPatch(filename, baseline, current),
|
|
7286
7287
|
[filename, baseline, current]
|
|
7287
7288
|
);
|
|
7288
|
-
const
|
|
7289
|
-
|
|
7290
|
-
|
|
7291
|
-
|
|
7289
|
+
const hostRef = React7.useRef(null);
|
|
7290
|
+
React7.useLayoutEffect(() => {
|
|
7291
|
+
const host = hostRef.current;
|
|
7292
|
+
if (host == null || !patch) return;
|
|
7293
|
+
const container = document.createElement(DIFF_CONTAINER_TAG);
|
|
7294
|
+
host.appendChild(container);
|
|
7295
|
+
const instance = new FileDiff(
|
|
7296
|
+
showFileHeader ? DIFF_OPTIONS : { ...DIFF_OPTIONS, disableFileHeader: true },
|
|
7297
|
+
void 0,
|
|
7298
|
+
false
|
|
7299
|
+
);
|
|
7300
|
+
instance.hydrate({ fileDiff: getSingularPatch(patch), fileContainer: container });
|
|
7301
|
+
return () => {
|
|
7302
|
+
instance.cleanUp();
|
|
7303
|
+
container.remove();
|
|
7304
|
+
};
|
|
7305
|
+
}, [patch, showFileHeader]);
|
|
7292
7306
|
if (!patch) {
|
|
7293
7307
|
return /* @__PURE__ */ jsx7("div", { className: cn("flex h-full items-center justify-center bg-surface-container", className), children: /* @__PURE__ */ jsx7("p", { className: "text-sm text-muted-foreground", children: "No changes \u2014 baseline and working copy are identical." }) });
|
|
7294
7308
|
}
|
|
7295
|
-
return /* @__PURE__ */ jsx7(
|
|
7309
|
+
return /* @__PURE__ */ jsx7(
|
|
7310
|
+
"div",
|
|
7311
|
+
{
|
|
7312
|
+
ref: hostRef,
|
|
7313
|
+
"data-testid": "diff-view",
|
|
7314
|
+
className: cn("h-full min-h-0 overflow-auto bg-surface-container text-[13px]", className)
|
|
7315
|
+
}
|
|
7316
|
+
);
|
|
7296
7317
|
}
|
|
7297
7318
|
|
|
7298
7319
|
// src/workbench/preview-view.tsx
|
package/dist/globals.css
CHANGED
|
@@ -368,6 +368,9 @@
|
|
|
368
368
|
.top-full {
|
|
369
369
|
top: 100%;
|
|
370
370
|
}
|
|
371
|
+
.-right-0\.5 {
|
|
372
|
+
right: calc(var(--spacing) * -0.5);
|
|
373
|
+
}
|
|
371
374
|
.-right-1 {
|
|
372
375
|
right: calc(var(--spacing) * -1);
|
|
373
376
|
}
|
|
@@ -389,6 +392,9 @@
|
|
|
389
392
|
.right-4 {
|
|
390
393
|
right: calc(var(--spacing) * 4);
|
|
391
394
|
}
|
|
395
|
+
.-bottom-0\.5 {
|
|
396
|
+
bottom: calc(var(--spacing) * -0.5);
|
|
397
|
+
}
|
|
392
398
|
.bottom-0 {
|
|
393
399
|
bottom: 0px;
|
|
394
400
|
}
|
|
@@ -919,6 +925,9 @@
|
|
|
919
925
|
.min-h-0 {
|
|
920
926
|
min-height: 0px;
|
|
921
927
|
}
|
|
928
|
+
.min-h-8 {
|
|
929
|
+
min-height: calc(var(--spacing) * 8);
|
|
930
|
+
}
|
|
922
931
|
.min-h-24 {
|
|
923
932
|
min-height: calc(var(--spacing) * 24);
|
|
924
933
|
}
|
|
@@ -2706,6 +2715,9 @@
|
|
|
2706
2715
|
.px-\[var\(--tool-card-px\)\] {
|
|
2707
2716
|
padding-inline: var(--tool-card-px);
|
|
2708
2717
|
}
|
|
2718
|
+
.py-0 {
|
|
2719
|
+
padding-block: 0px;
|
|
2720
|
+
}
|
|
2709
2721
|
.py-0\.5 {
|
|
2710
2722
|
padding-block: calc(var(--spacing) * 0.5);
|
|
2711
2723
|
}
|
|
@@ -2811,6 +2823,9 @@
|
|
|
2811
2823
|
.pr-2\.5 {
|
|
2812
2824
|
padding-right: calc(var(--spacing) * 2.5);
|
|
2813
2825
|
}
|
|
2826
|
+
.pr-3 {
|
|
2827
|
+
padding-right: calc(var(--spacing) * 3);
|
|
2828
|
+
}
|
|
2814
2829
|
.pr-8 {
|
|
2815
2830
|
padding-right: calc(var(--spacing) * 8);
|
|
2816
2831
|
}
|
|
@@ -2980,6 +2995,10 @@
|
|
|
2980
2995
|
--tw-leading: calc(var(--spacing) * 4);
|
|
2981
2996
|
line-height: calc(var(--spacing) * 4);
|
|
2982
2997
|
}
|
|
2998
|
+
.leading-5 {
|
|
2999
|
+
--tw-leading: calc(var(--spacing) * 5);
|
|
3000
|
+
line-height: calc(var(--spacing) * 5);
|
|
3001
|
+
}
|
|
2983
3002
|
.leading-6 {
|
|
2984
3003
|
--tw-leading: calc(var(--spacing) * 6);
|
|
2985
3004
|
line-height: calc(var(--spacing) * 6);
|
|
@@ -3315,6 +3334,12 @@
|
|
|
3315
3334
|
color: color-mix(in oklab, var(--color-foreground) 70%, transparent);
|
|
3316
3335
|
}
|
|
3317
3336
|
}
|
|
3337
|
+
.text-foreground\/75 {
|
|
3338
|
+
color: color-mix(in srgb, hsl(var(--foreground)) 75%, transparent);
|
|
3339
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
3340
|
+
color: color-mix(in oklab, var(--color-foreground) 75%, transparent);
|
|
3341
|
+
}
|
|
3342
|
+
}
|
|
3318
3343
|
.text-foreground\/80 {
|
|
3319
3344
|
color: color-mix(in srgb, hsl(var(--foreground)) 80%, transparent);
|
|
3320
3345
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -3486,6 +3511,10 @@
|
|
|
3486
3511
|
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
3487
3512
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3488
3513
|
}
|
|
3514
|
+
.shadow-\[0_1px_2px_rgba\(0\,0\,0\,0\.2\)\] {
|
|
3515
|
+
--tw-shadow: 0 1px 2px var(--tw-shadow-color, rgba(0,0,0,0.2));
|
|
3516
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3517
|
+
}
|
|
3489
3518
|
.shadow-\[0_1px_2px_rgba\(15\,23\,42\,0\.04\)\] {
|
|
3490
3519
|
--tw-shadow: 0 1px 2px var(--tw-shadow-color, rgba(15,23,42,0.04));
|
|
3491
3520
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -3739,6 +3768,9 @@
|
|
|
3739
3768
|
border-color: color-mix(in oklab, var(--color-primary) 40%, transparent);
|
|
3740
3769
|
}
|
|
3741
3770
|
}
|
|
3771
|
+
.group-hover\:text-foreground:is(:where(.group):hover *) {
|
|
3772
|
+
color: var(--color-foreground);
|
|
3773
|
+
}
|
|
3742
3774
|
.group-hover\:text-foreground\/40:is(:where(.group):hover *) {
|
|
3743
3775
|
color: color-mix(in srgb, hsl(var(--foreground)) 40%, transparent);
|
|
3744
3776
|
}
|
|
@@ -4345,6 +4377,9 @@
|
|
|
4345
4377
|
background-color: color-mix(in oklab, var(--color-primary) 40%, transparent);
|
|
4346
4378
|
}
|
|
4347
4379
|
}
|
|
4380
|
+
.focus-visible\:bg-surface-container:focus-visible {
|
|
4381
|
+
background-color: var(--color-surface-container);
|
|
4382
|
+
}
|
|
4348
4383
|
.focus-visible\:bg-transparent:focus-visible {
|
|
4349
4384
|
background-color: transparent;
|
|
4350
4385
|
}
|
|
@@ -4714,6 +4749,9 @@
|
|
|
4714
4749
|
.lg\:items-center {
|
|
4715
4750
|
align-items: center;
|
|
4716
4751
|
}
|
|
4752
|
+
.lg\:p-0 {
|
|
4753
|
+
padding: 0px;
|
|
4754
|
+
}
|
|
4717
4755
|
.lg\:p-4 {
|
|
4718
4756
|
padding: calc(var(--spacing) * 4);
|
|
4719
4757
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { ArtifactPane, ArtifactPaneProps, Avatar, AvatarFallback, AvatarImage, Badge, BadgeProps, Button, ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CodeBlock, CodeBlockProps, CopyButton, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropZone, DropZoneProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateProps, FilterField, FilterFieldProps, InlineCode, InlineCodeProps, Input, InputProps, Label, Metric, MetricProps, MetricStrip, MetricStripProps, Progress, SegmentedControl, SegmentedControlOption, SegmentedControlProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SidebarDropZone, SidebarDropZoneProps, Skeleton, SkeletonCard, SkeletonTable, StatCard, StatCardProps, StatusPill, StatusPillProps, StatusTone, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TerminalDisplay, TerminalCursor as TerminalDisplayCursor, TerminalInput as TerminalDisplayInput, TerminalLine as TerminalDisplayLine, Textarea, TextareaProps, ThemeToggle, Toast, ToastContainer, ToastProvider, Toolbar, ToolbarProps, UploadFile, UploadProgress, UploadProgressProps, badgeVariants, buttonVariants, useTheme, useToast } from '@tangle-network/ui/primitives';
|
|
2
2
|
export { L as Logo, a as LogoProps, T as TangleKnot } from './logo-CaIvk3J1.js';
|
|
3
3
|
export { CodeBlock as CodeBlockDisplay, Markdown, MarkdownProps } from '@tangle-network/ui/markdown';
|
|
4
|
-
export { AgentWorkbench, ApprovalConfidenceStat, ApprovalItem, ApprovalQueue, ApprovalQueueProps, AuditCheck, AuditResults, AuditResultsProps, BannerType, CalendarEvent, CalendarView, CalendarViewProps, ContextBadge, DirectoryPane, DirectoryPaneProps, FormAudit, RuntimePane, RuntimePaneProps, SESSION_CREATED_EVENT, SandboxWorkbench, SandboxWorkbenchArtifact, SandboxWorkbenchCustomArtifact, SandboxWorkbenchFileArtifact, SandboxWorkbenchLayoutOptions, SandboxWorkbenchMarkdownArtifact, SandboxWorkbenchOpenUIArtifact, SandboxWorkbenchProps, SandboxWorkbenchSessionProps, SessionActivityMonitor, SessionActivityMonitorProps, SessionCreatedDetail, SessionOptimisticController, SessionSidebar, SessionSidebarBadge, SessionSidebarFilter, SessionSidebarItem, SessionSidebarLink, SessionSidebarProps, ShellShouldRevalidateArgs, ShellShouldRevalidateOptions, StatusBanner, StatusBannerProps, StatusBar, StatusBarProps, TaskBoard, TaskBoardColumn, TaskBoardItem, TaskBoardProps, TerminalLine, TerminalPanel, TerminalProps, UseOptimisticSessionItemsOptions, WorkspaceLayout, WorkspaceLayoutProps, WorkspacePaneHeader, WorkspacePaneHeaderProps, createShellShouldRevalidate, dispatchSessionCreated, shellShouldRevalidate, useOptimisticSessionItems } from './workspace.js';
|
|
4
|
+
export { AgentWorkbench, ApprovalConfidenceStat, ApprovalItem, ApprovalQueue, ApprovalQueueProps, AuditCheck, AuditResults, AuditResultsProps, BannerType, CalendarEvent, CalendarView, CalendarViewProps, ContextBadge, DirectoryPane, DirectoryPaneProps, FormAudit, RuntimePane, RuntimePaneProps, SESSION_CREATED_EVENT, SandboxWorkbench, SandboxWorkbenchArtifact, SandboxWorkbenchCustomArtifact, SandboxWorkbenchFileArtifact, SandboxWorkbenchLayoutOptions, SandboxWorkbenchMarkdownArtifact, SandboxWorkbenchOpenUIArtifact, SandboxWorkbenchProps, SandboxWorkbenchSessionProps, SessionActivityMonitor, SessionActivityMonitorProps, SessionCreatedDetail, SessionOptimisticController, SessionSidebar, SessionSidebarBadge, SessionSidebarFilter, SessionSidebarGroupBy, SessionSidebarItem, SessionSidebarLink, SessionSidebarProps, SessionSidebarVariant, ShellShouldRevalidateArgs, ShellShouldRevalidateOptions, StatusBanner, StatusBannerProps, StatusBar, StatusBarProps, TaskBoard, TaskBoardColumn, TaskBoardItem, TaskBoardProps, TerminalLine, TerminalPanel, TerminalProps, UseOptimisticSessionItemsOptions, WorkspaceLayout, WorkspaceLayoutProps, WorkspacePaneHeader, WorkspacePaneHeaderProps, createShellShouldRevalidate, dispatchSessionCreated, formatRelativeAge, shellShouldRevalidate, useOptimisticSessionItems } from './workspace.js';
|
|
5
5
|
export { ArtifactView, BRAND_PRISM_THEME, ChangedFile, ChangesPane, ChangesPaneProps, CodeSurface, CodeSurfaceProps, CodeView, CodeViewProps, DiffStats, DiffStatsBadge, DiffView, DiffViewProps, FileBreadcrumb, FileBreadcrumbProps, GitStatusBadge, PanelHeader, PanelHeaderProps, PillTabItem, PillTabs, PillTabsProps, PreviewView, PreviewViewProps, SandboxArtifact, SandboxArtifactPane, SandboxArtifactPaneProps, SandboxArtifactTerminal, buildUnifiedPatch, computeDiffStats, resolveLanguage } from './workbench.js';
|
|
6
6
|
export { OpenUIAction, OpenUIActionsNode, OpenUIArtifactRenderer, OpenUIArtifactRendererProps, OpenUIBadgeNode, OpenUICardNode, OpenUICodeNode, OpenUIComponentNode, OpenUIGridNode, OpenUIHeadingNode, OpenUIKeyValueNode, OpenUIMarkdownNode, OpenUIPrimitive, OpenUISeparatorNode, OpenUIStackNode, OpenUIStatNode, OpenUITableNode, OpenUITextNode } from '@tangle-network/ui/openui';
|
|
7
7
|
export { AgentTimeline, AgentTimelineArtifactItem, AgentTimelineCustomItem, AgentTimelineItem, AgentTimelineMessageItem, AgentTimelineProps, AgentTimelineStatusItem, AgentTimelineTone, AgentTimelineToolGroupItem, AgentTimelineToolItem, ChatContainer, ChatContainerProps, ChatMessage, ChatMessageProps, MessageList, MessageListProps, MessageRole, ThinkingIndicator, ThinkingIndicatorProps, UserMessage, UserMessageProps } from '@tangle-network/ui/chat';
|
|
@@ -25,6 +25,7 @@ export { AgentBranding, CustomToolRenderer, DisplayVariant, FinalTextPart, Group
|
|
|
25
25
|
export { Session } from './types.js';
|
|
26
26
|
export { TOOL_CATEGORY_ICONS, cn, copyText, formatBytes, formatDuration, formatUptime, getToolCategory, getToolDisplayMetadata, getToolErrorText, timeAgo, truncateText } from '@tangle-network/ui/utils';
|
|
27
27
|
import 'react';
|
|
28
|
+
import 'lucide-react';
|
|
28
29
|
import '@radix-ui/react-dropdown-menu';
|
|
29
30
|
import '@tanstack/react-query';
|
|
30
31
|
import '@tangle-network/ui/sdk-hooks';
|
package/dist/index.js
CHANGED
|
@@ -130,9 +130,10 @@ import {
|
|
|
130
130
|
WorkspacePaneHeader,
|
|
131
131
|
createShellShouldRevalidate,
|
|
132
132
|
dispatchSessionCreated,
|
|
133
|
+
formatRelativeAge,
|
|
133
134
|
shellShouldRevalidate,
|
|
134
135
|
useOptimisticSessionItems
|
|
135
|
-
} from "./chunk-
|
|
136
|
+
} from "./chunk-2Q3KDQX7.js";
|
|
136
137
|
import {
|
|
137
138
|
BRAND_PRISM_THEME,
|
|
138
139
|
ChangesPane,
|
|
@@ -149,7 +150,7 @@ import {
|
|
|
149
150
|
buildUnifiedPatch,
|
|
150
151
|
computeDiffStats,
|
|
151
152
|
resolveLanguage
|
|
152
|
-
} from "./chunk-
|
|
153
|
+
} from "./chunk-VEK3EZIW.js";
|
|
153
154
|
import {
|
|
154
155
|
FileArtifactPane,
|
|
155
156
|
FilePreview,
|
|
@@ -608,6 +609,7 @@ export {
|
|
|
608
609
|
formatBytes,
|
|
609
610
|
formatDuration,
|
|
610
611
|
formatPrice,
|
|
612
|
+
formatRelativeAge,
|
|
611
613
|
formatUptime,
|
|
612
614
|
getActiveSession,
|
|
613
615
|
getAllActiveSessions,
|
package/dist/styles.css
CHANGED
|
@@ -368,6 +368,9 @@
|
|
|
368
368
|
.top-full {
|
|
369
369
|
top: 100%;
|
|
370
370
|
}
|
|
371
|
+
.-right-0\.5 {
|
|
372
|
+
right: calc(var(--spacing) * -0.5);
|
|
373
|
+
}
|
|
371
374
|
.-right-1 {
|
|
372
375
|
right: calc(var(--spacing) * -1);
|
|
373
376
|
}
|
|
@@ -389,6 +392,9 @@
|
|
|
389
392
|
.right-4 {
|
|
390
393
|
right: calc(var(--spacing) * 4);
|
|
391
394
|
}
|
|
395
|
+
.-bottom-0\.5 {
|
|
396
|
+
bottom: calc(var(--spacing) * -0.5);
|
|
397
|
+
}
|
|
392
398
|
.bottom-0 {
|
|
393
399
|
bottom: 0px;
|
|
394
400
|
}
|
|
@@ -919,6 +925,9 @@
|
|
|
919
925
|
.min-h-0 {
|
|
920
926
|
min-height: 0px;
|
|
921
927
|
}
|
|
928
|
+
.min-h-8 {
|
|
929
|
+
min-height: calc(var(--spacing) * 8);
|
|
930
|
+
}
|
|
922
931
|
.min-h-24 {
|
|
923
932
|
min-height: calc(var(--spacing) * 24);
|
|
924
933
|
}
|
|
@@ -2706,6 +2715,9 @@
|
|
|
2706
2715
|
.px-\[var\(--tool-card-px\)\] {
|
|
2707
2716
|
padding-inline: var(--tool-card-px);
|
|
2708
2717
|
}
|
|
2718
|
+
.py-0 {
|
|
2719
|
+
padding-block: 0px;
|
|
2720
|
+
}
|
|
2709
2721
|
.py-0\.5 {
|
|
2710
2722
|
padding-block: calc(var(--spacing) * 0.5);
|
|
2711
2723
|
}
|
|
@@ -2811,6 +2823,9 @@
|
|
|
2811
2823
|
.pr-2\.5 {
|
|
2812
2824
|
padding-right: calc(var(--spacing) * 2.5);
|
|
2813
2825
|
}
|
|
2826
|
+
.pr-3 {
|
|
2827
|
+
padding-right: calc(var(--spacing) * 3);
|
|
2828
|
+
}
|
|
2814
2829
|
.pr-8 {
|
|
2815
2830
|
padding-right: calc(var(--spacing) * 8);
|
|
2816
2831
|
}
|
|
@@ -2980,6 +2995,10 @@
|
|
|
2980
2995
|
--tw-leading: calc(var(--spacing) * 4);
|
|
2981
2996
|
line-height: calc(var(--spacing) * 4);
|
|
2982
2997
|
}
|
|
2998
|
+
.leading-5 {
|
|
2999
|
+
--tw-leading: calc(var(--spacing) * 5);
|
|
3000
|
+
line-height: calc(var(--spacing) * 5);
|
|
3001
|
+
}
|
|
2983
3002
|
.leading-6 {
|
|
2984
3003
|
--tw-leading: calc(var(--spacing) * 6);
|
|
2985
3004
|
line-height: calc(var(--spacing) * 6);
|
|
@@ -3315,6 +3334,12 @@
|
|
|
3315
3334
|
color: color-mix(in oklab, var(--color-foreground) 70%, transparent);
|
|
3316
3335
|
}
|
|
3317
3336
|
}
|
|
3337
|
+
.text-foreground\/75 {
|
|
3338
|
+
color: color-mix(in srgb, hsl(var(--foreground)) 75%, transparent);
|
|
3339
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
3340
|
+
color: color-mix(in oklab, var(--color-foreground) 75%, transparent);
|
|
3341
|
+
}
|
|
3342
|
+
}
|
|
3318
3343
|
.text-foreground\/80 {
|
|
3319
3344
|
color: color-mix(in srgb, hsl(var(--foreground)) 80%, transparent);
|
|
3320
3345
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -3486,6 +3511,10 @@
|
|
|
3486
3511
|
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
3487
3512
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3488
3513
|
}
|
|
3514
|
+
.shadow-\[0_1px_2px_rgba\(0\,0\,0\,0\.2\)\] {
|
|
3515
|
+
--tw-shadow: 0 1px 2px var(--tw-shadow-color, rgba(0,0,0,0.2));
|
|
3516
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3517
|
+
}
|
|
3489
3518
|
.shadow-\[0_1px_2px_rgba\(15\,23\,42\,0\.04\)\] {
|
|
3490
3519
|
--tw-shadow: 0 1px 2px var(--tw-shadow-color, rgba(15,23,42,0.04));
|
|
3491
3520
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -3739,6 +3768,9 @@
|
|
|
3739
3768
|
border-color: color-mix(in oklab, var(--color-primary) 40%, transparent);
|
|
3740
3769
|
}
|
|
3741
3770
|
}
|
|
3771
|
+
.group-hover\:text-foreground:is(:where(.group):hover *) {
|
|
3772
|
+
color: var(--color-foreground);
|
|
3773
|
+
}
|
|
3742
3774
|
.group-hover\:text-foreground\/40:is(:where(.group):hover *) {
|
|
3743
3775
|
color: color-mix(in srgb, hsl(var(--foreground)) 40%, transparent);
|
|
3744
3776
|
}
|
|
@@ -4345,6 +4377,9 @@
|
|
|
4345
4377
|
background-color: color-mix(in oklab, var(--color-primary) 40%, transparent);
|
|
4346
4378
|
}
|
|
4347
4379
|
}
|
|
4380
|
+
.focus-visible\:bg-surface-container:focus-visible {
|
|
4381
|
+
background-color: var(--color-surface-container);
|
|
4382
|
+
}
|
|
4348
4383
|
.focus-visible\:bg-transparent:focus-visible {
|
|
4349
4384
|
background-color: transparent;
|
|
4350
4385
|
}
|
|
@@ -4714,6 +4749,9 @@
|
|
|
4714
4749
|
.lg\:items-center {
|
|
4715
4750
|
align-items: center;
|
|
4716
4751
|
}
|
|
4752
|
+
.lg\:p-0 {
|
|
4753
|
+
padding: 0px;
|
|
4754
|
+
}
|
|
4717
4755
|
.lg\:p-4 {
|
|
4718
4756
|
padding: calc(var(--spacing) * 4);
|
|
4719
4757
|
}
|
package/dist/workbench.d.ts
CHANGED
|
@@ -252,9 +252,18 @@ interface DiffViewProps {
|
|
|
252
252
|
className?: string;
|
|
253
253
|
}
|
|
254
254
|
/**
|
|
255
|
-
* Word-level unified diff via `@pierre/diffs`' `
|
|
256
|
-
* with jsdiff's `createTwoFilesPatch` (baseline → current); the
|
|
257
|
-
* hunking, intra-line word diffing, gutters, and
|
|
255
|
+
* Word-level unified diff via `@pierre/diffs`' core `FileDiff` renderer. The
|
|
256
|
+
* patch is built with jsdiff's `createTwoFilesPatch` (baseline → current); the
|
|
257
|
+
* renderer owns hunking, intra-line word diffing, gutters, and highlighting.
|
|
258
|
+
*
|
|
259
|
+
* The renderer is driven from an effect on a host element this component
|
|
260
|
+
* creates for every mount, not through the library's React wrapper. The
|
|
261
|
+
* wrapper hydrates the element React hands it and treats an existing shadow
|
|
262
|
+
* `<pre>` as prerendered content; React StrictMode attaches, detaches, and
|
|
263
|
+
* re-attaches that element on mount, so the second hydrate finds the first
|
|
264
|
+
* mount's `<pre>` and renders nothing. A fresh element per effect run has no
|
|
265
|
+
* such history, and the cleanup removes it (the instance is not
|
|
266
|
+
* container-managed).
|
|
258
267
|
*/
|
|
259
268
|
declare function DiffView({ filename, baseline, current, showFileHeader, className }: DiffViewProps): React.JSX.Element;
|
|
260
269
|
|
package/dist/workbench.js
CHANGED
package/dist/workspace.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { ReactNode, HTMLAttributes, Ref } from 'react';
|
|
|
3
3
|
export { ArtifactPane, ArtifactPaneProps } from '@tangle-network/ui/primitives';
|
|
4
4
|
import { FileNode, FileTreeVisibilityOptions, FileTabData } from '@tangle-network/ui/files';
|
|
5
5
|
import { SessionProjectKey, ActiveSessionStatus, ActiveSessionRecord } from '@tangle-network/ui/stores';
|
|
6
|
+
import { LucideIcon } from 'lucide-react';
|
|
6
7
|
import { ChatContainerProps } from '@tangle-network/ui/chat';
|
|
7
8
|
import { OpenUIComponentNode, OpenUIAction } from '@tangle-network/ui/openui';
|
|
8
9
|
|
|
@@ -63,9 +64,42 @@ interface WorkspaceLayoutProps {
|
|
|
63
64
|
rightLabel?: string;
|
|
64
65
|
/** Accessible label for the bottom panel */
|
|
65
66
|
bottomLabel?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Controlled open state for the left pane. Omit to keep the pane
|
|
69
|
+
* uncontrolled (`defaultLeftOpen`, persisted under `persistenceKey`).
|
|
70
|
+
*/
|
|
71
|
+
leftOpen?: boolean;
|
|
72
|
+
/** Called with the next state whenever the layout would open or close the left pane. */
|
|
73
|
+
onLeftOpenChange?: (open: boolean) => void;
|
|
74
|
+
/** Controlled open state for the right pane; see `leftOpen`. */
|
|
75
|
+
rightOpen?: boolean;
|
|
76
|
+
/** Called with the next state whenever the layout would open or close the right pane. */
|
|
77
|
+
onRightOpenChange?: (open: boolean) => void;
|
|
78
|
+
/**
|
|
79
|
+
* ⌘B / Ctrl+B toggles the left pane and ⌘E / Ctrl+E the right pane. A
|
|
80
|
+
* chord with Alt or Shift, or one fired while an input, textarea, select, or
|
|
81
|
+
* contentEditable has focus, is left to the page. Off by default.
|
|
82
|
+
*/
|
|
83
|
+
keyboardShortcuts?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Replaces the default "Open left panel" button at the top-left of the
|
|
86
|
+
* center pane while a left pane is provided but closed.
|
|
87
|
+
*/
|
|
88
|
+
leftCollapsedControl?: ReactNode;
|
|
89
|
+
/** Extra classes for the left pane's scrolling content wrapper, e.g. `py-0` so a rail owns its own gutter. */
|
|
90
|
+
leftContentClassName?: string;
|
|
91
|
+
/** Extra classes for the right pane's scrolling content wrapper. */
|
|
92
|
+
rightContentClassName?: string;
|
|
93
|
+
/**
|
|
94
|
+
* `always` (default) keeps the center header row whenever a side or bottom
|
|
95
|
+
* pane exists, so pane headers line up across the shell even while the row
|
|
96
|
+
* is empty. `auto` renders the row only while it has content: a
|
|
97
|
+
* `centerHeader`, or an open-pane toggle for a closed pane.
|
|
98
|
+
*/
|
|
99
|
+
centerHeaderVisibility?: "always" | "auto";
|
|
66
100
|
className?: string;
|
|
67
101
|
}
|
|
68
|
-
declare function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter, right, rightHeader, bottom, bottomHeader, defaultLeftOpen, defaultRightOpen, defaultBottomOpen, defaultLeftWidth, defaultRightWidth, defaultBottomHeight, minLeftWidth, maxLeftWidth, minRightWidth, maxRightWidth, minBottomHeight, maxBottomHeight, persistenceKey, resizable, theme, density, leftLabel, rightLabel, bottomLabel, className, }: WorkspaceLayoutProps): React$1.JSX.Element;
|
|
102
|
+
declare function WorkspaceLayout({ left, leftHeader, center, centerHeader, centerFooter, right, rightHeader, bottom, bottomHeader, defaultLeftOpen, defaultRightOpen, defaultBottomOpen, defaultLeftWidth, defaultRightWidth, defaultBottomHeight, minLeftWidth, maxLeftWidth, minRightWidth, maxRightWidth, minBottomHeight, maxBottomHeight, persistenceKey, resizable, theme, density, leftLabel, rightLabel, bottomLabel, leftOpen: leftOpenProp, onLeftOpenChange, rightOpen: rightOpenProp, onRightOpenChange, keyboardShortcuts, leftCollapsedControl, leftContentClassName, rightContentClassName, centerHeaderVisibility, className, }: WorkspaceLayoutProps): React$1.JSX.Element;
|
|
69
103
|
|
|
70
104
|
type WorkspacePaneHeaderProps = HTMLAttributes<HTMLDivElement>;
|
|
71
105
|
/**
|
|
@@ -243,6 +277,17 @@ interface SessionSidebarItem {
|
|
|
243
277
|
category?: string;
|
|
244
278
|
isPinned?: boolean;
|
|
245
279
|
badges?: SessionSidebarBadge[];
|
|
280
|
+
/**
|
|
281
|
+
* Glyph rendered in a 16×20 slot before the title — a harness mark, for
|
|
282
|
+
* example. While an icon is present the status dot becomes a 6px badge on
|
|
283
|
+
* the icon's corner instead of a leading dot.
|
|
284
|
+
*/
|
|
285
|
+
icon?: ReactNode;
|
|
286
|
+
/**
|
|
287
|
+
* Muted 12px line under the title, e.g. `harness · age`. When omitted and
|
|
288
|
+
* `showUpdatedAt` is set, the row renders `updatedAt` as a relative age here.
|
|
289
|
+
*/
|
|
290
|
+
meta?: ReactNode;
|
|
246
291
|
}
|
|
247
292
|
interface SessionSidebarBadge {
|
|
248
293
|
id: string;
|
|
@@ -263,6 +308,8 @@ interface SessionSidebarFilter {
|
|
|
263
308
|
isActive: boolean;
|
|
264
309
|
}) => boolean;
|
|
265
310
|
}
|
|
311
|
+
type SessionSidebarVariant = "default" | "quiet";
|
|
312
|
+
type SessionSidebarGroupBy = "none" | "status";
|
|
266
313
|
interface SessionSidebarProps {
|
|
267
314
|
title: string;
|
|
268
315
|
subtitle?: string;
|
|
@@ -304,8 +351,45 @@ interface SessionSidebarProps {
|
|
|
304
351
|
* handlers. Only populated when `optimistic` is enabled.
|
|
305
352
|
*/
|
|
306
353
|
optimisticRef?: Ref<SessionOptimisticController | null>;
|
|
354
|
+
/**
|
|
355
|
+
* `default` is the branded panel: icon-in-a-box header, running-count chip,
|
|
356
|
+
* bordered search field, accent-filled selected row. `quiet` is the rail of a
|
|
357
|
+
* three-pane shell: the header is one row (a "new" text button plus the
|
|
358
|
+
* optional `onCollapse` button), rows are `rounded-lg` with a surface fill
|
|
359
|
+
* for hover and selection, only non-neutral badges render, and search is a
|
|
360
|
+
* borderless field.
|
|
361
|
+
*/
|
|
362
|
+
variant?: SessionSidebarVariant;
|
|
363
|
+
/**
|
|
364
|
+
* `status` partitions the list into "Needs input" (`attention-needed`),
|
|
365
|
+
* "Failed" (`error`), "Working" (`running`), and "Done" (everything else),
|
|
366
|
+
* in that order. Group labels render only while more than one group has
|
|
367
|
+
* items. Within a group the sort is unchanged: pinned first, then activity.
|
|
368
|
+
* Status comes from the active-sessions store record when one exists for the
|
|
369
|
+
* id, else from `item.status`.
|
|
370
|
+
*/
|
|
371
|
+
groupBy?: SessionSidebarGroupBy;
|
|
372
|
+
/** Render `updatedAt` as a relative age under the title for rows with no `meta`. */
|
|
373
|
+
showUpdatedAt?: boolean;
|
|
374
|
+
/** Renders a "Hide chats" button in the `quiet` header. */
|
|
375
|
+
onCollapse?: () => void;
|
|
376
|
+
/**
|
|
377
|
+
* Fill the parent instead of carrying the sidebar's own width: no inline
|
|
378
|
+
* width, `h-full w-full`. Use when a layout owns the pane size. Ignored while
|
|
379
|
+
* `resizable`, which needs the inline width it drags.
|
|
380
|
+
*/
|
|
381
|
+
fill?: boolean;
|
|
307
382
|
}
|
|
308
|
-
declare function SessionSidebar({ title, subtitle, projectId, items, currentItemId, createLabel, onCreate, onSelectItem, onSelectLink, links, className, emptyMessage, searchPlaceholder, enableSearch, activityMonitor, filters, defaultFilterId, resizable, defaultWidth, minWidth, maxWidth, onWidthChange, renderItemActions, optimistic, optimisticRef, }: SessionSidebarProps): React$1.JSX.Element;
|
|
383
|
+
declare function SessionSidebar({ title, subtitle, projectId, items, currentItemId, createLabel, onCreate, onSelectItem, onSelectLink, links, className, emptyMessage, searchPlaceholder, enableSearch, activityMonitor, filters, defaultFilterId, resizable, defaultWidth, minWidth, maxWidth, onWidthChange, renderItemActions, optimistic, optimisticRef, variant, groupBy, showUpdatedAt, onCollapse, fill, }: SessionSidebarProps): React$1.JSX.Element;
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Compact age for a session rail: `now`, `5m`, `3h`, `2d`, `3w`, `4mo`, `1y`.
|
|
387
|
+
* Unlike `timeAgo` from `@tangle-network/ui/utils` it accepts any date input,
|
|
388
|
+
* rolls past hours into days and beyond, and carries no "ago" suffix, so it
|
|
389
|
+
* fits a "codex · 2h" meta line. A future or unparseable date reads `now` /
|
|
390
|
+
* empty rather than a negative count. `now` is injectable for deterministic tests.
|
|
391
|
+
*/
|
|
392
|
+
declare function formatRelativeAge(date: string | number | Date, now?: number): string;
|
|
309
393
|
|
|
310
394
|
/**
|
|
311
395
|
* Snappy in-app navigation: a shared `shouldRevalidate` rule for the agent-app
|
|
@@ -402,6 +486,10 @@ interface SandboxWorkbenchArtifactBase {
|
|
|
402
486
|
headerActions?: ReactNode;
|
|
403
487
|
toolbar?: ReactNode;
|
|
404
488
|
footer?: ReactNode;
|
|
489
|
+
/** Tab glyph. Defaults per `kind`; a `custom` artifact usually names its own. */
|
|
490
|
+
icon?: LucideIcon;
|
|
491
|
+
/** A pinned artifact's tab sorts before the rest and carries no close button. */
|
|
492
|
+
pinned?: boolean;
|
|
405
493
|
}
|
|
406
494
|
interface SandboxWorkbenchFileArtifact extends SandboxWorkbenchArtifactBase {
|
|
407
495
|
kind: "file";
|
|
@@ -447,7 +535,7 @@ interface SandboxWorkbenchSessionProps extends Omit<ChatContainerProps, "classNa
|
|
|
447
535
|
renderUserMessageActions?: ChatContainerProps["renderUserMessageActions"];
|
|
448
536
|
renderToolActions?: ChatContainerProps["renderToolActions"];
|
|
449
537
|
}
|
|
450
|
-
interface SandboxWorkbenchLayoutOptions extends Pick<WorkspaceLayoutProps, "bottomHeader" | "defaultBottomOpen" | "defaultLeftOpen" | "defaultLeftWidth" | "defaultRightOpen" | "defaultRightWidth" | "density" | "maxLeftWidth" | "maxRightWidth" | "minLeftWidth" | "minRightWidth" | "persistenceKey" | "resizable" | "theme"> {
|
|
538
|
+
interface SandboxWorkbenchLayoutOptions extends Pick<WorkspaceLayoutProps, "bottomHeader" | "defaultBottomOpen" | "defaultLeftOpen" | "defaultLeftWidth" | "defaultRightOpen" | "defaultRightWidth" | "density" | "keyboardShortcuts" | "leftCollapsedControl" | "leftOpen" | "maxLeftWidth" | "maxRightWidth" | "minLeftWidth" | "minRightWidth" | "onLeftOpenChange" | "onRightOpenChange" | "persistenceKey" | "resizable" | "rightOpen" | "theme"> {
|
|
451
539
|
directoryPlacement?: SandboxWorkbenchPlacement;
|
|
452
540
|
artifactPlacement?: SandboxWorkbenchPlacement;
|
|
453
541
|
runtimePlacement?: SandboxWorkbenchPlacement;
|
|
@@ -456,6 +544,27 @@ interface SandboxWorkbenchProps {
|
|
|
456
544
|
title?: ReactNode;
|
|
457
545
|
subtitle?: ReactNode;
|
|
458
546
|
status?: ReactNode;
|
|
547
|
+
/**
|
|
548
|
+
* Header above the transcript. `undefined` keeps the branded session card
|
|
549
|
+
* (`Tangle Sandbox` / `title` / `status`), a node replaces it, and `null`
|
|
550
|
+
* removes it: the transcript then renders directly on `bg-surface` with no
|
|
551
|
+
* eyebrow/title frame around it, and the shell's center header row appears
|
|
552
|
+
* only while it holds an open-pane toggle.
|
|
553
|
+
*/
|
|
554
|
+
centerHeader?: ReactNode | null;
|
|
555
|
+
/**
|
|
556
|
+
* Composer rendered under the transcript on the panel background, inside the
|
|
557
|
+
* transcript's own `max-w-3xl` column. `session.composerControls`, when
|
|
558
|
+
* also given, sits above it as before.
|
|
559
|
+
*/
|
|
560
|
+
composer?: ReactNode;
|
|
561
|
+
/**
|
|
562
|
+
* First section of the left region, ahead of the directory pane — a
|
|
563
|
+
* `SessionSidebar` for a chats rail. A rail that is the only left section
|
|
564
|
+
* fills the pane: no region header, no gutter. Give it `fill` and
|
|
565
|
+
* `className="border-r-0"` so the layout's own divider is the only one.
|
|
566
|
+
*/
|
|
567
|
+
rail?: ReactNode;
|
|
459
568
|
directory?: DirectoryPaneProps;
|
|
460
569
|
session: SandboxWorkbenchSessionProps;
|
|
461
570
|
artifacts?: SandboxWorkbenchArtifact[];
|
|
@@ -472,7 +581,7 @@ interface SandboxWorkbenchProps {
|
|
|
472
581
|
* into a complete session surface: directory, agent timeline, artifacts, and
|
|
473
582
|
* runtime in one reusable shell.
|
|
474
583
|
*/
|
|
475
|
-
declare function SandboxWorkbench({ title, subtitle, status, directory, session, artifacts, activeArtifactId, onArtifactChange, onArtifactClose, runtime, layout, emptyArtifactState, className, }: SandboxWorkbenchProps): React$1.JSX.Element;
|
|
584
|
+
declare function SandboxWorkbench({ title, subtitle, status, centerHeader: centerHeaderProp, composer, rail, directory, session, artifacts: artifactsProp, activeArtifactId, onArtifactChange, onArtifactClose, runtime, layout, emptyArtifactState, className, }: SandboxWorkbenchProps): React$1.JSX.Element;
|
|
476
585
|
declare function AgentWorkbench(props: SandboxWorkbenchProps): React$1.JSX.Element;
|
|
477
586
|
|
|
478
587
|
/**
|
|
@@ -639,4 +748,4 @@ interface ApprovalQueueProps {
|
|
|
639
748
|
*/
|
|
640
749
|
declare function ApprovalQueue({ items, className, onApprove, onReject, renderItemDetail, renderTypeBadge, renderStats, canResolve, header, emptyState, showResolved: controlledShowResolved, }: ApprovalQueueProps): React$1.JSX.Element;
|
|
641
750
|
|
|
642
|
-
export { AgentWorkbench, type ApprovalConfidenceStat, type ApprovalItem, ApprovalQueue, type ApprovalQueueProps, type AuditCheck, AuditResults, type AuditResultsProps, type BannerType, type CalendarEvent, CalendarView, type CalendarViewProps, type ContextBadge, DirectoryPane, type DirectoryPaneProps, type FormAudit, RuntimePane, type RuntimePaneProps, SESSION_CREATED_EVENT, SandboxWorkbench, type SandboxWorkbenchArtifact, type SandboxWorkbenchCustomArtifact, type SandboxWorkbenchFileArtifact, type SandboxWorkbenchLayoutOptions, type SandboxWorkbenchMarkdownArtifact, type SandboxWorkbenchOpenUIArtifact, type SandboxWorkbenchProps, type SandboxWorkbenchSessionProps, SessionActivityMonitor, type SessionActivityMonitorProps, type SessionCreatedDetail, type SessionOptimisticController, SessionSidebar, type SessionSidebarBadge, type SessionSidebarFilter, type SessionSidebarItem, type SessionSidebarLink, type SessionSidebarProps, type ShellShouldRevalidateArgs, type ShellShouldRevalidateOptions, StatusBanner, type StatusBannerProps, StatusBar, type StatusBarProps, TaskBoard, type TaskBoardColumn, type TaskBoardItem, type TaskBoardProps, type TerminalLine, TerminalPanel, type TerminalProps, type UseOptimisticSessionItemsOptions, WorkspaceLayout, type WorkspaceLayoutProps, WorkspacePaneHeader, type WorkspacePaneHeaderProps, createShellShouldRevalidate, dispatchSessionCreated, shellShouldRevalidate, useOptimisticSessionItems };
|
|
751
|
+
export { AgentWorkbench, type ApprovalConfidenceStat, type ApprovalItem, ApprovalQueue, type ApprovalQueueProps, type AuditCheck, AuditResults, type AuditResultsProps, type BannerType, type CalendarEvent, CalendarView, type CalendarViewProps, type ContextBadge, DirectoryPane, type DirectoryPaneProps, type FormAudit, RuntimePane, type RuntimePaneProps, SESSION_CREATED_EVENT, SandboxWorkbench, type SandboxWorkbenchArtifact, type SandboxWorkbenchCustomArtifact, type SandboxWorkbenchFileArtifact, type SandboxWorkbenchLayoutOptions, type SandboxWorkbenchMarkdownArtifact, type SandboxWorkbenchOpenUIArtifact, type SandboxWorkbenchProps, type SandboxWorkbenchSessionProps, SessionActivityMonitor, type SessionActivityMonitorProps, type SessionCreatedDetail, type SessionOptimisticController, SessionSidebar, type SessionSidebarBadge, type SessionSidebarFilter, type SessionSidebarGroupBy, type SessionSidebarItem, type SessionSidebarLink, type SessionSidebarProps, type SessionSidebarVariant, type ShellShouldRevalidateArgs, type ShellShouldRevalidateOptions, StatusBanner, type StatusBannerProps, StatusBar, type StatusBarProps, TaskBoard, type TaskBoardColumn, type TaskBoardItem, type TaskBoardProps, type TerminalLine, TerminalPanel, type TerminalProps, type UseOptimisticSessionItemsOptions, WorkspaceLayout, type WorkspaceLayoutProps, WorkspacePaneHeader, type WorkspacePaneHeaderProps, createShellShouldRevalidate, dispatchSessionCreated, formatRelativeAge, shellShouldRevalidate, useOptimisticSessionItems };
|
package/dist/workspace.js
CHANGED
|
@@ -18,9 +18,10 @@ import {
|
|
|
18
18
|
WorkspacePaneHeader,
|
|
19
19
|
createShellShouldRevalidate,
|
|
20
20
|
dispatchSessionCreated,
|
|
21
|
+
formatRelativeAge,
|
|
21
22
|
shellShouldRevalidate,
|
|
22
23
|
useOptimisticSessionItems
|
|
23
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-2Q3KDQX7.js";
|
|
24
25
|
import "./chunk-BGVEHENC.js";
|
|
25
26
|
import "./chunk-EI44GEQ5.js";
|
|
26
27
|
import "./chunk-CZ7CSFO4.js";
|
|
@@ -44,6 +45,7 @@ export {
|
|
|
44
45
|
WorkspacePaneHeader,
|
|
45
46
|
createShellShouldRevalidate,
|
|
46
47
|
dispatchSessionCreated,
|
|
48
|
+
formatRelativeAge,
|
|
47
49
|
shellShouldRevalidate,
|
|
48
50
|
useOptimisticSessionItems
|
|
49
51
|
};
|
package/package.json
CHANGED