@cello-protocol/daemon 0.0.196 → 0.0.198
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/agent-admin-handlers.d.ts +56 -0
- package/dist/agent-admin-handlers.d.ts.map +1 -0
- package/dist/agent-admin-handlers.js +70 -0
- package/dist/agent-admin-handlers.js.map +1 -0
- package/dist/agent-handlers.d.ts +8 -7
- package/dist/agent-handlers.d.ts.map +1 -1
- package/dist/agent-handlers.js.map +1 -1
- package/dist/agent-selection-root.d.ts +29 -0
- package/dist/agent-selection-root.d.ts.map +1 -0
- package/dist/agent-selection-root.js +126 -0
- package/dist/agent-selection-root.js.map +1 -0
- package/dist/attendance-wiring.d.ts +44 -0
- package/dist/attendance-wiring.d.ts.map +1 -0
- package/dist/attendance-wiring.js +432 -0
- package/dist/attendance-wiring.js.map +1 -0
- package/dist/backup-restore-handlers.d.ts +10 -0
- package/dist/backup-restore-handlers.d.ts.map +1 -0
- package/dist/backup-restore-handlers.js +82 -0
- package/dist/backup-restore-handlers.js.map +1 -0
- package/dist/boot-agents.d.ts +64 -0
- package/dist/boot-agents.d.ts.map +1 -0
- package/dist/boot-agents.js +241 -0
- package/dist/boot-agents.js.map +1 -0
- package/dist/boot-connection-state.d.ts +40 -0
- package/dist/boot-connection-state.d.ts.map +1 -0
- package/dist/boot-connection-state.js +136 -0
- package/dist/boot-connection-state.js.map +1 -0
- package/dist/boot-core.d.ts +36 -0
- package/dist/boot-core.d.ts.map +1 -0
- package/dist/boot-core.js +292 -0
- package/dist/boot-core.js.map +1 -0
- package/dist/boot-parked-content.d.ts +34 -0
- package/dist/boot-parked-content.d.ts.map +1 -0
- package/dist/boot-parked-content.js +527 -0
- package/dist/boot-parked-content.js.map +1 -0
- package/dist/boot-sweeps.d.ts +22 -0
- package/dist/boot-sweeps.d.ts.map +1 -0
- package/dist/boot-sweeps.js +50 -0
- package/dist/boot-sweeps.js.map +1 -0
- package/dist/connection-agents.d.ts +16 -0
- package/dist/connection-agents.d.ts.map +1 -0
- package/dist/connection-agents.js +68 -0
- package/dist/connection-agents.js.map +1 -0
- package/dist/content-park.d.ts.map +1 -1
- package/dist/content-park.js +274 -25
- package/dist/content-park.js.map +1 -1
- package/dist/daemon-handle.d.ts +57 -0
- package/dist/daemon-handle.d.ts.map +1 -0
- package/dist/daemon-handle.js +2 -0
- package/dist/daemon-handle.js.map +1 -0
- package/dist/daemon-status-report.d.ts +40 -0
- package/dist/daemon-status-report.d.ts.map +1 -0
- package/dist/daemon-status-report.js +78 -0
- package/dist/daemon-status-report.js.map +1 -0
- package/dist/daemon.d.ts +5 -66
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +332 -4894
- package/dist/daemon.js.map +1 -1
- package/dist/delivery-open-registry.d.ts +1 -1
- package/dist/delivery-open-registry.js +1 -1
- package/dist/directory-connect.d.ts +27 -0
- package/dist/directory-connect.d.ts.map +1 -0
- package/dist/directory-connect.js +98 -0
- package/dist/directory-connect.js.map +1 -0
- package/dist/disconnect-cleanup.d.ts +45 -0
- package/dist/disconnect-cleanup.d.ts.map +1 -0
- package/dist/disconnect-cleanup.js +65 -0
- package/dist/disconnect-cleanup.js.map +1 -0
- package/dist/document-surface.d.ts +32 -0
- package/dist/document-surface.d.ts.map +1 -0
- package/dist/document-surface.js +150 -0
- package/dist/document-surface.js.map +1 -0
- package/dist/document-wiring.d.ts +53 -0
- package/dist/document-wiring.d.ts.map +1 -0
- package/dist/document-wiring.js +323 -0
- package/dist/document-wiring.js.map +1 -0
- package/dist/held-content.d.ts +7 -3
- package/dist/held-content.d.ts.map +1 -1
- package/dist/held-content.js.map +1 -1
- package/dist/inbound-sessions.d.ts +9 -1
- package/dist/inbound-sessions.d.ts.map +1 -1
- package/dist/inbound-sessions.js +9 -1
- package/dist/inbound-sessions.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/ipc-surface.d.ts +44 -0
- package/dist/ipc-surface.d.ts.map +1 -0
- package/dist/ipc-surface.js +106 -0
- package/dist/ipc-surface.js.map +1 -0
- package/dist/network-directory-node.d.ts +0 -18
- package/dist/network-directory-node.d.ts.map +1 -1
- package/dist/network-directory-node.js +1 -38
- package/dist/network-directory-node.js.map +1 -1
- package/dist/notification-handlers.d.ts.map +1 -1
- package/dist/notification-handlers.js +2 -0
- package/dist/notification-handlers.js.map +1 -1
- package/dist/operator-guidance.d.ts +25 -0
- package/dist/operator-guidance.d.ts.map +1 -0
- package/dist/operator-guidance.js +50 -0
- package/dist/operator-guidance.js.map +1 -0
- package/dist/park-recovery.d.ts +22 -1
- package/dist/park-recovery.d.ts.map +1 -1
- package/dist/park-recovery.js.map +1 -1
- package/dist/park-refusals.d.ts +147 -0
- package/dist/park-refusals.d.ts.map +1 -0
- package/dist/park-refusals.js +331 -0
- package/dist/park-refusals.js.map +1 -0
- package/dist/refusal-notices.d.ts.map +1 -1
- package/dist/refusal-notices.js +22 -2
- package/dist/refusal-notices.js.map +1 -1
- package/dist/refusal-reasons.d.ts +13 -0
- package/dist/refusal-reasons.d.ts.map +1 -1
- package/dist/refusal-reasons.js +19 -0
- package/dist/refusal-reasons.js.map +1 -1
- package/dist/register-handler.d.ts +8 -7
- package/dist/register-handler.d.ts.map +1 -1
- package/dist/register-handler.js.map +1 -1
- package/dist/session-content-context.d.ts +144 -0
- package/dist/session-content-context.d.ts.map +1 -0
- package/dist/session-content-context.js +2 -0
- package/dist/session-content-context.js.map +1 -0
- package/dist/session-content-handlers.d.ts.map +1 -1
- package/dist/session-content-handlers.js +2 -0
- package/dist/session-content-handlers.js.map +1 -1
- package/dist/session-content-ingest.d.ts +209 -0
- package/dist/session-content-ingest.d.ts.map +1 -0
- package/dist/session-content-ingest.js +2216 -0
- package/dist/session-content-ingest.js.map +1 -0
- package/dist/session-content-send.d.ts +184 -0
- package/dist/session-content-send.d.ts.map +1 -0
- package/dist/session-content-send.js +1300 -0
- package/dist/session-content-send.js.map +1 -0
- package/dist/session-lifecycle.d.ts +303 -0
- package/dist/session-lifecycle.d.ts.map +1 -0
- package/dist/session-lifecycle.js +1643 -0
- package/dist/session-lifecycle.js.map +1 -0
- package/dist/session-node-factory.d.ts +18 -0
- package/dist/session-node-factory.d.ts.map +1 -0
- package/dist/session-node-factory.js +182 -0
- package/dist/session-node-factory.js.map +1 -0
- package/dist/session-node-manager.d.ts +68 -766
- package/dist/session-node-manager.d.ts.map +1 -1
- package/dist/session-node-manager.js +966 -7940
- package/dist/session-node-manager.js.map +1 -1
- package/dist/session-node-types.d.ts +30 -0
- package/dist/session-node-types.d.ts.map +1 -1
- package/dist/session-node-types.js.map +1 -1
- package/dist/session-notify.d.ts +46 -0
- package/dist/session-notify.d.ts.map +1 -0
- package/dist/session-notify.js +115 -0
- package/dist/session-notify.js.map +1 -0
- package/dist/session-read-handlers.d.ts.map +1 -1
- package/dist/session-read-handlers.js +0 -1
- package/dist/session-read-handlers.js.map +1 -1
- package/dist/session-relay.d.ts +361 -0
- package/dist/session-relay.d.ts.map +1 -0
- package/dist/session-relay.js +1471 -0
- package/dist/session-relay.js.map +1 -0
- package/dist/session-salt-agreement.d.ts +0 -7
- package/dist/session-salt-agreement.d.ts.map +1 -1
- package/dist/session-salt-agreement.js +0 -7
- package/dist/session-salt-agreement.js.map +1 -1
- package/dist/session-salts.d.ts +13 -0
- package/dist/session-salts.d.ts.map +1 -1
- package/dist/session-salts.js +13 -0
- package/dist/session-salts.js.map +1 -1
- package/dist/session-seal.d.ts +336 -0
- package/dist/session-seal.d.ts.map +1 -0
- package/dist/session-seal.js +948 -0
- package/dist/session-seal.js.map +1 -0
- package/dist/session-views.d.ts +46 -0
- package/dist/session-views.d.ts.map +1 -0
- package/dist/session-views.js +197 -0
- package/dist/session-views.js.map +1 -0
- package/dist/signal-handlers.d.ts +66 -0
- package/dist/signal-handlers.d.ts.map +1 -0
- package/dist/signal-handlers.js +975 -0
- package/dist/signal-handlers.js.map +1 -0
- package/dist/signaling-wiring.d.ts +100 -0
- package/dist/signaling-wiring.d.ts.map +1 -0
- package/dist/signaling-wiring.js +392 -0
- package/dist/signaling-wiring.js.map +1 -0
- package/dist/start-agent.d.ts +64 -0
- package/dist/start-agent.d.ts.map +1 -0
- package/dist/start-agent.js +136 -0
- package/dist/start-agent.js.map +1 -0
- package/dist/status-handler.d.ts +46 -0
- package/dist/status-handler.d.ts.map +1 -0
- package/dist/status-handler.js +58 -0
- package/dist/status-handler.js.map +1 -0
- package/dist/test-handlers.d.ts +62 -0
- package/dist/test-handlers.d.ts.map +1 -0
- package/dist/test-handlers.js +239 -0
- package/dist/test-handlers.js.map +1 -0
- package/dist/types.d.ts +0 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -12
- package/dist/types.js.map +1 -1
- package/dist/unresolved-nodes-report.d.ts +14 -0
- package/dist/unresolved-nodes-report.d.ts.map +1 -0
- package/dist/unresolved-nodes-report.js +96 -0
- package/dist/unresolved-nodes-report.js.map +1 -0
- package/dist/who-resolver.d.ts +15 -0
- package/dist/who-resolver.d.ts.map +1 -0
- package/dist/who-resolver.js +46 -0
- package/dist/who-resolver.js.map +1 -0
- package/dist/wire-content-hash.d.ts +0 -2
- package/dist/wire-content-hash.d.ts.map +1 -1
- package/dist/wire-content-hash.js +0 -4
- package/dist/wire-content-hash.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-seal.js","sourceRoot":"","sources":["../src/session-seal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The views the daemon builds of its own sessions and agents.
|
|
3
|
+
*
|
|
4
|
+
* Which sessions are interrupted and can still be resumed, which are live, whether a given session
|
|
5
|
+
* could be sealed right now, and what state each agent is in. Plus the half-open reaper, which is
|
|
6
|
+
* here rather than with the sweeps because "which sessions are live" and "which sessions are dead
|
|
7
|
+
* but still listed" are the same question asked twice — separating them is how a list starts
|
|
8
|
+
* reporting sessions that no longer exist.
|
|
9
|
+
*
|
|
10
|
+
* ⚠️ THE CONTEXT IS DESIGNED, NOT LIFTED. An attempt to move the whole status cluster — these
|
|
11
|
+
* builders plus `getStatus` — found TWENTY free names, because `getStatus` reads from every part of
|
|
12
|
+
* the daemon by construction. That is the composition root with an extra hop. The builders alone
|
|
13
|
+
* need what is listed below and nothing else; `getStatus` stays in the root, where its breadth is
|
|
14
|
+
* honest, and calls in.
|
|
15
|
+
*/
|
|
16
|
+
import type { ActiveSessionInfo, AgentInfo, AgentState, InterruptedSessionInfo, Logger } from "./types.js";
|
|
17
|
+
import type { SessionNodeManager } from "./session-node-manager.js";
|
|
18
|
+
import type { SignalingManager } from "@cello-protocol/transport";
|
|
19
|
+
import type { SealCompletion } from "./seal-coordinator.js";
|
|
20
|
+
import type { FrontierMismatchStore } from "./frontier-mismatch.js";
|
|
21
|
+
export interface SessionViewsDeps {
|
|
22
|
+
logger: Logger;
|
|
23
|
+
sessionNodeManager: SessionNodeManager;
|
|
24
|
+
/** Live containers, shared by reference: a copy freezes attendance and every agent reads unattended. */
|
|
25
|
+
perConnectionState: ReadonlyMap<string, {
|
|
26
|
+
currentAgent: string | null;
|
|
27
|
+
}>;
|
|
28
|
+
onlineAgents: ReadonlySet<string>;
|
|
29
|
+
explicitlyOfflineAgents: ReadonlySet<string>;
|
|
30
|
+
perAgentSignaling: ReadonlyMap<string, {
|
|
31
|
+
signaling: SignalingManager;
|
|
32
|
+
}>;
|
|
33
|
+
/** Present only on the in-process test path. */
|
|
34
|
+
sharedSignaling: SignalingManager | undefined;
|
|
35
|
+
frontierMismatches: FrontierMismatchStore;
|
|
36
|
+
sealKey: (agentName: string, sessionId: string) => string;
|
|
37
|
+
sealInterruptedInProgress: ReadonlySet<string>;
|
|
38
|
+
pendingSealWaiters: ReadonlyMap<string, (completion: SealCompletion) => void>;
|
|
39
|
+
}
|
|
40
|
+
export declare function createSessionViews(deps: SessionViewsDeps): {
|
|
41
|
+
buildInterruptedSessions: () => InterruptedSessionInfo[];
|
|
42
|
+
reapDeadHalfOpenSessions: (agentName?: string) => void;
|
|
43
|
+
buildActiveSessions: () => ActiveSessionInfo[];
|
|
44
|
+
agentStateFor: (a: AgentInfo) => AgentState;
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=session-views.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-views.d.ts","sourceRoot":"","sources":["../src/session-views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EACV,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,EACzE,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAKpE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,wGAAwG;IACxG,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACzE,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IACxE,gDAAgD;IAChD,eAAe,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C,kBAAkB,EAAE,qBAAqB,CAAC;IAC1C,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,yBAAyB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/C,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAC,CAAC;CAC/E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB;oCAwClB,sBAAsB,EAAE;2CA4Cf,MAAM,KAAG,IAAI;+BAgD3B,iBAAiB,EAAE;uBA8BzB,SAAS,KAAG,UAAU;EAqCjD"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { countAttendance } from "./co-attendance.js";
|
|
2
|
+
import { renderFrontierMismatch } from "./frontier-mismatch.js";
|
|
3
|
+
import { resolveAgentState } from "./agent-state.js";
|
|
4
|
+
export function createSessionViews(deps) {
|
|
5
|
+
const { logger, sessionNodeManager, perConnectionState, onlineAgents, explicitlyOfflineAgents, perAgentSignaling, sharedSignaling, frontierMismatches, sealKey, sealInterruptedInProgress, pendingSealWaiters, } = deps;
|
|
6
|
+
// M7-SESSION-001 AC-006/AC-007 (and M-1 PULL): build the interrupted_sessions
|
|
7
|
+
// array from SQLite. Shared by both getStatus() (daemon-wide) and the
|
|
8
|
+
// cello_status MCP handler (per-connection) so live MCP clients see the same
|
|
9
|
+
// interrupted sessions a CLI `cello status` would.
|
|
10
|
+
// `cello status` is a health snapshot, not a session archive. It surfaces ONLY genuinely
|
|
11
|
+
// RESUMABLE sessions (interrupted with messages exchanged) — never failed inits (interrupted,
|
|
12
|
+
// 0 messages — a dead handshake), which classify as "failed" and would otherwise accumulate
|
|
13
|
+
// unbounded and confuse. The list is also capped; the full, queryable history is `cello sessions`
|
|
14
|
+
// / cello_list_sessions (with filter + limit flags).
|
|
15
|
+
const STATUS_RESUMABLE_CAP = 10;
|
|
16
|
+
/**
|
|
17
|
+
* DOD-M12B-SEAL-STUCK-1 — ask the seal gate for ONE session, and never let the answer take the
|
|
18
|
+
* status response with it.
|
|
19
|
+
*
|
|
20
|
+
* This runs per session on every `cello status` and every `cello_status`, and it touches the
|
|
21
|
+
* database. An unguarded throw here rejects the whole response, after which the CLI finds the
|
|
22
|
+
* singleton lock still held and prints `daemon: "broken_shutdown"` — telling the operator their
|
|
23
|
+
* healthy daemon has failed to stop, over one session row it could not read. There is a
|
|
24
|
+
* documented precedent in this codebase for exactly that shape.
|
|
25
|
+
*
|
|
26
|
+
* A failure yields `unknown`, never `ready`: "we could not check" must not read as "safe to
|
|
27
|
+
* close", because a close on a short chain is terminal.
|
|
28
|
+
*/
|
|
29
|
+
function probeSealReadiness(agentName, sessionId) {
|
|
30
|
+
try {
|
|
31
|
+
return sessionNodeManager.sealReadinessView(agentName, sessionId);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
35
|
+
logger.warn("session.seal.readiness.probe.failed", { agentName, sessionId, error: message });
|
|
36
|
+
return { state: "unknown", reason: `probe_failed: ${message}` };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function buildInterruptedSessions() {
|
|
40
|
+
return sessionNodeManager
|
|
41
|
+
.getSessionsByStatus("interrupted")
|
|
42
|
+
.filter((row) => (row.message_count ?? 0) > 0) // resumable only — drop failed 0-message inits
|
|
43
|
+
.slice(0, STATUS_RESUMABLE_CAP)
|
|
44
|
+
.map((row) => ({
|
|
45
|
+
sessionId: row.session_id,
|
|
46
|
+
agentName: row.agent_name,
|
|
47
|
+
counterpartyPubkey: row.counterparty_pubkey,
|
|
48
|
+
messageCount: row.message_count ?? 0,
|
|
49
|
+
interruptedAt: row.interrupted_at ?? new Date(row.updated_at).toISOString(),
|
|
50
|
+
// DOD-SESSION-NAME-1 (AC-A11): an interrupted session is one you may want to resume or seal
|
|
51
|
+
// — the name is how you tell which one it was.
|
|
52
|
+
sessionName: row.session_name ?? null,
|
|
53
|
+
// DOD-M12B-SEAL-STUCK-1: the same answer the active list carries, for the same reason —
|
|
54
|
+
// an interrupted session can seal, so it can also be blocked from sealing by a gap, and
|
|
55
|
+
// that is knowable here instead of only after a failed close. A plain property, never a
|
|
56
|
+
// spread: a spread bypasses excess-property checking, which is how `frontierMismatch`
|
|
57
|
+
// below came to typecheck while no renderer could read it.
|
|
58
|
+
sealReadiness: probeSealReadiness(row.agent_name, row.session_id),
|
|
59
|
+
// DOD-FRONTIER-STRAND-1 AC3: if a seal exchange has already proved the two sides disagree on
|
|
60
|
+
// how many messages this session holds, SAY SO HERE. Otherwise a stranded session is listed
|
|
61
|
+
// exactly like a healthy paused one, and the only way to learn it can never seal is to
|
|
62
|
+
// attempt another close and read the error — which is how dbb93dfc… sat unnoticed a week.
|
|
63
|
+
...(() => {
|
|
64
|
+
const m = frontierMismatches.get(row.agent_name, row.session_id);
|
|
65
|
+
return m ? { frontierMismatch: renderFrontierMismatch(m, row.session_id) } : {};
|
|
66
|
+
})(),
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
// CC-5/F21: reap dead half-open sessions on READ (compute-on-read, like reapExpiredInboundSessions —
|
|
70
|
+
// no background timer). A session the standing receiver opened from an inbound offer the initiator
|
|
71
|
+
// ABANDONED stays "active" forever (the counterparty never joins), clutters the open/active lists, and
|
|
72
|
+
// its normal close fires an unsealable bilateral seal. Mark such a session terminal ("abandoned") once
|
|
73
|
+
// it is PROVABLY dead: counterparty never established (liveness != "alive" AND 0 RECEIVED messages —
|
|
74
|
+
// message_count alone counts our own auto-"Dispatched." ack, so it is NOT the signal) + age past the
|
|
75
|
+
// grace TTL (a genuinely fresh session still setting up must survive).
|
|
76
|
+
// CC-10 (live 2026-07-08 Phase-2 block): scan 'interrupted' too, not just 'active'. A daemon restart
|
|
77
|
+
// flips dead half-opens to 'interrupted'; those classify as "failed" (invisible in every list) yet
|
|
78
|
+
// still count toward the unknown-sender acceptance bound (D18 deliberately counts 'interrupted') — so
|
|
79
|
+
// a stranger whose first handshakes died was silently locked out FOREVER. Reaping only 0-RECEIVED
|
|
80
|
+
// ghosts keeps D18 intact: the disconnect-evasion attacker's sessions always carry received content.
|
|
81
|
+
const HALF_OPEN_TTL_MS = Number(process.env["CELLO_HALF_OPEN_TTL_MS"]) || 5 * 60 * 1000;
|
|
82
|
+
function reapDeadHalfOpenSessions(agentName) {
|
|
83
|
+
const now = Date.now();
|
|
84
|
+
const candidates = [...sessionNodeManager.getSessionsByStatus("active"), ...sessionNodeManager.getSessionsByStatus("interrupted")];
|
|
85
|
+
for (const row of candidates) {
|
|
86
|
+
if (agentName !== undefined && row.agent_name !== agentName)
|
|
87
|
+
continue;
|
|
88
|
+
if (now - row.created_at <= HALF_OPEN_TTL_MS)
|
|
89
|
+
continue; // too young — may just be setting up
|
|
90
|
+
// DOD-M12B-ACK-1: 'impaired' counts as live HERE. This reaper's question is "did the
|
|
91
|
+
// counterparty ever establish?", and impaired means it did — the connection is up, only
|
|
92
|
+
// delivery on it is failing. Reaping on impaired would abandon exactly the sessions this
|
|
93
|
+
// milestone exists to repair.
|
|
94
|
+
const liveness = sessionNodeManager.getSessionLiveness(row.agent_name, row.session_id);
|
|
95
|
+
if (liveness === "alive" || liveness === "impaired")
|
|
96
|
+
continue; // live
|
|
97
|
+
/**
|
|
98
|
+
* DOD-M12B-REAP-HELD-1 — count HELD frames too, or an interrupted conversation reads as a
|
|
99
|
+
* dead handshake.
|
|
100
|
+
*
|
|
101
|
+
* OBSERVED LIVE 2026-08-18: this line abandoned session `d28db475…` — twenty leaves in the
|
|
102
|
+
* chain plus sixteen verified frames still held, ten of them from the counterparty — while the
|
|
103
|
+
* restart-seal resolver was actively trying to notarize it. The receipt was forfeited and the
|
|
104
|
+
* held content annexed.
|
|
105
|
+
*
|
|
106
|
+
* `countReceivedMessages` asks the TRANSCRIPT, and held content never reaches the transcript;
|
|
107
|
+
* it waits in `held_content` until it can join the chain. So the very condition that holds
|
|
108
|
+
* content — an interrupted session — is the condition that hides the counterparty's messages
|
|
109
|
+
* from this test, and a real conversation becomes indistinguishable from an offer nobody
|
|
110
|
+
* answered. `countEstablishedReceived` asks both places.
|
|
111
|
+
*/
|
|
112
|
+
if (sessionNodeManager.countEstablishedReceived(row.agent_name, row.session_id) > 0)
|
|
113
|
+
continue; // counterparty spoke
|
|
114
|
+
// Non-awaited: abandonSession flips the DB status synchronously (before its first await), so THIS
|
|
115
|
+
// read reflects it; the async node teardown finishes in the background. CC-10 reviewer LOW: only
|
|
116
|
+
// log "reaped" if the status flip actually wrote — a swallowed write failure already logs
|
|
117
|
+
// session.status.write.failed, and reporting success over it would hide a still-counting ghost.
|
|
118
|
+
void sessionNodeManager.abandonSession(row.agent_name, row.session_id)
|
|
119
|
+
.then((flipped) => {
|
|
120
|
+
if (flipped) {
|
|
121
|
+
logger.info("session.half_open.reaped", { agentName: row.agent_name, sessionId: row.session_id, priorStatus: row.status, ageMs: now - row.created_at });
|
|
122
|
+
}
|
|
123
|
+
})
|
|
124
|
+
.catch((err) => {
|
|
125
|
+
logger.warn("session.half_open.reap.failed", { agentName: row.agent_name, sessionId: row.session_id, reason: err instanceof Error ? err.message : String(err) });
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// M8B F16: per-session liveness for ACTIVE sessions, shared by both status surfaces
|
|
130
|
+
// ("status" for the CLI, "cello_status" for MCP). The signal (session.liveness.changed,
|
|
131
|
+
// tracked in the node manager) existed but nothing consumed it — a dead counterparty
|
|
132
|
+
// was invisible to the operator.
|
|
133
|
+
function buildActiveSessions() {
|
|
134
|
+
reapDeadHalfOpenSessions(); // CC-5/F21: drop provably-dead half-open sessions before surfacing active ones
|
|
135
|
+
return sessionNodeManager.getSessionsByStatus("active").map((row) => {
|
|
136
|
+
// DOD-M12B-SEAL-STUCK-1: ask the SAME gate the close path asks, so the surface and the
|
|
137
|
+
// refusal can never disagree. Computed here rather than cached because the answer changes
|
|
138
|
+
// the moment a gap fills, and a stale "stuck" is its own lie.
|
|
139
|
+
return {
|
|
140
|
+
sessionId: row.session_id,
|
|
141
|
+
agentName: row.agent_name,
|
|
142
|
+
counterpartyPubkey: row.counterparty_pubkey,
|
|
143
|
+
liveness: sessionNodeManager.getSessionLiveness(row.agent_name, row.session_id),
|
|
144
|
+
sessionName: row.session_name ?? null, // DOD-SESSION-NAME-1 (AC-A11)
|
|
145
|
+
sealReadiness: probeSealReadiness(row.agent_name, row.session_id),
|
|
146
|
+
// DOD-M12B-CLOSE-SILENT-WAIT-1: both flows, because either can be the one blocking the
|
|
147
|
+
// operator's command — `pendingSealWaiters` is the active close, `sealInterruptedInProgress`
|
|
148
|
+
// the interrupted one.
|
|
149
|
+
sealing: pendingSealWaiters.has(sealKey(row.agent_name, row.session_id)) ||
|
|
150
|
+
sealInterruptedInProgress.has(sealKey(row.agent_name, row.session_id)),
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The state an operator sees, for one agent — used by BOTH status surfaces.
|
|
156
|
+
*
|
|
157
|
+
* Deliberately one function. The daemon-wide status and the per-connection `cello_status` used to
|
|
158
|
+
* compute this separately, and separate copies of a truth claim are how the directory-health block
|
|
159
|
+
* came to exist on one surface and not the other earlier today.
|
|
160
|
+
*/
|
|
161
|
+
function agentStateFor(a) {
|
|
162
|
+
return resolveAgentState({
|
|
163
|
+
loadFailed: a.state === "load_failed",
|
|
164
|
+
// `unregistered` is BUILT and tested (agent-state.ts) and deliberately NOT EMITTED yet.
|
|
165
|
+
//
|
|
166
|
+
// The truthful signal is whether the DKG left a FROST share — registration's durable product,
|
|
167
|
+
// rather than a flag anyone could forget to set. But every test fixture creates an agent
|
|
168
|
+
// WITHOUT one, so switching this on relabels the agents in 29 tests across 8 files, and the
|
|
169
|
+
// alternative — fabricating share material in fixtures — plants fake crypto material that a
|
|
170
|
+
// later reader takes for real. Neither is worth it for a state that lasts the few seconds
|
|
171
|
+
// between `cello create-agent` and `cello register-agent`.
|
|
172
|
+
//
|
|
173
|
+
// So the daemon asserts exactly what it asserted before this change: a loaded agent is treated
|
|
174
|
+
// as registered. That is not a regression, and it is not silent — it is this comment. The VALUE
|
|
175
|
+
// stays in AgentState, so turning it on once fixtures can register for real is a one-line
|
|
176
|
+
// change here and NOT a second wire change for every consumer.
|
|
177
|
+
hasFrostShare: true,
|
|
178
|
+
deliberatelyOffline: explicitlyOfflineAgents.has(a.name),
|
|
179
|
+
started: onlineAgents.has(a.name),
|
|
180
|
+
// This agent's OWN stream where it has one — an agent whose connection is severed while its
|
|
181
|
+
// siblings are fine must not read as healthy.
|
|
182
|
+
//
|
|
183
|
+
// Falls back to the shared manager, mirroring directorySignalingStatus(): production gives
|
|
184
|
+
// every agent its own connection, but the IN-PROCESS TEST path has ONE shared manager (NOT back-compat: Rule F deletes
|
|
185
|
+
// back-compat on sight, and deleting this would break every in-process test in the package) and
|
|
186
|
+
// no per-agent entry at all. Reading only the per-agent map there returns undefined for every
|
|
187
|
+
// agent, so all of them reported `connecting` — which then made isAgentReady false and refused
|
|
188
|
+
// real commands with `selected_agent_offline`. Absent is not the same as disconnected.
|
|
189
|
+
signalingConnected: (perAgentSignaling.get(a.name)?.signaling.status ?? sharedSignaling?.status) === "connected",
|
|
190
|
+
attendance: countAttendance(perConnectionState, a.name),
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
// `probeSealReadiness` is NOT returned: its only caller is `buildInterruptedSessions`, which
|
|
194
|
+
// moved with it. Returning it would make a private helper reachable for no consumer.
|
|
195
|
+
return { buildInterruptedSessions, reapDeadHalfOpenSessions, buildActiveSessions, agentStateFor };
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=session-views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-views.js","sourceRoot":"","sources":["../src/session-views.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { SubmissionOp, ConsortiumManifest } from "@cello-protocol/protocol-types";
|
|
2
|
+
import type { KeyProvider } from "@cello-protocol/crypto";
|
|
3
|
+
import type { SignalingManager } from "@cello-protocol/transport";
|
|
4
|
+
import type { SubmissionRetryQueue } from "./submission-retry.js";
|
|
5
|
+
import type { IpcHandler } from "./ipc-server.js";
|
|
6
|
+
import type { SessionNodeManager } from "./session-node-manager.js";
|
|
7
|
+
import type { Logger } from "./types.js";
|
|
8
|
+
import type { LoadedAgent } from "./agent-loader.js";
|
|
9
|
+
/** The per-connection agent selection, as this surface needs to read it. */
|
|
10
|
+
export interface SignalConnState {
|
|
11
|
+
currentAgent: string | null;
|
|
12
|
+
}
|
|
13
|
+
export interface SignalHandlerDeps {
|
|
14
|
+
handlers: Map<string, IpcHandler>;
|
|
15
|
+
logger: Logger;
|
|
16
|
+
sessionNodeManager: SessionNodeManager;
|
|
17
|
+
/** Signing keys by agent name. A missing entry is a refusal, never a silent skip. */
|
|
18
|
+
keyProviders: Map<string, KeyProvider>;
|
|
19
|
+
/** Read-only: a submission needs its agent ONLINE, and this surface must not change that. */
|
|
20
|
+
onlineAgents: ReadonlySet<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Every agent this daemon has loaded. Needed to answer one question the directory cannot be
|
|
23
|
+
* trusted to answer: is the SUBJECT of this attestation also mine? Two of your own agents
|
|
24
|
+
* vouching for each other is you vouching for yourself.
|
|
25
|
+
*/
|
|
26
|
+
loadedAgents: ReadonlyArray<LoadedAgent>;
|
|
27
|
+
/** Read this connection's agent selection. The READ, not the container. */
|
|
28
|
+
getConnState: (connectionId: string) => SignalConnState | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* ⚠️ NOT a getter — for an agent with no manager this CONSTRUCTS one. The comment at its use
|
|
31
|
+
* site says so and moved with the code; it is repeated here because the name reads like a lookup.
|
|
32
|
+
*/
|
|
33
|
+
getAgentSignaling: (agentName: string, agentKeyProvider: KeyProvider, agentPubkeyHex: string) => {
|
|
34
|
+
signaling: SignalingManager;
|
|
35
|
+
};
|
|
36
|
+
/** A transient connection to a directory that is not this agent's home node. */
|
|
37
|
+
openVisitingConnection: (agentName: string, agentKeyProvider: KeyProvider, agentPubkeyHex: string, endpoint: {
|
|
38
|
+
peerId: string;
|
|
39
|
+
multiaddr: string;
|
|
40
|
+
}, correlationId: string, nodeId: string) => {
|
|
41
|
+
mgr: SignalingManager;
|
|
42
|
+
stop: (reason: string) => Promise<void>;
|
|
43
|
+
};
|
|
44
|
+
/** It returns synchronously and dials in the background; this is what makes it usable. */
|
|
45
|
+
waitForSignalingConnected: (mgr: SignalingManager, timeoutMs: number) => Promise<boolean>;
|
|
46
|
+
/** Every directory in the verified consortium. Null when there is no roster at all. */
|
|
47
|
+
resolveConsortiumRoster: () => Promise<Array<{
|
|
48
|
+
peerId: string;
|
|
49
|
+
multiaddr: string;
|
|
50
|
+
nodeId: string;
|
|
51
|
+
}> | null>;
|
|
52
|
+
/** The verified manifest, for its intake key. Null on every path that verified nothing. */
|
|
53
|
+
verifiedManifest: ConsortiumManifest | null;
|
|
54
|
+
/** Held submissions that could not be sent, retried on a window. */
|
|
55
|
+
submissionRetries: SubmissionRetryQueue;
|
|
56
|
+
/** Record an issued submission against the agent's STABLE id, never its display name. */
|
|
57
|
+
recordIssuedSubmission: (agentName: string, agentId: string, s: {
|
|
58
|
+
submissionId: string;
|
|
59
|
+
subject: string;
|
|
60
|
+
op: SubmissionOp;
|
|
61
|
+
intakeKeyId: string;
|
|
62
|
+
stored: boolean;
|
|
63
|
+
}) => void;
|
|
64
|
+
}
|
|
65
|
+
export declare function registerSignalHandlers(deps: SignalHandlerDeps): void;
|
|
66
|
+
//# sourceMappingURL=signal-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-handlers.d.ts","sourceRoot":"","sources":["../src/signal-handlers.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAqB,YAAY,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAKlE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AASrD,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAAG,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAAE;AAEjE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,qFAAqF;IACrF,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,6FAA6F;IAC7F,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC;;;;OAIG;IACH,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACzC,2EAA2E;IAC3E,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,eAAe,GAAG,SAAS,CAAC;IACpE;;;OAGG;IACH,iBAAiB,EAAE,CACjB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,WAAW,EAC7B,cAAc,EAAE,MAAM,KACnB;QAAE,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;IACrC,gFAAgF;IAChF,sBAAsB,EAAE,CACtB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,WAAW,EAC7B,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAC/C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,KACX;QAAE,GAAG,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACxE,0FAA0F;IAC1F,yBAAyB,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,uFAAuF;IACvF,uBAAuB,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5G,2FAA2F;IAC3F,gBAAgB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC5C,oEAAoE;IACpE,iBAAiB,EAAE,oBAAoB,CAAC;IACxC,yFAAyF;IACzF,sBAAsB,EAAE,CACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,YAAY,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KACjG,IAAI,CAAC;CACX;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CA49BpE"}
|