@mcp-b/react-components 0.55.0 → 0.56.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/dist/{AgentToolRunsContext-GMe_hSnD.d.ts → AgentToolRunsContext-DT50htHj.d.ts} +4 -17
- package/dist/{EmployeeChrome-B605rpVz.d.ts → EmployeeChrome-B7Gt2Hpk.d.ts} +1 -1
- package/dist/{ThinkChatActivity-DENkintt.d.ts → ThinkChatActivity-B6dh3n0-.d.ts} +1 -1
- package/dist/components/agents-sdk/AgentChat.js +10 -14
- package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
- package/dist/components/agents-sdk/EmployeeApp.d.ts +1 -1
- package/dist/components/agents-sdk/EmployeeChrome.d.ts +1 -1
- package/dist/components/agents-sdk/EmployeeChrome.js +2 -2
- package/dist/components/agents-sdk/EmployeeSchedules.d.ts +1 -1
- package/dist/components/agents-sdk/EmployeeStartScreen.d.ts +1 -1
- package/dist/components/agents-sdk/ManagerOfficeScreens.d.ts +1 -1
- package/dist/components/agents-sdk/SubagentRunDetails.d.ts +1 -1
- package/dist/components/agents-sdk/SubagentRunIndicator.d.ts +1 -1
- package/dist/components/agents-sdk/SubagentRunList.d.ts +1 -1
- package/dist/components/agents-sdk/SubagentRunPanel.d.ts +3 -14
- package/dist/components/agents-sdk/SubagentRunPanel.js +11 -14
- package/dist/components/agents-sdk/SubagentRunSelector.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkChat.d.ts +2 -9
- package/dist/components/agents-sdk/ThinkChat.js +3 -36
- package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkFullApp.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkFullApp.js +1 -4
- package/dist/components/agents-sdk/ThinkThreadPicker.js +10 -7
- package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
- package/dist/styles/agent-chat.css +30 -35
- package/dist/styles/app-icon.css +1 -2
- package/dist/styles/base.css +19 -10
- package/dist/styles/brand-loading.css +14 -0
- package/dist/styles/brand.test.ts +21 -0
- package/dist/styles/browser-replay.css +2 -2
- package/dist/styles/button.css +0 -2
- package/dist/styles/checkbox.css +1 -1
- package/dist/styles/composition-motion.css +13 -3
- package/dist/styles/github-motion-mark.css +2 -2
- package/dist/styles/responsive-sidebar-shell.css +11 -1
- package/dist/styles/search-field.css +1 -1
- package/dist/styles/tabs.css +1 -1
- package/dist/styles/think-routine.css +0 -2
- package/dist/styles/think-thread-picker.css +18 -5
- package/dist/styles/toggle-group.css +2 -2
- package/package.json +6 -6
- package/dist/SessionCompaction-CmTJFpzj.d.ts +0 -89
- package/dist/components/agents-sdk/SessionCompaction.d.ts +0 -2
- package/dist/components/agents-sdk/SessionCompaction.js +0 -140
|
@@ -1,25 +1,12 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { UIMessage } from "ai";
|
|
3
3
|
import { useAgentToolEvents } from "agents/react";
|
|
4
|
-
import { AgentToolRunPart, AgentToolRunState
|
|
4
|
+
import { AgentToolRunPart, AgentToolRunState } from "agents/agent-tools";
|
|
5
5
|
|
|
6
6
|
//#region src/components/agents-sdk/AgentToolRunsContext.d.ts
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* AgentToolRunStatus includes it and current retained replay emits it. This
|
|
11
|
-
* type-only correction does not translate records or accept another shape.
|
|
12
|
-
*/
|
|
13
|
-
type AgentToolRunValue<Part extends AgentToolRunPart = AgentToolRunPart> = Omit<AgentToolRunState<Part>, "status"> & {
|
|
14
|
-
status: AgentToolRunStatus;
|
|
15
|
-
};
|
|
16
|
-
/** Whole event-hook value; run records keep the complete native lifecycle. */
|
|
17
|
-
type AgentToolEventsValue<Part extends AgentToolRunPart = UIMessage["parts"][number]> = Omit<ReturnType<typeof useAgentToolEvents<Part>>, "runsById" | "runsByToolCallId" | "unboundRuns" | "getRunsForToolCall"> & {
|
|
18
|
-
runsById: Record<string, AgentToolRunValue<Part>>;
|
|
19
|
-
runsByToolCallId: Record<string, AgentToolRunValue<Part>[]>;
|
|
20
|
-
unboundRuns: AgentToolRunValue<Part>[];
|
|
21
|
-
getRunsForToolCall(toolCallId: string): AgentToolRunValue<Part>[];
|
|
22
|
-
};
|
|
7
|
+
/** Native SDK run and event-hook values, passed without translation. */
|
|
8
|
+
type AgentToolRunValue<Part extends AgentToolRunPart = AgentToolRunPart> = AgentToolRunState<Part>;
|
|
9
|
+
type AgentToolEventsValue<Part extends AgentToolRunPart = UIMessage["parts"][number]> = ReturnType<typeof useAgentToolEvents<Part>>;
|
|
23
10
|
interface AgentToolRunsProviderProps<Part extends AgentToolRunPart = UIMessage["parts"][number]> {
|
|
24
11
|
/** Pass the whole `useAgentToolEvents({ agent })` result directly. */
|
|
25
12
|
agentTools: AgentToolEventsValue<Part>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { J as PromptInputMessage } from "./PromptInput-DGPrCTPl.js";
|
|
2
|
-
import { n as AgentToolRunValue } from "./AgentToolRunsContext-
|
|
2
|
+
import { n as AgentToolRunValue } from "./AgentToolRunsContext-DT50htHj.js";
|
|
3
3
|
import { n as ResponsiveSidebarShell } from "./ResponsiveSidebarShell-BUBQa_IV.js";
|
|
4
4
|
import { t as ThinkThreadItem } from "./ThinkThreadPicker-DX0lL-P7.js";
|
|
5
5
|
import * as React from "react";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as AgentMessageRenderPartContext } from "./AgentMessageParts-C7L-Mv9U.js";
|
|
2
2
|
import { AgentChatMessageContentProps } from "./components/agents-sdk/AgentChat.js";
|
|
3
|
-
import { n as AgentToolRunValue } from "./AgentToolRunsContext-
|
|
3
|
+
import { n as AgentToolRunValue } from "./AgentToolRunsContext-DT50htHj.js";
|
|
4
4
|
import { l as ThinkChatPart } from "./ThinkChatToolParts-D4qcnnxt.js";
|
|
5
5
|
import { t as ThinkChatActivityDescription } from "./ThinkChatActivitySummary-BtBQgMg6.js";
|
|
6
6
|
import * as React from "react";
|
|
@@ -23,20 +23,16 @@ function observeAgentChatDock(element) {
|
|
|
23
23
|
if (!element || typeof ResizeObserver === "undefined") return;
|
|
24
24
|
const root = element.closest(".agent-chat");
|
|
25
25
|
let written;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
root?.style.setProperty("--agent-chat-dock-size", size);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
26
|
+
const measure = () => {
|
|
27
|
+
const size = `${element.offsetHeight}px`;
|
|
28
|
+
if (size === written) return;
|
|
29
|
+
written = size;
|
|
30
|
+
root?.style.setProperty("--agent-chat-dock-size", size);
|
|
31
|
+
};
|
|
32
|
+
measure();
|
|
33
|
+
const observer = new ResizeObserver(measure);
|
|
37
34
|
observer.observe(element);
|
|
38
35
|
return () => {
|
|
39
|
-
cancelAnimationFrame(frame);
|
|
40
36
|
observer.disconnect();
|
|
41
37
|
};
|
|
42
38
|
}
|
|
@@ -472,7 +468,7 @@ function AgentChatApprovals({ thinkStub, pendingApprovals = [], onExecutionSettl
|
|
|
472
468
|
ids: []
|
|
473
469
|
});
|
|
474
470
|
const ids = skipped.source === thinkStub ? skipped.ids : EMPTY_SKIPPED_IDS;
|
|
475
|
-
const items = [...getPendingToolApprovals(messages, { pausedExecutions: Boolean(thinkStub) }).filter((part) => (part.state !== "approval-requested" || onApprovalResponse) && !ids.includes(getApprovalStateKey(part) ?? "")).map((part) => ({ part })), ...pendingApprovals.filter((a) =>
|
|
471
|
+
const items = [...getPendingToolApprovals(messages, { pausedExecutions: Boolean(thinkStub) }).filter((part) => (part.state !== "approval-requested" || onApprovalResponse) && !ids.includes(getApprovalStateKey(part) ?? "")).map((part) => ({ part })), ...pendingApprovals.filter((a) => !ids.includes(a.executionId)).map((approval) => ({ approval }))];
|
|
476
472
|
const pending = items.length ? items : EMPTY_APPROVAL_ITEMS;
|
|
477
473
|
const restore = React.useRef(false);
|
|
478
474
|
const active = React.useRef(false);
|
|
@@ -553,7 +549,7 @@ const compactingNotice = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE_
|
|
|
553
549
|
const COMPACTION_NOTICES = {
|
|
554
550
|
pending: compactingNotice,
|
|
555
551
|
compacted: "Context compacted. Context usage updates after your next message.",
|
|
556
|
-
unchanged: "No
|
|
552
|
+
unchanged: "No summary was created. Run /compact to try again.",
|
|
557
553
|
failed: "Compaction failed — run /compact to try again."
|
|
558
554
|
};
|
|
559
555
|
const COMPACTION_COMMAND = {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as useOptionalAgentToolRuns, i as AgentToolRunsProviderProps, n as AgentToolRunValue, r as AgentToolRunsProvider, t as AgentToolEventsValue } from "../../AgentToolRunsContext-
|
|
1
|
+
import { a as useOptionalAgentToolRuns, i as AgentToolRunsProviderProps, n as AgentToolRunValue, r as AgentToolRunsProvider, t as AgentToolEventsValue } from "../../AgentToolRunsContext-DT50htHj.js";
|
|
2
2
|
export { AgentToolEventsValue, AgentToolRunValue, AgentToolRunsProvider, AgentToolRunsProviderProps, useOptionalAgentToolRuns };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { l as WorkspaceNavigationAdapter } from "../../WorkspaceLink-Bh9-Jo1r.js";
|
|
2
|
-
import { f as EmployeeShellProps, l as EmployeeModelSetup, n as EmployeeBrand, p as EmployeeStatus, t as EmployeeAgentRun } from "../../EmployeeChrome-
|
|
2
|
+
import { f as EmployeeShellProps, l as EmployeeModelSetup, n as EmployeeBrand, p as EmployeeStatus, t as EmployeeAgentRun } from "../../EmployeeChrome-B7Gt2Hpk.js";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/components/agents-sdk/EmployeeApp.d.ts
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as EmployeeDestination, c as EmployeeMenuProps, d as EmployeeRenderLink, f as EmployeeShellProps, h as EmployeeWorkbenchItem, i as EmployeeCompanion, l as EmployeeModelSetup, m as EmployeeView, n as EmployeeBrand, o as EmployeeFollow, p as EmployeeStatus, r as EmployeeChrome, s as EmployeeIdentity, t as EmployeeAgentRun, u as EmployeePasskeyVault } from "../../EmployeeChrome-
|
|
1
|
+
import { a as EmployeeDestination, c as EmployeeMenuProps, d as EmployeeRenderLink, f as EmployeeShellProps, h as EmployeeWorkbenchItem, i as EmployeeCompanion, l as EmployeeModelSetup, m as EmployeeView, n as EmployeeBrand, o as EmployeeFollow, p as EmployeeStatus, r as EmployeeChrome, s as EmployeeIdentity, t as EmployeeAgentRun, u as EmployeePasskeyVault } from "../../EmployeeChrome-B7Gt2Hpk.js";
|
|
2
2
|
export { EmployeeAgentRun, EmployeeBrand, EmployeeChrome, EmployeeCompanion, EmployeeDestination, EmployeeFollow, EmployeeIdentity, EmployeeMenuProps, EmployeeModelSetup, EmployeePasskeyVault, EmployeeRenderLink, EmployeeShellProps, EmployeeStatus, EmployeeView, EmployeeWorkbenchItem };
|
|
@@ -20,7 +20,7 @@ import { useTheme } from "../foundations/ThemeProvider.js";
|
|
|
20
20
|
import { ActionGuide, ActionGuideAction, ActionGuideList, ActionGuideSection } from "../general-purpose/ActionGuide.js";
|
|
21
21
|
import { ResponsiveSidebarShell, useResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
|
|
22
22
|
import { McpServerIcon } from "./McpServerIcon.js";
|
|
23
|
-
import { ThinkThreadPicker } from "./ThinkThreadPicker.js";
|
|
23
|
+
import { ThinkThreadPicker, ThinkThreadStatusIndicators, summarizeThinkThreads } from "./ThinkThreadPicker.js";
|
|
24
24
|
import * as React from "react";
|
|
25
25
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
26
26
|
//#region src/components/agents-sdk/EmployeeChrome.tsx
|
|
@@ -398,7 +398,7 @@ function EmployeeShell({ view, threads, threadId, agentRun, renderLink, appBarLe
|
|
|
398
398
|
agentRun,
|
|
399
399
|
threadTitle: thread?.title
|
|
400
400
|
}),
|
|
401
|
-
compactTitleTrigger: agentRun ? void 0 : /* @__PURE__ */ jsx("span", { children: thread?.title ?? "New chat" }),
|
|
401
|
+
compactTitleTrigger: agentRun ? void 0 : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", { children: thread?.title ?? "New chat" }), /* @__PURE__ */ jsx(ThinkThreadStatusIndicators, { summary: summarizeThinkThreads(history) })] }),
|
|
402
402
|
leading: agentRun ? back : /* @__PURE__ */ jsxs(Fragment, { children: [appBarLeading, /* @__PURE__ */ jsx(EmployeeNewThread, { renderLink })] }),
|
|
403
403
|
compactLeading: !agentRun && view !== "chat" ? compactBack ?? back : void 0,
|
|
404
404
|
actions: employeeShellActions({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as EmployeeMenuProps } from "../../EmployeeChrome-
|
|
1
|
+
import { c as EmployeeMenuProps } from "../../EmployeeChrome-B7Gt2Hpk.js";
|
|
2
2
|
import { t as ThinkRoutine } from "../../ThinkRoutine-Cb1DdaHa.js";
|
|
3
3
|
import { ThinkRoutineActionsRootProps } from "./ThinkRoutineActions.js";
|
|
4
4
|
import * as React from "react";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { J as PromptInputMessage } from "../../PromptInput-DGPrCTPl.js";
|
|
2
|
-
import { a as EmployeeDestination, n as EmployeeBrand } from "../../EmployeeChrome-
|
|
2
|
+
import { a as EmployeeDestination, n as EmployeeBrand } from "../../EmployeeChrome-B7Gt2Hpk.js";
|
|
3
3
|
import { SetupChecklistGroupProps } from "../general-purpose/SetupChecklist.js";
|
|
4
4
|
import { n as McpPluginCatalogProps } from "../../McpPluginCatalog-DNeHDrts.js";
|
|
5
5
|
import { r as WorkspaceMountManagerProps } from "../../WorkspaceMountManager-CkLI1B-G.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as EmployeeShellProps } from "../../EmployeeChrome-
|
|
1
|
+
import { f as EmployeeShellProps } from "../../EmployeeChrome-B7Gt2Hpk.js";
|
|
2
2
|
import { ManagerOfficeConnectedEmployee, ManagerOfficeDestination, ManagerOfficeEmployee } from "./ManagerOffice.js";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as AgentToolRunValue } from "../../AgentToolRunsContext-
|
|
1
|
+
import { n as AgentToolRunValue } from "../../AgentToolRunsContext-DT50htHj.js";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { UIMessage } from "ai";
|
|
4
4
|
import { AgentToolRunPart } from "agents/agent-tools";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as AgentToolRunValue, t as AgentToolEventsValue } from "../../AgentToolRunsContext-
|
|
1
|
+
import { n as AgentToolRunValue, t as AgentToolEventsValue } from "../../AgentToolRunsContext-DT50htHj.js";
|
|
2
2
|
import { ExpansionStore } from "../ai-sdk/ExpansionState.js";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { AgentToolRunPart } from "agents/agent-tools";
|
|
@@ -8,27 +8,18 @@ interface CommandState {
|
|
|
8
8
|
pending: boolean;
|
|
9
9
|
error?: string;
|
|
10
10
|
}
|
|
11
|
-
/** Controlled collection facts supplied by the connection owner. */
|
|
12
|
-
interface SubagentRunCollectionState {
|
|
13
|
-
status: "loading" | "ready" | "error";
|
|
14
|
-
stale: boolean;
|
|
15
|
-
error?: string;
|
|
16
|
-
}
|
|
17
11
|
interface SubagentRunPanelProviderProps {
|
|
18
12
|
/** Conversation identity; changing it resets transient controls without remounting children. */
|
|
19
13
|
scopeKey: string;
|
|
20
14
|
/** The one upstream event-hook value from the parent connection. */
|
|
21
15
|
agentTools: AgentToolEventsValue<AgentToolRunPart>;
|
|
22
|
-
collection: SubagentRunCollectionState;
|
|
23
|
-
/** The host's native execution predicate; presentation does not own cancellation policy. */
|
|
24
|
-
mayExecute: (run: AgentToolRunValue) => boolean;
|
|
25
16
|
selectedRunId?: string;
|
|
26
17
|
parentRunning: boolean;
|
|
27
18
|
onStopCurrentWork: () => Promise<void>;
|
|
28
19
|
onStopRun: (runId: string) => Promise<void>;
|
|
29
20
|
children: React.ReactNode;
|
|
30
21
|
}
|
|
31
|
-
interface SubagentRunPanelValue extends Pick<SubagentRunPanelProviderProps, "agentTools" | "
|
|
22
|
+
interface SubagentRunPanelValue extends Pick<SubagentRunPanelProviderProps, "agentTools" | "selectedRunId" | "parentRunning"> {
|
|
32
23
|
open: boolean;
|
|
33
24
|
setOpen: (open: boolean) => void;
|
|
34
25
|
hiddenCompleted: ReadonlySet<string>;
|
|
@@ -43,8 +34,6 @@ interface SubagentRunPanelValue extends Pick<SubagentRunPanelProviderProps, "age
|
|
|
43
34
|
declare function SubagentRunPanelProvider({
|
|
44
35
|
scopeKey,
|
|
45
36
|
agentTools,
|
|
46
|
-
collection,
|
|
47
|
-
mayExecute,
|
|
48
37
|
selectedRunId,
|
|
49
38
|
parentRunning,
|
|
50
39
|
onStopCurrentWork,
|
|
@@ -60,4 +49,4 @@ declare function SubagentRunPanel({
|
|
|
60
49
|
renderRunLink
|
|
61
50
|
}: SubagentRunPanelProps): React.JSX.Element | null;
|
|
62
51
|
//#endregion
|
|
63
|
-
export {
|
|
52
|
+
export { SubagentRunPanel, SubagentRunPanelProps, SubagentRunPanelProvider, SubagentRunPanelProviderProps, useOptionalSubagentRunPanel };
|
|
@@ -7,6 +7,7 @@ import { AgentChatNotice, AgentChatPromptTray } from "./AgentChat.js";
|
|
|
7
7
|
import { SubagentRunSelector } from "./SubagentRunSelector.js";
|
|
8
8
|
import * as React from "react";
|
|
9
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { agentToolRunMayExecute } from "agents/react";
|
|
10
11
|
//#region src/components/agents-sdk/SubagentRunPanel.tsx
|
|
11
12
|
const IDLE = { pending: false };
|
|
12
13
|
const SubagentRunPanelContext = React.createContext(null);
|
|
@@ -22,7 +23,7 @@ function createPanelState(scopeKey, selectedRunId) {
|
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
25
|
/** A thread's transient controls/disclosure state; run facts remain in the SDK value. */
|
|
25
|
-
function SubagentRunPanelProvider({ scopeKey, agentTools,
|
|
26
|
+
function SubagentRunPanelProvider({ scopeKey, agentTools, selectedRunId, parentRunning, onStopCurrentWork, onStopRun, children }) {
|
|
26
27
|
const [state, setState] = React.useState(() => createPanelState(scopeKey, selectedRunId));
|
|
27
28
|
if (state.scopeKey !== scopeKey) setState(createPanelState(scopeKey, selectedRunId));
|
|
28
29
|
const { open, hiddenCompleted, commands, reportDisclosures, inFlight, restoreFocusRunId } = state;
|
|
@@ -63,8 +64,6 @@ function SubagentRunPanelProvider({ scopeKey, agentTools, collection, mayExecute
|
|
|
63
64
|
const stopRun = React.useCallback((id) => execute(id, () => onStopRun(id)), [execute, onStopRun]);
|
|
64
65
|
const value = React.useMemo(() => ({
|
|
65
66
|
agentTools,
|
|
66
|
-
collection,
|
|
67
|
-
mayExecute,
|
|
68
67
|
selectedRunId,
|
|
69
68
|
parentRunning,
|
|
70
69
|
open,
|
|
@@ -78,8 +77,6 @@ function SubagentRunPanelProvider({ scopeKey, agentTools, collection, mayExecute
|
|
|
78
77
|
stopRun
|
|
79
78
|
}), [
|
|
80
79
|
agentTools,
|
|
81
|
-
collection,
|
|
82
|
-
mayExecute,
|
|
83
80
|
selectedRunId,
|
|
84
81
|
parentRunning,
|
|
85
82
|
open,
|
|
@@ -101,12 +98,12 @@ function useOptionalSubagentRunPanel() {
|
|
|
101
98
|
return React.useContext(SubagentRunPanelContext);
|
|
102
99
|
}
|
|
103
100
|
function getSubagentRunRows(panel) {
|
|
104
|
-
const runs = Object.values(panel.agentTools.runsById).sort((a, b) => Number(!
|
|
101
|
+
const runs = Object.values(panel.agentTools.runsById).sort((a, b) => Number(!agentToolRunMayExecute(a)) - Number(!agentToolRunMayExecute(b)) || a.order - b.order);
|
|
105
102
|
return {
|
|
106
103
|
runs,
|
|
107
|
-
active: runs.filter(
|
|
108
|
-
completed: runs.filter((run) => !
|
|
109
|
-
visible: runs.filter((run) => !panel.hiddenCompleted.has(run.runId) ||
|
|
104
|
+
active: runs.filter(agentToolRunMayExecute),
|
|
105
|
+
completed: runs.filter((run) => !agentToolRunMayExecute(run)),
|
|
106
|
+
visible: runs.filter((run) => !panel.hiddenCompleted.has(run.runId) || agentToolRunMayExecute(run))
|
|
110
107
|
};
|
|
111
108
|
}
|
|
112
109
|
function useSubagentRunFocus(panel, visible) {
|
|
@@ -155,7 +152,7 @@ function delegatedWorkLabel(active, completed) {
|
|
|
155
152
|
function SubagentRunPanelControls({ panel, active }) {
|
|
156
153
|
const queue = useOptionalAgentChatQueue();
|
|
157
154
|
const stop = panel.commands["current-work"] ?? IDLE;
|
|
158
|
-
const canStop = panel.parentRunning || active > 1 || panel.collection.status !== "ready";
|
|
155
|
+
const canStop = panel.parentRunning || active > 1 || panel.agentTools.collection.status !== "ready";
|
|
159
156
|
if (!canStop && !stop.error && !stop.pending) return null;
|
|
160
157
|
return /* @__PURE__ */ jsx(QueueSectionActions, {
|
|
161
158
|
"aria-label": "Delegated work controls",
|
|
@@ -176,7 +173,7 @@ function SubagentRunPanelControls({ panel, active }) {
|
|
|
176
173
|
}
|
|
177
174
|
function SubagentRunRow({ panel, run, renderRunLink }) {
|
|
178
175
|
const command = panel.commands[run.runId] ?? IDLE;
|
|
179
|
-
const actionable =
|
|
176
|
+
const actionable = agentToolRunMayExecute(run) || command.error || command.pending;
|
|
180
177
|
return /* @__PURE__ */ jsxs(QueueItem, {
|
|
181
178
|
"data-run-id": run.runId,
|
|
182
179
|
children: [/* @__PURE__ */ jsxs(QueueItemContent, { children: [/* @__PURE__ */ jsx(SubagentRunSelector, {
|
|
@@ -240,11 +237,11 @@ function SubagentRunPanelContent({ panel, renderRunLink }) {
|
|
|
240
237
|
role: "alert",
|
|
241
238
|
children: stop.error
|
|
242
239
|
}) : null,
|
|
243
|
-
panel.collection.status === "loading" ? /* @__PURE__ */ jsx(AgentChatNotice, { children: panel.collection.stale ? "Reconnecting. Last known runs are shown." : "Loading delegated work…" }) : null,
|
|
244
|
-
panel.collection.status === "error" ? /* @__PURE__ */ jsx(AgentChatNotice, {
|
|
240
|
+
panel.agentTools.collection.status === "loading" ? /* @__PURE__ */ jsx(AgentChatNotice, { children: panel.agentTools.collection.stale ? "Reconnecting. Last known runs are shown." : "Loading delegated work…" }) : null,
|
|
241
|
+
panel.agentTools.collection.status === "error" ? /* @__PURE__ */ jsx(AgentChatNotice, {
|
|
245
242
|
"data-tone": "danger",
|
|
246
243
|
role: "alert",
|
|
247
|
-
children: panel.collection.error ?? "Could not refresh delegated work. Last known runs are retained."
|
|
244
|
+
children: panel.agentTools.collection.error ?? "Could not refresh delegated work. Last known runs are retained."
|
|
248
245
|
}) : null,
|
|
249
246
|
/* @__PURE__ */ jsx(QueueList, {
|
|
250
247
|
"aria-label": "Delegated work runs",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as AgentToolRunValue } from "../../AgentToolRunsContext-
|
|
1
|
+
import { n as AgentToolRunValue } from "../../AgentToolRunsContext-DT50htHj.js";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { UIMessage } from "ai";
|
|
4
4
|
import { AgentToolRunPart } from "agents/agent-tools";
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { J as PromptInputMessage } from "../../PromptInput-DGPrCTPl.js";
|
|
2
2
|
import { i as AgentMessageRenderPartContext } from "../../AgentMessageParts-C7L-Mv9U.js";
|
|
3
3
|
import { AgentChatMessageContentProps, AgentChatRootProps } from "./AgentChat.js";
|
|
4
|
-
import { o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, t as ThinkChatActivity } from "../../ThinkChatActivity-
|
|
4
|
+
import { o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, t as ThinkChatActivity } from "../../ThinkChatActivity-B6dh3n0-.js";
|
|
5
5
|
import { i as ThinkChatValue } from "../../ThinkChatContext-COIgzkYp.js";
|
|
6
6
|
import { n as WorkspaceFileRenderer } from "../../WorkspaceMessageResponse-BApg8KZv.js";
|
|
7
|
-
import { o as UseSessionCompactionResult } from "../../SessionCompaction-CmTJFpzj.js";
|
|
8
7
|
import * as React from "react";
|
|
9
8
|
import { ChatStatus, UIMessage } from "ai";
|
|
10
9
|
import { DataTag, UndefinedInitialDataOptions } from "@tanstack/react-query";
|
|
@@ -64,11 +63,6 @@ declare function ThinkChatApprovals({
|
|
|
64
63
|
children
|
|
65
64
|
}: ThinkChatApprovalsProps): React.JSX.Element;
|
|
66
65
|
declare function ThinkChatRecoveryNotice(): React.JSX.Element;
|
|
67
|
-
declare function ThinkChatCompactionNotice({
|
|
68
|
-
compaction
|
|
69
|
-
}: {
|
|
70
|
-
compaction: UseSessionCompactionResult;
|
|
71
|
-
}): React.JSX.Element;
|
|
72
66
|
declare function useThinkChat<State = unknown, MessageT extends UIMessage = UIMessage>(): Omit<import("@ai-sdk/react").UseChatHelpers<MessageT>, "addToolOutput"> & {
|
|
73
67
|
clearHistory: () => void;
|
|
74
68
|
addToolOutput: (opts: {
|
|
@@ -93,10 +87,9 @@ declare const ThinkChat: {
|
|
|
93
87
|
MessageContent: typeof ThinkChatMessageContent;
|
|
94
88
|
Approvals: typeof ThinkChatApprovals;
|
|
95
89
|
RecoveryNotice: typeof ThinkChatRecoveryNotice;
|
|
96
|
-
CompactionNotice: typeof ThinkChatCompactionNotice;
|
|
97
90
|
Activity: typeof ThinkChatActivity;
|
|
98
91
|
renderActivityPart: (context: AgentMessageRenderPartContext<UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>) => React.ReactNode | undefined;
|
|
99
92
|
createActivityRenderer: typeof createThinkChatActivityRenderer;
|
|
100
93
|
};
|
|
101
94
|
//#endregion
|
|
102
|
-
export { ThinkChat, ThinkChatApprovals, ThinkChatApprovalsProps,
|
|
95
|
+
export { ThinkChat, ThinkChatApprovals, ThinkChatApprovalsProps, ThinkChatMessageContent, ThinkChatMessageContentProps, ThinkChatRecoveryNotice, ThinkChatRoot, ThinkChatRootProps, ThinkPendingExecutionApprovalsQueryKey, ThinkPendingExecutionApprovalsQueryOptions, getThinkChatStatus, normalizeThinkPrompt, thinkPendingExecutionApprovalsQueryOptions, useThinkChat, useThinkPendingExecutionApprovals };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { composerDraftToPrompt, parseComposerLinks } from "../../utils/composer-link.js";
|
|
2
|
-
import { AgentChat,
|
|
3
|
-
import { ThinkChatContext, ThinkChatLiveContext,
|
|
2
|
+
import { AgentChat, useAgentChatControls } from "./AgentChat.js";
|
|
3
|
+
import { ThinkChatContext, ThinkChatLiveContext, useThinkChatContext } from "./ThinkChatContext.js";
|
|
4
4
|
import { ThinkChatActivity, createThinkChatActivityRenderer, renderThinkChatActivityPart } from "./ThinkChatActivity.js";
|
|
5
5
|
import { ThinkRecoveryNotice } from "./ThinkRecoveryNotice.js";
|
|
6
6
|
import { n as WorkspaceMessageResponse, t as WorkspaceFileRendererProvider } from "../../WorkspaceMessageResponse-CUJk9_P5.js";
|
|
@@ -185,38 +185,6 @@ function ThinkChatRecoveryNotice() {
|
|
|
185
185
|
const chat = useThinkChatContext("ThinkChat.RecoveryNotice");
|
|
186
186
|
return /* @__PURE__ */ jsx(AgentChat.Notice, { children: /* @__PURE__ */ jsx(ThinkRecoveryNotice, { chat }) });
|
|
187
187
|
}
|
|
188
|
-
/** A submitted turn dismisses the result visible in that same committed update. */
|
|
189
|
-
function useCompactionDismissal(result, revision) {
|
|
190
|
-
const previousRevision = React.useRef(revision);
|
|
191
|
-
const dismissed = React.useRef(null);
|
|
192
|
-
const revisionChanged = previousRevision.current !== revision;
|
|
193
|
-
React.useLayoutEffect(() => {
|
|
194
|
-
if (!revisionChanged) return;
|
|
195
|
-
previousRevision.current = revision;
|
|
196
|
-
dismissed.current = result;
|
|
197
|
-
}, [
|
|
198
|
-
result,
|
|
199
|
-
revision,
|
|
200
|
-
revisionChanged
|
|
201
|
-
]);
|
|
202
|
-
return revisionChanged || result === dismissed.current;
|
|
203
|
-
}
|
|
204
|
-
function getCompactionNotice(compaction, resultDismissed) {
|
|
205
|
-
if (compaction.compacting) return compactingNotice;
|
|
206
|
-
if (compaction.sessionError) return `Compaction failed: ${compaction.sessionError}`;
|
|
207
|
-
if (compaction.reloadError) return "Transcript may be out of date. The next completed turn will retry the refresh.";
|
|
208
|
-
const result = compaction.lastCompaction;
|
|
209
|
-
if (!result || resultDismissed) return null;
|
|
210
|
-
const freed = Math.round((result.tokensBefore - result.tokensAfter) / 1e3) * 1e3;
|
|
211
|
-
return `Context compacted${freed > 0 ? ` — about ${freed.toLocaleString()} tokens freed` : ""}. Context usage updates after your next message.`;
|
|
212
|
-
}
|
|
213
|
-
function ThinkChatCompactionNotice({ compaction }) {
|
|
214
|
-
const chat = useOptionalThinkChatContext();
|
|
215
|
-
const { submissionVersion } = useAgentChatControls();
|
|
216
|
-
const revision = `${chat?.messages.length}:${submissionVersion}`;
|
|
217
|
-
const dismissed = useCompactionDismissal(compaction.lastCompaction, revision);
|
|
218
|
-
return /* @__PURE__ */ jsx(AgentChat.Notice, { children: getCompactionNotice(compaction, dismissed) });
|
|
219
|
-
}
|
|
220
188
|
function useThinkChat() {
|
|
221
189
|
return useThinkChatContext("useThinkChat");
|
|
222
190
|
}
|
|
@@ -225,10 +193,9 @@ const ThinkChat = {
|
|
|
225
193
|
MessageContent: ThinkChatMessageContent,
|
|
226
194
|
Approvals: ThinkChatApprovals,
|
|
227
195
|
RecoveryNotice: ThinkChatRecoveryNotice,
|
|
228
|
-
CompactionNotice: ThinkChatCompactionNotice,
|
|
229
196
|
Activity: ThinkChatActivity,
|
|
230
197
|
renderActivityPart: renderThinkChatActivityPart,
|
|
231
198
|
createActivityRenderer: createThinkChatActivityRenderer
|
|
232
199
|
};
|
|
233
200
|
//#endregion
|
|
234
|
-
export { ThinkChat, ThinkChatApprovals,
|
|
201
|
+
export { ThinkChat, ThinkChatApprovals, ThinkChatMessageContent, ThinkChatRecoveryNotice, ThinkChatRoot, getThinkChatStatus, normalizeThinkPrompt, thinkPendingExecutionApprovalsQueryOptions, useThinkChat, useThinkPendingExecutionApprovals };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ThinkChatToolRenderers, i as ThinkChatToolRenderer, n as ThinkChatActivityProps, o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, s as renderThinkChatActivityPart, t as ThinkChatActivity } from "../../ThinkChatActivity-
|
|
1
|
+
import { a as ThinkChatToolRenderers, i as ThinkChatToolRenderer, n as ThinkChatActivityProps, o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, s as renderThinkChatActivityPart, t as ThinkChatActivity } from "../../ThinkChatActivity-B6dh3n0-.js";
|
|
2
2
|
export { ThinkChatActivity, ThinkChatActivityProps, ThinkChatActivityRendererOptions, ThinkChatToolRenderer, ThinkChatToolRenderers, createThinkChatActivityRenderer, renderThinkChatActivityPart };
|
|
@@ -35,7 +35,7 @@ declare function ThinkFullAppWorkbench({
|
|
|
35
35
|
className,
|
|
36
36
|
ref,
|
|
37
37
|
...props
|
|
38
|
-
}: ThinkFullAppWorkbenchProps): React.
|
|
38
|
+
}: ThinkFullAppWorkbenchProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | null;
|
|
39
39
|
interface ThinkFullAppResizeHandleProps extends ResizableSidePanelHandleProps {}
|
|
40
40
|
/** Keyboard and pointer resize control; absent while the workbench is closed. */
|
|
41
41
|
declare function ThinkFullAppResizeHandle({
|
|
@@ -67,10 +67,7 @@ function ThinkFullAppWorkbench({ render, className, ref, ...props }) {
|
|
|
67
67
|
className: mergeBaseClassName("think-full-app__aside", className)
|
|
68
68
|
}, props)
|
|
69
69
|
});
|
|
70
|
-
return open ?
|
|
71
|
-
default: "sigvelo-layout-transition",
|
|
72
|
-
children: element
|
|
73
|
-
}) : null;
|
|
70
|
+
return open ? element : null;
|
|
74
71
|
}
|
|
75
72
|
/** Keyboard and pointer resize control; absent while the workbench is closed. */
|
|
76
73
|
function ThinkFullAppResizeHandle({ className, ...props }) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import { K as SpinnerIcon, R as PencilIcon,
|
|
2
|
+
import { K as SpinnerIcon, R as PencilIcon, et as WarningIcon, t as ArchiveIcon } from "../../icons-cuEtsgj9.js";
|
|
3
3
|
import { Button, buttonVariants } from "../foundations/Button.js";
|
|
4
4
|
import { Tooltip } from "../foundations/Tooltip.js";
|
|
5
5
|
import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
|
|
@@ -91,7 +91,10 @@ function ThinkThreadStatusIndicators({ summary, className }) {
|
|
|
91
91
|
summary.attention ? /* @__PURE__ */ jsxs("span", {
|
|
92
92
|
className: "think-thread-status-indicators__item",
|
|
93
93
|
"data-status": "attention",
|
|
94
|
-
children: [/* @__PURE__ */ jsx(
|
|
94
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
95
|
+
className: "think-thread-status-dot",
|
|
96
|
+
"aria-hidden": "true"
|
|
97
|
+
}), /* @__PURE__ */ jsx("span", { children: summary.attention })]
|
|
95
98
|
}) : null,
|
|
96
99
|
summary.failed ? /* @__PURE__ */ jsxs("span", {
|
|
97
100
|
className: "think-thread-status-indicators__item",
|
|
@@ -167,10 +170,7 @@ function ThinkThreadPicker({ threads, renderThreadLink, createThreadLink, onSele
|
|
|
167
170
|
className: "think-thread-picker__title sigvelo-truncate",
|
|
168
171
|
children: title
|
|
169
172
|
}),
|
|
170
|
-
/* @__PURE__ */ jsx(ThinkThreadStatusIndicators, {
|
|
171
|
-
summary: statusSummary,
|
|
172
|
-
className: "sigvelo-visually-hidden"
|
|
173
|
-
}),
|
|
173
|
+
/* @__PURE__ */ jsx(ThinkThreadStatusIndicators, { summary: statusSummary }),
|
|
174
174
|
createThreadLink ? /* @__PURE__ */ jsxs(Tooltip.Root, { children: [/* @__PURE__ */ jsx(Tooltip.Trigger, {
|
|
175
175
|
render: /* @__PURE__ */ jsx(LinkButton, {
|
|
176
176
|
ref: createButtonRef,
|
|
@@ -245,7 +245,10 @@ function ThinkThreadPicker({ threads, renderThreadLink, createThreadLink, onSele
|
|
|
245
245
|
role: "img",
|
|
246
246
|
"aria-label": statusLabel,
|
|
247
247
|
title: statusLabel,
|
|
248
|
-
children: busy ? /* @__PURE__ */ jsx(SpinnerIcon, {}) : /* @__PURE__ */ jsx(
|
|
248
|
+
children: busy ? /* @__PURE__ */ jsx(SpinnerIcon, {}) : /* @__PURE__ */ jsx("span", {
|
|
249
|
+
className: "think-thread-status-dot",
|
|
250
|
+
"aria-hidden": "true"
|
|
251
|
+
})
|
|
249
252
|
}) : timestamp?.date ? /* @__PURE__ */ jsx("time", {
|
|
250
253
|
className: "think-thread-picker__thread-time",
|
|
251
254
|
dateTime: timestamp.date.toISOString(),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as AgentToolRunValue } from "../../AgentToolRunsContext-
|
|
1
|
+
import { n as AgentToolRunValue } from "../../AgentToolRunsContext-DT50htHj.js";
|
|
2
2
|
import { i as ThinkChatValue } from "../../ThinkChatContext-COIgzkYp.js";
|
|
3
3
|
import { SubagentRunMetadataProps } from "../agents-sdk/SubagentRunDetails.js";
|
|
4
4
|
import * as React from "react";
|
|
@@ -21,6 +21,16 @@
|
|
|
21
21
|
min-block-size: 0;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
/* One gutter contract for the transcript and floating composer, including
|
|
25
|
+
safe areas. The prompt's internal text padding is independent. */
|
|
26
|
+
.agent-chat__transcript-content,
|
|
27
|
+
.agent-chat__dock {
|
|
28
|
+
--agent-chat-used-column-inset: var(--agent-chat-column-inset, var(--sigvelo-spacing-4));
|
|
29
|
+
|
|
30
|
+
padding-inline: max(var(--agent-chat-used-column-inset), env(safe-area-inset-left, 0px))
|
|
31
|
+
max(var(--agent-chat-used-column-inset), env(safe-area-inset-right, 0px));
|
|
32
|
+
}
|
|
33
|
+
|
|
24
34
|
/* Room for the last message to scroll clear of the floating composer.
|
|
25
35
|
--agent-chat-dock-size is set from a ResizeObserver in AgentChat. */
|
|
26
36
|
.agent-chat__transcript-content {
|
|
@@ -31,21 +41,14 @@
|
|
|
31
41
|
--message-scroller-virtual-block-start: var(--sigvelo-spacing-8);
|
|
32
42
|
|
|
33
43
|
min-inline-size: 0;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
cannot overflow the scroller or eat the composer clearance. */
|
|
38
|
-
--agent-chat-used-column-inset: var(--agent-chat-column-inset, var(--sigvelo-spacing-4));
|
|
39
|
-
inline-size: min(
|
|
40
|
-
calc(100% - 2 * var(--agent-chat-used-column-inset)),
|
|
41
|
-
var(--agent-chat-content-max-inline-size, var(--sigvelo-measure-wide-block))
|
|
42
|
-
);
|
|
44
|
+
/* Auto width subtracts the gutters from the content box; cap the reading
|
|
45
|
+
width at the same measure as the composer. */
|
|
46
|
+
max-inline-size: var(--agent-chat-content-max-inline-size, var(--sigvelo-measure-wide-block));
|
|
43
47
|
margin-inline: auto;
|
|
44
48
|
/* Clearance = composer + its scrim band, so a transcript resting at the
|
|
45
49
|
bottom never sits inside the fade. */
|
|
46
50
|
padding-block: var(--message-scroller-virtual-block-start)
|
|
47
51
|
calc(var(--agent-chat-dock-size, 5rem) + var(--agent-chat-dock-scrim-fade, 2.5rem));
|
|
48
|
-
padding-inline: var(--agent-chat-used-column-inset);
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
.agent-chat:not(:has(.agent-chat__dock-content > :not(.agent-chat__notice:empty)))
|
|
@@ -69,11 +72,15 @@
|
|
|
69
72
|
lower edge, so the state sits slightly high rather than under it. The
|
|
70
73
|
shared brand loading state brings its own type and colour. */
|
|
71
74
|
.agent-chat__transcript-loading {
|
|
75
|
+
overflow: hidden;
|
|
76
|
+
scrollbar-gutter: stable;
|
|
72
77
|
padding-block-end: var(--agent-chat-dock-size, 5rem);
|
|
73
78
|
}
|
|
74
79
|
|
|
75
80
|
.agent-chat:not(:has(.agent-chat__dock-content > :not(.agent-chat__notice:empty)))
|
|
76
81
|
.agent-chat__transcript-loading {
|
|
82
|
+
overflow: hidden;
|
|
83
|
+
scrollbar-gutter: stable;
|
|
77
84
|
padding-block-end: 0;
|
|
78
85
|
}
|
|
79
86
|
|
|
@@ -145,6 +152,8 @@
|
|
|
145
152
|
}
|
|
146
153
|
|
|
147
154
|
.agent-chat-start-screen__composer > .agent-chat__dock > .agent-chat__dock-content {
|
|
155
|
+
/* The start screen already reserves its own scrollbar gutter. */
|
|
156
|
+
scrollbar-gutter: auto;
|
|
148
157
|
--agent-chat-dock-ink-room: 0px;
|
|
149
158
|
|
|
150
159
|
overflow: visible;
|
|
@@ -301,14 +310,7 @@
|
|
|
301
310
|
position: absolute;
|
|
302
311
|
inset-inline: 0;
|
|
303
312
|
inset-block-end: 0;
|
|
304
|
-
padding-block: 0 max(var(--sigvelo-spacing-
|
|
305
|
-
/* Same column as the transcript (Codex px-toolbar). The pill's own
|
|
306
|
-
padding lives on .prompt-input. */
|
|
307
|
-
padding-inline: max(
|
|
308
|
-
var(--agent-chat-column-inset, var(--sigvelo-spacing-4)),
|
|
309
|
-
env(safe-area-inset-left, 0px)
|
|
310
|
-
)
|
|
311
|
-
max(var(--agent-chat-column-inset, var(--sigvelo-spacing-4)), env(safe-area-inset-right, 0px));
|
|
313
|
+
padding-block: 0 max(var(--sigvelo-spacing-2), env(safe-area-inset-bottom, 0px));
|
|
312
314
|
}
|
|
313
315
|
|
|
314
316
|
/* Solid behind the composer itself, dissolving upward so passing transcript
|
|
@@ -446,6 +448,12 @@
|
|
|
446
448
|
only where there is genuinely no room for it. */
|
|
447
449
|
/* Local wrap. Not --sigvelo-layout-break-compact. */
|
|
448
450
|
@container agent-chat (inline-size <= 36rem) {
|
|
451
|
+
.agent-chat__transcript-content,
|
|
452
|
+
.agent-chat__dock {
|
|
453
|
+
/* Codex Chrome extension: [--padding-toolbar:calc(var(--spacing)*2)] = 8px. */
|
|
454
|
+
--agent-chat-used-column-inset: var(--agent-chat-column-inset, var(--sigvelo-spacing-2));
|
|
455
|
+
}
|
|
456
|
+
|
|
449
457
|
.agent-chat__transcript-content {
|
|
450
458
|
/* A notch pushes the first row down only as far as it must: the desktop
|
|
451
459
|
inset already clears shallow insets, so only deeper ones add height. */
|
|
@@ -453,23 +461,6 @@
|
|
|
453
461
|
var(--sigvelo-spacing-8),
|
|
454
462
|
calc(var(--sigvelo-spacing-5) + env(safe-area-inset-top, 0px))
|
|
455
463
|
);
|
|
456
|
-
|
|
457
|
-
--agent-chat-used-column-inset: var(--agent-chat-column-inset, var(--sigvelo-spacing-2));
|
|
458
|
-
inline-size: min(
|
|
459
|
-
calc(100% - 2 * var(--agent-chat-used-column-inset)),
|
|
460
|
-
var(--agent-chat-content-max-inline-size, var(--sigvelo-measure-wide-block))
|
|
461
|
-
);
|
|
462
|
-
/* Codex Chrome extension: [--padding-toolbar:calc(var(--spacing)*2)] = 8px. */
|
|
463
|
-
padding-inline: var(--agent-chat-used-column-inset);
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
.agent-chat__dock {
|
|
467
|
-
padding-block-end: max(var(--sigvelo-layout-stack), env(safe-area-inset-bottom, 0px));
|
|
468
|
-
padding-inline: max(
|
|
469
|
-
var(--agent-chat-column-inset, var(--sigvelo-spacing-2)),
|
|
470
|
-
env(safe-area-inset-left, 0px)
|
|
471
|
-
)
|
|
472
|
-
max(var(--agent-chat-column-inset, var(--sigvelo-spacing-2)), env(safe-area-inset-right, 0px));
|
|
473
464
|
}
|
|
474
465
|
|
|
475
466
|
.agent-chat-start-screen__content {
|
|
@@ -516,6 +507,10 @@
|
|
|
516
507
|
.agent-chat__dock-content {
|
|
517
508
|
--agent-chat-dock-ink-room: var(--sigvelo-spacing-5);
|
|
518
509
|
|
|
510
|
+
/* Match the transcript viewport on platforms with classic scrollbars,
|
|
511
|
+
even while this dock is short enough not to scroll. */
|
|
512
|
+
scrollbar-gutter: stable;
|
|
513
|
+
|
|
519
514
|
min-block-size: 0;
|
|
520
515
|
overflow: auto;
|
|
521
516
|
margin: calc(-1 * var(--agent-chat-dock-ink-room));
|