@monotykamary/localterm-server 2.66.8 → 2.66.10

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 (125) hide show
  1. package/dist/agent-git-status.d.ts +3 -0
  2. package/dist/agent-git-status.d.ts.map +1 -0
  3. package/dist/agent-git-status.js +46 -0
  4. package/dist/agent-git-status.js.map +1 -0
  5. package/dist/agent-log-utils.d.ts +18 -0
  6. package/dist/agent-log-utils.d.ts.map +1 -0
  7. package/dist/agent-log-utils.js +123 -0
  8. package/dist/agent-log-utils.js.map +1 -0
  9. package/dist/agent-models.d.ts +4 -0
  10. package/dist/agent-models.d.ts.map +1 -0
  11. package/dist/agent-models.js +100 -0
  12. package/dist/agent-models.js.map +1 -0
  13. package/dist/agent-runner.d.ts +3 -5
  14. package/dist/agent-runner.d.ts.map +1 -1
  15. package/dist/agent-runner.js +8 -522
  16. package/dist/agent-runner.js.map +1 -1
  17. package/dist/agent-session-reader.d.ts +3 -0
  18. package/dist/agent-session-reader.d.ts.map +1 -0
  19. package/dist/agent-session-reader.js +113 -0
  20. package/dist/agent-session-reader.js.map +1 -0
  21. package/dist/build-pty-environment.d.ts +8 -0
  22. package/dist/build-pty-environment.d.ts.map +1 -0
  23. package/dist/build-pty-environment.js +44 -0
  24. package/dist/build-pty-environment.js.map +1 -0
  25. package/dist/caffeinate-automatic-detector.d.ts +57 -0
  26. package/dist/caffeinate-automatic-detector.d.ts.map +1 -0
  27. package/dist/caffeinate-automatic-detector.js +275 -0
  28. package/dist/caffeinate-automatic-detector.js.map +1 -0
  29. package/dist/caffeinate-battery-guard.d.ts +35 -0
  30. package/dist/caffeinate-battery-guard.d.ts.map +1 -0
  31. package/dist/caffeinate-battery-guard.js +190 -0
  32. package/dist/caffeinate-battery-guard.js.map +1 -0
  33. package/dist/caffeinate-manager.d.ts +5 -31
  34. package/dist/caffeinate-manager.d.ts.map +1 -1
  35. package/dist/caffeinate-manager.js +55 -400
  36. package/dist/caffeinate-manager.js.map +1 -1
  37. package/dist/cdp/cdp-client.d.ts +4 -70
  38. package/dist/cdp/cdp-client.d.ts.map +1 -1
  39. package/dist/cdp/cdp-client.js +58 -418
  40. package/dist/cdp/cdp-client.js.map +1 -1
  41. package/dist/cdp/cdp-connection.d.ts +72 -0
  42. package/dist/cdp/cdp-connection.d.ts.map +1 -0
  43. package/dist/cdp/cdp-connection.js +272 -0
  44. package/dist/cdp/cdp-connection.js.map +1 -0
  45. package/dist/cdp/constants.d.ts +6 -0
  46. package/dist/cdp/constants.d.ts.map +1 -0
  47. package/dist/cdp/constants.js +9 -0
  48. package/dist/cdp/constants.js.map +1 -0
  49. package/dist/cdp/target-registry.d.ts +41 -0
  50. package/dist/cdp/target-registry.d.ts.map +1 -0
  51. package/dist/cdp/target-registry.js +118 -0
  52. package/dist/cdp/target-registry.js.map +1 -0
  53. package/dist/constants.d.ts +2 -0
  54. package/dist/constants.d.ts.map +1 -1
  55. package/dist/constants.js +2 -0
  56. package/dist/constants.js.map +1 -1
  57. package/dist/git-branch-metadata.d.ts +11 -0
  58. package/dist/git-branch-metadata.d.ts.map +1 -0
  59. package/dist/git-branch-metadata.js +85 -0
  60. package/dist/git-branch-metadata.js.map +1 -0
  61. package/dist/git-diff-cache.d.ts +13 -0
  62. package/dist/git-diff-cache.d.ts.map +1 -0
  63. package/dist/git-diff-cache.js +32 -0
  64. package/dist/git-diff-cache.js.map +1 -0
  65. package/dist/git-diff-parser.d.ts +15 -0
  66. package/dist/git-diff-parser.d.ts.map +1 -0
  67. package/dist/git-diff-parser.js +196 -0
  68. package/dist/git-diff-parser.js.map +1 -0
  69. package/dist/git-diff-service.d.ts +10 -0
  70. package/dist/git-diff-service.d.ts.map +1 -0
  71. package/dist/git-diff-service.js +395 -0
  72. package/dist/git-diff-service.js.map +1 -0
  73. package/dist/git-diff.d.ts +8 -41
  74. package/dist/git-diff.d.ts.map +1 -1
  75. package/dist/git-diff.js +5 -944
  76. package/dist/git-diff.js.map +1 -1
  77. package/dist/github-pr.d.ts +32 -0
  78. package/dist/github-pr.d.ts.map +1 -0
  79. package/dist/github-pr.js +266 -0
  80. package/dist/github-pr.js.map +1 -0
  81. package/dist/pi-binary-resolver.d.ts +6 -0
  82. package/dist/pi-binary-resolver.d.ts.map +1 -0
  83. package/dist/pi-binary-resolver.js +70 -0
  84. package/dist/pi-binary-resolver.js.map +1 -0
  85. package/dist/pi-rpc-client.d.ts +14 -0
  86. package/dist/pi-rpc-client.d.ts.map +1 -0
  87. package/dist/pi-rpc-client.js +87 -0
  88. package/dist/pi-rpc-client.js.map +1 -0
  89. package/dist/session-client-hub.d.ts +57 -0
  90. package/dist/session-client-hub.d.ts.map +1 -0
  91. package/dist/session-client-hub.js +435 -0
  92. package/dist/session-client-hub.js.map +1 -0
  93. package/dist/session-command-executor.d.ts +14 -0
  94. package/dist/session-command-executor.d.ts.map +1 -0
  95. package/dist/session-command-executor.js +207 -0
  96. package/dist/session-command-executor.js.map +1 -0
  97. package/dist/session-git-event-bridge.d.ts +16 -0
  98. package/dist/session-git-event-bridge.d.ts.map +1 -0
  99. package/dist/session-git-event-bridge.js +56 -0
  100. package/dist/session-git-event-bridge.js.map +1 -0
  101. package/dist/session-lifecycle-policy.d.ts +15 -0
  102. package/dist/session-lifecycle-policy.d.ts.map +1 -0
  103. package/dist/session-lifecycle-policy.js +105 -0
  104. package/dist/session-lifecycle-policy.js.map +1 -0
  105. package/dist/session-manager.d.ts +11 -42
  106. package/dist/session-manager.d.ts.map +1 -1
  107. package/dist/session-manager.js +72 -987
  108. package/dist/session-manager.js.map +1 -1
  109. package/dist/session-output-coordinator.d.ts +21 -0
  110. package/dist/session-output-coordinator.d.ts.map +1 -0
  111. package/dist/session-output-coordinator.js +134 -0
  112. package/dist/session-output-coordinator.js.map +1 -0
  113. package/dist/session-output-transport.d.ts +22 -0
  114. package/dist/session-output-transport.d.ts.map +1 -0
  115. package/dist/session-output-transport.js +160 -0
  116. package/dist/session-output-transport.js.map +1 -0
  117. package/dist/session.d.ts +0 -4
  118. package/dist/session.d.ts.map +1 -1
  119. package/dist/session.js +11 -258
  120. package/dist/session.js.map +1 -1
  121. package/dist/shell-hook-builder.d.ts +16 -0
  122. package/dist/shell-hook-builder.d.ts.map +1 -0
  123. package/dist/shell-hook-builder.js +230 -0
  124. package/dist/shell-hook-builder.js.map +1 -0
  125. package/package.json +1 -1
