@gaunt-sloth/agent 2.0.0-beta.1 → 2.0.0-beta.3

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 (40) hide show
  1. package/LICENSE +6 -6
  2. package/dist/modules/a2a/A2AClientWrapper.js +1 -1
  3. package/dist/modules/a2a/A2AClientWrapper.js.map +1 -1
  4. package/dist/modules/acp/acpAgentApp.js +45 -2
  5. package/dist/modules/acp/acpAgentApp.js.map +1 -1
  6. package/dist/modules/acp/acpAgentAppV1.js +38 -2
  7. package/dist/modules/acp/acpAgentAppV1.js.map +1 -1
  8. package/dist/modules/acp/acpPermissions.d.ts +50 -5
  9. package/dist/modules/acp/acpPermissions.js +74 -8
  10. package/dist/modules/acp/acpPermissions.js.map +1 -1
  11. package/dist/modules/acp/acpPermissionsV1.d.ts +9 -0
  12. package/dist/modules/acp/acpPermissionsV1.js +9 -0
  13. package/dist/modules/acp/acpPermissionsV1.js.map +1 -1
  14. package/dist/modules/acp/acpToolCalls.d.ts +16 -0
  15. package/dist/modules/acp/acpToolCalls.js +26 -0
  16. package/dist/modules/acp/acpToolCalls.js.map +1 -1
  17. package/dist/modules/acp/acpUpdates.js +10 -4
  18. package/dist/modules/acp/acpUpdates.js.map +1 -1
  19. package/dist/modules/acp/acpUpdatesV1.js +10 -4
  20. package/dist/modules/acp/acpUpdatesV1.js.map +1 -1
  21. package/dist/modules/apiAgUiModule.js +31 -4
  22. package/dist/modules/apiAgUiModule.js.map +1 -1
  23. package/dist/modules/interactiveSessionModule.js +162 -150
  24. package/dist/modules/interactiveSessionModule.js.map +1 -1
  25. package/dist/modules/slashCommands.d.ts +73 -9
  26. package/dist/modules/slashCommands.js +182 -15
  27. package/dist/modules/slashCommands.js.map +1 -1
  28. package/dist/resolvers.js +3 -3
  29. package/dist/resolvers.js.map +1 -1
  30. package/dist/tools/GthDevToolkit.d.ts +4 -4
  31. package/dist/tools/GthDevToolkit.js +12 -12
  32. package/dist/tools/GthDevToolkit.js.map +1 -1
  33. package/dist/tools/GthFileSystemToolkit.d.ts +21 -0
  34. package/dist/tools/GthFileSystemToolkit.js +53 -4
  35. package/dist/tools/GthFileSystemToolkit.js.map +1 -1
  36. package/dist/tools/McpResourceTool.d.ts +1 -1
  37. package/dist/tools/McpResourceTool.js +1 -1
  38. package/dist/tools/gthGrepTool.js +55 -9
  39. package/dist/tools/gthGrepTool.js.map +1 -1
  40. package/package.json +11 -11
@@ -5,9 +5,9 @@ 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
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';
10
- import { approvalPromptHeader } from '@gaunt-sloth/core/core/approvals/promptHeader.js';
8
+ import { attackBannerCopy, grantsRunAnyway, RATER_REASON_LABEL, } from '@gaunt-sloth/core/core/shell/escalationSeverity.js';
9
+ import { frameUntrustedCommand, frameUntrustedText, frameWidthFor, narrowTerminalNotice, } from '@gaunt-sloth/core/core/shell/framing.js';
10
+ import { APPROVAL_ASK_LINE, APPROVAL_ROW_DIALOG_TONES, approvalCategoryLine, approvalRequestRows, } from '@gaunt-sloth/core/core/approvals/approvalRequest.js';
11
11
  import { ApprovalStopError, approvalStopRows } from '@gaunt-sloth/core/core/shell/approvalStop.js';
12
12
  import { writeDebugDump } from '@gaunt-sloth/core/utils/debugDump.js';
13
13
  import { appendToFile, getCommandOutputFilePath } from '@gaunt-sloth/core/utils/fileUtils.js';
@@ -17,7 +17,7 @@ import { HumanMessage } from '@langchain/core/messages';
17
17
  import { MemorySaver } from '@langchain/langgraph';
