@gaunt-sloth/agent 2.0.0-alpha.29 → 2.0.0-alpha.30

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.
@@ -1,9 +1,12 @@
1
1
  import { initConfig } from '@gaunt-sloth/core/config.js';
2
- import { defaultStatusCallback, display, displayInfo, displayLaunchBanner, displayWarning, flushSessionLog, formatInputPrompt, initSessionLogging, stopSessionLogging, } from '@gaunt-sloth/core/utils/consoleUtils.js';
2
+ import { defaultStatusCallback, display, displayError, displayInfo, displayLaunchBanner, displayWarning, flushSessionLog, formatInputPrompt, initSessionLogging, stopSessionLogging, } from '@gaunt-sloth/core/utils/consoleUtils.js';
3
3
  import { GthAgentRunner } from '@gaunt-sloth/core/core/GthAgentRunner.js';
4
4
  import { GthAbstractAgent } from '@gaunt-sloth/core/core/GthAbstractAgent.js';
5
5
  import { launchBannerFields, launchBannerText } from '@gaunt-sloth/core/core/launchBanner.js';
6
6
  import { buildRejectionMessage } from '@gaunt-sloth/core/core/shell/rejection.js';
7
+ import { renderNegotiationRows } from '@gaunt-sloth/core/core/shell/negotiation.js';
8
+ import { attackBannerCopy, describeRaterOutcome, grantsRunAnyway, RATER_REASON_LABEL, } from '@gaunt-sloth/core/core/shell/escalationSeverity.js';
9
+ import { frameUntrustedCommand, frameUntrustedText, frameWidthFor, narrowTerminalNotice, STICKY_PREVIEW_MAX_ROWS, } from '@gaunt-sloth/core/core/shell/framing.js';
7
10
  import { writeDebugDump } from '@gaunt-sloth/core/utils/debugDump.js';
8
11
  import { appendToFile, getCommandOutputFilePath } from '@gaunt-sloth/core/utils/fileUtils.js';
9
12
  import { openConversationSafe, recordSessionSafe, } from '@gaunt-sloth/core/history/recordSession.js';
@@ -13,6 +16,28 @@ import { MemorySaver } from '@langchain/langgraph';
13
16
  import { createResolvers } from '#src/resolvers.js';
14
17
  import { resolveAgentFactory } from '#src/core/resolveAgentFactory.js';
15
18
  import { approvalsRungNotice, approvalsStatusNotice, approvalsTrustNotice, createCommandRegistry, dispatchSlashCommand, formatConfigSummary, parseSlashCommand, } from '#src/modules/slashCommands.js';
19
+ /**
20
+ * [[TUI-C26]] §6 — the `display*` channel an escalation's severity is written on.
21
+ *
22
+ * This surface has no colour of its own: `consoleUtils` owns it per channel, so choosing the
23
+ * channel IS choosing the colour (red for `displayError`, yellow for `displayWarning`, dim for
24
+ * `displayInfo`).
25
+ *
26
+ * **The channel is also a STREAM, and they are not all the same one.** `displayError`,
27
+ * `displayInfo` and `display` go to **stdout**; `displayWarning` goes to **stderr**. So a dialog
28
+ * that mixes them — a `destructive` heading, the rater's label beneath it, the framed reason under
29
+ * that — is written across both. On a terminal both are unbuffered and synchronous, so the lines
30
+ * land in call order and the dialog reads top to bottom. That stops holding the moment stdout is
31
+ * not a terminal: redirected to a pipe or a file it is block-buffered while stderr is not, so a
32
+ * captured log can carry these lines interleaved differently from the screen. The dialog is a
33
+ * question a human answers on the terminal, and every line of it says what it is, so the order is
34
+ * cosmetic there rather than load-bearing — but a reader diffing a captured log against a session
35
+ * should know why the two do not match.
36
+ *
37
+ * The channel is the observable an assertion can bite on, too: a change that made `catastrophic`
38
+ * look like `destructive` here would have to route both to the same function, which a test can see.
39
+ */
40
+ const severityChannel = (tone) => tone === 'danger' ? displayError : tone === 'warn' ? displayWarning : displayInfo;
16
41
  export async function createInteractiveSession(sessionConfig, commandLineConfigOverrides, message) {
17
42
  const config = { ...(await initConfig(commandLineConfigOverrides)) };
18
43
  const checkpointSaver = new MemorySaver();
@@ -57,6 +82,9 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
57
82
  modelDisplayName: dumpInput.modelDisplayName,
58
83
  redact: dumpInput.redact,
59
84
  modelRequest: agent instanceof GthAbstractAgent ? agent.lastModelRequest : undefined,
85
+ // [[TUI-C27]] — the approvals gate's record of every gated decision, read from the live
86
+ // runner at CALL time for the same reason the model request is.
87
+ approvals: runner.getApprovalCaptures(),
60
88
  });
