@gaunt-sloth/agent 2.0.0-alpha.1 → 2.0.0-alpha.11

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 (73) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +9 -0
  3. package/dist/builtInToolsConfig.d.ts +5 -0
  4. package/dist/builtInToolsConfig.js +16 -2
  5. package/dist/builtInToolsConfig.js.map +1 -1
  6. package/dist/core/GthDeepAgent.d.ts +72 -13
  7. package/dist/core/GthDeepAgent.js +308 -122
  8. package/dist/core/GthDeepAgent.js.map +1 -1
  9. package/dist/core/debugCapture.d.ts +8 -49
  10. package/dist/core/debugCapture.js +1 -1
  11. package/dist/core/debugCapture.js.map +1 -1
  12. package/dist/core/deepAgentPermissions.d.ts +72 -12
  13. package/dist/core/deepAgentPermissions.js +191 -29
  14. package/dist/core/deepAgentPermissions.js.map +1 -1
  15. package/dist/core/gthAcpServer.js +11 -0
  16. package/dist/core/gthAcpServer.js.map +1 -1
  17. package/dist/core/gthDeepAgentFactory.d.ts +3 -0
  18. package/dist/core/gthDeepAgentFactory.js +9 -1
  19. package/dist/core/gthDeepAgentFactory.js.map +1 -1
  20. package/dist/core/resolveAgentFactory.d.ts +14 -0
  21. package/dist/core/resolveAgentFactory.js +18 -0
  22. package/dist/core/resolveAgentFactory.js.map +1 -0
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.js +1 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/mcp/OAuthClientProviderImpl.js +2 -2
  27. package/dist/mcp/OAuthClientProviderImpl.js.map +1 -1
  28. package/dist/middleware/registry.d.ts +1 -1
  29. package/dist/middleware/registry.js +1 -1
  30. package/dist/middleware/types.d.ts +1 -1
  31. package/dist/middleware/types.js +1 -1
  32. package/dist/modules/acpModule.d.ts +5 -2
  33. package/dist/modules/acpModule.js +13 -2
  34. package/dist/modules/acpModule.js.map +1 -1
  35. package/dist/modules/apiAgUiModule.js +48 -16
  36. package/dist/modules/apiAgUiModule.js.map +1 -1
  37. package/dist/modules/interactiveSessionModule.js +140 -7
  38. package/dist/modules/interactiveSessionModule.js.map +1 -1
  39. package/dist/resolvers.js +70 -7
  40. package/dist/resolvers.js.map +1 -1
  41. package/dist/tools/GthDevToolkit.d.ts +45 -1
  42. package/dist/tools/GthDevToolkit.js +204 -17
  43. package/dist/tools/GthDevToolkit.js.map +1 -1
  44. package/dist/tools/gthChecklistTool.d.ts +30 -0
  45. package/dist/tools/gthChecklistTool.js +81 -0
  46. package/dist/tools/gthChecklistTool.js.map +1 -0
  47. package/dist/tools/shell/allowlist.d.ts +11 -0
  48. package/dist/tools/shell/allowlist.js +12 -0
  49. package/dist/tools/shell/allowlist.js.map +1 -0
  50. package/dist/tools/shell/arity.d.ts +11 -0
  51. package/dist/tools/shell/arity.js +12 -0
  52. package/dist/tools/shell/arity.js.map +1 -0
  53. package/dist/tools/shell/env.d.ts +22 -0
  54. package/dist/tools/shell/env.js +110 -0
  55. package/dist/tools/shell/env.js.map +1 -0
  56. package/dist/tools/shell/hardline.d.ts +15 -0
  57. package/dist/tools/shell/hardline.js +88 -0
  58. package/dist/tools/shell/hardline.js.map +1 -0
  59. package/dist/tools/shell/normalize.d.ts +10 -0
  60. package/dist/tools/shell/normalize.js +11 -0
  61. package/dist/tools/shell/normalize.js.map +1 -0
  62. package/dist/tools/shell/outputBuffer.d.ts +53 -0
  63. package/dist/tools/shell/outputBuffer.js +157 -0
  64. package/dist/tools/shell/outputBuffer.js.map +1 -0
  65. package/dist/tools/shell/workDir.d.ts +11 -0
  66. package/dist/tools/shell/workDir.js +45 -0
  67. package/dist/tools/shell/workDir.js.map +1 -0
  68. package/dist/utils/mcpAuthError.d.ts +36 -0
  69. package/dist/utils/mcpAuthError.js +89 -0
  70. package/dist/utils/mcpAuthError.js.map +1 -0
  71. package/dist/utils/mcpUtils.js +16 -0
  72. package/dist/utils/mcpUtils.js.map +1 -1
  73. package/package.json +14 -10
@@ -1,12 +1,39 @@
1
+ import { isShellToolEnabled } from '@gaunt-sloth/core/config.js';
1
2
  import { GthAbstractAgent } from '@gaunt-sloth/core/core/GthAbstractAgent.js';
2
3
  import { StatusLevel } from '@gaunt-sloth/core/core/types.js';
3
4
  import { debugLog, debugLogObject } from '@gaunt-sloth/core/utils/debugUtils.js';
