@gaunt-sloth/core 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.
- package/LICENSE +6 -6
- package/dist/config/loader.d.ts +13 -0
- package/dist/config/loader.js +55 -11
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +10 -0
- package/dist/config/schema.js +46 -24
- package/dist/config/schema.js.map +1 -1
- package/dist/config/shell-policy.d.ts +144 -3
- package/dist/config/shell-policy.js +117 -10
- package/dist/config/shell-policy.js.map +1 -1
- package/dist/config/tool-descriptions.d.ts +5 -5
- package/dist/config/tool-descriptions.js +3 -3
- package/dist/config/types.d.ts +19 -0
- package/dist/config/types.js.map +1 -1
- package/dist/constants.d.ts +10 -0
- package/dist/constants.js +10 -0
- package/dist/constants.js.map +1 -1
- package/dist/core/GthAbstractAgent.d.ts +32 -1
- package/dist/core/GthAbstractAgent.js +222 -7
- package/dist/core/GthAbstractAgent.js.map +1 -1
- package/dist/core/GthAgentRunner.d.ts +323 -27
- package/dist/core/GthAgentRunner.js +1092 -112
- package/dist/core/GthAgentRunner.js.map +1 -1
- package/dist/core/GthLangChainAgent.js +1 -1
- package/dist/core/GthLangChainAgent.js.map +1 -1
- package/dist/core/approvals/approvalRequest.d.ts +247 -0
- package/dist/core/approvals/approvalRequest.js +315 -0
- package/dist/core/approvals/approvalRequest.js.map +1 -0
- package/dist/core/approvals/grants.d.ts +165 -9
- package/dist/core/approvals/grants.js +702 -57
- package/dist/core/approvals/grants.js.map +1 -1
- package/dist/core/plainToolIndication.d.ts +11 -1
- package/dist/core/plainToolIndication.js +25 -10
- package/dist/core/plainToolIndication.js.map +1 -1
- package/dist/core/reasoningBlocks.d.ts +4 -6
- package/dist/core/reasoningBlocks.js +4 -6
- package/dist/core/reasoningBlocks.js.map +1 -1
- package/dist/core/shell/ShellCommandFailedError.d.ts +4 -4
- package/dist/core/shell/ShellCommandFailedError.js +4 -4
- package/dist/core/shell/abstention.d.ts +1 -1
- package/dist/core/shell/abstention.js +65 -11
- package/dist/core/shell/abstention.js.map +1 -1
- package/dist/core/shell/alignment.d.ts +491 -0
- package/dist/core/shell/alignment.js +687 -0
- package/dist/core/shell/alignment.js.map +1 -0
- package/dist/core/shell/approvalCapture.d.ts +53 -41
- package/dist/core/shell/approvalCapture.js +0 -42
- package/dist/core/shell/approvalCapture.js.map +1 -1
- package/dist/core/shell/approvalStop.d.ts +121 -3
- package/dist/core/shell/approvalStop.js +153 -90
- package/dist/core/shell/approvalStop.js.map +1 -1
- package/dist/core/shell/hardline.d.ts +26 -4
- package/dist/core/shell/hardline.js +321 -16
- package/dist/core/shell/hardline.js.map +1 -1
- package/dist/core/shell/negotiation.d.ts +352 -63
- package/dist/core/shell/negotiation.js +295 -123
- package/dist/core/shell/negotiation.js.map +1 -1
- package/dist/core/shell/openWorld.d.ts +136 -0
- package/dist/core/shell/openWorld.js +573 -35
- package/dist/core/shell/openWorld.js.map +1 -1
- package/dist/core/shell/provenance.d.ts +91 -0
- package/dist/core/shell/provenance.js +136 -0
- package/dist/core/shell/provenance.js.map +1 -0
- package/dist/core/shell/rater.d.ts +394 -163
- package/dist/core/shell/rater.js +536 -238
- package/dist/core/shell/rater.js.map +1 -1
- package/dist/core/shell/raterHealth.d.ts +101 -0
- package/dist/core/shell/raterHealth.js +121 -0
- package/dist/core/shell/raterHealth.js.map +1 -0
- package/dist/core/shell/raterModel.d.ts +17 -8
- package/dist/core/shell/raterModel.js +11 -8
- package/dist/core/shell/raterModel.js.map +1 -1
- package/dist/core/shell/rejection.d.ts +20 -5
- package/dist/core/shell/rejection.js +18 -4
- package/dist/core/shell/rejection.js.map +1 -1
- package/dist/core/toolDisplay.d.ts +91 -2
- package/dist/core/toolDisplay.js +168 -19
- package/dist/core/toolDisplay.js.map +1 -1
- package/dist/core/types.d.ts +140 -22
- package/dist/core/types.js.map +1 -1
- package/dist/providers/configurationPassthrough.d.ts +36 -6
- package/dist/providers/configurationPassthrough.js +40 -28
- package/dist/providers/configurationPassthrough.js.map +1 -1
- package/dist/providers/geminiSchemaSanitizer.d.ts +2 -2
- package/dist/providers/geminiSchemaSanitizer.js +2 -2
- package/dist/providers/geminiThinking.d.ts +10 -5
- package/dist/providers/geminiThinking.js +10 -5
- package/dist/providers/geminiThinking.js.map +1 -1
- package/dist/providers/openrouter.js +36 -6
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/vertexai.js +21 -0
- package/dist/providers/vertexai.js.map +1 -1
- package/dist/runtime/askStructured.d.ts +22 -0
- package/dist/runtime/askStructured.js +53 -0
- package/dist/runtime/askStructured.js.map +1 -1
- package/dist/utils/aiignoreUtils.d.ts +6 -0
- package/dist/utils/aiignoreUtils.js +69 -1
- package/dist/utils/aiignoreUtils.js.map +1 -1
- package/dist/utils/binaryOutputUtils.js +103 -21
- package/dist/utils/binaryOutputUtils.js.map +1 -1
- package/dist/utils/displayWidth.d.ts +10 -5
- package/dist/utils/displayWidth.js +148 -54
- package/dist/utils/displayWidth.js.map +1 -1
- package/dist/utils/fileUtils.d.ts +7 -1
- package/dist/utils/fileUtils.js +17 -3
- package/dist/utils/fileUtils.js.map +1 -1
- package/dist/utils/globalConfigUtils.d.ts +5 -2
- package/dist/utils/globalConfigUtils.js +14 -3
- package/dist/utils/globalConfigUtils.js.map +1 -1
- package/dist/utils/llmUtils.d.ts +1 -1
- package/dist/utils/llmUtils.js +1 -1
- package/dist/utils/systemPromptNotes.d.ts +3 -3
- package/dist/utils/systemPromptNotes.js +3 -3
- package/dist/utils/vertexaiUtils.js +160 -3
- package/dist/utils/vertexaiUtils.js.map +1 -1
- package/package.json +6 -5
- package/schema/gsloth-config.schema.json +34 -0
|
@@ -43,6 +43,12 @@ export interface ToolCallDisplayInput {
|
|
|
43
43
|
output?: string;
|
|
44
44
|
/** The real `ToolMessage.status === 'error'` signal (TUI-C7) — never sniffed from text. */
|
|
45
45
|
isError?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* [[TUI-C69]] §5.4 — the gate refused this call BACK TO THE AGENT as a negotiation round, so the
|
|
48
|
+
* status row reads as a clarification request rather than as a failure. See
|
|
49
|
+
* {@link toolStatusDisplay}. Display-only, and additive to {@link isError}.
|
|
50
|
+
*/
|
|
51
|
+
raterClarification?: boolean;
|
|
46
52
|
/**
|
|
47
53
|
* True when the live child output ALREADY streamed raw to the user's terminal (the plain
|
|
48
54
|
* surface's default sink). Formatters then suppress the duplicated output body and render
|
|
@@ -50,6 +56,42 @@ export interface ToolCallDisplayInput {
|
|
|
50
56
|
*/
|
|
51
57
|
liveOutputAlreadyShown?: boolean;
|
|
52
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* [[TUI-C69]] §5.4 — **what a finished tool call's status row says, glyph, word and tone**, for
|
|
61
|
+
* both surfaces at once.
|
|
62
|
+
*
|
|
63
|
+
* `tone` rather than a colour name, because the two surfaces paint through different systems (Ink
|
|
64
|
+
* `<Text color>` and raw ANSI) and only one of them has a `magenta`. What is shared is the
|
|
65
|
+
* DISTINCTION, which is the thing a divergence would break.
|
|
66
|
+
*/
|
|
67
|
+
export type ToolStatusTone = 'success' | 'warn' | 'error';
|
|
68
|
+
/** Glyph + word + tone for one finished call. */
|
|
69
|
+
export interface ToolStatusDisplay {
|
|
70
|
+
glyph: string;
|
|
71
|
+
label: string;
|
|
72
|
+
tone: ToolStatusTone;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* [[TUI-C69]] §5.4 — **an intermediate rating rejection is a clarification request, never a
|
|
76
|
+
* failure**, and this is the one place that decides so for every surface.
|
|
77
|
+
*
|
|
78
|
+
* A `destructive` rating at `auto` does not end anything: it goes back to the agent naming what
|
|
79
|
+
* would make the command acceptable (§5.2), and on the happy path the very next round succeeds.
|
|
80
|
+
* Drawn in the same red `✗ … [error]` vocabulary a genuinely failed tool gets, it teaches the user
|
|
81
|
+
* that a working safety mechanism is a malfunction — which is the fastest way to make someone want
|
|
82
|
+
* it switched off. It is measured, not hypothetical: a live `auto` run rendered a round-1 rejection
|
|
83
|
+
* as `▾ ✗ 🔧 run_shell_command(command=git clone …) [error]`.
|
|
84
|
+
*
|
|
85
|
+
* **The glyph and the word carry the distinction, not the colour.** A monochrome terminal — and a
|
|
86
|
+
* user who cannot tell red from orange — must still be able to tell a refused round from a broken
|
|
87
|
+
* command, so `⚠` and the words differ before any tone is applied.
|
|
88
|
+
*
|
|
89
|
+
* **`raterClarification` outranks `isError`, and both are facts.** The call did not run, so
|
|
90
|
+
* LangChain's error status is correct and every reader that grades on it is right to; what this
|
|
91
|
+
* answers is the different question of how to TONE the row. Neither is ever sniffed from the
|
|
92
|
+
* result text — legitimate output may begin with "Error handling…".
|
|
93
|
+
*/
|
|
94
|
+
export declare function toolStatusDisplay(input: Pick<ToolCallDisplayInput, 'isError' | 'raterClarification'>): ToolStatusDisplay;
|
|
53
95
|
/**
|
|
54
96
|
* Tolerant parse of a (possibly partial) streamed args JSON. Mirrors the view-model's
|
|
55
97
|
* defensive posture: a half-streamed or malformed buffer never throws — it returns `null`.
|
|
@@ -98,15 +140,62 @@ export declare function summariseToolCall(name: string, argsText: string | undef
|
|
|
98
140
|
/**
|
|
99
141
|
* The FULL (uncapped) body lines for a call: the registry formatter when one applies, else the
|
|
100
142
|
* shape-based shell formatter, else the generic fallback (live output lines, then the final
|
|
101
|
-
* result — both dim). Every line is secret-redacted. Used by the TUI's
|
|
102
|
-
* with {@link capToolDisplayLines} for the collapsed preview.
|
|
143
|
+
* result — both dim). Every line is secret-redacted and then neutralised. Used by the TUI's
|
|
144
|
+
* EXPANDED panel; cap it with {@link capToolDisplayLines} for the collapsed preview.
|
|
103
145
|
*/
|
|
104
146
|
export declare function buildToolBodyLines(input: ToolCallDisplayInput, secrets?: readonly string[]): ToolDisplayLine[];
|
|
147
|
+
/** The strings the expanded panel paints beside the body, ready to draw. */
|
|
148
|
+
export interface ToolExpansionText {
|
|
149
|
+
/** The streamed args text as one row's content, or `null` when the call carries no args. */
|
|
150
|
+
args: string | null;
|
|
151
|
+
/** The routed notice, one element per row the expansion draws. */
|
|
152
|
+
noticeLines: string[];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* [[TUI-C102]] — the two untrusted strings the EXPANDED tool panel paints OUTSIDE the body: the
|
|
156
|
+
* raw streamed args text and the routed "🔧 Executing …" notice. Neither passes through
|
|
157
|
+
* {@link buildToolBodyLines}, and neither is ours: `argsText` is whatever the model streamed —
|
|
158
|
+
* under prompt injection, attacker-chosen, and for a shell call it is the command itself — and a
|
|
159
|
+
* notice quotes that same command back. Under [[TUI-C99]] this expansion is the route by which a
|
|
160
|
+
* human inspects a call they are being asked to permit, so it gets the treatment the rest of the
|
|
161
|
+
* display path already has.
|
|
162
|
+
*
|
|
163
|
+
* **Both the renderer and the row-count oracle must call this, on the same input.** Neutralised
|
|
164
|
+
* text is WIDER than the raw text it replaces, so a renderer that neutralises beside an estimator
|
|
165
|
+
* that measures the raw string disagree about how many rows the panel occupies — and a row
|
|
166
|
+
* miscount shows as content in the wrong place on screen rather than as an error anywhere. One
|
|
167
|
+
* helper for both sides is what stops them drifting apart again.
|
|
168
|
+
*
|
|
169
|
+
* Same order as everywhere else on this path: **redact the raw text, then neutralise.** A secret
|
|
170
|
+
* literal that carries a control character stops literal-matching the moment that character is
|
|
171
|
+
* rewritten. Redaction is here at all because the collapsed summary above this row already
|
|
172
|
+
* redacts, and an expansion that did not would print, under `/verbose`, the secret the row above
|
|
173
|
+
* it hid.
|
|
174
|
+
*
|
|
175
|
+
* The notice splits through the module's own `toLines`, so a `\r\n` inside a quoted command is one
|
|
176
|
+
* break there too; the args text is a single value and keeps its own newlines as visible `\x0a`,
|
|
177
|
+
* which is what a streamed JSON buffer carrying a real newline actually contains.
|
|
178
|
+
*/
|
|
179
|
+
export declare function buildToolExpansionText(input: {
|
|
180
|
+
argsText?: string;
|
|
181
|
+
notice?: string;
|
|
182
|
+
}, secrets?: readonly string[]): ToolExpansionText;
|
|
105
183
|
/**
|
|
106
184
|
* Apply the canonical render cap: at most `maxLines` lines (each char-capped at
|
|
107
185
|
* {@link TOOL_PREVIEW_LINE_MAX_CHARS} with `…`), plus a dim `… (+N more lines)` overflow
|
|
108
186
|
* marker when anything was cut. The marker line is IN ADDITION to the cap so exactly how much
|
|
109
187
|
* was hidden is always stated (DL-4 transparency).
|
|
188
|
+
*
|
|
189
|
+
* This stays a GENERIC width utility and does not neutralise: it measures a line by what it
|
|
190
|
+
* RENDERS as, so a caller passing genuinely styled text (the renderer's own SGR) gets a cap that
|
|
191
|
+
* counts the columns the user sees rather than the escapes' own bytes.
|
|
192
|
+
*
|
|
193
|
+
* **No production caller passes styled text today.** {@link buildToolPreviewLines} is the only
|
|
194
|
+
* one, and its lines arrive already neutralised from {@link buildToolBodyLines}, so on the tool
|
|
195
|
+
* path there is nothing left to discount. The discount is kept because this is public API — core
|
|
196
|
+
* exports every module — and a width utility that mismeasured styled text would be wrong for any
|
|
197
|
+
* caller that did pass some. It is a property of the utility, not a live requirement of the tool
|
|
198
|
+
* path, and the spec covering it says the same.
|
|
110
199
|
*/
|
|
111
200
|
export declare function capToolDisplayLines(lines: ToolDisplayLine[], maxLines?: number): ToolDisplayLine[];
|
|
112
201
|
/**
|
package/dist/core/toolDisplay.js
CHANGED
|
@@ -23,10 +23,18 @@
|
|
|
23
23
|
* - **Secret redaction reuses the GS2-47 `redactSecrets` lineage** (literal env/config secrets +
|
|
24
24
|
* provider key patterns) — no new redactor. Applied to the params summary and every
|
|
25
25
|
* preview/body line, fail-safe (redact MORE on any error, never leak).
|
|
26
|
+
* - **Untrusted text is NEUTRALISED before it can reach a terminal** ([[TUI-C102]]). A tool
|
|
27
|
+
* result is a file's bytes, a fetched page, an MCP server's response or a command's stdout,
|
|
28
|
+
* and a string is not inert on a terminal: SGR colour plus cursor positioning lets it paint
|
|
29
|
+
* something shaped like gsloth's own approval prompt a few rows from the real one. Every
|
|
30
|
+
* rendered line AND the params summary go through {@link neutralizeUntrustedText} — the same
|
|
31
|
+
* neutraliser `core/shell/framing` gives the approval dialog and the attack banner, reused
|
|
32
|
+
* rather than reimplemented so the two paths cannot come to disagree about what is inert.
|
|
26
33
|
* - **`write_file`/`edit_file` render the change as a diff derived from the tool's ARGS**
|
|
27
34
|
* (added = `added` style/green, removed = `removed` style/red); monochrome keeps the `+`/`-`
|
|
28
35
|
* prefixes so the diff still reads without colour (DL-7 graceful degradation).
|
|
29
36
|
*/
|
|
37
|
+
import { neutralizeToOneLine, neutralizeUntrustedText } from '#src/core/shell/framing.js';
|
|
30
38
|
import { displayWidth, sliceToWidth } from '#src/utils/displayWidth.js';
|
|
31
39
|
import { collectSecretValues, redactText } from '#src/utils/redactSecrets.js';
|
|
32
40
|
import { env } from '#src/utils/systemUtils.js';
|
|
@@ -49,6 +57,37 @@ export const ELLIPSIS = '…';
|
|
|
49
57
|
* before slicing. Derived rather than written as `1` so it stays true of whatever marker is used.
|
|
50
58
|
*/
|
|
51
59
|
export const ELLIPSIS_WIDTH = displayWidth(ELLIPSIS);
|
|
60
|
+
/**
|
|
61
|
+
* [[TUI-C69]] §5.4 — **an intermediate rating rejection is a clarification request, never a
|
|
62
|
+
* failure**, and this is the one place that decides so for every surface.
|
|
63
|
+
*
|
|
64
|
+
* A `destructive` rating at `auto` does not end anything: it goes back to the agent naming what
|
|
65
|
+
* would make the command acceptable (§5.2), and on the happy path the very next round succeeds.
|
|
66
|
+
* Drawn in the same red `✗ … [error]` vocabulary a genuinely failed tool gets, it teaches the user
|
|
67
|
+
* that a working safety mechanism is a malfunction — which is the fastest way to make someone want
|
|
68
|
+
* it switched off. It is measured, not hypothetical: a live `auto` run rendered a round-1 rejection
|
|
69
|
+
* as `▾ ✗ 🔧 run_shell_command(command=git clone …) [error]`.
|
|
70
|
+
*
|
|
71
|
+
* **The glyph and the word carry the distinction, not the colour.** A monochrome terminal — and a
|
|
72
|
+
* user who cannot tell red from orange — must still be able to tell a refused round from a broken
|
|
73
|
+
* command, so `⚠` and the words differ before any tone is applied.
|
|
74
|
+
*
|
|
75
|
+
* **`raterClarification` outranks `isError`, and both are facts.** The call did not run, so
|
|
76
|
+
* LangChain's error status is correct and every reader that grades on it is right to; what this
|
|
77
|
+
* answers is the different question of how to TONE the row. Neither is ever sniffed from the
|
|
78
|
+
* result text — legitimate output may begin with "Error handling…".
|
|
79
|
+
*/
|
|
80
|
+
export function toolStatusDisplay(input) {
|
|
81
|
+
if (input.raterClarification) {
|
|
82
|
+
// **The words name the actor as well as the event.** "clarification requested" alone leaves
|
|
83
|
+
// the reader to guess who asked, and the one thing they must not conclude is that the command
|
|
84
|
+
// was wrong: the auto-rater asked the agent to narrow it, and the argument is still running.
|
|
85
|
+
return { glyph: '⚠', label: 'auto-rater: clarification requested', tone: 'warn' };
|
|
86
|
+
}
|
|
87
|
+
if (input.isError)
|
|
88
|
+
return { glyph: '✗', label: 'error', tone: 'error' };
|
|
89
|
+
return { glyph: '✓', label: 'done', tone: 'success' };
|
|
90
|
+
}
|
|
52
91
|
const FALLBACK_GLYPH = '⚙';
|
|
53
92
|
const FILE_GLYPH = '📁';
|
|
54
93
|
const SHELL_GLYPH = '🔧';
|
|
@@ -115,10 +154,6 @@ export function resetToolDisplaySecretsCacheForTests() {
|
|
|
115
154
|
cachedSecrets = null;
|
|
116
155
|
displayConfig = undefined;
|
|
117
156
|
}
|
|
118
|
-
/** Collapse whitespace runs (incl. newlines) so a value stays a one-line token. */
|
|
119
|
-
function inline(value) {
|
|
120
|
-
return value.replace(/\s+/g, ' ').trim();
|
|
121
|
-
}
|
|
122
157
|
/**
|
|
123
158
|
* Truncate to `max` terminal COLUMNS with the {@link ELLIPSIS} marker, reserving the marker's own
|
|
124
159
|
* width out of the budget. Slicing goes through the shared width primitive: a code-point count
|
|
@@ -137,14 +172,22 @@ function truncate(value, max) {
|
|
|
137
172
|
return sliceToWidth(value, max - ELLIPSIS_WIDTH) + ELLIPSIS;
|
|
138
173
|
}
|
|
139
174
|
/**
|
|
140
|
-
* Render one arg value for the summary: strings
|
|
175
|
+
* Render one arg value for the summary: strings neutralised onto one line + truncated, the rest
|
|
176
|
+
* JSON-ish.
|
|
141
177
|
*
|
|
142
|
-
* ORDER MATTERS (fix-cycle-1 finding): redaction runs BEFORE any
|
|
143
|
-
* first would bisect a literal secret longer than the value cap so it
|
|
144
|
-
* literal-matches — its head would render in the call summary on both surfaces (a
|
|
145
|
-
* leak); whitespace-collapsing first could likewise alter a literal out of matching
|
|
146
|
-
*
|
|
147
|
-
*
|
|
178
|
+
* ORDER MATTERS (fix-cycle-1 finding, extended by [[TUI-C102]]): **redaction runs BEFORE any
|
|
179
|
+
* transformation.** Truncating first would bisect a literal secret longer than the value cap so it
|
|
180
|
+
* no longer literal-matches — its head would render in the call summary on both surfaces (a
|
|
181
|
+
* partial leak); whitespace-collapsing first could likewise alter a literal out of matching; and
|
|
182
|
+
* **neutralising first breaks the same match**, since a secret whose literal carries a control
|
|
183
|
+
* character stops matching the moment that character is rewritten to `\x0b`. So: redact the RAW
|
|
184
|
+
* text, then neutralise onto one line, then truncate (`<redacted>` contains no whitespace, no
|
|
185
|
+
* control characters and is shorter than the cap, so the later steps can never damage the marker).
|
|
186
|
+
*
|
|
187
|
+
* {@link neutralizeToOneLine} is the approval dialog's own helper and does the whitespace collapse
|
|
188
|
+
* this used to do locally — deliberately reused, because a private collapse was exactly how this
|
|
189
|
+
* path came to look tidy while an ESC walked through it: JavaScript's `\s` covers LF, CR and TAB
|
|
190
|
+
* but not ESC, BEL, the C1 range or the bidi overrides.
|
|
148
191
|
*/
|
|
149
192
|
function formatParamValue(value, secrets) {
|
|
150
193
|
let text;
|
|
@@ -162,11 +205,27 @@ function formatParamValue(value, secrets) {
|
|
|
162
205
|
text = String(value);
|
|
163
206
|
}
|
|
164
207
|
}
|
|
165
|
-
return truncate(
|
|
208
|
+
return truncate(neutralizeToOneLine(redactText(text, secrets)), TOOL_PARAM_VALUE_MAX_CHARS);
|
|
166
209
|
}
|
|
167
|
-
/**
|
|
210
|
+
/**
|
|
211
|
+
* Split untrusted text into the lines the body renders, dropping a single trailing newline's
|
|
212
|
+
* phantom empty last element.
|
|
213
|
+
*
|
|
214
|
+
* `\r\n` is ONE break, because that is what a Windows-authored file means by it. A **lone** `\r`
|
|
215
|
+
* is deliberately NOT a break: it is left for {@link neutralizeUntrustedText} to make visible as
|
|
216
|
+
* `\x0d`, since a bare carriage return is the cursor-to-column-0 overwrite trick far more often
|
|
217
|
+
* than it is a line ending, and turning it into a break would hide that it was ever there.
|
|
218
|
+
*
|
|
219
|
+
* That rule is `splitLogicalLines` in `core/shell/framing`, matched deliberately rather than
|
|
220
|
+
* re-decided here. The approval dialog splits the command it frames exactly this way, and this
|
|
221
|
+
* node exists because the tool path and the approval path had come to disagree about what is
|
|
222
|
+
* inert; a splitter that differed would re-open that divergence one layer down. It weakens
|
|
223
|
+
* nothing — the attack is the lone `\r`, which still reaches the neutraliser — while the pair
|
|
224
|
+
* every terminal already draws as one break stops putting a visible `\x0d` on the end of every
|
|
225
|
+
* line of every CRLF-authored file, which is one of the commonest things this product reads.
|
|
226
|
+
*/
|
|
168
227
|
function toLines(text) {
|
|
169
|
-
const lines = text.split('\n');
|
|
228
|
+
const lines = text.replace(/\r\n/gu, '\n').split('\n');
|
|
170
229
|
if (lines.length > 1 && lines[lines.length - 1] === '')
|
|
171
230
|
lines.pop();
|
|
172
231
|
return lines;
|
|
@@ -328,6 +387,10 @@ const TOOL_DISPLAY_REGISTRY = {
|
|
|
328
387
|
},
|
|
329
388
|
run_lint: { glyph: SHELL_GLYPH, formatBody: formatShellBody, shellShaped: true },
|
|
330
389
|
run_build: { glyph: SHELL_GLYPH, formatBody: formatShellBody, shellShaped: true },
|
|
390
|
+
// Dormant, deliberately: the `task` tool went with the deepagents runtime (EXT-114), and nothing
|
|
391
|
+
// emits one until GS2-25 lands the lean subagent primitive. Kept rather than swept because an
|
|
392
|
+
// unregistered name falls back to the generic glyph, so an unused row renders nothing and says
|
|
393
|
+
// nothing to anyone until a producer returns.
|
|
331
394
|
task: { glyph: '🤖', summariseArgs: ['subagent_type', 'description'] },
|
|
332
395
|
};
|
|
333
396
|
/** The registry glyph for a tool name (generic `⚙` when unknown). */
|
|
@@ -355,7 +418,16 @@ export function summariseToolCall(name, argsText, secrets = getDefaultSecrets())
|
|
|
355
418
|
const args = parseToolArgsSafe(argsText);
|
|
356
419
|
if (args === null) {
|
|
357
420
|
const hasRawArgs = !!argsText && argsText.trim().length > 0 && argsText.trim() !== '{}';
|
|
358
|
-
|
|
421
|
+
// [[TUI-C102]] — THIS RETURN RUNS THE SAME PASS AS THE ONE AT THE END, and it is the branch
|
|
422
|
+
// taken most often: a partially streamed args buffer does not parse, so every frame between
|
|
423
|
+
// `tool_start` (which supplies the name) and the final `tool_args` delta renders here, and a
|
|
424
|
+
// call whose args never become valid JSON renders here permanently. What it paints is the
|
|
425
|
+
// tool NAME, which is not ours — an MCP server names its own tools, and under prompt
|
|
426
|
+
// injection the model chooses what to stream. Returning it untreated put raw ANSI on the row
|
|
427
|
+
// [[TUI-C99]] turns into the approval row. Redact first, then neutralise, for the reason
|
|
428
|
+
// spelled out at the main return below; the ellipsis and the `(tool)` fallback are module
|
|
429
|
+
// constants and hold nothing either step can act on.
|
|
430
|
+
return neutralizeUntrustedText(redactText(hasRawArgs ? `${label}(${ELLIPSIS})` : `${label}()`, secrets));
|
|
359
431
|
}
|
|
360
432
|
const entry = TOOL_DISPLAY_REGISTRY[name];
|
|
361
433
|
const keys = entry?.summariseArgs !== undefined
|
|
@@ -370,7 +442,13 @@ export function summariseToolCall(name, argsText, secrets = getDefaultSecrets())
|
|
|
370
442
|
// Redact before the whole-summary cap too, so this truncation can no more bisect a secret
|
|
371
443
|
// out of literal-matching than the per-value one can.
|
|
372
444
|
const inner = truncate(redactText(parts.join(', '), secrets), TOOL_SUMMARY_MAX_CHARS);
|
|
373
|
-
|
|
445
|
+
// [[TUI-C102]] — the values were neutralised one by one above (each needed it before its own
|
|
446
|
+
// width budget could mean anything); this last pass covers the two strings that never went
|
|
447
|
+
// through {@link formatParamValue}: the tool NAME and the arg KEYS. Neither is ours — an MCP
|
|
448
|
+
// server names its own tools, and an unregistered tool's keys are whatever the model streamed.
|
|
449
|
+
// Idempotent over the values, whose escape alphabet (`\`, `x`, `u`, `{`, `}`, hex) holds nothing
|
|
450
|
+
// for it to rewrite.
|
|
451
|
+
return neutralizeUntrustedText(redactText(`${label}(${inner})`, secrets));
|
|
374
452
|
}
|
|
375
453
|
/* ------------------------------------------------------------------------- *
|
|
376
454
|
* Body + preview *
|
|
@@ -378,8 +456,8 @@ export function summariseToolCall(name, argsText, secrets = getDefaultSecrets())
|
|
|
378
456
|
/**
|
|
379
457
|
* The FULL (uncapped) body lines for a call: the registry formatter when one applies, else the
|
|
380
458
|
* shape-based shell formatter, else the generic fallback (live output lines, then the final
|
|
381
|
-
* result — both dim). Every line is secret-redacted. Used by the TUI's
|
|
382
|
-
* with {@link capToolDisplayLines} for the collapsed preview.
|
|
459
|
+
* result — both dim). Every line is secret-redacted and then neutralised. Used by the TUI's
|
|
460
|
+
* EXPANDED panel; cap it with {@link capToolDisplayLines} for the collapsed preview.
|
|
383
461
|
*/
|
|
384
462
|
export function buildToolBodyLines(input, secrets = getDefaultSecrets()) {
|
|
385
463
|
const args = parseToolArgsSafe(input.argsText);
|
|
@@ -399,13 +477,84 @@ export function buildToolBodyLines(input, secrets = getDefaultSecrets()) {
|
|
|
399
477
|
lines.push(...styled(toLines(input.result), 'dim'));
|
|
400
478
|
}
|
|
401
479
|
}
|
|
402
|
-
|
|
480
|
+
// [[TUI-C102]] — THE ORDER OF THESE TWO STEPS, AND OF THE CAP THAT FOLLOWS THEM, IS LOAD-BEARING.
|
|
481
|
+
//
|
|
482
|
+
// 1. REDACT the raw text. A secret literal that carries a control character stops matching the
|
|
483
|
+
// moment that character is rewritten to `\x0b`, so neutralising first would leave the secret
|
|
484
|
+
// on the screen — the same argument {@link formatParamValue} makes about truncating first.
|
|
485
|
+
// 2. NEUTRALISE what redaction returns, so nothing downstream ever holds an escape.
|
|
486
|
+
// 3. CAP last ({@link capToolDisplayLines}, via {@link buildToolPreviewLines}). A neutralised
|
|
487
|
+
// line is WIDER than the raw one — `\x1b[2J` is 8 printable columns where the sequence was 0
|
|
488
|
+
// — and the cap measures a line by what it RENDERS as. Because the escapes are already gone
|
|
489
|
+
// when it looks, the width it measures and the text it slices are the same string. Capping
|
|
490
|
+
// first would measure the raw line, discount escapes that the neutralised text no longer
|
|
491
|
+
// has, and hand back a row that over-runs the terminal it is drawn on.
|
|
492
|
+
//
|
|
493
|
+
// INVARIANT this step relies on: **a line arriving here holds no `\n`.** Neutralisation would
|
|
494
|
+
// rewrite one to a literal `\x0a` and silently collapse multi-line output onto a single row.
|
|
495
|
+
// Every producer was checked: the generic fallback, {@link formatShellBody},
|
|
496
|
+
// {@link formatWriteFileBody} and {@link formatEditFileBody} all split through {@link toLines},
|
|
497
|
+
// and {@link TOOL_DISPLAY_REGISTRY} is module-private, so there is no third-party `formatBody`.
|
|
498
|
+
// A new formatter must split its own output rather than return an embedded newline.
|
|
499
|
+
//
|
|
500
|
+
// OUT OF SCOPE, deliberately: `/debug-dump` (GS2-46) stays an UNSANITIZED archive. Neutralising
|
|
501
|
+
// is about what a TERMINAL does with a string; a dump is written to a file, is read with tools
|
|
502
|
+
// that render bytes as bytes, and exists to reproduce a failure — escaping its contents would
|
|
503
|
+
// destroy the evidence it is collected for. It is redacted for secrets, which is the property
|
|
504
|
+
// that actually travels with a file someone may attach to an issue.
|
|
505
|
+
return lines.map((l) => ({
|
|
506
|
+
...l,
|
|
507
|
+
text: neutralizeUntrustedText(redactText(l.text, secrets)),
|
|
508
|
+
}));
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* [[TUI-C102]] — the two untrusted strings the EXPANDED tool panel paints OUTSIDE the body: the
|
|
512
|
+
* raw streamed args text and the routed "🔧 Executing …" notice. Neither passes through
|
|
513
|
+
* {@link buildToolBodyLines}, and neither is ours: `argsText` is whatever the model streamed —
|
|
514
|
+
* under prompt injection, attacker-chosen, and for a shell call it is the command itself — and a
|
|
515
|
+
* notice quotes that same command back. Under [[TUI-C99]] this expansion is the route by which a
|
|
516
|
+
* human inspects a call they are being asked to permit, so it gets the treatment the rest of the
|
|
517
|
+
* display path already has.
|
|
518
|
+
*
|
|
519
|
+
* **Both the renderer and the row-count oracle must call this, on the same input.** Neutralised
|
|
520
|
+
* text is WIDER than the raw text it replaces, so a renderer that neutralises beside an estimator
|
|
521
|
+
* that measures the raw string disagree about how many rows the panel occupies — and a row
|
|
522
|
+
* miscount shows as content in the wrong place on screen rather than as an error anywhere. One
|
|
523
|
+
* helper for both sides is what stops them drifting apart again.
|
|
524
|
+
*
|
|
525
|
+
* Same order as everywhere else on this path: **redact the raw text, then neutralise.** A secret
|
|
526
|
+
* literal that carries a control character stops literal-matching the moment that character is
|
|
527
|
+
* rewritten. Redaction is here at all because the collapsed summary above this row already
|
|
528
|
+
* redacts, and an expansion that did not would print, under `/verbose`, the secret the row above
|
|
529
|
+
* it hid.
|
|
530
|
+
*
|
|
531
|
+
* The notice splits through the module's own `toLines`, so a `\r\n` inside a quoted command is one
|
|
532
|
+
* break there too; the args text is a single value and keeps its own newlines as visible `\x0a`,
|
|
533
|
+
* which is what a streamed JSON buffer carrying a real newline actually contains.
|
|
534
|
+
*/
|
|
535
|
+
export function buildToolExpansionText(input, secrets = getDefaultSecrets()) {
|
|
536
|
+
const clean = (text) => neutralizeUntrustedText(redactText(text, secrets));
|
|
537
|
+
return {
|
|
538
|
+
args: input.argsText ? clean(input.argsText) : null,
|
|
539
|
+
noticeLines: input.notice ? toLines(input.notice).map(clean) : [],
|
|
540
|
+
};
|
|
403
541
|
}
|
|
404
542
|
/**
|
|
405
543
|
* Apply the canonical render cap: at most `maxLines` lines (each char-capped at
|
|
406
544
|
* {@link TOOL_PREVIEW_LINE_MAX_CHARS} with `…`), plus a dim `… (+N more lines)` overflow
|
|
407
545
|
* marker when anything was cut. The marker line is IN ADDITION to the cap so exactly how much
|
|
408
546
|
* was hidden is always stated (DL-4 transparency).
|
|
547
|
+
*
|
|
548
|
+
* This stays a GENERIC width utility and does not neutralise: it measures a line by what it
|
|
549
|
+
* RENDERS as, so a caller passing genuinely styled text (the renderer's own SGR) gets a cap that
|
|
550
|
+
* counts the columns the user sees rather than the escapes' own bytes.
|
|
551
|
+
*
|
|
552
|
+
* **No production caller passes styled text today.** {@link buildToolPreviewLines} is the only
|
|
553
|
+
* one, and its lines arrive already neutralised from {@link buildToolBodyLines}, so on the tool
|
|
554
|
+
* path there is nothing left to discount. The discount is kept because this is public API — core
|
|
555
|
+
* exports every module — and a width utility that mismeasured styled text would be wrong for any
|
|
556
|
+
* caller that did pass some. It is a property of the utility, not a live requirement of the tool
|
|
557
|
+
* path, and the spec covering it says the same.
|
|
409
558
|
*/
|
|
410
559
|
export function capToolDisplayLines(lines, maxLines = TOOL_OUTPUT_PREVIEW_LINES) {
|
|
411
560
|
const capped = lines.slice(0, maxLines).map((l) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolDisplay.js","sourceRoot":"","sources":["../../src/core/toolDisplay.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"toolDisplay.js","sourceRoot":"","sources":["../../src/core/toolDisplay.ts"],"names":[],"mappings":"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"}
|