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.
Files changed (190) hide show
  1. package/dist/config/cli-registry/schema.d.ts +3 -0
  2. package/dist/config/cli-registry/schema.d.ts.map +1 -1
  3. package/dist/config/cli-registry/schema.js +32 -0
  4. package/dist/config/cli-registry/schema.js.map +1 -1
  5. package/dist/config/cli-registry/stock.d.ts.map +1 -1
  6. package/dist/config/cli-registry/stock.js +82 -13
  7. package/dist/config/cli-registry/stock.js.map +1 -1
  8. package/dist/config/cli-registry/types.d.ts +48 -1
  9. package/dist/config/cli-registry/types.d.ts.map +1 -1
  10. package/dist/docker-hosts.d.ts +14 -3
  11. package/dist/docker-hosts.d.ts.map +1 -1
  12. package/dist/docker-hosts.js +66 -5
  13. package/dist/docker-hosts.js.map +1 -1
  14. package/dist/git-clone.d.ts +22 -2
  15. package/dist/git-clone.d.ts.map +1 -1
  16. package/dist/git-clone.js +26 -6
  17. package/dist/git-clone.js.map +1 -1
  18. package/dist/mux-interface.d.ts +33 -1
  19. package/dist/mux-interface.d.ts.map +1 -1
  20. package/dist/session-activity.d.ts +41 -0
  21. package/dist/session-activity.d.ts.map +1 -1
  22. package/dist/session-activity.js +62 -0
  23. package/dist/session-activity.js.map +1 -1
  24. package/dist/session.d.ts +225 -1
  25. package/dist/session.d.ts.map +1 -1
  26. package/dist/session.js +402 -22
  27. package/dist/session.js.map +1 -1
  28. package/dist/tmux-manager.d.ts +183 -4
  29. package/dist/tmux-manager.d.ts.map +1 -1
  30. package/dist/tmux-manager.js +333 -15
  31. package/dist/tmux-manager.js.map +1 -1
  32. package/dist/tui/tui-approvals.d.ts +10 -2
  33. package/dist/tui/tui-approvals.d.ts.map +1 -1
  34. package/dist/tui/tui-approvals.js +14 -3
  35. package/dist/tui/tui-approvals.js.map +1 -1
  36. package/dist/tui/tui-model.d.ts +12 -0
  37. package/dist/tui/tui-model.d.ts.map +1 -1
  38. package/dist/tui/tui-model.js +19 -2
  39. package/dist/tui/tui-model.js.map +1 -1
  40. package/dist/tui/tui-render.d.ts +11 -2
  41. package/dist/tui/tui-render.d.ts.map +1 -1
  42. package/dist/tui/tui-render.js +14 -5
  43. package/dist/tui/tui-render.js.map +1 -1
  44. package/dist/types/session.d.ts +62 -0
  45. package/dist/types/session.d.ts.map +1 -1
  46. package/dist/types/session.js.map +1 -1
  47. package/dist/utils/claude-transcript.d.ts +49 -0
  48. package/dist/utils/claude-transcript.d.ts.map +1 -0
  49. package/dist/utils/claude-transcript.js +76 -0
  50. package/dist/utils/claude-transcript.js.map +1 -0
  51. package/dist/web/approval-inbox.d.ts +31 -0
  52. package/dist/web/approval-inbox.d.ts.map +1 -1
  53. package/dist/web/approval-inbox.js +20 -0
  54. package/dist/web/approval-inbox.js.map +1 -1
  55. package/dist/web/public/admin-ui.js.gz +0 -0
  56. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  57. package/dist/web/public/app.3ea688d2.js +43 -0
  58. package/dist/web/public/app.3ea688d2.js.br +0 -0
  59. package/dist/web/public/app.3ea688d2.js.gz +0 -0
  60. package/dist/web/public/approvals-ui.js +26 -1
  61. package/dist/web/public/approvals-ui.js.br +0 -0
  62. package/dist/web/public/approvals-ui.js.gz +0 -0
  63. package/dist/web/public/{constants.b26748e9.js → constants.dee9dcc7.js} +288 -24
  64. package/dist/web/public/constants.dee9dcc7.js.br +0 -0
  65. package/dist/web/public/constants.dee9dcc7.js.gz +0 -0
  66. package/dist/web/public/cron-ui.js.gz +0 -0
  67. package/dist/web/public/entrance-animations.js.gz +0 -0
  68. package/dist/web/public/home-sessions.js +9 -0
  69. package/dist/web/public/home-sessions.js.br +0 -0
  70. package/dist/web/public/home-sessions.js.gz +0 -0
  71. package/dist/web/public/host-wake-ui.js.gz +0 -0
  72. package/dist/web/public/i18n.d22be5c4.js.gz +0 -0
  73. package/dist/web/public/image-input.a216cf9e.js.gz +0 -0
  74. package/dist/web/public/index.html +20 -13
  75. package/dist/web/public/index.html.br +0 -0
  76. package/dist/web/public/index.html.gz +0 -0
  77. package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
  78. package/dist/web/public/keyboard-accessory.c1e7c7b7.js.gz +0 -0
  79. package/dist/web/public/{mobile-handlers.6f354a87.js → mobile-handlers.23a85db1.js} +22 -27
  80. package/dist/web/public/mobile-handlers.23a85db1.js.br +0 -0
  81. package/dist/web/public/mobile-handlers.23a85db1.js.gz +0 -0
  82. package/dist/web/public/mobile-overview.js +48 -0
  83. package/dist/web/public/mobile-overview.js.br +0 -0
  84. package/dist/web/public/mobile-overview.js.gz +0 -0
  85. package/dist/web/public/mobile.eeadfbbe.css +1 -0
  86. package/dist/web/public/mobile.eeadfbbe.css.br +0 -0
  87. package/dist/web/public/mobile.eeadfbbe.css.gz +0 -0
  88. package/dist/web/public/{notification-manager.36ea4624.js → notification-manager.50bb87d8.js} +4 -2
  89. package/dist/web/public/notification-manager.50bb87d8.js.br +0 -0
  90. package/dist/web/public/notification-manager.50bb87d8.js.gz +0 -0
  91. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  92. package/dist/web/public/{panels-ui.28df5053.js → panels-ui.24ea8932.js} +1 -1
  93. package/dist/web/public/panels-ui.24ea8932.js.br +0 -0
  94. package/dist/web/public/{panels-ui.28df5053.js.gz → panels-ui.24ea8932.js.gz} +0 -0
  95. package/dist/web/public/{ralph-panel.6de2d0f8.js → ralph-panel.b350e2ef.js} +11 -11
  96. package/dist/web/public/ralph-panel.b350e2ef.js.br +0 -0
  97. package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
  98. package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
  99. package/dist/web/public/readmymind-ui.js.gz +0 -0
  100. package/dist/web/public/reboot-restore-ui.js.gz +0 -0
  101. package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
  102. package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
  103. package/dist/web/public/session-lineage.js.gz +0 -0
  104. package/dist/web/public/session-ui.7df17fd3.js.gz +0 -0
  105. package/dist/web/public/settings-ui.336cf5da.js +78 -0
  106. package/dist/web/public/settings-ui.336cf5da.js.br +0 -0
  107. package/dist/web/public/settings-ui.336cf5da.js.gz +0 -0
  108. package/dist/web/public/styles.dd278987.css +1 -0
  109. package/dist/web/public/styles.dd278987.css.br +0 -0
  110. package/dist/web/public/styles.dd278987.css.gz +0 -0
  111. package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
  112. package/dist/web/public/sw.js +36 -17
  113. package/dist/web/public/sw.js.br +0 -0
  114. package/dist/web/public/sw.js.gz +0 -0
  115. package/dist/web/public/tab-rail-resize.dcdc5772.js +1 -0
  116. package/dist/web/public/tab-rail-resize.dcdc5772.js.br +0 -0
  117. package/dist/web/public/tab-rail-resize.dcdc5772.js.gz +0 -0
  118. package/dist/web/public/terminal-keycode229-recovery.fb91b25b.js.gz +0 -0
  119. package/dist/web/public/terminal-split.js +12 -1
  120. package/dist/web/public/terminal-split.js.br +0 -0
  121. package/dist/web/public/terminal-split.js.gz +0 -0
  122. package/dist/web/public/terminal-ui.baf7c9c6.js +2 -0
  123. package/dist/web/public/terminal-ui.baf7c9c6.js.br +0 -0
  124. package/dist/web/public/terminal-ui.baf7c9c6.js.gz +0 -0
  125. package/dist/web/public/ultracode-panel.js.gz +0 -0
  126. package/dist/web/public/ultracode-windows.js.gz +0 -0
  127. package/dist/web/public/upload.html.gz +0 -0
  128. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  129. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  130. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  131. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  132. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  133. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  134. package/dist/web/public/vendor/xterm-predictive-echo.bd6882b8.js.gz +0 -0
  135. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.gz +0 -0
  136. package/dist/web/public/vendor/xterm.css.gz +0 -0
  137. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  138. package/dist/web/public/voice-input.c4b51eb6.js.gz +0 -0
  139. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  140. package/dist/web/public/webview-tabs.js.gz +0 -0
  141. package/dist/web/routes/case-routes.d.ts +10 -0
  142. package/dist/web/routes/case-routes.d.ts.map +1 -1
  143. package/dist/web/routes/case-routes.js +19 -3
  144. package/dist/web/routes/case-routes.js.map +1 -1
  145. package/dist/web/routes/hook-event-routes.d.ts.map +1 -1
  146. package/dist/web/routes/hook-event-routes.js +23 -6
  147. package/dist/web/routes/hook-event-routes.js.map +1 -1
  148. package/dist/web/routes/session-routes.d.ts.map +1 -1
  149. package/dist/web/routes/session-routes.js +16 -1
  150. package/dist/web/routes/session-routes.js.map +1 -1
  151. package/dist/web/routes/ws-routes.d.ts +3 -0
  152. package/dist/web/routes/ws-routes.d.ts.map +1 -1
  153. package/dist/web/routes/ws-routes.js +16 -0
  154. package/dist/web/routes/ws-routes.js.map +1 -1
  155. package/dist/web/server.d.ts +17 -0
  156. package/dist/web/server.d.ts.map +1 -1
  157. package/dist/web/server.js +73 -0
  158. package/dist/web/server.js.map +1 -1
  159. package/dist/web/session-listener-wiring.d.ts +1 -0
  160. package/dist/web/session-listener-wiring.d.ts.map +1 -1
  161. package/dist/web/session-listener-wiring.js +12 -0
  162. package/dist/web/session-listener-wiring.js.map +1 -1
  163. package/package.json +2 -1
  164. package/dist/web/public/app.a792bf71.js +0 -38
  165. package/dist/web/public/app.a792bf71.js.br +0 -0
  166. package/dist/web/public/app.a792bf71.js.gz +0 -0
  167. package/dist/web/public/constants.b26748e9.js.br +0 -0
  168. package/dist/web/public/constants.b26748e9.js.gz +0 -0
  169. package/dist/web/public/mobile-handlers.6f354a87.js.br +0 -0
  170. package/dist/web/public/mobile-handlers.6f354a87.js.gz +0 -0
  171. package/dist/web/public/mobile.6caaa28a.css +0 -1
  172. package/dist/web/public/mobile.6caaa28a.css.br +0 -0
  173. package/dist/web/public/mobile.6caaa28a.css.gz +0 -0
  174. package/dist/web/public/notification-manager.36ea4624.js.br +0 -0
  175. package/dist/web/public/notification-manager.36ea4624.js.gz +0 -0
  176. package/dist/web/public/panels-ui.28df5053.js.br +0 -0
  177. package/dist/web/public/ralph-panel.6de2d0f8.js.br +0 -0
  178. package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
  179. package/dist/web/public/settings-ui.df5ffb68.js +0 -78
  180. package/dist/web/public/settings-ui.df5ffb68.js.br +0 -0
  181. package/dist/web/public/settings-ui.df5ffb68.js.gz +0 -0
  182. package/dist/web/public/styles.74f312e5.css +0 -1
  183. package/dist/web/public/styles.74f312e5.css.br +0 -0
  184. package/dist/web/public/styles.74f312e5.css.gz +0 -0
  185. package/dist/web/public/tab-rail-resize.42c24949.js +0 -1
  186. package/dist/web/public/tab-rail-resize.42c24949.js.br +0 -0
  187. package/dist/web/public/tab-rail-resize.42c24949.js.gz +0 -0
  188. package/dist/web/public/terminal-ui.32fbeaf6.js +0 -2
  189. package/dist/web/public/terminal-ui.32fbeaf6.js.br +0 -0
  190. package/dist/web/public/terminal-ui.32fbeaf6.js.gz +0 -0
@@ -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 '#{session_name}|#{pane_pid}'`
40
- * into a Map of session-name → pane pid. Exported for unit testing.
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 parsePaneList(output: string): Map<string, number>;
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":"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"}
1
+ {"version":3,"file":"tmux-manager.d.ts","sourceRoot":"","sources":["../src/tmux-manager.ts"],"names":[],"mappings":"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"}