4
5
  import { buildSystemMessages, formatToolCalls, readChatPrompt, readCodePrompt, readExecPrompt, } from '@gaunt-sloth/core/utils/llmUtils.js';
5
6
  import { getCurrentWorkDir } from '@gaunt-sloth/core/utils/systemUtils.js';
7
+ // GS2-27: the OS/shell-dialect and real-cwd notes are backend-agnostic (both backends expose
8
+ // run_shell_command and run on the real-fs cwd), so their canonical source moved to core so the
9
+ // lean backend composes them too. Imported here for GthDeepAgent.init()'s code-mode composition and
10
+ // re-exported so existing importers of this module keep working.
11
+ import { appendOsShellNote, appendCwdNote, appendMcpServerInstructionsNote, } from '@gaunt-sloth/core/utils/systemPromptNotes.js';
12
+ export { appendOsShellNote, appendCwdNote, OS_SHELL_GUIDANCE, } from '@gaunt-sloth/core/utils/systemPromptNotes.js';
6
13
  import { AIMessage, ToolMessage } from '@langchain/core/messages';
14
+ import { GraphInterrupt } from '@langchain/langgraph';
7
15
  import { createMiddleware } from 'langchain';
8
16
  import { createDeepAgent, FilesystemBackend } from 'deepagents';
9
- import { buildPermissions, FILESYSTEM_TOOL_NAMES, } from '#src/core/deepAgentPermissions.js';
17
+ import { buildPermissions, FILESYSTEM_TOOL_NAMES, guardFilesystemBackend, } from '#src/core/deepAgentPermissions.js';
18
+ import { extractDebugRequestExtras } from '#src/core/debugCapture.js';
19
+ // Re-export so existing importers of this module (extractDebugRequestExtras.spec) keep working
20
+ // now that the implementation lives in @gaunt-sloth/core.
21
+ export { extractDebugRequestExtras } from '#src/core/debugCapture.js';
22
+ import { ShellCommandFailedError } from '#src/tools/GthDevToolkit.js';
23
+ /**
24
+ * EXT-16: decide whether the deepagents filesystem backend must run in virtualMode.
25
+ *
26
+ * deepagents' permission layer (`validatePath`) requires POSIX `/`-rooted glob paths, and its
27
+ * fs tools hand the SAME model-supplied path string to both the permission check and the native
28
+ * `path.resolve`/`fs` backend. On Windows a real cwd is `D:\...`, which can satisfy neither side
29
+ * as one string, so the EXT-13 real-path sandbox throws `Error: path must be absolute` on every
30
+ * turn and the agent hangs. The precise trigger is "the real cwd is not POSIX-rooted", so we key
31
+ * off that directly (not just `win32`): when true, run virtualMode (cwd→`/`) with virtual
32
+ * permissions — the pre-EXT-13 known-good behavior. POSIX keeps the EXT-13 real-path namespace.
33
+ */
34
+ function shouldUseVirtualFs() {
35
+ return !getCurrentWorkDir().startsWith('/');
36
+ }
10
37
  /**
11
38
  * Deep agent: builds a `createDeepAgent` graph (deepagents). All run/stream/event
12
39
  * plumbing lives in {@link GthAbstractAgent}; this class only knows how to construct
@@ -18,7 +45,10 @@ import { buildPermissions, FILESYSTEM_TOOL_NAMES, } from '#src/core/deepAgentPer
18
45
  * {@link FilesystemBackend}. gsloth's `.aiignore` + `filesystem` config are mapped
19
46
  * onto deepagents `permissions` (see {@link buildPermissions}). Any resolved tool
20
47
  * that reuses a deepagents filesystem-tool name is therefore superseded and dropped
21
- * (`createDeepAgent` would otherwise throw on the collision).
48
+ * (`createDeepAgent` would otherwise throw on the collision). EXT-14: the
49
+ * `FilesystemBackend` itself is wrapped with {@link guardFilesystemBackend} before it
50
+ * reaches `createDeepAgent`, adding a realpath (symlink-resolved) containment check the
51
+ * permission globs alone can't provide.
22
52
  * - todos / subagents / summarization come from deepagents' standard middleware.
23
53
  *
24
54
  * The transport-agnostic param assembly lives in {@link buildDeepAgentParams} so the ACP
@@ -26,13 +56,8 @@ import { buildPermissions, FILESYSTEM_TOOL_NAMES, } from '#src/core/deepAgentPer
26
56
  * middleware hardening without re-running `createDeepAgent` locally.
27
57
  */
28
58
  export class GthDeepAgent extends GthAbstractAgent {
29
- /**
30
- * Opt-in debug sink for the TUI `/debug` panel. Set AFTER {@link init} via
31
- * `runner.getAgent()`; read lazily inside the `wrapModelCall` middleware so that when it
32
- * is `undefined` (the normal path) the middleware is a transparent pass-through. Never
33
- * touched by the lean agent or the AG-UI server, so those contracts are unchanged.
34
- */
35
- debugCapture;
59
+ // `debugCapture` (the opt-in TUI `/debug` sink) now lives on the shared GthAbstractAgent base
60
+ // so the lean backend supports it too; the wrapModelCall capture middleware below reads it.
36
61
  async init(command, configIn, checkpointer) {
37
62
  const params = await this.buildDeepAgentParams(command, configIn);
38
63
  // Runner-path only: surface requested tool calls to the console. This is intentionally
@@ -83,32 +108,105 @@ export class GthDeepAgent extends GthAbstractAgent {
83
108
  return response;
84
109
  },
85
110
  });
