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.
- package/dist/agent/branch.d.ts.map +1 -1
- package/dist/agent/branch.js +19 -13
- package/dist/agent/branch.js.map +1 -1
- package/dist/agent/dispatch-reconciler.d.ts +45 -0
- package/dist/agent/dispatch-reconciler.d.ts.map +1 -0
- package/dist/agent/dispatch-reconciler.js +513 -0
- package/dist/agent/dispatch-reconciler.js.map +1 -0
- package/dist/agent/manager.d.ts +89 -8
- package/dist/agent/manager.d.ts.map +1 -1
- package/dist/agent/manager.js +975 -368
- package/dist/agent/manager.js.map +1 -1
- package/dist/agent/pane-streamer-manager.d.ts +70 -0
- package/dist/agent/pane-streamer-manager.d.ts.map +1 -1
- package/dist/agent/pane-streamer-manager.js +487 -5
- package/dist/agent/pane-streamer-manager.js.map +1 -1
- package/dist/agent/pane-streamer.d.ts +48 -1
- package/dist/agent/pane-streamer.d.ts.map +1 -1
- package/dist/agent/pane-streamer.js +338 -15
- package/dist/agent/pane-streamer.js.map +1 -1
- package/dist/agent/preflight.d.ts.map +1 -1
- package/dist/agent/preflight.js +18 -8
- package/dist/agent/preflight.js.map +1 -1
- package/dist/agent/repo-store.d.ts +3 -0
- package/dist/agent/repo-store.d.ts.map +1 -1
- package/dist/agent/repo-store.js +192 -67
- package/dist/agent/repo-store.js.map +1 -1
- package/dist/agent/review-transport.d.ts.map +1 -1
- package/dist/agent/review-transport.js +4 -2
- package/dist/agent/review-transport.js.map +1 -1
- package/dist/agent/tmux-probe-poller.d.ts.map +1 -1
- package/dist/agent/tmux-probe-poller.js +29 -20
- package/dist/agent/tmux-probe-poller.js.map +1 -1
- package/dist/agent/tmux.d.ts +79 -32
- package/dist/agent/tmux.d.ts.map +1 -1
- package/dist/agent/tmux.js +435 -225
- package/dist/agent/tmux.js.map +1 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +10 -0
- package/dist/api/config.js.map +1 -1
- package/dist/api/projects.d.ts.map +1 -1
- package/dist/api/projects.js +186 -94
- package/dist/api/projects.js.map +1 -1
- package/dist/api/tasks.d.ts.map +1 -1
- package/dist/api/tasks.js +5 -1
- package/dist/api/tasks.js.map +1 -1
- package/dist/app.d.ts +2 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +1 -0
- package/dist/app.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -3
- package/dist/cli.js.map +1 -1
- package/dist/config/hot-reload.d.ts.map +1 -1
- package/dist/config/hot-reload.js +1 -0
- package/dist/config/hot-reload.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +48 -3
- package/dist/config/loader.js.map +1 -1
- package/dist/config/validator.js +3 -0
- package/dist/config/validator.js.map +1 -1
- package/dist/errors.d.ts +2 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +3 -1
- package/dist/errors.js.map +1 -1
- package/dist/event/handlers.d.ts.map +1 -1
- package/dist/event/handlers.js +138 -41
- package/dist/event/handlers.js.map +1 -1
- package/dist/github/pr-conversation-cache.d.ts +41 -0
- package/dist/github/pr-conversation-cache.d.ts.map +1 -0
- package/dist/github/pr-conversation-cache.js +105 -0
- package/dist/github/pr-conversation-cache.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/shared/constants.d.ts +6 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +6 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/types.d.ts +4 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/dist/state/agent-store.d.ts +5 -1
- package/dist/state/agent-store.d.ts.map +1 -1
- package/dist/state/agent-store.js +29 -15
- package/dist/state/agent-store.js.map +1 -1
- package/dist/state/lock.d.ts +9 -0
- package/dist/state/lock.d.ts.map +1 -1
- package/dist/state/lock.js +24 -1
- package/dist/state/lock.js.map +1 -1
- package/dist/state/task-store.js +2 -2
- package/dist/state/task-store.js.map +1 -1
- package/dist/terminal/attach.d.ts +10 -1
- package/dist/terminal/attach.d.ts.map +1 -1
- package/dist/terminal/attach.js +40 -20
- package/dist/terminal/attach.js.map +1 -1
- package/dist/terminal/stream-ws.d.ts.map +1 -1
- package/dist/terminal/stream-ws.js +27 -0
- package/dist/terminal/stream-ws.js.map +1 -1
- package/dist/web/assets/{index-DfcbGriX.css → index-CwYBVTyn.css} +1 -1
- package/dist/web/assets/index-DtnDvjOU.js +16 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- 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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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;
|
|
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"}
|
package/dist/agent/preflight.js
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
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 && ` +
|