@antseed/cli 0.1.193 → 0.1.194

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 (125) hide show
  1. package/dist/cli/commands/buyer/start.d.ts.map +1 -1
  2. package/dist/cli/commands/buyer/start.js +9 -4
  3. package/dist/cli/commands/buyer/start.js.map +1 -1
  4. package/dist/cli/commands/gateway/index.d.ts.map +1 -1
  5. package/dist/cli/commands/gateway/index.js +6 -0
  6. package/dist/cli/commands/gateway/index.js.map +1 -1
  7. package/dist/cli/commands/seller/start.d.ts.map +1 -1
  8. package/dist/cli/commands/seller/start.js +9 -0
  9. package/dist/cli/commands/seller/start.js.map +1 -1
  10. package/dist/cli/commands/tunnel/start.d.ts.map +1 -1
  11. package/dist/cli/commands/tunnel/start.js +8 -2
  12. package/dist/cli/commands/tunnel/start.js.map +1 -1
  13. package/dist/cli/commands/update.d.ts +19 -0
  14. package/dist/cli/commands/update.d.ts.map +1 -0
  15. package/dist/cli/commands/update.js +153 -0
  16. package/dist/cli/commands/update.js.map +1 -0
  17. package/dist/cli/index.js +11 -0
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/cli/program.d.ts.map +1 -1
  20. package/dist/cli/program.js +2 -0
  21. package/dist/cli/program.js.map +1 -1
  22. package/dist/gateway/buyer-process.d.ts +5 -0
  23. package/dist/gateway/buyer-process.d.ts.map +1 -1
  24. package/dist/gateway/buyer-process.js +7 -4
  25. package/dist/gateway/buyer-process.js.map +1 -1
  26. package/dist/gateway/buyer-process.test.js +28 -2
  27. package/dist/gateway/buyer-process.test.js.map +1 -1
  28. package/dist/gateway/console-api/deps.d.ts +3 -0
  29. package/dist/gateway/console-api/deps.d.ts.map +1 -1
  30. package/dist/gateway/console-api/handlers/index.d.ts.map +1 -1
  31. package/dist/gateway/console-api/handlers/index.js +2 -0
  32. package/dist/gateway/console-api/handlers/index.js.map +1 -1
  33. package/dist/gateway/console-api/handlers/staking.d.ts +28 -0
  34. package/dist/gateway/console-api/handlers/staking.d.ts.map +1 -0
  35. package/dist/gateway/console-api/handlers/staking.js +153 -0
  36. package/dist/gateway/console-api/handlers/staking.js.map +1 -0
  37. package/dist/gateway/console-api/handlers/staking.test.d.ts +2 -0
  38. package/dist/gateway/console-api/handlers/staking.test.d.ts.map +1 -0
  39. package/dist/gateway/console-api/handlers/staking.test.js +126 -0
  40. package/dist/gateway/console-api/handlers/staking.test.js.map +1 -0
  41. package/dist/gateway/console-api/handlers/update.d.ts +13 -0
  42. package/dist/gateway/console-api/handlers/update.d.ts.map +1 -0
  43. package/dist/gateway/console-api/handlers/update.js +65 -0
  44. package/dist/gateway/console-api/handlers/update.js.map +1 -0
  45. package/dist/gateway/console-api/router.d.ts +1 -1
  46. package/dist/gateway/console-api/router.d.ts.map +1 -1
  47. package/dist/gateway/console-api/router.js +8 -3
  48. package/dist/gateway/console-api/router.js.map +1 -1
  49. package/dist/gateway/console-api/types.d.ts +47 -0
  50. package/dist/gateway/console-api/types.d.ts.map +1 -1
  51. package/dist/gateway/console-api/types.js.map +1 -1
  52. package/dist/gateway/console-api/update.test.d.ts +2 -0
  53. package/dist/gateway/console-api/update.test.d.ts.map +1 -0
  54. package/dist/gateway/console-api/update.test.js +198 -0
  55. package/dist/gateway/console-api/update.test.js.map +1 -0
  56. package/dist/gateway/console.d.ts +3 -0
  57. package/dist/gateway/console.d.ts.map +1 -1
  58. package/dist/gateway/console.js +3 -0
  59. package/dist/gateway/console.js.map +1 -1
  60. package/dist/gateway/gateway-policy.test.js +66 -0
  61. package/dist/gateway/gateway-policy.test.js.map +1 -1
  62. package/dist/gateway/gateway.test.js +88 -0
  63. package/dist/gateway/gateway.test.js.map +1 -1
  64. package/dist/gateway/policy-resolver.test.js +11 -3
  65. package/dist/gateway/policy-resolver.test.js.map +1 -1
  66. package/dist/gateway/request-errors.test.js +119 -3
  67. package/dist/gateway/request-errors.test.js.map +1 -1
  68. package/dist/gateway/request-shaping.d.ts +4 -2
  69. package/dist/gateway/request-shaping.d.ts.map +1 -1
  70. package/dist/gateway/request-shaping.js +16 -10
  71. package/dist/gateway/request-shaping.js.map +1 -1
  72. package/dist/gateway/server.d.ts +6 -0
  73. package/dist/gateway/server.d.ts.map +1 -1
  74. package/dist/gateway/server.js +162 -73
  75. package/dist/gateway/server.js.map +1 -1
  76. package/dist/gateway/services/usage.d.ts.map +1 -1
  77. package/dist/gateway/services/usage.js +7 -0
  78. package/dist/gateway/services/usage.js.map +1 -1
  79. package/dist/gateway/store-data.test.js +1 -1
  80. package/dist/gateway/store-data.test.js.map +1 -1
  81. package/dist/gateway/store-migrations.d.ts.map +1 -1
  82. package/dist/gateway/store-migrations.js +7 -0
  83. package/dist/gateway/store-migrations.js.map +1 -1
  84. package/dist/gateway/store.d.ts +24 -1
  85. package/dist/gateway/store.d.ts.map +1 -1
  86. package/dist/gateway/store.js +29 -10
  87. package/dist/gateway/store.js.map +1 -1
  88. package/dist/gateway/updates.d.ts +34 -0
  89. package/dist/gateway/updates.d.ts.map +1 -0
  90. package/dist/gateway/updates.js +155 -0
  91. package/dist/gateway/updates.js.map +1 -0
  92. package/dist/proxy/buyer-proxy.d.ts +4 -0
  93. package/dist/proxy/buyer-proxy.d.ts.map +1 -1
  94. package/dist/proxy/buyer-proxy.js +9 -0
  95. package/dist/proxy/buyer-proxy.js.map +1 -1
  96. package/dist/proxy/router-execution.d.ts.map +1 -1
  97. package/dist/proxy/router-execution.js +14 -4
  98. package/dist/proxy/router-execution.js.map +1 -1
  99. package/dist/proxy/router-execution.test.js +35 -0
  100. package/dist/proxy/router-execution.test.js.map +1 -1
  101. package/dist/update/install-method.d.ts +25 -0
  102. package/dist/update/install-method.d.ts.map +1 -0
  103. package/dist/update/install-method.js +76 -0
  104. package/dist/update/install-method.js.map +1 -0
  105. package/dist/update/notifier.d.ts +30 -0
  106. package/dist/update/notifier.d.ts.map +1 -0
  107. package/dist/update/notifier.js +84 -0
  108. package/dist/update/notifier.js.map +1 -0
  109. package/dist/update/root-updater.d.ts +80 -0
  110. package/dist/update/root-updater.d.ts.map +1 -0
  111. package/dist/update/root-updater.js +104 -0
  112. package/dist/update/root-updater.js.map +1 -0
  113. package/dist/update/update.test.d.ts +2 -0
  114. package/dist/update/update.test.d.ts.map +1 -0
  115. package/dist/update/update.test.js +224 -0
  116. package/dist/update/update.test.js.map +1 -0
  117. package/dist/update/version.d.ts +29 -0
  118. package/dist/update/version.d.ts.map +1 -0
  119. package/dist/update/version.js +110 -0
  120. package/dist/update/version.js.map +1 -0
  121. package/dist/update/watch.d.ts +32 -0
  122. package/dist/update/watch.d.ts.map +1 -0
  123. package/dist/update/watch.js +59 -0
  124. package/dist/update/watch.js.map +1 -0
  125. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"request-errors.test.js","sourceRoot":"","sources":["../../src/gateway/request-errors.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-errors.test.js","sourceRoot":"","sources":["../../src/gateway/request-errors.test.ts"],"names":[],"mappings":"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"}
