@worldlabsai/client 0.3.0 → 0.4.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 (39) hide show
  1. package/README.md +18 -8
  2. package/dist/core/assets.d.ts +4 -0
  3. package/dist/core/assets.d.ts.map +1 -1
  4. package/dist/core/index.d.ts +1 -0
  5. package/dist/core/index.d.ts.map +1 -1
  6. package/dist/core/index.js +1 -0
  7. package/dist/core/index.js.map +1 -1
  8. package/dist/core/network-error.d.ts +6 -0
  9. package/dist/core/network-error.d.ts.map +1 -0
  10. package/dist/core/network-error.js +8 -0
  11. package/dist/core/network-error.js.map +1 -0
  12. package/dist/core/operations.d.ts +3 -0
  13. package/dist/core/operations.d.ts.map +1 -1
  14. package/dist/core/operations.js +5 -0
  15. package/dist/core/operations.js.map +1 -1
  16. package/dist/core/tasks.d.ts +6 -6
  17. package/dist/core/tasks.d.ts.map +1 -1
  18. package/dist/core/tasks.js +5 -5
  19. package/dist/core/tasks.js.map +1 -1
  20. package/dist/core/transport.d.ts +1 -1
  21. package/dist/core/transport.d.ts.map +1 -1
  22. package/dist/core/transport.js +44 -21
  23. package/dist/core/transport.js.map +1 -1
  24. package/dist/generated/developer-api.gen.d.ts +76 -47
  25. package/dist/generated/developer-api.gen.d.ts.map +1 -1
  26. package/dist/generated/tasks.gen.d.ts +6 -6
  27. package/dist/generated/tasks.gen.d.ts.map +1 -1
  28. package/dist/index.d.ts +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/package.json +12 -11
  33. package/src/core/index.ts +1 -0
  34. package/src/core/network-error.ts +8 -0
  35. package/src/core/operations.ts +6 -0
  36. package/src/core/tasks.ts +7 -7
  37. package/src/core/transport.ts +61 -24
  38. package/src/generated/developer-api.gen.ts +76 -47
  39. package/src/index.ts +1 -0
package/README.md CHANGED
@@ -14,6 +14,9 @@ Install with `npm install @worldlabsai/client`.
14
14
  Methods marked `@beta` require beta access for your World Labs account.
15
15
  Use a World Labs Developer API key to authenticate API requests.
16
16
 
17
+ Before choosing model inputs or combining tasks, read
18
+ [How To Use Atlas](https://marble5.worldlabs.ai/docs/how-to-use-atlas).
19
+
17
20
  ## Usage
18
21
 
19
22
  The client provides `assets` for uploads, `tasks` for submissions, and
@@ -59,24 +62,31 @@ A finished task can still have `result.error`; check that field before using
59
62
  `result.response`, as in the example above.
60
63
 
61
64
  HTTP failures reject with `ApiError`. Its `response.status` and `body` provide
62
- the status code and error details. Network failures and aborts reject with the
63
- underlying error.
65
+ the status code and error details. Network failures from JSON API requests reject
66
+ with `NetworkError`, with the underlying error in `cause`. Aborts reject with the
67
+ signal's reason.
64
68
 
65
69
  Aborting stops the local request or polling; it does not cancel the server-side
66
70
  task. Keep `operation.id` to check its status later with `operations.get(id)`.
67
71
  Polling has no default overall timeout. `pollIntervalMs` sets the pause between
68
72
  incomplete polls and defaults to 1,000 milliseconds.
69
73
 
70
- `operations.wait` retries HTTP 502, 503, and 504 polling failures up to three
71
- times in a row, with `pollIntervalMs` between attempts. A successful poll resets
72
- the retry count. Other failures, including HTTP 429 rate limits, reject without
73
- retrying.
74
+ With `{ retryNetworkErrors: true }`, `operations.wait` keeps polling the same
75
+ operation after network failures until it completes or the caller's signal
76
+ aborts, including a signal with a timeout. Network failures reject by default.
77
+ It retries HTTP 502, 503, and 504 polling failures up to three times in a row,
78
+ with `pollIntervalMs` between attempts. A successful poll resets the retry count.
79
+ Other failures, including authentication and HTTP 429 rate limits, reject without
80
+ retrying. Network retries also use `pollIntervalMs` between attempts.
74
81
 
75
82
  Task submissions retry network failures and HTTP 429, 502, 503, and 504 up to
76
83
  three times. Every attempt sends the same idempotency key and body. Retries use
77
84
  exponential backoff with jitter and wait at least as long as `Retry-After` when
78
- the server supplies it. Aborting the submission also stops retries. Validation
79
- and authentication failures are not retried.
85
+ the server supplies it. A response naming a wait longer than ten seconds, such
86
+ as a concurrency cap or an hourly quota, rejects at once so you can surface it.
87
+ Aborting the submission also stops retries. Validation and authentication
88
+ failures are not retried. Pass `{ retry: false }` to disable
89
+ submission retries.
80
90
 
81
91
  If you call the task method again yourself, reuse its `idempotencyKey`. Each
82
92
  method call otherwise generates a new key. Passing `{ wait: true }` when
@@ -49,6 +49,7 @@ export declare const createAssets: (transport: Transport, assetsPath: string) =>
49
49
  producedBy?: import("../generated/developer-api.gen.ts").components["schemas"]["ProducedBy"] | null;
50
50
  transient?: boolean;
51
51
  contentPath?: string | null;
52
+ url?: string | null;
52
53
  }>;
