@markusylisiurunen/tau 0.3.27 → 0.3.29

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 (93) hide show
  1. package/README.md +10 -8
  2. package/dist/core/config/runtime.js +5 -1
  3. package/dist/core/config/runtime.js.map +1 -1
  4. package/dist/core/config/runtime_config_snapshot.js +5 -1
  5. package/dist/core/config/runtime_config_snapshot.js.map +1 -1
  6. package/dist/core/config/schema.js.map +1 -1
  7. package/dist/core/diff_review/snapshot.js +3 -3
  8. package/dist/core/diff_review/snapshot.js.map +1 -1
  9. package/dist/core/index.js +0 -4
  10. package/dist/core/index.js.map +1 -1
  11. package/dist/core/runtime/runtime_bootstrap.js +5 -1
  12. package/dist/core/runtime/runtime_bootstrap.js.map +1 -1
  13. package/dist/core/session/direct_bash.js +1 -0
  14. package/dist/core/session/direct_bash.js.map +1 -1
  15. package/dist/core/session/runner.js +1 -0
  16. package/dist/core/session/runner.js.map +1 -1
  17. package/dist/core/session/session_engine.js +48 -12
  18. package/dist/core/session/session_engine.js.map +1 -1
  19. package/dist/core/subagents/control_plane.js +0 -37
  20. package/dist/core/subagents/control_plane.js.map +1 -1
  21. package/dist/core/subagents/subagent_engine.js +5 -8
  22. package/dist/core/subagents/subagent_engine.js.map +1 -1
  23. package/dist/core/telegram/adapter.js +51 -1
  24. package/dist/core/telegram/adapter.js.map +1 -1
  25. package/dist/core/telegram/config.js +0 -8
  26. package/dist/core/telegram/config.js.map +1 -1
  27. package/dist/core/telegram/session_manager.js +128 -49
  28. package/dist/core/telegram/session_manager.js.map +1 -1
  29. package/dist/core/telegram/workspace.js +18 -76
  30. package/dist/core/telegram/workspace.js.map +1 -1
  31. package/dist/core/tools/bash.js +16 -8
  32. package/dist/core/tools/bash.js.map +1 -1
  33. package/dist/core/tools/catalog.js +1 -5
  34. package/dist/core/tools/catalog.js.map +1 -1
  35. package/dist/core/tools/execution_backend.js +81 -153
  36. package/dist/core/tools/execution_backend.js.map +1 -1
  37. package/dist/core/tools/registry.js +0 -3
  38. package/dist/core/tools/registry.js.map +1 -1
  39. package/dist/core/tools/spawn_agent.js +1 -1
  40. package/dist/core/tools/spawn_agent.js.map +1 -1
  41. package/dist/core/tools/terminate_agent.js +5 -11
  42. package/dist/core/tools/terminate_agent.js.map +1 -1
  43. package/dist/core/tools/tool_names.js +0 -8
  44. package/dist/core/tools/tool_names.js.map +1 -1
  45. package/dist/core/tools/wait_for_agents.js +3 -11
  46. package/dist/core/tools/wait_for_agents.js.map +1 -1
  47. package/dist/core/utils/compact.js +53 -11
  48. package/dist/core/utils/compact.js.map +1 -1
  49. package/dist/core/utils/project_files.js +14 -1
  50. package/dist/core/utils/project_files.js.map +1 -1
  51. package/dist/core/utils/user_metadata.js +14 -0
  52. package/dist/core/utils/user_metadata.js.map +1 -1
  53. package/dist/core/version.js +1 -1
  54. package/dist/execution/cloudflare_sandbox_execution_environment.js +155 -112
  55. package/dist/execution/cloudflare_sandbox_execution_environment.js.map +1 -1
  56. package/dist/execution/fly_sprite_execution_environment.js +109 -91
  57. package/dist/execution/fly_sprite_execution_environment.js.map +1 -1
  58. package/dist/execution/sandbox_tool_helpers.js +0 -25
  59. package/dist/execution/sandbox_tool_helpers.js.map +1 -1
  60. package/dist/execution/tool_backend_execution_environment.js +4 -1
  61. package/dist/execution/tool_backend_execution_environment.js.map +1 -1
  62. package/dist/host/local_session_host.js +68 -53
  63. package/dist/host/local_session_host.js.map +1 -1
  64. package/dist/host/session_host.js +5 -0
  65. package/dist/host/session_host.js.map +1 -1
  66. package/dist/host/session_protocol_handler.js +108 -103
  67. package/dist/host/session_protocol_handler.js.map +1 -1
  68. package/dist/protocol/index.d.ts +2 -2
  69. package/dist/protocol/index.js +1 -1
  70. package/dist/protocol/index.js.map +1 -1
  71. package/dist/protocol/session_protocol.d.ts +21 -2
  72. package/dist/protocol/session_protocol.js +114 -28
  73. package/dist/protocol/session_protocol.js.map +1 -1
  74. package/dist/sdk/session.js +51 -2
  75. package/dist/sdk/session.js.map +1 -1
  76. package/dist/sdk/types.d.ts +5 -0
  77. package/dist/tui/session_chat_controller.js +5 -50
  78. package/dist/tui/session_chat_controller.js.map +1 -1
  79. package/dist/tui/session_tool_execution_backend.js +76 -98
  80. package/dist/tui/session_tool_execution_backend.js.map +1 -1
  81. package/dist/tui/ui/subagent_panel.js +0 -13
  82. package/dist/tui/ui/subagent_panel.js.map +1 -1
  83. package/package.json +1 -1
  84. package/dist/core/tools/emit_output.js +0 -58
  85. package/dist/core/tools/emit_output.js.map +0 -1
  86. package/dist/core/tools/grep.js +0 -250
  87. package/dist/core/tools/grep.js.map +0 -1
  88. package/dist/core/tools/list.js +0 -131
  89. package/dist/core/tools/list.js.map +0 -1
  90. package/dist/core/tools/read.js +0 -171
  91. package/dist/core/tools/read.js.map +0 -1
  92. package/dist/tui/ui/restricted_execution.js +0 -203
  93. package/dist/tui/ui/restricted_execution.js.map +0 -1
