@onkernel/sdk 0.7.1 → 0.8.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 (58) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/client.d.mts +4 -4
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +4 -4
  5. package/client.d.ts.map +1 -1
  6. package/client.js +13 -10
  7. package/client.js.map +1 -1
  8. package/client.mjs +13 -10
  9. package/client.mjs.map +1 -1
  10. package/package.json +1 -1
  11. package/resources/browsers/browsers.d.mts +160 -0
  12. package/resources/browsers/browsers.d.mts.map +1 -0
  13. package/resources/browsers/browsers.d.ts +160 -0
  14. package/resources/browsers/browsers.d.ts.map +1 -0
  15. package/resources/browsers/browsers.js +88 -0
  16. package/resources/browsers/browsers.js.map +1 -0
  17. package/resources/browsers/browsers.mjs +83 -0
  18. package/resources/browsers/browsers.mjs.map +1 -0
  19. package/resources/browsers/index.d.mts +3 -0
  20. package/resources/browsers/index.d.mts.map +1 -0
  21. package/resources/browsers/index.d.ts +3 -0
  22. package/resources/browsers/index.d.ts.map +1 -0
  23. package/resources/browsers/index.js +9 -0
  24. package/resources/browsers/index.js.map +1 -0
  25. package/resources/browsers/index.mjs +4 -0
  26. package/resources/browsers/index.mjs.map +1 -0
  27. package/resources/browsers/replays.d.mts +120 -0
  28. package/resources/browsers/replays.d.mts.map +1 -0
  29. package/resources/browsers/replays.d.ts +120 -0
  30. package/resources/browsers/replays.d.ts.map +1 -0
  31. package/resources/browsers/replays.js +72 -0
  32. package/resources/browsers/replays.js.map +1 -0
  33. package/resources/browsers/replays.mjs +68 -0
  34. package/resources/browsers/replays.mjs.map +1 -0
  35. package/resources/browsers.d.mts +1 -185
  36. package/resources/browsers.d.mts.map +1 -1
  37. package/resources/browsers.d.ts +1 -185
  38. package/resources/browsers.d.ts.map +1 -1
  39. package/resources/browsers.js +2 -96
  40. package/resources/browsers.js.map +1 -1
  41. package/resources/browsers.mjs +1 -94
  42. package/resources/browsers.mjs.map +1 -1
  43. package/resources/index.d.mts +1 -1
  44. package/resources/index.d.ts +1 -1
  45. package/resources/index.js +1 -1
  46. package/resources/index.js.map +1 -1
  47. package/resources/index.mjs +1 -1
  48. package/src/client.ts +23 -20
  49. package/src/resources/browsers/browsers.ts +234 -0
  50. package/src/resources/browsers/index.ts +19 -0
  51. package/src/resources/browsers/replays.ts +168 -0
  52. package/src/resources/browsers.ts +1 -251
  53. package/src/resources/index.ts +1 -1
  54. package/src/version.ts +1 -1
  55. package/version.d.mts +1 -1
  56. package/version.d.ts +1 -1
  57. package/version.js +1 -1
  58. package/version.mjs +1 -1
@@ -1,100 +1,6 @@
1
1
  "use strict";
