baxian 1.2.59 → 1.2.60

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 (103) hide show
  1. package/dist/agent/branch.d.ts.map +1 -1
  2. package/dist/agent/branch.js +19 -13
  3. package/dist/agent/branch.js.map +1 -1
  4. package/dist/agent/dispatch-reconciler.d.ts +45 -0
  5. package/dist/agent/dispatch-reconciler.d.ts.map +1 -0
  6. package/dist/agent/dispatch-reconciler.js +513 -0
  7. package/dist/agent/dispatch-reconciler.js.map +1 -0
  8. package/dist/agent/manager.d.ts +89 -8
  9. package/dist/agent/manager.d.ts.map +1 -1
  10. package/dist/agent/manager.js +975 -368
  11. package/dist/agent/manager.js.map +1 -1
  12. package/dist/agent/pane-streamer-manager.d.ts +70 -0
  13. package/dist/agent/pane-streamer-manager.d.ts.map +1 -1
  14. package/dist/agent/pane-streamer-manager.js +487 -5
  15. package/dist/agent/pane-streamer-manager.js.map +1 -1
  16. package/dist/agent/pane-streamer.d.ts +48 -1
  17. package/dist/agent/pane-streamer.d.ts.map +1 -1
  18. package/dist/agent/pane-streamer.js +338 -15
  19. package/dist/agent/pane-streamer.js.map +1 -1
  20. package/dist/agent/preflight.d.ts.map +1 -1
  21. package/dist/agent/preflight.js +18 -8
  22. package/dist/agent/preflight.js.map +1 -1
  23. package/dist/agent/repo-store.d.ts +3 -0
  24. package/dist/agent/repo-store.d.ts.map +1 -1
  25. package/dist/agent/repo-store.js +192 -67
  26. package/dist/agent/repo-store.js.map +1 -1
  27. package/dist/agent/review-transport.d.ts.map +1 -1
  28. package/dist/agent/review-transport.js +4 -2
  29. package/dist/agent/review-transport.js.map +1 -1
  30. package/dist/agent/tmux-probe-poller.d.ts.map +1 -1
  31. package/dist/agent/tmux-probe-poller.js +29 -20
  32. package/dist/agent/tmux-probe-poller.js.map +1 -1
  33. package/dist/agent/tmux.d.ts +79 -32
  34. package/dist/agent/tmux.d.ts.map +1 -1
  35. package/dist/agent/tmux.js +435 -225
  36. package/dist/agent/tmux.js.map +1 -1
  37. package/dist/api/config.d.ts.map +1 -1
  38. package/dist/api/config.js +10 -0
  39. package/dist/api/config.js.map +1 -1
  40. package/dist/api/projects.d.ts.map +1 -1
  41. package/dist/api/projects.js +186 -94
  42. package/dist/api/projects.js.map +1 -1
  43. package/dist/api/tasks.d.ts.map +1 -1
  44. package/dist/api/tasks.js +5 -1
  45. package/dist/api/tasks.js.map +1 -1
  46. package/dist/app.d.ts +2 -0
  47. package/dist/app.d.ts.map +1 -1
  48. package/dist/app.js +1 -0
  49. package/dist/app.js.map +1 -1
  50. package/dist/cli.d.ts.map +1 -1
  51. package/dist/cli.js +11 -3
  52. package/dist/cli.js.map +1 -1
  53. package/dist/config/hot-reload.d.ts.map +1 -1
  54. package/dist/config/hot-reload.js +1 -0
  55. package/dist/config/hot-reload.js.map +1 -1
  56. package/dist/config/loader.d.ts.map +1 -1
  57. package/dist/config/loader.js +48 -3
  58. package/dist/config/loader.js.map +1 -1
  59. package/dist/config/validator.js +3 -0
  60. package/dist/config/validator.js.map +1 -1
  61. package/dist/errors.d.ts +2 -1
  62. package/dist/errors.d.ts.map +1 -1
  63. package/dist/errors.js +3 -1
  64. package/dist/errors.js.map +1 -1
  65. package/dist/event/handlers.d.ts.map +1 -1
  66. package/dist/event/handlers.js +138 -41
  67. package/dist/event/handlers.js.map +1 -1
  68. package/dist/github/pr-conversation-cache.d.ts +41 -0
  69. package/dist/github/pr-conversation-cache.d.ts.map +1 -0
  70. package/dist/github/pr-conversation-cache.js +105 -0
  71. package/dist/github/pr-conversation-cache.js.map +1 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +14 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/shared/constants.d.ts +6 -0
  76. package/dist/shared/constants.d.ts.map +1 -1
  77. package/dist/shared/constants.js +6 -0
  78. package/dist/shared/constants.js.map +1 -1
  79. package/dist/shared/types.d.ts +4 -0
  80. package/dist/shared/types.d.ts.map +1 -1
  81. package/dist/shared/types.js.map +1 -1
  82. package/dist/state/agent-store.d.ts +5 -1
  83. package/dist/state/agent-store.d.ts.map +1 -1
  84. package/dist/state/agent-store.js +29 -15
  85. package/dist/state/agent-store.js.map +1 -1
  86. package/dist/state/lock.d.ts +9 -0
  87. package/dist/state/lock.d.ts.map +1 -1
  88. package/dist/state/lock.js +24 -1
  89. package/dist/state/lock.js.map +1 -1
  90. package/dist/state/task-store.js +2 -2
  91. package/dist/state/task-store.js.map +1 -1
  92. package/dist/terminal/attach.d.ts +10 -1
  93. package/dist/terminal/attach.d.ts.map +1 -1
  94. package/dist/terminal/attach.js +40 -20
  95. package/dist/terminal/attach.js.map +1 -1
  96. package/dist/terminal/stream-ws.d.ts.map +1 -1
  97. package/dist/terminal/stream-ws.js +27 -0
  98. package/dist/terminal/stream-ws.js.map +1 -1
  99. package/dist/web/assets/{index-DfcbGriX.css → index-CwYBVTyn.css} +1 -1
  100. package/dist/web/assets/index-DtnDvjOU.js +16 -0
  101. package/dist/web/index.html +2 -2
  102. package/package.json +1 -1
  103. package/dist/web/assets/index-DskVWe7e.js +0 -13
