instar 1.3.404 → 1.3.406
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +25 -8
- package/dist/commands/server.js.map +1 -1
- package/dist/monitoring/SessionReaper.d.ts.map +1 -1
- package/dist/monitoring/SessionReaper.js +7 -2
- package/dist/monitoring/SessionReaper.js.map +1 -1
- package/dist/monitoring/frameworkActivitySignals.d.ts +15 -0
- package/dist/monitoring/frameworkActivitySignals.d.ts.map +1 -1
- package/dist/monitoring/frameworkActivitySignals.js +18 -1
- package/dist/monitoring/frameworkActivitySignals.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.405.md +44 -0
- package/upgrades/1.3.406.md +25 -0
- package/upgrades/side-effects/pool-stream-connector-observability.md +53 -0
- package/upgrades/side-effects/reaper-live-activity-idle.md +46 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAQ3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiG7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA6JtD,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA05BD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,GAC/F,IAAI,CAyUN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAQ3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiG7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA6JtD,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA05BD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,GAC/F,IAAI,CAyUN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAohUtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
|
package/dist/commands/server.js
CHANGED
|
@@ -10281,11 +10281,14 @@ export async function startServer(options) {
|
|
|
10281
10281
|
// the ticket is bound to that sender and consumed once on upgrade.
|
|
10282
10282
|
'pool-stream-ticket': (cmd, sender) => {
|
|
10283
10283
|
const c = cmd;
|
|
10284
|
-
if (!_streamTicketStore)
|
|
10284
|
+
if (!_streamTicketStore) {
|
|
10285
|
+
console.log(pc.dim(` [pool-stream-ticket] mint request from ${sender} REFUSED: store disabled`));
|
|
10285
10286
|
return { ok: false, reason: 'pool-stream disabled' };
|
|
10287
|
+
}
|
|
10286
10288
|
if (!c.session || typeof c.session !== 'string')
|
|
10287
10289
|
return { ok: false, reason: 'session required' };
|
|
10288
10290
|
const minted = _streamTicketStore.mint(sender);
|
|
10291
|
+
console.log(pc.dim(` [pool-stream-ticket] minted ticket for ${sender}`));
|
|
10289
10292
|
return { ok: true, ticket: minted.ticket, expiresAtMs: minted.expiresAtMs };
|
|
10290
10293
|
},
|
|
10291
10294
|
// COHERENCE-JOURNAL-SPEC §3.4 — always-registered journal-sync verb
|
|
@@ -10406,37 +10409,51 @@ export async function startServer(options) {
|
|
|
10406
10409
|
// bounded reconnect → machine-unreachable).
|
|
10407
10410
|
{
|
|
10408
10411
|
const { WebSocket: WsClient } = await import('ws');
|
|
10412
|
+
const psLog = (m) => console.log(pc.dim(` [pool-stream-connector] ${m}`));
|
|
10409
10413
|
_poolStreamConnector = {
|
|
10410
10414
|
connect: (machineId, handlers) => {
|
|
10411
10415
|
const httpUrl = peerUrl(machineId);
|
|
10412
|
-
if (!httpUrl)
|
|
10416
|
+
if (!httpUrl) {
|
|
10417
|
+
psLog(`connect ${machineId}: no peer url → unreachable`);
|
|
10413
10418
|
return null;
|
|
10419
|
+
}
|
|
10414
10420
|
let ws = null;
|
|
10415
10421
|
let open = false;
|
|
10416
10422
|
let closed = false;
|
|
10417
10423
|
const pending = [];
|
|
10418
10424
|
(async () => {
|
|
10419
10425
|
try {
|
|
10420
|
-
|
|
10426
|
+
psLog(`minting ticket from ${machineId} (${httpUrl})`);
|
|
10427
|
+
// EXPLICIT 10s timeout (live-verify finding 2026-06-07): without
|
|
10428
|
+
// it a wedged mint hung indefinitely — the stream never opened
|
|
10429
|
+
// AND never errored (the connector's onClose never fired), so the
|
|
10430
|
+
// dashboard sat silent forever. A bounded send fails honestly →
|
|
10431
|
+
// onClose → the proxy surfaces peer-stream-lost / unreachable.
|
|
10432
|
+
const r = await meshClient.send({ machineId, url: httpUrl }, { type: 'pool-stream-ticket', session: '*' }, 0, { timeoutMs: 10_000 });
|
|
10421
10433
|
const ticket = r.ok && r.result && typeof r.result === 'object' ? r.result.ticket : undefined;
|
|
10422
|
-
if (!ticket
|
|
10434
|
+
if (!ticket) {
|
|
10435
|
+
psLog(`mint failed for ${machineId}: ok=${r.ok} status=${r.status} reason=${r.reason ?? ''} hasTicket=${!!ticket}`);
|
|
10423
10436
|
if (!closed)
|
|
10424
10437
|
handlers.onClose();
|
|
10425
10438
|
return;
|
|
10426
10439
|
}
|
|
10440
|
+
if (closed)
|
|
10441
|
+
return;
|
|
10427
10442
|
const wsUrl = httpUrl.replace(/^http/, 'ws').replace(/\/$/, '') + `/pool-stream?ticket=${encodeURIComponent(ticket)}`;
|
|
10443
|
+
psLog(`ticket ok; opening upstream ws to ${machineId}`);
|
|
10428
10444
|
ws = new WsClient(wsUrl);
|
|
10429
|
-
ws.on('open', () => { open = true; for (const m of pending)
|
|
10445
|
+
ws.on('open', () => { open = true; psLog(`upstream OPEN to ${machineId}`); for (const m of pending)
|
|
10430
10446
|
ws.send(m); pending.length = 0; handlers.onOpen(); });
|
|
10431
10447
|
ws.on('message', (d) => { try {
|
|
10432
10448
|
handlers.onFrame(JSON.parse(String(d)));
|
|
10433
10449
|
}
|
|
10434
10450
|
catch { /* @silent-fallback-ok: a non-JSON peer frame is dropped; the stream protocol is JSON-only (§2.2) */ } });
|
|
10435
|
-
ws.on('close', () => handlers.onClose());
|
|
10436
|
-
ws.on('error', () => { if (!open)
|
|
10451
|
+
ws.on('close', (code) => { psLog(`upstream CLOSE from ${machineId} (code ${code}, wasOpen ${open})`); handlers.onClose(); });
|
|
10452
|
+
ws.on('error', (e) => { psLog(`upstream ERROR to ${machineId}: ${e?.message ?? e}`); if (!open)
|
|
10437
10453
|
handlers.onClose(); });
|
|
10438
10454
|
}
|
|
10439
|
-
catch {
|
|
10455
|
+
catch (e) {
|
|
10456
|
+
psLog(`connect to ${machineId} threw: ${e?.message ?? e}`);
|
|
10440
10457
|
if (!closed)
|
|
10441
10458
|
handlers.onClose();
|
|
10442
10459
|
}
|