@airterm/protocol 0.4.0 → 0.6.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 +22 -2
- package/dist/acp-agents.d.ts +66 -0
- package/dist/acp-agents.d.ts.map +1 -0
- package/dist/acp-agents.js +141 -0
- package/dist/acp-agents.js.map +1 -0
- package/dist/acp-middleware.d.ts +426 -0
- package/dist/acp-middleware.d.ts.map +1 -0
- package/dist/acp-middleware.js +626 -0
- package/dist/acp-middleware.js.map +1 -0
- package/dist/framing.d.ts +24 -1
- package/dist/framing.d.ts.map +1 -1
- package/dist/framing.js +23 -0
- package/dist/framing.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/messages.d.ts +131 -1
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +272 -0
- package/dist/messages.js.map +1 -1
- package/dist/relay-usage.d.ts.map +1 -1
- package/dist/relay-usage.js +4 -1
- package/dist/relay-usage.js.map +1 -1
- package/dist/sharing.d.ts +42 -0
- package/dist/sharing.d.ts.map +1 -0
- package/dist/sharing.js +87 -0
- package/dist/sharing.js.map +1 -0
- package/dist/shellIntegration.d.ts +116 -0
- package/dist/shellIntegration.d.ts.map +1 -0
- package/dist/shellIntegration.js +243 -0
- package/dist/shellIntegration.js.map +1 -0
- package/package.json +1 -1
package/dist/messages.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { automaticName } from './naming.js';
|
|
2
|
+
import { decodeAcpAgents, encodeAgentCapabilities, decodeAgentCapabilities, isAcpAgentId, } from './acp-agents.js';
|
|
3
|
+
import { isIntegrationToken } from './shellIntegration.js';
|
|
4
|
+
import { ACP_MIDDLEWARE_FEATURE, ACP_MIDDLEWARE_VERSION } from './acp-middleware.js';
|
|
5
|
+
export { readAgentCapabilities, encodeAgentCapabilities, decodeAgentCapabilities, decodeAcpAgents, isAcpAgentId, readAgentLabel, } from './acp-agents.js';
|
|
2
6
|
export function encodeSessionDescription(description) {
|
|
3
7
|
return encodeJson({
|
|
4
8
|
...(description.name === undefined ? {} : { name: description.name }),
|
|
@@ -6,6 +10,22 @@ export function encodeSessionDescription(description) {
|
|
|
6
10
|
mode: description.mode,
|
|
7
11
|
max_tabs: description.maxTabs,
|
|
8
12
|
features: description.features ?? [],
|
|
13
|
+
...(description.agents === undefined
|
|
14
|
+
? {}
|
|
15
|
+
: {
|
|
16
|
+
agents: description.agents.map((agent) => ({
|
|
17
|
+
id: agent.id,
|
|
18
|
+
label: agent.label,
|
|
19
|
+
available: agent.available,
|
|
20
|
+
...(agent.slowStart === undefined
|
|
21
|
+
? {}
|
|
22
|
+
: { slow_start: agent.slowStart }),
|
|
23
|
+
...(agent.beta === undefined ? {} : { beta: agent.beta }),
|
|
24
|
+
...(agent.capabilities === undefined
|
|
25
|
+
? {}
|
|
26
|
+
: { capabilities: encodeAgentCapabilities(agent.capabilities) }),
|
|
27
|
+
})),
|
|
28
|
+
}),
|
|
9
29
|
...(description.font === undefined
|
|
10
30
|
? {}
|
|
11
31
|
: {
|
|
@@ -22,6 +42,17 @@ export function encodeSessionDescription(description) {
|
|
|
22
42
|
running: terminal.running,
|
|
23
43
|
base_offset: terminal.baseOffset.toString(),
|
|
24
44
|
next_offset: terminal.nextOffset.toString(),
|
|
45
|
+
...(terminal.integrationToken === undefined
|
|
46
|
+
? {}
|
|
47
|
+
: { integration_token: terminal.integrationToken }),
|
|
48
|
+
...(terminal.kind === undefined ? {} : { kind: terminal.kind }),
|
|
49
|
+
...(terminal.agent === undefined ? {} : { agent: terminal.agent }),
|
|
50
|
+
...(terminal.acpSessionId === undefined ? {} : { acp_session_id: terminal.acpSessionId }),
|
|
51
|
+
...(terminal.acpCurrentModel === undefined ? {} : { acp_current_model: terminal.acpCurrentModel }),
|
|
52
|
+
...(terminal.acpCwd === undefined ? {} : { acp_cwd: terminal.acpCwd }),
|
|
53
|
+
...(terminal.acpBranch === undefined ? {} : { acp_branch: terminal.acpBranch }),
|
|
54
|
+
...(terminal.acpGit === undefined ? {} : { acp_git: encodeGitStatus(terminal.acpGit) }),
|
|
55
|
+
...(terminal.acpTitle === undefined ? {} : { acp_title: terminal.acpTitle }),
|
|
25
56
|
})),
|
|
26
57
|
});
|
|
27
58
|
}
|
|
@@ -34,7 +65,10 @@ export function decodeSessionDescription(payload) {
|
|
|
34
65
|
}
|
|
35
66
|
if (value.upload_limit_bytes !== undefined && (!Number.isSafeInteger(value.upload_limit_bytes) || value.upload_limit_bytes <= 0))
|
|
36
67
|
throw new Error('Invalid upload limit.');
|
|
68
|
+
if (value.shell_integration !== undefined && typeof value.shell_integration !== 'boolean')
|
|
69
|
+
throw new Error('Invalid shell integration preference.');
|
|
37
70
|
const features = decodeSessionFeatures(value.features);
|
|
71
|
+
const agents = decodeAcpAgents(value.agents);
|
|
38
72
|
const font = value.font === undefined ? undefined : decodeTerminalFont(value.font);
|
|
39
73
|
if (value.name !== undefined && (typeof value.name !== 'string' || automaticName(value.name) !== value.name))
|
|
40
74
|
throw new Error('Invalid session name');
|
|
@@ -45,6 +79,7 @@ export function decodeSessionDescription(payload) {
|
|
|
45
79
|
maxTabs: value.max_tabs,
|
|
46
80
|
terminals: value.terminals.map((terminal) => decodeTerminalDescription(terminal)),
|
|
47
81
|
features,
|
|
82
|
+
...(agents === undefined ? {} : { agents }),
|
|
48
83
|
...(font === undefined ? {} : { font }),
|
|
49
84
|
};
|
|
50
85
|
}
|
|
@@ -61,6 +96,11 @@ function decodeSessionFeatures(value) {
|
|
|
61
96
|
'terminal-font-v1',
|
|
62
97
|
'image-paste-v1',
|
|
63
98
|
'p2p-v1',
|
|
99
|
+
'shell-integration-v1',
|
|
100
|
+
'acp-sessions-v1',
|
|
101
|
+
'acp-agents-v1',
|
|
102
|
+
'acp-elicitation-form-v1',
|
|
103
|
+
ACP_MIDDLEWARE_FEATURE,
|
|
64
104
|
]);
|
|
65
105
|
return value.filter((feature) => supported.has(feature));
|
|
66
106
|
}
|
|
@@ -174,13 +214,159 @@ function decodeTerminalDescription(value) {
|
|
|
174
214
|
typeof value.next_offset !== 'string') {
|
|
175
215
|
throw new Error('Invalid terminal description payload.');
|
|
176
216
|
}
|
|
217
|
+
if (value.integration_token !== undefined &&
|
|
218
|
+
(typeof value.integration_token !== 'string' ||
|
|
219
|
+
!isIntegrationToken(value.integration_token))) {
|
|
220
|
+
throw new Error('Invalid terminal integration token.');
|
|
221
|
+
}
|
|
177
222
|
return {
|
|
178
223
|
ptyId: value.pty_id,
|
|
179
224
|
title: value.title,
|
|
180
225
|
running: value.running,
|
|
181
226
|
baseOffset: parseUnsignedBigInt(value.base_offset),
|
|
182
227
|
nextOffset: parseUnsignedBigInt(value.next_offset),
|
|
228
|
+
...(value.integration_token === undefined
|
|
229
|
+
? {}
|
|
230
|
+
: { integrationToken: value.integration_token }),
|
|
231
|
+
...(value.kind === 'acp' || value.kind === 'pty' ? { kind: value.kind } : {}),
|
|
232
|
+
...(typeof value.agent === 'string' ? { agent: value.agent } : {}),
|
|
233
|
+
...(typeof value.acp_session_id === 'string' ? { acpSessionId: value.acp_session_id } : {}),
|
|
234
|
+
...(typeof value.acp_current_model === 'string' ? { acpCurrentModel: value.acp_current_model } : {}),
|
|
235
|
+
...workspaceDescription(value),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Workspace fields for an ACP terminal. A reconnecting browser restores the tab
|
|
240
|
+
* from this description, so an unusable value is dropped rather than thrown: the
|
|
241
|
+
* tab still opens, it just loses its label.
|
|
242
|
+
*/
|
|
243
|
+
function workspaceDescription(value) {
|
|
244
|
+
const cwd = boundedPath(value.acp_cwd);
|
|
245
|
+
const branch = boundedBranch(value.acp_branch);
|
|
246
|
+
const title = boundedTitle(value.acp_title);
|
|
247
|
+
const git = boundedGitStatus(value.acp_git);
|
|
248
|
+
return {
|
|
249
|
+
...(cwd === undefined ? {} : { acpCwd: cwd }),
|
|
250
|
+
...(branch === undefined ? {} : { acpBranch: branch }),
|
|
251
|
+
...(title === undefined ? {} : { acpTitle: title }),
|
|
252
|
+
...(git === undefined ? {} : { acpGit: git }),
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Writes the git status for the wire, dropping fields the reader could not show.
|
|
257
|
+
*
|
|
258
|
+
* A count that is not a usable number is left out rather than sent as something
|
|
259
|
+
* a viewer would render as `NaN`, and a branch that fails the ref bound is left
|
|
260
|
+
* out for the same reason it is on the way in.
|
|
261
|
+
*/
|
|
262
|
+
function encodeGitStatus(status) {
|
|
263
|
+
const branch = boundedBranch(status.branch);
|
|
264
|
+
const commit = boundedCommit(status.commit);
|
|
265
|
+
const upstream = boundedBranch(status.upstream);
|
|
266
|
+
return {
|
|
267
|
+
...(branch === undefined ? {} : { branch }),
|
|
268
|
+
...(status.detached === true ? { detached: true } : {}),
|
|
269
|
+
...(commit === undefined ? {} : { commit }),
|
|
270
|
+
...(upstream === undefined ? {} : { upstream }),
|
|
271
|
+
...countField('ahead', status.ahead),
|
|
272
|
+
...countField('behind', status.behind),
|
|
273
|
+
...countField('staged', status.staged),
|
|
274
|
+
...countField('modified', status.modified),
|
|
275
|
+
...countField('untracked', status.untracked),
|
|
276
|
+
...countField('conflicted', status.conflicted),
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
function countField(name, value) {
|
|
280
|
+
return typeof value === 'number' && Number.isSafeInteger(value) && value > 0
|
|
281
|
+
? { [name]: value }
|
|
282
|
+
: {};
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Reads a status the CLI sent, keeping whatever survives validation.
|
|
286
|
+
*
|
|
287
|
+
* Each field stands alone: a peer that sent a branch but a malformed count still
|
|
288
|
+
* gets its branch shown, because dropping the whole object over one bad number
|
|
289
|
+
* would throw away true information.
|
|
290
|
+
*/
|
|
291
|
+
function boundedGitStatus(value) {
|
|
292
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
293
|
+
return undefined;
|
|
294
|
+
}
|
|
295
|
+
const raw = value;
|
|
296
|
+
const branch = boundedBranch(raw.branch);
|
|
297
|
+
const commit = boundedCommit(raw.commit);
|
|
298
|
+
const upstream = boundedBranch(raw.upstream);
|
|
299
|
+
const status = {
|
|
300
|
+
...(branch === undefined ? {} : { branch }),
|
|
301
|
+
...(raw.detached === true ? { detached: true } : {}),
|
|
302
|
+
...(commit === undefined ? {} : { commit }),
|
|
303
|
+
...(upstream === undefined ? {} : { upstream }),
|
|
304
|
+
...boundedCount('ahead', raw.ahead),
|
|
305
|
+
...boundedCount('behind', raw.behind),
|
|
306
|
+
...boundedCount('staged', raw.staged),
|
|
307
|
+
...boundedCount('modified', raw.modified),
|
|
308
|
+
...boundedCount('untracked', raw.untracked),
|
|
309
|
+
...boundedCount('conflicted', raw.conflicted),
|
|
183
310
|
};
|
|
311
|
+
return Object.keys(status).length === 0 ? undefined : status;
|
|
312
|
+
}
|
|
313
|
+
function boundedCount(name, value) {
|
|
314
|
+
return typeof value === 'number' &&
|
|
315
|
+
Number.isSafeInteger(value) &&
|
|
316
|
+
value > 0 &&
|
|
317
|
+
value <= GIT_COUNT_LIMIT
|
|
318
|
+
? { [name]: value }
|
|
319
|
+
: {};
|
|
320
|
+
}
|
|
321
|
+
/** A workspace path long enough to be useful but bounded against abuse. */
|
|
322
|
+
function boundedPath(value) {
|
|
323
|
+
return typeof value === 'string' && value.length > 0 && value.length <= 4096
|
|
324
|
+
? value
|
|
325
|
+
: undefined;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* A git branch name is a ref, so it is bounded like one rather than trusted to
|
|
329
|
+
* be short: anything longer is dropped instead of truncated into a wrong name.
|
|
330
|
+
*/
|
|
331
|
+
export const ACP_BRANCH_LIMIT = 256;
|
|
332
|
+
/**
|
|
333
|
+
* A commit id is abbreviated to this many characters on the CLI, so anything
|
|
334
|
+
* longer did not come from a repository this client read.
|
|
335
|
+
*/
|
|
336
|
+
export const ACP_COMMIT_LIMIT = 64;
|
|
337
|
+
/**
|
|
338
|
+
* A working tree cannot hold more entries than a viewer could act on, so a count
|
|
339
|
+
* past this bound is refused rather than rendered as a number nobody produced.
|
|
340
|
+
*/
|
|
341
|
+
const GIT_COUNT_LIMIT = 1_000_000;
|
|
342
|
+
const BRANCH_CONTROL_CHARACTERS = /[\p{Cc}\p{Cf}]/u;
|
|
343
|
+
/** A commit id is hex, so anything else is refused rather than shown. */
|
|
344
|
+
function boundedCommit(value) {
|
|
345
|
+
return typeof value === 'string' &&
|
|
346
|
+
value.length > 0 &&
|
|
347
|
+
value.length <= ACP_COMMIT_LIMIT &&
|
|
348
|
+
/^[0-9a-f]+$/i.test(value)
|
|
349
|
+
? value
|
|
350
|
+
: undefined;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* A branch reaches the tab bar and a path-shaped chip, so control characters
|
|
354
|
+
* disqualify it rather than being stripped into a different name.
|
|
355
|
+
*/
|
|
356
|
+
function boundedBranch(value) {
|
|
357
|
+
return typeof value === 'string' &&
|
|
358
|
+
value.length > 0 &&
|
|
359
|
+
value.length <= ACP_BRANCH_LIMIT &&
|
|
360
|
+
!BRANCH_CONTROL_CHARACTERS.test(value)
|
|
361
|
+
? value
|
|
362
|
+
: undefined;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Titles reach the tab bar, so control characters are stripped rather than
|
|
366
|
+
* rendered; an agent that sends an empty or unsafe title simply gets no title.
|
|
367
|
+
*/
|
|
368
|
+
function boundedTitle(value) {
|
|
369
|
+
return typeof value === 'string' ? automaticName(value) : undefined;
|
|
184
370
|
}
|
|
185
371
|
function encodeJson(value) {
|
|
186
372
|
return new TextEncoder().encode(JSON.stringify(value));
|
|
@@ -210,4 +396,90 @@ function parseUnsignedBigInt(value) {
|
|
|
210
396
|
}
|
|
211
397
|
return BigInt(value);
|
|
212
398
|
}
|
|
399
|
+
/**
|
|
400
|
+
* Bounds for the optional fields of a create request. A field outside its bound
|
|
401
|
+
* is dropped, because the agent validates the semantics (an unusable directory
|
|
402
|
+
* is refused with an error) while these limits only keep the frame small.
|
|
403
|
+
*/
|
|
404
|
+
const ACP_CREATE_MAXIMUM_CWD = 4096;
|
|
405
|
+
const ACP_CREATE_MAXIMUM_SESSION_ID = 256;
|
|
406
|
+
const ACP_CREATE_MAXIMUM_TITLE = 160;
|
|
407
|
+
function optionalCreateField(value, maximum) {
|
|
408
|
+
return typeof value === 'string' && value.length > 0 && value.length <= maximum
|
|
409
|
+
? value
|
|
410
|
+
: undefined;
|
|
411
|
+
}
|
|
412
|
+
function encodeClientCapabilities(capabilities) {
|
|
413
|
+
const elicitation = capabilities?.elicitation?.form === true ? { form: true } : undefined;
|
|
414
|
+
const middlewareVersion = capabilities?.middlewareVersion === ACP_MIDDLEWARE_VERSION
|
|
415
|
+
? ACP_MIDDLEWARE_VERSION
|
|
416
|
+
: undefined;
|
|
417
|
+
if (elicitation === undefined &&
|
|
418
|
+
middlewareVersion === undefined) {
|
|
419
|
+
return undefined;
|
|
420
|
+
}
|
|
421
|
+
return {
|
|
422
|
+
...(elicitation === undefined ? {} : { elicitation }),
|
|
423
|
+
...(middlewareVersion === undefined
|
|
424
|
+
? {}
|
|
425
|
+
: { middleware_version: middlewareVersion }),
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
function decodeClientCapabilities(value) {
|
|
429
|
+
if (!isRecord(value)) {
|
|
430
|
+
return undefined;
|
|
431
|
+
}
|
|
432
|
+
const elicitation = value.elicitation;
|
|
433
|
+
const form = isRecord(elicitation) && elicitation.form === true;
|
|
434
|
+
const middlewareVersion = value.middleware_version === ACP_MIDDLEWARE_VERSION
|
|
435
|
+
? ACP_MIDDLEWARE_VERSION
|
|
436
|
+
: undefined;
|
|
437
|
+
if (!form && middlewareVersion === undefined) {
|
|
438
|
+
return undefined;
|
|
439
|
+
}
|
|
440
|
+
return {
|
|
441
|
+
...(form ? { elicitation: { form: true } } : {}),
|
|
442
|
+
...(middlewareVersion === undefined ? {} : { middlewareVersion }),
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
export function encodeAcpCreate(message) {
|
|
446
|
+
const cwd = optionalCreateField(message.cwd, ACP_CREATE_MAXIMUM_CWD);
|
|
447
|
+
const sessionId = optionalCreateField(message.sessionId, ACP_CREATE_MAXIMUM_SESSION_ID);
|
|
448
|
+
const title = optionalCreateField(message.title, ACP_CREATE_MAXIMUM_TITLE);
|
|
449
|
+
const clientCapabilities = encodeClientCapabilities(message.clientCapabilities);
|
|
450
|
+
return encodeJson({
|
|
451
|
+
agent: message.agent,
|
|
452
|
+
...(cwd === undefined ? {} : { cwd }),
|
|
453
|
+
...(sessionId === undefined ? {} : { session_id: sessionId }),
|
|
454
|
+
...(title === undefined ? {} : { title }),
|
|
455
|
+
...(clientCapabilities === undefined
|
|
456
|
+
? {}
|
|
457
|
+
: { client_capabilities: clientCapabilities }),
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Reads a create request.
|
|
462
|
+
*
|
|
463
|
+
* An agent id that is missing or not a valid id decodes to an empty string, so
|
|
464
|
+
* the CLI refuses it the same way it refuses an id it does not know. Inventing a
|
|
465
|
+
* default here would silently open one agent's chat in another, and would keep
|
|
466
|
+
* doing so once agents are discovered rather than listed.
|
|
467
|
+
*/
|
|
468
|
+
export function decodeAcpCreate(payload) {
|
|
469
|
+
if (payload.byteLength === 0) {
|
|
470
|
+
return { agent: '' };
|
|
471
|
+
}
|
|
472
|
+
const record = decodeRecord(payload);
|
|
473
|
+
const cwd = optionalCreateField(record.cwd, ACP_CREATE_MAXIMUM_CWD);
|
|
474
|
+
const sessionId = optionalCreateField(record.session_id, ACP_CREATE_MAXIMUM_SESSION_ID);
|
|
475
|
+
const title = optionalCreateField(record.title, ACP_CREATE_MAXIMUM_TITLE);
|
|
476
|
+
const clientCapabilities = decodeClientCapabilities(record.client_capabilities ?? record.clientCapabilities);
|
|
477
|
+
return {
|
|
478
|
+
agent: isAcpAgentId(record.agent) ? record.agent : '',
|
|
479
|
+
...(cwd === undefined ? {} : { cwd }),
|
|
480
|
+
...(sessionId === undefined ? {} : { sessionId }),
|
|
481
|
+
...(title === undefined ? {} : { title }),
|
|
482
|
+
...(clientCapabilities === undefined ? {} : { clientCapabilities }),
|
|
483
|
+
};
|
|
484
|
+
}
|
|
213
485
|
//# sourceMappingURL=messages.js.map
|
package/dist/messages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-usage.d.ts","sourceRoot":"","sources":["../src/relay-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAQ3E;AACD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"relay-usage.d.ts","sourceRoot":"","sources":["../src/relay-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAQ3E;AACD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAOjE"}
|
package/dist/relay-usage.js
CHANGED
|
@@ -11,8 +11,11 @@ export function decodeRelayUsage(value) {
|
|
|
11
11
|
return { ...(value.requiresPairing === undefined ? {} : { requiresPairing: value.requiresPairing }), usedBytes: value.usedBytes, limitBytes: value.limitBytes, resetsAt: value.resetsAt, restricted: value.restricted, blocked: value.blocked, retryAt: value.retryAt };
|
|
12
12
|
}
|
|
13
13
|
export function isRelayCoordination(type) {
|
|
14
|
+
// A frame missing from this list is dropped without an error while the
|
|
15
|
+
// relay is quota-restricted, so every control frame belongs here.
|
|
14
16
|
return [InnerFrameType.SessionDescription, InnerFrameType.SessionClose, InnerFrameType.P2PControl,
|
|
15
17
|
InnerFrameType.OutputAck, InnerFrameType.RecoveryComplete, InnerFrameType.TransferCancel,
|
|
16
|
-
InnerFrameType.ProtocolError, InnerFrameType.PtyExit
|
|
18
|
+
InnerFrameType.ProtocolError, InnerFrameType.PtyExit,
|
|
19
|
+
InnerFrameType.AcpCreate, InnerFrameType.AcpClose].includes(type);
|
|
17
20
|
}
|
|
18
21
|
//# sourceMappingURL=relay-usage.js.map
|
package/dist/relay-usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay-usage.js","sourceRoot":"","sources":["../src/relay-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAU9C,MAAM,UAAU,gBAAgB,CAAC,KAA8B;IAC3D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,IAAK,KAAK,CAAC,SAAoB,GAAG,CAAC;QACzE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,IAAK,KAAK,CAAC,UAAqB,IAAI,CAAC;QAC5E,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS;QAC3E,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAK,KAAK,CAAC,OAAkB,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC1H,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACzI,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAA0B,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAmB,EAAE,UAAU,EAAE,KAAK,CAAC,UAAoB,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAiB,EAAE,CAAC;AACrT,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACpD,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,UAAU;QAC7F,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC,cAAc;QACxF,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"relay-usage.js","sourceRoot":"","sources":["../src/relay-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAU9C,MAAM,UAAU,gBAAgB,CAAC,KAA8B;IAC3D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,IAAK,KAAK,CAAC,SAAoB,GAAG,CAAC;QACzE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,IAAK,KAAK,CAAC,UAAqB,IAAI,CAAC;QAC5E,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS;QAC3E,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAK,KAAK,CAAC,OAAkB,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC1H,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACzI,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAA0B,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAmB,EAAE,UAAU,EAAE,KAAK,CAAC,UAAoB,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAiB,EAAE,CAAC;AACrT,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACpD,uEAAuE;IACvE,kEAAkE;IAClE,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,UAAU;QAC7F,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC,cAAc;QACxF,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,OAAO;QACpD,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { InnerFrameType, type InnerFrame } from './framing.js';
|
|
2
|
+
export declare const SHARING_VERSION: 1;
|
|
3
|
+
export declare const DEFAULT_MAX_OBSERVERS = 25;
|
|
4
|
+
export interface SharingState {
|
|
5
|
+
type: 'sharing-state';
|
|
6
|
+
accessGeneration: number;
|
|
7
|
+
revision: number;
|
|
8
|
+
writerEpoch: number;
|
|
9
|
+
writer: string | null;
|
|
10
|
+
pending: boolean;
|
|
11
|
+
mode: SharingMode;
|
|
12
|
+
participantId: string | null;
|
|
13
|
+
maximumObservers: number;
|
|
14
|
+
participants: Array<{
|
|
15
|
+
participantId: string;
|
|
16
|
+
owner: boolean;
|
|
17
|
+
}>;
|
|
18
|
+
requests: string[];
|
|
19
|
+
}
|
|
20
|
+
export type SharingMode = 'view' | 'interactive';
|
|
21
|
+
export interface ParticipantAuthority {
|
|
22
|
+
participantId: string;
|
|
23
|
+
owner: boolean;
|
|
24
|
+
writer: boolean;
|
|
25
|
+
accessGeneration: number;
|
|
26
|
+
writerEpoch: number;
|
|
27
|
+
}
|
|
28
|
+
/** The gateway supplies identity; callers must not accept browser role claims. */
|
|
29
|
+
export declare function allowsSharedFrame(authority: ParticipantAuthority, type: InnerFrameType): boolean;
|
|
30
|
+
export interface ParticipantPacket {
|
|
31
|
+
participantId: string;
|
|
32
|
+
accessGeneration: number;
|
|
33
|
+
writerEpoch: number;
|
|
34
|
+
payload: Uint8Array;
|
|
35
|
+
}
|
|
36
|
+
/** The epoch is encrypted, so delayed browser writes cannot acquire a newer grant. */
|
|
37
|
+
export declare function wrapSharedInput(frame: InnerFrame, epoch: number): InnerFrame;
|
|
38
|
+
export declare function unwrapSharedInput(frame: InnerFrame, epoch: number): InnerFrame;
|
|
39
|
+
/** Agent relay envelope. Browser sockets carry only the enclosed Noise frame. */
|
|
40
|
+
export declare function encodeParticipantPacket(packet: ParticipantPacket): Uint8Array;
|
|
41
|
+
export declare function decodeParticipantPacket(bytes: Uint8Array): ParticipantPacket;
|
|
42
|
+
//# sourceMappingURL=sharing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sharing.d.ts","sourceRoot":"","sources":["../src/sharing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,cAAc,EAAwB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGzH,eAAO,MAAM,eAAe,EAAG,CAAU,CAAC;AAC1C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,eAAe,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,KAAK,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AACD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,aAAa,CAAC;AACjD,MAAM,WAAW,oBAAoB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CA0BhG;AAGD,MAAM,WAAW,iBAAiB;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC;CACvB;AAOD,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAI5E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAO9E;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAc7E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB,CAc5E"}
|
package/dist/sharing.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { decodeInnerFrame, encodeInnerFrame, InnerFrameType, MAX_CIPHERTEXT_BYTES } from './framing.js';
|
|
2
|
+
// Negotiated independently of the inner Noise framing version.
|
|
3
|
+
export const SHARING_VERSION = 1;
|
|
4
|
+
export const DEFAULT_MAX_OBSERVERS = 25;
|
|
5
|
+
/** The gateway supplies identity; callers must not accept browser role claims. */
|
|
6
|
+
export function allowsSharedFrame(authority, type) {
|
|
7
|
+
switch (type) {
|
|
8
|
+
case InnerFrameType.SessionDescription:
|
|
9
|
+
case InnerFrameType.ReplayRequest:
|
|
10
|
+
case InnerFrameType.OutputAck:
|
|
11
|
+
return true;
|
|
12
|
+
case InnerFrameType.SessionClose:
|
|
13
|
+
return authority.owner;
|
|
14
|
+
case InnerFrameType.PtyInput:
|
|
15
|
+
case InnerFrameType.PtyResize:
|
|
16
|
+
case InnerFrameType.PtyCreate:
|
|
17
|
+
case InnerFrameType.PtyClose:
|
|
18
|
+
case InnerFrameType.TransferOffer:
|
|
19
|
+
case InnerFrameType.TransferChunk:
|
|
20
|
+
case InnerFrameType.TransferComplete:
|
|
21
|
+
case InnerFrameType.AcpCreate:
|
|
22
|
+
case InnerFrameType.AcpCommand:
|
|
23
|
+
case InnerFrameType.AcpClose:
|
|
24
|
+
return authority.writer;
|
|
25
|
+
case InnerFrameType.AcpEvent:
|
|
26
|
+
return false;
|
|
27
|
+
default:
|
|
28
|
+
// Transfer responses require direction/transfer ownership checks in
|
|
29
|
+
// their individual handlers; P2P is never legal on shared sessions.
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const HEADER_BYTES = 25;
|
|
34
|
+
function counter(value) {
|
|
35
|
+
if (!Number.isSafeInteger(value) || value < 1 || value > 0xffffffff)
|
|
36
|
+
throw new Error('Invalid sharing generation.');
|
|
37
|
+
}
|
|
38
|
+
/** The epoch is encrypted, so delayed browser writes cannot acquire a newer grant. */
|
|
39
|
+
export function wrapSharedInput(frame, epoch) {
|
|
40
|
+
counter(epoch);
|
|
41
|
+
if (frame.type === InnerFrameType.SharedInput)
|
|
42
|
+
throw new Error('Nested sharing envelope.');
|
|
43
|
+
return { type: InnerFrameType.SharedInput, ptyId: 0, sequence: BigInt(epoch), payload: encodeInnerFrame(frame) };
|
|
44
|
+
}
|
|
45
|
+
export function unwrapSharedInput(frame, epoch) {
|
|
46
|
+
counter(epoch);
|
|
47
|
+
if (frame.type !== InnerFrameType.SharedInput || frame.ptyId !== 0 || frame.sequence !== BigInt(epoch))
|
|
48
|
+
throw new Error('Stale shared input.');
|
|
49
|
+
const result = decodeInnerFrame(frame.payload);
|
|
50
|
+
if (result.type === InnerFrameType.SharedInput)
|
|
51
|
+
throw new Error('Nested sharing envelope.');
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
/** Agent relay envelope. Browser sockets carry only the enclosed Noise frame. */
|
|
55
|
+
export function encodeParticipantPacket(packet) {
|
|
56
|
+
if (!/^[a-f0-9]{32}$/.test(packet.participantId))
|
|
57
|
+
throw new Error('Invalid participant identity.');
|
|
58
|
+
counter(packet.accessGeneration);
|
|
59
|
+
counter(packet.writerEpoch);
|
|
60
|
+
if (packet.payload.length < 2 || packet.payload.length > MAX_CIPHERTEXT_BYTES + 2)
|
|
61
|
+
throw new Error('Invalid participant payload size.');
|
|
62
|
+
const result = new Uint8Array(HEADER_BYTES + packet.payload.length);
|
|
63
|
+
result[0] = SHARING_VERSION;
|
|
64
|
+
for (let i = 0; i < 16; i++)
|
|
65
|
+
result[i + 1] = Number.parseInt(packet.participantId.slice(i * 2, i * 2 + 2), 16);
|
|
66
|
+
const view = new DataView(result.buffer);
|
|
67
|
+
view.setUint32(17, packet.accessGeneration);
|
|
68
|
+
view.setUint32(21, packet.writerEpoch);
|
|
69
|
+
result.set(packet.payload, HEADER_BYTES);
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
export function decodeParticipantPacket(bytes) {
|
|
73
|
+
if (bytes.length < HEADER_BYTES + 2 || bytes.length > HEADER_BYTES + MAX_CIPHERTEXT_BYTES + 2 || bytes[0] !== SHARING_VERSION)
|
|
74
|
+
throw new Error('Invalid participant envelope.');
|
|
75
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
76
|
+
const accessGeneration = view.getUint32(17);
|
|
77
|
+
const writerEpoch = view.getUint32(21);
|
|
78
|
+
counter(accessGeneration);
|
|
79
|
+
counter(writerEpoch);
|
|
80
|
+
return {
|
|
81
|
+
participantId: Array.from(bytes.subarray(1, 17), byte => byte.toString(16).padStart(2, '0')).join(''),
|
|
82
|
+
accessGeneration,
|
|
83
|
+
writerEpoch,
|
|
84
|
+
payload: bytes.subarray(HEADER_BYTES),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=sharing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sharing.js","sourceRoot":"","sources":["../src/sharing.ts"],"names":[],"mappings":"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"}
|