@@ -12,14 +12,16 @@ export declare function presetSlug(model: string | null): string | null;
12
12
  export declare function applyPreset(body: Record<string, unknown>, preset: PresetRecord, routePrefix: string): Record<string, unknown>;
13
13
  /** End user from the body's `user` field (OpenAI convention) or the end-user header. */
14
14
  export declare function extractEndUser(body: Record<string, unknown> | null, header: string | undefined): string | null;
15
- /** A text field of a multipart form (image edits), without a full parser; `model` by default. */
16
- export declare function sniffMultipartModel(body: Buffer, contentType: string | undefined, field?: 'model' | 'service'): string | null;
17
15
  /**
18
16
  * The model the buyer will route the request to, the way it reads it
19
17
  * (`service ?? model`, trimmed; see `extractRequestedService` in
20
18
  * proxy/request-utils.ts): a `service` field wins over `model`, and one that
21
19
  * is not a usable name leaves the request without a model. The gateway's
22
20
  * model allow list and its accounting use this, not `model` alone.
21
+ *
22
+ * The body is read whole, however large: the buyer reads it whole too, so a
23
+ * body the gateway cannot read is one whose preset, allow list and accounting
24
+ * it would get wrong while the buyer still routes it.
23
25
  */
24
26
  export declare function effectiveRequestModel(parsed: Record<string, unknown> | null, body: Buffer, contentType: string | undefined): string | null;
