@boatdev/sdk 1.7.0 → 1.9.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 (91) hide show
  1. package/.openapi-generator/FILES +12 -0
  2. package/dist/apis/BoatApi.d.ts +102 -4
  3. package/dist/apis/BoatApi.js +233 -4
  4. package/dist/esm/apis/BoatApi.d.ts +102 -4
  5. package/dist/esm/apis/BoatApi.js +233 -4
  6. package/dist/esm/http2-fetch.d.ts +1 -0
  7. package/dist/esm/http2-fetch.js +203 -0
  8. package/dist/esm/models/CreateSandboxRequest.d.ts +4 -3
  9. package/dist/esm/models/CreateSandboxRequest.js +2 -1
  10. package/dist/esm/models/ForkRequest.d.ts +2 -1
  11. package/dist/esm/models/ForkRequest.js +2 -1
  12. package/dist/esm/models/NamedSnapshotShare.d.ts +76 -0
  13. package/dist/esm/models/NamedSnapshotShare.js +74 -0
  14. package/dist/esm/models/NamedSnapshotShareCreatedResponse.d.ts +64 -0
  15. package/dist/esm/models/NamedSnapshotShareCreatedResponse.js +66 -0
  16. package/dist/esm/models/NamedSnapshotShareListResponse.d.ts +58 -0
  17. package/dist/esm/models/NamedSnapshotShareListResponse.js +62 -0
  18. package/dist/esm/models/NamedSnapshotShareRevokedResponse.d.ts +58 -0
  19. package/dist/esm/models/NamedSnapshotShareRevokedResponse.js +62 -0
  20. package/dist/esm/models/Recover200Response.d.ts +57 -0
  21. package/dist/esm/models/Recover200Response.js +53 -0
  22. package/dist/esm/models/ResumeRequest.d.ts +2 -1
  23. package/dist/esm/models/ResumeRequest.js +2 -1
  24. package/dist/esm/models/Sandbox.d.ts +2 -1
  25. package/dist/esm/models/Sandbox.js +2 -1
  26. package/dist/esm/models/SandboxUsageResponse.d.ts +2 -1
  27. package/dist/esm/models/SandboxUsageResponse.js +2 -1
  28. package/dist/esm/models/StopOperation.d.ts +1 -1
  29. package/dist/esm/models/StopOperationResponse.d.ts +58 -0
  30. package/dist/esm/models/StopOperationResponse.js +62 -0
  31. package/dist/esm/models/StopRequest.d.ts +1 -1
  32. package/dist/esm/models/UpdateSandboxRequest.d.ts +1 -1
  33. package/dist/esm/models/index.d.ts +6 -0
  34. package/dist/esm/models/index.js +6 -0
  35. package/dist/esm/runtime.js +2 -1
  36. package/dist/http2-fetch.d.ts +1 -0
  37. package/dist/http2-fetch.js +239 -0
  38. package/dist/models/CreateSandboxRequest.d.ts +4 -3
  39. package/dist/models/CreateSandboxRequest.js +2 -1
  40. package/dist/models/ForkRequest.d.ts +2 -1
  41. package/dist/models/ForkRequest.js +2 -1
  42. package/dist/models/NamedSnapshotShare.d.ts +76 -0
  43. package/dist/models/NamedSnapshotShare.js +82 -0
  44. package/dist/models/NamedSnapshotShareCreatedResponse.d.ts +64 -0
  45. package/dist/models/NamedSnapshotShareCreatedResponse.js +74 -0
  46. package/dist/models/NamedSnapshotShareListResponse.d.ts +58 -0
  47. package/dist/models/NamedSnapshotShareListResponse.js +70 -0
  48. package/dist/models/NamedSnapshotShareRevokedResponse.d.ts +58 -0
  49. package/dist/models/NamedSnapshotShareRevokedResponse.js +70 -0
  50. package/dist/models/Recover200Response.d.ts +57 -0
  51. package/dist/models/Recover200Response.js +61 -0
  52. package/dist/models/ResumeRequest.d.ts +2 -1
  53. package/dist/models/ResumeRequest.js +2 -1
  54. package/dist/models/Sandbox.d.ts +2 -1
  55. package/dist/models/Sandbox.js +2 -1
  56. package/dist/models/SandboxUsageResponse.d.ts +2 -1
  57. package/dist/models/SandboxUsageResponse.js +2 -1
  58. package/dist/models/StopOperation.d.ts +1 -1
  59. package/dist/models/StopOperationResponse.d.ts +58 -0
  60. package/dist/models/StopOperationResponse.js +70 -0
  61. package/dist/models/StopRequest.d.ts +1 -1
  62. package/dist/models/UpdateSandboxRequest.d.ts +1 -1
  63. package/dist/models/index.d.ts +6 -0
  64. package/dist/models/index.js +6 -0
  65. package/dist/runtime.js +9 -8
  66. package/docs/BoatApi.md +385 -2
  67. package/docs/NamedSnapshotShare.md +45 -0
  68. package/docs/NamedSnapshotShareCreatedResponse.md +40 -0
  69. package/docs/NamedSnapshotShareListResponse.md +38 -0
  70. package/docs/NamedSnapshotShareRevokedResponse.md +38 -0
  71. package/docs/Recover200Response.md +38 -0
  72. package/docs/StopOperationResponse.md +38 -0
  73. package/package.json +1 -1
  74. package/src/apis/BoatApi.ts +348 -4
  75. package/src/http2-fetch.ts +179 -0
  76. package/src/models/CreateSandboxRequest.ts +5 -4
  77. package/src/models/ForkRequest.ts +3 -2
  78. package/src/models/NamedSnapshotShare.ts +131 -0
  79. package/src/models/NamedSnapshotShareCreatedResponse.ts +120 -0
  80. package/src/models/NamedSnapshotShareListResponse.ts +111 -0
  81. package/src/models/NamedSnapshotShareRevokedResponse.ts +111 -0
  82. package/src/models/Recover200Response.ts +99 -0
  83. package/src/models/ResumeRequest.ts +3 -2
  84. package/src/models/Sandbox.ts +3 -2
  85. package/src/models/SandboxUsageResponse.ts +3 -2
  86. package/src/models/StopOperation.ts +1 -1
  87. package/src/models/StopOperationResponse.ts +111 -0
  88. package/src/models/StopRequest.ts +1 -1
  89. package/src/models/UpdateSandboxRequest.ts +1 -1
  90. package/src/models/index.ts +6 -0
  91. package/src/runtime.ts +2 -1
