@cello-protocol/daemon 0.0.104 → 0.0.106
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/consortium-bootstrap.d.ts +10 -1
- package/dist/consortium-bootstrap.d.ts.map +1 -1
- package/dist/consortium-bootstrap.js +16 -2
- package/dist/consortium-bootstrap.js.map +1 -1
- package/dist/daemon.js +58 -2
- package/dist/daemon.js.map +1 -1
- package/dist/directory-bootstrap.d.ts +16 -0
- package/dist/directory-bootstrap.d.ts.map +1 -1
- package/dist/directory-bootstrap.js +6 -0
- package/dist/directory-bootstrap.js.map +1 -1
- package/dist/inbound-sessions.d.ts +59 -0
- package/dist/inbound-sessions.d.ts.map +1 -1
- package/dist/inbound-sessions.js +145 -74
- package/dist/inbound-sessions.js.map +1 -1
- package/dist/session-relay-client.d.ts.map +1 -1
- package/dist/session-relay-client.js +108 -1
- package/dist/session-relay-client.js.map +1 -1
- package/package.json +2 -2
|
@@ -4,6 +4,8 @@ import type { IpcHandler } from "./ipc-server.js";
|
|
|
4
4
|
import type { SessionNodeManager } from "./session-node-manager.js";
|
|
5
5
|
import type { AgentInfo, Logger } from "./types.js";
|
|
6
6
|
import type { ConnState } from "./contact-handlers.js";
|
|
7
|
+
import type { RelayConnectParams } from "./session-node-manager.js";
|
|
8
|
+
import type { RelayAssignmentCarry } from "./session-relay-client.js";
|
|
7
9
|
/** How long an un-accepted inbound session request stays claimable. */
|
|
8
10
|
export declare const INBOUND_SESSION_TTL_MS: number;
|
|
9
11
|
/** A session request that expired before anyone claimed it. Surfaced by the push-loss reconciler. */
|
|
@@ -129,6 +131,63 @@ presentedThisSession?: ReadonlySet<string>): {
|
|
|
129
131
|
claim: unknown;
|
|
130
132
|
}>;
|
|
131
133
|
} | undefined;
|
|
134
|
+
/**
|
|
135
|
+
* DOD-FIRSTMSG-WITNESS-1: build the RESPONDER's `RelayAssignmentCarry` from a parsed inbound
|
|
136
|
+
* assignment, so it can present `client_record_assignment` and create its own relay session state.
|
|
137
|
+
*
|
|
138
|
+
* Before this the responder carried no assignment at all: `#doRecord` no-opped (returning TRUE —
|
|
139
|
+
* "nothing to present"), `#doSubmit` submitted blind, and the relay answered `session_not_found`
|
|
140
|
+
* unless the initiator's record had already landed. Same-machine loses that race because local
|
|
141
|
+
* delivery is instant while the initiator's record is a round trip.
|
|
142
|
+
*
|
|
143
|
+
* Mirrors `buildRelayConnectParams` (daemon.ts) on the initiator side. Returns undefined when the
|
|
144
|
+
* directory issued no signature, leaving direct/legacy sessions exactly as they were.
|
|
145
|
+
*
|
|
146
|
+
* The field mapping is load-bearing: the relay rebuilds the signed TBS from these values, so a
|
|
147
|
+
* swapped participant or a dropped peer id yields an assignment it rejects as FORGED — which sets
|
|
148
|
+
* `recordRejected` terminally and leaves the session permanently unwitnessed. That is a worse
|
|
149
|
+
* failure than the one this closes, which is why it is extracted and tested directly.
|
|
150
|
+
*/
|
|
151
|
+
/**
|
|
152
|
+
* M7 DOD-SPINE-6 / MSG-001-3b + DOD-FIRSTMSG-WITNESS-1: the responder's relay-witness params.
|
|
153
|
+
*
|
|
154
|
+
* Extracted from `acceptInboundAssignment` so the whole object handed to `acceptSession` — not just
|
|
155
|
+
* its parts — is directly assertable. The `assignment` field is the fix: without it the responder
|
|
156
|
+
* can never present `client_record_assignment`.
|
|
157
|
+
*
|
|
158
|
+
* Returns undefined when this agent has no key or the assignment carries no relay endpoint — the
|
|
159
|
+
* session then runs on the direct content path with no relay witness (degraded, never blocked).
|
|
160
|
+
*/
|
|
161
|
+
export declare function buildResponderRelayParams(parsed: NonNullable<ReturnType<typeof extractInboundSessionAssignment>>, kp: KeyProvider | undefined, logger: Logger, agentName: string): Promise<RelayConnectParams | undefined>;
|
|
162
|
+
export declare function buildResponderRelayAssignment(parsed: {
|
|
163
|
+
participantAPubkeyHex: string;
|
|
164
|
+
participantBPubkeyHex: string;
|
|
165
|
+
sessionTimestamp: number;
|
|
166
|
+
initiatorPeerId: string;
|
|
167
|
+
counterpartySessionPeerId: string | null;
|
|
168
|
+
relayDirectorySignature: Uint8Array | undefined;
|
|
169
|
+
}): RelayAssignmentCarry | undefined;
|
|
170
|
+
export declare function extractInboundSessionAssignment(frame: Record<string, unknown>): {
|
|
171
|
+
sessionIdHex: string;
|
|
172
|
+
participantAPubkeyHex: string;
|
|
173
|
+
participantBPubkeyHex: string;
|
|
174
|
+
initiatorPeerId: string;
|
|
175
|
+
counterpartySessionPeerId: string | null;
|
|
176
|
+
sessionTimestamp: number;
|
|
177
|
+
signatureType: string | null;
|
|
178
|
+
signerPubkeyHex: string | null;
|
|
179
|
+
relayPeerId: string;
|
|
180
|
+
relayAddrs: string[];
|
|
181
|
+
relayDirectorySignature: Uint8Array | undefined;
|
|
182
|
+
relayDirectorySignatureMalformed: boolean;
|
|
183
|
+
offeredMoniker: string | null;
|
|
184
|
+
monikerRejected: boolean;
|
|
185
|
+
monikerRejectReason: "not_string" | "length" | "charset" | null;
|
|
186
|
+
trustSignals: Array<{
|
|
187
|
+
hash: string;
|
|
188
|
+
blob: Uint8Array;
|
|
189
|
+
}> | undefined;
|
|
190
|
+
} | null;
|
|
132
191
|
export declare function createInboundSessions(deps: InboundSessionDeps): {
|
|
133
192
|
registerHandlers: (handlers: Map<string, IpcHandler>) => void;
|
|
134
193
|
wirePerAgentSessionInbound: (mgr: SignalingManager) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound-sessions.d.ts","sourceRoot":"","sources":["../src/inbound-sessions.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAiB,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"inbound-sessions.d.ts","sourceRoot":"","sources":["../src/inbound-sessions.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAiB,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,uEAAuE;AACvE,eAAO,MAAM,sBAAsB,QAAsB,CAAC;AAE1D,qGAAqG;AACrG,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAI3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAC;CAClD;AAGD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;IAC9D,mBAAmB,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjG,yBAAyB,EAAE,OAAO,CAAC;IACnC,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAC/D,eAAe,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C,mCAAmC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,wBAAwB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,kEAAkE;IAClE,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvG,uCAAuC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1I,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,cAAc,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7J;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAC3F,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AACF;;;;;;GAMG;AACH,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GACzC;IACD,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;;;;;;OAQG;IACH,mCAAmC,EAAE,MAAM,CAAC;IAC5C,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,mFAAmF;QACnF,kBAAkB,EAAE,OAAO,CAAC;QAC5B,iGAAiG;QACjG,uBAAuB,EAAE,OAAO,CAAC;QACjC,kFAAkF;QAClF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB;;;;;;;;;;;;WAYG;QACH,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,qFAAqF;QACrF,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B;;;;;;;WAOG;QACH,6BAA6B,EAAE,OAAO,CAAC;QACvC,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC,CAAC;CACJ,GAAG,SAAS,CAwFZ;AAgBD;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC,EACvE,EAAE,EAAE,WAAW,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAyBzC;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,uBAAuB,EAAE,UAAU,GAAG,SAAS,CAAC;CACjD,GAAG,oBAAoB,GAAG,SAAS,CAUnC;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1E;IACE,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IAKxB,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IAOrB,uBAAuB,EAAE,UAAU,GAAG,SAAS,CAAC;IAGhD,gCAAgC,EAAE,OAAO,CAAC;IAK1C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;IAGhE,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;CACrE,GACD,IAAI,CAiEP;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB;iCAwnBxB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,KAAG,IAAI;sCA7BzB,gBAAgB,KAAG,IAAI;qCApFvD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eACjB,OAAO,wBAAwB,EAAE,WAAW,OACpD,gBAAgB,aACV,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC;uCArd0B,MAAM,SAAS,mBAAmB,KAAG,IAAI;4CAwBpC,MAAM,KAAG,IAAI;;;;;0BAnD/B,MAAM,gBAAgB,MAAM,KAAG,MAAM;EAorBnE"}
|
package/dist/inbound-sessions.js
CHANGED
|
@@ -135,6 +135,150 @@ presentedThisSession) {
|
|
|
135
135
|
trust_signals: signals,
|
|
136
136
|
};
|
|
137
137
|
}
|
|
138
|
+
// Pull the fields out of a pushed session_assignment frame. Returns null when the frame
|
|
139
|
+
// carries no usable assignment object / is missing the essential ids (the handler then
|
|
140
|
+
// ignores it rather than throwing). Field-level validity (peer id, signature type) is
|
|
141
|
+
// checked in the handler so it can emit a distinct, diagnosable event per failure.
|
|
142
|
+
/**
|
|
143
|
+
* Coerce a wire value to a 64-byte Ed25519 signature, or undefined. CBOR decodes byte strings as
|
|
144
|
+
* Uint8Array or Buffer depending on the decoder, so accept both; reject every other shape and any
|
|
145
|
+
* wrong length rather than passing a malformed signature downstream.
|
|
146
|
+
*/
|
|
147
|
+
function toSignature64(v) {
|
|
148
|
+
const bytes = v instanceof Uint8Array ? v : Buffer.isBuffer(v) ? new Uint8Array(v) : null;
|
|
149
|
+
return bytes && bytes.length === 64 ? bytes : undefined;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* DOD-FIRSTMSG-WITNESS-1: build the RESPONDER's `RelayAssignmentCarry` from a parsed inbound
|
|
153
|
+
* assignment, so it can present `client_record_assignment` and create its own relay session state.
|
|
154
|
+
*
|
|
155
|
+
* Before this the responder carried no assignment at all: `#doRecord` no-opped (returning TRUE —
|
|
156
|
+
* "nothing to present"), `#doSubmit` submitted blind, and the relay answered `session_not_found`
|
|
157
|
+
* unless the initiator's record had already landed. Same-machine loses that race because local
|
|
158
|
+
* delivery is instant while the initiator's record is a round trip.
|
|
159
|
+
*
|
|
160
|
+
* Mirrors `buildRelayConnectParams` (daemon.ts) on the initiator side. Returns undefined when the
|
|
161
|
+
* directory issued no signature, leaving direct/legacy sessions exactly as they were.
|
|
162
|
+
*
|
|
163
|
+
* The field mapping is load-bearing: the relay rebuilds the signed TBS from these values, so a
|
|
164
|
+
* swapped participant or a dropped peer id yields an assignment it rejects as FORGED — which sets
|
|
165
|
+
* `recordRejected` terminally and leaves the session permanently unwitnessed. That is a worse
|
|
166
|
+
* failure than the one this closes, which is why it is extracted and tested directly.
|
|
167
|
+
*/
|
|
168
|
+
/**
|
|
169
|
+
* M7 DOD-SPINE-6 / MSG-001-3b + DOD-FIRSTMSG-WITNESS-1: the responder's relay-witness params.
|
|
170
|
+
*
|
|
171
|
+
* Extracted from `acceptInboundAssignment` so the whole object handed to `acceptSession` — not just
|
|
172
|
+
* its parts — is directly assertable. The `assignment` field is the fix: without it the responder
|
|
173
|
+
* can never present `client_record_assignment`.
|
|
174
|
+
*
|
|
175
|
+
* Returns undefined when this agent has no key or the assignment carries no relay endpoint — the
|
|
176
|
+
* session then runs on the direct content path with no relay witness (degraded, never blocked).
|
|
177
|
+
*/
|
|
178
|
+
export async function buildResponderRelayParams(parsed, kp, logger, agentName) {
|
|
179
|
+
if (!kp || !parsed.relayPeerId || parsed.relayAddrs.length === 0)
|
|
180
|
+
return undefined;
|
|
181
|
+
// DOD-FIRSTMSG-WITNESS-1 (F4): mirror the initiator's loud warning (daemon.ts:457). We only reach
|
|
182
|
+
// here when the assignment carries a relay endpoint, so a missing signature is NOT the legitimate
|
|
183
|
+
// direct/legacy case — it means this session gets no relay witness of its own, which is exactly
|
|
184
|
+
// the pre-fix state. Unwitnessed is an allowed sovereign-redundancy state; it must not be
|
|
185
|
+
// INVISIBLE. Malformed is reported separately from absent: a wrong-length signature is a
|
|
186
|
+
// wire/version bug, not a legacy session.
|
|
187
|
+
if (!parsed.relayDirectorySignature) {
|
|
188
|
+
logger.warn("session.relay.assignment.signature.missing", {
|
|
189
|
+
agentName,
|
|
190
|
+
sessionId: parsed.sessionIdHex.slice(0, 16),
|
|
191
|
+
reason: parsed.relayDirectorySignatureMalformed
|
|
192
|
+
? "relay_directory_signature_malformed"
|
|
193
|
+
: "relay_mode_assignment_without_directory_signature",
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
relayPeerId: parsed.relayPeerId,
|
|
198
|
+
relayAddrs: parsed.relayAddrs,
|
|
199
|
+
keyProvider: kp,
|
|
200
|
+
senderPubkey: await kp.getPublicKey(),
|
|
201
|
+
sessionIdBytes: new Uint8Array(Buffer.from(parsed.sessionIdHex, "hex")),
|
|
202
|
+
assignment: buildResponderRelayAssignment(parsed),
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
export function buildResponderRelayAssignment(parsed) {
|
|
206
|
+
if (!parsed.relayDirectorySignature)
|
|
207
|
+
return undefined;
|
|
208
|
+
return {
|
|
209
|
+
participantA: new Uint8Array(Buffer.from(parsed.participantAPubkeyHex, "hex")),
|
|
210
|
+
participantB: new Uint8Array(Buffer.from(parsed.participantBPubkeyHex, "hex")),
|
|
211
|
+
sessionTimestamp: parsed.sessionTimestamp,
|
|
212
|
+
initiatorSessionPeerId: parsed.initiatorPeerId || undefined,
|
|
213
|
+
counterpartySessionPeerId: parsed.counterpartySessionPeerId ?? undefined,
|
|
214
|
+
assignmentSignature: parsed.relayDirectorySignature,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
export function extractInboundSessionAssignment(frame) {
|
|
218
|
+
const raw = frame["assignment"];
|
|
219
|
+
if (!raw || typeof raw !== "object")
|
|
220
|
+
return null;
|
|
221
|
+
const a = raw;
|
|
222
|
+
const pa = a["participant_a"];
|
|
223
|
+
const pb = a["participant_b"];
|
|
224
|
+
const sessionIdHex = frameValueToHex(a["session_id"]);
|
|
225
|
+
const participantAPubkeyHex = pa ? frameValueToHex(pa["pubkey"]) : null;
|
|
226
|
+
const participantBPubkeyHex = pb ? frameValueToHex(pb["pubkey"]) : null;
|
|
227
|
+
if (!sessionIdHex || !participantAPubkeyHex || !participantBPubkeyHex)
|
|
228
|
+
return null;
|
|
229
|
+
// M7 DOD-SPINE-6 / MSG-001-3b: relay endpoint so the receiver also connects to the
|
|
230
|
+
// relay witness (so the relay can deliver the initiator's witnessed leaves to it).
|
|
231
|
+
const relayEndpoint = a["relay_endpoint"];
|
|
232
|
+
const relayPeerId = relayEndpoint && typeof relayEndpoint["peer_id"] === "string" ? relayEndpoint["peer_id"] : "";
|
|
233
|
+
const relayAddrs = relayEndpoint && Array.isArray(relayEndpoint["multiaddrs"])
|
|
234
|
+
? relayEndpoint["multiaddrs"].filter((m) => typeof m === "string")
|
|
235
|
+
: [];
|
|
236
|
+
// MONIKER-2 AC2: validate the offered name ONCE, at this wire boundary.
|
|
237
|
+
const monikerResult = extractOfferedMoniker(a);
|
|
238
|
+
// DOD-PRESENT-1: extract trust signals that survived the directory's dumb check.
|
|
239
|
+
let trustSignals;
|
|
240
|
+
const rawSignals = a["trust_signals"];
|
|
241
|
+
if (Array.isArray(rawSignals) && rawSignals.length > 0) {
|
|
242
|
+
const parsed = [];
|
|
243
|
+
for (const entry of rawSignals) {
|
|
244
|
+
if (entry && typeof entry === "object") {
|
|
245
|
+
const e = entry;
|
|
246
|
+
const hash = typeof e["hash"] === "string" ? e["hash"] : null;
|
|
247
|
+
const blob = e["blob"] instanceof Uint8Array ? e["blob"] : Buffer.isBuffer(e["blob"]) ? new Uint8Array(e["blob"]) : null;
|
|
248
|
+
if (hash && blob)
|
|
249
|
+
parsed.push({ hash, blob });
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (parsed.length > 0)
|
|
253
|
+
trustSignals = parsed;
|
|
254
|
+
}
|
|
255
|
+
return {
|
|
256
|
+
sessionIdHex,
|
|
257
|
+
participantAPubkeyHex,
|
|
258
|
+
participantBPubkeyHex,
|
|
259
|
+
initiatorPeerId: typeof a["initiator_session_peer_id"] === "string" ? a["initiator_session_peer_id"] : "",
|
|
260
|
+
counterpartySessionPeerId: typeof a["counterparty_session_peer_id"] === "string" ? a["counterparty_session_peer_id"] : null,
|
|
261
|
+
sessionTimestamp: typeof a["session_timestamp"] === "number" ? a["session_timestamp"] : 0,
|
|
262
|
+
signatureType: typeof a["signature_type"] === "string" ? a["signature_type"] : null,
|
|
263
|
+
// M7 legibility-TBS-binding (responder verify): the FROST-signed assignment embeds the
|
|
264
|
+
// initiator's primary (group) pubkey as `signer_pubkey` — the key that signs the seal.
|
|
265
|
+
// The responder stores it so it can verify the bilateral seal signature locally, not just
|
|
266
|
+
// accept it (session.ts: "embedded so the counterparty can verify").
|
|
267
|
+
signerPubkeyHex: a["signer_pubkey"] !== undefined ? frameValueToHex(a["signer_pubkey"]) : null,
|
|
268
|
+
relayPeerId,
|
|
269
|
+
relayAddrs,
|
|
270
|
+
// DOD-FIRSTMSG-WITNESS-1. Accept only a well-formed 64-byte Ed25519 signature: anything else
|
|
271
|
+
// (wrong length, wrong type) reads as ABSENT, so a malformed field degrades to "this session
|
|
272
|
+
// has no client-presentable assignment" rather than producing a frame the relay rejects as
|
|
273
|
+
// forged — which would mark the session recordRejected and terminally unwitnessed.
|
|
274
|
+
relayDirectorySignature: toSignature64(a["relay_directory_signature"]),
|
|
275
|
+
relayDirectorySignatureMalformed: a["relay_directory_signature"] !== undefined && toSignature64(a["relay_directory_signature"]) === undefined,
|
|
276
|
+
offeredMoniker: monikerResult.offeredMoniker,
|
|
277
|
+
monikerRejected: monikerResult.rejected,
|
|
278
|
+
monikerRejectReason: monikerResult.reason ?? null,
|
|
279
|
+
trustSignals,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
138
282
|
export function createInboundSessions(deps) {
|
|
139
283
|
const { logger, sessionNodeManager, agents, getConnState, resolveCurrentAgent, NO_CURRENT_AGENT_RESPONSE, getKeyProvider, sharedSignaling, handleInboundSealInterruptedRequest, reapDeadHalfOpenSessions, sendAwayResponse, dispatchSessionStateChangedWithTelegram, sendTelegramDoorbell, } = deps;
|
|
140
284
|
// ─── Seam 2: inbound session establishment (counterparty side) ─────────────
|
|
@@ -257,69 +401,6 @@ export function createInboundSessions(deps) {
|
|
|
257
401
|
}
|
|
258
402
|
inboundSessionQueues.set(agentName, live);
|
|
259
403
|
}
|
|
260
|
-
// Pull the fields out of a pushed session_assignment frame. Returns null when the frame
|
|
261
|
-
// carries no usable assignment object / is missing the essential ids (the handler then
|
|
262
|
-
// ignores it rather than throwing). Field-level validity (peer id, signature type) is
|
|
263
|
-
// checked in the handler so it can emit a distinct, diagnosable event per failure.
|
|
264
|
-
function extractInboundSessionAssignment(frame) {
|
|
265
|
-
const raw = frame["assignment"];
|
|
266
|
-
if (!raw || typeof raw !== "object")
|
|
267
|
-
return null;
|
|
268
|
-
const a = raw;
|
|
269
|
-
const pa = a["participant_a"];
|
|
270
|
-
const pb = a["participant_b"];
|
|
271
|
-
const sessionIdHex = frameValueToHex(a["session_id"]);
|
|
272
|
-
const participantAPubkeyHex = pa ? frameValueToHex(pa["pubkey"]) : null;
|
|
273
|
-
const participantBPubkeyHex = pb ? frameValueToHex(pb["pubkey"]) : null;
|
|
274
|
-
if (!sessionIdHex || !participantAPubkeyHex || !participantBPubkeyHex)
|
|
275
|
-
return null;
|
|
276
|
-
// M7 DOD-SPINE-6 / MSG-001-3b: relay endpoint so the receiver also connects to the
|
|
277
|
-
// relay witness (so the relay can deliver the initiator's witnessed leaves to it).
|
|
278
|
-
const relayEndpoint = a["relay_endpoint"];
|
|
279
|
-
const relayPeerId = relayEndpoint && typeof relayEndpoint["peer_id"] === "string" ? relayEndpoint["peer_id"] : "";
|
|
280
|
-
const relayAddrs = relayEndpoint && Array.isArray(relayEndpoint["multiaddrs"])
|
|
281
|
-
? relayEndpoint["multiaddrs"].filter((m) => typeof m === "string")
|
|
282
|
-
: [];
|
|
283
|
-
// MONIKER-2 AC2: validate the offered name ONCE, at this wire boundary.
|
|
284
|
-
const monikerResult = extractOfferedMoniker(a);
|
|
285
|
-
// DOD-PRESENT-1: extract trust signals that survived the directory's dumb check.
|
|
286
|
-
let trustSignals;
|
|
287
|
-
const rawSignals = a["trust_signals"];
|
|
288
|
-
if (Array.isArray(rawSignals) && rawSignals.length > 0) {
|
|
289
|
-
const parsed = [];
|
|
290
|
-
for (const entry of rawSignals) {
|
|
291
|
-
if (entry && typeof entry === "object") {
|
|
292
|
-
const e = entry;
|
|
293
|
-
const hash = typeof e["hash"] === "string" ? e["hash"] : null;
|
|
294
|
-
const blob = e["blob"] instanceof Uint8Array ? e["blob"] : Buffer.isBuffer(e["blob"]) ? new Uint8Array(e["blob"]) : null;
|
|
295
|
-
if (hash && blob)
|
|
296
|
-
parsed.push({ hash, blob });
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
if (parsed.length > 0)
|
|
300
|
-
trustSignals = parsed;
|
|
301
|
-
}
|
|
302
|
-
return {
|
|
303
|
-
sessionIdHex,
|
|
304
|
-
participantAPubkeyHex,
|
|
305
|
-
participantBPubkeyHex,
|
|
306
|
-
initiatorPeerId: typeof a["initiator_session_peer_id"] === "string" ? a["initiator_session_peer_id"] : "",
|
|
307
|
-
counterpartySessionPeerId: typeof a["counterparty_session_peer_id"] === "string" ? a["counterparty_session_peer_id"] : null,
|
|
308
|
-
sessionTimestamp: typeof a["session_timestamp"] === "number" ? a["session_timestamp"] : 0,
|
|
309
|
-
signatureType: typeof a["signature_type"] === "string" ? a["signature_type"] : null,
|
|
310
|
-
// M7 legibility-TBS-binding (responder verify): the FROST-signed assignment embeds the
|
|
311
|
-
// initiator's primary (group) pubkey as `signer_pubkey` — the key that signs the seal.
|
|
312
|
-
// The responder stores it so it can verify the bilateral seal signature locally, not just
|
|
313
|
-
// accept it (session.ts: "embedded so the counterparty can verify").
|
|
314
|
-
signerPubkeyHex: a["signer_pubkey"] !== undefined ? frameValueToHex(a["signer_pubkey"]) : null,
|
|
315
|
-
relayPeerId,
|
|
316
|
-
relayAddrs,
|
|
317
|
-
offeredMoniker: monikerResult.offeredMoniker,
|
|
318
|
-
monikerRejected: monikerResult.rejected,
|
|
319
|
-
monikerRejectReason: monikerResult.reason ?? null,
|
|
320
|
-
trustSignals,
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
404
|
// Wait (bounded) for THIS AGENT's standing receiver to be ready. acceptSession consumes the
|
|
324
405
|
// agent's standing receiver and rebuilds a replacement asynchronously, so a burst of inbound
|
|
325
406
|
// assignments for that agent would otherwise drop all but the first (review M2). Polling the
|
|
@@ -393,17 +474,7 @@ export function createInboundSessions(deps) {
|
|
|
393
474
|
}
|
|
394
475
|
// M7 DOD-SPINE-6 / MSG-001-3b: relay witness for the receiver. Build from the
|
|
395
476
|
// inbound assignment's relay endpoint + this agent's K_local + the 16-byte session id.
|
|
396
|
-
const
|
|
397
|
-
let relayParams;
|
|
398
|
-
if (kp && parsed.relayPeerId && parsed.relayAddrs.length > 0) {
|
|
399
|
-
relayParams = {
|
|
400
|
-
relayPeerId: parsed.relayPeerId,
|
|
401
|
-
relayAddrs: parsed.relayAddrs,
|
|
402
|
-
keyProvider: kp,
|
|
403
|
-
senderPubkey: await kp.getPublicKey(),
|
|
404
|
-
sessionIdBytes: new Uint8Array(Buffer.from(parsed.sessionIdHex, "hex")),
|
|
405
|
-
};
|
|
406
|
-
}
|
|
477
|
+
const relayParams = await buildResponderRelayParams(parsed, getKeyProvider(agentName), logger, agentName);
|
|
407
478
|
const result = await sessionNodeManager.acceptSession(parsed.sessionIdHex, agentName, parsed.participantAPubkeyHex, // the initiator is OUR counterparty
|
|
408
479
|
parsed.initiatorPeerId, correlationId, relayParams);
|
|
409
480
|
if (!result.ok) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound-sessions.js","sourceRoot":"","sources":["../src/inbound-sessions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inbound-sessions.js","sourceRoot":"","sources":["../src/inbound-sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-relay-client.d.ts","sourceRoot":"","sources":["../src/session-relay-client.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AACtD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,iFAAiF;AACjF,eAAO,MAAM,aAAa,IAAO,CAAC;AAClC,iGAAiG;AACjG,eAAO,MAAM,cAAc,IAAO,CAAC;AAKnC;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,CAIvF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,UAAU,EACvB,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,UAAU,CAEZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,UAAU,CAAC;IAC5B,eAAe,EAAE,UAAU,CAAC;IAC5B;;;;;OAKG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,gDAAgD;AAChD,MAAM,MAAM,YAAY,GACpB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,eAAe,EAAE,MAAM,CAAC;IAKxB,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,eAAe,CAAC,EAAE,UAAU,CAAC;CAC9B,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAGlC,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,sEAAsE;IACtE,WAAW,EAAE,WAAW,CAAC;IACzB,iFAAiF;IACjF,YAAY,EAAE,UAAU,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,UAAU,CAAC;IACzB,YAAY,EAAE,UAAU,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,mBAAmB,EAAE,UAAU,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAUxD;AA8BD;;;;GAIG;AACH,qBAAa,gBAAgB;;
|
|
1
|
+
{"version":3,"file":"session-relay-client.d.ts","sourceRoot":"","sources":["../src/session-relay-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
var _a;
|
|
1
2
|
/**
|
|
2
3
|
* Daemon-side relay witness client (PER AGENT).
|
|
3
4
|
*
|
|
@@ -173,6 +174,7 @@ export class AgentRelayClient {
|
|
|
173
174
|
assignment: assignment ?? existing?.assignment,
|
|
174
175
|
recorded: existing?.recorded ?? false,
|
|
175
176
|
recordRejected: existing?.recordRejected ?? false,
|
|
177
|
+
recordTimedOut: existing?.recordTimedOut ?? false,
|
|
176
178
|
});
|
|
177
179
|
// Eagerly present the assignment so the relay records the session (binds peer IDs, creates the
|
|
178
180
|
// session entry) BEFORE the first hash_submit or the counterparty's leaves arrive — the relay
|
|
@@ -236,6 +238,7 @@ export class AgentRelayClient {
|
|
|
236
238
|
const result = await Promise.race([ackPromise, timeout]);
|
|
237
239
|
if (result === "ok") {
|
|
238
240
|
sess.recorded = true;
|
|
241
|
+
sess.recordTimedOut = false;
|
|
239
242
|
this.#logger.info("session.relay.assignment.recorded", { relayPeerId: this.#relayPeerId, sessionShort: sessionIdHex.slice(0, 16) });
|
|
240
243
|
return true;
|
|
241
244
|
}
|
|
@@ -243,6 +246,7 @@ export class AgentRelayClient {
|
|
|
243
246
|
// ONLY here reset the stream: a late ack on this superseded stream would settle a LATER submit's
|
|
244
247
|
// resolver (FIFO desync). recorded stays false ⇒ a transient timeout is retried on reconnect.
|
|
245
248
|
this.#resetStream();
|
|
249
|
+
sess.recordTimedOut = true;
|
|
246
250
|
this.#logger.warn("session.relay.assignment.record.timeout", { relayPeerId: this.#relayPeerId, sessionShort: sessionIdHex.slice(0, 16) });
|
|
247
251
|
return false;
|
|
248
252
|
}
|
|
@@ -696,7 +700,87 @@ export class AgentRelayClient {
|
|
|
696
700
|
this.#submitChain = run.then(() => undefined, () => undefined);
|
|
697
701
|
return run;
|
|
698
702
|
}
|
|
703
|
+
/**
|
|
704
|
+
* DOD-FIRSTMSG-WITNESS-1: `session_not_found` is TRANSIENT, not terminal.
|
|
705
|
+
*
|
|
706
|
+
* The relay answers it when it does not hold the session YET — the assignment record is still
|
|
707
|
+
* landing, or the counterparty recorded it and our own record raced ahead of the submit. Proven
|
|
708
|
+
* from the live log: in all 23 first-message failures the `assignment.recorded` event lands
|
|
709
|
+
* 5 ms – 2.1 s AFTER the rejected submit. The relay is reachable and answering; it is simply
|
|
710
|
+
* not ready.
|
|
711
|
+
*
|
|
712
|
+
* Before this, the rejection was returned to `sendContent`, which logged
|
|
713
|
+
* `session.relay.hash.submit.failed` and appended the leaf UNWITNESSED anyway. Nothing retried,
|
|
714
|
+
* so the relay's counter never counted that message and the local record stayed exactly one
|
|
715
|
+
* ahead for the life of the session. Because the bilateral certificate is rebuilt EXCLUSIVELY
|
|
716
|
+
* from relay-witnessed leaves, the sealed receipt omitted the conversation's opening message —
|
|
717
|
+
* and was issued regardless.
|
|
718
|
+
*
|
|
719
|
+
* Retrying re-presents the assignment first (idempotent — the relay answers `assignment_ok` on
|
|
720
|
+
* `session_already_exists`), which is also what supplies the wait: re-recording is a full
|
|
721
|
+
* round trip, so the retry cannot busy-spin against a relay that is still catching up.
|
|
722
|
+
*
|
|
723
|
+
* This does NOT collapse the two states the fix must tell apart:
|
|
724
|
+
* - `session_not_found` — a reachable relay that does not hold the session yet → retry here.
|
|
725
|
+
* - `relay_unavailable` / stream failures — a genuine outage → returned untouched, so
|
|
726
|
+
* `sendContent` still degrades to an unwitnessed append and the inbox stays readable.
|
|
727
|
+
* Any other rejection (`session_sealed`, `not_a_participant`, signature failures) is terminal
|
|
728
|
+
* and returned as-is — retrying those would be pointless traffic masking a real state.
|
|
729
|
+
*/
|
|
730
|
+
static #SESSION_NOT_FOUND_ATTEMPTS = 3;
|
|
699
731
|
async #doSubmit(node, sessionId, contentHash, leafKind) {
|
|
732
|
+
const sessionIdHex = Buffer.from(sessionId).toString("hex");
|
|
733
|
+
// Snapshotted BEFORE the first attempt, and it is the whole safety of this loop.
|
|
734
|
+
//
|
|
735
|
+
// The first-message race is BY DEFINITION a session we have not recorded yet. A session we DID
|
|
736
|
+
// record and that the relay now reports missing is a DIFFERENT state: the relay destroys a
|
|
737
|
+
// session on seal (relay-node.ts `confirmSeal`) and on idle sweep, and its store keeps NO
|
|
738
|
+
// tombstone — `recordSession` re-creates any absent key fresh (`seq_counter: 0`, empty
|
|
739
|
+
// leaf_log, status "active"). So `getSession` answers `session_not_found`, NOT `session_sealed`.
|
|
740
|
+
// Re-presenting our still-valid directory-signed assignment there would silently RESURRECT a
|
|
741
|
+
// sealed session on the relay: a ghost with an empty log, an idle timer and a delivery path,
|
|
742
|
+
// created by a client submit retry. Two ctrl leaves on it would drive a second notarization
|
|
743
|
+
// over a 1-leaf log for an already-certified session.
|
|
744
|
+
//
|
|
745
|
+
// The 2 post-seal failures in this defect's own evidence table are exactly that shape — they
|
|
746
|
+
// reported `session_not_found`, indistinguishable at the wire from the race — which is why
|
|
747
|
+
// this must be discriminated on OUR state, not on the relay's reason string.
|
|
748
|
+
const recordedBefore = this.#sessions.get(sessionIdHex)?.recorded === true;
|
|
749
|
+
let result = await this.#doSubmitOnce(node, sessionId, contentHash, leafKind);
|
|
750
|
+
for (let attempt = 1; attempt < _a.#SESSION_NOT_FOUND_ATTEMPTS
|
|
751
|
+
&& !recordedBefore
|
|
752
|
+
&& !result.ok
|
|
753
|
+
&& (result.reason === "session_not_found" || result.reason === "session_not_recorded")
|
|
754
|
+
&& !this.#closed; attempt++) {
|
|
755
|
+
// Force the assignment to be re-presented: we never recorded this session, so the relay
|
|
756
|
+
// genuinely does not hold it yet. A session with no assignment to present (direct/legacy)
|
|
757
|
+
// re-submits without a record — still bounded, and it surfaces the same named failure
|
|
758
|
+
// rather than hanging.
|
|
759
|
+
const sess = this.#sessions.get(sessionIdHex);
|
|
760
|
+
if (sess)
|
|
761
|
+
sess.recorded = false;
|
|
762
|
+
this.#logger.info("session.relay.submit.retry", {
|
|
763
|
+
relayPeerId: this.#relayPeerId,
|
|
764
|
+
sessionShort: sessionIdHex.slice(0, 16),
|
|
765
|
+
attempt,
|
|
766
|
+
reason: result.reason,
|
|
767
|
+
});
|
|
768
|
+
result = await this.#doSubmitOnce(node, sessionId, contentHash, leafKind);
|
|
769
|
+
}
|
|
770
|
+
// The relay lost a session we had successfully recorded — sealed, idle-swept, or restarted.
|
|
771
|
+
// Report THAT, rather than letting the caller read a bare `session_not_found` that reads like
|
|
772
|
+
// the first-message race. Never re-present here: recreating it is the resurrection above.
|
|
773
|
+
if (recordedBefore && !result.ok && result.reason === "session_not_found") {
|
|
774
|
+
this.#logger.warn("session.relay.session.gone", {
|
|
775
|
+
relayPeerId: this.#relayPeerId,
|
|
776
|
+
sessionShort: sessionIdHex.slice(0, 16),
|
|
777
|
+
guidance: "the relay no longer holds a session it had recorded (sealed, idle-swept, or restarted) — not re-presented, because that would recreate it with an empty leaf log",
|
|
778
|
+
});
|
|
779
|
+
return { ok: false, reason: "relay_session_gone" };
|
|
780
|
+
}
|
|
781
|
+
return result;
|
|
782
|
+
}
|
|
783
|
+
async #doSubmitOnce(node, sessionId, contentHash, leafKind) {
|
|
700
784
|
if (this.#closed)
|
|
701
785
|
return { ok: false, reason: "relay_client_closed" };
|
|
702
786
|
if (!(await this.#ensureConnected(node)))
|
|
@@ -706,7 +790,29 @@ export class AgentRelayClient {
|
|
|
706
790
|
// the first hash_submit — the relay rejects a submit for an unknown session. Idempotent + no-op when
|
|
707
791
|
// there is no assignment to present (direct/persisted sessions). Runs inline on the submit chain (no re-chaining
|
|
708
792
|
// — #doSubmit is already a chain link), and may reset the stream on failure, so capture #stream after.
|
|
709
|
-
await this.#doRecord(node, sessionIdHex);
|
|
793
|
+
const recorded = await this.#doRecord(node, sessionIdHex);
|
|
794
|
+
const sess = this.#sessions.get(sessionIdHex);
|
|
795
|
+
if (!recorded && sess?.assignment) {
|
|
796
|
+
// DOD-FIRSTMSG-WITNESS-1 AC3: do NOT send a hash_submit for a session we know the relay does
|
|
797
|
+
// not hold. Previously this return value was discarded and the doomed frame went out anyway —
|
|
798
|
+
// the line this defect's producer→consumer trace names as THE gap. Two sub-states, kept apart:
|
|
799
|
+
// - recordRejected → TERMINAL (the relay refused the assignment as unverifiable). Retrying
|
|
800
|
+
// cannot help and would storm the shared stream.
|
|
801
|
+
// - anything else → the record is in flight or transiently failed. Retryable.
|
|
802
|
+
// A session with NO assignment to present (direct/legacy) is not covered here: #doRecord
|
|
803
|
+
// returns true for it, so it still submits exactly as before.
|
|
804
|
+
if (sess.recordRejected)
|
|
805
|
+
return { ok: false, reason: "relay_assignment_rejected" };
|
|
806
|
+
// A TIMEOUT IS NOT "NOT READY YET". The retry below exists for a relay that has not finished
|
|
807
|
+
// registering the session — it answers in milliseconds. A record that timed out means the relay
|
|
808
|
+
// is not answering at all, and retrying spends HASH_SUBMIT_TIMEOUT_MS again per attempt on the
|
|
809
|
+
// chain SHARED by every session this agent holds on this relay. Classifying it as unreachable
|
|
810
|
+
// proceeds unwitnessed immediately, which is what AC2 asks for on an outage — the send is not
|
|
811
|
+
// lost, and one sick relay cannot hold an operator's other conversations for half a minute.
|
|
812
|
+
if (sess.recordTimedOut)
|
|
813
|
+
return { ok: false, reason: "relay_unavailable" };
|
|
814
|
+
return { ok: false, reason: "session_not_recorded" };
|
|
815
|
+
}
|
|
710
816
|
const stream = this.#stream;
|
|
711
817
|
if (!stream)
|
|
712
818
|
return { ok: false, reason: "relay_unavailable" };
|
|
@@ -790,4 +896,5 @@ export class AgentRelayClient {
|
|
|
790
896
|
}
|
|
791
897
|
}
|
|
792
898
|
}
|
|
899
|
+
_a = AgentRelayClient;
|
|
793
900
|
//# sourceMappingURL=session-relay-client.js.map
|