gaunt-sloth 2.0.0-alpha.2 → 2.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -5
- package/cli.js +43 -10
- package/dist/cli.js +33 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/adkEvalRunner.d.ts +66 -0
- package/dist/commands/adkEvalRunner.js +69 -0
- package/dist/commands/adkEvalRunner.js.map +1 -0
- package/dist/commands/agUiEvalRunner.d.ts +73 -0
- package/dist/commands/agUiEvalRunner.js +216 -0
- package/dist/commands/agUiEvalRunner.js.map +1 -0
- package/dist/commands/askCommand.d.ts +3 -2
- package/dist/commands/askCommand.js +26 -7
- package/dist/commands/askCommand.js.map +1 -1
- package/dist/commands/batchCommand.d.ts +78 -0
- package/dist/commands/batchCommand.js +245 -0
- package/dist/commands/batchCommand.js.map +1 -0
- package/dist/commands/cliOptionParsers.d.ts +12 -0
- package/dist/commands/cliOptionParsers.js +18 -0
- package/dist/commands/cliOptionParsers.js.map +1 -0
- package/dist/commands/commandIntrospection.d.ts +6 -6
- package/dist/commands/commandIntrospection.js +12 -12
- package/dist/commands/commandIntrospection.js.map +1 -1
- package/dist/commands/commandUtils.d.ts +16 -16
- package/dist/commands/commandUtils.js +20 -20
- package/dist/commands/commandUtils.js.map +1 -1
- package/dist/commands/configCommand.d.ts +24 -0
- package/dist/commands/configCommand.js +117 -0
- package/dist/commands/configCommand.js.map +1 -0
- package/dist/commands/configSetup.d.ts +1 -1
- package/dist/commands/configSetup.js +17 -2
- package/dist/commands/configSetup.js.map +1 -1
- package/dist/commands/evalCommand.d.ts +41 -0
- package/dist/commands/evalCommand.js +483 -0
- package/dist/commands/evalCommand.js.map +1 -0
- package/dist/commands/execCommand.js +4 -1
- package/dist/commands/execCommand.js.map +1 -1
- package/dist/commands/firstRunDialog.d.ts +39 -5
- package/dist/commands/firstRunDialog.js +72 -10
- package/dist/commands/firstRunDialog.js.map +1 -1
- package/dist/commands/getCommand.js +7 -7
- package/dist/commands/getCommand.js.map +1 -1
- package/dist/commands/historyCommand.d.ts +17 -0
- package/dist/commands/historyCommand.js +102 -0
- package/dist/commands/historyCommand.js.map +1 -0
- package/dist/commands/initCommand.d.ts +3 -0
- package/dist/commands/initCommand.js +9 -4
- package/dist/commands/initCommand.js.map +1 -1
- package/dist/commands/insightsCommand.d.ts +8 -0
- package/dist/commands/insightsCommand.js +32 -0
- package/dist/commands/insightsCommand.js.map +1 -0
- package/dist/commands/modelsCommand.d.ts +25 -0
- package/dist/commands/modelsCommand.js +96 -0
- package/dist/commands/modelsCommand.js.map +1 -0
- package/dist/commands/prCommand.js +14 -15
- package/dist/commands/prCommand.js.map +1 -1
- package/dist/commands/prDiscovery.d.ts +2 -2
- package/dist/commands/prDiscovery.js +27 -29
- package/dist/commands/prDiscovery.js.map +1 -1
- package/dist/commands/reviewCommand.js +15 -10
- package/dist/commands/reviewCommand.js.map +1 -1
- package/dist/commands/workflowCommand.d.ts +19 -0
- package/dist/commands/workflowCommand.js +77 -0
- package/dist/commands/workflowCommand.js.map +1 -0
- package/dist/helpers/jira/jiraLogWork.js.map +1 -1
- package/dist/modules/startSession.js +9 -7
- package/dist/modules/startSession.js.map +1 -1
- package/dist/tools/gthJiraLogWorkTool.js +3 -3
- package/dist/tools/gthJiraLogWorkTool.js.map +1 -1
- package/dist/tui/components/App.js +321 -21
- package/dist/tui/components/App.js.map +1 -1
- package/dist/tui/components/ApprovalPrompt.d.ts +18 -0
- package/dist/tui/components/ApprovalPrompt.js +26 -0
- package/dist/tui/components/ApprovalPrompt.js.map +1 -0
- package/dist/tui/components/DebugPanel.d.ts +29 -9
- package/dist/tui/components/DebugPanel.js +46 -23
- package/dist/tui/components/DebugPanel.js.map +1 -1
- package/dist/tui/components/FetchProgress.d.ts +36 -0
- package/dist/tui/components/FetchProgress.js +39 -0
- package/dist/tui/components/FetchProgress.js.map +1 -0
- package/dist/tui/components/LiveTurn.d.ts +26 -4
- package/dist/tui/components/LiveTurn.js +104 -18
- package/dist/tui/components/LiveTurn.js.map +1 -1
- package/dist/tui/components/NoticeBar.d.ts +32 -0
- package/dist/tui/components/NoticeBar.js +39 -0
- package/dist/tui/components/NoticeBar.js.map +1 -0
- package/dist/tui/components/PromptInput.d.ts +26 -1
- package/dist/tui/components/PromptInput.js +93 -7
- package/dist/tui/components/PromptInput.js.map +1 -1
- package/dist/tui/components/Rule.js.map +1 -1
- package/dist/tui/components/SelectList.d.ts +98 -9
- package/dist/tui/components/SelectList.js +209 -26
- package/dist/tui/components/SelectList.js.map +1 -1
- package/dist/tui/components/SlashCommandMenu.d.ts +20 -0
- package/dist/tui/components/SlashCommandMenu.js +28 -0
- package/dist/tui/components/SlashCommandMenu.js.map +1 -0
- package/dist/tui/components/StatusBar.d.ts +7 -1
- package/dist/tui/components/StatusBar.js +7 -3
- package/dist/tui/components/StatusBar.js.map +1 -1
- package/dist/tui/components/Transcript.js +6 -1
- package/dist/tui/components/Transcript.js.map +1 -1
- package/dist/tui/debugRender.d.ts +41 -6
- package/dist/tui/debugRender.js +126 -12
- package/dist/tui/debugRender.js.map +1 -1
- package/dist/tui/debugSearch.d.ts +40 -0
- package/dist/tui/debugSearch.js +73 -0
- package/dist/tui/debugSearch.js.map +1 -0
- package/dist/tui/markdown.js +0 -0
- package/dist/tui/markdown.js.map +1 -1
- package/dist/tui/pasteParser.d.ts +21 -0
- package/dist/tui/pasteParser.js +24 -0
- package/dist/tui/pasteParser.js.map +1 -0
- package/dist/tui/selectCancelled.d.ts +13 -0
- package/dist/tui/selectCancelled.js +17 -0
- package/dist/tui/selectCancelled.js.map +1 -0
- package/dist/tui/slashCommands.d.ts +220 -1
- package/dist/tui/slashCommands.js +408 -1
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/tui/tuiSessionModule.js +249 -24
- package/dist/tui/tuiSessionModule.js.map +1 -1
- package/dist/tui/types.d.ts +96 -7
- package/dist/tui/viewModel.d.ts +34 -0
- package/dist/tui/viewModel.js +67 -0
- package/dist/tui/viewModel.js.map +1 -1
- package/dist/utils/stdinPolicy.d.ts +31 -0
- package/dist/utils/stdinPolicy.js +37 -0
- package/dist/utils/stdinPolicy.js.map +1 -0
- package/package.json +21 -17
|
@@ -3,14 +3,17 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
|
3
3
|
import { Box, Text, useApp, useInput, useStdout } from 'ink';
|
|
4
4
|
import { foldEvents, foldSubagentEvents, initialSubagentTree, initialTurnViewModel, } from '#src/tui/viewModel.js';
|
|
5
5
|
import { Transcript } from '#src/tui/components/Transcript.js';
|
|
6
|
+
import { ApprovalPrompt } from '#src/tui/components/ApprovalPrompt.js';
|
|
6
7
|
import { LiveTurn } from '#src/tui/components/LiveTurn.js';
|
|
7
8
|
import { StatusBar } from '#src/tui/components/StatusBar.js';
|
|
9
|
+
import { NoticeBar, McpFailureBar } from '#src/tui/components/NoticeBar.js';
|
|
8
10
|
import { PromptInput } from '#src/tui/components/PromptInput.js';
|
|
9
11
|
import { Rule } from '#src/tui/components/Rule.js';
|
|
10
12
|
import { ClearBanner } from '#src/tui/components/ClearBanner.js';
|
|
11
13
|
import { DebugPanel, debugPanelLines, DEBUG_TABS, } from '#src/tui/components/DebugPanel.js';
|
|
12
|
-
import { createCommandRegistry, dispatchSlashCommand, parseSlashCommand, toolsToggleNotice, } from '#src/tui/slashCommands.js';
|
|
14
|
+
import { autoApproveNotice, createCommandRegistry, dispatchSlashCommand, parseSlashCommand, toolsToggleNotice, } from '#src/tui/slashCommands.js';
|
|
13
15
|
import { viewportBumpSequence } from '#src/tui/terminal.js';
|
|
16
|
+
import { findMatches, scrollOffsetForLine, stepMatch } from '#src/tui/debugSearch.js';
|
|
14
17
|
/** Rows of clipping viewport in the docked debug panel (default / restored size). */
|
|
15
18
|
const DEBUG_VIEWPORT_HEIGHT = 8;
|
|
16
19
|
/** Rows of chrome around the debug viewport we leave for when it is maximised (panel
|
|
@@ -38,6 +41,10 @@ const isPlainExit = (s) => s.trim().toLowerCase() === 'exit';
|
|
|
38
41
|
export function App(props) {
|
|
39
42
|
const { agent, mode, modelDisplayName, readyMessage, exitMessage, initialMessage } = props;
|
|
40
43
|
const [transcript, setTranscript] = useState([]);
|
|
44
|
+
// Mirror for the slash-command dispatch (memoized without transcript in deps): lets /reasoning
|
|
45
|
+
// read the committed turns' thinking without a stale closure or re-binding the handler (TUI-C18).
|
|
46
|
+
const transcriptRef = useRef([]);
|
|
47
|
+
transcriptRef.current = transcript;
|
|
41
48
|
const [live, setLive] = useState(null);
|
|
42
49
|
const [running, setRunning] = useState(false);
|
|
43
50
|
const [turnCount, setTurnCount] = useState(0);
|
|
@@ -50,17 +57,45 @@ export function App(props) {
|
|
|
50
57
|
const [debugScroll, setDebugScroll] = useState(0);
|
|
51
58
|
const [debugMaximized, setDebugMaximized] = useState(false);
|
|
52
59
|
const [debugHistory, setDebugHistory] = useState([]);
|
|
53
|
-
|
|
60
|
+
// TUI-C16: the old combined "system + tools" capture is split across two tabs.
|
|
61
|
+
const [debugSystem, setDebugSystem] = useState([]);
|
|
62
|
+
const [debugTools, setDebugTools] = useState([]);
|
|
63
|
+
// TUI-C20: the MCP-server overview tab (per-server instructions + prefixed tools).
|
|
64
|
+
const [debugMcp, setDebugMcp] = useState([]);
|
|
54
65
|
const [debugResponse, setDebugResponse] = useState([]);
|
|
66
|
+
// TUI-C21 — `less`-style incremental search over the focused pane's shared line model. Scoped to
|
|
67
|
+
// debug-pane focus (see the useInput handler): `/` opens the query, `n`/`N` step matches, `Esc`
|
|
68
|
+
// clears. `searchInput` is the "typing the query" mode (owns keys); `searchQuery` is the live
|
|
69
|
+
// query (highlights + count); `searchCurrent` is the 0-based cursor into the match list.
|
|
70
|
+
const [debugSearchInput, setDebugSearchInput] = useState(false);
|
|
71
|
+
const [debugSearchQuery, setDebugSearchQuery] = useState('');
|
|
72
|
+
const [debugSearchCurrent, setDebugSearchCurrent] = useState(0);
|
|
55
73
|
// Whether tool-call panels show their args/result body. Collapsed by default (compact
|
|
56
74
|
// summary lines) so the transcript stays readable; Ctrl+T flips the whole turn's detail,
|
|
57
75
|
// mirroring the docked debug panel's single-key detail toggle.
|
|
58
76
|
const [toolsExpanded, setToolsExpanded] = useState(false);
|
|
77
|
+
// EXT-12 — session auto-approve (shell commands run without the per-command prompt). Seeded from
|
|
78
|
+
// props (config may pre-enable it via run_shell_command.yolo); the runner owns the authoritative
|
|
79
|
+
// flag, this mirror drives the persistent status-bar indicator and the state-aware notice.
|
|
80
|
+
const [autoApprove, setAutoApprove] = useState(!!props.initialAutoApprove);
|
|
81
|
+
// Mirror for the synchronous approval useInput handler, so `y` (auto-approve all) can read the
|
|
82
|
+
// current flag without a stale closure.
|
|
83
|
+
const autoApproveRef = useRef(!!props.initialAutoApprove);
|
|
59
84
|
// Whether to show the post-`/clear` "history cleared" banner. Lives in the live (non-Static)
|
|
60
85
|
// frame so it is reliably visible — pushing a system line right after setTranscript([]) is
|
|
61
86
|
// swallowed because clearing <Static>'s items resets its internal index (TUI-C12). Hidden
|
|
62
87
|
// again the moment the next user turn starts so it doesn't linger above a fresh conversation.
|
|
63
88
|
const [clearedBanner, setClearedBanner] = useState(false);
|
|
89
|
+
// Tool-approval queue (EXT-9 Phase B2). The head record (if any) is the approval currently
|
|
90
|
+
// shown; while it is non-null the approval prompt OWNS keyboard input and the normal prompt is
|
|
91
|
+
// suspended, so the command can't be typed into the chat box. Additional requests queue behind
|
|
92
|
+
// it (only one approval is shown at a time) and surface as the head is resolved.
|
|
93
|
+
const [approvalQueue, setApprovalQueue] = useState([]);
|
|
94
|
+
const pendingApproval = approvalQueue[0] ?? null;
|
|
95
|
+
// Mirror for the synchronous useInput handler, so it can read+resolve the head without a stale
|
|
96
|
+
// closure (the handler is bound once and must not depend on the queue in its deps).
|
|
97
|
+
const approvalQueueRef = useRef([]);
|
|
98
|
+
approvalQueueRef.current = approvalQueue;
|
|
64
99
|
// Mirror of toolsExpanded for the slash-command handler (memoized without it in deps), so
|
|
65
100
|
// /tools can compute the next state without a stale closure or a side effect in the updater.
|
|
66
101
|
const toolsExpandedRef = useRef(false);
|
|
@@ -74,6 +109,9 @@ export function App(props) {
|
|
|
74
109
|
// Per-turn args buffers for the subagent fold (mirrors foldSubagentTree's internal map).
|
|
75
110
|
const subagentBuffersRef = useRef(new Map());
|
|
76
111
|
const debugFocusedRef = useRef(false);
|
|
112
|
+
// TUI-C10 — mirror of whether the prompt's slash-command menu currently owns navigation keys, so
|
|
113
|
+
// the top-level Tab handler (debug-panel focus) stands down while the menu is open.
|
|
114
|
+
const slashMenuActiveRef = useRef(false);
|
|
77
115
|
const { exit } = useApp();
|
|
78
116
|
// Terminal height drives the maximised viewport size; useStdout keeps it resize-aware.
|
|
79
117
|
const { stdout } = useStdout();
|
|
@@ -85,17 +123,72 @@ export function App(props) {
|
|
|
85
123
|
// step nor the arrow step can push the offset past the end (the over-scroll bug that left
|
|
86
124
|
// PgUp/↑ burning through phantom offset before anything moved — TUI-C11). Single-sourced with
|
|
87
125
|
// DebugPanel via the exported `debugPanelLines` so the clamp matches exactly what is rendered.
|
|
88
|
-
const
|
|
126
|
+
const debugLines = useMemo(() => debugPanelLines({
|
|
89
127
|
subagents,
|
|
90
128
|
historyLines: debugHistory,
|
|
91
|
-
|
|
129
|
+
systemLines: debugSystem,
|
|
130
|
+
toolsLines: debugTools,
|
|
131
|
+
mcpLines: debugMcp,
|
|
92
132
|
responseLines: debugResponse,
|
|
93
133
|
activeTab: debugTab,
|
|
94
|
-
})
|
|
134
|
+
}), [subagents, debugHistory, debugSystem, debugTools, debugMcp, debugResponse, debugTab]);
|
|
135
|
+
const debugLineCount = debugLines.length;
|
|
95
136
|
const debugMaxOffset = Math.max(0, debugLineCount - debugViewport);
|
|
137
|
+
// Mirror the active tab's lines for the synchronous key handler, so `/`-search can compute
|
|
138
|
+
// matches + the jump offset off the exact lines being rendered without a stale closure (TUI-C21).
|
|
139
|
+
const debugLinesRef = useRef([]);
|
|
140
|
+
debugLinesRef.current = debugLines;
|
|
141
|
+
// Match line-indices for the current query over the active tab's lines — one search, every tab
|
|
142
|
+
// uniformly (it runs over whatever `debugPanelLines` produced). Mirrored into refs so the
|
|
143
|
+
// synchronous key handler (n/N, Esc) reads the current matches + cursor without a stale closure.
|
|
144
|
+
const debugMatches = useMemo(() => findMatches(debugLines, debugSearchQuery), [debugLines, debugSearchQuery]);
|
|
145
|
+
const debugMatchesRef = useRef([]);
|
|
146
|
+
debugMatchesRef.current = debugMatches;
|
|
147
|
+
const debugSearchInputRef = useRef(false);
|
|
148
|
+
debugSearchInputRef.current = debugSearchInput;
|
|
149
|
+
const debugSearchQueryRef = useRef('');
|
|
150
|
+
debugSearchQueryRef.current = debugSearchQuery;
|
|
151
|
+
const debugSearchCurrentRef = useRef(0);
|
|
152
|
+
debugSearchCurrentRef.current = debugSearchCurrent;
|
|
153
|
+
// The absolute line index of the current match (or -1) — DebugPanel paints it distinctly.
|
|
154
|
+
const currentMatchLine = debugMatches.length > 0
|
|
155
|
+
? debugMatches[Math.min(debugSearchCurrent, debugMatches.length - 1)]
|
|
156
|
+
: -1;
|
|
96
157
|
// Clamp helper shared by every downward scroll (page + arrow) so the offset never exceeds the
|
|
97
158
|
// real maximum; the upward floor stays Math.max(0, …).
|
|
98
159
|
const clampDebugScroll = (next) => Math.min(Math.max(0, next), debugMaxOffset);
|
|
160
|
+
// ── TUI-C21 search helpers (drive state + refs together so the synchronous handler stays fresh) ──
|
|
161
|
+
// Clear the search entirely (query, matches, input mode). Leaves the viewport where it is.
|
|
162
|
+
const clearDebugSearch = () => {
|
|
163
|
+
debugSearchInputRef.current = false;
|
|
164
|
+
debugSearchQueryRef.current = '';
|
|
165
|
+
debugSearchCurrentRef.current = 0;
|
|
166
|
+
setDebugSearchInput(false);
|
|
167
|
+
setDebugSearchQuery('');
|
|
168
|
+
setDebugSearchCurrent(0);
|
|
169
|
+
};
|
|
170
|
+
// Set the query, recompute matches off the current lines, reset the cursor to the first match and
|
|
171
|
+
// jump the viewport to it (reusing TUI-C11's scroll offset). Incremental: called on every keystroke.
|
|
172
|
+
const setDebugSearch = (query) => {
|
|
173
|
+
debugSearchQueryRef.current = query;
|
|
174
|
+
setDebugSearchQuery(query);
|
|
175
|
+
const matches = findMatches(debugLinesRef.current, query);
|
|
176
|
+
debugSearchCurrentRef.current = 0;
|
|
177
|
+
setDebugSearchCurrent(0);
|
|
178
|
+
if (matches.length > 0) {
|
|
179
|
+
setDebugScroll(scrollOffsetForLine(matches[0], debugViewport, debugLinesRef.current.length));
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
// Move to the next (+1) / previous (-1) match with wrap-around and jump the viewport to it.
|
|
183
|
+
const stepDebugSearch = (dir) => {
|
|
184
|
+
const matches = debugMatchesRef.current;
|
|
185
|
+
if (matches.length === 0)
|
|
186
|
+
return;
|
|
187
|
+
const next = stepMatch(matches, debugSearchCurrentRef.current, dir);
|
|
188
|
+
debugSearchCurrentRef.current = next;
|
|
189
|
+
setDebugSearchCurrent(next);
|
|
190
|
+
setDebugScroll(scrollOffsetForLine(matches[next], debugViewport, debugLinesRef.current.length));
|
|
191
|
+
};
|
|
99
192
|
// Built once per session; a plain array so later layers (EXT-5) could append commands.
|
|
100
193
|
const registry = useMemo(() => createCommandRegistry(), []);
|
|
101
194
|
const nextId = () => (idRef.current += 1);
|
|
@@ -160,19 +253,87 @@ export function App(props) {
|
|
|
160
253
|
push({ kind: 'notice', title, lines, tone: tone ?? 'info' });
|
|
161
254
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
162
255
|
}, []);
|
|
163
|
-
|
|
164
|
-
|
|
256
|
+
// EXT-12 — apply an auto-approve change (from `/auto-approve on|off`, the `/yolo` alias, or the
|
|
257
|
+
// approval prompt's `y` key). The runner owns the flag, so ask it to apply the action, mirror the
|
|
258
|
+
// landed state into local state + ref (drives the status indicator), and commit the state-aware
|
|
259
|
+
// notice. Falls back to a clear system line when the agent has no runner (fixture). Returns the
|
|
260
|
+
// landed state so the approval handler can also approve the pending command in the same keystroke.
|
|
261
|
+
const applyAutoApprove = useCallback((action) => {
|
|
262
|
+
if (!agent.setAutoApprove) {
|
|
263
|
+
push({
|
|
264
|
+
kind: 'system',
|
|
265
|
+
level: 'warning',
|
|
266
|
+
text: 'Auto-approve is unavailable in this session.',
|
|
267
|
+
});
|
|
268
|
+
return autoApproveRef.current;
|
|
269
|
+
}
|
|
270
|
+
const next = agent.setAutoApprove(action);
|
|
271
|
+
autoApproveRef.current = next;
|
|
272
|
+
setAutoApprove(next);
|
|
273
|
+
const { title, lines, tone } = autoApproveNotice(next);
|
|
274
|
+
push({ kind: 'notice', title, lines, tone: tone ?? 'info' });
|
|
275
|
+
return next;
|
|
276
|
+
},
|
|
277
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
278
|
+
[agent]);
|
|
279
|
+
// Resolve the currently-shown approval (the queue head) and commit a brief notice so the
|
|
280
|
+
// decision reads in the transcript (TUI-C14 notice conventions). Dequeues the head so the next
|
|
281
|
+
// queued approval (if any) surfaces. Approve carries the chosen scope; reject is fail-closed.
|
|
282
|
+
const resolveApproval = useCallback((decision) => {
|
|
283
|
+
const head = approvalQueueRef.current[0];
|
|
284
|
+
if (!head)
|
|
165
285
|
return;
|
|
286
|
+
if (decision === 'reject') {
|
|
287
|
+
head.resolve({ type: 'reject', message: 'User rejected the shell command.' });
|
|
288
|
+
push({
|
|
289
|
+
kind: 'notice',
|
|
290
|
+
title: 'Command rejected',
|
|
291
|
+
lines: ['The shell command was not run; the agent was told you declined.'],
|
|
292
|
+
tone: 'warn',
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
const scope = decision;
|
|
297
|
+
head.resolve({ type: 'approve', scope });
|
|
298
|
+
const detail = scope === 'once'
|
|
299
|
+
? 'Approved this single invocation only.'
|
|
300
|
+
: scope === 'session'
|
|
301
|
+
? 'Approved for this session — future variants will not re-prompt.'
|
|
302
|
+
: 'Approved and remembered — saved to the project allow-list.';
|
|
303
|
+
push({
|
|
304
|
+
kind: 'notice',
|
|
305
|
+
title: `Command approved (${scope})`,
|
|
306
|
+
lines: [detail],
|
|
307
|
+
tone: 'info',
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
setApprovalQueue((q) => q.slice(1));
|
|
311
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
312
|
+
}, []);
|
|
313
|
+
const handleSubmit = useCallback((value) => {
|
|
166
314
|
if (!value.trim())
|
|
167
315
|
return;
|
|
168
|
-
|
|
316
|
+
const running = runningRef.current;
|
|
317
|
+
const parsed = parseSlashCommand(value);
|
|
318
|
+
// While a turn is streaming ("during inference") the prompt stays mounted so the user can
|
|
319
|
+
// flip auto-approval or inspect state mid-turn (EXT-12). Only slash commands are honoured
|
|
320
|
+
// then — a plain message can't be sent until the turn finishes — and dispatch itself refuses
|
|
321
|
+
// any command not marked availableDuringRun. Outside a run, everything behaves as before.
|
|
322
|
+
if (running && !parsed) {
|
|
323
|
+
push({
|
|
324
|
+
kind: 'system',
|
|
325
|
+
level: 'warning',
|
|
326
|
+
text: 'The agent is working — only slash commands (e.g. /auto-approve) are available right now.',
|
|
327
|
+
});
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
// Legacy bare `exit` keyword still quits (idle only — guarded above while running).
|
|
169
331
|
if (isPlainExit(value)) {
|
|
170
332
|
quit();
|
|
171
333
|
return;
|
|
172
334
|
}
|
|
173
335
|
// A line starting with `/` is a slash command: dispatch through the registry instead
|
|
174
336
|
// of sending it to the model. Unknown commands become a friendly system line.
|
|
175
|
-
const parsed = parseSlashCommand(value);
|
|
176
337
|
if (parsed) {
|
|
177
338
|
const result = dispatchSlashCommand(parsed, registry, {
|
|
178
339
|
mode,
|
|
@@ -180,12 +341,30 @@ export function App(props) {
|
|
|
180
341
|
turnCount: turnCountRef.current,
|
|
181
342
|
toolsExpanded: toolsExpandedRef.current,
|
|
182
343
|
debugVisible: debugVisibleRef.current,
|
|
183
|
-
|
|
344
|
+
configSummary: props.configSummary,
|
|
345
|
+
// TUI-C19 — the actual validation warnings so `/config` renders the details the
|
|
346
|
+
// standing advisory line points at.
|
|
347
|
+
configWarnings: props.advisories,
|
|
348
|
+
historySummary: props.historySummary,
|
|
349
|
+
insightsSummary: props.insightsSummary,
|
|
350
|
+
historySearch: props.historySearch,
|
|
351
|
+
// Committed turns' thinking, in transcript order (index 0 = turn 1), for /reasoning.
|
|
352
|
+
turnReasonings: transcriptRef.current
|
|
353
|
+
.filter((i) => i.kind === 'assistant')
|
|
354
|
+
.map((i) => i.turn.reasoning),
|
|
355
|
+
// GS2-46 — the full live transcript + resolved config for /debug-dump, plus the
|
|
356
|
+
// injected fs-writing implementation (undefined for the fixture agent).
|
|
357
|
+
transcript: transcriptRef.current,
|
|
358
|
+
resolvedConfig: props.resolvedConfig,
|
|
359
|
+
dumpDebugSession: props.dumpDebugSession,
|
|
360
|
+
}, { duringRun: running });
|
|
184
361
|
if (result.clearTranscript) {
|
|
185
362
|
setTranscript([]);
|
|
186
363
|
setSubagents(initialSubagentTree());
|
|
187
364
|
setDebugHistory([]);
|
|
188
|
-
|
|
365
|
+
setDebugSystem([]);
|
|
366
|
+
setDebugTools([]);
|
|
367
|
+
setDebugMcp([]);
|
|
189
368
|
setDebugResponse([]);
|
|
190
369
|
// Show visible feedback for the clear. Rendered outside <Static> (see clearedBanner)
|
|
191
370
|
// so the known index-reset swallow quirk can't eat it (TUI-C12).
|
|
@@ -213,6 +392,12 @@ export function App(props) {
|
|
|
213
392
|
// toggleTools owns the notice so the copy matches the state actually applied.
|
|
214
393
|
toggleTools();
|
|
215
394
|
}
|
|
395
|
+
if (result.autoApprove) {
|
|
396
|
+
// The runner owns the flag; apply the requested action and commit the notice for the
|
|
397
|
+
// landed state via the shared helper (single-sourced with the approval prompt's y key).
|
|
398
|
+
// EXT-12.
|
|
399
|
+
applyAutoApprove(result.autoApprove);
|
|
400
|
+
}
|
|
216
401
|
if (result.toggleDebug) {
|
|
217
402
|
setDebugVisible((v) => {
|
|
218
403
|
const next = !v;
|
|
@@ -226,13 +411,20 @@ export function App(props) {
|
|
|
226
411
|
setDebugFocused(false);
|
|
227
412
|
debugFocusedRef.current = false;
|
|
228
413
|
setDebugMaximized(false);
|
|
414
|
+
// Drop any active search so the pane reopens clean (TUI-C21).
|
|
415
|
+
clearDebugSearch();
|
|
229
416
|
}
|
|
230
417
|
return next;
|
|
231
418
|
});
|
|
232
419
|
}
|
|
233
|
-
//
|
|
234
|
-
//
|
|
235
|
-
if (result.
|
|
420
|
+
// TUI-C18 — /reasoning reprint: commit a reasoning block that reuses the TUI-C15 styling
|
|
421
|
+
// (the original committed turn is frozen in <Static> and can't re-expand in place).
|
|
422
|
+
if (result.reprintReasoning) {
|
|
423
|
+
push({ kind: 'reasoning', ...result.reprintReasoning });
|
|
424
|
+
}
|
|
425
|
+
// Commit a structured notice (TUI-C14). /tools and /auto-approve own their notices above
|
|
426
|
+
// (the state-aware copy is committed there), so skip result.notice in those cases.
|
|
427
|
+
if (result.notice && !result.toggleTools && !result.autoApprove) {
|
|
236
428
|
const { title, lines, tone } = result.notice;
|
|
237
429
|
push({ kind: 'notice', title, lines, tone: tone ?? 'info' });
|
|
238
430
|
}
|
|
@@ -246,7 +438,7 @@ export function App(props) {
|
|
|
246
438
|
void runTurn(value);
|
|
247
439
|
},
|
|
248
440
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
249
|
-
[runTurn, quit, registry, mode, modelDisplayName, toggleTools]);
|
|
441
|
+
[runTurn, quit, registry, mode, modelDisplayName, toggleTools, applyAutoApprove]);
|
|
250
442
|
// Keyboard handling, in priority order:
|
|
251
443
|
// 1. Esc while running → abort the in-flight turn (stdin is uncontended here — the event
|
|
252
444
|
// path never registers gsloth's readline Esc handler, so Ink owns raw mode cleanly).
|
|
@@ -254,6 +446,30 @@ export function App(props) {
|
|
|
254
446
|
// 3. While the panel is focused → Tab/Shift+Tab cycle sections, ↑/↓ scroll one line,
|
|
255
447
|
// PageUp/PageDown page-step, m maximises, Esc unfocuses.
|
|
256
448
|
useInput((input, key) => {
|
|
449
|
+
// Highest priority: a pending tool approval OWNS the keyboard (EXT-9 Phase B2). While one is
|
|
450
|
+
// shown, o/s/a resolve approve with the matching scope; `y` turns on session auto-approve
|
|
451
|
+
// (invoking /auto-approve during inference) and approves this one; anything else (n, Esc,
|
|
452
|
+
// Enter, …) resolves reject — fail-closed, mirroring the readline path. We swallow the key
|
|
453
|
+
// either way so it can't fall through to abort/debug handling or get typed into the prompt.
|
|
454
|
+
if (approvalQueueRef.current.length > 0) {
|
|
455
|
+
const ch = input.toLowerCase();
|
|
456
|
+
if (ch === 'o')
|
|
457
|
+
resolveApproval('once');
|
|
458
|
+
else if (ch === 's')
|
|
459
|
+
resolveApproval('session');
|
|
460
|
+
else if (ch === 'a')
|
|
461
|
+
resolveApproval('always');
|
|
462
|
+
else if (ch === 'y') {
|
|
463
|
+
// Enable auto-approval for the rest of the session, then approve this pending command
|
|
464
|
+
// once so the run continues; every later gated command auto-approves silently.
|
|
465
|
+
if (!autoApproveRef.current)
|
|
466
|
+
applyAutoApprove('on');
|
|
467
|
+
resolveApproval('once');
|
|
468
|
+
}
|
|
469
|
+
else
|
|
470
|
+
resolveApproval('reject');
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
257
473
|
if (key.escape && runningRef.current) {
|
|
258
474
|
abortRef.current?.abort();
|
|
259
475
|
return;
|
|
@@ -268,17 +484,80 @@ export function App(props) {
|
|
|
268
484
|
return;
|
|
269
485
|
}
|
|
270
486
|
if (debugFocusedRef.current) {
|
|
487
|
+
// TUI-C21 — while TYPING the query, the search input OWNS the keyboard: printable chars
|
|
488
|
+
// extend the query, Backspace trims it, Enter confirms (keeps the highlights, leaves input
|
|
489
|
+
// mode), Esc clears. This must come first so `m`/`n`/Tab are typed into the query rather than
|
|
490
|
+
// maximising / navigating / cycling. `/` here is not the app slash line — the prompt is
|
|
491
|
+
// unmounted while the pane is focused, so `/` can only mean "search this pane" (the seam).
|
|
492
|
+
if (debugSearchInputRef.current) {
|
|
493
|
+
if (key.escape) {
|
|
494
|
+
clearDebugSearch();
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
if (key.return) {
|
|
498
|
+
// Confirm: leave typing mode but keep the query + highlights (n/N now navigate).
|
|
499
|
+
debugSearchInputRef.current = false;
|
|
500
|
+
setDebugSearchInput(false);
|
|
501
|
+
return;
|
|
502
|
+
}
|
|
503
|
+
if (key.backspace || key.delete) {
|
|
504
|
+
setDebugSearch(debugSearchQueryRef.current.slice(0, -1));
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
// Ignore navigation keys while typing; only literal characters extend the query.
|
|
508
|
+
if (key.tab ||
|
|
509
|
+
key.upArrow ||
|
|
510
|
+
key.downArrow ||
|
|
511
|
+
key.leftArrow ||
|
|
512
|
+
key.rightArrow ||
|
|
513
|
+
key.pageUp ||
|
|
514
|
+
key.pageDown) {
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
if (input && !key.ctrl && !key.meta) {
|
|
518
|
+
setDebugSearch(debugSearchQueryRef.current + input);
|
|
519
|
+
}
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
// Esc layering: clear an active search first (less-style), else unfocus the pane.
|
|
271
523
|
if (key.escape) {
|
|
524
|
+
if (debugSearchQueryRef.current) {
|
|
525
|
+
clearDebugSearch();
|
|
526
|
+
return;
|
|
527
|
+
}
|
|
272
528
|
setDebugFocused(false);
|
|
273
529
|
debugFocusedRef.current = false;
|
|
274
530
|
return;
|
|
275
531
|
}
|
|
532
|
+
// `/` opens the search input (scoped to pane focus — the seam).
|
|
533
|
+
if (input === '/') {
|
|
534
|
+
debugSearchInputRef.current = true;
|
|
535
|
+
debugSearchQueryRef.current = '';
|
|
536
|
+
debugSearchCurrentRef.current = 0;
|
|
537
|
+
setDebugSearchInput(true);
|
|
538
|
+
setDebugSearchQuery('');
|
|
539
|
+
setDebugSearchCurrent(0);
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
542
|
+
// n / N step to the next / previous match with wrap-around (only when a search is active).
|
|
543
|
+
if (input === 'n') {
|
|
544
|
+
stepDebugSearch(1);
|
|
545
|
+
return;
|
|
546
|
+
}
|
|
547
|
+
if (input === 'N') {
|
|
548
|
+
stepDebugSearch(-1);
|
|
549
|
+
return;
|
|
550
|
+
}
|
|
276
551
|
// Tab cycles sections forward; Shift+Tab steps back to the previous section (Ink reports
|
|
277
552
|
// a back-tab as key.tab with key.shift). Both reset the scroll to the top of the new section.
|
|
278
553
|
if (key.tab) {
|
|
279
554
|
const step = key.shift ? -1 : 1;
|
|
280
555
|
setDebugTab((t) => DEBUG_TABS[(DEBUG_TABS.indexOf(t) + step + DEBUG_TABS.length) % DEBUG_TABS.length]);
|
|
281
556
|
setDebugScroll(0);
|
|
557
|
+
// Matches are tab-local; recompute happens via the memo, reset the cursor to the first
|
|
558
|
+
// match of the new tab (the query persists across tabs).
|
|
559
|
+
debugSearchCurrentRef.current = 0;
|
|
560
|
+
setDebugSearchCurrent(0);
|
|
282
561
|
return;
|
|
283
562
|
}
|
|
284
563
|
// 'm' toggles maximise: grow the pane to (most of) the terminal height so long
|
|
@@ -309,8 +588,9 @@ export function App(props) {
|
|
|
309
588
|
}
|
|
310
589
|
return;
|
|
311
590
|
}
|
|
312
|
-
// Tab focuses the docked panel when it is visible and no turn is running
|
|
313
|
-
|
|
591
|
+
// Tab focuses the docked panel when it is visible and no turn is running — unless the prompt's
|
|
592
|
+
// slash-command menu is open, in which case Tab completes the highlighted command (TUI-C10).
|
|
593
|
+
if (key.tab && debugVisible && !runningRef.current && !slashMenuActiveRef.current) {
|
|
314
594
|
setDebugFocused(true);
|
|
315
595
|
debugFocusedRef.current = true;
|
|
316
596
|
}
|
|
@@ -322,12 +602,18 @@ export function App(props) {
|
|
|
322
602
|
}
|
|
323
603
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
324
604
|
}, []);
|
|
325
|
-
// Route agent status updates (warnings/
|
|
326
|
-
// which would otherwise corrupt Ink's frame.
|
|
605
|
+
// Route agent status updates (warnings/errors) into the transcript instead of stdout,
|
|
606
|
+
// which would otherwise corrupt Ink's frame. INFO/DEBUG system lines are suppressed in the
|
|
607
|
+
// TUI: the agent's per-turn chatter (`Requested tools`, `Loaded tools`, `Workdir`, `Model`,
|
|
608
|
+
// `Thinking…`) duplicates what the TUI already renders (live tool-call cards + spinner + the
|
|
609
|
+
// typed AgentStreamEvent content path). Plain-CLI keeps them via defaultStatusCallback. Only
|
|
610
|
+
// WARNING/ERROR (and content levels) reach the transcript so genuine signals still surface.
|
|
327
611
|
useEffect(() => {
|
|
328
612
|
if (!props.subscribeStatus)
|
|
329
613
|
return;
|
|
330
614
|
return props.subscribeStatus((level, message) => {
|
|
615
|
+
if (level === 'INFO' || level === 'DEBUG')
|
|
616
|
+
return;
|
|
331
617
|
if (message.trim())
|
|
332
618
|
push({ kind: 'system', level, text: message });
|
|
333
619
|
});
|
|
@@ -342,16 +628,30 @@ export function App(props) {
|
|
|
342
628
|
return props.subscribeDebug((capture) => {
|
|
343
629
|
if (capture.kind === 'request') {
|
|
344
630
|
setDebugHistory(capture.text.split('\n'));
|
|
345
|
-
|
|
631
|
+
setDebugSystem(capture.system.split('\n'));
|
|
632
|
+
setDebugTools(capture.tools.split('\n'));
|
|
633
|
+
setDebugMcp(capture.mcp.split('\n'));
|
|
346
634
|
}
|
|
347
635
|
else
|
|
348
636
|
setDebugResponse(capture.text.split('\n'));
|
|
349
637
|
});
|
|
350
638
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
351
639
|
}, []);
|
|
640
|
+
// Surface tool-approval requests bridged from the runner (EXT-9 Phase B2): each pending
|
|
641
|
+
// approval is appended to the queue; the head renders the <ApprovalPrompt> and owns input.
|
|
642
|
+
useEffect(() => {
|
|
643
|
+
if (!props.subscribeApproval)
|
|
644
|
+
return;
|
|
645
|
+
return props.subscribeApproval((record) => {
|
|
646
|
+
setApprovalQueue((q) => [...q, record]);
|
|
647
|
+
});
|
|
648
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
649
|
+
}, []);
|
|
352
650
|
// The greeting is an intro, not a permanent fixture: show it only before the first
|
|
353
651
|
// exchange, so it stops padding the bottom dock once the conversation is underway.
|
|
354
652
|
const showIntro = !initialMessage && transcript.length === 0 && !live;
|
|
355
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Transcript, { items: transcript, toolsExpanded: toolsExpanded }), clearedBanner ? _jsx(ClearBanner, {}) : null, showIntro ? _jsx(Text, { dimColor: true, children: readyMessage.trim() }) : null, live ? _jsx(LiveTurn, { turn: live, toolsExpanded: toolsExpanded, streaming: true }) : null, debugVisible ? (_jsx(DebugPanel, { subagents: subagents, historyLines: debugHistory,
|
|
653
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Transcript, { items: transcript, toolsExpanded: toolsExpanded }), clearedBanner ? _jsx(ClearBanner, {}) : null, showIntro ? _jsx(Text, { dimColor: true, children: readyMessage.trim() }) : null, live ? _jsx(LiveTurn, { turn: live, toolsExpanded: toolsExpanded, streaming: true }) : null, debugVisible ? (_jsx(DebugPanel, { subagents: subagents, historyLines: debugHistory, systemLines: debugSystem, toolsLines: debugTools, mcpLines: debugMcp, responseLines: debugResponse, activeTab: debugTab, scrollOffset: debugScroll, focused: debugFocused, viewportHeight: debugViewport, maximized: debugMaximized, searchQuery: debugSearchQuery, searchActive: debugSearchInput, matchCount: debugMatches.length, currentMatchIndex: debugSearchCurrent, currentMatchLine: currentMatchLine })) : null, pendingApproval ? _jsx(ApprovalPrompt, { pending: pendingApproval.pending }) : null, _jsx(Rule, {}), _jsx(NoticeBar, { advisories: props.advisories }), _jsx(McpFailureBar, { failures: props.mcpFailures }), _jsx(StatusBar, { running: running, mode: mode, modelDisplayName: modelDisplayName, turnCount: turnCount, debugHint: debugVisible && !debugFocused, autoApprove: autoApprove }), !debugFocused && !pendingApproval ? (_jsx(PromptInput, { onSubmit: handleSubmit, commands: registry, onMenuStateChange: (active) => {
|
|
654
|
+
slashMenuActiveRef.current = active;
|
|
655
|
+
} })) : null, _jsx(Text, { dimColor: true, children: exitMessage.trim() }), _jsx(Rule, {})] }));
|
|
356
656
|
}
|
|
357
657
|
//# sourceMappingURL=App.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/tui/components/App.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/tui/components/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PendingToolInterrupt } from '@gaunt-sloth/core/core/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The scoped tool-approval affordance (EXT-9 Phase B2) — the Ink TUI counterpart to the
|
|
5
|
+
* readline `Approve? [o]nce / [s]ession / [a]lways / [N]o:` prompt. Shown when a
|
|
6
|
+
* `run_shell_command` interrupt is pending; styled like a warn-tone {@link CommandNotice}
|
|
7
|
+
* (yellow bold title + dim body bracketed by a rule) so it reads consistently in the
|
|
8
|
+
* transcript dock. While it is mounted the parent `<App>` routes keyboard input here and
|
|
9
|
+
* suspends the normal prompt, so the command can't be typed into the chat box.
|
|
10
|
+
*
|
|
11
|
+
* Pure/presentational: it only renders the pending command + the choices. The key handling
|
|
12
|
+
* (o/s/a → approve, y → auto-approve the rest of the session, anything else → reject) lives in
|
|
13
|
+
* `<App>`'s `useInput`, mirroring the way the debug panel's scroll keys are owned by the root
|
|
14
|
+
* component.
|
|
15
|
+
*/
|
|
16
|
+
export declare function ApprovalPrompt({ pending, }: {
|
|
17
|
+
pending: PendingToolInterrupt;
|
|
18
|
+
}): React.ReactElement;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { Rule } from '#src/tui/components/Rule.js';
|
|
4
|
+
/**
|
|
5
|
+
* The scoped tool-approval affordance (EXT-9 Phase B2) — the Ink TUI counterpart to the
|
|
6
|
+
* readline `Approve? [o]nce / [s]ession / [a]lways / [N]o:` prompt. Shown when a
|
|
7
|
+
* `run_shell_command` interrupt is pending; styled like a warn-tone {@link CommandNotice}
|
|
8
|
+
* (yellow bold title + dim body bracketed by a rule) so it reads consistently in the
|
|
9
|
+
* transcript dock. While it is mounted the parent `<App>` routes keyboard input here and
|
|
10
|
+
* suspends the normal prompt, so the command can't be typed into the chat box.
|
|
11
|
+
*
|
|
12
|
+
* Pure/presentational: it only renders the pending command + the choices. The key handling
|
|
13
|
+
* (o/s/a → approve, y → auto-approve the rest of the session, anything else → reject) lives in
|
|
14
|
+
* `<App>`'s `useInput`, mirroring the way the debug panel's scroll keys are owned by the root
|
|
15
|
+
* component.
|
|
16
|
+
*/
|
|
17
|
+
export function ApprovalPrompt({ pending, }) {
|
|
18
|
+
const commandText = typeof pending.args.command === 'string'
|
|
19
|
+
? pending.args.command
|
|
20
|
+
: JSON.stringify(pending.args);
|
|
21
|
+
// EXT-10: when the LLM-as-judge gate escalated this command (rather than auto-approving), show
|
|
22
|
+
// its flag + reason so the human has the judge's read before deciding.
|
|
23
|
+
const verdict = pending.safetyVerdict;
|
|
24
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Rule, {}), _jsx(Text, { bold: true, color: "yellow", children: `The agent wants to run a shell command via ${pending.name}` }), _jsx(Text, { dimColor: true, children: ` ${commandText}` }), verdict ? (_jsx(Text, { color: "yellow", children: `⚠ safety judge (${verdict.risk}): ${verdict.reason}` })) : null, _jsx(Text, { dimColor: true, children: 'Approve? [o]nce [s]ession [a]lways [y] auto-approve all [N]o' })] }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=ApprovalPrompt.js.map
|