53
54
  /** Create an asset record. Use `upload` to create and upload a single file in one call. */
54
55
  create: (asset: AssetCreate, options?: Pick<RequestInit, "signal">) => Promise<{
@@ -69,6 +70,7 @@ export declare const createAssets: (transport: Transport, assetsPath: string) =>
69
70
  producedBy?: import("../generated/developer-api.gen.ts").components["schemas"]["ProducedBy"] | null;
70
71
  transient?: boolean;
71
72
  contentPath?: string | null;
73
+ url?: string | null;
72
74
  uploads?: import("../generated/developer-api.gen.ts").components["schemas"]["UploadGrant"][];
73
75
  }>;
74
76
  /**
@@ -106,6 +108,7 @@ export declare const createAssets: (transport: Transport, assetsPath: string) =>
106
108
  producedBy?: import("../generated/developer-api.gen.ts").components["schemas"]["ProducedBy"] | null;
107
109
  transient?: boolean;
108
110
  contentPath?: string | null;
111
+ url?: string | null;
109
112
  }>;
110
113
  /** Return one page of assets. Pass the response's `nextPageToken` to retrieve the next page. */
111
114
  list: ({ pageSize, pageToken, state, ...options }?: ListAssetsOptions) => Promise<{
@@ -140,6 +143,7 @@ export declare const createAssets: (transport: Transport, assetsPath: string) =>
140
143
  producedBy?: import("../generated/developer-api.gen.ts").components["schemas"]["ProducedBy"] | null;
141
144
  transient?: boolean;
142
145
  contentPath?: string | null;
146
+ url?: string | null;
143
147
  }>;
144
148
  };