package/dist/session.js CHANGED
@@ -1,19 +1,19 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { EventEmitter } from "node:events";
3
- import { mkdirSync, rmSync, writeFileSync } from "node:fs";
3
+ import { rmSync } from "node:fs";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
6
6
  import { spawn } from "node-pty";
7
- import { ALT_SCREEN_FOREGROUND, COLORTERM_VALUE, DEFAULT_COLS, DEFAULT_ROWS, HOOKED_SHELL_NAMES, LOCALTERM_STATE_DIRNAME, LOCALTERM_VALUE, MAX_NOTIFICATION_LENGTH, MAX_PENDING_PARSE_BYTES, PTY_ENV_DENYLIST, SECRETS_SHIMS_DIRNAME, SESSION_SCROLLBACK_REPLAY_BYTES, TERM_TYPE, } from "./constants.js";
7
+ import { ALT_SCREEN_FOREGROUND, DEFAULT_COLS, DEFAULT_ROWS, HOOKED_SHELL_NAMES, MAX_NOTIFICATION_LENGTH, MAX_PENDING_PARSE_BYTES, SESSION_SCROLLBACK_REPLAY_BYTES, TERM_TYPE, } from "./constants.js";
8
8
  // Titles are emitted on a dedicated `title` event so they travel as a separate
9
9
  // WebSocket frame. We deliberately do NOT splice OSC sequences into the PTY
10
10
  // output stream — doing so corrupts in-flight escape sequences from modern
11
11
  // TUIs (e.g. Cursor Agent / Claude Code use DECSET 2026 synchronized output
12
12
  // mode and any byte landing inside that frame breaks the parser state).
13
+ import { buildPtyEnvironment } from "./build-pty-environment.js";
13
14
  import { ensureSpawnHelperExecutable } from "./ensure-spawn-helper-executable.js";
14
15
  import { getDefaultShell } from "./default-shell.js";
15
- import { shimPathPrependLine } from "./secret-shims.js";
16
- import { shellPathForUserShell } from "./utils/shell-path.js";
16
+ import { ShellHookBuilder } from "./shell-hook-builder.js";
17
17
  import { formatWorkingDirectoryTitle } from "./utils/format-working-directory-title.js";
18
18
  import { parseAltScreenFromChunk } from "./utils/parse-alt-screen.js";
19
19
  import { parseOsc7FromChunk } from "./utils/parse-osc7.js";
