@linkshell/gateway 0.2.16 → 0.2.18
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/dist/gateway/src/embedded.js +40 -0
- package/dist/gateway/src/embedded.js.map +1 -1
- package/dist/gateway/src/index.js +52 -0
- package/dist/gateway/src/index.js.map +1 -1
- package/dist/gateway/src/relay.js +17 -0
- package/dist/gateway/src/relay.js.map +1 -1
- package/dist/gateway/src/tunnel.d.ts +53 -0
- package/dist/gateway/src/tunnel.js +300 -0
- package/dist/gateway/src/tunnel.js.map +1 -0
- package/dist/gateway/tsconfig.tsbuildinfo +1 -1
- package/dist/shared-protocol/src/index.d.ts +162 -28
- package/dist/shared-protocol/src/index.js +30 -0
- package/dist/shared-protocol/src/index.js.map +1 -1
- package/package.json +2 -2
- package/src/embedded.ts +51 -0
- package/src/index.ts +62 -0
- package/src/relay.ts +21 -0
- package/src/tunnel.ts +363 -0
|
@@ -18,9 +18,9 @@ export declare const envelopeSchema: z.ZodObject<{
|
|
|
18
18
|
ack: z.ZodOptional<z.ZodNumber>;
|
|
19
19
|
payload: z.ZodUnknown;
|
|
20
20
|
}, "strip", z.ZodTypeAny, {
|
|
21
|
-
id: string;
|
|
22
|
-
type: string;
|
|
23
21
|
sessionId: string;
|
|
22
|
+
type: string;
|
|
23
|
+
id: string;
|
|
24
24
|
timestamp: string;
|
|
25
25
|
terminalId?: string | undefined;
|
|
26
26
|
deviceId?: string | undefined;
|
|
@@ -29,9 +29,9 @@ export declare const envelopeSchema: z.ZodObject<{
|
|
|
29
29
|
ack?: number | undefined;
|
|
30
30
|
payload?: unknown;
|
|
31
31
|
}, {
|
|
32
|
-
id: string;
|
|
33
|
-
type: string;
|
|
34
32
|
sessionId: string;
|
|
33
|
+
type: string;
|
|
34
|
+
id: string;
|
|
35
35
|
timestamp: string;
|
|
36
36
|
terminalId?: string | undefined;
|
|
37
37
|
deviceId?: string | undefined;
|
|
@@ -89,7 +89,7 @@ export declare const sessionConnectPayloadSchema: z.ZodObject<{
|
|
|
89
89
|
}, "strip", z.ZodTypeAny, {
|
|
90
90
|
role: "host" | "client";
|
|
91
91
|
clientName: string;
|
|
92
|
-
provider?: "
|
|
92
|
+
provider?: "claude" | "codex" | "custom" | undefined;
|
|
93
93
|
protocolVersion?: number | undefined;
|
|
94
94
|
hostname?: string | undefined;
|
|
95
95
|
platform?: string | undefined;
|
|
@@ -98,7 +98,7 @@ export declare const sessionConnectPayloadSchema: z.ZodObject<{
|
|
|
98
98
|
}, {
|
|
99
99
|
role: "host" | "client";
|
|
100
100
|
clientName: string;
|
|
101
|
-
provider?: "
|
|
101
|
+
provider?: "claude" | "codex" | "custom" | undefined;
|
|
102
102
|
protocolVersion?: number | undefined;
|
|
103
103
|
hostname?: string | undefined;
|
|
104
104
|
platform?: string | undefined;
|
|
@@ -248,8 +248,8 @@ export declare const screenStatusPayloadSchema: z.ZodObject<{
|
|
|
248
248
|
error?: string | undefined;
|
|
249
249
|
}, {
|
|
250
250
|
active: boolean;
|
|
251
|
-
mode?: "webrtc" | "fallback" | "off" | undefined;
|
|
252
251
|
error?: string | undefined;
|
|
252
|
+
mode?: "webrtc" | "fallback" | "off" | undefined;
|
|
253
253
|
}>;
|
|
254
254
|
export declare const screenOfferPayloadSchema: z.ZodObject<{
|
|
255
255
|
sdp: z.ZodString;
|
|
@@ -283,10 +283,10 @@ export declare const terminalSpawnPayloadSchema: z.ZodObject<{
|
|
|
283
283
|
provider: z.ZodOptional<z.ZodEnum<["claude", "codex", "custom"]>>;
|
|
284
284
|
}, "strip", z.ZodTypeAny, {
|
|
285
285
|
cwd: string;
|
|
286
|
-
provider?: "
|
|
286
|
+
provider?: "claude" | "codex" | "custom" | undefined;
|
|
287
287
|
}, {
|
|
288
288
|
cwd: string;
|
|
289
|
-
provider?: "
|
|
289
|
+
provider?: "claude" | "codex" | "custom" | undefined;
|
|
290
290
|
}>;
|
|
291
291
|
export declare const terminalInfoSchema: z.ZodObject<{
|
|
292
292
|
terminalId: z.ZodString;
|
|
@@ -295,14 +295,14 @@ export declare const terminalInfoSchema: z.ZodObject<{
|
|
|
295
295
|
provider: z.ZodString;
|
|
296
296
|
status: z.ZodEnum<["running", "exited"]>;
|
|
297
297
|
}, "strip", z.ZodTypeAny, {
|
|
298
|
-
terminalId: string;
|
|
299
298
|
status: "running" | "exited";
|
|
299
|
+
terminalId: string;
|
|
300
300
|
provider: string;
|
|
301
301
|
cwd: string;
|
|
302
302
|
projectName: string;
|
|
303
303
|
}, {
|
|
304
|
-
terminalId: string;
|
|
305
304
|
status: "running" | "exited";
|
|
305
|
+
terminalId: string;
|
|
306
306
|
provider: string;
|
|
307
307
|
cwd: string;
|
|
308
308
|
projectName: string;
|
|
@@ -315,30 +315,30 @@ export declare const terminalListPayloadSchema: z.ZodObject<{
|
|
|
315
315
|
provider: z.ZodString;
|
|
316
316
|
status: z.ZodEnum<["running", "exited"]>;
|
|
317
317
|
}, "strip", z.ZodTypeAny, {
|
|
318
|
-
terminalId: string;
|
|
319
318
|
status: "running" | "exited";
|
|
319
|
+
terminalId: string;
|
|
320
320
|
provider: string;
|
|
321
321
|
cwd: string;
|
|
322
322
|
projectName: string;
|
|
323
323
|
}, {
|
|
324
|
-
terminalId: string;
|
|
325
324
|
status: "running" | "exited";
|
|
325
|
+
terminalId: string;
|
|
326
326
|
provider: string;
|
|
327
327
|
cwd: string;
|
|
328
328
|
projectName: string;
|
|
329
329
|
}>, "many">;
|
|
330
330
|
}, "strip", z.ZodTypeAny, {
|
|
331
331
|
terminals: {
|
|
332
|
-
terminalId: string;
|
|
333
332
|
status: "running" | "exited";
|
|
333
|
+
terminalId: string;
|
|
334
334
|
provider: string;
|
|
335
335
|
cwd: string;
|
|
336
336
|
projectName: string;
|
|
337
337
|
}[];
|
|
338
338
|
}, {
|
|
339
339
|
terminals: {
|
|
340
|
-
terminalId: string;
|
|
341
340
|
status: "running" | "exited";
|
|
341
|
+
terminalId: string;
|
|
342
342
|
provider: string;
|
|
343
343
|
cwd: string;
|
|
344
344
|
projectName: string;
|
|
@@ -448,7 +448,7 @@ export declare const terminalStatusPayloadSchema: z.ZodObject<{
|
|
|
448
448
|
}>>;
|
|
449
449
|
pendingPermissionCount: z.ZodOptional<z.ZodNumber>;
|
|
450
450
|
}, "strip", z.ZodTypeAny, {
|
|
451
|
-
phase: "
|
|
451
|
+
phase: "error" | "thinking" | "tool_use" | "outputting" | "waiting" | "idle";
|
|
452
452
|
seq?: number | undefined;
|
|
453
453
|
toolName?: string | undefined;
|
|
454
454
|
toolInput?: string | undefined;
|
|
@@ -463,7 +463,7 @@ export declare const terminalStatusPayloadSchema: z.ZodObject<{
|
|
|
463
463
|
} | undefined;
|
|
464
464
|
pendingPermissionCount?: number | undefined;
|
|
465
465
|
}, {
|
|
466
|
-
phase: "
|
|
466
|
+
phase: "error" | "thinking" | "tool_use" | "outputting" | "waiting" | "idle";
|
|
467
467
|
seq?: number | undefined;
|
|
468
468
|
toolName?: string | undefined;
|
|
469
469
|
toolInput?: string | undefined;
|
|
@@ -508,6 +508,73 @@ export declare const errorPayloadSchema: z.ZodObject<{
|
|
|
508
508
|
code: string;
|
|
509
509
|
message: string;
|
|
510
510
|
}>;
|
|
511
|
+
export declare const tunnelRequestPayloadSchema: z.ZodObject<{
|
|
512
|
+
requestId: z.ZodString;
|
|
513
|
+
method: z.ZodString;
|
|
514
|
+
url: z.ZodString;
|
|
515
|
+
headers: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
516
|
+
body: z.ZodNullable<z.ZodString>;
|
|
517
|
+
port: z.ZodNumber;
|
|
518
|
+
}, "strip", z.ZodTypeAny, {
|
|
519
|
+
headers: Record<string, string>;
|
|
520
|
+
requestId: string;
|
|
521
|
+
method: string;
|
|
522
|
+
url: string;
|
|
523
|
+
body: string | null;
|
|
524
|
+
port: number;
|
|
525
|
+
}, {
|
|
526
|
+
headers: Record<string, string>;
|
|
527
|
+
requestId: string;
|
|
528
|
+
method: string;
|
|
529
|
+
url: string;
|
|
530
|
+
body: string | null;
|
|
531
|
+
port: number;
|
|
532
|
+
}>;
|
|
533
|
+
export declare const tunnelResponsePayloadSchema: z.ZodObject<{
|
|
534
|
+
requestId: z.ZodString;
|
|
535
|
+
statusCode: z.ZodNumber;
|
|
536
|
+
headers: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
537
|
+
body: z.ZodString;
|
|
538
|
+
isFinal: z.ZodBoolean;
|
|
539
|
+
}, "strip", z.ZodTypeAny, {
|
|
540
|
+
headers: Record<string, string>;
|
|
541
|
+
isFinal: boolean;
|
|
542
|
+
requestId: string;
|
|
543
|
+
body: string;
|
|
544
|
+
statusCode: number;
|
|
545
|
+
}, {
|
|
546
|
+
headers: Record<string, string>;
|
|
547
|
+
isFinal: boolean;
|
|
548
|
+
requestId: string;
|
|
549
|
+
body: string;
|
|
550
|
+
statusCode: number;
|
|
551
|
+
}>;
|
|
552
|
+
export declare const tunnelWsDataPayloadSchema: z.ZodObject<{
|
|
553
|
+
requestId: z.ZodString;
|
|
554
|
+
data: z.ZodString;
|
|
555
|
+
isBinary: z.ZodBoolean;
|
|
556
|
+
}, "strip", z.ZodTypeAny, {
|
|
557
|
+
data: string;
|
|
558
|
+
requestId: string;
|
|
559
|
+
isBinary: boolean;
|
|
560
|
+
}, {
|
|
561
|
+
data: string;
|
|
562
|
+
requestId: string;
|
|
563
|
+
isBinary: boolean;
|
|
564
|
+
}>;
|
|
565
|
+
export declare const tunnelWsClosePayloadSchema: z.ZodObject<{
|
|
566
|
+
requestId: z.ZodString;
|
|
567
|
+
code: z.ZodOptional<z.ZodNumber>;
|
|
568
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
569
|
+
}, "strip", z.ZodTypeAny, {
|
|
570
|
+
requestId: string;
|
|
571
|
+
code?: number | undefined;
|
|
572
|
+
reason?: string | undefined;
|
|
573
|
+
}, {
|
|
574
|
+
requestId: string;
|
|
575
|
+
code?: number | undefined;
|
|
576
|
+
reason?: string | undefined;
|
|
577
|
+
}>;
|
|
511
578
|
export declare const protocolMessageSchemas: {
|
|
512
579
|
readonly "session.connect": z.ZodObject<{
|
|
513
580
|
role: z.ZodEnum<["host", "client"]>;
|
|
@@ -521,7 +588,7 @@ export declare const protocolMessageSchemas: {
|
|
|
521
588
|
}, "strip", z.ZodTypeAny, {
|
|
522
589
|
role: "host" | "client";
|
|
523
590
|
clientName: string;
|
|
524
|
-
provider?: "
|
|
591
|
+
provider?: "claude" | "codex" | "custom" | undefined;
|
|
525
592
|
protocolVersion?: number | undefined;
|
|
526
593
|
hostname?: string | undefined;
|
|
527
594
|
platform?: string | undefined;
|
|
@@ -530,7 +597,7 @@ export declare const protocolMessageSchemas: {
|
|
|
530
597
|
}, {
|
|
531
598
|
role: "host" | "client";
|
|
532
599
|
clientName: string;
|
|
533
|
-
provider?: "
|
|
600
|
+
provider?: "claude" | "codex" | "custom" | undefined;
|
|
534
601
|
protocolVersion?: number | undefined;
|
|
535
602
|
hostname?: string | undefined;
|
|
536
603
|
platform?: string | undefined;
|
|
@@ -726,8 +793,8 @@ export declare const protocolMessageSchemas: {
|
|
|
726
793
|
error?: string | undefined;
|
|
727
794
|
}, {
|
|
728
795
|
active: boolean;
|
|
729
|
-
mode?: "webrtc" | "fallback" | "off" | undefined;
|
|
730
796
|
error?: string | undefined;
|
|
797
|
+
mode?: "webrtc" | "fallback" | "off" | undefined;
|
|
731
798
|
}>;
|
|
732
799
|
readonly "screen.offer": z.ZodObject<{
|
|
733
800
|
sdp: z.ZodString;
|
|
@@ -771,10 +838,10 @@ export declare const protocolMessageSchemas: {
|
|
|
771
838
|
provider: z.ZodOptional<z.ZodEnum<["claude", "codex", "custom"]>>;
|
|
772
839
|
}, "strip", z.ZodTypeAny, {
|
|
773
840
|
cwd: string;
|
|
774
|
-
provider?: "
|
|
841
|
+
provider?: "claude" | "codex" | "custom" | undefined;
|
|
775
842
|
}, {
|
|
776
843
|
cwd: string;
|
|
777
|
-
provider?: "
|
|
844
|
+
provider?: "claude" | "codex" | "custom" | undefined;
|
|
778
845
|
}>;
|
|
779
846
|
readonly "terminal.spawned": z.ZodObject<{
|
|
780
847
|
terminalId: z.ZodString;
|
|
@@ -800,30 +867,30 @@ export declare const protocolMessageSchemas: {
|
|
|
800
867
|
provider: z.ZodString;
|
|
801
868
|
status: z.ZodEnum<["running", "exited"]>;
|
|
802
869
|
}, "strip", z.ZodTypeAny, {
|
|
803
|
-
terminalId: string;
|
|
804
870
|
status: "running" | "exited";
|
|
871
|
+
terminalId: string;
|
|
805
872
|
provider: string;
|
|
806
873
|
cwd: string;
|
|
807
874
|
projectName: string;
|
|
808
875
|
}, {
|
|
809
|
-
terminalId: string;
|
|
810
876
|
status: "running" | "exited";
|
|
877
|
+
terminalId: string;
|
|
811
878
|
provider: string;
|
|
812
879
|
cwd: string;
|
|
813
880
|
projectName: string;
|
|
814
881
|
}>, "many">;
|
|
815
882
|
}, "strip", z.ZodTypeAny, {
|
|
816
883
|
terminals: {
|
|
817
|
-
terminalId: string;
|
|
818
884
|
status: "running" | "exited";
|
|
885
|
+
terminalId: string;
|
|
819
886
|
provider: string;
|
|
820
887
|
cwd: string;
|
|
821
888
|
projectName: string;
|
|
822
889
|
}[];
|
|
823
890
|
}, {
|
|
824
891
|
terminals: {
|
|
825
|
-
terminalId: string;
|
|
826
892
|
status: "running" | "exited";
|
|
893
|
+
terminalId: string;
|
|
827
894
|
provider: string;
|
|
828
895
|
cwd: string;
|
|
829
896
|
projectName: string;
|
|
@@ -904,7 +971,7 @@ export declare const protocolMessageSchemas: {
|
|
|
904
971
|
}>>;
|
|
905
972
|
pendingPermissionCount: z.ZodOptional<z.ZodNumber>;
|
|
906
973
|
}, "strip", z.ZodTypeAny, {
|
|
907
|
-
phase: "
|
|
974
|
+
phase: "error" | "thinking" | "tool_use" | "outputting" | "waiting" | "idle";
|
|
908
975
|
seq?: number | undefined;
|
|
909
976
|
toolName?: string | undefined;
|
|
910
977
|
toolInput?: string | undefined;
|
|
@@ -919,7 +986,7 @@ export declare const protocolMessageSchemas: {
|
|
|
919
986
|
} | undefined;
|
|
920
987
|
pendingPermissionCount?: number | undefined;
|
|
921
988
|
}, {
|
|
922
|
-
phase: "
|
|
989
|
+
phase: "error" | "thinking" | "tool_use" | "outputting" | "waiting" | "idle";
|
|
923
990
|
seq?: number | undefined;
|
|
924
991
|
toolName?: string | undefined;
|
|
925
992
|
toolInput?: string | undefined;
|
|
@@ -944,6 +1011,73 @@ export declare const protocolMessageSchemas: {
|
|
|
944
1011
|
requestId: string;
|
|
945
1012
|
decision: "allow" | "deny";
|
|
946
1013
|
}>;
|
|
1014
|
+
readonly "tunnel.request": z.ZodObject<{
|
|
1015
|
+
requestId: z.ZodString;
|
|
1016
|
+
method: z.ZodString;
|
|
1017
|
+
url: z.ZodString;
|
|
1018
|
+
headers: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
1019
|
+
body: z.ZodNullable<z.ZodString>;
|
|
1020
|
+
port: z.ZodNumber;
|
|
1021
|
+
}, "strip", z.ZodTypeAny, {
|
|
1022
|
+
headers: Record<string, string>;
|
|
1023
|
+
requestId: string;
|
|
1024
|
+
method: string;
|
|
1025
|
+
url: string;
|
|
1026
|
+
body: string | null;
|
|
1027
|
+
port: number;
|
|
1028
|
+
}, {
|
|
1029
|
+
headers: Record<string, string>;
|
|
1030
|
+
requestId: string;
|
|
1031
|
+
method: string;
|
|
1032
|
+
url: string;
|
|
1033
|
+
body: string | null;
|
|
1034
|
+
port: number;
|
|
1035
|
+
}>;
|
|
1036
|
+
readonly "tunnel.response": z.ZodObject<{
|
|
1037
|
+
requestId: z.ZodString;
|
|
1038
|
+
statusCode: z.ZodNumber;
|
|
1039
|
+
headers: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
1040
|
+
body: z.ZodString;
|
|
1041
|
+
isFinal: z.ZodBoolean;
|
|
1042
|
+
}, "strip", z.ZodTypeAny, {
|
|
1043
|
+
headers: Record<string, string>;
|
|
1044
|
+
isFinal: boolean;
|
|
1045
|
+
requestId: string;
|
|
1046
|
+
body: string;
|
|
1047
|
+
statusCode: number;
|
|
1048
|
+
}, {
|
|
1049
|
+
headers: Record<string, string>;
|
|
1050
|
+
isFinal: boolean;
|
|
1051
|
+
requestId: string;
|
|
1052
|
+
body: string;
|
|
1053
|
+
statusCode: number;
|
|
1054
|
+
}>;
|
|
1055
|
+
readonly "tunnel.ws.data": z.ZodObject<{
|
|
1056
|
+
requestId: z.ZodString;
|
|
1057
|
+
data: z.ZodString;
|
|
1058
|
+
isBinary: z.ZodBoolean;
|
|
1059
|
+
}, "strip", z.ZodTypeAny, {
|
|
1060
|
+
data: string;
|
|
1061
|
+
requestId: string;
|
|
1062
|
+
isBinary: boolean;
|
|
1063
|
+
}, {
|
|
1064
|
+
data: string;
|
|
1065
|
+
requestId: string;
|
|
1066
|
+
isBinary: boolean;
|
|
1067
|
+
}>;
|
|
1068
|
+
readonly "tunnel.ws.close": z.ZodObject<{
|
|
1069
|
+
requestId: z.ZodString;
|
|
1070
|
+
code: z.ZodOptional<z.ZodNumber>;
|
|
1071
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
1072
|
+
}, "strip", z.ZodTypeAny, {
|
|
1073
|
+
requestId: string;
|
|
1074
|
+
code?: number | undefined;
|
|
1075
|
+
reason?: string | undefined;
|
|
1076
|
+
}, {
|
|
1077
|
+
requestId: string;
|
|
1078
|
+
code?: number | undefined;
|
|
1079
|
+
reason?: string | undefined;
|
|
1080
|
+
}>;
|
|
947
1081
|
};
|
|
948
1082
|
export type ProtocolMessageType = keyof typeof protocolMessageSchemas;
|
|
949
1083
|
export declare function createEnvelope<T>(input: {
|
|
@@ -208,6 +208,32 @@ export const errorPayloadSchema = z.object({
|
|
|
208
208
|
code: z.string().min(1),
|
|
209
209
|
message: z.string().min(1),
|
|
210
210
|
});
|
|
211
|
+
// ── Tunnel payloads ────────────────────────────────────────────────
|
|
212
|
+
export const tunnelRequestPayloadSchema = z.object({
|
|
213
|
+
requestId: z.string().min(1),
|
|
214
|
+
method: z.string().min(1),
|
|
215
|
+
url: z.string(),
|
|
216
|
+
headers: z.record(z.string()),
|
|
217
|
+
body: z.string().nullable(), // base64 encoded
|
|
218
|
+
port: z.number().int().min(1).max(65535),
|
|
219
|
+
});
|
|
220
|
+
export const tunnelResponsePayloadSchema = z.object({
|
|
221
|
+
requestId: z.string().min(1),
|
|
222
|
+
statusCode: z.number().int(),
|
|
223
|
+
headers: z.record(z.string()),
|
|
224
|
+
body: z.string(), // base64 encoded chunk
|
|
225
|
+
isFinal: z.boolean(),
|
|
226
|
+
});
|
|
227
|
+
export const tunnelWsDataPayloadSchema = z.object({
|
|
228
|
+
requestId: z.string().min(1),
|
|
229
|
+
data: z.string(), // base64 encoded
|
|
230
|
+
isBinary: z.boolean(),
|
|
231
|
+
});
|
|
232
|
+
export const tunnelWsClosePayloadSchema = z.object({
|
|
233
|
+
requestId: z.string().min(1),
|
|
234
|
+
code: z.number().int().optional(),
|
|
235
|
+
reason: z.string().optional(),
|
|
236
|
+
});
|
|
211
237
|
// ── Protocol message type registry ──────────────────────────────────
|
|
212
238
|
export const protocolMessageSchemas = {
|
|
213
239
|
"session.connect": sessionConnectPayloadSchema,
|
|
@@ -244,6 +270,10 @@ export const protocolMessageSchemas = {
|
|
|
244
270
|
"terminal.kill": terminalKillPayloadSchema,
|
|
245
271
|
"terminal.status": terminalStatusPayloadSchema,
|
|
246
272
|
"permission.decision": permissionDecisionPayloadSchema,
|
|
273
|
+
"tunnel.request": tunnelRequestPayloadSchema,
|
|
274
|
+
"tunnel.response": tunnelResponsePayloadSchema,
|
|
275
|
+
"tunnel.ws.data": tunnelWsDataPayloadSchema,
|
|
276
|
+
"tunnel.ws.close": tunnelWsClosePayloadSchema,
|
|
247
277
|
};
|
|
248
278
|
// ── UUID helper (works in Node, Web, and Expo) ─────────────────────
|
|
249
279
|
function generateId() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../shared-protocol/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,uEAAuE;AAEvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,uEAAuE;AAEvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,iBAAiB;IACjB,YAAY;IACZ,QAAQ;IACR,cAAc;IACd,MAAM;IACN,YAAY;CACb,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,mBAAmB;IACnB,iBAAiB;IACjB,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,cAAc;CACf,CAAC,CAAC;AAGH,uEAAuE;AAEvE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC9C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC9C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAC,CAAC;AAIH,uEAAuE;AAEvE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,gBAAgB;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,UAAU;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEhE,uEAAuE;AAEvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;CAC/C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAEH,sEAAsE;AAEtE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC3D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH,qEAAqE;AAErE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;CACzB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAEH,wEAAwE;AAExE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;QACZ,UAAU;QACV,UAAU;QACV,YAAY;QACZ,SAAS;QACT,MAAM;QACN,OAAO;KACR,CAAC;IACF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,aAAa,EAAE,CAAC;SACb,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;SACD,QAAQ,EAAE;IACb,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAEH,uEAAuE;AAEvE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,iBAAiB;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH,uEAAuE;AAEvE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,iBAAiB,EAAE,2BAA2B;IAC9C,aAAa,EAAE,uBAAuB;IACtC,gBAAgB,EAAE,0BAA0B;IAC5C,mBAAmB,EAAE,6BAA6B;IAClD,eAAe,EAAE,kBAAkB;IACnC,iBAAiB,EAAE,2BAA2B;IAC9C,gBAAgB,EAAE,0BAA0B;IAC5C,iBAAiB,EAAE,2BAA2B;IAC9C,eAAe,EAAE,yBAAyB;IAC1C,iBAAiB,EAAE,2BAA2B;IAC9C,eAAe,EAAE,yBAAyB;IAC1C,iBAAiB,EAAE,2BAA2B;IAC9C,eAAe,EAAE,yBAAyB;IAC1C,eAAe,EAAE,yBAAyB;IAC1C,gBAAgB,EAAE,0BAA0B;IAC5C,iBAAiB,EAAE,2BAA2B;IAC9C,2BAA2B,EAAE,oCAAoC;IACjE,0BAA0B,EAAE,mCAAmC;IAC/D,cAAc,EAAE,wBAAwB;IACxC,aAAa,EAAE,uBAAuB;IACtC,cAAc,EAAE,wBAAwB;IACxC,eAAe,EAAE,yBAAyB;IAC1C,cAAc,EAAE,wBAAwB;IACxC,eAAe,EAAE,yBAAyB;IAC1C,YAAY,EAAE,sBAAsB;IACpC,aAAa,EAAE,uBAAuB;IACtC,gBAAgB,EAAE,0BAA0B;IAC5C,kBAAkB,EAAE,4BAA4B;IAChD,eAAe,EAAE,yBAAyB;IAC1C,iBAAiB,EAAE,2BAA2B;IAC9C,wBAAwB,EAAE,iCAAiC;IAC3D,eAAe,EAAE,yBAAyB;IAC1C,iBAAiB,EAAE,2BAA2B;IAC9C,qBAAqB,EAAE,+BAA+B;CAC9C,CAAC;AAIX,sEAAsE;AAEtE,SAAS,UAAU;IACjB,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,EAAE,CAAC;QACxD,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IACD,0EAA0E;IAC1E,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACnE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AAEvE,MAAM,UAAU,cAAc,CAAI,KAUjC;IACC,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,UAAU,EAAE;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAiB;IACjD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,IAAW,EACX,OAAgB;IAEhB,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../shared-protocol/src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@linkshell/gateway",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.18",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/gateway/src/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"test": "vitest run"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@linkshell/protocol": "^0.2.
|
|
35
|
+
"@linkshell/protocol": "^0.2.17",
|
|
36
36
|
"zod": "^3.24.3",
|
|
37
37
|
"ws": "^8.18.1"
|
|
38
38
|
},
|
package/src/embedded.ts
CHANGED
|
@@ -13,6 +13,13 @@ import { SessionManager } from "./sessions.js";
|
|
|
13
13
|
import { PairingManager } from "./pairings.js";
|
|
14
14
|
import { TokenManager } from "./tokens.js";
|
|
15
15
|
import { handleSocketMessage } from "./relay.js";
|
|
16
|
+
import {
|
|
17
|
+
parseTunnelPath,
|
|
18
|
+
parseTunnelCookie,
|
|
19
|
+
handleTunnelRequest,
|
|
20
|
+
handleTunnelWsUpgrade,
|
|
21
|
+
cleanupSessionTunnels,
|
|
22
|
+
} from "./tunnel.js";
|
|
16
23
|
|
|
17
24
|
export interface EmbeddedGatewayOptions {
|
|
18
25
|
port?: number;
|
|
@@ -204,6 +211,25 @@ export function startEmbeddedGateway(
|
|
|
204
211
|
return;
|
|
205
212
|
}
|
|
206
213
|
|
|
214
|
+
// Tunnel HTTP proxy (explicit path)
|
|
215
|
+
const tunnelParsed = parseTunnelPath(url.pathname);
|
|
216
|
+
if (tunnelParsed) {
|
|
217
|
+
await handleTunnelRequest(req, res, sessionManager, tokenManager, tunnelParsed, url);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Tunnel fallback: cookie-based routing for sub-resources (e.g. /_next/static/...)
|
|
222
|
+
const tunnelCookie = parseTunnelCookie(req);
|
|
223
|
+
if (tunnelCookie) {
|
|
224
|
+
const fallbackParsed = {
|
|
225
|
+
sessionId: tunnelCookie.sessionId,
|
|
226
|
+
port: tunnelCookie.port,
|
|
227
|
+
path: url.pathname,
|
|
228
|
+
};
|
|
229
|
+
await handleTunnelRequest(req, res, sessionManager, tokenManager, fallbackParsed, url);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
|
|
207
233
|
json(res, 404, { error: "not_found" });
|
|
208
234
|
} catch (err) {
|
|
209
235
|
if (err instanceof ZodError) {
|
|
@@ -235,6 +261,31 @@ export function startEmbeddedGateway(
|
|
|
235
261
|
|
|
236
262
|
server.on("upgrade", (request, socket, head) => {
|
|
237
263
|
const url = new URL(request.url ?? "/", `http://${request.headers.host}`);
|
|
264
|
+
|
|
265
|
+
// Tunnel WebSocket upgrade (for HMR etc.)
|
|
266
|
+
const tunnelParsed = parseTunnelPath(url.pathname);
|
|
267
|
+
if (tunnelParsed) {
|
|
268
|
+
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
269
|
+
handleTunnelWsUpgrade(ws, tunnelParsed, url, sessionManager, tokenManager);
|
|
270
|
+
});
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Tunnel WS fallback via cookie (for HMR paths like /_next/webpack-hmr)
|
|
275
|
+
const tunnelCookie = parseTunnelCookie(request);
|
|
276
|
+
if (tunnelCookie && url.pathname !== "/ws") {
|
|
277
|
+
const fallbackParsed = {
|
|
278
|
+
sessionId: tunnelCookie.sessionId,
|
|
279
|
+
port: tunnelCookie.port,
|
|
280
|
+
path: url.pathname,
|
|
281
|
+
};
|
|
282
|
+
url.searchParams.set("token", tunnelCookie.token);
|
|
283
|
+
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
284
|
+
handleTunnelWsUpgrade(ws, fallbackParsed, url, sessionManager, tokenManager);
|
|
285
|
+
});
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
|
|
238
289
|
if (url.pathname !== "/ws") {
|
|
239
290
|
socket.destroy();
|
|
240
291
|
return;
|
package/src/index.ts
CHANGED
|
@@ -13,6 +13,12 @@ import { SessionManager } from "./sessions.js";
|
|
|
13
13
|
import { PairingManager } from "./pairings.js";
|
|
14
14
|
import { TokenManager } from "./tokens.js";
|
|
15
15
|
import { handleSocketMessage } from "./relay.js";
|
|
16
|
+
import {
|
|
17
|
+
parseTunnelPath,
|
|
18
|
+
parseTunnelCookie,
|
|
19
|
+
handleTunnelRequest,
|
|
20
|
+
cleanupSessionTunnels,
|
|
21
|
+
} from "./tunnel.js";
|
|
16
22
|
|
|
17
23
|
const port = Number(process.env.PORT ?? 8787);
|
|
18
24
|
const logLevel = (process.env.LOG_LEVEL ?? "info") as
|
|
@@ -259,6 +265,25 @@ async function handleRequest(
|
|
|
259
265
|
return;
|
|
260
266
|
}
|
|
261
267
|
|
|
268
|
+
// Tunnel HTTP proxy (explicit path)
|
|
269
|
+
const tunnelParsed = parseTunnelPath(url.pathname);
|
|
270
|
+
if (tunnelParsed) {
|
|
271
|
+
await handleTunnelRequest(req, res, sessionManager, tokenManager, tunnelParsed, url);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Tunnel fallback: cookie-based routing for sub-resources (e.g. /_next/static/...)
|
|
276
|
+
const tunnelCookie = parseTunnelCookie(req);
|
|
277
|
+
if (tunnelCookie) {
|
|
278
|
+
const fallbackParsed = {
|
|
279
|
+
sessionId: tunnelCookie.sessionId,
|
|
280
|
+
port: tunnelCookie.port,
|
|
281
|
+
path: url.pathname,
|
|
282
|
+
};
|
|
283
|
+
await handleTunnelRequest(req, res, sessionManager, tokenManager, fallbackParsed, url);
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
|
|
262
287
|
json(res, 404, { error: "not_found" });
|
|
263
288
|
}
|
|
264
289
|
|
|
@@ -271,6 +296,43 @@ const wss = new WebSocketServer({
|
|
|
271
296
|
|
|
272
297
|
server.on("upgrade", (request, socket, head) => {
|
|
273
298
|
const url = new URL(request.url ?? "/", `http://${request.headers.host}`);
|
|
299
|
+
|
|
300
|
+
// Tunnel WebSocket upgrade (for HMR etc.)
|
|
301
|
+
const tunnelParsed = parseTunnelPath(url.pathname);
|
|
302
|
+
if (tunnelParsed) {
|
|
303
|
+
const ip = getClientIp(request);
|
|
304
|
+
if (!isRateLimitBypassed(ip) && !wsConnectLimiter.allow(ip)) {
|
|
305
|
+
socket.write("HTTP/1.1 429 Too Many Requests\r\n\r\n");
|
|
306
|
+
socket.destroy();
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
// Import dynamically to handle tunnel WS upgrade
|
|
310
|
+
import("./tunnel.js").then(({ handleTunnelWsUpgrade }) => {
|
|
311
|
+
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
312
|
+
handleTunnelWsUpgrade(ws, tunnelParsed, url, sessionManager, tokenManager);
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Tunnel WS fallback via cookie (for HMR paths like /_next/webpack-hmr)
|
|
319
|
+
const tunnelCookie = parseTunnelCookie(request);
|
|
320
|
+
if (tunnelCookie && url.pathname !== "/ws") {
|
|
321
|
+
const fallbackParsed = {
|
|
322
|
+
sessionId: tunnelCookie.sessionId,
|
|
323
|
+
port: tunnelCookie.port,
|
|
324
|
+
path: url.pathname,
|
|
325
|
+
};
|
|
326
|
+
// Inject token into URL so handleTunnelWsUpgrade can auth
|
|
327
|
+
url.searchParams.set("token", tunnelCookie.token);
|
|
328
|
+
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
329
|
+
import("./tunnel.js").then(({ handleTunnelWsUpgrade }) => {
|
|
330
|
+
handleTunnelWsUpgrade(ws, fallbackParsed, url, sessionManager, tokenManager);
|
|
331
|
+
});
|
|
332
|
+
});
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
|
|
274
336
|
if (url.pathname !== "/ws") {
|
|
275
337
|
socket.destroy();
|
|
276
338
|
return;
|
package/src/relay.ts
CHANGED
|
@@ -7,6 +7,11 @@ import {
|
|
|
7
7
|
} from "@linkshell/protocol";
|
|
8
8
|
import type { Envelope } from "@linkshell/protocol";
|
|
9
9
|
import type { SessionManager, ConnectedDevice } from "./sessions.js";
|
|
10
|
+
import {
|
|
11
|
+
handleTunnelResponse,
|
|
12
|
+
handleTunnelWsData,
|
|
13
|
+
handleTunnelWsClose,
|
|
14
|
+
} from "./tunnel.js";
|
|
10
15
|
|
|
11
16
|
export function handleSocketMessage(
|
|
12
17
|
socket: WebSocket,
|
|
@@ -89,6 +94,22 @@ function handleHostMessage(
|
|
|
89
94
|
}
|
|
90
95
|
case "session.heartbeat":
|
|
91
96
|
break;
|
|
97
|
+
// Tunnel: host → gateway (not broadcast to clients)
|
|
98
|
+
case "tunnel.response": {
|
|
99
|
+
const p = parseTypedPayload("tunnel.response", envelope.payload);
|
|
100
|
+
handleTunnelResponse(p);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
case "tunnel.ws.data": {
|
|
104
|
+
const p = parseTypedPayload("tunnel.ws.data", envelope.payload);
|
|
105
|
+
handleTunnelWsData(p);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
case "tunnel.ws.close": {
|
|
109
|
+
const p = parseTypedPayload("tunnel.ws.close", envelope.payload);
|
|
110
|
+
handleTunnelWsClose(p);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
92
113
|
case "control.grant":
|
|
93
114
|
case "control.reject":
|
|
94
115
|
broadcastToClients(session, envelope);
|