@@ -3,8 +3,9 @@ import { createRequire } from 'node:module';
3
3
  import { dirname, join } from 'node:path';
4
4
  import xterm from '@xterm/headless';
5
5
  import { SerializeAddon } from '@xterm/addon-serialize';
6
- import { buildAttachInteractiveCommand } from '../terminal/attach.js';
6
+ import { buildAttachInteractiveCommand, buildAttachProbeCommand, } from '../terminal/attach.js';
7
7
  import { sshEnv } from './runner.js';
8
+ import { desiredTty } from './tmux.js';
8
9
  import { computeBackoffMs } from '../timing/backoff.js';
9
10
  const DEFAULT_SCROLLBACK_LINES = 1000;
10
11
  const DEFAULT_IDLE_GRACE_MS = 5000;
@@ -17,6 +18,24 @@ const DEFAULT_REATTACH_STABLE_AFTER_MS = 5000;
17
18
  const DEFAULT_SESSION_PROBE_TIMEOUT_MS = 3000;
18
19
  const DEFAULT_COLS = 200;
19
20
  const DEFAULT_ROWS = 50;
21
+ const DEFAULT_FOLLOW_INTERVAL_MS = 1500;
22
+ const MIN_FOLLOW_INTERVAL_MS = 200;
23
+ // The follow interval has no disable value: the owner reconciler shares this
24
+ // cadence and must never be configured off (invariant 6).
25
+ export function normalizeFollowIntervalMs(value) {
26
+ if (value === undefined || !Number.isFinite(value) || value <= 0)
27
+ return DEFAULT_FOLLOW_INTERVAL_MS;
28
+ return Math.min(Math.max(Math.trunc(value), MIN_FOLLOW_INTERVAL_MS), MAX_TIMER_DELAY_MS);
29
+ }
30
+ const ATTACH_VERSION_RE = /tmux\s+(?:next-)?(\d+)\.(\d+)/;
31
+ export function parseAttachFlagCapability(output) {
32
+ const m = ATTACH_VERSION_RE.exec(output);
33
+ if (!m)
34
+ return null;
35
+ const major = parseInt(m[1], 10);
36
+ const minor = parseInt(m[2], 10);
37
+ return major > 3 || (major === 3 && minor >= 2);
38
+ }
20
39
  let cachedPtyFactory = null;
21
40
  const EXEC_BITS = 0o111;
22
41
  const moduleRequire = createRequire(import.meta.url);
