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.
Files changed (127) hide show
  1. package/README.md +55 -5
  2. package/cli.js +43 -10
  3. package/dist/cli.js +33 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/adkEvalRunner.d.ts +66 -0
  6. package/dist/commands/adkEvalRunner.js +69 -0
  7. package/dist/commands/adkEvalRunner.js.map +1 -0
  8. package/dist/commands/agUiEvalRunner.d.ts +73 -0
  9. package/dist/commands/agUiEvalRunner.js +216 -0
  10. package/dist/commands/agUiEvalRunner.js.map +1 -0
  11. package/dist/commands/askCommand.d.ts +3 -2
  12. package/dist/commands/askCommand.js +26 -7
  13. package/dist/commands/askCommand.js.map +1 -1
  14. package/dist/commands/batchCommand.d.ts +78 -0
  15. package/dist/commands/batchCommand.js +245 -0
  16. package/dist/commands/batchCommand.js.map +1 -0
  17. package/dist/commands/cliOptionParsers.d.ts +12 -0
  18. package/dist/commands/cliOptionParsers.js +18 -0
  19. package/dist/commands/cliOptionParsers.js.map +1 -0
  20. package/dist/commands/commandIntrospection.d.ts +6 -6
  21. package/dist/commands/commandIntrospection.js +12 -12
  22. package/dist/commands/commandIntrospection.js.map +1 -1
  23. package/dist/commands/commandUtils.d.ts +16 -16
  24. package/dist/commands/commandUtils.js +20 -20
  25. package/dist/commands/commandUtils.js.map +1 -1
  26. package/dist/commands/configCommand.d.ts +24 -0
  27. package/dist/commands/configCommand.js +117 -0
  28. package/dist/commands/configCommand.js.map +1 -0
  29. package/dist/commands/configSetup.d.ts +1 -1
  30. package/dist/commands/configSetup.js +17 -2
  31. package/dist/commands/configSetup.js.map +1 -1
  32. package/dist/commands/evalCommand.d.ts +41 -0
  33. package/dist/commands/evalCommand.js +483 -0
  34. package/dist/commands/evalCommand.js.map +1 -0
  35. package/dist/commands/execCommand.js +4 -1
  36. package/dist/commands/execCommand.js.map +1 -1
  37. package/dist/commands/firstRunDialog.d.ts +39 -5
  38. package/dist/commands/firstRunDialog.js +72 -10
  39. package/dist/commands/firstRunDialog.js.map +1 -1
  40. package/dist/commands/getCommand.js +7 -7
  41. package/dist/commands/getCommand.js.map +1 -1
  42. package/dist/commands/historyCommand.d.ts +17 -0
  43. package/dist/commands/historyCommand.js +102 -0
  44. package/dist/commands/historyCommand.js.map +1 -0
  45. package/dist/commands/initCommand.d.ts +3 -0
  46. package/dist/commands/initCommand.js +9 -4
  47. package/dist/commands/initCommand.js.map +1 -1
  48. package/dist/commands/insightsCommand.d.ts +8 -0
  49. package/dist/commands/insightsCommand.js +32 -0
  50. package/dist/commands/insightsCommand.js.map +1 -0
  51. package/dist/commands/modelsCommand.d.ts +25 -0
  52. package/dist/commands/modelsCommand.js +96 -0
  53. package/dist/commands/modelsCommand.js.map +1 -0
  54. package/dist/commands/prCommand.js +14 -15
  55. package/dist/commands/prCommand.js.map +1 -1
  56. package/dist/commands/prDiscovery.d.ts +2 -2
  57. package/dist/commands/prDiscovery.js +27 -29
  58. package/dist/commands/prDiscovery.js.map +1 -1
  59. package/dist/commands/reviewCommand.js +15 -10
  60. package/dist/commands/reviewCommand.js.map +1 -1
  61. package/dist/commands/workflowCommand.d.ts +19 -0
  62. package/dist/commands/workflowCommand.js +77 -0
  63. package/dist/commands/workflowCommand.js.map +1 -0
  64. package/dist/helpers/jira/jiraLogWork.js.map +1 -1
  65. package/dist/modules/startSession.js +9 -7
  66. package/dist/modules/startSession.js.map +1 -1
  67. package/dist/tools/gthJiraLogWorkTool.js +3 -3
  68. package/dist/tools/gthJiraLogWorkTool.js.map +1 -1
  69. package/dist/tui/components/App.js +321 -21
  70. package/dist/tui/components/App.js.map +1 -1
  71. package/dist/tui/components/ApprovalPrompt.d.ts +18 -0
  72. package/dist/tui/components/ApprovalPrompt.js +26 -0
  73. package/dist/tui/components/ApprovalPrompt.js.map +1 -0
  74. package/dist/tui/components/DebugPanel.d.ts +29 -9
  75. package/dist/tui/components/DebugPanel.js +46 -23
  76. package/dist/tui/components/DebugPanel.js.map +1 -1
  77. package/dist/tui/components/FetchProgress.d.ts +36 -0
  78. package/dist/tui/components/FetchProgress.js +39 -0
  79. package/dist/tui/components/FetchProgress.js.map +1 -0
  80. package/dist/tui/components/LiveTurn.d.ts +26 -4
  81. package/dist/tui/components/LiveTurn.js +104 -18
  82. package/dist/tui/components/LiveTurn.js.map +1 -1
  83. package/dist/tui/components/NoticeBar.d.ts +32 -0
  84. package/dist/tui/components/NoticeBar.js +39 -0
  85. package/dist/tui/components/NoticeBar.js.map +1 -0
  86. package/dist/tui/components/PromptInput.d.ts +26 -1
  87. package/dist/tui/components/PromptInput.js +93 -7
  88. package/dist/tui/components/PromptInput.js.map +1 -1
  89. package/dist/tui/components/Rule.js.map +1 -1
  90. package/dist/tui/components/SelectList.d.ts +98 -9
  91. package/dist/tui/components/SelectList.js +209 -26
  92. package/dist/tui/components/SelectList.js.map +1 -1
  93. package/dist/tui/components/SlashCommandMenu.d.ts +20 -0
  94. package/dist/tui/components/SlashCommandMenu.js +28 -0
  95. package/dist/tui/components/SlashCommandMenu.js.map +1 -0
  96. package/dist/tui/components/StatusBar.d.ts +7 -1
  97. package/dist/tui/components/StatusBar.js +7 -3
  98. package/dist/tui/components/StatusBar.js.map +1 -1
  99. package/dist/tui/components/Transcript.js +6 -1
  100. package/dist/tui/components/Transcript.js.map +1 -1
  101. package/dist/tui/debugRender.d.ts +41 -6
  102. package/dist/tui/debugRender.js +126 -12
  103. package/dist/tui/debugRender.js.map +1 -1
  104. package/dist/tui/debugSearch.d.ts +40 -0
  105. package/dist/tui/debugSearch.js +73 -0
  106. package/dist/tui/debugSearch.js.map +1 -0
  107. package/dist/tui/markdown.js +0 -0
  108. package/dist/tui/markdown.js.map +1 -1
  109. package/dist/tui/pasteParser.d.ts +21 -0
  110. package/dist/tui/pasteParser.js +24 -0
  111. package/dist/tui/pasteParser.js.map +1 -0
  112. package/dist/tui/selectCancelled.d.ts +13 -0
  113. package/dist/tui/selectCancelled.js +17 -0
  114. package/dist/tui/selectCancelled.js.map +1 -0
  115. package/dist/tui/slashCommands.d.ts +220 -1
  116. package/dist/tui/slashCommands.js +408 -1
  117. package/dist/tui/slashCommands.js.map +1 -1
  118. package/dist/tui/tuiSessionModule.js +249 -24
  119. package/dist/tui/tuiSessionModule.js.map +1 -1
  120. package/dist/tui/types.d.ts +96 -7
  121. package/dist/tui/viewModel.d.ts +34 -0
  122. package/dist/tui/viewModel.js +67 -0
  123. package/dist/tui/viewModel.js.map +1 -1
  124. package/dist/utils/stdinPolicy.d.ts +31 -0
  125. package/dist/utils/stdinPolicy.js +37 -0
  126. package/dist/utils/stdinPolicy.js.map +1 -0
  127. 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
