diff --git a/docs/design-npm-global-install-fixes.html b/docs/design-npm-global-install-fixes.html index cfb8b9680..4ddc0bb1e 100644 --- a/docs/design-npm-global-install-fixes.html +++ b/docs/design-npm-global-install-fixes.html @@ -672,13 +672,13 @@ const nodeModules = resolve(webDir, "node_modules", "@composio", "ao-core");
// start.ts — interactive install with user consent
@@ -687,7 +687,7 @@ async function ensureTmux(): Promise<void> {
   if (hasTmux) return;
 
   console.log("⚠ tmux is required for runtime \"tmux\".");
-  const shouldInstall = await askYesNo("Install tmux now?", true);
+  const shouldInstall = await askYesNo("Install tmux now?", true, false);
   if (shouldInstall) {
     const installed = await tryInstallWithAttempts(
       tmuxInstallAttempts(),
@@ -794,7 +794,7 @@ async function ensureTmux(): Promise<void> {
     
  • Always asks first — uses askYesNo() before running any install command. No silent sudo or background package manager invocations.
  • Logs each command — shows "Running: brew install tmux" (via tryInstallWithAttempts()) so the user knows exactly what's executing.
  • Blocks on required failures — for tmux and git, prints platform-specific manual install instructions and exits rather than silently degrading the experience.
  • -
  • Non-interactive fallback — when not a TTY (CI, piped scripts, agent callers), canPromptForInstall() returns false and askYesNo() returns its default without prompting. Required tools default to true (attempt install), optional tools default to false (skip).
  • +
  • Non-interactive fallback — when not a TTY (CI, piped scripts, agent callers), canPromptForInstall() returns false and askYesNo() returns its non-interactive default without prompting. Required and optional tools both default to false (skip), then print manual instructions when required tools are missing.
  • Consistent pattern — all prerequisite helpers (ensureTmux(), ensureGit(), promptInstallAgentRuntime()) follow the same structure: detect → prompt → install → verify → block or skip.
  • @@ -891,8 +891,9 @@ function launch(): ChildProcess {

    7. Files Changed