@agent-relay/daemon 0.1.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 (109) hide show
  1. package/dist/agent-manager.d.ts +134 -0
  2. package/dist/agent-manager.d.ts.map +1 -0
  3. package/dist/agent-manager.js +578 -0
  4. package/dist/agent-manager.js.map +1 -0
  5. package/dist/agent-registry.d.ts +99 -0
  6. package/dist/agent-registry.d.ts.map +1 -0
  7. package/dist/agent-registry.js +213 -0
  8. package/dist/agent-registry.js.map +1 -0
  9. package/dist/agent-signing.d.ts +158 -0
  10. package/dist/agent-signing.d.ts.map +1 -0
  11. package/dist/agent-signing.js +523 -0
  12. package/dist/agent-signing.js.map +1 -0
  13. package/dist/api.d.ts +106 -0
  14. package/dist/api.d.ts.map +1 -0
  15. package/dist/api.js +876 -0
  16. package/dist/api.js.map +1 -0
  17. package/dist/auth.d.ts +94 -0
  18. package/dist/auth.d.ts.map +1 -0
  19. package/dist/auth.js +197 -0
  20. package/dist/auth.js.map +1 -0
  21. package/dist/channel-membership-store.d.ts +55 -0
  22. package/dist/channel-membership-store.d.ts.map +1 -0
  23. package/dist/channel-membership-store.js +176 -0
  24. package/dist/channel-membership-store.js.map +1 -0
  25. package/dist/cli-auth.d.ts +89 -0
  26. package/dist/cli-auth.d.ts.map +1 -0
  27. package/dist/cli-auth.js +792 -0
  28. package/dist/cli-auth.js.map +1 -0
  29. package/dist/cloud-sync.d.ts +150 -0
  30. package/dist/cloud-sync.d.ts.map +1 -0
  31. package/dist/cloud-sync.js +446 -0
  32. package/dist/cloud-sync.js.map +1 -0
  33. package/dist/connection.d.ts +130 -0
  34. package/dist/connection.d.ts.map +1 -0
  35. package/dist/connection.js +438 -0
  36. package/dist/connection.js.map +1 -0
  37. package/dist/consensus-integration.d.ts +167 -0
  38. package/dist/consensus-integration.d.ts.map +1 -0
  39. package/dist/consensus-integration.js +371 -0
  40. package/dist/consensus-integration.js.map +1 -0
  41. package/dist/consensus.d.ts +271 -0
  42. package/dist/consensus.d.ts.map +1 -0
  43. package/dist/consensus.js +632 -0
  44. package/dist/consensus.js.map +1 -0
  45. package/dist/delivery-tracker.d.ts +34 -0
  46. package/dist/delivery-tracker.d.ts.map +1 -0
  47. package/dist/delivery-tracker.js +104 -0
  48. package/dist/delivery-tracker.js.map +1 -0
  49. package/dist/enhanced-features.d.ts +118 -0
  50. package/dist/enhanced-features.d.ts.map +1 -0
  51. package/dist/enhanced-features.js +176 -0
  52. package/dist/enhanced-features.js.map +1 -0
  53. package/dist/index.d.ts +31 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +37 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/migrations/index.d.ts +73 -0
  58. package/dist/migrations/index.d.ts.map +1 -0
  59. package/dist/migrations/index.js +241 -0
  60. package/dist/migrations/index.js.map +1 -0
  61. package/dist/orchestrator.d.ts +217 -0
  62. package/dist/orchestrator.d.ts.map +1 -0
  63. package/dist/orchestrator.js +1143 -0
  64. package/dist/orchestrator.js.map +1 -0
  65. package/dist/rate-limiter.d.ts +68 -0
  66. package/dist/rate-limiter.d.ts.map +1 -0
  67. package/dist/rate-limiter.js +130 -0
  68. package/dist/rate-limiter.js.map +1 -0
  69. package/dist/registry.d.ts +9 -0
  70. package/dist/registry.d.ts.map +1 -0
  71. package/dist/registry.js +9 -0
  72. package/dist/registry.js.map +1 -0
  73. package/dist/relay-ledger.d.ts +261 -0
  74. package/dist/relay-ledger.d.ts.map +1 -0
  75. package/dist/relay-ledger.js +532 -0
  76. package/dist/relay-ledger.js.map +1 -0
  77. package/dist/relay-watchdog.d.ts +125 -0
  78. package/dist/relay-watchdog.d.ts.map +1 -0
  79. package/dist/relay-watchdog.js +611 -0
  80. package/dist/relay-watchdog.js.map +1 -0
  81. package/dist/repo-manager.d.ts +116 -0
  82. package/dist/repo-manager.d.ts.map +1 -0
  83. package/dist/repo-manager.js +384 -0
  84. package/dist/repo-manager.js.map +1 -0
  85. package/dist/router.d.ts +370 -0
  86. package/dist/router.d.ts.map +1 -0
  87. package/dist/router.js +1437 -0
  88. package/dist/router.js.map +1 -0
  89. package/dist/server.d.ts +174 -0
  90. package/dist/server.d.ts.map +1 -0
  91. package/dist/server.js +1001 -0
  92. package/dist/server.js.map +1 -0
  93. package/dist/spawn-manager.d.ts +78 -0
  94. package/dist/spawn-manager.d.ts.map +1 -0
  95. package/dist/spawn-manager.js +165 -0
  96. package/dist/spawn-manager.js.map +1 -0
  97. package/dist/sync-queue.d.ts +116 -0
  98. package/dist/sync-queue.d.ts.map +1 -0
  99. package/dist/sync-queue.js +361 -0
  100. package/dist/sync-queue.js.map +1 -0
  101. package/dist/types.d.ts +133 -0
  102. package/dist/types.d.ts.map +1 -0
  103. package/dist/types.js +6 -0
  104. package/dist/types.js.map +1 -0
  105. package/dist/workspace-manager.d.ts +80 -0
  106. package/dist/workspace-manager.d.ts.map +1 -0
  107. package/dist/workspace-manager.js +314 -0
  108. package/dist/workspace-manager.js.map +1 -0
  109. package/package.json +52 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-sync.js","sourceRoot":"","sources":["../src/cloud-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Connection state machine for agent connections.