61
89
  };
62
90
  // EXT-18: ref stdin before every rl.question() that can run AFTER an agent turn/stream end.
@@ -73,10 +101,11 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
73
101
  // `run_shell_command`. When a run suspends on such a tool call, the runner calls this with
74
102
  // the pending command. EXT-9 Tier-2: instead of a bare y/N, offer a scoped choice so the
75
103
  // human can stop re-prompting for an operation they trust:
76
- // [o]nce — approve this single invocation only (persists nothing),
77
- // [s]ession — auto-approve this command's classified prefix for the rest of the session,
78
- // [a]lways — additionally persist it to the project allow-list,
79
- // anything else reject (fail-closed).
104
+ // [o]nce — approve this single invocation only (persists nothing),
105
+ // [s]ession — auto-approve this exact command for the rest of the session,
106
+ // [a]lways — additionally persist it to the project allow-list,
107
+ // [d]eny always refuse it AND record a deny entry for the rest of the session,
108
+ // anything else → reject this one call (fail-closed, and it stays the fallthrough).
80
109
  // The runner consults the allow-list BEFORE calling this, so trusted commands never reach
81
110
  // this prompt at all. (The Ink TUI surfaces the same scoped prompt via an approval bridge —
82
111
  // see tuiSessionModule's createApprovalBridge + the <ApprovalPrompt> component.)
@@ -84,20 +113,85 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
84
113
  const commandText = typeof pending.args.command === 'string'
85
114
  ? pending.args.command
86
115
  : JSON.stringify(pending.args);
116
+ // [[TUI-C26]] §6 — the command is model-authored text going to a terminal, where it is not
117
+ // inert: a carriage return reaches column 0, an escape sequence clears the screen, and a
118
+ // newline alone lays down a line that looks exactly like this prompt's own chrome. It is
119
+ // painted through core's framing renderer — neutralised, inside a line-number gutter, with
120
+ // its command-substitution and composition sites listed above it — the SAME renderer the Ink
121
+ // prompt uses, so the two surfaces cannot differ about how much of a command a human saw.
122
+ // Nothing is clamped to one line: the command that motivated this hid its payload fifteen
123
+ // lines into a commit message, and a clamp discards exactly what the human must rule on.
124
+ const frameWidth = frameWidthFor(output.columns);
125
+ const framedCommand = frameUntrustedCommand(commandText, { width: frameWidth });
87
126
  displayWarning(`\nThe agent wants to run a shell command via ${pending.name}:`);
88
- display(`\n ${commandText}\n`);
127
+ // Below core's floor the frame is wider than the terminal, which wraps it and puts untrusted
128
+ // text at the left edge. The frame is still shown — hiding what the human must rule on would
129
+ // be worse — but the guarantee has lapsed, and it says so instead of lapsing silently.
130
+ const tooNarrow = narrowTerminalNotice(output.columns);
131
+ if (tooNarrow)
132
+ displayWarning(tooNarrow);
133
+ for (const notice of framedCommand.notices)
134
+ displayWarning(notice);
135
+ display('');
136
+ for (const line of framedCommand.lines)
137
+ display(line);
138
+ display('');
89
139
  // CFG-27: when the auto-rater escalated this command (rather than approving it), show its
90
140
  // outcome + reason before the human decides. §6 makes that explanation mandatory whenever a
91
141
  // rating exists; at the unrated rungs there is none and the prompt shows the command alone.
