@moxxy/plugin-channel-http 0.28.1 → 0.30.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.
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;0EACsE;IACtE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC;;;;iBAIa;IACb,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QACzD,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC1D,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,oBAAoB;IACzD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,WAAY,YAAW,OAAO,CAAC,aAAa,CAAC;IACxD,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAK;IAE3B;;mFAE+E;IAC/E,IAAI,SAAS,IAAI,MAAM,CAEtB;gBAEW,IAAI,GAAE,kBAAuB;IAoBnC,KAAK,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CA6H9D"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;0EACsE;IACtE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC;;;;iBAIa;IACb,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QACzD,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC1D,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,oBAAoB;IACzD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,WAAY,YAAW,OAAO,CAAC,aAAa,CAAC;IACxD,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAK;IAE3B;;mFAE+E;IAC/E,IAAI,SAAS,IAAI,MAAM,CAEtB;gBAEW,IAAI,GAAE,kBAAuB;IAoBnC,KAAK,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CAkI9D"}
package/dist/channel.js CHANGED
@@ -74,7 +74,9 @@ export class HttpChannel {
74
74
  catch (err) {
75
75
  // Log the full error server-side; return a generic message so internal
76
76
  // paths/provider details can't leak to a (possibly remote) caller.
77
- this.logger?.warn?.('http handler threw', { err: String(err) });
77
+ const logger = this.logger;
78
+ if (logger?.warn)
79
+ logger.warn('http handler threw', { err: String(err) });
78
80
  if (!res.headersSent) {
79
81
  res.writeHead(500, { 'content-type': 'application/json' });
80
82
  res.end(JSON.stringify({ error: 'internal' }));
@@ -122,16 +124,20 @@ export class HttpChannel {
122
124
  // `running` promise so callers awaiting it observe the crash instead of
123
125
  // mistaking it for a clean shutdown.
124
126
  server.on('error', (err) => {
125
- this.logger?.warn?.('http server error', { err: String(err) });
127
+ const logger = this.logger;
128
+ if (logger?.warn)
129
+ logger.warn('http server error', { err: String(err) });
126
130
  rejectRunning(err);
127
131
  });
128
132
  const addr = server.address();
129
133
  this.boundPortValue = typeof addr === 'object' && addr ? addr.port : this.port;
130
- this.logger?.info?.('http channel listening', {
131
- host: this.host,
132
- port: this.boundPortValue,
133
- authEnabled: this.authToken !== null,
134
- });
134
+ const logger = this.logger;
135
+ if (logger?.info)
136
+ logger.info('http channel listening', {
137
+ host: this.host,
138
+ port: this.boundPortValue,
139
+ authEnabled: this.authToken !== null,
140
+ });
135
141
  resolve();
136
142
  });
137
143
  });
@@ -152,8 +158,9 @@ export class HttpChannel {
152
158
  if (!srv)
153
159
  return resolve();
154
160
  srv.close((err) => {
155
- if (err)
156
- this.logger?.warn?.('http server close error', { err: String(err) });
161
+ const logger = this.logger;
162
+ if (err && logger?.warn)
163
+ logger.warn('http server close error', { err: String(err) });
157
164
  resolve();
158
165
  });
159
166
  });