3
+ *
4
+ * States:
5
+ * CONNECTING -> HANDSHAKING -> ACTIVE -> CLOSING -> CLOSED
6
+ * | |
7
+ * v v
8
+ * ERROR -------> CLOSED
9
+ */
10
+ import net from 'node:net';
11
+ import { type Envelope, type AckPayload, type EntityType } from '@agent-relay/protocol/types';
12
+ export type ConnectionState = 'CONNECTING' | 'HANDSHAKING' | 'ACTIVE' | 'CLOSING' | 'CLOSED' | 'ERROR';
13
+ export interface ConnectionConfig {
14
+ maxFrameBytes: number;
15
+ heartbeatMs: number;
16
+ /** Multiplier for heartbeat timeout (timeout = heartbeatMs * multiplier). Default: 6 (30s with 5s heartbeat) */
17
+ heartbeatTimeoutMultiplier: number;
18
+ /** Optional handler to validate resume tokens and provide session state */
19
+ resumeHandler?: (params: {
20
+ agent: string;
21
+ resumeToken: string;
22
+ }) => Promise<{
23
+ sessionId: string;
24
+ resumeToken?: string;
25
+ seedSequences?: Array<{
26
+ topic?: string;
27
+ peer: string;
28
+ seq: number;
29
+ }>;
30
+ } | null>;
31
+ /** Optional callback to check if agent is currently processing (exempts from heartbeat timeout) */
32
+ isProcessing?: (agentName: string) => boolean;
33
+ /** Maximum messages in write queue before dropping (default: 2000) */
34
+ maxWriteQueueSize?: number;
35
+ /** High water mark - emit backpressure signal when queue exceeds this (default: 1500) */
36
+ writeQueueHighWaterMark?: number;
37
+ /** Low water mark - release backpressure when queue drops below this (default: 500) */
38
+ writeQueueLowWaterMark?: number;
39
+ }
40
+ export declare const DEFAULT_CONFIG: ConnectionConfig;
41
+ export declare class Connection {
42
+ readonly id: string;
43
+ private socket;
44
+ private parser;
45
+ private config;
46
+ private _state;
47
+ private _agentName?;
48
+ private _entityType?;
49
+ private _cli?;
50
+ private _program?;
51
+ private _model?;
52
+ private _task?;
53
+ private _workingDirectory?;
54
+ private _displayName?;
55
+ private _avatarUrl?;
56
+ private _sessionId;
57
+ private _resumeToken;
58
+ private _isResumed;
59
+ private heartbeatTimer?;
60
+ private lastPongReceived?;
61
+ private sequences;
62
+ private writeQueue;
63
+ private draining;
64
+ private _backpressured;
65
+ private socketDrainHandler?;
66
+ onMessage?: (envelope: Envelope) => void;
67
+ onClose?: () => void;
68
+ onError?: (error: Error) => void;
69
+ onActive?: () => void;
70
+ onAck?: (envelope: Envelope<AckPayload>) => void;
71
+ onPong?: () => void;
72
+ /** Fires when write queue crosses high/low water marks */
73
+ onBackpressure?: (backpressured: boolean) => void;
74
+ constructor(socket: net.Socket, config?: Partial<ConnectionConfig>);
75
+ get state(): ConnectionState;
76
+ get agentName(): string | undefined;
77
+ get entityType(): EntityType | undefined;
78
+ get cli(): string | undefined;
79
+ get program(): string | undefined;
80
+ get model(): string | undefined;
81
+ get task(): string | undefined;
82
+ get workingDirectory(): string | undefined;
83
+ get displayName(): string | undefined;
84
+ get avatarUrl(): string | undefined;
85
+ get sessionId(): string;
86
+ get resumeToken(): string;
87
+ get isResumed(): boolean;
88
+ /** Whether this connection is currently backpressured (write queue above high water mark) */
89
+ get backpressured(): boolean;
90
+ /** Current number of messages queued for writing */
91
+ get writeQueueLength(): number;
92
+ private setupSocketHandlers;
93
+ private handleData;
94
+ private processFrame;
95
+ private handleHello;
96
+ private handleSend;
97
+ private handlePong;
98
+ private startHeartbeat;
99
+ private stopHeartbeat;
100
+ /**
101
+ * Seed a sequence counter for a stream so that the next value continues from the provided seq.
102
+ */
103
+ seedSequence(topic: string | undefined, peer: string, seq: number): void;
104
+ /**
105
+ * Get next sequence number for a stream.
106
+ */
107
+ getNextSeq(topic: string, peer: string): number;
108
+ /**
109
+ * Send an envelope to this connection.
110
+ *
111
+ * Uses a write queue to prevent blocking on slow consumers.
112
+ * Returns false if the connection is closed or the queue is full.
113
+ */
114
+ send(envelope: Envelope): boolean;
115
+ /**
116
+ * Schedule the drain loop to run on next tick if not already running.
117
+ */
118
+ private scheduleDrain;
119
+ /**
120
+ * Drain the write queue to the socket.
121
+ * Respects socket backpressure by waiting for 'drain' events.
122
+ */
123
+ private drain;
124
+ private sendError;
125
+ private handleClose;
126
+ private handleError;
127
+ private cleanup;
128
+ close(): void;
129
+ }
130
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,438 @@
1
+ /**
2
+ * Connection state machine for agent connections.
3
+ *
4
+ * States:
5
+ * CONNECTING -> HANDSHAKING -> ACTIVE -> CLOSING -> CLOSED
6
+ * | |
7
+ * v v
8
+ * ERROR -------> CLOSED
9
+ */
10
+ import { generateId } from '@agent-relay/wrapper';
11
+ import { PROTOCOL_VERSION, } from '@agent-relay/protocol/types';
12
+ import { encodeFrameLegacy as encodeFrame, FrameParser } from '@agent-relay/protocol/framing';
13
+ import { DEFAULT_CONNECTION_CONFIG } from '@agent-relay/config/relay-config';
14
+ export const DEFAULT_CONFIG = {
15
+ ...DEFAULT_CONNECTION_CONFIG,
16
+ };
17
+ export class Connection {
18
+ id;
19
+ socket;
20
+ parser;
21
+ config;
22
+ _state = 'CONNECTING';
23
+ _agentName;
24
+ _entityType;
25
+ _cli;
26
+ _program;
27
+ _model;
28
+ _task;
29
+ _workingDirectory;
30
+ _displayName;
31
+ _avatarUrl;
32
+ _sessionId;
33
+ _resumeToken;
34
+ _isResumed = false;
35
+ heartbeatTimer;
36
+ lastPongReceived;
37
+ // Sequence numbers per (topic, peer) stream
38
+ sequences = new Map();
39
+ // Write queue for backpressure handling
40
+ writeQueue = [];
41
+ draining = false;
42
+ _backpressured = false;
43
+ socketDrainHandler;
44
+ // Event handlers
45
+ onMessage;
46
+ onClose;
47
+ onError;
48
+ onActive; // Fires when connection transitions to ACTIVE state
49
+ onAck;
50
+ onPong; // Fires on successful heartbeat response
51
+ /** Fires when write queue crosses high/low water marks */
52
+ onBackpressure;
53
+ constructor(socket, config = {}) {
54
+ this.id = generateId();
55
+ this.socket = socket;
56
+ this.config = { ...DEFAULT_CONFIG, ...config };
57
+ this.parser = new FrameParser(this.config.maxFrameBytes);
58
+ this.parser.setLegacyMode(true); // Use 4-byte header for backwards compatibility
59
+ this._sessionId = generateId();
60
+ this._resumeToken = generateId();
61
+ this.setupSocketHandlers();
62
+ this._state = 'HANDSHAKING';
63
+ }
64
+ get state() {
65
+ return this._state;
66
+ }
67
+ get agentName() {
68
+ return this._agentName;
69
+ }
70
+ get entityType() {
71
+ return this._entityType;
72
+ }
73
+ get cli() {
74
+ return this._cli;
75
+ }
76
+ get program() {
77
+ return this._program;
78
+ }
79
+ get model() {
80
+ return this._model;
81
+ }
82
+ get task() {
83
+ return this._task;
84
+ }
85
+ get workingDirectory() {
86
+ return this._workingDirectory;
87
+ }
88
+ get displayName() {
89
+ return this._displayName;
90
+ }
91
+ get avatarUrl() {
92
+ return this._avatarUrl;
93
+ }
94
+ get sessionId() {
95
+ return this._sessionId;
96
+ }
97
+ get resumeToken() {
98
+ return this._resumeToken;
99
+ }
100
+ get isResumed() {
101
+ return this._isResumed;
102
+ }
103
+ /** Whether this connection is currently backpressured (write queue above high water mark) */
104
+ get backpressured() {
105
+ return this._backpressured;
106
+ }
107
+ /** Current number of messages queued for writing */
108
+ get writeQueueLength() {
109
+ return this.writeQueue.length;
110
+ }
111
+ setupSocketHandlers() {
112
+ this.socket.on('data', (data) => this.handleData(data));
113
+ this.socket.on('close', () => this.handleClose());
114
+ this.socket.on('error', (err) => this.handleError(err));
115
+ }
116
+ handleData(data) {
117
+ try {
118
+ const frames = this.parser.push(data);
119
+ for (const frame of frames) {
120
+ this.processFrame(frame).catch((err) => {
121
+ this.sendError('BAD_REQUEST', `Frame error: ${err}`, true);
122
+ this.close();
123
+ });
124
+ }
125
+ }
126
+ catch (err) {
127
+ this.sendError('BAD_REQUEST', `Frame error: ${err}`, true);
128
+ this.close();
129
+ }
130
+ }
131
+ async processFrame(envelope) {
132
+ switch (envelope.type) {
133
+ case 'HELLO':
134
+ await this.handleHello(envelope);
135
+ break;
136
+ case 'SEND':
137
+ this.handleSend(envelope);
138
+ break;
139
+ case 'ACK':
140
+ if (this.onAck) {
141
+ this.onAck(envelope);
142
+ }
143
+ break;
144
+ case 'PONG':
145
+ this.handlePong(envelope);
146
+ break;
147
+ case 'BYE':
148
+ this.close();
149
+ break;
150
+ default:
151
+ if (this.onMessage) {
152
+ this.onMessage(envelope);
153
+ }
154
+ }
155
+ }
156
+ async handleHello(envelope) {
157
+ if (this._state !== 'HANDSHAKING') {
158
+ this.sendError('BAD_REQUEST', 'Unexpected HELLO', false);
159
+ return;
160
+ }
161
+ this._agentName = envelope.payload.agent;
162
+ this._entityType = envelope.payload.entityType;
163
+ this._cli = envelope.payload.cli;
164
+ this._program = envelope.payload.program;
165
+ this._model = envelope.payload.model;
166
+ this._task = envelope.payload.task;
167
+ this._workingDirectory = envelope.payload.workingDirectory;
168
+ this._displayName = envelope.payload.displayName;
169
+ this._avatarUrl = envelope.payload.avatarUrl;
170
+ // Check for session resume
171
+ const resumeToken = envelope.payload.session?.resume_token;
172
+ if (resumeToken) {
173
+ if (this.config.resumeHandler) {
174
+ try {
175
+ const resumeState = await this.config.resumeHandler({
176
+ agent: this._agentName,
177
+ resumeToken,
178
+ });
179
+ if (resumeState) {
180
+ this._sessionId = resumeState.sessionId;
181
+ this._resumeToken = resumeState.resumeToken ?? resumeToken;
182
+ this._isResumed = true;
183
+ // Seed sequence counters so new deliveries continue from last known seq per stream
184
+ for (const seed of resumeState.seedSequences ?? []) {
185
+ this.seedSequence(seed.topic ?? 'default', seed.peer, seed.seq);
186
+ }
187
+ }
188
+ else {
189
+ this.sendError('RESUME_TOO_OLD', 'Resume token rejected; starting new session', false);
190
+ }
191
+ }
192
+ catch (err) {
193
+ this.sendError('RESUME_TOO_OLD', `Resume validation failed: ${err?.message ?? err}`, false);
194
+ }
195
+ }
196
+ else {
197
+ this.sendError('RESUME_TOO_OLD', 'Session resume not configured; starting new session', false);
198
+ }
199
+ }
200
+ // Send WELCOME
201
+ const welcome = {
202
+ v: PROTOCOL_VERSION,
203
+ type: 'WELCOME',
204
+ id: generateId(),
205
+ ts: Date.now(),
206
+ payload: {
207
+ session_id: this._sessionId,
208
+ resume_token: this._resumeToken,
209
+ server: {
210
+ max_frame_bytes: this.config.maxFrameBytes,
211
+ heartbeat_ms: this.config.heartbeatMs,
212
+ },
213
+ },
214
+ };
215
+ this.send(welcome);
216
+ this._state = 'ACTIVE';
217
+ this.lastPongReceived = Date.now();
218
+ this.startHeartbeat();
219
+ // Notify that connection is now active (for registration)
220
+ if (this.onActive) {
221
+ this.onActive();
222
+ }
223
+ }
224
+ handleSend(envelope) {
225
+ if (this._state !== 'ACTIVE') {
226
+ this.sendError('BAD_REQUEST', 'Not in ACTIVE state', false);
227
+ return;
228
+ }
229
+ // Forward to router via callback
230
+ if (this.onMessage) {
231
+ this.onMessage(envelope);
232
+ }
233
+ }
234
+ handlePong(_envelope) {
235
+ // Note: envelope.payload.nonce could be used for RTT calculation in the future
236
+ this.lastPongReceived = Date.now();
237
+ if (this.onPong) {
238
+ this.onPong();
239
+ }
240
+ }
241
+ startHeartbeat() {
242
+ this.heartbeatTimer = setInterval(() => {
243
+ if (this._state !== 'ACTIVE')
244
+ return;
245
+ const now = Date.now();
246
+ // Check for missed pong - use configurable timeout multiplier
247
+ const timeoutMs = this.config.heartbeatMs * this.config.heartbeatTimeoutMultiplier;
248
+ if (this.lastPongReceived && now - this.lastPongReceived > timeoutMs) {
249
+ // Exempt agents that are actively processing (long tool calls, thinking, etc.)
250
+ if (this._agentName && this.config.isProcessing?.(this._agentName)) {
251
+ // Agent is processing - reset the pong timer to avoid timeout
252
+ // but don't kill the connection
253
+ console.log(`[connection] Heartbeat timeout exemption for ${this._agentName} (processing)`);
254
+ }
255
+ else {
256
+ this.handleError(new Error(`Heartbeat timeout (no pong in ${timeoutMs}ms)`));
257
+ return;
258
+ }
259
+ }
260
+ // Send ping
261
+ const nonce = generateId();
262
+ this.send({
263
+ v: PROTOCOL_VERSION,
264
+ type: 'PING',
265
+ id: generateId(),
266
+ ts: now,
267
+ payload: { nonce },
268
+ });
269
+ }, this.config.heartbeatMs);
270
+ }
271
+ stopHeartbeat() {
272
+ if (this.heartbeatTimer) {
273
+ clearInterval(this.heartbeatTimer);
274
+ this.heartbeatTimer = undefined;
275
+ }
276
+ }
277
+ /**
278
+ * Seed a sequence counter for a stream so that the next value continues from the provided seq.
279
+ */
280
+ seedSequence(topic, peer, seq) {
281
+ const key = `${topic ?? 'default'}:${peer}`;
282
+ const current = this.sequences.get(key) ?? 0;
283
+ if (seq > current) {
284
+ this.sequences.set(key, seq);
285
+ }
286
+ }
287
+ /**
288
+ * Get next sequence number for a stream.
289
+ */
290
+ getNextSeq(topic, peer) {
291
+ const key = `${topic}:${peer}`;
292
+ const seq = (this.sequences.get(key) ?? 0) + 1;
293
+ this.sequences.set(key, seq);
294
+ return seq;
295
+ }
296
+ /**
297
+ * Send an envelope to this connection.
298
+ *
299
+ * Uses a write queue to prevent blocking on slow consumers.
300
+ * Returns false if the connection is closed or the queue is full.
301
+ */
302
+ send(envelope) {
303
+ if (this._state === 'CLOSED' || this._state === 'ERROR' || this._state === 'CLOSING') {
304
+ console.log(`[connection] Send to ${this._agentName} blocked - state: ${this._state}`);
305
+ return false;
306
+ }
307
+ const maxQueueSize = this.config.maxWriteQueueSize ?? 2000;
308
+ const highWaterMark = this.config.writeQueueHighWaterMark ?? 1500;
309
+ // Check queue capacity
310
+ if (this.writeQueue.length >= maxQueueSize) {
311
+ // Queue full - this is a serious condition, log it
312
+ console.warn(`[connection] Write queue full for ${this._agentName ?? this.id}, dropping message`);
313
+ return false;
314
+ }
315
+ try {
316
+ const frame = encodeFrame(envelope);
317
+ this.writeQueue.push(frame);
318
+ // Check if we should signal backpressure
319
+ if (!this._backpressured && this.writeQueue.length >= highWaterMark) {
320
+ this._backpressured = true;
321
+ this.onBackpressure?.(true);
322
+ }
323
+ // Schedule drain if not already draining
324
+ this.scheduleDrain();
325
+ return true;
326
+ }
327
+ catch (err) {
328
+ this.handleError(err);
329
+ return false;
330
+ }
331
+ }
332
+ /**
333
+ * Schedule the drain loop to run on next tick if not already running.
334
+ */
335
+ scheduleDrain() {
336
+ if (this.draining)
337
+ return;
338
+ this.draining = true;
339
+ setImmediate(() => this.drain());
340
+ }
341
+ /**
342
+ * Drain the write queue to the socket.
343
+ * Respects socket backpressure by waiting for 'drain' events.
344
+ */
345
+ drain() {
346
+ while (this.writeQueue.length > 0) {
347
+ if (this._state === 'CLOSED' || this._state === 'ERROR' || this._state === 'CLOSING') {
348
+ this.draining = false;
349
+ return;
350
+ }
351
+ const frame = this.writeQueue[0];
352
+ const canWrite = this.socket.write(frame);
353
+ this.writeQueue.shift();
354
+ if (!canWrite) {
355
+ // Socket buffer full - wait for drain event
356
+ if (!this.socketDrainHandler) {
357
+ this.socketDrainHandler = () => {
358
+ this.socketDrainHandler = undefined;
359
+ this.drain();
360
+ };
361
+ this.socket.once('drain', this.socketDrainHandler);
362
+ }
363
+ return;
364
+ }
365
+ }
366
+ this.draining = false;
367
+ // Check if we should release backpressure
368
+ const lowWaterMark = this.config.writeQueueLowWaterMark ?? 500;
369
+ if (this._backpressured && this.writeQueue.length <= lowWaterMark) {
370
+ this._backpressured = false;
371
+ this.onBackpressure?.(false);
372
+ }
373
+ }
374
+ sendError(code, message, fatal) {
375
+ const error = {
376
+ v: PROTOCOL_VERSION,
377
+ type: 'ERROR',
378
+ id: generateId(),
379
+ ts: Date.now(),
380
+ payload: {
381
+ code: code,
382
+ message,
383
+ fatal,
384
+ },
385
+ };
386
+ this.send(error);
387
+ }
388
+ handleClose() {
389
+ this._state = 'CLOSED';
390
+ this.stopHeartbeat();
391
+ this.cleanup();
392
+ if (this.onClose) {
393
+ this.onClose();
394
+ }
395
+ }
396
+ handleError(err) {
397
+ this._state = 'ERROR';
398
+ this.stopHeartbeat();
399
+ this.cleanup();
400
+ if (this.onError) {
401
+ this.onError(err);
402
+ }
403
+ this.socket.destroy();
404
+ }
405
+ cleanup() {
406
+ this.parser.reset();
407
+ // Clear write queue
408
+ this.writeQueue = [];
409
+ this.draining = false;
410
+ this._backpressured = false;
411
+ // Remove drain handler if registered
412
+ if (this.socketDrainHandler) {
413
+ this.socket.removeListener('drain', this.socketDrainHandler);
414
+ this.socketDrainHandler = undefined;
415
+ }
416
+ }
417
+ close() {
418
+ if (this._state === 'CLOSED' || this._state === 'CLOSING')
419
+ return;
420
+ this._state = 'CLOSING';
421
+ // Write BYE message directly (not via queue) to avoid race with socket.end()
422
+ try {
423
+ const byeFrame = encodeFrame({
424
+ v: PROTOCOL_VERSION,
425
+ type: 'BYE',
426
+ id: generateId(),
427
+ ts: Date.now(),
428
+ payload: {},
429
+ });
430
+ this.socket.write(byeFrame);
431
+ }
432
+ catch {
433
+ // Ignore write errors during close
434
+ }
435
+ this.socket.end();
436
+ }
437
+ }
438
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}