25
27
  //# sourceMappingURL=request-shaping.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-shaping.d.ts","sourceRoot":"","sources":["../../src/gateway/request-shaping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,eAAO,MAAM,mBAAmB,aAAa,CAAA;AAC7C,eAAO,MAAM,eAAe,uBAAuB,CAAA;AAGnD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkB7H;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAI9G;AAED,iGAAiG;AACjG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,GAAE,OAAO,GAAG,SAAmB,GAAG,MAAM,GAAG,IAAI,CAKtI;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAK1I"}
1
+ {"version":3,"file":"request-shaping.d.ts","sourceRoot":"","sources":["../../src/gateway/request-shaping.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,eAAO,MAAM,mBAAmB,aAAa,CAAA;AAC7C,eAAO,MAAM,eAAe,uBAAuB,CAAA;AAGnD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkB7H;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAI9G;AAaD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAI1I"}
@@ -1,3 +1,4 @@
1
+ import { parseMultipartFormFields } from '@antseed/api-adapter';
1
2
  export const PRESET_MODEL_PREFIX = '@preset/';
2
3
  export const END_USER_HEADER = 'x-antseed-end-user';
3
4
  const MAX_END_USER_LENGTH = 256;
@@ -42,13 +43,15 @@ export function extractEndUser(body, header) {
42
43
  const value = (fromBody || header || '').trim();
43
44
  return value ? value.slice(0, MAX_END_USER_LENGTH) : null;
44
45
  }
45
- /** A text field of a multipart form (image edits), without a full parser; `model` by default. */
46
- export function sniffMultipartModel(body, contentType, field = 'model') {
47
- if (!contentType?.toLowerCase().startsWith('multipart/form-data'))
48
- return null;
49
- const text = body.subarray(0, 4 * 1024 * 1024).toString('latin1');
50
- const match = new RegExp(`content-disposition:\\s*form-data;\\s*name="${field}"[^\\r\\n]*\\r\\n(?:[^\\r\\n]+\\r\\n)*\\r\\n([^\\r\\n]*)\\r\\n`, 'i').exec(text);
51
- return match ? Buffer.from(match[1], 'latin1').toString('utf8').slice(0, 200) : null;
46
+ /**
47
+ * A multipart form's text fields, read with the buyer's own parser
48
+ * (`parseMultipartFormFields`): the same `model`/`service` values, and the
49
+ * whole body, not just its start. Null unless the content type is multipart.
50
+ */
51
+ function multipartFields(body, contentType) {
52
+ return contentType?.toLowerCase().startsWith('multipart/form-data')
53
+ ? parseMultipartFormFields(body, contentType)
54
+ : null;
52
55
  }
53
56
  /**
54
57
  * The model the buyer will route the request to, the way it reads it
@@ -56,11 +59,14 @@ export function sniffMultipartModel(body, contentType, field = 'model') {
56
59
  * proxy/request-utils.ts): a `service` field wins over `model`, and one that
57
60
  * is not a usable name leaves the request without a model. The gateway's
58
61
  * model allow list and its accounting use this, not `model` alone.
62
+ *
63
+ * The body is read whole, however large: the buyer reads it whole too, so a
64
+ * body the gateway cannot read is one whose preset, allow list and accounting
65
+ * it would get wrong while the buyer still routes it.
59
66
  */
60
67
  export function effectiveRequestModel(parsed, body, contentType) {
61
- const raw = parsed
62
- ? parsed['service'] ?? parsed['model']
63
- : sniffMultipartModel(body, contentType, 'service') ?? sniffMultipartModel(body, contentType);
68
+ const fields = parsed ?? multipartFields(body, contentType);
69
+ const raw = fields?.['service'] ?? fields?.['model'];
64
70
  return typeof raw === 'string' && raw.trim() ? raw.trim() : null;
65
71
  }
66
72
  //# sourceMappingURL=request-shaping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-shaping.js","sourceRoot":"","sources":["../../src/gateway/request-shaping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-shaping.js","sourceRoot":"","sources":["../../src/gateway/request-shaping.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,10 @@ export interface GatewayServerOptions {
38
38
  } | null;
39
39
  /** Span exporter; defaults to one reading the observability settings from the store. */
40
40
  exporter?: OtlpExporter;
41
+ /** How long a request waits for a buyer that refuses connections (restarting); default BUYER_RESTART_HOLD_MS. */
42
+ buyerRestartHoldMs?: number;
43
+ /** How long `stop()` lets requests in flight finish before closing them; default SHUTDOWN_DRAIN_MS. */
44
+ shutdownDrainMs?: number;
41
45
  }