86
- const middleware = [...params.middleware, toolCallStatusMiddleware, debugCaptureMiddleware];
111
+ // EXT-16: whether the deepagents fs backend runs in virtualMode. deepagents' permission layer
112
+ // requires POSIX `/`-rooted paths, so a Windows real cwd (`D:\...`) can't be expressed as a
113
+ // permission glob and the EXT-13 real-path mode hangs there (`Error: path must be absolute`).
114
+ // When the real cwd isn't POSIX-rooted, fall back to virtualMode (cwd→`/`) with virtual
115
+ // permissions — the pre-EXT-13 known-good Windows behavior. Computed here because the EXT-22 S1
116
+ // middleware (below), the backend, and the systemPrompt gate (further down) all key off it.
117
+ const useVirtualFs = shouldUseVirtualFs();
118
+ // EXT-22 (S1): last-word path-namespace correction. Appends the shared guidance as a trailing
119
+ // system-message block ONLY in code + virtualMode (where the fs virtual `/` root and the
120
+ // shell's real-OS paths diverge); a transparent pass-through otherwise. Added LAST in the
121
+ // middleware array so, being the innermost wrapModelCall, its block lands AFTER deepagents'
122
+ // "All file paths must start with a /." line (see handoff/spike-systemmessage-ordering.md).
123
+ const pathNamespaceCorrectionMiddleware = createPathNamespaceCorrectionMiddleware(this.command === 'code' && useVirtualFs);
124
+ const middleware = [
125
+ ...params.middleware,
126
+ toolCallStatusMiddleware,
127
+ debugCaptureMiddleware,
128
+ pathNamespaceCorrectionMiddleware,
129
+ ];
87
130
  this.statusUpdate(StatusLevel.INFO, `Loaded middleware: ${middleware.map((m) => m.name).join(', ')}`);
88
- // Default: a virtual-root sandbox anchored at cwd (absolute paths / `..` cannot escape).
89
- // `--allow-dir` (config.allowDirs) opts into widening: drop virtualMode so the listed real
90
- // directories are reachable, and rely on the permission allow-rules (built in
91
- // buildDeepAgentParams) to constrain access to cwd + those dirs. This removes a guardrail,
92
- // so it is announced loudly by the exec command and surfaced here in the status log.
131
+ // EXT-13: the backend always runs in REAL-path mode (virtualMode off) so the deepagents fs
132
+ // tools and the EXT-9 run_shell_command tool share ONE path namespace real absolute paths
133
+ // rooted at cwd. Containment is enforced by the permission allow/deny globs built in
134
+ // buildDeepAgentParams (default: allow cwd/**, deny /**), which match what virtualMode used to
135
+ // give for free (see deepAgentPermissions + the EXT-13 symlink/`..` parity tests), PLUS the
136
+ // EXT-14 realpath guard wrapped around the backend below (closes the intermediate-symlinked-
137
+ // directory gap those lexical globs alone can't catch).
138
+ // `--allow-dir` (config.allowDirs) further widens those allow-rules to reach extra real dirs;
139
+ // it removes a guardrail, so it is announced loudly by the exec command and surfaced here.
93
140
  const allowDirs = this.config?.allowDirs;
94
141
  const widenFs = Array.isArray(allowDirs) && allowDirs.length > 0;
95
142
  if (widenFs) {
96
- this.statusUpdate(StatusLevel.WARNING, `Filesystem sandbox widened beyond cwd (--allow-dir): ${allowDirs.join(', ')}`);
143
+ this.statusUpdate(StatusLevel.WARNING, `Filesystem sandbox widened beyond cwd (--allow-dir): ${allowDirs.join(', ')}` +
144
+ (useVirtualFs
145
+ ? ' — note: on this platform the sandbox runs in virtual mode, so widening beyond cwd is not applied.'
146
+ : ''));
97
147
  }
