@gaunt-sloth/agent 2.0.0-beta.0 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +6 -6
- package/dist/modules/a2a/A2AClientWrapper.js +1 -1
- package/dist/modules/a2a/A2AClientWrapper.js.map +1 -1
- package/dist/modules/acp/acpAgentApp.js +45 -2
- package/dist/modules/acp/acpAgentApp.js.map +1 -1
- package/dist/modules/acp/acpAgentAppV1.js +38 -2
- package/dist/modules/acp/acpAgentAppV1.js.map +1 -1
- package/dist/modules/acp/acpPermissions.d.ts +50 -5
- package/dist/modules/acp/acpPermissions.js +74 -8
- package/dist/modules/acp/acpPermissions.js.map +1 -1
- package/dist/modules/acp/acpPermissionsV1.d.ts +9 -0
- package/dist/modules/acp/acpPermissionsV1.js +9 -0
- package/dist/modules/acp/acpPermissionsV1.js.map +1 -1
- package/dist/modules/interactiveSessionModule.js +159 -147
- package/dist/modules/interactiveSessionModule.js.map +1 -1
- package/dist/modules/slashCommands.d.ts +72 -8
- package/dist/modules/slashCommands.js +179 -9
- package/dist/modules/slashCommands.js.map +1 -1
- package/dist/tools/gthGrepTool.js +51 -9
- package/dist/tools/gthGrepTool.js.map +1 -1
- package/package.json +10 -10
|
@@ -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,
|
|
9
|
-
import { frameUntrustedCommand, frameUntrustedText, frameWidthFor, narrowTerminalNotice,
|
|
10
|
-
import {
|
|
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();
|
|
@@ -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
|
-
|
|
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
|
-
//
|
|
190
|
-
//
|
|
191
|
-
//
|
|
192
|
-
//
|
|
193
|
-
//
|
|
194
|
-
//
|
|
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-
|
|
197
|
-
//
|
|
198
|
-
//
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
})) {
|
|
205
|
-
|
|
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-
|
|
213
|
-
//
|
|
214
|
-
//
|
|
215
|
-
//
|
|
216
|
-
//
|
|
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
|
-
|
|
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
|
-
//
|
|
336
|
-
//
|
|
337
|
-
//
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAyC,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EACL,qBAAqB,EACrB,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,GACrB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAC9F,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,eAAe,EACf,KAAK,EACL,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,KAAK,IAAI,KAAK,EACd,MAAM,IAAI,MAAM,GACjB,MAAM,wCAAwC,CAAC;AAMhD,OAAO,EAAoB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,GAGlB,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,GAAG,CAAC,KAAwB,EAAE,IAAI,GAAe,OAAO,EAAQ,EAAE;IACjF,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,oBAAoB,GAAG,CAAC,QAA8B,EAAE,MAAwB,EAAU,EAAE;IAChG,MAAM,cAAc,GAAG,MAAM,KAAK,QAAQ,CAAC;IAC3C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,cAAc;YACnB,CAAC,CAAC,kFAAkF;YACpF,CAAC,CAAC,gFAAgF,CAAC;IACvF,CAAC;IACD,OAAO,cAAc;QACnB,CAAC,CAAC,qFAAqF;YACnF,+EAA+E;QACnF,CAAC,CAAC,yFAAyF;YACvF,iFAAiF;YACjF,oBAAoB,CAAC;AAC7B,CAAC,CAAC;AAUF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,aAA4B,EAC5B,0BAAsD,EACtD,OAAgB;IAEhB,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,MAAM,UAAU,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,eAAe,GAAG,IAAI,WAAW,EAAE,CAAC;IAE1C,mGAAmG;IACnG,kGAAkG;IAClG,oGAAoG;IACpG,8DAA8D;IAC9D,MAAM,cAAc,GAClB,oBAAoB,CAAC,MAAM,EAAE;QAC3B,OAAO,EAAE,aAAa,CAAC,IAAI;QAC3B,OAAO,EAAE,aAAa,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC,gBAAgB;KAC/B,CAAC,IAAI,SAAS,CAAC;IAElB,oBAAoB;IAEpB,MAAM,WAAW,GAAG,wBAAwB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,WAAW,EAAE,CAAC;QAChB,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACpE,CAAC;IACD,0FAA0F;IAC1F,8FAA8F;IAC9F,oEAAoE;IACpE,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,qBAAqB,EACrB,eAAe,EAAE,EACjB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CACpC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAC/D,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,2FAA2F;QAC3F,yFAAyF;QACzF,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;QACzC,yFAAyF;QACzF,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,gGAAgG;QAChG,kGAAkG;QAClG,8FAA8F;QAC9F,4FAA4F;QAC5F,kGAAkG;QAClG,gGAAgG;QAChG,MAAM,gBAAgB,GAAG,CAAC,SAAyB,EAA0B,EAAE;YAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO,cAAc,CAAC;gBACpB,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;gBAC5C,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,YAAY,EAAE,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;gBACpF,wFAAwF;gBACxF,gEAAgE;gBAChE,SAAS,EAAE,MAAM,CAAC,mBAAmB,EAAE;aACxC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,4FAA4F;QAC5F,sFAAsF;QACtF,2FAA2F;QAC3F,wFAAwF;QACxF,4FAA4F;QAC5F,4FAA4F;QAC5F,MAAM,OAAO,GAAG,CAAC,MAAc,EAAmB,EAAE;YAClD,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC;QAEF,6FAA6F;QAC7F,wFAAwF;QACxF,yFAAyF;QACzF,6FAA6F;QAC7F,oEAAoE;QACpE,2DAA2D;QAC3D,4EAA4E;QAC5E,iFAAiF;QACjF,uEAAuE;QACvE,mFAAmF;QACnF,sFAAsF;QACtF,0FAA0F;QAC1F,4FAA4F;QAC5F,iFAAiF;QACjF,8FAA8F;QAC9F,gGAAgG;QAChG,sBAAsB;QACtB,EAAE;QACF,6FAA6F;QAC7F,2FAA2F;QAC3F,8FAA8F;QAC9F,6FAA6F;QAC7F,2EAA2E;QAC3E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;QAEtD,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC/C,mFAAmF;YACnF,EAAE;YACF,yFAAyF;YACzF,0FAA0F;YAC1F,wEAAwE;YACxE,6FAA6F;YAC7F,0FAA0F;YAC1F,4FAA4F;YAC5F,2EAA2E;YAC3E,EAAE;YACF,2FAA2F;YAC3F,0FAA0F;YAC1F,6FAA6F;YAC7F,4FAA4F;YAC5F,2FAA2F;YAC3F,8FAA8F;YAC9F,gDAAgD;YAChD,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACtB,KAAK,MAAM,GAAG,IAAI,mBAAmB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC5E,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACnE,CAAC;YACD,2FAA2F;YAC3F,8FAA8F;YAC9F,8FAA8F;YAC9F,2FAA2F;YAC3F,4FAA4F;YAC5F,uFAAuF;YACvF,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACtB,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC7C,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;YACzD,0FAA0F;YAC1F,gFAAgF;YAChF,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC;YAClD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC;YACrD,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,gDAAgD;YACnE,yFAAyF;YACzF,4FAA4F;YAC5F,6FAA6F;YAC7F,oEAAoE;YACpE,IAAI,MAAc,CAAC;YACnB,IAAI,CAAC;gBACH,2FAA2F;gBAC3F,yFAAyF;gBACzF,yFAAyF;gBACzF,wFAAwF;gBACxF,2FAA2F;gBAC3F,wFAAwF;gBACxF,iFAAiF;gBACjF,EAAE;gBACF,4FAA4F;gBAC5F,6CAA6C;gBAC7C,MAAM,QAAQ,GAAG;oBACf,QAAQ;oBACR,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,MAAM;oBACN,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzC,CAAC;gBACF,2FAA2F;gBAC3F,4FAA4F;gBAC5F,6FAA6F;gBAC7F,6FAA6F;gBAC7F,yFAAyF;gBACzF,qFAAqF;gBACrF,iBAAiB,CAAC,YAAY,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACjE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACpD,CAAC;oBAAS,CAAC;gBACT,QAAQ,EAAE,CAAC;YACb,CAAC;YACD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACxC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC5C,CAAC;YACD,6FAA6F;YAC7F,4FAA4F;YAC5F,yFAAyF;YACzF,qFAAqF;YACrF,2FAA2F;YAC3F,wFAAwF;YACxF,iBAAiB;YACjB,EAAE;YACF,4FAA4F;YAC5F,2FAA2F;YAC3F,yFAAyF;YACzF,sFAAsF;YACtF,2FAA2F;YAC3F,oFAAoF;YACpF,0BAA0B;YAC1B,IAAI,MAAM,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;gBACvD,iBAAiB,CACf,gEAAgE,EAChE,QAAQ,CACT,CAAC;gBACF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YAC/C,CAAC;YACD,IAAI,MAAM,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACtD,4FAA4F;gBAC5F,yFAAyF;gBACzF,0FAA0F;gBAC1F,4FAA4F;gBAC5F,uFAAuF;gBACvF,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC9C,CAAC;YACD,2FAA2F;YAC3F,yFAAyF;YACzF,2FAA2F;YAC3F,mFAAmF;YACnF,EAAE;YACF,2FAA2F;YAC3F,6FAA6F;YAC7F,yBAAyB;YACzB,EAAE;YACF,0FAA0F;YAC1F,yFAAyF;YACzF,2FAA2F;YAC3F,8FAA8F;YAC9F,8FAA8F;YAC9F,sDAAsD;YACtD,MAAM,cAAc,GAAG,UAAU,IAAI,MAAM,KAAK,GAAG,CAAC;YACpD,8FAA8F;YAC9F,8FAA8F;YAC9F,iGAAiG;YACjG,0FAA0F;YAC1F,6FAA6F;YAC7F,qDAAqD;YACrD,IAAI,cAAc;gBAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;;gBAC1C,iBAAiB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;YACtD,4FAA4F;YAC5F,4FAA4F;YAC5F,4FAA4F;YAC5F,4DAA4D;YAC5D,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,oFAAoF;gBACpF,0FAA0F;gBAC1F,sFAAsF;gBACtF,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,OAAO,EAAE,qBAAqB,CAAC;oBAC7B,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE,OAAO,CAAC,IAAI;oBACtB,OAAO,EAAE,OAAO,CAAC,aAAa;iBAC/B,CAAC;aACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,6FAA6F;QAC7F,6FAA6F;QAC7F,8FAA8F;QAC9F,gGAAgG;QAChG,EAAE;QACF,4FAA4F;QAC5F,gGAAgG;QAChG,0EAA0E;QAC1E,MAAM,CAAC,0BAA0B,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO;YACnD,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QAEH,0FAA0F;QAC1F,2FAA2F;QAC3F,+FAA+F;QAC/F,+FAA+F;QAC/F,mCAAmC;QACnC,EAAE;QACF,+FAA+F;QAC/F,gGAAgG;QAChG,8FAA8F;QAC9F,oCAAoC;QACpC,EAAE;QACF,4FAA4F;QAC5F,8FAA8F;QAC9F,iGAAiG;QACjG,4FAA4F;QAC5F,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjD,iBAAiB,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC/C,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,SAAS;gBAAE,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACpD,0FAA0F;YAC1F,2FAA2F;YAC3F,4FAA4F;YAC5F,8FAA8F;YAC9F,MAAM,aAAa,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACjF,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3C,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACtB,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACtB,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC1C,iBAAiB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAChD,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpF,wFAAwF;YACxF,2FAA2F;YAC3F,2BAA2B;YAC3B,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC/C,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACrC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,oCAAoC;YACvD,IAAI,MAAc,CAAC;YACnB,IAAI,CAAC;gBACH,wFAAwF;gBACxF,wFAAwF;gBACxF,yBAAyB;gBACzB,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACzC,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;oBAAS,CAAC;gBACT,QAAQ,EAAE,CAAC;YACb,CAAC;YACD,uFAAuF;YACvF,wFAAwF;YACxF,4FAA4F;YAC5F,oDAAoD;YACpD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAC;YAC5C,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACxC,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,2FAA2F;QAC3F,2FAA2F;QAC3F,0FAA0F;QAC1F,8FAA8F;QAC9F,gEAAgE;QAChE,EAAE;QACF,2FAA2F;QAC3F,+FAA+F;QAC/F,qFAAqF;QACrF,2FAA2F;QAC3F,sEAAsE;QACtE,MAAM,CAAC,qBAAqB,CAAC;YAC3B,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC9C,0FAA0F;gBAC1F,6FAA6F;gBAC7F,2FAA2F;gBAC3F,kFAAkF;gBAClF,KAAK,MAAM,GAAG,IAAI,qBAAqB,CAAC,CAAC,KAAK,CAAC,EAAE;oBAC/C,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC;oBACpC,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;oBACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChC,CAAC,EAAE,CAAC;oBACH,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO;wBAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;yBAC1D,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO;wBAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;wBACvD,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,GAAG,aAAa,CAAC,IAAI,8BAA8B,WAAW,IAAI,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAE;YACjD,MAAM,QAAQ,GAAG,cAAc,SAAS,sBAAsB,CAAC;YAC/D,IAAI,WAAW,EAAE,CAAC;gBAChB,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACtC,CAAC;YACD,eAAe,EAAE,CAAC,CAAC,mDAAmD;YACtE,yFAAyF;YACzF,wFAAwF;YACxF,6EAA6E;YAC7E,MAAM,QAAQ,GAAkB,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;YAE9D,2FAA2F;YAC3F,kFAAkF;YAClF,2FAA2F;YAC3F,qFAAqF;YACrF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,QAAQ,GAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;gBACjC,IAAI,CAAC;oBAAE,QAAQ,GAAG,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,wDAAwD;YAC1D,CAAC;YACD,iBAAiB,CAAC,MAAM,EAAE;gBACxB,cAAc,EAAE,6DAA6D;gBAC7E,OAAO,EAAE,aAAa,CAAC,IAAI;gBAC3B,OAAO,EAAE,aAAa,EAAE;gBACxB,KAAK,EAAE,MAAM,CAAC,gBAAgB;gBAC9B,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC7D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACnC,CAAC,CAAC;YACH,SAAS,IAAI,CAAC,CAAC,CAAC,yCAAyC;QAC3D,CAAC,CAAC;QAEF,2FAA2F;QAC3F,0DAA0D;QAC1D,MAAM,WAAW,GAAG,CAAC,MAA0B,EAAE,EAAE;YACjD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;YAC5B,OAAO,CAAC,YAAY,CAAC,CAAC;YACtB,UAAU,GAAG,IAAI,CAAC;YAClB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,kBAAkB,EAAE,CAAC;YACrB,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC7B,OAAO,CAAC,UAAU,EAAE,CAAC;gBACnB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,2EAA2E;gBAC7F,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;oBACtB,SAAS,CAAC,6BAA6B;gBACzC,CAAC;gBACD,sFAAsF;gBACtF,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;oBAC9C,MAAM,UAAU,EAAE,CAAC;oBACnB,MAAM;gBACR,CAAC;gBAED,uFAAuF;gBACvF,wFAAwF;gBACxF,wFAAwF;gBACxF,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAC5C,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE;wBACpD,IAAI,EAAE,aAAa,CAAC,IAAI;wBACxB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,EAAE;wBAC/C,SAAS;wBACT,oFAAoF;wBACpF,gDAAgD;wBAChD,aAAa,EAAE,KAAK;wBACpB,YAAY,EAAE,KAAK;wBACnB,kFAAkF;wBAClF,uEAAuE;wBACvE,aAAa,EAAE,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;wBAC9D,gFAAgF;wBAChF,oFAAoF;wBACpF,iFAAiF;wBACjF,UAAU,EAAE,EAAE;wBACd,cAAc,EAAE,MAAM;wBACtB,gBAAgB;qBACjB,CAAC,CAAC;oBACH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBAChB,MAAM,UAAU,EAAE,CAAC;wBACnB,MAAM;oBACR,CAAC;oBACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;wBACrB,oFAAoF;wBACpF,sFAAsF;wBACtF,2DAA2D;wBAC3D,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;4BAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;4BACtC,WAAW,CACT,qBAAqB,CACnB,MAAM,CAAC,mBAAmB,EAAE,EAC5B,MAAM,CAAC,kBAAkB,EAAE,EAC3B,QAAQ,EACR,MAAM,CAAC,SAAS,EAAE,EAClB,MAAM,CAAC,qBAAqB,EAAE,CAC/B,CACF,CAAC;4BACF,oFAAoF;4BACpF,sFAAsF;4BACtF,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;4BAClD,IAAI,OAAO;gCAAE,WAAW,CAAC,OAAO,CAAC,CAAC;wBACpC,CAAC;6BAAM,IAAI,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;4BACxC,gFAAgF;4BAChF,sFAAsF;4BACtF,oFAAoF;4BACpF,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACxF,CAAC;6BAAM,IAAI,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;4BACvC,kFAAkF;4BAClF,iFAAiF;4BACjF,iFAAiF;4BACjF,6BAA6B;4BAC7B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;4BAC1D,WAAW,CACT,oBAAoB,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAC3E,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;4BACrD,2EAA2E;4BAC3E,WAAW,CAAC,mBAAmB,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;wBACjE,CAAC;oBACH,CAAC;yBAAM,IACL,MAAM,CAAC,eAAe;wBACtB,MAAM,CAAC,WAAW;wBAClB,MAAM,CAAC,WAAW;wBAClB,MAAM,CAAC,gBAAgB,EACvB,CAAC;wBACD,8EAA8E;wBAC9E,mFAAmF;wBACnF,qDAAqD;wBACrD,WAAW,CACT,IAAI,MAAM,CAAC,IAAI,8DAA8D;4BAC3E,6DAA6D,CAChE,CAAC;oBACJ,CAAC;yBAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBACzB,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC7B,CAAC;oBACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACnB,yEAAyE;wBACzE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;4BAC/B,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBACjC,CAAC;6BAAM,CAAC;4BACN,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBAC9B,CAAC;oBACH,CAAC;oBACD,SAAS,CAAC,0CAA0C;gBACtD,CAAC;gBAED,IAAI,WAAW,GAAG,KAAK,CAAC;gBAExB,GAAG,CAAC;oBACF,IAAI,CAAC;wBACH,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;wBAChC,WAAW,GAAG,KAAK,CAAC;oBACtB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,oFAAoF;wBACpF,gFAAgF;wBAChF,oFAAoF;wBACpF,sFAAsF;wBACtF,+EAA+E;wBAC/E,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;4BACrC,OAAO,CAAC,+BAA+B,CAAC,CAAC;4BACzC,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gCAC3E,OAAO,CAAC,GAAG,CAAC,CAAC;4BACf,CAAC;4BACD,OAAO,CAAC,EAAE,CAAC,CAAC;wBACd,CAAC;6BAAM,CAAC;4BACN,OAAO,CACL,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACtF,CAAC;wBACJ,CAAC;wBACD,0EAA0E;wBAC1E,gFAAgF;wBAChF,2EAA2E;wBAC3E,MAAM,aAAa,GAAG,MAAM,OAAO,CACjC,wDAAwD,CACzD,CAAC;wBACF,WAAW,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;wBAEjE,IAAI,CAAC,WAAW,EAAE,CAAC;4BACjB,OAAO,CAAC,8BAA8B,CAAC,CAAC;wBAC1C,CAAC;oBACH,CAAC;gBACH,CAAC,QAAQ,WAAW,IAAI,CAAC,UAAU,EAAE;gBAErC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,CAAC,MAAM,CAAC,CAAC;oBAChB,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,yFAAyF;YACzF,0FAA0F;YAC1F,mDAAmD;YACnD,EAAE;YACF,2FAA2F;YAC3F,6FAA6F;YAC7F,2FAA2F;YAC3F,uFAAuF;YACvF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,mBAAmB,CACjB,gBAAgB,CAAC;oBACf,GAAG,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;oBACxE,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,MAAM,EAAE,YAAY,EAAE;iBACvB,CAAC,CACH,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACpC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,MAAM,WAAW,EAAE,CAAC;QACrC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,EAAE,CAAC;YACT,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,kBAAkB,EAAE,CAAC;QACrB,6FAA6F;QAC7F,6FAA6F;QAC7F,4FAA4F;QAC5F,+FAA+F;QAC/F,8EAA8E;QAC9E,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;YACrC,KAAK,CAAC,YAAY,aAAa,CAAC,IAAI,WAAW,CAAC,CAAC;YACjD,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACzF,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,YAAY,aAAa,CAAC,IAAI,aAAa,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* The registry is a plain array so later layers (e.g. extension-registered commands, EXT-5)
|
|
14
14
|
* can append more entries via {@link createCommandRegistry} without this module changing.
|
|
15
15
|
*/
|
|
16
|
-
import type { ApprovalRung, McpAnnotationTrustChange, McpAnnotationTrustView, ResolvedApprovals, ToolAnnotationHint } from '@gaunt-sloth/core/config.js';
|
|
16
|
+
import type { ApprovalRefusal, ApprovalRefusalLift, ApprovalRung, McpAnnotationTrustChange, McpAnnotationTrustView, ResolvedApprovals, ToolAnnotationHint } from '@gaunt-sloth/core/config.js';
|
|
17
17
|
import type { ApprovalGrant } from '@gaunt-sloth/core/core/approvals/grants.js';
|
|
18
18
|
/**
|
|
19
19
|
* TUI-C63 — one advertised key binding: the keys as the user's keyboard spells them, and what
|
|
@@ -250,6 +250,10 @@ export interface SlashCommandResult {
|
|
|
250
250
|
rung: ApprovalRung;
|
|
251
251
|
} | {
|
|
252
252
|
trust: McpTrustRequest;
|
|
253
|
+
} | {
|
|
254
|
+
undeny: {
|
|
255
|
+
index: number;
|
|
256
|
+
};
|
|
253
257
|
};
|
|
254
258
|
/**
|
|
255
259
|
* TUI-C18 — a committed turn's thinking to REPRINT into the transcript (the `/reasoning` command).
|
|
@@ -435,7 +439,7 @@ export declare function approvalPostureLines(current: ApprovalRung): string[];
|
|
|
435
439
|
export declare function approvalsStatusNotice(approvals: ResolvedApprovals, allowlist: {
|
|
436
440
|
session: number;
|
|
437
441
|
always: number | undefined;
|
|
438
|
-
},
|
|
442
|
+
}, refusals?: readonly ApprovalRefusal[], grants?: readonly ApprovalGrant[], trust?: McpAnnotationTrustView, options?: {
|
|
439
443
|
/**
|
|
440
444
|
* CFG-39 — set by a surface that is about to render {@link approvalPostureChoices} as an
|
|
441
445
|
* interactive picker, so the same four modes are not also printed as text right above it.
|
|
@@ -446,6 +450,28 @@ export declare function approvalsStatusNotice(approvals: ResolvedApprovals, allo
|
|
|
446
450
|
*/
|
|
447
451
|
interactive?: boolean;
|
|
448
452
|
}): SlashCommandNotice;
|
|
453
|
+
/**
|
|
454
|
+
* [[EXT-107]] — **the refusals in force, as their own notice**: what is refused, which list holds
|
|
455
|
+
* it, and the number that lifts it. `null` when nothing is refused, so `/approvals` says nothing
|
|
456
|
+
* about refusals in the ordinary case.
|
|
457
|
+
*
|
|
458
|
+
* This is the escape hatch, and it is the reason a refusal may be persisted at all. A session-only
|
|
459
|
+
* *always reject* cost minutes when it was a mistake; saved to a project file it costs whatever it
|
|
460
|
+
* takes the user to discover a file they were never told about. So this does not count refusals, it
|
|
461
|
+
* makes each one findable and undoable — which is why every line carries its origin and its number.
|
|
462
|
+
*
|
|
463
|
+
* **A second notice rather than more rows on the posture one, and the reason is the pane.** The
|
|
464
|
+
* posture notice's head is the answer the user asked for — which mode am I on — and it already
|
|
465
|
+
* fills the TUI pane the picker leaves: measured, ONE added row scrolls that head off the top. Two
|
|
466
|
+
* notices each keep their own heading, and the refusal list ends up nearest the prompt, which is
|
|
467
|
+
* where the thing the user is about to act on belongs.
|
|
468
|
+
*
|
|
469
|
+
* **The overflow is walkable rather than a dead end.** The numbering is the runner's, over a
|
|
470
|
+
* deterministic order (config, then saved, then session), so lifting the last shown entry brings
|
|
471
|
+
* the next one into the list. A cap that simply hid the rest would put refusals beyond reach of the
|
|
472
|
+
* control that exists to reach them.
|
|
473
|
+
*/
|
|
474
|
+
export declare function approvalsRefusalsNotice(refusals: readonly ApprovalRefusal[]): SlashCommandNotice | null;
|
|
449
475
|
/** EXT-70 §4.7.1 — a request to start or stop believing specific hints from one server. */
|
|
450
476
|
export interface McpTrustRequest {
|
|
451
477
|
/** §4.7.5 — the user's own `mcpServers` config key, case-sensitive. */
|
|
@@ -456,7 +482,7 @@ export interface McpTrustRequest {
|
|
|
456
482
|
believe: boolean;
|
|
457
483
|
}
|
|
458
484
|
/** Something wrong with a `/approvals trust` invocation that the command explains rather than guesses at. */
|
|
459
|
-
export type
|
|
485
|
+
export type ApprovalsTrustUsageProblem = {
|
|
460
486
|
kind: 'trust-missing-server';
|
|
461
487
|
believe: boolean;
|
|
462
488
|
} | {
|
|
@@ -468,6 +494,13 @@ export type ApprovalsUsageProblem = {
|
|
|
468
494
|
believe: boolean;
|
|
469
495
|
token: string;
|
|
470
496
|
};
|
|
497
|
+
/** Something wrong with a `/approvals` subcommand that the command explains rather than guesses at. */
|
|
498
|
+
export type ApprovalsUsageProblem = ApprovalsTrustUsageProblem | {
|
|
499
|
+
kind: 'undeny-missing-number';
|
|
500
|
+
} | {
|
|
501
|
+
kind: 'undeny-bad-number';
|
|
502
|
+
token: string;
|
|
503
|
+
};
|
|
471
504
|
/** What `/approvals` resolved to, or `null` when the first argument names nothing it knows. */
|
|
472
505
|
export type ApprovalsAction = {
|
|
473
506
|
show: true;
|
|
@@ -475,6 +508,10 @@ export type ApprovalsAction = {
|
|
|
475
508
|
rung: ApprovalRung;
|
|
476
509
|
} | {
|
|
477
510
|
trust: McpTrustRequest;
|
|
511
|
+
} | {
|
|
512
|
+
undeny: {
|
|
513
|
+
index: number;
|
|
514
|
+
};
|
|
478
515
|
} | {
|
|
479
516
|
usage: ApprovalsUsageProblem;
|
|
480
517
|
};
|
|
@@ -488,10 +525,9 @@ export type ApprovalsAction = {
|
|
|
488
525
|
* `manual` rather than a posture of its own, so it leaves quick access — but it stays fully
|
|
489
526
|
* settable here and in config, which is the whole of what "demoted" means.
|
|
490
527
|
*
|
|
491
|
-
* The retired `
|
|
492
|
-
*
|
|
493
|
-
*
|
|
494
|
-
* error in `RETIRED_APPROVAL_MODES`.
|
|
528
|
+
* The retired `ask` spelling is NOT accepted as an alias — 2.0 is a deliberate break, and a silent
|
|
529
|
+
* alias would leave the user believing in a vocabulary the gate no longer has. It is named, with
|
|
530
|
+
* both of its replacements, by the config-layer error in `RETIRED_APPROVAL_MODES`.
|
|
495
531
|
*
|
|
496
532
|
* **Only the subcommand token is lower-cased.** A server key is the user's own `mcpServers` key
|
|
497
533
|
* (§4.7.5) and is case-sensitive, so folding it would name a different server — one that believes
|
|
@@ -505,7 +541,35 @@ export declare function parseApprovalsArg(args: string[]): ApprovalsAction | nul
|
|
|
505
541
|
* a hint that is not one of the four. Each says what is missing and shows the vocabulary, because
|
|
506
542
|
* the hint names are camelCase MCP identifiers nobody guesses.
|
|
507
543
|
*/
|
|
508
|
-
export declare function approvalsTrustUsageNotice(problem:
|
|
544
|
+
export declare function approvalsTrustUsageNotice(problem: ApprovalsTrustUsageProblem): SlashCommandNotice;
|
|
545
|
+
/**
|
|
546
|
+
* Usage copy for any malformed `/approvals` subcommand. It dispatches on the problem's `kind`
|
|
547
|
+
* rather than on which subcommand was typed, so a new subcommand's problems are explained by adding
|
|
548
|
+
* a case here and cannot fall through to another subcommand's copy.
|
|
549
|
+
*
|
|
550
|
+
* **Nothing was changed** is stated on every branch, and on the [[EXT-107]] ones it is the part that
|
|
551
|
+
* matters: these arrive from a command that would have REMOVED a refusal, and a user who mistyped
|
|
552
|
+
* the number has to know the gate is still where they left it.
|
|
553
|
+
*/
|
|
554
|
+
export declare function approvalsUsageNotice(problem: ApprovalsUsageProblem): SlashCommandNotice;
|
|
555
|
+
/**
|
|
556
|
+
* [[EXT-107]] — the notice for a `/approvals undeny`, built from what the runner RETURNS rather
|
|
557
|
+
* than from what was asked for, so it can only describe the refusal actually lifted.
|
|
558
|
+
*
|
|
559
|
+
* Three outcomes, and the two that are not a plain success are the ones worth the branches:
|
|
560
|
+
*
|
|
561
|
+
* - **A configured entry is not lifted**, because `approvals.deny` is a file the user wrote and no
|
|
562
|
+
* session command rewrites it. Saying where it lives is the whole of the help they need.
|
|
563
|
+
* - **A lifted entry that `approvals.deny` ALSO matches is still refused.** Reporting the removal
|
|
564
|
+
* without that would tell the user they had opened something that is still closed — the same
|
|
565
|
+
* "offered and then refused" failure the escalation menu is written to avoid, one layer up.
|
|
566
|
+
* - **A lift whose file rewrite did not land comes back tomorrow** ([[EXT-149]]). The refusal is
|
|
567
|
+
* gone for this session and still in the project file, so the promise this notice used to make
|
|
568
|
+
* unconditionally — *it will not come back in a new session* — is the one thing that is false
|
|
569
|
+
* there. The store's own error names the file and the reason the write failed; what this adds is
|
|
570
|
+
* what that means for the refusal the user just asked to lift.
|
|
571
|
+
*/
|
|
572
|
+
export declare function approvalsUndenyNotice(lift: ApprovalRefusalLift): SlashCommandNotice;
|
|
509
573
|
/**
|
|
510
574
|
* EXT-70 §4.7.1/§4.7.4 — the notice for a landed `/approvals trust` or `/approvals untrust`, built
|
|
511
575
|
* from what the runner RETURNS rather than from what was asked for, so the copy can only describe
|