@pentoshi/clai 4.14.3 → 4.14.4

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 (68) hide show
  1. package/README.md +5 -1
  2. package/dist/agent/compaction-summary.d.ts +1 -1
  3. package/dist/agent/compaction-summary.js +6 -3
  4. package/dist/agent/compaction-summary.js.map +1 -1
  5. package/dist/agent/context/user-credentials.d.ts +11 -0
  6. package/dist/agent/context/user-credentials.js +34 -1
  7. package/dist/agent/context/user-credentials.js.map +1 -1
  8. package/dist/agent/parser/arg-formatting.js +4 -3
  9. package/dist/agent/parser/arg-formatting.js.map +1 -1
  10. package/dist/agent/parser/terminal-args.d.ts +3 -0
  11. package/dist/agent/parser/terminal-args.js +52 -0
  12. package/dist/agent/parser/terminal-args.js.map +1 -0
  13. package/dist/agent/turn/subagent-inbox.js +2 -2
  14. package/dist/agent/turn/subagent-inbox.js.map +1 -1
  15. package/dist/agent/turn/tool-execution/single-tool.js +1 -0
  16. package/dist/agent/turn/tool-execution/single-tool.js.map +1 -1
  17. package/dist/classic/blocks/tool-lines.js +3 -3
  18. package/dist/classic/blocks/tool-lines.js.map +1 -1
  19. package/dist/interactive-session/cleanup.js +1 -1
  20. package/dist/interactive-session/cleanup.js.map +1 -1
  21. package/dist/interactive-session/manager.d.ts +2 -0
  22. package/dist/interactive-session/manager.js +62 -30
  23. package/dist/interactive-session/manager.js.map +1 -1
  24. package/dist/interactive-session/output-store.d.ts +1 -1
  25. package/dist/interactive-session/output-store.js +4 -1
  26. package/dist/interactive-session/output-store.js.map +1 -1
  27. package/dist/interactive-session/output-view.js +23 -1
  28. package/dist/interactive-session/output-view.js.map +1 -1
  29. package/dist/interactive-session/streaming-redactor.js +1 -1
  30. package/dist/interactive-session/streaming-redactor.js.map +1 -1
  31. package/dist/interactive-session/transport-node-pty.d.ts +2 -1
  32. package/dist/interactive-session/transport-node-pty.js +24 -20
  33. package/dist/interactive-session/transport-node-pty.js.map +1 -1
  34. package/dist/interactive-session/types.d.ts +3 -0
  35. package/dist/interactive-session/types.js.map +1 -1
  36. package/dist/prompts/embedded.js +1 -1
  37. package/dist/prompts/embedded.js.map +1 -1
  38. package/dist/prompts/system.agent.md +5 -4
  39. package/dist/tools/definitions/terminal.js +43 -37
  40. package/dist/tools/definitions/terminal.js.map +1 -1
  41. package/dist/tools/interactive-session-tools.js +79 -33
  42. package/dist/tools/interactive-session-tools.js.map +1 -1
  43. package/dist/tools/shell/interactive-probes.d.ts +1 -0
  44. package/dist/tools/shell/interactive-probes.js +35 -0
  45. package/dist/tools/shell/interactive-probes.js.map +1 -0
  46. package/dist/tools/shell.js +11 -2
  47. package/dist/tools/shell.js.map +1 -1
  48. package/dist/tools/tool-types.d.ts +2 -1
  49. package/dist/tui-v2/components/transcript/tool-card.js +2 -2
  50. package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
  51. package/dist/tui-v2/components/transcript/use-transcript-selection.js +11 -6
  52. package/dist/tui-v2/components/transcript/use-transcript-selection.js.map +1 -1
  53. package/dist/ui-core/controllers/selection-controller.js +2 -1
  54. package/dist/ui-core/controllers/selection-controller.js.map +1 -1
  55. package/dist/ui-core/rendering/terminal-output.d.ts +6 -0
  56. package/dist/ui-core/rendering/terminal-output.js +45 -0
  57. package/dist/ui-core/rendering/terminal-output.js.map +1 -0
  58. package/dist/ui-core/rendering/tool-presenter.d.ts +1 -1
  59. package/dist/ui-core/rendering/tool-presenter.js +21 -4
  60. package/dist/ui-core/rendering/tool-presenter.js.map +1 -1
  61. package/dist/ui-core/rendering/transcript-export.d.ts +2 -0
  62. package/dist/ui-core/rendering/transcript-export.js +1 -0
  63. package/dist/ui-core/rendering/transcript-export.js.map +1 -1
  64. package/dist/ui-core/rendering/transcript-semantic.js +9 -0
  65. package/dist/ui-core/rendering/transcript-semantic.js.map +1 -1
  66. package/dist/version.generated.d.ts +2 -2
  67. package/dist/version.generated.js +2 -2
  68. package/package.json +1 -1
@@ -92,9 +92,10 @@ Default foreground `timeoutMs` is 60000ms (60s). You decide the budget in millis
92
92
 
93
93
  - shell.exec: {"command":"<cmd>","cwd":"<optional>","timeoutMs":<optional ms>,"background":"<auto|never|always>","name":"<optional job label>","responder":<optional bool>} — foreground by default for every command; no automatic backgrounding. You choose the foreground millisecond deadline (default 60000); timeoutMs is ignored for background and Responder execution. Choose enough time before launching finite work to receive its output in one call. Persistent servers/watchers/listeners: explicitly choose background:"always" plus a name; launch confirms only that the OS started it, so shell.tail and probe readiness, and check shell.jobs before starting another copy. For normal pollable finite jobs, use background:"always" and shell.wait; for independent finite fire-and-continue work, use responder:true and analyze terminal delivery with job.read instead of polling. background:"never" forces foreground even with responder:true; auto is a compatibility alias for omission. Prefer cwd over `cd`; Unix uses POSIX `/bin/sh`, so use portable syntax (explicit `bash -lc` only when required). Cost or command names never override your execution choice.
