@seat-mesh/daemon 0.1.26 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/border/border-paint.d.ts +13 -0
- package/dist/border/border-paint.d.ts.map +1 -0
- package/dist/border/border-paint.js +230 -0
- package/dist/border/border-paint.js.map +1 -0
- package/dist/checkback/checkback-fire.d.ts +8 -0
- package/dist/checkback/checkback-fire.d.ts.map +1 -0
- package/dist/checkback/checkback-fire.js +52 -0
- package/dist/checkback/checkback-fire.js.map +1 -0
- package/dist/checkback/checkback-fire.test.d.ts +2 -0
- package/dist/checkback/checkback-fire.test.d.ts.map +1 -0
- package/dist/checkback/checkback-fire.test.js +36 -0
- package/dist/checkback/checkback-fire.test.js.map +1 -0
- package/dist/connectivity/cc-limit-retry.d.ts +11 -0
- package/dist/connectivity/cc-limit-retry.d.ts.map +1 -0
- package/dist/connectivity/cc-limit-retry.js +73 -0
- package/dist/connectivity/cc-limit-retry.js.map +1 -0
- package/dist/connectivity/connectivity-recovery.d.ts +88 -0
- package/dist/connectivity/connectivity-recovery.d.ts.map +1 -0
- package/dist/connectivity/connectivity-recovery.js +529 -0
- package/dist/connectivity/connectivity-recovery.js.map +1 -0
- package/dist/connectivity/connectivity-recovery.test.d.ts +2 -0
- package/dist/connectivity/connectivity-recovery.test.d.ts.map +1 -0
- package/dist/connectivity/connectivity-recovery.test.js +170 -0
- package/dist/connectivity/connectivity-recovery.test.js.map +1 -0
- package/dist/connectivity/oc-resume-ack.d.ts +32 -0
- package/dist/connectivity/oc-resume-ack.d.ts.map +1 -0
- package/dist/connectivity/oc-resume-ack.js +89 -0
- package/dist/connectivity/oc-resume-ack.js.map +1 -0
- package/dist/connectivity/oc-resume-ack.test.d.ts +2 -0
- package/dist/connectivity/oc-resume-ack.test.d.ts.map +1 -0
- package/dist/connectivity/oc-resume-ack.test.js +23 -0
- package/dist/connectivity/oc-resume-ack.test.js.map +1 -0
- package/dist/connectivity/oc-resume.d.ts +25 -0
- package/dist/connectivity/oc-resume.d.ts.map +1 -0
- package/dist/connectivity/oc-resume.js +84 -0
- package/dist/connectivity/oc-resume.js.map +1 -0
- package/dist/inbox/delivery-hold.d.ts +11 -0
- package/dist/inbox/delivery-hold.d.ts.map +1 -0
- package/dist/inbox/delivery-hold.js +34 -0
- package/dist/inbox/delivery-hold.js.map +1 -0
- package/dist/inbox/delivery-hold.test.d.ts +2 -0
- package/dist/inbox/delivery-hold.test.d.ts.map +1 -0
- package/dist/inbox/delivery-hold.test.js +40 -0
- package/dist/inbox/delivery-hold.test.js.map +1 -0
- package/dist/inbox/inbox-overload.d.ts +19 -0
- package/dist/inbox/inbox-overload.d.ts.map +1 -0
- package/dist/inbox/inbox-overload.js +45 -0
- package/dist/inbox/inbox-overload.js.map +1 -0
- package/dist/inbox/inbox-overload.test.d.ts +2 -0
- package/dist/inbox/inbox-overload.test.d.ts.map +1 -0
- package/dist/inbox/inbox-overload.test.js +43 -0
- package/dist/inbox/inbox-overload.test.js.map +1 -0
- package/dist/inbox/pane-ops-drain.d.ts +14 -0
- package/dist/inbox/pane-ops-drain.d.ts.map +1 -0
- package/dist/inbox/pane-ops-drain.js +53 -0
- package/dist/inbox/pane-ops-drain.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/inject/compose-gate.d.ts +23 -0
- package/dist/inject/compose-gate.d.ts.map +1 -0
- package/dist/inject/compose-gate.js +113 -0
- package/dist/inject/compose-gate.js.map +1 -0
- package/dist/inject/compose-gate.test.d.ts +2 -0
- package/dist/inject/compose-gate.test.d.ts.map +1 -0
- package/dist/inject/compose-gate.test.js +35 -0
- package/dist/inject/compose-gate.test.js.map +1 -0
- package/dist/inject/inject-delivery.d.ts +39 -0
- package/dist/inject/inject-delivery.d.ts.map +1 -0
- package/dist/inject/inject-delivery.js +171 -0
- package/dist/inject/inject-delivery.js.map +1 -0
- package/dist/inject/inject-delivery.test.d.ts +2 -0
- package/dist/inject/inject-delivery.test.d.ts.map +1 -0
- package/dist/inject/inject-delivery.test.js +33 -0
- package/dist/inject/inject-delivery.test.js.map +1 -0
- package/dist/jsonl-store.d.ts.map +1 -1
- package/dist/jsonl-store.js +4 -0
- package/dist/jsonl-store.js.map +1 -1
- package/dist/mesh-inbox-server.js +13 -13
- package/dist/mesh-inbox-server.js.map +1 -1
- package/dist/mesh-orchestrator.d.ts.map +1 -1
- package/dist/mesh-orchestrator.js +1 -0
- package/dist/mesh-orchestrator.js.map +1 -1
- package/dist/notify/notify-act-ui.d.ts +7 -0
- package/dist/notify/notify-act-ui.d.ts.map +1 -0
- package/dist/notify/notify-act-ui.js +59 -0
- package/dist/notify/notify-act-ui.js.map +1 -0
- package/dist/notify/notify-act.d.ts +45 -0
- package/dist/notify/notify-act.d.ts.map +1 -0
- package/dist/notify/notify-act.js +133 -0
- package/dist/notify/notify-act.js.map +1 -0
- package/dist/notify/notify-act.test.d.ts +2 -0
- package/dist/notify/notify-act.test.d.ts.map +1 -0
- package/dist/notify/notify-act.test.js +29 -0
- package/dist/notify/notify-act.test.js.map +1 -0
- package/dist/orchestrator/mesh-orchestrator.d.ts +32 -0
- package/dist/orchestrator/mesh-orchestrator.d.ts.map +1 -0
- package/dist/orchestrator/mesh-orchestrator.js +642 -0
- package/dist/orchestrator/mesh-orchestrator.js.map +1 -0
- package/dist/orchestrator/orchestrator.d.ts +17 -0
- package/dist/orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator.js +11 -0
- package/dist/orchestrator/orchestrator.js.map +1 -0
- package/dist/orchestrator/workers.d.ts +11 -0
- package/dist/orchestrator/workers.d.ts.map +1 -0
- package/dist/orchestrator/workers.js +12 -0
- package/dist/orchestrator/workers.js.map +1 -0
- package/dist/peer/peer-backlog.d.ts +18 -0
- package/dist/peer/peer-backlog.d.ts.map +1 -0
- package/dist/peer/peer-backlog.js +288 -0
- package/dist/peer/peer-backlog.js.map +1 -0
- package/dist/peer/peer-backlog.test.d.ts +2 -0
- package/dist/peer/peer-backlog.test.d.ts.map +1 -0
- package/dist/peer/peer-backlog.test.js +38 -0
- package/dist/peer/peer-backlog.test.js.map +1 -0
- package/dist/peer/peer-comms-checkback.d.ts +5 -0
- package/dist/peer/peer-comms-checkback.d.ts.map +1 -0
- package/dist/peer/peer-comms-checkback.js +68 -0
- package/dist/peer/peer-comms-checkback.js.map +1 -0
- package/dist/peer/peer-pending.d.ts +9 -0
- package/dist/peer/peer-pending.d.ts.map +1 -0
- package/dist/peer/peer-pending.js +19 -0
- package/dist/peer/peer-pending.js.map +1 -0
- package/dist/peer/peer-pending.test.d.ts +2 -0
- package/dist/peer/peer-pending.test.d.ts.map +1 -0
- package/dist/peer/peer-pending.test.js +76 -0
- package/dist/peer/peer-pending.test.js.map +1 -0
- package/dist/peer/peer-skip.d.ts +20 -0
- package/dist/peer/peer-skip.d.ts.map +1 -0
- package/dist/peer/peer-skip.js +56 -0
- package/dist/peer/peer-skip.js.map +1 -0
- package/dist/peer/peer-skip.test.d.ts +2 -0
- package/dist/peer/peer-skip.test.d.ts.map +1 -0
- package/dist/peer/peer-skip.test.js +63 -0
- package/dist/peer/peer-skip.test.js.map +1 -0
- package/dist/peer/peer-target-resolve.d.ts +8 -0
- package/dist/peer/peer-target-resolve.d.ts.map +1 -0
- package/dist/peer/peer-target-resolve.js +13 -0
- package/dist/peer/peer-target-resolve.js.map +1 -0
- package/dist/peer-backlog.d.ts.map +1 -1
- package/dist/peer-backlog.js +25 -0
- package/dist/peer-backlog.js.map +1 -1
- package/dist/peer-pending.test.js +17 -0
- package/dist/peer-pending.test.js.map +1 -1
- package/dist/queue/bullmq-runtime.d.ts +19 -0
- package/dist/queue/bullmq-runtime.d.ts.map +1 -0
- package/dist/queue/bullmq-runtime.js +78 -0
- package/dist/queue/bullmq-runtime.js.map +1 -0
- package/dist/state/ppa-state.d.ts +32 -0
- package/dist/state/ppa-state.d.ts.map +1 -0
- package/dist/state/ppa-state.js +63 -0
- package/dist/state/ppa-state.js.map +1 -0
- package/dist/store/create-queue-store.d.ts +8 -0
- package/dist/store/create-queue-store.d.ts.map +1 -0
- package/dist/store/create-queue-store.js +19 -0
- package/dist/store/create-queue-store.js.map +1 -0
- package/dist/store/jsonl-dedupe.test.d.ts +2 -0
- package/dist/store/jsonl-dedupe.test.d.ts.map +1 -0
- package/dist/store/jsonl-dedupe.test.js +62 -0
- package/dist/store/jsonl-dedupe.test.js.map +1 -0
- package/dist/store/jsonl-store.checkback.test.d.ts +2 -0
- package/dist/store/jsonl-store.checkback.test.d.ts.map +1 -0
- package/dist/store/jsonl-store.checkback.test.js +55 -0
- package/dist/store/jsonl-store.checkback.test.js.map +1 -0
- package/dist/store/jsonl-store.d.ts +129 -0
- package/dist/store/jsonl-store.d.ts.map +1 -0
- package/dist/store/jsonl-store.js +316 -0
- package/dist/store/jsonl-store.js.map +1 -0
- package/dist/store/sqlite-store.d.ts +52 -0
- package/dist/store/sqlite-store.d.ts.map +1 -0
- package/dist/store/sqlite-store.js +456 -0
- package/dist/store/sqlite-store.js.map +1 -0
- package/dist/store/sqlite-store.test.d.ts +2 -0
- package/dist/store/sqlite-store.test.d.ts.map +1 -0
- package/dist/store/sqlite-store.test.js +76 -0
- package/dist/store/sqlite-store.test.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-act.d.ts","sourceRoot":"","sources":["../../src/notify/notify-act.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,aAAa,EACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,KAAK,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACzF,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtG,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED,wBAAgB,uBAAuB;wBAW1B,uBAAuB,EAAE,UAC1B,MAAM,WACL,MAAM,KACd,aAAa,EAAE;kBAuBG,MAAM,KAAG,iBAAiB,GAAG,IAAI;wBAlC7B,IAAI;EA4C9B;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE3E,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAkE3C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,MAAM,CAY5E"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { resolvePaneTarget } from "@seat-mesh/tmux";
|
|
2
|
+
export function createNotifyActRegistry() {
|
|
3
|
+
const tokens = new Map();
|
|
4
|
+
function pruneExpired() {
|
|
5
|
+
const now = Date.now();
|
|
6
|
+
for (const [id, row] of tokens) {
|
|
7
|
+
if (row.expiresAt <= now || row.used)
|
|
8
|
+
tokens.delete(id);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function register(actions, ttlSec, baseUrl) {
|
|
12
|
+
pruneExpired();
|
|
13
|
+
const ttl = Math.min(Math.max(ttlSec, 60), 86_400);
|
|
14
|
+
const base = baseUrl.replace(/\/$/, "");
|
|
15
|
+
const links = [];
|
|
16
|
+
const expiresAt = Date.now() + ttl * 1000;
|
|
17
|
+
for (const a of actions) {
|
|
18
|
+
const label = String(a.label ?? "").trim();
|
|
19
|
+
if (!label)
|
|
20
|
+
continue;
|
|
21
|
+
const token = crypto.randomUUID();
|
|
22
|
+
tokens.set(token, {
|
|
23
|
+
token,
|
|
24
|
+
label,
|
|
25
|
+
type: a.type,
|
|
26
|
+
params: a.params ?? {},
|
|
27
|
+
expiresAt,
|
|
28
|
+
used: false,
|
|
29
|
+
});
|
|
30
|
+
links.push({ label, token, url: `${base}/act/v1/${token}` });
|
|
31
|
+
}
|
|
32
|
+
return links;
|
|
33
|
+
}
|
|
34
|
+
function take(token) {
|
|
35
|
+
pruneExpired();
|
|
36
|
+
const row = tokens.get(token);
|
|
37
|
+
if (!row || row.used || row.expiresAt <= Date.now())
|
|
38
|
+
return null;
|
|
39
|
+
row.used = true;
|
|
40
|
+
tokens.delete(token);
|
|
41
|
+
return row;
|
|
42
|
+
}
|
|
43
|
+
return { register, take, pruneExpired };
|
|
44
|
+
}
|
|
45
|
+
export async function executeNotifyAct(row, ctx) {
|
|
46
|
+
switch (row.type) {
|
|
47
|
+
case "ping":
|
|
48
|
+
ctx.log(`NOTIFY-ACT ping label=${row.label}`);
|
|
49
|
+
return { ok: true, summary: "Recorded (no mesh mutation)." };
|
|
50
|
+
case "inbox-resolve": {
|
|
51
|
+
const id = row.params.id != null ? String(row.params.id) : undefined;
|
|
52
|
+
const all = row.params.all === true;
|
|
53
|
+
const result = ctx.store.resolveInbox({ id, all });
|
|
54
|
+
ctx.log(`NOTIFY-ACT inbox-resolve count=${result.resolved}`);
|
|
55
|
+
return {
|
|
56
|
+
ok: true,
|
|
57
|
+
summary: `Resolved ${result.resolved} inbox row(s).`,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
case "checkback-ack": {
|
|
61
|
+
const id = String(row.params.id ?? "").trim();
|
|
62
|
+
if (!id)
|
|
63
|
+
return { ok: false, summary: "Missing checkback id." };
|
|
64
|
+
const yes = row.params.yes === true ||
|
|
65
|
+
row.params.yes === "true" ||
|
|
66
|
+
String(row.params.answer ?? "").toLowerCase() === "yes";
|
|
67
|
+
const result = ctx.store.ackCheckback(id, yes);
|
|
68
|
+
if (!result.ok)
|
|
69
|
+
return { ok: false, summary: result.error ?? "Ack failed." };
|
|
70
|
+
ctx.log(`NOTIFY-ACT checkback-ack id=${result.id} action=${result.action}`);
|
|
71
|
+
return { ok: true, summary: `Checkback ${result.action}.` };
|
|
72
|
+
}
|
|
73
|
+
case "peer": {
|
|
74
|
+
const target = String(row.params.target ?? "manager").trim();
|
|
75
|
+
const msg = String(row.params.msg ?? "").trim();
|
|
76
|
+
if (!msg)
|
|
77
|
+
return { ok: false, summary: "Empty peer message." };
|
|
78
|
+
const resolved = resolvePaneTarget(target, ctx.loaded);
|
|
79
|
+
if ("error" in resolved) {
|
|
80
|
+
return { ok: false, summary: resolved.error };
|
|
81
|
+
}
|
|
82
|
+
const kindRaw = String(row.params.kind ?? "prompt");
|
|
83
|
+
const kind = kindRaw === "to-mini" ||
|
|
84
|
+
kindRaw === "to-slot" ||
|
|
85
|
+
kindRaw === "remind" ||
|
|
86
|
+
kindRaw === "room"
|
|
87
|
+
? kindRaw
|
|
88
|
+
: "prompt";
|
|
89
|
+
const now = new Date().toISOString();
|
|
90
|
+
const peer = {
|
|
91
|
+
id: crypto.randomUUID(),
|
|
92
|
+
at: now,
|
|
93
|
+
kind,
|
|
94
|
+
fromSlot: "notify-act",
|
|
95
|
+
fromPorts: null,
|
|
96
|
+
targetPane: resolved.paneId,
|
|
97
|
+
targetLabel: resolved.row.slot || target,
|
|
98
|
+
msg,
|
|
99
|
+
sent: false,
|
|
100
|
+
};
|
|
101
|
+
ctx.store.appendPeer(peer);
|
|
102
|
+
ctx.log(`NOTIFY-ACT peer -> ${peer.targetLabel} :: ${msg.slice(0, 80)}`);
|
|
103
|
+
await ctx.onPeerEnqueued(peer);
|
|
104
|
+
return {
|
|
105
|
+
ok: true,
|
|
106
|
+
summary: `Queued peer to ${peer.targetLabel} (${target}): ${msg.slice(0, 120)}`,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
default:
|
|
110
|
+
return { ok: false, summary: `Unknown action type.` };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export function htmlActPage(title, body, ok) {
|
|
114
|
+
const safeTitle = escapeHtml(title);
|
|
115
|
+
const safeBody = escapeHtml(body);
|
|
116
|
+
const color = ok ? "#2e7d32" : "#c62828";
|
|
117
|
+
return `<!DOCTYPE html>
|
|
118
|
+
<html lang="en"><head><meta charset="utf-8"><title>${safeTitle}</title>
|
|
119
|
+
<style>body{font-family:system-ui,sans-serif;margin:2rem;max-width:40rem;line-height:1.45}
|
|
120
|
+
h1{color:${color};font-size:1.25rem}a.btn{display:inline-block;margin-top:1rem;padding:.5rem 1rem;
|
|
121
|
+
background:#1565c0;color:#fff;border-radius:6px;text-decoration:none;font-weight:600}</style>
|
|
122
|
+
</head><body><h1>${safeTitle}</h1><p>${safeBody}</p>
|
|
123
|
+
<a class="btn" href="/ui">Back to mesh UI</a>
|
|
124
|
+
<p><small>seatmesh notify-act · one-shot</small></p></body></html>`;
|
|
125
|
+
}
|
|
126
|
+
function escapeHtml(s) {
|
|
127
|
+
return s
|
|
128
|
+
.replace(/&/g, "&")
|
|
129
|
+
.replace(/</g, "<")
|
|
130
|
+
.replace(/>/g, ">")
|
|
131
|
+
.replace(/"/g, """);
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=notify-act.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-act.js","sourceRoot":"","sources":["../../src/notify/notify-act.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-act.test.d.ts","sourceRoot":"","sources":["../../src/notify/notify-act.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { createNotifyActRegistry, executeNotifyAct } from "./notify-act.js";
|
|
3
|
+
import { JsonlStore } from "../store/jsonl-store.js";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import os from "node:os";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
describe("notify-act registry", () => {
|
|
8
|
+
it("register returns one-shot URLs and take consumes token", async () => {
|
|
9
|
+
const reg = createNotifyActRegistry();
|
|
10
|
+
const links = reg.register([{ label: "Ping", type: "ping", params: {} }], 300, "http://127.0.0.1:31670");
|
|
11
|
+
expect(links).toHaveLength(1);
|
|
12
|
+
expect(links[0].url).toContain("/act/v1/");
|
|
13
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "notify-act-"));
|
|
14
|
+
const store = new JsonlStore(dir);
|
|
15
|
+
const logs = [];
|
|
16
|
+
const row = reg.take(links[0].token);
|
|
17
|
+
expect(row).not.toBeNull();
|
|
18
|
+
expect(reg.take(links[0].token)).toBeNull();
|
|
19
|
+
const result = await executeNotifyAct(row, {
|
|
20
|
+
loaded: { workspace: dir, profileDir: dir, profilePath: dir, profile: {} },
|
|
21
|
+
store,
|
|
22
|
+
log: (l) => logs.push(l),
|
|
23
|
+
onPeerEnqueued: async () => { },
|
|
24
|
+
});
|
|
25
|
+
expect(result.ok).toBe(true);
|
|
26
|
+
expect(logs.some((l) => l.includes("NOTIFY-ACT ping"))).toBe(true);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=notify-act.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-act.test.js","sourceRoot":"","sources":["../../src/notify/notify-act.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CACxB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAC7C,GAAG,EACH,wBAAwB,CACzB,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE5C,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAI,EAAE;YAC1C,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAW;YACnF,KAAK;YACL,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxB,cAAc,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SAC/B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { LoadedProfile, ProviderRegistry } from "@seat-mesh/core";
|
|
2
|
+
import type { ToMasterRow } from "../store/create-queue-store.js";
|
|
3
|
+
import type { QueueStore } from "../store/create-queue-store.js";
|
|
4
|
+
import { type PaneOpsDrainCtx } from "../inbox/pane-ops-drain.js";
|
|
5
|
+
export interface MeshOrchestratorCtx {
|
|
6
|
+
loaded: LoadedProfile;
|
|
7
|
+
registry: ProviderRegistry;
|
|
8
|
+
store: QueueStore;
|
|
9
|
+
session: string;
|
|
10
|
+
baseWindow: string;
|
|
11
|
+
workersWindow: string;
|
|
12
|
+
minisWindow: string;
|
|
13
|
+
log: (line: string) => void;
|
|
14
|
+
ocLimitedPaneIds: Set<string>;
|
|
15
|
+
proxyDownActive?: boolean;
|
|
16
|
+
paneOps?: PaneOpsDrainCtx;
|
|
17
|
+
}
|
|
18
|
+
export interface DrainTickResult {
|
|
19
|
+
attempted: number;
|
|
20
|
+
delivered: number;
|
|
21
|
+
held: number;
|
|
22
|
+
}
|
|
23
|
+
/** ACK-class worker mail -> secretary first (harness parity); substance -> manager. */
|
|
24
|
+
export declare function isAckClassInbox(row: ToMasterRow): boolean;
|
|
25
|
+
/** Harness parity: secretary ACK lane + manager substance lane each poll tick. */
|
|
26
|
+
export declare function drainInboxOnce(ctx: MeshOrchestratorCtx): DrainTickResult;
|
|
27
|
+
export declare function drainPeerOnce(ctx: MeshOrchestratorCtx): DrainTickResult;
|
|
28
|
+
export declare function fireDueCheckbacks(ctx: MeshOrchestratorCtx): void;
|
|
29
|
+
export declare function orchestratorDrainTick(ctx: MeshOrchestratorCtx): DrainTickResult;
|
|
30
|
+
/** Yield between heavy steps so daemon /health can answer during drain. */
|
|
31
|
+
export declare function orchestratorDrainTickAsync(ctx: MeshOrchestratorCtx): Promise<DrainTickResult>;
|
|
32
|
+
//# sourceMappingURL=mesh-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/mesh-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAqCvE,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAehF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AA0BpF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAwCD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAGzD;AAiDD,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,GAAG,EAAE,mBAAmB,GAAG,eAAe,CAQxE;AAkBD,wBAAgB,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,eAAe,CA0KvE;AAkFD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAwRhE;AAMD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,mBAAmB,GAAG,eAAe,CAwB/E;AAED,2EAA2E;AAC3E,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CA4BnG"}
|