easyeda-mcp-pro 0.2.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 (92) hide show
  1. package/README.md +304 -0
  2. package/dist/bridge/client.d.ts +16 -0
  3. package/dist/bridge/client.js +48 -0
  4. package/dist/bridge/client.js.map +1 -0
  5. package/dist/bridge/extension.d.ts +26 -0
  6. package/dist/bridge/extension.js +556 -0
  7. package/dist/bridge/extension.js.map +1 -0
  8. package/dist/bridge/manager.d.ts +37 -0
  9. package/dist/bridge/manager.js +225 -0
  10. package/dist/bridge/manager.js.map +1 -0
  11. package/dist/bridge/protocol.d.ts +68 -0
  12. package/dist/bridge/protocol.js +56 -0
  13. package/dist/bridge/protocol.js.map +1 -0
  14. package/dist/bridge/types.d.ts +52 -0
  15. package/dist/bridge/types.js +19 -0
  16. package/dist/bridge/types.js.map +1 -0
  17. package/dist/config/env.d.ts +98 -0
  18. package/dist/config/env.js +103 -0
  19. package/dist/config/env.js.map +1 -0
  20. package/dist/config/feature-flags.d.ts +16 -0
  21. package/dist/config/feature-flags.js +17 -0
  22. package/dist/config/feature-flags.js.map +1 -0
  23. package/dist/config/profiles.d.ts +10 -0
  24. package/dist/config/profiles.js +45 -0
  25. package/dist/config/profiles.js.map +1 -0
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.js +76 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/schemas/common.d.ts +123 -0
  30. package/dist/schemas/common.js +79 -0
  31. package/dist/schemas/common.js.map +1 -0
  32. package/dist/server/errors.d.ts +3 -0
  33. package/dist/server/errors.js +59 -0
  34. package/dist/server/errors.js.map +1 -0
  35. package/dist/server/factory.d.ts +17 -0
  36. package/dist/server/factory.js +60 -0
  37. package/dist/server/factory.js.map +1 -0
  38. package/dist/server/transports/http.d.ts +10 -0
  39. package/dist/server/transports/http.js +54 -0
  40. package/dist/server/transports/http.js.map +1 -0
  41. package/dist/storage/database.d.ts +19 -0
  42. package/dist/storage/database.js +136 -0
  43. package/dist/storage/database.js.map +1 -0
  44. package/dist/storage/index.d.ts +2 -0
  45. package/dist/storage/index.js +2 -0
  46. package/dist/storage/index.js.map +1 -0
  47. package/dist/storage/types.d.ts +26 -0
  48. package/dist/storage/types.js +9 -0
  49. package/dist/storage/types.js.map +1 -0
  50. package/dist/tools/L0_diagnostics.d.ts +6 -0
  51. package/dist/tools/L0_diagnostics.js +297 -0
  52. package/dist/tools/L0_diagnostics.js.map +1 -0
  53. package/dist/tools/L1_board.d.ts +6 -0
  54. package/dist/tools/L1_board.js +182 -0
  55. package/dist/tools/L1_board.js.map +1 -0
  56. package/dist/tools/L1_bom.d.ts +6 -0
  57. package/dist/tools/L1_bom.js +267 -0
  58. package/dist/tools/L1_bom.js.map +1 -0
  59. package/dist/tools/L1_drc_erc.d.ts +6 -0
  60. package/dist/tools/L1_drc_erc.js +235 -0
  61. package/dist/tools/L1_drc_erc.js.map +1 -0
  62. package/dist/tools/L1_export.d.ts +6 -0
  63. package/dist/tools/L1_export.js +214 -0
  64. package/dist/tools/L1_export.js.map +1 -0
  65. package/dist/tools/L1_schematic.d.ts +6 -0
  66. package/dist/tools/L1_schematic.js +182 -0
  67. package/dist/tools/L1_schematic.js.map +1 -0
  68. package/dist/tools/registry.d.ts +21 -0
  69. package/dist/tools/registry.js +55 -0
  70. package/dist/tools/registry.js.map +1 -0
  71. package/dist/tools/types.d.ts +53 -0
  72. package/dist/tools/types.js +2 -0
  73. package/dist/tools/types.js.map +1 -0
  74. package/dist/utils/logger.d.ts +4 -0
  75. package/dist/utils/logger.js +54 -0
  76. package/dist/utils/logger.js.map +1 -0
  77. package/dist/utils/redaction.d.ts +2 -0
  78. package/dist/utils/redaction.js +56 -0
  79. package/dist/utils/redaction.js.map +1 -0
  80. package/dist/vendors/digikey/client.d.ts +49 -0
  81. package/dist/vendors/digikey/client.js +200 -0
  82. package/dist/vendors/digikey/client.js.map +1 -0
  83. package/dist/vendors/jlcpcb/client.d.ts +79 -0
  84. package/dist/vendors/jlcpcb/client.js +156 -0
  85. package/dist/vendors/jlcpcb/client.js.map +1 -0
  86. package/dist/vendors/lcsc/client.d.ts +57 -0
  87. package/dist/vendors/lcsc/client.js +140 -0
  88. package/dist/vendors/lcsc/client.js.map +1 -0
  89. package/dist/vendors/mouser/client.d.ts +46 -0
  90. package/dist/vendors/mouser/client.js +141 -0
  91. package/dist/vendors/mouser/client.js.map +1 -0
  92. package/package.json +74 -0
