@boatdev/sdk 1.4.0 → 1.5.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 (43) hide show
  1. package/.openapi-generator/FILES +2 -0
  2. package/dist/apis/BoatApi.d.ts +22 -0
  3. package/dist/apis/BoatApi.js +51 -0
  4. package/dist/esm/apis/BoatApi.d.ts +22 -0
  5. package/dist/esm/apis/BoatApi.js +51 -0
  6. package/dist/esm/models/PromptRequest.d.ts +6 -0
  7. package/dist/esm/models/PromptRequest.js +2 -0
  8. package/dist/esm/models/PromptResponse.d.ts +6 -0
  9. package/dist/esm/models/PromptResponse.js +2 -0
  10. package/dist/esm/models/PromptRun.d.ts +6 -0
  11. package/dist/esm/models/PromptRun.js +2 -0
  12. package/dist/esm/models/Sandbox.d.ts +39 -0
  13. package/dist/esm/models/Sandbox.js +18 -0
  14. package/dist/esm/models/Share200Response.d.ts +45 -0
  15. package/dist/esm/models/Share200Response.js +46 -0
  16. package/dist/esm/models/index.d.ts +1 -0
  17. package/dist/esm/models/index.js +1 -0
  18. package/dist/models/PromptRequest.d.ts +6 -0
  19. package/dist/models/PromptRequest.js +2 -0
  20. package/dist/models/PromptResponse.d.ts +6 -0
  21. package/dist/models/PromptResponse.js +2 -0
  22. package/dist/models/PromptRun.d.ts +6 -0
  23. package/dist/models/PromptRun.js +2 -0
  24. package/dist/models/Sandbox.d.ts +39 -0
  25. package/dist/models/Sandbox.js +19 -1
  26. package/dist/models/Share200Response.d.ts +45 -0
  27. package/dist/models/Share200Response.js +53 -0
  28. package/dist/models/index.d.ts +1 -0
  29. package/dist/models/index.js +1 -0
  30. package/docs/BoatApi.md +85 -1
  31. package/docs/PromptRequest.md +2 -0
  32. package/docs/PromptResponse.md +2 -0
  33. package/docs/PromptRun.md +2 -0
  34. package/docs/Sandbox.md +10 -0
  35. package/docs/Share200Response.md +36 -0
  36. package/package.json +1 -1
  37. package/src/apis/BoatApi.ts +76 -0
  38. package/src/models/PromptRequest.ts +8 -0
  39. package/src/models/PromptResponse.ts +8 -0
  40. package/src/models/PromptRun.ts +8 -0
  41. package/src/models/Sandbox.ts +50 -0
  42. package/src/models/Share200Response.ts +89 -0
  43. package/src/models/index.ts +1 -0
@@ -104,6 +104,7 @@ docs/SecretsUpdateRequest.md
104
104
  docs/SelectedRepository.md
105
105
  docs/SetEnvironmentSecretFileRequest.md
106
106
  docs/SetEnvironmentVarRequest.md
107
+ docs/Share200Response.md
107
108
  docs/SnapshotChunk.md
108
109
  docs/SnapshotDownloadResponse.md
109
110
  docs/SnapshotDownloadResponseAllOfInventory.md
@@ -243,6 +244,7 @@ src/models/SecretsUpdateRequest.ts
243
244
  src/models/SelectedRepository.ts
244
245
  src/models/SetEnvironmentSecretFileRequest.ts
245
246
  src/models/SetEnvironmentVarRequest.ts
247
+ src/models/Share200Response.ts
246
248
  src/models/SnapshotChunk.ts
247
249
  src/models/SnapshotDownloadResponse.ts
248
250
  src/models/SnapshotDownloadResponseAllOfInventory.ts
@@ -64,6 +64,7 @@ import { type SecretsResponse } from '../models/SecretsResponse';
64
64
  import { type SecretsUpdateRequest } from '../models/SecretsUpdateRequest';
65
65
  import { type SetEnvironmentSecretFileRequest } from '../models/SetEnvironmentSecretFileRequest';
66
66
  import { type SetEnvironmentVarRequest } from '../models/SetEnvironmentVarRequest';
67
+ import { type Share200Response } from '../models/Share200Response';
67
68
  import { type SnapshotDownloadResponse } from '../models/SnapshotDownloadResponse';
68
69
  import { type SnapshotLatestResponse } from '../models/SnapshotLatestResponse';
69
70
  import { type SnapshotListResponse } from '../models/SnapshotListResponse';
@@ -257,6 +258,8 @@ export interface RotateWebhookSigningSecretRequest {
257
258
  webhookId: string;
258
259
  }