94
94
  - shell.jobs: {} / shell.tail: {"id":"<job-id>","bytes":<optional>,"offset":<optional byte offset>,"stream":"<stdout|stderr|combined>"} / shell.stop: {"id":"<job-id>"} — tail defaults to stdout; for incremental polling reuse the prior nextOffset as offset on the SAME stream (stdout or stderr). combined is snapshot-only and rejects offset.
95
- - terminal.start: {"command":"<interactive command>","cwd":"<optional>","terminalMode":"<required|preferred|pipe>","columns":<optional>,"rows":<optional>,"idleTimeoutMs":<optional>,"lifetimeTimeoutMs":<optional>,"deadlineMs":<optional>} — persistent writable REPL/console session for Python, debuggers, database shells, Metasploit, Meterpreter, and similar prompt-driven programs. Use shell.exec for finite commands and shell.exec background:"always" for non-interactive servers.
96
- - terminal.send: {"id":"<session id>","kind":"<text|control|eof>","text":"<text when kind=text>","submit":"<enter|none>","control":"<interrupt|eof|suspend|escape|tab|backspace|up|down|left|right>","cursor":<optional>,"quietMs":<optional>,"deadlineMs":<optional>,"view":"<plain|encoded>"} — ordered at-most-once input. After delivered/unknown input, never resend automatically; continue from page.nextCursor with terminal.read.
97
- - terminal.read: {"id":"<session id>","cursor":<required>,"waitMs":<optional>,"view":"<plain|encoded>"} / terminal.status: {"id":"<session id>"} / terminal.list: {} / terminal.close: {"id":"<session id>","deadlineMs":<optional>} — cursor pages are monotonic; reuse nextCursor, drain hasMore pages, inspect status rather than guessing, and close sessions when finished.
95
+ - terminal.start: {"command":"<interactive command>","cwd":"<optional>","terminalMode":"<required|preferred|pipe>","columns":<optional>,"rows":<optional>,"idleTimeoutMs":<optional>,"lifetimeTimeoutMs":<optional>,"deadlineMs":<optional>} — persistent writable REPL/console for SSH, Python, debuggers, database shells, Metasploit, Meterpreter, and similar prompt-driven programs. preferred uses a PTY or explicitly reports pipe degradation; required refuses fallback (choose this for SSH passwords/readline consoles); pipe is only for stdin-driven programs that do not need a TTY. Dimensions are 2–1000 (defaults 80×24). Startup deadlineMs is 100–120000 (default 10000), NOT session lifetime. idleTimeoutMs is an optional 1000–86400000 inactivity cap; lifetimeTimeoutMs is an optional 1000–604800000 absolute cap; both are unset by default. Do not impose a short idle cap while the user enters a password. Start returns an initial page after waiting up to 1000ms for output; if no prompt is visible, read from nextCursor.
96
+ - terminal.send: {"id":"<session id>","kind":"<text|secret|control|eof>","text":"<text only when kind=text>","secretPrompt":"<optional non-secret local prompt label>","secretSource":"<auto|user|prompt>","submit":"<enter|none>","control":"<interrupt|eof|suspend|escape|tab|backspace|up|down|left|right>","cursor":<optional>,"quietMs":<optional>,"deadlineMs":<optional>,"view":"<plain|encoded>"} — send exactly one ordered action. secretSource defaults to auto: reuse one clearly labeled user-provided password from the current request, earlier user messages or carried credentials; otherwise open masked input. user requires an unambiguous supplied password without prompting; prompt forces masked entry. NEVER put a password in text, command, secretPrompt, an environment variable or a fallback script. submit defaults to enter (adds Enter itself); none types without submitting. quietMs is 25–5000 (default 250); deadlineMs is 100–120000 (default 30000). Quiet means output paused, NOT command finished. After delivery=delivered/unknown or a delivered action's deadline, never resend; continue from page.nextCursor with terminal.read.
97
+ - terminal.read: {"id":"<session id>","cursor":<required>,"waitMs":<optional>,"view":"<plain|encoded>"} / terminal.status: {"id":"<session id>"} / terminal.list: {} / terminal.close: {"id":"<session id>","deadlineMs":<optional>} — cursors address canonical redacted bytes, not lines/characters; reuse nextCursor and drain hasMore pages. waitMs is 0–30000. Read still works after exit/close; on OUTPUT_GAP use earliestAvailableCursor or the artifact. plain is safe linear transcript text (not a full-screen emulator); encoded is per-event base64 for exact redacted bytes. Status shows state, process outcome and cursor range. Close is idempotent; its deadlineMs is 100–120000 (default 10000). Check cleanupVerified, not merely that close was requested.
98
+ - INTERACTIVE WORKFLOW: finite python -c/script.py, ssh -V/-G/-Q and command -v/which probes → shell.exec; Python/msfconsole/database REPLs and password SSH → terminal.start; unattended servers/watchers → shell.exec background:"always" with a name. For SSH, observe the host-key/password prompt first; handle host-key trust explicitly and never suppress a changed-host-key warning. Then terminal.send kind=secret, inspect delivery/output, and verify the logged-in prompt with a harmless command. For REPLs, wait for the expected prompt before sending the next command; send control=interrupt to interrupt and read afterwards. For multiline input use submit=none or program-appropriate blocks/blank lines, not an assumed shell grammar. A session that exits before secret delivery does NOT prove the password was wrong: read its final output/status and diagnose transport/authentication separately. Do not retry an exited session or bypass secret handling with sshpass/inline credentials. Close owned sessions when done.
98
99
  - fs.read: {"path":"<file|dir>","offset"|"startLine":<opt>,"limit":<opt>,"endLine":<opt>,"pattern":"<regex|/re/i>","context":<opt>,"maxMatches":<opt>,"maxBytes":<opt>} — READ POLICY: (1) path-only is fine for small files (full body). (2) Large files auto-head (~200 lines) with `# hasMore` + `next={"offset":N,"limit":M}` — that is NOT the whole file; call again with those next args (never re-issue path-only hoping for more). (3) Known range → offset/limit or startLine/endLine (1-indexed; 0→1). (4) Find symbol/string → pattern for one file; shell.exec with rg/grep for multiple files, then read around hits. Prefer partial/pattern over dumping huge files. Body lines are `N: text`. Dir path → listing, including hidden entries; limit caps directory entries.
