hoomanjs 1.46.0 → 1.47.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 (127) hide show
  1. package/README.md +7 -5
  2. package/dist/acp/acp-agent.d.ts +42 -0
  3. package/dist/acp/acp-agent.js +322 -38
  4. package/dist/acp/acp-agent.js.map +1 -1
  5. package/dist/acp/session-config.d.ts +2 -2
  6. package/dist/acp/session-config.js +24 -20
  7. package/dist/acp/session-config.js.map +1 -1
  8. package/dist/acp/utils/tool-kind.js +2 -0
  9. package/dist/acp/utils/tool-kind.js.map +1 -1
  10. package/dist/chat/app.js +75 -2
  11. package/dist/chat/app.js.map +1 -1
  12. package/dist/chat/components/ApprovalPrompt.js +7 -6
  13. package/dist/chat/components/ApprovalPrompt.js.map +1 -1
  14. package/dist/chat/components/BackgroundJobsPanel.d.ts +10 -0
  15. package/dist/chat/components/BackgroundJobsPanel.js +15 -0
  16. package/dist/chat/components/BackgroundJobsPanel.js.map +1 -0
  17. package/dist/chat/components/BottomChrome.d.ts +6 -1
  18. package/dist/chat/components/BottomChrome.js +3 -2
  19. package/dist/chat/components/BottomChrome.js.map +1 -1
  20. package/dist/chat/components/ChromePicker.d.ts +7 -2
  21. package/dist/chat/components/ChromePicker.js +18 -2
  22. package/dist/chat/components/ChromePicker.js.map +1 -1
  23. package/dist/chat/components/Composer.js +3 -2
  24. package/dist/chat/components/Composer.js.map +1 -1
  25. package/dist/chat/components/DownloadPanel.js +2 -1
  26. package/dist/chat/components/DownloadPanel.js.map +1 -1
  27. package/dist/chat/components/EmptyChatBanner.js +2 -1
  28. package/dist/chat/components/EmptyChatBanner.js.map +1 -1
  29. package/dist/chat/components/PromptInput.js +2 -1
  30. package/dist/chat/components/PromptInput.js.map +1 -1
  31. package/dist/chat/components/QuestionPrompt.js +5 -4
  32. package/dist/chat/components/QuestionPrompt.js.map +1 -1
  33. package/dist/chat/components/QueuedPrompts.js +3 -2
  34. package/dist/chat/components/QueuedPrompts.js.map +1 -1
  35. package/dist/chat/components/ReasoningStrip.js +2 -1
  36. package/dist/chat/components/ReasoningStrip.js.map +1 -1
  37. package/dist/chat/components/RetryEvent.js +2 -1
  38. package/dist/chat/components/RetryEvent.js.map +1 -1
  39. package/dist/chat/components/SelectPicker.js +2 -1
  40. package/dist/chat/components/SelectPicker.js.map +1 -1
  41. package/dist/chat/components/ShellToolEvent.d.ts +12 -0
  42. package/dist/chat/components/ShellToolEvent.js +94 -0
  43. package/dist/chat/components/ShellToolEvent.js.map +1 -0
  44. package/dist/chat/components/SlashCommands.js +2 -1
  45. package/dist/chat/components/SlashCommands.js.map +1 -1
  46. package/dist/chat/components/Spinner.js +2 -1
  47. package/dist/chat/components/Spinner.js.map +1 -1
  48. package/dist/chat/components/StatusBar.js +16 -15
  49. package/dist/chat/components/StatusBar.js.map +1 -1
  50. package/dist/chat/components/ThinkingStatus.js +2 -1
  51. package/dist/chat/components/ThinkingStatus.js.map +1 -1
  52. package/dist/chat/components/ThoughtEvent.js +2 -1
  53. package/dist/chat/components/ThoughtEvent.js.map +1 -1
  54. package/dist/chat/components/TodoPanel.js +2 -1
  55. package/dist/chat/components/TodoPanel.js.map +1 -1
  56. package/dist/chat/components/ToolEvent.d.ts +2 -1
  57. package/dist/chat/components/ToolEvent.js +9 -2
  58. package/dist/chat/components/ToolEvent.js.map +1 -1
  59. package/dist/chat/components/ToolEventFileResult.js +8 -7
  60. package/dist/chat/components/ToolEventFileResult.js.map +1 -1
  61. package/dist/chat/components/Transcript.d.ts +4 -2
  62. package/dist/chat/components/Transcript.js +4 -4
  63. package/dist/chat/components/Transcript.js.map +1 -1
  64. package/dist/chat/components/markdown/BlockRenderer.js +3 -2
  65. package/dist/chat/components/markdown/BlockRenderer.js.map +1 -1
  66. package/dist/chat/components/markdown/CodeBlock.js +3 -2
  67. package/dist/chat/components/markdown/CodeBlock.js.map +1 -1
  68. package/dist/chat/components/markdown/InlineRenderer.js +6 -5
  69. package/dist/chat/components/markdown/InlineRenderer.js.map +1 -1
  70. package/dist/chat/components/shared.js +7 -6
  71. package/dist/chat/components/shared.js.map +1 -1
  72. package/dist/chat/types.d.ts +4 -0
  73. package/dist/configure/components/BusyScreen.js +2 -1
  74. package/dist/configure/components/BusyScreen.js.map +1 -1
  75. package/dist/configure/components/MenuScreen.js +3 -2
  76. package/dist/configure/components/MenuScreen.js.map +1 -1
  77. package/dist/configure/components/PromptForm.js +2 -1
  78. package/dist/configure/components/PromptForm.js.map +1 -1
  79. package/dist/configure/components/SelectMenuItem.js +4 -3
  80. package/dist/configure/components/SelectMenuItem.js.map +1 -1
  81. package/dist/configure/utils.js +4 -3
  82. package/dist/configure/utils.js.map +1 -1
  83. package/dist/core/agent/index.js +2 -1
  84. package/dist/core/agent/index.js.map +1 -1
  85. package/dist/core/modes/definitions.js +4 -0
  86. package/dist/core/modes/definitions.js.map +1 -1
  87. package/dist/core/prompts/static/shell.md +21 -1
  88. package/dist/core/shell/index.d.ts +7 -0
  89. package/dist/core/shell/index.js +6 -0
  90. package/dist/core/shell/index.js.map +1 -0
  91. package/dist/core/shell/manager.d.ts +23 -0
  92. package/dist/core/shell/manager.js +604 -0
  93. package/dist/core/shell/manager.js.map +1 -0
  94. package/dist/core/shell/output-buffer.d.ts +30 -0
  95. package/dist/core/shell/output-buffer.js +116 -0
  96. package/dist/core/shell/output-buffer.js.map +1 -0
  97. package/dist/core/shell/registry.d.ts +5 -0
  98. package/dist/core/shell/registry.js +24 -0
  99. package/dist/core/shell/registry.js.map +1 -0
  100. package/dist/core/shell/shell.d.ts +41 -0
  101. package/dist/core/{tools → shell}/shell.js +185 -10
  102. package/dist/core/shell/shell.js.map +1 -0
  103. package/dist/core/{tools/shell.d.ts → shell/terminal-backend.d.ts} +20 -18
  104. package/dist/core/shell/terminal-backend.js +18 -0
  105. package/dist/core/shell/terminal-backend.js.map +1 -0
  106. package/dist/core/shell/types.d.ts +95 -0
  107. package/dist/core/shell/types.js +2 -0
  108. package/dist/core/shell/types.js.map +1 -0
  109. package/dist/core/state/shell-jobs.d.ts +9 -0
  110. package/dist/core/state/shell-jobs.js +20 -0
  111. package/dist/core/state/shell-jobs.js.map +1 -0
  112. package/dist/core/state/tool-approvals.js +3 -0
  113. package/dist/core/state/tool-approvals.js.map +1 -1
  114. package/dist/core/state/turn-boundaries.d.ts +33 -0
  115. package/dist/core/state/turn-boundaries.js +49 -0
  116. package/dist/core/state/turn-boundaries.js.map +1 -0
  117. package/dist/core/theme.d.ts +14 -0
  118. package/dist/core/theme.js +14 -0
  119. package/dist/core/theme.js.map +1 -0
  120. package/dist/core/tools/index.d.ts +0 -1
  121. package/dist/core/tools/index.js +0 -1
  122. package/dist/core/tools/index.js.map +1 -1
  123. package/dist/index.d.ts +2 -2
  124. package/dist/index.js +2 -2
  125. package/dist/index.js.map +1 -1
  126. package/package.json +1 -1
  127. package/dist/core/tools/shell.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/core/shell/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /** In-memory ring capacity before spilling to disk. */
