@linkshell/gateway 0.2.47 → 0.3.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.
Files changed (40) hide show
  1. package/README.md +14 -13
  2. package/dist/gateway/src/agent-permission-http.d.ts +10 -37
  3. package/dist/gateway/src/agent-permission-http.js +16 -56
  4. package/dist/gateway/src/agent-permission-http.js.map +1 -1
  5. package/dist/gateway/src/embedded.js +121 -57
  6. package/dist/gateway/src/embedded.js.map +1 -1
  7. package/dist/gateway/src/index.js +161 -94
  8. package/dist/gateway/src/index.js.map +1 -1
  9. package/dist/gateway/src/pairings.d.ts +3 -3
  10. package/dist/gateway/src/pairings.js +4 -5
  11. package/dist/gateway/src/pairings.js.map +1 -1
  12. package/dist/gateway/src/relay.d.ts +2 -2
  13. package/dist/gateway/src/relay.js +27 -38
  14. package/dist/gateway/src/relay.js.map +1 -1
  15. package/dist/gateway/src/sessions.d.ts +31 -28
  16. package/dist/gateway/src/sessions.js +163 -145
  17. package/dist/gateway/src/sessions.js.map +1 -1
  18. package/dist/gateway/src/state-store.d.ts +9 -6
  19. package/dist/gateway/src/state-store.js +26 -19
  20. package/dist/gateway/src/state-store.js.map +1 -1
  21. package/dist/gateway/src/tokens.d.ts +27 -7
  22. package/dist/gateway/src/tokens.js +86 -60
  23. package/dist/gateway/src/tokens.js.map +1 -1
  24. package/dist/gateway/src/tunnel.d.ts +11 -13
  25. package/dist/gateway/src/tunnel.js +36 -36
  26. package/dist/gateway/src/tunnel.js.map +1 -1
  27. package/dist/gateway/tsconfig.tsbuildinfo +1 -1
  28. package/dist/shared-protocol/src/index.d.ts +3961 -5788
  29. package/dist/shared-protocol/src/index.js +19 -84
  30. package/dist/shared-protocol/src/index.js.map +1 -1
  31. package/package.json +10 -10
  32. package/src/agent-permission-http.ts +20 -63
  33. package/src/embedded.ts +124 -56
  34. package/src/index.ts +165 -94
  35. package/src/pairings.ts +6 -7
  36. package/src/relay.ts +38 -48
  37. package/src/sessions.ts +174 -150
  38. package/src/state-store.ts +41 -25
  39. package/src/tokens.ts +109 -63
  40. package/src/tunnel.ts +49 -43
@@ -1,4 +1,4 @@
1
- import { randomInt, randomUUID } from "node:crypto";
1
+ import { randomInt } from "node:crypto";
2
2
  const PAIRING_TTL = Number(process.env.PAIRING_TTL_MS ?? 10 * 60_000); // 10 minutes
3
3
  const CLEANUP_INTERVAL = 60_000;
4
4
  export class PairingManager {
@@ -27,11 +27,10 @@ export class PairingManager {
27
27
  process.stderr.write(`[gateway] pairing store hydrate failed, using memory only: ${err}\n`);
28
28
  }
29
29
  }