99
100
  - Optional multi-file read: fs.read {"files":[{"path":"src/app.ts","offset":1,"limit":80},{"path":"src/config.ts","pattern":"export","context":2}]} for 1–6 necessary known files. Put each file’s filters directly inside its entry; omit top-level path/options. Single-file reads remain appropriate. Do not add irrelevant files to fill the limit. Results are ordered and labeled; inspect each file’s status and continuation independently. Use shell searches first when paths are unknown.
100
101
  - fs.write: {"path":"<file>","content":"<data>"} — new/full rewrite. Existing file → prefer fs.edit/replaceLines; for a full rewrite preserve all required lines and inspect the diff. Parent dirs auto-created; trust bytes/hash, don't re-read solely to verify.
@@ -160,7 +161,7 @@ Prefer current tools/libs/flags. Environment date is "now". If unsure or facts m
160
161
  # RESILIENT ERROR HANDLING
161
162
 
162
163
  - command not found: check with command -v/which/where/Get-Command → install via shell.exec for this OS if appropriate → retry. GUI casks on macOS launch with `open -a`, not as CLIs. Binary name may differ from package name.
163
- - permission denied: use sudo anywhere in the command (leading or compound) — clai authenticates the whole line through the secure password modal via `sudo -S`; the user types the password in the modal. Never downgrade the operation to dodge elevation (e.g. nmap -sT instead of -sS) and never pipe passwords. ssh/gpg/passwd need a real TTY: use terminal.start + terminal.send kind:"secret".
164
+ - permission denied: use sudo in leading or compound commands; clai's masked modal authenticates the whole line via `sudo -S`. Never pipe passwords or downgrade to dodge elevation (e.g. nmap -sT instead of -sS). SSH/gpg/passwd login needs a real TTY: terminal.start/read → observe prompt → terminal.send kind:"secret"; auto reuses one labeled user password, secretSource:"prompt" forces masked entry. SSH -V/-G/-Q probes use shell.exec; ssh -v is verbose login, not a version probe.
164
165
  - connection refused/timeout: re-check target/port, timeoutMs, scope.
165
166
  - flag/syntax errors: fix for this OS (BSD vs GNU) and retry.
166
167
  - WARN/error from a tool: read it, form a new hypothesis, change approach. Never retry the identical failing command.
@@ -1,78 +1,84 @@
1
1
  import { def, emptyObject } from "./define.js";