98
- const backend = new FilesystemBackend({
148
+ // EXT-14: layer the realpath containment guard around the backend deepagents' fs middleware
149
+ // (main agent AND every subagent — they all share this one `backend` reference, see
150
+ // guardFilesystemBackend's doc comment) reads/writes through. Closes the intermediate-
151
+ // symlinked-directory escape that the lexical allow/deny globs alone cannot catch.
152
+ const backend = guardFilesystemBackend(new FilesystemBackend({
99
153
  rootDir: getCurrentWorkDir(),
100
- virtualMode: !widenFs,
154
+ virtualMode: useVirtualFs,
155
+ }), {
156
+ cwd: getCurrentWorkDir(),
157
+ virtual: useVirtualFs,
158
+ allowDirs: widenFs ? allowDirs : undefined,
101
159
  });
160
+ // EXT-13 (part b): on the local-runner code path the model used to be told nothing about
161
+ // where it is, so it assumed `/` was cwd and fed `/`-rooted paths to the real-fs shell. Now
162
+ // the backend uses real absolute paths (above), so inject the dynamic real cwd + path model
163
+ // into the prompt the model actually receives. Code mode only — the surface with full fs +
164
+ // shell access; the ACP transport keeps virtualMode and re-roots per session, so this
165
+ // real-path note must NOT leak there (which is why it lives in init(), not the
166
+ // transport-agnostic buildDeepAgentParams).
167
+ // In virtualMode (EXT-16, Windows) the real-cwd note must NOT be injected — it would mislabel
168
+ // the namespace (the fs tools' `/` is the virtual root, not the real cwd). Instead, EXT-22 (S2)
169
+ // injects the virtualMode path-namespace note so the model is told EARLY that the fs virtual
170
+ // `/` root and run_shell_command's real-OS paths differ (the S1 middleware repeats it as the
171
+ // authoritative last word after deepagents' `/`-rooted line). Non-code paths get neither.
172
+ // EXT-26: after the cwd/virtual-cwd note, append the OS + shell-dialect note so the model is
173
+ // told its host OS and which shell run_shell_command spawns (cmd.exe on Windows, /bin/sh on
174
+ // POSIX). This is ORTHOGONAL to the path-namespace notes above (those say WHERE it is; this
175
+ // says WHAT shell it speaks) and applies in BOTH code-mode branches, independent of
176
+ // virtualMode — the shell dialect matters on every platform. Non-code paths get nothing new.
177
+ const codeNotesPrompt = this.command === 'code'
178
+ ? appendOsShellNote(useVirtualFs
179
+ ? appendVirtualCwdNote(params.systemPrompt)
180
+ : appendCwdNote(params.systemPrompt, getCurrentWorkDir()))
181
+ : params.systemPrompt;
182
+ // EXT-32: inject the connected MCP servers' discovery `instructions` (captured by the resolver
183
+ // during buildDeepAgentParams' resolveTools call, above) into the prompt — fenced + per-server-
184
+ // labelled as untrusted server-provided context. Mode-independent (MCP tools load in every
185
+ // mode). This mirrors the lean backend's GthLangChainAgent seam so both backends compose the
186
+ // same shared note (GS2-27 shared-path parity). Lives in init() like the cwd note, so the ACP
187
+ // buildDeepAgentParams entry is intentionally unaffected. Empty capture adds nothing.
188
+ // When tools are disabled, buildDeepAgentParams skips resolveTools (no MCP contact), so a REUSED
189
+ // resolver could still hold a prior run's capture — gate on toolsDisabled (recomputed from the
190
+ // effective config buildDeepAgentParams set on `this.config`) so no stale instructions leak.
191
+ const deepToolsDisabled = Array.isArray(this.config?.allowedTools) && this.config.allowedTools.length === 0;
192
+ const mcpInstructions = deepToolsDisabled
193
+ ? []
194
+ : (this.resolvers?.getMcpServerInstructions?.() ?? []);
195
+ const systemPrompt = appendMcpServerInstructionsNote(codeNotesPrompt, mcpInstructions);
102
196
  this.agent = createDeepAgent({
103
197
  model: params.model,
104
198
  tools: params.tools,
105
199
  // gsloth's composed prompt, combined ADDITIVELY by deepagents with its base + fs prompts
106
200
  // into a single system message (avoids the two-system-message Anthropic rejection).
107
- systemPrompt: params.systemPrompt,
201
+ systemPrompt,
108
202
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
203
  middleware: middleware,
110
204
  backend,
111
205
  permissions: params.permissions,
206
+ // Per-tool human-in-the-loop gating (e.g. run_shell_command confirmation). When set,
207
+ // deepagents installs humanInTheLoopMiddleware so a matching tool call suspends the graph
208
+ // for approval; `undefined` (the default, and under yolo) leaves every tool ungated.
209
+ interruptOn: params.interruptOn,
112
210
  checkpointer,
113
211
  });
114
212
  debugLog('Deep agent created successfully');
@@ -202,11 +300,20 @@ export class GthDeepAgent extends GthAbstractAgent {
202
300
  }
203
301
  return true;
204
302
  });