42
46
  export interface GatewayTopupOptions {
43
47
  asset: () => Promise<X402Asset>;
@@ -67,6 +71,8 @@ export declare class GatewayServer {
67
71
  */
68
72
  pruneRequestLog(now?: number): Promise<number>;
69
73
  stop(): Promise<void>;
74
+ /** Whether the gateway should keep waiting for a buyer that has refused connections since `since`. */
75
+ private _holdForBuyer;
70
76
  private _log;
71
77
  private _handle;
72
78
  /** The request's active API key and who it is accounted to; answers 401 itself otherwise. */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/gateway/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/gateway/server.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { timingSafeEqual } from 'node:crypto';
2
2
  import * as http from 'node:http';
3
+ import { nativeVideoAcceptance, nativeVideoRoute } from '@antseed/api-adapter';
3
4
  import { DEFAULT_BUYER_IDENTITY } from '@antseed/node';
4
5
  import { SPEND_ATTRIBUTION_HEADER } from '../proxy/spend-attribution.js';
5
6
  import { BUYER_IDENTITY_HEADER } from '../proxy/request-utils.js';
@@ -32,15 +33,27 @@ const HOP_BY_HOP = new Set([
32
33
  'transfer-encoding',
33
34
  'upgrade',
34
35
  ]);
35
- /** Bodies are buffered to read the model for metrics; the buyer buffers them too. */
36
- const MAX_MODEL_SNIFF_BYTES = 4 * 1024 * 1024;
37
- /** Largest request body the gateway accepts, matching the buyer's default upload limit. */
36
+ /**
37
+ * Largest request body the gateway accepts, matching the buyer's default
38
+ * upload limit. Every accepted body is parsed to read its model, the way the
39
+ * buyer reads it: that model decides the preset, the allow list and the
40
+ * accounting, so the two must never disagree about it.
41
+ */
38
42
  const MAX_BODY_BYTES = 64 * 1024 * 1024;
39
43
  /** How much of a failed response is read for its error code and message. */
40
44
  const MAX_ERROR_BODY_BYTES = 16 * 1024;
41
45
  const MAX_ERROR_MESSAGE_CHARS = 500;
42
46
  /** Request and response bodies kept per request while content logging is on. */
43
47
  const MAX_LOGGED_CONTENT_BYTES = 64 * 1024;
48
+ /**
49
+ * A buyer that refuses connections is restarting (an update, a console
50
+ * restart): requests wait this long for it instead of failing. It covers the
51
+ * buyer's shutdown drain and its startup.
52
+ */
53
+ const BUYER_RESTART_HOLD_MS = 120_000;
54
+ const BUYER_RETRY_INTERVAL_MS = 500;
55
+ /** On shutdown, requests in flight get this long to finish before they are closed. */
56
+ const SHUTDOWN_DRAIN_MS = 60_000;
44
57
  const RETENTION_SWEEP_MS = 60 * 60 * 1000;
45
58
  const DAY_MS = 24 * 60 * 60 * 1000;
46
59
  /** Why a key with caps cannot be served while its buyer's spend feed is not reporting. */
@@ -142,10 +155,22 @@ export class GatewayServer {
142
155
  if (this._retentionTimer)
143
156
  clearInterval(this._retentionTimer);
144
157
  this._retentionTimer = null;
145
- await this._exporter.stop();
146
- if (!server)
158
+ if (!server) {
159
+ await this._exporter.stop();
147
160
  return;
148
- await new Promise((resolve) => server.close(() => resolve()));
161
+ }
162
+ // Stop accepting (a proxy in front retries elsewhere or waits for the next
163
+ // process), let requests in flight finish, then close what is left.
164
+ const closed = new Promise((resolve) => server.close(() => resolve()));
165
+ const drain = setTimeout(() => server.closeAllConnections(), this._options.shutdownDrainMs ?? SHUTDOWN_DRAIN_MS);
166
+ drain.unref?.();
167
+ await closed;
168
+ clearTimeout(drain);
169
+ await this._exporter.stop();
170
+ }
171
+ /** Whether the gateway should keep waiting for a buyer that has refused connections since `since`. */
172
+ _holdForBuyer(since) {
173
+ return this._server !== null && Date.now() - since < (this._options.buyerRestartHoldMs ?? BUYER_RESTART_HOLD_MS);
149
174
  }
150
175
  _log(message) {
151
176
  this._options.onLog?.(message);
@@ -222,6 +247,7 @@ export class GatewayServer {
222
247
  body,
223
248
  policyHeaders: policy.headers,
224
249
  modelListPolicy: route.prefix === '/v1/models' && policy.policy.allowedModels ? policy.policy : null,
250
+ video: nativeVideoRoute({ method, path: route.prefix, body }),
225
251
  };
226
252
  try {
227
253
  this._options.store.startRequest({
@@ -235,6 +261,7 @@ export class GatewayServer {
235
261
  workspaceId: key.workspaceId,
236
262
  memberId: key.ownerMemberId,
237
263
  endUser: request.endUser,
264
+ video: request.video && { action: request.video.action === 'create' ? 'create' : 'poll', jobId: request.video.resourceId ?? null },
238
265
  });
239
266
  this._options.store.touchKey(key.id);
240
267
  }
@@ -297,7 +324,16 @@ export class GatewayServer {
297
324
  if (this._options.spendFeedState() === 'reporting')
298
325
  return true;
299
326
  await this._options.refreshSpendFeed();
300
- const state = this._options.spendFeedState();
327
+ let state = this._options.spendFeedState();
328
+ // A buyer that is restarting reports again once it is back.
329
+ const since = Date.now();
330
+ while (state === 'unreachable' && !res.destroyed && this._holdForBuyer(since)) {
331
+ await new Promise((resolve) => setTimeout(resolve, BUYER_RETRY_INTERVAL_MS));
332
+ await this._options.refreshSpendFeed();
333
+ state = this._options.spendFeedState();
334
+ }
335
+ if (res.destroyed)
336
+ return false;
301
337
  if (state === 'reporting')
302
338
  return true;
303
339
  sendError(res, 503, 'api_error', 'spend_tracking_unavailable', SPEND_FEED_UNAVAILABLE_MESSAGES[state]);
@@ -370,6 +406,9 @@ export class GatewayServer {
370
406
  let firstTokenMs = null;
371
407
  let respondedAt = 0;
372
408
  let servedFree = false;
409
+ // Video: the start of a create's answer (it names the job) and whether a retrieve delivered the file.
410
+ let videoCreateChunks = null;
411
+ let videoDelivered = false;
373
412
  // Token counts the response reports, kept on the request until (or if
374
413
  // the buyer never reports) its spend.
375
414
  let usageReader = null;
@@ -388,7 +427,10 @@ export class GatewayServer {
388
427
  store.finishRequest(tag, { status, buyerRequestId, error });
389
428
  const usage = usageReader?.result() ?? null;
390
429
  const tokensPerSecond = firstTokenMs !== null ? outputTokensPerSecond(usage?.outputTokens ?? 0, finishedAt - respondedAt) : null;
391
- store.recordRequestOutcome(tag, { sellerPeerId, latencyMs, firstTokenMs, tokensPerSecond, endUser, servedFree });
430
+ const videoJobId = videoCreateChunks && request.video
431
+ ? nativeVideoAcceptance(request.video.protocol, { requestId: tag, statusCode: status, headers: {}, body: Buffer.concat(videoCreateChunks) })
432
+ : null;
433
+ store.recordRequestOutcome(tag, { sellerPeerId, latencyMs, firstTokenMs, tokensPerSecond, endUser, servedFree, videoJobId, videoDelivered });
392
434
  if (usage)
393
435
  store.recordResponseUsage(tag, usage);
394
436
  if (observability.logContent)
@@ -417,78 +459,125 @@ export class GatewayServer {
417
459
  if (controlSecret)
418
460
  headers[GATEWAY_CONTROL_HEADER] = controlSecret;
419
461
  }
420
- const upstream = http.request({
421
- hostname: '127.0.0.1',
422
- port: buyerPort,
423
- method,
424
- path: request.buyerPath,
425
- headers,
426
- }, (upstreamRes) => {
427
- const status = upstreamRes.statusCode ?? 502;
428
- const buyerRequestId = firstHeader(upstreamRes.headers['x-antseed-request-id']) || null;
429
- sellerPeerId = firstHeader(upstreamRes.headers['x-antseed-peer-id']).slice(0, 200) || null;
430
- reportedLatency = latencyHeader(firstHeader(upstreamRes.headers['x-antseed-latency-ms']));
431
- firstTokenMs = status < 400 ? latencyHeader(firstHeader(upstreamRes.headers['x-antseed-first-token-ms'])) : null;
432
- respondedAt = Date.now();
433
- servedFree = freeSellerPricing(upstreamRes.headers);
434
- if (observability.logContent)
435
- responseChunks = collectPrefix(upstreamRes, MAX_LOGGED_CONTENT_BYTES);
436
- if (status >= 400)
437
- errorChunks = collectPrefix(upstreamRes, MAX_ERROR_BODY_BYTES);
438
- // A delivered video is an MP4 stream with no usage to read.
439
- else if (request.model !== null && !firstHeader(upstreamRes.headers['content-type']).toLowerCase().startsWith('video/'))
440
- usageReader = readUsage(upstreamRes, (message) => this._log(message));
441
- const responseHeaders = {};
442
- for (const [name, value] of Object.entries(upstreamRes.headers)) {
443
- if (!HOP_BY_HOP.has(name.toLowerCase()) && value !== undefined)
444
- responseHeaders[name] = value;
445
- }
446
- responseHeaders.connection = 'close';
447
- upstreamRes.once('error', () => finish(status, buyerRequestId));
448
- res.once('close', () => finish(status, buyerRequestId));
449
- const modelListPolicy = request.modelListPolicy;
450
- if (modelListPolicy && status === 200) {
451
- const chunks = [];
452
- upstreamRes.on('data', (chunk) => chunks.push(chunk));
453
- upstreamRes.once('end', () => {
454
- const listing = filterModelList(Buffer.concat(chunks), modelListPolicy);
455
- res.writeHead(status, { ...responseHeaders, 'content-length': String(listing.length) });
456
- res.end(listing);
457
- finish(status, buyerRequestId);
458
- });
459
- return;
460
- }
461
- res.writeHead(status, responseHeaders);
462
- upstreamRes.pipe(res);
463
- upstreamRes.once('end', () => finish(status, buyerRequestId));
464
- });
465
- upstream.on('error', (error) => {
466
- // Destroying the buyer request for a client that left fails it too; that is the client's cancel, not a buyer outage.
467
- if (clientClosed) {
468
- this._log(`gateway client closed before the buyer answered: key=${key.id}`);
469
- gatewayError = { code: 'client_closed_request', message: 'Client closed the request before the buyer answered' };
470
- finish(499, null);
462
+ let upstream;
463
+ // Set while the request waits for a restarting buyer.
464
+ let retryTimer = null;
465
+ let refusedSince = null;
466
+ const send = () => {
467
+ retryTimer = null;
468
+ upstream = http.request({
469
+ hostname: '127.0.0.1',
470
+ port: buyerPort,
471
+ method,
472
+ path: request.buyerPath,
473
+ headers,
474
+ }, (upstreamRes) => {
475
+ const status = upstreamRes.statusCode ?? 502;
476
+ const buyerRequestId = firstHeader(upstreamRes.headers['x-antseed-request-id']) || null;
477
+ sellerPeerId = firstHeader(upstreamRes.headers['x-antseed-peer-id']).slice(0, 200) || null;
478
+ reportedLatency = latencyHeader(firstHeader(upstreamRes.headers['x-antseed-latency-ms']));
479
+ firstTokenMs = status < 400 ? latencyHeader(firstHeader(upstreamRes.headers['x-antseed-first-token-ms'])) : null;
480
+ respondedAt = Date.now();
481
+ const contentType = firstHeader(upstreamRes.headers['content-type']).toLowerCase();
482
+ // A video is priced per second, not per token: zero token prices do not make it free.
483
+ servedFree = !request.video && freeSellerPricing(upstreamRes.headers);
484
+ if (request.video?.action === 'create' && status >= 200 && status < 300)
485
+ videoCreateChunks = collectPrefix(upstreamRes, MAX_ERROR_BODY_BYTES);
486
+ videoDelivered = request.video?.action === 'retrieve' && status === 200 && contentType.startsWith('video/');
487
+ if (observability.logContent)
488
+ responseChunks = collectPrefix(upstreamRes, MAX_LOGGED_CONTENT_BYTES);
489
+ if (status >= 400)
490
+ errorChunks = collectPrefix(upstreamRes, MAX_ERROR_BODY_BYTES);
491
+ // A delivered video is an MP4 stream with no usage to read.
492
+ else if (request.model !== null && !contentType.startsWith('video/'))
493
+ usageReader = readUsage(upstreamRes, (message) => this._log(message));
494
+ const responseHeaders = {};
495
+ for (const [name, value] of Object.entries(upstreamRes.headers)) {
496
+ if (!HOP_BY_HOP.has(name.toLowerCase()) && value !== undefined)
497
+ responseHeaders[name] = value;
498
+ }
499
+ responseHeaders.connection = 'close';
500
+ upstreamRes.once('error', () => finish(status, buyerRequestId));
501
+ res.once('close', () => finish(status, buyerRequestId));
502
+ const modelListPolicy = request.modelListPolicy;
503
+ if (modelListPolicy && status === 200) {
504
+ const chunks = [];
505
+ upstreamRes.on('data', (chunk) => chunks.push(chunk));
506
+ upstreamRes.once('end', () => {
507
+ const listing = filterModelList(Buffer.concat(chunks), modelListPolicy);
508
+ res.writeHead(status, { ...responseHeaders, 'content-length': String(listing.length) });
509
+ res.end(listing);
510
+ finish(status, buyerRequestId);
511
+ });
512
+ return;
513
+ }
514
+ res.writeHead(status, responseHeaders);
515
+ upstreamRes.pipe(res);
516
+ upstreamRes.once('end', () => finish(status, buyerRequestId));
517
+ });
518
+ upstream.on('error', (error) => {
519
+ // Destroying the buyer request for a client that left fails it too; that is the client's cancel, not a buyer outage.
520
+ if (clientClosed) {
521
+ closedByClient();
522
+ return;
523
+ }
524
+ // Refused: the buyer never saw the request and is restarting, so it is safe to send again.
525
+ const refused = error.code === 'ECONNREFUSED';
526
+ if (refused) {
527
+ if (refusedSince === null) {
528
+ refusedSince = Date.now();
529
+ this._log(`gateway holding request until the buyer is back: key=${key.id}`);
530
+ }
531
+ if (this._holdForBuyer(refusedSince)) {
532
+ retryTimer = setTimeout(send, BUYER_RETRY_INTERVAL_MS);
533
+ return;
534
+ }
535
+ }
536
+ this._log(`gateway upstream error: ${error.message}`);
537
+ gatewayError = { code: 'buyer_unavailable', message: 'Antseed buyer proxy is unavailable' };
538
+ finish(502, null);
539
+ // Never accepted, so never signed for: no spend can follow.
540
+ if (refused)
541
+ this._options.accounting.release(tag);
542
+ if (!res.headersSent) {
543
+ sendError(res, 502, 'api_error', 'buyer_unavailable', 'Antseed buyer proxy is unavailable');
544
+ }
545
+ else {
546
+ res.destroy();
547
+ }
548
+ });
549
+ upstream.end(body);
550
+ };
551
+ const closedByClient = () => {
552
+ // stop() closes what is left after its drain; that is not the client's cancel.
553
+ if (this._server === null) {
554
+ this._log(`gateway stopped before the buyer answered: key=${key.id}`);
555
+ gatewayError = { code: 'gateway_stopping', message: 'The gateway stopped before the buyer answered' };
556
+ finish(503, null);
471
557
  return;
472
558
  }
473
- this._log(`gateway upstream error: ${error.message}`);
474
- gatewayError = { code: 'buyer_unavailable', message: 'Antseed buyer proxy is unavailable' };
475
- finish(502, null);
476
- if (!res.headersSent) {
477
- sendError(res, 502, 'api_error', 'buyer_unavailable', 'Antseed buyer proxy is unavailable');
478
- }
479
- else {
480
- res.destroy();
481
- }
482
- });
559
+ this._log(`gateway client closed before the buyer answered: key=${key.id}`);
560
+ gatewayError = { code: 'client_closed_request', message: 'Client closed the request before the buyer answered' };
561
+ finish(499, null);
562
+ };
483
563
  // A client that disconnects mid-stream should stop the paid request too.
484
564
  res.once('close', () => {
485
565
  if (res.writableFinished)
486
566
  return;
487
567
  clientClosed = true;
488
- upstream.destroy();
568
+ if (retryTimer) {
569
+ // Waiting for the buyer, which never saw this request.
570
+ clearTimeout(retryTimer);
571
+ retryTimer = null;
572
+ closedByClient();
573
+ this._options.accounting.release(tag);
574
+ }
575
+ else {
576
+ upstream.destroy();
577
+ }
489
578
  });
490
579
  sentToBuyer = true;
491
- upstream.end(body);
580
+ send();
492
581
  }
493
582
  catch (error) {
494
583
  this._log(`gateway error after admission: ${errorMessage(error)}`);
@@ -740,9 +829,9 @@ async function readBody(req) {
740
829
  function sendBodyTooLarge(res) {
741
830
  sendError(res, 413, 'invalid_request_error', 'request_too_large', `Request bodies are limited to ${MAX_BODY_BYTES / 1024 / 1024} MiB`);
742
831
  }
743
- /** A JSON object body, or null (empty, too large to inspect, not JSON, not an object). */
832
+ /** A JSON object body, or null (empty, not JSON, not an object). */
744
833
  function parseJsonBody(body, contentType) {
745
- if (body.length === 0 || body.length > MAX_MODEL_SNIFF_BYTES)
834
+ if (body.length === 0)
746
835
  return null;
747
836
  if (contentType && !contentType.includes('json'))
748
837
  return null;