@@ -117,9 +136,22 @@ export class PaneStreamer {
117
136
  outageActive = false;
118
137
  stabilityTimer = null;
119
138
  ptyGeneration = 0;
139
+ // Just-attached PTY output is held here until the post-attach handshake proves the generation (flushed on 'owned', dropped otherwise) — the browser must never see bytes from an unverified session.
140
+ attachQuarantined = false;
141
+ quarantineBuffer = [];
142
+ // The tmux generation this streamer is bound to (pinned on first attach); a reissued generation is treated as gone so the manager rebuilds the streamer.
143
+ expectedRef = null;
120
144
  destroyed = false;
121
145
  starting = null;
122
146
  started = false;
147
+ followTimer = null;
148
+ followInFlight = false;
149
+ followReadFailing = false;
150
+ refreshPending = false;
151
+ refreshCbs = new Set();
152
+ // null = capability unknown (probe failed/hung/unparseable): never cached, re-probed next spawn.
153
+ attachFlagged = null;
154
+ currentPtyFlagged = false;
123
155
  scrollbackLines;
124
156
  idleGraceMs;
125
157
  reattachDelayMs;
@@ -129,8 +161,10 @@ export class PaneStreamer {
129
161
  sessionProbeTimeoutMs;
130
162
  initialCols;
131
163
  initialRows;
164
+ windowFollowIntervalMs;
132
165
  ptyFactoryProvided;
133
166
  random;
167
+ geometry;
134
168
  constructor(agent, tmux, resolveHost, opts = {}) {
135
169
  this.agent = agent;
136
170
  this.tmux = tmux;
@@ -145,6 +179,8 @@ export class PaneStreamer {
145
179
  this.sessionProbeTimeoutMs = normalizeSessionProbeTimeoutMs(opts.sessionProbeTimeoutMs ?? DEFAULT_SESSION_PROBE_TIMEOUT_MS);
146
180
  this.initialCols = opts.initialCols ?? DEFAULT_COLS;
147
181
  this.initialRows = opts.initialRows ?? DEFAULT_ROWS;
182
+ this.windowFollowIntervalMs = normalizeFollowIntervalMs(opts.windowFollowIntervalMs);
183
+ this.geometry = opts.geometry;
148
184
  this.ptyFactoryProvided = opts.ptyFactory;
149
185
  this.headless = new xterm.Terminal({
150
186
  cols: this.initialCols,
@@ -188,38 +224,203 @@ export class PaneStreamer {
188
224
  }
189
225
  if (this.reattaching)
190
226
  return this.reattaching;
191
- const p = this.spawnAttachPty().finally(() => {
227
+ let wantRetry = false;
228
+ const p = this.attemptAttach()
229
+ .then((outcome) => { wantRetry = outcome === 'retry'; })
230
+ .finally(() => {
192
231
  if (this.reattaching === p)
193
232
  this.reattaching = null;
233
+ // A transport-uncertain probe never spawns a PTY; it only schedules a backoff retry.
234
+ if (wantRetry && !this.destroyed && !this.pty)
235
+ this.scheduleReattach();
194
236
  });
195
237
  this.reattaching = p;
196
238
  return p;
197
239
  }
240
+ // Owned = current same-name generation (pid+start_time+session_id) matches the pinned one and is still self-claimed; a fresh server reissues the name with a NEW generation. Throws on a transport-uncertain probe so the caller backs off, not misreads it as gone.
241
+ async checkOwnership() {
242
+ const snap = await this.tmux.getSessionSnapshot(this.agent.id, { timeout: this.sessionProbeTimeoutMs });
243
+ if (!snap || snap.claim !== this.agent.id)
244
+ return 'gone';
245
+ if (this.expectedRef === null) {
246
+ this.expectedRef = snap.ref; // first attach pins the generation we are bound to
247
+ return 'owned';
248
+ }
249
+ const sameGeneration = snap.ref.serverPid === this.expectedRef.serverPid &&
250
+ snap.ref.serverStart === this.expectedRef.serverStart &&
251
+ snap.ref.sessionId === this.expectedRef.sessionId;
252
+ return sameGeneration ? 'owned' : 'gone';
253
+ }
254
+ // 'ok' = attached; 'gone' = session absent/foreign/reissued (torn down); 'retry' = probe uncertain.
255
+ async attemptAttach() {
256
+ let ownership;
257
+ try {
258
+ ownership = await this.checkOwnership();
259
+ }
260
+ catch (err) {
261
+ this.noteOutage(err);
262
+ return 'retry';
263
+ }
264
+ if (this.destroyed)
265
+ return 'ok';
266
+ if (ownership === 'gone') {
267
+ this.markSessionGone();
268
+ return 'gone';
269
+ }
270
+ await this.spawnAttachPty();
271
+ // Post-attach handshake: a restart between the guard probe and attach-session exec could connect a same-name successor; re-prove the pinned generation before Web I/O settles, tear down otherwise.
272
+ if (this.destroyed || !this.pty)
273
+ return 'ok';
274
+ let postOwnership;
275
+ try {
276
+ postOwnership = await this.checkOwnership();
277
+ }
278
+ catch (err) {
279
+ // Fail closed like the pre-attach probe: an uncertain post-attach probe cannot prove we are still on
280
+ // the pinned generation, so tear down the just-attached PTY and back off rather than expose a
281
+ // possibly-foreign session to the browser.
282
+ this.killAttachPty();
283
+ this.noteOutage(err);
284
+ return 'retry';
285
+ }
286
+ if (postOwnership === 'gone' && !this.destroyed) {
287
+ this.markSessionGone();
288
+ return 'gone';
289
+ }
290
+ if (this.destroyed)
291
+ return 'ok';
292
+ this.releaseQuarantine(); // verified — flush the buffered output and stream live from here
293
+ return 'ok';
294
+ }
295
+ releaseQuarantine() {
296
+ if (!this.attachQuarantined)
297
+ return;
298
+ this.attachQuarantined = false;
299
+ const buffered = this.quarantineBuffer;
300
+ this.quarantineBuffer = [];
301
+ for (const data of buffered)
302
+ this.onPtyData(data);
303
+ }
198
304
  async spawnAttachPty() {
199
305
  const factory = this.ptyFactoryProvided ?? (await defaultPtyFactory());
200
306
  if (this.destroyed)
201
307
  throw new Error('PaneStreamer destroyed during attach');
202
308
  const host = this.resolveHost();
203
- const cmd = buildAttachInteractiveCommand(this.agent, host);
204
309
  const env = await sshEnv(host);
310
+ const flagged = await this.resolveAttachCapability(factory, host, env);
311
+ if (this.destroyed)
312
+ throw new Error('PaneStreamer destroyed during attach');
313
+ await this.alignSpawnBaseline(flagged);
314
+ if (this.destroyed)
315
+ throw new Error('PaneStreamer destroyed during attach');
316
+ // The attach command re-proves the pinned expectedRef (generation+claim) before exec, so a same-name successor is never attached.
317
+ const expected = this.expectedRef
318
+ ? {
319
+ serverPid: this.expectedRef.serverPid,
320
+ serverStart: this.expectedRef.serverStart,
321
+ sessionId: this.expectedRef.sessionId,
322
+ claim: this.agent.id,
323
+ }
324
+ : undefined;
325
+ const cmd = buildAttachInteractiveCommand(this.agent, host, expected, { ignoreSize: flagged });
205
326
  if (Object.keys(env).length > 0)
206
327
  cmd.env = env;
207
- const pty = factory(cmd, this.headless.cols, this.headless.rows);
328
+ const spawnCols = this.headless.cols;
329
+ const spawnRows = this.headless.rows;
330
+ const pty = factory(cmd, spawnCols, spawnRows);
208
331
  const generation = ++this.ptyGeneration;
209
332
  this.pty = pty;
333
+ this.currentPtyFlagged = flagged;
334
+ // Quarantine output until attemptAttach's post-attach handshake confirms the generation.
335
+ this.attachQuarantined = true;
336
+ this.quarantineBuffer = [];
210
337
  pty.onData((data) => {
211
338
  if (generation !== this.ptyGeneration || this.destroyed)
212
339
  return;
340
+ if (this.attachQuarantined) {
341
+ this.quarantineBuffer.push(data);
342
+ return;
343
+ }
213
344
  this.onPtyData(data);
214
345
  });
215
346
  pty.onExit(() => {
216
347
  if (generation !== this.ptyGeneration || this.destroyed)
217
348
  return;
218
349
  this.clearStabilityTimer();
350
+ this.clearFollowTimer();
219
351
  this.pty = null;
220
352
  void this.handleAttachExit();
221
353
  });
354
+ // A resize() that landed between baseline and spawn moved headless; the pty
355
+ // always follows headless (single source of truth), never the reverse.
356
+ if (this.headless.cols !== spawnCols || this.headless.rows !== spawnRows) {
357
+ pty.resize(this.headless.cols, this.headless.rows);
358
+ }
222
359
  this.armStabilityTimer(generation);
360
+ this.armFollowTimer();
361
+ }
362
+ async resolveAttachCapability(factory, host, env) {
363
+ if (this.attachFlagged !== null)
364
+ return this.attachFlagged;
365
+ const g = this.geometry;
366
+ if (!g)
367
+ return false;
368
+ let output;
369
+ try {
370
+ output = await g.raceProbe(() => this.startAttachProbe(factory, host, env));
371
+ }
372
+ catch (err) {
373
+ const detail = err instanceof Error ? err.message : String(err);
374
+ console.warn(`[pane-streamer] ${this.agent.id} attach capability probe failed (flagless this spawn): ${detail}`);
375
+ return false;
376
+ }
377
+ const capability = parseAttachFlagCapability(output);
378
+ if (capability === null) {
379
+ console.warn(`[pane-streamer] ${this.agent.id} attach capability probe unparseable (flagless this spawn): ${JSON.stringify(output.slice(0, 120))}`);
380
+ return false;
381
+ }
382
+ this.attachFlagged = capability;
383
+ return capability;
384
+ }
385
+ startAttachProbe(factory, host, env) {
386
+ const cmd = buildAttachProbeCommand(this.agent, host);
387
+ if (Object.keys(env).length > 0)
388
+ cmd.env = env;
389
+ const pty = factory(cmd, 80, 24);
390
+ let output = '';
391
+ pty.onData((data) => { output += data; });
392
+ const settled = new Promise((resolve) => { pty.onExit(() => resolve()); });
393
+ return {
394
+ result: settled.then(() => output),
395
+ settled,
396
+ // SIGKILL cannot be ignored: a hung probe reliably reaches onExit, releasing
397
+ // its admission slot; anything still wedged stays registered as honest
398
+ // backpressure. A kill throw propagates to the manager, which logs it with
399
+ // the agent as target — never swallowed silently.
400
+ onDeadline: () => pty.kill('SIGKILL'),
401
+ };
402
+ }
403
+ async alignSpawnBaseline(flagged) {
404
+ const g = this.geometry;
405
+ if (!g || !flagged || g.fullHolds() > 0)
406
+ return;
407
+ let geom;
408
+ try {
409
+ geom = await g.readGeometry();
410
+ }
411
+ catch {
412
+ return;
413
+ }
414
+ if (this.destroyed)
415
+ return;
416
+ // holds flipping mid-read means a full subscriber owns geometry now; keep headless.
417
+ if (g.fullHolds() > 0)
418
+ return;
419
+ const want = desiredTty(geom);
420
+ if (want.cols === this.headless.cols && want.rows === this.headless.rows)
421
+ return;
422
+ this.headless.resize(want.cols, want.rows);
423
+ this.scheduleSnapshotRefresh();
223
424
  }
224
425
  armStabilityTimer(generation) {
225
426
  this.clearStabilityTimer();
@@ -241,6 +442,111 @@ export class PaneStreamer {
241
442
  this.stabilityTimer = null;
242
443
  }
243
444
  }
445
+ armFollowTimer() {
446
+ if (this.followTimer || this.destroyed || !this.geometry || !this.currentPtyFlagged)
447
+ return;
448
+ this.followTimer = setInterval(() => { void this.followTick(); }, this.windowFollowIntervalMs);
449
+ this.followTimer.unref?.();
450
+ }
451
+ clearFollowTimer() {
452
+ if (this.followTimer) {
453
+ clearInterval(this.followTimer);
454
+ this.followTimer = null;
455
+ }
456
+ }
457
+ async followTick() {
458
+ if (this.followInFlight)
459
+ return;
460
+ this.followInFlight = true;
461
+ try {
462
+ const g = this.geometry;
463
+ if (!g || this.destroyed || !this.pty || !this.currentPtyFlagged)
464
+ return;
465
+ if (g.fullHolds() > 0)
466
+ return;
467
+ const generation = this.ptyGeneration;
468
+ let geom;
469
+ try {
470
+ geom = await g.readGeometry();
471
+ }
472
+ catch (err) {
473
+ if (!this.followReadFailing) {
474
+ this.followReadFailing = true;
475
+ const detail = err instanceof Error ? err.message : String(err);
476
+ console.warn(`[pane-streamer] ${this.agent.id} follow geometry read failing: ${detail}`);
477
+ }
478
+ return;
479
+ }
480
+ if (this.followReadFailing) {
481
+ this.followReadFailing = false;
482
+ console.log(`[pane-streamer] ${this.agent.id} follow geometry read recovered`);
483
+ }
484
+ if (this.destroyed)
485
+ return;
486
+ if (geom.sizeMode === 'manual') {
487
+ g.noteManualSeen();
488
+ return;
489
+ }
490
+ const want = desiredTty(geom);
491
+ if (want.cols === this.headless.cols && want.rows === this.headless.rows)
492
+ return;
493
+ // Commit-point recheck: the read was async and the world may have moved.
494
+ if (this.destroyed || g.fullHolds() > 0 || generation !== this.ptyGeneration || !this.pty)
495
+ return;
496
+ try {
497
+ // The hidden attach can die between the recheck and this call (onExit not
498
+ // yet delivered); this runs on a bare interval, so a throw here would be
499
+ // an unhandled rejection, not a client-visible resize_failed.
500
+ this.pty.resize(want.cols, want.rows);
501
+ this.headless.resize(want.cols, want.rows);
502
+ }
503
+ catch (err) {
504
+ console.warn(`[pane-streamer] ${this.agent.id} follow resize raced pty exit:`, err);
505
+ return;
506
+ }
507
+ this.scheduleSnapshotRefresh();
508
+ }
509
+ catch (err) {
510
+ console.warn(`[pane-streamer] ${this.agent.id} follow tick failed:`, err);
511
+ }
512
+ finally {
513
+ this.followInFlight = false;
514
+ }
515
+ }
516
+ // Non-blocking, merged: geometry commits never wait on the data chain; one
517
+ // pending node re-reads headless at run time, so the last geometry wins.
518
+ scheduleSnapshotRefresh() {
519
+ if (this.refreshPending || this.destroyed)
520
+ return;
521
+ this.refreshPending = true;
522
+ this.onPtyDataChain = this.onPtyDataChain.then(() => {
523
+ this.refreshPending = false;
524
+ if (this.destroyed || this.refreshCbs.size === 0)
525
+ return;
526
+ const snapshot = {
527
+ cols: this.headless.cols,
528
+ rows: this.headless.rows,
529
+ data: this.serialize.serialize(),
530
+ };
531
+ const seq = this.lastBroadcastSeq;
532
+ for (const cb of [...this.refreshCbs]) {
533
+ try {
534
+ cb(snapshot, seq);
535
+ }
536
+ catch { }
537
+ }
538
+ }).catch((err) => {
539
+ // A rejected tail would silently swallow every later write/subscribe on
540
+ // this chain; recover it so one bad serialize can't kill the stream.
541
+ this.refreshPending = false;
542
+ console.warn(`[pane-streamer] ${this.agent.id} snapshot refresh failed:`, err);
543
+ });
544
+ }
545
+ acquireFullHold() {
546
+ if (!this.geometry)
547
+ return () => undefined;
548
+ return this.geometry.acquireFullHold();
549
+ }
244
550
  onPtyData(data) {
245
551
  this.onPtyDataChain = this.onPtyDataChain.then(async () => {
246
552
  if (this.destroyed)
@@ -273,6 +579,8 @@ export class PaneStreamer {
273
579
  const snapshotSeq = this.lastBroadcastSeq;
274
580
  this.live.add(cbs.onLive);
275
581
  this.sessionGoneCbs.add(cbs.onSessionGone);
582
+ if (cbs.onSnapshotRefresh)
583
+ this.refreshCbs.add(cbs.onSnapshotRefresh);
276
584
  resolve({
277
585
  unsubscribe: () => this.unsubscribeOne(cbs),
278
586
  snapshot,
@@ -299,18 +607,21 @@ export class PaneStreamer {
299
607
  });
300
608
  });
301
609
  }
610
+ // Full target lands in owner state before any exec, and the local stream follows
611
+ // immediately (the client xterm already fitted); the tmux write may fail, but the
612
+ // target survives for the reconciler to converge on.
302
613
  async resize(cols, rows) {
303
614
  if (this.destroyed)
304
615
  throw new Error('PaneStreamer is destroyed');
305
- await this.tmux.resizeWindow(this.agent.id, cols, rows);
616
+ const g = this.geometry;
617
+ g?.recordFullTarget({ cols, rows });
306
618
  this.pty?.resize(cols, rows);
307
619
  this.headless.resize(cols, rows);
308
- try {
309
- await this.tmux.setOption(this.agent.id, 'window-size', 'latest');
310
- }
311
- catch (err) {
312
- console.warn(`[pane-streamer] set window-size=latest failed after resize(${this.agent.id}):`, err);
313
- }
620
+ this.scheduleSnapshotRefresh();
621
+ // The manager's owner write carries the triple∧claim∧generation guard server-side,
622
+ // so a foreign or reissued same-name session can never be resized from here.
623
+ if (g)
624
+ await g.commitOwnerResize();
314
625
  }
315
626
  async sendInput(data) {
316
627
  if (this.destroyed)
@@ -325,6 +636,9 @@ export class PaneStreamer {
325
636
  isDestroyed() {
326
637
  return this.destroyed;
327
638
  }
639
+ get size() {
640
+ return { cols: this.headless.cols, rows: this.headless.rows };
641
+ }
328
642
  destroy(opts = {}) {
329
643
  if (this.destroyed)
330
644
  return;
@@ -340,6 +654,7 @@ export class PaneStreamer {
340
654
  const goneCbs = [...this.sessionGoneCbs];
341
655
  this.sessionGoneCbs.clear();
342
656
  this.live.clear();
657
+ this.refreshCbs.clear();
343
658
  if (!opts.silent) {
344
659
  for (const cb of goneCbs) {
345
660
  try {
@@ -352,6 +667,10 @@ export class PaneStreamer {
352
667
  }
353
668
  killAttachPty() {
354
669
  this.clearStabilityTimer();
670
+ this.clearFollowTimer();
671
+ // Discard any quarantined (unverified) output with the PTY — it must never reach the browser.
672
+ this.attachQuarantined = false;
673
+ this.quarantineBuffer = [];
355
674
  if (this.pty) {
356
675
  const pty = this.pty;
357
676
  this.pty = null;
@@ -368,16 +687,17 @@ export class PaneStreamer {
368
687
  this.scheduleIdleIfEmpty();
369
688
  return;
370
689
  }
371
- let sessionPresent = null;
690
+ // Reconnect only into our pinned generation; a bare hasSession(name) would reattach Web I/O into a fresh server's same-name session.
691
+ let ownership = null;
372
692
  try {
373
- sessionPresent = await this.tmux.hasSession(this.agent.id, { timeout: this.sessionProbeTimeoutMs });
693
+ ownership = await this.checkOwnership();
374
694
  }
375
695
  catch (err) {
376
- this.noteOutage(err);
696
+ this.noteOutage(err); // transport-uncertain → backoff retry (attemptAttach re-verifies), never spawn now
377
697
  }
378
698
  if (this.destroyed)
379
699
  return;
380
- if (sessionPresent === false) {
700
+ if (ownership === 'gone') {
381
701
  this.markSessionGone();
382
702
  return;
383
703
  }
@@ -427,6 +747,7 @@ export class PaneStreamer {
427
747
  const cbs = [...this.sessionGoneCbs];
428
748
  this.sessionGoneCbs.clear();
429
749
  this.live.clear();
750
+ this.refreshCbs.clear();
430
751
  this.killAttachPty();
431
752
  for (const cb of cbs) {
432
753
  try {
@@ -438,6 +759,8 @@ export class PaneStreamer {
438
759
  unsubscribeOne(cbs) {
439
760
  this.live.delete(cbs.onLive);
440
761
  this.sessionGoneCbs.delete(cbs.onSessionGone);
762
+ if (cbs.onSnapshotRefresh)
763
+ this.refreshCbs.delete(cbs.onSnapshotRefresh);
441
764
  this.scheduleIdleIfEmpty();
442
765
  }
443
766
  scheduleIdleIfEmpty() {
@@ -1 +1 @@
1
- {"version":3,"file":"pane-streamer.js","sourceRoot":"","sources":["../../src/agent/pane-streamer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pane-streamer.js","sourceRoot":"","sources":["../../src/agent/pane-streamer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/agent/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAGlE,OAAO,KAAK,EAAE,WAAW,EAAgB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AA0BD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAOlD;AAkCD,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAQ7F;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,UAAU,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,EAAE,CAAC,CA6E5B"}
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/agent/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAIlE,OAAO,KAAK,EAAE,WAAW,EAAgB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AA0BD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAOlD;AAkCD,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAQ7F;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,UAAU,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,EAAE,CAAC,CAiE5B"}
@@ -1,4 +1,5 @@
1
1
  import { LocalRunner, buildSshOptions, ensureMuxDir, shellQuote, sshTarget, sshEnv } from './runner.js';
2
+ import { ancestorSymlinkGuard } from './repo-store.js';
2
3
  import { GH_EXEC_TIMEOUT_MS, GIT_NET_ENV, execNetwork } from './net-exec.js';
3
4
  import { isGitHubRepo, redactGitCredentials, repoSlug } from '../shared/index.js';
4
5
  const CLI_BINARY = {
@@ -85,9 +86,6 @@ export async function runPreflight(runner, agent, repo, host, projectId) {
85
86
  }
86
87
  results.push(await probeBinary(runner, binary, 'cli', (path) => `${binary} found at ${path}`, `Please install ${agent.runtime} CLI (${binary})`, { remoteShell: 'login-interactive' }));
87
88
  results.push(await probeTmux(runner, projectId));
88
- if (agent.mode === 'remote') {
89
- results.push(await probeBinary(runner, 'openssl', 'openssl', (path) => `openssl found at ${path}`, 'Please install openssl on the agent host (used to decode skill/task files during injection)'));
90
- }
91
89
  const isAuto = !agent.workdir;
92
90
  if (isAuto) {
93
91
  await runAutoModePreflight(runner, agent.id, repo, results);
@@ -139,20 +137,32 @@ async function runManualModePreflight(runner, workdir, repo, results) {
139
137
  }
140
138
  async function runAutoModePreflight(runner, agentId, repo, results) {
141
139
  const gh = isGitHubRepo(repo);
142
- const root = `~/.baxian/agents/${agentId}`;
140
+ // ~ is expanded by the remote shell to $HOME; physicalize it first so the agent dir is created
141
+ // through a proven symlink-free chain, not the raw logical path (a rebound .baxian → external dir).
142
+ const homeProbe = await runner.exec('cd ~ && pwd -P');
143
+ const home = homeProbe.stdout.trim();
144
+ if (homeProbe.exitCode !== 0 || home === '') {
145
+ results.push({
146
+ step: 'workdir',
147
+ ok: false,
148
+ message: `Cannot resolve physical home: ${homeProbe.stderr || homeProbe.stdout}`,
149
+ });
150
+ return;
151
+ }
152
+ const root = `${home}/.baxian/agents/${agentId}`;
143
153
  const absRepoPath = `${root}/repo`;
144
- const mk = await runner.exec(`mkdir -p ${root} && test -w ${root}`);
154
+ const mk = await runner.exec(`${ancestorSymlinkGuard(home, root)} && mkdir -p ${shellQuote(root)} && test -w ${shellQuote(root)}`);
145
155
  if (mk.exitCode !== 0) {
146
156
  results.push({
147
157
  step: 'workdir',
148
158
  ok: false,
149
- message: `Cannot create or write to ${root}: ${mk.stderr || mk.stdout}`,
159
+ message: `Cannot create or write to ${root} (symlink-safe): ${mk.stderr || mk.stdout}`,
150
160
  });
151
161
  return;
152
162
  }
153
- const dirCheck = await runner.exec(`test -d ${absRepoPath}`);
163
+ const dirCheck = await runner.exec(`test -d ${shellQuote(absRepoPath)}`);
154
164
  if (dirCheck.exitCode === 0) {
155
- const gitCheck = await runner.exec(`cd ${absRepoPath} && ` +
165
+ const gitCheck = await runner.exec(`cd ${shellQuote(absRepoPath)} && ` +
156
166
  `test "$(pwd -P)" = "$(cd "$(git rev-parse --show-toplevel)" && pwd -P)" && ` +
157
167
  `test "$(git rev-parse --is-bare-repository)" = false && ` +
158
168
  `test -d .git && test "$(git rev-parse --git-common-dir)" = .git && ` +