@monotykamary/localterm-server 2.66.8 → 2.66.9

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
@@ -0,0 +1,207 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { CaptureRenderer } from "./capture-renderer.js";
3
+ import { EXEC_DEFAULT_OUTPUT_LIMIT_BYTES, EXEC_DEFAULT_TIMEOUT_MS, EXEC_EPHEMERAL_SCROLLBACK, EXEC_MAX_OUTPUT_LIMIT_BYTES, EXEC_MAX_TIMEOUT_MS, EXEC_RAW_ACCUMULATE_CAP_BYTES, EXEC_TIMEOUT_INTERRUPT_GRACE_MS, CAPTURE_PANE_MAX_LINES, WAIT_IDLE_POLL_INTERVAL_MS, } from "./constants.js";
4
+ export class SessionCommandExecutor {
5
+ async capturePane(managed, lines) {
6
+ const capped = lines && lines > 0 ? Math.min(lines, CAPTURE_PANE_MAX_LINES) : undefined;
7
+ const renderer = await this.ensureCaptureRenderer(managed);
8
+ return renderer.capture(capped);
9
+ }
10
+ async waitFor(managed, predicate, timeoutMs, idleMs) {
11
+ const session = managed.session;
12
+ const startedAt = Date.now();
13
+ let resolved = false;
14
+ let lastChangeAt = Date.now();
15
+ let timeoutHandle = null;
16
+ let idleTimer = null;
17
+ return new Promise((resolve) => {
18
+ const finalize = async (matched) => {
19
+ if (resolved)
20
+ return;
21
+ resolved = true;
22
+ if (timeoutHandle)
23
+ clearTimeout(timeoutHandle);
24
+ if (idleTimer)
25
+ clearInterval(idleTimer);
26
+ session.off("output", onOutput);
27
+ session.off("exit", onExit);
28
+ const snapshot = await this.capturePane(managed).catch(() => "");
29
+ resolve({
30
+ matched,
31
+ elapsedMs: Date.now() - startedAt,
32
+ snapshot,
33
+ });
34
+ };
35
+ const testPredicate = async () => {
36
+ const renderer = await this.ensureCaptureRenderer(managed);
37
+ await renderer.flush();
38
+ return predicate.test(renderer.capture());
39
+ };
40
+ const onOutput = () => {
41
+ lastChangeAt = Date.now();
42
+ void testPredicate().then((hit) => {
43
+ if (hit && !resolved)
44
+ finalize(true);
45
+ });
46
+ };
47
+ const onExit = () => {
48
+ void finalize(false);
49
+ };
50
+ // Idle mode: resolve once no output has arrived for `idleMs`. The interval
51
+ // checks recency without forcing a renderer read each tick (the output
52
+ // listener already bumps lastChangeAt).
53
+ if (predicate.kind === "idle") {
54
+ idleTimer = setInterval(() => {
55
+ if (!resolved && Date.now() - lastChangeAt >= (idleMs ?? 0))
56
+ finalize(true);
57
+ }, WAIT_IDLE_POLL_INTERVAL_MS);
58
+ idleTimer.unref?.();
59
+ }
60
+ else {
61
+ // Text/regex: test once up front in case the pane already matches, then
62
+ // react to output events.
63
+ void testPredicate().then((hit) => {
64
+ if (hit && !resolved)
65
+ finalize(true);
66
+ });
67
+ }
68
+ session.on("output", onOutput);
69
+ session.on("exit", onExit);
70
+ timeoutHandle = setTimeout(() => finalize(false), timeoutMs);
71
+ timeoutHandle.unref?.();
72
+ });
73
+ }
74
+ async findTextInViewport(managed, needle) {
75
+ const renderer = await this.ensureCaptureRenderer(managed);
76
+ await renderer.flush();
77
+ return renderer.findTextInViewport(needle);
78
+ }
79
+ // Lazily create (and prime) a session's capture renderer. Fed the scrollback
80
+ // snapshot at creation so it catches up on recent history before the renderer
81
+ // existed, then kept alive and fed live output by onSessionOutput. Awaits the
82
+ // snapshot's async parse so the first capture-pane read lands on a populated
83
+ // grid instead of a blank one (xterm parses `write` on a timer).
84
+ async ensureCaptureRenderer(managed) {
85
+ if (managed.captureRenderer)
86
+ return managed.captureRenderer;
87
+ const renderer = new CaptureRenderer(managed.session.cols, managed.session.rows);
88
+ const snapshot = managed.session.snapshotScrollback();
89
+ if (snapshot)
90
+ renderer.write(snapshot);
91
+ await renderer.flush();
92
+ managed.captureRenderer = renderer;
93
+ return renderer;
94
+ }
95
+ async execute(managed, command, options = {}) {
96
+ const session = managed.session;
97
+ const timeoutMs = this.clampInt(options.timeoutMs ?? EXEC_DEFAULT_TIMEOUT_MS, 1, EXEC_MAX_TIMEOUT_MS);
98
+ const outputLimit = this.clampInt(options.outputLimitBytes ?? EXEC_DEFAULT_OUTPUT_LIMIT_BYTES, 1, EXEC_MAX_OUTPUT_LIMIT_BYTES);
99
+ const token = randomBytes(8).toString("hex");
100
+ const startMarker = `__LT_S_${token}__`;
101
+ const endMarkerPrefix = `__LT_E_${token}__`;
102
+ const endPattern = new RegExp(`${endMarkerPrefix} (\\d+)`);
103
+ const cmd = command.trim() || ":";
104
+ const wrapped = `printf '${startMarker}\\n'; ${cmd}; printf '${endMarkerPrefix} %d\\n' "$?"`;
105
+ const startedAt = Date.now();
106
+ let accumulated = "";
107
+ let capped = false;
108
+ let exitCode = null;
109
+ let didTimeout = false;
110
+ let resolved = false;
111
+ let timeoutHandle = null;
112
+ let interruptHandle = null;
113
+ return new Promise((resolve) => {
114
+ const finalize = async (finalExit, finalTimedOut) => {
115
+ if (resolved)
116
+ return;
117
+ resolved = true;
118
+ if (timeoutHandle)
119
+ clearTimeout(timeoutHandle);
120
+ if (interruptHandle)
121
+ clearTimeout(interruptHandle);
122
+ session.off("output", onOutput);
123
+ session.off("exit", onExit);
124
+ resolve(await this.buildExecResult(session.cols, session.rows, accumulated, startMarker, endMarkerPrefix, finalExit, finalTimedOut, outputLimit, startedAt));
125
+ };
126
+ const onOutput = (data) => {
127
+ if (!capped) {
128
+ if (accumulated.length + data.length <= EXEC_RAW_ACCUMULATE_CAP_BYTES) {
129
+ accumulated += data;
130
+ }
131
+ else {
132
+ const room = EXEC_RAW_ACCUMULATE_CAP_BYTES - accumulated.length;
133
+ if (room > 0)
134
+ accumulated += data.slice(0, room);
135
+ capped = true;
136
+ }
137
+ }
138
+ // Once the timeout has fired we've committed to a timed-out result; a
139
+ // marker arriving during the interrupt grace (Ctrl-C kills the command,
140
+ // the trailing `printf END $?` runs with the interrupt exit code) is
141
+ // ignored so the call resolves as timed out, not as a normal completion.
142
+ if (didTimeout)
143
+ return;
144
+ const match = accumulated.match(endPattern);
145
+ if (match) {
146
+ exitCode = Number.parseInt(match[1], 10);
147
+ finalize(exitCode, false);
148
+ }
149
+ };
150
+ const onExit = (code) => {
151
+ exitCode = code;
152
+ finalize(code, false);
153
+ };
154
+ session.on("output", onOutput);
155
+ session.on("exit", onExit);
156
+ timeoutHandle = setTimeout(() => {
157
+ // Commit to a timed-out result: the command didn't finish within
158
+ // timeoutMs. Send Ctrl-C to interrupt it (so the session returns to a
159
+ // prompt for a follow-up call), then resolve after a short grace so any
160
+ // output already in flight is captured into the partial result. A marker
161
+ // arriving during the grace is ignored (see onOutput).
162
+ didTimeout = true;
163
+ session.write("\x03");
164
+ interruptHandle = setTimeout(() => finalize(null, true), EXEC_TIMEOUT_INTERRUPT_GRACE_MS);
165
+ interruptHandle.unref?.();
166
+ }, timeoutMs);
167
+ timeoutHandle.unref?.();
168
+ // A client sending input is live; for a detached session there's no
169
+ // pending handshake, so the bytes reach the PTY directly.
170
+ session.write(`${wrapped}\r`);
171
+ });
172
+ }
173
+ async buildExecResult(cols, rows, accumulated, startMarker, endMarkerPrefix, exitCode, timedOut, outputLimit, startedAt) {
174
+ // Render the captured raw stream through a fresh headless terminal and slice
175
+ // between the start/end marker rows for clean, ANSI-processed text. A fresh
176
+ // (not the persistent) renderer so this exec's output is isolated and the
177
+ // markers are always near the bottom of the buffer.
178
+ const renderer = new CaptureRenderer(cols, rows, EXEC_EPHEMERAL_SCROLLBACK);
179
+ let output;
180
+ try {
181
+ renderer.write(accumulated);
182
+ await renderer.flush();
183
+ const endRow = exitCode !== null && !timedOut ? renderer.findRow(`${endMarkerPrefix} ${exitCode}`) : -1;
184
+ const startRow = renderer.findRow(startMarker);
185
+ output = renderer.extractBetween(startRow, endRow);
186
+ }
187
+ finally {
188
+ renderer.dispose();
189
+ }
190
+ const textBytes = Buffer.byteLength(output, "utf8");
191
+ const truncated = textBytes > outputLimit;
192
+ if (truncated) {
193
+ output = Buffer.from(output, "utf8").subarray(0, outputLimit).toString("utf8");
194
+ }
195
+ return {
196
+ exitCode,
197
+ output,
198
+ timedOut,
199
+ truncated,
200
+ durationMs: Date.now() - startedAt,
201
+ };
202
+ }
203
+ clampInt(value, min, max) {
204
+ return Math.min(Math.max(Math.trunc(value), min), max);
205
+ }
206
+ }
207
+ //# sourceMappingURL=session-command-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-command-executor.js","sourceRoot":"","sources":["../src/session-command-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { SessionClientHub } from "./session-client-hub.js";
2
+ import type { SessionEventName } from "./session-event-manager.js";
3
+ import type { ManagedSession } from "./session-manager.js";
4
+ import type { GitBranchPr } from "./types.js";
5
+ export declare class SessionGitEventBridge {
6
+ private readonly clientHub;
7
+ private readonly onSessionEvent;
8
+ constructor(clientHub: SessionClientHub, onSessionEvent: (event: SessionEventName, cwd: string) => void);
9
+ installSessionListener(managed: ManagedSession): void;
10
+ installWatcher(managed: ManagedSession): void;
11
+ handleCwdChange(managed: ManagedSession, cwd: string): void;
12
+ dispose(managed: ManagedSession): void;
13
+ broadcastGitBranchPr(cwd: string, pr: GitBranchPr | null): void;
14
+ hasCoordinatorFor(cwd: string): boolean;
15
+ }
16
+ //# sourceMappingURL=session-git-event-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-git-event-bridge.d.ts","sourceRoot":"","sources":["../src/session-git-event-bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAFjC,YACmB,SAAS,EAAE,gBAAgB,EAC3B,cAAc,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,EAC7E;IAEJ,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAOpD;IAED,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAgB5C;IAED,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAK1D;IAED,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAErC;IAED,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAE9D;IAED,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtC;CACF"}
@@ -0,0 +1,56 @@
1
+ import { GIT_DIFF_WATCHER_EVENT_NAMES } from "./git-diff-watcher.js";
2
+ import { SessionClientHub } from "./session-client-hub.js";
3
+ export class SessionGitEventBridge {
4
+ clientHub;
5
+ onSessionEvent;
6
+ constructor(clientHub, onSessionEvent) {
7
+ this.clientHub = clientHub;
8
+ this.onSessionEvent = onSessionEvent;
9
+ }
10
+ installSessionListener(managed) {
11
+ const session = managed.session;
12
+ session.on("git-dirty", () => {
13
+ const cwd = session.lastEmittedCwd;
14
+ if (cwd)
15
+ this.clientHub.coordinatorForCwd(cwd).signal();
16
+ if (!managed.automation && cwd)
17
+ this.onSessionEvent("git-dirty", cwd);
18
+ });
19
+ }
20
+ installWatcher(managed) {
21
+ const session = managed.session;
22
+ managed.gitWatcher.on("git-dirty", () => {
23
+ const cwd = session.lastEmittedCwd;
24
+ if (cwd)
25
+ this.clientHub.coordinatorForCwd(cwd).signal();
26
+ });
27
+ for (const refEvent of GIT_DIFF_WATCHER_EVENT_NAMES) {
28
+ if (refEvent === "git-dirty")
29
+ continue;
30
+ const eventName = refEvent;
31
+ managed.gitWatcher.on(eventName, () => {
32
+ if (!managed.automation && session.lastEmittedCwd) {
33
+ this.onSessionEvent(eventName, session.lastEmittedCwd);
34
+ }
35
+ });
36
+ }
37
+ managed.gitWatcher.start(session.cwd);
38
+ }
39
+ handleCwdChange(managed, cwd) {
40
+ managed.gitWatcher.stop();
41
+ managed.gitWatcher.start(cwd);
42
+ this.clientHub.moveClientCoordinators(managed, cwd);
43
+ if (!managed.automation)
44
+ this.onSessionEvent("cwd", cwd);
45
+ }
46
+ dispose(managed) {
47
+ managed.gitWatcher.dispose();
48
+ }
49
+ broadcastGitBranchPr(cwd, pr) {
50
+ this.clientHub.broadcastGitBranchPr(cwd, pr);
51
+ }
52
+ hasCoordinatorFor(cwd) {
53
+ return this.clientHub.hasCoordinatorFor(cwd);
54
+ }
55
+ }
56
+ //# sourceMappingURL=session-git-event-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-git-event-bridge.js","sourceRoot":"","sources":["../src/session-git-event-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAwB,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,MAAM,OAAO,qBAAqB;IAEb,SAAS;IACT,cAAc;IAFjC,YACmB,SAA2B,EAC3B,cAA8D;yBAD9D,SAAS;8BACT,cAAc;IAC9B,CAAC;IAEJ,sBAAsB,CAAC,OAAuB;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC;YACnC,IAAI,GAAG;gBAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACxD,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG;gBAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,OAAuB;QACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YACtC,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC;YACnC,IAAI,GAAG;gBAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,QAAQ,IAAI,4BAA4B,EAAE,CAAC;YACpD,IAAI,QAAQ,KAAK,WAAW;gBAAE,SAAS;YACvC,MAAM,SAAS,GAAoB,QAAQ,CAAC;YAC5C,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBACpC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;oBAClD,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,eAAe,CAAC,OAAuB,EAAE,GAAW;QAClD,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,OAAuB;QAC7B,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,oBAAoB,CAAC,GAAW,EAAE,EAAsB;QACtD,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,iBAAiB,CAAC,GAAW;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import type { ManagedSession, SessionActivityState } from "./session-manager.js";
2
+ export declare class SessionLifecyclePolicy {
3
+ private readonly getGraceMs;
4
+ private readonly tearDown;
5
+ private readonly onSessionActivity;
6
+ constructor(getGraceMs: () => number | null, tearDown: (managed: ManagedSession) => void, onSessionActivity: () => void);
7
+ atCapacity(sessions: ReadonlyMap<string, ManagedSession>): boolean;
8
+ makeRoomForSession(sessions: ReadonlyMap<string, ManagedSession>): boolean;
9
+ startGrace(managed: ManagedSession): void;
10
+ rearmGrace(sessions: ReadonlyMap<string, ManagedSession>): void;
11
+ cancelGrace(managed: ManagedSession): void;
12
+ computeState(managed: ManagedSession): SessionActivityState;
13
+ private evictOldestDormant;
14
+ }
15
+ //# sourceMappingURL=session-lifecycle-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-lifecycle-policy.d.ts","sourceRoot":"","sources":["../src/session-lifecycle-policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAHpC,YACmB,UAAU,EAAE,MAAM,MAAM,GAAG,IAAI,EAC/B,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,EAC3C,iBAAiB,EAAE,MAAM,IAAI,EAC5C;IAEJ,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,OAAO,CASjE;IAED,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,OAAO,CAGzE;IAED,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CA8BxC;IAED,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAI9D;IAED,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAMzC;IAMD,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,oBAAoB,CAG1D;IAED,OAAO,CAAC,kBAAkB;CAkB3B"}
@@ -0,0 +1,105 @@
1
+ import { MAX_CONCURRENT_SESSIONS, SESSION_ACTIVITY_WINDOW_MS } from "./constants.js";
2
+ export class SessionLifecyclePolicy {
3
+ getGraceMs;
4
+ tearDown;
5
+ onSessionActivity;
6
+ constructor(getGraceMs, tearDown, onSessionActivity) {
7
+ this.getGraceMs = getGraceMs;
8
+ this.tearDown = tearDown;
9
+ this.onSessionActivity = onSessionActivity;
10
+ }
11
+ atCapacity(sessions) {
12
+ if (sessions.size < MAX_CONCURRENT_SESSIONS)
13
+ return false;
14
+ for (const managed of sessions.values()) {
15
+ // A dormant, non-pinned session can be evicted to make room. Pinned
16
+ // sessions hold their slots (never silently reaped), so a full cap of
17
+ // pinned sessions surfaces a real capacity error instead of a steal.
18
+ if (managed.clients.size === 0 && !managed.pinned)
19
+ return false;
20
+ }
21
+ return true;
22
+ }
23
+ makeRoomForSession(sessions) {
24
+ if (sessions.size >= MAX_CONCURRENT_SESSIONS)
25
+ this.evictOldestDormant(sessions);
26
+ return sessions.size < MAX_CONCURRENT_SESSIONS;
27
+ }
28
+ startGrace(managed) {
29
+ this.cancelGrace(managed);
30
+ managed.parkedAt = Date.now();
31
+ // Pinned sessions park indefinitely — never reaped by the idle grace and
32
+ // never evicted at the cap. They live until an explicit kill or shell exit.
33
+ if (managed.pinned)
34
+ return;
35
+ const graceMs = this.getGraceMs();
36
+ // "Never reap": park the shell with no timer. It lingers until a viewer
37
+ // reattaches, it's killed from the switcher, the shell exits, or it's
38
+ // evicted at MAX_CONCURRENT_SESSIONS. parkedAt stays set so eviction
39
+ // ordering still treats it as dormant.
40
+ if (graceMs === null)
41
+ return;
42
+ managed.graceTimer = setTimeout(() => {
43
+ managed.graceTimer = null;
44
+ managed.parkedAt = null;
45
+ // Re-check on fire: reschedule while the shell is still doing something —
46
+ // output still arriving (running), or a foreground program still alive
47
+ // though quiet (alive-quiet) — so a closed tab never kills a running
48
+ // command mid-stream, even after it's gone quiet. The shell only dies on
49
+ // a real idle (ready: no recent output and no foreground program, no
50
+ // clients), the same "no activity" signal that turns the tab's favicon
51
+ // grey.
52
+ if (this.computeState(managed) !== "ready") {
53
+ this.startGrace(managed);
54
+ return;
55
+ }
56
+ this.tearDown(managed);
57
+ this.onSessionActivity();
58
+ }, graceMs);
59
+ managed.graceTimer.unref?.();
60
+ }
61
+ rearmGrace(sessions) {
62
+ for (const managed of sessions.values()) {
63
+ if (managed.clients.size === 0 && !managed.session.isExited)
64
+ this.startGrace(managed);
65
+ }
66
+ }
67
+ cancelGrace(managed) {
68
+ if (managed.graceTimer !== null) {
69
+ clearTimeout(managed.graceTimer);
70
+ managed.graceTimer = null;
71
+ }
72
+ managed.parkedAt = null;
73
+ }
74
+ // The favicon-equivalent state, computed from the same signals the client's
75
+ // favicon uses (recent output → running; a foreground program but quiet →
76
+ // alive-quiet; idle → ready). Surfaced on the session list so the row icon
77
+ // colors match the tab the user is looking at.
78
+ computeState(managed) {
79
+ if (Date.now() - managed.lastOutputAt < SESSION_ACTIVITY_WINDOW_MS)
80
+ return "running";
81
+ return managed.hasForeground ? "alive-quiet" : "ready";
82
+ }
83
+ evictOldestDormant(sessions) {
84
+ let oldest = null;
85
+ let oldestKey = Infinity;
86
+ for (const managed of sessions.values()) {
87
+ if (managed.clients.size > 0)
88
+ continue;
89
+ // Pinned sessions are never silently evicted — they're explicitly held.
90
+ if (managed.pinned)
91
+ continue;
92
+ // Evict the parked session whose grace fires soonest (armed earliest); a
93
+ // parked session with no timer is a fresh spawn nobody attached yet —
94
+ // yield it only after all armed ones.
95
+ const key = managed.parkedAt ?? managed.createdAt;
96
+ if (key < oldestKey) {
97
+ oldestKey = key;
98
+ oldest = managed;
99
+ }
100
+ }
101
+ if (oldest)
102
+ this.tearDown(oldest);
103
+ }
104
+ }
105
+ //# sourceMappingURL=session-lifecycle-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-lifecycle-policy.js","sourceRoot":"","sources":["../src/session-lifecycle-policy.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,14 @@
1
- import { CaptureRenderer } from "./capture-renderer.js";
1
+ import type { CaptureRenderer } from "./capture-renderer.js";
2
2
  import { GitDiffWatcher } from "./git-diff-watcher.js";
