@seat-mesh/daemon 0.1.2

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 (121) hide show
  1. package/dist/border-paint.d.ts +11 -0
  2. package/dist/border-paint.d.ts.map +1 -0
  3. package/dist/border-paint.js +163 -0
  4. package/dist/border-paint.js.map +1 -0
  5. package/dist/bullmq-runtime.d.ts +19 -0
  6. package/dist/bullmq-runtime.d.ts.map +1 -0
  7. package/dist/bullmq-runtime.js +78 -0
  8. package/dist/bullmq-runtime.js.map +1 -0
  9. package/dist/compose-gate.d.ts +18 -0
  10. package/dist/compose-gate.d.ts.map +1 -0
  11. package/dist/compose-gate.js +80 -0
  12. package/dist/compose-gate.js.map +1 -0
  13. package/dist/compose-gate.test.d.ts +2 -0
  14. package/dist/compose-gate.test.d.ts.map +1 -0
  15. package/dist/compose-gate.test.js +35 -0
  16. package/dist/compose-gate.test.js.map +1 -0
  17. package/dist/connectivity-recovery.d.ts +81 -0
  18. package/dist/connectivity-recovery.d.ts.map +1 -0
  19. package/dist/connectivity-recovery.js +454 -0
  20. package/dist/connectivity-recovery.js.map +1 -0
  21. package/dist/connectivity-recovery.test.d.ts +2 -0
  22. package/dist/connectivity-recovery.test.d.ts.map +1 -0
  23. package/dist/connectivity-recovery.test.js +147 -0
  24. package/dist/connectivity-recovery.test.js.map +1 -0
  25. package/dist/create-queue-store.d.ts +8 -0
  26. package/dist/create-queue-store.d.ts.map +1 -0
  27. package/dist/create-queue-store.js +13 -0
  28. package/dist/create-queue-store.js.map +1 -0
  29. package/dist/delivery-hold.d.ts +10 -0
  30. package/dist/delivery-hold.d.ts.map +1 -0
  31. package/dist/delivery-hold.js +21 -0
  32. package/dist/delivery-hold.js.map +1 -0
  33. package/dist/delivery-hold.test.d.ts +2 -0
  34. package/dist/delivery-hold.test.d.ts.map +1 -0
  35. package/dist/delivery-hold.test.js +35 -0
  36. package/dist/delivery-hold.test.js.map +1 -0
  37. package/dist/index.d.ts +3 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +3 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/inject-delivery.d.ts +26 -0
  42. package/dist/inject-delivery.d.ts.map +1 -0
  43. package/dist/inject-delivery.js +108 -0
  44. package/dist/inject-delivery.js.map +1 -0
  45. package/dist/inject-delivery.test.d.ts +2 -0
  46. package/dist/inject-delivery.test.d.ts.map +1 -0
  47. package/dist/inject-delivery.test.js +14 -0
  48. package/dist/inject-delivery.test.js.map +1 -0
  49. package/dist/jsonl-dedupe.test.d.ts +2 -0
  50. package/dist/jsonl-dedupe.test.d.ts.map +1 -0
  51. package/dist/jsonl-dedupe.test.js +27 -0
  52. package/dist/jsonl-dedupe.test.js.map +1 -0
  53. package/dist/jsonl-store.d.ts +103 -0
  54. package/dist/jsonl-store.d.ts.map +1 -0
  55. package/dist/jsonl-store.js +235 -0
  56. package/dist/jsonl-store.js.map +1 -0
  57. package/dist/mesh-inbox-server.d.ts +3 -0
  58. package/dist/mesh-inbox-server.d.ts.map +1 -0
  59. package/dist/mesh-inbox-server.js +483 -0
  60. package/dist/mesh-inbox-server.js.map +1 -0
  61. package/dist/mesh-inbox-supervisor.d.ts +3 -0
  62. package/dist/mesh-inbox-supervisor.d.ts.map +1 -0
  63. package/dist/mesh-inbox-supervisor.js +227 -0
  64. package/dist/mesh-inbox-supervisor.js.map +1 -0
  65. package/dist/mesh-orchestrator.d.ts +32 -0
  66. package/dist/mesh-orchestrator.d.ts.map +1 -0
  67. package/dist/mesh-orchestrator.js +340 -0
  68. package/dist/mesh-orchestrator.js.map +1 -0
  69. package/dist/oc-resume-ack.d.ts +32 -0
  70. package/dist/oc-resume-ack.d.ts.map +1 -0
  71. package/dist/oc-resume-ack.js +89 -0
  72. package/dist/oc-resume-ack.js.map +1 -0
  73. package/dist/oc-resume-ack.test.d.ts +2 -0
  74. package/dist/oc-resume-ack.test.d.ts.map +1 -0
  75. package/dist/oc-resume-ack.test.js +23 -0
  76. package/dist/oc-resume-ack.test.js.map +1 -0
  77. package/dist/oc-resume.d.ts +25 -0
  78. package/dist/oc-resume.d.ts.map +1 -0
  79. package/dist/oc-resume.js +102 -0
  80. package/dist/oc-resume.js.map +1 -0
  81. package/dist/orchestrator.d.ts +17 -0
  82. package/dist/orchestrator.d.ts.map +1 -0
  83. package/dist/orchestrator.js +11 -0
  84. package/dist/orchestrator.js.map +1 -0
  85. package/dist/pane-ops-drain.d.ts +14 -0
  86. package/dist/pane-ops-drain.d.ts.map +1 -0
  87. package/dist/pane-ops-drain.js +53 -0
  88. package/dist/pane-ops-drain.js.map +1 -0
  89. package/dist/peer-backlog.d.ts +18 -0
  90. package/dist/peer-backlog.d.ts.map +1 -0
  91. package/dist/peer-backlog.js +137 -0
  92. package/dist/peer-backlog.js.map +1 -0
  93. package/dist/peer-comms-checkback.d.ts +5 -0
  94. package/dist/peer-comms-checkback.d.ts.map +1 -0
  95. package/dist/peer-comms-checkback.js +57 -0
  96. package/dist/peer-comms-checkback.js.map +1 -0
  97. package/dist/peer-skip.d.ts +10 -0
  98. package/dist/peer-skip.d.ts.map +1 -0
  99. package/dist/peer-skip.js +26 -0
  100. package/dist/peer-skip.js.map +1 -0
  101. package/dist/peer-skip.test.d.ts +2 -0
  102. package/dist/peer-skip.test.d.ts.map +1 -0
  103. package/dist/peer-skip.test.js +33 -0
  104. package/dist/peer-skip.test.js.map +1 -0
  105. package/dist/ppa-state.d.ts +32 -0
  106. package/dist/ppa-state.d.ts.map +1 -0
  107. package/dist/ppa-state.js +63 -0
  108. package/dist/ppa-state.js.map +1 -0
  109. package/dist/sqlite-store.d.ts +44 -0
  110. package/dist/sqlite-store.d.ts.map +1 -0
  111. package/dist/sqlite-store.js +422 -0
  112. package/dist/sqlite-store.js.map +1 -0
  113. package/dist/sqlite-store.test.d.ts +2 -0
  114. package/dist/sqlite-store.test.d.ts.map +1 -0
  115. package/dist/sqlite-store.test.js +63 -0
  116. package/dist/sqlite-store.test.js.map +1 -0
  117. package/dist/workers.d.ts +11 -0
  118. package/dist/workers.d.ts.map +1 -0
  119. package/dist/workers.js +12 -0
  120. package/dist/workers.js.map +1 -0
  121. package/package.json +28 -0