@@ -68,6 +68,10 @@ docs/NamedSnapshotInfoResponse.md
68
68
  docs/NamedSnapshotListResponse.md
69
69
  docs/NamedSnapshotSaveRequest.md
70
70
  docs/NamedSnapshotSavingResponse.md
71
+ docs/NamedSnapshotShare.md
72
+ docs/NamedSnapshotShareCreatedResponse.md
73
+ docs/NamedSnapshotShareListResponse.md
74
+ docs/NamedSnapshotShareRevokedResponse.md
71
75
  docs/Org.md
72
76
  docs/OrgListResponse.md
73
77
  docs/PageInfo.md
@@ -79,6 +83,7 @@ docs/PromptRequest.md
79
83
  docs/PromptResponse.md
80
84
  docs/PromptRun.md
81
85
  docs/PromptRunResponse.md
86
+ docs/Recover200Response.md
82
87
  docs/RepoSelectionRequest.md
83
88
  docs/RepoSelectionResponse.md
84
89
  docs/ReposResponse.md
@@ -122,6 +127,7 @@ docs/SteerEventData.md
122
127
  docs/SteerRequest.md
123
128
  docs/SteerResponse.md
124
129
  docs/StopOperation.md
130
+ docs/StopOperationResponse.md
125
131
  docs/StopRequest.md
126
132
  docs/SuccessBase.md
127
133
  docs/UnknownEvent.md
@@ -210,6 +216,10 @@ src/models/NamedSnapshotInfoResponse.ts
210
216
  src/models/NamedSnapshotListResponse.ts