@@ -1 +1 @@
1
- {"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moxxy/plugin-channel-http",
3
- "version": "0.28.1",
3
+ "version": "0.30.0",
4
4
  "description": "Request-response HTTP channel for moxxy. POST /v1/turn drives one turn synchronously; POST /v1/turn/stream returns Server-Sent Events. Bearer-token auth + allow-list permission flow (no human in the loop).",
5
5
  "keywords": [
6
6
  "moxxy",
@@ -57,17 +57,17 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "zod": "^3.24.0",
60
- "@moxxy/sdk": "0.28.1"
60
+ "@moxxy/sdk": "0.30.0"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@types/node": "^22.10.0",
64
64
  "typescript": "^5.7.3",
65
65
  "vitest": "^2.1.8",
66
- "@moxxy/mode-default": "0.28.1",
67
- "@moxxy/core": "0.28.1",
68
- "@moxxy/testing": "0.0.47",
69
- "@moxxy/runner": "0.2.33",
70
- "@moxxy/tools-builtin": "0.0.42",
66
+ "@moxxy/mode-default": "0.30.0",
67
+ "@moxxy/core": "0.30.0",
68
+ "@moxxy/runner": "0.2.35",
69
+ "@moxxy/testing": "0.0.49",
70
+ "@moxxy/tools-builtin": "0.0.44",
71
71
  "@moxxy/tsconfig": "0.0.0",
72
72
  "@moxxy/vitest-preset": "0.0.0"
73
73
  },
package/src/channel.ts CHANGED
@@ -121,7 +121,8 @@ export class HttpChannel implements Channel<HttpStartOpts> {
121
121
  } catch (err) {
122
122
  // Log the full error server-side; return a generic message so internal
123
123
  // paths/provider details can't leak to a (possibly remote) caller.
124
- this.logger?.warn?.('http handler threw', { err: String(err) });
124
+ const logger = this.logger;
125
+ if (logger?.warn) logger.warn('http handler threw', { err: String(err) });
125
126
  if (!res.headersSent) {
126
127
  res.writeHead(500, { 'content-type': 'application/json' });
127
128
  res.end(JSON.stringify({ error: 'internal' }));
@@ -169,16 +170,19 @@ export class HttpChannel implements Channel<HttpStartOpts> {
169
170
  // `running` promise so callers awaiting it observe the crash instead of
170
171
  // mistaking it for a clean shutdown.
171
172
  server.on('error', (err: unknown) => {
172
- this.logger?.warn?.('http server error', { err: String(err) });
173
+ const logger = this.logger;
174
+ if (logger?.warn) logger.warn('http server error', { err: String(err) });
173
175
  rejectRunning(err);
174
176
  });
175
177
  const addr = server.address();
176
178
  this.boundPortValue = typeof addr === 'object' && addr ? addr.port : this.port;
177
- this.logger?.info?.('http channel listening', {
178
- host: this.host,
179
- port: this.boundPortValue,
180
- authEnabled: this.authToken !== null,
181
- });
179
+ const logger = this.logger;
180
+ if (logger?.info)
181
+ logger.info('http channel listening', {
182
+ host: this.host,
183
+ port: this.boundPortValue,
184
+ authEnabled: this.authToken !== null,
185
+ });
182
186
  resolve();
183
187
  });
184
188
  });