@@ -0,0 +1,483 @@
1
+ #!/usr/bin/env node
2
+ /** seat-mesh inbox daemon — sole pane inject consumer for mesh sessions. */
3
+ import http from "node:http";
4
+ import fs from "node:fs";
5
+ import path from "node:path";
6
+ import { spawnSync } from "node:child_process";
7
+ import { fileURLToPath } from "node:url";
8
+ import { loadProfile, meshRuntimePaths, resolveDaemonPort, resolveUxConfig, } from "@seat-mesh/core";
9
+ import { createRegistryForProfile } from "@seat-mesh/providers";
10
+ import { listMeshMonitorPanes, listMeshWorkers, listMeshMinis, meshSecretaryPane, resolveLiveTmuxSession, saveMeshSession, } from "@seat-mesh/tmux";
11
+ import { createQueueStore } from "./create-queue-store.js";
12
+ import { orchestratorDrainTickAsync, } from "./mesh-orchestrator.js";
13
+ import { repaintMeshPaneBorder } from "./border-paint.js";
14
+ import { clearOcLimitBannerForPane, maybeEndRateLimitEpisode, newConnectivityRecoveryState, pollConnectivityRecovery, } from "./connectivity-recovery.js";
15
+ import { notifyResumeWave, resumeAllOpenCodePanes, } from "./oc-resume.js";
16
+ import { armResumeAckWave, pollResumeAcks } from "./oc-resume-ack.js";
17
+ import { drainPaneOpsOnce, enqueuePaneOp, queueAheadCount, } from "./pane-ops-drain.js";
18
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
19
+ function parseArgs() {
20
+ const out = {};
21
+ const argv = process.argv.slice(2);
22
+ for (let i = 0; i < argv.length; i++) {
23
+ if (argv[i] === "--profile" && argv[i + 1])
24
+ out.profilePath = argv[++i];
25
+ }
26
+ return out;
27
+ }
28
+ function json(res, code, body) {
29
+ res.writeHead(code, { "Content-Type": "application/json" });
30
+ res.end(JSON.stringify(body, null, 2) + "\n");
31
+ }
32
+ function readBody(req) {
33
+ return new Promise((resolve, reject) => {
34
+ const chunks = [];
35
+ req.on("data", (c) => chunks.push(c));
36
+ req.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
37
+ req.on("error", reject);
38
+ });
39
+ }
40
+ async function main() {
41
+ const { profilePath } = parseArgs();
42
+ const loaded = loadProfile(profilePath);
43
+ const profile = loaded.profile;
44
+ const meshLayout = profile.layout;
45
+ if (!meshLayout) {
46
+ console.error("mesh-inbox: profile missing layout");
47
+ process.exit(1);
48
+ }
49
+ const baseWindow = meshLayout.base.window;
50
+ const workersWindow = meshLayout.workers.window;
51
+ const minisWindow = meshLayout.minis.window;
52
+ const session = resolveLiveTmuxSession(loaded);
53
+ const port = resolveDaemonPort(profile, loaded.workspace);
54
+ const pollMs = profile.daemon?.pollMs ?? 4000;
55
+ const autoScrapeMs = profile.state.autoScrapeIntervalMs ?? 600_000;
56
+ let lastAutoScrapeAt = 0;
57
+ const workspace = loaded.workspace;
58
+ const rt = meshRuntimePaths(loaded);
59
+ const stateDir = rt.daemonDir;
60
+ const metaPath = rt.meshInboxMeta;
61
+ const logPath = rt.meshInboxLog;
62
+ fs.mkdirSync(stateDir, { recursive: true });
63
+ function log(line) {
64
+ const row = `${new Date().toISOString()} ${line}\n`;
65
+ fs.appendFileSync(logPath, row);
66
+ }
67
+ const store = createQueueStore(loaded, log);
68
+ const registry = createRegistryForProfile(profile);
69
+ const uxResolved = profile.ux !== undefined ? resolveUxConfig(profile.ux) : null;
70
+ const connectivity = newConnectivityRecoveryState();
71
+ const ocLimited = connectivity.ocLimited;
72
+ let pollBusy = false;
73
+ let paneOpBusy = false;
74
+ let healthSnap = {
75
+ workerPanes: 0,
76
+ miniPanes: 0,
77
+ secretaryPane: null,
78
+ updatedAt: 0,
79
+ };
80
+ /** Cached queue counts — /health must not parse JSONL on every curl (event-loop wedge). */
81
+ let queueSnap = {
82
+ checkbackActive: 0,
83
+ inboxUnresolved: 0,
84
+ peerUnsent: 0,
85
+ paneOpsPending: 0,
86
+ updatedAt: 0,
87
+ };
88
+ function refreshHealthSnap() {
89
+ healthSnap = {
90
+ workerPanes: listMeshWorkers(session, workersWindow).length,
91
+ miniPanes: listMeshMinis(session, minisWindow).length,
92
+ secretaryPane: meshSecretaryPane(session, baseWindow),
93
+ updatedAt: Date.now(),
94
+ };
95
+ }
96
+ function refreshQueueSnap() {
97
+ queueSnap = {
98
+ checkbackActive: store.readCheckbacks().filter((r) => r.status === "active").length,
99
+ inboxUnresolved: store.readInbox().filter((r) => !r.resolved).length,
100
+ peerUnsent: store.readPeer().filter((r) => !r.sent).length,
101
+ paneOpsPending: store.countPaneOpsPending(),
102
+ updatedAt: Date.now(),
103
+ };
104
+ }
105
+ const paneOpsCtx = {
106
+ loaded,
107
+ registry,
108
+ store,
109
+ log,
110
+ isBusy: () => paneOpBusy,
111
+ setBusy: (v) => {
112
+ paneOpBusy = v;
113
+ },
114
+ };
115
+ const orchCtx = {
116
+ loaded,
117
+ registry,
118
+ store,
119
+ session,
120
+ baseWindow,
121
+ workersWindow,
122
+ minisWindow,
123
+ log,
124
+ ocLimitedPaneIds: ocLimited,
125
+ proxyDownActive: connectivity.proxyDownActive,
126
+ paneOps: paneOpsCtx,
127
+ };
128
+ function refreshOrchConnectivity() {
129
+ orchCtx.proxyDownActive = connectivity.proxyDownActive;
130
+ }
131
+ function drainPaneOpsChain() {
132
+ for (let i = 0; i < 12; i++) {
133
+ if (!drainPaneOpsOnce(paneOpsCtx))
134
+ break;
135
+ }
136
+ }
137
+ async function runDrain() {
138
+ await orchestratorDrainTickAsync(orchCtx);
139
+ }
140
+ let drainCoalesce = false;
141
+ function scheduleDrain() {
142
+ runDrainCoalesced();
143
+ }
144
+ /** Without BullMQ, coalesce burst enqueues (room-fanout) so /health stays responsive. */
145
+ function runDrainCoalesced(onDone) {
146
+ if (drainCoalesce) {
147
+ onDone?.();
148
+ return;
149
+ }
150
+ drainCoalesce = true;
151
+ setImmediate(() => {
152
+ void runDrain().finally(() => {
153
+ drainCoalesce = false;
154
+ onDone?.();
155
+ });
156
+ });
157
+ }
158
+ async function enqueueAfterAppend(_kind, _rowId) {
159
+ scheduleDrain();
160
+ }
161
+ function resumeOpenCodePanes(reason = "recovery", meta) {
162
+ const panes = listMeshMonitorPanes(session, baseWindow, workersWindow, minisWindow).map((p) => p.paneId);
163
+ const { sent, total, sentPaneIds } = resumeAllOpenCodePanes(panes, registry, log);
164
+ log(`OC-RESUME wave (${reason}) sent=${sent}/${total}`);
165
+ notifyResumeWave(workspace, reason, sent, total, meta);
166
+ if (sent > 0) {
167
+ armResumeAckWave(sentPaneIds, reason);
168
+ }
169
+ }
170
+ function pollOcLimitsTick() {
171
+ pollConnectivityRecovery({
172
+ loaded,
173
+ registry,
174
+ workspace,
175
+ session,
176
+ baseWindow,
177
+ workersWindow,
178
+ minisWindow,
179
+ state: connectivity,
180
+ log,
181
+ resumeOpenCodePanes,
182
+ });
183
+ }
184
+ const server = http.createServer(async (req, res) => {
185
+ const url = new URL(req.url || "/", `http://127.0.0.1:${port}`);
186
+ try {
187
+ if (req.method === "GET" && url.pathname === "/health") {
188
+ return json(res, 200, {
189
+ ok: true,
190
+ engine: "@seat-mesh/daemon",
191
+ session,
192
+ port,
193
+ pid: process.pid,
194
+ storage: rt.storageBackend,
195
+ workerPanes: healthSnap.workerPanes,
196
+ miniPanes: healthSnap.miniPanes,
197
+ secretaryPane: healthSnap.secretaryPane,
198
+ ocLimitActive: ocLimited.size,
199
+ proxyDownActive: connectivity.proxyDownActive,
200
+ connectivityRecovery: connectivity.recoveryRunning,
201
+ checkbackActive: queueSnap.checkbackActive,
202
+ inboxUnresolved: queueSnap.inboxUnresolved,
203
+ peerUnsent: queueSnap.peerUnsent,
204
+ paneOpsPending: queueSnap.paneOpsPending,
205
+ queueSnapAgeMs: Date.now() - queueSnap.updatedAt,
206
+ paneOpBusy,
207
+ stateDir,
208
+ });
209
+ }
210
+ if (req.method === "GET" && url.pathname === "/pane-ops") {
211
+ const rows = store.readPaneOps().slice(-40);
212
+ return json(res, 200, { ok: true, rows, pending: store.countPaneOpsPending(), paneOpBusy });
213
+ }
214
+ if (req.method === "POST" && url.pathname === "/pane-ops") {
215
+ const raw = await readBody(req);
216
+ const body = JSON.parse(raw || "{}");
217
+ const kind = body.kind;
218
+ if (!kind)
219
+ return json(res, 400, { ok: false, error: "kind required" });
220
+ const ahead = queueAheadCount(store);
221
+ const row = enqueuePaneOp(store, kind, String(body.who ?? "unknown"), String(body.summary ?? kind), body.payload ?? {});
222
+ log(`PANE-OP queued ${row.id.slice(0, 8)} ${kind} who=${row.who} ahead=${ahead}`);
223
+ drainPaneOpsChain();
224
+ const updated = store.readPaneOps().find((r) => r.id === row.id) ?? row;
225
+ return json(res, 200, {
226
+ ok: true,
227
+ entry: updated,
228
+ queueAhead: Math.max(0, ahead),
229
+ });
230
+ }
231
+ if (req.method === "GET" && url.pathname === "/patience") {
232
+ const all = url.searchParams.get("all") === "1";
233
+ let rows = store.readCheckbacks();
234
+ if (!all)
235
+ rows = rows.filter((r) => r.status === "active");
236
+ return json(res, 200, { entries: rows });
237
+ }
238
+ if (req.method === "POST" && url.pathname === "/patience/cancel-all") {
239
+ const n = store.cancelAllCheckbacks();
240
+ log(`checkback cancel-all n=${n}`);
241
+ return json(res, 200, { ok: true, cancelled: n });
242
+ }
243
+ if (req.method === "POST" && url.pathname === "/patience") {
244
+ const raw = await readBody(req);
245
+ const body = JSON.parse(raw || "{}");
246
+ const now = new Date().toISOString();
247
+ if (body.ownerPane && body.expect) {
248
+ store.cancelCheckbacksForPaneExpect(body.ownerPane, body.expect);
249
+ }
250
+ const row = {
251
+ id: String(body.id ?? `cb-${Date.now()}`),
252
+ kind: String(body.kind ?? "checkback"),
253
+ status: "active",
254
+ renewSec: body.renewSec,
255
+ expect: body.expect,
256
+ ownerPane: body.ownerPane,
257
+ expiresAt: body.expiresAt,
258
+ senderLabel: body.senderLabel,
259
+ recipientLabel: body.recipientLabel,
260
+ createdAt: now,
261
+ updatedAt: now,
262
+ };
263
+ store.upsertCheckback(row);
264
+ return json(res, 200, { ok: true, entry: row });
265
+ }
266
+ const cancelMatch = /^\/patience\/([^/]+)\/cancel$/.exec(url.pathname);
267
+ if (req.method === "POST" && cancelMatch) {
268
+ const id = decodeURIComponent(cancelMatch[1]);
269
+ if (id === "cancel-all") {
270
+ const n = store.cancelAllCheckbacks();
271
+ return json(res, 200, { ok: true, cancelled: n });
272
+ }
273
+ store.cancelCheckback(id);
274
+ return json(res, 200, { ok: true, cancelled: id });
275
+ }
276
+ if (req.method === "POST" && url.pathname === "/pane-ops/clear") {
277
+ const n = store.clearPaneOps();
278
+ log(`pane-ops clear n=${n}`);
279
+ return json(res, 200, { ok: true, cleared: n });
280
+ }
281
+ if (req.method === "POST" && url.pathname === "/to-peer") {
282
+ const raw = await readBody(req);
283
+ const body = JSON.parse(raw || "{}");
284
+ const msg = String(body.msg ?? "").trim();
285
+ const targetPane = String(body.targetPane ?? "").trim();
286
+ const kindRaw = String(body.kind ?? "to-slot");
287
+ const kind = kindRaw === "to-mini" ||
288
+ kindRaw === "prompt" ||
289
+ kindRaw === "remind" ||
290
+ kindRaw === "room"
291
+ ? kindRaw
292
+ : "to-slot";
293
+ if (!msg || !targetPane.startsWith("%")) {
294
+ return json(res, 400, { ok: false, error: "msg and targetPane required" });
295
+ }
296
+ const now = new Date().toISOString();
297
+ const row = {
298
+ id: crypto.randomUUID(),
299
+ at: now,
300
+ kind,
301
+ fromSlot: String(body.fromSlot ?? "?"),
302
+ fromPorts: body.fromPorts != null ? String(body.fromPorts) : null,
303
+ roomSlug: body.roomSlug != null ? String(body.roomSlug) : null,
304
+ fromAgent: body.fromAgent != null ? String(body.fromAgent) : null,
305
+ targetPane,
306
+ targetLabel: String(body.targetLabel ?? targetPane),
307
+ msg,
308
+ sent: false,
309
+ };
310
+ store.appendPeer(row);
311
+ log(`TO-PEER ${kind} from=slot-${row.fromSlot} -> ${row.targetLabel}`);
312
+ await enqueueAfterAppend("peer", row.id);
313
+ return json(res, 200, { ok: true, entry: row });
314
+ }
315
+ if (req.method === "POST" && url.pathname === "/room-fanout") {
316
+ const raw = await readBody(req);
317
+ const body = JSON.parse(raw || "{}");
318
+ const defaultMsg = String(body.msg ?? "").trim();
319
+ const exclude = String(body.excludePane ?? "").trim();
320
+ const now = new Date().toISOString();
321
+ const rows = [];
322
+ for (const t of body.targets ?? []) {
323
+ const targetPane = String(t.targetPane ?? "").trim();
324
+ const rowMsg = String(t.msg ?? defaultMsg).trim();
325
+ if (!targetPane.startsWith("%"))
326
+ continue;
327
+ if (!rowMsg)
328
+ continue;
329
+ if (exclude && targetPane === exclude)
330
+ continue;
331
+ rows.push({
332
+ id: crypto.randomUUID(),
333
+ at: now,
334
+ kind: "room",
335
+ fromSlot: String(body.fromSlot ?? "?"),
336
+ fromPorts: body.fromPorts != null ? String(body.fromPorts) : null,
337
+ roomSlug: body.roomSlug != null ? String(body.roomSlug) : null,
338
+ fromAgent: body.fromAgent != null ? String(body.fromAgent) : null,
339
+ targetPane,
340
+ targetLabel: String(t.targetLabel ?? targetPane),
341
+ msg: rowMsg,
342
+ sent: false,
343
+ });
344
+ }
345
+ if (!rows.length) {
346
+ return json(res, 200, { ok: true, enqueued: 0, skipped: (body.targets ?? []).length });
347
+ }
348
+ store.appendPeers(rows);
349
+ log(`ROOM-FANOUT from=${body.fromSlot ?? "?"} targets=${rows.length}`);
350
+ scheduleDrain();
351
+ return json(res, 200, { ok: true, enqueued: rows.length });
352
+ }
353
+ if (req.method === "GET" && url.pathname === "/inbox") {
354
+ const all = url.searchParams.get("all") === "1";
355
+ let rows = store.readInbox();
356
+ if (!all)
357
+ rows = rows.filter((r) => !r.resolved);
358
+ return json(res, 200, { ok: true, entries: rows, count: rows.length });
359
+ }
360
+ if (req.method === "POST" && url.pathname === "/inbox/resolve") {
361
+ const raw = await readBody(req);
362
+ const body = JSON.parse(raw || "{}");
363
+ const result = store.resolveInbox({
364
+ id: body.id != null ? String(body.id) : undefined,
365
+ all: body.all === true,
366
+ });
367
+ log(`INBOX resolve count=${result.resolved} ids=${result.ids.map((i) => i.slice(0, 8)).join(",")}`);
368
+ return json(res, 200, { ok: true, ...result });
369
+ }
370
+ if (req.method === "POST" && url.pathname === "/to-master") {
371
+ const raw = await readBody(req);
372
+ const body = JSON.parse(raw || "{}");
373
+ const msg = String(body.msg ?? body.message ?? "").trim();
374
+ if (!msg)
375
+ return json(res, 400, { ok: false, error: "msg required" });
376
+ const now = new Date().toISOString();
377
+ const row = {
378
+ id: crypto.randomUUID(),
379
+ at: now,
380
+ from: body.from || "worker",
381
+ slot: body.slot != null ? String(body.slot) : null,
382
+ ports: body.ports || null,
383
+ msg,
384
+ sent: false,
385
+ resolved: false,
386
+ read: false,
387
+ };
388
+ store.appendInbox(row);
389
+ log(`TO-MASTER from=${row.from} slot=${row.slot ?? "-"} :: ${msg}`);
390
+ await enqueueAfterAppend("inbox", row.id);
391
+ return json(res, 200, { ok: true, entry: row });
392
+ }
393
+ return json(res, 404, { error: "not found" });
394
+ }
395
+ catch (e) {
396
+ return json(res, 500, { error: e.message });
397
+ }
398
+ });
399
+ server.on("error", (err) => {
400
+ log(`listen error ${err.code ?? "?"} ${err.message}`);
401
+ console.error(`mesh-inbox: listen failed ${err.message}`);
402
+ process.exit(1);
403
+ });
404
+ server.listen(port, "127.0.0.1", () => {
405
+ if (process.env.MESH_INBOX_SUPERVISED !== "1") {
406
+ fs.writeFileSync(metaPath, JSON.stringify({
407
+ pid: process.pid,
408
+ port,
409
+ session,
410
+ storage: rt.storageBackend,
411
+ sqlitePath: rt.sqlitePath,
412
+ startedAt: new Date().toISOString(),
413
+ }, null, 2) + "\n");
414
+ }
415
+ log(`listening :${port} session=${session} storage=${rt.storageBackend}`);
416
+ console.log(`mesh-inbox: listening http://127.0.0.1:${port} session=${session} storage=${rt.storageBackend}`);
417
+ });
418
+ refreshHealthSnap();
419
+ refreshQueueSnap();
420
+ setInterval(() => {
421
+ if (pollBusy)
422
+ return;
423
+ pollBusy = true;
424
+ setImmediate(() => {
425
+ try {
426
+ pollOcLimitsTick();
427
+ pollResumeAcks(registry, workspace, log, (paneId) => {
428
+ if (clearOcLimitBannerForPane(connectivity, paneId)) {
429
+ maybeEndRateLimitEpisode(connectivity);
430
+ repaintMeshPaneBorder(registry, store, paneId, {
431
+ proxyDownActive: connectivity.proxyDownActive,
432
+ ocLimitedPaneIds: connectivity.ocLimited,
433
+ }, false, "", stateDir, uxResolved);
434
+ log(`OC-RESUME ack removed OC-LIMIT banner ${paneId}`);
435
+ if (connectivity.ocLimited.size === 0) {
436
+ const sec = meshSecretaryPane(session, baseWindow);
437
+ if (sec) {
438
+ repaintMeshPaneBorder(registry, store, sec, {
439
+ proxyDownActive: connectivity.proxyDownActive,
440
+ ocLimitedPaneIds: connectivity.ocLimited,
441
+ }, true, "secretary", stateDir, uxResolved);
442
+ }
443
+ }
444
+ }
445
+ });
446
+ refreshOrchConnectivity();
447
+ }
448
+ catch (e) {
449
+ log(`connectivity poll error ${e.message}`);
450
+ }
451
+ runDrainCoalesced(() => {
452
+ try {
453
+ refreshHealthSnap();
454
+ refreshQueueSnap();
455
+ if (autoScrapeMs > 0 &&
456
+ Date.now() - lastAutoScrapeAt >= autoScrapeMs &&
457
+ spawnSync("tmux", ["has-session", "-t", session], { stdio: "ignore" }).status === 0) {
458
+ lastAutoScrapeAt = Date.now();
459
+ saveMeshSession(loaded, registry);
460
+ log("auto-scrape mesh-agents.json");
461
+ }
462
+ }
463
+ catch (e) {
464
+ log(`health snap error ${e.message}`);
465
+ }
466
+ finally {
467
+ pollBusy = false;
468
+ }
469
+ });
470
+ });
471
+ }, pollMs);
472
+ process.on("SIGTERM", () => {
473
+ if ("close" in store && typeof store.close === "function") {
474
+ store.close();
475
+ }
476
+ process.exit(0);
477
+ });
478
+ }
479
+ void main().catch((e) => {
480
+ console.error(`mesh-inbox fatal: ${e.message}`);
481
+ process.exit(1);
482
+ });
483
+ //# sourceMappingURL=mesh-inbox-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-inbox-server.js","sourceRoot":"","sources":["../src/mesh-inbox-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=mesh-inbox-supervisor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-inbox-supervisor.d.ts","sourceRoot":"","sources":["../src/mesh-inbox-supervisor.ts"],"names":[],"mappings":""}