@@ -91,45 +91,13 @@ export class Session extends EventEmitter {
91
91
  this.id = randomUUID();
92
92
  this.reportInitialCommandExit = Boolean(input.initialCommand);
93
93
  this.shimsDir = input.shimsDir;
94
- const env = {};
95
- const denied = new Set(PTY_ENV_DENYLIST);
96
- const isLocaltermPath = (value) => /localterm-(?:zdot|bash)-/.test(value);
97
- // The daemon may inherit a stale ZDOTDIR / __LOCALTERM_ORIG_ZDOTDIR from
98
- // its login-shell wrapper — the previous session set ZDOTDIR to a temp
99
- // hook dir and the plist's `zsh -l -c` re-sources that hook .zshrc. Strip
100
- // any value that points to a localterm temp dir; pass through a legitimate
101
- // user-set ZDOTDIR (e.g. dotfiles managed via custom ZDOTDIR). ZDOTDIR
102
- // takes priority over __LOCALTERM_ORIG_ZDOTDIR because it reflects the
103
- // user's current environment.
104
- const inheritedZdotdir = process.env.ZDOTDIR;
105
- const inheritedOrigZdotdir = process.env.__LOCALTERM_ORIG_ZDOTDIR;
106
- const userZdotdirFromEnv = inheritedZdotdir && !isLocaltermPath(inheritedZdotdir)
107
- ? inheritedZdotdir
108
- : inheritedOrigZdotdir && !isLocaltermPath(inheritedOrigZdotdir)
109
- ? inheritedOrigZdotdir
110
- : undefined;
111
- for (const [key, value] of Object.entries(process.env)) {
112
- if (denied.has(key))
113
- continue;
114
- if (typeof value === "string")
115
- env[key] = value;
116
- }
117
- if (userZdotdirFromEnv)
118
- env.__LOCALTERM_ORIG_ZDOTDIR = userZdotdirFromEnv;
119
- else
120
- delete env.__LOCALTERM_ORIG_ZDOTDIR;
121
- // User shells bootstrap their own PATH via rc files; don't leak the daemon's.
122
- env.PATH = shellPathForUserShell();
123
- if (input.env) {
124
- for (const [key, value] of Object.entries(input.env)) {
125
- env[key] = value;
126
- }
127
- }
128
- env.TERM = TERM_TYPE;
129
- env.COLORTERM = COLORTERM_VALUE;
130
- env.LOCALTERM = LOCALTERM_VALUE;
131
- env.LOCALTERM_SESSION_ID = this.id;
132
- const [shellArgs, shellEnv] = this.prepareOsc7Hook(this.shellName, env);
94
+ const env = buildPtyEnvironment({ input, sessionId: this.id });
95
+ const shellHookBuilder = new ShellHookBuilder({
96
+ shimsDir: this.shimsDir,
97
+ reportInitialCommandExit: this.reportInitialCommandExit,
98
+ });
99
+ const [shellArgs, shellEnv] = shellHookBuilder.prepare(this.shellName, env);
100
+ this.hookCleanupPaths.push(...shellHookBuilder.hookCleanupPaths);
133
101
  if (shellEnv) {
134
102
  for (const [key, value] of Object.entries(shellEnv)) {
135
103
  env[key] = value;
@@ -412,221 +380,6 @@ export class Session extends EventEmitter {
412
380
  return false;
413
381
  return tail.indexOf("\x07", 2) === -1 && tail.indexOf("\x1b\\", 2) === -1;
414
382
  }
415
- prepareOsc7Hook(shellName, env) {
416
- const hookId = `${process.pid}-${Date.now()}`;
417
- switch (shellName) {
418
- case "zsh": {
419
- const hookDir = path.join(os.tmpdir(), `localterm-zdot-${hookId}`);
420
- mkdirSync(hookDir, { recursive: true, mode: 0o700 });
421
- this.hookCleanupPaths.push(hookDir);
422
- const hookScript = this.zshOsc7ChpwdFunction();
423
- const userZdotdir = env.__LOCALTERM_ORIG_ZDOTDIR || env.ZDOTDIR || os.homedir();
424
- const shimsPrepend = shimPathPrependLine(this.shimsDir ?? path.join(os.homedir(), LOCALTERM_STATE_DIRNAME, SECRETS_SHIMS_DIRNAME));
425
- const escapedZdotdir = userZdotdir.replace(/'/g, "'\\''");
426
- const lines = [
427
- `source '${escapedZdotdir}/.zshenv' 2>/dev/null`,
428
- '__localterm_saved_zdotdir="${ZDOTDIR}"',
429
- `ZDOTDIR='${escapedZdotdir}'`,
430
- // Source the zsh login file before .zshrc (matching `zsh -l`'s
431
- // .zshenv → .zprofile → .zshrc order) so PATH/env a user set in
432
- // .zprofile is visible in the interactive session. zsh users keep
433
- // interactive setup in .zshrc, so cross-sourcing is rare here and a
434
- // double-source risk is low (unlike bash's .profile→.bashrc).
435
- `source '${escapedZdotdir}/.zprofile' 2>/dev/null`,
436
- `source '${escapedZdotdir}/.zshrc' 2>/dev/null`,
437
- 'ZDOTDIR="${__localterm_saved_zdotdir}"',
438
- // Prepend the secrets shims dir AFTER the user's .zshrc ran, so the
439
- // shims reliably shadow the real binaries despite rc PATH
440
- // manipulation (e.g. `export PATH=/opt/homebrew/bin:$PATH`). The line
441
- // is a no-op when the shims dir is absent (feature not configured).
442
- shimsPrepend,
443
- // zsh's PROMPT_SP (on by default) prints the EOL mark (bold+reverse %
444
- // by default — the "white-background %") AND a fill-to-end-of-line
445
- // space burst before each prompt when the prior line had no trailing
446
- // newline. localterm's precmd/chpwd hooks emit OSC sequences with no
447
- // newline, so PROMPT_SP fires on every prompt and zle's redraw
448
- // normally erases both. localterm resizes xterm before the server's
449
- // PTY catches up (async over a high-latency relay), so during a shell
450
- // redraw — and especially at spawn, where the PTY starts at the wide
451
- // DEFAULT_COLS while the mobile xterm is still its narrow viewport —
452
- // the mark and the fill spaces (sized for the wider PTY) wrap in the
453
- // narrower xterm and zle's clear-to-end-of-screen erases from the
454
- // wrapped line, leaving the mark as a stray `%` and the spaces as a
455
- // blank line above the prompt. Emptying PROMPT_EOL_MARK only kills the
456
- // visible mark; the fill spaces still wrap. Disabling PROMPT_SP kills
457
- // both. The cost is the standard non-zsh behavior: a command whose
458
- // output lacks a trailing newline gets the prompt on the same line
459
- // instead of a fresh one — fine here, since the only unterminated
460
- // output in this setup is localterm's own OSC hooks (invisible).
461
- "unsetopt PROMPT_SP",
462
- hookScript,
463
- "chpwd_functions=(${chpwd_functions[@]} __localterm_osc7_chpwd)",
464
- "__localterm_osc7_chpwd",
465
- "__localterm_git_dirty() { printf '\\e]7777;git-dirty\\a'; }",
466
- "precmd_functions=(${precmd_functions[@]} __localterm_git_dirty)",
467
- "__localterm_fg_preexec() { printf '\\e]7777;fg;%s\\a' \"${1%% *}\"; }",
468
- "preexec_functions=(${preexec_functions[@]} __localterm_fg_preexec)",
469
- "__localterm_fg_precmd() { printf '\\e]7777;fg-idle\\a'; }",
470
- "precmd_functions=(__localterm_fg_precmd ${precmd_functions[@]})",
471
- ...(this.reportInitialCommandExit
472
- ? [
473
- ...this.automationExitHookFunctionLines("__localterm_automation_exit_precmd"),
474
- "precmd_functions=(__localterm_automation_exit_precmd ${precmd_functions[@]})",
475
- ]
476
- : []),
477
- ];
478
- writeFileSync(path.join(hookDir, ".zshrc"), lines.join("\n") + "\n", {
479
- mode: 0o600,
480
- });
481
- return [[], { ZDOTDIR: hookDir, __LOCALTERM_ORIG_ZDOTDIR: userZdotdir }];
482
- }
483
- case "bash": {
484
- const hookDir = path.join(os.tmpdir(), `localterm-bash-${hookId}`);
485
- mkdirSync(hookDir, { recursive: true, mode: 0o700 });
486
- const hookPath = path.join(hookDir, "bashrc");
487
- this.hookCleanupPaths.push(hookDir);
488
- const hookScript = this.bashOsc7Function();
489
- const shimsPrepend = shimPathPrependLine(this.shimsDir ?? path.join(os.homedir(), LOCALTERM_STATE_DIRNAME, SECRETS_SHIMS_DIRNAME));
490
- const lines = [
491
- // Login-shell env (mimic `bash -l`): /etc/profile then the first
492
- // existing login file. ~/.bashrc is sourced only when NO login file
493
- // exists, so a login file that already sources .bashrc (the common
494
- // Ubuntu .profile pattern: `if [ -n "$BASH_VERSION" ]; then . ~/.bashrc; fi`)
495
- // doesn't get .bashrc twice — which would duplicate PATH prepends
496
- // (Ubuntu's .profile adds $HOME/.local/bin and .bashrc adds $HOME/bin).
497
- // The system interactive files /etc/bashrc + /etc/bash.bashrc stay
498
- // (the original behavior) so macOS's /etc/bashrc prompt setup and
499
- // Debian's /etc/bash.bashrc are preserved even with a login file.
500
- "source /etc/profile 2>/dev/null",
501
- "__localterm_login_loaded=0",
502
- 'for __localterm_f in ~/.bash_profile ~/.bash_login ~/.profile; do [ -f "$__localterm_f" ] && . "$__localterm_f" && __localterm_login_loaded=1 && break; done',
503
- "source /etc/bashrc 2>/dev/null",
504
- "source /etc/bash.bashrc 2>/dev/null",
505
- '[ "$__localterm_login_loaded" != 1 ] && source ~/.bashrc 2>/dev/null',
506
- // Prepend the secrets shims dir AFTER the user's rc ran (see the
507
- // zsh case for why the ordering matters).
508
- shimsPrepend,
509
- hookScript,
510
- 'PROMPT_COMMAND="__localterm_prompt_start;${PROMPT_COMMAND:+${PROMPT_COMMAND};}__localterm_osc7_prompt;__localterm_git_dirty;__localterm_fg_precmd"',
511
- "__localterm_osc7_prompt",
512
- "__localterm_git_dirty() { printf '\\e]7777;git-dirty\\a'; }",
513
- "__localterm_fg_precmd() { printf '\\e]7777;fg-idle\\a'; __localterm_in_prompt=0; }",
514
- "__localterm_prompt_start() { __localterm_in_prompt=1; }",
515
- "__localterm_in_prompt=0",
516
- '__localterm_fg_debug() { [ "$__localterm_in_prompt" = 1 ] && return; case "$BASH_COMMAND" in __localterm_*) return ;; esac; printf \'\\e]7777;fg;%s\\a\' "${BASH_COMMAND%% *}"; }',
517
- "__localterm_prev_debug_body=",
518
- '__localterm_capture_debug() { local __t; __t=$(trap -p DEBUG); [ -z "$__t" ] && return; __t=${__t#trap -- }; __t=${__t% DEBUG}; __localterm_prev_debug_body=$__t; }',
519
- "__localterm_capture_debug",
520
- 'if [ -n "$__localterm_prev_debug_body" ]; then trap \'__localterm_fg_debug; eval "$__localterm_prev_debug_body"\' DEBUG; else trap __localterm_fg_debug DEBUG; fi',
521
- ...(this.reportInitialCommandExit
522
- ? [
523
- ...this.automationExitHookFunctionLines("__localterm_automation_exit_prompt"),
524
- 'PROMPT_COMMAND="__localterm_automation_exit_prompt${PROMPT_COMMAND:+;${PROMPT_COMMAND}}"',
525
- ]
526
- : []),
527
- ];
528
- writeFileSync(hookPath, lines.join("\n") + "\n", { mode: 0o600 });
529
- return [["--rcfile", hookPath], null];
530
- }
531
- case "fish": {
532
- // fish's `-C` / `--init-command` runs AFTER ~/.config/fish/config.fish
533
- // and the conf.d snippets load, so the user's config (including
534
- // conf.d PATH manipulation) runs first and the shims prepend below
535
- // shadows it — see the zsh case for why the ordering matters. Unlike
536
- // zsh/bash this needs no temp rcfile: -C injects the setup directly
537
- // and the event-bound functions persist for the session.
538
- const shimsDir = this.shimsDir ?? path.join(os.homedir(), LOCALTERM_STATE_DIRNAME, SECRETS_SHIMS_DIRNAME);
539
- // fish escapes a single quote inside single quotes as `\'` (not the
540
- // `\''` POSIX idiom).
541
- const escapedShimsDir = shimsDir.replace(/'/g, "\\'");
542
- const shimsPrepend = `test -d '${escapedShimsDir}' && set -gx PATH '${escapedShimsDir}' $PATH`;
543
- // The fish_prompt handler emits the git-dirty signal, and (when an
544
- // initial command is staged) copies LOCALTERM_INITIAL_COMMAND into a
545
- // local, clears the env var, evals the local, and emits the
546
- // automation-exit OSC with the eval's $status. See
547
- // automationExitHookFunctionLines for the security rationale (copy +
548
- // unset before eval, PTY_ENV_DENYLIST) and why this runs the command
549
- // instead of typing it into the PTY.
550
- const lines = [
551
- "function __localterm_osc7 --on-variable PWD",
552
- " printf '\\e]7;file://%s%s\\a' (hostname 2>/dev/null || echo localhost) $PWD",
553
- "end",
554
- "__localterm_osc7",
555
- shimsPrepend,
556
- "function __localterm_fg_preexec --on-event fish_preexec",
557
- " printf '\\e]7777;fg;%s\\a' (string split ' ' -- $argv[1])[1]",
558
- "end",
559
- "function __localterm_prompt_hook --on-event fish_prompt",
560
- " printf '\\e]7777;git-dirty\\a'",
561
- ...(this.reportInitialCommandExit
562
- ? [
563
- ' if test -n "$LOCALTERM_INITIAL_COMMAND"',
564
- " set -l __localterm_initial_command $LOCALTERM_INITIAL_COMMAND",
565
- " set -e LOCALTERM_INITIAL_COMMAND",
566
- " printf '+ %s\\n' $__localterm_initial_command",
567
- " printf '\\e]7777;fg;%s\\a' (string split ' ' -- $__localterm_initial_command)[1]",
568
- " eval $__localterm_initial_command",
569
- " printf '\\e]7777;automation-exit;%d\\a' $status",
570
- " end",
571
- ]
572
- : []),
573
- " printf '\\e]7777;fg-idle\\a'",
574
- "end",
575
- ];
576
- return [["-C", lines.join("\n")], null];
577
- }
578
- default:
579
- return [[], null];
580
- }
581
- }
582
- // The initial command for a hooked shell (zsh/bash/fish) is run by this hook
583
- // via `eval`, instead of being typed into the PTY — so it never goes through
584
- // the line editor's typed-input path and can't race ECHO or double-echo. The
585
- // command arrives through the LOCALTERM_INITIAL_COMMAND env var (set in the
586
- // constructor). The hook copies it into a local and unsets the env var
587
- // BEFORE eval, so the command string isn't inherited by child processes the
588
- // command spawns and the hook runs once; then prints it (prefixed `+`),
589
- // emits a git-dirty signal before the eval so the ambient overlay updates
590
- // as the command begins (the regular __localterm_git_dirty runs after this
591
- // hook in the prompt chain — without this the first git-dirty only fires
592
- // once the command finishes), evals the local, and emits the
593
- // automation-exit OSC with the eval's exit status. Prepended first in the
594
- // prompt chain; unhooked shells don't reach here (they take the at-spawn
595
- // PTY write).
596
- // LOCALTERM_INITIAL_COMMAND is on PTY_ENV_DENYLIST so a stale or inherited
597
- // value from the daemon env can't reach the hook — the constructor's set is
598
- // the only source.
599
- automationExitHookFunctionLines(functionName) {
600
- return [
601
- `${functionName}() {`,
602
- ' if [ -n "${LOCALTERM_INITIAL_COMMAND:-}" ]; then',
603
- " local __localterm_command_exit __localterm_initial_command",
604
- ' __localterm_initial_command="$LOCALTERM_INITIAL_COMMAND"',
605
- " unset LOCALTERM_INITIAL_COMMAND",
606
- " printf '+ %s\\n' \"$__localterm_initial_command\"",
607
- " printf '\\e]7777;git-dirty\\a'",
608
- " printf '\\e]7777;fg;%s\\a' \"${__localterm_initial_command%% *}\"",
609
- ' eval "$__localterm_initial_command"',
610
- " __localterm_command_exit=$?",
611
- " printf '\\e]7777;automation-exit;%d\\a' \"$__localterm_command_exit\"",
612
- " fi",
613
- "}",
614
- ];
615
- }
616
- zshOsc7ChpwdFunction() {
617
- return [
618
- "__localterm_osc7_chpwd() {",
619
- ' printf \'\\e]7;file://%s%s\\a\' "${HOSTNAME:-localhost}" "${PWD}"',
620
- "}",
621
- ].join("\n");
622
- }
623
- bashOsc7Function() {
624
- return [
625
- "__localterm_osc7_prompt() {",
626
- ' printf \'\\e]7;file://%s%s\\a\' "${HOSTNAME:-localhost}" "${PWD}"',
627
- "}",
628
- ].join("\n");
629
- }
630
383
  handleForegroundChange(next) {
631
384
  this.foregroundFromHook = next;
632
385
  this.emitEffectiveForeground();
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ interface ShellHookBuilderOptions {
2
+ shimsDir: string | undefined;
3
+ reportInitialCommandExit: boolean;
4
+ }
5
+ export declare class ShellHookBuilder {
6
+ readonly hookCleanupPaths: string[];
7
+ private readonly shimsDir;
8
+ private readonly reportInitialCommandExit;
9
+ constructor({ shimsDir, reportInitialCommandExit }: ShellHookBuilderOptions);
10
+ prepare(shellName: string, env: Record<string, string>): [string[], Record<string, string> | null];
11
+ private automationExitHookFunctionLines;
12
+ private zshOsc7ChpwdFunction;
13
+ private bashOsc7Function;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=shell-hook-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-hook-builder.d.ts","sourceRoot":"","sources":["../src/shell-hook-builder.ts"],"names":[],"mappings":"AAMA,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAM;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAU;IAEnD,YAAY,EAAE,QAAQ,EAAE,wBAAwB,EAAE,EAAE,uBAAuB,EAG1E;IAED,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CA2K3C;IAmBD,OAAO,CAAC,+BAA+B;IAkBvC,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,gBAAgB;CAOzB"}
@@ -0,0 +1,230 @@
1
+ import { mkdirSync, writeFileSync } from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { LOCALTERM_STATE_DIRNAME, SECRETS_SHIMS_DIRNAME } from "./constants.js";
5
+ import { shimPathPrependLine } from "./secret-shims.js";
6
+ export class ShellHookBuilder {
7
+ hookCleanupPaths = [];
8
+ shimsDir;
9
+ reportInitialCommandExit;
10
+ constructor({ shimsDir, reportInitialCommandExit }) {
11
+ this.shimsDir = shimsDir;
12
+ this.reportInitialCommandExit = reportInitialCommandExit;
13
+ }
14
+ prepare(shellName, env) {
15
+ const hookId = `${process.pid}-${Date.now()}`;
16
+ switch (shellName) {
17
+ case "zsh": {
18
+ const hookDir = path.join(os.tmpdir(), `localterm-zdot-${hookId}`);
19
+ mkdirSync(hookDir, { recursive: true, mode: 0o700 });
20
+ this.hookCleanupPaths.push(hookDir);
21
+ const hookScript = this.zshOsc7ChpwdFunction();
22
+ const userZdotdir = env.__LOCALTERM_ORIG_ZDOTDIR || env.ZDOTDIR || os.homedir();
23
+ const shimsPrepend = shimPathPrependLine(this.shimsDir ?? path.join(os.homedir(), LOCALTERM_STATE_DIRNAME, SECRETS_SHIMS_DIRNAME));
24
+ const escapedZdotdir = userZdotdir.replace(/'/g, "'\\''");
25
+ const lines = [
26
+ `source '${escapedZdotdir}/.zshenv' 2>/dev/null`,
27
+ '__localterm_saved_zdotdir="${ZDOTDIR}"',
28
+ `ZDOTDIR='${escapedZdotdir}'`,
29
+ // Source the zsh login file before .zshrc (matching `zsh -l`'s
30
+ // .zshenv → .zprofile → .zshrc order) so PATH/env a user set in
31
+ // .zprofile is visible in the interactive session. zsh users keep
32
+ // interactive setup in .zshrc, so cross-sourcing is rare here and a
33
+ // double-source risk is low (unlike bash's .profile→.bashrc).
34
+ `source '${escapedZdotdir}/.zprofile' 2>/dev/null`,
35
+ `source '${escapedZdotdir}/.zshrc' 2>/dev/null`,
36
+ 'ZDOTDIR="${__localterm_saved_zdotdir}"',
37
+ // Prepend the secrets shims dir AFTER the user's .zshrc ran, so the
38
+ // shims reliably shadow the real binaries despite rc PATH
39
+ // manipulation (e.g. `export PATH=/opt/homebrew/bin:$PATH`). The line
40
+ // is a no-op when the shims dir is absent (feature not configured).
41
+ shimsPrepend,
42
+ // zsh's PROMPT_SP (on by default) prints the EOL mark (bold+reverse %
43
+ // by default — the "white-background %") AND a fill-to-end-of-line
44
+ // space burst before each prompt when the prior line had no trailing
45
+ // newline. localterm's precmd/chpwd hooks emit OSC sequences with no
46
+ // newline, so PROMPT_SP fires on every prompt and zle's redraw
47
+ // normally erases both. localterm resizes xterm before the server's
48
+ // PTY catches up (async over a high-latency relay), so during a shell
49
+ // redraw — and especially at spawn, where the PTY starts at the wide
50
+ // DEFAULT_COLS while the mobile xterm is still its narrow viewport —
51
+ // the mark and the fill spaces (sized for the wider PTY) wrap in the
52
+ // narrower xterm and zle's clear-to-end-of-screen erases from the
53
+ // wrapped line, leaving the mark as a stray `%` and the spaces as a
54
+ // blank line above the prompt. Emptying PROMPT_EOL_MARK only kills the
55
+ // visible mark; the fill spaces still wrap. Disabling PROMPT_SP kills
56
+ // both. The cost is the standard non-zsh behavior: a command whose
57
+ // output lacks a trailing newline gets the prompt on the same line
58
+ // instead of a fresh one — fine here, since the only unterminated
59
+ // output in this setup is localterm's own OSC hooks (invisible).
60
+ "unsetopt PROMPT_SP",
61
+ hookScript,
62
+ "chpwd_functions=(${chpwd_functions[@]} __localterm_osc7_chpwd)",
63
+ "__localterm_osc7_chpwd",
64
+ "__localterm_git_dirty() { printf '\\e]7777;git-dirty\\a'; }",
65
+ "precmd_functions=(${precmd_functions[@]} __localterm_git_dirty)",
66
+ "__localterm_fg_preexec() { printf '\\e]7777;fg;%s\\a' \"${1%% *}\"; }",
67
+ "preexec_functions=(${preexec_functions[@]} __localterm_fg_preexec)",
68
+ "__localterm_fg_precmd() { printf '\\e]7777;fg-idle\\a'; }",
69
+ "precmd_functions=(__localterm_fg_precmd ${precmd_functions[@]})",
70
+ ...(this.reportInitialCommandExit
71
+ ? [
72
+ ...this.automationExitHookFunctionLines("__localterm_automation_exit_precmd"),
73
+ "precmd_functions=(__localterm_automation_exit_precmd ${precmd_functions[@]})",
74
+ ]
75
+ : []),
76
+ ];
77
+ writeFileSync(path.join(hookDir, ".zshrc"), lines.join("\n") + "\n", {
78
+ mode: 0o600,
79
+ });
80
+ return [[], { ZDOTDIR: hookDir, __LOCALTERM_ORIG_ZDOTDIR: userZdotdir }];
81
+ }
82
+ case "bash": {
83
+ const hookDir = path.join(os.tmpdir(), `localterm-bash-${hookId}`);
84
+ mkdirSync(hookDir, { recursive: true, mode: 0o700 });
85
+ const hookPath = path.join(hookDir, "bashrc");
86
+ this.hookCleanupPaths.push(hookDir);
87
+ const hookScript = this.bashOsc7Function();
88
+ const shimsPrepend = shimPathPrependLine(this.shimsDir ?? path.join(os.homedir(), LOCALTERM_STATE_DIRNAME, SECRETS_SHIMS_DIRNAME));
89
+ const lines = [
90
+ // Login-shell env (mimic `bash -l`): /etc/profile then the first
91
+ // existing login file. ~/.bashrc is sourced only when NO login file
92
+ // exists, so a login file that already sources .bashrc (the common
93
+ // Ubuntu .profile pattern: `if [ -n "$BASH_VERSION" ]; then . ~/.bashrc; fi`)
94
+ // doesn't get .bashrc twice — which would duplicate PATH prepends
95
+ // (Ubuntu's .profile adds $HOME/.local/bin and .bashrc adds $HOME/bin).
96
+ // The system interactive files /etc/bashrc + /etc/bash.bashrc stay
97
+ // (the original behavior) so macOS's /etc/bashrc prompt setup and
98
+ // Debian's /etc/bash.bashrc are preserved even with a login file.
99
+ "source /etc/profile 2>/dev/null",
100
+ "__localterm_login_loaded=0",
101
+ 'for __localterm_f in ~/.bash_profile ~/.bash_login ~/.profile; do [ -f "$__localterm_f" ] && . "$__localterm_f" && __localterm_login_loaded=1 && break; done',
102
+ "source /etc/bashrc 2>/dev/null",
103
+ "source /etc/bash.bashrc 2>/dev/null",
104
+ '[ "$__localterm_login_loaded" != 1 ] && source ~/.bashrc 2>/dev/null',
105
+ // Prepend the secrets shims dir AFTER the user's rc ran (see the
106
+ // zsh case for why the ordering matters).
107
+ shimsPrepend,
108
+ hookScript,
109
+ 'PROMPT_COMMAND="__localterm_prompt_start;${PROMPT_COMMAND:+${PROMPT_COMMAND};}__localterm_osc7_prompt;__localterm_git_dirty;__localterm_fg_precmd"',
110
+ "__localterm_osc7_prompt",
111
+ "__localterm_git_dirty() { printf '\\e]7777;git-dirty\\a'; }",
112
+ "__localterm_fg_precmd() { printf '\\e]7777;fg-idle\\a'; __localterm_in_prompt=0; }",
113
+ "__localterm_prompt_start() { __localterm_in_prompt=1; }",
114
+ "__localterm_in_prompt=0",
115
+ '__localterm_fg_debug() { [ "$__localterm_in_prompt" = 1 ] && return; case "$BASH_COMMAND" in __localterm_*) return ;; esac; printf \'\\e]7777;fg;%s\\a\' "${BASH_COMMAND%% *}"; }',
116
+ "__localterm_prev_debug_body=",
117
+ '__localterm_capture_debug() { local __t; __t=$(trap -p DEBUG); [ -z "$__t" ] && return; __t=${__t#trap -- }; __t=${__t% DEBUG}; __localterm_prev_debug_body=$__t; }',
118
+ "__localterm_capture_debug",
119
+ 'if [ -n "$__localterm_prev_debug_body" ]; then trap \'__localterm_fg_debug; eval "$__localterm_prev_debug_body"\' DEBUG; else trap __localterm_fg_debug DEBUG; fi',
120
+ ...(this.reportInitialCommandExit
121
+ ? [
122
+ ...this.automationExitHookFunctionLines("__localterm_automation_exit_prompt"),
123
+ 'PROMPT_COMMAND="__localterm_automation_exit_prompt${PROMPT_COMMAND:+;${PROMPT_COMMAND}}"',
124
+ ]
125
+ : []),
126
+ ];
127
+ writeFileSync(hookPath, lines.join("\n") + "\n", { mode: 0o600 });
128
+ return [["--rcfile", hookPath], null];
129
+ }
130
+ case "fish": {
131
+ // fish's `-C` / `--init-command` runs AFTER ~/.config/fish/config.fish
132
+ // and the conf.d snippets load, so the user's config (including
133
+ // conf.d PATH manipulation) runs first and the shims prepend below
134
+ // shadows it — see the zsh case for why the ordering matters. Unlike
135
+ // zsh/bash this needs no temp rcfile: -C injects the setup directly
136
+ // and the event-bound functions persist for the session.
137
+ const shimsDir = this.shimsDir ?? path.join(os.homedir(), LOCALTERM_STATE_DIRNAME, SECRETS_SHIMS_DIRNAME);
138
+ // fish escapes a single quote inside single quotes as `\'` (not the
139
+ // `\''` POSIX idiom).
140
+ const escapedShimsDir = shimsDir.replace(/'/g, "\\'");
141
+ const shimsPrepend = `test -d '${escapedShimsDir}' && set -gx PATH '${escapedShimsDir}' $PATH`;
142
+ // The fish_prompt handler emits the git-dirty signal, and (when an
143
+ // initial command is staged) copies LOCALTERM_INITIAL_COMMAND into a
144
+ // local, clears the env var, evals the local, and emits the
145
+ // automation-exit OSC with the eval's $status. See
146
+ // automationExitHookFunctionLines for the security rationale (copy +
147
+ // unset before eval, PTY_ENV_DENYLIST) and why this runs the command
148
+ // instead of typing it into the PTY.
149
+ const lines = [
150
+ "function __localterm_osc7 --on-variable PWD",
151
+ " printf '\\e]7;file://%s%s\\a' (hostname 2>/dev/null || echo localhost) $PWD",
152
+ "end",
153
+ "__localterm_osc7",
154
+ shimsPrepend,
155
+ "function __localterm_fg_preexec --on-event fish_preexec",
156
+ " printf '\\e]7777;fg;%s\\a' (string split ' ' -- $argv[1])[1]",
157
+ "end",
158
+ "function __localterm_prompt_hook --on-event fish_prompt",
159
+ " printf '\\e]7777;git-dirty\\a'",
160
+ ...(this.reportInitialCommandExit
161
+ ? [
162
+ ' if test -n "$LOCALTERM_INITIAL_COMMAND"',
163
+ " set -l __localterm_initial_command $LOCALTERM_INITIAL_COMMAND",
164
+ " set -e LOCALTERM_INITIAL_COMMAND",
165
+ " printf '+ %s\\n' $__localterm_initial_command",
166
+ " printf '\\e]7777;fg;%s\\a' (string split ' ' -- $__localterm_initial_command)[1]",
167
+ " eval $__localterm_initial_command",
168
+ " printf '\\e]7777;automation-exit;%d\\a' $status",
169
+ " end",
170
+ ]
171
+ : []),
172
+ " printf '\\e]7777;fg-idle\\a'",
173
+ "end",
174
+ ];
175
+ return [["-C", lines.join("\n")], null];
176
+ }
177
+ default:
178
+ return [[], null];
179
+ }
180
+ }
181
+ // The initial command for a hooked shell (zsh/bash/fish) is run by this hook
182
+ // via `eval`, instead of being typed into the PTY — so it never goes through
183
+ // the line editor's typed-input path and can't race ECHO or double-echo. The
184
+ // command arrives through the LOCALTERM_INITIAL_COMMAND env var (set in the
185
+ // constructor). The hook copies it into a local and unsets the env var
186
+ // BEFORE eval, so the command string isn't inherited by child processes the
187
+ // command spawns and the hook runs once; then prints it (prefixed `+`),
188
+ // emits a git-dirty signal before the eval so the ambient overlay updates
189
+ // as the command begins (the regular __localterm_git_dirty runs after this
190
+ // hook in the prompt chain — without this the first git-dirty only fires
191
+ // once the command finishes), evals the local, and emits the
192
+ // automation-exit OSC with the eval's exit status. Prepended first in the
193
+ // prompt chain; unhooked shells don't reach here (they take the at-spawn
194
+ // PTY write).
195
+ // LOCALTERM_INITIAL_COMMAND is on PTY_ENV_DENYLIST so a stale or inherited
196
+ // value from the daemon env can't reach the hook — the constructor's set is
197
+ // the only source.
198
+ automationExitHookFunctionLines(functionName) {
199
+ return [
200
+ `${functionName}() {`,
201
+ ' if [ -n "${LOCALTERM_INITIAL_COMMAND:-}" ]; then',
202
+ " local __localterm_command_exit __localterm_initial_command",
203
+ ' __localterm_initial_command="$LOCALTERM_INITIAL_COMMAND"',
204
+ " unset LOCALTERM_INITIAL_COMMAND",
205
+ " printf '+ %s\\n' \"$__localterm_initial_command\"",
206
+ " printf '\\e]7777;git-dirty\\a'",
207
+ " printf '\\e]7777;fg;%s\\a' \"${__localterm_initial_command%% *}\"",
208
+ ' eval "$__localterm_initial_command"',
209
+ " __localterm_command_exit=$?",
210
+ " printf '\\e]7777;automation-exit;%d\\a' \"$__localterm_command_exit\"",
211
+ " fi",
212
+ "}",
213
+ ];
214
+ }
215
+ zshOsc7ChpwdFunction() {
216
+ return [
217
+ "__localterm_osc7_chpwd() {",
218
+ ' printf \'\\e]7;file://%s%s\\a\' "${HOSTNAME:-localhost}" "${PWD}"',
219
+ "}",
220
+ ].join("\n");
221
+ }
222
+ bashOsc7Function() {
223
+ return [
224
+ "__localterm_osc7_prompt() {",
225
+ ' printf \'\\e]7;file://%s%s\\a\' "${HOSTNAME:-localhost}" "${PWD}"',
226
+ "}",
227
+ ].join("\n");
228
+ }
229
+ }
230
+ //# sourceMappingURL=shell-hook-builder.js.map