2
2
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.Browsers = void 0;
5
- const resource_1 = require("../core/resource.js");
6
- const headers_1 = require("../internal/headers.js");
7
- const path_1 = require("../internal/utils/path.js");
8
- class Browsers extends resource_1.APIResource {
9
- /**
10
- * Create a new browser session from within an action.
11
- *
12
- * @example
13
- * ```ts
14
- * const browser = await client.browsers.create();
15
- * ```
16
- */
17
- create(body = {}, options) {
18
- return this._client.post('/browsers', { body, ...options });
19
- }
20
- /**
21
- * Get information about a browser session.
22
- *
23
- * @example
24
- * ```ts
25
- * const browser = await client.browsers.retrieve(
26
- * 'htzv5orfit78e1m2biiifpbv',
27
- * );
28
- * ```
29
- */
30
- retrieve(id, options) {
31
- return this._client.get((0, path_1.path) `/browsers/${id}`, options);
32
- }
33
- /**
34
- * List active browser sessions
35
- *
36
- * @example
37
- * ```ts
38
- * const browsers = await client.browsers.list();
39
- * ```
40
- */
41
- list(options) {
42
- return this._client.get('/browsers', options);
43
- }
44
- /**
45
- * Delete a persistent browser session by its persistent_id.
46
- *
47
- * @example
48
- * ```ts
49
- * await client.browsers.delete({
50
- * persistent_id: 'persistent_id',
51
- * });
52
- * ```
53
- */
54
- delete(params, options) {
55
- const { persistent_id } = params;
56
- return this._client.delete('/browsers', {
57
- query: { persistent_id },
58
- ...options,
59
- headers: (0, headers_1.buildHeaders)([{ Accept: '*/*' }, options?.headers]),
60
- });
61
- }
62
- /**
63
- * Delete a browser session by ID
64
- *
65
- * @example
66
- * ```ts
67
- * await client.browsers.deleteByID(
68
- * 'htzv5orfit78e1m2biiifpbv',
69
- * );
70
- * ```
71
- */
72
- deleteByID(id, options) {
73
- return this._client.delete((0, path_1.path) `/browsers/${id}`, {
74
- ...options,
75
- headers: (0, headers_1.buildHeaders)([{ Accept: '*/*' }, options?.headers]),
76
- });
77
- }
78
- /**
79
- * Get browser session replay.
80
- *
81
- * @example
82
- * ```ts
83
- * const response = await client.browsers.retrieveReplay(
84
- * 'htzv5orfit78e1m2biiifpbv',
85
- * );
86
- *
87
- * const content = await response.blob();
88
- * console.log(content);
89
- * ```
90
- */
91
- retrieveReplay(id, options) {
92
- return this._client.get((0, path_1.path) `/browsers/${id}/replay`, {
93
- ...options,
94
- headers: (0, headers_1.buildHeaders)([{ Accept: 'video/mp4' }, options?.headers]),
95
- __binaryResponse: true,
96
- });
97
- }
98
- }
99
- exports.Browsers = Browsers;
4
+ const tslib_1 = require("../internal/tslib.js");
5
+ tslib_1.__exportStar(require("./browsers/index.js"), exports);
100
6
  //# sourceMappingURL=browsers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browsers.js","sourceRoot":"","sources":["../src/resources/browsers.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,kDAA+C;AAG/C,oDAAmD;AAEnD,oDAA8C;AAE9C,MAAa,QAAS,SAAQ,sBAAW;IACvC;;;;;;;OAOG;IACH,MAAM,CACJ,OAA+C,EAAE,EACjD,OAAwB;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAU,EAAE,OAAwB;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,WAAI,EAAA,aAAa,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,OAAwB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,MAA2B,EAAE,OAAwB;QAC1D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;YACtC,KAAK,EAAE,EAAE,aAAa,EAAE;YACxB,GAAG,OAAO;YACV,OAAO,EAAE,IAAA,sBAAY,EAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAU,EAAE,OAAwB;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAA,WAAI,EAAA,aAAa,EAAE,EAAE,EAAE;YAChD,GAAG,OAAO;YACV,OAAO,EAAE,IAAA,sBAAY,EAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAU,EAAE,OAAwB;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,WAAI,EAAA,aAAa,EAAE,SAAS,EAAE;YACpD,GAAG,OAAO;YACV,OAAO,EAAE,IAAA,sBAAY,EAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAClE,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;CACF;AAlGD,4BAkGC"}