@@ -201,7 +205,8 @@ export class HttpChannel implements Channel<HttpStartOpts> {
201
205
  await new Promise<void>((resolve) => {
202
206
  if (!srv) return resolve();
203
207
  srv.close((err) => {
204
- if (err) this.logger?.warn?.('http server close error', { err: String(err) });
208
+ const logger = this.logger;
209
+ if (err && logger?.warn) logger.warn('http server close error', { err: String(err) });
205
210
  resolve();
206
211
  });
207
212
  });
@@ -3,7 +3,7 @@ import type { IncomingMessage, ServerResponse } from 'node:http';
3
3
  import { Readable } from 'node:stream';
4
4
  import { Socket } from 'node:net';
5
5
  import { Session, silentLogger } from '@moxxy/core';
6
- import { defineTranscriber } from '@moxxy/sdk';
6
+ import { assertDefined, defineTranscriber } from '@moxxy/sdk';
7
7
  import type { ClientSession } from '@moxxy/sdk';
8
8
  import {
9
9
  routeRequest,
@@ -80,7 +80,9 @@ function makeResponse(): ServerResponse & {
80
80
  },
81
81
  on(event: string, fn: (...args: unknown[]) => void) {
82
82
  if (!listeners.has(event)) listeners.set(event, new Set());
83
- listeners.get(event)!.add(fn);
83
+ const set = listeners.get(event);
84
+ assertDefined(set, 'listener set exists after ensure');
85
+ set.add(fn);
84
86
  return this;
85
87
  },
86
88
  once(event: string, fn: (...args: unknown[]) => void) {
@@ -89,7 +91,9 @@ function makeResponse(): ServerResponse & {
89
91
  fn(...args);
90
92
  };
91
93
  if (!listeners.has(event)) listeners.set(event, new Set());
92
- listeners.get(event)!.add(wrap);
94
+ const set = listeners.get(event);
95
+ assertDefined(set, 'listener set exists after ensure');
96
+ set.add(wrap);
93
97
  return this;
94
98
  },
95
99
  off(event: string, fn: (...args: unknown[]) => void) {
@@ -255,7 +259,8 @@ describe('handleTurn — client-disconnect abort (u70-1)', () => {
255
259
  resolveClosed();
256
260
  return (async function* () {
257
261
  await new Promise<void>((resolve) => {
258
- opts?.signal?.addEventListener('abort', () => resolve());
262
+ const signal = opts?.signal;
263
+ signal?.addEventListener('abort', () => resolve());
259
264
  });
260
265
  })();
261
266
  },
@@ -276,9 +281,10 @@ describe('handleTurn — client-disconnect abort (u70-1)', () => {
276
281
  // Wait until runTurn is in-flight, then simulate the client disconnect.
277
282
  await sawSignal;
278
283
  expect(capturedSignal).toBeDefined();
279
- expect(capturedSignal!.aborted).toBe(false);
284
+ assertDefined(capturedSignal, 'an abort signal was captured');
285
+ expect(capturedSignal.aborted).toBe(false);
280
286
  res._emit('close');
281
- expect(capturedSignal!.aborted).toBe(true);
287
+ expect(capturedSignal.aborted).toBe(true);
282
288
 
283
289
  await handlerDone;
284
290
  // The close listener is detached after the turn settles (no leak).
@@ -323,7 +329,10 @@ describe('driveTurn', () => {
323
329
  signal = opts?.signal;
324
330
  started();
325
331
  return (async function* () {
326
- await new Promise<void>((resolve) => opts?.signal?.addEventListener('abort', () => resolve()));
332
+ await new Promise<void>((resolve) => {
333
+ const sig = opts?.signal;
334
+ sig?.addEventListener('abort', () => resolve());
335
+ });
327
336
  })();
328
337
  },
329
338
  } as unknown as ClientSession;
@@ -331,9 +340,10 @@ describe('driveTurn', () => {
331
340
  const res = makeResponse();
332
341
  const done = driveTurn(session, 'hi', {}, res);
333
342
  await inFlight;
334
- expect(signal!.aborted).toBe(false);
343
+ assertDefined(signal, 'an abort signal was captured');
344
+ expect(signal.aborted).toBe(false);
335
345
  res._emit('close');
336
- expect(signal!.aborted).toBe(true);
346
+ expect(signal.aborted).toBe(true);
337
347
  await done;
338
348
  });
339
349
 
@@ -436,7 +446,10 @@ describe('handleTurn — concurrency cap', () => {
436
446
  ({
437
447
  runTurn: (_p: string, opts?: { signal?: AbortSignal }) =>
438
448
  (async function* () {
439
- await new Promise<void>((resolve) => opts?.signal?.addEventListener('abort', () => resolve()));
449
+ await new Promise<void>((resolve) => {
450
+ const signal = opts?.signal;
451
+ signal?.addEventListener('abort', () => resolve());
452
+ });
440
453
  })(),
441
454
  }) as unknown as ClientSession;
442
455
 
@@ -502,7 +515,8 @@ describe('driveTurn — buffered-events bound', () => {
502
515
  let aborted = false;
503
516
  const session = {
504
517
  runTurn: (_p: string, opts?: { signal?: AbortSignal }) => {
505
- opts?.signal?.addEventListener('abort', () => {
518
+ const signal = opts?.signal;
519
+ signal?.addEventListener('abort', () => {
506
520
  aborted = true;
507
521
  });
508
522
  return (async function* () {
@@ -604,13 +618,14 @@ describe('handleTurnStream — backpressure + closed-socket safety', () => {
604
618
  // Let the handler reach the first parked write.
605
619
  await new Promise((r) => setTimeout(r, 5));
606
620
  expect(settled).toBe(false);
607
- expect(signal!.aborted).toBe(false);
621
+ assertDefined(signal, 'an abort signal was captured');
622
+ expect(signal.aborted).toBe(false);
608
623
 
609
624
  // Fire the inactivity timeout — must abort the turn and let the handler exit.
610
625
  res._fireTimeout();
611
626
  await done;
612
627
  expect(settled).toBe(true);
613
- expect(signal!.aborted).toBe(true);
628
+ expect(signal.aborted).toBe(true);
614
629
  });
615
630
 
616
631
  it('disarms the stall timer after the stream settles cleanly', async () => {
@@ -640,7 +655,10 @@ describe('handleTurnStream — backpressure + closed-socket safety', () => {
640
655
  runTurn: (_p: string, opts?: { signal?: AbortSignal }) => {
641
656
  signal = opts?.signal;
642
657
  return (async function* () {
643
- await new Promise<void>((resolve) => opts?.signal?.addEventListener('abort', () => resolve()));
658
+ await new Promise<void>((resolve) => {
659
+ const sig = opts?.signal;
660
+ sig?.addEventListener('abort', () => resolve());
661
+ });
644
662
  })();
645
663
  },
646
664
  } as unknown as ClientSession;
@@ -656,7 +674,8 @@ describe('handleTurnStream — backpressure + closed-socket safety', () => {
656
674
  // Emit a socket error mid-stream — must not propagate.
657
675
  expect(() => res._emit('error', new Error('ECONNRESET'))).not.toThrow();
658
676
  await expect(done).resolves.toBeUndefined();
659
- expect(signal!.aborted).toBe(true);
677
+ assertDefined(signal, 'an abort signal was captured');
678
+ expect(signal.aborted).toBe(true);
660
679
  expect(warn).toHaveBeenCalledWith('http stream response error', expect.objectContaining({}));
661
680
  });
662
681
  });