142
+ // The outcome is a schema enum; the reason is model-authored prose and is framed exactly like
143
+ // the command, because a dialog forgeable through the string that explains it is not a gate.
144
+ // [[TUI-C26]] §6 — the severity is legible in three independent ways: a glyph, a sentence of
145
+ // the gate's own naming what the outcome MEANS, and the channel it is written on. The channel
146
+ // is this surface's colour: `catastrophic` goes to `displayError` (red) where `destructive`
147
+ // goes to `displayWarning` (yellow), so the two cannot look alike — and the sentence carries
148
+ // it anyway for a terminal with no colour at all, which is the one that must not be left out.
92
149
  if (pending.safetyVerdict) {
93
- displayWarning(`⚠ Auto-rater (${pending.safetyVerdict.outcome}): ${pending.safetyVerdict.reason}`);
150
+ const severity = describeRaterOutcome(pending.safetyVerdict.outcome);
151
+ const say = severityChannel(severity.tone);
152
+ say(severity.heading);
153
+ // The reason is the RATER's, and now that the line above it is the gate's own sentence the
154
+ // attribution has to be said rather than implied.
155
+ displayInfo(RATER_REASON_LABEL);
156
+ for (const line of frameUntrustedText(pending.safetyVerdict.reason, { width: frameWidth })
157
+ .lines) {
158
+ say(line);
159
+ }
94
160
  }
95
161
  // EXT-71 §3.2 — when a declared `approvals.escalate` entry is what brought this call here,
96
162
  // the prompt shows THE ENTRY THAT FIRED. Without it the user is asked about a command their
97
163
  // rung would have approved, with nothing on screen tying the question to the line they wrote
98
164
  // — which reads as the gate malfunctioning rather than as their own rule working.
165
+ // [[TUI-C26]] — framed rather than interpolated. The entry is usually something the user
166
+ // wrote, but an MCP entry can carry server-supplied names, and this line sits one string away
167
+ // from the prompt's own chrome. The label stays this surface's own line.
99
168
  if (pending.escalatedBy) {
100
- displayWarning(`⚠ Your approvals.escalate list matched this call: ${pending.escalatedBy}`);
169
+ displayWarning('⚠ Your approvals.escalate list matched this call:');
170
+ for (const line of frameUntrustedText(pending.escalatedBy, { width: frameWidth }).lines) {
171
+ displayWarning(line);
172
+ }
173
+ }
174
+ // [[EXT-29]] §6 — when a §5 negotiation preceded this escalation, the human is shown ALL of
175
+ // it. The user is not asked to rule on the final command in isolation: that the agent
176
+ // proposed the same command three times unchanged, against two rejections that each told it
177
+ // what to fix, is the most important thing on the screen and is invisible if only the last
178
+ // attempt is shown. Rendered through core's shared renderer, so the surfaces cannot describe
179
+ // one exchange two ways.
180
+ //
181
+ // [[TUI-C26]] §5.4 — rendered as ROWS, so the two voices are told apart: the rater's turns go
182
+ // to the warn channel (yellow) and the agent's to the plain one, which is what the spec asks
183
+ // for and what one joined string could not express — the whole exchange used to arrive in a
184
+ // single colour. The rows are bound to the terminal width for the same reason the command is:
185
+ // a long justification left to the terminal's own wrap continues at column 0.
186
+ for (const row of renderNegotiationRows(pending.negotiationRounds ?? [], {
187
+ width: frameWidth,
188
+ })) {
189
+ if (row.voice === 'rater')
190
+ displayWarning(row.text);
191
+ else if (row.voice === 'agent')
192
+ display(row.text);
193
+ else
194
+ displayInfo(row.text);
101
195
  }
102
196
  // EXT-71/EXT-70 §6 — the menu MUST show what a sticky choice will store, at the moment of
103
197
  // the choice, and it names it in the words the control is written in: the command itself for
@@ -106,8 +200,52 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
106
200
  // the user sees the thing they are agreeing to rather than a generalization of it.
107
201
  const sticky = pending.grantPreview !== undefined;
