@dsiloed/silo-link 1.19.16 → 1.19.17
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/README.md +56 -3
- package/dist/core/agent-launcher.d.ts +1 -1
- package/dist/core/agent-launcher.d.ts.map +1 -1
- package/dist/core/base-tmux-launcher.d.ts +29 -1
- package/dist/core/base-tmux-launcher.d.ts.map +1 -1
- package/dist/core/base-tmux-launcher.js +94 -9
- package/dist/core/base-tmux-launcher.js.map +1 -1
- package/dist/core/bridge.d.ts.map +1 -1
- package/dist/core/bridge.js +2 -0
- package/dist/core/bridge.js.map +1 -1
- package/dist/core/claude-launcher.d.ts.map +1 -1
- package/dist/core/claude-launcher.js +6 -2
- package/dist/core/claude-launcher.js.map +1 -1
- package/dist/core/idle-completion.d.ts +19 -0
- package/dist/core/idle-completion.d.ts.map +1 -1
- package/dist/core/idle-completion.js +21 -2
- package/dist/core/idle-completion.js.map +1 -1
- package/dist/core/mcp-config-dir.d.ts +16 -0
- package/dist/core/mcp-config-dir.d.ts.map +1 -0
- package/dist/core/mcp-config-dir.js +37 -0
- package/dist/core/mcp-config-dir.js.map +1 -0
- package/dist/core/stray-processes.d.ts +47 -0
- package/dist/core/stray-processes.d.ts.map +1 -0
- package/dist/core/stray-processes.js +141 -0
- package/dist/core/stray-processes.js.map +1 -0
- package/dist/core/workspace-manager.d.ts.map +1 -1
- package/dist/core/workspace-manager.js +6 -2
- package/dist/core/workspace-manager.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -100,6 +100,9 @@ All four of `--host`, `--tenant`, `--user-sub`, `--jwt` are required when `--non
|
|
|
100
100
|
| `claude_auto_respawn` | Auto-respawn on idle/exit | `false` |
|
|
101
101
|
| `claude_idle_timeout_ms` | Idle threshold before respawn | `30000` |
|
|
102
102
|
| `claude_session_prompt` | Default prompt for spawned sessions | `Register with SiloLink...` |
|
|
103
|
+
| `stale_inbound_grace_ms` | On an inbound message, never recycle a session younger than this (a fresh pane may take minutes to register) | `600000` (10 min) |
|
|
104
|
+
| `report_back_idle_ms` | After a `final:true` report with no further work, complete the session (`state: idle_timeout`) and kill the pane; `0` disables | `120000` (2 min) |
|
|
105
|
+
| `poll_idle_complete_ms` | **Opt-in.** End a session parked in `remote_poll` with zero work calls for this long; `0` = disabled | `0` |
|
|
103
106
|
|
|
104
107
|
**Example config file (after running `silolink config`):**
|
|
105
108
|
|
|
@@ -228,9 +231,10 @@ tmux attach -t silolink-claude-1774363497579
|
|
|
228
231
|
|
|
229
232
|
| Tool | Description | Blocking |
|
|
230
233
|
|------|-------------|----------|
|
|
231
|
-
| `remote_register` | Register session, create/attach conversation | No |
|
|
234
|
+
| `remote_register` | Register session, create/attach conversation (binds to the launched conversation) | No |
|
|
232
235
|
| `remote_load_context` | Load prior conversation history for session continuity | No |
|
|
233
|
-
| `remote_notify` | Fire-and-forget message | No |
|
|
236
|
+
| `remote_notify` | Fire-and-forget message (accepts `final?`) | No |
|
|
237
|
+
| `remote_post` | Post to ANY conversation by id (accepts `final?`) | No |
|
|
234
238
|
| `remote_ask` | Post question, wait for reply | Yes |
|
|
235
239
|
| `remote_poll` | Non-blocking check for next message (**recommended**) | No |
|
|
236
240
|
| `remote_check_messages` | Non-blocking check for ALL pending messages | No |
|
|
@@ -252,6 +256,14 @@ Output: { session_id, conversation_id, conversation_url }
|
|
|
252
256
|
|
|
253
257
|
When `conversation_id` is provided, attaches to that existing conversation (used by auto-launcher).
|
|
254
258
|
|
|
259
|
+
For a session the daemon launched, the MCP transport is already bound to the
|
|
260
|
+
**launched** conversation (via the per-launch `X-SiloLink-Launch` header), so
|
|
261
|
+
`remote_register` adopts that conversation regardless of the `conversation_id`
|
|
262
|
+
you pass. If the two disagree, the launch binding wins and the tool result
|
|
263
|
+
returns a `conversation_mismatch` warning naming the conversation you were
|
|
264
|
+
actually registered against. See
|
|
265
|
+
[docs/session-reliability.md](docs/session-reliability.md).
|
|
266
|
+
|
|
255
267
|
### remote_load_context
|
|
256
268
|
|
|
257
269
|
```
|
|
@@ -275,10 +287,16 @@ Non-blocking. Safer than `remote_wait_for_command` — can't lose messages on ca
|
|
|
275
287
|
### remote_notify
|
|
276
288
|
|
|
277
289
|
```
|
|
278
|
-
Input: { message: "Build completed successfully" }
|
|
290
|
+
Input: { message: "Build completed successfully", final?: false }
|
|
279
291
|
Output: { success: true, message_id }
|
|
280
292
|
```
|
|
281
293
|
|
|
294
|
+
Pass `final: true` on your **last** completion report for a dispatch (and only
|
|
295
|
+
then). The post is tagged `silolink_report { agent_session_id, kind: completion }`
|
|
296
|
+
so the dispatcher can tell completion from progress, and it arms the daemon's
|
|
297
|
+
idle-completion path (`report_back_idle_ms`) to gracefully end the session once
|
|
298
|
+
no further work arrives. `remote_post` takes the same `final?` flag.
|
|
299
|
+
|
|
282
300
|
### remote_ask
|
|
283
301
|
|
|
284
302
|
```
|
|
@@ -437,6 +455,41 @@ Active SiloLink sessions appear in the Mission Control Agent Dashboard with:
|
|
|
437
455
|
- Heartbeats on every tool call
|
|
438
456
|
- Conversation link for quick navigation
|
|
439
457
|
|
|
458
|
+
## Session Reliability & Health
|
|
459
|
+
|
|
460
|
+
The daemon keeps a launched worker bound to the conversation it was launched for,
|
|
461
|
+
judges the pane (not MCP silence) before recycling, ends parked workers so the
|
|
462
|
+
backend learns they're done, and reports its own health on every heartbeat. In
|
|
463
|
+
brief:
|
|
464
|
+
|
|
465
|
+
- **Launch↔transport binding** — each launch writes a per-launch MCP config
|
|
466
|
+
(`<cwd>/.silolink-mcp/conv<id>-<nonce>.json`, `0600`) carrying an
|
|
467
|
+
`X-SiloLink-Launch` header; `remote_register` adopts the **launched**
|
|
468
|
+
conversation and overrides a mismatched `conversation_id` with a clear warning.
|
|
469
|
+
- **Minted session id** — fresh Claude launches pass `--session-id <uuid>`
|
|
470
|
+
(never with `--resume`/`--continue`), so a shared cwd can't cross-attribute a
|
|
471
|
+
transcript.
|
|
472
|
+
- **Stale-on-inbound recycler** — recycles only a pane that exists, isn't
|
|
473
|
+
actively thinking, and is frozen ≥ 15 min; skips launch-pending sessions and
|
|
474
|
+
anything younger than `stale_inbound_grace_ms` (10 min).
|
|
475
|
+
- **Idle completion** — a `final:true` report followed by `report_back_idle_ms`
|
|
476
|
+
(2 min) of quiet completes the session (`state: idle_timeout`) then kills the
|
|
477
|
+
pane — but only if the pane isn't actively working. `poll_idle_complete_ms` is
|
|
478
|
+
opt-in (default 0).
|
|
479
|
+
- **Report markers** — `remote_notify`/`remote_post` accept `final?` and stamp
|
|
480
|
+
`silolink_report { agent_session_id, kind }` on the post.
|
|
481
|
+
- **Health heartbeat** — every heartbeat carries a redacted `health` block plus
|
|
482
|
+
an hourly `[HEALTH]` log line (credentials, JWT expiry, backend 403 streaks,
|
|
483
|
+
usage-ledger depth, updater/launch state).
|
|
484
|
+
- **403 handling** — a 3-streak of 403s on `report_usage`/`launch_context` is
|
|
485
|
+
terminal for retries (ledger kept, one probe every 30 min; recovers on the next
|
|
486
|
+
2xx).
|
|
487
|
+
- **Auto-update integrity** — a hub `expected_integrity` pin is verified against
|
|
488
|
+
the `npm pack`ed tarball with `ssri` before installing (`--ignore-scripts`).
|
|
489
|
+
|
|
490
|
+
Full details, rationale, and the config keys are in
|
|
491
|
+
[docs/session-reliability.md](docs/session-reliability.md).
|
|
492
|
+
|
|
440
493
|
## Permissions
|
|
441
494
|
|
|
442
495
|
SiloLink-spawned sessions run headlessly — no human at the keyboard. Permission prompts hang the pane, so the launcher pre-clears two gates so `--dangerously-skip-permissions` actually takes effect on every command (the flag alone is not enough on CC 2.x).
|
|
@@ -51,7 +51,7 @@ export interface AgentProcess {
|
|
|
51
51
|
import type { LaunchBindingRegistry, LaunchLinkage } from './launch-binding.js';
|
|
52
52
|
export interface WedgeVerdict {
|
|
53
53
|
wedged: boolean;
|
|
54
|
-
/** Human-readable why (logged by callers): 'no-pane' | 'pane-gone' | 'pane-active' | 'frozen-Nmin' … */
|
|
54
|
+
/** Human-readable why (logged by callers): 'no-pane' | 'pane-gone' | 'polling' | 'pane-active' | 'frozen-Nmin' … */
|
|
55
55
|
reason: string;
|
|
56
56
|
/** The tmux pane name at decision time (null when the launcher tracks none). */
|
|
57
57
|
paneName: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-launcher.d.ts","sourceRoot":"","sources":["../../src/core/agent-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mGAAmG;IACnG,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,
|
|
1
|
+
{"version":3,"file":"agent-launcher.d.ts","sourceRoot":"","sources":["../../src/core/agent-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import type { AgentLauncher, LaunchConfig, AgentProcess, WedgeVerdict } from './
|
|
|
7
7
|
import type { UsageEntry } from './transcript-usage.js';
|
|
8
8
|
import type { UsageLedger, UsageReconcileTarget, UsageReconcileOutcome } from './usage-ledger.js';
|
|
9
9
|
import { type LaunchBindingRegistry, type LaunchLinkage } from './launch-binding.js';
|
|
10
|
+
import { type StraySnapshot } from './stray-processes.js';
|
|
10
11
|
/** Per-launch identity handed to setupMcpConfig so the spawned CLI's MCP transport can be bound to its pane. */
|
|
11
12
|
export interface LaunchIdentity {
|
|
12
13
|
token: string;
|
|
@@ -179,7 +180,7 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
179
180
|
/** Idle-kill threshold in ms; 0 disables. Override in subclass. */
|
|
180
181
|
protected getIdleKillAfterMs(): number;
|
|
181
182
|
protected getIdleKillHardCeilMs(): number;
|
|
182
|
-
protected shouldSuppressIdleKill(tmuxName: string, idleMs: number): boolean;
|
|
183
|
+
protected shouldSuppressIdleKill(tmuxName: string, idleMs: number, session?: Pick<Session, 'lastPollAt'>): boolean;
|
|
183
184
|
/**
|
|
184
185
|
* Whether to paste the prompt in tmux bracketed-paste mode (`paste-buffer -p`).
|
|
185
186
|
* Bracketed paste wraps the text so the target TUI treats it as literal pasted
|
|
@@ -259,6 +260,14 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
259
260
|
protected static readonly HEARTBEAT_INTERVAL_MS: number;
|
|
260
261
|
protected static readonly HEARTBEAT_ACTIVITY_GATE_MS: number;
|
|
261
262
|
protected heartbeatNudge(): boolean;
|
|
263
|
+
/**
|
|
264
|
+
* The heartbeat line typed into a pane. A session that has already filed
|
|
265
|
+
* its final report is told to END, not to keep polling: the generic
|
|
266
|
+
* "call remote_poll" wording kept finished workers answering "Mid-task,
|
|
267
|
+
* continuing" for hours (Doug's video sessions, 2026-08-26). Everything
|
|
268
|
+
* else keeps the classic wording, which is what idle prod agents rely on.
|
|
269
|
+
*/
|
|
270
|
+
static heartbeatMessage(finalReportFiled: boolean): string;
|
|
262
271
|
isEnabled(): boolean;
|
|
263
272
|
isAutoRespawnEnabled(): boolean;
|
|
264
273
|
hasLiveProcess(): boolean;
|
|
@@ -349,6 +358,25 @@ export declare abstract class BaseTmuxLauncher implements AgentLauncher {
|
|
|
349
358
|
protected tmuxNameForConversation(conversationId: number): string | null;
|
|
350
359
|
killByConversation(conversationId: number, reason?: string): void;
|
|
351
360
|
kill(): void;
|
|
361
|
+
/**
|
|
362
|
+
* Value of the SILOLINK_PANE env marker every process under a pane inherits:
|
|
363
|
+
* `<owner-env>:conv<id>`. Env-qualified because conversation ids are only
|
|
364
|
+
* unique per platform host — a DEV and a PROD daemon on one laptop can both
|
|
365
|
+
* own a "conv 3432".
|
|
366
|
+
*/
|
|
367
|
+
protected paneMarker(conversationId: number): string;
|
|
368
|
+
/**
|
|
369
|
+
* Stray-process reaping (2026-08-26): killing a tmux session kills the shell
|
|
370
|
+
* and the CLI, but anything the CLI started detached (a backgrounded
|
|
371
|
+
* `ffmpeg`, `nohup node …`) is re-parented to init and lives on — one
|
|
372
|
+
* orphaned ffmpeg from a finished Doug video session pinned a core at 114%
|
|
373
|
+
* for 6h43m. Process lineage is gone by then, but the ENVIRONMENT is
|
|
374
|
+
* inherited: every pane is launched with SILOLINK_PANE=<env>:conv<id>, so
|
|
375
|
+
* survivors are findable by marker. Snapshot BEFORE the kill (so a relaunch
|
|
376
|
+
* of the same conversation seconds later is never in the set), sweep after.
|
|
377
|
+
*/
|
|
378
|
+
protected snapshotStrays(conversationId: number): StraySnapshot | null;
|
|
379
|
+
protected reapStrays(snapshot: StraySnapshot | null, reason: string): void;
|
|
352
380
|
/**
|
|
353
381
|
* Capture the last ~200 lines of a tmux pane and log them. Called before
|
|
354
382
|
* kill-session so the last output survives the kill. The `remain-on-exit on`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tmux-launcher.d.ts","sourceRoot":"","sources":["../../src/core/base-tmux-launcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base-tmux-launcher.d.ts","sourceRoot":"","sources":["../../src/core/base-tmux-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ import { join, dirname } from 'node:path';
|
|
|
6
6
|
import { tmpdir, homedir } from 'node:os';
|
|
7
7
|
import { LAUNCH_HEADER } from './launch-binding.js';
|
|
8
8
|
import { healthMonitor } from './health-monitor.js';
|
|
9
|
+
import { isInPollLoop } from './idle-completion.js';
|
|
10
|
+
import { reapStrayProcesses, snapshotStrayProcesses } from './stray-processes.js';
|
|
9
11
|
import { randomUUID } from 'node:crypto';
|
|
10
12
|
/**
|
|
11
13
|
* Abstract base class for tmux-based agent launchers.
|
|
@@ -294,8 +296,18 @@ export class BaseTmuxLauncher {
|
|
|
294
296
|
// Spare it only while its pane shows genuine new output AND it is still
|
|
295
297
|
// under the hard idle ceiling; past the ceiling a session making no MCP
|
|
296
298
|
// progress is wedged and must be killed regardless of pane animation.
|
|
297
|
-
|
|
298
|
-
|
|
299
|
+
//
|
|
300
|
+
// A session in its remote_poll loop is never spared: it has told us, via
|
|
301
|
+
// the poll tool itself, that it has nothing to do. Its pane churns anyway
|
|
302
|
+
// (tool-call counters, spinner, "still nothing — continuing to poll"), and
|
|
303
|
+
// that churn used to pass as "genuine new output" — every Doug video
|
|
304
|
+
// session on 2026-08-26 ran 4h past its threshold to the 8h hard ceiling.
|
|
305
|
+
shouldSuppressIdleKill(tmuxName, idleMs, session) {
|
|
306
|
+
if (idleMs >= this.getIdleKillHardCeilMs())
|
|
307
|
+
return false;
|
|
308
|
+
if (session && isInPollLoop(session))
|
|
309
|
+
return false;
|
|
310
|
+
return this.isActivelyThinking(tmuxName);
|
|
299
311
|
}
|
|
300
312
|
/**
|
|
301
313
|
* Whether to paste the prompt in tmux bracketed-paste mode (`paste-buffer -p`).
|
|
@@ -512,13 +524,29 @@ export class BaseTmuxLauncher {
|
|
|
512
524
|
return false;
|
|
513
525
|
}
|
|
514
526
|
this.lastHeartbeatAt = now;
|
|
515
|
-
|
|
516
|
-
for (const [name] of this.tmuxSessions) {
|
|
517
|
-
this.
|
|
527
|
+
let finalReported = 0;
|
|
528
|
+
for (const [name, info] of this.tmuxSessions) {
|
|
529
|
+
const session = info.conversationId ? this.sessionManager.getByConversationId(info.conversationId) : undefined;
|
|
530
|
+
const done = !!session?.finalReportAt;
|
|
531
|
+
if (done)
|
|
532
|
+
finalReported++;
|
|
533
|
+
this.sendLineToPane(name, BaseTmuxLauncher.heartbeatMessage(done));
|
|
518
534
|
}
|
|
519
|
-
console.log(`${this.getLogTag()} Heartbeat nudge sent to ${this.tmuxSessions.size} session(s)`);
|
|
535
|
+
console.log(`${this.getLogTag()} Heartbeat nudge sent to ${this.tmuxSessions.size} session(s)${finalReported ? ` (${finalReported} told to unregister — final report already filed)` : ''}`);
|
|
520
536
|
return true;
|
|
521
537
|
}
|
|
538
|
+
/**
|
|
539
|
+
* The heartbeat line typed into a pane. A session that has already filed
|
|
540
|
+
* its final report is told to END, not to keep polling: the generic
|
|
541
|
+
* "call remote_poll" wording kept finished workers answering "Mid-task,
|
|
542
|
+
* continuing" for hours (Doug's video sessions, 2026-08-26). Everything
|
|
543
|
+
* else keeps the classic wording, which is what idle prod agents rely on.
|
|
544
|
+
*/
|
|
545
|
+
static heartbeatMessage(finalReportFiled) {
|
|
546
|
+
return finalReportFiled
|
|
547
|
+
? 'Heartbeat check: you already posted your final report and no new work has arrived. Call remote_unregister now to end this session. Only if you are still mid-task, ignore this and keep going.'
|
|
548
|
+
: 'Heartbeat check: if you are idle, call remote_poll to resume checking for messages. If you are mid-task, ignore this and keep going.';
|
|
549
|
+
}
|
|
522
550
|
isEnabled() { return this.enabled; }
|
|
523
551
|
isAutoRespawnEnabled() { return this.enabled && this.isAutoRespawnConfigured(); }
|
|
524
552
|
hasLiveProcess() { return this.tmuxSessions.size > 0; }
|
|
@@ -870,7 +898,9 @@ export class BaseTmuxLauncher {
|
|
|
870
898
|
for (const [name, info] of this.tmuxSessions) {
|
|
871
899
|
if (info.conversationId === conversationId) {
|
|
872
900
|
this.capturePaneTail(name, reason); // also reports token usage (see capturePaneTail)
|
|
901
|
+
const strays = this.snapshotStrays(conversationId);
|
|
873
902
|
spawn('tmux', ['kill-session', '-t', name], { stdio: 'ignore' });
|
|
903
|
+
this.reapStrays(strays, reason);
|
|
874
904
|
this.tmuxSessions.delete(name);
|
|
875
905
|
const wsId = this.tmuxSessionWorkspaces.get(name);
|
|
876
906
|
if (wsId && this.workspaceManager) {
|
|
@@ -899,13 +929,15 @@ export class BaseTmuxLauncher {
|
|
|
899
929
|
});
|
|
900
930
|
}
|
|
901
931
|
kill() {
|
|
902
|
-
for (const [name] of this.tmuxSessions) {
|
|
932
|
+
for (const [name, info] of this.tmuxSessions) {
|
|
903
933
|
this.capturePaneTail(name, 'kill-all');
|
|
904
934
|
const wsSessionId = this.tmuxSessionWorkspaces.get(name);
|
|
905
935
|
if (wsSessionId && this.workspaceManager) {
|
|
906
936
|
this.workspaceManager.removeWorktree(wsSessionId);
|
|
907
937
|
}
|
|
938
|
+
const strays = info.conversationId ? this.snapshotStrays(info.conversationId) : null;
|
|
908
939
|
spawn('tmux', ['kill-session', '-t', name], { stdio: 'ignore' });
|
|
940
|
+
this.reapStrays(strays, 'kill-all');
|
|
909
941
|
}
|
|
910
942
|
this.tmuxSessions.clear();
|
|
911
943
|
this.tmuxSessionWorkspaces.clear();
|
|
@@ -914,6 +946,44 @@ export class BaseTmuxLauncher {
|
|
|
914
946
|
this.tmuxMonitorTimer = null;
|
|
915
947
|
}
|
|
916
948
|
}
|
|
949
|
+
/**
|
|
950
|
+
* Value of the SILOLINK_PANE env marker every process under a pane inherits:
|
|
951
|
+
* `<owner-env>:conv<id>`. Env-qualified because conversation ids are only
|
|
952
|
+
* unique per platform host — a DEV and a PROD daemon on one laptop can both
|
|
953
|
+
* own a "conv 3432".
|
|
954
|
+
*/
|
|
955
|
+
paneMarker(conversationId) {
|
|
956
|
+
return `${this.ownerEnv()}:conv${conversationId}`;
|
|
957
|
+
}
|
|
958
|
+
/**
|
|
959
|
+
* Stray-process reaping (2026-08-26): killing a tmux session kills the shell
|
|
960
|
+
* and the CLI, but anything the CLI started detached (a backgrounded
|
|
961
|
+
* `ffmpeg`, `nohup node …`) is re-parented to init and lives on — one
|
|
962
|
+
* orphaned ffmpeg from a finished Doug video session pinned a core at 114%
|
|
963
|
+
* for 6h43m. Process lineage is gone by then, but the ENVIRONMENT is
|
|
964
|
+
* inherited: every pane is launched with SILOLINK_PANE=<env>:conv<id>, so
|
|
965
|
+
* survivors are findable by marker. Snapshot BEFORE the kill (so a relaunch
|
|
966
|
+
* of the same conversation seconds later is never in the set), sweep after.
|
|
967
|
+
*/
|
|
968
|
+
snapshotStrays(conversationId) {
|
|
969
|
+
try {
|
|
970
|
+
return snapshotStrayProcesses(this.paneMarker(conversationId));
|
|
971
|
+
}
|
|
972
|
+
catch (err) {
|
|
973
|
+
console.warn(`${this.getLogTag()} stray-process snapshot failed for conv ${conversationId}: ${err}`);
|
|
974
|
+
return null;
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
reapStrays(snapshot, reason) {
|
|
978
|
+
if (!snapshot || snapshot.pids.length === 0)
|
|
979
|
+
return;
|
|
980
|
+
reapStrayProcesses(snapshot).then(result => {
|
|
981
|
+
if (result.killed.length === 0)
|
|
982
|
+
return;
|
|
983
|
+
console.warn(`${this.getLogTag()} reaped ${result.killed.length} stray process(es) left behind by ${snapshot.marker} (reason: ${reason}): ` +
|
|
984
|
+
result.killed.map(p => `${p.pid} ${p.command}`).join(' | '));
|
|
985
|
+
}).catch(err => console.warn(`${this.getLogTag()} stray-process sweep failed for ${snapshot.marker}: ${err}`));
|
|
986
|
+
}
|
|
917
987
|
/**
|
|
918
988
|
* Capture the last ~200 lines of a tmux pane and log them. Called before
|
|
919
989
|
* kill-session so the last output survives the kill. The `remain-on-exit on`
|
|
@@ -1325,9 +1395,13 @@ export class BaseTmuxLauncher {
|
|
|
1325
1395
|
// runs daemons AND has the hook installed. Uses an `env` prefix (not
|
|
1326
1396
|
// getAgentEnv) because tmux doesn't propagate caller env to panes on an
|
|
1327
1397
|
// already-running server.
|
|
1398
|
+
// SILOLINK_PANE=<env>:conv<id> is inherited by everything the CLI spawns,
|
|
1399
|
+
// detached or not — it is how stray subprocesses are found after the
|
|
1400
|
+
// pane is gone (see snapshotStrays).
|
|
1401
|
+
const paneEnv = conversationId ? [`SILOLINK_PANE=${this.paneMarker(conversationId)}`] : [];
|
|
1328
1402
|
const tmuxArgs = [
|
|
1329
1403
|
'new-session', '-d', '-s', tmuxSession, '-c', cwd, '-x', '200', '-y', '50',
|
|
1330
|
-
'env', 'SILOLINK_MANAGED=1', command, ...args,
|
|
1404
|
+
'env', 'SILOLINK_MANAGED=1', ...paneEnv, command, ...args,
|
|
1331
1405
|
];
|
|
1332
1406
|
const tmuxCreate = spawn('tmux', tmuxArgs, {
|
|
1333
1407
|
stdio: 'ignore',
|
|
@@ -2024,7 +2098,7 @@ export class BaseTmuxLauncher {
|
|
|
2024
2098
|
// NEW output. A pane frozen past FROZEN_THRESHOLD_MS is wedged and gets
|
|
2025
2099
|
// killed despite any spinner animation.
|
|
2026
2100
|
const tmuxName = this.tmuxNameForConversation(s.conversationId);
|
|
2027
|
-
if (tmuxName && this.shouldSuppressIdleKill(tmuxName, now - s.lastActivity.getTime())) {
|
|
2101
|
+
if (tmuxName && this.shouldSuppressIdleKill(tmuxName, now - s.lastActivity.getTime(), s)) {
|
|
2028
2102
|
console.log(`${this.getLogTag()} conv ${s.conversationId} past idle-kill threshold but pane shows active work — suppressing idle-kill`);
|
|
2029
2103
|
continue;
|
|
2030
2104
|
}
|
|
@@ -2239,6 +2313,11 @@ export class BaseTmuxLauncher {
|
|
|
2239
2313
|
const idleMs = now - s.lastActivity.getTime();
|
|
2240
2314
|
if (idleMs < BaseTmuxLauncher.WEDGED_SESSION_MS)
|
|
2241
2315
|
continue;
|
|
2316
|
+
// An empty remote_poll does NOT advance lastActivity, so a healthy idle
|
|
2317
|
+
// poller looks MCP-silent here. Its poll loop is the liveness proof —
|
|
2318
|
+
// never a wedge, regardless of what its pane hash does.
|
|
2319
|
+
if (isInPollLoop(s, now))
|
|
2320
|
+
continue;
|
|
2242
2321
|
const tmuxName = this.tmuxNameForConversation(s.conversationId);
|
|
2243
2322
|
if (!tmuxName)
|
|
2244
2323
|
continue; // no pane — the dead-pane reconcile owns it
|
|
@@ -2265,6 +2344,12 @@ export class BaseTmuxLauncher {
|
|
|
2265
2344
|
if (this.capturePaneTailForProgress(paneName) === null) {
|
|
2266
2345
|
return { wedged: false, reason: 'pane-gone', paneName };
|
|
2267
2346
|
}
|
|
2347
|
+
// In its poll loop ⇒ alive AND idle. Reported as 'polling' rather than
|
|
2348
|
+
// 'pane-active' so idle-completion acts on it (a parked worker) while the
|
|
2349
|
+
// recycler still leaves it alone (not wedged).
|
|
2350
|
+
const session = this.sessionManager.getByConversationId(conversationId);
|
|
2351
|
+
if (session && isInPollLoop(session))
|
|
2352
|
+
return { wedged: false, reason: 'polling', paneName };
|
|
2268
2353
|
if (this.isActivelyThinking(paneName))
|
|
2269
2354
|
return { wedged: false, reason: 'pane-active', paneName };
|
|
2270
2355
|
const prog = this.paneProgress.get(paneName);
|