@mcp-b/react-components 0.24.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AgentChat-Bm1qYbOo.d.ts → AgentChat-DHxdTjwF.d.ts} +34 -7
- package/dist/{CodeBlock-Cp67Njo3.js → CodeBlock-B3RLU3ez.js} +1 -1
- package/dist/{FileTree-DW60q1w7.js → FileTree-CYr5og0q.js} +1 -1
- package/dist/{Message-_-bEYLAO.js → Message-KlK8tlBZ.js} +1 -1
- package/dist/{ModelSelector-Brvj9Cab.js → ModelSelector-YTlqkIjs.js} +1 -1
- package/dist/{ThinkChat-E_HrfH76.js → ThinkChat-DVhCEjq-.js} +11 -2
- package/dist/{ThinkChatActivity-2BobmuvR.d.ts → ThinkChatActivity-DMTHKWrI.d.ts} +11 -9
- package/dist/{ThinkChatContext-DrsZqdaO.d.ts → ThinkChatContext-B-Nk84Wi.d.ts} +13 -1
- package/dist/{ThinkRecoveryNotice-DFIcG9UX.d.ts → ThinkRecoveryNotice-D6gYcBbr.d.ts} +1 -1
- package/dist/{WorkspaceFileView-rUEN2iox.js → WorkspaceFileView-CuMjXYQn.js} +3 -3
- package/dist/components/Activity.d.ts +11 -0
- package/dist/components/Activity.js +16 -4
- package/dist/components/AgentActivity.js +1 -1
- package/dist/components/AgentActivityPreview.js +1 -1
- package/dist/components/AgentChat.d.ts +1 -1
- package/dist/components/AgentChat.js +174 -94
- package/dist/components/AgentChatStartScreen.js +1 -1
- package/dist/components/AgentConnection.js +2 -2
- package/dist/components/AgentMessageParts.js +6 -2
- package/dist/components/AgentToolDetail.d.ts +1 -1
- package/dist/components/AgentToolDetail.js +2 -2
- package/dist/components/Approval.js +1 -1
- package/dist/components/Artifact.js +1 -1
- package/dist/components/BrowserLiveView.js +1 -1
- package/dist/components/BrowserReplay.js +1 -1
- package/dist/components/BrowserRunPanel.js +1 -1
- package/dist/components/ChainOfThought.d.ts +1 -1
- package/dist/components/ChainOfThought.js +1 -1
- package/dist/components/ChatGptSignInScreen.js +2 -2
- package/dist/components/Checkbox.js +1 -1
- package/dist/components/Checkpoint.js +1 -1
- package/dist/components/CodeBlock.js +1 -1
- package/dist/components/CodexModelSelector.js +1 -1
- package/dist/components/Commit.js +2 -2
- package/dist/components/ContextMenu.js +1 -1
- package/dist/components/Conversation.js +1 -1
- package/dist/components/EnvironmentVariables.js +2 -2
- package/dist/components/ExpansionState.d.ts +51 -0
- package/dist/components/ExpansionState.js +46 -0
- package/dist/components/FileTree.js +1 -1
- package/dist/components/Goal.d.ts +87 -0
- package/dist/components/Goal.js +92 -0
- package/dist/components/McpConnectionRequest.js +1 -1
- package/dist/components/McpPluginCatalog.js +1 -1
- package/dist/components/McpServerPicker.js +1 -1
- package/dist/components/MediaPreviewCard.js +13 -2
- package/dist/components/Menubar.js +1 -1
- package/dist/components/Message.js +1 -1
- package/dist/components/MessageScroller.js +1 -1
- package/dist/components/MessageScrollerVirtual.d.ts +72 -0
- package/dist/components/MessageScrollerVirtual.js +110 -0
- package/dist/components/ModelSelector.js +1 -1
- package/dist/components/Plan.js +1 -1
- package/dist/components/PricingPlanCard.js +1 -1
- package/dist/components/PromptInput.js +1 -1
- package/dist/components/Queue.js +1 -1
- package/dist/components/Reasoning.js +2 -2
- package/dist/components/ResponsiveSidebarShell.js +1 -1
- package/dist/components/SearchField.js +1 -1
- package/dist/components/Select.js +1 -1
- package/dist/components/SessionCompaction.d.ts +58 -0
- package/dist/components/SessionCompaction.js +117 -0
- package/dist/components/Sources.js +1 -1
- package/dist/components/Stepper.js +1 -1
- package/dist/components/SubagentRunIndicator.js +1 -1
- package/dist/components/Task.js +1 -1
- package/dist/components/Terminal.js +2 -2
- package/dist/components/TestResults.js +1 -1
- package/dist/components/ThemeModeControl.js +1 -1
- package/dist/components/ThinkChat.d.ts +6 -6
- package/dist/components/ThinkChat.js +1 -1
- package/dist/components/ThinkChatActivity.d.ts +1 -1
- package/dist/components/ThinkChatActivity.js +68 -14
- package/dist/components/ThinkChatContext.d.ts +2 -2
- package/dist/components/ThinkChatContext.js +5 -1
- package/dist/components/ThinkChatToolPanels.js +1 -1
- package/dist/components/ThinkExecutionDetail.js +1 -1
- package/dist/components/ThinkExecutionStatus.js +1 -1
- package/dist/components/ThinkExecutionWorkbench.d.ts +4 -3
- package/dist/components/ThinkExecutionWorkbench.js +7 -10
- package/dist/components/ThinkFullApp.js +65 -54
- package/dist/components/ThinkRecoveryNotice.d.ts +1 -1
- package/dist/components/ThinkRoutineBrowser.js +1 -1
- package/dist/components/ThinkRoutineForm.js +1 -1
- package/dist/components/ThinkRoutineLibrary.js +1 -1
- package/dist/components/ThinkThreadPicker.js +1 -1
- package/dist/components/Toast.js +1 -1
- package/dist/components/ToolInvocation.d.ts +8 -1
- package/dist/components/ToolInvocation.js +3 -2
- package/dist/components/WebPreview.js +1 -1
- package/dist/components/WorkspaceBrowser.js +1 -1
- package/dist/components/WorkspaceExplorer.js +1 -1
- package/dist/components/WorkspaceFileView.js +1 -1
- package/dist/components/WorkspaceHeader.js +1 -1
- package/dist/components/icons.d.ts +2 -2
- package/dist/components/icons.js +2 -2
- package/dist/{copy-button-TWq8nZhc.js → copy-button-Buxmtmp9.js} +1 -1
- package/dist/{icons-wP1yFUXF.d.ts → icons-Cih3W-zM.d.ts} +6 -1
- package/dist/{icons-ua6f_GH3.js → icons-w5PpKGRz.js} +3 -2
- package/dist/styles/activity.css +6 -0
- package/dist/styles/agent-chat.css +20 -4
- package/dist/styles/composition-motion.css +13 -23
- package/dist/styles/goal.css +57 -0
- package/dist/styles/index.css +1 -0
- package/dist/styles/message-scroller.css +25 -0
- package/dist/styles/responsive-sidebar-shell.css +12 -0
- package/dist/styles/think-full-app.css +22 -14
- package/package.json +7 -6
- package/dist/view-transitions-DyUP0lSg.js +0 -77
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { t as cx } from "../class-names-BiMDVpUo.js";
|
|
2
2
|
import { Button } from "./Button.js";
|
|
3
|
-
import { C as FileIcon,
|
|
3
|
+
import { C as FileIcon, Q as TerminalIcon, c as BoxIcon, f as ChevronDownIcon, q as SpinnerIcon } from "../icons-w5PpKGRz.js";
|
|
4
4
|
import { a as WorkspaceNavigationRestorationBoundary, i as WorkspaceNavigationFocusRestorer, n as WorkspaceNavigationProvider } from "../WorkspaceLink-BYYeTQLf.js";
|
|
5
5
|
import { n as mergeRefs } from "../merge-refs-DF_7w2x_.js";
|
|
6
6
|
import { AppTopBar } from "./AppTopBar.js";
|
|
7
|
-
import { c as resolveThinkApprovalProps, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../ThinkChat-
|
|
7
|
+
import { c as resolveThinkApprovalProps, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../ThinkChat-DVhCEjq-.js";
|
|
8
8
|
import { useWorkspace } from "./Workspace.js";
|
|
9
9
|
import { WorkspaceExplorer } from "./WorkspaceExplorer.js";
|
|
10
10
|
import { ScrollArea } from "./ScrollArea.js";
|
|
11
11
|
import { McpPluginCatalog } from "./McpPluginCatalog.js";
|
|
12
|
-
import { n as runViewTransition } from "../view-transitions-DyUP0lSg.js";
|
|
13
12
|
import { ResizableSidePanel } from "./ResizableSidePanel.js";
|
|
14
13
|
import { ThinkExecutionWorkbench } from "./ThinkExecutionWorkbench.js";
|
|
15
14
|
import { ThinkFullAppViewSwitch } from "./ThinkFullAppViewSwitch.js";
|
|
@@ -49,8 +48,8 @@ function PluginsPanel({ config }) {
|
|
|
49
48
|
/** Combines ThinkChat with an optional resizable workbench shell. */
|
|
50
49
|
function ThinkFullApp({ agent, appBarActions, appBarLeading, appBarTitle, chat, className, defaultMobileView, defaultWorkbenchView, defaultThreadSidebarOpen, hideAppBarInWorkbench = false, messages, mobileView, onMobileViewChange, onThreadSidebarOpenChange, onWorkbenchViewChange, plugins, ref, renderAgentToolRunLink, renderExecutionRunLink, selectedExecutionRun, showAgentTools = true, showExecutionWorkbench = true, showMobileViewSwitch = true, sourceKey, style, threadSidebar, threadSidebarOpen, threadStatusSummary, workbenchPanels, workbenchView, workspace, ...props }) {
|
|
51
50
|
const appRef = React.useRef(null);
|
|
52
|
-
const viewScopeRef = React.useRef(null);
|
|
53
51
|
const workbenchPanelRef = React.useRef(null);
|
|
52
|
+
const pendingPanelFocusRef = React.useRef(null);
|
|
54
53
|
const approvals = useThinkPendingExecutionApprovals(agent.stub, sourceKey, `${chat.messages.length}:${chat.status}`, messages?.approvalsEnabled !== false);
|
|
55
54
|
const resolvedMessages = React.useMemo(() => {
|
|
56
55
|
const approvalProps = resolveThinkApprovalProps({
|
|
@@ -91,10 +90,7 @@ function ThinkFullApp({ agent, appBarActions, appBarLeading, appBarTitle, chat,
|
|
|
91
90
|
onMobileViewChange?.(next);
|
|
92
91
|
}, [mobileView, onMobileViewChange]);
|
|
93
92
|
const updateAppView = React.useCallback((update) => {
|
|
94
|
-
|
|
95
|
-
scope: viewScopeRef.current,
|
|
96
|
-
update
|
|
97
|
-
});
|
|
93
|
+
React.startTransition(update);
|
|
98
94
|
}, []);
|
|
99
95
|
const panelContext = React.useMemo(() => ({
|
|
100
96
|
agent,
|
|
@@ -116,12 +112,20 @@ function ThinkFullApp({ agent, appBarActions, appBarLeading, appBarTitle, chat,
|
|
|
116
112
|
id: "execution",
|
|
117
113
|
label: "Execution",
|
|
118
114
|
icon: /* @__PURE__ */ jsx(TerminalIcon, {}),
|
|
119
|
-
render: ({ agent }) => /* @__PURE__ */ jsx(
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
115
|
+
render: ({ agent }) => /* @__PURE__ */ jsx(React.Suspense, {
|
|
116
|
+
fallback: /* @__PURE__ */ jsx("div", {
|
|
117
|
+
className: "think-full-app__workbench",
|
|
118
|
+
role: "status",
|
|
119
|
+
"aria-label": "Loading execution",
|
|
120
|
+
children: /* @__PURE__ */ jsx(SpinnerIcon, {})
|
|
121
|
+
}),
|
|
122
|
+
children: /* @__PURE__ */ jsx(ThinkExecutionWorkbench, {
|
|
123
|
+
source: agent.stub,
|
|
124
|
+
sourceKey,
|
|
125
|
+
title: "Execution",
|
|
126
|
+
selectedRun: selectedExecutionRun,
|
|
127
|
+
renderRunLink: renderExecutionRunLink
|
|
128
|
+
})
|
|
125
129
|
})
|
|
126
130
|
});
|
|
127
131
|
if (plugins) availableWorkbenchPanels.push({
|
|
@@ -139,20 +143,21 @@ function ThinkFullApp({ agent, appBarActions, appBarLeading, appBarTitle, chat,
|
|
|
139
143
|
const workbenchViews = availableWorkbenchPanels;
|
|
140
144
|
const shouldRenderInlineAppBar = !threadSidebar && (Boolean(appBarActions || appBarLeading || appBarTitle || threadSidebar) || hasWorkbench);
|
|
141
145
|
const hasAppBarRow = shouldRenderInlineAppBar;
|
|
146
|
+
React.useLayoutEffect(() => {
|
|
147
|
+
const pendingFocus = pendingPanelFocusRef.current;
|
|
148
|
+
if (!pendingFocus || pendingFocus.id !== activeWorkbenchView) return;
|
|
149
|
+
pendingPanelFocusRef.current = null;
|
|
150
|
+
Array.from(workbenchPanelRef.current?.querySelectorAll("button") ?? []).find((button) => button.getAttribute("aria-label") === pendingFocus.label)?.focus({ preventScroll: true });
|
|
151
|
+
}, [activeWorkbenchView]);
|
|
142
152
|
const updateWorkbenchPanel = (next) => {
|
|
143
153
|
const activeElement = document.activeElement;
|
|
144
154
|
const restorePanelSwitchFocus = activeElement instanceof HTMLElement && workbenchPanelRef.current?.contains(activeElement);
|
|
145
155
|
const nextLabel = availableWorkbenchPanels.find((panel) => panel.id === next)?.label;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
scope: workbenchPanelRef.current,
|
|
152
|
-
update: () => setWorkbenchView(next)
|
|
153
|
-
});
|
|
154
|
-
if (transition) transition.updateCallbackDone.then(restoreFocus, restoreFocus);
|
|
155
|
-
else requestAnimationFrame(restoreFocus);
|
|
156
|
+
pendingPanelFocusRef.current = restorePanelSwitchFocus && nextLabel ? {
|
|
157
|
+
id: next,
|
|
158
|
+
label: nextLabel
|
|
159
|
+
} : null;
|
|
160
|
+
React.startTransition(() => setWorkbenchView(next));
|
|
156
161
|
};
|
|
157
162
|
const renderAppTopBar = (sidebarControls) => /* @__PURE__ */ jsxs(AppTopBar.Root, {
|
|
158
163
|
className: "think-full-app__app-bar",
|
|
@@ -230,42 +235,48 @@ function ThinkFullApp({ agent, appBarActions, appBarLeading, appBarTitle, chat,
|
|
|
230
235
|
...props,
|
|
231
236
|
children: [
|
|
232
237
|
shouldRenderInlineAppBar ? renderAppTopBar() : null,
|
|
233
|
-
/* @__PURE__ */
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
238
|
+
/* @__PURE__ */ jsx(React.ViewTransition, {
|
|
239
|
+
default: "sigvelo-layout-transition",
|
|
240
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
241
|
+
className: "think-full-app__view-scope",
|
|
242
|
+
"data-recipe": "application-plane",
|
|
243
|
+
"data-mobile-view": activeMobileView,
|
|
244
|
+
children: [/* @__PURE__ */ jsx("section", {
|
|
245
|
+
className: "think-full-app__chat-surface",
|
|
246
|
+
"data-workspace-restoration-scope": "chat",
|
|
247
|
+
"aria-label": "Chat",
|
|
243
248
|
children: /* @__PURE__ */ jsx("div", {
|
|
244
|
-
className: "think-full-app__chat
|
|
245
|
-
children: /* @__PURE__ */ jsx(
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
249
|
+
className: "think-full-app__chat",
|
|
250
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
251
|
+
className: "think-full-app__chat-inner",
|
|
252
|
+
children: /* @__PURE__ */ jsx(ThinkChat.Provider, {
|
|
253
|
+
chat,
|
|
254
|
+
agentTools,
|
|
255
|
+
children: /* @__PURE__ */ jsx(ThinkChat.Messages, {
|
|
256
|
+
...resolvedMessages,
|
|
257
|
+
renderAgentToolRunLink: showAgentTools ? renderAgentToolRunLink : void 0
|
|
258
|
+
})
|
|
251
259
|
})
|
|
252
260
|
})
|
|
253
261
|
})
|
|
254
|
-
})
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
"aria-label": "Workbench",
|
|
258
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
259
|
-
className: "think-full-app__workbench-slot",
|
|
262
|
+
}), activePanel ? /* @__PURE__ */ jsx("aside", {
|
|
263
|
+
className: "think-full-app__aside",
|
|
264
|
+
"aria-label": "Workbench",
|
|
260
265
|
children: /* @__PURE__ */ jsx("div", {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
+
className: "think-full-app__workbench-slot",
|
|
267
|
+
children: /* @__PURE__ */ jsx(React.ViewTransition, {
|
|
268
|
+
default: "sigvelo-layout-transition",
|
|
269
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
270
|
+
ref: workbenchPanelRef,
|
|
271
|
+
className: "think-full-app__workbench-panel",
|
|
272
|
+
"data-view": activeWorkbenchView,
|
|
273
|
+
tabIndex: -1,
|
|
274
|
+
children: activePanel.render(panelContext)
|
|
275
|
+
})
|
|
276
|
+
})
|
|
266
277
|
})
|
|
267
|
-
})
|
|
268
|
-
})
|
|
278
|
+
}) : null]
|
|
279
|
+
})
|
|
269
280
|
}),
|
|
270
281
|
activePanel ? /* @__PURE__ */ jsx(ResizableSidePanel.Handle, { className: "think-full-app__resizer" }) : null
|
|
271
282
|
]
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as ThinkRecoveryNoticeProps, t as ThinkRecoveryNotice } from "../ThinkRecoveryNotice-
|
|
1
|
+
import { n as ThinkRecoveryNoticeProps, t as ThinkRecoveryNotice } from "../ThinkRecoveryNotice-D6gYcBbr.js";
|
|
2
2
|
export { ThinkRecoveryNotice, ThinkRecoveryNoticeProps };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as cx } from "../class-names-BiMDVpUo.js";
|
|
2
2
|
import { buttonVariants } from "./Button.js";
|
|
3
|
-
import { H as PlusIcon } from "../icons-
|
|
3
|
+
import { H as PlusIcon } from "../icons-w5PpKGRz.js";
|
|
4
4
|
import { t as NavigationLink } from "../navigation-link-Cob7KBlM.js";
|
|
5
5
|
import { Tooltip } from "./Tooltip.js";
|
|
6
6
|
import { t as capitalize } from "../format-S6uWyoSb.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as cx } from "../class-names-BiMDVpUo.js";
|
|
2
2
|
import { Button, buttonVariants } from "./Button.js";
|
|
3
|
-
import { q as SpinnerIcon } from "../icons-
|
|
3
|
+
import { q as SpinnerIcon } from "../icons-w5PpKGRz.js";
|
|
4
4
|
import { t as NavigationLink } from "../navigation-link-Cob7KBlM.js";
|
|
5
5
|
import { Select } from "./Select.js";
|
|
6
6
|
import { Field } from "./Field.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as cx } from "../class-names-BiMDVpUo.js";
|
|
2
2
|
import { Button, buttonVariants } from "./Button.js";
|
|
3
|
-
import {
|
|
3
|
+
import { V as PlayIcon, b as EllipsisIcon, et as WarningIcon, f as ChevronDownIcon, q as SpinnerIcon } from "../icons-w5PpKGRz.js";
|
|
4
4
|
import { t as NavigationLink } from "../navigation-link-Cob7KBlM.js";
|
|
5
5
|
import { Menu } from "./Menu.js";
|
|
6
6
|
import { AppTopBar } from "./AppTopBar.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as cx } from "../class-names-BiMDVpUo.js";
|
|
2
2
|
import { Button, buttonVariants } from "./Button.js";
|
|
3
|
-
import {
|
|
3
|
+
import { H as PlusIcon, et as WarningIcon, q as SpinnerIcon, t as ArchiveIcon, v as DotIcon } from "../icons-w5PpKGRz.js";
|
|
4
4
|
import { t as NavigationLink } from "../navigation-link-Cob7KBlM.js";
|
|
5
5
|
import { EmptyState } from "./EmptyState.js";
|
|
6
6
|
import { SearchField } from "./SearchField.js";
|
package/dist/components/Toast.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
|
|
2
2
|
import { buttonVariants } from "./Button.js";
|
|
3
|
-
import {
|
|
3
|
+
import { nt as XIcon } from "../icons-w5PpKGRz.js";
|
|
4
4
|
import "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
import { Toast as Toast$1 } from "@base-ui/react/toast";
|
|
@@ -8,6 +8,12 @@ interface ToolInvocationProps {
|
|
|
8
8
|
part: ToolInvocationPart;
|
|
9
9
|
/** Render the existing Activity disclosure expanded initially. */
|
|
10
10
|
defaultOpen?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Overrides the part-derived shimmer. Callers that know the run has settled
|
|
13
|
+
* pass false so a part stuck in a working state (denied approval, aborted
|
|
14
|
+
* stream) doesn't shimmer forever.
|
|
15
|
+
*/
|
|
16
|
+
isStreaming?: boolean;
|
|
11
17
|
}
|
|
12
18
|
/**
|
|
13
19
|
* Read-only generic disclosure for one upstream AI SDK tool invocation.
|
|
@@ -20,7 +26,8 @@ interface ToolInvocationProps {
|
|
|
20
26
|
*/
|
|
21
27
|
declare function ToolInvocation({
|
|
22
28
|
part,
|
|
23
|
-
defaultOpen
|
|
29
|
+
defaultOpen,
|
|
30
|
+
isStreaming
|
|
24
31
|
}: ToolInvocationProps): import("react").JSX.Element;
|
|
25
32
|
//#endregion
|
|
26
33
|
export { ToolInvocation, ToolInvocationPart, ToolInvocationProps };
|
|
@@ -45,7 +45,7 @@ function describeToolPart(part) {
|
|
|
45
45
|
* transcript renderer. ThinkChat may replace this fallback with richer panels
|
|
46
46
|
* for known workspace, browser, fetch, session, skill, and execute tools.
|
|
47
47
|
*/
|
|
48
|
-
function ToolInvocation({ part, defaultOpen }) {
|
|
48
|
+
function ToolInvocation({ part, defaultOpen, isStreaming }) {
|
|
49
49
|
const state = getToolPartState(part);
|
|
50
50
|
const failed = isToolPartFailed(part);
|
|
51
51
|
const deniedReason = part.state === "output-denied" ? part.approval.reason : void 0;
|
|
@@ -53,8 +53,9 @@ function ToolInvocation({ part, defaultOpen }) {
|
|
|
53
53
|
const inputStatus = part.state === "approval-requested" ? "awaiting approval" : part.state === "approval-responded" ? part.approval.approved ? "approved" : "denied" : void 0;
|
|
54
54
|
const outputStatus = state === "denied" ? "denied" : failed ? "error" : part.state === "output-available" && part.preliminary ? "preliminary" : void 0;
|
|
55
55
|
return /* @__PURE__ */ jsxs(Activity, {
|
|
56
|
-
isStreaming: isToolPartWorking(part),
|
|
56
|
+
isStreaming: isStreaming ?? isToolPartWorking(part),
|
|
57
57
|
defaultOpen,
|
|
58
|
+
stateKey: part.toolCallId,
|
|
58
59
|
children: [/* @__PURE__ */ jsx(ActivityTrigger, { action: describeToolPart(part) }), /* @__PURE__ */ jsxs(ActivityContent, { children: [/* @__PURE__ */ jsx(ActivityPanel, {
|
|
59
60
|
label: part.title ?? getToolName(part),
|
|
60
61
|
text: formatToolValue(getToolInput(part)),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as cx } from "../class-names-BiMDVpUo.js";
|
|
2
2
|
import { Collapsible } from "./Collapsible.js";
|
|
3
|
-
import { W as RefreshIcon, f as ChevronDownIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../icons-
|
|
3
|
+
import { W as RefreshIcon, f as ChevronDownIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "../icons-w5PpKGRz.js";
|
|
4
4
|
import { IconButton } from "./IconButton.js";
|
|
5
5
|
import { Badge } from "./Badge.js";
|
|
6
6
|
import { Input } from "./Input.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as FileTreeFolder, r as FileTreeFile, t as FileTree } from "../FileTree-
|
|
1
|
+
import { i as FileTreeFolder, r as FileTreeFile, t as FileTree } from "../FileTree-CYr5og0q.js";
|
|
2
2
|
import { SearchField } from "./SearchField.js";
|
|
3
3
|
import { WorkspaceHeader } from "./WorkspaceHeader.js";
|
|
4
4
|
import * as React from "react";
|
|
@@ -3,7 +3,7 @@ import { a as WorkspaceNavigationRestorationBoundary, n as WorkspaceNavigationPr
|
|
|
3
3
|
import { n as mergeRefs } from "../merge-refs-DF_7w2x_.js";
|
|
4
4
|
import { inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceMediaPath, isWorkspaceSkillPath, parseWorkspaceSkill } from "./WorkspaceFile.js";
|
|
5
5
|
import { WorkspaceBrowser } from "./WorkspaceBrowser.js";
|
|
6
|
-
import { t as WorkspaceFileView } from "../WorkspaceFileView-
|
|
6
|
+
import { t as WorkspaceFileView } from "../WorkspaceFileView-CuMjXYQn.js";
|
|
7
7
|
import { useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryOptions, workspaceFileAssetQueryOptions, workspaceFileStatQueryOptions, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions } from "./Workspace.js";
|
|
8
8
|
import * as React from "react";
|
|
9
9
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as WorkspaceFileView } from "../WorkspaceFileView-
|
|
1
|
+
import { t as WorkspaceFileView } from "../WorkspaceFileView-CuMjXYQn.js";
|
|
2
2
|
export { WorkspaceFileView };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
export { ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, ArrowUpRightIcon, BookmarkIcon, BoxIcon, BrainIcon, BrandIconProps, CalendarIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CodeIcon, CopyIcon, DiscordIcon, DotIcon, DownloadIcon, EllipsisIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, HashIcon, IconProps, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, McpIcon, MessageSquareIcon, MicrophoneIcon, MinusIcon, MonitorIcon, MoonIcon, MoveToFrontIcon, PaperclipIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, QueueIcon, RefreshIcon, SearchIcon, SidebarIcon, SpinnerIcon, SquareIcon, StopIcon, SunIcon, TerminalIcon, TrashIcon, WarningIcon, WrenchIcon, XIcon };
|
|
1
|
+
import { $ as TargetIcon, A as InfoIcon, B as PaperclipIcon, C as EyeOffIcon, D as HashIcon, E as FolderOpenIcon, F as MicrophoneIcon, G as QueueIcon, H as PencilIcon, I as MinusIcon, J as SidebarIcon, K as RefreshIcon, L as MonitorIcon, M as MaximizeIcon, N as McpIcon, O as IconProps, P as MessageSquareIcon, Q as SunIcon, R as MoonIcon, S as EyeIcon, T as FolderIcon, U as PlayIcon, V as PauseIcon, W as PlusIcon, X as SquareIcon, Y as SpinnerIcon, Z as StopIcon, _ as CopyIcon, a as ArrowUpIcon, b as DownloadIcon, c as BoxIcon, d as CalendarIcon, et as TerminalIcon, f as CheckIcon, g as CodeIcon, h as ChevronRightIcon, i as ArrowRightIcon, it as XIcon, j as LinkIcon, k as ImageIcon, l as BrainIcon, m as ChevronLeftIcon, n as ArrowDownIcon, nt as WarningIcon, o as ArrowUpRightIcon, p as ChevronDownIcon, q as SearchIcon, r as ArrowLeftIcon, rt as WrenchIcon, s as BookmarkIcon, t as ArchiveIcon, tt as TrashIcon, u as BrandIconProps, v as DiscordIcon, w as FileIcon, x as EllipsisIcon, y as DotIcon, z as MoveToFrontIcon } from "../icons-Cih3W-zM.js";
|
|
2
|
+
export { ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, ArrowUpRightIcon, BookmarkIcon, BoxIcon, BrainIcon, BrandIconProps, CalendarIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CodeIcon, CopyIcon, DiscordIcon, DotIcon, DownloadIcon, EllipsisIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, HashIcon, IconProps, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, McpIcon, MessageSquareIcon, MicrophoneIcon, MinusIcon, MonitorIcon, MoonIcon, MoveToFrontIcon, PaperclipIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, QueueIcon, RefreshIcon, SearchIcon, SidebarIcon, SpinnerIcon, SquareIcon, StopIcon, SunIcon, TargetIcon, TerminalIcon, TrashIcon, WarningIcon, WrenchIcon, XIcon };
|
package/dist/components/icons.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
export { ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, ArrowUpRightIcon, BookmarkIcon, BoxIcon, BrainIcon, CalendarIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CodeIcon, CopyIcon, DiscordIcon, DotIcon, DownloadIcon, EllipsisIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, HashIcon, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, McpIcon, MessageSquareIcon, MicrophoneIcon, MinusIcon, MonitorIcon, MoonIcon, MoveToFrontIcon, PaperclipIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, QueueIcon, RefreshIcon, SearchIcon, SidebarIcon, SpinnerIcon, SquareIcon, StopIcon, SunIcon, TerminalIcon, TrashIcon, WarningIcon, WrenchIcon, XIcon };
|
|
1
|
+
import { $ as TrashIcon, A as MaximizeIcon, B as PencilIcon, C as FileIcon, D as ImageIcon, E as HashIcon, F as MonitorIcon, G as SearchIcon, H as PlusIcon, I as MoonIcon, J as SquareIcon, K as SidebarIcon, L as MoveToFrontIcon, M as MessageSquareIcon, N as MicrophoneIcon, O as InfoIcon, P as MinusIcon, Q as TerminalIcon, R as PaperclipIcon, S as EyeOffIcon, T as FolderOpenIcon, U as QueueIcon, V as PlayIcon, W as RefreshIcon, X as SunIcon, Y as StopIcon, Z as TargetIcon, _ as DiscordIcon, a as ArrowUpIcon, b as EllipsisIcon, c as BoxIcon, d as CheckIcon, et as WarningIcon, f as ChevronDownIcon, g as CopyIcon, h as CodeIcon, i as ArrowRightIcon, j as McpIcon, k as LinkIcon, l as BrainIcon, m as ChevronRightIcon, n as ArrowDownIcon, nt as XIcon, o as ArrowUpRightIcon, p as ChevronLeftIcon, q as SpinnerIcon, r as ArrowLeftIcon, s as BookmarkIcon, t as ArchiveIcon, tt as WrenchIcon, u as CalendarIcon, v as DotIcon, w as FolderIcon, x as EyeIcon, y as DownloadIcon, z as PauseIcon } from "../icons-w5PpKGRz.js";
|
|
2
|
+
export { ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, ArrowUpRightIcon, BookmarkIcon, BoxIcon, BrainIcon, CalendarIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, CodeIcon, CopyIcon, DiscordIcon, DotIcon, DownloadIcon, EllipsisIcon, EyeIcon, EyeOffIcon, FileIcon, FolderIcon, FolderOpenIcon, HashIcon, ImageIcon, InfoIcon, LinkIcon, MaximizeIcon, McpIcon, MessageSquareIcon, MicrophoneIcon, MinusIcon, MonitorIcon, MoonIcon, MoveToFrontIcon, PaperclipIcon, PauseIcon, PencilIcon, PlayIcon, PlusIcon, QueueIcon, RefreshIcon, SearchIcon, SidebarIcon, SpinnerIcon, SquareIcon, StopIcon, SunIcon, TargetIcon, TerminalIcon, TrashIcon, WarningIcon, WrenchIcon, XIcon };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as CheckIcon, g as CopyIcon } from "./icons-
|
|
1
|
+
import { d as CheckIcon, g as CopyIcon } from "./icons-w5PpKGRz.js";
|
|
2
2
|
import { IconButton } from "./components/IconButton.js";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -281,10 +281,15 @@ declare const SunIcon: ({
|
|
|
281
281
|
strokeWidth,
|
|
282
282
|
...props
|
|
283
283
|
}: IconProps) => import("react").JSX.Element;
|
|
284
|
+
declare const TargetIcon: ({
|
|
285
|
+
size,
|
|
286
|
+
strokeWidth,
|
|
287
|
+
...props
|
|
288
|
+
}: IconProps) => import("react").JSX.Element;
|
|
284
289
|
declare const MaximizeIcon: ({
|
|
285
290
|
size,
|
|
286
291
|
strokeWidth,
|
|
287
292
|
...props
|
|
288
293
|
}: IconProps) => import("react").JSX.Element;
|
|
289
294
|
//#endregion
|
|
290
|
-
export {
|
|
295
|
+
export { TargetIcon as $, InfoIcon as A, PaperclipIcon as B, EyeOffIcon as C, HashIcon as D, FolderOpenIcon as E, MicrophoneIcon as F, QueueIcon as G, PencilIcon as H, MinusIcon as I, SidebarIcon as J, RefreshIcon as K, MonitorIcon as L, MaximizeIcon as M, McpIcon as N, IconProps as O, MessageSquareIcon as P, SunIcon as Q, MoonIcon as R, EyeIcon as S, FolderIcon as T, PlayIcon as U, PauseIcon as V, PlusIcon as W, SquareIcon as X, SpinnerIcon as Y, StopIcon as Z, CopyIcon as _, ArrowUpIcon as a, DownloadIcon as b, BoxIcon as c, CalendarIcon as d, TerminalIcon as et, CheckIcon as f, CodeIcon as g, ChevronRightIcon as h, ArrowRightIcon as i, XIcon as it, LinkIcon as j, ImageIcon as k, BrainIcon as l, ChevronLeftIcon as m, ArrowDownIcon as n, WarningIcon as nt, ArrowUpRightIcon as o, ChevronDownIcon as p, SearchIcon as q, ArrowLeftIcon as r, WrenchIcon as rt, BookmarkIcon as s, ArchiveIcon as t, TrashIcon as tt, BrandIconProps as u, DiscordIcon as v, FileIcon as w, EllipsisIcon as x, DotIcon as y, MoveToFrontIcon as z };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as cx } from "./class-names-BiMDVpUo.js";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
import { Archive, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, ArrowUpRight, Bookmark, Box, Brain, CalendarDays, Check, ChevronDown, ChevronLeft, ChevronRight, CircleStop, CodeXml, Copy, CornerDownRight, Dot, Download, Ellipsis, Eye, EyeOff, File, Folder, FolderOpen, Hash, Image, Info, Link2, ListRestart, LoaderCircle, Maximize2, MessageSquare, Mic, Minus, Monitor, Moon, PanelLeft, Paperclip, Pause, Pencil, Play, Plus, RefreshCw, Search, Square, Sun, Terminal, Trash2, TriangleAlert, Wrench, X } from "lucide-react";
|
|
3
|
+
import { Archive, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, ArrowUpRight, Bookmark, Box, Brain, CalendarDays, Check, ChevronDown, ChevronLeft, ChevronRight, CircleStop, CodeXml, Copy, CornerDownRight, Dot, Download, Ellipsis, Eye, EyeOff, File, Folder, FolderOpen, Hash, Image, Info, Link2, ListRestart, LoaderCircle, Maximize2, MessageSquare, Mic, Minus, Monitor, Moon, PanelLeft, Paperclip, Pause, Pencil, Play, Plus, RefreshCw, Search, Square, Sun, Target, Terminal, Trash2, TriangleAlert, Wrench, X } from "lucide-react";
|
|
4
4
|
import { SiDiscord, SiModelcontextprotocol } from "react-icons/si";
|
|
5
5
|
//#region src/components/_internal/icons.tsx
|
|
6
6
|
function icon(Component) {
|
|
@@ -87,6 +87,7 @@ const McpIcon = brandIcon(SiModelcontextprotocol);
|
|
|
87
87
|
const DiscordIcon = brandIcon(SiDiscord);
|
|
88
88
|
const MoonIcon = icon(Moon);
|
|
89
89
|
const SunIcon = icon(Sun);
|
|
90
|
+
const TargetIcon = icon(Target);
|
|
90
91
|
const MaximizeIcon = icon(Maximize2);
|
|
91
92
|
//#endregion
|
|
92
|
-
export {
|
|
93
|
+
export { TrashIcon as $, MaximizeIcon as A, PencilIcon as B, FileIcon as C, ImageIcon as D, HashIcon as E, MonitorIcon as F, SearchIcon as G, PlusIcon as H, MoonIcon as I, SquareIcon as J, SidebarIcon as K, MoveToFrontIcon as L, MessageSquareIcon as M, MicrophoneIcon as N, InfoIcon as O, MinusIcon as P, TerminalIcon as Q, PaperclipIcon as R, EyeOffIcon as S, FolderOpenIcon as T, QueueIcon as U, PlayIcon as V, RefreshIcon as W, SunIcon as X, StopIcon as Y, TargetIcon as Z, DiscordIcon as _, ArrowUpIcon as a, EllipsisIcon as b, BoxIcon as c, CheckIcon as d, WarningIcon as et, ChevronDownIcon as f, CopyIcon as g, CodeIcon as h, ArrowRightIcon as i, McpIcon as j, LinkIcon as k, BrainIcon as l, ChevronRightIcon as m, ArrowDownIcon as n, XIcon as nt, ArrowUpRightIcon as o, ChevronLeftIcon as p, SpinnerIcon as q, ArrowLeftIcon as r, BookmarkIcon as s, ArchiveIcon as t, WrenchIcon as tt, CalendarIcon as u, DotIcon as v, FolderIcon as w, EyeIcon as x, DownloadIcon as y, PauseIcon as z };
|
package/dist/styles/activity.css
CHANGED
|
@@ -85,6 +85,12 @@
|
|
|
85
85
|
padding-inline: var(--sigvelo-spacing-2);
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
/* Reveal row for step logs capped at the trailing window. */
|
|
89
|
+
.activity__show-earlier {
|
|
90
|
+
align-self: flex-start;
|
|
91
|
+
color: var(--sigvelo-color-text-muted);
|
|
92
|
+
}
|
|
93
|
+
|
|
88
94
|
.activity__item {
|
|
89
95
|
display: flex;
|
|
90
96
|
align-items: baseline;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
.agent-chat {
|
|
2
2
|
--agent-chat-content-max-inline-size: 64rem;
|
|
3
|
+
--agent-chat-composer-scrim-fade: 2.5rem;
|
|
3
4
|
|
|
4
5
|
container: agent-chat / inline-size;
|
|
5
6
|
position: relative;
|
|
@@ -21,13 +22,20 @@
|
|
|
21
22
|
/* Room for the last message to scroll clear of the floating composer.
|
|
22
23
|
--agent-chat-composer-size is set from a ResizeObserver in AgentChat. */
|
|
23
24
|
.agent-chat__transcript-content {
|
|
24
|
-
|
|
25
|
+
/* Also the virtual rows' block-start offset — keep padding and rows in
|
|
26
|
+
lockstep (see .message-scroller__virtual-item). Row spacing is NOT css
|
|
27
|
+
gap: rows are absolutely positioned, so the virtualizer's JS gap option
|
|
28
|
+
owns it (see VirtualMessageScroller). */
|
|
29
|
+
--message-scroller-virtual-block-start: var(--sigvelo-spacing-8);
|
|
30
|
+
|
|
25
31
|
min-inline-size: 0;
|
|
26
32
|
max-inline-size: 100%;
|
|
27
33
|
inline-size: min(100%, var(--agent-chat-content-max-inline-size));
|
|
28
34
|
margin-inline: auto;
|
|
29
|
-
|
|
30
|
-
|
|
35
|
+
/* Clearance = composer + its scrim band, so a transcript resting at the
|
|
36
|
+
bottom never sits inside the fade. */
|
|
37
|
+
padding-block: var(--message-scroller-virtual-block-start)
|
|
38
|
+
calc(var(--agent-chat-composer-size, 5rem) + var(--agent-chat-composer-scrim-fade));
|
|
31
39
|
padding-inline: var(--sigvelo-spacing-4);
|
|
32
40
|
}
|
|
33
41
|
|
|
@@ -272,13 +280,21 @@
|
|
|
272
280
|
padding: 0 var(--sigvelo-spacing-6) var(--sigvelo-spacing-6);
|
|
273
281
|
}
|
|
274
282
|
|
|
283
|
+
/* Solid behind the composer itself, dissolving upward so passing transcript
|
|
284
|
+
content fades into the surface instead of hitting a hard edge (Codex and
|
|
285
|
+
Claude both ship an equivalent bottom fade band). */
|
|
275
286
|
.agent-chat__composer::after {
|
|
276
287
|
position: absolute;
|
|
277
288
|
z-index: -1;
|
|
278
289
|
inset: 0;
|
|
290
|
+
inset-block-start: calc(-1 * var(--agent-chat-composer-scrim-fade));
|
|
279
291
|
content: "";
|
|
280
292
|
pointer-events: none;
|
|
281
|
-
background
|
|
293
|
+
background: linear-gradient(
|
|
294
|
+
to bottom,
|
|
295
|
+
transparent,
|
|
296
|
+
var(--sigvelo-color-surface) var(--agent-chat-composer-scrim-fade)
|
|
297
|
+
);
|
|
282
298
|
}
|
|
283
299
|
|
|
284
300
|
.agent-chat__composer > .prompt-input {
|
|
@@ -52,32 +52,22 @@
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
/*
|
|
56
|
-
|
|
57
|
-
* default. Element-scoped pseudo-trees attach to their transition root, while
|
|
58
|
-
* the :root selector also covers the document fallback.
|
|
59
|
-
*/
|
|
60
|
-
:where(
|
|
61
|
-
:root,
|
|
62
|
-
.workspace-explorer,
|
|
63
|
-
.responsive-sidebar-shell__frame,
|
|
64
|
-
.think-execution-workbench,
|
|
65
|
-
.think-routine-library,
|
|
66
|
-
.think-full-app__view-scope,
|
|
67
|
-
.think-full-app__workbench-panel
|
|
68
|
-
)::view-transition {
|
|
55
|
+
/* React owns native snapshots; the class comes from <ViewTransition>. */
|
|
56
|
+
::view-transition {
|
|
69
57
|
pointer-events: none;
|
|
70
58
|
}
|
|
71
59
|
|
|
72
|
-
|
|
73
|
-
:root,
|
|
74
|
-
.workspace-explorer,
|
|
75
|
-
.responsive-sidebar-shell__frame,
|
|
76
|
-
.think-execution-workbench,
|
|
77
|
-
.think-routine-library,
|
|
78
|
-
.think-full-app__view-scope,
|
|
79
|
-
.think-full-app__workbench-panel
|
|
80
|
-
)::view-transition-group(*) {
|
|
60
|
+
::view-transition-group(.sigvelo-layout-transition) {
|
|
81
61
|
animation-duration: var(--sigvelo-motion-duration-layout);
|
|
82
62
|
animation-timing-function: var(--sigvelo-motion-ease-change);
|
|
83
63
|
}
|
|
64
|
+
|
|
65
|
+
@media (prefers-reduced-motion: reduce) {
|
|
66
|
+
::view-transition-group(.sigvelo-layout-transition) {
|
|
67
|
+
animation: none !important;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
:root[data-motion="reduce"]::view-transition-group(.sigvelo-layout-transition) {
|
|
72
|
+
animation: none !important;
|
|
73
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
.goal {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
min-inline-size: 0;
|
|
5
|
+
min-block-size: var(--sigvelo-spacing-6);
|
|
6
|
+
gap: var(--sigvelo-spacing-1-5);
|
|
7
|
+
padding-block: var(--sigvelo-spacing-1);
|
|
8
|
+
padding-inline: var(--sigvelo-spacing-2-5);
|
|
9
|
+
color: var(--sigvelo-color-text);
|
|
10
|
+
font-size: var(--sigvelo-text-compact);
|
|
11
|
+
line-height: var(--sigvelo-leading-snug);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.goal__icon {
|
|
15
|
+
display: inline-flex;
|
|
16
|
+
flex: none;
|
|
17
|
+
color: var(--sigvelo-color-text-muted);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.goal__content {
|
|
21
|
+
display: flex;
|
|
22
|
+
flex: 1;
|
|
23
|
+
flex-wrap: wrap;
|
|
24
|
+
gap: 0 var(--sigvelo-spacing-1);
|
|
25
|
+
align-items: baseline;
|
|
26
|
+
min-inline-size: 0;
|
|
27
|
+
overflow-wrap: anywhere;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.goal__title {
|
|
31
|
+
min-inline-size: 0;
|
|
32
|
+
font-weight: var(--sigvelo-font-weight-semibold);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.goal__objective {
|
|
36
|
+
min-inline-size: 0;
|
|
37
|
+
color: var(--sigvelo-color-text-muted);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.goal__meta {
|
|
41
|
+
min-inline-size: 0;
|
|
42
|
+
color: var(--sigvelo-color-text-muted);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.goal__objective + .goal__meta::before,
|
|
46
|
+
.goal__title + .goal__meta::before {
|
|
47
|
+
content: "\00b7";
|
|
48
|
+
margin-inline-end: var(--sigvelo-spacing-1);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.goal__actions {
|
|
52
|
+
display: inline-flex;
|
|
53
|
+
flex: none;
|
|
54
|
+
gap: var(--sigvelo-spacing-1);
|
|
55
|
+
align-items: center;
|
|
56
|
+
margin-inline-start: auto;
|
|
57
|
+
}
|
package/dist/styles/index.css
CHANGED
|
@@ -98,6 +98,7 @@
|
|
|
98
98
|
@import "./codex-model-selector.css" layer(components);
|
|
99
99
|
@import "./environment-variables.css" layer(components);
|
|
100
100
|
@import "./file-tree.css" layer(components);
|
|
101
|
+
@import "./goal.css" layer(components);
|
|
101
102
|
@import "./inline-citation.css" layer(components);
|
|
102
103
|
@import "./message.css" layer(components);
|
|
103
104
|
@import "./model-selector.css" layer(components);
|
|
@@ -41,6 +41,31 @@
|
|
|
41
41
|
.message-scroller__item {
|
|
42
42
|
min-width: 0;
|
|
43
43
|
flex-shrink: 0;
|
|
44
|
+
/* Off-screen rows skip layout/paint entirely (Codex ships the same pair on
|
|
45
|
+
turn content). `auto` keeps the last rendered size once measured; 15rem is
|
|
46
|
+
only the pre-first-render estimate, so scroll math stays sane. */
|
|
47
|
+
content-visibility: auto;
|
|
48
|
+
contain-intrinsic-size: auto 15rem;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* Virtualized variant: rows are windowed and absolutely positioned by
|
|
52
|
+
TanStack Virtual, so no gap/content-visibility here — the window itself
|
|
53
|
+
bounds DOM cost, and translateY replaces flow layout. */
|
|
54
|
+
.message-scroller__virtual-content {
|
|
55
|
+
position: relative;
|
|
56
|
+
width: 100%;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Absolutely positioned rows resolve against the wrapper's padding box, so
|
|
60
|
+
its padding never insets them. Rows inherit the inline padding to restore
|
|
61
|
+
the gutters, and start below the block-start padding via the variable the
|
|
62
|
+
padded wrapper re-exports (0 when the wrapper is unpadded). */
|
|
63
|
+
.message-scroller__virtual-item {
|
|
64
|
+
position: absolute;
|
|
65
|
+
inset-block-start: var(--message-scroller-virtual-block-start, 0px);
|
|
66
|
+
inset-inline: 0;
|
|
67
|
+
min-width: 0;
|
|
68
|
+
padding-inline: inherit;
|
|
44
69
|
}
|
|
45
70
|
|
|
46
71
|
.message-scroller__button {
|
|
@@ -92,6 +92,18 @@
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
@container responsive-sidebar-shell (inline-size <= 56rem) {
|
|
95
|
+
/* Narrow hosts flatten the application plane: no desktop chrome remains
|
|
96
|
+
around it, so margins and elevation would read as a card in a frame. */
|
|
97
|
+
.responsive-sidebar-shell__main {
|
|
98
|
+
margin: 0;
|
|
99
|
+
border-radius: 0;
|
|
100
|
+
box-shadow: none;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.responsive-sidebar-shell > .app-top-bar {
|
|
104
|
+
background: var(--sigvelo-color-surface);
|
|
105
|
+
}
|
|
106
|
+
|
|
95
107
|
.responsive-sidebar-shell__frame {
|
|
96
108
|
grid-template-columns: minmax(0, 1fr);
|
|
97
109
|
}
|