18
18
  import { createResolvers } from '#src/resolvers.js';
19
19
  import { resolveAgentFactory } from '#src/core/resolveAgentFactory.js';
20
- import { approvalsRungNotice, approvalsStatusNotice, approvalsTrustNotice, createCommandRegistry, dispatchSlashCommand, formatConfigSummary, parseSlashCommand, } from '#src/modules/slashCommands.js';
20
+ import { approvalsRefusalsNotice, approvalsRungNotice, approvalsStatusNotice, approvalsTrustNotice, approvalsUndenyNotice, createCommandRegistry, dispatchSlashCommand, formatConfigSummary, parseSlashCommand, } from '#src/modules/slashCommands.js';
21
21
  /**
22
22
  * [[TUI-C26]] §6 / [[EXT-105]] — **every line of an escalation dialog goes through
23
23
  * {@link displayDialogLine}, and no line of one goes anywhere else.**
@@ -47,6 +47,39 @@ const dialogLines = (lines, tone = 'plain') => {
47
47
  for (const line of lines)
48
48
  displayDialogLine(line, tone);
49
49
  };
50
+ /**
51
+ * [[EXT-154]] — **the sentence a remembering answer earns, written from the lifetime the runner
52
+ * recorded rather than from the key that was pressed.**
53
+ *
54
+ * `maintenance/ux-guidelines.md` (DL-4): a confirmation states what LANDED. The two answers this
55
+ * covers — `[a]` and `[d]` — ask for a project file, and [[EXT-149]] degrades an `always` whose write
56
+ * did not reach disk to the session answer it really is. That is decided inside the runner AFTER the
57
+ * approval callback has returned, so these lines cannot be written where they are chosen; they are
58
+ * written where the outcome arrives, once, and only then.
59
+ *
60
+ * **Binary on this surface, and that is a property rather than a simplification.** `[a]` and `[d]`
61
+ * are shown only where `grantPreview`/`denyPreview` are attached, which is exactly where the runner
62
+ * has an entry to record — so an answer here always records something and `once` is unreachable.
63
+ * (The ACP surface offers its remembering options unconditionally and therefore does need the third
64
+ * case; see `acpPermissions.ts`.)
65
+ *
66
+ * `/approvals undeny` is named on the refusal branch whichever way the write went, because it lists
67
+ * and lifts a session refusal too, so the line is true on both.
68
+ */
69
+ const rememberedAnswerLine = (decision, landed) => {
70
+ const savedToProject = landed === 'always';
71
+ if (decision === 'approve') {
72
+ return savedToProject
73
+ ? 'Approved and remembered — this exact command is saved to the project allow-list.'
74
+ : 'Approved for this session only — it was not written to the project allow-list.';
75
+ }
76
+ return savedToProject
77
+ ? 'Refused — this exact call will not run and will not ask again. It is saved to this ' +
78
+ 'project, so it stays refused in new sessions; lift it with /approvals undeny.'
79
+ : 'Refused — this exact call will not run and will not ask again this session. It was not ' +
80
+ 'written to the project, so a new session will ask about it again; lift it with ' +
81
+ '/approvals undeny.';
82
+ };
50
83
  export async function createInteractiveSession(sessionConfig, commandLineConfigOverrides, message) {
51
84
  const config = { ...(await initConfig(commandLineConfigOverrides)) };
52
85
  const checkpointSaver = new MemorySaver();
@@ -64,9 +97,9 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
64
97
  if (logFileName) {
65
98
  initSessionLogging(logFileName, config.streamSessionInferenceLog);
66
99
  }
67
- // B5: interactive code/chat default to the LEAN backend; an explicit config.agent.backend
68
- // overrides it (deep is now opt-in / experimental). createResolvers() is unchanged, so a lean
69
- // session keeps the full toolset (filesystem + hardened dev/shell).
100
+ // B5: interactive code/chat ask for the LEAN backend, the only one Gaunt Sloth ships —
101
+ // config.agent.backend names no other. createResolvers() is unchanged, so the session keeps the
102
+ // full toolset (filesystem + hardened dev/shell).
70
103
  const runner = new GthAgentRunner(defaultStatusCallback, createResolvers(), resolveAgentFactory(config, 'lean'));
71
104
  try {
72
105
  await runner.init(sessionConfig.mode, config, checkpointSaver);
@@ -120,141 +153,51 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
120
153
  // The runner consults the allow-list BEFORE calling this, so trusted commands never reach
121
154
  // this prompt at all. (The Ink TUI surfaces the same scoped prompt via an approval bridge —
122
155
  // see tuiSessionModule's createApprovalBridge + the <ApprovalPrompt> component.)
156
+ // [[EXT-154]] — the interrupts whose answer asked for a PROJECT FILE, waiting to be told what
157
+ // they got. Only `[a]` and `[d]` land here; every other answer records nothing and is confirmed
158
+ // where it is chosen.
159
+ //
160
+ // **Keyed by the interrupt object, the correlation the seam documents**, rather than by "the
161
+ // one that is outstanding". This surface does prompt strictly one at a time, but that is a
162
+ // property of the runner's drain loop, not of this module — and holding a claim about someone
163
+ // else's loop here is how one call's persistence ends up confirmed on another call's dialog.
164
+ // Emptied as each is consumed, so nothing accumulates over a long session.
165
+ const rememberAsked = new Set();
123
166
  runner.setToolApprovalCallback(async (pending) => {
124
- const commandText = typeof pending.args.command === 'string'
125
- ? pending.args.command
126
- : JSON.stringify(pending.args);
127
- // [[TUI-C26]] §6 — the command is model-authored text going to a terminal, where it is not
128
- // inert: a carriage return reaches column 0, an escape sequence clears the screen, and a
129
- // newline alone lays down a line that looks exactly like this prompt's own chrome. It is
130
- // painted through core's framing renderer — neutralised, inside a line-number gutter, with
131
- // its command-substitution and composition sites listed above it — the SAME renderer the Ink
132
- // prompt uses, so the two surfaces cannot differ about how much of a command a human saw.
133
- // Nothing is clamped to one line: the command that motivated this hid its payload fifteen
134
- // lines into a commit message, and a clamp discards exactly what the human must rule on.
135
- const frameWidth = frameWidthFor(output.columns);
136
- const framedCommand = frameUntrustedCommand(commandText, { width: frameWidth });
137
- // [[TUI-C67]] — the opening sentence is core's, branched on the `ApprovalSubject` kind the
138
- // gate itself decided on, so a file write, an MCP call or a custom tool is announced as what
139
- // it is rather than as a shell command. The Ink prompt renders the identical call; this
140
- // surface owns only the leading blank line and the trailing colon, which is what keeps the
141
- // two from describing one call two ways.
142
- displayDialogLine(`\n${approvalPromptHeader(pending)}:`, 'warn');
143
- // Below core's floor the frame is wider than the terminal, which wraps it and puts untrusted
144
- // text at the left edge. The frame is still shown — hiding what the human must rule on would
145
- // be worse — but the guarantee has lapsed, and it says so instead of lapsing silently.
146
- const tooNarrow = narrowTerminalNotice(output.columns);
147
- if (tooNarrow)
148
- displayDialogLine(tooNarrow, 'warn');
149
- dialogLines(framedCommand.notices, 'warn');
150
- displayDialogLine('');
151
- dialogLines(framedCommand.lines);
152
- displayDialogLine('');
153
- // CFG-27: when the auto-rater escalated this command (rather than approving it), show its
154
- // outcome + reason before the human decides. §6 makes that explanation mandatory whenever a
155
- // rating exists; at the unrated rungs there is none and the prompt shows the command alone.
156
- // The outcome is a schema enum; the reason is model-authored prose and is framed exactly like
157
- // the command, because a dialog forgeable through the string that explains it is not a gate.
158
- // [[TUI-C26]] §6 — the severity is legible in three independent ways: a glyph, a sentence of
159
- // the gate's own naming what the outcome MEANS, and the tone it is painted in. The tone is
160
- // this surface's colour: `catastrophic` is painted `danger` (red) where `destructive` is
161
- // `warn` (yellow), so the two cannot look alike — and the sentence carries it anyway for a
162
- // terminal with no colour at all, which is the one that must not be left out.
163
- if (pending.safetyVerdict) {
164
- const severity = describeRaterOutcome(pending.safetyVerdict.outcome);
165
- displayDialogLine(severity.heading, severity.tone);
166
- // The reason is the RATER's, and now that the line above it is the gate's own sentence the
167
- // attribution has to be said rather than implied.
168
- displayDialogLine(RATER_REASON_LABEL, 'notice');
169
- dialogLines(frameUntrustedText(pending.safetyVerdict.reason, { width: frameWidth }).lines, severity.tone);
170
- }
171
- // EXT-71 §3.2 — when a declared `approvals.escalate` entry is what brought this call here,
172
- // the prompt shows THE ENTRY THAT FIRED. Without it the user is asked about a command their
173
- // rung would have approved, with nothing on screen tying the question to the line they wrote
174
- // — which reads as the gate malfunctioning rather than as their own rule working.
175
- // [[TUI-C26]] — framed rather than interpolated. The entry is usually something the user
176
- // wrote, but an MCP entry can carry server-supplied names, and this line sits one string away
177
- // from the prompt's own chrome. The label stays this surface's own line.
178
- if (pending.escalatedBy) {
179
- displayDialogLine('⚠ Your approvals.escalate list matched this call:', 'warn');
180
- dialogLines(frameUntrustedText(pending.escalatedBy, { width: frameWidth }).lines, 'warn');
181
- }
182
- // [[EXT-29]] §6 — when a §5 negotiation preceded this escalation, the human is shown ALL of
183
- // it. The user is not asked to rule on the final command in isolation: that the agent
184
- // proposed the same command three times unchanged, against two rejections that each told it
185
- // what to fix, is the most important thing on the screen and is invisible if only the last
186
- // attempt is shown. Rendered through core's shared renderer, so the surfaces cannot describe
187
- // one exchange two ways.
167
+ // [[EXT-137]] **the request block, rendered by core and printed linearly here.**
188
168
  //
189
- // [[TUI-C26]] §5.4 rendered as ROWS, so the two voices are told apart: the rater's turns are
190
- // painted `warn` (yellow) and the agent's plain, which is what the spec asks for and what one
191
- // joined string could not express — the whole exchange used to arrive in a single colour. Each
192
- // row also NAMES its speaker (`rater answered:` / `agent justified:`), which is the half that
193
- // survives a monochrome terminal. The rows are bound to the terminal width for the same reason
194
- // the command is: a long justification left to the terminal's own wrap continues at column 0.
169
+ // This surface has no dock: it prints and it scrolls, so what a person reads immediately
170
+ // before pressing a key is whatever happened to be printed last. That makes the ORDER the
171
+ // whole mitigation, and the order is core's rather than this module's
172
+ // `approvalRequestRows` puts the explanation first, the call after it and the HOSTS last, so
173
+ // the counterparty's identity is adjacent to the menu however long the note above it ran.
174
+ // The Ink TUI commits the identical rows into its transcript and `transcriptWindow` budgets
175
+ // them, so the three cannot come to disagree about what a human was shown.
195
176
  //
196
- // [[TUI-C75]] — the count comes from `negotiationAttempts`, not from the array: §5.3 clears
197
- // the transcript on an approved call, so the rounds that survive to here are the attempts
198
- // since the last approval and not the attempts the human is being asked to weigh.
199
- for (const row of renderNegotiationRows(pending.negotiationRounds ?? [], {
200
- width: frameWidth,
201
- ...(pending.negotiationAttempts !== undefined
202
- ? { attempts: pending.negotiationAttempts }
203
- : {}),
204
- })) {
205
- if (row.voice === 'rater')
206
- displayDialogLine(row.text, 'warn');
207
- else if (row.voice === 'agent')
208
- displayDialogLine(row.text);
209
- else
210
- displayDialogLine(row.text, 'notice');
177
+ // [[TUI-C26]] §6 every untrusted half in those rows arrives already framed: neutralised,
178
+ // inside a line-number gutter, with its command-substitution and composition sites listed
179
+ // above it. Model-authored text going to a terminal is not inert a carriage return reaches
180
+ // column 0, an escape sequence clears the screen, and a newline alone lays down a line that
181
+ // looks exactly like this dialog's own chrome. Nothing is clamped to one line: the command
182
+ // that motivated the framing hid its payload fifteen lines into a commit message, and a clamp
183
+ // discards exactly what the human must rule on.
184
+ displayDialogLine('');
185
+ for (const row of approvalRequestRows(pending, { columns: output.columns })) {
186
+ displayDialogLine(row.text, APPROVAL_ROW_DIALOG_TONES[row.tone]);
211
187
  }
212
- // EXT-71/EXT-70 §6 — the menu MUST show what a sticky choice will store, at the moment of
213
- // the choice, and it names it in the words the control is written in: the command itself for
214
- // a shell call, the tool (with its server and host bound) for a tool call, since for a tool
215
- // "the stored thing is the tool, not the arguments" (§4.7.4). The exact entry follows it, so
216
- // the user sees the thing they are agreeing to rather than a generalization of it.
188
+ // [[EXT-137]] — the two lines the Ink dock pins, printed here in this surface's equivalent
189
+ // position: immediately above the menu, which is the last thing read before a key is pressed.
190
+ // Both are ours a constant, and one of four enumerated category sentences so no amount of
191
+ // padding anywhere in the call can change a byte of either. The category is what makes the
192
+ // line worth reading: it says which CLASS of thing is about to be allowed, which a bare "an
193
+ // answer is needed" cannot, and a reader who is told nothing has no reason to look up.
194
+ displayDialogLine('');
195
+ displayDialogLine(APPROVAL_ASK_LINE, 'warn');
196
+ displayDialogLine(approvalCategoryLine(pending), 'warn');
197
+ // §6/EXT-70 — which sticky controls the gate would actually store something for. The menu
198
+ // below is assembled from these two booleans, never from what they would store.
217
199
  const sticky = pending.grantPreview !== undefined;
218
- if (sticky) {
219
- // [[TUI-C26]] — these two lines carry the command as typed (§3.1 stores it exactly, never a
220
- // widened pattern), so they inherit the command's problem in less space: an in-line
221
- // `approved by rater` fits on one line untouched. Framed like everything else, with the
222
- // label kept as this surface's OWN line so the untrusted half can never be read as chrome.
223
- // Bounded to a few rows: for a shell call these carry the command as typed, which is
224
- // already printed in full above — so an unbounded copy of a long command here (twice over,
225
- // since the entry repeats it) scrolls the MENU off the screen, and a control the human
226
- // cannot see is not one they were offered.
227
- displayDialogLine('[s]/[a] will remember:', 'notice');
228
- dialogLines(frameUntrustedText(pending.grantSummary ?? pending.grantPreview, {
229
- width: frameWidth,
230
- maxRows: STICKY_PREVIEW_MAX_ROWS,
231
- }).lines, 'notice');
232
- displayDialogLine(' stored as:', 'notice');
233
- dialogLines(frameUntrustedText(pending.grantPreview, {
234
- width: frameWidth,
235
- maxRows: STICKY_PREVIEW_MAX_ROWS,
236
- }).lines, 'notice');
237
- }
238
- // [[TUI-C26]] §6 — the same requirement for the OTHER sticky choice, and its availability is
239
- // a different question: the runner offers a deny entry in cases where no grant exists at all
240
- // (a command that does not statically resolve, every `catastrophic` verdict), because a
241
- // refusal that cannot be decided still refuses. `recorded as:` rather than a second
242
- // `stored as:` — one dialog, two labels that read alike, is how a reader loses track of which
243
- // block they are looking at. The label states the lifetime because there is no persisted deny
244
- // store and the control must not imply one.
245
200
  const stickyDeny = pending.denyPreview !== undefined;
246
- if (stickyDeny) {
247
- displayDialogLine('[d] will refuse, for the rest of this session:', 'notice');
248
- dialogLines(frameUntrustedText(pending.denySummary ?? pending.denyPreview, {
249
- width: frameWidth,
250
- maxRows: STICKY_PREVIEW_MAX_ROWS,
251
- }).lines, 'notice');
252
- displayDialogLine(' recorded as:', 'notice');
253
- dialogLines(frameUntrustedText(pending.denyPreview, {
254
- width: frameWidth,
255
- maxRows: STICKY_PREVIEW_MAX_ROWS,
256
- }).lines, 'notice');
257
- }
258
201
  setRawMode(false); // ensure typed input is echoed for this confirm
259
202
  // EXT-18: wrap the prompt in try/finally so the raw-mode/ref state is not left wedged if
260
203
  // rl.question throws. The subsequent streamResume run re-establishes raw mode + ref, but be
@@ -313,7 +256,12 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
313
256
  return { type: 'approve', scope: 'session' };
314
257
  }
315
258
  if (sticky && (answer === 'a' || answer === 'always')) {
316
- displayDialogLine('Approved and remembered this exact command is saved to the project allow-list.', 'notice');
259
+ // [[EXT-154]]**no sentence here.** This answer asks for a project file and the write has
260
+ // not been attempted yet, so anything written on this line would be a claim about a file
261
+ // nobody has tried to make. Recorded instead, and confirmed by the outcome callback below
262
+ // once the runner says what it landed as. The approve twin of the `[d]` branch, and the one
263
+ // [[EXT-150]] found telling the identical lie beside the reject branch its node named.
264
+ rememberAsked.add(pending);
317
265
  return { type: 'approve', scope: 'always' };
318
266
  }
319
267
  // [[TUI-C26]] §6 — *always reject*: a refusal that is also recorded, so the next identical
@@ -332,20 +280,26 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
332
280
  // widens what is answerable at any prompt. Read this as the reason not to add a fourth alias,
333
281
  // never as licence to delete the three that are here.
334
282
  const stickyRejected = stickyDeny && answer === 'd';
335
- // The confirmation says what actually happened and stops there. There is no persisted deny
336
- // store, so a line implying one would be the same failure §6 names when it calls a control
337
- // offered and then refused a bug with the evidence hidden, which is worse.
338
- displayDialogLine(stickyRejected
339
- ? 'Refused this call will not run for the rest of this session, and will not ask ' +
340
- 'again. Nothing was saved to the project, so a new session will ask about it again.'
341
- : 'Command rejected.', 'notice');
342
- // EXT-58 (§7): the model is told the moves it has — re-call with a justification, call a
343
- // different command, or ask the user — and, when the rater named an already-granted
344
- // alternative (§4.4), that tool plus the clause saying it needs no approval. A bare "user
345
- // rejected" leaves the model to guess, which it does by repeating itself or giving up.
283
+ // [[EXT-154]] the ORDINARY refusal is confirmed here and the remembered one is not, and the
284
+ // split is the whole fix. This line records nothing, so it is true the instant it is written;
285
+ // *always reject* asks for a project file, which [[EXT-107]] makes real and [[EXT-149]] can fail
286
+ // to write, and neither is known until the runner has tried. So the remembering answer is
287
+ // noted and the sentence it earns is committed by the outcome callback below — once, when it
288
+ // is known, never optimistically and then corrected.
289
+ if (stickyRejected)
290
+ rememberAsked.add(pending);
291
+ else
292
+ displayDialogLine('Command rejected.', 'notice');
293
+ // EXT-58 (§7): the model is told the moves it has re-call with a justification, or call a
294
+ // different command — and, when the rater named an already-granted alternative (§4.4), that
295
+ // tool plus the clause saying it needs no approval. A bare "user rejected" leaves the model
296
+ // to guess, which it does by repeating itself or giving up.
346
297
  return {
347
298
  type: 'reject',
348
- ...(stickyRejected ? { scope: 'session' } : {}),
299
+ // [[EXT-107]] `always`, which is what the label above promised. The lifetime that
300
+ // actually lands is core's to decide (a project file that cannot be written degrades to a
301
+ // session refusal), so this surface asks for the scope and never assumes the outcome.
302
+ ...(stickyRejected ? { scope: 'always' } : {}),
349
303
  message: buildRejectionMessage({
350
304
  source: 'user',
351
305
  toolName: pending.name,
@@ -353,6 +307,19 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
353
307
  }),
354
308
  };
355
309
  });
310
+ // [[EXT-154]] — **the return leg**, and the reason the two sentences above moved. The runner
311
+ // records a remembering answer only after the callback that gave it has returned, so this is
312
+ // the first moment either one can be described truthfully; written any earlier, the *saved to
313
+ // this project* line sits on screen beside core's own ERROR naming the file it could not write.
314
+ //
315
+ // Nothing here decides anything — by the time it fires the answer is made and the record is
316
+ // written — and an outcome for an interrupt this surface did not note is dropped, which is what
317
+ // keeps `[o]`, `[s]` and the ordinary refusal from being confirmed twice.
318
+ runner.setApprovalOutcomeCallback((outcome) => {
319
+ if (!rememberAsked.delete(outcome.pending))
320
+ return;
321
+ displayDialogLine(rememberedAnswerLine(outcome.decision, outcome.lifetime), 'notice');
322
+ });
356
323
  // [[TUI-C68]] §6.1 — the ATTACK BANNER on the plain surface. An `attack` verdict says the
357
324
  // command's own structure evidenced compromise, and it ends the run; without this the only
358
325
  // recovery is a restart, which §12 forbids. Wiring the callback is what opts this session into
@@ -413,6 +380,39 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
413
380
  displayDialogLine(copy.granted, 'warn');
414
381
  return 'run-anyway';
415
382
  });