2
+ import { INTERACTIVE_SESSION_DEFAULTS, INTERACTIVE_SESSION_RANGES } from "../../interactive-session/config.js";
3
+ function milliseconds(field, description) {
4
+ const range = INTERACTIVE_SESSION_RANGES[field];
5
+ const value = INTERACTIVE_SESSION_DEFAULTS[field];
6
+ return {
7
+ type: "integer", minimum: range.min, maximum: range.max, description,
8
+ ...(value === undefined ? {} : { default: value }),
9
+ };
10
+ }
11
+ const outputView = {
12
+ type: "string", enum: ["plain", "encoded"],
13
+ description: "plain: linear text, not screen; encoded: each event as base64.",
14
+ };
15
+ const outputCursor = {
16
+ type: "integer", minimum: 0,
17
+ description: "Redacted byte cursor: nextCursor resumes; ≤latestCursor.",
18
+ };
2
19
  export const TOOL_DEFINITIONS_TERMINAL = [
3
- def("terminal.start", "Start a conversation-owned interactive process or REPL and return its session id and output cursor. Use for programs that need later input; use shell.exec for finite commands and shell.exec background:\"always\" for unattended services.", {
20
+ def("terminal.start", "Owned SSH/Python/msfconsole REPL. Read until prompt before input. Output after ≤1000ms. Finite work: shell.exec; unattended services: shell.exec background:\"always\".", {
4
21
  type: "object",
5
22
  properties: {
6
23
  command: { type: "string" },
7
24
  cwd: { type: "string" },
8
25
  terminalMode: {
9
- type: "string",
10
- enum: ["required", "preferred", "pipe"],
11
- description: "preferred uses a PTY when available and otherwise pipes; required refuses fallback; pipe always uses managed pipes",
26
+ type: "string", enum: ["required", "preferred", "pipe"],
27
+ description: "required: PTY or fail (SSH/readline); preferred: PTY/pipes; pipe: stdin only.",
12
28
  },
13
- columns: { type: "integer" },
14
- rows: { type: "integer" },
15
- idleTimeoutMs: { type: "integer" },
16
- lifetimeTimeoutMs: { type: "integer" },
17
- deadlineMs: { type: "integer" },
29
+ columns: { type: "integer", minimum: 2, maximum: 1000, default: 80 },
30
+ rows: { type: "integer", minimum: 2, maximum: 1000, default: 24 },
31
+ idleTimeoutMs: milliseconds("idleTimeoutMs", "Optional idle cap; I/O resets it. Avoid short caps for passwords."),
32
+ lifetimeTimeoutMs: milliseconds("lifetimeTimeoutMs", "Optional absolute cap; never extended."),
33
+ deadlineMs: milliseconds("startDeadlineMs", "Limits launch only, never session lifetime. Timeouts are ms."),
18
34
  },
19
35
  required: ["command"],
20
36
  additionalProperties: false,
21
37
  }, { mutates: true }),
22
- def("terminal.send", "Send exactly one text, secret, control, or EOF action to an interactive session, then return output after quiet, exit, or deadline. Secret input is prompted locally and must never be supplied in tool arguments. Continue from nextCursor; never resend when delivery is unknown or a delivered action times out while gathering output.", {
38
+ def("terminal.send", "Send once; never resend delivered/unknown input. Read nextCursor. Secrets never in args.", {
23
39
  type: "object",
24
40
  properties: {
25
41
  id: { type: "string" },
26
42
  kind: { type: "string", enum: ["text", "secret", "control", "eof"] },
27
- text: { type: "string" },
28
- secretPrompt: { type: "string" },
29
- submit: { type: "string", enum: ["enter", "none"] },
43
+ text: { type: "string", description: "text only; never passwords." },
44
+ secretPrompt: { type: "string", description: "secret only: nonsecret masked-input label." },
45
+ secretSource: { type: "string", enum: ["auto", "user", "prompt"], default: "auto", description: "auto: one user password or masked input; user requires it; prompt: masked input only." },
46
+ submit: { type: "string", enum: ["enter", "none"], default: "enter", description: "text/secret: enter adds Enter (omit trailing newline); none types only." },
30
47
  control: {
31
48
  type: "string",
32
- enum: [
33
- "interrupt",
34
- "eof",
35
- "suspend",
36
- "escape",
37
- "tab",
38
- "backspace",
39
- "up",
40
- "down",
41
- "left",
42
- "right",
43
- ],
49
+ enum: ["interrupt", "eof", "suspend", "escape", "tab", "backspace", "up", "down", "left", "right"],
44
50
  },
45
- cursor: { type: "integer" },
46
- quietMs: { type: "integer" },
47
- deadlineMs: { type: "integer" },
48
- view: { type: "string", enum: ["plain", "encoded"] },
51
+ cursor: outputCursor,
52
+ quietMs: milliseconds("quietIntervalMs", "Output pause in ms, not command completion."),
53
+ deadlineMs: milliseconds("sendDeadlineMs", "I/O deadline in ms."),
54
+ view: outputView,
49
55
  },
50
56
  required: ["id", "kind"],
51
57
  additionalProperties: false,
52
58
  }, { mutates: true }),
53
- def("terminal.read", "Read session output from an exact cursor without sending input. Use nextCursor for gap-free continuation; waitMs may wait up to 30000ms for new output.", {
59
+ def("terminal.read", "Read after exit/close; drain hasMore via nextCursor. OUTPUT_GAP: earliestAvailableCursor/artifact. Pre-secret exit ≠ bad credentials.", {
54
60
  type: "object",
55
61
  properties: {
56
62
  id: { type: "string" },
57
- cursor: { type: "integer" },
58
- waitMs: { type: "integer" },
59
- view: { type: "string", enum: ["plain", "encoded"] },
63
+ cursor: outputCursor,
64
+ waitMs: { type: "integer", minimum: 0, maximum: 30000, default: 0, description: "Output wait in ms; exited sessions return immediately." },
65
+ view: outputView,
60
66
  },
61
67
  required: ["id", "cursor"],
62
68
  additionalProperties: false,
63
69
  }, { readOnly: true }),
64
- def("terminal.status", "Return current state, cursor range, transport, and process outcome for one interactive session.", {
70
+ def("terminal.status", "State, byte-cursors, transport and process outcome.", {
65
71
  type: "object",
66
72
  properties: { id: { type: "string" } },
67
73
  required: ["id"],
68
74
  additionalProperties: false,
69
75
  }, { readOnly: true }),
70
- def("terminal.list", "List interactive sessions owned by this conversation, with live sessions first.", emptyObject, { readOnly: true }),
71
- def("terminal.close", "Close an interactive session, terminate its process tree, and verify cleanup. Repeated close calls return the recorded terminal result.", {
76
+ def("terminal.list", "List owned sessions, live first.", emptyObject, { readOnly: true }),
77
+ def("terminal.close", "Terminate owned process tree; idempotent. Verify cleanupVerified.", {
72
78
  type: "object",
73
79
  properties: {
74
80
  id: { type: "string" },
75
- deadlineMs: { type: "integer" },
81
+ deadlineMs: milliseconds("closeDeadlineMs", "Cleanup deadline in ms."),
76
82
  },
77
83
  required: ["id"],
78
84
  additionalProperties: false,
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/tools/definitions/terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/tools/definitions/terminal.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { loadScopeForSession } from "../store/scope.js";
2
+ import { resolveUserPassword } from "../agent/context/user-credentials.js";
2
3
  import { interactiveSessionManager, } from "../interactive-session/manager.js";
3
4
  import { isInteractiveSessionsEnabled, resolveInteractiveSessionConfig, } from "../interactive-session/config.js";
4
- import { asStableError, } from "../interactive-session/types.js";
5
+ import { asStableError, throwSessionError, } from "../interactive-session/types.js";
5
6
  import { CONTROL_INPUTS } from "../interactive-session/types.js";
6
7
  export const INTERACTIVE_SESSION_TOOL_NAMES = [
7
8
  "terminal.start",
@@ -20,11 +21,19 @@ function requireString(args, key) {
20
21
  }
21
22
  function optionalString(args, key) {
22
23
  const value = args[key];
23
- return typeof value === "string" ? value : undefined;
24
+ if (value === undefined)
25
+ return undefined;
26
+ if (typeof value !== "string")
27
+ throw new Error(`${key} must be a string`);
28
+ return value;
24
29
  }
25
30
  function optionalNumber(args, key) {
26
31
  const value = args[key];
27
- return typeof value === "number" && Number.isFinite(value) ? value : undefined;
32
+ if (value === undefined)
33
+ return undefined;
34
+ if (typeof value !== "number" || !Number.isSafeInteger(value))
35
+ throw new Error(`${key} must be a finite integer`);
36
+ return value;
28
37
  }
29
38
  function optionalView(args) {
30
39
  const value = optionalString(args, "view");
@@ -35,8 +44,44 @@ function optionalView(args) {
35
44
  }
36
45
  return value;
37
46
  }
47
+ async function secretValue(args, options) {
48
+ const source = optionalString(args, "secretSource") ?? "auto";
49
+ if (source !== "auto" && source !== "user" && source !== "prompt") {
50
+ throw new Error("secretSource must be auto, user, or prompt");
51
+ }
52
+ const prompt = optionalString(args, "secretPrompt") ?? "Enter secret";
53
+ options?.signal?.throwIfAborted();
54
+ if (source !== "prompt") {
55
+ const supplied = resolveUserPassword(options ?? {});
56
+ if (supplied.status === "available")
57
+ return supplied.value;
58
+ if (source === "user") {
59
+ throwSessionError({ code: "INVALID_REQUEST", operation: "send", message: `User-provided password is ${supplied.status}; use secretSource=prompt for masked input. No input was sent.` });
60
+ }
61
+ }
62
+ if (!options?.requestSecret) {
63
+ throwSessionError({ code: "UNSUPPORTED_OPERATION", operation: "send", message: "Local secret input is unavailable in this UI; no input was sent." });
64
+ }
65
+ const value = await options.requestSecret({ title: "Terminal secret input", prompt, operation: { name: "terminal.send", args } });
66
+ if (value === undefined) {
67
+ throwSessionError({ code: "CANCELLED", operation: "send", message: "Secret input was cancelled; no input was sent." });
68
+ }
69
+ return value;
70
+ }
71
+ async function parseSecretInput(args, options) {
72
+ if (args.text !== undefined || args.control !== undefined) {
73
+ throw new Error("text and control are not allowed when kind is secret");
74
+ }
75
+ const submit = optionalString(args, "submit") ?? "enter";
76
+ if (submit !== "enter" && submit !== "none")
77
+ throw new Error("submit must be enter or none");
78
+ return { kind: "secret", value: await secretValue(args, options), submit };
79
+ }
38
80
  async function parseInput(args, options) {
39
81
  const kind = requireString(args, "kind");
82
+ if (kind !== "secret" && (args.secretSource !== undefined || args.secretPrompt !== undefined)) {
83
+ throw new Error("secretSource and secretPrompt are only allowed when kind is secret");
84
+ }
40
85
  if (kind === "text") {
41
86
  const text = args.text;
42
87
  if (typeof text !== "string")
@@ -49,24 +94,8 @@ async function parseInput(args, options) {
49
94
  }
50
95
  return { kind: "text", text, submit };
51
96
  }
52
- if (kind === "secret") {
53
- if (args.text !== undefined || args.control !== undefined) {
54
- throw new Error("text and control are not allowed when kind is secret");
55
- }
56
- const submit = optionalString(args, "submit") ?? "enter";
57
- if (submit !== "enter" && submit !== "none") {
58
- throw new Error("submit must be enter or none");
59
- }
60
- const secretPrompt = optionalString(args, "secretPrompt") ?? "Enter secret";
61
- const value = await options?.requestSecret?.({
62
- title: "Terminal secret input",
63
- prompt: secretPrompt,
64
- operation: { name: "terminal.send", args },
65
- });
66
- if (value === undefined)
67
- throw new Error("Secret input was cancelled");
68
- return { kind: "secret", value, submit };
69
- }
97
+ if (kind === "secret")
98
+ return parseSecretInput(args, options);
70
99
  if (kind === "control") {
71
100
  const control = requireString(args, "control");
72
101
  if (args.text !== undefined)
@@ -99,12 +128,12 @@ function confirmPort(options) {
99
128
  function summarizePage(page) {
100
129
  if (!page)
101
130
  return [];
102
- const lines = [];
103
- const body = page.events.map((event) => event.content).join("");
104
- if (body.length > 0)
105
- lines.push(body.replace(/\s+$/, ""));
106
- lines.push(`[cursor ${page.requestedCursor}→${page.nextCursor}${page.hasMore ? " more" : ""}${page.decodingLoss ? " lossy" : ""}${page.omittedBytes ? ` omitted=${page.omittedBytes}B` : ""}]`);
107
- return lines;
131
+ const body = page.events.map((event) => event.content).join(page.view === "encoded" ? "\n" : "");
132
+ return [
133
+ `[terminal.output cursor=${page.requestedCursor} nextCursor=${page.nextCursor} earliestAvailableCursor=${page.earliestAvailableCursor} latestCursor=${page.latestCursor} hasMore=${page.hasMore} view=${page.view}${page.decodingLoss ? " lossy" : ""}${page.omittedBytes ? ` omitted=${page.omittedBytes}B` : ""}]`,
134
+ ...(body.length > 0 ? [body.replace(/\n$/, "")] : []),
135
+ "[/terminal.output]",
136
+ ];
108
137
  }
109
138
  function describeError(error) {
110
139
  return `[${error.code}] ${error.message} (retryable=${error.retryable})`;
@@ -118,7 +147,7 @@ function project(result) {
118
147
  (result.dimensions
119
148
  ? ` ${result.dimensions.columns}x${result.dimensions.rows}`
120
149
  : "") +
121
- (result.degradedReason ? ` degraded=${result.degradedReason}` : ""), `artifact=${result.artifact.path}`);
150
+ (result.degradedReason ? ` degraded=${result.degradedReason}` : ""), ...summarizePage(result.page), `artifact=${result.artifact.path}`);
122
151
  break;
123
152
  case "send":
124
153
  lines.push(`seq=${result.inputSequence} delivery=${result.delivery} bytes=${result.deliveredBytes} state=${result.state}`, ...summarizePage(result.page));
@@ -161,6 +190,12 @@ function project(result) {
161
190
  }
162
191
  break;
163
192
  }
193
+ lines[0] = `[terminal.${result.operation}] ${lines[0] ?? ""}`;
194
+ const outcome = "processOutcome" in result ? result.processOutcome : undefined;
195
+ if (outcome?.exitCode !== undefined)
196
+ lines[0] += ` processExit=${outcome.exitCode}`;
197
+ if (outcome?.signal)
198
+ lines[0] += ` signal=${outcome.signal}`;
164
199
  return { ok, output: lines.filter((line) => line.length > 0).join("\n"), interactiveSession: result };
165
200
  }
166
201
  function failure(error, operation) {
@@ -191,7 +226,7 @@ export function createInteractiveSessionHandlers(manager = interactiveSessionMan
191
226
  "terminal.start": async (args, options) => guarded("start", async () => {
192
227
  const ownerId = requireOwner(options, "start");
193
228
  const mode = optionalString(args, "terminalMode");
194
- return await manager.start({
229
+ const started = await manager.start({
195
230
  ownerId,
196
231
  command: requireString(args, "command"),
197
232
  cwd: optionalString(args, "cwd"),
@@ -205,18 +240,29 @@ export function createInteractiveSessionHandlers(manager = interactiveSessionMan
205
240
  confirm: confirmPort(options),
206
241
  scope: await activeScope(options),
207
242
  });
243
+ const initial = await manager.read({
244
+ ownerId, id: started.sessionId, cursor: 0, waitMs: 1_000, signal: options?.signal,
245
+ });
246
+ return {
247
+ ...started, state: initial.state, page: initial.page,
248
+ cursor: initial.page?.nextCursor ?? started.cursor,
249
+ ...(initial.processOutcome ? { processOutcome: initial.processOutcome } : {}),
250
+ };
208
251
  }),
209
252
  "terminal.send": async (args, options) => guarded("send", async () => {
210
- const ownerId = requireOwner(options, "send");
211
- return await manager.send({
212
- ownerId,
253
+ const request = {
254
+ ownerId: requireOwner(options, "send"),
213
255
  id: requireString(args, "id"),
214
- input: await parseInput(args, options),
215
256
  cursor: optionalNumber(args, "cursor"),
216
257
  quietMs: optionalNumber(args, "quietMs"),
217
258
  deadlineMs: optionalNumber(args, "deadlineMs"),
218
259
  view: optionalView(args),
219
260
  signal: options?.signal,
261
+ };
262
+ manager.validateSend(request);
263
+ return await manager.send({
264
+ ...request,
265
+ input: await parseInput(args, options),
220
266
  confirm: confirmPort(options),
221
267
  scope: await activeScope(options),
222
268
  });
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-session-tools.js","sourceRoot":"","sources":["../../src/tools/interactive-session-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAEL,yBAAyB,GAE1B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,aAAa,GAQd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAIjE,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,iBAAiB;IACjB,eAAe;IACf,gBAAgB;CACR,CAAC;AAEX,SAAS,aAAa,CAAC,IAA6B,EAAE,GAAW;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,6BAA6B,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,IAA6B,EAAE,GAAW;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CAAC,IAA6B,EAAE,GAAW;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED,SAAS,YAAY,CAAC,IAA6B;IACjD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,IAA6B,EAC7B,OAAmC;IAEnC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACpF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC;QACzD,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC;QACzD,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,cAAc,CAAC;QAC5E,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3C,KAAK,EAAE,uBAAuB;YAC9B,MAAM,EAAE,YAAY;YACpB,SAAS,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;SAC3C,CAAC,CAAC;QACH,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC3C,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACzF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAuB,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAuB,EAAE,CAAC;IAC/D,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAmC;IAEnC,OAAO,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,YAAY,CAAC,OAAmC,EAAE,SAA2B;IACpF,MAAM,OAAO,GAAG,OAAO,EAAE,SAAS,CAAC;IACnC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IACtE,MAAM,IAAI,KAAK,CACb,YAAY,SAAS,oEAAoE,CAC1F,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,OAAmC;IACtD,OAAO,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;AACjD,CAAC;AAED,SAAS,aAAa,CAAC,IAA4B;IACjD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CACR,WAAW,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAC9E,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EACjC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAChE,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAkB;IACvC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,eAAe,KAAK,CAAC,SAAS,GAAG,CAAC;AAC3E,CAAC;AAED,SAAS,OAAO,CAAC,MAAoC;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;QACzB,KAAK,OAAO;YACV,KAAK,CAAC,IAAI,CACR,WAAW,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,cAAc,MAAM,CAAC,SAAS,EAAE;gBACzE,CAAC,MAAM,CAAC,UAAU;oBAChB,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;oBAC3D,CAAC,CAAC,EAAE,CAAC;gBACP,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACrE,YAAY,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CACnC,CAAC;YACF,MAAM;QACR,KAAK,MAAM;YACT,KAAK,CAAC,IAAI,CACR,OAAO,MAAM,CAAC,aAAa,aAAa,MAAM,CAAC,QAAQ,UAAU,MAAM,CAAC,cAAc,UAAU,MAAM,CAAC,KAAK,EAAE,EAC9G,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9B,CAAC;YACF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,EAAE,GAAG,KAAK,CAAC;gBACX,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,MAAM;QACR,KAAK,MAAM;YACT,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACnE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,EAAE,GAAG,KAAK,CAAC;gBACX,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,MAAM;QACR,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,cAAc,OAAO,CAAC,SAAS,WAAW,OAAO,CAAC,cAAc,KAAK,OAAO,CAAC,YAAY,EAAE;gBACvH,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5E,CAAC;YACF,MAAM;QACR,CAAC;QACD,KAAK,MAAM;YACT,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAC1B,CAAC,CAAC,gDAAgD;gBAClD,CAAC,CAAC,MAAM,CAAC,QAAQ;qBACZ,GAAG,CACF,CAAC,OAAO,EAAE,EAAE,CACV,GAAG,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,cAAc,OAAO,CAAC,SAAS,iBAAiB,OAAO,CAAC,YAAY,EAAE,CACvG;qBACA,IAAI,CAAC,IAAI,CAAC,CAClB,CAAC;YACF,MAAM;QACR,KAAK,QAAQ;YACX,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,SAAS,eAAe,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,GAAG,CAC1G,CAAC;YACF,MAAM;QACR,KAAK,OAAO;YACV,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE;gBACnC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,oBAAoB,MAAM,CAAC,eAAe,EAAE,CAC/C,CAAC;YACF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,EAAE,GAAG,KAAK,CAAC;gBACX,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,MAAM;IACV,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC;AACxG,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,SAA2B;IAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE;QAClC,IAAI,EAAE,iBAAiB;QACvB,SAAS;QACT,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sCAAsC;KACzF,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,SAA2B,EAC3B,GAA+E;IAE/E,IAAI,CAAC;QACH,IAAI,CAAC,4BAA4B,CAAC,+BAA+B,EAAE,CAAC,EAAE,CAAC;YACrE,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EACJ,uGAAuG;gBACzG,QAAQ,EAAE,CAAC;aACZ,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,UAAqC,yBAAyB;IAE9D,OAAO;QACL,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CACxC,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAClD,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC;gBACzB,OAAO;gBACP,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC;gBACvC,GAAG,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;gBAChC,YAAY,EAAE,IAAqD;gBACnE,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC;gBACxC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC;gBAClC,aAAa,EAAE,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC;gBACpD,iBAAiB,EAAE,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC;gBAC5D,UAAU,EAAE,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC;gBAC9C,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;gBAC7B,KAAK,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC;aAClC,CAAC,CAAC;QACL,CAAC,CAAC;QACJ,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CACvC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YACzB,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC9C,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;gBACxB,OAAO;gBACP,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC7B,KAAK,EAAE,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;gBACtC,MAAM,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;gBACtC,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC;gBACxC,UAAU,EAAE,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC;gBAC9C,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;gBACxB,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;gBAC7B,KAAK,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC;aAClC,CAAC,CAAC;QACL,CAAC,CAAC;QACJ,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CACvC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YACzB,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC9C,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAChE,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;gBACxB,OAAO;gBACP,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC7B,MAAM;gBACN,MAAM,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;gBACtC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;gBACxB,MAAM,EAAE,OAAO,EAAE,MAAM;aACxB,CAAC,CAAC;QACL,CAAC,CAAC;QACJ,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CACzC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CACrB,OAAO,CAAC,MAAM,CAAC;YACb,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC;YACxC,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;SAC9B,CAAC,CACH;QACH,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CACxC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACjF,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CACxC,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAC1B,MAAM,OAAO,CAAC,KAAK,CAAC;YAClB,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;YACvC,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;YAC7B,UAAU,EAAE,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC;SAC/C,CAAC,CACH;KACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"interactive-session-tools.js","sourceRoot":"","sources":["../../src/tools/interactive-session-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function sshNeedsTerminal(base: string, args: readonly string[]): boolean;
@@ -0,0 +1,35 @@
1
+ const SSH_VALUE_FLAGS = new Set("BbcDEeFIiJLlmOopQRSWw");
2
+ const SCP_VALUE_FLAGS = new Set("cDFiJl oPSX".replace(/ /g, ""));
3
+ export function sshNeedsTerminal(base, args) {
4
+ if (base === "rsync")
5
+ return !args.some(arg => arg === "--version" || arg === "--help" || arg === "-V");
6
+ const valueFlags = base === "ssh" ? SSH_VALUE_FLAGS : SCP_VALUE_FLAGS;
7
+ let batchMode;
8
+ for (let index = 0; index < args.length; index += 1) {
9
+ const token = args[index];
10
+ if (token === "--help")
11
+ return false;
12
+ if (!token.startsWith("-") || token === "--")
13
+ break;
14
+ for (let position = 1; position < token.length; position += 1) {
15
+ const flag = token[position];
16
+ if (flag === "V" || flag === "h")
17
+ return false;
18
+ if (base === "ssh" && (flag === "G" || flag === "Q"))
19
+ return false;
20
+ if (base === "scp" && flag === "B")
21
+ batchMode ??= true;
22
+ if (!valueFlags.has(flag))
23
+ continue;
24
+ const value = token.slice(position + 1) || args[++index] || "";
25
+ if (flag === "o" && batchMode === undefined) {
26
+ const match = /^BatchMode(?:\s*=\s*|\s+)(yes|no)$/i.exec(value.trim());
27
+ if (match)
28
+ batchMode = match[1].toLowerCase() === "yes";
29
+ }
30
+ break;
31
+ }
32
+ }
33
+ return batchMode !== true;
34
+ }
35
+ //# sourceMappingURL=interactive-probes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-probes.js","sourceRoot":"","sources":["../../../src/tools/shell/interactive-probes.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACzD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAEjE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAuB;IACpE,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC;IACxG,MAAM,UAAU,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC;IACtE,IAAI,SAA8B,CAAC;IACnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI;YAAE,MAAM;QACpD,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAE,CAAC;YAC9B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;gBAAE,OAAO,KAAK,CAAC;YAC/C,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YACnE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG;gBAAE,SAAS,KAAK,IAAI,CAAC;YACvD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/D,IAAI,IAAI,KAAK,GAAG,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,qCAAqC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvE,IAAI,KAAK;oBAAE,SAAS,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;YAC3D,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,SAAS,KAAK,IAAI,CAAC;AAC5B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { OutputDecoder, RingBuffer } from "./shell/capture.js";
3
+ import { sshNeedsTerminal } from "./shell/interactive-probes.js";
3
4
  import { shellExecAttempt, } from "./shell/exec-attempt.js";
4
5
  import { allowInteractiveStdinInherit, assignAllowInteractiveStdinInherit } from "./shell/internals.js";
5
6
  export { spawnArgv } from "./shell/spawn-argv.js";
@@ -210,6 +211,15 @@ function commandHeadIndex(tokens) {
210
211
  const wrapper = candidate.replace(/^.*[\\\/]/, "").toLowerCase();
211
212
  if (!COMMAND_WRAPPERS.has(wrapper))
212
213
  break;
214
+ if (wrapper === "command") {
215
+ for (let flagIndex = index + 1; flagIndex < tokens.length; flagIndex += 1) {
216
+ const flag = tokens[flagIndex];
217
+ if (!flag.startsWith("-") || flag === "--")
218
+ break;
219
+ if (/^-[pvV]*[vV][pvV]*$/.test(flag))
220
+ return index;
221
+ }
222
+ }
213
223
  index = skipWrapperOptions(tokens, index + 1, wrapper);
214
224
  }
215
225
  return index;
@@ -337,7 +347,6 @@ export function interactiveStdinKind(command, options = {}) {
337
347
  continue;
338
348
  const base = head.replace(/^.*[\\\/]/, "").toLowerCase();
339
349
  const rest = tokens.slice(i + 1);
340
- const restJoined = rest.join(" ");
341
350
  if (base === "sudo" || base === "doas" || base === "su") {
342
351
  const flags = elevationInputFlags(base, rest);
343
352
  if (flags.nonInteractive)
@@ -350,7 +359,7 @@ export function interactiveStdinKind(command, options = {}) {
350
359
  return "elevate";
351
360
  }
352
361
  if (base === "ssh" || base === "scp" || base === "rsync") {
353
- if (/-o\s+batchmode=yes/i.test(restJoined))
362
+ if (!sshNeedsTerminal(base, rest))
354
363
  continue;
355
364
  tty = true;
356
365
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ProviderId, ToolResult } from "../types.js";
1
+ import type { ChatMessage, ProviderId, ToolResult } from "../types.js";
2
2
  import type { SecretPort } from "../app/ports/secret-port.js";
3
3
  import type { JobMonitorMetadata } from "./jobs.js";
4
4
  export interface ToolRunOptions {
@@ -9,6 +9,7 @@ export interface ToolRunOptions {
9
9
  requestSecret?: SecretPort["request"] | undefined;
10
10
  confirmed?: boolean | undefined;
11
11
  userPrompt?: string | undefined;
12
+ userMessages?: readonly ChatMessage[] | undefined;
12
13
  sessionId?: string | undefined;
13
14
  taskId?: string | undefined;
14
15
  parentTaskId?: string | undefined;
@@ -162,7 +162,7 @@ export function ToolCard(props) {
162
162
  }, [formatMdRead, item, tail, expanded, termWidth, theme, colorMode]);
163
163
  const presentsRawOutput = !(isFsRead || isBatch || isBatchLive || isFileDiff || isWriteMany || isMutation || formatMdRead);
164
164
  const { lines, hiddenAboveCount, truncatedNotice } = useMemo(() => presentsRawOutput
165
- ? presentOutput(tail, spool.state(item.toolCallId), expanded)
165
+ ? presentOutput(tail, spool.state(item.toolCallId), expanded, item.name)
166
166
  : EMPTY_OUTPUT, [presentsRawOutput, tail, spool, item.toolCallId, item.outputBytes, expanded, item.name]);
167
167
  const statusFg = theme[STATUS_COLOR[item.status]];
168
168
  const highlight = statusFg;
@@ -328,7 +328,7 @@ export function ToolCard(props) {
328
328
  marginBottom: 0,
329
329
  paddingTop: 0,
330
330
  flexShrink: 0,
331
- }, children: [_jsxs("text", { selectable: true, style: { fg: theme.muted }, children: [argsLabel, ":", " "] }), _jsx("text", { selectable: true, style: { fg: theme.inputBorder }, children: argsDisplay })] })) : null, pathLine && !isFileDiff ? (_jsx("box", { style: { flexDirection: "row", width: "100%", marginTop: 0 }, children: _jsx(LinkableText, { text: pathLine, theme: theme, fg: theme.muted, selectable: true }) })) : null, detail ? _jsx(LinkableText, { text: detail, theme: theme, fg: theme.mode, selectable: true }) : null, summary ? (_jsx("text", { selectable: true, style: { fg: summaryFg, attributes: TextAttributes.DIM }, children: summary })) : null, isBatch
331
+ }, children: [_jsxs("text", { selectable: true, style: { fg: theme.muted, width: argsLabel.length + 2, flexShrink: 0 }, children: [argsLabel, ":", " "] }), _jsx("text", { selectable: true, style: { fg: theme.inputBorder, flexGrow: 1, flexShrink: 1, minWidth: 0 }, children: argsDisplay })] })) : null, pathLine && !isFileDiff ? (_jsx("box", { style: { flexDirection: "row", width: "100%", marginTop: 0 }, children: _jsx(LinkableText, { text: pathLine, theme: theme, fg: theme.muted, selectable: true }) })) : null, detail ? _jsx(LinkableText, { text: detail, theme: theme, fg: theme.mode, selectable: true }) : null, summary ? (_jsx("text", { selectable: true, style: { fg: summaryFg, attributes: TextAttributes.DIM }, children: summary })) : null, isBatch
332
332
  ? batchSections.map((section) => (_jsx(BatchSubCard, { section: section, theme: theme, expanded: batchExpanded, parentExpanded: batchExpanded, onOpen: openSection, contentWidth: Math.max(8, diffPaneWidth - 6) }, `${item.id}-sub-${section.index}`)))
333
333
  : null, !isBatch && !isBatchLive && isFileDiff && fileChanges && fileChanges[0]?.kind !== "delete" ? (_jsxs("box", { style: {
334
334
  flexDirection: "column",