205
- // Soften deepagents' fail-hard filesystem permission denials. By default a denied
206
- // read/write THROWS, which aborts the whole run; wrap tool calls so a denial becomes
207
- // a recoverable ToolMessage instead, letting the model continue and report it. This
208
- // preserves gsloth's recoverable-denial UX (the old GthFileSystemToolkit returned a
209
- // message rather than throwing).
303
+ // Soften deepagents' fail-hard filesystem tool throws. By default the permission layer
304
+ // THROWS on both a denied read/write AND on a malformed path the model supplied a relative
305
+ // path, a `..`/`~` segment, or an empty string (deepagents' validatePath, run BEFORE the
306
+ // permission check in enforcePermission). Any of these aborts the WHOLE run. On the AG-UI
307
+ // transport that throw propagates out of streamWithEvents into the run handler's catch, which
308
+ // emits RUN_ERROR and ends the response WITHOUT a terminal RUN_FINISHED — and since AG-UI's
309
+ // protocol makes RUN_ERROR terminal ("no further events can be sent"), a consumer waiting for
310
+ // RUN_FINISHED hangs (EXT-24). Wrap tool calls so each of these becomes a recoverable error
311
+ // ToolMessage instead, letting the model observe the mistake, retry with a good path, and
312
+ // finish the run normally (reaching RUN_FINISHED). This preserves gsloth's recoverable-denial
313
+ // UX (the old GthFileSystemToolkit returned a message rather than throwing). Only these known
314
+ // fs path/permission messages are caught; every other throw (GraphInterrupt from a client-tool
315
+ // interrupt stub, AbortError on client disconnect, unexpected errors) is rethrown untouched so
316
+ // control-flow and genuine failures still surface.
210
317
  const fsDenialSoftening = createMiddleware({
211
318
  name: 'GthDeepFsDenialSoftening',
212
319
  wrapToolCall: async (request, handler) => {
@@ -214,9 +321,24 @@ export class GthDeepAgent extends GthAbstractAgent {
214
321
  return await handler(request);
215
322
  }
216
323
  catch (e) {
324
+ // EXT-25: rethrow control-flow throws BY TYPE, BEFORE the message regex below. A
325
+ // GraphInterrupt (a client-tool interrupt() suspending the graph for HITL tool
326
+ // approval) and an AbortError (caller cancellation) must ALWAYS propagate so the graph
327
+ // suspends / cancels — never be converted into a benign ToolMessage. Mirrors the guard
328
+ // in GthAbstractAgent (error.name checks + GraphInterrupt instanceof). Today these
329
+ // survive only because their messages happen not to match the regex; guarding by type
330
+ // stops a future regex broadening from silently swallowing the HITL suspend.
331
+ if (e instanceof GraphInterrupt ||
332
+ e?.name === 'GraphInterrupt' ||
333
+ e?.name === 'AbortError') {
334
+ throw e;
335
+ }
217
336
  const message = e instanceof Error ? e.message : String(e);
218
- if (/permission denied for (read|write)/i.test(message)) {
219
- debugLog(`Softened fs permission denial into a ToolMessage: ${message}`);
337
+ // deepagents fs enforcement throws (middleware/fs.ts enforcePermission +
338
+ // permissions/enforce.ts validatePath): a permission denial, or a path that is
339
+ // relative / contains ".." or "~" / is empty. All are recoverable model-input errors.
340
+ if (/permission denied for (read|write)|path must (be absolute|not contain|be a non-empty string)/i.test(message)) {
341
+ debugLog(`Softened fs tool throw into a ToolMessage: ${message}`);
220
342
  return new ToolMessage({
221
343
  content: message,
222
344
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -228,10 +350,44 @@ export class GthDeepAgent extends GthAbstractAgent {
228
350
  }
229
351
  },
230
352
  });
231
- // fsDenialSoftening first so it is the outermost wrapToolCall it must see the throw
232
- // from deepagents' permission-enforcing fs tools. The console-bound tool-call-status
233
- // middleware is NOT added here (see GthDeepAgentParams.middleware); the runner appends it.
234
- const middleware = [fsDenialSoftening, ...configuredMiddleware];
353
+ // EXT-20: sibling of fsDenialSoftening for the run_* (dev/shell) tools. GthDevToolkit's
354
+ // executeCommand now THROWS a ShellCommandFailedError on a non-zero exit or a timeout-kill
355
+ // (instead of resolving with the failure text), so the tool result no longer misreports
356
+ // status:'success' (✓). Catch it here and return an error ToolMessage that PRESERVES the full
357
+ // stdout/stderr body — the model's observation is unchanged except that status flips to
358
+ // 'error', which drives the ✗ (isError) glyph (GthAbstractAgent maps status==='error' →
359
+ // isError). Returning a ToolMessage (rather than rethrowing) also means the approved-then-failed
360
+ // command does NOT trigger a retry loop — it is a normal, observed tool result.
361
+ const shellExitSoftening = createMiddleware({
362
+ name: 'GthDeepShellExitSoftening',
363
+ wrapToolCall: async (request, handler) => {
364
+ try {
365
+ return await handler(request);
366
+ }
367
+ catch (e) {
368
+ if (e instanceof ShellCommandFailedError) {
369
+ debugLog(`Softened shell/dev command failure (exit ${e.exitCode ?? 'timeout'}) into an ` +
370
+ `error ToolMessage for '${e.command}'`);
371
+ return new ToolMessage({
372
+ content: e.output,
373
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
374
+ tool_call_id: request.toolCall?.id ?? '',
375
+ status: 'error',
376
+ });
377
+ }
378
+ throw e;
379
+ }
380
+ },
381
+ });
382
+ // fsDenialSoftening first so it is the outermost wrapToolCall — it must see the throw from
383
+ // deepagents' permission-enforcing fs tools. shellExitSoftening sits right after it (still
384
+ // outboard of any user-configured middleware, so it always sees the raw ShellCommandFailedError
385
+ // throw before a user wrapToolCall could transform it). Order between the two softeners is not
386
+ // load-bearing: they catch DISJOINT conditions (a permission-denied regex vs an
387
+ // `instanceof ShellCommandFailedError`) and each rethrows what it doesn't recognize, so neither
388
+ // can swallow the other. The console-bound tool-call-status middleware is NOT added here (see
389
+ // GthDeepAgentParams.middleware); the runner appends it.
390
+ const middleware = [fsDenialSoftening, shellExitSoftening, ...configuredMiddleware];
235
391
  // Map gsloth's .aiignore + filesystem mode onto deepagents permission rules. When
236
392
  // `--allow-dir` widens the sandbox, the backend runs without virtualMode, so paths are REAL
237
393
  // absolute paths: constrain read+write to cwd + the allowed dirs (everything else denied),
@@ -242,7 +398,10 @@ export class GthDeepAgent extends GthAbstractAgent {
242
398
  allowDirs: Array.isArray(this.config.allowDirs) && this.config.allowDirs.length > 0
243
399
  ? this.config.allowDirs
244
400
  : undefined,
245
- });
401
+ },
402
+ // EXT-16: build virtual (`/`-rooted) permission rules when the backend will run in
403
+ // virtualMode (Windows), matching the FilesystemBackend created in init().
404
+ shouldUseVirtualFs());
246
405
  debugLogObject('Filesystem permissions', permissions);
247
406
  // Compose gsloth's system prompt (backstory + guidelines + per-command mode prompt +
248
407
  // system prompt) so identity profiles (Gaunt Sloth, sorcerer, fisher-alt, …) and
@@ -258,111 +417,138 @@ export class GthDeepAgent extends GthAbstractAgent {
258
417
  : readChatPrompt(this.config);
259
418
  const systemMessages = buildSystemMessages(this.config, modePrompt);
260
419
  const systemPrompt = typeof systemMessages[0]?.content === 'string' ? systemMessages[0].content : undefined;
420
+ // Gate the opt-in run_shell_command tool behind a per-command approval interrupt. The tool
421
+ // is only emitted (by GthDevToolkit, via builtInToolsConfig) when its devTools.shell flag is
422
+ // set; mirror the same per-command devTools resolution here so the interrupt is wired only
423
+ // when the tool actually exists.
424
+ const devTools = this.getEffectiveDevToolsConfig();
425
+ // EXT-12 — pass the active command so the absent-config default (shell ON in `code`)
426
+ // is applied consistently with where the tool is actually emitted (GthDevToolkit).
427
+ const shellEnabled = isShellToolEnabled(devTools, this.command);
428
+ // EXT-12 — auto-approve (shellYolo) interplay with gating:
429
+ // • In interactive `code` mode we KEEP the tool gated even when shellYolo pre-enables
430
+ // auto-approval, so the runner's session flag governs it and `/auto-approve off` can
431
+ // restore the per-command prompt mid-session. The runner seeds that flag ON from
432
+ // shellYolo (see GthAgentRunner.init), so the user still sees no prompt by default; the
433
+ // interactive event/stream path drains the interrupt and auto-approves silently.
434
+ // • In non-interactive modes (exec / ask --write) a single-shot run does NOT drain
435
+ // interrupts, so shellYolo keeps the tool UNGATED (runs inline without suspending),
436
+ // preserving prior behaviour. There is no slash-command surface there to toggle anyway.
437
+ const isInteractive = this.command === 'code';
438
+ const gateShell = shellEnabled && (devTools?.shellYolo !== true || isInteractive);
439
+ const interruptOn = gateShell
440
+ ? { run_shell_command: { allowedDecisions: ['approve', 'reject'] } }
441
+ : undefined;
442
+ if (gateShell && devTools?.shellYolo === true) {
443
+ this.statusUpdate(StatusLevel.INFO, 'Shell tool (run_shell_command) auto-approved by config (shellYolo). Type /auto-approve off to require per-command approval.');
444
+ }
445
+ else if (interruptOn) {
446
+ this.statusUpdate(StatusLevel.INFO, 'Shell tool (run_shell_command) enabled with per-command approval (interruptOn).');
447
+ }
448
+ else if (shellEnabled) {
449
+ this.statusUpdate(StatusLevel.WARNING, 'Shell tool (run_shell_command) enabled in YOLO mode: commands run WITHOUT confirmation.');
450
+ }
261
451
  return {
262
452
  model: this.config.llm,
263
453
  tools: passThroughTools,
264
454
  permissions,
265
455
  middleware,
266
456
  systemPrompt,
457
+ interruptOn,
267
458
  };
268
459
  }
460
+ /**
461
+ * Resolve the {@link GthDevToolsConfig} that applies to the active command, mirroring the
462
+ * per-command selection in `builtInToolsConfig.getDefaultTools` (which is what actually emits
463
+ * the dev tools): `exec` → `commands.exec.devTools`, `ask --write` → `commands.ask.devTools`,
464
+ * otherwise (`code`) → `commands.code.devTools`. Returns `undefined` for any other command,
465
+ * matching the toolkit being inert there. Kept private and side-effect-free so the interrupt
466
+ * wiring above and the tool emission stay in lockstep.
467
+ */
468
+ getEffectiveDevToolsConfig() {
469
+ const config = this.config;
470
+ if (!config)
471
+ return undefined;
472
+ const command = this.command;
473
+ const askWrite = command === 'ask' && config.askWriteMode === true;
474
+ if (command === 'exec')
475
+ return config.commands?.exec?.devTools;
476
+ if (askWrite)
477
+ return config.commands?.ask?.devTools;
478
+ if (command === 'code')
479
+ return config.commands?.code?.devTools;
480
+ return undefined;
481
+ }
269
482
  }
270
483
  /**
271
- * Scalar model-param fields worth surfacing in the `/debug` panel. Deliberately an
272
- * allowlist (NOT a whole-object dump) so no credential field (`apiKey`, `accessToken`, …)
273
- * can ever leak into the rendered debug view.
484
+ * EXT-22: shared virtualMode path-namespace guidance ONE source of truth used by BOTH the S2
485
+ * early-framing note ({@link appendVirtualCwdNote}, injected into gsloth's composed systemPrompt =
486
+ * block 0) and the S1 last-word correction middleware
487
+ * ({@link createPathNamespaceCorrectionMiddleware}, appended after deepagents' `/`-rooted line).
488
+ *
489
+ * In a virtualMode `code` session (EXT-16, e.g. Windows) the deepagents filesystem tools use a
490
+ * VIRTUAL `/` root (= the working dir) while `run_shell_command` uses REAL native OS paths; the
491
+ * model conflates the two forms. This text draws the distinction and steers toward cwd-relative
492
+ * paths (the one form both tool families read alike).
274
493
  *
275
- * `streaming` is intentionally NOT here: it is the model instance's static flag, which is
276
- * usually `false` even when the turn streams the GthAgentRunner decides streaming by calling
277
- * `.stream()` vs `.invoke()`, not by this property so surfacing it just misleads.
494
+ * It deliberately does NOT equate the virtual root with a specific real path (no "`/` = D:\\work"):
495
+ * virtualMode withholds the real cwd on purpose (see the systemPrompt gate in {@link
496
+ * GthDeepAgent.init}), so the guidance is about the DISTINCTION between the two namespaces and the
497
+ * safety of relative paths, not a mapping between them.
278
498
  */
279
- const DEBUG_MODEL_PARAM_KEYS = [
280
- 'model',
281
- 'modelName',
282
- 'modelId',
283
- 'deploymentName',
284
- 'temperature',
285
- 'topP',
286
- 'topK',
287
- 'maxTokens',
288
- 'maxOutputTokens',
289
- 'maxReasoningTokens',
290
- 'reasoningEffort',
291
- 'thinkingBudget',
292
- 'stop',
293
- 'provider',
294
- ];
295
- /** Pull the key-free scalar model params from the (provider-specific) model instance. */
296
- function extractModelParams(model) {
297
- if (!model || typeof model !== 'object')
298
- return undefined;
299
- const src = model;
300
- const out = {};
301
- for (const key of DEBUG_MODEL_PARAM_KEYS) {
302
- const value = src[key];
303
- if (value === undefined || value === null)
304
- continue;
305
- // Only scalars / scalar arrays — never nested objects that could carry credentials.
306
- if (typeof value === 'object' && !Array.isArray(value))
307
- continue;
308
- out[key] = value;
309
- }
310
- // `model` / `modelName` / `modelId` are langchain aliases for the same value; collapse the
311
- // duplicates so the panel shows the model id once instead of two identical lines.
312
- if (typeof out.model !== 'string' && typeof out.modelName === 'string') {
313
- out.model = out.modelName;
314
- }
315
- if (out.modelName === out.model)
316
- delete out.modelName;
317
- if (out.modelId === out.model)
318
- delete out.modelId;
319
- return Object.keys(out).length > 0 ? out : undefined;
320
- }
321
- /** Best-effort tool definition (name + description + schema) for the debug view. */
322
- function extractToolDefs(tools) {
323
- if (!Array.isArray(tools) || tools.length === 0)
324
- return undefined;
325
- const defs = [];
326
- for (const tool of tools) {
327
- if (!tool || typeof tool !== 'object')
328
- continue;
329
- const t = tool;
330
- const name = typeof t.name === 'string' ? t.name : undefined;
331
- if (!name)
332
- continue;
333
- const description = typeof t.description === 'string' ? t.description : undefined;
334
- // LangChain StructuredTools expose a Zod/JSON `schema`; some carry it on `lc_kwargs`.
335
- const schema = t.schema ?? undefined;
336
- defs.push({ name, description, schema });
337
- }
338
- return defs.length > 0 ? defs : undefined;
499
+ export const PATH_NAMESPACE_GUIDANCE = 'The filesystem tools (ls, read_file, write_file, edit_file, glob, grep) use a VIRTUAL root in ' +
500
+ 'this session: a leading `/` means your working directory, and their paths are written ' +
501
+ '`/`-rooted relative to it (this is what "all file paths must start with a /" refers to). That ' +
502
+ '`/` is NOT the real operating-system filesystem root. run_shell_command is different: it runs ' +
503
+ 'in the real operating system and uses real native paths (on Windows, e.g. ' +
504
+ '`C:\\Users\\...\\project`, with backslashes), never the virtual `/` root. A `/`-rooted path ' +
505
+ 'from the filesystem tools is NOT a valid shell path and must never be passed to ' +
506
+ 'run_shell_command. The one form that means the same thing to both tool families is a path ' +
507
+ 'RELATIVE to the working directory (e.g. `src/index.ts`); prefer relative paths for both. When ' +
508
+ 'you must be absolute, use `/`-rooted form ONLY for the filesystem tools and real native form ' +
509
+ 'ONLY for run_shell_command.';
510
+ /**
511
+ * EXT-22 (S2): virtualMode variant of {@link appendCwdNote}. On the `code` path when the fs
512
+ * backend runs in virtualMode (EXT-16), inject the shared path-namespace guidance EARLY in
513
+ * gsloth's composed systemPrompt (block 0) so the model is framed before deepagents' own prompt.
514
+ *
515
+ * This is early framing only: deepagents' hardcoded `/`-rooted line lands in a LATER block and can
516
+ * partially override block 0, so the authoritative last word is delivered by the S1 middleware
517
+ * ({@link createPathNamespaceCorrectionMiddleware}); see handoff/spike-systemmessage-ordering.md.
518
+ * Returns the note alone when there is no base prompt.
519
+ */
520
+ export function appendVirtualCwdNote(systemPrompt) {
521
+ const note = `Filesystem vs shell path namespaces: ${PATH_NAMESPACE_GUIDANCE}`;
522
+ return systemPrompt ? `${systemPrompt}\n\n${note}` : note;
339
523
  }
340
524
  /**
341
- * Assemble the non-message request parts ({@link DebugRequestExtras}) for the `/debug`
342
- * panel from a `wrapModelCall` request, defensively and key-free. Never throws (the caller
343
- * already guards, but a debug sink must never break a run) and never dumps the raw model.
525
+ * EXT-22 (S1): the load-bearing path-namespace correction. A gsloth `wrapModelCall` middleware
526
+ * runs INNERMOST (inside deepagents' filesystem middleware), so appending a trailing block to
527
+ * `request.systemMessage` lands AFTER deepagents' hardcoded "All file paths must start with a /."
528
+ * line — giving gsloth the last word on path semantics (empirically verified; see
529
+ * handoff/spike-systemmessage-ordering.md). It APPENDS via `request.systemMessage.concat(...)`
530
+ * (mirroring how deepagents appends its own fs prompt), never string-splices, and returns a NEW
531
+ * request so it never mutates persisted state (no compounding across turns).
532
+ *
533
+ * `appendCorrection` gates it to `code` + virtualMode: only there do the fs virtual `/` root and
534
+ * the shell's real-OS paths diverge. On POSIX real-path mode deepagents' "start with /" is
535
+ * literally true, so the middleware is a transparent pass-through (like the debug-capture
536
+ * middleware when no sink is attached).
344
537
  */
345
- export function extractDebugRequestExtras(request) {
346
- if (!request || typeof request !== 'object')
347
- return undefined;
348
- const req = request;
349
- const systemMessage = req.systemMessage;
350
- const systemPrompt = typeof req.systemPrompt === 'string' && req.systemPrompt
351
- ? req.systemPrompt
352
- : typeof systemMessage?.content === 'string'
353
- ? systemMessage.content
354
- : undefined;
355
- const extras = {
356
- systemPrompt,
357
- tools: extractToolDefs(req.tools),
358
- modelParams: extractModelParams(req.model),
359
- toolChoice: req.toolChoice,
360
- };
361
- // Return undefined when nothing useful was captured so the renderer can show a clear empty state.
362
- const hasAny = extras.systemPrompt !== undefined ||
363
- extras.tools !== undefined ||
364
- extras.modelParams !== undefined ||
365
- extras.toolChoice !== undefined;
366
- return hasAny ? extras : undefined;
538
+ export function createPathNamespaceCorrectionMiddleware(appendCorrection) {
539
+ return createMiddleware({
540
+ name: 'GthDeepPathNamespaceCorrection',
541
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
542
+ wrapModelCall: async (request, handler) => {
543
+ if (!appendCorrection || !request?.systemMessage)
544
+ return handler(request);
545
+ const correction = 'IMPORTANT — path namespaces (authoritative; this overrides any earlier instruction that ' +
546
+ `implies every path is a simple \`/\`-rooted filesystem path): ${PATH_NAMESPACE_GUIDANCE}`;
547
+ return handler({ ...request, systemMessage: request.systemMessage.concat(correction) });
548
+ },
549
+ });
367
550
  }
551
+ // The `/debug` request-extras extraction (extractDebugRequestExtras + its model-param / tool-def
552
+ // allowlist helpers) now lives in @gaunt-sloth/core (`core/debugCapture.ts`) so the lean backend
553
+ // shares it. Imported at the top of this module and re-exported for back-compat.
368
554
  //# sourceMappingURL=GthDeepAgent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GthDeepAgent.js","sourceRoot":"","sources":["../../src/core/GthDeepAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GthDeepAgent.js","sourceRoot":"","sources":["../../src/core/GthDeepAgent.ts"],"names":[],"mappings":"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"}