211
217
  src/models/NamedSnapshotSaveRequest.ts
212
218
  src/models/NamedSnapshotSavingResponse.ts
219
+ src/models/NamedSnapshotShare.ts
220
+ src/models/NamedSnapshotShareCreatedResponse.ts
221
+ src/models/NamedSnapshotShareListResponse.ts
222
+ src/models/NamedSnapshotShareRevokedResponse.ts
213
223
  src/models/Org.ts
214
224
  src/models/OrgListResponse.ts
215
225
  src/models/PageInfo.ts
@@ -221,6 +231,7 @@ src/models/PromptRequest.ts
221
231
  src/models/PromptResponse.ts
222
232
  src/models/PromptRun.ts
223
233
  src/models/PromptRunResponse.ts
234
+ src/models/Recover200Response.ts
224
235
  src/models/RepoSelectionRequest.ts
225
236
  src/models/RepoSelectionResponse.ts
226
237
  src/models/ReposResponse.ts
@@ -264,6 +275,7 @@ src/models/SteerEventData.ts
264
275
  src/models/SteerRequest.ts
265
276
  src/models/SteerResponse.ts
266
277
  src/models/StopOperation.ts
278
+ src/models/StopOperationResponse.ts
267
279
  src/models/StopRequest.ts
268
280
  src/models/SuccessBase.ts
269
281
  src/models/UnknownEvent.ts
@@ -46,10 +46,14 @@ import { type NamedSnapshotInfoResponse } from '../models/NamedSnapshotInfoRespo
46
46
  import { type NamedSnapshotListResponse } from '../models/NamedSnapshotListResponse';
47
47
  import { type NamedSnapshotSaveRequest } from '../models/NamedSnapshotSaveRequest';
48
48
  import { type NamedSnapshotSavingResponse } from '../models/NamedSnapshotSavingResponse';
49
+ import { type NamedSnapshotShareCreatedResponse } from '../models/NamedSnapshotShareCreatedResponse';
50
+ import { type NamedSnapshotShareListResponse } from '../models/NamedSnapshotShareListResponse';
51
+ import { type NamedSnapshotShareRevokedResponse } from '../models/NamedSnapshotShareRevokedResponse';
49
52
  import { type OrgListResponse } from '../models/OrgListResponse';
50
53
  import { type PromptRequest } from '../models/PromptRequest';
51
54
  import { type PromptResponse } from '../models/PromptResponse';
52
55
  import { type PromptRunResponse } from '../models/PromptRunResponse';
56
+ import { type Recover200Response } from '../models/Recover200Response';
53
57
  import { type RepoSelectionRequest } from '../models/RepoSelectionRequest';
54
58
  import { type RepoSelectionResponse } from '../models/RepoSelectionResponse';
55
59
  import { type ReposResponse } from '../models/ReposResponse';
@@ -73,6 +77,7 @@ import { type SshKeyRequest } from '../models/SshKeyRequest';
73
77
  import { type SshKeyResponse } from '../models/SshKeyResponse';
74
78
  import { type SteerRequest } from '../models/SteerRequest';
75
79
  import { type SteerResponse } from '../models/SteerResponse';
80
+ import { type StopOperationResponse } from '../models/StopOperationResponse';
76
81
  import { type StopRequest } from '../models/StopRequest';
77
82
  import { type UpdateSandboxEnvironmentRequest } from '../models/UpdateSandboxEnvironmentRequest';
78
83
  import { type UpdateSandboxRequest } from '../models/UpdateSandboxRequest';
