@comput/pi-intercom 0.4.2 → 0.5.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/README.md CHANGED
@@ -23,6 +23,8 @@ The value is the loop: **delegate → report back → evaluate → decide the ne
23
23
  **Intercom communicates; Pi orchestrates.** It is a local coordination layer, not an autonomous scheduler or a task-completion guarantee.
24
24
 
25
25
  > **0.4.1:** The terminal monitor replaces the browser dashboard. Public worker reports and the read-only JSON worker-status tool keep coordinator decisions separate from observed activity.
26
+ >
27
+ > **0.5.1:** manually closed workers remain registered and sort last as disconnected in the monitor. Optional JSON health checks and guarded resume preserve the distinction between connectivity and saved session identity.
26
28
 
27
29
  For potential next steps, see [Improvement topics](references/roadmap.md). These are proposals for discussion, not implemented features or release commitments.
28
30
 
@@ -122,12 +124,12 @@ Every tool rereads current config and checks the live Pi session ID. Names are c
122
124
  | `intercom_reload_worker` | `to` (worker name) | Coordinator; passive config/name reload |
123
125
  | `intercom_send` | `to` (name), `message` | Configured, responsibility-loaded sessions; asynchronous message |
124
126
  | `intercom_list` | None | Configured coordinator/workers; saved roster, never live health |
125
- | `intercom_worker_status` | `name?`, `offset?`, `limit?` | Configured sessions; bounded JSON observations/public reports, no live probing |
127
+ | `intercom_worker_status` | `name?`, `offset?`, `limit?`, `probe?` | Configured sessions; local JSON by default, optional bounded endpoint checks for returned page |
126
128
  | `intercom_request_status` | `to` (worker name) | Coordinator; independent extension report |
127
129
  | `intercom_report_status` | None | Workers including anonymous; shared report function, never registration |
128
130
  | `intercom_report_work` | `status`, `summary?` | Configured, responsibility-loaded workers; save a public report and notify coordinator, never approve/complete work |
129
131
  | `intercom_stop_worker`, `intercom_close_worker` | `to` (worker name) | Coordinator role checked, then **unsupported-host error**, no side effects |
130
- | `intercom_resume_worker` | `to` (worker name) | Coordinator; saved session, configured launcher/directory |
132
+ | `intercom_resume_worker` | `to`, `confirmClosed` | Coordinator; user-confirmed old-session closure, saved session/launcher/directory, guarded launch |
131
133
  | `intercom_remove_worker` | `to` (worker name) | Coordinator; config entry only, no shutdown/session deletion |
132
134
  | `intercom_set_multiplexer` | `multiplexer`: `herdr` or `none` | Coordinator; future launches only |
133
135
 
@@ -160,7 +162,7 @@ Workers have `coordinator:false` and an existing project directory equal to root
160
162
 
161
163
  Initial creation writes/fsyncs a complete temporary file then atomically publishes via a no-replace hard link. Contenders see only complete config; exactly one wins. Unsupported hard-link filesystems fail explicitly, without unsafe fallback. Interrupted staging files can remain as ignored `.tmp` files but are never mistaken for config. Updates are serialized, join Pi's file-mutation queue, validate, fsync a temporary file and atomically rename. Duplicate activation of the same coordinator session in multiple processes and external editors racing writes remain outside V1's guarantees (session locks deferred).
162
164
 
163
- HTTP binds **127.0.0.1 only**, `POST /intercom`, UTF-8 JSON, at most 64 KiB. Envelope:
165
+ HTTP binds **127.0.0.1 only**. `POST /intercom` accepts UTF-8 JSON, at most 64 KiB. Version 0.5.1 also exposes side-effect-free `GET /intercom/health`, returning only protocol version and current session ID; it does not submit messages/model turns or write config. Envelope:
164
166
 