30
- create(sessionId) {
31
- const id = sessionId ?? randomUUID();
30
+ create(hostDeviceId) {
32
31
  const code = String(randomInt(100000, 999999));
33
32
  const record = {
34
- sessionId: id,
33
+ hostDeviceId,
35
34
  pairingCode: code,
36
35
  expiresAt: Date.now() + PAIRING_TTL,
37
36
  claimed: false,
@@ -70,7 +69,7 @@ export class PairingManager {
70
69
  return {
71
70
  status: record.claimed ? "claimed" : "waiting",
72
71
  expiresAt: record.expiresAt,
73
- sessionId: record.sessionId,
72
+ hostDeviceId: record.hostDeviceId,
74
73
  };
75
74
  }
76
75
  cleanup() {
@@ -1 +1 @@
1
- {"version":3,"file":"pairings.js","sourceRoot":"","sources":["../../../src/pairings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pairings.js","sourceRoot":"","sources":["../../../src/pairings.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import type WebSocket from "ws";
2
- import type { SessionManager } from "./sessions.js";
3
- export declare function handleSocketMessage(socket: WebSocket, raw: string, role: "host" | "client", sessionId: string, deviceId: string, sessions: SessionManager): void;
2
+ import type { DeviceManager } from "./sessions.js";
3
+ export declare function handleSocketMessage(socket: WebSocket, raw: string, role: "host" | "client", hostDeviceId: string, deviceId: string, sessions: DeviceManager): void;
@@ -2,22 +2,22 @@ import { parseEnvelope, parseTypedPayload, protocolMessageSchemas, serializeEnve
2
2
  import { ZodError } from "zod";
3
3
  import { handleTunnelResponse, handleTunnelWsData, handleTunnelWsClose, } from "./tunnel.js";
4
4
  import { resolveAgentPermissionHttpAck } from "./agent-permission-http.js";
5
- export function handleSocketMessage(socket, raw, role, sessionId, deviceId, sessions) {
5
+ export function handleSocketMessage(socket, raw, role, hostDeviceId, deviceId, sessions) {
6
6
  let envelope;
7
7
  try {
8
8
  envelope = parseEnvelope(raw);
9
9
  }
10
10
  catch {
11
- sendSessionError(socket, sessionId, "invalid_message", "Failed to parse envelope");
11
+ sendSessionError(socket, hostDeviceId, "invalid_message", "Failed to parse envelope");
12
12
  return;
13
13
  }
14
- if (envelope.sessionId !== sessionId) {
15
- sendSessionError(socket, sessionId, "invalid_message", "Envelope sessionId does not match connection sessionId");
14
+ if (envelope.hostDeviceId !== hostDeviceId) {
15
+ sendSessionError(socket, hostDeviceId, "invalid_message", "Envelope hostDeviceId does not match connection hostDeviceId");
16
16
  return;
17
17
  }
18
- const session = sessions.get(sessionId);
18
+ const session = sessions.get(hostDeviceId);
19
19
  if (!session) {
20
- sendSessionError(socket, sessionId, "session_not_found", "Session not found");
20
+ sendSessionError(socket, hostDeviceId, "device_not_found", "Device not found");
21
21
  return;
22
22
  }
23
23
  try {
@@ -36,31 +36,31 @@ export function handleSocketMessage(socket, raw, role, sessionId, deviceId, sess
36
36
  }
37
37
  catch (error) {
38
38
  if (error instanceof ZodError) {
39
- sendSessionError(socket, sessionId, "invalid_message", error.errors[0]?.message ?? "Invalid message payload");
39
+ sendSessionError(socket, hostDeviceId, "invalid_message", error.errors[0]?.message ?? "Invalid message payload");
40
40
  return;
41
41
  }
42
- sendSessionError(socket, sessionId, "invalid_message", "Failed to handle message");
42
+ sendSessionError(socket, hostDeviceId, "invalid_message", "Failed to handle message");
43
43
  }
44
44
  }
45
45
  function isProtocolMessageType(type) {
46
46
  return Object.prototype.hasOwnProperty.call(protocolMessageSchemas, type);
47
47
  }
48
- function sendSessionError(socket, sessionId, code, message) {
48
+ function sendSessionError(socket, hostDeviceId, code, message) {
49
49
  if (socket.readyState !== socket.OPEN)
50
50
  return;
51
51
  socket.send(serializeEnvelope(createEnvelope({
52
- type: "session.error",
53
- sessionId,
52
+ type: "device.error",
53
+ hostDeviceId,
54
54
  payload: { code, message },
55
55
  })));
56
56
  }
57
57
  function handleHostMessage(envelope, session, sessions) {
58
58
  switch (envelope.type) {
59
- case "session.connect": {
59
+ case "device.connect": {
60
60
  // Extract metadata from host's connect message
61
- const p = parseTypedPayload("session.connect", envelope.payload);
62
- if (p.provider || p.machineId || p.hostname || p.platform || p.cwd || p.projectName) {
63
- sessions.setMetadata(session.id, p.provider ?? undefined, p.machineId ?? undefined, p.hostname ?? undefined, p.platform ?? undefined, p.cwd ?? undefined, p.projectName ?? undefined);
61
+ const p = parseTypedPayload("device.connect", envelope.payload);
62
+ if (p.machineId || p.hostname || p.platform || p.cwd || p.capabilities) {
63
+ sessions.setMetadata(session.id, undefined, p.machineId ?? undefined, p.hostname ?? undefined, p.platform ?? undefined, p.cwd ?? undefined, undefined, p.capabilities ?? undefined);
64
64
  }
65
65
  break;
66
66
  }
@@ -74,12 +74,12 @@ function handleHostMessage(envelope, session, sessions) {
74
74
  broadcastToClients(session, envelope);
75
75
  break;
76
76
  }
77
- case "session.heartbeat":
77
+ case "device.heartbeat":
78
78
  break;
79
79
  case "permission.decision.result": {
80
80
  const p = parseTypedPayload("permission.decision.result", envelope.payload);
81
81
  resolveAgentPermissionHttpAck({
82
- sessionId: session.id,
82
+ hostDeviceId: session.id,
83
83
  ack: {
84
84
  requestId: p.requestId,
85
85
  decision: p.decision,
@@ -117,11 +117,7 @@ function handleHostMessage(envelope, session, sessions) {
117
117
  case "screen.status":
118
118
  case "screen.offer":
119
119
  case "screen.ice":
120
- // Agent GUI: host → clients
121
- case "agent.capabilities":
122
- case "agent.update":
123
- case "agent.permission.request":
124
- case "agent.snapshot":
120
+ // Agent Workspace: host → clients
125
121
  case "agent.v2.capabilities":
126
122
  case "agent.v2.conversation.opened":
127
123
  case "agent.v2.conversation.list.result":
@@ -150,8 +146,8 @@ function handleClientMessage(envelope, socket, session, deviceId, sessions) {
150
146
  if (session.controllerId === deviceId)
151
147
  return true;
152
148
  socket.send(serializeEnvelope(createEnvelope({
153
- type: "session.error",
154
- sessionId: session.id,
149
+ type: "device.error",
150
+ hostDeviceId: session.id,
155
151
  payload: {
156
152
  code: "control_conflict",
157
153
  message: "Not the controller",
@@ -172,20 +168,20 @@ function handleClientMessage(envelope, socket, session, deviceId, sessions) {
172
168
  sendToHost(session, envelope);
173
169
  break;
174
170
  }
175
- case "session.ack": {
171
+ case "device.ack": {
176
172
  // Forward ACK to host
177
173
  sendToHost(session, envelope);
178
174
  break;
179
175
  }
180
- case "session.resume": {
181
- const p = parseTypedPayload("session.resume", envelope.payload);
176
+ case "device.resume": {
177
+ const p = parseTypedPayload("device.resume", envelope.payload);
182
178
  // Replay from gateway buffer first
183
179
  const replay = sessions.getReplayFrom(session.id, p.lastAckedSeqByTerminal, p.lastAckedSeq);
184
180
  for (const msg of replay) {
185
181
  const payload = msg.payload;
186
182
  socket.send(serializeEnvelope(createEnvelope({
187
183
  type: "terminal.output",
188
- sessionId: session.id,
184
+ hostDeviceId: session.id,
189
185
  terminalId: msg.terminalId,
190
186
  seq: msg.seq,
191
187
  payload: { ...payload, isReplay: true },
@@ -212,7 +208,7 @@ function handleClientMessage(envelope, socket, session, deviceId, sessions) {
212
208
  sessions.claimControl(session.id, deviceId);
213
209
  const grantMsg = createEnvelope({
214
210
  type: "control.grant",
215
- sessionId: session.id,
211
+ hostDeviceId: session.id,
216
212
  payload: { deviceId },
217
213
  });
218
214
  // Broadcast to ALL clients so previous controller updates its state
@@ -224,25 +220,20 @@ function handleClientMessage(envelope, socket, session, deviceId, sessions) {
224
220
  sessions.releaseControl(session.id, deviceId);
225
221
  const releaseMsg = createEnvelope({
226
222
  type: "control.release",
227
- sessionId: session.id,
223
+ hostDeviceId: session.id,
228
224
  payload: { deviceId },
229
225
  });
230
226
  broadcastToClients(session, releaseMsg);
231
227
  sendToHost(session, releaseMsg);
232
228
  break;
233
229
  }
234
- case "session.heartbeat":
230
+ case "device.heartbeat":
235
231
  break;
236
232
  // Screen sharing: client → host
237
233
  case "screen.start":
238
234
  case "screen.stop":
239
235
  case "screen.answer":
240
236
  case "screen.ice":
241
- case "agent.session.new":
242
- case "agent.session.load":
243
- case "agent.prompt":
244
- case "agent.cancel":
245
- case "agent.permission.response":
246
237
  case "agent.v2.conversation.open":
247
238
  case "agent.v2.prompt":
248
239
  case "agent.v2.command.execute":
@@ -263,8 +254,6 @@ function handleClientMessage(envelope, socket, session, deviceId, sessions) {
263
254
  return;
264
255
  sendToHost(session, envelope);
265
256
  break;
266
- case "agent.initialize":
267
- case "agent.session.list":
268
257
  case "agent.v2.capabilities.request":
269
258
  case "agent.v2.conversation.list":
270
259
  case "agent.v2.snapshot.request":
@@ -1 +1 @@
1
- {"version":3,"file":"relay.js","sourceRoot":"","sources":["../../../src/relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../../../src/relay.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
1
  import type WebSocket from "ws";
2
2
  import type { Envelope } from "@linkshell/protocol";
3
- export type SessionState = "active" | "host_disconnected" | "terminated";
3
+ export type DeviceState = "active" | "host_disconnected" | "terminated";
4
4
  export interface ConnectedDevice {
5
5
  socket: WebSocket;
6
6
  role: "host" | "client";
7
7
  deviceId: string;
8
+ token?: string;
9
+ authorizationId?: string;
8
10
  connectedAt: number;
9
11
  }
10
- export interface Session {
12
+ export interface HostDevice {
11
13
  id: string;
12
- state: SessionState;
14
+ hostDeviceId: string;
15
+ state: DeviceState;
13
16
  host: ConnectedDevice | undefined;
14
17
  clients: Map<string, ConnectedDevice>;
15
18
  controllerId: string | undefined;
@@ -18,54 +21,54 @@ export interface Session {
18
21
  outputBuffers: Map<string, Envelope[]>;
19
22
  lastStatusByTerminal: Map<string, Envelope>;
20
23
  hostDisconnectedAt: number | undefined;
21
- provider: string | undefined;
22
24
  machineId: string | undefined;
23
25
  hostname: string | undefined;
24
26
  platform: string | undefined;
25
27
  cwd: string | undefined;
26
- projectName: string | undefined;
28
+ capabilities: string[];
27
29
  userId: string | undefined;
28
30
  }
29
- export declare class SessionManager {
30
- private sessions;
31
+ export declare class DeviceManager {
32
+ private devices;
31
33
  private cleanupTimer;
32
34
  constructor();
33
- getOrCreate(sessionId: string): Session;
34
- get(sessionId: string): Session | undefined;
35
- setHost(sessionId: string, device: ConnectedDevice): void;
36
- addClient(sessionId: string, device: ConnectedDevice): void;
37
- removeHost(sessionId: string): {
35
+ getOrCreate(hostDeviceId: string): HostDevice;
36
+ get(hostDeviceId: string): HostDevice | undefined;
37
+ setHost(hostDeviceId: string, socketDevice: ConnectedDevice): void;
38
+ addClient(hostDeviceId: string, socketDevice: ConnectedDevice): void;
39
+ removeHost(hostDeviceId: string): {
38
40
  clients: Map<string, ConnectedDevice>;
39
41
  } | undefined;
40
- removeClient(sessionId: string, deviceId: string): void;
41
- /** Force-delete a session: disconnect host + all clients, remove from map. */
42
- forceDelete(sessionId: string): boolean;
43
- bufferOutput(sessionId: string, envelope: Envelope): void;
44
- cacheStatus(sessionId: string, envelope: Envelope): void;
45
- getStatusReplay(sessionId: string): Envelope[];
46
- getReplayFrom(sessionId: string, afterSeqByTerminal: Record<string, number>, fallbackAfterSeq?: number): Envelope[];
47
- claimControl(sessionId: string, deviceId: string): boolean;
48
- releaseControl(sessionId: string, deviceId: string): boolean;
49
- terminate(sessionId: string): void;
50
- listActive(): Session[];
51
- getSummary(sessionId: string): {
42
+ removeClient(hostDeviceId: string, deviceId: string): void;
43
+ disconnectAuthorization(hostDeviceId: string, authorizationId: string): number;
44
+ forceDelete(hostDeviceId: string): boolean;
45
+ bufferOutput(hostDeviceId: string, envelope: Envelope): void;
46
+ cacheStatus(hostDeviceId: string, envelope: Envelope): void;
47
+ getStatusReplay(hostDeviceId: string): Envelope[];
48
+ getReplayFrom(hostDeviceId: string, afterSeqByTerminal: Record<string, number>, fallbackAfterSeq?: number): Envelope[];
49
+ claimControl(hostDeviceId: string, deviceId: string): boolean;
50
+ releaseControl(hostDeviceId: string, deviceId: string): boolean;
51
+ terminate(hostDeviceId: string): void;
52
+ listActive(): HostDevice[];
53
+ getSummary(hostDeviceId: string): {
52
54
  id: string;
53
- state: SessionState;
55
+ hostDeviceId: string;
56
+ state: DeviceState;
57
+ online: boolean;
54
58
  hasHost: boolean;
55
59
  clientCount: number;
56
60
  controllerId: string | null;
57
61
  lastActivity: number;
58
62
  createdAt: number;
59
63
  bufferSize: number;
60
- provider: string | null;
61
64
  machineId: string | null;
62
65
  hostname: string | null;
63
66
  platform: string | null;
64
67
  cwd: string | null;
65
- projectName: string | null;
68
+ capabilities: string[];
66
69
  userId: string | null;
67
70
  } | undefined;
68
- setMetadata(sessionId: string, provider?: string, machineId?: string, hostname?: string, platform?: string, cwd?: string, projectName?: string): void;
71
+ setMetadata(hostDeviceId: string, _provider?: string, machineId?: string, hostname?: string, platform?: string, cwd?: string, _projectName?: string, capabilities?: string[]): void;
69
72
  private maybeDelete;
70
73
  private cleanup;
71
74
  destroy(): void;