@linkshell/gateway 0.2.46 → 0.2.48

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 (39) hide show
  1. package/dist/gateway/src/agent-permission-http.d.ts +18 -9
  2. package/dist/gateway/src/agent-permission-http.js +18 -10
  3. package/dist/gateway/src/agent-permission-http.js.map +1 -1
  4. package/dist/gateway/src/embedded.js +119 -55
  5. package/dist/gateway/src/embedded.js.map +1 -1
  6. package/dist/gateway/src/index.js +158 -91
  7. package/dist/gateway/src/index.js.map +1 -1
  8. package/dist/gateway/src/pairings.d.ts +3 -3
  9. package/dist/gateway/src/pairings.js +4 -5
  10. package/dist/gateway/src/pairings.js.map +1 -1
  11. package/dist/gateway/src/relay.d.ts +1 -1
  12. package/dist/gateway/src/relay.js +25 -18
  13. package/dist/gateway/src/relay.js.map +1 -1
  14. package/dist/gateway/src/sessions.d.ts +35 -28
  15. package/dist/gateway/src/sessions.js +165 -145
  16. package/dist/gateway/src/sessions.js.map +1 -1
  17. package/dist/gateway/src/state-store.d.ts +9 -6
  18. package/dist/gateway/src/state-store.js +26 -19
  19. package/dist/gateway/src/state-store.js.map +1 -1
  20. package/dist/gateway/src/tokens.d.ts +27 -7
  21. package/dist/gateway/src/tokens.js +86 -60
  22. package/dist/gateway/src/tokens.js.map +1 -1
  23. package/dist/gateway/src/tunnel.d.ts +11 -10
  24. package/dist/gateway/src/tunnel.js +46 -35
  25. package/dist/gateway/src/tunnel.js.map +1 -1
  26. package/dist/gateway/tsconfig.tsbuildinfo +1 -1
  27. package/dist/shared-protocol/src/index.d.ts +662 -494
  28. package/dist/shared-protocol/src/index.js +52 -15
  29. package/dist/shared-protocol/src/index.js.map +1 -1
  30. package/package.json +2 -2
  31. package/src/agent-permission-http.ts +18 -10
  32. package/src/embedded.ts +122 -54
  33. package/src/index.ts +162 -91
  34. package/src/pairings.ts +6 -7
  35. package/src/relay.ts +28 -20
  36. package/src/sessions.ts +179 -150
  37. package/src/state-store.ts +41 -25
  38. package/src/tokens.ts +109 -63
  39. package/src/tunnel.ts +57 -39
@@ -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
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;
3
+ export declare function handleSocketMessage(socket: WebSocket, raw: string, role: "host" | "client", hostDeviceId: string, deviceId: string, sessions: SessionManager): 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,32 @@ 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 "device.connect":
59
60
  case "session.connect": {
60
61
  // Extract metadata from host's connect message
61
62
  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);
63
+ if (p.machineId || p.hostname || p.platform || p.cwd || p.capabilities) {
64
+ sessions.setMetadata(session.id, undefined, p.machineId ?? undefined, p.hostname ?? undefined, p.platform ?? undefined, p.cwd ?? undefined, undefined, p.capabilities ?? undefined);
64
65
  }
65
66
  break;
66
67
  }
@@ -74,6 +75,7 @@ function handleHostMessage(envelope, session, sessions) {
74
75
  broadcastToClients(session, envelope);
75
76
  break;
76
77
  }
78
+ case "device.heartbeat":
77
79
  case "session.heartbeat":
78
80
  break;