@@ -0,0 +1,556 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import { WebSocketServer, WebSocket } from 'ws';
3
+ import { getLogger } from '../utils/logger.js';
4
+ import { BridgeHandshakeSchema, BridgeRequestSchema } from './protocol.js';
5
+ import { EasyedaApiMethodSchema } from './types.js';
6
+ export class BridgeExtension extends EventEmitter {
7
+ state = 'idle';
8
+ config;
9
+ wss = null;
10
+ client = null;
11
+ heartbeatTimer = null;
12
+ constructor(config) {
13
+ super();
14
+ this.config = config;
15
+ }
16
+ async start() {
17
+ const logger = getLogger();
18
+ const prev = this.state;
19
+ this.state = 'listening';
20
+ this.emit('stateChanged', this.state, prev);
21
+ return new Promise((resolve, reject) => {
22
+ try {
23
+ this.wss = new WebSocketServer({
24
+ host: this.config.BRIDGE_HOST,
25
+ port: this.config.BRIDGE_PORT,
26
+ maxPayload: 1024 * 1024,
27
+ });
28
+ }
29
+ catch (err) {
30
+ this.state = 'error';
31
+ this.emit('stateChanged', this.state, prev);
32
+ reject(err);
33
+ return;
34
+ }
35
+ this.wss.on('listening', () => {
36
+ logger.info({ host: this.config.BRIDGE_HOST, port: this.config.BRIDGE_PORT }, 'bridge extension listening');
37
+ resolve();
38
+ });
39
+ this.wss.on('error', (err) => {
40
+ logger.error({ err }, 'bridge extension server error');
41
+ this.state = 'error';
42
+ this.emit('stateChanged', this.state, prev);
43
+ this.emit('error', err instanceof Error ? err : new Error(String(err)));
44
+ reject(err);
45
+ });
46
+ this.wss.on('connection', (ws, req) => {
47
+ const clientAddr = req.socket.remoteAddress ?? 'unknown';
48
+ logger.info({ clientAddr }, 'incoming bridge connection');
49
+ if (this.client) {
50
+ logger.warn({ clientAddr }, 'rejecting additional client connection');
51
+ ws.close(4000, 'Only one client allowed');
52
+ return;
53
+ }
54
+ this.client = ws;
55
+ const prevState = this.state;
56
+ this.state = 'connected';
57
+ this.emit('stateChanged', this.state, prevState);
58
+ this.emit('clientConnected');
59
+ ws.on('message', (raw) => {
60
+ try {
61
+ const text = raw.toString();
62
+ let data;
63
+ try {
64
+ data = JSON.parse(text);
65
+ }
66
+ catch {
67
+ ws.send(JSON.stringify({ type: 'error', message: 'Invalid JSON' }));
68
+ return;
69
+ }
70
+ switch (data.type) {
71
+ case 'handshake':
72
+ this.handleHandshake(ws, data);
73
+ break;
74
+ case 'heartbeat':
75
+ this.handleHeartbeat(ws, data);
76
+ break;
77
+ case 'request':
78
+ this.handleRequest(ws, data);
79
+ break;
80
+ default:
81
+ ws.send(JSON.stringify({ type: 'error', message: `Unknown message type: ${data.type}` }));
82
+ }
83
+ }
84
+ catch (err) {
85
+ logger.error({ err, raw: raw.toString() }, 'bridge extension message error');
86
+ try {
87
+ ws.send(JSON.stringify({ type: 'error', message: 'Internal processing error' }));
88
+ }
89
+ catch {
90
+ // client may already be closed
91
+ }
92
+ }
93
+ });
94
+ ws.on('close', (code, reason) => {
95
+ const reasonStr = reason?.toString() ?? `code ${code}`;
96
+ logger.info({ code, reason: reasonStr }, 'bridge client disconnected');
97
+ this.client = null;
98
+ const prevState = this.state;
99
+ this.state = 'listening';
100
+ this.emit('stateChanged', this.state, prevState);
101
+ this.emit('clientDisconnected', reasonStr);
102
+ this.stopHeartbeat();
103
+ });
104
+ ws.on('error', (err) => {
105
+ logger.error({ err }, 'bridge extension client socket error');
106
+ this.emit('error', err instanceof Error ? err : new Error(String(err)));
107
+ });
108
+ });
109
+ });
110
+ }
111
+ handleHandshake(ws, data) {
112
+ const logger = getLogger();
113
+ const parsed = BridgeHandshakeSchema.safeParse(data);
114
+ if (!parsed.success) {
115
+ logger.warn({ issues: parsed.error.issues }, 'bridge handshake validation failed');
116
+ ws.close(4001, 'Invalid handshake');
117
+ this.client = null;
118
+ this.emit('clientDisconnected', 'invalid handshake');
119
+ return;
120
+ }
121
+ const handshake = parsed.data;
122
+ if (this.config.BRIDGE_TOKEN && handshake.sessionToken !== this.config.BRIDGE_TOKEN) {
123
+ logger.warn('bridge handshake rejected: invalid session token');
124
+ ws.close(4001, 'Invalid session token');
125
+ this.client = null;
126
+ this.emit('clientDisconnected', 'invalid session token');
127
+ return;
128
+ }
129
+ logger.info({
130
+ clientName: handshake.clientName,
131
+ protocolVersion: handshake.protocolVersion,
132
+ }, 'bridge handshake accepted');
133
+ const hello = {
134
+ type: 'hello',
135
+ bridgeVersion: '1.0.0',
136
+ easyedaVersion: process.env.EASYEDA_VERSION ?? 'unknown',
137
+ apiVersion: '1.0.0',
138
+ capabilities: EasyedaApiMethodSchema.options,
139
+ methodRegistryHash: 'bridge-1.0.0',
140
+ devMode: this.config.EASYEDA_DEV_BRIDGE,
141
+ };
142
+ ws.send(JSON.stringify(hello));
143
+ this.startHeartbeat(ws);
144
+ }
145
+ handleHeartbeat(ws, data) {
146
+ const timestamp = typeof data.timestamp === 'number' ? data.timestamp : Date.now();
147
+ ws.send(JSON.stringify({ type: 'heartbeat', timestamp }));
148
+ }
149
+ async handleRequest(ws, data) {
150
+ const logger = getLogger();
151
+ const parsed = BridgeRequestSchema.safeParse(data);
152
+ if (!parsed.success) {
153
+ logger.warn({ issues: parsed.error.issues }, 'bridge request validation failed');
154
+ ws.send(JSON.stringify({
155
+ id: data.id ?? 'unknown',
156
+ type: 'response',
157
+ ok: false,
158
+ error: {
159
+ code: 'INVALID_PARAMS',
160
+ message: 'Request validation failed',
161
+ suggestion: 'Check the request format and parameters.',
162
+ },
163
+ durationMs: 0,
164
+ }));
165
+ return;
166
+ }
167
+ const request = parsed.data;
168
+ const startTime = Date.now();
169
+ const methodResult = EasyedaApiMethodSchema.safeParse(request.method);
170
+ if (!methodResult.success) {
171
+ logger.warn({ method: request.method, id: request.id }, 'bridge request: unknown method');
172
+ ws.send(JSON.stringify({
173
+ id: request.id,
174
+ type: 'response',
175
+ ok: false,
176
+ error: {
177
+ code: 'METHOD_NOT_FOUND',
178
+ message: `Unknown method: ${request.method}`,
179
+ suggestion: 'Check the method name against the capabilities advertised in hello.',
180
+ },
181
+ durationMs: Date.now() - startTime,
182
+ }));
183
+ return;
184
+ }
185
+ try {
186
+ logger.debug({ method: request.method, id: request.id }, 'executing bridge request');
187
+ const result = await this.executeMethod(request.method, request.params);
188
+ ws.send(JSON.stringify({
189
+ id: request.id,
190
+ type: 'response',
191
+ ok: true,
192
+ result,
193
+ durationMs: Date.now() - startTime,
194
+ }));
195
+ }
196
+ catch (err) {
197
+ const message = err instanceof Error ? err.message : String(err);
198
+ logger.warn({ method: request.method, id: request.id, err: message }, 'bridge request failed');
199
+ ws.send(JSON.stringify({
200
+ id: request.id,
201
+ type: 'response',
202
+ ok: false,
203
+ error: {
204
+ code: 'EASYEDA_API_ERROR',
205
+ message,
206
+ suggestion: 'Check EasyEDA Pro connection and parameters.',
207
+ },
208
+ durationMs: Date.now() - startTime,
209
+ }));
210
+ }
211
+ }
212
+ async executeMethod(method, params) {
213
+ if (this.config.EASYEDA_DEV_BRIDGE) {
214
+ return this.executeDevMock(method, params);
215
+ }
216
+ throw new Error(`Method not implemented in bridge extension: ${method}`);
217
+ }
218
+ async executeDevMock(method, _params) {
219
+ const mockDelay = 50;
220
+ switch (method) {
221
+ case 'project.open':
222
+ await new Promise((r) => setTimeout(r, mockDelay));
223
+ return {
224
+ projectId: 'mock-project',
225
+ name: 'Mock Project',
226
+ path: '/mock/project.json',
227
+ modifiedAt: new Date().toISOString(),
228
+ };
229
+ case 'project.save':
230
+ await new Promise((r) => setTimeout(r, mockDelay));
231
+ return { success: true, projectId: 'mock-project', savedAt: new Date().toISOString() };
232
+ case 'project.export':
233
+ await new Promise((r) => setTimeout(r, mockDelay));
234
+ return { filePath: '/tmp/mock-export.sch', pages: 2, componentCount: 5, netCount: 4 };
235
+ case 'schematic.listNets': {
236
+ await new Promise((r) => setTimeout(r, mockDelay));
237
+ return [
238
+ {
239
+ netName: 'VCC',
240
+ nodes: [
241
+ { component: 'U1', pin: '8' },
242
+ { component: 'C1', pin: '1' },
243
+ ],
244
+ },
245
+ {
246
+ netName: 'GND',
247
+ nodes: [
248
+ { component: 'U1', pin: '4' },
249
+ { component: 'C1', pin: '2' },
250
+ { component: 'R1', pin: '1' },
251
+ ],
252
+ },
253
+ {
254
+ netName: 'SIG_IN',
255
+ nodes: [
256
+ { component: 'J1', pin: '1' },
257
+ { component: 'R1', pin: '2' },
258
+ ],
259
+ },
260
+ {
261
+ netName: 'SIG_OUT',
262
+ nodes: [
263
+ { component: 'U1', pin: '1' },
264
+ { component: 'J2', pin: '1' },
265
+ ],
266
+ },
267
+ ];
268
+ }
269
+ case 'schematic.listComponents': {
270
+ await new Promise((r) => setTimeout(r, mockDelay));
271
+ return [
272
+ {
273
+ reference: 'U1',
274
+ value: 'LM358',
275
+ footprint: 'SOIC-8',
276
+ lcsc: 'C12345',
277
+ manufacturer: 'TI',
278
+ datasheet: 'https://www.ti.com/lm358',
279
+ },
280
+ {
281
+ reference: 'C1',
282
+ value: '100nF',
283
+ footprint: '0603',
284
+ lcsc: 'C23456',
285
+ manufacturer: 'Murata',
286
+ datasheet: '',
287
+ },
288
+ {
289
+ reference: 'R1',
290
+ value: '10k',
291
+ footprint: '0603',
292
+ lcsc: 'C34567',
293
+ manufacturer: 'Yageo',
294
+ datasheet: '',
295
+ },
296
+ {
297
+ reference: 'J1',
298
+ value: 'Header 2x1',
299
+ footprint: 'HDR-2',
300
+ lcsc: '',
301
+ manufacturer: '',
302
+ datasheet: '',
303
+ },
304
+ {
305
+ reference: 'J2',
306
+ value: 'Header 2x1',
307
+ footprint: 'HDR-2',
308
+ lcsc: '',
309
+ manufacturer: '',
310
+ datasheet: '',
311
+ },
312
+ ];
313
+ }
314
+ case 'board.listLayers': {
315
+ await new Promise((r) => setTimeout(r, mockDelay));
316
+ return [
317
+ { name: 'Top Layer', type: 'signal', color: '#FF0000', visible: true, order: 0 },
318
+ { name: 'Bottom Layer', type: 'signal', color: '#0000FF', visible: true, order: 1 },
319
+ {
320
+ name: 'Top Solder Mask',
321
+ type: 'soldermask',
322
+ color: '#00FF00',
323
+ visible: false,
324
+ order: 2,
325
+ },
326
+ {
327
+ name: 'Bottom Solder Mask',
328
+ type: 'soldermask',
329
+ color: '#00FF00',
330
+ visible: false,
331
+ order: 3,
332
+ },
333
+ { name: 'Top Silkscreen', type: 'silkscreen', color: '#FFFFFF', visible: true, order: 4 },
334
+ {
335
+ name: 'Bottom Silkscreen',
336
+ type: 'silkscreen',
337
+ color: '#FFFFFF',
338
+ visible: false,
339
+ order: 5,
340
+ },
341
+ { name: 'Board Outline', type: 'mechanical', color: '#FFFF00', visible: true, order: 6 },
342
+ ];
343
+ }
344
+ case 'board.getStackup': {
345
+ await new Promise((r) => setTimeout(r, mockDelay));
346
+ return {
347
+ totalLayers: 2,
348
+ boardThicknessMm: 1.6,
349
+ layers: [
350
+ {
351
+ name: 'Top Layer',
352
+ type: 'signal',
353
+ thicknessMm: 0.035,
354
+ material: 'Copper',
355
+ copperWeightOz: 1,
356
+ },
357
+ {
358
+ name: 'FR-4 Core',
359
+ type: 'dielectric',
360
+ thicknessMm: 1.53,
361
+ material: 'FR-4',
362
+ dielectricConstant: 4.5,
363
+ },
364
+ {
365
+ name: 'Bottom Layer',
366
+ type: 'signal',
367
+ thicknessMm: 0.035,
368
+ material: 'Copper',
369
+ copperWeightOz: 1,
370
+ },
371
+ ],
372
+ };
373
+ }
374
+ case 'board.exportGerbers': {
375
+ await new Promise((r) => setTimeout(r, mockDelay));
376
+ return { artifactPath: '/tmp/mock-gerbers.zip', fileCount: 7, format: 'Gerber X2' };
377
+ }
378
+ case 'bom.generate': {
379
+ await new Promise((r) => setTimeout(r, mockDelay));
380
+ return [
381
+ {
382
+ reference: 'U1',
383
+ value: 'LM358',
384
+ footprint: 'SOIC-8',
385
+ lcsc: 'C12345',
386
+ quantity: 1,
387
+ manufacturer: 'TI',
388
+ },
389
+ {
390
+ reference: 'C1',
391
+ value: '100nF',
392
+ footprint: '0603',
393
+ lcsc: 'C23456',
394
+ quantity: 1,
395
+ manufacturer: 'Murata',
396
+ },
397
+ {
398
+ reference: 'R1',
399
+ value: '10k',
400
+ footprint: '0603',
401
+ lcsc: 'C34567',
402
+ quantity: 1,
403
+ manufacturer: 'Yageo',
404
+ },
405
+ {
406
+ reference: 'J1,J2',
407
+ value: 'Header 2x1',
408
+ footprint: 'HDR-2',
409
+ lcsc: '',
410
+ quantity: 2,
411
+ manufacturer: '',
412
+ },
413
+ ];
414
+ }
415
+ case 'bom.validate': {
416
+ await new Promise((r) => setTimeout(r, mockDelay));
417
+ return {
418
+ valid: true,
419
+ warnings: [],
420
+ errors: [],
421
+ missingFootprints: [],
422
+ missingLcsc: ['J1', 'J2'],
423
+ totalComponents: 5,
424
+ };
425
+ }
426
+ case 'design.ruleCheck': {
427
+ await new Promise((r) => setTimeout(r, mockDelay));
428
+ return {
429
+ passed: true,
430
+ violations: [
431
+ {
432
+ rule: 'Clearance',
433
+ description: 'Minimum clearance check',
434
+ severity: 'info',
435
+ count: 0,
436
+ },
437
+ {
438
+ rule: 'TrackWidth',
439
+ description: 'Track width minimum check',
440
+ severity: 'info',
441
+ count: 0,
442
+ },
443
+ {
444
+ rule: 'HoleSize',
445
+ description: 'Minimum hole size check',
446
+ severity: 'info',
447
+ count: 0,
448
+ },
449
+ ],
450
+ errorCount: 0,
451
+ warningCount: 0,
452
+ };
453
+ }
454
+ case 'design.drc':
455
+ await new Promise((r) => setTimeout(r, mockDelay));
456
+ return {
457
+ violations: [
458
+ {
459
+ rule: 'Clearance',
460
+ description: 'Minimum clearance check',
461
+ severity: 'info',
462
+ net: undefined,
463
+ component: undefined,
464
+ },
465
+ ],
466
+ totalViolations: 1,
467
+ errorCount: 0,
468
+ warningCount: 0,
469
+ };
470
+ case 'design.erc':
471
+ await new Promise((r) => setTimeout(r, mockDelay));
472
+ return {
473
+ violations: [
474
+ {
475
+ rule: 'UnconnectedPin',
476
+ description: 'Check for unconnected pins',
477
+ severity: 'info',
478
+ net: undefined,
479
+ component: undefined,
480
+ },
481
+ ],
482
+ totalViolations: 1,
483
+ errorCount: 0,
484
+ warningCount: 0,
485
+ };
486
+ case 'inventory.search': {
487
+ await new Promise((r) => setTimeout(r, mockDelay));
488
+ return [
489
+ {
490
+ lcsc: 'C12345',
491
+ description: 'LM358 SOP-8 Op Amp',
492
+ manufacturer: 'TI',
493
+ inStock: true,
494
+ unitPrice: 0.45,
495
+ },
496
+ {
497
+ lcsc: 'C23456',
498
+ description: '100nF 50V X7R 0603',
499
+ manufacturer: 'Murata',
500
+ inStock: true,
501
+ unitPrice: 0.02,
502
+ },
503
+ {
504
+ lcsc: 'C34567',
505
+ description: '10k 1% 0603 Resistor',
506
+ manufacturer: 'Yageo',
507
+ inStock: true,
508
+ unitPrice: 0.01,
509
+ },
510
+ ];
511
+ }
512
+ case 'inventory.getPrice': {
513
+ await new Promise((r) => setTimeout(r, mockDelay));
514
+ return {
515
+ lcsc: 'C12345',
516
+ price: 0.5,
517
+ currency: 'USD',
518
+ inStock: true,
519
+ quantityAvailable: 1000,
520
+ moq: 1,
521
+ };
522
+ }
523
+ default:
524
+ throw new Error(`Unknown method: ${method}`);
525
+ }
526
+ }
527
+ startHeartbeat(ws) {
528
+ this.stopHeartbeat();
529
+ this.heartbeatTimer = setInterval(() => {
530
+ if (ws.readyState === WebSocket.OPEN) {
531
+ ws.send(JSON.stringify({ type: 'heartbeat', timestamp: Date.now() }));
532
+ }
533
+ }, this.config.BRIDGE_HEARTBEAT_MS);
534
+ }
535
+ stopHeartbeat() {
536
+ if (this.heartbeatTimer) {
537
+ clearInterval(this.heartbeatTimer);
538
+ this.heartbeatTimer = null;
539
+ }
540
+ }
541
+ stop() {
542
+ this.stopHeartbeat();
543
+ if (this.client) {
544
+ this.client.close(1001, 'extension shutting down');
545
+ this.client = null;
546
+ }
547
+ if (this.wss) {
548
+ this.wss.close();
549
+ this.wss = null;
550
+ }
551
+ const prev = this.state;
552
+ this.state = 'idle';
553
+ this.emit('stateChanged', this.state, prev);
554
+ }
555
+ }
556
+ //# sourceMappingURL=extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/bridge/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAoB,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAWpD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IACxC,KAAK,GAAmB,MAAM,CAAC;IAC9B,MAAM,CAAY;IAClB,GAAG,GAA2B,IAAI,CAAC;IACnC,MAAM,GAAqB,IAAI,CAAC;IAChC,cAAc,GAA0C,IAAI,CAAC;IAErE,YAAY,MAAiB;QAC3B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC;oBAC7B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;oBAC7B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;oBAC7B,UAAU,EAAE,IAAI,GAAG,IAAI;iBACxB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC5C,MAAM,CAAC,GAAG,CAAC,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;gBAC5B,MAAM,CAAC,IAAI,CACT,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAChE,4BAA4B,CAC7B,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC3B,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,+BAA+B,CAAC,CAAC;gBACvD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxE,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;gBACpC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;gBACzD,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,4BAA4B,CAAC,CAAC;gBAE1D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,wCAAwC,CAAC,CAAC;oBACtE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;oBAC1C,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC7B,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACjD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAE7B,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;oBACvB,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;wBAC5B,IAAI,IAA6B,CAAC;wBAClC,IAAI,CAAC;4BACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC1B,CAAC;wBAAC,MAAM,CAAC;4BACP,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;4BACpE,OAAO;wBACT,CAAC;wBAED,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;4BAClB,KAAK,WAAW;gCACd,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gCAC/B,MAAM;4BACR,KAAK,WAAW;gCACd,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gCAC/B,MAAM;4BACR,KAAK,SAAS;gCACZ,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gCAC7B,MAAM;4BACR;gCACE,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CACjF,CAAC;wBACN,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,gCAAgC,CAAC,CAAC;wBAC7E,IAAI,CAAC;4BACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;wBACnF,CAAC;wBAAC,MAAM,CAAC;4BACP,+BAA+B;wBACjC,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;oBAC9B,MAAM,SAAS,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,QAAQ,IAAI,EAAE,CAAC;oBACvD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,4BAA4B,CAAC,CAAC;oBACvE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC7B,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;oBACjD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;oBAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACrB,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,sCAAsC,CAAC,CAAC;oBAC9D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1E,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,EAAa,EAAE,IAA6B;QAClE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,oCAAoC,CAAC,CAAC;YACnF,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;QAE9B,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACpF,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAChE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CACT;YACE,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,eAAe,EAAE,SAAS,CAAC,eAAe;SAC3C,EACD,2BAA2B,CAC5B,CAAC;QAEF,MAAM,KAAK,GAAgB;YACzB,IAAI,EAAE,OAAO;YACb,aAAa,EAAE,OAAO;YACtB,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS;YACxD,UAAU,EAAE,OAAO;YACnB,YAAY,EAAE,sBAAsB,CAAC,OAAO;YAC5C,kBAAkB,EAAE,cAAc;YAClC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;SACxC,CAAC;QAEF,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAEO,eAAe,CAAC,EAAa,EAAE,IAA6B;QAClE,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACnF,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,EAAa,EAAE,IAA6B;QACtE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,kCAAkC,CAAC,CAAC;YACjF,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,EAAE,EAAG,IAAI,CAAC,EAAa,IAAI,SAAS;gBACpC,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,2BAA2B;oBACpC,UAAU,EAAE,0CAA0C;iBACvD;gBACD,UAAU,EAAE,CAAC;aACd,CAAC,CACH,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,YAAY,GAAG,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,gCAAgC,CAAC,CAAC;YAC1F,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE;oBACL,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,mBAAmB,OAAO,CAAC,MAAM,EAAE;oBAC5C,UAAU,EAAE,qEAAqE;iBAClF;gBACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACnC,CAAC,CACH,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,0BAA0B,CAAC,CAAC;YAErF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAExE,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,IAAI;gBACR,MAAM;gBACN,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACnC,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EACxD,uBAAuB,CACxB,CAAC;YAEF,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE;oBACL,IAAI,EAAE,mBAAmB;oBACzB,OAAO;oBACP,UAAU,EAAE,8CAA8C;iBAC3D;gBACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACnC,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,MAAe;QACzD,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,+CAA+C,MAAM,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,OAAgB;QAC3D,MAAM,SAAS,GAAG,EAAE,CAAC;QAErB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,cAAc;gBACjB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL,SAAS,EAAE,cAAc;oBACzB,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,oBAAoB;oBAC1B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACrC,CAAC;YAEJ,KAAK,cAAc;gBACjB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YAEzF,KAAK,gBAAgB;gBACnB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YAExF,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL;wBACE,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE;4BACL,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;4BAC7B,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;yBAC9B;qBACF;oBACD;wBACE,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE;4BACL,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;4BAC7B,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;4BAC7B,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;yBAC9B;qBACF;oBACD;wBACE,OAAO,EAAE,QAAQ;wBACjB,KAAK,EAAE;4BACL,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;4BAC7B,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;yBAC9B;qBACF;oBACD;wBACE,OAAO,EAAE,SAAS;wBAClB,KAAK,EAAE;4BACL,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;4BAC7B,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;yBAC9B;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,0BAA0B,CAAC,CAAC,CAAC;gBAChC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL;wBACE,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,OAAO;wBACd,SAAS,EAAE,QAAQ;wBACnB,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,IAAI;wBAClB,SAAS,EAAE,0BAA0B;qBACtC;oBACD;wBACE,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,OAAO;wBACd,SAAS,EAAE,MAAM;wBACjB,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,QAAQ;wBACtB,SAAS,EAAE,EAAE;qBACd;oBACD;wBACE,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,KAAK;wBACZ,SAAS,EAAE,MAAM;wBACjB,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,OAAO;wBACrB,SAAS,EAAE,EAAE;qBACd;oBACD;wBACE,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,YAAY;wBACnB,SAAS,EAAE,OAAO;wBAClB,IAAI,EAAE,EAAE;wBACR,YAAY,EAAE,EAAE;wBAChB,SAAS,EAAE,EAAE;qBACd;oBACD;wBACE,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,YAAY;wBACnB,SAAS,EAAE,OAAO;wBAClB,IAAI,EAAE,EAAE;wBACR,YAAY,EAAE,EAAE;wBAChB,SAAS,EAAE,EAAE;qBACd;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;oBAChF,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;oBACnF;wBACE,IAAI,EAAE,iBAAiB;wBACvB,IAAI,EAAE,YAAY;wBAClB,KAAK,EAAE,SAAS;wBAChB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,CAAC;qBACT;oBACD;wBACE,IAAI,EAAE,oBAAoB;wBAC1B,IAAI,EAAE,YAAY;wBAClB,KAAK,EAAE,SAAS;wBAChB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,CAAC;qBACT;oBACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;oBACzF;wBACE,IAAI,EAAE,mBAAmB;wBACzB,IAAI,EAAE,YAAY;wBAClB,KAAK,EAAE,SAAS;wBAChB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,CAAC;qBACT;oBACD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;iBACzF,CAAC;YACJ,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL,WAAW,EAAE,CAAC;oBACd,gBAAgB,EAAE,GAAG;oBACrB,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE,WAAW;4BACjB,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,KAAK;4BAClB,QAAQ,EAAE,QAAQ;4BAClB,cAAc,EAAE,CAAC;yBAClB;wBACD;4BACE,IAAI,EAAE,WAAW;4BACjB,IAAI,EAAE,YAAY;4BAClB,WAAW,EAAE,IAAI;4BACjB,QAAQ,EAAE,MAAM;4BAChB,kBAAkB,EAAE,GAAG;yBACxB;wBACD;4BACE,IAAI,EAAE,cAAc;4BACpB,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,KAAK;4BAClB,QAAQ,EAAE,QAAQ;4BAClB,cAAc,EAAE,CAAC;yBAClB;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YACtF,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL;wBACE,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,OAAO;wBACd,SAAS,EAAE,QAAQ;wBACnB,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC;wBACX,YAAY,EAAE,IAAI;qBACnB;oBACD;wBACE,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,OAAO;wBACd,SAAS,EAAE,MAAM;wBACjB,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC;wBACX,YAAY,EAAE,QAAQ;qBACvB;oBACD;wBACE,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,KAAK;wBACZ,SAAS,EAAE,MAAM;wBACjB,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,CAAC;wBACX,YAAY,EAAE,OAAO;qBACtB;oBACD;wBACE,SAAS,EAAE,OAAO;wBAClB,KAAK,EAAE,YAAY;wBACnB,SAAS,EAAE,OAAO;wBAClB,IAAI,EAAE,EAAE;wBACR,QAAQ,EAAE,CAAC;wBACX,YAAY,EAAE,EAAE;qBACjB;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL,KAAK,EAAE,IAAI;oBACX,QAAQ,EAAE,EAAE;oBACZ,MAAM,EAAE,EAAE;oBACV,iBAAiB,EAAE,EAAE;oBACrB,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;oBACzB,eAAe,EAAE,CAAC;iBACnB,CAAC;YACJ,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE;wBACV;4BACE,IAAI,EAAE,WAAW;4BACjB,WAAW,EAAE,yBAAyB;4BACtC,QAAQ,EAAE,MAAM;4BAChB,KAAK,EAAE,CAAC;yBACT;wBACD;4BACE,IAAI,EAAE,YAAY;4BAClB,WAAW,EAAE,2BAA2B;4BACxC,QAAQ,EAAE,MAAM;4BAChB,KAAK,EAAE,CAAC;yBACT;wBACD;4BACE,IAAI,EAAE,UAAU;4BAChB,WAAW,EAAE,yBAAyB;4BACtC,QAAQ,EAAE,MAAM;4BAChB,KAAK,EAAE,CAAC;yBACT;qBACF;oBACD,UAAU,EAAE,CAAC;oBACb,YAAY,EAAE,CAAC;iBAChB,CAAC;YACJ,CAAC;YAED,KAAK,YAAY;gBACf,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL,UAAU,EAAE;wBACV;4BACE,IAAI,EAAE,WAAW;4BACjB,WAAW,EAAE,yBAAyB;4BACtC,QAAQ,EAAE,MAAM;4BAChB,GAAG,EAAE,SAAS;4BACd,SAAS,EAAE,SAAS;yBACrB;qBACF;oBACD,eAAe,EAAE,CAAC;oBAClB,UAAU,EAAE,CAAC;oBACb,YAAY,EAAE,CAAC;iBAChB,CAAC;YAEJ,KAAK,YAAY;gBACf,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL,UAAU,EAAE;wBACV;4BACE,IAAI,EAAE,gBAAgB;4BACtB,WAAW,EAAE,4BAA4B;4BACzC,QAAQ,EAAE,MAAM;4BAChB,GAAG,EAAE,SAAS;4BACd,SAAS,EAAE,SAAS;yBACrB;qBACF;oBACD,eAAe,EAAE,CAAC;oBAClB,UAAU,EAAE,CAAC;oBACb,YAAY,EAAE,CAAC;iBAChB,CAAC;YAEJ,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL;wBACE,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,oBAAoB;wBACjC,YAAY,EAAE,IAAI;wBAClB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,IAAI;qBAChB;oBACD;wBACE,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,oBAAoB;wBACjC,YAAY,EAAE,QAAQ;wBACtB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,IAAI;qBAChB;oBACD;wBACE,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,sBAAsB;wBACnC,YAAY,EAAE,OAAO;wBACrB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,IAAI;qBAChB;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,GAAG;oBACV,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,IAAI;oBACb,iBAAiB,EAAE,IAAI;oBACvB,GAAG,EAAE,CAAC;iBACP,CAAC;YACJ,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,EAAa;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACrC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACtC,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF"}
@@ -0,0 +1,37 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import { type EnvConfig } from '../config/env.js';
3
+ import { type BridgeHello } from './protocol.js';
4
+ export type BridgeState = 'disconnected' | 'connecting' | 'connected' | 'error';
5
+ export interface BridgeEvents {
6
+ stateChanged: (state: BridgeState, previous: BridgeState) => void;
7
+ connected: (hello: BridgeHello) => void;
8
+ disconnected: (reason: string) => void;
9
+ error: (error: Error) => void;
10
+ heartbeat: (timestamp: number) => void;
11
+ }
12
+ export declare class BridgeManager extends EventEmitter {
13
+ state: BridgeState;
14
+ hello: BridgeHello | null;
15
+ private ws;
16
+ private heartbeatTimer;
17
+ private reconnectTimer;
18
+ private requestMap;
19
+ private requestIdCounter;
20
+ private config;
21
+ private _lastHeartbeatMs;
22
+ constructor(config: EnvConfig);
23
+ get lastHeartbeatMs(): number;
24
+ get connected(): boolean;
25
+ connect(): Promise<void>;
26
+ call<TParams, TResult>(method: string, params?: TParams, opts?: {
27
+ timeoutMs?: number;
28
+ traceparent?: string;
29
+ }): Promise<TResult>;
30
+ disconnect(reason?: string): void;
31
+ private tryConnect;
32
+ private sendHandshake;
33
+ private handleHello;
34
+ private handleResponse;
35
+ private startHeartbeat;
36
+ private parsePortScan;
37
+ }