145
149
  //# sourceMappingURL=assets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/core/assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,qBAAqB,EAKrB,SAAS,EACV,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,0CAA0C;AAC1C,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IAChE,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,+DAA+D;AAC/D,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IACpE,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+DAA+D;AAC/D,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,KAAG,MAAkB,CAAC;AAE1D,6DAA6D;AAC7D,eAAO,MAAM,QAAQ,GAAI,OAAO,KAAK,KAAG,SAA0C,CAAC;AAWnF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,WAAW,SAAS,EAAE,YAAY,MAAM;IAuBjE;;;;OAIG;yBAhBC,MAAM,SACJ,qBAAqB,YAClB,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;;;;gBAoG+uJ,iEAAsB;;;;;;;gBAA2qC,iEAAsB;;;;qBAAkV,iEAAsB;;;;IAnFl1M,2FAA2F;oBACrE,WAAW,YAAW,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;;;;gBAkF666C,iEAAsB;;;;;;;gBAA2qC,iEAAsB;;;;qBAAkV,iEAAsB;;;kBAA0jC,iEAAsB;;IA/EnogD;;;OAGG;wBACuB,MAAM,YAAW,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;;;;IAOtE;;;OAGG;iBACgB,MAAM,YAAW,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IAI/D;;;OAGG;cACa,MAAM,YAAW,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;;;;gBAwDutJ,iEAAsB;;;;;;;gBAA2qC,iEAAsB;;;;qBAAkV,iEAAsB;;;;IArDl1M,gGAAgG;wDACvC,iBAAiB;iBAoDws9D,iEAAsB;iBAAsS,iEAAsB;;;IA9Cpm+D;;;;;;;;OAQG;mBACkB,IAAI,GAAG,YAAY,qCAAqC,aAAa;;;;gBAqCyrJ,iEAAsB;;;;;;;gBAA2qC,iEAAsB;;;;qBAAkV,iEAAsB;;;;CADr1M,CAAC"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/core/assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,qBAAqB,EAKrB,SAAS,EACV,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,0CAA0C;AAC1C,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IAChE,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,+DAA+D;AAC/D,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IACpE,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+DAA+D;AAC/D,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,KAAG,MAAkB,CAAC;AAE1D,6DAA6D;AAC7D,eAAO,MAAM,QAAQ,GAAI,OAAO,KAAK,KAAG,SAA0C,CAAC;AAWnF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,WAAW,SAAS,EAAE,YAAY,MAAM;IAuBjE;;;;OAIG;yBAhBC,MAAM,SACJ,qBAAqB,YAClB,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;;;;gBAoG+uJ,iEAAsB;;;;;;;gBAA2qC,iEAAsB;;;;qBAAkV,iEAAsB;;;;;IAnFl1M,2FAA2F;oBACrE,WAAW,YAAW,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;;;;gBAkFux/C,iEAAsB;;;;;;;gBAA2qC,iEAAsB;;;;qBAAkV,iEAAsB;;;;kBAAq9C,iEAAsB;;IA/Ex4lD;;;OAGG;wBACuB,MAAM,YAAW,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;;;;IAOtE;;;OAGG;iBACgB,MAAM,YAAW,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IAI/D;;;OAGG;cACa,MAAM,YAAW,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;;;;gBAwDutJ,iEAAsB;;;;;;;gBAA2qC,iEAAsB;;;;qBAAkV,iEAAsB;;;;;IArDl1M,gGAAgG;wDACvC,iBAAiB;iBAoDm8jE,iEAAsB;iBAAsS,iEAAsB;;;IA9C/1kE;;;;;;;;OAQG;mBACkB,IAAI,GAAG,YAAY,qCAAqC,aAAa;;;;gBAqCyrJ,iEAAsB;;;;;;;gBAA2qC,iEAAsB;;;;qBAAkV,iEAAsB;;;;;CADr1M,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { assetId, assetRef, createAssets, type ListAssetsOptions, type UploadOptions, } from "./assets.ts";
2
+ export { NetworkError } from "./network-error.ts";
2
3
  export { createOperations, type DoneOperation, type Operation, waitForOperation, type WaitOptions, } from "./operations.ts";
3
4
  export { type SubmitOptions, submitTask } from "./tasks.ts";
4
5
  export { ApiError, type ApiKey, apiKeyAuth, createTransport, type Fetch, type Middleware, type RequestOptions, type Transport, type TransportOptions, withHeader, } from "./transport.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,gBAAgB,EAChB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EACL,QAAQ,EACR,KAAK,MAAM,EACX,UAAU,EACV,eAAe,EACf,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,UAAU,GACX,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,gBAAgB,EAChB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EACL,QAAQ,EACR,KAAK,MAAM,EACX,UAAU,EACV,eAAe,EACf,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,UAAU,GACX,MAAM,gBAAgB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { assetId, assetRef, createAssets, } from "./assets.js";
2
+ export { NetworkError } from "./network-error.js";
2
3
  export { createOperations, waitForOperation, } from "./operations.js";
3
4
  export { submitTask } from "./tasks.js";