383
+ // [[TUI-C69]] §5.4/§5.5 — **this session has a live display, so the negotiation is watched
384
+ // rather than only reported.** Wiring it opts this surface into both halves: each round is
385
+ // drawn the moment the gate decides it, and a negotiated approval is held visible for the
386
+ // minimum interval before it takes effect. A surface that wires nothing — an `exec` run, CI —
387
+ // neither draws nor sleeps, which is why one seam carries both.
388
+ //
389
+ // Rendered through core's shared `renderNegotiationRows`, with this surface's own existing
390
+ // voice → tone mapping: the rater's turns `warn` (yellow) as §5.4 requires, the agent's plain,
391
+ // the chrome as a notice. The rows also NAME their speaker, which is the half of the
392
+ // distinction that survives a terminal with no colour at all. The Ink TUI renders the same
393
+ // rows, so the two surfaces cannot describe one exchange differently.
394
+ runner.setNegotiationDisplay({
395
+ round: ({ round, position, agreed, revised }) => {
396
+ // One round at a time, and on THIS surface that is correct: scrollback is append-only, so
397
+ // each round is printed once as it happens and nothing redraws. The Ink dock is the one that
398
+ // needs the whole list (`renderLiveNegotiationRows`), because there the accumulated rounds
399
+ // are re-rendered into a region that cannot scroll and must therefore be bounded.
400
+ for (const row of renderNegotiationRows([round], {
401
+ width: frameWidthFor(output.columns),
402
+ mode: 'live',
403
+ from: position,
404
+ ...(agreed ? { agreed } : {}),
405
+ ...(revised ? { revised } : {}),
406
+ })) {
407
+ if (row.voice === 'rater')
408
+ displayDialogLine(row.text, 'warn');
409
+ else if (row.voice === 'agent')
410
+ displayDialogLine(row.text);
411
+ else
412
+ displayDialogLine(row.text, 'notice');
413
+ }
414
+ },
415
+ });
416
416
  if (logFileName) {
417
417
  displayInfo(`${sessionConfig.mode} session will be logged to ${logFileName}\n`);
418
418
  }