3
- import { GitMetadataCoordinator } from "./git-metadata-coordinator.js";
3
+ import type { GitMetadataCoordinator } from "./git-metadata-coordinator.js";
4
4
  import { Session } from "./session.js";
5
+ import { type BrotliEncoder } from "./session-output-transport.js";
5
6
  import type { SessionEventName } from "./session-event-manager.js";
6
7
  import type { GitBranchPr, ServerToClientMessage, SessionClientProfile, SpawnPtyInput } from "./types.js";
7
8
  import type { CompressMode } from "./schemas.js";
8
9
  import type { SessionOwner } from "./identity/types.js";
9
- interface BrotliEncoder {
10
- flush: (bytes: Uint8Array<ArrayBuffer>) => Promise<Buffer<ArrayBuffer>>;
11
- release: () => void;
12
- }
13
10
  import { type SynchronizedOutputEndDetector } from "./utils/create-synchronized-output-end-detector.js";
14
- import { type ClientSocket } from "./utils/ws-socket.js";
11
+ import type { ClientSocket } from "./utils/ws-socket.js";
15
12
  import type { WorkspaceEntry } from "./workspace-store.js";
16
13
  export interface AutomationContext {
17
14
  automationId: string;
@@ -38,7 +35,7 @@ export interface WaitResult {
38
35
  snapshot: string;
39
36
  }
40
37
  export type SessionActivityState = "running" | "alive-quiet" | "ready";
41
- interface ManagedClient {
38
+ export interface ManagedClient {
42
39
  ws: ClientSocket;
43
40
  pending: boolean;
44
41
  pendingControl: ServerToClientMessage[];
@@ -94,13 +91,15 @@ interface SessionManagerOptions {
94
91
  }
95
92
  export declare class SessionManager {
96
93
  private readonly sessions;
97
- private readonly wsToClient;
98
94
  private readonly lastOutputAtByPid;
99
- private readonly coordinatorsByCwd;
100
95
  private readonly hooks;
101
96
  private readonly sendControl;
102
- private readonly getGraceMs;
103
- private readonly pendingPromoteTimeoutMs;
97
+ private readonly outputTransport;
98
+ private readonly clientHub;
99
+ private readonly commandExecutor;
100
+ private readonly gitEventBridge;
101
+ private readonly lifecyclePolicy;
102
+ private readonly outputCoordinator;
104
103
  private readonly shimsDir?;
105
104
  constructor(options: SessionManagerOptions);
106
105
  size(): number;
@@ -111,7 +110,6 @@ export declare class SessionManager {
111
110
  noteOutput(pid: number): void;
112
111
  hasRecentOutput(pids: readonly number[], withinMs: number): boolean;
113
112
  list(owner?: SessionOwner): SessionListItem[];
114
- private clientProfilesFor;
115
113
  workspaceEntries(): WorkspaceEntry[];
116
114
  clientProfile(ws: ClientSocket): {
117
115
  owner: SessionOwner;
@@ -130,8 +128,6 @@ export declare class SessionManager {
130
128
  promote(ws: ClientSocket, replay: boolean, compress?: CompressMode): Promise<void>;
131
129
  writeInput(ws: ClientSocket, data: string): void;
132
130
  writeTerminalResponse(ws: ClientSocket, data: string): void;
133
- private ensureTerminalResponder;
134
- private assignTerminalResponder;
135
131
  resize(ws: ClientSocket, cols: number, rows: number, pixelWidth?: number, pixelHeight?: number): void;
136
132
  detach(ws: ClientSocket): void;
137
133
  kill(id: string, owner?: SessionOwner): boolean;
@@ -153,38 +149,11 @@ export declare class SessionManager {
153
149
  cols: number;
154
150
  rows: number;
155
151
  };
156
- private ensureCaptureRenderer;
157
152
  execInSession(id: string, command: string, options?: ExecOptions, owner?: SessionOwner): Promise<ExecResult | null>;
158
- private buildExecResult;
159
- private clampInt;
160
- private sendScrollback;
161
- private sendOutputBytes;
162
- private compressPayload;
163
- private frameWithHeader;
164
- private frameWithCtxHeader;
165
- private sendOutputFrame;
166
- private broadcastBytes;
167
- private sendToClient;
168
- private broadcast;
169
- private broadcastToOwner;
170
- private onSessionOutput;
171
- private appendAutomationLog;
172
- private flushOutput;
173
- private maybePauseAfterFlush;
174
- private ensureDrainPoll;
175
- private stopDrainPoll;
176
- private recomputeResize;
177
153
  private installSessionListeners;
178
- private moveClientCoordinator;
179
154
  private handleExit;
180
155
  private tearDown;
181
- private evictOldestDormant;
182
- private startGrace;
183
156
  rearmGrace(): void;
184
- private cancelGrace;
185
- private computeState;
186
- private coordinatorForCwd;
187
- private releaseCoordinator;
188
157
  broadcastGitBranchPr(cwd: string, pr: GitBranchPr | null): void;
189
158
  hasCoordinatorFor(cwd: string): boolean;
190
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}