@gaunt-sloth/agent 2.0.0-alpha.9 → 2.0.0-beta.0

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 (124) hide show
  1. package/README.md +73 -23
  2. package/cli-acp.js +21 -24
  3. package/dist/builtInToolsConfig.d.ts +17 -3
  4. package/dist/builtInToolsConfig.js +43 -41
  5. package/dist/builtInToolsConfig.js.map +1 -1
  6. package/dist/core/debugCapture.d.ts +7 -49
  7. package/dist/core/debugCapture.js +1 -1
  8. package/dist/core/debugCapture.js.map +1 -1
  9. package/dist/core/resolveAgentFactory.d.ts +10 -9
  10. package/dist/core/resolveAgentFactory.js +11 -12
  11. package/dist/core/resolveAgentFactory.js.map +1 -1
  12. package/dist/index.d.ts +4 -4
  13. package/dist/index.js +7 -5
  14. package/dist/index.js.map +1 -1
  15. package/dist/mcp/OAuthClientProviderImpl.js.map +1 -1
  16. package/dist/mcp/tlsTrust.d.ts +61 -0
  17. package/dist/mcp/tlsTrust.js +109 -0
  18. package/dist/mcp/tlsTrust.js.map +1 -0
  19. package/dist/middleware/binaryContentInjectionMiddleware.d.ts +8 -1
  20. package/dist/middleware/binaryContentInjectionMiddleware.js +11 -2
  21. package/dist/middleware/binaryContentInjectionMiddleware.js.map +1 -1
  22. package/dist/middleware/frontendImageInjectionMiddleware.d.ts +107 -0
  23. package/dist/middleware/frontendImageInjectionMiddleware.js +167 -0
  24. package/dist/middleware/frontendImageInjectionMiddleware.js.map +1 -0
  25. package/dist/middleware/registry.js +49 -1
  26. package/dist/middleware/registry.js.map +1 -1
  27. package/dist/middleware/types.d.ts +16 -2
  28. package/dist/modules/a2a/A2AClientWrapper.d.ts +56 -1
  29. package/dist/modules/a2a/A2AClientWrapper.js +131 -31
  30. package/dist/modules/a2a/A2AClientWrapper.js.map +1 -1
  31. package/dist/modules/acp/acpAgentApp.d.ts +57 -0
  32. package/dist/modules/acp/acpAgentApp.js +378 -0
  33. package/dist/modules/acp/acpAgentApp.js.map +1 -0
  34. package/dist/modules/acp/acpAgentAppV1.d.ts +52 -0
  35. package/dist/modules/acp/acpAgentAppV1.js +307 -0
  36. package/dist/modules/acp/acpAgentAppV1.js.map +1 -0
  37. package/dist/modules/acp/acpCommon.d.ts +167 -0
  38. package/dist/modules/acp/acpCommon.js +282 -0
  39. package/dist/modules/acp/acpCommon.js.map +1 -0
  40. package/dist/modules/acp/acpPermissions.d.ts +65 -0
  41. package/dist/modules/acp/acpPermissions.js +162 -0
  42. package/dist/modules/acp/acpPermissions.js.map +1 -0
  43. package/dist/modules/acp/acpPermissionsV1.d.ts +45 -0
  44. package/dist/modules/acp/acpPermissionsV1.js +110 -0
  45. package/dist/modules/acp/acpPermissionsV1.js.map +1 -0
  46. package/dist/modules/acp/acpRouter.d.ts +41 -0
  47. package/dist/modules/acp/acpRouter.js +48 -0
  48. package/dist/modules/acp/acpRouter.js.map +1 -0
  49. package/dist/modules/acp/acpStdio.d.ts +47 -0
  50. package/dist/modules/acp/acpStdio.js +71 -0
  51. package/dist/modules/acp/acpStdio.js.map +1 -0
  52. package/dist/modules/acp/acpToolCalls.d.ts +93 -0
  53. package/dist/modules/acp/acpToolCalls.js +193 -0
  54. package/dist/modules/acp/acpToolCalls.js.map +1 -0
  55. package/dist/modules/acp/acpUpdates.d.ts +48 -0
  56. package/dist/modules/acp/acpUpdates.js +142 -0
  57. package/dist/modules/acp/acpUpdates.js.map +1 -0
  58. package/dist/modules/acp/acpUpdatesV1.d.ts +61 -0
  59. package/dist/modules/acp/acpUpdatesV1.js +162 -0
  60. package/dist/modules/acp/acpUpdatesV1.js.map +1 -0
  61. package/dist/modules/apiAgUiModule.d.ts +87 -0
  62. package/dist/modules/apiAgUiModule.js +193 -28
  63. package/dist/modules/apiAgUiModule.js.map +1 -1
  64. package/dist/modules/interactiveSessionModule.js +497 -51
  65. package/dist/modules/interactiveSessionModule.js.map +1 -1
  66. package/dist/modules/slashCommands.d.ts +582 -0
  67. package/dist/modules/slashCommands.js +1001 -0
  68. package/dist/modules/slashCommands.js.map +1 -0
  69. package/dist/resolvers.js +119 -9
  70. package/dist/resolvers.js.map +1 -1
  71. package/dist/tools/GthCustomToolkit.js +95 -11
  72. package/dist/tools/GthCustomToolkit.js.map +1 -1
  73. package/dist/tools/GthDevToolkit.d.ts +8 -5
  74. package/dist/tools/GthDevToolkit.js +89 -43
  75. package/dist/tools/GthDevToolkit.js.map +1 -1
  76. package/dist/tools/GthFileSystemToolkit.d.ts +63 -0
  77. package/dist/tools/GthFileSystemToolkit.js +506 -105
  78. package/dist/tools/GthFileSystemToolkit.js.map +1 -1
  79. package/dist/tools/McpResourceTool.d.ts +31 -0
  80. package/dist/tools/McpResourceTool.js +106 -0
  81. package/dist/tools/McpResourceTool.js.map +1 -0
  82. package/dist/tools/gthChecklistTool.d.ts +30 -0
  83. package/dist/tools/gthChecklistTool.js +80 -0
  84. package/dist/tools/gthChecklistTool.js.map +1 -0
  85. package/dist/tools/gthGrepTool.d.ts +54 -0
  86. package/dist/tools/gthGrepTool.js +482 -0
  87. package/dist/tools/gthGrepTool.js.map +1 -0
  88. package/dist/tools/shell/env.js +1 -1
  89. package/dist/tools/shell/env.js.map +1 -1
  90. package/dist/tools/shell/outputBuffer.js.map +1 -1
  91. package/dist/tools/shell/workDir.d.ts +1 -10
  92. package/dist/tools/shell/workDir.js +10 -36
  93. package/dist/tools/shell/workDir.js.map +1 -1
  94. package/dist/utils/mcpAuthError.d.ts +36 -0
  95. package/dist/utils/mcpAuthError.js +89 -0
  96. package/dist/utils/mcpAuthError.js.map +1 -0
  97. package/package.json +13 -13
  98. package/dist/core/GthDeepAgent.d.ts +0 -181
  99. package/dist/core/GthDeepAgent.js +0 -682
  100. package/dist/core/GthDeepAgent.js.map +0 -1
  101. package/dist/core/deepAgentPermissions.d.ts +0 -115
  102. package/dist/core/deepAgentPermissions.js +0 -282
  103. package/dist/core/deepAgentPermissions.js.map +0 -1
  104. package/dist/core/gthAcpServer.d.ts +0 -27
  105. package/dist/core/gthAcpServer.js +0 -82
  106. package/dist/core/gthAcpServer.js.map +0 -1
  107. package/dist/core/gthDeepAgentFactory.d.ts +0 -8
  108. package/dist/core/gthDeepAgentFactory.js +0 -9
  109. package/dist/core/gthDeepAgentFactory.js.map +0 -1
  110. package/dist/modules/acpModule.d.ts +0 -40
  111. package/dist/modules/acpModule.js +0 -78
  112. package/dist/modules/acpModule.js.map +0 -1
  113. package/dist/tools/shell/allowlist.d.ts +0 -11
  114. package/dist/tools/shell/allowlist.js +0 -12
  115. package/dist/tools/shell/allowlist.js.map +0 -1
  116. package/dist/tools/shell/arity.d.ts +0 -11
  117. package/dist/tools/shell/arity.js +0 -12
  118. package/dist/tools/shell/arity.js.map +0 -1
  119. package/dist/tools/shell/hardline.d.ts +0 -15
  120. package/dist/tools/shell/hardline.js +0 -88
  121. package/dist/tools/shell/hardline.js.map +0 -1
  122. package/dist/tools/shell/normalize.d.ts +0 -10
  123. package/dist/tools/shell/normalize.js +0 -11
  124. package/dist/tools/shell/normalize.js.map +0 -1