165
167
  ```json
166
168
  {"version":1,"kind":"message","from":"sender-session-id","to":"expected-recipient-session-id","payload":{"message":"explicit message"}}
@@ -178,7 +180,7 @@ Tool text output is bounded to 50 KiB/2000 lines. The full saved roster remains
178
180
 
179
181
  The coordinator automatically checks for its monitor pane on startup inside Herdr. If missing, it creates a small pane **above the coordinator**, preserving coordinator focus. This is a standalone Node/pi-tui program, **not another Pi instance**. The old inline widget implementation has been removed. Source installations must run `npm run build` before reloading Pi; published packages include the compiled `dist/monitor.js` entry.
180
182
 
181
- The table uses aligned **Worker | Seen | Status | Report | Last activity** columns (activity detail gives way first on narrow panes). Report is explicitly worker-authored and separate from host activity. Status is the last reported `working`, `thinking`, `idle`, `closed`, or `unknown` state. Seen marks evidence older than 60 seconds with `(old)`; this is not a live connection indicator. Last activity uses fixed public labels such as Reading files, Running command or Writing response and can persist after the worker settles. Recent working/thinking/idle observations use restrained colors; old evidence remains neutral and explicitly marked. `NO_COLOR` disables styling. No read-only banner or busy/idle count summary is shown. It passively reads the same bounded config/log snapshot as the web dashboard about every three seconds, without worker prompts, probing or model calls. Only observed activity is shown, not inferred assignments/completion. Evidence over 60 seconds old is stale; missing evidence is unknown. The number of worker rows adapts to the pane height, with an omitted count when needed. The display is clipped to pane dimensions. In the monitor pane, use **↑/↓** to select a worker and **Enter** to toggle its details (configured responsibility and observed status). Selection follows the worker across roster reorder and scrolls the visible window. **Escape** closes details first, then quits; **q** or **Ctrl+C** always quits only the display process, never agents or their panes.
183
+ The table uses aligned **Worker | Connection | Report | Activity | Seen | Last activity** columns (activity age/detail give way first on narrow panes). Report is explicitly worker-authored and separate from host activity. Activity is the last reported `working`, `thinking`, `idle`, `closed`, or `unknown` state. Seen marks evidence older than 60 seconds with `(old)`; this is not a live connection indicator. Last activity uses fixed public labels such as Reading files, Running command or Writing response and can persist after the worker settles. Recent working/thinking/idle observations use restrained colors; old evidence remains neutral and explicitly marked. `NO_COLOR` disables styling. No read-only banner or busy/idle count summary is shown. It reads the bounded config/log snapshot and performs read-only loopback health checks, then refreshes roughly three seconds after completion, without worker prompts or model calls. Checks are bounded by 750 ms per endpoint, a four-second batch budget, 16 concurrent requests and 256 workers; no overlapping batches or retries. Closing the monitor aborts checks. Only observed activity is shown, not inferred assignments/completion. Evidence over 60 seconds old is stale; missing evidence is unknown. The number of worker rows adapts to the pane height, with an omitted count when needed. The display is clipped to pane dimensions. In the monitor pane, use **↑/↓** to select a worker and **Enter** to toggle its details (configured responsibility and observed status). Selection follows the worker across roster reorder and scrolls the visible window. **Escape** closes details first, then quits; **q** or **Ctrl+C** always quits only the display process, never agents or their panes.
182
184
 
183
185
  Detailed phase reports require reloading participating Pi sessions. `thinking` is emitted only when the provider supplies thinking events; missing thinking events do not imply that no reasoning occurred. Streaming content, reasoning text, command arguments and tool outputs are never read or logged for status. Repeated streaming events are deduplicated; concurrent tools are tracked without recording their arguments. Legacy busy observations display as working without invented detail. No task completion is inferred from settlement.
184
186
 
@@ -186,11 +188,21 @@ The pane's display name is simply `Intercom monitor`. Ownership uses saved pane/
186
188
 
187
189
  Outside Herdr, messaging continues without a status pane. The browser dashboard is retired; no dashboard listener or browser assets are started/shipped in 0.4.1. A monitor or legacy-metadata cleanup failure does not disable messaging. Reload an older running coordinator to close its former dashboard listener. These features replace the browser dashboard from 0.3.0.
188
190
 
191
+ ### Keeping a worker for later
192
+
193
+ Close the worker's Pi session manually **without removing its registration**. Its name, responsibility, session ID, directory and last saved endpoint remain in config; its Pi session history remains in Pi storage. The monitor keeps its row visible and sorts disconnected workers last, preserving saved order within each group and selection by session ID. This is a derived connection state, not a config deletion or a hidden row.
194
+
195
+ Connection is separate from historical activity and public reports. A recent matching health response means connected. Refused connections, timeouts or a mismatched session ID mean the saved worker endpoint is unreachable/unmatched—not proof the process is stopped. Old versions without health support, malformed responses, unsupported protocols and skipped checks remain unknown. Checks older than 30 seconds expire to unknown. Details show check time/reason; cached checks are discarded when a saved port changes or a worker is removed.
196
+
197
+ After the user confirms the previous session is closed, call `intercom_resume_worker({ to: "Builder", confirmClosed: true })`. It launches the **same saved Pi session**, restores configured identity/responsibility, and does not automatically start an old assignment. A matching connected endpoint blocks resume. Concurrent/submitted/uncertain attempts are fenced locally until a subsequent configured worker status arrives. On uncertain launch with no status, inspect the actual worker process; only after verifying closure should you reload the coordinator and consider an explicit retry. The fence is not persistent or a cross-process uniqueness guarantee. Resume failures do not remove/replace saved identity.
198
+
199
+ `intercom_remove_worker` is only for forgetting the saved registration, not parking a worker. Automatic stop/close remains disabled. Reload coordinator/workers and restart the standalone monitor to use the new health protocol/UI; these additions require 0.5.1.
200
+
189
201
  ### JSON worker status for agents and chat integrations
190
202
 
191
203
  `intercom_worker_status({})` returns a bounded JSON page of configured workers, or use `{ name: "Builder" }` for one worker. Each entry includes `observedStatus`, `lastActivity`, `observedAt`, `observationAgeSeconds`, `stale`, `evidence`, and an optional public `report` with its independent timestamp/age. Unknown ages/staleness are `null`; conflicting/future observations remain unknown, not healthy. A null report means no readable active report, not proof there are no blockers.
192
204
 
193
- The tool uses the **same observation interpretation as the terminal monitor**, reads local files only, and never prompts/probes workers. It has no Telegram dependency: an agent can read the JSON and use its existing chat tools to present a summary. `intercom_list` remains saved configuration; `intercom_request_status` remains an explicit asynchronous live status request.
205
+ The tool uses the **same observation interpretation as the terminal monitor** and reads local files only by default. Set `probe: true` to check the selected page's saved worker endpoints through the read-only health endpoint. No model turn or worker message is submitted. Results contain a separate `connection` object (`state`, `reason`, `checkedAt`); without probes it is unknown/not_checked. Disconnected entries sort last within each returned page; page boundaries stay in saved roster order, not a globally connectivity-sorted roster. It has no Telegram dependency: an agent can read the JSON and use its existing chat tools to present a summary. `intercom_list` remains saved configuration; `intercom_request_status` remains an explicit asynchronous live status request.
194
206
 
195
207
  Results include `errors`, `truncated`, `totalInSnapshot`, and `nextOffset`. Use `{ offset: nextOffset }` until it is null. Default page size is 10; `limit` accepts 1–20, with an additional byte budget to keep JSON complete. The snapshot retains at most 256 configured agents; truncation and unavailable observations are explicit. No result is proof of current liveness, coordinator approval, or task completion.
196
208
 
@@ -244,6 +256,17 @@ The workflow validates on Windows and Linux, then publishes with provenance from
244
256
 
245
257
  Published versions are immutable. For a new release, bump package and lockfile versions, commit/push, then publish a matching GitHub release. Manual dispatch publishes the selected ref and is **not a dry run**; the release-tag check only applies when a release tag is present. Do not dispatch publishing for an already published version. CI validates pushes to `main` and pull requests separately without publishing.
246
258
 
259
+ ### 0.5.1 Retained disconnected workers
260
+
261
+ The 0.5.0 release did not publish to npm because an occupied-port fallback exposed duplicate listener counting in test instrumentation. 0.5.1 fixes the test hook and forces that fallback deterministically, without changing production listener behavior. The 0.5.0 tag is unchanged.
262
+
263
+ - Manually closed workers remain in config and the monitor, preserving name, responsibility, session ID and directory. Disconnected rows sort last; selection follows identity.
264
+ - Read-only, bounded loopback identity checks distinguish connection state from observed activity and public reports. Old/unsupported endpoints remain unknown; endpoint failure is not proof of process termination.
265
+ - `intercom_worker_status` remains local-only by default; `probe:true` adds connection checks for the selected page.
266
+ - **Resume API change:** `intercom_resume_worker` requires `confirmClosed:true` after explicit user confirmation that the previous session was closed. Matching connected endpoints block resume; concurrent/uncertain attempts are fenced locally. No automatic shutdown, removal, restart or assignment.
267
+ - Reload coordinator/workers and restart the monitor after upgrading. Config-root discovery is unchanged.
268
+ - Local validation: typecheck, 132 tests and isolated package-install check passed; independent source review found no remaining critical blocker in reviewed paths. Native Windows/Linux CI gates publication.
269
+
247
270
  ### 0.4.2 Standalone monitor dependency fix
248
271
 
249
272
  - Install a pinned TUI runtime dependency for the standalone monitor, independent of Pi's host-provided extension peers. Fixes `ERR_MODULE_NOT_FOUND` after managed Pi installs that disable peer installation.
@@ -0,0 +1,29 @@
1
+ export type ConnectionReason = 'verified' | 'identity_mismatch' | 'unsupported_version' | 'refused' | 'timeout' | 'legacy' | 'malformed' | 'oversize' | 'http_error' | 'network_error' | 'aborted' | 'not_checked' | 'stale' | 'invalid_input';
2
+ export interface WorkerConnection {
3
+ sessionId: string;
4
+ state: 'connected' | 'disconnected' | 'unknown';
5
+ checkedAt: string | null;
6
+ reason: ConnectionReason;
7
+ }
8
+ export interface ConnectionAgent {
9
+ sessionId: string;
10
+ port: number;
11
+ }
12
+ export interface ProbeOptions {
13
+ signal?: AbortSignal;
14
+ timeoutMs?: number;
15
+ }
16
+ export interface BatchProbeOptions extends ProbeOptions {
17
+ budgetMs?: number;
18
+ concurrency?: number;
19
+ }
20
+ /** Read-only best-effort endpoint identity, never evidence of process termination. */
21
+ export declare function probeWorker(agent: ConnectionAgent, options?: ProbeOptions): Promise<WorkerConnection>;
22
+ /** One bounded concurrent pass; cancellation/budget exhaustion never implies disconnection. */
23
+ export declare function probeWorkers(agents: readonly ConnectionAgent[], options?: BatchProbeOptions): Promise<WorkerConnection[]>;
24
+ /** Health expires: an old failure must not indefinitely demote a configured worker. */
25
+ export declare function currentConnection(sessionId: string, connections?: readonly WorkerConnection[], now?: number): WorkerConnection;
26
+ /** Stable disconnected-last copy; does not mutate configuration or observations. */
27
+ export declare function sortWorkersByConnection<T extends {
28
+ sessionId: string;
29
+ }>(workers: readonly T[], connections?: readonly WorkerConnection[], now?: number): T[];
@@ -0,0 +1,156 @@
1
+ import http from 'node:http';
2
+ import { setMaxListeners } from 'node:events';
3
+ const MAX_BODY = 1024;
4
+ const MAX_AGE = 30000;
5
+ const MAX_WORKERS = 256;
6
+ function bounded(value, fallback, maximum) {
7
+ return typeof value === 'number' && Number.isFinite(value) ? Math.max(1, Math.min(maximum, Math.floor(value))) : fallback;
8
+ }
9
+ function unknown(sessionId, reason = 'not_checked', checkedAt = null) {
10
+ return { sessionId, state: 'unknown', checkedAt, reason };
11
+ }
12
+ /** Read-only best-effort endpoint identity, never evidence of process termination. */
13
+ export function probeWorker(agent, options = {}) {
14
+ if (options.signal?.aborted)
15
+ return Promise.resolve(unknown(agent.sessionId, 'aborted'));
16
+ if (typeof agent.sessionId !== 'string' || !agent.sessionId.trim() || agent.sessionId.length > 256 || !Number.isInteger(agent.port) || agent.port < 1 || agent.port > 65535) {
17
+ return Promise.resolve(unknown(agent.sessionId, 'invalid_input'));
18
+ }
19
+ const timeout = bounded(options.timeoutMs, 750, 4000);
20
+ return new Promise(resolve => {
21
+ let settled = false;
22
+ let request;
23
+ let response;
24
+ let timer;
25
+ const finish = (state, reason) => {
26
+ if (settled)
27
+ return;
28
+ settled = true;
29
+ clearTimeout(timer);
30
+ options.signal?.removeEventListener('abort', abort);
31
+ response?.destroy();
32
+ request?.destroy();
33
+ resolve(options.signal?.aborted
34
+ ? unknown(agent.sessionId, 'aborted', new Date().toISOString())
35
+ : { sessionId: agent.sessionId, state, reason, checkedAt: new Date().toISOString() });
36
+ };
37
+ const abort = () => finish('unknown', 'aborted');
38
+ const error = (error) => {
39
+ if (error.code === 'ECONNREFUSED')
40
+ finish('disconnected', 'refused');
41
+ else if (error.code === 'ETIMEDOUT')
42
+ finish('disconnected', 'timeout');
43
+ else
44
+ finish('unknown', 'network_error');
45
+ };
46
+ options.signal?.addEventListener('abort', abort, { once: true });
47
+ // Wall-clock deadline covers connect, headers AND the entire body, including
48
+ // slow-drip responses. Native HTTP ignores proxy env; no redirects/retries.
49
+ timer = setTimeout(() => finish('disconnected', 'timeout'), timeout);
50
+ try {
51
+ request = http.get({ hostname: '127.0.0.1', port: agent.port, path: '/intercom/health', agent: false, maxHeaderSize: 4096 }, res => {
52
+ response = res;
53
+ res.on('error', error);
54
+ if (settled) {
55
+ res.destroy();
56
+ return;
57
+ }
58
+ if (res.statusCode !== 200) {
59
+ finish('unknown', res.statusCode === 404 ? 'legacy' : 'http_error');
60
+ return;
61
+ }
62
+ let bytes = 0;
63
+ const chunks = [];
64
+ res.on('data', (chunk) => {
65
+ bytes += chunk.length;
66
+ if (bytes > MAX_BODY) {
67
+ finish('unknown', 'oversize');
68
+ return;
69
+ }
70
+ chunks.push(chunk);
71
+ });
72
+ res.on('aborted', () => finish('unknown', 'network_error'));
73
+ res.on('end', () => {
74
+ if (settled)
75
+ return;
76
+ let body;
77
+ try {
78
+ body = JSON.parse(Buffer.concat(chunks).toString('utf8'));
79
+ }
80
+ catch {
81
+ finish('unknown', 'malformed');
82
+ return;
83
+ }
84
+ if (!body || typeof body !== 'object' || Array.isArray(body) ||
85
+ typeof body.version !== 'number' ||
86
+ typeof body.sessionId !== 'string' ||
87
+ !body.sessionId.trim() || body.sessionId.length > 256) {
88
+ finish('unknown', 'malformed');
89
+ return;
90
+ }
91
+ const identity = body;
92
+ if (identity.version !== 1)
93
+ finish('unknown', 'unsupported_version');
94
+ else if (identity.sessionId !== agent.sessionId)
95
+ finish('disconnected', 'identity_mismatch');
96
+ else
97
+ finish('connected', 'verified');
98
+ });
99
+ });
100
+ request.on('error', error);
101
+ }
102
+ catch {
103
+ finish('unknown', 'network_error');
104
+ }
105
+ });
106
+ }
107
+ /** One bounded concurrent pass; cancellation/budget exhaustion never implies disconnection. */
108
+ export async function probeWorkers(agents, options = {}) {
109
+ const boundedAgents = agents.slice(0, MAX_WORKERS);
110
+ const results = boundedAgents.map(agent => unknown(agent.sessionId));
111
+ const controller = new AbortController();
112
+ setMaxListeners(17, controller.signal);
113
+ const abort = () => controller.abort();
114
+ const budget = bounded(options.budgetMs, 4000, 4000);
115
+ const concurrency = bounded(options.concurrency, 16, 16);
116
+ if (options.signal?.aborted)
117
+ return boundedAgents.map(agent => unknown(agent.sessionId, 'aborted'));
118
+ options.signal?.addEventListener('abort', abort, { once: true });
119
+ const timer = setTimeout(abort, budget);
120
+ let next = 0;
121
+ try {
122
+ await Promise.all(Array.from({ length: Math.min(concurrency, boundedAgents.length) }, async () => {
123
+ while (!controller.signal.aborted && next < boundedAgents.length) {
124
+ const index = next++;
125
+ results[index] = await probeWorker(boundedAgents[index], { signal: controller.signal, timeoutMs: options.timeoutMs });
126
+ }
127
+ }));
128
+ return results;
129
+ }
130
+ finally {
131
+ clearTimeout(timer);
132
+ options.signal?.removeEventListener('abort', abort);
133
+ controller.abort();
134
+ }
135
+ }
136
+ /** Health expires: an old failure must not indefinitely demote a configured worker. */
137
+ export function currentConnection(sessionId, connections, now = Date.now()) {
138
+ const connection = connections?.find(item => item.sessionId === sessionId);
139
+ if (!connection)
140
+ return unknown(sessionId);
141
+ if (connection.checkedAt === null)
142
+ return unknown(sessionId, connection.state === 'unknown' ? connection.reason : 'not_checked');
143
+ const checked = Date.parse(connection.checkedAt);
144
+ if (!Number.isFinite(checked) || !Number.isFinite(now) || checked > now || now - checked > MAX_AGE)
145
+ return unknown(sessionId, 'stale', connection.checkedAt);
146
+ return { ...connection };
147
+ }
148
+ /** Stable disconnected-last copy; does not mutate configuration or observations. */
149
+ export function sortWorkersByConnection(workers, connections, now = Date.now()) {
150
+ const current = [], disconnected = [];
151
+ for (const worker of workers) {
152
+ (currentConnection(worker.sessionId, connections, now).state === 'disconnected' ? disconnected : current).push(worker);
153
+ }
154
+ return [...current, ...disconnected];
155
+ }
156
+ //# sourceMappingURL=connections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connections.js","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,14 +13,14 @@ const tools = [
13
13
  ['configure_worker', 'Coordinator only. Write explicit reported connection details and responsibility to config. Does not notify, reload, or start work. Use reload_worker separately.', Type.Object({ sessionId: Type.String(), port: Type.Integer({ minimum: 1, maximum: 65535 }), projectDirectory: Type.String(), name: Type.String({ minLength: 1, maxLength: 128 }), description: Type.String({ minLength: 1, maxLength: 4096 }) })],
14
14
  ['reload_worker', 'Coordinator only. Ask worker to reread responsibility and synchronize names. NOT Pi extension reload, cancellation, restart, or work assignment.', to],
15
15
  ['send', 'Configured sessions only. Send an explicit work/progress/findings message by recipient name. Idle delivery starts a turn; busy delivery steers at supported boundaries. Receipt is not an agent reply. Progress questions do not cancel assignments.', Type.Object({ to: Type.String(), message: Type.String({ minLength: 1, maxLength: 48000 }) })],
16
- ['worker_status', 'Configured sessions only. Read paginated JSON worker observations and public reports from local files, optionally by worker name. Last-observed status is not live liveness or task completion; reports are self-reported, not approval. No worker prompts, live probing or Telegram dependency. Follow nextOffset for further pages; null report means no readable active report.', Type.Object({ name: Type.Optional(Type.String({ minLength: 1, maxLength: 128 })), offset: Type.Optional(Type.Integer({ minimum: 0 })), limit: Type.Optional(Type.Integer({ minimum: 1, maximum: 20 })) })],
16
+ ['worker_status', 'Configured sessions only. Read paginated JSON worker observations and public reports from local files, optionally by worker name. Last-observed status is not live liveness or task completion; reports are self-reported, not approval. Local-only by default; probe:true performs bounded loopback identity checks for this page only, without worker prompts or Telegram dependency. Disconnected means endpoint unreachable, not process termination. Follow nextOffset for further pages; null report means no readable active report.', Type.Object({ name: Type.Optional(Type.String({ minLength: 1, maxLength: 128 })), offset: Type.Optional(Type.Integer({ minimum: 0 })), limit: Type.Optional(Type.Integer({ minimum: 1, maximum: 20 })), probe: Type.Optional(Type.Boolean()) })],
17
17
  ['list', 'Configured sessions only. Read current saved names, responsibilities, session IDs, roles and ports. No live probing. Output limited to 50 KiB/2000 lines; full data remains in config.json.', Type.Object({})],
18
18
  ['request_status', 'Coordinator only. Ask worker extension to send an independent sessionId/port/busy report without a model turn on worker. No synchronous status reply.', to],
19
19
  ['report_work', 'Configured, responsibility-loaded workers only. Store one public report (blocked, needs_decision, ready_for_review) and notify the coordinator; clear retires it. Summary required except clear (omit or empty). Never include private reasoning, credentials, raw tool payloads, or secrets. Receipt is not approval, verified completion, or permission for follow-up work.', Type.Object({ status: Type.String({ enum: ['blocked', 'needs_decision', 'ready_for_review', 'clear'] }), summary: Type.Optional(Type.String({ maxLength: 2000 })) })],
20
20
  ['report_status', 'Worker only (including anonymous). Send runtime sessionId/port/busy report to coordinator. This is NOT registration and creates no config entry.', Type.Object({})],
21
21
  ['stop_worker', UNSUPPORTED_CANCELLATION, to],
22
22
  ['close_worker', UNSUPPORTED_CANCELLATION, to],
23
- ['resume_worker', 'Coordinator only. Launch saved session by ID in configured directory. No replacement/removal on failure; no old assignment is automatically started.', to],
23
+ ['resume_worker', 'Coordinator only. Resume saved session/name/responsibility after the user explicitly confirms the old session was closed: set confirmClosed:true only for that confirmation, never infer it from disconnected status. A matching live health endpoint blocks launch. In-flight/uncertain attempts are fenced until worker status arrives; otherwise inspect process and reload coordinator before considering retry. No cross-process uniqueness guarantee, automatic assignment, replacement or removal.', Type.Object({ to: Type.String({ minLength: 1, maxLength: 128 }), confirmClosed: Type.Boolean() })],
24
24
  ['remove_worker', 'Coordinator only. Remove config entry only; never stop process or delete session files. A running worker must be explicitly closed before removal. Stop/close are disabled on current host: arrange explicit user closure first.', to],
25
25
  ['set_multiplexer', 'Coordinator only. Set herdr (default, Windows/Linux) or none (separate visible Windows terminals; unsupported on Linux) for future launches. Never move/restart existing workers or fall back.', Type.Object({ multiplexer: Type.String({ enum: ['herdr', 'none'] }) })],
26
26
  ];
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { stripVTControlCharacters } from 'node:util';
2
2
  import { truncateToWidth, visibleWidth } from 'pi-intercom-tui';
3
3
  import { workerObservation } from './worker-status.js';
4
+ import { currentConnection, sortWorkersByConnection } from './connections.js';
4
5
  const safe = (value) => stripVTControlCharacters(value).replace(/[\x00-\x1f\x7f-\x9f\u2028-\u202e\u2066-\u2069]/g, ' ');
5
6
  const clip = (value, width) => stripVTControlCharacters(truncateToWidth(safe(value), Math.max(0, width)));
6
7
  const cell = (value, width) => {
@@ -54,30 +55,29 @@ export function renderMonitor(snapshot, width, height, now = Date.now(), color =
54
55
  lines.push(paint('33', line(' Status unavailable — waiting for local observations')));
55
56
  }
56
57
  else {
57
- const workers = snapshot.config.agents.filter(agent => !agent.coordinator);
58
- // Report remains distinct from observed status; last activity gives way first.
58
+ const workers = sortWorkersByConnection(snapshot.config.agents.filter(agent => !agent.coordinator), snapshot.connections, now);
59
+ // Connection is independent of historical activity and public reports.
59
60
  const wide = width >= 100;
60
- const nameWidth = wide ? Math.min(22, Math.max(10, width - 88)) : 10;
61
- const activityWidth = wide ? 12 : 8, ageWidth = 16, reportWidth = 16;
62
- const table = (name, activity, age, detail, report = '—', tone = '90', selected = false) => {
63
- const prefix = `${selected ? '› ' : ' '}${cell(name, nameWidth)} ${cell(age, ageWidth)} `;
64
- const status = cell(activity, activityWidth);
65
- const tail = ` ${cell(report, reportWidth)}${wide ? ` ${detail}` : ''}`;
66
- // Clip as plain text first; no untrusted escape sequences enter the output.
67
- if (!color)
68
- return line(prefix + status + tail);
61
+ const nameWidth = wide ? Math.min(22, Math.max(10, width - 100)) : Math.max(1, Math.min(10, width - 16));
62
+ const activityWidth = 8, ageWidth = 16, reportWidth = 16;
63
+ const table = (name, connection, activity, age, detail, report = '—', tone = '90', selected = false) => {
64
+ const prefix = `${selected ? '› ' : ' '}${cell(name, nameWidth)} `;
65
+ const status = cell(connection, 12);
66
+ const tail = ` ${cell(report, reportWidth)} ${cell(activity, activityWidth)}${width >= 78 ? ` ${cell(age, ageWidth)}` : ''}${wide ? ` ${detail}` : ''}`;
67
+ // Clip each lower-priority section independently so a truncated tail never
68
+ // steals space from a fully fitting connection label. Styling is trusted.
69
69
  const namePart = clip(prefix, width);
70
70
  const statusRoom = Math.max(0, width - visibleWidth(namePart));
71
71
  const statusPart = clip(status, statusRoom);
72
72
  const tailRoom = Math.max(0, statusRoom - visibleWidth(statusPart));
73
73
  return (selected ? paint('1;36', namePart) : namePart) + paint(tone, statusPart) + dim(clip(tail, tailRoom));
74
74
  };
75
- lines.push(paint('1', table('Worker', 'Status', 'Seen', 'Last activity', 'Report')));
75
+ lines.push(paint('1', table('Worker', 'Connection', 'Activity', 'Seen', 'Last activity', 'Report')));
76
76
  lines.push(dim(line(' ' + '─'.repeat(Math.max(0, width - 2)))));
77
77
  const selectedIndex = Math.min(workers.length - 1, Math.max(-1, options.selectedIndex ?? -1));
78
78
  const showDetails = Boolean(options.details && selectedIndex >= 0 && height >= 8);
79
79
  const selectedReport = snapshot.reports?.find(report => report.sessionId === workers[selectedIndex]?.sessionId && reportLabels[report.status]);
80
- const detailBudget = showDetails ? Math.min(selectedReport ? 12 : 5, height - 5) : 0;
80
+ const detailBudget = showDetails ? Math.min(selectedReport ? 15 : 8, height - 5) : 0;
81
81
  const available = Math.max(0, height - lines.length - 2 - detailBudget);
82
82
  const needsOverflow = workers.length > available;
83
83
  const count = Math.min(workers.length, Math.max(0, available - (needsOverflow && available > 1 ? 1 : 0)));
@@ -87,17 +87,25 @@ export function renderMonitor(snapshot, width, height, now = Date.now(), color =
87
87
  const observation = workerObservation(snapshot, worker.sessionId, now);
88
88
  const activity = observation.observedStatus, evidence = observation.lastActivity;
89
89
  const age = observation.observationAgeSeconds === null ? '—' : ageLabel(observation.observationAgeSeconds * 1000) + (observation.stale ? ' (old)' : '');
90
- const tone = observation.stale ? '90' : activity === 'thinking' ? '35' : activity === 'working' ? '36' : activity === 'idle' ? '32' : '90';
90
+ const connection = currentConnection(worker.sessionId, snapshot.connections, now);
91
+ const tone = connection.state === 'disconnected' ? '33' : connection.state === 'connected' ? '32' : '90';
92
+ const checkedAge = connection.checkedAt ? now - Date.parse(connection.checkedAt) : NaN;
93
+ const connectionDetails = [
94
+ line(` Connection: ${connection.state} · ${connection.reason}`),
95
+ line(` Checked: ${connection.checkedAt ?? 'never'} · ${Number.isFinite(checkedAge) && checkedAge >= 0 ? ageLabel(checkedAge) : 'age unknown'}`),
96
+ ];
91
97
  const selected = start + offset === selectedIndex;
92
98
  const report = snapshot.reports?.find(report => report.sessionId === worker.sessionId && reportLabels[report.status]);
93
- lines.push(table(worker.name, activity, age, evidence, report ? reportLabels[report.status] : '—', tone, selected));
99
+ lines.push(table(worker.name, connection.state, activity, age, evidence, report ? reportLabels[report.status] : '—', tone, selected));
94
100
  if (selected && showDetails && report) {
95
101
  const elapsed = now - Date.parse(report.updatedAt);
96
102
  const reportAge = !Number.isFinite(elapsed) || elapsed < 0 ? 'clock uncertain' : ageLabel(elapsed) + (elapsed > snapshot.staleAfterMs ? ' (old)' : '');
97
- const contextRows = detailBudget >= 5 ? [
98
- ...(detailBudget >= 6 ? [paint('1', line(` ${worker.name}`))] : []),
103
+ const contextRows = detailBudget >= 8 ? [
104
+ paint('1', line(` ${worker.name}`)),
105
+ ...connectionDetails,
99
106
  line(` Responsibility: ${worker.description || 'Not specified'}`),
100
107
  line(` Observed status: ${activity} · ${age}`),
108
+ ...(detailBudget >= 10 ? [line(` Last activity: ${evidence}`)] : []),
101
109
  ] : [];
102
110
  selectedDetail = [
103
111
  ...contextRows,
@@ -108,8 +116,7 @@ export function renderMonitor(snapshot, width, height, now = Date.now(), color =
108
116
  }
109
117
  else if (selected && showDetails)
110
118
  selectedDetail = [
111
- dim(line(' ' + '─'.repeat(Math.max(0, width - 2)))),
112
- paint('1', line(` ${worker.name}`)),
119
+ ...connectionDetails,
113
120
  line(` Responsibility: ${worker.description || 'Not specified'}`),
114
121
  line(` Observed status: ${activity} · ${age}`),
115
122
  line(` Last activity: ${evidence}`),
@@ -117,7 +124,7 @@ export function renderMonitor(snapshot, width, height, now = Date.now(), color =
117
124
  }
118
125
  if (workers.length > count && available > count)
119
126
  lines.push(dim(line(` ${workers.length - count} more · rows ${count ? start + 1 : 0}–${start + count} of ${workers.length} · ↑↓ to browse`)));
120
- lines.push(...(selectedReport ? selectedDetail.slice(0, detailBudget) : selectedDetail.slice(-detailBudget || selectedDetail.length)));
127
+ lines.push(...selectedDetail.slice(0, detailBudget));
121
128
  if (!workers.length && available)
122
129
  lines.push(dim(line(' No workers configured yet')));
123
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"monitor-view.js","sourceRoot":"","sources":["../src/monitor-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;AAChI,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAAC,wBAAwB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1H,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC;AACF,MAAM,QAAQ,GAAG,CAAC,YAAoB,EAAE,EAAE;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAChD,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,OAAO,CAAC;IAC3C,IAAI,OAAO,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAC9D,IAAI,OAAO,GAAG,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACjE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,YAAY,GAA2B;IAC3C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB;CAC3F,CAAC;AACF,mFAAmF;AACnF,SAAS,WAAW,CAAC,KAAa,EAAE,KAAa,EAAE,IAAY;IAC7D,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1G,IAAI,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC;YAC5C,IAAI,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI;gBAAE,MAAM;QACnC,CAAC;QACD,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,aAAa,CAAC,QAAyC,EAAE,KAAa,EAAE,MAAc,EACpG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE,UAAyD,EAAE;IAC5F,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3E,+EAA+E;QAC/E,MAAM,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,GAAW,EAAE,MAAc,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAE;YACzH,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC;YAC7F,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC1E,4EAA4E;YAC5E,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,aAAa,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC;QAClF,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,aAAa,CAAC,EAAE,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/I,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,aAAa,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1G,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACpG,IAAI,cAAc,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7E,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,EAAE,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC;YACjF,MAAM,GAAG,GAAG,WAAW,CAAC,qBAAqB,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxJ,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3I,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,KAAK,aAAa,CAAC;YAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACtH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YACpH,IAAI,QAAQ,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACnD,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvJ,MAAM,WAAW,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC;oBACtC,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,IAAI,CAAC,qBAAqB,MAAM,CAAC,WAAW,IAAI,eAAe,EAAE,CAAC;oBAClE,IAAI,CAAC,sBAAsB,QAAQ,MAAM,GAAG,EAAE,CAAC;iBAChD,CAAC,CAAC,CAAC,EAAE,CAAC;gBACP,cAAc,GAAG;oBACf,GAAG,WAAW;oBACd,IAAI,CAAC,aAAa,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,EAAE,CAAC;oBAC/D,IAAI,CAAC,iCAAiC,CAAC;oBACvC,GAAG,WAAW,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;iBACxJ,CAAC;YACJ,CAAC;iBAAM,IAAI,QAAQ,IAAI,WAAW;gBAAE,cAAc,GAAG;oBACnD,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpD,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBACpC,IAAI,CAAC,qBAAqB,MAAM,CAAC,WAAW,IAAI,eAAe,EAAE,CAAC;oBAClE,IAAI,CAAC,sBAAsB,QAAQ,MAAM,GAAG,EAAE,CAAC;oBAC/C,IAAI,CAAC,oBAAoB,QAAQ,EAAE,CAAC;iBACrC,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,IAAI,SAAS,GAAG,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,KAAK,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,OAAO,OAAO,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAChM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,YAAY,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,6EAA6E;IAC7E,MAAM,OAAO,GAAG,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,oCAAoC,CAAC;IAC1G,MAAM,UAAU,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACvL,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAClK,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"monitor-view.js","sourceRoot":"","sources":["../src/monitor-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;AAChI,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAAC,wBAAwB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1H,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC;AACF,MAAM,QAAQ,GAAG,CAAC,YAAoB,EAAE,EAAE;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAChD,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,OAAO,CAAC;IAC3C,IAAI,OAAO,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAC9D,IAAI,OAAO,GAAG,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACjE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,YAAY,GAA2B;IAC3C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB;CAC3F,CAAC;AACF,mFAAmF;AACnF,SAAS,WAAW,CAAC,KAAa,EAAE,KAAa,EAAE,IAAY;IAC7D,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1G,IAAI,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC;YAC5C,IAAI,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI;gBAAE,MAAM;QACnC,CAAC;QACD,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,aAAa,CAAC,QAAyC,EAAE,KAAa,EAAE,MAAc,EACpG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE,UAAyD,EAAE;IAC5F,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC/H,uEAAuE;QACvE,MAAM,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QACzG,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,UAAkB,EAAE,QAAgB,EAAE,GAAW,EAAE,MAAc,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAE;YAC7I,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5J,2EAA2E;YAC3E,0EAA0E;YAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,aAAa,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC;QAClF,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,aAAa,CAAC,EAAE,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/I,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,aAAa,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1G,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACpG,IAAI,cAAc,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7E,MAAM,WAAW,GAAG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,EAAE,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC;YACjF,MAAM,GAAG,GAAG,WAAW,CAAC,qBAAqB,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxJ,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAClF,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACzG,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACvF,MAAM,iBAAiB,GAAG;gBACxB,IAAI,CAAC,iBAAiB,UAAU,CAAC,KAAK,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;gBAChE,IAAI,CAAC,cAAc,UAAU,CAAC,SAAS,IAAI,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;aACjJ,CAAC;YACF,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,KAAK,aAAa,CAAC;YAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACtH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtI,IAAI,QAAQ,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACnD,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvJ,MAAM,WAAW,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC;oBACtC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBACpC,GAAG,iBAAiB;oBACpB,IAAI,CAAC,qBAAqB,MAAM,CAAC,WAAW,IAAI,eAAe,EAAE,CAAC;oBAClE,IAAI,CAAC,sBAAsB,QAAQ,MAAM,GAAG,EAAE,CAAC;oBAC/C,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACP,cAAc,GAAG;oBACf,GAAG,WAAW;oBACd,IAAI,CAAC,aAAa,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,EAAE,CAAC;oBAC/D,IAAI,CAAC,iCAAiC,CAAC;oBACvC,GAAG,WAAW,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;iBACxJ,CAAC;YACJ,CAAC;iBAAM,IAAI,QAAQ,IAAI,WAAW;gBAAE,cAAc,GAAG;oBACnD,GAAG,iBAAiB;oBACpB,IAAI,CAAC,qBAAqB,MAAM,CAAC,WAAW,IAAI,eAAe,EAAE,CAAC;oBAClE,IAAI,CAAC,sBAAsB,QAAQ,MAAM,GAAG,EAAE,CAAC;oBAC/C,IAAI,CAAC,oBAAoB,QAAQ,EAAE,CAAC;iBACrC,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,IAAI,SAAS,GAAG,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,KAAK,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,OAAO,OAAO,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAChM,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,6EAA6E;IAC7E,MAAM,OAAO,GAAG,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,oCAAoC,CAAC;IAC1G,MAAM,UAAU,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACvL,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAClK,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC"}
package/dist/monitor.d.ts CHANGED
@@ -1,9 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { type Component } from 'pi-intercom-tui';
3
3
  import { readObservationSnapshot } from './snapshot.js';
4
+ import { probeWorkers } from './connections.js';
4
5
  export declare function parseMonitorRoot(args: string[]): string;
5
6
  export interface MonitorOptions {
6
7
  read?: typeof readObservationSnapshot;
8
+ /** Injected readers do not probe unless explicitly supplied. */
9
+ probe?: typeof probeWorkers;
7
10
  rows: () => number;
8
11
  requestRender: () => void;
9
12
  onQuit: () => void;
@@ -13,7 +16,7 @@ export interface MonitorOptions {
13
16
  /** Returns a cancellation function; injected by deterministic tests. */
14
17
  schedule?: (callback: () => void, delayMs: number) => () => void;
15
18
  }
16
- /** No host, probing, network or writes. Closing never awaits an outstanding read. */
19
+ /** Read-only snapshots and bounded health checks. Closing never awaits pending IO. */
17
20
  export declare function createMonitor(root: string, options: MonitorOptions): Component & {
18
21
  start(): void;
19
22
  close(): void;