108
202
  if (sticky) {
109
- displayInfo(`[s]/[a] will remember ${pending.grantSummary ?? pending.grantPreview}`);
110
- displayInfo(` stored as ${pending.grantPreview}`);
203
+ // [[TUI-C26]] these two lines carry the command as typed (§3.1 stores it exactly, never a
204
+ // widened pattern), so they inherit the command's problem in less space: an in-line
205
+ // `approved by rater` fits on one line untouched. Framed like everything else, with the
206
+ // label kept as this surface's OWN line so the untrusted half can never be read as chrome.
207
+ // Bounded to a few rows: for a shell call these carry the command as typed, which is
208
+ // already printed in full above — so an unbounded copy of a long command here (twice over,
209
+ // since the entry repeats it) scrolls the MENU off the screen, and a control the human
210
+ // cannot see is not one they were offered.
211
+ displayInfo('[s]/[a] will remember:');
212
+ for (const line of frameUntrustedText(pending.grantSummary ?? pending.grantPreview, {
213
+ width: frameWidth,
214
+ maxRows: STICKY_PREVIEW_MAX_ROWS,
215
+ }).lines) {
216
+ displayInfo(line);
217
+ }
218
+ displayInfo(' stored as:');
219
+ for (const line of frameUntrustedText(pending.grantPreview, {
220
+ width: frameWidth,
221
+ maxRows: STICKY_PREVIEW_MAX_ROWS,
222
+ }).lines) {
223
+ displayInfo(line);
224
+ }
225
+ }
226
+ // [[TUI-C26]] §6 — the same requirement for the OTHER sticky choice, and its availability is
227
+ // a different question: the runner offers a deny entry in cases where no grant exists at all
228
+ // (a command that does not statically resolve, every `catastrophic` verdict), because a
229
+ // refusal that cannot be decided still refuses. `recorded as:` rather than a second
230
+ // `stored as:` — one dialog, two labels that read alike, is how a reader loses track of which
231
+ // block they are looking at. The label states the lifetime because there is no persisted deny
232
+ // store and the control must not imply one.
233
+ const stickyDeny = pending.denyPreview !== undefined;
234
+ if (stickyDeny) {
235
+ displayInfo('[d] will refuse, for the rest of this session:');
236
+ for (const line of frameUntrustedText(pending.denySummary ?? pending.denyPreview, {
237
+ width: frameWidth,
238
+ maxRows: STICKY_PREVIEW_MAX_ROWS,
239
+ }).lines) {
240
+ displayInfo(line);
241
+ }
242
+ displayInfo(' recorded as:');
243
+ for (const line of frameUntrustedText(pending.denyPreview, {
244
+ width: frameWidth,
245
+ maxRows: STICKY_PREVIEW_MAX_ROWS,
246
+ }).lines) {
247
+ displayInfo(line);
248
+ }
111
249
  }
112
250
  setRawMode(false); // ensure typed input is echoed for this confirm
113
251
  // EXT-18: wrap the prompt in try/finally so the raw-mode/ref state is not left wedged if
@@ -116,15 +254,23 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
116
254
  // suspended on the tool interrupt, whose stream-end unref'd stdin).
117
255
  let answer;
118
256
  try {
119
- // §6 — a sticky control is SHOWN only where a sticky grant is actually on offer. Where
257
+ // §6 — a sticky control is SHOWN only where the gate would actually store something. Where
120
258
  // nothing would be remembered — a `catastrophic` outcome (§4.2), a command that does not
121
259
  // statically resolve, a tool call nothing can attribute — the menu simply does not offer
122
260
  // the choice, because "a control that is offered and then refused reads as a bug rather
123
261
  // than as a policy". Hiding it, never disabling it: a disabled control invites the user to
124
- // hunt for why.
125
- answer = (await askLine(formatInputPrompt(sticky
126
- ? 'Approve? [o]nce / [s]ession / [a]lways / [N]o: '
127
- : 'Approve? [o]nce / [N]o: ')))
262
+ // hunt for why. The two sticky controls are judged SEPARATELY: the deny entry exists in
263
+ // cases where no grant does, which is the whole reason it is a second condition.
264
+ //
265
+ // Assembled from parts rather than by enumerating the four combinations, so a menu spelling
266
+ // nobody wrote down cannot reach a terminal.
267
+ const controls = [
268
+ '[o]nce',
269
+ ...(sticky ? ['[s]ession', '[a]lways'] : []),
270
+ '[N]o',
271
+ ...(stickyDeny ? ['[d]eny always'] : []),
272
+ ];
273
+ answer = (await askLine(formatInputPrompt(`Approve? ${controls.join(' / ')}: `)))
128
274
  .trim()
129
275
  .toLowerCase();
130
276
  }
@@ -134,41 +280,59 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
134
280
  if (answer === 'o' || answer === 'once') {
135
281
  return { type: 'approve', scope: 'once' };
136
282
  }