4
5
  export { ApiError, apiKeyAuth, createTransport, withHeader, } from "./transport.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,YAAY,GAGb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAGhB,gBAAgB,GAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAsB,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EACL,QAAQ,EAER,UAAU,EACV,eAAe,EAMf,UAAU,GACX,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,YAAY,GAGb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,gBAAgB,EAGhB,gBAAgB,GAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAsB,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EACL,QAAQ,EAER,UAAU,EACV,eAAe,EAMf,UAAU,GACX,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** A network failure while sending a request or reading its response body. */
2
+ export declare class NetworkError extends TypeError {
3
+ name: string;
4
+ constructor(cause: TypeError);
5
+ }
6
+ //# sourceMappingURL=network-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-error.d.ts","sourceRoot":"","sources":["../../src/core/network-error.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qBAAa,YAAa,SAAQ,SAAS;IAChC,IAAI,SAAkB;gBAEnB,KAAK,EAAE,SAAS;CAG7B"}
@@ -0,0 +1,8 @@
1
+ /** A network failure while sending a request or reading its response body. */
2
+ export class NetworkError extends TypeError {
3
+ name = "NetworkError";
4
+ constructor(cause) {
5
+ super(cause.message, { cause });
6
+ }
7
+ }
8
+ //# sourceMappingURL=network-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-error.js","sourceRoot":"","sources":["../../src/core/network-error.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,OAAO,YAAa,SAAQ,SAAS;IAChC,IAAI,GAAG,cAAc,CAAC;IAE/B,YAAY,KAAgB;QAC1B,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAClC,CAAC;CACF"}
@@ -16,6 +16,8 @@ export type DoneOperation<TResponse> = Operation<TResponse> & {
16
16
  export interface WaitOptions extends Pick<RequestInit, "signal"> {
17
17
  /** Delay after an incomplete poll, in milliseconds. Defaults to 1,000 ms. */
18
18
  pollIntervalMs?: number;
19
+ /** Retry network failures in `operations.wait` until cancellation. Defaults to false. */
20
+ retryNetworkErrors?: boolean;
19
21
  }
20
22
  /**
21
23
  * Poll an operation until it reports `done`.
@@ -40,6 +42,7 @@ export declare const createOperations: (transport: Transport, operationPath: str
40
42
  *
41
43
  * An operation can finish with an API-reported task error; inspect `error` before
42
44
  * reading `response`. Aborting stops local waiting without canceling the task.
45
+ * With `retryNetworkErrors`, network failures resume polling until cancellation.
43
46
  * HTTP 502, 503, and 504 polling failures are retried up to three times in a row;
44
47
  * a successful poll resets the retry count.
45
48
  *
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/core/operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,MAAM,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG;IAC7F,QAAQ,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,wFAAwF;AACxF,MAAM,MAAM,aAAa,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAE7E,uFAAuF;AACvF,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IAC9D,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAU,SAAS,EAC9C,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,KAAK,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAC9E,6BAAuD,WAAgB,KACtE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAWlC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,SAAS,EAAE,eAAe,MAAM;IAYxE,yDAAyD;uBAChC,MAAM,YAAW,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IAGrE;;;;;;;;;;;;OAYG;WACU,SAAS,aAAa,SAAS,CAAC,SAAS,CAAC,YAAY,WAAW;CA8BjF,CAAC"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/core/operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAIpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,MAAM,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG;IAC7F,QAAQ,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,wFAAwF;AACxF,MAAM,MAAM,aAAa,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAE7E,uFAAuF;AACvF,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IAC9D,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yFAAyF;IACzF,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAU,SAAS,EAC9C,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,KAAK,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAC9E,6BAAuD,WAAgB,KACtE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAWlC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,SAAS,EAAE,eAAe,MAAM;IAYxE,yDAAyD;uBAChC,MAAM,YAAW,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IAGrE;;;;;;;;;;;;;OAaG;WACU,SAAS,aAAa,SAAS,CAAC,SAAS,CAAC,YAAY,WAAW;CAgCjF,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { NetworkError } from "./network-error.js";
1
2
  import { sleep } from "./sleep.js";
2
3
  import { ApiError } from "./transport.js";
3
4
  const DEFAULT_POLL_INTERVAL_MS = 1000;
@@ -41,6 +42,7 @@ export const createOperations = (transport, operationPath) => {
41
42
  *
42
43
  * An operation can finish with an API-reported task error; inspect `error` before
43
44
  * reading `response`. Aborting stops local waiting without canceling the task.
45
+ * With `retryNetworkErrors`, network failures resume polling until cancellation.
44
46
  * HTTP 502, 503, and 504 polling failures are retried up to three times in a row;
45
47
  * a successful poll resets the retry count.
46
48
  *
@@ -64,6 +66,9 @@ export const createOperations = (transport, operationPath) => {
64
66
  return current;
65
67
  }
66
68
  catch (error) {
69
+ signal?.throwIfAborted();
70
+ if (options?.retryNetworkErrors && error instanceof NetworkError)
71
+ return operation;
67
72
  // A gateway timeout does not cancel the task. Resume the same read;
68
73
  // the caller's signal still bounds the entire wait, including retries.
69
74
  gatewayErrors += 1;
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/core/operations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAqB1C,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,cAA8E,EAC9E,EAAE,cAAc,GAAG,wBAAwB,EAAE,MAAM,KAAkB,EAAE,EACpC,EAAE;IACrC,yEAAyE;IACzE,SAAS,CAAC;QACR,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACtC,CAAC;QACD,MAAM,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,iCAAiC;AACnC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAoB,EAAE,aAAqB,EAAE,EAAE;IAC9E,MAAM,GAAG,GAAG,KAAK,EACf,WAAmB,EACnB,EAAE,MAAM,EAAE,IAAI,KAAuD,EAAE,EACvE,EAAE,CACF,MAAM,SAAS,CAAC,OAAO,CAAuB,aAAa,EAAE;QAC3D,MAAM,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;QAClC,KAAK,EAAE,EAAE,IAAI,EAAE;QACf,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IAEL,OAAO;QACL,yDAAyD;QACzD,GAAG,EAAE,KAAK,EAAE,WAAmB,EAAE,UAAuC,EAAE,EAAE,EAAE,CAC5E,MAAM,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;QAEjC;;;;;;;;;;;;WAYG;QACH,IAAI,EAAE,KAAK,EAAa,SAA+B,EAAE,OAAqB,EAAE,EAAE;YAChF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;YAClC,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;gBACnB,OAAO,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,IAAa,EAAE,CAAC;YAC/C,CAAC;YACD,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,OAAO,MAAM,gBAAgB,CAAY,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxD,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAY,SAAS,CAAC,EAAE,EAAE;wBACjD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7B,IAAI,EAAE,IAAI;qBACX,CAAC,CAAC;oBACH,aAAa,GAAG,CAAC,CAAC;oBAClB,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,oEAAoE;oBACpE,uEAAuE;oBACvE,aAAa,IAAI,CAAC,CAAC;oBACnB,IACE,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC;wBAC5B,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAChD,aAAa,GAAG,CAAC,EACjB,CAAC;wBACD,MAAM,KAAK,CAAC;oBACd,CAAC;oBACD,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC,EAAE,OAAO,CAAC,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/core/operations.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Transport } from "./transport.ts";
2
- export interface SubmitOptions extends Pick<RequestInit, "signal"> {
1
+ import type { RequestOptions, Transport } from "./transport.ts";
2
+ export interface SubmitOptions extends Pick<RequestOptions, "signal" | "retry"> {
3
3
  /**
4
4
  * Ask the server to wait up to its time limit. The returned operation may still
5
5
  * be running; use `operations.wait` to await completion. Defaults to false.
@@ -13,15 +13,15 @@ export interface SubmitOptions extends Pick<RequestInit, "signal"> {
13
13
  }
14
14
  /**
15
15
  * Submit a task request and return its operation resource.
16
- * Retries network failures and HTTP 429/502/503/504 up to three times with the
17
- * same key and body. Uses jittered exponential backoff and honors Retry-After.
16
+ * By default, retries network failures and HTTP 429/502/503/504 up to three times
17
+ * with the same key and body. Uses jittered backoff and honors Retry-After.
18
18
  *
19
19
  * @param transport - Transport used to send the request.
20
20
  * @param path - Task submission path.
21
21
  * @param body - Task-specific request payload.
22
- * @param options - Server wait, idempotency key, and local cancellation settings.
22
+ * @param options - Server wait, idempotency key, retry, and cancellation settings.
23
23
  * @returns The operation created for the task.
24
24
  * @throws {ApiError} If the API rejects the submission or retries are exhausted.
25
25
  */
26
- export declare const submitTask: <TOperation>(transport: Transport, path: string, body: unknown, { idempotencyKey, signal, wait }?: SubmitOptions) => Promise<TOperation>;
26
+ export declare const submitTask: <TOperation>(transport: Transport, path: string, body: unknown, { idempotencyKey, signal, wait, retry }?: SubmitOptions) => Promise<TOperation>;
27
27
  //# sourceMappingURL=tasks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/core/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IAChE;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,GAAU,UAAU,EACzC,WAAW,SAAS,EACpB,MAAM,MAAM,EACZ,MAAM,OAAO,EACb,mCAAwD,aAAkB,KACzE,OAAO,CAAC,UAAU,CAYpB,CAAC"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/core/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7E;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,GAAU,UAAU,EACzC,WAAW,SAAS,EACpB,MAAM,MAAM,EACZ,MAAM,OAAO,EACb,0CAAsE,aAAkB,KACvF,OAAO,CAAC,UAAU,CAYpB,CAAC"}
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * Submit a task request and return its operation resource.
3
- * Retries network failures and HTTP 429/502/503/504 up to three times with the
4
- * same key and body. Uses jittered exponential backoff and honors Retry-After.
3
+ * By default, retries network failures and HTTP 429/502/503/504 up to three times
4
+ * with the same key and body. Uses jittered backoff and honors Retry-After.
5
5
  *
6
6
  * @param transport - Transport used to send the request.
7
7
  * @param path - Task submission path.
8
8
  * @param body - Task-specific request payload.
9
- * @param options - Server wait, idempotency key, and local cancellation settings.
9
+ * @param options - Server wait, idempotency key, retry, and cancellation settings.
10
10
  * @returns The operation created for the task.
11
11
  * @throws {ApiError} If the API rejects the submission or retries are exhausted.
12
12
  */
13
- export const submitTask = async (transport, path, body, { idempotencyKey = crypto.randomUUID(), signal, wait } = {}) => {
13
+ export const submitTask = async (transport, path, body, { idempotencyKey = crypto.randomUUID(), signal, wait, retry = true } = {}) => {
14
14
  if (idempotencyKey.trim() === "") {
15
15
  throw new Error("Idempotency key must not be empty");
16
16
  }
@@ -19,7 +19,7 @@ export const submitTask = async (transport, path, body, { idempotencyKey = crypt
19
19
  headers: { "Idempotency-Key": idempotencyKey },
20
20
  method: "POST",
21
21
  query: { wait },
22
- retry: true,
22
+ retry,
23
23
  ...(signal ? { signal } : {}),
24
24
  });
25
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/core/tasks.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,SAAoB,EACpB,IAAY,EACZ,IAAa,EACb,EAAE,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,KAAoB,EAAE,EACrD,EAAE;IACvB,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,SAAS,CAAC,OAAO,CAAa,IAAI,EAAE;QAC/C,IAAI;QACJ,OAAO,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,EAAE,IAAI,EAAE;QACf,KAAK,EAAE,IAAI;QACX,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/core/tasks.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,SAAoB,EACpB,IAAY,EACZ,IAAa,EACb,EAAE,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,KAAoB,EAAE,EACnE,EAAE;IACvB,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,SAAS,CAAC,OAAO,CAAa,IAAI,EAAE;QAC/C,IAAI;QACJ,OAAO,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,EAAE,IAAI,EAAE;QACf,KAAK;QACL,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -5,7 +5,7 @@ export type Fetch = (request: Request) => Promise<Response>;
5
5
  * without calling `next`, call `next` more than once for retries, or inspect the response.
6
6
  * Clone requests before sending them if a retry may need to reuse the body.
7
7
  */
8
- export type Middleware = (request: Request, next: Fetch) => Promise<Response>;
8
+ export type Middleware = (request: Request, next: Fetch, options?: Pick<RequestOptions, "retry">) => Promise<Response>;
9
9
  /** Values accepted in a request query. `null` and `undefined` are omitted. */
10
10
  export type QueryValue = string | number | boolean | null | undefined;
11
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/core/transport.ts"],"names":[],"mappings":"AAEA,4FAA4F;AAC5F,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE9E,8EAA8E;AAC9E,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEtE;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;IAC/D,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,sCAAsC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kFAAkF;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,6CAA6C;AAC7C,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;IACtB,yFAAyF;IACzF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,oEAAoE;IACpE,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAC1B,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAgBD,sEAAsE;AACtE,qBAAa,QAAS,SAAQ,KAAK;IACxB,IAAI,SAAc;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBAEX,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO;CAM9C;AA6CD,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,wFAAwF;IACxF,IAAI,EAAE,KAAK,CAAC;IACZ;;;OAGG;IACH,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,SA8E3D,CAAC;AAEF,4FAA4F;AAC5F,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,EAAE,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,OAI1E,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GACpB,QAAQ,MAAM,KAAG,UAKjB,CAAC"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/core/transport.ts"],"names":[],"mappings":"AAGA,4FAA4F;AAC5F,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CACvB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,EACX,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,KACpC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB,8EAA8E;AAC9E,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEtE;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;IAC/D,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,sCAAsC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kFAAkF;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,6CAA6C;AAC7C,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;IACtB,yFAAyF;IACzF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,oEAAoE;IACpE,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAC1B,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AA+BD,sEAAsE;AACtE,qBAAa,QAAS,SAAQ,KAAK;IACxB,IAAI,SAAc;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBAEX,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO;CAM9C;AA2DD,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,wFAAwF;IACxF,IAAI,EAAE,KAAK,CAAC;IACZ;;;OAGG;IACH,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,SAiF3D,CAAC;AAEF,4FAA4F;AAC5F,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,EAAE,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,OAI1E,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GACpB,QAAQ,MAAM,KAAG,UAKjB,CAAC"}
@@ -1,5 +1,15 @@
1
+ import { NetworkError } from "./network-error.js";
1
2
  import { sleep } from "./sleep.js";
2
- /** FastAPI puts its reason under `detail`; operation and storage errors use `message`. */
3
+ /** One FastAPI validation issue, `{ loc: ["body", "frames"], msg: "Field required" }`. */
4
+ const validationIssue = (issue) => {
5
+ const location = typeof issue === "object" && issue !== null ? Reflect.get(issue, "loc") : undefined;
6
+ const message = typeof issue === "object" && issue !== null ? Reflect.get(issue, "msg") : issue;
7
+ return Array.isArray(location) ? `${location.join(".")}: ${String(message)}` : String(message);
8
+ };
9
+ /**
10
+ * FastAPI puts its reason under `detail`, as a list of validation issues for a
11
+ * 422; operation and storage errors use `message`.
12
+ */
3
13
  const errorDetail = (body) => {
4
14
  if (typeof body !== "object" || body === null) {
5
15
  return undefined;
@@ -9,6 +19,9 @@ const errorDetail = (body) => {
9
19
  if (typeof value === "string" && value !== "") {
10
20
  return value;
11
21
  }
22
+ if (Array.isArray(value) && value.length > 0) {
23
+ return value.map((issue) => validationIssue(issue)).join("; ");
24
+ }
12
25
  }
13
26
  return undefined;
14
27
  };
@@ -36,11 +49,11 @@ const fillPath = (path, params) => path.replaceAll(/\{(?<name>\w+)\}/gu, (_, nam
36
49
  }
37
50
  return encodeURIComponent(value);
38
51
  });
39
- const compose = (middleware, fetch) => {
52
+ const compose = (middleware, fetch, options) => {
40
53
  let next = fetch;
41
54
  for (const layer of middleware.toReversed()) {
42
55
  const inner = next;
43
- next = async (request) => await layer(request, inner);
56
+ next = async (request) => await layer(request, inner, options);
44
57
  }
45
58
  return next;
46
59
  };
@@ -57,15 +70,22 @@ const parseBody = async (response) => {
57
70
  }
58
71
  };
59
72
  const RETRYABLE_STATUS_CODES = new Set([429, 502, 503, 504]);
60
- const retryDelay = (error, attempt) => {
61
- const backoff = 1000 * 2 ** attempt * (0.5 + Math.random() / 2);
73
+ /**
74
+ * Longest `Retry-After` a retry waits out. A concurrency cap, an hourly quota,
75
+ * or a closed task names minutes to hours, which the caller has to surface
76
+ * rather than sit through.
77
+ */
78
+ const MAX_RETRY_AFTER_MS = 10_000;
79
+ /** The wait a response names in `Retry-After`, as seconds or an HTTP date. */
80
+ const retryAfterMs = (error) => {
62
81
  const value = error instanceof ApiError ? error.response.headers.get("retry-after")?.trim() : undefined;
63
82
  if (!value) {
64
- return backoff;
83
+ return undefined;
65
84
  }
66
85
  const delay = /^\d+$/u.test(value) ? Number(value) * 1000 : Date.parse(value) - Date.now();
67
- return Math.max(backoff, Number.isFinite(delay) ? delay : 0);
86
+ return Number.isFinite(delay) ? Math.max(0, delay) : undefined;
68
87
  };
88
+ const retryDelay = (error, attempt) => Math.max(1000 * 2 ** attempt * (0.5 + Math.random() / 2), retryAfterMs(error) ?? 0);
69
89
  /**
70
90
  * Create a JSON-over-fetch transport for an API surface.
71
91
  *
@@ -83,7 +103,8 @@ export const createTransport = (options) => {
83
103
  return {
84
104
  fetch,
85
105
  send,
86
- request: async (path, { body, params, query, retry = false, ...init } = {}) => {
106
+ request: async (path, requestOptions = {}) => {
107
+ const { body, params, query, retry = false, ...init } = requestOptions;
87
108
  const url = new URL(baseUrl + fillPath(path, { ...boundParams, ...params }));
88
109
  for (const [key, value] of Object.entries(query ?? {})) {
89
110
  if (value !== undefined && value !== null) {
@@ -101,17 +122,15 @@ export const createTransport = (options) => {
101
122
  });
102
123
  // Provider and middleware TypeErrors must not be mistaken for network failures.
103
124
  let networkError;
104
- const sendRequest = retry
105
- ? compose(options.middleware ?? [], async (attempt) => {
106
- try {
107
- return await fetch(attempt);
108
- }
109
- catch (error) {
110
- networkError = error;
111
- throw error;
112
- }
113
- })
114
- : send;
125
+ const sendRequest = compose(options.middleware ?? [], async (attempt) => {
126
+ try {
127
+ return await fetch(attempt);
128
+ }
129
+ catch (error) {
130
+ networkError = error;
131
+ throw error;
132
+ }
133
+ }, requestOptions);
115
134
  // oxlint-disable no-await-in-loop -- retries are sequential and preserve the original request
116
135
  for (let attempt = 0;; attempt += 1) {
117
136
  request.signal.throwIfAborted();
@@ -137,10 +156,14 @@ export const createTransport = (options) => {
137
156
  }
138
157
  catch (error) {
139
158
  request.signal.throwIfAborted();
159
+ const networkFailure = error instanceof TypeError && error === networkError;
140
160
  const transient = error instanceof ApiError
141
- ? RETRYABLE_STATUS_CODES.has(error.response.status)
142
- : error instanceof TypeError && error === networkError;
161
+ ? RETRYABLE_STATUS_CODES.has(error.response.status) &&
162
+ (retryAfterMs(error) ?? 0) <= MAX_RETRY_AFTER_MS
163
+ : networkFailure;
143
164
  if (!retry || attempt >= 3 || !transient) {
165
+ if (networkFailure)
166
+ throw new NetworkError(error);
144
167
  throw error;
145
168
  }
146
169
  await sleep(retryDelay(error, attempt), request.signal);
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/core/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/core/transport.ts"],"names":[],"mappings":"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"}