@kynesyslabs/demosdk 4.0.11 → 4.0.12

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.
@@ -75,6 +75,10 @@ export class Identities {
75
75
  const tx = DemosTransactions.empty();
76
76
  const ed25519 = await demos.crypto.getIdentity("ed25519");
77
77
  const address = uint8ArrayToHex(ed25519.publicKey);
78
+ // Use the address' current nonce (+1) like every other native tx in
79
+ // this SDK — hardcoding nonce:1 only validated for a fresh account and
80
+ // broke the second identity op (e.g. remove after add).
81
+ const nonce = await demos.getAddressNonce(address);
78
82
  tx.content = {
79
83
  ...tx.content,
80
84
  type: "identity",
@@ -88,7 +92,7 @@ export class Identities {
88
92
  payload: payload,
89
93
  },
90
94
  ],
91
- nonce: 1,
95
+ nonce: nonce + 1,
92
96
  timestamp: Date.now(),
93
97
  };
94
98
  const signedTx = await demos.sign(tx);
@@ -105,6 +109,10 @@ export class Identities {
105
109
  const tx = DemosTransactions.empty();
106
110
  const ed25519 = await demos.crypto.getIdentity("ed25519");
107
111
  const address = uint8ArrayToHex(ed25519.publicKey);
112
+ // Use the address' current nonce (+1) like every other native tx in
113
+ // this SDK — hardcoding nonce:1 broke removing an identity once the
114
+ // account had already done one identity op (e.g. the add).
115
+ const nonce = await demos.getAddressNonce(address);
108
116
  tx.content = {
109
117
  ...tx.content,
110
118
  type: "identity",
@@ -118,7 +126,7 @@ export class Identities {
118
126
  payload: payload,
119
127
  },
120
128
  ],
121
- nonce: 1,
129
+ nonce: nonce + 1,
122
130
  timestamp: Date.now(),
123
131
  };
124
132
  const signedTx = await demos.sign(tx);
