aicodeman 1.32.0 → 1.32.1
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/config/cli-registry/schema.d.ts +3 -0
- package/dist/config/cli-registry/schema.d.ts.map +1 -1
- package/dist/config/cli-registry/schema.js +32 -0
- package/dist/config/cli-registry/schema.js.map +1 -1
- package/dist/config/cli-registry/stock.d.ts.map +1 -1
- package/dist/config/cli-registry/stock.js +82 -13
- package/dist/config/cli-registry/stock.js.map +1 -1
- package/dist/config/cli-registry/types.d.ts +48 -1
- package/dist/config/cli-registry/types.d.ts.map +1 -1
- package/dist/docker-hosts.d.ts +14 -3
- package/dist/docker-hosts.d.ts.map +1 -1
- package/dist/docker-hosts.js +66 -5
- package/dist/docker-hosts.js.map +1 -1
- package/dist/git-clone.d.ts +22 -2
- package/dist/git-clone.d.ts.map +1 -1
- package/dist/git-clone.js +26 -6
- package/dist/git-clone.js.map +1 -1
- package/dist/mux-interface.d.ts +33 -1
- package/dist/mux-interface.d.ts.map +1 -1
- package/dist/session-activity.d.ts +41 -0
- package/dist/session-activity.d.ts.map +1 -1
- package/dist/session-activity.js +62 -0
- package/dist/session-activity.js.map +1 -1
- package/dist/session.d.ts +225 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +402 -22
- package/dist/session.js.map +1 -1
- package/dist/tmux-manager.d.ts +183 -4
- package/dist/tmux-manager.d.ts.map +1 -1
- package/dist/tmux-manager.js +333 -15
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tui/tui-approvals.d.ts +10 -2
- package/dist/tui/tui-approvals.d.ts.map +1 -1
- package/dist/tui/tui-approvals.js +14 -3
- package/dist/tui/tui-approvals.js.map +1 -1
- package/dist/tui/tui-model.d.ts +12 -0
- package/dist/tui/tui-model.d.ts.map +1 -1
- package/dist/tui/tui-model.js +19 -2
- package/dist/tui/tui-model.js.map +1 -1
- package/dist/tui/tui-render.d.ts +11 -2
- package/dist/tui/tui-render.d.ts.map +1 -1
- package/dist/tui/tui-render.js +14 -5
- package/dist/tui/tui-render.js.map +1 -1
- package/dist/types/session.d.ts +62 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js.map +1 -1
- package/dist/utils/claude-transcript.d.ts +49 -0
- package/dist/utils/claude-transcript.d.ts.map +1 -0
- package/dist/utils/claude-transcript.js +76 -0
- package/dist/utils/claude-transcript.js.map +1 -0
- package/dist/web/approval-inbox.d.ts +31 -0
- package/dist/web/approval-inbox.d.ts.map +1 -1
- package/dist/web/approval-inbox.js +20 -0
- package/dist/web/approval-inbox.js.map +1 -1
- package/dist/web/public/admin-ui.js.gz +0 -0
- package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
- package/dist/web/public/app.3ea688d2.js +43 -0
- package/dist/web/public/app.3ea688d2.js.br +0 -0
- package/dist/web/public/app.3ea688d2.js.gz +0 -0
- package/dist/web/public/approvals-ui.js +26 -1
- package/dist/web/public/approvals-ui.js.br +0 -0
- package/dist/web/public/approvals-ui.js.gz +0 -0
- package/dist/web/public/{constants.b26748e9.js → constants.dee9dcc7.js} +288 -24
- package/dist/web/public/constants.dee9dcc7.js.br +0 -0
- package/dist/web/public/constants.dee9dcc7.js.gz +0 -0
- package/dist/web/public/cron-ui.js.gz +0 -0
- package/dist/web/public/entrance-animations.js.gz +0 -0
- package/dist/web/public/home-sessions.js +9 -0
- package/dist/web/public/home-sessions.js.br +0 -0
- package/dist/web/public/home-sessions.js.gz +0 -0
- package/dist/web/public/host-wake-ui.js.gz +0 -0
- package/dist/web/public/i18n.d22be5c4.js.gz +0 -0
- package/dist/web/public/image-input.a216cf9e.js.gz +0 -0
- package/dist/web/public/index.html +20 -13
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
- package/dist/web/public/keyboard-accessory.c1e7c7b7.js.gz +0 -0
- package/dist/web/public/{mobile-handlers.6f354a87.js → mobile-handlers.23a85db1.js} +22 -27
- package/dist/web/public/mobile-handlers.23a85db1.js.br +0 -0
- package/dist/web/public/mobile-handlers.23a85db1.js.gz +0 -0
- package/dist/web/public/mobile-overview.js +48 -0
- package/dist/web/public/mobile-overview.js.br +0 -0
- package/dist/web/public/mobile-overview.js.gz +0 -0
- package/dist/web/public/mobile.eeadfbbe.css +1 -0
- package/dist/web/public/mobile.eeadfbbe.css.br +0 -0
- package/dist/web/public/mobile.eeadfbbe.css.gz +0 -0
- package/dist/web/public/{notification-manager.36ea4624.js → notification-manager.50bb87d8.js} +4 -2
- package/dist/web/public/notification-manager.50bb87d8.js.br +0 -0
- package/dist/web/public/notification-manager.50bb87d8.js.gz +0 -0
- package/dist/web/public/orchestrator-panel.js.gz +0 -0
- package/dist/web/public/{panels-ui.28df5053.js → panels-ui.24ea8932.js} +1 -1
- package/dist/web/public/panels-ui.24ea8932.js.br +0 -0
- package/dist/web/public/{panels-ui.28df5053.js.gz → panels-ui.24ea8932.js.gz} +0 -0
- package/dist/web/public/{ralph-panel.6de2d0f8.js → ralph-panel.b350e2ef.js} +11 -11
- package/dist/web/public/ralph-panel.b350e2ef.js.br +0 -0
- package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
- package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
- package/dist/web/public/readmymind-ui.js.gz +0 -0
- package/dist/web/public/reboot-restore-ui.js.gz +0 -0
- package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
- package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
- package/dist/web/public/session-lineage.js.gz +0 -0
- package/dist/web/public/session-ui.7df17fd3.js.gz +0 -0
- package/dist/web/public/settings-ui.336cf5da.js +78 -0
- package/dist/web/public/settings-ui.336cf5da.js.br +0 -0
- package/dist/web/public/settings-ui.336cf5da.js.gz +0 -0
- package/dist/web/public/styles.dd278987.css +1 -0
- package/dist/web/public/styles.dd278987.css.br +0 -0
- package/dist/web/public/styles.dd278987.css.gz +0 -0
- package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
- package/dist/web/public/sw.js +36 -17
- package/dist/web/public/sw.js.br +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/tab-rail-resize.dcdc5772.js +1 -0
- package/dist/web/public/tab-rail-resize.dcdc5772.js.br +0 -0
- package/dist/web/public/tab-rail-resize.dcdc5772.js.gz +0 -0
- package/dist/web/public/terminal-keycode229-recovery.fb91b25b.js.gz +0 -0
- package/dist/web/public/terminal-split.js +12 -1
- package/dist/web/public/terminal-split.js.br +0 -0
- package/dist/web/public/terminal-split.js.gz +0 -0
- package/dist/web/public/terminal-ui.baf7c9c6.js +2 -0
- package/dist/web/public/terminal-ui.baf7c9c6.js.br +0 -0
- package/dist/web/public/terminal-ui.baf7c9c6.js.gz +0 -0
- package/dist/web/public/ultracode-panel.js.gz +0 -0
- package/dist/web/public/ultracode-windows.js.gz +0 -0
- package/dist/web/public/upload.html.gz +0 -0
- package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
- package/dist/web/public/vendor/marked.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-predictive-echo.bd6882b8.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.gz +0 -0
- package/dist/web/public/vendor/xterm.css.gz +0 -0
- package/dist/web/public/vendor/xterm.min.js.gz +0 -0
- package/dist/web/public/voice-input.c4b51eb6.js.gz +0 -0
- package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
- package/dist/web/public/webview-tabs.js.gz +0 -0
- package/dist/web/routes/case-routes.d.ts +10 -0
- package/dist/web/routes/case-routes.d.ts.map +1 -1
- package/dist/web/routes/case-routes.js +19 -3
- package/dist/web/routes/case-routes.js.map +1 -1
- package/dist/web/routes/hook-event-routes.d.ts.map +1 -1
- package/dist/web/routes/hook-event-routes.js +23 -6
- package/dist/web/routes/hook-event-routes.js.map +1 -1
- package/dist/web/routes/session-routes.d.ts.map +1 -1
- package/dist/web/routes/session-routes.js +16 -1
- package/dist/web/routes/session-routes.js.map +1 -1
- package/dist/web/routes/ws-routes.d.ts +3 -0
- package/dist/web/routes/ws-routes.d.ts.map +1 -1
- package/dist/web/routes/ws-routes.js +16 -0
- package/dist/web/routes/ws-routes.js.map +1 -1
- package/dist/web/server.d.ts +17 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +73 -0
- package/dist/web/server.js.map +1 -1
- package/dist/web/session-listener-wiring.d.ts +1 -0
- package/dist/web/session-listener-wiring.d.ts.map +1 -1
- package/dist/web/session-listener-wiring.js +12 -0
- package/dist/web/session-listener-wiring.js.map +1 -1
- package/package.json +2 -1
- package/dist/web/public/app.a792bf71.js +0 -38
- package/dist/web/public/app.a792bf71.js.br +0 -0
- package/dist/web/public/app.a792bf71.js.gz +0 -0
- package/dist/web/public/constants.b26748e9.js.br +0 -0
- package/dist/web/public/constants.b26748e9.js.gz +0 -0
- package/dist/web/public/mobile-handlers.6f354a87.js.br +0 -0
- package/dist/web/public/mobile-handlers.6f354a87.js.gz +0 -0
- package/dist/web/public/mobile.6caaa28a.css +0 -1
- package/dist/web/public/mobile.6caaa28a.css.br +0 -0
- package/dist/web/public/mobile.6caaa28a.css.gz +0 -0
- package/dist/web/public/notification-manager.36ea4624.js.br +0 -0
- package/dist/web/public/notification-manager.36ea4624.js.gz +0 -0
- package/dist/web/public/panels-ui.28df5053.js.br +0 -0
- package/dist/web/public/ralph-panel.6de2d0f8.js.br +0 -0
- package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
- package/dist/web/public/settings-ui.df5ffb68.js +0 -78
- package/dist/web/public/settings-ui.df5ffb68.js.br +0 -0
- package/dist/web/public/settings-ui.df5ffb68.js.gz +0 -0
- package/dist/web/public/styles.74f312e5.css +0 -1
- package/dist/web/public/styles.74f312e5.css.br +0 -0
- package/dist/web/public/styles.74f312e5.css.gz +0 -0
- package/dist/web/public/tab-rail-resize.42c24949.js +0 -1
- package/dist/web/public/tab-rail-resize.42c24949.js.br +0 -0
- package/dist/web/public/tab-rail-resize.42c24949.js.gz +0 -0
- package/dist/web/public/terminal-ui.32fbeaf6.js +0 -2
- package/dist/web/public/terminal-ui.32fbeaf6.js.br +0 -0
- package/dist/web/public/terminal-ui.32fbeaf6.js.gz +0 -0
package/dist/tmux-manager.d.ts
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* @module tmux-manager
|
|
22
22
|
*/
|
|
23
23
|
import { EventEmitter } from 'node:events';
|
|
24
|
-
import { ProcessStats, PersistedRespawnConfig, type PaneInfo, type ClaudeMode, type SessionMode, type OpenCodeConfig, type CodexConfig, type EffortLevel, type GeminiConfig, type AntigravityConfig, type PiConfig, type GrokConfig, type DeepSeekConfig, type OmpConfig, type SessionRemote, type SessionDocker } from './types.js';
|
|
24
|
+
import { ProcessStats, PersistedRespawnConfig, type PaneInfo, type ClaudeMode, type SessionMode, type OpenCodeConfig, type CodexConfig, type EffortLevel, type GeminiConfig, type AntigravityConfig, type PiConfig, type GrokConfig, type DeepSeekConfig, type OmpConfig, type SessionRemote, type SessionDocker, type PaneExit } from './types.js';
|
|
25
25
|
import { type DockerCreateContext, type DockerSeedCopy } from './docker-hosts.js';
|
|
26
26
|
import type { TerminalMultiplexer, MuxSession, MuxSessionWithStats, CreateSessionOptions, RespawnPaneOptions, PaneCaptureOptions } from './mux-interface.js';
|
|
27
27
|
/** Claude Code native macOS recommendation for avoiding low nofile startup failures. */
|
|
@@ -35,14 +35,84 @@ export declare const CLAUDE_CODE_NOFILE_LIMIT = 2147483646;
|
|
|
35
35
|
* shell 会提前展开它们。
|
|
36
36
|
*/
|
|
37
37
|
export declare function buildNofileLimitCommand(targetLimit?: number): string;
|
|
38
|
+
/** One pane of one tmux session, as {@link parsePaneRows} reads it off the wire. */
|
|
39
|
+
export interface PaneRow {
|
|
40
|
+
/** tmux session this pane belongs to. Repeats once per pane of a split session. */
|
|
41
|
+
sessionName: string;
|
|
42
|
+
/** `#{pane_pid}` — the process tmux started in the pane. */
|
|
43
|
+
pid: number;
|
|
44
|
+
/** `#{pane_dead}` — true for 1, false for 0, undefined when tmux said nothing. */
|
|
45
|
+
dead?: boolean;
|
|
46
|
+
/** `#{pane_dead_status}` — the exit code, absent when tmux reported none. */
|
|
47
|
+
exitStatus?: number;
|
|
48
|
+
/** `#{pane_dead_signal}` — the killing signal, absent before tmux 3.4 and when unsignalled. */
|
|
49
|
+
exitSignal?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* One pane-exit reading, with the pane pid that produced it.
|
|
53
|
+
*
|
|
54
|
+
* The pid never leaves this module. It is what distinguishes "the same dead
|
|
55
|
+
* pane, seen again" from "a second command in the same pane that also exited
|
|
56
|
+
* with the same status", so the `at` stamp can hold across the first and must
|
|
57
|
+
* not across the second. {@link PaneExit} itself stays free of it: the pid on
|
|
58
|
+
* the session record is the attach client's, and a second pid there would
|
|
59
|
+
* invite exactly the confusion Ark0N/Codeman#446 is about.
|
|
60
|
+
*/
|
|
61
|
+
export interface PaneExitObservation {
|
|
62
|
+
/** `#{pane_pid}` of the pane this reading came from. */
|
|
63
|
+
panePid: number;
|
|
64
|
+
/** What to publish on the session record. */
|
|
65
|
+
exit: PaneExit;
|
|
66
|
+
}
|
|
38
67
|
/**
|
|
39
|
-
* Parse the output of `tmux list-panes -a -F
|
|
40
|
-
* into
|
|
68
|
+
* Parse the output of `tmux list-panes -a -F` under {@link PANE_LIST_FORMAT}
|
|
69
|
+
* into one row per pane, in tmux's own order. Exported for unit testing.
|
|
41
70
|
*
|
|
42
71
|
* - Skips empty lines and lines without the separator.
|
|
43
72
|
* - Skips entries with a non-numeric pid or empty name.
|
|
73
|
+
* - Leaves every field after the pid undefined when it is blank or absent, so a
|
|
74
|
+
* row from an older tmux still yields its pid.
|
|
75
|
+
*/
|
|
76
|
+
export declare function parsePaneRows(output: string): PaneRow[];
|
|
77
|
+
/**
|
|
78
|
+
* Decide, from every pane tmux listed, which tmux sessions have an exited agent.
|
|
79
|
+
* Exported for unit testing. Returns one entry per session with a known answer;
|
|
80
|
+
* a session absent from the map is UNKNOWN, which must never render as alive.
|
|
81
|
+
*
|
|
82
|
+
* Two rules make a positive answer trustworthy:
|
|
83
|
+
*
|
|
84
|
+
* A session answers only when tmux listed EXACTLY ONE pane for it. Codeman
|
|
85
|
+
* creates one pane per session and `isPaneDead()` reads one pane, so a session
|
|
86
|
+
* the user has split by hand has no single "the agent" to report on, and
|
|
87
|
+
* guessing which of its panes speaks for the session could report a live
|
|
88
|
+
* session as exited.
|
|
89
|
+
*
|
|
90
|
+
* A pane answers only when `#{pane_dead}` said 1 or 0. An empty field is a tmux
|
|
91
|
+
* that did not answer, not a live pane.
|
|
92
|
+
*
|
|
93
|
+
* `status` and `signal` stay absent when tmux did not report them. Measured on
|
|
94
|
+
* tmux 3.2a, a SIGKILLed pane reports neither, so folding an absent status into
|
|
95
|
+
* 0 would turn an unexplained death into a clean exit.
|
|
96
|
+
*/
|
|
97
|
+
export declare function derivePaneExits(rows: PaneRow[], now: number): Map<string, PaneExitObservation>;
|
|
98
|
+
/**
|
|
99
|
+
* Could any of these tmux sessions ever produce a pane-exit answer? Exported
|
|
100
|
+
* for unit testing.
|
|
101
|
+
*
|
|
102
|
+
* Mirrors `Session.paneExitApplies`, which is where the rule is enforced. A
|
|
103
|
+
* remote session's local pane holds the ssh client, a docker case's holds a
|
|
104
|
+
* `docker exec` into the container's own tmux, and a record rebuilt from the
|
|
105
|
+
* socket carries no provenance at all, so the session end forces all three to
|
|
106
|
+
* UNKNOWN whatever tmux reports. A tick that sees only those has nothing to
|
|
107
|
+
* learn, and `refreshPaneExits()` skips its tmux read rather than paying for
|
|
108
|
+
* the answer.
|
|
109
|
+
*
|
|
110
|
+
* ⚠ This gates the READ, never the watcher. The watcher is always-on by
|
|
111
|
+
* design (see {@link TmuxManager.startPaneExitWatcher}), so it keeps ticking
|
|
112
|
+
* with nothing to observe and picks the read straight back up as soon as one
|
|
113
|
+
* local session exists.
|
|
44
114
|
*/
|
|
45
|
-
export declare function
|
|
115
|
+
export declare function hasObservablePaneSession(sessions: Iterable<MuxSession>): boolean;
|
|
46
116
|
/**
|
|
47
117
|
* Resolve a target pane id from `tmux list-panes -F '#{pane_id}:#{pane_active}'`.
|
|
48
118
|
* Prefers the active pane and falls back to the first valid pane.
|
|
@@ -311,6 +381,30 @@ export declare class TmuxManager extends EventEmitter implements TerminalMultipl
|
|
|
311
381
|
private mouseSyncInterval;
|
|
312
382
|
/** Track last-known pane count per session to avoid unnecessary tmux set-option calls */
|
|
313
383
|
private lastPaneCount;
|
|
384
|
+
/**
|
|
385
|
+
* muxName → the exited agent the pane-exit watcher last observed
|
|
386
|
+
* (Ark0N/Codeman#446). Absence is the UNKNOWN arm of the tri-state, so an
|
|
387
|
+
* entry goes the moment tmux stops reporting the pane dead, and the map is
|
|
388
|
+
* empty until the first read runs. The manager reports what tmux says and
|
|
389
|
+
* nothing more: the scoping that hides this for remote and docker sessions
|
|
390
|
+
* lives on `Session`, because the remote-reconnect watcher above needs the
|
|
391
|
+
* raw pane reading.
|
|
392
|
+
*/
|
|
393
|
+
private paneExits;
|
|
394
|
+
/** The pane-exit watcher's own interval. Runs whether or not stats are on. */
|
|
395
|
+
private paneExitInterval;
|
|
396
|
+
/**
|
|
397
|
+
* True while a pane read is in flight. `EXEC_TIMEOUT_MS` is 5000 ms against a
|
|
398
|
+
* poll interval of 2000 ms, so without this a slow read overlaps the next two
|
|
399
|
+
* and the older one can resolve last and win.
|
|
400
|
+
*/
|
|
401
|
+
private paneExitReadInFlight;
|
|
402
|
+
/**
|
|
403
|
+
* Bumped by every deliberate {@link clearPaneExit}. A read that started before
|
|
404
|
+
* a clear carries the older generation and is discarded rather than writing
|
|
405
|
+
* the death back over the pane that has just replaced it.
|
|
406
|
+
*/
|
|
407
|
+
private paneExitGeneration;
|
|
314
408
|
/** Periodic watcher that re-establishes dropped remote sessions. */
|
|
315
409
|
private remoteReconnectInterval;
|
|
316
410
|
/** Per-session backoff/attempt bookkeeping (sessionId → state). */
|
|
@@ -502,6 +596,91 @@ export declare class TmuxManager extends EventEmitter implements TerminalMultipl
|
|
|
502
596
|
}>;
|
|
503
597
|
getProcessStats(sessionId: string): Promise<ProcessStats | null>;
|
|
504
598
|
getSessionsWithStats(): Promise<MuxSessionWithStats[]>;
|
|
599
|
+
/**
|
|
600
|
+
* What the last pane read saw of this tmux session's agent. `undefined` is
|
|
601
|
+
* the UNKNOWN answer and must never be rendered as "alive": it covers a pane
|
|
602
|
+
* that is running, a tmux session that no longer exists, a probe that failed,
|
|
603
|
+
* and every poll that has not run yet. See {@link PaneExit}.
|
|
604
|
+
*/
|
|
605
|
+
getPaneExit(muxName: string): PaneExit | undefined;
|
|
606
|
+
/**
|
|
607
|
+
* Re-read every pane on the socket and refresh {@link paneExits}. ONE batched
|
|
608
|
+
* `tmux list-panes -a` answers for every session at once, which is why this
|
|
609
|
+
* polls rather than probing per session.
|
|
610
|
+
*
|
|
611
|
+
* A failed or empty probe leaves the previous answers ALONE rather than
|
|
612
|
+
* clearing them, because the two cannot be told apart: the command ends in
|
|
613
|
+
* `|| true`, so a tmux that errored and a socket with genuinely no panes both
|
|
614
|
+
* arrive as empty output. Treating that as "tmux did not answer" is the
|
|
615
|
+
* conservative reading — clearing on it would turn a transient failure into a
|
|
616
|
+
* silent retraction of a death Codeman had already observed, and the cost of
|
|
617
|
+
* being wrong the other way is one stale entry for a socket that no longer
|
|
618
|
+
* has the pane. A NON-empty read is different: `list-panes -a` lists
|
|
619
|
+
* every pane on the socket, so it is authoritative and {@link applyPaneExits}
|
|
620
|
+
* prunes against it.
|
|
621
|
+
*
|
|
622
|
+
* Two guards keep a slow read from undoing a fast one. A read already in
|
|
623
|
+
* flight suppresses the next poll, and a read that started before a
|
|
624
|
+
* {@link clearPaneExit} is discarded when it lands.
|
|
625
|
+
*
|
|
626
|
+
* A third guard skips the read entirely while no session on this manager
|
|
627
|
+
* could produce an answer ({@link hasObservablePaneSession}). Skipping
|
|
628
|
+
* retracts nothing, for the same reason a failed read does not: the map
|
|
629
|
+
* still holds what the last real read saw, and every path that puts a new
|
|
630
|
+
* command in a pane calls {@link clearPaneExit} itself.
|
|
631
|
+
*/
|
|
632
|
+
refreshPaneExits(now?: number): Promise<void>;
|
|
633
|
+
/**
|
|
634
|
+
* Read every pane on the socket. The ONLY part of the pane-exit watcher that
|
|
635
|
+
* touches tmux, which is what lets a test subclass drive the guards in
|
|
636
|
+
* {@link refreshPaneExits} — the in-flight suppression, the generation
|
|
637
|
+
* check, the empty-read retraction rule and the read gate — against rows it
|
|
638
|
+
* chooses. Split out for the reason `runRemoteReconnectTick` is: a guard no
|
|
639
|
+
* test can reach is a guard that can be deleted without anything failing.
|
|
640
|
+
*
|
|
641
|
+
* A failed read answers with NO rows, which the caller treats as "tmux did
|
|
642
|
+
* not answer" and which therefore retracts nothing.
|
|
643
|
+
*/
|
|
644
|
+
protected readPaneRows(): Promise<PaneRow[]>;
|
|
645
|
+
/**
|
|
646
|
+
* Fold one authoritative observation into {@link paneExits}. Split out from
|
|
647
|
+
* the tmux call so the merge rules are unit-testable.
|
|
648
|
+
*
|
|
649
|
+
* `observed` comes from a read of EVERY pane on the socket, so a session
|
|
650
|
+
* missing from it has no exit to report and its entry goes. That is what
|
|
651
|
+
* keeps the map from growing without bound as tmux sessions come and go
|
|
652
|
+
* outside `killSession()`. Only the caller may decide a read is authoritative:
|
|
653
|
+
* a failed or empty one never reaches here.
|
|
654
|
+
*
|
|
655
|
+
* An entry keeps the `at` of the FIRST read that saw that exit, so the stamp
|
|
656
|
+
* says when the agent was found gone rather than when the last poll ran. A
|
|
657
|
+
* changed status, a changed signal, or a different pane pid all start a new
|
|
658
|
+
* observation — the pid is what catches a second command in the same pane
|
|
659
|
+
* that happened to exit the same way.
|
|
660
|
+
*/
|
|
661
|
+
applyPaneExits(observed: Map<string, PaneExitObservation>): void;
|
|
662
|
+
/**
|
|
663
|
+
* Forget a session's exit observation, e.g. once its pane has been respawned.
|
|
664
|
+
* Also invalidates any read already in flight, so the answer this retracts
|
|
665
|
+
* cannot be written back a moment later.
|
|
666
|
+
*/
|
|
667
|
+
clearPaneExit(muxName: string): void;
|
|
668
|
+
/**
|
|
669
|
+
* Poll for exited agents, on the manager's own interval.
|
|
670
|
+
*
|
|
671
|
+
* Deliberately NOT part of `startStatsCollection()`. That collector is armed
|
|
672
|
+
* when the browser opens the Monitor panel and DISARMED when it closes it
|
|
673
|
+
* (`panels-ui.js`), and it is skipped at boot entirely when no session was
|
|
674
|
+
* recovered — so riding it would leave a session created on a freshly booted
|
|
675
|
+
* server reporting nothing at all, and would let one browser turn exit
|
|
676
|
+
* detection off for every other. Started unconditionally, like the mouse-mode
|
|
677
|
+
* sync and the remote-reconnect watcher below.
|
|
678
|
+
*
|
|
679
|
+
* The `paneExitsUpdated` event is internal to the server; nothing here adds an
|
|
680
|
+
* SSE event, and the field reaches the browser on `session:updated`.
|
|
681
|
+
*/
|
|
682
|
+
startPaneExitWatcher(intervalMs?: number): void;
|
|
683
|
+
stopPaneExitWatcher(): void;
|
|
505
684
|
startStatsCollection(intervalMs?: number): void;
|
|
506
685
|
stopStatsCollection(): void;
|
|
507
686
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux-manager.d.ts","sourceRoot":"","sources":["../src/tmux-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C,OAAO,EACL,YAAY,EACZ,sBAAsB,EAGtB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"tmux-manager.d.ts","sourceRoot":"","sources":["../src/tmux-manager.ts"],"names":[],"mappings":"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"}
|