@workerdeck/ui 0.19.0 → 0.21.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/build/{SessionPanel-CnU_IJ3-.d.mts → SessionPanel-BjNAnWMF.d.mts} +41 -3
- package/build/{SessionPanel-CHktI2CF.mjs → SessionPanel-DNuPKg5c.mjs} +20 -12
- package/build/{SessionPanel-CHktI2CF.mjs.map → SessionPanel-DNuPKg5c.mjs.map} +1 -1
- package/build/index.d.mts +269 -33
- package/build/index.mjs +530 -381
- package/build/index.mjs.map +1 -1
- package/build/workspace.d.mts +10 -1
- package/build/workspace.mjs +4 -2
- package/build/workspace.mjs.map +1 -1
- package/package.json +9 -5
- package/src/components/agent/SessionBrowser.tsx +131 -278
- package/src/components/agent/SessionItem.tsx +538 -0
- package/src/components/agent/SessionPanel.tsx +92 -14
- package/src/components/agent/SessionStatusIcon.tsx +43 -0
- package/src/components/agent/SessionSteps.tsx +108 -57
- package/src/components/agent/SessionWorkspace.tsx +11 -0
- package/src/index.ts +5 -1
- package/src/styles/theme.css +63 -8
package/build/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as formatDuration, c as formatRelativeTime, d as rateLimitWindowSeconds, f as toolInputPreview, i as formatCountdown, l as formatTokens, n as formatBytes, o as formatRateLimitWindow, r as formatCost, s as formatRateLimitWindowLong, t as formatAgoPrecise, u as friendlyModel } from "./format-ljc3lKpA.mjs";
|
|
2
|
-
import { C as permissionModeChoices, S as PermissionModeSelectProps, _ as useAffordances, a as SessionVitals, b as PermissionModeMeta, c as TranscriptDensityProvider, d as TranscriptVariantProvider, f as useTranscriptDensity, g as WithActions, h as TerminalAffordances, i as SessionSurfacePanel, l as TranscriptFont, m as CopyAction, n as SessionPanel, o as TerminalMetrics, p as useTranscriptVariant, r as SessionPanelProps, s as TranscriptDensity, t as SessionControls, u as TranscriptVariant, v as PERMISSION_MODES, w as permissionModeMeta, x as PermissionModeSelect, y as PermissionModeChoice } from "./SessionPanel-
|
|
2
|
+
import { C as permissionModeChoices, S as PermissionModeSelectProps, _ as useAffordances, a as SessionVitals, b as PermissionModeMeta, c as TranscriptDensityProvider, d as TranscriptVariantProvider, f as useTranscriptDensity, g as WithActions, h as TerminalAffordances, i as SessionSurfacePanel, l as TranscriptFont, m as CopyAction, n as SessionPanel, o as TerminalMetrics, p as useTranscriptVariant, r as SessionPanelProps, s as TranscriptDensity, t as SessionControls, u as TranscriptVariant, v as PERMISSION_MODES, w as permissionModeMeta, x as PermissionModeSelect, y as PermissionModeChoice } from "./SessionPanel-BjNAnWMF.mjs";
|
|
3
3
|
import * as _$react from "react";
|
|
4
4
|
import { ButtonHTMLAttributes, FunctionComponent, HTMLAttributes, InputHTMLAttributes, ReactElement, ReactNode, Ref, RefObject, TextareaHTMLAttributes } from "react";
|
|
5
5
|
import { VariantProps } from "class-variance-authority";
|
|
@@ -1872,6 +1872,37 @@ declare function SessionList({
|
|
|
1872
1872
|
className
|
|
1873
1873
|
}: SessionListProps): _$react.JSX.Element;
|
|
1874
1874
|
//#endregion
|
|
1875
|
+
//#region src/components/agent/SessionStatusIcon.d.ts
|
|
1876
|
+
/**
|
|
1877
|
+
* State as one glyph — a ringing bell when it wants a human, a spinner while it
|
|
1878
|
+
* works, a moon when it is only sleeping. Replaces the text badge: in a sidebar
|
|
1879
|
+
* the word costs more room than it earns, and the states that matter are the two
|
|
1880
|
+
* you can recognise without reading.
|
|
1881
|
+
*
|
|
1882
|
+
* **It reads `row.state`, not `info.status`, and that distinction is the whole
|
|
1883
|
+
* point of the row model.** `sessionState` already folds in the arm this glyph
|
|
1884
|
+
* cannot see for itself: a *background* sub-agent outlives its turn by design,
|
|
1885
|
+
* so the turn ends, `status` comes to rest at `idle`, and the agent keeps
|
|
1886
|
+
* working. Reading the raw status drew a **moon on a row filed under the
|
|
1887
|
+
* "Working" header** — the list contradicting itself on one line, which is
|
|
1888
|
+
* exactly what a derived view model exists to prevent. The value was in scope
|
|
1889
|
+
* and unread.
|
|
1890
|
+
*
|
|
1891
|
+
* The terminal statuses still come off `info.status`, because `ended` collapses
|
|
1892
|
+
* `failed` and `closed` into one bucket and those are worth telling apart here.
|
|
1893
|
+
*
|
|
1894
|
+
* It lives in its own file rather than inside the dashboard's browser because
|
|
1895
|
+
* the extension's cards draw it too, and a second copy there is how the two
|
|
1896
|
+
* lists last disagreed about what a parked session looks like.
|
|
1897
|
+
*/
|
|
1898
|
+
declare function SessionStatusIcon({
|
|
1899
|
+
row,
|
|
1900
|
+
className
|
|
1901
|
+
}: {
|
|
1902
|
+
row: SessionRow;
|
|
1903
|
+
className?: string;
|
|
1904
|
+
}): _$react.JSX.Element;
|
|
1905
|
+
//#endregion
|
|
1875
1906
|
//#region src/components/agent/SessionBrowser.d.ts
|
|
1876
1907
|
/**
|
|
1877
1908
|
* A sessions list with the affordances a list of thirty needs: search, facets,
|
|
@@ -1895,6 +1926,13 @@ interface SessionBrowserProps {
|
|
|
1895
1926
|
* phone — makes the scope filter genuinely inert rather than empty. */
|
|
1896
1927
|
scope?: WorkspaceScope;
|
|
1897
1928
|
activeId?: string;
|
|
1929
|
+
/**
|
|
1930
|
+
* Which sub-agent the host currently has open, by tool-use id — the *finer*
|
|
1931
|
+
* of the two selections. The card holding it drops to the secondary grey and
|
|
1932
|
+
* that step takes the blue; see `SessionItem`. A host with no sub-agent
|
|
1933
|
+
* surface leaves it undefined and nothing changes.
|
|
1934
|
+
*/
|
|
1935
|
+
activeSubagentId?: string;
|
|
1898
1936
|
onSelect?: (row: SessionRow) => void;
|
|
1899
1937
|
onDelete?: (row: SessionRow) => void;
|
|
1900
1938
|
/**
|
|
@@ -1907,10 +1945,27 @@ interface SessionBrowserProps {
|
|
|
1907
1945
|
* double-click would have already left the page.
|
|
1908
1946
|
*/
|
|
1909
1947
|
onRename?: (row: SessionRow, title: string) => void;
|
|
1948
|
+
/**
|
|
1949
|
+
* Clear the conversation in place, from the row's eraser. Same session, empty
|
|
1950
|
+
* context — **not** a delete: the engine keeps the old conversation and it
|
|
1951
|
+
* stays resumable, which is why the row's copy never says "deleted".
|
|
1952
|
+
*
|
|
1953
|
+
* Rendered only where the session's own capability record allows it
|
|
1954
|
+
* (`capabilities.clearContext`, absent = false), so a row that cannot be
|
|
1955
|
+
* cleared has no eraser rather than one that errors. Omit the prop to have
|
|
1956
|
+
* none at all — a host with no way to send a session command has nothing to
|
|
1957
|
+
* hang it on (this is a WS command, not a REST route).
|
|
1958
|
+
*/
|
|
1959
|
+
onClearContext?: (row: SessionRow) => void;
|
|
1910
1960
|
/** Open a session *at* one of its sub-agents, when the host can scroll a
|
|
1911
1961
|
* transcript to a `Task` row. Absent, the sub-agent list still expands and a
|
|
1912
1962
|
* step just opens its session — see `SessionRowItemProps`. */
|
|
1913
1963
|
onSelectSubagent?: (row: SessionRow, toolUseId: string) => void;
|
|
1964
|
+
/** Open a session and travel to one of its **tasks** — see
|
|
1965
|
+
* `SessionItem.onRevealStep`. A task has no agent behind it, so it is a place
|
|
1966
|
+
* to go rather than a thing to open, and framing it as an agent drew an empty
|
|
1967
|
+
* view. */
|
|
1968
|
+
onRevealStep?: (row: SessionRow, toolUseId: string) => void;
|
|
1914
1969
|
/** Rendered when nothing at all exists (as opposed to nothing matching). */
|
|
1915
1970
|
emptyState?: React.ReactNode;
|
|
1916
1971
|
/**
|
|
@@ -1959,37 +2014,168 @@ declare function SessionBrowser({
|
|
|
1959
2014
|
onConfigChange,
|
|
1960
2015
|
scope,
|
|
1961
2016
|
activeId,
|
|
2017
|
+
activeSubagentId,
|
|
1962
2018
|
onSelect,
|
|
1963
2019
|
onDelete,
|
|
1964
2020
|
onRename,
|
|
2021
|
+
onClearContext,
|
|
1965
2022
|
onSelectSubagent,
|
|
2023
|
+
onRevealStep,
|
|
1966
2024
|
emptyState,
|
|
1967
2025
|
showControls,
|
|
1968
2026
|
projectIcons,
|
|
1969
2027
|
className
|
|
1970
2028
|
}: SessionBrowserProps): _$react.JSX.Element;
|
|
2029
|
+
//#endregion
|
|
2030
|
+
//#region src/components/agent/SessionItem.d.ts
|
|
1971
2031
|
/**
|
|
1972
|
-
*
|
|
1973
|
-
*
|
|
1974
|
-
*
|
|
1975
|
-
*
|
|
1976
|
-
*
|
|
1977
|
-
*
|
|
1978
|
-
*
|
|
1979
|
-
*
|
|
1980
|
-
*
|
|
1981
|
-
*
|
|
1982
|
-
*
|
|
1983
|
-
*
|
|
1984
|
-
*
|
|
1985
|
-
*
|
|
1986
|
-
*
|
|
2032
|
+
* One session in a list — the **card**, and the only drawing of it in the
|
|
2033
|
+
* product.
|
|
2034
|
+
*
|
|
2035
|
+
* The dashboard's `SessionBrowser` and the VS Code sidebar both render this;
|
|
2036
|
+
* before it existed they rendered two hand-kept copies that agreed on the model
|
|
2037
|
+
* and disagreed on every measurement, and the two lists read as two products.
|
|
2038
|
+
* iOS mirrors this file's geometry rather than either copy.
|
|
2039
|
+
*
|
|
2040
|
+
* ## The shape
|
|
2041
|
+
*
|
|
2042
|
+
* A 4px-padded, 4px-rounded card whose whole surface is the hit target, holding
|
|
2043
|
+
* two 20px lines and, when it is open, the work under them.
|
|
2044
|
+
*
|
|
2045
|
+
* **Line one is state and identity**: the status glyph leads, the title takes
|
|
2046
|
+
* the rest, and the line closes with the unread badge and the context ring. The
|
|
2047
|
+
* glyph leads because a sessions list is scanned for *state* first — which of
|
|
2048
|
+
* these is working, which is waiting on me — and the title is what you read once
|
|
2049
|
+
* the glyph has told you which row to read. The two readings that close the line
|
|
2050
|
+
* are the two that change while you are looking at them.
|
|
2051
|
+
*
|
|
2052
|
+
* **Line two is identity and cost**: the engine's mark and its model in the
|
|
2053
|
+
* vendor's own colour, then the project, then everything else the host wants
|
|
2054
|
+
* said, then the age — a `·`-joined run that ends in the one part of it that
|
|
2055
|
+
* keeps moving. The line's right edge belongs to the disclosure (which doubles
|
|
2056
|
+
* as the count of the work below, so the card says how much there is without
|
|
2057
|
+
* being opened) and to the host's own actions.
|
|
2058
|
+
*
|
|
2059
|
+
* **The gutter is one 16px cell, shared by both lines.** The two glyphs are
|
|
2060
|
+
* different sizes and laying them out as plain flex children starts the two
|
|
2061
|
+
* text columns at different x — two pixels, invisible as a measurement and
|
|
2062
|
+
* obvious as a misalignment. Centring inside a fixed cell fixes the text edges
|
|
2063
|
+
* and the ink centres at once. It is the terminal gutter's argument at card
|
|
2064
|
+
* scale.
|
|
2065
|
+
*
|
|
2066
|
+
* ## Selection
|
|
2067
|
+
*
|
|
2068
|
+
* **Selection is the card's own fill**, not a gutter bar: the card is an inset
|
|
2069
|
+
* shape with air around it, so filling it is unambiguous in a way a fill on a
|
|
2070
|
+
* full-bleed row is not, and it leaves the left edge to the state glyph.
|
|
2071
|
+
*
|
|
2072
|
+
* There are **two selections at two grains**, and the card and its steps split
|
|
2073
|
+
* them:
|
|
2074
|
+
*
|
|
2075
|
+
* | what is on screen | card | the step |
|
|
2076
|
+
* | --- | --- | --- |
|
|
2077
|
+
* | nothing | transparent, hovers | transparent, hovers |
|
|
2078
|
+
* | this session | `--row-selected` (blue) | transparent, hovers |
|
|
2079
|
+
* | one of its sub-agents | `--row-selected-weak` (grey) | `--row-selected` (blue) |
|
|
2080
|
+
*
|
|
2081
|
+
* **The blue always marks the finest thing selected.** Opening a sub-agent
|
|
2082
|
+
* selects its session too, so both claims are true at once and the blue can only
|
|
2083
|
+
* carry one; it goes to the agent, and the card steps back to grey — present,
|
|
2084
|
+
* holding what you are looking at, not itself the thing you are looking at.
|
|
2085
|
+
* Reversing that (blue card, blue row inside it) says nothing, which is what a
|
|
2086
|
+
* blue-on-blue card looked like.
|
|
2087
|
+
*
|
|
2088
|
+
* A filled card does **not** also answer hover: the fill is already spent, and a
|
|
2089
|
+
* selected row that lightened under the pointer read as a third state nobody
|
|
2090
|
+
* could name. Its steps still do, on `--row-active`, which is a tint and so
|
|
2091
|
+
* works on all three grounds.
|
|
2092
|
+
*
|
|
2093
|
+
* A **task** never takes the blue. It is a reference to a place inside a
|
|
2094
|
+
* session, so pressing one selects the session and travels to its marker — see
|
|
2095
|
+
* `StepRow`.
|
|
1987
2096
|
*/
|
|
1988
|
-
|
|
1989
|
-
row
|
|
1990
|
-
}: {
|
|
2097
|
+
interface SessionItemProps {
|
|
1991
2098
|
row: SessionRow;
|
|
1992
|
-
|
|
2099
|
+
/** This session is the one the host is showing. */
|
|
2100
|
+
active?: boolean;
|
|
2101
|
+
/**
|
|
2102
|
+
* Which sub-agent is open, by `Step.key` — the *finer* of the two selections.
|
|
2103
|
+
* When it names one of this card's agents, that step takes the blue and the
|
|
2104
|
+
* card drops to the secondary grey. A key belonging to some other card's
|
|
2105
|
+
* agent, or to a task, changes nothing here.
|
|
2106
|
+
*/
|
|
2107
|
+
activeStepKey?: string;
|
|
2108
|
+
/** Shown when the list is not already grouped by gateway. */
|
|
2109
|
+
showGateway?: boolean;
|
|
2110
|
+
/**
|
|
2111
|
+
* False when the list is already grouped by project — the header above has
|
|
2112
|
+
* said the name, so the card must not spend its metadata line repeating it.
|
|
2113
|
+
* What takes the slot is the *sub-path inside the project*
|
|
2114
|
+
* (`projectSubpath`): `packages/ui`, `packages/server` — the one thing the
|
|
2115
|
+
* header cannot say and the only thing that tells two sessions in one repo
|
|
2116
|
+
* apart. A session at the project root has nothing to add and the slot
|
|
2117
|
+
* disappears entirely. Exactly the rule `showGateway` follows one facet over.
|
|
2118
|
+
*/
|
|
2119
|
+
showProject?: boolean;
|
|
2120
|
+
/** Resolved project-icon bytes by content hash. A hash this map has not got
|
|
2121
|
+
* yet simply draws no icon. */
|
|
2122
|
+
projectIcons?: Record<string, string>;
|
|
2123
|
+
/** Uncontrolled by default — pass both to drive expansion from the host. */
|
|
2124
|
+
expanded?: boolean;
|
|
2125
|
+
onExpandedChange?: (expanded: boolean) => void;
|
|
2126
|
+
onSelect?: () => void;
|
|
2127
|
+
/** Open the session *at* one of its sub-agents — hand the panel body over to
|
|
2128
|
+
* that agent's own work. Only ever called for an **agent** step. Absent is not
|
|
2129
|
+
* a missing feature: without it a step just opens the session, which is all a
|
|
2130
|
+
* host with no sub-agent surface can offer. */
|
|
2131
|
+
onSelectSubagent?: (toolUseId: string) => void;
|
|
2132
|
+
/**
|
|
2133
|
+
* Open the session and travel to a **task**'s row in the transcript — where
|
|
2134
|
+
* the work was started, and where it finished.
|
|
2135
|
+
*
|
|
2136
|
+
* A separate seam from `onSelectSubagent` because the destinations are
|
|
2137
|
+
* different, and conflating them is not a styling detail: a task has no agent
|
|
2138
|
+
* behind it, so framing its tool-use id selects **no items at all** and the
|
|
2139
|
+
* panel draws an empty agent view. That was the bug. A task is a reference,
|
|
2140
|
+
* and the only honest thing to do with a reference is follow it.
|
|
2141
|
+
*/
|
|
2142
|
+
onRevealStep?: (toolUseId: string) => void;
|
|
2143
|
+
/** Enables in-place rename. The trigger is the host's — see `renameOn`. */
|
|
2144
|
+
onRename?: (title: string) => void;
|
|
2145
|
+
/**
|
|
2146
|
+
* How a rename starts. `doubleClick` is the editor feel (a rename is a thing
|
|
2147
|
+
* you do to the word you are looking at); `external` means the host opens it
|
|
2148
|
+
* from its own affordance — a menu entry, a pencil in `actions` — and drives
|
|
2149
|
+
* it through `editing`/`onEditingChange`.
|
|
2150
|
+
*/
|
|
2151
|
+
renameOn?: 'doubleClick' | 'external';
|
|
2152
|
+
editing?: boolean;
|
|
2153
|
+
onEditingChange?: (editing: boolean) => void;
|
|
2154
|
+
/** The card's trailing controls, at the end of line two. A single overflow
|
|
2155
|
+
* glyph is what the design draws; a host with three always-on actions can put
|
|
2156
|
+
* them here instead. */
|
|
2157
|
+
actions?: ReactNode;
|
|
2158
|
+
className?: string;
|
|
2159
|
+
}
|
|
2160
|
+
declare function SessionItem({
|
|
2161
|
+
row,
|
|
2162
|
+
active,
|
|
2163
|
+
activeStepKey,
|
|
2164
|
+
showGateway,
|
|
2165
|
+
showProject,
|
|
2166
|
+
projectIcons,
|
|
2167
|
+
expanded,
|
|
2168
|
+
onExpandedChange,
|
|
2169
|
+
onSelect,
|
|
2170
|
+
onSelectSubagent,
|
|
2171
|
+
onRevealStep,
|
|
2172
|
+
onRename,
|
|
2173
|
+
renameOn,
|
|
2174
|
+
editing,
|
|
2175
|
+
onEditingChange,
|
|
2176
|
+
actions,
|
|
2177
|
+
className
|
|
2178
|
+
}: SessionItemProps): _$react.JSX.Element;
|
|
1993
2179
|
//#endregion
|
|
1994
2180
|
//#region src/components/agent/EngineIcon.d.ts
|
|
1995
2181
|
/**
|
|
@@ -2067,7 +2253,26 @@ type Step = {
|
|
|
2067
2253
|
title: string;
|
|
2068
2254
|
onSelect: () => void;
|
|
2069
2255
|
};
|
|
2070
|
-
|
|
2256
|
+
/**
|
|
2257
|
+
* The steps under one session, **agents first**.
|
|
2258
|
+
*
|
|
2259
|
+
* The two kinds do different things when pressed and are worth different
|
|
2260
|
+
* amounts of attention: an agent has work of its own to go and read, a task is a
|
|
2261
|
+
* marker in a transcript. Interleaved in dispatch order they read as one
|
|
2262
|
+
* undifferentiated list, and the rows you can actually open are scattered
|
|
2263
|
+
* through it. Grouped, the openable ones are a block at the top and the markers
|
|
2264
|
+
* are a tail you can skip.
|
|
2265
|
+
*
|
|
2266
|
+
* Stable **within** each group, deliberately: dispatch order is the only order
|
|
2267
|
+
* these records have that means anything (it is the order the work was started
|
|
2268
|
+
* in), so the sort partitions and never reorders inside a partition.
|
|
2269
|
+
*
|
|
2270
|
+
* `onSelect` is handed the **kind** as well as the id, because the two kinds go
|
|
2271
|
+
* to different places — see `SessionItem`, which is what routes them. Passing
|
|
2272
|
+
* only the id is what let a task be opened as if it were an agent, and a framed
|
|
2273
|
+
* task id matches no items, so the panel drew an **empty agent view**.
|
|
2274
|
+
*/
|
|
2275
|
+
declare function sessionSteps(info: SessionInfo, onSelect: (toolUseId: string, kind: Step['kind']) => void): Step[];
|
|
2071
2276
|
/** How many of these are still going — the live half of the disclosure's count. */
|
|
2072
2277
|
declare function runningSteps(steps: readonly Step[]): number;
|
|
2073
2278
|
/**
|
|
@@ -2094,23 +2299,54 @@ declare function StepToggle({
|
|
|
2094
2299
|
onToggle: () => void;
|
|
2095
2300
|
}): _$react.JSX.Element;
|
|
2096
2301
|
/**
|
|
2097
|
-
* One step under its session
|
|
2098
|
-
*
|
|
2099
|
-
*
|
|
2100
|
-
*
|
|
2101
|
-
*
|
|
2102
|
-
*
|
|
2103
|
-
*
|
|
2104
|
-
*
|
|
2105
|
-
*
|
|
2106
|
-
*
|
|
2107
|
-
*
|
|
2302
|
+
* One step under its session — **pressable, all of them**, and what a press
|
|
2303
|
+
* means is what tells the two kinds apart.
|
|
2304
|
+
*
|
|
2305
|
+
* Pressing an **agent** hands the panel over to that agent's own work
|
|
2306
|
+
* (`SessionPanel.openSubagent`): it is not a session and never becomes one, but
|
|
2307
|
+
* it has a surface, so it can be the selected thing. Pressing a **task** selects
|
|
2308
|
+
* the *session* and travels to that task's marker inside it — a task is a
|
|
2309
|
+
* reference to a place in a transcript, not a thing with a screen, so it can be
|
|
2310
|
+
* followed but never held.
|
|
2311
|
+
*
|
|
2312
|
+
* That is a reversal, and a deliberate one. A task used to be inert markup on
|
|
2313
|
+
* the argument that "a disabled-looking button still announces itself as one" —
|
|
2314
|
+
* correct about the markup, wrong about the premise, because there *was* always
|
|
2315
|
+
* somewhere to go and the row simply swallowed the click on its way there. A row
|
|
2316
|
+
* that looks like a list item, sits in a list, and does nothing when pressed is
|
|
2317
|
+
* the worse lie. So every step answers the pointer and every step answers a
|
|
2318
|
+
* press; only what the press does differs.
|
|
2319
|
+
*
|
|
2320
|
+
* Divided from the card's header by **indentation and its own hit shape**, not
|
|
2321
|
+
* by a rule. The rules came first, on the argument that at 11px an indent is not
|
|
2322
|
+
* enough to say "list inside a row" — and they were right about the reading and
|
|
2323
|
+
* wrong about the cost: a stack of hairlines across every open card turned the
|
|
2324
|
+
* list into a ledger, and a rule cannot answer a pointer. A step that lights up
|
|
2325
|
+
* under the cursor and fills when it is the one on screen says *list* far more
|
|
2326
|
+
* plainly than a line between two of them, and it says it while doing the job
|
|
2327
|
+
* the rule could not.
|
|
2328
|
+
*
|
|
2329
|
+
* **Only an agent can wear the selection**, and `active` is guarded on that here
|
|
2330
|
+
* rather than trusted from the caller: a host that hands back a task's key is
|
|
2331
|
+
* describing where it navigated, not what it selected, and the row must not
|
|
2332
|
+
* paint itself blue for it.
|
|
2333
|
+
*
|
|
2334
|
+
* The hover is `--row-active` — **alpha, not a flat fill** — because this row
|
|
2335
|
+
* has to answer the pointer on three different grounds: a transparent card, a
|
|
2336
|
+
* blue one (its session is selected), and a grey one (a sibling agent is). A
|
|
2337
|
+
* flat value tuned for any of those is wrong on the other two; a tint darkens or
|
|
2338
|
+
* lifts whatever it lands on. It is the one place in the list where the alpha
|
|
2339
|
+
* token earns its keep.
|
|
2108
2340
|
*/
|
|
2109
2341
|
declare function StepRow({
|
|
2110
2342
|
step,
|
|
2343
|
+
active,
|
|
2111
2344
|
onSelect
|
|
2112
2345
|
}: {
|
|
2113
2346
|
step: Step;
|
|
2347
|
+
/** The panel is showing this step's own work. Ignored for tasks, which cannot
|
|
2348
|
+
* be the selected thing — see above. */
|
|
2349
|
+
active?: boolean;
|
|
2114
2350
|
onSelect: () => void;
|
|
2115
2351
|
}): _$react.JSX.Element;
|
|
2116
2352
|
//#endregion
|
|
@@ -2299,5 +2535,5 @@ declare function toolIcon(toolName: string): LucideIcon;
|
|
|
2299
2535
|
*/
|
|
2300
2536
|
declare function isMutatingTool(toolName: string): boolean;
|
|
2301
2537
|
//#endregion
|
|
2302
|
-
export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogTitle, AlertDialogTrigger, Badge, type BadgeProps, Band, Blank, Button, type ButtonProps, Card, CardContent, CardHeader, CardTitle, type ChipSegment, CodeBlock, type CodeBlockProps, Composer, type ComposerFileMatch, type ComposerHandle, type ComposerProps, ContextDialog, type ContextDialogProps, ContextRing, Conversation, ConversationContent, type ConversationProps, ConversationScrollButton, CopyAction, CopyButton, type CopyButtonProps, Dialog, DialogBody, DialogClose, DialogContent, DialogHeader, DialogRow, DialogTrigger, Empty, EmptyKey, EngineIcon, FileCard, type FileCardProps, type FileDeliveredItem, HostFilesDialog, type HostFilesDialogProps, Ink, Input, Loader, McpDialog, type McpDialogProps, Menu, MenuContent, MenuItem, MenuSeparator, MenuTrigger, Message, MessageContent, type MessageProps, ModelSelect, type ModelSelectProps, PERMISSION_MODES, type PermissionModeChoice, type PermissionModeMeta, PermissionModeSelect, type PermissionModeSelectProps, PermissionPrompt, type PermissionPromptProps, ProgressRing, type ProgressRingProps, ProjectIcon, PromptArea, type PromptAreaHandle, type PromptAreaProps, PromptTokenText, QUESTION_BEHAVIORS, type QuestionBehaviorMeta, QuestionPrompt, type QuestionPromptProps, Reasoning, type ReasoningProps, Response, type ResponseProps, Row, type RowProps, STATUS_META, type Segment, Select, SelectContent, SelectItem, SelectItemText, SelectTrigger, SelectValue, SessionBrowser, type SessionBrowserProps, type SessionControls, SessionEmptyState, type SessionEmptyStateProps, SessionInfoDialog, type SessionInfoDialogProps, SessionList, SessionListItem, type SessionListItemProps, type SessionListProps, SessionPanel, type SessionPanelProps, SessionStatusIcon, type SessionSurfacePanel, type SessionVitals, SkillsDialog, type SkillsDialogProps, Spinner, Splitter, type SplitterProps, StatusBar, type StatusBarProps, type Step, StepRow, StepToggle, SubagentStrip, type TerminalAffordances, TerminalDiff, TerminalItemView, TerminalMarkdown, type TerminalMarkdownProps, type TerminalMetrics, TerminalPermissionPrompt, type TerminalPermissionPromptProps, TerminalQuestionPrompt, type TerminalQuestionPromptProps, TerminalStatusLine, type TerminalStatusLineProps, TerminalSurface, type TerminalSurfaceProps, TerminalTranscript, type TerminalTranscriptProps, type TextSegment, Textarea, Tip, Toaster, type Tone, ToolCallCard, type ToolCallCardProps, type ToolCallItem, TooltipContent, TooltipProvider, Transcript, type TranscriptDensity, TranscriptDensityProvider, type TranscriptFont, type TranscriptProps, type TranscriptVariant, TranscriptVariantProvider, type TriggerConfig, type TriggerSuggestion, UsageDialog, type UsageDialogProps, UsageMeters, WithActions, badgeVariants, buttonVariants, cn, commandTrigger, copyText, engineMark, formatAgoPrecise, formatBytes, formatCost, formatCountdown, formatDuration, formatRateLimitWindow, formatRateLimitWindowLong, formatRelativeTime, formatTokens, friendlyModel, getChipsByTrigger, hashtagTrigger, isMutatingTool, isSegmentsEmpty, mentionTrigger, parseUserQuestions, permissionModeChoices, permissionModeMeta, plainTextToSegments, previewPatch, rateLimitWindowSeconds, rowShapeClass, runningSteps, segmentsToPlainText, sessionSteps, skillPrompt, toast, toolIcon, toolInputPreview, useAffordances, useMinuteClock, usePromptAreaState, useTranscriptDensity, useTranscriptVariant, vendorMarkClass, vendorTextClass };
|
|
2538
|
+
export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogTitle, AlertDialogTrigger, Badge, type BadgeProps, Band, Blank, Button, type ButtonProps, Card, CardContent, CardHeader, CardTitle, type ChipSegment, CodeBlock, type CodeBlockProps, Composer, type ComposerFileMatch, type ComposerHandle, type ComposerProps, ContextDialog, type ContextDialogProps, ContextRing, Conversation, ConversationContent, type ConversationProps, ConversationScrollButton, CopyAction, CopyButton, type CopyButtonProps, Dialog, DialogBody, DialogClose, DialogContent, DialogHeader, DialogRow, DialogTrigger, Empty, EmptyKey, EngineIcon, FileCard, type FileCardProps, type FileDeliveredItem, HostFilesDialog, type HostFilesDialogProps, Ink, Input, Loader, McpDialog, type McpDialogProps, Menu, MenuContent, MenuItem, MenuSeparator, MenuTrigger, Message, MessageContent, type MessageProps, ModelSelect, type ModelSelectProps, PERMISSION_MODES, type PermissionModeChoice, type PermissionModeMeta, PermissionModeSelect, type PermissionModeSelectProps, PermissionPrompt, type PermissionPromptProps, ProgressRing, type ProgressRingProps, ProjectIcon, PromptArea, type PromptAreaHandle, type PromptAreaProps, PromptTokenText, QUESTION_BEHAVIORS, type QuestionBehaviorMeta, QuestionPrompt, type QuestionPromptProps, Reasoning, type ReasoningProps, Response, type ResponseProps, Row, type RowProps, STATUS_META, type Segment, Select, SelectContent, SelectItem, SelectItemText, SelectTrigger, SelectValue, SessionBrowser, type SessionBrowserProps, type SessionControls, SessionEmptyState, type SessionEmptyStateProps, SessionInfoDialog, type SessionInfoDialogProps, SessionItem, type SessionItemProps, SessionList, SessionListItem, type SessionListItemProps, type SessionListProps, SessionPanel, type SessionPanelProps, SessionStatusIcon, type SessionSurfacePanel, type SessionVitals, SkillsDialog, type SkillsDialogProps, Spinner, Splitter, type SplitterProps, StatusBar, type StatusBarProps, type Step, StepRow, StepToggle, SubagentStrip, type TerminalAffordances, TerminalDiff, TerminalItemView, TerminalMarkdown, type TerminalMarkdownProps, type TerminalMetrics, TerminalPermissionPrompt, type TerminalPermissionPromptProps, TerminalQuestionPrompt, type TerminalQuestionPromptProps, TerminalStatusLine, type TerminalStatusLineProps, TerminalSurface, type TerminalSurfaceProps, TerminalTranscript, type TerminalTranscriptProps, type TextSegment, Textarea, Tip, Toaster, type Tone, ToolCallCard, type ToolCallCardProps, type ToolCallItem, TooltipContent, TooltipProvider, Transcript, type TranscriptDensity, TranscriptDensityProvider, type TranscriptFont, type TranscriptProps, type TranscriptVariant, TranscriptVariantProvider, type TriggerConfig, type TriggerSuggestion, UsageDialog, type UsageDialogProps, UsageMeters, WithActions, badgeVariants, buttonVariants, cn, commandTrigger, copyText, engineMark, formatAgoPrecise, formatBytes, formatCost, formatCountdown, formatDuration, formatRateLimitWindow, formatRateLimitWindowLong, formatRelativeTime, formatTokens, friendlyModel, getChipsByTrigger, hashtagTrigger, isMutatingTool, isSegmentsEmpty, mentionTrigger, parseUserQuestions, permissionModeChoices, permissionModeMeta, plainTextToSegments, previewPatch, rateLimitWindowSeconds, rowShapeClass, runningSteps, segmentsToPlainText, sessionSteps, skillPrompt, toast, toolIcon, toolInputPreview, useAffordances, useMinuteClock, usePromptAreaState, useTranscriptDensity, useTranscriptVariant, vendorMarkClass, vendorTextClass };
|
|
2303
2539
|
//# sourceMappingURL=index.d.mts.map
|