@@ -519,7 +519,19 @@ export async function createInteractiveSession(sessionConfig, commandLineConfigO
519
519
  // (the runner posture). Session-scoped, reversible, never persisted. With no argument
520
520
  // the command DISPLAYS the posture instead of changing it.
521
521
  if ('show' in result.approvals) {
522
- printNotice(approvalsStatusNotice(runner.getSessionApprovals(), runner.getAllowlistCounts(), runner.getDenylist(), runner.getGrants(), runner.getMcpAnnotationTrust()));
522
+ const refusals = runner.getRefusals();
523
+ printNotice(approvalsStatusNotice(runner.getSessionApprovals(), runner.getAllowlistCounts(), refusals, runner.getGrants(), runner.getMcpAnnotationTrust()));
524
+ // [[EXT-107]] — the refusals as their own notice, after the posture and nearest the
525
+ // prompt: it is the block the user acts on, and it carries the number `undeny` takes.
526
+ const refused = approvalsRefusalsNotice(refusals);
527
+ if (refused)
528
+ printNotice(refused);
529
+ }
530
+ else if ('undeny' in result.approvals) {
531
+ // [[EXT-107]] — lift a refusal by its number. The notice is built from what the
532
+ // runner RETURNS, so it can only describe the refusal actually lifted — including the
533
+ // case where a config entry goes on refusing the call after a saved one is removed.
534
+ printNotice(approvalsUndenyNotice(runner.liftRefusal(result.approvals.undeny.index)));
523
535
  }
524
536
  else if ('trust' in result.approvals) {
525
537
  // EXT-70 §4.7.1 — believe (or stop believing) specific hints from one server, for
@@ -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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"}