1
+ {"version":3,"file":"browsers.js","sourceRoot":"","sources":["../src/resources/browsers.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,8DAAiC"}
@@ -1,96 +1,3 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
- import { APIResource } from "../core/resource.mjs";
3
- import { buildHeaders } from "../internal/headers.mjs";
4
- import { path } from "../internal/utils/path.mjs";
5
- export class Browsers extends APIResource {
6
- /**
7
- * Create a new browser session from within an action.
8
- *
9
- * @example
10
- * ```ts
11
- * const browser = await client.browsers.create();
12
- * ```
13
- */
14
- create(body = {}, options) {
15
- return this._client.post('/browsers', { body, ...options });
16
- }
17
- /**
18
- * Get information about a browser session.
19
- *
20
- * @example
21
- * ```ts
22
- * const browser = await client.browsers.retrieve(
23
- * 'htzv5orfit78e1m2biiifpbv',
24
- * );
25
- * ```
26
- */
27
- retrieve(id, options) {
28
- return this._client.get(path `/browsers/${id}`, options);
29
- }
30
- /**
31
- * List active browser sessions
32
- *
33
- * @example
34
- * ```ts
35
- * const browsers = await client.browsers.list();
36
- * ```
37
- */
38
- list(options) {
39
- return this._client.get('/browsers', options);
40
- }
41
- /**
42
- * Delete a persistent browser session by its persistent_id.
43
- *
44
- * @example
45
- * ```ts
46
- * await client.browsers.delete({
47
- * persistent_id: 'persistent_id',
48
- * });
49
- * ```
50
- */
51
- delete(params, options) {
52
- const { persistent_id } = params;
53
- return this._client.delete('/browsers', {
54
- query: { persistent_id },
55
- ...options,
56
- headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
57
- });
58
- }
59
- /**
60
- * Delete a browser session by ID
61
- *
62
- * @example
63
- * ```ts
64
- * await client.browsers.deleteByID(
65
- * 'htzv5orfit78e1m2biiifpbv',
66
- * );
67
- * ```
68
- */
69
- deleteByID(id, options) {
70
- return this._client.delete(path `/browsers/${id}`, {
71
- ...options,
72
- headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
73
- });
74
- }
75
- /**
76
- * Get browser session replay.
77
- *
78
- * @example
79
- * ```ts
80
- * const response = await client.browsers.retrieveReplay(
81
- * 'htzv5orfit78e1m2biiifpbv',
82
- * );
83
- *
84
- * const content = await response.blob();
85
- * console.log(content);
86
- * ```
87
- */
88
- retrieveReplay(id, options) {
89
- return this._client.get(path `/browsers/${id}/replay`, {
90
- ...options,
91
- headers: buildHeaders([{ Accept: 'video/mp4' }, options?.headers]),
92
- __binaryResponse: true,
93
- });
94
- }
95
- }
2
+ export * from "./browsers/index.mjs";
96
3
  //# sourceMappingURL=browsers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"browsers.mjs","sourceRoot":"","sources":["../src/resources/browsers.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,WAAW,EAAE;OAGf,EAAE,YAAY,EAAE;OAEhB,EAAE,IAAI,EAAE;AAEf,MAAM,OAAO,QAAS,SAAQ,WAAW;IACvC;;;;;;;OAOG;IACH,MAAM,CACJ,OAA+C,EAAE,EACjD,OAAwB;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAU,EAAE,OAAwB;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAA,aAAa,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,OAAwB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,MAA2B,EAAE,OAAwB;QAC1D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;YACtC,KAAK,EAAE,EAAE,aAAa,EAAE;YACxB,GAAG,OAAO;YACV,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAU,EAAE,OAAwB;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAA,aAAa,EAAE,EAAE,EAAE;YAChD,GAAG,OAAO;YACV,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAU,EAAE,OAAwB;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAA,aAAa,EAAE,SAAS,EAAE;YACpD,GAAG,OAAO;YACV,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAClE,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"browsers.mjs","sourceRoot":"","sources":["../src/resources/browsers.ts"],"names":[],"mappings":"AAAA,sFAAsF"}
@@ -1,6 +1,6 @@
1
1
  export * from "./shared.mjs";
2
2
  export { Apps, type AppListResponse, type AppListParams } from "./apps/apps.mjs";
3
- export { Browsers, type BrowserPersistence, type BrowserCreateResponse, type BrowserRetrieveResponse, type BrowserListResponse, type BrowserCreateParams, type BrowserDeleteParams, } from "./browsers.mjs";
3
+ export { Browsers, type BrowserPersistence, type BrowserCreateResponse, type BrowserRetrieveResponse, type BrowserListResponse, type BrowserCreateParams, type BrowserDeleteParams, } from "./browsers/browsers.mjs";
4
4
  export { Deployments, type DeploymentStateEvent, type DeploymentCreateResponse, type DeploymentRetrieveResponse, type DeploymentListResponse, type DeploymentFollowResponse, type DeploymentCreateParams, type DeploymentListParams, type DeploymentFollowParams, } from "./deployments.mjs";
5
5
  export { Invocations, type InvocationStateEvent, type InvocationCreateResponse, type InvocationRetrieveResponse, type InvocationUpdateResponse, type InvocationFollowResponse, type InvocationCreateParams, type InvocationUpdateParams, } from "./invocations.mjs";
6
6
  //# sourceMappingURL=index.d.mts.map
@@ -1,6 +1,6 @@
1
1
  export * from "./shared.js";
2
2
  export { Apps, type AppListResponse, type AppListParams } from "./apps/apps.js";
3
- export { Browsers, type BrowserPersistence, type BrowserCreateResponse, type BrowserRetrieveResponse, type BrowserListResponse, type BrowserCreateParams, type BrowserDeleteParams, } from "./browsers.js";
3
+ export { Browsers, type BrowserPersistence, type BrowserCreateResponse, type BrowserRetrieveResponse, type BrowserListResponse, type BrowserCreateParams, type BrowserDeleteParams, } from "./browsers/browsers.js";
4
4
  export { Deployments, type DeploymentStateEvent, type DeploymentCreateResponse, type DeploymentRetrieveResponse, type DeploymentListResponse, type DeploymentFollowResponse, type DeploymentCreateParams, type DeploymentListParams, type DeploymentFollowParams, } from "./deployments.js";
5
5
  export { Invocations, type InvocationStateEvent, type InvocationCreateResponse, type InvocationRetrieveResponse, type InvocationUpdateResponse, type InvocationFollowResponse, type InvocationCreateParams, type InvocationUpdateParams, } from "./invocations.js";
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -6,7 +6,7 @@ const tslib_1 = require("../internal/tslib.js");
6
6
  tslib_1.__exportStar(require("./shared.js"), exports);
7
7
  var apps_1 = require("./apps/apps.js");
8
8
  Object.defineProperty(exports, "Apps", { enumerable: true, get: function () { return apps_1.Apps; } });
9
- var browsers_1 = require("./browsers.js");
9
+ var browsers_1 = require("./browsers/browsers.js");
10
10
  Object.defineProperty(exports, "Browsers", { enumerable: true, get: function () { return browsers_1.Browsers; } });
11
11
  var deployments_1 = require("./deployments.js");
12
12
  Object.defineProperty(exports, "Deployments", { enumerable: true, get: function () { return deployments_1.Deployments; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;AAEtF,sDAAyB;AACzB,uCAA6E;AAApE,4FAAA,IAAI,OAAA;AACb,0CAQoB;AAPlB,oGAAA,QAAQ,OAAA;AAQV,gDAUuB;AATrB,0GAAA,WAAW,OAAA;AAUb,gDASuB;AARrB,0GAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;AAEtF,sDAAyB;AACzB,uCAA6E;AAApE,4FAAA,IAAI,OAAA;AACb,mDAQ6B;AAP3B,oGAAA,QAAQ,OAAA;AAQV,gDAUuB;AATrB,0GAAA,WAAW,OAAA;AAUb,gDASuB;AARrB,0GAAA,WAAW,OAAA"}
@@ -1,7 +1,7 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
  export * from "./shared.mjs";
3
3
  export { Apps } from "./apps/apps.mjs";
4
- export { Browsers, } from "./browsers.mjs";
4
+ export { Browsers, } from "./browsers/browsers.mjs";
5
5
  export { Deployments, } from "./deployments.mjs";
6
6
  export { Invocations, } from "./invocations.mjs";
7
7
  //# sourceMappingURL=index.mjs.map
package/src/client.ts CHANGED
@@ -16,15 +16,6 @@ import * as Errors from './core/error';
16
16
  import * as Uploads from './core/uploads';
17
17
  import * as API from './resources/index';
18
18
  import { APIPromise } from './core/api-promise';
19
- import {
20
- BrowserCreateParams,
21
- BrowserCreateResponse,
22
- BrowserDeleteParams,
23
- BrowserListResponse,
24
- BrowserPersistence,
25
- BrowserRetrieveResponse,
26
- Browsers,
27
- } from './resources/browsers';
28
19
  import {
29
20
  DeploymentCreateParams,
30
21
  DeploymentCreateResponse,
@@ -48,6 +39,15 @@ import {
48
39
  Invocations,
49
40
  } from './resources/invocations';
50
41
  import { AppListParams, AppListResponse, Apps } from './resources/apps/apps';
42
+ import {
43
+ BrowserCreateParams,
44
+ BrowserCreateResponse,
45
+ BrowserDeleteParams,
46
+ BrowserListResponse,
47
+ BrowserPersistence,
48
+ BrowserRetrieveResponse,
49
+ Browsers,
50
+ } from './resources/browsers/browsers';
51
51
  import { type Fetch } from './internal/builtin-types';
52
52
  import { HeadersLike, NullableHeaders, buildHeaders } from './internal/headers';
53
53
  import { FinalRequestOptions, RequestOptions } from './internal/request-options';
@@ -230,7 +230,7 @@ export class Kernel {
230
230
  * Create a new client instance re-using the same options given to the current client with optional overriding.
231
231
  */
232
232
  withOptions(options: Partial<ClientOptions>): this {
233
- return new (this.constructor as any as new (props: ClientOptions) => typeof this)({
233
+ const client = new (this.constructor as any as new (props: ClientOptions) => typeof this)({
234
234
  ...this._options,
235
235
  environment: options.environment ? options.environment : undefined,
236
236
  baseURL: options.environment ? undefined : this.baseURL,
@@ -243,6 +243,7 @@ export class Kernel {
243
243
  apiKey: this.apiKey,
244
244
  ...options,
245
245
  });
246
+ return client;
246
247
  }
247
248
 
248
249
  /**
@@ -260,7 +261,7 @@ export class Kernel {
260
261
  return;
261
262
  }
262
263
 
263
- protected authHeaders(opts: FinalRequestOptions): NullableHeaders | undefined {
264
+ protected async authHeaders(opts: FinalRequestOptions): Promise<NullableHeaders | undefined> {
264
265
  return buildHeaders([{ Authorization: `Bearer ${this.apiKey}` }]);
265
266
  }
266
267
 
@@ -392,7 +393,9 @@ export class Kernel {
392
393
 
393
394
  await this.prepareOptions(options);
394
395
 
395
- const { req, url, timeout } = this.buildRequest(options, { retryCount: maxRetries - retriesRemaining });
396
+ const { req, url, timeout } = await this.buildRequest(options, {
397
+ retryCount: maxRetries - retriesRemaining,
398
+ });
396
399
 
397
400
  await this.prepareRequest(req, { url, options });
398
401
 
@@ -470,7 +473,7 @@ export class Kernel {
470
473
  } with status ${response.status} in ${headersTime - startTime}ms`;
471
474
 
472
475
  if (!response.ok) {
473
- const shouldRetry = this.shouldRetry(response);
476
+ const shouldRetry = await this.shouldRetry(response);
474
477
  if (retriesRemaining && shouldRetry) {
475
478
  const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;
476
479
 
@@ -569,7 +572,7 @@ export class Kernel {
569
572
  }
570
573
  }
571
574
 
572
- private shouldRetry(response: Response): boolean {
575
+ private async shouldRetry(response: Response): Promise<boolean> {
573
576
  // Note this is not a standard header.
574
577
  const shouldRetryHeader = response.headers.get('x-should-retry');
575
578
 
@@ -646,10 +649,10 @@ export class Kernel {
646
649
  return sleepSeconds * jitter * 1000;
647
650
  }
648
651
 
649
- buildRequest(
652
+ async buildRequest(
650
653
  inputOptions: FinalRequestOptions,
651
654
  { retryCount = 0 }: { retryCount?: number } = {},
652
- ): { req: FinalizedRequestInit; url: string; timeout: number } {
655
+ ): Promise<{ req: FinalizedRequestInit; url: string; timeout: number }> {
653
656
  const options = { ...inputOptions };
654
657
  const { method, path, query, defaultBaseURL } = options;
655
658
 
@@ -657,7 +660,7 @@ export class Kernel {
657
660
  if ('timeout' in options) validatePositiveInteger('timeout', options.timeout);
658
661
  options.timeout = options.timeout ?? this.timeout;
659
662
  const { bodyHeaders, body } = this.buildBody({ options });
660
- const reqHeaders = this.buildHeaders({ options: inputOptions, method, bodyHeaders, retryCount });
663
+ const reqHeaders = await this.buildHeaders({ options: inputOptions, method, bodyHeaders, retryCount });
661
664
 
662
665
  const req: FinalizedRequestInit = {
663
666
  method,
@@ -673,7 +676,7 @@ export class Kernel {
673
676
  return { req, url, timeout: options.timeout };
674
677
  }
675
678
 
676
- private buildHeaders({
679
+ private async buildHeaders({
677
680
  options,
678
681
  method,
679
682
  bodyHeaders,
@@ -683,7 +686,7 @@ export class Kernel {
683
686
  method: HTTPMethod;
684
687
  bodyHeaders: HeadersLike;
685
688
  retryCount: number;
686
- }): Headers {
689
+ }): Promise<Headers> {
687
690
  let idempotencyHeaders: HeadersLike = {};
688
691
  if (this.idempotencyHeader && method !== 'get') {
689
692
  if (!options.idempotencyKey) options.idempotencyKey = this.defaultIdempotencyKey();
@@ -699,7 +702,7 @@ export class Kernel {
699
702
  ...(options.timeout ? { 'X-Stainless-Timeout': String(Math.trunc(options.timeout / 1000)) } : {}),
700
703
  ...getPlatformHeaders(),
701
704
  },
702
- this.authHeaders(options),
705
+ await this.authHeaders(options),
703
706
  this._options.defaultHeaders,
704
707
  bodyHeaders,
705
708
  options.headers,
@@ -0,0 +1,234 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../../core/resource';
4
+ import * as BrowsersAPI from './browsers';
5
+ import * as ReplaysAPI from './replays';
6
+ import {
7
+ ReplayDownloadParams,
8
+ ReplayListResponse,
9
+ ReplayStartParams,
10
+ ReplayStartResponse,
11
+ ReplayStopParams,
12
+ Replays,
13
+ } from './replays';
14
+ import { APIPromise } from '../../core/api-promise';
15
+ import { buildHeaders } from '../../internal/headers';
16
+ import { RequestOptions } from '../../internal/request-options';
17
+ import { path } from '../../internal/utils/path';
18
+
19
+ export class Browsers extends APIResource {
20
+ replays: ReplaysAPI.Replays = new ReplaysAPI.Replays(this._client);
21
+
22
+ /**
23
+ * Create a new browser session from within an action.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * const browser = await client.browsers.create();
28
+ * ```
29
+ */
30
+ create(
31
+ body: BrowserCreateParams | null | undefined = {},
32
+ options?: RequestOptions,
33
+ ): APIPromise<BrowserCreateResponse> {
34
+ return this._client.post('/browsers', { body, ...options });
35
+ }
36
+
37
+ /**
38
+ * Get information about a browser session.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * const browser = await client.browsers.retrieve(
43
+ * 'htzv5orfit78e1m2biiifpbv',
44
+ * );
45
+ * ```
46
+ */
47
+ retrieve(id: string, options?: RequestOptions): APIPromise<BrowserRetrieveResponse> {
48
+ return this._client.get(path`/browsers/${id}`, options);
49
+ }
50
+
51
+ /**
52
+ * List active browser sessions
53
+ *
54
+ * @example
55
+ * ```ts
56
+ * const browsers = await client.browsers.list();
57
+ * ```
58
+ */
59
+ list(options?: RequestOptions): APIPromise<BrowserListResponse> {
60
+ return this._client.get('/browsers', options);
61
+ }
62
+
63
+ /**
64
+ * Delete a persistent browser session by its persistent_id.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * await client.browsers.delete({
69
+ * persistent_id: 'persistent_id',
70
+ * });
71
+ * ```
72
+ */
73
+ delete(params: BrowserDeleteParams, options?: RequestOptions): APIPromise<void> {
74
+ const { persistent_id } = params;
75
+ return this._client.delete('/browsers', {
76
+ query: { persistent_id },
77
+ ...options,
78
+ headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
79
+ });
80
+ }
81
+
82
+ /**
83
+ * Delete a browser session by ID
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * await client.browsers.deleteByID(
88
+ * 'htzv5orfit78e1m2biiifpbv',
89
+ * );
90
+ * ```
91
+ */
92
+ deleteByID(id: string, options?: RequestOptions): APIPromise<void> {
93
+ return this._client.delete(path`/browsers/${id}`, {
94
+ ...options,
95
+ headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
96
+ });
97
+ }
98
+ }
99
+
100
+ /**
101
+ * Optional persistence configuration for the browser session.
102
+ */
103
+ export interface BrowserPersistence {
104
+ /**
105
+ * Unique identifier for the persistent browser session.
106
+ */
107
+ id: string;
108
+ }
109
+
110
+ export interface BrowserCreateResponse {
111
+ /**
112
+ * Websocket URL for Chrome DevTools Protocol connections to the browser session
113
+ */
114
+ cdp_ws_url: string;
115
+
116
+ /**
117
+ * Unique identifier for the browser session
118
+ */
119
+ session_id: string;
120
+
121
+ /**
122
+ * Remote URL for live viewing the browser session. Only available for non-headless
123
+ * browsers.
124
+ */
125
+ browser_live_view_url?: string;
126
+
127
+ /**
128
+ * Optional persistence configuration for the browser session.
129
+ */
130
+ persistence?: BrowserPersistence;
131
+ }
132
+
133
+ export interface BrowserRetrieveResponse {
134
+ /**
135
+ * Websocket URL for Chrome DevTools Protocol connections to the browser session
136
+ */
137
+ cdp_ws_url: string;
138
+
139
+ /**
140
+ * Unique identifier for the browser session
141
+ */
142
+ session_id: string;
143
+
144
+ /**
145
+ * Remote URL for live viewing the browser session. Only available for non-headless
146
+ * browsers.
147
+ */
148
+ browser_live_view_url?: string;
149
+
150
+ /**
151
+ * Optional persistence configuration for the browser session.
152
+ */
153
+ persistence?: BrowserPersistence;
154
+ }
155
+
156
+ export type BrowserListResponse = Array<BrowserListResponse.BrowserListResponseItem>;
157
+
158
+ export namespace BrowserListResponse {
159
+ export interface BrowserListResponseItem {
160
+ /**
161
+ * Websocket URL for Chrome DevTools Protocol connections to the browser session
162
+ */
163
+ cdp_ws_url: string;
164
+
165
+ /**
166
+ * Unique identifier for the browser session
167
+ */
168
+ session_id: string;
169
+
170
+ /**
171
+ * Remote URL for live viewing the browser session. Only available for non-headless
172
+ * browsers.
173
+ */
174
+ browser_live_view_url?: string;
175
+
176
+ /**
177
+ * Optional persistence configuration for the browser session.
178
+ */
179
+ persistence?: BrowsersAPI.BrowserPersistence;
180
+ }
181
+ }
182
+
183
+ export interface BrowserCreateParams {
184
+ /**
185
+ * If true, launches the browser using a headless image (no VNC/GUI). Defaults to
186
+ * false.
187
+ */
188
+ headless?: boolean;
189
+
190
+ /**
191
+ * action invocation ID
192
+ */
193
+ invocation_id?: string;
194
+
195
+ /**
196
+ * Optional persistence configuration for the browser session.
197
+ */
198
+ persistence?: BrowserPersistence;
199
+
200
+ /**
201
+ * If true, launches the browser in stealth mode to reduce detection by anti-bot
202
+ * mechanisms.
203
+ */
204
+ stealth?: boolean;
205
+ }
206
+
207
+ export interface BrowserDeleteParams {
208
+ /**
209
+ * Persistent browser identifier
210
+ */
211
+ persistent_id: string;
212
+ }
213
+
214
+ Browsers.Replays = Replays;
215
+
216
+ export declare namespace Browsers {
217
+ export {
218
+ type BrowserPersistence as BrowserPersistence,
219
+ type BrowserCreateResponse as BrowserCreateResponse,
220
+ type BrowserRetrieveResponse as BrowserRetrieveResponse,
221
+ type BrowserListResponse as BrowserListResponse,
222
+ type BrowserCreateParams as BrowserCreateParams,
223
+ type BrowserDeleteParams as BrowserDeleteParams,
224
+ };
225
+
226
+ export {
227
+ Replays as Replays,
228
+ type ReplayListResponse as ReplayListResponse,
229
+ type ReplayStartResponse as ReplayStartResponse,
230
+ type ReplayDownloadParams as ReplayDownloadParams,
231
+ type ReplayStartParams as ReplayStartParams,
232
+ type ReplayStopParams as ReplayStopParams,
233
+ };
234
+ }
@@ -0,0 +1,19 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ export {
4
+ Browsers,
5
+ type BrowserPersistence,
6
+ type BrowserCreateResponse,
7
+ type BrowserRetrieveResponse,
8
+ type BrowserListResponse,
9
+ type BrowserCreateParams,
10
+ type BrowserDeleteParams,
11
+ } from './browsers';
12
+ export {
13
+ Replays,
14
+ type ReplayListResponse,
15
+ type ReplayStartResponse,
16
+ type ReplayDownloadParams,
17
+ type ReplayStartParams,
18
+ type ReplayStopParams,
19
+ } from './replays';