79
81
  case "permission.decision.result": {
@@ -132,6 +134,7 @@ function handleHostMessage(envelope, session, sessions) {
132
134
  case "terminal.spawned":
133
135
  case "terminal.list":
134
136
  case "terminal.browse.result":
137
+ case "terminal.file.read.result":
135
138
  broadcastToClients(session, envelope);
136
139
  break;
137
140
  // Structured status from hooks
@@ -149,8 +152,8 @@ function handleClientMessage(envelope, socket, session, deviceId, sessions) {
149
152
  if (session.controllerId === deviceId)
150
153
  return true;
151
154
  socket.send(serializeEnvelope(createEnvelope({
152
- type: "session.error",
153
- sessionId: session.id,
155
+ type: "device.error",
156
+ hostDeviceId: session.id,
154
157
  payload: {
155
158
  code: "control_conflict",
156
159
  message: "Not the controller",
@@ -171,11 +174,13 @@ function handleClientMessage(envelope, socket, session, deviceId, sessions) {
171
174
  sendToHost(session, envelope);
172
175
  break;
173
176
  }
177
+ case "device.ack":
174
178
  case "session.ack": {
175
179
  // Forward ACK to host
176
180
  sendToHost(session, envelope);
177
181
  break;
178
182
  }
183
+ case "device.resume":
179
184
  case "session.resume": {
180
185
  const p = parseTypedPayload("session.resume", envelope.payload);
181
186
  // Replay from gateway buffer first
@@ -184,7 +189,7 @@ function handleClientMessage(envelope, socket, session, deviceId, sessions) {
184
189
  const payload = msg.payload;
185
190
  socket.send(serializeEnvelope(createEnvelope({
186
191
  type: "terminal.output",
187
- sessionId: session.id,
192
+ hostDeviceId: session.id,
188
193
  terminalId: msg.terminalId,
189
194
  seq: msg.seq,
190
195
  payload: { ...payload, isReplay: true },
@@ -211,7 +216,7 @@ function handleClientMessage(envelope, socket, session, deviceId, sessions) {
211
216
  sessions.claimControl(session.id, deviceId);
212
217
  const grantMsg = createEnvelope({
213
218
  type: "control.grant",
214
- sessionId: session.id,
219
+ hostDeviceId: session.id,
215
220
  payload: { deviceId },
216
221
  });
217
222
  // Broadcast to ALL clients so previous controller updates its state
@@ -223,13 +228,14 @@ function handleClientMessage(envelope, socket, session, deviceId, sessions) {
223
228
  sessions.releaseControl(session.id, deviceId);
224
229
  const releaseMsg = createEnvelope({
225
230
  type: "control.release",
226
- sessionId: session.id,
231
+ hostDeviceId: session.id,
227
232
  payload: { deviceId },
228
233
  });
229
234
  broadcastToClients(session, releaseMsg);
230
235
  sendToHost(session, releaseMsg);
231
236
  break;
232
237
  }
238
+ case "device.heartbeat":
233
239
  case "session.heartbeat":
234
240
  break;
235
241
  // Screen sharing: client → host
@@ -253,6 +259,7 @@ function handleClientMessage(envelope, socket, session, deviceId, sessions) {
253
259
  case "terminal.kill":
254
260
  case "terminal.list":
255
261
  case "terminal.browse":
262
+ case "terminal.file.read":
256
263
  case "terminal.mkdir":
257
264
  case "terminal.history.request":
258
265
  case "file.upload":
@@ -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,19 @@
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
+ export type SessionState = DeviceState;
4
5
  export interface ConnectedDevice {
5
6
  socket: WebSocket;
6
7
  role: "host" | "client";
7
8
  deviceId: string;
9
+ token?: string;
10
+ authorizationId?: string;
8
11
  connectedAt: number;
9
12
  }
10
- export interface Session {
13
+ export interface HostDevice {
11
14
  id: string;
12
- state: SessionState;
15
+ hostDeviceId: string;
16
+ state: DeviceState;
13
17
  host: ConnectedDevice | undefined;
14
18
  clients: Map<string, ConnectedDevice>;
15
19
  controllerId: string | undefined;
@@ -18,55 +22,58 @@ export interface Session {
18
22
  outputBuffers: Map<string, Envelope[]>;
19
23
  lastStatusByTerminal: Map<string, Envelope>;
20
24
  hostDisconnectedAt: number | undefined;
21
- provider: string | undefined;
22
25
  machineId: string | undefined;
23
26
  hostname: string | undefined;
24
27
  platform: string | undefined;
25
28
  cwd: string | undefined;
26
- projectName: string | undefined;
29
+ capabilities: string[];
27
30
  userId: string | undefined;
28
31
  }
29
- export declare class SessionManager {
30
- private sessions;
32
+ export type Session = HostDevice;
33
+ export declare class DeviceManager {
34
+ private devices;
31
35
  private cleanupTimer;
32
36
  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): {
37
+ getOrCreate(hostDeviceId: string): HostDevice;
38
+ get(hostDeviceId: string): HostDevice | undefined;
39
+ setHost(hostDeviceId: string, socketDevice: ConnectedDevice): void;
40
+ addClient(hostDeviceId: string, socketDevice: ConnectedDevice): void;
41
+ removeHost(hostDeviceId: string): {
38
42
  clients: Map<string, ConnectedDevice>;
39
43
  } | 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): {
44
+ removeClient(hostDeviceId: string, deviceId: string): void;
45
+ disconnectAuthorization(hostDeviceId: string, authorizationId: string): number;
46
+ forceDelete(hostDeviceId: string): boolean;
47
+ bufferOutput(hostDeviceId: string, envelope: Envelope): void;
48
+ cacheStatus(hostDeviceId: string, envelope: Envelope): void;
49
+ getStatusReplay(hostDeviceId: string): Envelope[];
50
+ getReplayFrom(hostDeviceId: string, afterSeqByTerminal: Record<string, number>, fallbackAfterSeq?: number): Envelope[];
51
+ claimControl(hostDeviceId: string, deviceId: string): boolean;
52
+ releaseControl(hostDeviceId: string, deviceId: string): boolean;
53
+ terminate(hostDeviceId: string): void;
54
+ listActive(): HostDevice[];
55
+ getSummary(hostDeviceId: string): {
52
56
  id: string;
53
- state: SessionState;
57
+ hostDeviceId: string;
58
+ state: DeviceState;
59
+ online: boolean;
54
60
  hasHost: boolean;
55
61
  clientCount: number;
56
62
  controllerId: string | null;
57
63
  lastActivity: number;
58
64
  createdAt: number;
59
65
  bufferSize: number;
60
- provider: string | null;
61
66
  machineId: string | null;
62
67
  hostname: string | null;
63
68
  platform: string | null;
64
69
  cwd: string | null;
65
- projectName: string | null;
70
+ capabilities: string[];
66
71
  userId: string | null;
67
72
  } | undefined;
68
- setMetadata(sessionId: string, provider?: string, machineId?: string, hostname?: string, platform?: string, cwd?: string, projectName?: string): void;
73
+ setMetadata(hostDeviceId: string, _provider?: string, machineId?: string, hostname?: string, platform?: string, cwd?: string, _projectName?: string, capabilities?: string[]): void;
69
74
  private maybeDelete;
70
75
  private cleanup;
71
76
  destroy(): void;
72
77
  }
78
+ export declare class SessionManager extends DeviceManager {
79
+ }