@@ -1,7 +1,8 @@
1
+ import { StringDecoder } from "node:string_decoder";
1
2
  import { SpritesClient } from "@fly/sprites";
2
- import { assertFileWithinMaxBytes, buildSandboxGrepDryRunResult, buildSandboxGrepErrorResult, resolveSandboxGrepPaths, } from "./sandbox_tool_helpers.js";
3
+ import { applyBashEnvironment, DEFAULT_COMMAND_CAPTURE_BYTES, } from "../core/tools/execution_backend.js";
4
+ import { assertFileWithinMaxBytes } from "./sandbox_tool_helpers.js";
3
5
  import { ToolBackendExecutionEnvironment } from "./tool_backend_execution_environment.js";
4
- const BASH_MAX_CAPTURE_BYTES = 1024 * 1024;
5
6
  const DEFAULT_BASE_URL = "https://api.sprites.dev";
6
7
  const DEFAULT_HOME = "/home/sprite";
7
8
  const HELPER_COMMAND_TIMEOUT_MS = 30_000;
@@ -71,23 +72,22 @@ export class FlySpriteExecutionEnvironmentResolver {
71
72
  }
72
73
  export function createFlySpriteToolExecutionBackend(options) {
73
74
  const worker = new FlySpriteWorker(options.sprite, options.cwd);
75
+ const runBash = async (command, runOptions = {}) => await worker.request("exec", {
76
+ command,
77
+ args: runOptions.args,
78
+ stdinBase64: runOptions.stdin?.toString("base64"),
79
+ cwd: runOptions.cwd ?? options.cwd,
80
+ timeoutMs: runOptions.timeoutMs,
81
+ env: applyBashEnvironment(runOptions.env),
82
+ maxCaptureBytes: runOptions.maxCaptureBytes,
83
+ }, { signal: runOptions.signal });
84
+ const runNodeScript = (script, args = [], runOptions = {}) => runBash('exec "$0" "$@"', {
85
+ ...runOptions,
86
+ args: ["node", "-e", script, ...args],
87
+ });
74
88
  return {
75
- async runBash(command, runOptions = {}) {
76
- return await worker.request("exec", {
77
- command,
78
- cwd: runOptions.cwd ?? options.cwd,
79
- timeoutMs: runOptions.timeoutMs,
80
- }, { signal: runOptions.signal });
81
- },
82
- async runNodeScript(script, args = [], runOptions = {}) {
83
- return await worker.request("nodeScript", {
84
- script,
85
- args,
86
- cwd: runOptions.cwd ?? options.cwd,
87
- timeoutMs: runOptions.timeoutMs,
88
- maxCaptureBytes: runOptions.maxCaptureBytes,
89
- }, { signal: runOptions.signal });
90
- },
89
+ runBash,
90
+ runNodeScript,
91
91
  async readFile(path) {
92
92
  const result = await worker.request("readFile", {
93
93
  path,
@@ -99,6 +99,7 @@ export function createFlySpriteToolExecutionBackend(options) {
99
99
  const result = await worker.request("readFileBinary", {
100
100
  path,
101
101
  timeoutMs: HELPER_COMMAND_TIMEOUT_MS,
102
+ maxBytes: readOptions.maxBytes,
102
103
  });
103
104
  const content = Buffer.from(result.contentBase64, "base64");
104
105
  const bytes = result.bytes;
@@ -127,27 +128,6 @@ export function createFlySpriteToolExecutionBackend(options) {
127
128
  });
128
129
  return { path, entries: result.entries };
129
130
  },
130
- async grep(grepOptions) {
131
- const resolvedPaths = resolveSandboxGrepPaths(grepOptions.paths);
132
- if (grepOptions.dryRun) {
133
- return buildSandboxGrepDryRunResult(resolvedPaths);
134
- }
135
- const result = await worker
136
- .request("grep", {
137
- cwd: options.cwd,
138
- baseArgs: grepOptions.baseArgs,
139
- pattern: grepOptions.pattern,
140
- paths: resolvedPaths,
141
- timeoutMs: grepOptions.timeoutMs,
142
- }, { signal: grepOptions.signal })
143
- .catch((err) => buildSandboxGrepErrorResult(err, resolvedPaths));
144
- return {
145
- output: result.output,
146
- exitCode: result.exitCode,
147
- captureTruncated: "truncated" in result ? result.truncated : result.captureTruncated,
148
- resolvedPaths,
149
- };
150
- },
151
131
  async dispose() {
152
132
  await worker.dispose();
153
133
  },
@@ -159,15 +139,17 @@ class FlySpriteWorker {
159
139
  command;
160
140
  readyPromise;
161
141
  stdoutBuffer = new LineBuffer();
142
+ stdoutDecoder = new StringDecoder("utf8");
162
143
  nextRequestId = 1;
163
144
  pendingRequests = new Map();
145
+ disposePromise;
164
146
  closed = false;
165
147
  constructor(sprite, cwd) {
166
148
  this.sprite = sprite;
167
149
  this.cwd = cwd;
168
150
  }
169
151
  async request(method, params, options = {}) {
170
- if (this.closed) {
152
+ if (this.closed && method !== "shutdown") {
171
153
  throw new Error("Fly Sprite worker is closed");
172
154
  }
173
155
  await this.ensureStarted();
@@ -208,15 +190,21 @@ class FlySpriteWorker {
208
190
  });
209
191
  }
210
192
  async dispose() {
211
- if (this.closed) {
212
- return;
213
- }
214
- if (this.command) {
215
- await this.request("shutdown", {}).catch(() => undefined);
216
- this.command.kill();
217
- this.command = undefined;
193
+ if (!this.disposePromise) {
194
+ this.disposePromise = this.disposeNow();
218
195
  }
196
+ return await this.disposePromise;
197
+ }
198
+ async disposeNow() {
219
199
  this.closed = true;
200
+ const command = this.command;
201
+ if (command) {
202
+ await this.request("shutdown", { timeoutMs: HELPER_COMMAND_TIMEOUT_MS }).catch(() => undefined);
203
+ command.kill();
204
+ if (this.command === command) {
205
+ this.command = undefined;
206
+ }
207
+ }
220
208
  this.rejectAllPending(new Error("Fly Sprite worker was disposed"));
221
209
  }
222
210
  async ensureStarted() {
@@ -233,6 +221,7 @@ class FlySpriteWorker {
233
221
  });
234
222
  this.command = command;
235
223
  this.stdoutBuffer.clear();
224
+ this.stdoutDecoder = new StringDecoder("utf8");
236
225
  return await new Promise((resolve, reject) => {
237
226
  let settled = false;
238
227
  const timer = setTimeout(() => {
@@ -278,7 +267,7 @@ class FlySpriteWorker {
278
267
  });
279
268
  }
280
269
  handleStdoutChunk(chunk, onReady) {
281
- for (const line of this.stdoutBuffer.push(chunk.toString("utf-8"))) {
270
+ for (const line of this.stdoutBuffer.push(this.stdoutDecoder.write(chunk))) {
282
271
  this.handleStdoutLine(line, onReady);
283
272
  }
284
273
  }
@@ -384,7 +373,7 @@ const path = require("node:path");
384
373
  const readline = require("node:readline");
385
374
  const { spawn } = require("node:child_process");
386
375
 
387
- const BASH_MAX_CAPTURE_BYTES = ${BASH_MAX_CAPTURE_BYTES};
376
+ const DEFAULT_COMMAND_CAPTURE_BYTES = ${DEFAULT_COMMAND_CAPTURE_BYTES};
388
377
  const COMMAND_STOP_GRACE_MS = ${COMMAND_STOP_GRACE_MS};
389
378
  const running = new Map();
390
379
  const rl = readline.createInterface({ input: process.stdin });
@@ -405,6 +394,11 @@ async function handleLine(line) {
405
394
 
406
395
  try {
407
396
  if (request.method === "shutdown") {
397
+ const active = [...running.values()];
398
+ for (const runningRequest of active) {
399
+ runningRequest.cancel("abort");
400
+ }
401
+ await Promise.all(active.map((runningRequest) => runningRequest.stopped));
408
402
  respond(request.id, { exitCode: 0 });
409
403
  process.exit(0);
410
404
  return;
@@ -420,30 +414,17 @@ async function handleLine(line) {
420
414
  }
421
415
 
422
416
  if (request.method === "exec") {
423
- const result = await runCommand(request.id, "sh", ["-lc", request.command], {
424
- cwd: request.cwd,
425
- timeoutMs: request.timeoutMs,
426
- });
427
- respond(request.id, result);
428
- return;
429
- }
430
-
431
- if (request.method === "nodeScript") {
432
- const result = await runCommand(request.id, "node", ["-e", request.script, ...request.args], {
433
- cwd: request.cwd,
434
- timeoutMs: request.timeoutMs,
435
- maxCaptureBytes: request.maxCaptureBytes,
436
- });
437
- respond(request.id, result);
438
- return;
439
- }
440
-
441
- if (request.method === "grep") {
442
417
  const result = await runCommand(
443
418
  request.id,
444
- "rg",
445
- [...request.baseArgs, "--", request.pattern, ...request.paths],
446
- { cwd: request.cwd, timeoutMs: request.timeoutMs },
419
+ "bash",
420
+ ["-lc", request.command, ...(request.args ?? [])],
421
+ {
422
+ cwd: request.cwd,
423
+ timeoutMs: request.timeoutMs,
424
+ env: request.env,
425
+ maxCaptureBytes: request.maxCaptureBytes,
426
+ stdinBase64: request.stdinBase64,
427
+ },
447
428
  );
448
429
  respond(request.id, result);
449
430
  return;
@@ -456,7 +437,18 @@ async function handleLine(line) {
456
437
  }
457
438
 
458
439
  if (request.method === "readFileBinary") {
440
+ const stats = await fs.promises.stat(request.path);
441
+ if (request.maxBytes !== undefined && stats.size > request.maxBytes) {
442
+ throw new Error(
443
+ "file exceeds maximum size of " + request.maxBytes + " bytes (got " + stats.size + " bytes).",
444
+ );
445
+ }
459
446
  const content = await fs.promises.readFile(request.path);
447
+ if (request.maxBytes !== undefined && content.byteLength > request.maxBytes) {
448
+ throw new Error(
449
+ "file exceeds maximum size of " + request.maxBytes + " bytes (got " + content.byteLength + " bytes).",
450
+ );
451
+ }
460
452
  respond(request.id, {
461
453
  contentBase64: content.toString("base64"),
462
454
  bytes: content.byteLength,
@@ -506,24 +498,34 @@ function runCommand(id, command, args, options) {
506
498
  let settled = false;
507
499
  let timer;
508
500
  let stopTimer;
509
- const maxCaptureBytes =
510
- options.maxCaptureBytes === undefined ? BASH_MAX_CAPTURE_BYTES : options.maxCaptureBytes;
501
+ let markStopped = () => {};
502
+ const stopped = new Promise((resolveStopped) => {
503
+ markStopped = resolveStopped;
504
+ });
505
+ const maxCaptureBytes = options.maxCaptureBytes ?? DEFAULT_COMMAND_CAPTURE_BYTES;
511
506
 
512
507
  const child = spawn(command, args, {
513
508
  cwd: options.cwd,
509
+ env: { ...process.env, ...options.env },
514
510
  detached: true,
515
- stdio: ["ignore", "pipe", "pipe"],
511
+ stdio: [options.stdinBase64 === undefined ? "ignore" : "pipe", "pipe", "pipe"],
516
512
  });
513
+ if (options.stdinBase64 !== undefined) {
514
+ child.stdin.end(Buffer.from(options.stdinBase64, "base64"));
515
+ }
517
516
 
518
517
  const trimChunks = (targetChunks, targetBytes) => {
519
518
  let nextBytes = targetBytes;
520
- while (
521
- maxCaptureBytes !== null &&
522
- nextBytes > maxCaptureBytes &&
523
- targetChunks.length > 0
524
- ) {
525
- const removed = targetChunks.shift();
526
- nextBytes -= removed.byteLength;
519
+ while (nextBytes > maxCaptureBytes && targetChunks.length > 0) {
520
+ const excessBytes = nextBytes - maxCaptureBytes;
521
+ const first = targetChunks[0];
522
+ if (first.byteLength <= excessBytes) {
523
+ targetChunks.shift();
524
+ nextBytes -= first.byteLength;
525
+ } else {
526
+ targetChunks[0] = first.subarray(excessBytes);
527
+ nextBytes -= excessBytes;
528
+ }
527
529
  truncated = true;
528
530
  }
529
531
  return nextBytes;
@@ -552,10 +554,11 @@ function runCommand(id, command, args, options) {
552
554
  if (stopTimer) clearTimeout(stopTimer);
553
555
  };
554
556
 
555
- const finish = (exitCode) => {
557
+ const finish = (exitCode, closeSignal = null) => {
556
558
  if (settled) return;
557
559
  settled = true;
558
560
  cleanup();
561
+ markStopped();
559
562
  let output = Buffer.concat(chunks).toString("utf-8");
560
563
  let stdout = Buffer.concat(stdoutChunks).toString("utf-8");
561
564
  let stderr = Buffer.concat(stderrChunks).toString("utf-8");
@@ -568,21 +571,36 @@ function runCommand(id, command, args, options) {
568
571
  output += note;
569
572
  stderr += note;
570
573
  }
571
- resolve({ output, stdout, stderr, exitCode, truncated });
574
+ resolve({
575
+ output,
576
+ stdout,
577
+ stderr,
578
+ exitCode,
579
+ truncated,
580
+ timedOut,
581
+ aborted,
582
+ closeSignal,
583
+ });
572
584
  };
573
585
 
574
- const cancel = (reason) => {
575
- if (reason === "timeout") timedOut = true;
576
- if (reason === "abort") aborted = true;
586
+ const killProcessGroup = (signal) => {
577
587
  try {
578
- process.kill(-child.pid);
588
+ process.kill(-child.pid, signal);
579
589
  } catch {
580
- child.kill();
590
+ child.kill(signal);
581
591
  }
582
- stopTimer = setTimeout(() => finish(null), COMMAND_STOP_GRACE_MS);
583
592
  };
584
593
 
585
- running.set(id, { cancel });
594
+ const cancel = (reason) => {
595
+ if (settled) return;
596
+ if (reason === "timeout") timedOut = true;
597
+ if (reason === "abort") aborted = true;
598
+ killProcessGroup("SIGTERM");
599
+ if (stopTimer) clearTimeout(stopTimer);
600
+ stopTimer = setTimeout(() => killProcessGroup("SIGKILL"), COMMAND_STOP_GRACE_MS);
601
+ };
602
+
603
+ running.set(id, { cancel, stopped });
586
604
 
587
605
  if (options.timeoutMs && Number.isFinite(options.timeoutMs) && options.timeoutMs > 0) {
588
606
  timer = setTimeout(() => cancel("timeout"), options.timeoutMs);
@@ -594,7 +612,7 @@ function runCommand(id, command, args, options) {
594
612
  append(Buffer.from(err.message), "stderr");
595
613
  finish(1);
596
614
  });
597
- child.on("close", finish);
615
+ child.on("close", (exitCode, closeSignal) => finish(exitCode, closeSignal));
598
616
  });
599
617
  }
600
618
 
@@ -1 +1 @@
1
- {"version":3,"file":"fly_sprite_execution_environment.js","sourceRoot":"","sources":["../../src/execution/fly_sprite_execution_environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fly_sprite_execution_environment.js","sourceRoot":"","sources":["../../src/execution/fly_sprite_execution_environment.ts"],"names":[],"mappings":"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"}
@@ -27,29 +27,4 @@ export function buildWriteFileResult(path, content) {
27
27
  lines: content.split("\n").length,
28
28
  };
29
29
  }
30
- export function resolveSandboxGrepPaths(paths) {
31
- return paths.map((path) => {
32
- const cleaned = path.trim();
33
- if (!cleaned) {
34
- throw new Error("invalid grep path: empty path.");
35
- }
36
- return cleaned;
37
- });
38
- }
39
- export function buildSandboxGrepDryRunResult(resolvedPaths) {
40
- return {
41
- output: "",
42
- exitCode: 0,
43
- captureTruncated: false,
44
- resolvedPaths,
45
- };
46
- }
47
- export function buildSandboxGrepErrorResult(err, resolvedPaths) {
48
- return {
49
- output: err instanceof Error ? err.message : String(err),
50
- exitCode: 2,
51
- captureTruncated: false,
52
- resolvedPaths,
53
- };
54
- }
55
30
  //# sourceMappingURL=sandbox_tool_helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox_tool_helpers.js","sourceRoot":"","sources":["../../src/execution/sandbox_tool_helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,2BAA2B;IAC3B,+BAA+B;IAC/B,iFAAiF;IACjF,mBAAmB;IACnB,mCAAmC;IACnC,oCAAoC;IACpC,MAAM;IACN,uCAAuC;CACxC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEX,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa,EAAE,QAA4B;IAClF,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,gCAAgC,WAAW,CAAC,QAAQ,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC,IAAI,CACrF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,OAAe;IAChE,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1C,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAwB;IAC9D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,aAAuB;IAClE,OAAO;QACL,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,CAAC;QACX,gBAAgB,EAAE,KAAK;QACvB,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,GAAY,EACZ,aAAuB;IAEvB,OAAO;QACL,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACxD,QAAQ,EAAE,CAAC;QACX,gBAAgB,EAAE,KAAK;QACvB,aAAa;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sandbox_tool_helpers.js","sourceRoot":"","sources":["../../src/execution/sandbox_tool_helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,2BAA2B;IAC3B,+BAA+B;IAC/B,iFAAiF;IACjF,mBAAmB;IACnB,mCAAmC;IACnC,oCAAoC;IACpC,MAAM;IACN,uCAAuC;CACxC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEX,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa,EAAE,QAA4B;IAClF,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,gCAAgC,WAAW,CAAC,QAAQ,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC,IAAI,CACrF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,OAAe;IAChE,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1C,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;KAClC,CAAC;AACJ,CAAC"}
@@ -14,7 +14,10 @@ export class ToolBackendExecutionEnvironment {
14
14
  this.cwd = options.snapshot.cwd;
15
15
  this.home = options.snapshot.home;
16
16
  this.backend = options.backend;
17
- this.scopedBackend = scopeToolExecutionBackend(options.backend, this.cwd, options.env);
17
+ this.scopedBackend = scopeToolExecutionBackend(options.backend, this.cwd, {
18
+ ...options.env,
19
+ HOME: this.home,
20
+ });
18
21
  this.toolRegistry = ToolCatalog.createRegistry(this.scopedBackend);
19
22
  }
20
23
  async resolveRuntimeConfig(cwd) {
@@ -1 +1 @@
1
- {"version":3,"file":"tool_backend_execution_environment.js","sourceRoot":"","sources":["../../src/execution/tool_backend_execution_environment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAEL,6BAA6B,GAC9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EACL,yBAAyB,GAE1B,MAAM,oCAAoC,CAAC;AAc5C,MAAM,OAAO,+BAA+B;IAGjC,GAAG,CAAS;IACZ,IAAI,CAAS;IACL,mBAAmB,CAAY;IAC/B,OAAO,CAAuB;IAC9B,aAAa,CAAuB;IACpC,YAAY,CAAe;IAE5C,YAAY,OAIX;QACC,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,yBAAyB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACvF,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,GAAW;QACpC,OAAO,MAAM,gCAAgC,CAAC;YAC5C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,OAA8C;QAE9C,MAAM,eAAe,GAA2B,MAAM,6BAA6B,CAAC;YAClF,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,eAAe;YACf,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnD,CAAC;IAED,uBAAuB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"tool_backend_execution_environment.js","sourceRoot":"","sources":["../../src/execution/tool_backend_execution_environment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAEL,6BAA6B,GAC9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EACL,yBAAyB,GAE1B,MAAM,oCAAoC,CAAC;AAc5C,MAAM,OAAO,+BAA+B;IAGjC,GAAG,CAAS;IACZ,IAAI,CAAS;IACL,mBAAmB,CAAY;IAC/B,OAAO,CAAuB;IAC9B,aAAa,CAAuB;IACpC,YAAY,CAAe;IAE5C,YAAY,OAIX;QACC,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,yBAAyB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;YACxE,GAAG,OAAO,CAAC,GAAG;YACd,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,GAAW;QACpC,OAAO,MAAM,gCAAgC,CAAC;YAC5C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,OAA8C;QAE9C,MAAM,eAAe,GAA2B,MAAM,6BAA6B,CAAC;YAClF,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,eAAe;YACf,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnD,CAAC;IAED,uBAAuB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;CACF"}
@@ -8,6 +8,7 @@ import { applySessionProtocolDelta, createSessionProtocolDeltaMessage, createSes
8
8
  import { ClientToolBroker } from "./client_tool_broker.js";
9
9
  import { createExecutionEnvironmentSubagentRuntimeResolver } from "./execution_runtime.js";
10
10
  import { HostedEphemeralAgentSession } from "./hosted_ephemeral_agent_session.js";
11
+ import { SessionExecBusyError, } from "./session_host.js";
11
12
  const PATH_AUTOCOMPLETE_CACHE_TTL_MS = 5_000;
12
13
  export class LocalSessionHost {
13
14
  sessions = new Set();
@@ -249,9 +250,7 @@ export class LocalSessionHost {
249
250
  }
250
251
  }
251
252
  for (const session of this.sessions) {
252
- session.interruptTurn();
253
- session.interruptMaintenance();
254
- session.interruptSamples();
253
+ session.interruptActiveWork();
255
254
  }
256
255
  const settlementResults = await Promise.allSettled([...this.sessions].map((session) => session.waitForActiveWork()));
257
256
  for (const result of settlementResults) {
@@ -329,10 +328,9 @@ class LocalHostedSessionHandle {
329
328
  runtimeEventQueue = Promise.resolve();
330
329
  snapshotQueue = Promise.resolve();
331
330
  snapshotGeneration = 0;
332
- maintenanceAbortControllers = new Set();
333
- maintenancePromises = new Set();
334
- sampleAbortControllers = new Set();
335
- samplePromises = new Set();
331
+ activeWorkAbortControllers = new Set();
332
+ activeWorkPromises = new Set();
333
+ activeExecAbortControllers = new Map();
336
334
  activeTurnPromise;
337
335
  disposePromise;
338
336
  disposing = false;
@@ -446,19 +444,9 @@ class LocalHostedSessionHandle {
446
444
  this.assertActive();
447
445
  return this.runtime.interruptTurn();
448
446
  }
449
- interruptMaintenance() {
450
- let interrupted = false;
451
- for (const abortController of this.maintenanceAbortControllers) {
452
- if (!abortController.signal.aborted) {
453
- abortController.abort();
454
- interrupted = true;
455
- }
456
- }
457
- return interrupted;
458
- }
459
- interruptSamples() {
460
- let interrupted = false;
461
- for (const abortController of this.sampleAbortControllers) {
447
+ interruptActiveWork() {
448
+ let interrupted = this.runtime.interruptTurn();
449
+ for (const abortController of this.activeWorkAbortControllers) {
462
450
  if (!abortController.signal.aborted) {
463
451
  abortController.abort();
464
452
  interrupted = true;
@@ -469,8 +457,7 @@ class LocalHostedSessionHandle {
469
457
  async waitForActiveWork() {
470
458
  await Promise.allSettled([
471
459
  ...(this.activeTurnPromise ? [this.activeTurnPromise] : []),
472
- ...this.maintenancePromises,
473
- ...this.samplePromises,
460
+ ...this.activeWorkPromises,
474
461
  ]);
475
462
  await this.runtimeEventQueue;
476
463
  }
@@ -483,30 +470,38 @@ class LocalHostedSessionHandle {
483
470
  return this.runtime.cancelTurnBoundaryStop();
484
471
  }
485
472
  async exec(options) {
486
- this.assertActive();
487
- const backend = this.executionEnvironment.getToolExecutionBackend();
488
- return await backend.runBash(options.command, {
489
- ...(options.cwd !== undefined ? { cwd: options.cwd } : {}),
490
- ...(options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {}),
491
- ...(options.signal !== undefined ? { signal: options.signal } : {}),
473
+ return await this.runExec(options.execId, options.signal, async (signal) => {
474
+ const backend = this.executionEnvironment.getToolExecutionBackend();
475
+ const result = await backend.runBash(options.command, {
476
+ ...(options.args !== undefined ? { args: options.args } : {}),
477
+ ...(options.env !== undefined ? { env: options.env } : {}),
478
+ ...(options.stdinBase64 !== undefined
479
+ ? { stdin: Buffer.from(options.stdinBase64, "base64") }
480
+ : {}),
481
+ ...(options.cwd !== undefined ? { cwd: options.cwd } : {}),
482
+ ...(options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {}),
483
+ ...(options.maxCaptureBytes !== undefined
484
+ ? { maxCaptureBytes: options.maxCaptureBytes }
485
+ : {}),
486
+ signal,
487
+ });
488
+ signal.throwIfAborted();
489
+ return result;
492
490
  });
493
491
  }
492
+ cancelExec(execId) {
493
+ const controller = this.activeExecAbortControllers.get(execId);
494
+ if (!controller || controller.signal.aborted) {
495
+ return false;
496
+ }
497
+ controller.abort();
498
+ return true;
499
+ }
494
500
  async sample(options) {
495
501
  this.assertActive();
496
- const abortController = new AbortController();
497
- const signal = options.signal
498
- ? AbortSignal.any([options.signal, abortController.signal])
499
- : abortController.signal;
500
- this.sampleAbortControllers.add(abortController);
501
- const promise = this.session.sample({ ...options, signal }).then((message) => ({ message }));
502
- this.samplePromises.add(promise);
503
- try {
504
- return await promise;
505
- }
506
- finally {
507
- this.sampleAbortControllers.delete(abortController);
508
- this.samplePromises.delete(promise);
509
- }
502
+ return await this.runActiveWork(async (signal) => ({
503
+ message: await this.session.sample({ ...options, signal }),
504
+ }), options.signal);
510
505
  }
511
506
  async setReasoning(reasoning) {
512
507
  this.assertActive();
@@ -695,16 +690,41 @@ class LocalHostedSessionHandle {
695
690
  }
696
691
  async runMaintenance(operation) {
697
692
  this.assertActive();
693
+ return await this.runActiveWork(operation);
694
+ }
695
+ async runExec(execId, externalSignal, operation) {
696
+ this.assertActive();
697
+ if (this.activeExecAbortControllers.has(execId)) {
698
+ throw new SessionExecBusyError(execId);
699
+ }
700
+ const abortController = new AbortController();
701
+ this.activeExecAbortControllers.set(execId, abortController);
702
+ const signal = externalSignal
703
+ ? AbortSignal.any([externalSignal, abortController.signal])
704
+ : abortController.signal;
705
+ try {
706
+ return await this.runActiveWork(operation, signal);
707
+ }
708
+ finally {
709
+ if (this.activeExecAbortControllers.get(execId) === abortController) {
710
+ this.activeExecAbortControllers.delete(execId);
711
+ }
712
+ }
713
+ }
714
+ async runActiveWork(operation, externalSignal) {
698
715
  const abortController = new AbortController();
699
- this.maintenanceAbortControllers.add(abortController);
700
- const promise = operation(abortController.signal);
701
- this.maintenancePromises.add(promise);
716
+ const signal = externalSignal
717
+ ? AbortSignal.any([externalSignal, abortController.signal])
718
+ : abortController.signal;
719
+ this.activeWorkAbortControllers.add(abortController);
720
+ const promise = operation(signal);
721
+ this.activeWorkPromises.add(promise);
702
722
  try {
703
723
  return await promise;
704
724
  }
705
725
  finally {
706
- this.maintenanceAbortControllers.delete(abortController);
707
- this.maintenancePromises.delete(promise);
726
+ this.activeWorkAbortControllers.delete(abortController);
727
+ this.activeWorkPromises.delete(promise);
708
728
  }
709
729
  }
710
730
  async rewindToHistoryEntryId(historyEntryId) {
@@ -787,9 +807,7 @@ class LocalHostedSessionHandle {
787
807
  return;
788
808
  }
789
809
  const errors = [];
790
- this.runtime.interruptTurn();
791
- this.interruptMaintenance();
792
- this.interruptSamples();
810
+ this.interruptActiveWork();
793
811
  try {
794
812
  await this.waitForActiveWork();
795
813
  }
@@ -1794,9 +1812,6 @@ function agentRunFromSubagentEvent(event, existing) {
1794
1812
  if (event.type === "subagent_abort_requested" && existing) {
1795
1813
  return { ...existing, abortRequested: true };
1796
1814
  }
1797
- if (event.type === "subagent_emit_output" && existing) {
1798
- return { ...existing, progress: event.text };
1799
- }
1800
1815
  if (!state) {
1801
1816
  return undefined;
1802
1817
  }