@mario.andreschak/mcp-bash 3.46.0 → 3.46.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/tools.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type ChildProcess } from 'node:child_process';
2
2
  import { type IPty } from '@lydell/node-pty';
3
3
  import type { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
4
+ import { type ProcessTreeTerminationResult } from '@flujo-ai/mcp-shared';
4
5
  export declare const BASH_TERMINAL_APP_URI = "ui://bash/terminal";
5
6
  /** Test seam for the public timeout contract; not used by the runtime. */
6
7
  export declare function _resolveCommandTimeoutMsForTests(value: unknown): number | undefined;
@@ -62,6 +63,8 @@ interface BashSession {
62
63
  startedAt: number;
63
64
  endedAt?: number;
64
65
  cancelEscalation?: () => void;
66
+ /** Shared by concurrent kill calls so a process tree is terminated once. */
67
+ terminationPromise?: Promise<ProcessTreeTerminationResult>;
65
68
  reapTimer?: NodeJS.Timeout;
66
69
  /** Preflight found a command head that cannot be resolved on PATH. */
67
70
  missingExecutableWarning?: boolean;
@@ -153,7 +156,7 @@ export declare function bashSessionDiagnostics(): {
153
156
  * cleared too, so a repeated call cannot leave a handle keeping the event loop
154
157
  * alive after "shutdown".
155
158
  */
156
- export declare function shutdownBashSessions(): void;
159
+ export declare function shutdownBashSessions(): Promise<void>;
157
160
  /** Remove exactly one caller-supplied leading U+FEFF from PowerShell source. */
158
161
  export declare function normalizePowerShellSource(command: string): string;
159
162
  export declare function wrapPowerShellCommand(command: string): string;
@@ -206,5 +209,5 @@ export declare function createStreamDecoder(mode?: OutputEncodingMode): (chunk:
206
209
  export declare function bashToolDefinitions(): Tool[];
207
210
  export declare function bashCallTool(toolName: string, args: Record<string, unknown>, callerNodeId?: string, ownerScope?: string, context?: BashExecutionContext): Promise<CallToolResult>;
208
211
  /** Test-only: force-kill and clear all sessions. */
209
- export declare function _resetBashSessionsForTests(): void;
212
+ export declare function _resetBashSessionsForTests(): Promise<void>;
210
213
  export {};
package/dist/tools.js CHANGED
@@ -33,7 +33,7 @@ import path from 'node:path';
33
33
  import fs from 'node:fs';
34
34
  import { spawn, spawnSync } from 'node:child_process';
35
35
  import { spawn as spawnPty } from '@lydell/node-pty';
36
- import { createLogger, getDataDir, isInside, killProcessTree, loadEffectiveRoots, } from './shared.js';
36
+ import { createLogger, getDataDir, isInside, killProcessTree, killProcessTreeAndWait, loadEffectiveRoots, } from './shared.js';
37
37
  const BASH_SERVER_NAME = 'bash';
38
38
  export const BASH_TERMINAL_APP_URI = 'ui://bash/terminal';
39
39
  const log = createLogger('backend/services/mcp/internal/bashTools');
@@ -462,7 +462,7 @@ function ownerLiveSessionCount(ownerScope) {
462
462
  }
463
463
  /** Terminate one background session's whole process tree and drop its timers. */
464
464
  function terminateSession(session) {
465
- if (session.running) {
465
+ if (session.running && !session.terminationPromise) {
466
466
  try {
467
467
  session.cancelEscalation = killProcessTree(session.child);
468
468
  }
@@ -475,6 +475,24 @@ function terminateSession(session) {
475
475
  session.reapTimer = undefined;
476
476
  }
477
477
  }
478
+ /** Terminate once and wait until the tracked child is observably closed. */
479
+ async function terminateSessionAndWait(session) {
480
+ if (!session.running) {
481
+ return { pid: session.child.pid, exited: true, durationMs: 0 };
482
+ }
483
+ const existing = session.terminationPromise;
484
+ if (existing)
485
+ return await existing;
486
+ const termination = killProcessTreeAndWait(session.child);
487
+ session.terminationPromise = termination;
488
+ try {
489
+ return await termination;
490
+ }
491
+ finally {
492
+ if (session.terminationPromise === termination)
493
+ session.terminationPromise = undefined;
494
+ }
495
+ }
478
496
  /** Terminate one PTY session and drop its timers. */
479
497
  function terminateTerminal(terminal) {
480
498
  try {
@@ -624,28 +642,18 @@ function terminalMeta(visibility = ['model', 'app']) {
624
642
  * cleared too, so a repeated call cannot leave a handle keeping the event loop
625
643
  * alive after "shutdown".
626
644
  */
627
- export function shutdownBashSessions() {
645
+ export async function shutdownBashSessions() {
628
646
  if (global.__flujo_bash_sweep_timer) {
629
647
  clearInterval(global.__flujo_bash_sweep_timer);
630
648
  global.__flujo_bash_sweep_timer = undefined;
631
649
  }
650
+ const terminations = [];
632
651
  for (const child of foregroundChildren()) {
633
- try {
634
- killProcessTree(child);
635
- }
636
- catch {
637
- /* best-effort */
638
- }
652
+ terminations.push(killProcessTreeAndWait(child));
639
653
  }
640
654
  for (const s of sessions().values()) {
641
- if (s.running) {
642
- try {
643
- killProcessTree(s.child);
644
- }
645
- catch {
646
- /* best-effort */
647
- }
648
- }
655
+ if (s.running)
656
+ terminations.push(terminateSessionAndWait(s));
649
657
  if (s.reapTimer) {
650
658
  clearTimeout(s.reapTimer);
651
659
  s.reapTimer = undefined;
@@ -666,6 +674,7 @@ export function shutdownBashSessions() {
666
674
  terminal.reapTimer = undefined;
667
675
  }
668
676
  }
677
+ await Promise.allSettled(terminations);
669
678
  }
670
679
  function registerExitCleanup() {
671
680
  if (!global.__flujo_bash_sweep_timer) {
@@ -685,7 +694,7 @@ function registerExitCleanup() {
685
694
  if (global.__flujo_bash_cleanup_registered)
686
695
  return;
687
696
  global.__flujo_bash_cleanup_registered = true;
688
- const handler = () => shutdownBashSessions();
697
+ const handler = () => { void shutdownBashSessions(); };
689
698
  process.on('exit', handler);
690
699
  process.on('SIGINT', handler);
691
700
  process.on('SIGTERM', handler);
@@ -2019,12 +2028,16 @@ async function startTool(args, roots, ownerScope, context) {
2019
2028
  appendSessionOutput(`\n${err.message}`);
2020
2029
  session.running = false;
2021
2030
  session.endedAt = Date.now();
2031
+ session.cancelEscalation?.();
2032
+ session.cancelEscalation = undefined;
2022
2033
  scheduleReap(session);
2023
2034
  });
2024
2035
  child.on('close', (code) => {
2025
2036
  session.running = false;
2026
2037
  session.exitCode = code;
2027
2038
  session.endedAt = Date.now();
2039
+ session.cancelEscalation?.();
2040
+ session.cancelEscalation = undefined;
2028
2041
  spool.close();
2029
2042
  scheduleReap(session);
2030
2043
  });
@@ -2242,16 +2255,25 @@ function writeStdinTool(args, ownerScope) {
2242
2255
  }
2243
2256
  return textResult({ sessionId: id, written: payload.length, bomPolicy });
2244
2257
  }
2245
- function killTool(args, ownerScope) {
2258
+ async function killTool(args, ownerScope) {
2246
2259
  const id = String(args?.sessionId ?? '');
2247
2260
  const session = ownedSession(id, ownerScope);
2248
2261
  if (!session)
2249
2262
  return textResult({ error: `No background session with id "${id}".` }, true);
2250
- if (session.running) {
2251
- session.cancelEscalation = killProcessTree(session.child);
2252
- }
2263
+ const wasRunning = session.running;
2264
+ const termination = await terminateSessionAndWait(session);
2253
2265
  touchSession(session);
2254
- return textResult({ sessionId: id, killed: true });
2266
+ const killed = termination.exited && !session.running;
2267
+ return textResult({
2268
+ sessionId: id,
2269
+ killed,
2270
+ running: session.running,
2271
+ terminationWaitMs: termination.durationMs,
2272
+ ...(!wasRunning ? { alreadyExited: true } : {}),
2273
+ ...(!killed ? {
2274
+ error: `Session "${id}" is still observable as running after process-tree termination.`,
2275
+ } : {}),
2276
+ }, !killed);
2255
2277
  }
2256
2278
  function listSessionsTool(ownerScope) {
2257
2279
  const list = Array.from(sessions().values())
@@ -2529,7 +2551,7 @@ export async function bashCallTool(toolName, args, callerNodeId, ownerScope, con
2529
2551
  case 'write_stdin':
2530
2552
  return writeStdinTool(args, scope);
2531
2553
  case 'kill':
2532
- return killTool(args, scope);
2554
+ return await killTool(args, scope);
2533
2555
  case 'list_sessions':
2534
2556
  return listSessionsTool(scope);
2535
2557
  case 'release_owner':
@@ -2544,8 +2566,8 @@ export async function bashCallTool(toolName, args, callerNodeId, ownerScope, con
2544
2566
  }
2545
2567
  }
2546
2568
  /** Test-only: force-kill and clear all sessions. */
2547
- export function _resetBashSessionsForTests() {
2548
- shutdownBashSessions();
2569
+ export async function _resetBashSessionsForTests() {
2570
+ await shutdownBashSessions();
2549
2571
  foregroundChildren().clear();
2550
2572
  sessions().clear();
2551
2573
  terminalSessions().clear();