137
- // CFG-28 (§4.2) — a `catastrophic` approval is NEVER sticky. The runner clamps the
138
- // allow-list write, so `[s]` and `[a]` grant exactly this one invocation and the next
139
- // variant prompts again. The decision is still returned unchanged: that clamp is the single
140
- // chokepoint, in core, so the policy does not depend on which surface asked. What must change
141
- // HERE is only the confirmation §6 rejects "a control that is offered and then refused",
142
- // and a confirmation that promises a persistence the gate has already discarded is that same
143
- // failure with the evidence hidden. Withdrawing the key itself is [[TUI-C26]]'s.
144
- // The confirmation must name what actually happened, and the condition for that is the SAME
145
- // one that decides whether the control was shown: no grant on offer means no grant written,
146
- // whatever key was typed. `catastrophic` keeps its own wording because the reason matters to
147
- // the reader, but it is one case of the general one rather than the only one — the other
148
- // cases (a command that does not statically resolve, an unattributable tool call) used to be
149
- // confirmed as remembered while the runner stored nothing.
150
- const notRemembered = pending.safetyVerdict?.outcome === 'catastrophic'
151
- ? 'Approved this once — a command rated catastrophic is never remembered, so the next ' +
152
- 'one like it will ask again.'
153
- : 'Approved this once there is nothing about this call that can be remembered, so the ' +
154
- 'next one like it will ask again.';
155
- if (answer === 's' || answer === 'session') {
156
- displayInfo(sticky ? 'Approved — this exact command will not ask again this session.' : notRemembered);
283
+ // CFG-28 (§4.2) / [[TUI-C26]] §1.1 **a sticky approve is answerable only where the control
284
+ // was OFFERED**, on the same condition that decides whether it was shown. `catastrophic` is
285
+ // one case of it: the runner clamps the allow-list write for that outcome, so a grant is
286
+ // never stored and no grant is on offer and the others are a command that does not
287
+ // statically resolve and a call nothing can attribute. Typed on a menu that does not carry
288
+ // them, `s` and `a` are unbound answers like any other and fall through to the one-shot
289
+ // refusal below.
290
+ //
291
+ // **The gate has to be on the key, not only on the confirmation.** Bound anywhere else, `a`
292
+ // at a `catastrophic` prompt approves and RUNS the command nothing between this callback
293
+ // and execution re-reads the verdict off a menu that has already withdrawn the choice,
294
+ // which is §6's "a control that is offered and then refused" with the withdrawal made
295
+ // cosmetic. The scope is still returned exactly as typed: the clamp on what gets STORED is
296
+ // core's, the single chokepoint for every surface, and this must not start deciding
297
+ // persistence for itself.
298
+ if (sticky && (answer === 's' || answer === 'session')) {
299
+ displayInfo('Approved — this exact command will not ask again this session.');
157
300
  return { type: 'approve', scope: 'session' };
158
301
  }
159
- if (answer === 'a' || answer === 'always') {
160
- displayInfo(sticky
161
- ? 'Approved and remembered — this exact command is saved to the project allow-list.'
162
- : notRemembered);
302
+ if (sticky && (answer === 'a' || answer === 'always')) {
303
+ displayInfo('Approved and remembered — this exact command is saved to the project allow-list.');
163
304
  return { type: 'approve', scope: 'always' };
164
305
  }
165
- displayInfo('Command rejected.');
306
+ // [[TUI-C26]] §6 — *always reject*: a refusal that is also recorded, so the next identical
307
+ // call is refused by rule without reaching a person. Answered only where the control was
308
+ // OFFERED; typed anywhere else it is an unbound answer like any other and falls through to
309
+ // the one-shot refusal below, which is what keeps the safe action the fallthrough.
310
+ //
311
+ // **One spelling for the control this work adds** — `d`, the one the menu prints. A second
312
+ // that the menu never advertises is how this surface starts drifting from the Ink one, which
313
+ // has no aliases at all.
314
+ //
315
+ // That rule governs what is ADDED here, and the long forms `once`, `session` and `always`
316
+ // accepted above are not exceptions to it: they predate this work and they stay. Each is
317
+ // gated by exactly the condition that gates its own letter — `session`/`always` inside the
318
+ // same `sticky` test as `s`/`a`, `once` on a control that is always offered — so none of them
319
+ // widens what is answerable at any prompt. Read this as the reason not to add a fourth alias,
320
+ // never as licence to delete the three that are here.
321
+ const stickyRejected = stickyDeny && answer === 'd';
322
+ // The confirmation says what actually happened and stops there. There is no persisted deny
323
+ // store, so a line implying one would be the same failure §6 names when it calls a control
324
+ // offered and then refused a bug — with the evidence hidden, which is worse.
325
+ displayInfo(stickyRejected
326
+ ? 'Refused — this call will not run for the rest of this session, and will not ask ' +
327
+ 'again. Nothing was saved to the project, so a new session will ask about it again.'
328
+ : 'Command rejected.');
166
329
  // EXT-58 (§7): the model is told the moves it has — re-call with a justification, call a
167
330
  // different command, or ask the user — and, when the rater named an already-granted
168
331
  // alternative (§4.4), that tool plus the clause saying it needs no approval. A bare "user
169
332
  // rejected" leaves the model to guess, which it does by repeating itself or giving up.
170
333
  return {
171
334
  type: 'reject',
335
+ ...(stickyRejected ? { scope: 'session' } : {}),
172
336
  message: buildRejectionMessage({
173
337
  source: 'user',
174
338
  toolName: pending.name,
@@ -176,6 +340,67 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
176
340
  }),
177
341
  };
178
342
  });