259
260
  export interface SandboxesRequest {
261
+ org?: string;
262
+ xBoatOrg?: string;
260
263
  limit?: number;
261
264
  cursor?: string | null;
262
265
  sort?: SandboxesSortEnum;
@@ -280,6 +283,9 @@ export interface SetEnvironmentVarOperationRequest {
280
283
  key: string;
281
284
  setEnvironmentVarRequest: SetEnvironmentVarRequest;
282
285
  }
286
+ export interface ShareRequest {
287
+ sandboxId: string;
288
+ }
283
289
  export interface SshKeyOperationRequest {
284
290
  sandboxId: string;
285
291
  sshKeyRequest: SshKeyRequest;
@@ -1023,10 +1029,12 @@ export declare class BoatApi extends runtime.BaseAPI {
1023
1029
  */
1024
1030
  sandboxesRequestOpts(requestParameters: SandboxesRequest): Promise<runtime.RequestOpts>;
1025
1031
  /**
1032
+ * Your sandboxes. In an organization\'s scope (the active wallet, `org`, or `X-Boat-Org`) the list also holds every sandbox that organization pays for, whoever created it; `createdBy` and `access` say whose it is and what you may do with it.
1026
1033
  * List sandboxes
1027
1034
  */
1028
1035
  sandboxesRaw(requestParameters: SandboxesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SandboxListResponse>>;
1029
1036
  /**
1037
+ * Your sandboxes. In an organization\'s scope (the active wallet, `org`, or `X-Boat-Org`) the list also holds every sandbox that organization pays for, whoever created it; `createdBy` and `access` say whose it is and what you may do with it.
1030
1038
  * List sandboxes
1031
1039
  */
1032
1040
  sandboxes(requestParameters?: SandboxesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SandboxListResponse>;
@@ -1114,6 +1122,20 @@ export declare class BoatApi extends runtime.BaseAPI {
1114
1122
  * Set one environment variable
1115
1123
  */
1116
1124
  setEnvironmentVar(requestParameters: SetEnvironmentVarOperationRequest | runtime.FlatBody<SetEnvironmentVarOperationRequest, 'setEnvironmentVarRequest'>, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EnvironmentItemChangeResponse>;
1125
+ /**
1126
+ * Creates request options for share without sending the request
1127
+ */
1128
+ shareRequestOpts(requestParameters: ShareRequest): Promise<runtime.RequestOpts>;
1129
+ /**
1130
+ * Let every member of the organization that pays for this sandbox use it. Your personal logins (GitHub token, Claude and Codex logins, environment secrets, the sandbox\'s own CLI key) are never pushed to it again and are wiped off its disk at its next start, so a teammate never acts as you. Files you wrote stay. One-way: the sandbox stays like a `noEnv` sandbox from then on. A running sandbox stays `view` for the organization until you stop and resume it (`restartRequired`). Only the person who created the sandbox can share it, and only a sandbox billed to an organization. Sharing an already shared sandbox is a no-op.
1131
+ * Share sandbox with the organization
1132
+ */
1133
+ shareRaw(requestParameters: ShareRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Share200Response>>;
1134
+ /**
1135
+ * Let every member of the organization that pays for this sandbox use it. Your personal logins (GitHub token, Claude and Codex logins, environment secrets, the sandbox\'s own CLI key) are never pushed to it again and are wiped off its disk at its next start, so a teammate never acts as you. Files you wrote stay. One-way: the sandbox stays like a `noEnv` sandbox from then on. A running sandbox stays `view` for the organization until you stop and resume it (`restartRequired`). Only the person who created the sandbox can share it, and only a sandbox billed to an organization. Sharing an already shared sandbox is a no-op.
1136
+ * Share sandbox with the organization
1137
+ */
1138
+ share(requestParameters: ShareRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Share200Response>;
1117
1139
  /**
1118
1140
  * Creates request options for sshKey without sending the request
1119
1141
  */
@@ -102,6 +102,7 @@ const SecretsResponse_1 = require("../models/SecretsResponse");
102
102
  const SecretsUpdateRequest_1 = require("../models/SecretsUpdateRequest");
103
103
  const SetEnvironmentSecretFileRequest_1 = require("../models/SetEnvironmentSecretFileRequest");
104
104
  const SetEnvironmentVarRequest_1 = require("../models/SetEnvironmentVarRequest");
105
+ const Share200Response_1 = require("../models/Share200Response");
105
106
  const SnapshotDownloadResponse_1 = require("../models/SnapshotDownloadResponse");
106
107
  const SnapshotLatestResponse_1 = require("../models/SnapshotLatestResponse");
107
108
  const SnapshotListResponse_1 = require("../models/SnapshotListResponse");
@@ -2360,6 +2361,9 @@ class BoatApi extends runtime.BaseAPI {
2360
2361
  */
2361
2362
  async sandboxesRequestOpts(requestParameters) {
2362
2363
  const queryParameters = {};
2364
+ if (requestParameters['org'] != null) {
2365
+ queryParameters['org'] = requestParameters['org'];
2366
+ }
2363
2367
  if (requestParameters['limit'] != null) {
2364
2368
  queryParameters['limit'] = requestParameters['limit'];
2365
2369
  }
@@ -2373,6 +2377,9 @@ class BoatApi extends runtime.BaseAPI {
2373
2377
  queryParameters['state'] = requestParameters['state'];
2374
2378
  }
2375
2379
  const headerParameters = {};
2380
+ if (requestParameters['xBoatOrg'] != null) {
2381
+ headerParameters['X-Boat-Org'] = String(requestParameters['xBoatOrg']);
2382
+ }
2376
2383
  if (this.configuration && this.configuration.accessToken) {
2377
2384
  const token = this.configuration.accessToken;
2378
2385
  const tokenString = await token("BoatBearerAuth", []);
@@ -2389,6 +2396,7 @@ class BoatApi extends runtime.BaseAPI {
2389
2396
  };
2390
2397
  }
2391
2398
  /**
2399
+ * Your sandboxes. In an organization\'s scope (the active wallet, `org`, or `X-Boat-Org`) the list also holds every sandbox that organization pays for, whoever created it; `createdBy` and `access` say whose it is and what you may do with it.
2392
2400
  * List sandboxes
2393
2401
  */
2394
2402
  async sandboxesRaw(requestParameters, initOverrides) {
@@ -2397,6 +2405,7 @@ class BoatApi extends runtime.BaseAPI {
2397
2405
  return new runtime.JSONApiResponse(response, (jsonValue) => (0, SandboxListResponse_1.SandboxListResponseFromJSON)(jsonValue));
2398
2406
  }
2399
2407
  /**
2408
+ * Your sandboxes. In an organization\'s scope (the active wallet, `org`, or `X-Boat-Org`) the list also holds every sandbox that organization pays for, whoever created it; `createdBy` and `access` say whose it is and what you may do with it.
2400
2409
  * List sandboxes
2401
2410
  */
2402
2411
  async sandboxes(requestParameters = {}, initOverrides) {
@@ -2673,6 +2682,48 @@ class BoatApi extends runtime.BaseAPI {
2673
2682
  const response = await this.setEnvironmentVarRaw(requestParameters, initOverrides);
2674
2683
  return await response.value();
2675
2684
  }
2685
+ /**
2686
+ * Creates request options for share without sending the request
2687
+ */
2688
+ async shareRequestOpts(requestParameters) {
2689
+ if (requestParameters['sandboxId'] == null) {
2690
+ throw new runtime.RequiredError('sandboxId', 'Required parameter "sandboxId" was null or undefined when calling share().');
2691
+ }
2692
+ const queryParameters = {};
2693
+ const headerParameters = {};
2694
+ if (this.configuration && this.configuration.accessToken) {
2695
+ const token = this.configuration.accessToken;
2696
+ const tokenString = await token("BoatBearerAuth", []);
2697
+ if (tokenString) {
2698
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2699
+ }
2700
+ }
2701
+ let urlPath = `/sandboxes/{sandboxId}/share`;
2702
+ urlPath = urlPath.replace('{sandboxId}', encodeURIComponent(String(requestParameters['sandboxId'])));
2703
+ return {
2704
+ path: urlPath,
2705
+ method: 'POST',
2706
+ headers: headerParameters,
2707
+ query: queryParameters,
2708
+ };
2709
+ }
2710
+ /**
2711
+ * Let every member of the organization that pays for this sandbox use it. Your personal logins (GitHub token, Claude and Codex logins, environment secrets, the sandbox\'s own CLI key) are never pushed to it again and are wiped off its disk at its next start, so a teammate never acts as you. Files you wrote stay. One-way: the sandbox stays like a `noEnv` sandbox from then on. A running sandbox stays `view` for the organization until you stop and resume it (`restartRequired`). Only the person who created the sandbox can share it, and only a sandbox billed to an organization. Sharing an already shared sandbox is a no-op.
2712
+ * Share sandbox with the organization
2713
+ */
2714
+ async shareRaw(requestParameters, initOverrides) {
2715
+ const requestOptions = await this.shareRequestOpts(requestParameters);
2716
+ const response = await this.request(requestOptions, initOverrides);
2717
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, Share200Response_1.Share200ResponseFromJSON)(jsonValue));
2718
+ }
2719
+ /**
2720
+ * Let every member of the organization that pays for this sandbox use it. Your personal logins (GitHub token, Claude and Codex logins, environment secrets, the sandbox\'s own CLI key) are never pushed to it again and are wiped off its disk at its next start, so a teammate never acts as you. Files you wrote stay. One-way: the sandbox stays like a `noEnv` sandbox from then on. A running sandbox stays `view` for the organization until you stop and resume it (`restartRequired`). Only the person who created the sandbox can share it, and only a sandbox billed to an organization. Sharing an already shared sandbox is a no-op.
2721
+ * Share sandbox with the organization
2722
+ */
2723
+ async share(requestParameters, initOverrides) {
2724
+ const response = await this.shareRaw(requestParameters, initOverrides);
2725
+ return await response.value();
2726
+ }
2676
2727
  /**
2677
2728
  * Creates request options for sshKey without sending the request
2678
2729
  */
@@ -64,6 +64,7 @@ import { type SecretsResponse } from '../models/SecretsResponse';
64
64
  import { type SecretsUpdateRequest } from '../models/SecretsUpdateRequest';
65
65
  import { type SetEnvironmentSecretFileRequest } from '../models/SetEnvironmentSecretFileRequest';
66
66
  import { type SetEnvironmentVarRequest } from '../models/SetEnvironmentVarRequest';
67
+ import { type Share200Response } from '../models/Share200Response';
67
68
  import { type SnapshotDownloadResponse } from '../models/SnapshotDownloadResponse';
68
69
  import { type SnapshotLatestResponse } from '../models/SnapshotLatestResponse';
69
70
  import { type SnapshotListResponse } from '../models/SnapshotListResponse';
@@ -257,6 +258,8 @@ export interface RotateWebhookSigningSecretRequest {
257
258
  webhookId: string;
258
259
  }
259
260
  export interface SandboxesRequest {
261
+ org?: string;
262
+ xBoatOrg?: string;
260
263
  limit?: number;
261
264
  cursor?: string | null;
262
265
  sort?: SandboxesSortEnum;
@@ -280,6 +283,9 @@ export interface SetEnvironmentVarOperationRequest {
280
283
  key: string;
281
284
  setEnvironmentVarRequest: SetEnvironmentVarRequest;
282
285
  }
286
+ export interface ShareRequest {
287
+ sandboxId: string;
288
+ }
283
289
  export interface SshKeyOperationRequest {
284
290
  sandboxId: string;
285
291
  sshKeyRequest: SshKeyRequest;
@@ -1023,10 +1029,12 @@ export declare class BoatApi extends runtime.BaseAPI {
1023
1029
  */
1024
1030
  sandboxesRequestOpts(requestParameters: SandboxesRequest): Promise<runtime.RequestOpts>;
1025
1031
  /**
1032
+ * Your sandboxes. In an organization\'s scope (the active wallet, `org`, or `X-Boat-Org`) the list also holds every sandbox that organization pays for, whoever created it; `createdBy` and `access` say whose it is and what you may do with it.
1026
1033
  * List sandboxes
1027
1034
  */
1028
1035
  sandboxesRaw(requestParameters: SandboxesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SandboxListResponse>>;
1029
1036
  /**
1037
+ * Your sandboxes. In an organization\'s scope (the active wallet, `org`, or `X-Boat-Org`) the list also holds every sandbox that organization pays for, whoever created it; `createdBy` and `access` say whose it is and what you may do with it.
1030
1038
  * List sandboxes
1031
1039
  */
1032
1040
  sandboxes(requestParameters?: SandboxesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SandboxListResponse>;
@@ -1114,6 +1122,20 @@ export declare class BoatApi extends runtime.BaseAPI {
1114
1122
  * Set one environment variable
1115
1123
  */
1116
1124
  setEnvironmentVar(requestParameters: SetEnvironmentVarOperationRequest | runtime.FlatBody<SetEnvironmentVarOperationRequest, 'setEnvironmentVarRequest'>, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EnvironmentItemChangeResponse>;
1125
+ /**
1126
+ * Creates request options for share without sending the request
1127
+ */
1128
+ shareRequestOpts(requestParameters: ShareRequest): Promise<runtime.RequestOpts>;
1129
+ /**
1130
+ * Let every member of the organization that pays for this sandbox use it. Your personal logins (GitHub token, Claude and Codex logins, environment secrets, the sandbox\'s own CLI key) are never pushed to it again and are wiped off its disk at its next start, so a teammate never acts as you. Files you wrote stay. One-way: the sandbox stays like a `noEnv` sandbox from then on. A running sandbox stays `view` for the organization until you stop and resume it (`restartRequired`). Only the person who created the sandbox can share it, and only a sandbox billed to an organization. Sharing an already shared sandbox is a no-op.
1131
+ * Share sandbox with the organization
1132
+ */
1133
+ shareRaw(requestParameters: ShareRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Share200Response>>;
1134
+ /**
1135
+ * Let every member of the organization that pays for this sandbox use it. Your personal logins (GitHub token, Claude and Codex logins, environment secrets, the sandbox\'s own CLI key) are never pushed to it again and are wiped off its disk at its next start, so a teammate never acts as you. Files you wrote stay. One-way: the sandbox stays like a `noEnv` sandbox from then on. A running sandbox stays `view` for the organization until you stop and resume it (`restartRequired`). Only the person who created the sandbox can share it, and only a sandbox billed to an organization. Sharing an already shared sandbox is a no-op.
1136
+ * Share sandbox with the organization
1137
+ */
1138
+ share(requestParameters: ShareRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Share200Response>;
1117
1139
  /**
1118
1140
  * Creates request options for sshKey without sending the request
1119
1141
  */
@@ -66,6 +66,7 @@ import { SecretsResponseFromJSON, } from '../models/SecretsResponse';
66
66
  import { SecretsUpdateRequestToJSON, } from '../models/SecretsUpdateRequest';
67
67
  import { SetEnvironmentSecretFileRequestToJSON, } from '../models/SetEnvironmentSecretFileRequest';
68
68
  import { SetEnvironmentVarRequestToJSON, } from '../models/SetEnvironmentVarRequest';
69
+ import { Share200ResponseFromJSON, } from '../models/Share200Response';
69
70
  import { SnapshotDownloadResponseFromJSON, } from '../models/SnapshotDownloadResponse';
70
71
  import { SnapshotLatestResponseFromJSON, } from '../models/SnapshotLatestResponse';
71
72
  import { SnapshotListResponseFromJSON, } from '../models/SnapshotListResponse';
@@ -2324,6 +2325,9 @@ export class BoatApi extends runtime.BaseAPI {
2324
2325
  */
2325
2326
  async sandboxesRequestOpts(requestParameters) {
2326
2327
  const queryParameters = {};
2328
+ if (requestParameters['org'] != null) {
2329
+ queryParameters['org'] = requestParameters['org'];
2330
+ }
2327
2331
  if (requestParameters['limit'] != null) {
2328
2332
  queryParameters['limit'] = requestParameters['limit'];
2329
2333
  }
@@ -2337,6 +2341,9 @@ export class BoatApi extends runtime.BaseAPI {
2337
2341
  queryParameters['state'] = requestParameters['state'];
2338
2342
  }
2339
2343
  const headerParameters = {};
2344
+ if (requestParameters['xBoatOrg'] != null) {
2345
+ headerParameters['X-Boat-Org'] = String(requestParameters['xBoatOrg']);
2346
+ }
2340
2347
  if (this.configuration && this.configuration.accessToken) {
2341
2348
  const token = this.configuration.accessToken;
2342
2349
  const tokenString = await token("BoatBearerAuth", []);
@@ -2353,6 +2360,7 @@ export class BoatApi extends runtime.BaseAPI {
2353
2360
  };
2354
2361
  }
2355
2362
  /**
2363
+ * Your sandboxes. In an organization\'s scope (the active wallet, `org`, or `X-Boat-Org`) the list also holds every sandbox that organization pays for, whoever created it; `createdBy` and `access` say whose it is and what you may do with it.
2356
2364
  * List sandboxes
2357
2365
  */
2358
2366
  async sandboxesRaw(requestParameters, initOverrides) {
@@ -2361,6 +2369,7 @@ export class BoatApi extends runtime.BaseAPI {
2361
2369
  return new runtime.JSONApiResponse(response, (jsonValue) => SandboxListResponseFromJSON(jsonValue));
2362
2370
  }
2363
2371
  /**
2372
+ * Your sandboxes. In an organization\'s scope (the active wallet, `org`, or `X-Boat-Org`) the list also holds every sandbox that organization pays for, whoever created it; `createdBy` and `access` say whose it is and what you may do with it.
2364
2373
  * List sandboxes
2365
2374
  */
2366
2375
  async sandboxes(requestParameters = {}, initOverrides) {
@@ -2637,6 +2646,48 @@ export class BoatApi extends runtime.BaseAPI {
2637
2646
  const response = await this.setEnvironmentVarRaw(requestParameters, initOverrides);
2638
2647
  return await response.value();
2639
2648
  }
2649
+ /**
2650
+ * Creates request options for share without sending the request
2651
+ */
2652
+ async shareRequestOpts(requestParameters) {
2653
+ if (requestParameters['sandboxId'] == null) {
2654
+ throw new runtime.RequiredError('sandboxId', 'Required parameter "sandboxId" was null or undefined when calling share().');
2655
+ }
2656
+ const queryParameters = {};
2657
+ const headerParameters = {};
2658
+ if (this.configuration && this.configuration.accessToken) {
2659
+ const token = this.configuration.accessToken;
2660
+ const tokenString = await token("BoatBearerAuth", []);
2661
+ if (tokenString) {
2662
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2663
+ }
2664
+ }
2665
+ let urlPath = `/sandboxes/{sandboxId}/share`;
2666
+ urlPath = urlPath.replace('{sandboxId}', encodeURIComponent(String(requestParameters['sandboxId'])));
2667
+ return {
2668
+ path: urlPath,
2669
+ method: 'POST',
2670
+ headers: headerParameters,
2671
+ query: queryParameters,
2672
+ };
2673
+ }
2674
+ /**
2675
+ * Let every member of the organization that pays for this sandbox use it. Your personal logins (GitHub token, Claude and Codex logins, environment secrets, the sandbox\'s own CLI key) are never pushed to it again and are wiped off its disk at its next start, so a teammate never acts as you. Files you wrote stay. One-way: the sandbox stays like a `noEnv` sandbox from then on. A running sandbox stays `view` for the organization until you stop and resume it (`restartRequired`). Only the person who created the sandbox can share it, and only a sandbox billed to an organization. Sharing an already shared sandbox is a no-op.
2676
+ * Share sandbox with the organization
2677
+ */
2678
+ async shareRaw(requestParameters, initOverrides) {
2679
+ const requestOptions = await this.shareRequestOpts(requestParameters);
2680
+ const response = await this.request(requestOptions, initOverrides);
2681
+ return new runtime.JSONApiResponse(response, (jsonValue) => Share200ResponseFromJSON(jsonValue));
2682
+ }
2683
+ /**
2684
+ * Let every member of the organization that pays for this sandbox use it. Your personal logins (GitHub token, Claude and Codex logins, environment secrets, the sandbox\'s own CLI key) are never pushed to it again and are wiped off its disk at its next start, so a teammate never acts as you. Files you wrote stay. One-way: the sandbox stays like a `noEnv` sandbox from then on. A running sandbox stays `view` for the organization until you stop and resume it (`restartRequired`). Only the person who created the sandbox can share it, and only a sandbox billed to an organization. Sharing an already shared sandbox is a no-op.
2685
+ * Share sandbox with the organization
2686
+ */
2687
+ async share(requestParameters, initOverrides) {
2688
+ const response = await this.shareRaw(requestParameters, initOverrides);
2689
+ return await response.value();
2690
+ }
2640
2691
  /**
2641
2692
  * Creates request options for sshKey without sending the request
2642
2693
  */
@@ -40,6 +40,12 @@ export interface PromptRequest {
40
40
  * @memberof PromptRequest
41
41
  */
42
42
  reasoningEffort?: string | null;
43
+ /**
44
+ * Optional. `true` runs this prompt in fast mode. The model stays the same and gives output faster. The provider bills fast mode at its higher fast rate. Omit to use the choice saved on the Agents dashboard for that model. `false` forces standard speed. Only models with `fastMode` set to `true` in `GET /provider-models` accept `true`. Other models return 400 `fast_mode_not_supported`.
45
+ * @type {boolean}
46
+ * @memberof PromptRequest
47
+ */
48
+ fast?: boolean | null;
43
49
  /**
44
50
  * Start a NEW conversation on the sandbox (runs in parallel with any existing ones) instead of continuing the most-recently-active one. Mutually exclusive with `conversationId`.
45
51
  * @type {boolean}
@@ -46,6 +46,7 @@ export function PromptRequestFromJSONTyped(json, ignoreDiscriminator) {
46
46
  'provider': json['provider'],
47
47
  'model': json['model'] == null ? undefined : json['model'],
48
48
  'reasoningEffort': json['reasoningEffort'] == null ? undefined : json['reasoningEffort'],
49
+ 'fast': json['fast'] == null ? undefined : json['fast'],
49
50
  '_new': json['new'] == null ? undefined : json['new'],
50
51
  'conversationId': json['conversationId'] == null ? undefined : json['conversationId'],
51
52
  'prompt': json['prompt'],
@@ -62,6 +63,7 @@ export function PromptRequestToJSONTyped(value, ignoreDiscriminator = false) {
62
63
  'provider': value['provider'],
63
64
  'model': value['model'],
64
65
  'reasoningEffort': value['reasoningEffort'],
66
+ 'fast': value['fast'],
65
67
  'new': value['_new'],
66
68
  'conversationId': value['conversationId'],
67
69
  'prompt': value['prompt'],
@@ -76,6 +76,12 @@ export interface PromptResponse {
76
76
  * @memberof PromptResponse
77
77
  */
78
78
  reasoningEffort?: string | null;
79
+ /**
80
+ * The prompt runs in fast mode.
81
+ * @type {boolean}
82
+ * @memberof PromptResponse
83
+ */
84
+ fast?: boolean;
79
85
  }
80
86
  /**
81
87
  * @export
@@ -62,6 +62,7 @@ export function PromptResponseFromJSONTyped(json, ignoreDiscriminator) {
62
62
  'provider': json['provider'],
63
63
  'model': json['model'] == null ? undefined : json['model'],
64
64
  'reasoningEffort': json['reasoningEffort'] == null ? undefined : json['reasoningEffort'],
65
+ 'fast': json['fast'] == null ? undefined : json['fast'],
65
66
  };
66
67
  }
67
68
  export function PromptResponseToJSON(json) {
@@ -82,5 +83,6 @@ export function PromptResponseToJSONTyped(value, ignoreDiscriminator = false) {
82
83
  'provider': value['provider'],
83
84
  'model': value['model'],
84
85
  'reasoningEffort': value['reasoningEffort'],
86
+ 'fast': value['fast'],
85
87
  };
86
88
  }
@@ -63,6 +63,12 @@ export interface PromptRun {
63
63
  * @memberof PromptRun
64
64
  */
65
65
  reasoningEffort?: string | null;
66
+ /**
67
+ * The prompt runs in fast mode. `null` means no speed is set yet. The prompt waits without a speed choice, or it ended without running (`done` is true). The speed is set when the prompt starts, for the model that runs.
68
+ * @type {boolean}
69
+ * @memberof PromptRun
70
+ */
71
+ fast?: boolean | null;
66
72
  /**
67
73
  * The conversation this prompt ran in. A Sandbox runs many conversations in parallel; see [Integrated agents](/integrated-agents).
68
74
  * @type {string}
@@ -54,6 +54,7 @@ export function PromptRunFromJSONTyped(json, ignoreDiscriminator) {
54
54
  'createdAt': json['createdAt'] == null ? undefined : (new Date(json['createdAt'])),
55
55
  'model': json['model'] == null ? undefined : json['model'],
56
56
  'reasoningEffort': json['reasoningEffort'] == null ? undefined : json['reasoningEffort'],
57
+ 'fast': json['fast'] == null ? undefined : json['fast'],
57
58
  'conversationId': json['conversationId'] == null ? undefined : json['conversationId'],
58
59
  };
59
60
  }
@@ -73,6 +74,7 @@ export function PromptRunToJSONTyped(value, ignoreDiscriminator = false) {
73
74
  'createdAt': value['createdAt'] == null ? value['createdAt'] : value['createdAt'].toISOString(),
74
75
  'model': value['model'],
75
76
  'reasoningEffort': value['reasoningEffort'],
77
+ 'fast': value['fast'],
76
78
  'conversationId': value['conversationId'],
77
79
  };
78
80
  }
@@ -166,6 +166,36 @@ export interface Sandbox {
166
166
  * @memberof Sandbox
167
167
  */
168
168
  team?: SandboxTeam;
169
+ /**
170
+ * Display name (or email) of the person who created the sandbox. Organization members see every sandbox the organization pays for, so this says whose it is.
171
+ * @type {string}
172
+ * @memberof Sandbox
173
+ */
174
+ createdBy?: string | null;
175
+ /**
176
+ * Account id of the person who created the sandbox.
177
+ * @type {string}
178
+ * @memberof Sandbox
179
+ */
180
+ createdById?: string | null;
181
+ /**
182
+ * What you may do with this sandbox. `owner`: you created it. `use`: a teammate's organization sandbox that is `noEnv` (created with it, or shared and restarted), so you can open, run commands in, prompt, resume and stop it. `view`: a teammate's organization sandbox that still holds their personal logins, so you can see it and stop it until they share it (`POST /sandboxes/{sandboxId}/share`).
183
+ * @type {SandboxAccessEnum}
184
+ * @memberof Sandbox
185
+ */
186
+ access?: SandboxAccessEnum;
187
+ /**
188
+ * True while the sandbox still holds its creator's personal logins (GitHub token, model logins, secrets). Other members can only see such a sandbox.
189
+ * @type {boolean}
190
+ * @memberof Sandbox
191
+ */
192
+ holdsCreatorLogins?: boolean;
193
+ /**
194
+ * True once the sandbox is shared but not restarted yet. Its creator's logins are wiped at its next start, and the organization can use it from then on.
195
+ * @type {boolean}
196
+ * @memberof Sandbox
197
+ */
198
+ wipePendingUntilRestart?: boolean;
169
199
  /**
170
200
  * The sandbox's stable three-word subdomain slug (e.g. "frazil-pneuma-rallye"), or null before one is assigned.
171
201
  * @type {string}
@@ -251,6 +281,15 @@ export declare const SandboxMachineProviderEnum: {
251
281
  readonly Baremetal: 'baremetal';
252
282
  };
253
283
  export type SandboxMachineProviderEnum = typeof SandboxMachineProviderEnum[keyof typeof SandboxMachineProviderEnum];
284
+ /**
285
+ * @export
286
+ */
287
+ export declare const SandboxAccessEnum: {
288
+ readonly Owner: 'owner';
289
+ readonly Use: 'use';
290
+ readonly View: 'view';
291
+ };
292
+ export type SandboxAccessEnum = typeof SandboxAccessEnum[keyof typeof SandboxAccessEnum];
254
293
  /**
255
294
  * @export
256
295
  */
@@ -50,6 +50,14 @@ export const SandboxMachineProviderEnum = {
50
50
  Hetzner: 'hetzner',
51
51
  Baremetal: 'baremetal'
52
52
  };
53
+ /**
54
+ * @export
55
+ */
56
+ export const SandboxAccessEnum = {
57
+ Owner: 'owner',
58
+ Use: 'use',
59
+ View: 'view'
60
+ };
53
61
  /**
54
62
  * @export
55
63
  */
@@ -118,6 +126,11 @@ export function SandboxFromJSONTyped(json, ignoreDiscriminator) {
118
126
  'snapshotCompletedAt': json['snapshotCompletedAt'] == null ? undefined : (new Date(json['snapshotCompletedAt'])),
119
127
  'snapshotVerifiedAt': json['snapshotVerifiedAt'] == null ? undefined : (new Date(json['snapshotVerifiedAt'])),
120
128
  'team': json['team'] == null ? undefined : SandboxTeamFromJSON(json['team']),
129
+ 'createdBy': json['createdBy'] == null ? undefined : json['createdBy'],
130
+ 'createdById': json['createdById'] == null ? undefined : json['createdById'],
131
+ 'access': json['access'] == null ? undefined : json['access'],
132
+ 'holdsCreatorLogins': json['holdsCreatorLogins'] == null ? undefined : json['holdsCreatorLogins'],
133
+ 'wipePendingUntilRestart': json['wipePendingUntilRestart'] == null ? undefined : json['wipePendingUntilRestart'],
121
134
  'subdomain': json['subdomain'] == null ? undefined : json['subdomain'],
122
135
  'lastSnapshotAttemptAt': json['lastSnapshotAttemptAt'] == null ? undefined : (new Date(json['lastSnapshotAttemptAt'])),
123
136
  'lastSnapshotStatus': json['lastSnapshotStatus'] == null ? undefined : json['lastSnapshotStatus'],
@@ -160,6 +173,11 @@ export function SandboxToJSONTyped(value, ignoreDiscriminator = false) {
160
173
  'snapshotCompletedAt': value['snapshotCompletedAt'] == null ? value['snapshotCompletedAt'] : value['snapshotCompletedAt'].toISOString(),
161
174
  'snapshotVerifiedAt': value['snapshotVerifiedAt'] == null ? value['snapshotVerifiedAt'] : value['snapshotVerifiedAt'].toISOString(),
162
175
  'team': SandboxTeamToJSON(value['team']),
176
+ 'createdBy': value['createdBy'],
177
+ 'createdById': value['createdById'],
178
+ 'access': value['access'],
179
+ 'holdsCreatorLogins': value['holdsCreatorLogins'],
180
+ 'wipePendingUntilRestart': value['wipePendingUntilRestart'],
163
181
  'subdomain': value['subdomain'],
164
182
  'lastSnapshotAttemptAt': value['lastSnapshotAttemptAt'] == null ? value['lastSnapshotAttemptAt'] : value['lastSnapshotAttemptAt'].toISOString(),
165
183
  'lastSnapshotStatus': value['lastSnapshotStatus'],
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Boat Public API v1
3
+ * Public JSON API for creating, operating, prompting, observing, and exposing sandboxes from backend services, CI jobs, hosted workers, and Boat automation products. The v1 reference intentionally documents the developer integration surface only. Dashboard billing actions are not part of v1.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ import type { Sandbox } from './Sandbox';
13
+ /**
14
+ *
15
+ * @export
16
+ * @interface Share200Response
17
+ */
18
+ export interface Share200Response {
19
+ /**
20
+ *
21
+ * @type {Sandbox}
22
+ * @memberof Share200Response
23
+ */
24
+ sandbox?: Sandbox;
25
+ /**
26
+ * True when the sandbox was running: what runs on it still holds your logins in memory, so it stays `view` for the organization until you stop and resume it.
27
+ * @type {boolean}
28
+ * @memberof Share200Response
29
+ */
30
+ restartRequired?: boolean;
31
+ /**
32
+ *
33
+ * @type {string}
34
+ * @memberof Share200Response
35
+ */
36
+ message?: string;
37
+ }
38
+ /**
39
+ * Check if a given object implements the Share200Response interface.
40
+ */
41
+ export declare function instanceOfShare200Response(value: object): value is Share200Response;
42
+ export declare function Share200ResponseFromJSON(json: any): Share200Response;
43
+ export declare function Share200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): Share200Response;
44
+ export declare function Share200ResponseToJSON(json: any): Share200Response;
45
+ export declare function Share200ResponseToJSONTyped(value?: Share200Response | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,46 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Boat Public API v1
5
+ * Public JSON API for creating, operating, prompting, observing, and exposing sandboxes from backend services, CI jobs, hosted workers, and Boat automation products. The v1 reference intentionally documents the developer integration surface only. Dashboard billing actions are not part of v1.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ import { SandboxFromJSON, SandboxToJSON, } from './Sandbox';
15
+ /**
16
+ * Check if a given object implements the Share200Response interface.
17
+ */
18
+ export function instanceOfShare200Response(value) {
19
+ return true;
20
+ }
21
+ export function Share200ResponseFromJSON(json) {
22
+ return Share200ResponseFromJSONTyped(json, false);
23
+ }
24
+ export function Share200ResponseFromJSONTyped(json, ignoreDiscriminator) {
25
+ if (json == null) {
26
+ return json;
27
+ }
28
+ return {
29
+ 'sandbox': json['sandbox'] == null ? undefined : SandboxFromJSON(json['sandbox']),
30
+ 'restartRequired': json['restartRequired'] == null ? undefined : json['restartRequired'],
31
+ 'message': json['message'] == null ? undefined : json['message'],
32
+ };
33
+ }
34
+ export function Share200ResponseToJSON(json) {
35
+ return Share200ResponseToJSONTyped(json, false);
36
+ }
37
+ export function Share200ResponseToJSONTyped(value, ignoreDiscriminator = false) {
38
+ if (value == null) {
39
+ return value;
40
+ }
41
+ return {
42
+ 'sandbox': SandboxToJSON(value['sandbox']),
43
+ 'restartRequired': value['restartRequired'],
44
+ 'message': value['message'],
45
+ };
46
+ }
@@ -99,6 +99,7 @@ export * from './SecretsUpdateRequest';
99
99
  export * from './SelectedRepository';
100
100
  export * from './SetEnvironmentSecretFileRequest';
101
101
  export * from './SetEnvironmentVarRequest';
102
+ export * from './Share200Response';
102
103
  export * from './SnapshotChunk';
103
104
  export * from './SnapshotDownloadResponse';
104
105
  export * from './SnapshotDownloadResponseAllOfInventory';
@@ -101,6 +101,7 @@ export * from './SecretsUpdateRequest';
101
101
  export * from './SelectedRepository';
102
102
  export * from './SetEnvironmentSecretFileRequest';
103
103
  export * from './SetEnvironmentVarRequest';
104
+ export * from './Share200Response';
104
105
  export * from './SnapshotChunk';
105
106
  export * from './SnapshotDownloadResponse';
106
107
  export * from './SnapshotDownloadResponseAllOfInventory';
@@ -40,6 +40,12 @@ export interface PromptRequest {
40
40
  * @memberof PromptRequest
41
41
  */
42
42
  reasoningEffort?: string | null;
43
+ /**
44
+ * Optional. `true` runs this prompt in fast mode. The model stays the same and gives output faster. The provider bills fast mode at its higher fast rate. Omit to use the choice saved on the Agents dashboard for that model. `false` forces standard speed. Only models with `fastMode` set to `true` in `GET /provider-models` accept `true`. Other models return 400 `fast_mode_not_supported`.
45
+ * @type {boolean}
46
+ * @memberof PromptRequest
47
+ */
48
+ fast?: boolean | null;
43
49
  /**
44
50
  * Start a NEW conversation on the sandbox (runs in parallel with any existing ones) instead of continuing the most-recently-active one. Mutually exclusive with `conversationId`.
45
51
  * @type {boolean}