@airterm/protocol 0.2.0 → 0.4.0
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/README.md +29 -9
- package/dist/direct-negotiation.d.ts +40 -0
- package/dist/direct-negotiation.d.ts.map +1 -0
- package/dist/direct-negotiation.js +169 -0
- package/dist/direct-negotiation.js.map +1 -0
- package/dist/framing.d.ts +4 -1
- package/dist/framing.d.ts.map +1 -1
- package/dist/framing.js +3 -0
- package/dist/framing.js.map +1 -1
- package/dist/index.d.ts +21 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -5
- package/dist/index.js.map +1 -1
- package/dist/messages.d.ts +3 -1
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +20 -6
- package/dist/messages.js.map +1 -1
- package/dist/naming.d.ts +19 -0
- package/dist/naming.d.ts.map +1 -0
- package/dist/naming.js +85 -0
- package/dist/naming.js.map +1 -0
- package/dist/outbound-queue.d.ts +17 -0
- package/dist/outbound-queue.d.ts.map +1 -0
- package/dist/outbound-queue.js +150 -0
- package/dist/outbound-queue.js.map +1 -0
- package/dist/p2p.d.ts +37 -0
- package/dist/p2p.d.ts.map +1 -0
- package/dist/p2p.js +91 -0
- package/dist/p2p.js.map +1 -0
- package/dist/pairing.d.ts +18 -0
- package/dist/pairing.d.ts.map +1 -0
- package/dist/pairing.js +48 -0
- package/dist/pairing.js.map +1 -0
- package/dist/peer-transport.d.ts +31 -0
- package/dist/peer-transport.d.ts.map +1 -0
- package/dist/peer-transport.js +155 -0
- package/dist/peer-transport.js.map +1 -0
- package/dist/relay-usage.d.ts +13 -0
- package/dist/relay-usage.d.ts.map +1 -0
- package/dist/relay-usage.js +18 -0
- package/dist/relay-usage.js.map +1 -0
- package/dist/transport-handoff.d.ts +25 -0
- package/dist/transport-handoff.d.ts.map +1 -0
- package/dist/transport-handoff.js +207 -0
- package/dist/transport-handoff.js.map +1 -0
- package/dist/transport.d.ts +39 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +92 -0
- package/dist/transport.js.map +1 -0
- package/dist/vault.d.ts +51 -0
- package/dist/vault.d.ts.map +1 -0
- package/dist/vault.js +215 -0
- package/dist/vault.js.map +1 -0
- package/dist/webrtc-transport.d.ts +14 -0
- package/dist/webrtc-transport.d.ts.map +1 -0
- package/dist/webrtc-transport.js +106 -0
- package/dist/webrtc-transport.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,14 +24,34 @@ import { deriveCapabilityKeys, NoiseTransport } from '@airterm/protocol';
|
|
|
24
24
|
Requires Node.js 22.12 or newer for Node-based consumers. Browser consumers need
|
|
25
25
|
Web Crypto and WebAssembly support.
|
|
26
26
|
|
|
27
|
-
##
|
|
27
|
+
## Direct transport extension
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
Protocol v1 framing is unchanged. `SessionDescription` advertises `p2p-v1`;
|
|
30
|
+
peers must explicitly accept it before using inner types 21 (`P2PControl`),
|
|
31
|
+
22 (`OutputAck`), and 23 (`RecoveryComplete`). Older peers remain on relay.
|
|
32
|
+
Acceptance can enable byte-offset recovery without attempting WebRTC.
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
`EncryptedConnection` owns each path's Noise state and bounded outbound queue.
|
|
35
|
+
Relay and direct paths have independent handshakes. Direct handshake binding
|
|
36
|
+
includes the session ID, relay pairing ID, and random negotiation ID. Signaling
|
|
37
|
+
and handoff coordination travel inside relay encryption. The gateway requires
|
|
38
|
+
no SDP/ICE parsing or protocol changes. Exactly one path carries application
|
|
39
|
+
data; acknowledgement and lifecycle coordination may still use relay.
|
|
40
|
+
|
|
41
|
+
SDP is limited to 32 KiB, candidates to 2 KiB each and 64 per peer, and signaling
|
|
42
|
+
to 256 KiB per peer. Direct frames are encrypted once, then fragmented into
|
|
43
|
+
messages no larger than 16 KiB. Receivers assemble one bounded frame at a time.
|
|
44
|
+
Negotiation has a ten-second deadline, transfer draining thirty seconds, and
|
|
45
|
+
handoff two seconds. Ambiguous handoffs require a fresh relay pairing.
|
|
46
|
+
|
|
47
|
+
Output acknowledgements refer to contiguous PTY byte offsets consumed by the
|
|
48
|
+
terminal renderer, not merely received by the socket. Never acknowledge across
|
|
49
|
+
a gap, reuse a cipher after failure, or replay uncertain terminal input.
|
|
50
|
+
|
|
51
|
+
## Account encryption envelopes (0.4 prerelease)
|
|
52
|
+
|
|
53
|
+
The vault and pairing exports are additive application envelopes; terminal protocol v1 framing is unchanged. Vaults use RSA-OAEP-3072/SHA-256, AES-256-GCM, and context-bound HKDF. Version 1 fixes passphrase Argon2id parameters at 64 MiB, three iterations, one lane, 16-byte salt, and 32-byte output; browser derivation lives in the application worker. Unknown fields, algorithms, versions, sizes, or substituted account/session context must fail closed.
|
|
54
|
+
|
|
55
|
+
Exactly one primary vault wrapper and one user-held recovery wrapper are supported. The pairing encryption secret is distinct from the polling credential and never reaches the server. These primitives do not authenticate a downloaded browser application or provide an independent cryptographic audit.
|
|
56
|
+
|
|
57
|
+
The backend pins a reproducible prerelease tarball until separately authorized registry publication. Publish the protocol before any CLI release that depends on it; do not relabel a prerelease artifact as an already published version.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { EncryptedConnection, type BinaryTransport } from './transport.js';
|
|
2
|
+
import type { InnerFrame } from './framing.js';
|
|
3
|
+
export interface RtcAdapter extends BinaryTransport {
|
|
4
|
+
offer(sdp: string): Promise<void>;
|
|
5
|
+
answer?(sdp: string): Promise<void>;
|
|
6
|
+
candidate(candidate: string, mid: string): Promise<void>;
|
|
7
|
+
start?(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export interface RtcAdapterEvents {
|
|
10
|
+
onOpen: () => void;
|
|
11
|
+
onData: (bytes: Uint8Array) => void;
|
|
12
|
+
onDescription: (sdp: string) => void;
|
|
13
|
+
onCandidate: (candidate: string, mid: string) => void;
|
|
14
|
+
onFailure: (error: Error) => void;
|
|
15
|
+
}
|
|
16
|
+
export type RtcAdapterFactory = (stun: string[], events: RtcAdapterEvents) => RtcAdapter;
|
|
17
|
+
export declare class DirectNegotiation {
|
|
18
|
+
#private;
|
|
19
|
+
readonly id: string;
|
|
20
|
+
private readonly initiator;
|
|
21
|
+
private readonly identity;
|
|
22
|
+
private readonly factory;
|
|
23
|
+
private readonly events;
|
|
24
|
+
constructor(id: string, initiator: boolean, identity: {
|
|
25
|
+
sessionId: string;
|
|
26
|
+
psk: Uint8Array;
|
|
27
|
+
pairing: string;
|
|
28
|
+
}, factory: RtcAdapterFactory, events: {
|
|
29
|
+
signal: (frame: InnerFrame) => Promise<void>;
|
|
30
|
+
ready: (connection: EncryptedConnection) => void;
|
|
31
|
+
frame: (frame: InnerFrame) => void;
|
|
32
|
+
pressure: (paused: boolean) => void;
|
|
33
|
+
failed: (error: Error) => void;
|
|
34
|
+
});
|
|
35
|
+
start(stun: string[], timeoutMs?: number): void;
|
|
36
|
+
receive(payload: Uint8Array): void;
|
|
37
|
+
close(): void;
|
|
38
|
+
fail(error: Error): void;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=direct-negotiation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-negotiation.d.ts","sourceRoot":"","sources":["../src/direct-negotiation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAQ3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,UAAW,SAAQ,eAAe;IAC/C,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AACD,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACrC;AACD,MAAM,MAAM,iBAAiB,GAAG,CAC5B,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,gBAAgB,KACvB,UAAU,CAAC;AAEhB,qBAAa,iBAAiB;;IAatB,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAKzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBARd,EAAE,EAAE,MAAM,EACF,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,UAAU,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACnB,EACgB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE;QACrB,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,EAAE,CAAC,UAAU,EAAE,mBAAmB,KAAK,IAAI,CAAC;QACjD,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;QACnC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACpC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KAClC;IAEE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,SAAQ,GAAG,IAAI;IA0E9C,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAgDlC,KAAK,IAAI,IAAI;IAUb,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAmBlC"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { EncryptedConnection } from './transport.js';
|
|
2
|
+
import { WebRTCTransport } from './webrtc-transport.js';
|
|
3
|
+
import { directConnectionId, p2pFrame, SignalingBudget, } from './p2p.js';
|
|
4
|
+
export class DirectNegotiation {
|
|
5
|
+
id;
|
|
6
|
+
initiator;
|
|
7
|
+
identity;
|
|
8
|
+
factory;
|
|
9
|
+
events;
|
|
10
|
+
#adapter;
|
|
11
|
+
#transport;
|
|
12
|
+
#connection;
|
|
13
|
+
#timer;
|
|
14
|
+
#closed = false;
|
|
15
|
+
#remoteDescription = false;
|
|
16
|
+
#descriptionPending = false;
|
|
17
|
+
#localDescription = false;
|
|
18
|
+
#candidates = [];
|
|
19
|
+
#incoming = new SignalingBudget();
|
|
20
|
+
#outgoing = new SignalingBudget();
|
|
21
|
+
constructor(id, initiator, identity, factory, events) {
|
|
22
|
+
this.id = id;
|
|
23
|
+
this.initiator = initiator;
|
|
24
|
+
this.identity = identity;
|
|
25
|
+
this.factory = factory;
|
|
26
|
+
this.events = events;
|
|
27
|
+
}
|
|
28
|
+
start(stun, timeoutMs = 10000) {
|
|
29
|
+
if (this.#adapter || this.#closed)
|
|
30
|
+
return;
|
|
31
|
+
this.#timer = setTimeout(() => this.fail(new Error('Direct negotiation timed out.')), timeoutMs);
|
|
32
|
+
try {
|
|
33
|
+
this.#adapter = this.factory(stun, {
|
|
34
|
+
onOpen: () => {
|
|
35
|
+
if (this.#closed || !this.#adapter)
|
|
36
|
+
return;
|
|
37
|
+
this.#transport = new WebRTCTransport(this.#adapter, (bytes) => this.#connection?.receive(bytes), (error) => this.fail(error));
|
|
38
|
+
this.#connection = new EncryptedConnection(this.#transport, {
|
|
39
|
+
initiator: this.initiator,
|
|
40
|
+
psk: this.identity.psk,
|
|
41
|
+
sessionId: this.identity.sessionId,
|
|
42
|
+
connectionId: directConnectionId(this.identity.pairing, this.id),
|
|
43
|
+
}, {
|
|
44
|
+
onSecure: () => {
|
|
45
|
+
clearTimeout(this.#timer);
|
|
46
|
+
this.#timer = undefined;
|
|
47
|
+
this.events.ready(this.#connection);
|
|
48
|
+
},
|
|
49
|
+
onFrame: (frame) => this.events.frame(frame),
|
|
50
|
+
onBackpressure: (paused) => this.events.pressure(paused),
|
|
51
|
+
onFailure: (error) => this.fail(error),
|
|
52
|
+
});
|
|
53
|
+
this.#connection.start();
|
|
54
|
+
},
|
|
55
|
+
onData: (bytes) => this.#transport?.receive(bytes),
|
|
56
|
+
onDescription: (sdp) => {
|
|
57
|
+
if (this.#localDescription) {
|
|
58
|
+
this.fail(new Error('Unexpected renegotiation.'));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
this.#localDescription = true;
|
|
62
|
+
this.#signal({
|
|
63
|
+
type: this.initiator ? 'offer' : 'answer',
|
|
64
|
+
id: this.id,
|
|
65
|
+
sdp,
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
onCandidate: (candidate, mid) => {
|
|
69
|
+
const normalized = candidate.replace(/^a=/, '').trim();
|
|
70
|
+
if (normalized)
|
|
71
|
+
this.#signal({
|
|
72
|
+
type: 'candidate',
|
|
73
|
+
id: this.id,
|
|
74
|
+
candidate: normalized,
|
|
75
|
+
mid,
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
onFailure: (error) => this.fail(error),
|
|
79
|
+
});
|
|
80
|
+
void this.#adapter.start?.().catch((error) => this.fail(error));
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
this.fail(error instanceof Error
|
|
84
|
+
? error
|
|
85
|
+
: new Error('Direct negotiation failed.'));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
receive(payload) {
|
|
89
|
+
if (this.#closed)
|
|
90
|
+
return;
|
|
91
|
+
try {
|
|
92
|
+
const message = this.#incoming.consume(payload);
|
|
93
|
+
if (message.id !== this.id)
|
|
94
|
+
throw new Error('Stale direct negotiation.');
|
|
95
|
+
if (message.type === 'offer' || message.type === 'answer') {
|
|
96
|
+
if (this.#remoteDescription ||
|
|
97
|
+
this.#descriptionPending ||
|
|
98
|
+
(message.type === 'offer') === this.initiator ||
|
|
99
|
+
!this.#adapter)
|
|
100
|
+
throw new Error('Unexpected SDP.');
|
|
101
|
+
this.#descriptionPending = true;
|
|
102
|
+
const applied = message.type === 'offer'
|
|
103
|
+
? this.#adapter.offer(message.sdp)
|
|
104
|
+
: this.#adapter.answer?.(message.sdp);
|
|
105
|
+
if (!applied)
|
|
106
|
+
throw new Error('Unsupported SDP role.');
|
|
107
|
+
void applied
|
|
108
|
+
.then(async () => {
|
|
109
|
+
if (this.#closed)
|
|
110
|
+
return;
|
|
111
|
+
this.#remoteDescription = true;
|
|
112
|
+
for (const candidate of this.#candidates.splice(0)) {
|
|
113
|
+
if (this.#closed)
|
|
114
|
+
return;
|
|
115
|
+
await this.#adapter?.candidate(candidate.candidate, candidate.mid);
|
|
116
|
+
}
|
|
117
|
+
})
|
|
118
|
+
.catch((error) => this.fail(error));
|
|
119
|
+
}
|
|
120
|
+
else if (message.type === 'candidate') {
|
|
121
|
+
if (!this.#remoteDescription)
|
|
122
|
+
this.#candidates.push(message);
|
|
123
|
+
else
|
|
124
|
+
void this.#adapter
|
|
125
|
+
?.candidate(message.candidate, message.mid)
|
|
126
|
+
.catch((error) => this.fail(error));
|
|
127
|
+
}
|
|
128
|
+
else
|
|
129
|
+
throw new Error('Unexpected signaling message.');
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
this.fail(error instanceof Error
|
|
133
|
+
? error
|
|
134
|
+
: new Error('Invalid direct signaling.'));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
close() {
|
|
138
|
+
if (this.#closed)
|
|
139
|
+
return;
|
|
140
|
+
this.#closed = true;
|
|
141
|
+
clearTimeout(this.#timer);
|
|
142
|
+
this.#timer = undefined;
|
|
143
|
+
this.#connection?.close();
|
|
144
|
+
this.#transport?.close();
|
|
145
|
+
this.#adapter?.close();
|
|
146
|
+
this.#candidates = [];
|
|
147
|
+
}
|
|
148
|
+
fail(error) {
|
|
149
|
+
if (this.#closed)
|
|
150
|
+
return;
|
|
151
|
+
this.close();
|
|
152
|
+
this.events.failed(error);
|
|
153
|
+
}
|
|
154
|
+
#signal(message) {
|
|
155
|
+
if (this.#closed)
|
|
156
|
+
return;
|
|
157
|
+
try {
|
|
158
|
+
const frame = p2pFrame(message);
|
|
159
|
+
this.#outgoing.consume(frame.payload);
|
|
160
|
+
void this.events.signal(frame).catch((error) => this.fail(error));
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
this.fail(error instanceof Error
|
|
164
|
+
? error
|
|
165
|
+
: new Error('Invalid local signaling.'));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=direct-negotiation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-negotiation.js","sourceRoot":"","sources":["../src/direct-negotiation.ts"],"names":[],"mappings":"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"}
|
package/dist/framing.d.ts
CHANGED
|
@@ -24,7 +24,10 @@ export declare enum InnerFrameType {
|
|
|
24
24
|
TransferAck = 17,
|
|
25
25
|
TransferComplete = 18,
|
|
26
26
|
TransferResult = 19,
|
|
27
|
-
TransferCancel = 20
|
|
27
|
+
TransferCancel = 20,
|
|
28
|
+
P2PControl = 21,
|
|
29
|
+
OutputAck = 22,
|
|
30
|
+
RecoveryComplete = 23
|
|
28
31
|
}
|
|
29
32
|
export interface OuterFrame {
|
|
30
33
|
version: number;
|
package/dist/framing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framing.d.ts","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,oBAAY,cAAc;IACtB,cAAc,IAAI;IAClB,kBAAkB,IAAI;CACzB;AAED,oBAAY,cAAc;IACtB,kBAAkB,IAAI;IACtB,YAAY,IAAI;IAChB,SAAS,IAAI;IACb,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,SAAS,IAAI;IACb,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,aAAa,KAAK;IAClB,WAAW,KAAK;IAChB,aAAa,KAAK;IAClB,eAAe,KAAK;IACpB,aAAa,KAAK;IAClB,cAAc,KAAK;IACnB,aAAa,KAAK;IAClB,WAAW,KAAK;IAChB,gBAAgB,KAAK;IACrB,cAAc,KAAK;IACnB,cAAc,KAAK;
|
|
1
|
+
{"version":3,"file":"framing.d.ts","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,oBAAY,cAAc;IACtB,cAAc,IAAI;IAClB,kBAAkB,IAAI;CACzB;AAED,oBAAY,cAAc;IACtB,kBAAkB,IAAI;IACtB,YAAY,IAAI;IAChB,SAAS,IAAI;IACb,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,SAAS,IAAI;IACb,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,aAAa,KAAK;IAClB,WAAW,KAAK;IAChB,aAAa,KAAK;IAClB,eAAe,KAAK;IACpB,aAAa,KAAK;IAClB,cAAc,KAAK;IACnB,aAAa,KAAK;IAClB,WAAW,KAAK;IAChB,gBAAgB,KAAK;IACrB,cAAc,KAAK;IACnB,cAAc,KAAK;IACnB,UAAU,KAAK;IACf,SAAS,KAAK;IACd,gBAAgB,KAAK;CACxB;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE,MAAyB,GACnC,UAAU,CAKZ;AAED,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE,MAAyB,GACnC,UAAU,CAYZ;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAuB9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAoB9D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAgB9D"}
|
package/dist/framing.js
CHANGED
|
@@ -28,6 +28,9 @@ export var InnerFrameType;
|
|
|
28
28
|
InnerFrameType[InnerFrameType["TransferComplete"] = 18] = "TransferComplete";
|
|
29
29
|
InnerFrameType[InnerFrameType["TransferResult"] = 19] = "TransferResult";
|
|
30
30
|
InnerFrameType[InnerFrameType["TransferCancel"] = 20] = "TransferCancel";
|
|
31
|
+
InnerFrameType[InnerFrameType["P2PControl"] = 21] = "P2PControl";
|
|
32
|
+
InnerFrameType[InnerFrameType["OutputAck"] = 22] = "OutputAck";
|
|
33
|
+
InnerFrameType[InnerFrameType["RecoveryComplete"] = 23] = "RecoveryComplete";
|
|
31
34
|
})(InnerFrameType || (InnerFrameType = {}));
|
|
32
35
|
export function outerAssociatedData(kind, version = PROTOCOL_VERSION) {
|
|
33
36
|
assertUint8(version, 'Protocol version');
|
package/dist/framing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framing.js","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,uEAAkB,CAAA;IAClB,+EAAsB,CAAA;AAC1B,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"framing.js","sourceRoot":"","sources":["../src/framing.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
export declare const PROTOCOL_VERSION: 1;
|
|
2
|
-
export { decodeInnerFrame, decodeOuterFrame, encodeInnerFrame, encodeOuterFrame, INNER_HEADER_BYTES, InnerFrameType, MAX_CIPHERTEXT_BYTES, OuterFrameKind, outerAssociatedData, } from
|
|
3
|
-
export type { InnerFrame, OuterFrame } from
|
|
4
|
-
export { createNoisePrologue, MAX_TRANSPORT_FRAMES, NOISE_PROTOCOL_NAME, NoiseTransport, } from
|
|
5
|
-
export type { NoiseTransportOptions } from
|
|
6
|
-
export { decodeProtocolError, decodePtyExit, decodePtyResize, decodeReplayStart, decodeSessionDescription, encodeProtocolError, encodePtyExit, encodePtyResize, encodeReplayStart, encodeSessionDescription, } from
|
|
7
|
-
export type { ProtocolErrorMessage, PtyExitMessage, ReplayStartMessage, SessionDescription, SessionMode, TerminalDescription, TerminalFontDescription, TerminalFontFormat, SessionFeature, } from
|
|
8
|
-
export { decodeTransferCancel, decodeTransferChunk, decodeTransferControl, decodeTransferOffer, decodeTransferRequest, decodeTransferResult, encodeTransferCancel, encodeTransferChunk, encodeTransferControl, encodeTransferOffer, encodeTransferRequest, encodeTransferResult, generateTransferId, hasTransferTimedOut, TRANSFER_CHUNK_BYTES, TRANSFER_IDLE_TIMEOUT_MS, TRANSFER_ID_BYTES, TRANSFER_WINDOW_BYTES, TransferReceiverState, TransferSenderState, } from
|
|
9
|
-
export type { TransferCancelMessage, TransferChunkPayload, TransferControlMessage, TransferDirection, TransferOfferMessage, TransferPurpose, TransferRequestMessage, TransferResultMessage, } from
|
|
10
|
-
export { createCapabilityUrl, decodeBase64Url, deriveCapabilityKeys, encodeBase64Url, generateCapabilityMaterial, normalizeServerUrl, parseCapabilityUrl, ROOT_SECRET_LENGTH, SESSION_ID_LENGTH, } from
|
|
11
|
-
export type { CapabilityKeys, CapabilityMaterial, ParsedCapability, } from
|
|
2
|
+
export { decodeInnerFrame, decodeOuterFrame, encodeInnerFrame, encodeOuterFrame, INNER_HEADER_BYTES, InnerFrameType, MAX_CIPHERTEXT_BYTES, OuterFrameKind, outerAssociatedData, } from "./framing.js";
|
|
3
|
+
export type { InnerFrame, OuterFrame } from "./framing.js";
|
|
4
|
+
export { createNoisePrologue, MAX_TRANSPORT_FRAMES, NOISE_PROTOCOL_NAME, NoiseTransport, } from "./noise.js";
|
|
5
|
+
export type { NoiseTransportOptions } from "./noise.js";
|
|
6
|
+
export { decodeProtocolError, decodePtyExit, decodePtyResize, decodeReplayStart, decodeSessionDescription, encodeProtocolError, encodePtyExit, encodePtyResize, encodeReplayStart, encodeSessionDescription, } from "./messages.js";
|
|
7
|
+
export type { ProtocolErrorMessage, PtyExitMessage, ReplayStartMessage, SessionDescription, SessionMode, TerminalDescription, TerminalFontDescription, TerminalFontFormat, SessionFeature, } from "./messages.js";
|
|
8
|
+
export { decodeTransferCancel, decodeTransferChunk, decodeTransferControl, decodeTransferOffer, decodeTransferRequest, decodeTransferResult, encodeTransferCancel, encodeTransferChunk, encodeTransferControl, encodeTransferOffer, encodeTransferRequest, encodeTransferResult, generateTransferId, hasTransferTimedOut, TRANSFER_CHUNK_BYTES, TRANSFER_IDLE_TIMEOUT_MS, TRANSFER_ID_BYTES, TRANSFER_WINDOW_BYTES, TransferReceiverState, TransferSenderState, } from "./transfers.js";
|
|
9
|
+
export type { TransferCancelMessage, TransferChunkPayload, TransferControlMessage, TransferDirection, TransferOfferMessage, TransferPurpose, TransferRequestMessage, TransferResultMessage, } from "./transfers.js";
|
|
10
|
+
export { createCapabilityUrl, decodeBase64Url, deriveCapabilityKeys, encodeBase64Url, generateCapabilityMaterial, normalizeServerUrl, parseCapabilityUrl, ROOT_SECRET_LENGTH, SESSION_ID_LENGTH, } from "./capability.js";
|
|
11
|
+
export type { CapabilityKeys, CapabilityMaterial, ParsedCapability, } from "./capability.js";
|
|
12
|
+
export * from "./transport.js";
|
|
13
|
+
export * from "./outbound-queue.js";
|
|
14
|
+
export * from "./p2p.js";
|
|
15
|
+
export * from "./webrtc-transport.js";
|
|
16
|
+
export * from "./direct-negotiation.js";
|
|
17
|
+
export * from "./transport-handoff.js";
|
|
18
|
+
export * from "./peer-transport.js";
|
|
19
|
+
export * from "./vault.js";
|
|
20
|
+
export * from './pairing.js';
|
|
21
|
+
export * from './naming.js';
|
|
22
|
+
export { decodeRelayUsage, isRelayCoordination, type RelayUsage } from './relay-usage.js';
|
|
12
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
export const PROTOCOL_VERSION = 1;
|
|
2
|
-
export { decodeInnerFrame, decodeOuterFrame, encodeInnerFrame, encodeOuterFrame, INNER_HEADER_BYTES, InnerFrameType, MAX_CIPHERTEXT_BYTES, OuterFrameKind, outerAssociatedData, } from
|
|
3
|
-
export { createNoisePrologue, MAX_TRANSPORT_FRAMES, NOISE_PROTOCOL_NAME, NoiseTransport, } from
|
|
4
|
-
export { decodeProtocolError, decodePtyExit, decodePtyResize, decodeReplayStart, decodeSessionDescription, encodeProtocolError, encodePtyExit, encodePtyResize, encodeReplayStart, encodeSessionDescription, } from
|
|
5
|
-
export { decodeTransferCancel, decodeTransferChunk, decodeTransferControl, decodeTransferOffer, decodeTransferRequest, decodeTransferResult, encodeTransferCancel, encodeTransferChunk, encodeTransferControl, encodeTransferOffer, encodeTransferRequest, encodeTransferResult, generateTransferId, hasTransferTimedOut, TRANSFER_CHUNK_BYTES, TRANSFER_IDLE_TIMEOUT_MS, TRANSFER_ID_BYTES, TRANSFER_WINDOW_BYTES, TransferReceiverState, TransferSenderState, } from
|
|
6
|
-
export { createCapabilityUrl, decodeBase64Url, deriveCapabilityKeys, encodeBase64Url, generateCapabilityMaterial, normalizeServerUrl, parseCapabilityUrl, ROOT_SECRET_LENGTH, SESSION_ID_LENGTH, } from
|
|
2
|
+
export { decodeInnerFrame, decodeOuterFrame, encodeInnerFrame, encodeOuterFrame, INNER_HEADER_BYTES, InnerFrameType, MAX_CIPHERTEXT_BYTES, OuterFrameKind, outerAssociatedData, } from "./framing.js";
|
|
3
|
+
export { createNoisePrologue, MAX_TRANSPORT_FRAMES, NOISE_PROTOCOL_NAME, NoiseTransport, } from "./noise.js";
|
|
4
|
+
export { decodeProtocolError, decodePtyExit, decodePtyResize, decodeReplayStart, decodeSessionDescription, encodeProtocolError, encodePtyExit, encodePtyResize, encodeReplayStart, encodeSessionDescription, } from "./messages.js";
|
|
5
|
+
export { decodeTransferCancel, decodeTransferChunk, decodeTransferControl, decodeTransferOffer, decodeTransferRequest, decodeTransferResult, encodeTransferCancel, encodeTransferChunk, encodeTransferControl, encodeTransferOffer, encodeTransferRequest, encodeTransferResult, generateTransferId, hasTransferTimedOut, TRANSFER_CHUNK_BYTES, TRANSFER_IDLE_TIMEOUT_MS, TRANSFER_ID_BYTES, TRANSFER_WINDOW_BYTES, TransferReceiverState, TransferSenderState, } from "./transfers.js";
|
|
6
|
+
export { createCapabilityUrl, decodeBase64Url, deriveCapabilityKeys, encodeBase64Url, generateCapabilityMaterial, normalizeServerUrl, parseCapabilityUrl, ROOT_SECRET_LENGTH, SESSION_ID_LENGTH, } from "./capability.js";
|
|
7
|
+
export * from "./transport.js";
|
|
8
|
+
export * from "./outbound-queue.js";
|
|
9
|
+
export * from "./p2p.js";
|
|
10
|
+
export * from "./webrtc-transport.js";
|
|
11
|
+
export * from "./direct-negotiation.js";
|
|
12
|
+
export * from "./transport-handoff.js";
|
|
13
|
+
export * from "./peer-transport.js";
|
|
14
|
+
export * from "./vault.js";
|
|
15
|
+
export * from './pairing.js';
|
|
16
|
+
export * from './naming.js';
|
|
17
|
+
export { decodeRelayUsage, isRelayCoordination } from './relay-usage.js';
|
|
7
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAU,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAU,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AAYvB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAOzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAmB,MAAM,kBAAkB,CAAC"}
|
package/dist/messages.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type SessionMode = 'shell' | 'command';
|
|
2
|
-
export type SessionFeature = 'stream-transfer-v1' | 'terminal-font-v1' | 'image-paste-v1';
|
|
2
|
+
export type SessionFeature = 'stream-transfer-v1' | 'terminal-font-v1' | 'image-paste-v1' | 'p2p-v1';
|
|
3
3
|
export type TerminalFontFormat = 'ttf' | 'otf' | 'woff' | 'woff2';
|
|
4
4
|
export interface TerminalFontDescription {
|
|
5
5
|
assetId: string;
|
|
@@ -15,6 +15,8 @@ export interface TerminalDescription {
|
|
|
15
15
|
nextOffset: bigint;
|
|
16
16
|
}
|
|
17
17
|
export interface SessionDescription {
|
|
18
|
+
uploadLimitBytes?: number;
|
|
19
|
+
name?: string;
|
|
18
20
|
mode: SessionMode;
|
|
19
21
|
maxTabs: number;
|
|
20
22
|
terminals: TerminalDescription[];
|
package/dist/messages.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAC9C,MAAM,MAAM,cAAc,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,gBAAgB,GAChB,QAAQ,CAAC;AAEf,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,wBAAwB,CACpC,WAAW,EAAE,kBAAkB,GAChC,UAAU,CAyBZ;AAED,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,UAAU,GACpB,kBAAkB,CA4BpB;AA4DD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAWzE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CAChB,CAkBA;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAKjE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc,CAiBjE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU,CAMzE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,kBAAkB,CAgBzE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAE3E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,oBAAoB,CAQ7E"}
|
package/dist/messages.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { automaticName } from './naming.js';
|
|
1
2
|
export function encodeSessionDescription(description) {
|
|
2
3
|
return encodeJson({
|
|
4
|
+
...(description.name === undefined ? {} : { name: description.name }),
|
|
5
|
+
...(description.uploadLimitBytes === undefined ? {} : { upload_limit_bytes: description.uploadLimitBytes }),
|
|
3
6
|
mode: description.mode,
|
|
4
7
|
max_tabs: description.maxTabs,
|
|
5
8
|
features: description.features ?? [],
|
|
@@ -29,11 +32,15 @@ export function decodeSessionDescription(payload) {
|
|
|
29
32
|
!Array.isArray(value.terminals)) {
|
|
30
33
|
throw new Error('Invalid session description payload.');
|
|
31
34
|
}
|
|
35
|
+
if (value.upload_limit_bytes !== undefined && (!Number.isSafeInteger(value.upload_limit_bytes) || value.upload_limit_bytes <= 0))
|
|
36
|
+
throw new Error('Invalid upload limit.');
|
|
32
37
|
const features = decodeSessionFeatures(value.features);
|
|
33
|
-
const font = value.font === undefined
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
const font = value.font === undefined ? undefined : decodeTerminalFont(value.font);
|
|
39
|
+
if (value.name !== undefined && (typeof value.name !== 'string' || automaticName(value.name) !== value.name))
|
|
40
|
+
throw new Error('Invalid session name');
|
|
36
41
|
return {
|
|
42
|
+
...(value.name === undefined ? {} : { name: value.name }),
|
|
43
|
+
...(value.upload_limit_bytes === undefined ? {} : { uploadLimitBytes: value.upload_limit_bytes }),
|
|
37
44
|
mode: value.mode,
|
|
38
45
|
maxTabs: value.max_tabs,
|
|
39
46
|
terminals: value.terminals.map((terminal) => decodeTerminalDescription(terminal)),
|
|
@@ -45,13 +52,15 @@ function decodeSessionFeatures(value) {
|
|
|
45
52
|
if (value === undefined) {
|
|
46
53
|
return [];
|
|
47
54
|
}
|
|
48
|
-
if (!Array.isArray(value) ||
|
|
55
|
+
if (!Array.isArray(value) ||
|
|
56
|
+
value.some((feature) => typeof feature !== 'string')) {
|
|
49
57
|
throw new Error('Invalid session features payload.');
|
|
50
58
|
}
|
|
51
59
|
const supported = new Set([
|
|
52
60
|
'stream-transfer-v1',
|
|
53
61
|
'terminal-font-v1',
|
|
54
62
|
'image-paste-v1',
|
|
63
|
+
'p2p-v1',
|
|
55
64
|
]);
|
|
56
65
|
return value.filter((feature) => supported.has(feature));
|
|
57
66
|
}
|
|
@@ -76,7 +85,10 @@ function decodeTerminalFont(value) {
|
|
|
76
85
|
};
|
|
77
86
|
}
|
|
78
87
|
function isTerminalFontFormat(value) {
|
|
79
|
-
return value === 'ttf' ||
|
|
88
|
+
return (value === 'ttf' ||
|
|
89
|
+
value === 'otf' ||
|
|
90
|
+
value === 'woff' ||
|
|
91
|
+
value === 'woff2');
|
|
80
92
|
}
|
|
81
93
|
export function encodePtyResize(columns, rows) {
|
|
82
94
|
if (!isPositiveInteger(columns) || !isPositiveInteger(rows)) {
|
|
@@ -116,7 +128,9 @@ export function decodePtyExit(payload) {
|
|
|
116
128
|
}
|
|
117
129
|
return {
|
|
118
130
|
exitCode: value.exit_code,
|
|
119
|
-
...(value.signal === undefined
|
|
131
|
+
...(value.signal === undefined
|
|
132
|
+
? {}
|
|
133
|
+
: { signal: value.signal }),
|
|
120
134
|
};
|
|
121
135
|
}
|
|
122
136
|
export function encodeReplayStart(message) {
|
package/dist/messages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
|
package/dist/naming.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { VaultContext } from './vault.js';
|
|
2
|
+
export interface SessionNames {
|
|
3
|
+
defaultName: string;
|
|
4
|
+
alias?: string;
|
|
5
|
+
tabs: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
export interface NamingEnvelope extends VaultContext {
|
|
8
|
+
version: 1;
|
|
9
|
+
sessionId: string;
|
|
10
|
+
wrappedKey: string;
|
|
11
|
+
nonce: string;
|
|
12
|
+
ciphertext: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function customName(value: string): string;
|
|
15
|
+
export declare function automaticName(value: string): string | undefined;
|
|
16
|
+
export declare function validateSessionNames(value: unknown): SessionNames;
|
|
17
|
+
export declare function encryptSessionNames(publicKey: string, identity: VaultContext, sessionId: string, names: SessionNames): Promise<NamingEnvelope>;
|
|
18
|
+
export declare function decryptSessionNames(privateKey: CryptoKey, identity: VaultContext, sessionId: string, envelope: NamingEnvelope): Promise<SessionNames>;
|
|
19
|
+
//# sourceMappingURL=naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,YAAY;IAAG,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AACnG,MAAM,WAAW,cAAe,SAAQ,YAAY;IAAG,OAAO,EAAE,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAG7I,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhD;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/D;AAaD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAWjE;AACD,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAgBpJ;AACD,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAU3J"}
|