@@ -1 +1 @@
1
- {"version":3,"file":"Identities.js","sourceRoot":"","sources":["../../../src/abstraction/Identities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Identities.js","sourceRoot":"","sources":["../../../src/abstraction/Identities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * SR-4 WI-C — finalise a negotiate-rfq session: on agreement, export the
3
+ * signed channel transcript and (per disclosure policy, DACS-3 §8.7)
4
+ * anchor an encrypted copy, returning the `channelTranscriptRef` that the
5
+ * negotiate-rfq output carries.
6
+ *
7
+ * This is the orchestration that ties WI-B's terminal state to WI-3's
8
+ * transcript anchor: `exportTranscript` (sign the ordered messages) →
9
+ * `anchorEncryptedTranscript` (encrypt-to-members + SR-2 anchor). Policy
10
+ * semantics (§8.7):
11
+ * - `none` — transcript stays local; nothing anchored.
12
+ * - `encrypted-anchored-recommended` — anchor only on explicit consent.
13
+ * - `encrypted-anchored-required` — MUST anchor; a null result fails
14
+ * the phase.
15
+ *
16
+ * The anchor call is injectable so the orchestration is unit-tested
17
+ * without a live node (the real anchor deploys an SR-2 storage program).
18
+ */
19
+ import type { Demos } from "../../websdk";
20
+ import type { ClaimReference } from "../../identity/cci";
21
+ import type L2PS from "../l2ps";
22
+ import type { AnchorEncryptedTranscriptOpts, AttestationRef, TranscriptDisclosurePolicy } from "../anchor";
23
+ import type { ChannelMessage, ChannelTranscript } from "./types";
24
+ import type { RfqOutcome, RfqState } from "./negotiate";
25
+ /** Minimal RfqSession surface — structural for testability. */
26
+ export interface RfqLike {
27
+ readonly state: RfqState;
28
+ outcome(): RfqOutcome;
29
+ }
30
+ /** Minimal ChannelSession surface — structural for testability. */
31
+ export interface ChannelSessionView {
32
+ readonly channelId: string;
33
+ readonly members: ReadonlyArray<ClaimReference>;
34
+ messages(): ReadonlyArray<ChannelMessage>;
35
+ }
36
+ export interface FinalizeRfqOpts {
37
+ rfq: RfqLike;
38
+ session: ChannelSessionView;
39
+ /** This party's CCI claim (signs the transcript); must be a member. */
40
+ signer: ClaimReference;
41
+ demos: Demos;
42
+ /** Required when the policy actually anchors (not for `none`). */
43
+ l2ps?: L2PS;
44
+ policy: TranscriptDisclosurePolicy;
45
+ /** Needed to anchor under `encrypted-anchored-recommended`. */
46
+ consent?: boolean;
47
+ /**
48
+ * Injectable anchor implementation; defaults to the real
49
+ * `anchorEncryptedTranscript`. Tests pass a fake to avoid deploying
50
+ * a storage program.
51
+ */
52
+ anchor?: (opts: AnchorEncryptedTranscriptOpts) => Promise<AttestationRef | null>;
53
+ }
54
+ export interface RfqFinalizeResult {
55
+ /** The signed, ordered transcript (always produced). */
56
+ transcript: ChannelTranscript;
57
+ /**
58
+ * The anchored attestation reference, or null when the policy did not
59
+ * anchor (`none`, or `recommended` without consent).
60
+ */
61
+ channelTranscriptRef: AttestationRef | null;
62
+ }
63
+ export declare function finalizeRfq(opts: FinalizeRfqOpts): Promise<RfqFinalizeResult>;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * SR-4 WI-C — finalise a negotiate-rfq session: on agreement, export the
3
+ * signed channel transcript and (per disclosure policy, DACS-3 §8.7)
4
+ * anchor an encrypted copy, returning the `channelTranscriptRef` that the
5
+ * negotiate-rfq output carries.
6
+ *
7
+ * This is the orchestration that ties WI-B's terminal state to WI-3's
8
+ * transcript anchor: `exportTranscript` (sign the ordered messages) →
9
+ * `anchorEncryptedTranscript` (encrypt-to-members + SR-2 anchor). Policy
10
+ * semantics (§8.7):
11
+ * - `none` — transcript stays local; nothing anchored.
12
+ * - `encrypted-anchored-recommended` — anchor only on explicit consent.
13
+ * - `encrypted-anchored-required` — MUST anchor; a null result fails
14
+ * the phase.
15
+ *
16
+ * The anchor call is injectable so the orchestration is unit-tested
17
+ * without a live node (the real anchor deploys an SR-2 storage program).
18
+ */
19
+ import { anchorEncryptedTranscript } from "../anchor/index.js";
20
+ import { exportTranscript } from "./transcript.js";
21
+ export async function finalizeRfq(opts) {
22
+ if (opts.rfq.state !== "accepted") {
23
+ throw new Error(`finalizeRfq: negotiation is "${opts.rfq.state}", not "accepted" — ` +
24
+ "only an agreed RFQ produces a transcript anchor");
25
+ }
26
+ // The signer must be a channel member — `exportTranscript` will sign
27
+ // with any demos claim, so a non-member signer produces a transcript
28
+ // that later fails `verifyTranscript` (signer ∉ members). Catch it
29
+ // here rather than emitting a transcript that cannot be verified.
30
+ if (!opts.session.members.includes(opts.signer)) {
31
+ throw new Error(`finalizeRfq: signer "${opts.signer}" is not a channel member — ` +
32
+ "the transcript signature would fail verification");
33
+ }
34
+ // The transcript must actually contain the agreed exchange: the
35
+ // accepted proposal and the matching accept that `rfq.outcome()`
36
+ // points at. A stale or mismatched session would otherwise let us
37
+ // export/anchor a transcript that does not back the agreement.
38
+ const outcome = opts.rfq.outcome();
39
+ const acceptedSequence = outcome.acceptedSequence;
40
+ if (acceptedSequence === undefined) {
41
+ throw new Error("finalizeRfq: accepted outcome has no acceptedSequence — cannot match transcript");
42
+ }
43
+ const messages = opts.session.messages();
44
+ const hasAcceptedProposal = messages.some(m => m.sequence === acceptedSequence);
45
+ const hasAccept = messages.some(m => m.type === "accept" &&
46
+ m.body
47
+ ?.acceptedSequence === acceptedSequence);
48
+ if (!hasAcceptedProposal || !hasAccept) {
49
+ throw new Error(`finalizeRfq: session transcript does not contain the accepted proposal ` +
50
+ `(seq ${acceptedSequence}) and its matching accept — session mismatch`);
51
+ }
52
+ const transcript = await exportTranscript({
53
+ channelId: opts.session.channelId,
54
+ members: [...opts.session.members],
55
+ messages,
56
+ signers: [{ claim: opts.signer, demos: opts.demos }],
57
+ });
58
+ // §8.7 `none`: transcript stays local; nothing anchored.
59
+ // §8.7 `recommended` WITHOUT consent: also a no-anchor outcome — it
60
+ // must NOT require an L2PS instance just to take its null-ref branch.
61
+ const willAnchor = opts.policy === "encrypted-anchored-required" ||
62
+ (opts.policy === "encrypted-anchored-recommended" && !!opts.consent);
63
+ if (!willAnchor) {
64
+ return { transcript, channelTranscriptRef: null };
65
+ }
66
+ if (!opts.l2ps) {
67
+ throw new Error(`finalizeRfq: policy "${opts.policy}" requires an L2PS instance to encrypt the transcript`);
68
+ }
69
+ const anchorFn = opts.anchor ?? anchorEncryptedTranscript;
70
+ const ref = await anchorFn({
71
+ transcript,
72
+ l2ps: opts.l2ps,
73
+ demos: opts.demos,
74
+ signer: opts.signer,
75
+ policy: opts.policy,
76
+ consent: opts.consent,
77
+ });
78
+ // §8.7: under `required`, the absence of an anchor fails the phase.
79
+ if (opts.policy === "encrypted-anchored-required" && !ref) {
80
+ throw new Error("finalizeRfq: policy is 'encrypted-anchored-required' but anchoring " +
81
+ "produced no attestation — phase fails");
82
+ }
83
+ return { transcript, channelTranscriptRef: ref };
84
+ }
85
+ //# sourceMappingURL=finalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finalize.js","sourceRoot":"","sources":["../../../../src/l2ps/channel/finalize.ts"],"names":[],"mappings":"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"}
@@ -12,3 +12,6 @@ export { isSenderInMembers, signChannelMessage, verifyChannelMessage, } from "./
12
12
  export { InMemoryChannelIdRegistry, type ChannelIdRegistry, } from "./channelIdRegistry";
13
13
  export { ChannelSession, type ChannelSessionOpts } from "./session";
14
14
  export { buildUnsignedTranscript, exportTranscript, signTranscript, verifyTranscript, type TranscriptVerificationResult, } from "./transcript";
15
+ export { L2PSChannelTransport, type L2PSChannelTransportOpts, type ChannelSessionLike, type L2PSMessagingPeerLike, type SerializedEncryptedMessage, type IncomingMessagePayload, } from "./transport";
16
+ export { RfqSession, type RfqState, type RfqOutcome, type RfqSessionOpts, type RfqProposalBody, type RfqAcceptBody, type RfqEndBody, type StandingProposal, } from "./negotiate";
17
+ export { finalizeRfq, type FinalizeRfqOpts, type RfqFinalizeResult, type RfqLike, type ChannelSessionView, } from "./finalize";
@@ -11,4 +11,7 @@ export { isSenderInMembers, signChannelMessage, verifyChannelMessage, } from "./
11
11
  export { InMemoryChannelIdRegistry, } from "./channelIdRegistry.js";
12
12
  export { ChannelSession } from "./session.js";
13
13
  export { buildUnsignedTranscript, exportTranscript, signTranscript, verifyTranscript, } from "./transcript.js";
14
+ export { L2PSChannelTransport, } from "./transport.js";
15
+ export { RfqSession, } from "./negotiate.js";
16
+ export { finalizeRfq, } from "./finalize.js";
14
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/l2ps/channel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,OAAO,EACH,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACH,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACvB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACH,yBAAyB,GAE5B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,cAAc,EAA2B,MAAM,WAAW,CAAA;AAEnE,OAAO,EACH,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GAEnB,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/l2ps/channel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,OAAO,EACH,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,GACzB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACH,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACvB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACH,yBAAyB,GAE5B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,cAAc,EAA2B,MAAM,WAAW,CAAA;AAEnE,OAAO,EACH,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GAEnB,MAAM,cAAc,CAAA;AAErB,OAAO,EACH,oBAAoB,GAMvB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACH,UAAU,GAQb,MAAM,aAAa,CAAA;AAEpB,OAAO,EACH,WAAW,GAKd,MAAM,YAAY,CAAA"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * SR-4 WI-B — `negotiate-rfq` phase logic.
3
+ *
4
+ * A request-for-quote negotiation is a turn-based exchange of `offer` /
5
+ * `counter` proposals terminating in `accept`, `reject`, or `abort`
6
+ * (CH-5 termination; DACS-3 §8.3). Per the SR-4 brief the RFQ message
7
+ * *bodies* are implementation-defined (only sealed-envelope bodies are
8
+ * spec-locked, §8.4.3), so this layer fixes a minimal body schema and
9
+ * the state machine while staying agnostic to the actual `terms`.
10
+ *
11
+ * `RfqSession` is a pure protocol state machine. It does not move bytes:
12
+ * the caller wires its `send` callback to a transport (e.g.
13
+ * `L2PSChannelTransport.send`) and feeds verified inbound envelopes to
14
+ * `onIncoming`. By the time a message reaches `onIncoming` the channel
15
+ * layer has already verified the signature, `sender ∈ members`, the
16
+ * channelId, and monotonic sequence — so this layer only enforces
17
+ * protocol-level rules (legal transitions, body shape, referencing an
18
+ * existing offer).
19
+ */
20
+ import type { ChannelMessage, ChannelMessageType } from "./types";
21
+ import type { ClaimReference } from "../../identity/cci";
22
+ /** Terminal + in-progress states (CH-5). */
23
+ export type RfqState = "open" | "accepted" | "rejected" | "aborted";
24
+ /** Body of an `offer` / `counter` — `terms` is opaque (impl-defined). */
25
+ export interface RfqProposalBody {
26
+ terms: unknown;
27
+ }
28
+ /** Body of an `accept` — references the proposal sequence being accepted. */
29
+ export interface RfqAcceptBody {
30
+ acceptedSequence: number;
31
+ }
32
+ /** Body of a `reject` / `abort`. */
33
+ export interface RfqEndBody {
34
+ reason?: string;
35
+ }
36
+ /** A standing proposal on the table. */
37
+ export interface StandingProposal {
38
+ sequence: number;
39
+ sender: ClaimReference;
40
+ terms: unknown;
41
+ }
42
+ export interface RfqOutcome {
43
+ state: RfqState;
44
+ /** Set when `state === "accepted"`: the terms that were agreed. */
45
+ agreedTerms?: unknown;
46
+ /** Sequence of the proposal that was accepted. */
47
+ acceptedSequence?: number;
48
+ /** Reason for a reject / abort, if given. */
49
+ reason?: string;
50
+ }
51
+ export interface RfqSessionOpts {
52
+ /** This party's CCI primary claim. */
53
+ me: ClaimReference;
54
+ /**
55
+ * Delivers a signed channel message. Wire to the transport's send
56
+ * (e.g. `L2PSChannelTransport.send`). Returns the signed envelope so
57
+ * the session can track the sequence it produced.
58
+ */
59
+ send: (opts: {
60
+ type: ChannelMessageType;
61
+ body: unknown;
62
+ repliesTo?: number;
63
+ }) => Promise<ChannelMessage>;
64
+ /** Fired on every state transition (including the terminal one). */
65
+ onStateChange?: (outcome: RfqOutcome) => void;
66
+ /** Fired when a fresh proposal (offer/counter) lands, ours or theirs. */
67
+ onProposal?: (proposal: StandingProposal) => void;
68
+ }
69
+ export declare class RfqSession {
70
+ private readonly me;
71
+ private readonly sendFn;
72
+ private readonly onStateChange?;
73
+ private readonly onProposal?;
74
+ private _state;
75
+ private _standing;
76
+ /** Every proposal seen, by sequence — so `accept` can resolve its terms. */
77
+ private readonly proposals;
78
+ private _outcome;
79
+ constructor(opts: RfqSessionOpts);
80
+ get state(): RfqState;
81
+ /** The proposal currently on the table, or null before the first offer. */
82
+ get standingProposal(): StandingProposal | null;
83
+ outcome(): RfqOutcome;
84
+ /** Open a negotiation with the first proposal. */
85
+ offer(terms: unknown): Promise<ChannelMessage>;
86
+ /** Counter the standing proposal with new terms. */
87
+ counter(terms: unknown): Promise<ChannelMessage>;
88
+ /** Accept the standing proposal — terminal (CH-5). */
89
+ accept(): Promise<ChannelMessage>;
90
+ /** Reject the negotiation — terminal (CH-5). */
91
+ reject(reason?: string): Promise<ChannelMessage>;
92
+ /** Abort the negotiation — terminal (CH-5). */
93
+ abort(reason?: string): Promise<ChannelMessage>;
94
+ /**
95
+ * Feed a verified inbound channel message. No-op for non-RFQ types or
96
+ * messages arriving after a terminal state (a late duplicate of an
97
+ * end message). Throws only on a protocol violation that the channel
98
+ * layer can't catch (e.g. accept referencing an unknown proposal).
99
+ */
100
+ onIncoming(msg: ChannelMessage): void;
101
+ /** Record a verified inbound offer/counter as the standing proposal. */
102
+ private acceptProposal;
103
+ private proposeOutgoing;
104
+ private settle;
105
+ private assertOpen;
106
+ }
@@ -0,0 +1,206 @@
1
+ /**
2
+ * SR-4 WI-B — `negotiate-rfq` phase logic.
3
+ *
4
+ * A request-for-quote negotiation is a turn-based exchange of `offer` /
5
+ * `counter` proposals terminating in `accept`, `reject`, or `abort`
6
+ * (CH-5 termination; DACS-3 §8.3). Per the SR-4 brief the RFQ message
7
+ * *bodies* are implementation-defined (only sealed-envelope bodies are
8
+ * spec-locked, §8.4.3), so this layer fixes a minimal body schema and
9
+ * the state machine while staying agnostic to the actual `terms`.
10
+ *
11
+ * `RfqSession` is a pure protocol state machine. It does not move bytes:
12
+ * the caller wires its `send` callback to a transport (e.g.
13
+ * `L2PSChannelTransport.send`) and feeds verified inbound envelopes to
14
+ * `onIncoming`. By the time a message reaches `onIncoming` the channel
15
+ * layer has already verified the signature, `sender ∈ members`, the
16
+ * channelId, and monotonic sequence — so this layer only enforces
17
+ * protocol-level rules (legal transitions, body shape, referencing an
18
+ * existing offer).
19
+ */
20
+ const RFQ_TYPES = new Set([
21
+ "offer",
22
+ "counter",
23
+ "accept",
24
+ "reject",
25
+ "abort",
26
+ ]);
27
+ export class RfqSession {
28
+ constructor(opts) {
29
+ this._state = "open";
30
+ this._standing = null;
31
+ /** Every proposal seen, by sequence — so `accept` can resolve its terms. */
32
+ this.proposals = new Map();
33
+ this._outcome = { state: "open" };
34
+ this.me = opts.me;
35
+ this.sendFn = opts.send;
36
+ this.onStateChange = opts.onStateChange;
37
+ this.onProposal = opts.onProposal;
38
+ }
39
+ get state() {
40
+ return this._state;
41
+ }
42
+ /** The proposal currently on the table, or null before the first offer. */
43
+ get standingProposal() {
44
+ return this._standing;
45
+ }
46
+ outcome() {
47
+ return this._outcome;
48
+ }
49
+ /** Open a negotiation with the first proposal. */
50
+ async offer(terms) {
51
+ this.assertOpen("offer");
52
+ if (this._standing)
53
+ throw new Error("RfqSession: a proposal already stands; use counter()");
54
+ return this.proposeOutgoing("offer", terms);
55
+ }
56
+ /** Counter the standing proposal with new terms. */
57
+ async counter(terms) {
58
+ this.assertOpen("counter");
59
+ if (!this._standing)
60
+ throw new Error("RfqSession: nothing to counter — no standing offer");
61
+ return this.proposeOutgoing("counter", terms, this._standing.sequence);
62
+ }
63
+ /** Accept the standing proposal — terminal (CH-5). */
64
+ async accept() {
65
+ this.assertOpen("accept");
66
+ if (!this._standing)
67
+ throw new Error("RfqSession: nothing to accept — no standing offer");
68
+ // You cannot accept your own proposal: acceptance is the
69
+ // counterparty agreeing to the terms on the table. Accepting a
70
+ // self-authored standing proposal would settle the negotiation
71
+ // (and produce a transcript) without the other side ever agreeing.
72
+ if (this._standing.sender === this.me)
73
+ throw new Error("RfqSession: cannot accept your own proposal — wait for the counterparty");
74
+ const accepted = this._standing;
75
+ const body = { acceptedSequence: accepted.sequence };
76
+ const msg = await this.sendFn({
77
+ type: "accept",
78
+ body,
79
+ repliesTo: accepted.sequence,
80
+ });
81
+ this.settle({
82
+ state: "accepted",
83
+ agreedTerms: accepted.terms,
84
+ acceptedSequence: accepted.sequence,
85
+ });
86
+ return msg;
87
+ }
88
+ /** Reject the negotiation — terminal (CH-5). */
89
+ async reject(reason) {
90
+ this.assertOpen("reject");
91
+ const body = reason ? { reason } : {};
92
+ const msg = await this.sendFn({ type: "reject", body });
93
+ this.settle({ state: "rejected", reason });
94
+ return msg;
95
+ }
96
+ /** Abort the negotiation — terminal (CH-5). */
97
+ async abort(reason) {
98
+ this.assertOpen("abort");
99
+ const body = reason ? { reason } : {};
100
+ const msg = await this.sendFn({ type: "abort", body });
101
+ this.settle({ state: "aborted", reason });
102
+ return msg;
103
+ }
104
+ /**
105
+ * Feed a verified inbound channel message. No-op for non-RFQ types or
106
+ * messages arriving after a terminal state (a late duplicate of an
107
+ * end message). Throws only on a protocol violation that the channel
108
+ * layer can't catch (e.g. accept referencing an unknown proposal).
109
+ */
110
+ onIncoming(msg) {
111
+ if (!RFQ_TYPES.has(msg.type))
112
+ return;
113
+ if (msg.sender === this.me)
114
+ return; // our own echo, already applied
115
+ if (this._state !== "open")
116
+ return; // terminal — ignore trailing traffic
117
+ switch (msg.type) {
118
+ case "offer": {
119
+ // An offer opens a negotiation: it is only legal when no
120
+ // proposal stands yet. A second inbound offer must not
121
+ // overwrite the standing proposal — `offer()` rejects the
122
+ // same case outbound, so the inbound path enforces it too.
123
+ if (this._standing)
124
+ throw new Error(`RfqSession: inbound offer (seq ${msg.sequence}) but a proposal already stands (seq ${this._standing.sequence})`);
125
+ this.acceptProposal(msg);
126
+ break;
127
+ }
128
+ case "counter": {
129
+ // A counter replaces the standing proposal — illegal before
130
+ // any offer exists, mirroring `counter()` outbound.
131
+ if (!this._standing)
132
+ throw new Error(`RfqSession: inbound counter (seq ${msg.sequence}) but no standing offer to counter`);
133
+ this.acceptProposal(msg);
134
+ break;
135
+ }
136
+ case "accept": {
137
+ const seq = msg.body?.acceptedSequence;
138
+ const accepted = this.proposals.get(seq);
139
+ if (!accepted)
140
+ throw new Error(`RfqSession: accept references unknown proposal sequence ${seq}`);
141
+ // The accept must reference the proposal currently on the
142
+ // table. Once a counter supersedes an earlier offer, that
143
+ // older offer is off the table — accepting it would settle
144
+ // obsolete terms instead of what is currently being
145
+ // negotiated.
146
+ if (!this._standing || seq !== this._standing.sequence)
147
+ throw new Error(`RfqSession: accept references stale proposal seq ${seq}; standing proposal is seq ${this._standing?.sequence ?? "none"}`);
148
+ this.settle({
149
+ state: "accepted",
150
+ agreedTerms: accepted.terms,
151
+ acceptedSequence: seq,
152
+ });
153
+ break;
154
+ }
155
+ case "reject": {
156
+ this.settle({
157
+ state: "rejected",
158
+ reason: msg.body?.reason,
159
+ });
160
+ break;
161
+ }
162
+ case "abort": {
163
+ this.settle({
164
+ state: "aborted",
165
+ reason: msg.body?.reason,
166
+ });
167
+ break;
168
+ }
169
+ }
170
+ }
171
+ /** Record a verified inbound offer/counter as the standing proposal. */
172
+ acceptProposal(msg) {
173
+ const terms = msg.body?.terms;
174
+ const proposal = {
175
+ sequence: msg.sequence,
176
+ sender: msg.sender,
177
+ terms,
178
+ };
179
+ this.proposals.set(msg.sequence, proposal);
180
+ this._standing = proposal;
181
+ this.onProposal?.(proposal);
182
+ }
183
+ async proposeOutgoing(type, terms, repliesTo) {
184
+ const body = { terms };
185
+ const msg = await this.sendFn({ type, body, repliesTo });
186
+ const proposal = {
187
+ sequence: msg.sequence,
188
+ sender: this.me,
189
+ terms,
190
+ };
191
+ this.proposals.set(msg.sequence, proposal);
192
+ this._standing = proposal;
193
+ this.onProposal?.(proposal);
194
+ return msg;
195
+ }
196
+ settle(outcome) {
197
+ this._state = outcome.state;
198
+ this._outcome = outcome;
199
+ this.onStateChange?.(outcome);
200
+ }
201
+ assertOpen(action) {
202
+ if (this._state !== "open")
203
+ throw new Error(`RfqSession: cannot ${action} — negotiation is ${this._state}`);
204
+ }
205
+ }
206
+ //# sourceMappingURL=negotiate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"negotiate.js","sourceRoot":"","sources":["../../../../src/l2ps/channel/negotiate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAyDH,MAAM,SAAS,GAAoC,IAAI,GAAG,CAAqB;IAC3E,OAAO;IACP,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,OAAO;CACV,CAAC,CAAA;AAEF,MAAM,OAAO,UAAU;IAYnB,YAAY,IAAoB;QANxB,WAAM,GAAa,MAAM,CAAA;QACzB,cAAS,GAA4B,IAAI,CAAA;QACjD,4EAA4E;QAC3D,cAAS,GAAG,IAAI,GAAG,EAA4B,CAAA;QACxD,aAAQ,GAAe,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;QAG5C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAA;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;IACrC,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IACD,2EAA2E;IAC3E,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAA;IACzB,CAAC;IACD,OAAO;QACH,OAAO,IAAI,CAAC,QAAQ,CAAA;IACxB,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,KAAK,CAAC,KAAc;QACtB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACxB,IAAI,IAAI,CAAC,SAAS;YACd,MAAM,IAAI,KAAK,CACX,sDAAsD,CACzD,CAAA;QACL,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC/C,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,OAAO,CAAC,KAAc;QACxB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS;YACf,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;QACzE,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC1E,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,MAAM;QACR,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS;YACf,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QACxE,yDAAyD;QACzD,+DAA+D;QAC/D,+DAA+D;QAC/D,mEAAmE;QACnE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CACX,yEAAyE,CAC5E,CAAA;QACL,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;QAC/B,MAAM,IAAI,GAAkB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACnE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,QAAQ;YACd,IAAI;YACJ,SAAS,EAAE,QAAQ,CAAC,QAAQ;SAC/B,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC;YACR,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,QAAQ,CAAC,KAAK;YAC3B,gBAAgB,EAAE,QAAQ,CAAC,QAAQ;SACtC,CAAC,CAAA;QACF,OAAO,GAAG,CAAA;IACd,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,MAAM,CAAC,MAAe;QACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QACzB,MAAM,IAAI,GAAe,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACjD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAA;QAC1C,OAAO,GAAG,CAAA;IACd,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,KAAK,CAAC,MAAe;QACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACxB,MAAM,IAAI,GAAe,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACjD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;QACzC,OAAO,GAAG,CAAA;IACd,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,GAAmB;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAM;QACpC,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE;YAAE,OAAM,CAAC,gCAAgC;QACnE,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;YAAE,OAAM,CAAC,qCAAqC;QAExE,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,OAAO,CAAC,CAAC,CAAC;gBACX,yDAAyD;gBACzD,uDAAuD;gBACvD,0DAA0D;gBAC1D,2DAA2D;gBAC3D,IAAI,IAAI,CAAC,SAAS;oBACd,MAAM,IAAI,KAAK,CACX,kCAAkC,GAAG,CAAC,QAAQ,wCAAwC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CACnH,CAAA;gBACL,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;gBACxB,MAAK;YACT,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACb,4DAA4D;gBAC5D,oDAAoD;gBACpD,IAAI,CAAC,IAAI,CAAC,SAAS;oBACf,MAAM,IAAI,KAAK,CACX,oCAAoC,GAAG,CAAC,QAAQ,oCAAoC,CACvF,CAAA;gBACL,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;gBACxB,MAAK;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,MAAM,GAAG,GAAI,GAAG,CAAC,IAAsB,EAAE,gBAAgB,CAAA;gBACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACxC,IAAI,CAAC,QAAQ;oBACT,MAAM,IAAI,KAAK,CACX,2DAA2D,GAAG,EAAE,CACnE,CAAA;gBACL,0DAA0D;gBAC1D,0DAA0D;gBAC1D,2DAA2D;gBAC3D,oDAAoD;gBACpD,cAAc;gBACd,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ;oBAClD,MAAM,IAAI,KAAK,CACX,oDAAoD,GAAG,8BACnD,IAAI,CAAC,SAAS,EAAE,QAAQ,IAAI,MAChC,EAAE,CACL,CAAA;gBACL,IAAI,CAAC,MAAM,CAAC;oBACR,KAAK,EAAE,UAAU;oBACjB,WAAW,EAAE,QAAQ,CAAC,KAAK;oBAC3B,gBAAgB,EAAE,GAAG;iBACxB,CAAC,CAAA;gBACF,MAAK;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC;oBACR,KAAK,EAAE,UAAU;oBACjB,MAAM,EAAG,GAAG,CAAC,IAAmB,EAAE,MAAM;iBAC3C,CAAC,CAAA;gBACF,MAAK;YACT,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC;oBACR,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAG,GAAG,CAAC,IAAmB,EAAE,MAAM;iBAC3C,CAAC,CAAA;gBACF,MAAK;YACT,CAAC;QACL,CAAC;IACL,CAAC;IAED,wEAAwE;IAChE,cAAc,CAAC,GAAmB;QACtC,MAAM,KAAK,GAAI,GAAG,CAAC,IAAwB,EAAE,KAAK,CAAA;QAClD,MAAM,QAAQ,GAAqB;YAC/B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,KAAK;SACR,CAAA;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC1C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAEO,KAAK,CAAC,eAAe,CACzB,IAAyB,EACzB,KAAc,EACd,SAAkB;QAElB,MAAM,IAAI,GAAoB,EAAE,KAAK,EAAE,CAAA;QACvC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QACxD,MAAM,QAAQ,GAAqB;YAC/B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,KAAK;SACR,CAAA;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC1C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC3B,OAAO,GAAG,CAAA;IACd,CAAC;IAEO,MAAM,CAAC,OAAmB;QAC9B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAA;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAEO,UAAU,CAAC,MAAc;QAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;YACtB,MAAM,IAAI,KAAK,CACX,sBAAsB,MAAM,qBAAqB,IAAI,CAAC,MAAM,EAAE,CACjE,CAAA;IACT,CAAC;CACJ"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * SR-4 WI-A — Channel-over-L2PS transport adapter.
3
+ *
4
+ * The DACS channel layer (`ChannelSession`) is transport-agnostic: it
5
+ * produces signed `ChannelMessage` envelopes and verifies incoming ones,
6
+ * but does not move bytes. The L2PS instant-messaging layer
7
+ * (`L2PSMessagingPeer`) moves encrypted bytes between subnet members but
8
+ * knows nothing about channel envelopes. This adapter bridges the two:
9
+ * it serialises + encrypts an outgoing envelope onto the messaging
10
+ * transport, and on the receive side decrypts, deserialises, and feeds
11
+ * envelopes into the session **in strict sequence order**.
12
+ *
13
+ * Why a reorder buffer is mandatory:
14
+ * `ChannelSession.receiveIncoming` accepts any sequence strictly greater
15
+ * than the highest it has seen and then advances its counter to that
16
+ * value — so a *gap* (seq N+2 arriving before N+1) is not rejected, it
17
+ * permanently skips the missing messages. The L2PS transport delivers by
18
+ * timestamp and replays an offline queue, so out-of-order arrival is
19
+ * normal. This adapter therefore only hands the session the next
20
+ * contiguous sequence and buffers anything ahead of the gap until it
21
+ * fills.
22
+ *
23
+ * Scope / assumptions:
24
+ * - The shared per-channel sequence counter assumes turn-based messaging
25
+ * (DACS negotiation is offer → counter → accept; a party waits for the
26
+ * counter before replying). Two parties emitting the same sequence
27
+ * concurrently is out of scope for SR-4 v1; such a colliding inbound
28
+ * message (seq <= already-applied) is dropped as a duplicate.
29
+ * - Membership is the channel's `members`; the transport sends to every
30
+ * member except self. Confidentiality is the subnet AES key (only
31
+ * members hold it) — CH-2.
32
+ */
33
+ import type { ChannelMessage, ChannelMessageType } from "./types";
34
+ /**
35
+ * Minimal surface of `ChannelSession` the adapter depends on. Declared
36
+ * structurally so tests can inject a fake without real signing keys.
37
+ */
38
+ export interface ChannelSessionLike {
39
+ readonly channelId: string;
40
+ sendOutgoing(opts: {
41
+ type: ChannelMessageType;
42
+ body: unknown;
43
+ sentAt?: number;
44
+ repliesTo?: number;
45
+ }): Promise<ChannelMessage>;
46
+ receiveIncoming(msg: ChannelMessage): Promise<void>;
47
+ }
48
+ /** Wire shape the L2PS messaging transport carries (ciphertext + nonce, base64). */
49
+ export interface SerializedEncryptedMessage {
50
+ ciphertext: string;
51
+ nonce: string;
52
+ ephemeralKey?: string;
53
+ }
54
+ /** Incoming payload the messaging peer hands to an onMessage handler. */
55
+ export interface IncomingMessagePayload {
56
+ from: string;
57
+ encrypted: SerializedEncryptedMessage;
58
+ messageHash: string;
59
+ offline?: boolean;
60
+ }
61
+ /**
62
+ * Minimal surface of `L2PSMessagingPeer` the adapter depends on.
63
+ * Declared structurally for the same reason as `ChannelSessionLike`.
64
+ */
65
+ export interface L2PSMessagingPeerLike {
66
+ send(to: string, encrypted: SerializedEncryptedMessage, messageHash: string): Promise<unknown>;
67
+ onMessage(handler: (payload: IncomingMessagePayload) => void): void;
68
+ }
69
+ export interface L2PSChannelTransportOpts {
70
+ session: ChannelSessionLike;
71
+ peer: L2PSMessagingPeerLike;
72
+ /** Subnet AES-256 key (raw 32 bytes) — only members hold it (CH-2). */
73
+ sharedKey: Uint8Array;
74
+ /**
75
+ * Recipient public keys to deliver to (every channel member except
76
+ * self), in the format the messaging peer routes on.
77
+ */
78
+ recipients: string[];
79
+ /** Called with each envelope once it has been applied in order. */
80
+ onMessage?: (msg: ChannelMessage) => void;
81
+ /** Called on a decrypt / parse / verification failure. */
82
+ onError?: (err: Error) => void;
83
+ }
84
+ export declare class L2PSChannelTransport {
85
+ private readonly session;
86
+ private readonly peer;
87
+ private readonly sharedKey;
88
+ private readonly recipients;
89
+ private readonly onMessage?;
90
+ private readonly onError?;
91
+ /** Sequences seen ahead of the gap, awaiting contiguous application. */
92
+ private readonly buffer;
93
+ /** Highest contiguous sequence applied locally (sent or received). */
94
+ private appliedSeq;
95
+ /** Serialises drain() so concurrent inbound frames can't interleave. */
96
+ private draining;
97
+ private started;
98
+ constructor(opts: L2PSChannelTransportOpts);
99
+ /** Wire the peer's inbound handler. Call once. */
100
+ start(): void;
101
+ /**
102
+ * Build + sign the next outgoing envelope via the session, encrypt
103
+ * it under the subnet key, and deliver to every recipient.
104
+ */
105
+ send(opts: {
106
+ type: ChannelMessageType;
107
+ body: unknown;
108
+ repliesTo?: number;
109
+ }): Promise<ChannelMessage>;
110
+ private ingest;
111
+ /** Apply every buffered message that is now contiguous with appliedSeq. */
112
+ private drain;
113
+ /** Count of out-of-order messages currently held awaiting the gap. */
114
+ get bufferedCount(): number;
115
+ private encrypt;
116
+ private decrypt;
117
+ }
@@ -0,0 +1,178 @@
1
+ /**
2
+ * SR-4 WI-A — Channel-over-L2PS transport adapter.
3
+ *
4
+ * The DACS channel layer (`ChannelSession`) is transport-agnostic: it
5
+ * produces signed `ChannelMessage` envelopes and verifies incoming ones,
6
+ * but does not move bytes. The L2PS instant-messaging layer
7
+ * (`L2PSMessagingPeer`) moves encrypted bytes between subnet members but
8
+ * knows nothing about channel envelopes. This adapter bridges the two:
9
+ * it serialises + encrypts an outgoing envelope onto the messaging
10
+ * transport, and on the receive side decrypts, deserialises, and feeds
11
+ * envelopes into the session **in strict sequence order**.
12
+ *
13
+ * Why a reorder buffer is mandatory:
14
+ * `ChannelSession.receiveIncoming` accepts any sequence strictly greater
15
+ * than the highest it has seen and then advances its counter to that
16
+ * value — so a *gap* (seq N+2 arriving before N+1) is not rejected, it
17
+ * permanently skips the missing messages. The L2PS transport delivers by
18
+ * timestamp and replays an offline queue, so out-of-order arrival is
19
+ * normal. This adapter therefore only hands the session the next
20
+ * contiguous sequence and buffers anything ahead of the gap until it
21
+ * fills.
22
+ *
23
+ * Scope / assumptions:
24
+ * - The shared per-channel sequence counter assumes turn-based messaging
25
+ * (DACS negotiation is offer → counter → accept; a party waits for the
26
+ * counter before replying). Two parties emitting the same sequence
27
+ * concurrently is out of scope for SR-4 v1; such a colliding inbound
28
+ * message (seq <= already-applied) is dropped as a duplicate.
29
+ * - Membership is the channel's `members`; the transport sends to every
30
+ * member except self. Confidentiality is the subnet AES key (only
31
+ * members hold it) — CH-2.
32
+ */
33
+ /**
34
+ * Max number of sequences a buffered inbound frame may sit ahead of the
35
+ * current contiguous point before it is dropped, bounding reorder-buffer
36
+ * memory. Turn-based negotiation never legitimately exceeds this.
37
+ */
38
+ const MAX_REORDER_AHEAD = 256;
39
+ export class L2PSChannelTransport {
40
+ constructor(opts) {
41
+ /** Sequences seen ahead of the gap, awaiting contiguous application. */
42
+ this.buffer = new Map();
43
+ /** Highest contiguous sequence applied locally (sent or received). */
44
+ this.appliedSeq = 0;
45
+ /** Serialises drain() so concurrent inbound frames can't interleave. */
46
+ this.draining = Promise.resolve();
47
+ this.started = false;
48
+ this.session = opts.session;
49
+ this.peer = opts.peer;
50
+ this.sharedKey = opts.sharedKey;
51
+ this.recipients = opts.recipients;
52
+ this.onMessage = opts.onMessage;
53
+ this.onError = opts.onError;
54
+ }
55
+ /** Wire the peer's inbound handler. Call once. */
56
+ start() {
57
+ if (this.started)
58
+ throw new Error("L2PSChannelTransport: already started");
59
+ this.started = true;
60
+ this.peer.onMessage(payload => {
61
+ // Chain onto `draining` so frames are processed one at a time
62
+ // in arrival order; each appends to the buffer then drains.
63
+ this.draining = this.draining
64
+ .then(() => this.ingest(payload))
65
+ .catch(err => this.onError?.(err));
66
+ });
67
+ }
68
+ /**
69
+ * Build + sign the next outgoing envelope via the session, encrypt
70
+ * it under the subnet key, and deliver to every recipient.
71
+ */
72
+ async send(opts) {
73
+ const signed = await this.session.sendOutgoing(opts);
74
+ const encrypted = await this.encrypt(JSON.stringify(signed));
75
+ const messageHash = signed.signature.signature; // unique per signed envelope
76
+ // Deliver to every recipient BEFORE committing the sequence locally.
77
+ // If any send rejects, the throw propagates here and appliedSeq is
78
+ // left untouched, so a retry re-emits the same sequence rather than
79
+ // skipping ahead and stranding peers behind a reorder gap. (Recipients
80
+ // that did receive it will drop the duplicate on resend — seq <=
81
+ // appliedSeq — so at-least-once delivery is safe.)
82
+ for (const to of this.recipients) {
83
+ await this.peer.send(to, encrypted, messageHash);
84
+ }
85
+ // Our own send advances the shared per-channel counter; record it
86
+ // so we expect the peer's reply at appliedSeq + 1.
87
+ if (signed.sequence > this.appliedSeq)
88
+ this.appliedSeq = signed.sequence;
89
+ return signed;
90
+ }
91
+ async ingest(payload) {
92
+ let msg;
93
+ try {
94
+ const json = await this.decrypt(payload.encrypted);
95
+ msg = JSON.parse(json);
96
+ }
97
+ catch (e) {
98
+ throw new Error(`L2PSChannelTransport: failed to decrypt/parse inbound frame from ${payload.from}: ${e.message}`);
99
+ }
100
+ // Ignore traffic for other channels sharing the same subnet.
101
+ if (msg.channelId !== this.session.channelId)
102
+ return;
103
+ // Duplicate / already-applied (or a colliding concurrent send): drop.
104
+ if (msg.sequence <= this.appliedSeq)
105
+ return;
106
+ // Bound the reorder window: a member could otherwise stream many
107
+ // validly-encrypted frames at far-future sequences without ever
108
+ // filling the gap, growing `buffer` without limit. Drop anything
109
+ // beyond MAX_REORDER_AHEAD of the current contiguous point — a
110
+ // legitimate turn-based negotiation never runs that far ahead, and
111
+ // a dropped frame is re-deliverable (the offline queue replays it
112
+ // once the gap closes and appliedSeq advances).
113
+ if (msg.sequence > this.appliedSeq + MAX_REORDER_AHEAD) {
114
+ this.onError?.(new Error(`L2PSChannelTransport: dropping seq ${msg.sequence} — ` +
115
+ `more than ${MAX_REORDER_AHEAD} ahead of applied ${this.appliedSeq}`));
116
+ return;
117
+ }
118
+ // Buffer; a later sequence with the same value would be a protocol
119
+ // error — keep the first seen.
120
+ if (!this.buffer.has(msg.sequence))
121
+ this.buffer.set(msg.sequence, msg);
122
+ await this.drain();
123
+ }
124
+ /** Apply every buffered message that is now contiguous with appliedSeq. */
125
+ async drain() {
126
+ // Sequence counter is shared across both directions, so the next
127
+ // expected inbound is appliedSeq + 1.
128
+ let next = this.buffer.get(this.appliedSeq + 1);
129
+ while (next) {
130
+ this.buffer.delete(next.sequence);
131
+ // Throws on tamper (bad signature, wrong sender, channelId
132
+ // mismatch) — propagate as channel-fatal per §8.12.
133
+ await this.session.receiveIncoming(next);
134
+ this.appliedSeq = next.sequence;
135
+ this.onMessage?.(next);
136
+ next = this.buffer.get(this.appliedSeq + 1);
137
+ }
138
+ }
139
+ /** Count of out-of-order messages currently held awaiting the gap. */
140
+ get bufferedCount() {
141
+ return this.buffer.size;
142
+ }
143
+ // ── AES-256-GCM (Web Crypto) — matches the messaging wire format:
144
+ // ciphertext (with auth tag) + 12-byte nonce, both base64. ──
145
+ async encrypt(plaintext) {
146
+ const nonce = crypto.getRandomValues(new Uint8Array(12));
147
+ const key = await crypto.subtle.importKey("raw", keyBytes(this.sharedKey), "AES-GCM", false, ["encrypt"]);
148
+ const cipher = await crypto.subtle.encrypt({ name: "AES-GCM", iv: nonce }, key, new TextEncoder().encode(plaintext));
149
+ return {
150
+ ciphertext: bytesToBase64(new Uint8Array(cipher)),
151
+ nonce: bytesToBase64(nonce),
152
+ };
153
+ }
154
+ async decrypt(enc) {
155
+ const key = await crypto.subtle.importKey("raw", keyBytes(this.sharedKey), "AES-GCM", false, ["decrypt"]);
156
+ const plain = await crypto.subtle.decrypt({ name: "AES-GCM", iv: base64ToBytes(enc.nonce) }, key, base64ToBytes(enc.ciphertext));
157
+ return new TextDecoder().decode(plain);
158
+ }
159
+ }
160
+ /**
161
+ * Return a standalone `ArrayBuffer` holding exactly the bytes of `view`.
162
+ * `view.buffer` exposes the whole backing buffer, which for a `subarray`
163
+ * (e.g. a 32-byte key sliced out of a larger buffer) is longer than the
164
+ * view — Web Crypto would then see the wrong length / wrong bytes and
165
+ * reject or mis-key the AES import. Copying the exact `[byteOffset,
166
+ * byteOffset+byteLength)` window guarantees the key import sees only the
167
+ * intended bytes.
168
+ */
169
+ function keyBytes(view) {
170
+ return view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength);
171
+ }
172
+ function bytesToBase64(bytes) {
173
+ return Buffer.from(bytes).toString("base64");
174
+ }
175
+ function base64ToBytes(b64) {
176
+ return new Uint8Array(Buffer.from(b64, "base64"));
177
+ }
178
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/l2ps/channel/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,GAAG,CAAA;AA6D7B,MAAM,OAAO,oBAAoB;IAgB7B,YAAY,IAA8B;QAR1C,wEAAwE;QACvD,WAAM,GAAG,IAAI,GAAG,EAA0B,CAAA;QAC3D,sEAAsE;QAC9D,eAAU,GAAG,CAAC,CAAA;QACtB,wEAAwE;QAChE,aAAQ,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;QAC3C,YAAO,GAAG,KAAK,CAAA;QAGnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC/B,CAAC;IAED,kDAAkD;IAClD,KAAK;QACD,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YAC1B,8DAA8D;YAC9D,4DAA4D;YAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;iBACxB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBAChC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAY,CAAC,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,IAIV;QACG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAEpD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAA,CAAC,6BAA6B;QAC5E,qEAAqE;QACrE,mEAAmE;QACnE,oEAAoE;QACpE,uEAAuE;QACvE,iEAAiE;QACjE,mDAAmD;QACnD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;QACpD,CAAC;QAED,kEAAkE;QAClE,mDAAmD;QACnD,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAA;QACxE,OAAO,MAAM,CAAA;IACjB,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,OAA+B;QAChD,IAAI,GAAmB,CAAA;QACvB,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAClD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAA;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACX,oEAAoE,OAAO,CAAC,IAAI,KAC3E,CAAW,CAAC,OACjB,EAAE,CACL,CAAA;QACL,CAAC;QAED,6DAA6D;QAC7D,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,OAAM;QACpD,sEAAsE;QACtE,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU;YAAE,OAAM;QAC3C,iEAAiE;QACjE,gEAAgE;QAChE,iEAAiE;QACjE,+DAA+D;QAC/D,mEAAmE;QACnE,kEAAkE;QAClE,gDAAgD;QAChD,IAAI,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,OAAO,EAAE,CACV,IAAI,KAAK,CACL,sCAAsC,GAAG,CAAC,QAAQ,KAAK;gBACnD,aAAa,iBAAiB,qBAAqB,IAAI,CAAC,UAAU,EAAE,CAC3E,CACJ,CAAA;YACD,OAAM;QACV,CAAC;QACD,mEAAmE;QACnE,+BAA+B;QAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;QAEtE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAED,2EAA2E;IACnE,KAAK,CAAC,KAAK;QACf,iEAAiE;QACjE,sCAAsC;QACtC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;QAC/C,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACjC,2DAA2D;YAC3D,oDAAoD;YACpD,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAA;YAC/B,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAA;YACtB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;QAC/C,CAAC;IACL,CAAC;IAED,sEAAsE;IACtE,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;IAC3B,CAAC;IAED,mEAAmE;IACnE,iEAAiE;IAEzD,KAAK,CAAC,OAAO,CAAC,SAAiB;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACrC,KAAK,EACL,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EACxB,SAAS,EACT,KAAK,EACL,CAAC,SAAS,CAAC,CACd,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CACtC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,EAC9B,GAAG,EACH,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CACtC,CAAA;QACD,OAAO;YACH,UAAU,EAAE,aAAa,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACjD,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;SAC9B,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,GAA+B;QACjD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACrC,KAAK,EACL,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EACxB,SAAS,EACT,KAAK,EACL,CAAC,SAAS,CAAC,CACd,CAAA;QACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CACrC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAiB,EAAE,EACjE,GAAG,EACH,aAAa,CAAC,GAAG,CAAC,UAAU,CAAiB,CAChD,CAAA;QACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;CACJ;AAED;;;;;;;;GAQG;AACH,SAAS,QAAQ,CAAC,IAAgB;IAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CACpB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CACrB,CAAA;AACpB,CAAC;AAED,SAAS,aAAa,CAAC,KAAiB;IACpC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAChD,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAC9B,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;AACrD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BroadcastFailedError.js","sourceRoot":"","sources":["../../../src/websdk/BroadcastFailedError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAI3C,YAAY,IAA0D;QAClE,MAAM,YAAY,GACb,IAAI,CAAC,KAAa,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAA;QACnE,KAAK,CACD,IAAI,CAAC,OAAO;YACR,iEAAiE,IAAI,CAAC,MAAM,MAAM,YAAY,EAAE,CACvG,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC3B,CAAC;CACJ"}
1
+ {"version":3,"file":"BroadcastFailedError.js","sourceRoot":"","sources":["../../../src/websdk/BroadcastFailedError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAM3C,YAAY,IAA0D;QAClE,MAAM,YAAY,GACb,IAAI,CAAC,KAAa,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAA;QACnE,KAAK,CACD,IAAI,CAAC,OAAO;YACR,iEAAiE,IAAI,CAAC,MAAM,MAAM,YAAY,EAAE,CACvG,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC3B,CAAC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"TransportError.js","sourceRoot":"","sources":["../../../src/websdk/TransportError.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAIrC,YAAY,OAAe,EAAE,IAA0C;QACnE,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC3B,CAAC;CACJ"}
1
+ {"version":3,"file":"TransportError.js","sourceRoot":"","sources":["../../../src/websdk/TransportError.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAMrC,YAAY,OAAe,EAAE,IAA0C;QACnE,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC3B,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynesyslabs/demosdk",
3
- "version": "4.0.11",
3
+ "version": "4.0.12",
4
4
  "type": "module",
5
5
  "description": "Demosdk is a JavaScript/TypeScript SDK that provides a unified interface for interacting with Demos network",
6
6
  "main": "build/index.js",