343
+ // [[TUI-C68]] §6.1 — the ATTACK BANNER on the plain surface. An `attack` verdict says the
344
+ // command's own structure evidenced compromise, and it ends the run; without this the only
345
+ // recovery is a restart, which §12 forbids. Wiring the callback is what opts this session into
346
+ // being asked — every surface that does not wire it keeps the halt (§6.2), so forgetting fails
347
+ // safe rather than opening a hole.
348
+ //
349
+ // **It is not the approval prompt and must not read like one.** No menu, no scope, no key: one
350
+ // typed phrase runs one command, and everything else stops the run — including a bare Enter and
351
+ // any near miss. There is no second attempt on purpose: a re-prompt turns a typo into another
352
+ // chance at an irreversible action.
353
+ //
354
+ // On this surface `rl.question` reads a whole LINE in cooked mode, so `q` and `Esc` are not
355
+ // keystrokes it can intercept — they are simply text that is not the phrase, and stop the run
356
+ // like any other. That is why the shared copy carries no keyboard line: the Ink TUI adds its own
357
+ // keys beside these, and a line here naming keys this surface cannot honour would be false.
358
+ runner.setAttackHaltCallback(async (halt) => {
359
+ const copy = attackBannerCopy();
360
+ const frameWidth = frameWidthFor(output.columns);
361
+ displayError(`\n${copy.title}`);
362
+ const tooNarrow = narrowTerminalNotice(output.columns);
363
+ if (tooNarrow)
364
+ displayWarning(tooNarrow);
365
+ // The command and the rater's reason are model-authored text on the last screen between a
366
+ // human and the action. They go through the SAME framing renderer as the approval dialog —
367
+ // neutralised, gutter-numbered, substitution and composition sites listed above — because a
368
+ // banner whose own chrome can be forged by the string it is warning about is worse than none.
369
+ const framedCommand = frameUntrustedCommand(halt.command, { width: frameWidth });
370
+ for (const notice of framedCommand.notices)
371
+ displayWarning(notice);
372
+ display('');
373
+ for (const line of framedCommand.lines)
374
+ display(line);
375
+ display('');
376
+ displayError(copy.heading);
377
+ displayInfo(RATER_REASON_LABEL);
378
+ for (const line of frameUntrustedText(halt.reason, { width: frameWidth }).lines) {
379
+ displayError(line);
380
+ }
381
+ // UNCONDITIONAL, on every attack banner whatever the rating said. The banner is rare by
382
+ // construction, so the line cannot become noise, and a static string cannot fail the way a
383
+ // model's explanation can.
384
+ displayError(copy.irreversible);
385
+ for (const line of copy.controls)
386
+ displayInfo(line);
387
+ setRawMode(false); // ensure the typed phrase is echoed
388
+ let answer;
389
+ try {
390
+ answer = await askLine(formatInputPrompt(copy.prompt));
391
+ }
392
+ finally {
393
+ refStdin();
394
+ }
395
+ // One shot. The matcher is core's, so what the banner SAYS is answerable and what this
396
+ // surface ACCEPTS cannot drift, and every value of the line that is not the phrase is a
397
+ // refusal — which is what keeps the safe answer the fallthrough on a control that otherwise
398
+ // accumulates keystrokes instead of rejecting them.
399
+ if (!grantsRunAnyway(answer))
400
+ return 'stop';
401
+ displayWarning(copy.granted);
402
+ return 'run-anyway';
403
+ });
179
404
  if (logFileName) {
180
405
  displayInfo(`${sessionConfig.mode} session will be logged to ${logFileName}\n`);
181
406
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interactiveSessionModule.js","sourceRoot":"","sources":["../../src/modules/interactiveSessionModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactiveSessionModule.js","sourceRoot":"","sources":["../../src/modules/interactiveSessionModule.ts"],"names":[],"mappings":"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"}