- const [debugRequest, setDebugRequest] = useState([]);
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 debugLineCount = useMemo(() => debugPanelLines({
126
+ const debugLines = useMemo(() => debugPanelLines({
89
127
  subagents,
90
128
  historyLines: debugHistory,
91
- requestLines: debugRequest,
129
+ systemLines: debugSystem,
130
+ toolsLines: debugTools,
131
+ mcpLines: debugMcp,
92
132
  responseLines: debugResponse,
93
133
  activeTab: debugTab,
94
- }).length, [subagents, debugHistory, debugRequest, debugResponse, debugTab]);
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
- const handleSubmit = useCallback((value) => {
164
- if (runningRef.current)
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
- // Legacy bare `exit` keyword still quits.
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
- setDebugRequest([]);
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
- // Commit a structured notice (TUI-C14). /tools owns its notice via toggleTools above, so
234
- // skip the result.notice in that case to avoid a duplicate.
235
- if (result.notice && !result.toggleTools) {
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
- if (key.tab && debugVisible && !runningRef.current) {
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/info) into the transcript instead of stdout,
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
- setDebugRequest(capture.details.split('\n'));
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, requestLines: debugRequest, responseLines: debugResponse, activeTab: debugTab, scrollOffset: debugScroll, focused: debugFocused, viewportHeight: debugViewport, maximized: debugMaximized })) : null, _jsx(Rule, {}), _jsx(StatusBar, { running: running, mode: mode, modelDisplayName: modelDisplayName, turnCount: turnCount, debugHint: debugVisible && !debugFocused }), !running && !debugFocused ? _jsx(PromptInput, { onSubmit: handleSubmit }) : null, _jsx(Text, { dimColor: true, children: exitMessage.trim() }), _jsx(Rule, {})] }));
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