2
+ export declare const RING_CAPACITY_BYTES: number;
3
+ /** Kill the job when total output exceeds this size. */
4
+ export declare const WATCHDOG_MAX_BYTES: number;
5
+ /**
6
+ * Keeps a recent window of output in memory and spills the full stream to
7
+ * disk once the ring fills. Tail reads prefer memory.
8
+ *
9
+ * Spill semantics: when the ring first overflows, the current ring contents
10
+ * are written to the spill file and subsequent chunks are appended to both
11
+ * spill and ring. The ring is then trimmed from the front so it stays under
12
+ * capacity. `readAll()` returns the spill file (authoritative full stream).
13
+ */
14
+ export declare class OutputBuffer {
15
+ #private;
16
+ constructor(jobId: string, opts?: {
17
+ capacity?: number;
18
+ watchdogMax?: number;
19
+ onWatchdog?: () => void;
20
+ });
21
+ get truncated(): boolean;
22
+ get totalBytes(): number;
23
+ get spillPath(): string | null;
24
+ append(chunk: string): void;
25
+ /** Full accumulated output. */
26
+ readAll(): string;
27
+ /** Recent window kept in memory (fast path for UI / snapshots). */
28
+ readTail(maxChars?: number): string;
29
+ readTailLines(lines: number): string;
30
+ }
@@ -0,0 +1,116 @@
1
+ import { appendFileSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { basePath } from "../utils/paths.js";
4
+ /** In-memory ring capacity before spilling to disk. */
5
+ export const RING_CAPACITY_BYTES = 200 * 1024;
6
+ /** Kill the job when total output exceeds this size. */
7
+ export const WATCHDOG_MAX_BYTES = 10 * 1024 * 1024;
8
+ /**
9
+ * Keeps a recent window of output in memory and spills the full stream to
10
+ * disk once the ring fills. Tail reads prefer memory.
11
+ *
12
+ * Spill semantics: when the ring first overflows, the current ring contents
13
+ * are written to the spill file and subsequent chunks are appended to both
14
+ * spill and ring. The ring is then trimmed from the front so it stays under
15
+ * capacity. `readAll()` returns the spill file (authoritative full stream).
16
+ */
17
+ export class OutputBuffer {
18
+ #ring = "";
19
+ #ringBytes = 0;
20
+ #spillPath = null;
21
+ #totalBytes = 0;
22
+ #truncated = false;
23
+ #jobId;
24
+ #capacity;
25
+ #watchdogMax;
26
+ #onWatchdog;
27
+ constructor(jobId, opts) {
28
+ this.#jobId = jobId;
29
+ this.#capacity = opts?.capacity ?? RING_CAPACITY_BYTES;
30
+ this.#watchdogMax = opts?.watchdogMax ?? WATCHDOG_MAX_BYTES;
31
+ this.#onWatchdog = opts?.onWatchdog;
32
+ }
33
+ get truncated() {
34
+ return this.#truncated;
35
+ }
36
+ get totalBytes() {
37
+ return this.#totalBytes;
38
+ }
39
+ get spillPath() {
40
+ return this.#spillPath;
41
+ }
42
+ append(chunk) {
43
+ if (!chunk) {
44
+ return;
45
+ }
46
+ const chunkBytes = Buffer.byteLength(chunk, "utf8");
47
+ this.#totalBytes += chunkBytes;
48
+ if (this.#spillPath) {
49
+ try {
50
+ appendFileSync(this.#spillPath, chunk, "utf8");
51
+ }
52
+ catch {
53
+ this.#truncated = true;
54
+ }
55
+ }
56
+ this.#ring += chunk;
57
+ this.#ringBytes += chunkBytes;
58
+ if (this.#ringBytes > this.#capacity) {
59
+ if (!this.#spillPath) {
60
+ this.#openSpill();
61
+ try {
62
+ writeFileSync(this.#spillPath, this.#ring, "utf8");
63
+ }
64
+ catch {
65
+ this.#truncated = true;
66
+ }
67
+ }
68
+ while (this.#ringBytes > this.#capacity && this.#ring.length > 0) {
69
+ const drop = Math.max(1, Math.ceil(this.#ring.length * 0.1));
70
+ const removed = this.#ring.slice(0, drop);
71
+ this.#ring = this.#ring.slice(drop);
72
+ this.#ringBytes -= Buffer.byteLength(removed, "utf8");
73
+ this.#truncated = true;
74
+ }
75
+ }
76
+ if (this.#totalBytes > this.#watchdogMax) {
77
+ this.#onWatchdog?.();
78
+ }
79
+ }
80
+ /** Full accumulated output. */
81
+ readAll() {
82
+ if (!this.#spillPath) {
83
+ return this.#ring;
84
+ }
85
+ try {
86
+ return readFileSync(this.#spillPath, "utf8");
87
+ }
88
+ catch {
89
+ return this.#ring;
90
+ }
91
+ }
92
+ /** Recent window kept in memory (fast path for UI / snapshots). */
93
+ readTail(maxChars = 12_000) {
94
+ if (this.#ring.length <= maxChars) {
95
+ return this.#ring;
96
+ }
97
+ return this.#ring.slice(-maxChars);
98
+ }
99
+ readTailLines(lines) {
100
+ if (lines <= 0) {
101
+ return "";
102
+ }
103
+ const all = this.readTail(Math.max(lines * 200, 4_000));
104
+ const parts = all.split("\n");
105
+ return parts.slice(-lines).join("\n");
106
+ }
107
+ #openSpill() {
108
+ if (this.#spillPath) {
109
+ return;
110
+ }
111
+ const dir = join(basePath(), "shell-jobs");
112
+ mkdirSync(dir, { recursive: true });
113
+ this.#spillPath = join(dir, `${this.#jobId}.log`);
114
+ }
115
+ }
116
+ //# sourceMappingURL=output-buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-buffer.js","sourceRoot":"","sources":["../../../src/core/shell/output-buffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { ShellJobManager } from "./manager.js";
2
+ export declare function getShellJobManager(agent: object): ShellJobManager;
3
+ export declare function peekShellJobManager(agent: object | undefined): ShellJobManager | undefined;
4
+ /** Stop all jobs and drop the manager for this agent (session teardown). */
5
+ export declare function clearShellJobManager(agent: object): Promise<void>;
@@ -0,0 +1,24 @@
1
+ import { ShellJobManager } from "./manager.js";
2
+ /** Keyed by the Strands agent instance so managers are never serialized. */
3
+ const managers = new WeakMap();
4
+ export function getShellJobManager(agent) {
5
+ let manager = managers.get(agent);
6
+ if (!manager) {
7
+ manager = new ShellJobManager(agent);
8
+ managers.set(agent, manager);
9
+ }
10
+ return manager;
11
+ }
12
+ export function peekShellJobManager(agent) {
13
+ return agent ? managers.get(agent) : undefined;
14
+ }
15
+ /** Stop all jobs and drop the manager for this agent (session teardown). */
16
+ export async function clearShellJobManager(agent) {
17
+ const manager = managers.get(agent);
18
+ if (!manager) {
19
+ return;
20
+ }
21
+ await manager.clear();
22
+ managers.delete(agent);
23
+ }
24
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/shell/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,4EAA4E;AAC5E,MAAM,QAAQ,GAAG,IAAI,OAAO,EAA2B,CAAC;AAExD,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAyB;IAEzB,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAa;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IACD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { JSONValue } from "@strands-agents/sdk";
2
+ export type { TerminalBackend, TerminalOutputSnapshot, TerminalRunRequest, TerminalRunResult, TerminalSpawnResult, } from "./terminal-backend.js";
3
+ export { getTerminalBackend, setTerminalBackend } from "./terminal-backend.js";
4
+ export declare const SHELL_TOOL_NAME = "shell";
5
+ export declare const SHELL_OUTPUT_TOOL_NAME = "shell_output";
6
+ export declare const SHELL_STOP_TOOL_NAME = "shell_stop";
7
+ export declare function createShellTools(): (import("@strands-agents/sdk").InvokableTool<{
8
+ command: string | {
9
+ command: string;
10
+ timeout?: number | undefined;
11
+ work_dir?: string | undefined;
12
+ stdin?: string | undefined;
13
+ } | (string | {
14
+ command: string;
15
+ timeout?: number | undefined;
16
+ work_dir?: string | undefined;
17
+ stdin?: string | undefined;
18
+ })[];
19
+ parallel?: boolean | undefined;
20
+ ignore_errors?: boolean | undefined;
21
+ timeout?: number | undefined;
22
+ work_dir?: string | undefined;
23
+ run_in_background?: boolean | undefined;
24
+ description?: string | undefined;
25
+ notify_on_output?: {
26
+ pattern: string;
27
+ debounce_ms?: number | undefined;
28
+ } | undefined;
29
+ ready?: {
30
+ pattern?: string | undefined;
31
+ port?: number | undefined;
32
+ timeout_ms?: number | undefined;
33
+ } | undefined;
34
+ block_until_ms?: number | undefined;
35
+ }, JSONValue> | import("@strands-agents/sdk").InvokableTool<{
36
+ job_id: string;
37
+ block?: boolean | undefined;
38
+ timeout_ms?: number | undefined;
39
+ pattern?: string | undefined;
40
+ tail_lines?: number | undefined;
41
+ }, JSONValue>)[];
@@ -6,19 +6,46 @@ import { tool } from "@strands-agents/sdk";
6
6
  import { z } from "zod";
7
7
  import { getCwd } from "../utils/cwd-context.js";
8
8
  import { lookupCommandPath } from "../utils/command-path.js";
9
- /** Keyed by the Strands agent instance so backends are never serialized. */
10
- const terminalBackends = new WeakMap();
11
- export function setTerminalBackend(agent, backend) {
12
- terminalBackends.set(agent, backend);
13
- }
14
- export function getTerminalBackend(agent) {
15
- return agent ? terminalBackends.get(agent) : undefined;
16
- }
9
+ import { getShellJobManager } from "./registry.js";
10
+ import { getTerminalBackend } from "./terminal-backend.js";
11
+ export { getTerminalBackend, setTerminalBackend } from "./terminal-backend.js";
12
+ export const SHELL_TOOL_NAME = "shell";
13
+ export const SHELL_OUTPUT_TOOL_NAME = "shell_output";
14
+ export const SHELL_STOP_TOOL_NAME = "shell_stop";
17
15
  const DEFAULT_TIMEOUT_SECONDS = Number.parseInt(process.env.SHELL_DEFAULT_TIMEOUT ?? "900", 10);
18
16
  const SIGKILL_TIMEOUT_MS = 200;
19
17
  const MAX_OUTPUT_CHARS = 12_000;
20
18
  /** Output bytes the host terminal should retain before truncating. */
21
19
  const TERMINAL_OUTPUT_BYTE_LIMIT = 1_048_576;
20
+ const NotifyOnOutputSchema = z.object({
21
+ pattern: z
22
+ .string()
23
+ .min(1)
24
+ .describe("JavaScript regex matched against accumulated output."),
25
+ debounce_ms: z
26
+ .number()
27
+ .nonnegative()
28
+ .optional()
29
+ .describe("Milliseconds between match checks."),
30
+ });
31
+ const ReadyProbeSchema = z.object({
32
+ pattern: z
33
+ .string()
34
+ .min(1)
35
+ .optional()
36
+ .describe("Regex matched against output to mark the job ready."),
37
+ port: z
38
+ .number()
39
+ .int()
40
+ .positive()
41
+ .optional()
42
+ .describe("Local TCP port to probe until it accepts connections."),
43
+ timeout_ms: z
44
+ .number()
45
+ .positive()
46
+ .optional()
47
+ .describe("Milliseconds to wait for readiness before returning."),
48
+ });
22
49
  const CommandObjectSchema = z.object({
23
50
  command: z.string().min(1).describe("Shell command to execute."),
24
51
  timeout: z
@@ -308,16 +335,92 @@ function createShellInputSchema() {
308
335
  .string()
309
336
  .optional()
310
337
  .describe("Base working directory for command execution."),
338
+ run_in_background: z
339
+ .boolean()
340
+ .optional()
341
+ .describe("Run a single command as a background job and return a job_id immediately. Requires description. Use shell_output / shell_stop to manage it."),
342
+ description: z
343
+ .string()
344
+ .min(1)
345
+ .optional()
346
+ .describe("Short human-readable label for a background job (required when run_in_background is true)."),
347
+ notify_on_output: NotifyOnOutputSchema.optional().describe("Block until this regex matches output (or timeout), then return a job_id while the process keeps running."),
348
+ ready: ReadyProbeSchema.optional().describe("Wait for a readiness probe (regex and/or TCP port) before returning a background job handle."),
349
+ block_until_ms: z
350
+ .number()
351
+ .nonnegative()
352
+ .optional()
353
+ .describe("Max milliseconds to wait before returning a background handle. 0 = return immediately (same as run_in_background). With notify_on_output/ready, caps how long to wait for the match."),
354
+ });
355
+ }
356
+ function wantsBackground(input) {
357
+ return (input.run_in_background === true ||
358
+ input.block_until_ms !== undefined ||
359
+ input.notify_on_output !== undefined ||
360
+ input.ready !== undefined);
361
+ }
362
+ async function executeBackground(input, context) {
363
+ if (Array.isArray(input.command)) {
364
+ throw new Error("Background shell jobs support a single command only (not an array).");
365
+ }
366
+ const runInBackground = input.run_in_background === true || input.block_until_ms === 0;
367
+ const description = input.description?.trim() ||
368
+ (typeof input.command === "string"
369
+ ? input.command.slice(0, 80)
370
+ : input.command.command.slice(0, 80));
371
+ if (runInBackground && !input.description?.trim()) {
372
+ throw new Error("description is required when run_in_background is true (or block_until_ms is 0).");
373
+ }
374
+ const commands = normalizeCommands(input);
375
+ const item = commands[0];
376
+ if (item.stdin !== undefined) {
377
+ throw new Error("Background shell jobs do not support stdin.");
378
+ }
379
+ const baseDir = resolveWorkDir(getCwd(), input.work_dir);
380
+ const cwd = resolveWorkDir(baseDir, item.workDir);
381
+ const cfg = shellConfig(item.command);
382
+ const manager = getShellJobManager(context.agent);
383
+ let blockUntilMs = input.block_until_ms;
384
+ if (runInBackground && blockUntilMs === undefined) {
385
+ blockUntilMs = 0;
386
+ }
387
+ const snap = await manager.start({
388
+ command: cfg.file,
389
+ args: cfg.args,
390
+ cwd,
391
+ description,
392
+ timeoutMs: item.timeoutSeconds * 1000,
393
+ outputByteLimit: TERMINAL_OUTPUT_BYTE_LIMIT,
394
+ toolUseId: context.toolUse?.toolUseId,
395
+ notifyOnOutput: input.notify_on_output,
396
+ ready: input.ready,
397
+ blockUntilMs,
398
+ cancelSignal: context.agent.cancelSignal,
311
399
  });
400
+ return {
401
+ status: "background",
402
+ job_id: snap.jobId,
403
+ description,
404
+ output: snap.output,
405
+ ready: snap.ready,
406
+ truncated: snap.truncated,
407
+ job_status: snap.status,
408
+ };
312
409
  }
313
410
  export function createShellTools() {
314
411
  const inputSchema = createShellInputSchema();
315
412
  return [
316
413
  tool({
317
- name: "shell",
318
- description: "Execute shell commands on the local machine. Supports single commands, multiple commands, per-command options, sequential or parallel execution, working directories, stdin, and timeouts.",
414
+ name: SHELL_TOOL_NAME,
415
+ description: "Execute shell commands on the local machine. Supports single commands, multiple commands, per-command options, sequential or parallel execution, working directories, stdin, and timeouts. For long-running processes (servers, watchers, monitors), set run_in_background with a description to get a job_id, then use shell_output / shell_stop. Use notify_on_output or ready to wait until the process is useful before returning.",
319
416
  inputSchema,
320
417
  callback: async (input, context) => {
418
+ if (wantsBackground(input)) {
419
+ if (!context?.agent) {
420
+ throw new Error("Background shell jobs require an agent context.");
421
+ }
422
+ return toJsonValue(await executeBackground(input, context));
423
+ }
321
424
  const commands = normalizeCommands(input);
322
425
  const parallel = input.parallel ?? false;
323
426
  const ignoreErrors = input.ignore_errors ?? false;
@@ -338,6 +441,78 @@ export function createShellTools() {
338
441
  });
339
442
  },
340
443
  }),
444
+ tool({
445
+ name: SHELL_OUTPUT_TOOL_NAME,
446
+ description: "Read output from a background shell job started with shell (run_in_background / notify_on_output / ready). By default blocks until the job exits. Set block=false for a snapshot, or pass pattern to wait for a new regex match. Prefer waiting with a reasonable timeout over tight polling loops.",
447
+ inputSchema: z.object({
448
+ job_id: z.string().min(1).describe("Background job id from shell."),
449
+ block: z
450
+ .boolean()
451
+ .optional()
452
+ .describe("When true (default), wait for the job to exit. Ignored when pattern is set."),
453
+ timeout_ms: z
454
+ .number()
455
+ .positive()
456
+ .optional()
457
+ .describe("Max wait time in milliseconds (default 30000)."),
458
+ pattern: z
459
+ .string()
460
+ .min(1)
461
+ .optional()
462
+ .describe("Wait for this JavaScript regex to match new output since the last read."),
463
+ tail_lines: z
464
+ .number()
465
+ .int()
466
+ .positive()
467
+ .optional()
468
+ .describe("Return only the last N lines of output."),
469
+ }),
470
+ callback: async (input, context) => {
471
+ if (!context?.agent) {
472
+ throw new Error("shell_output requires an agent context.");
473
+ }
474
+ const manager = getShellJobManager(context.agent);
475
+ const snap = await manager.output(input.job_id, {
476
+ block: input.block,
477
+ timeoutMs: input.timeout_ms,
478
+ pattern: input.pattern,
479
+ tailLines: input.tail_lines,
480
+ cancelSignal: context.agent.cancelSignal,
481
+ });
482
+ return toJsonValue({
483
+ status: snap.status,
484
+ job_id: snap.jobId,
485
+ output: snap.output,
486
+ truncated: snap.truncated,
487
+ ready: snap.ready,
488
+ exit_code: snap.exitCode,
489
+ signal: snap.signal,
490
+ matched: snap.matched,
491
+ });
492
+ },
493
+ }),
494
+ tool({
495
+ name: SHELL_STOP_TOOL_NAME,
496
+ description: "Stop a background shell job started with shell (run_in_background / notify_on_output / ready). Sends a process-group kill and returns the final status.",
497
+ inputSchema: z.object({
498
+ job_id: z.string().min(1).describe("Background job id from shell."),
499
+ }),
500
+ callback: async (input, context) => {
501
+ if (!context?.agent) {
502
+ throw new Error("shell_stop requires an agent context.");
503
+ }
504
+ const manager = getShellJobManager(context.agent);
505
+ const snap = await manager.stop(input.job_id);
506
+ return toJsonValue({
507
+ status: "stopped",
508
+ job_id: snap.jobId,
509
+ job_status: snap.status,
510
+ exit_code: snap.exitCode,
511
+ signal: snap.signal,
512
+ output: snap.output,
513
+ });
514
+ },
515
+ }),
341
516
  ];
342
517
  }
343
518
  //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/core/shell/shell.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import type { JSONValue } from "@strands-agents/sdk";
2
1
  /**
3
2
  * Optional per-agent terminal backend.
4
3
  *
@@ -22,6 +21,8 @@ export type TerminalRunRequest = {
22
21
  outputByteLimit?: number;
23
22
  /** Aborts the command (e.g. prompt-turn cancellation). */
24
23
  cancelSignal?: AbortSignal;
24
+ /** Background job id when spawned via {@link TerminalBackend.spawn}. */
25
+ jobId?: string;
25
26
  };
26
27
  export type TerminalRunResult = {
27
28
  /** Combined terminal output captured so far. */
@@ -35,25 +36,26 @@ export type TerminalRunResult = {
35
36
  /** Whether the command was killed because it exceeded the timeout. */
36
37
  timedOut: boolean;
37
38
  };
39
+ export type TerminalOutputSnapshot = {
40
+ output: string;
41
+ truncated: boolean;
42
+ exitCode: number | null;
43
+ signal: string | null;
44
+ };
45
+ export type TerminalSpawnResult = {
46
+ terminalId: string;
47
+ };
48
+ /**
49
+ * `run` is the foreground path (block until exit). `spawn` / `readOutput` /
50
+ * `kill` support background jobs that outlive a single tool call — the host
51
+ * must not release the terminal until `kill` or session teardown.
52
+ */
38
53
  export type TerminalBackend = {
39
54
  run(request: TerminalRunRequest): Promise<TerminalRunResult>;
55
+ /** Non-blocking spawn; returns a host terminal id for later read/kill. */
56
+ spawn?(request: TerminalRunRequest): Promise<TerminalSpawnResult>;
57
+ readOutput?(terminalId: string): Promise<TerminalOutputSnapshot>;
58
+ kill?(terminalId: string): Promise<void>;
40
59
  };
41
60
  export declare function setTerminalBackend(agent: object, backend: TerminalBackend): void;
42
61
  export declare function getTerminalBackend(agent: object | undefined): TerminalBackend | undefined;
43
- export declare function createShellTools(): import("@strands-agents/sdk").InvokableTool<{
44
- command: string | {
45
- command: string;
46
- timeout?: number | undefined;
47
- work_dir?: string | undefined;
48
- stdin?: string | undefined;
49
- } | (string | {
50
- command: string;
51
- timeout?: number | undefined;
52
- work_dir?: string | undefined;
53
- stdin?: string | undefined;
54
- })[];
55
- parallel?: boolean | undefined;
56
- ignore_errors?: boolean | undefined;
57
- timeout?: number | undefined;
58
- work_dir?: string | undefined;
59
- }, JSONValue>[];
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Optional per-agent terminal backend.
3
+ *
4
+ * When an embedding host (e.g. an ACP client that advertises the `terminal`
5
+ * capability) can run shell commands on the agent's behalf, it registers a
6
+ * backend here. The built-in `shell` tool then executes through it so the host
7
+ * can stream live output and embed the terminal in the tool call. When no
8
+ * backend is registered, the tool spawns commands locally.
9
+ */
10
+ /** Keyed by the Strands agent instance so backends are never serialized. */
11
+ const terminalBackends = new WeakMap();
12
+ export function setTerminalBackend(agent, backend) {
13
+ terminalBackends.set(agent, backend);
14
+ }
15
+ export function getTerminalBackend(agent) {
16
+ return agent ? terminalBackends.get(agent) : undefined;
17
+ }
18
+ //# sourceMappingURL=terminal-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-backend.js","sourceRoot":"","sources":["../../../src/core/shell/terminal-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAyDH,4EAA4E;AAC5E,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAA2B,CAAC;AAEhE,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,OAAwB;IAExB,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAyB;IAEzB,OAAO,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC"}