@@ -119,6 +124,9 @@ export interface CreateEnvironmentRequest {
119
124
  export interface CreateScopedApiKeyOperationRequest {
120
125
  createScopedApiKeyRequest: CreateScopedApiKeyRequest;
121
126
  }
127
+ export interface CreateSnapshotShareRequest {
128
+ name: string;
129
+ }
122
130
  export interface CreateWebhookRequest {
123
131
  webhookCreateRequest: WebhookCreateRequest;
124
132
  }
@@ -196,6 +204,10 @@ export interface GetSnapshotFileRequest {
196
204
  export interface GetSnapshotTreeRequest {
197
205
  snapshotId: string;
198
206
  }
207
+ export interface GetStopRequest {
208
+ sandboxId: string;
209
+ stopId: string;
210
+ }
199
211
  export interface GetWebhookRequest {
200
212
  webhookId: string;
201
213
  }
@@ -218,6 +230,9 @@ export interface ListSandboxSnapshotsRequest {
218
230
  cursor?: string | null;
219
231
  sort?: ListSandboxSnapshotsSortEnum;
220
232
  }
233
+ export interface ListSnapshotSharesRequest {
234
+ name: string;
235
+ }
221
236
  export interface ListSnapshotsRequest {
222
237
  limit?: number;
223
238
  cursor?: string | null;
@@ -236,6 +251,9 @@ export interface ReadFileRequest {
236
251
  path: string;
237
252
  encoding?: ReadFileEncodingEnum;
238
253
  }
254
+ export interface RecoverRequest {
255
+ sandboxId: string;
256
+ }
239
257
  export interface ReposRequest {
240
258
  sync?: boolean;
241
259
  limit?: number;
@@ -251,6 +269,10 @@ export interface ResumeOperationRequest {
251
269
  export interface RevokeApiKeyRequest {
252
270
  apiKeyId: string;
253
271
  }
272
+ export interface RevokeSnapshotShareRequest {
273
+ name: string;
274
+ shareId: string;
275
+ }
254
276
  export interface RotateApiKeyRequest {
255
277
  apiKeyId: string;
256
278
  }
@@ -381,10 +403,12 @@ export declare class BoatApi extends runtime.BaseAPI {
381
403
  */
382
404
  artifactRequestOpts(requestParameters: ArtifactRequest): Promise<runtime.RequestOpts>;
383
405
  /**
406
+ * Downloads one file of up to 50 MiB, under /home/user or /tmp, as raw bytes.
384
407
  * Download a sandbox artifact
385
408
  */
386
409
  artifactRaw(requestParameters: ArtifactRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>>;
387
410
  /**
411
+ * Downloads one file of up to 50 MiB, under /home/user or /tmp, as raw bytes.
388
412
  * Download a sandbox artifact
389
413
  */
390
414
  artifact(requestParameters: ArtifactRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob>;
@@ -470,6 +494,20 @@ export declare class BoatApi extends runtime.BaseAPI {
470
494
  * Create a scoped API key
471
495
  */
472
496
  createScopedApiKey(requestParameters: CreateScopedApiKeyOperationRequest | runtime.FlatBody<CreateScopedApiKeyOperationRequest, 'createScopedApiKeyRequest'>, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ApiKeySecretResponse>;
497
+ /**
498
+ * Creates request options for createSnapshotShare without sending the request
499
+ */
500
+ createSnapshotShareRequestOpts(requestParameters: CreateSnapshotShareRequest): Promise<runtime.RequestOpts>;
501
+ /**
502
+ * Make a secret code that lets any Boat account create a sandbox from this named snapshot (`boat snapshot share <name>` in the CLI). The response shows the code once; Boat stores only a hash. Re-saving the name changes what the code deploys. Removing the name removes its codes. Everything on the disk is shared, so do not keep secrets in files on it. Needs `snapshot.write`.
503
+ * Share a named snapshot
504
+ */
505
+ createSnapshotShareRaw(requestParameters: CreateSnapshotShareRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<NamedSnapshotShareCreatedResponse>>;
506
+ /**
507
+ * Make a secret code that lets any Boat account create a sandbox from this named snapshot (`boat snapshot share <name>` in the CLI). The response shows the code once; Boat stores only a hash. Re-saving the name changes what the code deploys. Removing the name removes its codes. Everything on the disk is shared, so do not keep secrets in files on it. Needs `snapshot.write`.
508
+ * Share a named snapshot
509
+ */
510
+ createSnapshotShare(requestParameters: CreateSnapshotShareRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<NamedSnapshotShareCreatedResponse>;
473
511
  /**
474
512
  * Creates request options for createWebhook without sending the request
475
513
  */
@@ -776,6 +814,20 @@ export declare class BoatApi extends runtime.BaseAPI {
776
814
  * Get snapshot file tree
777
815
  */
778
816
  getSnapshotTree(requestParameters: GetSnapshotTreeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SnapshotTreeResponse>;
817
+ /**
818
+ * Creates request options for getStop without sending the request
819
+ */
820
+ getStopRequestOpts(requestParameters: GetStopRequest): Promise<runtime.RequestOpts>;
821
+ /**
822
+ * Returns one stop of this sandbox by the id that `POST /sandboxes/{sandboxId}/stop` returned. Old stops stay readable after a resume or a later stop. Returns 404 when the id is unknown or belongs to another sandbox.
823
+ * Get a stop by id
824
+ */
825
+ getStopRaw(requestParameters: GetStopRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<StopOperationResponse>>;
826
+ /**
827
+ * Returns one stop of this sandbox by the id that `POST /sandboxes/{sandboxId}/stop` returned. Old stops stay readable after a resume or a later stop. Returns 404 when the id is unknown or belongs to another sandbox.
828
+ * Get a stop by id
829
+ */
830
+ getStop(requestParameters: GetStopRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<StopOperationResponse>;
779
831
  /**
780
832
  * Creates request options for getWebhook without sending the request
781
833
  */
@@ -874,6 +926,20 @@ export declare class BoatApi extends runtime.BaseAPI {
874
926
  * List boat snapshots
875
927
  */
876
928
  listSandboxSnapshots(requestParameters: ListSandboxSnapshotsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SnapshotListResponse>;
929
+ /**
930
+ * Creates request options for listSnapshotShares without sending the request
931
+ */
932
+ listSnapshotSharesRequestOpts(requestParameters: ListSnapshotSharesRequest): Promise<runtime.RequestOpts>;
933
+ /**
934
+ * List the share codes of a named snapshot, active and revoked (`boat snapshot shares <name>` in the CLI). The full codes are not returned. Needs `snapshot.read`.
935
+ * List share codes of a named snapshot
936
+ */
937
+ listSnapshotSharesRaw(requestParameters: ListSnapshotSharesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<NamedSnapshotShareListResponse>>;
938
+ /**
939
+ * List the share codes of a named snapshot, active and revoked (`boat snapshot shares <name>` in the CLI). The full codes are not returned. Needs `snapshot.read`.
940
+ * List share codes of a named snapshot
941
+ */
942
+ listSnapshotShares(requestParameters: ListSnapshotSharesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<NamedSnapshotShareListResponse>;
877
943
  /**
878
944
  * Creates request options for listSnapshots without sending the request
879
945
  */
@@ -949,13 +1015,29 @@ export declare class BoatApi extends runtime.BaseAPI {
949
1015
  */
950
1016
  readFileRequestOpts(requestParameters: ReadFileRequest): Promise<runtime.RequestOpts>;
951
1017
  /**
1018
+ * Files up to 5 MiB. Use `GET /sandboxes/{sandboxId}/artifacts` for files up to 50 MiB, and SCP over SSH for larger ones.
952
1019
  * Read a file from a sandbox
953
1020
  */
954
1021
  readFileRaw(requestParameters: ReadFileRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FileReadResponse>>;
955
1022
  /**
1023
+ * Files up to 5 MiB. Use `GET /sandboxes/{sandboxId}/artifacts` for files up to 50 MiB, and SCP over SSH for larger ones.
956
1024
  * Read a file from a sandbox
957
1025
  */
958
1026
  readFile(requestParameters: ReadFileRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FileReadResponse>;
1027
+ /**
1028
+ * Creates request options for recover without sending the request
1029
+ */
1030
+ recoverRequestOpts(requestParameters: RecoverRequest): Promise<runtime.RequestOpts>;
1031
+ /**
1032
+ * Power-cycle the machine of a sandbox that stopped answering. The disk is not touched. The sandbox usually answers again within 1-2 minutes and then saves your work by itself; `sandbox.recovered` fires when it does. Refused with `409`: - `sandbox_is_reachable`: the sandbox answers normally. - `too_soon`: a recover started less than 10 minutes ago. - `no_machine`: the sandbox has no machine. Resume it instead. - `recover_unsupported`: its machine cannot be power-cycled. Wait for it to answer, or resume it from its last snapshot. - `reset_failed`: the power-cycle failed. Reply to the incident email.
1033
+ * Recover a sandbox that stopped responding
1034
+ */
1035
+ recoverRaw(requestParameters: RecoverRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Recover200Response>>;
1036
+ /**
1037
+ * Power-cycle the machine of a sandbox that stopped answering. The disk is not touched. The sandbox usually answers again within 1-2 minutes and then saves your work by itself; `sandbox.recovered` fires when it does. Refused with `409`: - `sandbox_is_reachable`: the sandbox answers normally. - `too_soon`: a recover started less than 10 minutes ago. - `no_machine`: the sandbox has no machine. Resume it instead. - `recover_unsupported`: its machine cannot be power-cycled. Wait for it to answer, or resume it from its last snapshot. - `reset_failed`: the power-cycle failed. Reply to the incident email.
1038
+ * Recover a sandbox that stopped responding
1039
+ */
1040
+ recover(requestParameters: RecoverRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Recover200Response>;
959
1041
  /**
960
1042
  * Creates request options for repos without sending the request
961
1043
  */
@@ -996,6 +1078,20 @@ export declare class BoatApi extends runtime.BaseAPI {
996
1078
  * Revoke an API key
997
1079
  */
998
1080
  revokeApiKey(requestParameters: RevokeApiKeyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ApiKeyRevokeResponse>;
1081
+ /**
1082
+ * Creates request options for revokeSnapshotShare without sending the request
1083
+ */
1084
+ revokeSnapshotShareRequestOpts(requestParameters: RevokeSnapshotShareRequest): Promise<runtime.RequestOpts>;
1085
+ /**
1086
+ * Revoke a share code (`boat snapshot unshare <name> <share-id>` in the CLI). The code stops creating new sandboxes. Sandboxes already created from it keep their own copy. Needs `snapshot.write`.
1087
+ * Revoke a share code
1088
+ */
1089
+ revokeSnapshotShareRaw(requestParameters: RevokeSnapshotShareRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<NamedSnapshotShareRevokedResponse>>;
1090
+ /**
1091
+ * Revoke a share code (`boat snapshot unshare <name> <share-id>` in the CLI). The code stops creating new sandboxes. Sandboxes already created from it keep their own copy. Needs `snapshot.write`.
1092
+ * Revoke a share code
1093
+ */
1094
+ revokeSnapshotShare(requestParameters: RevokeSnapshotShareRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<NamedSnapshotShareRevokedResponse>;
999
1095
  /**
1000
1096
  * Creates request options for rotateApiKey without sending the request
1001
1097
  */
@@ -1155,12 +1251,12 @@ export declare class BoatApi extends runtime.BaseAPI {
1155
1251
  */
1156
1252
  steerRequestOpts(input: SteerOperationRequest | runtime.FlatBody<SteerOperationRequest, 'steerRequest'>): Promise<runtime.RequestOpts>;
1157
1253
  /**
1158
- * Send a new message to a turn that is already running, without losing what the agent is doing. This is what typing into a coding agent while it works does: the instruction is taken into account and the work continues. Where the harness has a native mid-turn primitive (Claude Code, Codex, pi, Prime Agent) nothing is interrupted and the response has `native: true`. Where it does not (OpenCode), Boat interrupts that turn and immediately continues the SAME conversation with the instruction, keeping the session and its memory, and the response has `native: false`. Refused with **409 `no_running_turn`** when the conversation has nothing in flight; queue work with `POST /prompt` instead. The steer shows up in `GET /events` as a `steer` event. See [Integrated agents](/integrated-agents).
1254
+ * Send a new message to a turn that is already running, without losing what the agent is doing. This is what typing into a coding agent while it works does: the instruction is taken into account and the work continues. Where the harness has a native mid-turn primitive (Claude Code, Codex, pi, Prime Agent) nothing is interrupted and the response has `native: true`. Where it does not (OpenCode), Boat interrupts that turn and immediately continues the SAME conversation with the instruction, keeping the session and its memory, and the response has `native: false`. Refused with **409 `no_running_turn`** when the conversation has nothing in flight; queue work with `POST /prompt` instead. `error.details.reason` says why: `turn_ended` (with `error.details.lastTurn.status` and `.error` of the newest turn), `turn_not_started` (the turn is starting; retry in a moment), `no_turn`, `not_running` (the sandbox is not running) or `delivery_failed` (the sandbox did not accept the steer; check the turn before sending more work). The steer shows up in `GET /events` as a `steer` event. See [Integrated agents](/integrated-agents).
1159
1255
  * Steer a running turn
1160
1256
  */
1161
1257
  steerRaw(requestParameters: SteerOperationRequest | runtime.FlatBody<SteerOperationRequest, 'steerRequest'>, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SteerResponse>>;
1162
1258
  /**
1163
- * Send a new message to a turn that is already running, without losing what the agent is doing. This is what typing into a coding agent while it works does: the instruction is taken into account and the work continues. Where the harness has a native mid-turn primitive (Claude Code, Codex, pi, Prime Agent) nothing is interrupted and the response has `native: true`. Where it does not (OpenCode), Boat interrupts that turn and immediately continues the SAME conversation with the instruction, keeping the session and its memory, and the response has `native: false`. Refused with **409 `no_running_turn`** when the conversation has nothing in flight; queue work with `POST /prompt` instead. The steer shows up in `GET /events` as a `steer` event. See [Integrated agents](/integrated-agents).
1259
+ * Send a new message to a turn that is already running, without losing what the agent is doing. This is what typing into a coding agent while it works does: the instruction is taken into account and the work continues. Where the harness has a native mid-turn primitive (Claude Code, Codex, pi, Prime Agent) nothing is interrupted and the response has `native: true`. Where it does not (OpenCode), Boat interrupts that turn and immediately continues the SAME conversation with the instruction, keeping the session and its memory, and the response has `native: false`. Refused with **409 `no_running_turn`** when the conversation has nothing in flight; queue work with `POST /prompt` instead. `error.details.reason` says why: `turn_ended` (with `error.details.lastTurn.status` and `.error` of the newest turn), `turn_not_started` (the turn is starting; retry in a moment), `no_turn`, `not_running` (the sandbox is not running) or `delivery_failed` (the sandbox did not accept the steer; check the turn before sending more work). The steer shows up in `GET /events` as a `steer` event. See [Integrated agents](/integrated-agents).
1164
1260
  * Steer a running turn
1165
1261
  */
1166
1262
  steer(requestParameters: SteerOperationRequest | runtime.FlatBody<SteerOperationRequest, 'steerRequest'>, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SteerResponse>;
@@ -1169,12 +1265,12 @@ export declare class BoatApi extends runtime.BaseAPI {
1169
1265
  */
1170
1266
  stopRequestOpts(input: StopOperationRequest | runtime.FlatBody<StopOperationRequest, 'stopRequest'>): Promise<runtime.RequestOpts>;
1171
1267
  /**
1172
- * Stop active work and archive/snapshot the sandbox for later resume or fork. A stop always saves the sandbox\'s disk first. If that save is failing, the stop is refused and the sandbox keeps running so your work is not discarded, we retry automatically and email you. You are not billed for time spent in that state. The stop is an operation: the response and the sandbox carry it as `stop`, with an `id` and a `status`. Poll `GET /sandboxes/{sandboxId}` until `stop.status` is `completed`. A failed attempt shows `failing` with its `error` and is retried until the sandbox archives; commands and prompts you send meanwhile do not cancel it. Only a resume ends it early (`superseded`). Calling stop again while one is pending returns the same `id`. Set `force: true` to stop anyway, accepting the loss of everything written since the last successful snapshot. This is irreversible; only reach for it after a stop has already failed.
1268
+ * Stop active work and archive/snapshot the sandbox for later resume or fork. A stop always saves the sandbox\'s disk first. If that save is failing, the stop is refused and the sandbox keeps running so your work is not discarded, we retry automatically and email you. You are not billed for time spent in that state. The stop is an operation: the response and the sandbox carry it as `stop`, with an `id` and a `status`. Poll `GET /sandboxes/{sandboxId}` until `stop.status` is `completed`. A failed attempt shows `failing` with its `error` and is retried until the sandbox archives; commands and prompts you send meanwhile do not cancel it. Only a resume ends it early (`superseded`). Calling stop again while one is pending returns the same `id`. Set `force: true` to stop anyway, keeping the last successful snapshot and losing everything written since then. This is irreversible; only reach for it after a stop has already failed. A force on a stop that is already pending escalates that stop.
1173
1269
  * Stop and archive sandbox
1174
1270
  */
1175
1271
  stopRaw(requestParameters: StopOperationRequest | runtime.FlatBody<StopOperationRequest, 'stopRequest'>, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SandboxActionResponse>>;
1176
1272
  /**
1177
- * Stop active work and archive/snapshot the sandbox for later resume or fork. A stop always saves the sandbox\'s disk first. If that save is failing, the stop is refused and the sandbox keeps running so your work is not discarded, we retry automatically and email you. You are not billed for time spent in that state. The stop is an operation: the response and the sandbox carry it as `stop`, with an `id` and a `status`. Poll `GET /sandboxes/{sandboxId}` until `stop.status` is `completed`. A failed attempt shows `failing` with its `error` and is retried until the sandbox archives; commands and prompts you send meanwhile do not cancel it. Only a resume ends it early (`superseded`). Calling stop again while one is pending returns the same `id`. Set `force: true` to stop anyway, accepting the loss of everything written since the last successful snapshot. This is irreversible; only reach for it after a stop has already failed.
1273
+ * Stop active work and archive/snapshot the sandbox for later resume or fork. A stop always saves the sandbox\'s disk first. If that save is failing, the stop is refused and the sandbox keeps running so your work is not discarded, we retry automatically and email you. You are not billed for time spent in that state. The stop is an operation: the response and the sandbox carry it as `stop`, with an `id` and a `status`. Poll `GET /sandboxes/{sandboxId}` until `stop.status` is `completed`. A failed attempt shows `failing` with its `error` and is retried until the sandbox archives; commands and prompts you send meanwhile do not cancel it. Only a resume ends it early (`superseded`). Calling stop again while one is pending returns the same `id`. Set `force: true` to stop anyway, keeping the last successful snapshot and losing everything written since then. This is irreversible; only reach for it after a stop has already failed. A force on a stop that is already pending escalates that stop.
1178
1274
  * Stop and archive sandbox
1179
1275
  */
1180
1276
  stop(requestParameters: StopOperationRequest | runtime.FlatBody<StopOperationRequest, 'stopRequest'>, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SandboxActionResponse>;
@@ -1277,10 +1373,12 @@ export declare class BoatApi extends runtime.BaseAPI {
1277
1373
  */
1278
1374
  writeFileRequestOpts(input: WriteFileRequest | runtime.FlatBody<WriteFileRequest, 'fileWriteRequest'>): Promise<runtime.RequestOpts>;
1279
1375
  /**
1376
+ * Files up to 5 MiB after decoding. Use SCP over SSH for larger files.
1280
1377
  * Write a file in a sandbox
1281
1378
  */
1282
1379
  writeFileRaw(requestParameters: WriteFileRequest | runtime.FlatBody<WriteFileRequest, 'fileWriteRequest'>, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FileWriteResponse>>;
1283
1380
  /**
1381
+ * Files up to 5 MiB after decoding. Use SCP over SSH for larger files.
1284
1382
  * Write a file in a sandbox
1285
1383
  */
1286
1384
  writeFile(requestParameters: WriteFileRequest | runtime.FlatBody<WriteFileRequest, 'fileWriteRequest'>, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FileWriteResponse>;