@@ -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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"}
@@ -0,0 +1,582 @@
1
+ /**
2
+ * Pure, React-free slash-command layer shared by BOTH interactive surfaces (GS2-8): the Ink
3
+ * TUI (`packages/app/src/tui/`, which re-exports this module) and the readline `--no-tui`
4
+ * session (`interactiveSessionModule.ts` in this package). One registry, one source of truth —
5
+ * a command added here appears in `/help` on both surfaces automatically.
6
+ *
7
+ * Mirrors how the TUI's `viewModel.ts` keeps its fold logic out of the components: the registry
8
+ * and the parse/dispatch helpers here are unit-testable in isolation, and each surface is the
9
+ * only place that turns the resulting {@link SlashCommandResult} into its own state / side
10
+ * effects (the TUI's `<App>` clears the transcript / pushes notices / quits; the readline loop
11
+ * prints notices and degrades TUI-only effects with a clear "needs the TUI" message).
12
+ *
13
+ * The registry is a plain array so later layers (e.g. extension-registered commands, EXT-5)
14
+ * can append more entries via {@link createCommandRegistry} without this module changing.
15
+ */
16
+ import type { ApprovalRung, McpAnnotationTrustChange, McpAnnotationTrustView, ResolvedApprovals, ToolAnnotationHint } from '@gaunt-sloth/core/config.js';
17
+ import type { ApprovalGrant } from '@gaunt-sloth/core/core/approvals/grants.js';
18
+ /**
19
+ * TUI-C63 — one advertised key binding: the keys as the user's keyboard spells them, and what
20
+ * they do. The keys are a display string, not a parsed chord — this module never matches on it.
21
+ */
22
+ export interface KeyBinding {
23
+ /** e.g. `PgUp / PgDn`. Named for keyboards that lack the key where that differs (DL-5, DL-7). */
24
+ keys: string;
25
+ /** What the keys do, in one short phrase. */
26
+ description: string;
27
+ }
28
+ /**
29
+ * TUI-C63 — bindings grouped by the context they are reachable in. The bindings are modal (Esc
30
+ * alone means three different things depending on what owns the keyboard), so a flat list of every
31
+ * bound key would mislead; the group is what makes each line true.
32
+ */
33
+ export interface KeyBindingGroup {
34
+ /** The context the group's bindings apply in, e.g. `Scrolling the conversation`. */
35
+ title: string;
36
+ bindings: readonly KeyBinding[];
37
+ }
38
+ /** Read-only session context a command may surface (e.g. `/status`, `/model`). */
39
+ export interface SlashCommandContext {
40
+ mode: string;
41
+ modelDisplayName: string;
42
+ /** Count of committed turns so far (for `/help`-style introspection if needed). */
43
+ turnCount: number;
44
+ /** Whether tool-call panels currently show their full args/result (drives `/verbose` copy). */
45
+ toolsExpanded: boolean;
46
+ /** Whether the docked debug panel is currently shown (drives `/debug` copy). */
47
+ debugVisible: boolean;
48
+ /**
49
+ * TUI-C37 — whether terminal mouse reporting is currently on (drives `/mouse` copy). Undefined on
50
+ * surfaces that have no mouse layer at all, where `/mouse` reports itself unavailable rather than
51
+ * claiming a state it cannot change.
52
+ */
53
+ mouseEnabled?: boolean;
54
+ /**
55
+ * Pre-rendered, secret-free summary lines of the resolved config, surfaced read-only by
56
+ * `/config` (GS2-1). The App builds these once from the resolved config (see
57
+ * {@link formatConfigSummary}); omitted where no config is loaded (e.g. the fixture agent).
58
+ */
59
+ configSummary?: string[];
60
+ /**
61
+ * TUI-C19 — the actual config-validation warnings (unknown keys / deprecated names) captured at
62
+ * load, so `/config` can render the DETAILS the standing "config has problems" advisory line
63
+ * points at. Empty/omitted ⇒ `/config` shows only the resolved summary (a clean config).
64
+ */
65
+ configWarnings?: string[];
66
+ /**
67
+ * GS2-7 (B20) / GS2-19 — pre-rendered recent-conversation lines for `/history`. The App builds
68
+ * these fail-soft from the local history store (see `formatConversationList`); omitted when no
69
+ * store is available (history never enabled / DB missing), in which case `/history` shows an
70
+ * "unavailable" notice.
71
+ */
72
+ historySummary?: string[];
73
+ /**
74
+ * GS2-7 (B20) — pre-rendered analytics lines for `/insights` (see `formatInsightsSummary`),
75
+ * built fail-soft by the App; omitted when no store is available.
76
+ */
77
+ insightsSummary?: string[];
78
+ /**
79
+ * GS2-7 (B20) — a fail-soft search provider for `/search <query>`, bound by the App to the local
80
+ * history store (returns already-formatted result lines). Injected (rather than the command
81
+ * touching the DB) so the registry stays pure and testable with a stub. Omitted when no store is
82
+ * available, in which case `/search` reports that history is unavailable.
83
+ */
84
+ historySearch?: (query: string) => string[];
85
+ /**
86
+ * TUI-C18 — the reasoning text of each committed assistant turn, in transcript order (index 0 =
87
+ * turn 1). `''` for a turn that produced no thinking layer. Drives `/reasoning`, which reprints a
88
+ * committed turn's thinking. The App builds this from the transcript; omitted (empty) where there
89
+ * are no committed turns yet.
90
+ */
91
+ turnReasonings?: string[];
92
+ /**
93
+ * GS2-46 — the live transcript (all committed turns, tool calls + results) and the resolved
94
+ * config, for `/debug-dump`. Kept opaque (`unknown`) so this pure module stays decoupled from
95
+ * the TUI's `TranscriptItem` type and `GthConfig` — forwarded as-is into the injected
96
+ * `dumpDebugSession` writer (see {@link DebugDumpInput}). Omitted where no session state is
97
+ * available (e.g. the fixture agent), in which case `/debug-dump` reports itself unavailable.
98
+ */
99
+ transcript?: unknown[];
100
+ /** GS2-46 — see {@link SlashCommandContext.transcript}. */
101
+ resolvedConfig?: unknown;
102
+ /**
103
+ * GS2-46 — fs-writing implementation for `/debug-dump`: writes an UNSANITIZED archive
104
+ * (transcript, resolved config, env/version info, the in-memory debugLog ring buffer, and
105
+ * best-effort git repo state) to `~/.gsloth/debug-dumps/<timestamp>/` and returns its path.
106
+ * Injected by the App the same way `historySearch` is (GS2-7), so this module stays pure and
107
+ * testable with a fake — the real writer (`packages/core/src/utils/debugDump.ts`) does the
108
+ * actual I/O. Omitted ⇒ `/debug-dump` reports itself unavailable (fixture / no session state).
109
+ */
110
+ dumpDebugSession?: (input: DebugDumpInput) => {
111
+ archiveDir: string;
112
+ };
113
+ /**
114
+ * TUI-C63 — the key bindings THIS surface actually has, grouped by context, appended to `/help`.
115
+ *
116
+ * Supplied by the surface rather than held as a constant here, because this registry is shared
117
+ * (GS2-8) and the two surfaces have different keyboards: the full-screen TUI owns its conversation
118
+ * region and every key that scrolls it, while the readline session has no Ink components, no mouse
119
+ * layer and the terminal's own scrollback — so wheel, PgUp/PgDn, Ctrl+Home/Ctrl+End and Ctrl+T
120
+ * mean nothing there. Readline passes nothing and its `/help` stays the command list alone.
121
+ * GS2-87: the divergence is deliberate and stated, never accidental.
122
+ */
123
+ keyBindings?: readonly KeyBindingGroup[];
124
+ }
125
+ /**
126
+ * GS2-46 — the input `/debug-dump` assembles from context and hands to the injected
127
+ * `dumpDebugSession` writer. `transcript`/`config` are opaque to this pure module (the real
128
+ * writer, not this file, interprets them); `modelDisplayName` mirrors the field already on
129
+ * {@link SlashCommandContext}.
130
+ */
131
+ export interface DebugDumpInput {
132
+ transcript: unknown[];
133
+ config: unknown;
134
+ modelDisplayName: string;
135
+ /**
136
+ * GS2-47 — whether the writer should redact secrets from every artifact. Resolved by
137
+ * {@link resolveDebugDumpRedact} from the config (`debugDump.redact`, default ON) and the
138
+ * `--unsafe-no-redact` command flag, then threaded straight through to `writeDebugDump`.
139
+ */
140
+ redact: boolean;
141
+ }
142
+ /**
143
+ * The subset of the resolved config `/config` surfaces. Structurally typed (not the full
144
+ * `GthConfig`) so this pure module stays decoupled from the config types; the caller passes the
145
+ * real resolved config, which is a superset.
146
+ */
147
+ export interface ConfigSummaryInput {
148
+ modelDisplayName?: string;
149
+ agent?: {
150
+ backend?: string;
151
+ };
152
+ filesystem?: unknown;
153
+ streamOutput?: boolean;
154
+ useColour?: boolean;
155
+ consoleLevel?: unknown;
156
+ commands?: Record<string, unknown>;
157
+ }
158
+ /**
159
+ * Build the compact, read-only `/config` summary (GS2-1): a handful of the most orienting
160
+ * resolved-config fields, one per line, with a pointer to `gth config print` for the full view.
161
+ * Pure and secret-free — it only reads non-sensitive scalar fields (never API keys / the live
162
+ * llm instance). Used by the App to fill {@link SlashCommandContext.configSummary}.
163
+ *
164
+ * CFG-25 — `filesystem` is a precedence-picked per-command field (GS2-60), so the panel prints the
165
+ * EFFECTIVE value for the running `command`, read from `config.commands[command].filesystem` —
166
+ * where the GS2-60 resolution already baked the correct 4-layer precedence — falling back to the
167
+ * top-level value, exactly the read `getEffectiveConfig` performs (no precedence re-derived here).
168
+ * When the effective and top-level values differ, both are shown
169
+ * (`Filesystem: all (code; top-level: none)`) so the top-level default can never understate what
170
+ * the session can actually do. Of the other precedence-picked fields
171
+ * (`builtInTools`/`allowedTools`/`binaryFormats`), none are printed by this panel, so none can
172
+ * misreport the same way.
173
+ */
174
+ export declare function formatConfigSummary(config: ConfigSummaryInput, command?: string): string[];
175
+ /**
176
+ * The `/config` notice, from the pre-rendered summary lines (or an unavailable fallback).
177
+ *
178
+ * TUI-C19 — when config-validation `warnings` are present (unknown keys / deprecated names), they
179
+ * are rendered FIRST, as the details the standing "config has problems" advisory line points at,
180
+ * then a blank spacer, then the resolved summary. A clean config (no warnings) reads exactly as
181
+ * before. Tone flips to `warn` (yellow) while there are warnings so the block reads as caution.
182
+ */
183
+ export declare function configNotice(summary: string[] | undefined, warnings?: string[]): SlashCommandNotice;
184
+ /** The `/history` notice (GS2-7): recent recorded sessions, or an "unavailable" fallback. */
185
+ export declare function historyNotice(summary: string[] | undefined): SlashCommandNotice;
186
+ /** The `/insights` notice (GS2-7): local analytics summary, or an "unavailable" fallback. */
187
+ export declare function insightsNotice(summary: string[] | undefined): SlashCommandNotice;
188
+ /**
189
+ * The `/search` notice (GS2-7). With no query it prints usage; otherwise it runs the injected
190
+ * fail-soft {@link SlashCommandContext.historySearch} provider and renders its result lines. When
191
+ * no provider is bound (no store), it reports history as unavailable.
192
+ */
193
+ export declare function searchNotice(args: string[], search: ((query: string) => string[]) | undefined): SlashCommandNotice;
194
+ /**
195
+ * A structured, noticeable command-feedback block (TUI-C14): a title that states WHAT happened
196
+ * plus body lines explaining HOW it affects the user. The component renders these via
197
+ * `<CommandNotice>` so every command gives consistent, explanatory feedback.
198
+ */
199
+ export interface SlashCommandNotice {
200
+ title: string;
201
+ lines: string[];
202
+ /** Title tone; defaults to 'info' (cyan). Use 'warn' (yellow) for unknown commands. */
203
+ tone?: 'info' | 'warn';
204
+ }
205
+ /**
206
+ * The effects a dispatched command can request. The component interprets these; the command
207
+ * itself stays pure (no React, no I/O) so it is trivially testable.
208
+ */
209
+ export interface SlashCommandResult {
210
+ /**
211
+ * A structured notice to commit into the transcript (the command's user-visible feedback).
212
+ * Preferred over `message` for all commands so feedback is consistent and noticeable (TUI-C14).
213
+ */
214
+ notice?: SlashCommandNotice;
215
+ /** A terse system line (incidental/error output); commands prefer `notice`. */
216
+ message?: string;
217
+ /** Level for the system line; defaults to 'info'. */
218
+ level?: string;
219
+ /** When true, the component clears the transcript. */
220
+ clearTranscript?: boolean;
221
+ /** When true, the component toggles the docked debug panel (subagents + debug views). */
222
+ toggleDebug?: boolean;
223
+ /** When true, the component toggles tool-call panels between collapsed and expanded. */
224
+ toggleTools?: boolean;
225
+ /**
226
+ * TUI-C37 — the state `/mouse` asks the surface to move terminal mouse reporting to. The command
227
+ * stays pure (it cannot write escape sequences), so the App applies it and owns the actual
228
+ * enable/disable, the same division `/approvals` uses for the runner's posture.
229
+ */
230
+ setMouse?: boolean;
231
+ /**
232
+ * CFG-27 — a requested action from `/approvals`. `{ show: true }` asks the surface to DISPLAY
233
+ * the current posture; `{ rung }` asks it to switch the session to that rung. The command itself
234
+ * stays pure — it cannot read the runner's posture — so the surface owns the apply + the
235
+ * resulting-state notice (mirroring how `/verbose` / `/debug` defer their state-aware copy to
236
+ * the App).
237
+ *
238
+ * There is deliberately NO `toggle` action: with five ordered rungs a flip has no honest
239
+ * meaning, which is also why `/auto-approve` and `/bypass-approve` were retired with the
240
+ * three-mode vocabulary that gave them their names.
241
+ *
242
+ * EXT-70 adds `{ trust }` — start or stop believing specific annotation hints from one MCP
243
+ * server (§4.7.1). It takes the same route for the same reason: the command cannot read or write
244
+ * the runner's posture, so it states the request and the surface applies it and reports what
245
+ * landed.
246
+ */
247
+ approvals?: {
248
+ show: true;
249
+ } | {
250
+ rung: ApprovalRung;
251
+ } | {
252
+ trust: McpTrustRequest;
253
+ };
254
+ /**
255
+ * TUI-C18 — a committed turn's thinking to REPRINT into the transcript (the `/reasoning` command).
256
+ * Recall rather than retro-mutation: a fresh block reusing the TUI-C15 `💭`/gutter styling appears
257
+ * at the bottom of the conversation, where the user is looking, instead of changing a turn they
258
+ * have scrolled away from. The App turns this into a `reasoning` transcript item; the command stays
259
+ * pure (it resolves the target from `turnReasonings`). Absent when the command instead returns a
260
+ * friendly `notice` (no reasoning / out-of-range).
261
+ */
262
+ reprintReasoning?: {
263
+ reasoning: string;
264
+ turnNumber: number;
265
+ };
266
+ /** When true, the component quits the app (runs `onExit`). */
267
+ exit?: boolean;
268
+ }
269
+ /** A single registered slash command. `run` is pure: context in, result out. */
270
+ export interface SlashCommand {
271
+ /** The name without the leading slash, e.g. `help`. Matched case-insensitively. */
272
+ name: string;
273
+ /** One-line description shown by `/help`. */
274
+ description: string;
275
+ /**
276
+ * EXT-12 — whether this command may be dispatched WHILE a turn is streaming ("during
277
+ * inference"). Defaults to false: most commands are idle-only. The read-only / session-toggle
278
+ * commands (e.g. `/approvals`, `/verbose`, `/debug`, `/help`, `/model`) set this so the user
279
+ * can change the approval mode or inspect state mid-turn without interrupting the run. Commands that
280
+ * mutate the transcript or thread (`/clear`) or end the session (`/exit`) stay idle-only.
281
+ */
282
+ availableDuringRun?: boolean;
283
+ run(ctx: SlashCommandContext, args: string[]): SlashCommandResult;
284
+ }
285
+ /** Parsed shape of a `/...` line. `null` for plain (non-slash) input. */
286
+ export interface ParsedSlashCommand {
287
+ name: string;
288
+ args: string[];
289
+ }
290
+ /**
291
+ * Parse a raw input line into a slash command, or `null` if it is not one. A line is a slash
292
+ * command iff its first non-whitespace character is `/` AND no further `/` appears after the
293
+ * leading one (GS2-8, Mari's dogfood addendum): a pasted filesystem path like
294
+ * `/usr/home/bob/test.md` contains later slashes, so it falls through as ordinary prompt text
295
+ * instead of being swallowed as an unknown command. The name is lower-cased; remaining
296
+ * whitespace-separated tokens are the args.
297
+ */
298
+ export declare function parseSlashCommand(input: string): ParsedSlashCommand | null;
299
+ /**
300
+ * TUI-C10 — the discovery-menu trigger test. The Ink `<PromptInput>` shows the slash-command menu
301
+ * while the user is typing a bare command: the raw input is a menu query iff its first character is
302
+ * `/` and it contains no whitespace yet (once a space is typed the user is entering args, so the
303
+ * menu closes and normal dispatch takes over). Returns the lower-cased query AFTER the slash (so a
304
+ * bare `/` yields `''` = "show everything"), or `null` when the input is not a menu trigger.
305
+ *
306
+ * Kept pure and next to the registry (like {@link parseSlashCommand}) so the menu's show/hide and
307
+ * filter logic is unit-testable without React.
308
+ *
309
+ * GS2-8 — mirrors {@link parseSlashCommand}'s `/`-vs-path heuristic: input with a later `/`
310
+ * (a pasted path like `/usr/bin`) is not a command, so it never triggers the menu either.
311
+ */
312
+ export declare function slashMenuQuery(input: string): string | null;
313
+ /**
314
+ * TUI-C10 — filter the registry down to the commands that match a menu query, most-relevant first.
315
+ * Prefix matches (the name starts with the query) rank above looser substring matches; within each
316
+ * bucket the registry's own order is preserved (so extension-registered commands — appended to the
317
+ * array — naturally sort after the built-ins). An empty query returns the whole registry, so a bare
318
+ * `/` lists every command including any the extensions added (never a hardcoded list).
319
+ *
320
+ * Pure: takes the registry the caller already built via {@link createCommandRegistry}, so the menu
321
+ * automatically reflects extension commands without this layer knowing they exist.
322
+ */
323
+ export declare function filterSlashCommands(registry: SlashCommand[], query: string): SlashCommand[];
324
+ /**
325
+ * The notice for the tool-detail toggle, given the RESULTING (post-toggle) state. Shared by the
326
+ * `/verbose` command (GS2-8 rename of `/tools`) and the Ctrl+T key handler so the copy
327
+ * is single-sourced (TUI-C14).
328
+ */
329
+ export declare function toolsToggleNotice(expanded: boolean): SlashCommandNotice;
330
+ /**
331
+ * The notice for the debug-panel toggle, given the RESULTING (post-toggle) state. Shared so the
332
+ * command reports exactly the state the component will apply.
333
+ */
334
+ export declare function debugToggleNotice(visible: boolean): SlashCommandNotice;
335
+ /**
336
+ * CFG-27 — the notice for a landed approvals RUNG, given the RESULTING (post-apply) posture.
337
+ * Shared so every surface reports exactly the state that was applied, and so the copy can never
338
+ * drift from what the gate actually does.
339
+ *
340
+ * The body of each notice is §10's description, **verbatim** — the one place the ladder is
341
+ * explained to the user, so it must not be paraphrased per surface. §10 rule 4 also fixes the
342
+ * label: the display spelling with spaces, never the kebab-case identifier.
343
+ *
344
+ * `bypass` is the only warn-toned one: it is the single rung with no gate at all. Note what is
345
+ * NOT here — the hardline floor. §8.1 forbids advertising it: descriptions name only protections
346
+ * the user can inspect and extend, which is the deny list.
347
+ */
348
+ /**
349
+ * TUI-C37 — feedback for `/mouse`, describing the state the session has LANDED on.
350
+ *
351
+ * The selection hint is repeated on every "on" notice rather than shown once at launch, because the
352
+ * moment a user reaches for `/mouse` is exactly the moment they are trying to copy something and
353
+ * finding that dragging no longer selects. Telling them there and then is the difference between a
354
+ * fixed problem and a filed bug.
355
+ */
356
+ export declare function mouseToggleNotice(enabled: boolean): SlashCommandNotice;
357
+ /** TUI-C37 — `/mouse` on a surface with no mouse layer (the plain readline session, the fixture). */
358
+ export declare function mouseUnavailableNotice(): SlashCommandNotice;
359
+ /**
360
+ * TUI-C37 — parse `/mouse [on|off]`. No argument means "toggle", which is what a bare command name
361
+ * usually means; `null` marks an argument that is neither, so the caller can say so rather than
362
+ * guess. `resolve` needs the current state only for the toggle case.
363
+ */
364
+ export declare function parseMouseArg(args: string[], current: boolean): boolean | null;
365
+ export declare function approvalsRungNotice(approvals: ResolvedApprovals): SlashCommandNotice;
366
+ /**
367
+ * The first sentence of a mode's description, for the one-line forms (the picker rows and the usage
368
+ * hint). Cut at the sentence boundary rather than truncated, so a row never ends mid-clause.
369
+ *
370
+ * **A sentence ends at `.`, `?` or `!`.** The copy this shortens is ordinary prose, and a helper
371
+ * that knows only the period renders a question as `Really?.` and hands back BOTH sentences of
372
+ * `Ready? Then go.` — the whole description in a row sized for one line.
373
+ *
374
+ * A terminator only ends the sentence when a space follows it and no dot precedes it, so an
375
+ * ellipsis reads as the pause it is instead of three sentence boundaries.
376
+ *
377
+ * **A description that is already one sentence keeps its own terminator rather than gaining a
378
+ * second.** Nothing was consumed, so it arrives already terminated and appending unconditionally
379
+ * would render `No gate..`. Every surface showing one line of a mode's copy goes through here, so
380
+ * this is the only place that has to know any of it.
381
+ */
382
+ export declare function firstSentence(description: string): string;
383
+ /** CFG-39 — one selectable row of the `/approvals` picker. */
384
+ export interface ApprovalPostureChoice {
385
+ /** The mode this row sets. */
386
+ rung: ApprovalRung;
387
+ /** Display spelling ({@link APPROVAL_RUNG_LABELS}) — never the config identifier (§9.1). */
388
+ label: string;
389
+ /** The mode's own one-line description, from {@link APPROVAL_RUNG_DESCRIPTIONS}. */
390
+ description: string;
391
+ /** Whether the session is on this mode right now. */
392
+ current: boolean;
393
+ }
394
+ /**
395
+ * CFG-39 — **the picker's rows**: the four postures, in ladder order, each carrying its own copy.
396
+ *
397
+ * **The strings come from {@link APPROVAL_RUNG_DESCRIPTIONS}, never from the menu.** Six surfaces
398
+ * describe these modes; a picker that authored its own text would become the seventh and the one
399
+ * that contradicts the rest. Whoever owns that constant owns this copy too, with no second edit.
400
+ *
401
+ * `write` has no row — it is a modifier of Manual rather than a fifth posture — but it stays
402
+ * settable via `/approvals write`. When the session IS on `write`, no row is marked `current`,
403
+ * which is correct: the caller reports the live mode from its own title rather than letting a
404
+ * picker row claim the session is on Manual when it is not.
405
+ */
406
+ export declare function approvalPostureChoices(current: ApprovalRung): ApprovalPostureChoice[];
407
+ /**
408
+ * CFG-39 — the picker as TEXT: the selectable list printed in place of the interactive rows. The
409
+ * readline session is what prints it, and that is where every `--no-tui`, piped / non-TTY, CI or
410
+ * missing-Ink run lands.
411
+ *
412
+ * **A surface with no slash-command layer renders nothing from here.** The ACP and AG-UI servers
413
+ * have none, so `/approvals` reaches them in no form at all and this list appears on neither. Do
414
+ * not read a server's tool-approval gate as this list arriving there: that gate asks about a single
415
+ * pending call in the protocol's own request shape and carries no posture copy.
416
+ *
417
+ * The same {@link approvalPostureChoices} the TTY picker renders, so the two cannot list different
418
+ * modes or describe them differently — the text fallback is a rendering of the picker, not a
419
+ * second implementation of it.
420
+ */
421
+ export declare function approvalPostureLines(current: ApprovalRung): string[];
422
+ /**
423
+ * CFG-27 — the `/approvals` DISPLAY: the mode and its description, the rater profile in the two
424
+ * rated modes, and the allow/deny list sizes. Pure: the surface reads the live posture from the
425
+ * runner and hands it in.
426
+ *
427
+ * CFG-39 — it also carries the selectable list, so `/approvals` with no argument answers "which
428
+ * mode am I on?" and "what else could I be on?" in one place on EVERY surface. On a TTY the TUI
429
+ * renders {@link approvalPostureChoices} as an interactive picker instead; this is what everything
430
+ * else shows.
431
+ *
432
+ * `always: undefined` means the persisted store has not been loaded, and is rendered `—` rather
433
+ * than a misleading `0` — a display must not create the store in order to count it.
434
+ */
435
+ export declare function approvalsStatusNotice(approvals: ResolvedApprovals, allowlist: {
436
+ session: number;
437
+ always: number | undefined;
438
+ }, deny?: readonly string[], grants?: readonly ApprovalGrant[], trust?: McpAnnotationTrustView, options?: {
439
+ /**
440
+ * CFG-39 — set by a surface that is about to render {@link approvalPostureChoices} as an
441
+ * interactive picker, so the same four modes are not also printed as text right above it.
442
+ *
443
+ * **Opt-OUT, not opt-in**, and that direction is deliberate: every surface that says nothing
444
+ * gets the full text answer, so a new non-TTY surface cannot ship a `/approvals` that silently
445
+ * omits the list. Only the TUI, which demonstrably renders the rows another way, turns it off.
446
+ */
447
+ interactive?: boolean;
448
+ }): SlashCommandNotice;
449
+ /** EXT-70 §4.7.1 — a request to start or stop believing specific hints from one server. */
450
+ export interface McpTrustRequest {
451
+ /** §4.7.5 — the user's own `mcpServers` config key, case-sensitive. */
452
+ server: string;
453
+ /** The hints this request moves, in canonical spelling. Never empty. */
454
+ hints: ToolAnnotationHint[];
455
+ /** `true` to believe them, `false` to stop. */
456
+ believe: boolean;
457
+ }
458
+ /** Something wrong with a `/approvals trust` invocation that the command explains rather than guesses at. */
459
+ export type ApprovalsUsageProblem = {
460
+ kind: 'trust-missing-server';
461
+ believe: boolean;
462
+ } | {
463
+ kind: 'trust-missing-hints';
464
+ believe: boolean;
465
+ server: string;
466
+ } | {
467
+ kind: 'unknown-hint';
468
+ believe: boolean;
469
+ token: string;
470
+ };
471
+ /** What `/approvals` resolved to, or `null` when the first argument names nothing it knows. */
472
+ export type ApprovalsAction = {
473
+ show: true;
474
+ } | {
475
+ rung: ApprovalRung;
476
+ } | {
477
+ trust: McpTrustRequest;
478
+ } | {
479
+ usage: ApprovalsUsageProblem;
480
+ };
481
+ /**
482
+ * CFG-27/EXT-70 — parse the `/approvals` argument: no arg SHOWS the current posture; any of the
483
+ * five mode names switches to it; `trust` / `untrust` move which of a server's annotation hints are
484
+ * believed (§4.7.1). Returns `null` for an unrecognized first argument so the command renders a
485
+ * usage hint instead of guessing.
486
+ *
487
+ * **All five names are accepted, not the four the picker offers.** `write` is a modifier of
488
+ * `manual` rather than a posture of its own, so it leaves quick access — but it stays fully
489
+ * settable here and in config, which is the whole of what "demoted" means.
490
+ *
491
+ * The retired `read-only` / `auto-safe` / `full-auto` / `ask` spellings are NOT accepted as
492
+ * aliases — 2.0 is a deliberate break, and a silent alias would leave the user believing in a
493
+ * vocabulary the gate no longer has. They are named, with their replacements, by the config-layer
494
+ * error in `RETIRED_APPROVAL_MODES`.
495
+ *
496
+ * **Only the subcommand token is lower-cased.** A server key is the user's own `mcpServers` key
497
+ * (§4.7.5) and is case-sensitive, so folding it would name a different server — one that believes
498
+ * nothing, silently, while the notice reported success. A hint is matched case-insensitively
499
+ * against the fixed vocabulary and echoed back in its **canonical** spelling, so `readonlyhint`
500
+ * resolves rather than vanishing, and what lands in the policy is the name the derivation reads.
501
+ */
502
+ export declare function parseApprovalsArg(args: string[]): ApprovalsAction | null;
503
+ /**
504
+ * EXT-70 §4.7.1 — usage copy for a `/approvals trust` invocation that named no server, no hint, or
505
+ * a hint that is not one of the four. Each says what is missing and shows the vocabulary, because
506
+ * the hint names are camelCase MCP identifiers nobody guesses.
507
+ */
508
+ export declare function approvalsTrustUsageNotice(problem: ApprovalsUsageProblem): SlashCommandNotice;
509
+ /**
510
+ * EXT-70 §4.7.1/§4.7.4 — the notice for a landed `/approvals trust` or `/approvals untrust`, built
511
+ * from what the runner RETURNS rather than from what was asked for, so the copy can only describe
512
+ * the trust actually in force.
513
+ *
514
+ * **The withdrawal half states the consequence where the withdrawal happens.** Ceasing to believe a
515
+ * hint pushes it back to the MCP fail-closed default, and for `readOnlyHint`, `openWorldHint` and
516
+ * `destructiveHint` that is a *weakening* — so §4.7.4 will withdraw that server's saved approvals at
517
+ * the next call, with its own notice. That is the correct direction and is not suppressed; what
518
+ * would be wrong is for the user to meet it as a surprise three turns later. `idempotentHint` is the
519
+ * one hint no weakening move names, so withdrawing it invalidates nothing and the line is absent —
520
+ * which is why the line is driven by the runner's `weakening` list rather than by "was anything
521
+ * withdrawn".
522
+ */
523
+ export declare function approvalsTrustNotice(change: McpAnnotationTrustChange): SlashCommandNotice;
524
+ /**
525
+ * TUI-C18 — resolve a `/reasoning` invocation against the committed turns' reasoning (in transcript
526
+ * order, index 0 = turn 1). Pure, so the whole selection + friendly-notice logic is unit-testable
527
+ * without React:
528
+ *
529
+ * - **no arg** → the most recent turn that actually recorded thinking; if none exists, a friendly
530
+ * info notice (nothing to show).
531
+ * - **`<n>`** → turn `n` (1-based). A non-positive / non-integer / out-of-range `n` → a warn notice;
532
+ * a valid turn that recorded no thinking → an info notice. Otherwise a `reprintReasoning` request.
533
+ *
534
+ * The App renders a `reprintReasoning` result as a fresh reasoning block (reusing the TUI-C15
535
+ * styling) and a `notice` result via the shared `CommandNotice`.
536
+ */
537
+ export declare function resolveReasoning(reasonings: string[], args: string[]): SlashCommandResult;
538
+ /**
539
+ * GS2-47 — resolve whether the `/debug-dump` archive should be redacted. ON by default; opt out via
540
+ * the config (`debugDump.redact: false`) OR the `--unsafe-no-redact` command flag. Any uncertainty
541
+ * (no/non-object config) defaults to redacting — fail safe. `resolvedConfig` is opaque here, so this
542
+ * reads the flag structurally without depending on the `GthConfig` type.
543
+ */
544
+ export declare function resolveDebugDumpRedact(resolvedConfig: unknown, args: string[]): boolean;
545
+ /**
546
+ * The `/debug-dump` success notice (a standard 3-line CommandNotice — DL-1: no command reads as
547
+ * "does nothing"). GS2-47 flips the default to REDACTED: when redaction ran (the default) the note
548
+ * is softened ("secrets redacted; review before sharing") and points at the opt-out. When the user
549
+ * opted OUT (raw archive) it is the loud, impossible-to-miss UNSANITIZED warning. Colour follows
550
+ * DL-8 / the tone rule in maintenance/ux-guidelines.md: the safe, redacted default is normal
551
+ * feedback (no `tone` ⇒ info), while the raw opt-out is caution and so `tone: 'warn'` (yellow) —
552
+ * mirroring how `approvalsModeNotice` reserves yellow for the dangerous (gate-off) state. Redaction is
553
+ * best-effort pattern-based, so even the softened note still says review-before-sharing.
554
+ */
555
+ export declare function debugDumpNotice(archiveDir: string, redacted: boolean): SlashCommandNotice;
556
+ /**
557
+ * Build the default command registry. Returns a fresh array each call so callers may push
558
+ * extension commands onto it (EXT-5) without sharing mutable module state.
559
+ */
560
+ export declare function createCommandRegistry(): SlashCommand[];
561
+ /**
562
+ * Build the `/help` notice from a registry: one body line per command (`/name — description`),
563
+ * followed by the calling surface's own key bindings when it supplies any (TUI-C63).
564
+ *
565
+ * The bindings are a PARAMETER, never a constant in this module: `/help` is the reference for the
566
+ * surface the reader is looking at, and a key that surface does not have is worse than no entry at
567
+ * all. A surface that passes nothing gets exactly the command list, byte for byte.
568
+ */
569
+ export declare function formatHelp(registry: SlashCommand[], keyBindings?: readonly KeyBindingGroup[]): SlashCommandNotice;
570
+ /**
571
+ * Dispatch a parsed command against a registry. Unknown commands return a friendly hint
572
+ * rather than throwing, so the component can render it as a system line and never forward
573
+ * the text to the model.
574
+ *
575
+ * EXT-12 — when `options.duringRun` is set (a turn is streaming), commands that are not marked
576
+ * {@link SlashCommand.availableDuringRun} are refused with a friendly notice rather than run,
577
+ * so mid-turn input can only reach the safe, non-mutating commands (`/approvals`, `/verbose`,
578
+ * `/debug`, …). `/help` is always allowed.
579
+ */
580
+ export declare function dispatchSlashCommand(parsed: ParsedSlashCommand, registry: SlashCommand[], ctx: SlashCommandContext, options?: {
581
+ duringRun?: boolean;
582
+ }): SlashCommandResult;