@pentoshi/clai 3.8.0 → 3.8.2
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/agent/runner.js +24 -1
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/tool-call-parser.d.ts +4 -1
- package/dist/agent/tool-call-parser.js +51 -3
- package/dist/agent/tool-call-parser.js.map +1 -1
- package/dist/tui-v2/components/composer/paste-chip.d.ts +17 -0
- package/dist/tui-v2/components/composer/paste-chip.js +75 -0
- package/dist/tui-v2/components/composer/paste-chip.js.map +1 -0
- package/dist/tui-v2/components/status/status-line.d.ts +18 -12
- package/dist/tui-v2/components/status/status-line.js +126 -59
- package/dist/tui-v2/components/status/status-line.js.map +1 -1
- package/dist/tui-v2/composer/composer-editor.d.ts +2 -11
- package/dist/tui-v2/composer/composer-editor.js +42 -33
- package/dist/tui-v2/composer/composer-editor.js.map +1 -1
- package/dist/tui-v2/composer/composer-wheel.d.ts +40 -0
- package/dist/tui-v2/composer/composer-wheel.js +64 -0
- package/dist/tui-v2/composer/composer-wheel.js.map +1 -0
- package/dist/tui-v2/composer/paste-placeholder.d.ts +14 -0
- package/dist/tui-v2/composer/paste-placeholder.js +39 -2
- package/dist/tui-v2/composer/paste-placeholder.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +1 -1
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
2
|
/** @jsxImportSource @opentui/react */
|
|
3
3
|
/**
|
|
4
|
-
* Chrome under the composer
|
|
4
|
+
* Chrome under the composer — responsive density so chips never pile over
|
|
5
|
+
* the token count / scroll badges on the right.
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* Density (by content width):
|
|
8
|
+
* - xs (<48): MODE · tokens · ▲▼
|
|
9
|
+
* - sm (<68): MODE · ^H · tokens · ▲▼ (+ spinner/activity when running)
|
|
10
|
+
* - md (<96): MODE · core keys · ^H · tokens · ▲▼
|
|
11
|
+
* - lg (≥96): full shortcut row
|
|
9
12
|
*/
|
|
10
13
|
import { useEffect, useState } from "react";
|
|
11
14
|
import { TextAttributes } from "@opentui/core";
|
|
@@ -13,13 +16,34 @@ import { formatContextChip, } from "../../../llm/token-usage.js";
|
|
|
13
16
|
import { useSessionState } from "../../state/use-session-state.js";
|
|
14
17
|
import { EMPTY_SCROLL_METRICS, transcriptScrollPort, } from "../transcript/transcript-scroll-port.js";
|
|
15
18
|
const SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
19
|
+
/** Map content width → chrome density. */
|
|
20
|
+
export function statusDensityForWidth(width) {
|
|
21
|
+
if (width < 48)
|
|
22
|
+
return "xs";
|
|
23
|
+
if (width < 68)
|
|
24
|
+
return "sm";
|
|
25
|
+
if (width < 96)
|
|
26
|
+
return "md";
|
|
27
|
+
return "lg";
|
|
28
|
+
}
|
|
16
29
|
export function modeIndicatorPresentation(mode) {
|
|
17
30
|
return { label: mode.toUpperCase(), description: "" };
|
|
18
31
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Tasks pane toggle label by density.
|
|
34
|
+
* - xs: hidden (caller skips chip)
|
|
35
|
+
* - sm: `^H`
|
|
36
|
+
* - md: `^H hide` / `^H show`
|
|
37
|
+
* - lg: `^H · hide` / `^H · show`
|
|
38
|
+
*/
|
|
39
|
+
export function tasksToggleLabel(visible, density = "lg") {
|
|
40
|
+
// Back-compat: tests/callers that pass `compact: true` map to sm.
|
|
41
|
+
const d = typeof density === "boolean" ? (density ? "sm" : "lg") : density;
|
|
42
|
+
if (d === "xs" || d === "sm")
|
|
43
|
+
return "^H";
|
|
44
|
+
if (d === "md")
|
|
45
|
+
return visible ? "^H hide" : "^H show";
|
|
46
|
+
return visible ? "^H · hide" : "^H · show";
|
|
23
47
|
}
|
|
24
48
|
function clip(value, max) {
|
|
25
49
|
if (max <= 1)
|
|
@@ -29,74 +53,89 @@ function clip(value, max) {
|
|
|
29
53
|
return `${value.slice(0, Math.max(0, max - 1))}…`;
|
|
30
54
|
}
|
|
31
55
|
/** Collapse router/agent status noise into a single clean activity phrase. */
|
|
32
|
-
function formatActivity(activity, elapsedSec) {
|
|
56
|
+
function formatActivity(activity, elapsedSec, maxLen) {
|
|
33
57
|
let base = (activity ?? "waiting for model").replace(/\s+/g, " ").trim() || "working";
|
|
34
58
|
base = base.replace(/^[⏳·•\s]+/, "").replace(/\n/g, " ").trim();
|
|
35
|
-
// Never show classic /output path spam or long paths in the footer.
|
|
36
59
|
if (/\/output\b|open full output|Ctrl\+O or|full output saved|\.clai\/outputs/i.test(base)) {
|
|
37
60
|
base = "tool finished";
|
|
38
61
|
}
|
|
39
|
-
|
|
40
|
-
if (base.length > 48) {
|
|
62
|
+
if (base.length > maxLen) {
|
|
41
63
|
const toolish = base.match(/^[\w.-]+/);
|
|
42
|
-
base = toolish ? toolish[0] : `${base.slice(0,
|
|
64
|
+
base = toolish ? toolish[0] : `${base.slice(0, Math.max(0, maxLen - 1))}…`;
|
|
43
65
|
}
|
|
44
66
|
if (/rate limited|retrying in/i.test(base) && !base.startsWith("⏳")) {
|
|
45
67
|
base = `⏳ ${base}`;
|
|
46
68
|
}
|
|
47
69
|
return `${base} · ${elapsedSec}s`;
|
|
48
70
|
}
|
|
49
|
-
/**
|
|
50
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Token chip tiers:
|
|
73
|
+
* - xs: `12k` / `~12k`
|
|
74
|
+
* - sm: `12k tok`
|
|
75
|
+
* - md+: full formatContextChip
|
|
76
|
+
*/
|
|
77
|
+
function contextChipForDensity(usage, density) {
|
|
51
78
|
if (!usage)
|
|
52
79
|
return undefined;
|
|
53
|
-
|
|
80
|
+
if (density === "xs") {
|
|
81
|
+
// Bare count — no "tok" unit (saves ~4 cols next to mode).
|
|
82
|
+
const raw = formatContextChip(usage, { compact: true });
|
|
83
|
+
return raw.replace(/\s*tok\s*$/i, "");
|
|
84
|
+
}
|
|
85
|
+
if (density === "sm") {
|
|
86
|
+
return formatContextChip(usage, { compact: true });
|
|
87
|
+
}
|
|
88
|
+
return formatContextChip(usage, { compact: density === "md" });
|
|
54
89
|
}
|
|
55
90
|
function ContextChip(props) {
|
|
56
91
|
const { chip, theme, exact } = props;
|
|
57
92
|
return (_jsx("text", { selectable: false, content: chip, style: {
|
|
58
93
|
fg: exact ? theme.cyan : theme.muted,
|
|
59
94
|
attributes: exact ? TextAttributes.BOLD : TextAttributes.DIM,
|
|
95
|
+
flexShrink: 0,
|
|
60
96
|
} }));
|
|
61
97
|
}
|
|
62
|
-
function sep(theme) {
|
|
63
|
-
return _jsx("text", { selectable: false, content: "
|
|
98
|
+
function sep(theme, tight = false) {
|
|
99
|
+
return (_jsx("text", { selectable: false, content: tight ? " │ " : " │ ", style: { fg: theme.muted, flexShrink: 0 } }));
|
|
64
100
|
}
|
|
65
101
|
/** Far-right amber remaining-line badges. */
|
|
66
102
|
function ScrollRemainderBadges(props) {
|
|
67
|
-
const { theme, metrics } = props;
|
|
103
|
+
const { theme, metrics, compact = false } = props;
|
|
68
104
|
if (metrics.linesAbove <= 0 && metrics.linesBelow <= 0)
|
|
69
105
|
return null;
|
|
70
|
-
return (_jsxs("box", { style: { flexDirection: "row", alignItems: "center", flexShrink: 0 }, children: [metrics.linesAbove > 0 ? (_jsxs(_Fragment, { children: [_jsx("text", { selectable: false, content: " " }), _jsx("text", { selectable: false, content: ` ▲ ${metrics.linesAbove} `, style: {
|
|
106
|
+
return (_jsxs("box", { style: { flexDirection: "row", alignItems: "center", flexShrink: 0 }, children: [metrics.linesAbove > 0 ? (_jsxs(_Fragment, { children: [_jsx("text", { selectable: false, content: " " }), _jsx("text", { selectable: false, content: compact ? `▲${metrics.linesAbove}` : ` ▲ ${metrics.linesAbove} `, style: {
|
|
71
107
|
fg: theme.white,
|
|
72
108
|
bg: theme.queued,
|
|
73
109
|
attributes: TextAttributes.BOLD,
|
|
74
|
-
} })] })) : null, metrics.linesBelow > 0 ? (_jsxs(_Fragment, { children: [_jsx("text", { selectable: false, content: " " }), _jsx("text", { selectable: false, content: ` ▼ ${metrics.linesBelow} `, style: {
|
|
110
|
+
} })] })) : null, metrics.linesBelow > 0 ? (_jsxs(_Fragment, { children: [_jsx("text", { selectable: false, content: " " }), _jsx("text", { selectable: false, content: compact ? `▼${metrics.linesBelow}` : ` ▼ ${metrics.linesBelow} `, style: {
|
|
75
111
|
fg: theme.white,
|
|
76
112
|
bg: theme.queued,
|
|
77
113
|
attributes: TextAttributes.BOLD,
|
|
78
114
|
} })] })) : null] }));
|
|
79
115
|
}
|
|
80
116
|
/**
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* Always `selectable={false}` + preventDefault on mouse-down so a click
|
|
85
|
-
* toggles without starting a drag-selection of the label text.
|
|
117
|
+
* Compact chip that expands on hover.
|
|
118
|
+
* Idle: short chord (`^T`). Hover: full action (`show thinking`).
|
|
119
|
+
* `accent`: cyan emphasis for primary actions (Esc · cancel while running).
|
|
86
120
|
*/
|
|
87
121
|
function ClickableHint(props) {
|
|
88
|
-
const {
|
|
122
|
+
const { short, expand, active, theme, onClick, accent = false } = props;
|
|
89
123
|
const [hovered, setHovered] = useState(false);
|
|
90
|
-
|
|
124
|
+
const full = expand ?? short;
|
|
125
|
+
// Hover always shows the expanded phrase (with padding so the chip reads).
|
|
126
|
+
const content = hovered ? ` ${full} ` : accent ? ` ${short} ` : short;
|
|
91
127
|
const fg = hovered
|
|
92
128
|
? theme.white
|
|
93
|
-
: active
|
|
129
|
+
: active || accent
|
|
94
130
|
? theme.cyan
|
|
95
131
|
: theme.muted;
|
|
96
|
-
const bg = hovered
|
|
97
|
-
|
|
132
|
+
const bg = hovered
|
|
133
|
+
? theme.selection
|
|
134
|
+
: accent
|
|
135
|
+
? theme.chip
|
|
136
|
+
: theme.background;
|
|
137
|
+
const attributes = hovered || active || accent ? TextAttributes.BOLD : TextAttributes.NONE;
|
|
98
138
|
return (_jsx("box", { onMouseDown: (event) => {
|
|
99
|
-
// Block OpenTUI selection before it claims the press.
|
|
100
139
|
event.preventDefault();
|
|
101
140
|
event.stopPropagation();
|
|
102
141
|
onClick?.();
|
|
@@ -105,17 +144,22 @@ function ClickableHint(props) {
|
|
|
105
144
|
alignItems: "center",
|
|
106
145
|
flexShrink: 0,
|
|
107
146
|
backgroundColor: bg,
|
|
108
|
-
}, children: _jsx("text", { selectable: false, content:
|
|
109
|
-
fg,
|
|
110
|
-
bg,
|
|
111
|
-
attributes,
|
|
112
|
-
} }) }));
|
|
147
|
+
}, children: _jsx("text", { selectable: false, content: content, style: { fg, bg, attributes } }) }));
|
|
113
148
|
}
|
|
114
149
|
function ModeBadge(props) {
|
|
115
|
-
const { mode, theme } = props;
|
|
150
|
+
const { mode, theme, short = false } = props;
|
|
116
151
|
const label = modeIndicatorPresentation(mode).label;
|
|
117
|
-
const bg = mode === "plan"
|
|
118
|
-
|
|
152
|
+
const bg = mode === "plan"
|
|
153
|
+
? theme.mode
|
|
154
|
+
: mode === "ask"
|
|
155
|
+
? theme.chipIndigo
|
|
156
|
+
: theme.chipTeal;
|
|
157
|
+
return (_jsx("text", { selectable: false, content: short ? ` ${label} ` : ` ${label} MODE `, style: {
|
|
158
|
+
fg: theme.white,
|
|
159
|
+
bg,
|
|
160
|
+
attributes: TextAttributes.BOLD,
|
|
161
|
+
flexShrink: 0,
|
|
162
|
+
} }));
|
|
119
163
|
}
|
|
120
164
|
export function StatusLine(props) {
|
|
121
165
|
const { session, mode, theme, activity, width, hasActivePlan, planVisible, thinkingExpanded = false, outputExpanded = false, onToggleThinking, onToggleOutput, onTogglePlan, onJumpTop, onJumpBottom, onClearDraft, onOpenShortcuts, } = props;
|
|
@@ -125,8 +169,10 @@ export function StatusLine(props) {
|
|
|
125
169
|
const [startedAt, setStartedAt] = useState(undefined);
|
|
126
170
|
const [scrollMetrics, setScrollMetrics] = useState(EMPTY_SCROLL_METRICS);
|
|
127
171
|
const queued = state.queued.length;
|
|
128
|
-
const
|
|
172
|
+
const density = statusDensityForWidth(width);
|
|
129
173
|
const busy = state.running || state.compacting;
|
|
174
|
+
const showTasks = (hasActivePlan || planVisible) && density !== "xs";
|
|
175
|
+
const shortMode = density === "xs" || density === "sm";
|
|
130
176
|
useEffect(() => transcriptScrollPort.onMetrics(setScrollMetrics), []);
|
|
131
177
|
useEffect(() => {
|
|
132
178
|
if (!busy) {
|
|
@@ -152,14 +198,22 @@ export function StatusLine(props) {
|
|
|
152
198
|
return;
|
|
153
199
|
setElapsed(Math.max(0, Math.floor((Date.now() - startedAt) / 1000)));
|
|
154
200
|
}, [busy, startedAt, activity]);
|
|
201
|
+
const ctxChip = contextChipForDensity(state.contextUsage, density);
|
|
202
|
+
const scrollCompact = density === "xs" || density === "sm";
|
|
203
|
+
// ── Running / compacting ──────────────────────────────────────────────
|
|
155
204
|
if (busy) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
205
|
+
// Left: MODE · spinner · activity·timer · Esc:cancel · ^H · queue
|
|
206
|
+
// Right: tokens · ▲▼ (never sandwich Esc between tokens and scroll)
|
|
207
|
+
const activityMax = density === "xs"
|
|
208
|
+
? 0
|
|
209
|
+
: density === "sm"
|
|
210
|
+
? Math.max(8, width - 40)
|
|
211
|
+
: Math.max(12, width - 52);
|
|
212
|
+
const activityText = density === "xs"
|
|
213
|
+
? undefined
|
|
214
|
+
: state.compacting
|
|
215
|
+
? `compact · ${elapsed}s`
|
|
216
|
+
: formatActivity(activity, elapsed, activityMax);
|
|
163
217
|
return (_jsxs("box", { style: {
|
|
164
218
|
flexDirection: "row",
|
|
165
219
|
width: "100%",
|
|
@@ -169,31 +223,44 @@ export function StatusLine(props) {
|
|
|
169
223
|
backgroundColor: theme.background,
|
|
170
224
|
paddingLeft: 1,
|
|
171
225
|
paddingRight: 1,
|
|
172
|
-
}, children: [_jsxs("box", { style: {
|
|
226
|
+
}, children: [_jsxs("box", { style: {
|
|
227
|
+
flexDirection: "row",
|
|
228
|
+
alignItems: "center",
|
|
229
|
+
flexShrink: 1,
|
|
230
|
+
minWidth: 0,
|
|
231
|
+
}, children: [_jsx(ModeBadge, { mode: mode, theme: theme, short: shortMode }), _jsx("text", { selectable: false, content: " " }), _jsx("text", { selectable: false, content: `${SPINNER_FRAMES[frame]} `, style: { fg: theme.spinner, flexShrink: 0 } }), activityText ? (_jsx("text", { selectable: false, content: clip(activityText, activityMax), style: { fg: theme.activity, flexShrink: 1 } })) : null, density !== "xs" && !state.compacting ? (_jsxs(_Fragment, { children: [_jsx("text", { selectable: false, content: " ", style: { flexShrink: 0 } }), _jsx(ClickableHint, { short: density === "sm" ? "Esc" : "Esc · cancel", expand: "cancel turn", active: false, theme: theme, accent: true, onClick: () => {
|
|
232
|
+
if (session.getState().running)
|
|
233
|
+
session.abort();
|
|
234
|
+
} })] })) : null, state.compacting && density !== "xs" ? (_jsxs(_Fragment, { children: [_jsx("text", { selectable: false, content: " " }), _jsx("text", { selectable: false, content: "COMPACT", style: { fg: theme.mode, flexShrink: 0 } })] })) : null, showTasks ? (_jsxs(_Fragment, { children: [_jsx("text", { selectable: false, content: " " }), _jsx(ClickableHint, { short: tasksToggleLabel(planVisible, density), expand: planVisible ? "hide tasks" : "show tasks", active: planVisible, theme: theme, onClick: onTogglePlan })] })) : null, queued > 0 && density !== "xs" ? (_jsxs(_Fragment, { children: [_jsx("text", { selectable: false, content: " " }), _jsx("text", { selectable: false, content: `${queued}q`, style: { fg: theme.mode, flexShrink: 0 } })] })) : null] }), _jsxs("box", { style: {
|
|
235
|
+
flexDirection: "row",
|
|
236
|
+
alignItems: "center",
|
|
237
|
+
flexShrink: 0,
|
|
238
|
+
justifyContent: "flex-end",
|
|
239
|
+
}, children: [ctxChip ? (_jsx(_Fragment, { children: _jsx(ContextChip, { chip: ctxChip, theme: theme, exact: state.contextUsage?.exact === true }) })) : null, _jsx(ScrollRemainderBadges, { theme: theme, metrics: scrollMetrics, compact: scrollCompact })] })] }));
|
|
173
240
|
}
|
|
174
|
-
// Idle
|
|
175
|
-
//
|
|
176
|
-
|
|
241
|
+
// ── Idle ─────────────────────────────────────────────────────────────
|
|
242
|
+
// Left: mode (+ optional center chips that may shrink)
|
|
243
|
+
// Right: tokens + scroll (never shrink away)
|
|
177
244
|
return (_jsxs("box", { style: {
|
|
178
245
|
flexDirection: "row",
|
|
179
246
|
width: "100%",
|
|
180
247
|
height: 1,
|
|
181
248
|
alignItems: "center",
|
|
249
|
+
justifyContent: "space-between",
|
|
182
250
|
backgroundColor: theme.background,
|
|
183
251
|
paddingLeft: 1,
|
|
184
252
|
paddingRight: 1,
|
|
185
|
-
}, children: [
|
|
253
|
+
}, children: [_jsxs("box", { style: {
|
|
186
254
|
flexDirection: "row",
|
|
187
255
|
alignItems: "center",
|
|
188
|
-
flexShrink: 0,
|
|
189
|
-
justifyContent: "center",
|
|
190
|
-
}, children: [_jsx(ModeBadge, { mode: mode, theme: theme }), width >= 42 ? (_jsxs(_Fragment, { children: [sep(theme), _jsx("text", { selectable: false, content: "/:commands", style: { fg: theme.muted } })] })) : null, !compact ? (_jsxs(_Fragment, { children: [sep(theme), _jsx(ClickableHint, { label: thinkingExpanded ? "^T thinking on" : "^T thinking", active: thinkingExpanded, theme: theme, onClick: onToggleThinking }), sep(theme), _jsx(ClickableHint, { label: outputExpanded ? "^O output on" : "^O output", active: outputExpanded, theme: theme, onClick: onToggleOutput }), sep(theme), _jsx(ClickableHint, { label: "^U top", active: false, theme: theme, onClick: onJumpTop }), sep(theme), _jsx(ClickableHint, { label: "^D end", active: false, theme: theme, onClick: onJumpBottom }), sep(theme), _jsx(ClickableHint, { label: "^X clear", active: false, theme: theme, onClick: onClearDraft }), width >= 72 ? (_jsxs(_Fragment, { children: [sep(theme), _jsx(ClickableHint, { label: "/shortcuts", active: false, theme: theme, onClick: onOpenShortcuts })] })) : null] })) : null, hasActivePlan || planVisible ? (_jsxs(_Fragment, { children: [sep(theme), _jsx(ClickableHint, { label: tasksToggleLabel(planVisible, width < 72), active: planVisible, theme: theme, onClick: onTogglePlan })] })) : null, queued > 0 ? (_jsxs(_Fragment, { children: [sep(theme), _jsx("text", { selectable: false, content: `${queued} queued`, style: { fg: theme.mode } })] })) : null] }), _jsxs("box", { style: {
|
|
191
|
-
flexGrow: 1,
|
|
192
256
|
flexShrink: 1,
|
|
193
257
|
minWidth: 0,
|
|
258
|
+
overflow: "hidden",
|
|
259
|
+
}, children: [_jsx(ModeBadge, { mode: mode, theme: theme, short: shortMode }), density === "md" || density === "lg" ? (_jsxs(_Fragment, { children: [sep(theme), _jsx("text", { selectable: false, content: density === "lg" ? "/:commands" : "/", style: { fg: theme.muted, flexShrink: 0 } })] })) : null, density === "md" || density === "lg" ? (_jsxs(_Fragment, { children: [sep(theme), _jsx(ClickableHint, { short: "^T", expand: thinkingExpanded ? "hide thinking" : "show thinking", active: thinkingExpanded, theme: theme, onClick: onToggleThinking }), sep(theme), _jsx(ClickableHint, { short: "^O", expand: outputExpanded ? "hide output" : "show output", active: outputExpanded, theme: theme, onClick: onToggleOutput }), sep(theme), _jsx(ClickableHint, { short: "^U", expand: "jump to top", active: false, theme: theme, onClick: onJumpTop }), sep(theme), _jsx(ClickableHint, { short: "^D", expand: "jump to end", active: false, theme: theme, onClick: onJumpBottom }), sep(theme), _jsx(ClickableHint, { short: "^X", expand: "clear draft", active: false, theme: theme, onClick: onClearDraft })] })) : null, density === "lg" ? (_jsxs(_Fragment, { children: [sep(theme), _jsx(ClickableHint, { short: "/shortcuts", expand: "keyboard shortcuts", active: false, theme: theme, onClick: onOpenShortcuts })] })) : null, showTasks ? (_jsxs(_Fragment, { children: [sep(theme), _jsx(ClickableHint, { short: tasksToggleLabel(planVisible, density), expand: planVisible ? "hide tasks" : "show tasks", active: planVisible, theme: theme, onClick: onTogglePlan })] })) : null, queued > 0 && density !== "xs" ? (_jsxs(_Fragment, { children: [sep(theme), _jsx("text", { selectable: false, content: density === "sm" ? `${queued}q` : `${queued} queued`, style: { fg: theme.mode, flexShrink: 0 } })] })) : null] }), _jsxs("box", { style: {
|
|
194
260
|
flexDirection: "row",
|
|
195
|
-
justifyContent: "flex-end",
|
|
196
261
|
alignItems: "center",
|
|
197
|
-
|
|
262
|
+
flexShrink: 0,
|
|
263
|
+
justifyContent: "flex-end",
|
|
264
|
+
}, children: [ctxChip ? (_jsxs(_Fragment, { children: [_jsx("text", { selectable: false, content: " " }), _jsx(ContextChip, { chip: ctxChip, theme: theme, exact: state.contextUsage?.exact === true })] })) : null, _jsx(ScrollRemainderBadges, { theme: theme, metrics: scrollMetrics, compact: scrollCompact })] })] }));
|
|
198
265
|
}
|
|
199
266
|
//# sourceMappingURL=status-line.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-line.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/status/status-line.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"status-line.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/status/status-line.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,21 +10,12 @@ export interface ComposerEditorProps {
|
|
|
10
10
|
readonly services: AppServices;
|
|
11
11
|
readonly theme: Theme;
|
|
12
12
|
readonly width: number;
|
|
13
|
-
/**
|
|
14
|
-
* Maximum editable text rows (not including the rounded border).
|
|
15
|
-
* The box starts at 1 row and grows with content up to this cap.
|
|
16
|
-
*/
|
|
13
|
+
/** Max editable text rows (grows from 1 up to this cap). */
|
|
17
14
|
readonly height: number;
|
|
18
|
-
/** The command window gets denser on tall terminals, never a one-row list. */
|
|
19
15
|
readonly maxSuggestions?: number | undefined;
|
|
20
|
-
/** Mirrors the legacy composer hint while a turn is active. */
|
|
21
16
|
readonly running?: boolean | undefined;
|
|
22
|
-
/** Visual region focus from the shell (Tab cycle). */
|
|
23
17
|
readonly focused: boolean;
|
|
24
|
-
/**
|
|
25
|
-
* When set (e.g. Edit on a queued prompt), replace the input with this
|
|
26
|
-
* draft. `token` must change each time so the same text can be re-applied.
|
|
27
|
-
*/
|
|
18
|
+
/** Edit-queue seed; `token` must change each re-apply. */
|
|
28
19
|
readonly seedDraft?: {
|
|
29
20
|
readonly token: number;
|
|
30
21
|
readonly text: string;
|
|
@@ -13,7 +13,8 @@ import { getConfig } from "../../store/config.js";
|
|
|
13
13
|
import { chordFromKeyEvent } from "../actions/chord-from-key.js";
|
|
14
14
|
import { PromptHistory } from "./prompt-history.js";
|
|
15
15
|
import { ARROW_BURST_WINDOW_MS, resolveArrowIntent, } from "./arrow-intent.js";
|
|
16
|
-
import { isLargePaste, PasteRegistry } from "./paste-placeholder.js";
|
|
16
|
+
import { isLargePaste, PasteRegistry, } from "./paste-placeholder.js";
|
|
17
|
+
import { PasteChipRow } from "../components/composer/paste-chip.js";
|
|
17
18
|
import { resolveCompletionMenu } from "./completion.js";
|
|
18
19
|
import { buildComposerTextareaOverrides } from "./textarea-keybindings.js";
|
|
19
20
|
import { composerActionPort } from "./composer-action-port.js";
|
|
@@ -25,22 +26,20 @@ import { clipComposerMeta, formatComposerMeta } from "./composer-meta.js";
|
|
|
25
26
|
import { transcriptScrollPort } from "../components/transcript/transcript-scroll-port.js";
|
|
26
27
|
import { consumePlanSuggestionInput } from "../app/plan-lifecycle.js";
|
|
27
28
|
import { countComposerVisualLines, resolveComposerTextRows, } from "./composer-height.js";
|
|
29
|
+
import { tryScrollComposerDraft } from "./composer-wheel.js";
|
|
28
30
|
const textareaKeyBindings = buildComposerTextareaOverrides();
|
|
29
31
|
export function ComposerEditor(props) {
|
|
30
32
|
const { services, theme } = props;
|
|
31
33
|
const editorRef = useRef(null);
|
|
32
34
|
const promptHistory = useRef(new PromptHistory());
|
|
33
35
|
const pasteRegistry = useRef(new PasteRegistry());
|
|
34
|
-
/** Trackpad-as-arrows: count rapid ↑/↓ so we scroll chat instead of history. */
|
|
35
36
|
const arrowBurst = useRef({ count: 0, lastAt: 0 });
|
|
36
37
|
const [menu, setMenu] = useState({ kind: "none" });
|
|
37
38
|
const [selected, setSelected] = useState(0);
|
|
38
39
|
const [acceptedSlash, setAcceptedSlash] = useState(undefined);
|
|
39
|
-
/** Visual rows of current prompt — drives grow-with-content height. */
|
|
40
40
|
const [contentRows, setContentRows] = useState(1);
|
|
41
|
-
|
|
42
|
-
//
|
|
43
|
-
// menu missing" failure mode).
|
|
41
|
+
const [pasteChips, setPasteChips] = useState([]);
|
|
42
|
+
// Refs keep OpenTUI key handlers off stale menu state after focus reclaim.
|
|
44
43
|
const menuRef = useRef(menu);
|
|
45
44
|
const selectedRef = useRef(selected);
|
|
46
45
|
const acceptedSlashRef = useRef(acceptedSlash);
|
|
@@ -186,16 +185,28 @@ export function ComposerEditor(props) {
|
|
|
186
185
|
editorRef.current?.insertText(entry.token);
|
|
187
186
|
queueMicrotask(syncContentRows);
|
|
188
187
|
});
|
|
189
|
-
|
|
188
|
+
function expandPasteChip(id) {
|
|
189
|
+
const editor = editorRef.current;
|
|
190
|
+
if (!editor)
|
|
191
|
+
return;
|
|
192
|
+
editor.setText(pasteRegistry.current.expandOne(editor.plainText, id));
|
|
193
|
+
editor.gotoBufferEnd();
|
|
194
|
+
queueMicrotask(() => {
|
|
195
|
+
syncContentRows();
|
|
196
|
+
refreshMenu();
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/** Grow/shrink input with newlines/wrap; refresh paste chips. */
|
|
190
200
|
function syncContentRows() {
|
|
191
201
|
const editor = editorRef.current;
|
|
192
202
|
if (!editor) {
|
|
193
203
|
setContentRows(1);
|
|
204
|
+
setPasteChips([]);
|
|
194
205
|
return;
|
|
195
206
|
}
|
|
196
|
-
// Prompt "❯ " (2) + horizontal padding (2) leave this for wrapped text.
|
|
197
207
|
const wrapWidth = Math.max(10, props.width - 4);
|
|
198
208
|
setContentRows(countComposerVisualLines(editor.plainText, wrapWidth));
|
|
209
|
+
setPasteChips(pasteRegistry.current.activeIn(editor.plainText));
|
|
199
210
|
}
|
|
200
211
|
function refreshMenu() {
|
|
201
212
|
const editor = editorRef.current;
|
|
@@ -378,6 +389,7 @@ export function ComposerEditor(props) {
|
|
|
378
389
|
setMenu({ kind: "none" });
|
|
379
390
|
setAcceptedSlash(undefined);
|
|
380
391
|
setContentRows(1);
|
|
392
|
+
setPasteChips([]);
|
|
381
393
|
if (!expanded)
|
|
382
394
|
return;
|
|
383
395
|
if (shouldStoreInPromptHistory(expanded))
|
|
@@ -424,19 +436,27 @@ export function ComposerEditor(props) {
|
|
|
424
436
|
await services.session.submit(prompt);
|
|
425
437
|
}
|
|
426
438
|
}
|
|
427
|
-
/**
|
|
428
|
-
* Trackpad over the input must scroll the chat — never prompt history.
|
|
429
|
-
* OpenTUI hit-tests the focused textarea first; without this, wheel never
|
|
430
|
-
* reaches the transcript ScrollBox.
|
|
431
|
-
*/
|
|
439
|
+
/** Overflowing draft scrolls in place; short draft yields wheel to chat. */
|
|
432
440
|
function onComposerWheel(event) {
|
|
433
441
|
if (!event.scroll || overlay.kind !== "none")
|
|
434
442
|
return;
|
|
435
443
|
event.preventDefault();
|
|
436
444
|
event.stopPropagation();
|
|
437
|
-
services.focus.focusRegion("transcript");
|
|
438
|
-
editorRef.current?.blur();
|
|
439
445
|
const { direction, delta } = event.scroll;
|
|
446
|
+
const editor = editorRef.current;
|
|
447
|
+
const visible = resolveComposerTextRows(contentRows, props.height);
|
|
448
|
+
if (editor &&
|
|
449
|
+
shouldOwnKeyboard &&
|
|
450
|
+
tryScrollComposerDraft(editor, {
|
|
451
|
+
contentLines: contentRows,
|
|
452
|
+
visibleRows: visible,
|
|
453
|
+
direction,
|
|
454
|
+
delta,
|
|
455
|
+
})) {
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
services.focus.focusRegion("transcript");
|
|
459
|
+
editor?.blur();
|
|
440
460
|
const step = Math.max(1, delta || 1) * 3;
|
|
441
461
|
const dy = direction === "up" ? -step : direction === "down" ? step : 0;
|
|
442
462
|
if (dy !== 0)
|
|
@@ -532,6 +552,7 @@ export function ComposerEditor(props) {
|
|
|
532
552
|
if (chord === "ctrl+x") {
|
|
533
553
|
key.preventDefault();
|
|
534
554
|
editor.clear();
|
|
555
|
+
pasteRegistry.current.clear();
|
|
535
556
|
promptHistory.current.reset();
|
|
536
557
|
menuRef.current = { kind: "none" };
|
|
537
558
|
menuKindRef.current = "none";
|
|
@@ -539,6 +560,7 @@ export function ComposerEditor(props) {
|
|
|
539
560
|
setMenu({ kind: "none" });
|
|
540
561
|
setAcceptedSlash(undefined);
|
|
541
562
|
setContentRows(1);
|
|
563
|
+
setPasteChips([]);
|
|
542
564
|
notify(services, "Draft cleared · ^X", { key: "draft", durationMs: 1400 });
|
|
543
565
|
return;
|
|
544
566
|
}
|
|
@@ -595,22 +617,16 @@ export function ComposerEditor(props) {
|
|
|
595
617
|
}
|
|
596
618
|
}
|
|
597
619
|
function onKeyDown(key) {
|
|
598
|
-
// Only handle when the composer actually owns input — never steal from
|
|
599
|
-
// transcript scroll by force-focusing on every key event. (Menu keys are
|
|
600
|
-
// also routed from the global useKeyboard when focus glitches.)
|
|
601
620
|
if (!shouldOwnKeyboard && menuKindRef.current === "none")
|
|
602
621
|
return;
|
|
603
622
|
handleMenuOrComposerKey(key);
|
|
604
623
|
}
|
|
605
|
-
// Re-measure soft-wrap rows when the terminal width changes.
|
|
606
624
|
useEffect(() => {
|
|
607
625
|
syncContentRows();
|
|
608
626
|
// eslint-disable-next-line react-hooks/exhaustive-deps -- width-only reflow
|
|
609
627
|
}, [props.width]);
|
|
610
628
|
const inputWidth = Math.max(20, props.width);
|
|
611
|
-
// Grow with content (Shift+Enter, wrap, history); never exceed shell budget.
|
|
612
629
|
const textRows = resolveComposerTextRows(contentRows, props.height);
|
|
613
|
-
// Editable rows + top/bottom border only — meta sits ON the top border.
|
|
614
630
|
const boxHeight = textRows + 2;
|
|
615
631
|
const metaShown = clipComposerMeta(metaLabel, inputWidth);
|
|
616
632
|
function hoverCompletion(index) {
|
|
@@ -619,23 +635,19 @@ export function ComposerEditor(props) {
|
|
|
619
635
|
services.focus.focusRegion("composer");
|
|
620
636
|
editorRef.current?.focus();
|
|
621
637
|
}
|
|
622
|
-
/** Mouse click: slash/file accept; directory drills open (browse). */
|
|
623
638
|
function activateCompletion(index) {
|
|
624
639
|
services.focus.focusRegion("composer");
|
|
625
640
|
editorRef.current?.focus();
|
|
626
641
|
const current = menuRef.current;
|
|
627
642
|
if (current.kind === "none")
|
|
628
643
|
return;
|
|
629
|
-
if (current.kind === "mention") {
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
acceptSuggestion({ index, drillDir: true });
|
|
633
|
-
return;
|
|
634
|
-
}
|
|
644
|
+
if (current.kind === "mention" && current.items[index]?.isDir) {
|
|
645
|
+
acceptSuggestion({ index, drillDir: true });
|
|
646
|
+
return;
|
|
635
647
|
}
|
|
636
648
|
acceptSuggestion({ index });
|
|
637
649
|
}
|
|
638
|
-
return (_jsxs("box", { style: { flexDirection: "column", width: "100%", flexShrink: 0 }, onMouseScroll: onComposerWheel, children: [_jsx(CompletionMenuView, { menu: menu, selected: selected, theme: theme, width: inputWidth, maxRows: props.maxSuggestions ?? 10, onHoverIndex: hoverCompletion, onActivateIndex: activateCompletion }), _jsxs("box", { border: true, borderStyle: "rounded", ...(metaShown
|
|
650
|
+
return (_jsxs("box", { style: { flexDirection: "column", width: "100%", flexShrink: 0 }, onMouseScroll: onComposerWheel, children: [_jsx(CompletionMenuView, { menu: menu, selected: selected, theme: theme, width: inputWidth, maxRows: props.maxSuggestions ?? 10, onHoverIndex: hoverCompletion, onActivateIndex: activateCompletion }), _jsx(PasteChipRow, { entries: pasteChips, theme: theme, width: inputWidth, onExpand: expandPasteChip }), _jsxs("box", { border: true, borderStyle: "rounded", ...(metaShown
|
|
639
651
|
? {
|
|
640
652
|
title: ` ${metaShown} `,
|
|
641
653
|
titleAlignment: "right",
|
|
@@ -650,7 +662,6 @@ export function ComposerEditor(props) {
|
|
|
650
662
|
paddingRight: 1,
|
|
651
663
|
flexDirection: "row",
|
|
652
664
|
}, onMouseDown: () => {
|
|
653
|
-
// Explicitly reclaim composer focus when the user clicks the input.
|
|
654
665
|
services.focus.focusRegion("composer");
|
|
655
666
|
editorRef.current?.focus();
|
|
656
667
|
}, onMouseScroll: onComposerWheel, children: [_jsx("text", { content: "\u276F ", style: {
|
|
@@ -658,9 +669,7 @@ export function ComposerEditor(props) {
|
|
|
658
669
|
width: 2,
|
|
659
670
|
flexShrink: 0,
|
|
660
671
|
attributes: TextAttributes.BOLD,
|
|
661
|
-
} }), _jsx("textarea", { ref: editorRef, focused: shouldOwnKeyboard,
|
|
662
|
-
// No mouse text-selection — OpenTUI selection steals clicks/touch.
|
|
663
|
-
selectable: false, placeholder: props.running
|
|
672
|
+
} }), _jsx("textarea", { ref: editorRef, focused: shouldOwnKeyboard, selectable: false, placeholder: props.running
|
|
664
673
|
? "type to queue a message…"
|
|
665
674
|
: `ask anything · @ file or folder · Shift+Enter newline`, placeholderColor: theme.muted, textColor: theme.foreground, backgroundColor: theme.statusBackground, cursorColor: theme.inputBorder, keyBindings: textareaKeyBindings, wrapMode: "word", onSubmit: submit, onContentChange: () => {
|
|
666
675
|
refreshMenu();
|