plato-sandbox-sdk 1.1.1

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 (203) hide show
  1. package/BaseClient.ts +28 -0
  2. package/Client.ts +1849 -0
  3. package/README.md +339 -0
  4. package/api/client/index.ts +1 -0
  5. package/api/client/requests/CreateSandboxRequest.ts +37 -0
  6. package/api/client/requests/CreateSnapshotRequest.ts +11 -0
  7. package/api/client/requests/EvaluateRequest.ts +9 -0
  8. package/api/client/requests/GetEnvironmentStateRequest.ts +11 -0
  9. package/api/client/requests/GetTestCasesRequest.ts +15 -0
  10. package/api/client/requests/LogRequest.ts +19 -0
  11. package/api/client/requests/MakeEnvironmentRequest.ts +27 -0
  12. package/api/client/requests/PostEvaluationResultRequest.ts +14 -0
  13. package/api/client/requests/ResetEnvironmentRequest.ts +11 -0
  14. package/api/client/requests/SetupRootAccessRequest.ts +14 -0
  15. package/api/client/requests/SetupSandboxRequest.ts +29 -0
  16. package/api/client/requests/StartWorkerRequest.ts +28 -0
  17. package/api/client/requests/index.ts +12 -0
  18. package/api/errors/BadRequestError.ts +17 -0
  19. package/api/errors/index.ts +1 -0
  20. package/api/index.ts +3 -0
  21. package/api/types/ActiveSessionResponse.ts +6 -0
  22. package/api/types/BackupEnvironmentResponse.ts +7 -0
  23. package/api/types/CdpUrlResponse.ts +12 -0
  24. package/api/types/CloseEnvironmentResponse.ts +6 -0
  25. package/api/types/CreateSandboxResponse.ts +14 -0
  26. package/api/types/CreateSnapshotResponse.ts +10 -0
  27. package/api/types/DeleteSandboxResponse.ts +6 -0
  28. package/api/types/Environment.ts +7 -0
  29. package/api/types/EnvironmentStateResponse.ts +11 -0
  30. package/api/types/ErrorResponse.ts +6 -0
  31. package/api/types/EvaluateResponse.ts +21 -0
  32. package/api/types/EvaluationResult.ts +9 -0
  33. package/api/types/HeartbeatResponse.ts +6 -0
  34. package/api/types/JobStatusResponse.ts +7 -0
  35. package/api/types/LogResponse.ts +5 -0
  36. package/api/types/MakeEnvironmentResponse.ts +6 -0
  37. package/api/types/OperationEvent.ts +42 -0
  38. package/api/types/PlatoConfig.ts +8 -0
  39. package/api/types/PlatoTask.ts +21 -0
  40. package/api/types/PlatoTaskMetadata.ts +20 -0
  41. package/api/types/PostEvaluationResultResponse.ts +6 -0
  42. package/api/types/ProxyUrlResponse.ts +12 -0
  43. package/api/types/ResetEnvironmentResponse.ts +13 -0
  44. package/api/types/RunningSessionsCountResponse.ts +6 -0
  45. package/api/types/Sandbox.ts +10 -0
  46. package/api/types/ScoringType.ts +7 -0
  47. package/api/types/SetupRootAccessResponse.ts +7 -0
  48. package/api/types/SetupSandboxResponse.ts +6 -0
  49. package/api/types/SimConfigCompute.ts +9 -0
  50. package/api/types/SimConfigDataset.ts +10 -0
  51. package/api/types/SimConfigListener.ts +27 -0
  52. package/api/types/SimConfigMetadata.ts +14 -0
  53. package/api/types/SimConfigService.ts +8 -0
  54. package/api/types/Simulator.ts +10 -0
  55. package/api/types/SimulatorListItem.ts +7 -0
  56. package/api/types/SshInfo.ts +18 -0
  57. package/api/types/StartWorkerResponse.ts +7 -0
  58. package/api/types/TaskMetadata.ts +20 -0
  59. package/api/types/TestCase.ts +40 -0
  60. package/api/types/TestCasesResponse.ts +10 -0
  61. package/api/types/Variable.ts +6 -0
  62. package/api/types/WorkerReadyResponse.ts +9 -0
  63. package/api/types/index.ts +42 -0
  64. package/core/fetcher/APIResponse.ts +23 -0
  65. package/core/fetcher/BinaryResponse.ts +36 -0
  66. package/core/fetcher/EndpointMetadata.ts +13 -0
  67. package/core/fetcher/EndpointSupplier.ts +14 -0
  68. package/core/fetcher/Fetcher.ts +165 -0
  69. package/core/fetcher/Headers.ts +93 -0
  70. package/core/fetcher/HttpResponsePromise.ts +116 -0
  71. package/core/fetcher/RawResponse.ts +61 -0
  72. package/core/fetcher/ResponseWithBody.ts +7 -0
  73. package/core/fetcher/Supplier.ts +11 -0
  74. package/core/fetcher/createRequestUrl.ts +6 -0
  75. package/core/fetcher/getErrorResponseBody.ts +33 -0
  76. package/core/fetcher/getFetchFn.ts +3 -0
  77. package/core/fetcher/getHeader.ts +8 -0
  78. package/core/fetcher/getRequestBody.ts +16 -0
  79. package/core/fetcher/getResponseBody.ts +43 -0
  80. package/core/fetcher/index.ts +11 -0
  81. package/core/fetcher/makeRequest.ts +44 -0
  82. package/core/fetcher/requestWithRetries.ts +73 -0
  83. package/core/fetcher/signals.ts +38 -0
  84. package/core/headers.ts +33 -0
  85. package/core/index.ts +4 -0
  86. package/core/json.ts +27 -0
  87. package/core/runtime/index.ts +1 -0
  88. package/core/runtime/runtime.ts +133 -0
  89. package/core/stream/Stream.ts +155 -0
  90. package/core/stream/index.ts +1 -0
  91. package/core/url/encodePathParam.ts +18 -0
  92. package/core/url/index.ts +3 -0
  93. package/core/url/join.ts +80 -0
  94. package/core/url/qs.ts +74 -0
  95. package/dist/BaseClient.d.ts +25 -0
  96. package/dist/Client.d.ts +376 -0
  97. package/dist/api/client/index.d.ts +2 -0
  98. package/dist/api/client/requests/CreateSandboxRequest.d.ts +35 -0
  99. package/dist/api/client/requests/CreateSnapshotRequest.d.ts +10 -0
  100. package/dist/api/client/requests/EvaluateRequest.d.ts +8 -0
  101. package/dist/api/client/requests/GetEnvironmentStateRequest.d.ts +10 -0
  102. package/dist/api/client/requests/GetTestCasesRequest.d.ts +14 -0
  103. package/dist/api/client/requests/LogRequest.d.ts +18 -0
  104. package/dist/api/client/requests/MakeEnvironmentRequest.d.ts +26 -0
  105. package/dist/api/client/requests/PostEvaluationResultRequest.d.ts +13 -0
  106. package/dist/api/client/requests/ResetEnvironmentRequest.d.ts +10 -0
  107. package/dist/api/client/requests/SetupRootAccessRequest.d.ts +13 -0
  108. package/dist/api/client/requests/SetupSandboxRequest.d.ts +27 -0
  109. package/dist/api/client/requests/StartWorkerRequest.d.ts +26 -0
  110. package/dist/api/client/requests/index.d.ts +13 -0
  111. package/dist/api/errors/BadRequestError.d.ts +7 -0
  112. package/dist/api/errors/index.d.ts +2 -0
  113. package/dist/api/index.d.ts +4 -0
  114. package/dist/api/types/ActiveSessionResponse.d.ts +5 -0
  115. package/dist/api/types/BackupEnvironmentResponse.d.ts +6 -0
  116. package/dist/api/types/CdpUrlResponse.d.ts +10 -0
  117. package/dist/api/types/CloseEnvironmentResponse.d.ts +5 -0
  118. package/dist/api/types/CreateSandboxResponse.d.ts +13 -0
  119. package/dist/api/types/CreateSnapshotResponse.d.ts +9 -0
  120. package/dist/api/types/DeleteSandboxResponse.d.ts +5 -0
  121. package/dist/api/types/Environment.d.ts +6 -0
  122. package/dist/api/types/EnvironmentStateResponse.d.ts +9 -0
  123. package/dist/api/types/ErrorResponse.d.ts +5 -0
  124. package/dist/api/types/EvaluateResponse.d.ts +18 -0
  125. package/dist/api/types/EvaluationResult.d.ts +8 -0
  126. package/dist/api/types/HeartbeatResponse.d.ts +5 -0
  127. package/dist/api/types/JobStatusResponse.d.ts +6 -0
  128. package/dist/api/types/LogResponse.d.ts +4 -0
  129. package/dist/api/types/MakeEnvironmentResponse.d.ts +5 -0
  130. package/dist/api/types/OperationEvent.d.ts +40 -0
  131. package/dist/api/types/PlatoConfig.d.ts +6 -0
  132. package/dist/api/types/PlatoTask.d.ts +19 -0
  133. package/dist/api/types/PlatoTaskMetadata.d.ts +18 -0
  134. package/dist/api/types/PostEvaluationResultResponse.d.ts +5 -0
  135. package/dist/api/types/ProxyUrlResponse.d.ts +10 -0
  136. package/dist/api/types/ResetEnvironmentResponse.d.ts +11 -0
  137. package/dist/api/types/RunningSessionsCountResponse.d.ts +5 -0
  138. package/dist/api/types/Sandbox.d.ts +9 -0
  139. package/dist/api/types/ScoringType.d.ts +6 -0
  140. package/dist/api/types/SetupRootAccessResponse.d.ts +6 -0
  141. package/dist/api/types/SetupSandboxResponse.d.ts +5 -0
  142. package/dist/api/types/SimConfigCompute.d.ts +8 -0
  143. package/dist/api/types/SimConfigDataset.d.ts +8 -0
  144. package/dist/api/types/SimConfigListener.d.ts +25 -0
  145. package/dist/api/types/SimConfigMetadata.d.ts +12 -0
  146. package/dist/api/types/SimConfigService.d.ts +7 -0
  147. package/dist/api/types/Simulator.d.ts +9 -0
  148. package/dist/api/types/SimulatorListItem.d.ts +6 -0
  149. package/dist/api/types/SshInfo.d.ts +17 -0
  150. package/dist/api/types/StartWorkerResponse.d.ts +6 -0
  151. package/dist/api/types/TaskMetadata.d.ts +18 -0
  152. package/dist/api/types/TestCase.d.ts +34 -0
  153. package/dist/api/types/TestCasesResponse.d.ts +8 -0
  154. package/dist/api/types/Variable.d.ts +5 -0
  155. package/dist/api/types/WorkerReadyResponse.d.ts +8 -0
  156. package/dist/api/types/index.d.ts +43 -0
  157. package/dist/core/fetcher/APIResponse.d.ts +21 -0
  158. package/dist/core/fetcher/BinaryResponse.d.ts +21 -0
  159. package/dist/core/fetcher/EndpointMetadata.d.ts +14 -0
  160. package/dist/core/fetcher/EndpointSupplier.d.ts +13 -0
  161. package/dist/core/fetcher/Fetcher.d.ts +43 -0
  162. package/dist/core/fetcher/Headers.d.ts +3 -0
  163. package/dist/core/fetcher/HttpResponsePromise.d.ts +59 -0
  164. package/dist/core/fetcher/RawResponse.d.ts +30 -0
  165. package/dist/core/fetcher/ResponseWithBody.d.ts +5 -0
  166. package/dist/core/fetcher/Supplier.d.ts +5 -0
  167. package/dist/core/fetcher/createRequestUrl.d.ts +2 -0
  168. package/dist/core/fetcher/getErrorResponseBody.d.ts +2 -0
  169. package/dist/core/fetcher/getFetchFn.d.ts +2 -0
  170. package/dist/core/fetcher/getHeader.d.ts +2 -0
  171. package/dist/core/fetcher/getRequestBody.d.ts +8 -0
  172. package/dist/core/fetcher/getResponseBody.d.ts +2 -0
  173. package/dist/core/fetcher/index.d.ts +12 -0
  174. package/dist/core/fetcher/makeRequest.d.ts +2 -0
  175. package/dist/core/fetcher/requestWithRetries.d.ts +2 -0
  176. package/dist/core/fetcher/signals.d.ts +12 -0
  177. package/dist/core/headers.d.ts +3 -0
  178. package/dist/core/index.d.ts +5 -0
  179. package/dist/core/json.d.ts +16 -0
  180. package/dist/core/runtime/index.d.ts +2 -0
  181. package/dist/core/runtime/runtime.d.ts +10 -0
  182. package/dist/core/stream/Stream.d.ts +48 -0
  183. package/dist/core/stream/index.d.ts +2 -0
  184. package/dist/core/url/encodePathParam.d.ts +2 -0
  185. package/dist/core/url/index.d.ts +4 -0
  186. package/dist/core/url/join.d.ts +2 -0
  187. package/dist/core/url/qs.d.ts +7 -0
  188. package/dist/errors/ApiError.d.ts +13 -0
  189. package/dist/errors/ApiTimeoutError.d.ts +4 -0
  190. package/dist/errors/index.d.ts +3 -0
  191. package/dist/helpers/SandboxHelpers.d.ts +127 -0
  192. package/dist/helpers/SandboxMonitor.d.ts +89 -0
  193. package/dist/helpers/index.d.ts +9 -0
  194. package/dist/index.d.ts +6 -0
  195. package/errors/ApiError.ts +53 -0
  196. package/errors/ApiTimeoutError.ts +8 -0
  197. package/errors/index.ts +2 -0
  198. package/helpers/README.md +229 -0
  199. package/helpers/SandboxHelpers.ts +213 -0
  200. package/helpers/SandboxMonitor.ts +252 -0
  201. package/helpers/index.ts +10 -0
  202. package/index.ts +7 -0
  203. package/package.json +54 -0
package/Client.ts ADDED
@@ -0,0 +1,1849 @@
1
+ // This file was auto-generated by Fern from our API Definition.
2
+
3
+ import * as Api from "./api/index.js";
4
+ import type { BaseClientOptions, BaseRequestOptions } from "./BaseClient.js";
5
+ import { mergeHeaders } from "./core/headers.js";
6
+ import * as core from "./core/index.js";
7
+ import * as errors from "./errors/index.js";
8
+
9
+ export declare namespace ApiClient {
10
+ export interface Options extends BaseClientOptions {}
11
+
12
+ export interface RequestOptions extends BaseRequestOptions {}
13
+ }
14
+
15
+ export class ApiClient {
16
+ protected readonly _options: ApiClient.Options;
17
+
18
+ constructor(_options: ApiClient.Options) {
19
+ this._options = {
20
+ ..._options,
21
+ headers: mergeHeaders(
22
+ {
23
+ "X-Fern-Language": "JavaScript",
24
+ "X-Fern-Runtime": core.RUNTIME.type,
25
+ "X-Fern-Runtime-Version": core.RUNTIME.version,
26
+ },
27
+ _options?.headers,
28
+ ),
29
+ };
30
+ }
31
+
32
+ /**
33
+ * @param {Api.MakeEnvironmentRequest} request
34
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
35
+ *
36
+ * @throws {@link Api.BadRequestError}
37
+ *
38
+ * @example
39
+ * await client.makeEnvironment({
40
+ * interface_type: "interface_type",
41
+ * env_id: "env_id"
42
+ * })
43
+ */
44
+ public makeEnvironment(
45
+ request: Api.MakeEnvironmentRequest,
46
+ requestOptions?: ApiClient.RequestOptions,
47
+ ): core.HttpResponsePromise<Api.MakeEnvironmentResponse> {
48
+ return core.HttpResponsePromise.fromPromise(this.__makeEnvironment(request, requestOptions));
49
+ }
50
+
51
+ private async __makeEnvironment(
52
+ request: Api.MakeEnvironmentRequest,
53
+ requestOptions?: ApiClient.RequestOptions,
54
+ ): Promise<core.WithRawResponse<Api.MakeEnvironmentResponse>> {
55
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
56
+ const _response = await core.fetcher({
57
+ url: core.url.join(
58
+ (await core.Supplier.get(this._options.baseUrl)) ??
59
+ (await core.Supplier.get(this._options.environment)),
60
+ "env/make2",
61
+ ),
62
+ method: "POST",
63
+ headers: _headers,
64
+ contentType: "application/json",
65
+ queryParameters: requestOptions?.queryParams,
66
+ requestType: "json",
67
+ body: request,
68
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
69
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
70
+ abortSignal: requestOptions?.abortSignal,
71
+ });
72
+ if (_response.ok) {
73
+ return { data: _response.body as Api.MakeEnvironmentResponse, rawResponse: _response.rawResponse };
74
+ }
75
+
76
+ if (_response.error.reason === "status-code") {
77
+ switch (_response.error.statusCode) {
78
+ case 400:
79
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
80
+ default:
81
+ throw new errors.ApiError({
82
+ statusCode: _response.error.statusCode,
83
+ body: _response.error.body,
84
+ rawResponse: _response.rawResponse,
85
+ });
86
+ }
87
+ }
88
+
89
+ switch (_response.error.reason) {
90
+ case "non-json":
91
+ throw new errors.ApiError({
92
+ statusCode: _response.error.statusCode,
93
+ body: _response.error.rawBody,
94
+ rawResponse: _response.rawResponse,
95
+ });
96
+ case "timeout":
97
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling POST /env/make2.");
98
+ case "unknown":
99
+ throw new errors.ApiError({
100
+ message: _response.error.errorMessage,
101
+ rawResponse: _response.rawResponse,
102
+ });
103
+ }
104
+ }
105
+
106
+ /**
107
+ * @param {string} jobId
108
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
109
+ *
110
+ * @throws {@link Api.BadRequestError}
111
+ *
112
+ * @example
113
+ * await client.getJobStatus("job_id")
114
+ */
115
+ public getJobStatus(
116
+ jobId: string,
117
+ requestOptions?: ApiClient.RequestOptions,
118
+ ): core.HttpResponsePromise<Api.JobStatusResponse> {
119
+ return core.HttpResponsePromise.fromPromise(this.__getJobStatus(jobId, requestOptions));
120
+ }
121
+
122
+ private async __getJobStatus(
123
+ jobId: string,
124
+ requestOptions?: ApiClient.RequestOptions,
125
+ ): Promise<core.WithRawResponse<Api.JobStatusResponse>> {
126
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
127
+ const _response = await core.fetcher({
128
+ url: core.url.join(
129
+ (await core.Supplier.get(this._options.baseUrl)) ??
130
+ (await core.Supplier.get(this._options.environment)),
131
+ `env/${core.url.encodePathParam(jobId)}/status`,
132
+ ),
133
+ method: "GET",
134
+ headers: _headers,
135
+ queryParameters: requestOptions?.queryParams,
136
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
137
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
138
+ abortSignal: requestOptions?.abortSignal,
139
+ });
140
+ if (_response.ok) {
141
+ return { data: _response.body as Api.JobStatusResponse, rawResponse: _response.rawResponse };
142
+ }
143
+
144
+ if (_response.error.reason === "status-code") {
145
+ switch (_response.error.statusCode) {
146
+ case 400:
147
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
148
+ default:
149
+ throw new errors.ApiError({
150
+ statusCode: _response.error.statusCode,
151
+ body: _response.error.body,
152
+ rawResponse: _response.rawResponse,
153
+ });
154
+ }
155
+ }
156
+
157
+ switch (_response.error.reason) {
158
+ case "non-json":
159
+ throw new errors.ApiError({
160
+ statusCode: _response.error.statusCode,
161
+ body: _response.error.rawBody,
162
+ rawResponse: _response.rawResponse,
163
+ });
164
+ case "timeout":
165
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling GET /env/{job_id}/status.");
166
+ case "unknown":
167
+ throw new errors.ApiError({
168
+ message: _response.error.errorMessage,
169
+ rawResponse: _response.rawResponse,
170
+ });
171
+ }
172
+ }
173
+
174
+ /**
175
+ * @param {string} jobId
176
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
177
+ *
178
+ * @throws {@link Api.BadRequestError}
179
+ *
180
+ * @example
181
+ * await client.getCdpUrl("job_id")
182
+ */
183
+ public getCdpUrl(
184
+ jobId: string,
185
+ requestOptions?: ApiClient.RequestOptions,
186
+ ): core.HttpResponsePromise<Api.CdpUrlResponse> {
187
+ return core.HttpResponsePromise.fromPromise(this.__getCdpUrl(jobId, requestOptions));
188
+ }
189
+
190
+ private async __getCdpUrl(
191
+ jobId: string,
192
+ requestOptions?: ApiClient.RequestOptions,
193
+ ): Promise<core.WithRawResponse<Api.CdpUrlResponse>> {
194
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
195
+ const _response = await core.fetcher({
196
+ url: core.url.join(
197
+ (await core.Supplier.get(this._options.baseUrl)) ??
198
+ (await core.Supplier.get(this._options.environment)),
199
+ `env/${core.url.encodePathParam(jobId)}/cdp_url`,
200
+ ),
201
+ method: "GET",
202
+ headers: _headers,
203
+ queryParameters: requestOptions?.queryParams,
204
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
205
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
206
+ abortSignal: requestOptions?.abortSignal,
207
+ });
208
+ if (_response.ok) {
209
+ return { data: _response.body as Api.CdpUrlResponse, rawResponse: _response.rawResponse };
210
+ }
211
+
212
+ if (_response.error.reason === "status-code") {
213
+ switch (_response.error.statusCode) {
214
+ case 400:
215
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
216
+ default:
217
+ throw new errors.ApiError({
218
+ statusCode: _response.error.statusCode,
219
+ body: _response.error.body,
220
+ rawResponse: _response.rawResponse,
221
+ });
222
+ }
223
+ }
224
+
225
+ switch (_response.error.reason) {
226
+ case "non-json":
227
+ throw new errors.ApiError({
228
+ statusCode: _response.error.statusCode,
229
+ body: _response.error.rawBody,
230
+ rawResponse: _response.rawResponse,
231
+ });
232
+ case "timeout":
233
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling GET /env/{job_id}/cdp_url.");
234
+ case "unknown":
235
+ throw new errors.ApiError({
236
+ message: _response.error.errorMessage,
237
+ rawResponse: _response.rawResponse,
238
+ });
239
+ }
240
+ }
241
+
242
+ /**
243
+ * @param {string} jobId
244
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
245
+ *
246
+ * @throws {@link Api.BadRequestError}
247
+ *
248
+ * @example
249
+ * await client.getProxyUrl("job_id")
250
+ */
251
+ public getProxyUrl(
252
+ jobId: string,
253
+ requestOptions?: ApiClient.RequestOptions,
254
+ ): core.HttpResponsePromise<Api.ProxyUrlResponse> {
255
+ return core.HttpResponsePromise.fromPromise(this.__getProxyUrl(jobId, requestOptions));
256
+ }
257
+
258
+ private async __getProxyUrl(
259
+ jobId: string,
260
+ requestOptions?: ApiClient.RequestOptions,
261
+ ): Promise<core.WithRawResponse<Api.ProxyUrlResponse>> {
262
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
263
+ const _response = await core.fetcher({
264
+ url: core.url.join(
265
+ (await core.Supplier.get(this._options.baseUrl)) ??
266
+ (await core.Supplier.get(this._options.environment)),
267
+ `env/${core.url.encodePathParam(jobId)}/proxy_url`,
268
+ ),
269
+ method: "GET",
270
+ headers: _headers,
271
+ queryParameters: requestOptions?.queryParams,
272
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
273
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
274
+ abortSignal: requestOptions?.abortSignal,
275
+ });
276
+ if (_response.ok) {
277
+ return { data: _response.body as Api.ProxyUrlResponse, rawResponse: _response.rawResponse };
278
+ }
279
+
280
+ if (_response.error.reason === "status-code") {
281
+ switch (_response.error.statusCode) {
282
+ case 400:
283
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
284
+ default:
285
+ throw new errors.ApiError({
286
+ statusCode: _response.error.statusCode,
287
+ body: _response.error.body,
288
+ rawResponse: _response.rawResponse,
289
+ });
290
+ }
291
+ }
292
+
293
+ switch (_response.error.reason) {
294
+ case "non-json":
295
+ throw new errors.ApiError({
296
+ statusCode: _response.error.statusCode,
297
+ body: _response.error.rawBody,
298
+ rawResponse: _response.rawResponse,
299
+ });
300
+ case "timeout":
301
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling GET /env/{job_id}/proxy_url.");
302
+ case "unknown":
303
+ throw new errors.ApiError({
304
+ message: _response.error.errorMessage,
305
+ rawResponse: _response.rawResponse,
306
+ });
307
+ }
308
+ }
309
+
310
+ /**
311
+ * @param {string} jobId
312
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
313
+ *
314
+ * @throws {@link Api.BadRequestError}
315
+ *
316
+ * @example
317
+ * await client.closeEnvironment("job_id")
318
+ */
319
+ public closeEnvironment(
320
+ jobId: string,
321
+ requestOptions?: ApiClient.RequestOptions,
322
+ ): core.HttpResponsePromise<Api.CloseEnvironmentResponse> {
323
+ return core.HttpResponsePromise.fromPromise(this.__closeEnvironment(jobId, requestOptions));
324
+ }
325
+
326
+ private async __closeEnvironment(
327
+ jobId: string,
328
+ requestOptions?: ApiClient.RequestOptions,
329
+ ): Promise<core.WithRawResponse<Api.CloseEnvironmentResponse>> {
330
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
331
+ const _response = await core.fetcher({
332
+ url: core.url.join(
333
+ (await core.Supplier.get(this._options.baseUrl)) ??
334
+ (await core.Supplier.get(this._options.environment)),
335
+ `env/${core.url.encodePathParam(jobId)}/close`,
336
+ ),
337
+ method: "POST",
338
+ headers: _headers,
339
+ queryParameters: requestOptions?.queryParams,
340
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
341
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
342
+ abortSignal: requestOptions?.abortSignal,
343
+ });
344
+ if (_response.ok) {
345
+ return { data: _response.body as Api.CloseEnvironmentResponse, rawResponse: _response.rawResponse };
346
+ }
347
+
348
+ if (_response.error.reason === "status-code") {
349
+ switch (_response.error.statusCode) {
350
+ case 400:
351
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
352
+ default:
353
+ throw new errors.ApiError({
354
+ statusCode: _response.error.statusCode,
355
+ body: _response.error.body,
356
+ rawResponse: _response.rawResponse,
357
+ });
358
+ }
359
+ }
360
+
361
+ switch (_response.error.reason) {
362
+ case "non-json":
363
+ throw new errors.ApiError({
364
+ statusCode: _response.error.statusCode,
365
+ body: _response.error.rawBody,
366
+ rawResponse: _response.rawResponse,
367
+ });
368
+ case "timeout":
369
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling POST /env/{job_id}/close.");
370
+ case "unknown":
371
+ throw new errors.ApiError({
372
+ message: _response.error.errorMessage,
373
+ rawResponse: _response.rawResponse,
374
+ });
375
+ }
376
+ }
377
+
378
+ /**
379
+ * @param {string} jobId
380
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
381
+ *
382
+ * @throws {@link Api.BadRequestError}
383
+ *
384
+ * @example
385
+ * await client.backupEnvironment("job_id")
386
+ */
387
+ public backupEnvironment(
388
+ jobId: string,
389
+ requestOptions?: ApiClient.RequestOptions,
390
+ ): core.HttpResponsePromise<Api.BackupEnvironmentResponse> {
391
+ return core.HttpResponsePromise.fromPromise(this.__backupEnvironment(jobId, requestOptions));
392
+ }
393
+
394
+ private async __backupEnvironment(
395
+ jobId: string,
396
+ requestOptions?: ApiClient.RequestOptions,
397
+ ): Promise<core.WithRawResponse<Api.BackupEnvironmentResponse>> {
398
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
399
+ const _response = await core.fetcher({
400
+ url: core.url.join(
401
+ (await core.Supplier.get(this._options.baseUrl)) ??
402
+ (await core.Supplier.get(this._options.environment)),
403
+ `env/${core.url.encodePathParam(jobId)}/backup`,
404
+ ),
405
+ method: "POST",
406
+ headers: _headers,
407
+ queryParameters: requestOptions?.queryParams,
408
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
409
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
410
+ abortSignal: requestOptions?.abortSignal,
411
+ });
412
+ if (_response.ok) {
413
+ return { data: _response.body as Api.BackupEnvironmentResponse, rawResponse: _response.rawResponse };
414
+ }
415
+
416
+ if (_response.error.reason === "status-code") {
417
+ switch (_response.error.statusCode) {
418
+ case 400:
419
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
420
+ default:
421
+ throw new errors.ApiError({
422
+ statusCode: _response.error.statusCode,
423
+ body: _response.error.body,
424
+ rawResponse: _response.rawResponse,
425
+ });
426
+ }
427
+ }
428
+
429
+ switch (_response.error.reason) {
430
+ case "non-json":
431
+ throw new errors.ApiError({
432
+ statusCode: _response.error.statusCode,
433
+ body: _response.error.rawBody,
434
+ rawResponse: _response.rawResponse,
435
+ });
436
+ case "timeout":
437
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling POST /env/{job_id}/backup.");
438
+ case "unknown":
439
+ throw new errors.ApiError({
440
+ message: _response.error.errorMessage,
441
+ rawResponse: _response.rawResponse,
442
+ });
443
+ }
444
+ }
445
+
446
+ /**
447
+ * @param {string} jobId
448
+ * @param {Api.ResetEnvironmentRequest} request
449
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
450
+ *
451
+ * @throws {@link Api.BadRequestError}
452
+ *
453
+ * @example
454
+ * await client.resetEnvironment("job_id")
455
+ */
456
+ public resetEnvironment(
457
+ jobId: string,
458
+ request: Api.ResetEnvironmentRequest = {},
459
+ requestOptions?: ApiClient.RequestOptions,
460
+ ): core.HttpResponsePromise<Api.ResetEnvironmentResponse> {
461
+ return core.HttpResponsePromise.fromPromise(this.__resetEnvironment(jobId, request, requestOptions));
462
+ }
463
+
464
+ private async __resetEnvironment(
465
+ jobId: string,
466
+ request: Api.ResetEnvironmentRequest = {},
467
+ requestOptions?: ApiClient.RequestOptions,
468
+ ): Promise<core.WithRawResponse<Api.ResetEnvironmentResponse>> {
469
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
470
+ const _response = await core.fetcher({
471
+ url: core.url.join(
472
+ (await core.Supplier.get(this._options.baseUrl)) ??
473
+ (await core.Supplier.get(this._options.environment)),
474
+ `env/${core.url.encodePathParam(jobId)}/reset`,
475
+ ),
476
+ method: "POST",
477
+ headers: _headers,
478
+ contentType: "application/json",
479
+ queryParameters: requestOptions?.queryParams,
480
+ requestType: "json",
481
+ body: request,
482
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
483
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
484
+ abortSignal: requestOptions?.abortSignal,
485
+ });
486
+ if (_response.ok) {
487
+ return { data: _response.body as Api.ResetEnvironmentResponse, rawResponse: _response.rawResponse };
488
+ }
489
+
490
+ if (_response.error.reason === "status-code") {
491
+ switch (_response.error.statusCode) {
492
+ case 400:
493
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
494
+ default:
495
+ throw new errors.ApiError({
496
+ statusCode: _response.error.statusCode,
497
+ body: _response.error.body,
498
+ rawResponse: _response.rawResponse,
499
+ });
500
+ }
501
+ }
502
+
503
+ switch (_response.error.reason) {
504
+ case "non-json":
505
+ throw new errors.ApiError({
506
+ statusCode: _response.error.statusCode,
507
+ body: _response.error.rawBody,
508
+ rawResponse: _response.rawResponse,
509
+ });
510
+ case "timeout":
511
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling POST /env/{job_id}/reset.");
512
+ case "unknown":
513
+ throw new errors.ApiError({
514
+ message: _response.error.errorMessage,
515
+ rawResponse: _response.rawResponse,
516
+ });
517
+ }
518
+ }
519
+
520
+ /**
521
+ * @param {string} jobId
522
+ * @param {Api.GetEnvironmentStateRequest} request
523
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
524
+ *
525
+ * @throws {@link Api.BadRequestError}
526
+ *
527
+ * @example
528
+ * await client.getEnvironmentState("job_id", {
529
+ * merge_mutations: true
530
+ * })
531
+ */
532
+ public getEnvironmentState(
533
+ jobId: string,
534
+ request: Api.GetEnvironmentStateRequest = {},
535
+ requestOptions?: ApiClient.RequestOptions,
536
+ ): core.HttpResponsePromise<Api.EnvironmentStateResponse> {
537
+ return core.HttpResponsePromise.fromPromise(this.__getEnvironmentState(jobId, request, requestOptions));
538
+ }
539
+
540
+ private async __getEnvironmentState(
541
+ jobId: string,
542
+ request: Api.GetEnvironmentStateRequest = {},
543
+ requestOptions?: ApiClient.RequestOptions,
544
+ ): Promise<core.WithRawResponse<Api.EnvironmentStateResponse>> {
545
+ const { merge_mutations: mergeMutations } = request;
546
+ const _queryParams: Record<string, string | string[] | object | object[] | null> = {};
547
+ if (mergeMutations != null) {
548
+ _queryParams.merge_mutations = mergeMutations.toString();
549
+ }
550
+
551
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
552
+ const _response = await core.fetcher({
553
+ url: core.url.join(
554
+ (await core.Supplier.get(this._options.baseUrl)) ??
555
+ (await core.Supplier.get(this._options.environment)),
556
+ `env/${core.url.encodePathParam(jobId)}/state`,
557
+ ),
558
+ method: "GET",
559
+ headers: _headers,
560
+ queryParameters: { ..._queryParams, ...requestOptions?.queryParams },
561
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
562
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
563
+ abortSignal: requestOptions?.abortSignal,
564
+ });
565
+ if (_response.ok) {
566
+ return { data: _response.body as Api.EnvironmentStateResponse, rawResponse: _response.rawResponse };
567
+ }
568
+
569
+ if (_response.error.reason === "status-code") {
570
+ switch (_response.error.statusCode) {
571
+ case 400:
572
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
573
+ default:
574
+ throw new errors.ApiError({
575
+ statusCode: _response.error.statusCode,
576
+ body: _response.error.body,
577
+ rawResponse: _response.rawResponse,
578
+ });
579
+ }
580
+ }
581
+
582
+ switch (_response.error.reason) {
583
+ case "non-json":
584
+ throw new errors.ApiError({
585
+ statusCode: _response.error.statusCode,
586
+ body: _response.error.rawBody,
587
+ rawResponse: _response.rawResponse,
588
+ });
589
+ case "timeout":
590
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling GET /env/{job_id}/state.");
591
+ case "unknown":
592
+ throw new errors.ApiError({
593
+ message: _response.error.errorMessage,
594
+ rawResponse: _response.rawResponse,
595
+ });
596
+ }
597
+ }
598
+
599
+ /**
600
+ * @param {string} jobId
601
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
602
+ *
603
+ * @throws {@link Api.BadRequestError}
604
+ *
605
+ * @example
606
+ * await client.getWorkerReady("job_id")
607
+ */
608
+ public getWorkerReady(
609
+ jobId: string,
610
+ requestOptions?: ApiClient.RequestOptions,
611
+ ): core.HttpResponsePromise<Api.WorkerReadyResponse> {
612
+ return core.HttpResponsePromise.fromPromise(this.__getWorkerReady(jobId, requestOptions));
613
+ }
614
+
615
+ private async __getWorkerReady(
616
+ jobId: string,
617
+ requestOptions?: ApiClient.RequestOptions,
618
+ ): Promise<core.WithRawResponse<Api.WorkerReadyResponse>> {
619
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
620
+ const _response = await core.fetcher({
621
+ url: core.url.join(
622
+ (await core.Supplier.get(this._options.baseUrl)) ??
623
+ (await core.Supplier.get(this._options.environment)),
624
+ `env/${core.url.encodePathParam(jobId)}/worker_ready`,
625
+ ),
626
+ method: "GET",
627
+ headers: _headers,
628
+ queryParameters: requestOptions?.queryParams,
629
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
630
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
631
+ abortSignal: requestOptions?.abortSignal,
632
+ });
633
+ if (_response.ok) {
634
+ return { data: _response.body as Api.WorkerReadyResponse, rawResponse: _response.rawResponse };
635
+ }
636
+
637
+ if (_response.error.reason === "status-code") {
638
+ switch (_response.error.statusCode) {
639
+ case 400:
640
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
641
+ default:
642
+ throw new errors.ApiError({
643
+ statusCode: _response.error.statusCode,
644
+ body: _response.error.body,
645
+ rawResponse: _response.rawResponse,
646
+ });
647
+ }
648
+ }
649
+
650
+ switch (_response.error.reason) {
651
+ case "non-json":
652
+ throw new errors.ApiError({
653
+ statusCode: _response.error.statusCode,
654
+ body: _response.error.rawBody,
655
+ rawResponse: _response.rawResponse,
656
+ });
657
+ case "timeout":
658
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling GET /env/{job_id}/worker_ready.");
659
+ case "unknown":
660
+ throw new errors.ApiError({
661
+ message: _response.error.errorMessage,
662
+ rawResponse: _response.rawResponse,
663
+ });
664
+ }
665
+ }
666
+
667
+ /**
668
+ * @param {string} jobId
669
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
670
+ *
671
+ * @throws {@link Api.BadRequestError}
672
+ *
673
+ * @example
674
+ * await client.sendHeartbeat("job_id")
675
+ */
676
+ public sendHeartbeat(
677
+ jobId: string,
678
+ requestOptions?: ApiClient.RequestOptions,
679
+ ): core.HttpResponsePromise<Api.HeartbeatResponse> {
680
+ return core.HttpResponsePromise.fromPromise(this.__sendHeartbeat(jobId, requestOptions));
681
+ }
682
+
683
+ private async __sendHeartbeat(
684
+ jobId: string,
685
+ requestOptions?: ApiClient.RequestOptions,
686
+ ): Promise<core.WithRawResponse<Api.HeartbeatResponse>> {
687
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
688
+ const _response = await core.fetcher({
689
+ url: core.url.join(
690
+ (await core.Supplier.get(this._options.baseUrl)) ??
691
+ (await core.Supplier.get(this._options.environment)),
692
+ `env/${core.url.encodePathParam(jobId)}/heartbeat`,
693
+ ),
694
+ method: "POST",
695
+ headers: _headers,
696
+ queryParameters: requestOptions?.queryParams,
697
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
698
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
699
+ abortSignal: requestOptions?.abortSignal,
700
+ });
701
+ if (_response.ok) {
702
+ return { data: _response.body as Api.HeartbeatResponse, rawResponse: _response.rawResponse };
703
+ }
704
+
705
+ if (_response.error.reason === "status-code") {
706
+ switch (_response.error.statusCode) {
707
+ case 400:
708
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
709
+ default:
710
+ throw new errors.ApiError({
711
+ statusCode: _response.error.statusCode,
712
+ body: _response.error.body,
713
+ rawResponse: _response.rawResponse,
714
+ });
715
+ }
716
+ }
717
+
718
+ switch (_response.error.reason) {
719
+ case "non-json":
720
+ throw new errors.ApiError({
721
+ statusCode: _response.error.statusCode,
722
+ body: _response.error.rawBody,
723
+ rawResponse: _response.rawResponse,
724
+ });
725
+ case "timeout":
726
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling POST /env/{job_id}/heartbeat.");
727
+ case "unknown":
728
+ throw new errors.ApiError({
729
+ message: _response.error.errorMessage,
730
+ rawResponse: _response.rawResponse,
731
+ });
732
+ }
733
+ }
734
+
735
+ /**
736
+ * @param {string} jobId
737
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
738
+ *
739
+ * @throws {@link Api.BadRequestError}
740
+ *
741
+ * @example
742
+ * await client.getActiveSession("job_id")
743
+ */
744
+ public getActiveSession(
745
+ jobId: string,
746
+ requestOptions?: ApiClient.RequestOptions,
747
+ ): core.HttpResponsePromise<Api.ActiveSessionResponse> {
748
+ return core.HttpResponsePromise.fromPromise(this.__getActiveSession(jobId, requestOptions));
749
+ }
750
+
751
+ private async __getActiveSession(
752
+ jobId: string,
753
+ requestOptions?: ApiClient.RequestOptions,
754
+ ): Promise<core.WithRawResponse<Api.ActiveSessionResponse>> {
755
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
756
+ const _response = await core.fetcher({
757
+ url: core.url.join(
758
+ (await core.Supplier.get(this._options.baseUrl)) ??
759
+ (await core.Supplier.get(this._options.environment)),
760
+ `env/${core.url.encodePathParam(jobId)}/active_session`,
761
+ ),
762
+ method: "GET",
763
+ headers: _headers,
764
+ queryParameters: requestOptions?.queryParams,
765
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
766
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
767
+ abortSignal: requestOptions?.abortSignal,
768
+ });
769
+ if (_response.ok) {
770
+ return { data: _response.body as Api.ActiveSessionResponse, rawResponse: _response.rawResponse };
771
+ }
772
+
773
+ if (_response.error.reason === "status-code") {
774
+ switch (_response.error.statusCode) {
775
+ case 400:
776
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
777
+ default:
778
+ throw new errors.ApiError({
779
+ statusCode: _response.error.statusCode,
780
+ body: _response.error.body,
781
+ rawResponse: _response.rawResponse,
782
+ });
783
+ }
784
+ }
785
+
786
+ switch (_response.error.reason) {
787
+ case "non-json":
788
+ throw new errors.ApiError({
789
+ statusCode: _response.error.statusCode,
790
+ body: _response.error.rawBody,
791
+ rawResponse: _response.rawResponse,
792
+ });
793
+ case "timeout":
794
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling GET /env/{job_id}/active_session.");
795
+ case "unknown":
796
+ throw new errors.ApiError({
797
+ message: _response.error.errorMessage,
798
+ rawResponse: _response.rawResponse,
799
+ });
800
+ }
801
+ }
802
+
803
+ /**
804
+ * @param {string} sessionId
805
+ * @param {Api.EvaluateRequest} request
806
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
807
+ *
808
+ * @throws {@link Api.BadRequestError}
809
+ *
810
+ * @example
811
+ * await client.evaluateSession("session_id")
812
+ */
813
+ public evaluateSession(
814
+ sessionId: string,
815
+ request: Api.EvaluateRequest = {},
816
+ requestOptions?: ApiClient.RequestOptions,
817
+ ): core.HttpResponsePromise<Api.EvaluateResponse> {
818
+ return core.HttpResponsePromise.fromPromise(this.__evaluateSession(sessionId, request, requestOptions));
819
+ }
820
+
821
+ private async __evaluateSession(
822
+ sessionId: string,
823
+ request: Api.EvaluateRequest = {},
824
+ requestOptions?: ApiClient.RequestOptions,
825
+ ): Promise<core.WithRawResponse<Api.EvaluateResponse>> {
826
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
827
+ const _response = await core.fetcher({
828
+ url: core.url.join(
829
+ (await core.Supplier.get(this._options.baseUrl)) ??
830
+ (await core.Supplier.get(this._options.environment)),
831
+ `env/session/${core.url.encodePathParam(sessionId)}/evaluate`,
832
+ ),
833
+ method: "POST",
834
+ headers: _headers,
835
+ contentType: "application/json",
836
+ queryParameters: requestOptions?.queryParams,
837
+ requestType: "json",
838
+ body: request,
839
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
840
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
841
+ abortSignal: requestOptions?.abortSignal,
842
+ });
843
+ if (_response.ok) {
844
+ return { data: _response.body as Api.EvaluateResponse, rawResponse: _response.rawResponse };
845
+ }
846
+
847
+ if (_response.error.reason === "status-code") {
848
+ switch (_response.error.statusCode) {
849
+ case 400:
850
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
851
+ default:
852
+ throw new errors.ApiError({
853
+ statusCode: _response.error.statusCode,
854
+ body: _response.error.body,
855
+ rawResponse: _response.rawResponse,
856
+ });
857
+ }
858
+ }
859
+
860
+ switch (_response.error.reason) {
861
+ case "non-json":
862
+ throw new errors.ApiError({
863
+ statusCode: _response.error.statusCode,
864
+ body: _response.error.rawBody,
865
+ rawResponse: _response.rawResponse,
866
+ });
867
+ case "timeout":
868
+ throw new errors.ApiTimeoutError(
869
+ "Timeout exceeded when calling POST /env/session/{session_id}/evaluate.",
870
+ );
871
+ case "unknown":
872
+ throw new errors.ApiError({
873
+ message: _response.error.errorMessage,
874
+ rawResponse: _response.rawResponse,
875
+ });
876
+ }
877
+ }
878
+
879
+ /**
880
+ * @param {string} sessionId
881
+ * @param {Api.PostEvaluationResultRequest} request
882
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
883
+ *
884
+ * @throws {@link Api.BadRequestError}
885
+ *
886
+ * @example
887
+ * await client.postEvaluationResult("session_id", {
888
+ * success: true
889
+ * })
890
+ */
891
+ public postEvaluationResult(
892
+ sessionId: string,
893
+ request: Api.PostEvaluationResultRequest,
894
+ requestOptions?: ApiClient.RequestOptions,
895
+ ): core.HttpResponsePromise<Api.PostEvaluationResultResponse> {
896
+ return core.HttpResponsePromise.fromPromise(this.__postEvaluationResult(sessionId, request, requestOptions));
897
+ }
898
+
899
+ private async __postEvaluationResult(
900
+ sessionId: string,
901
+ request: Api.PostEvaluationResultRequest,
902
+ requestOptions?: ApiClient.RequestOptions,
903
+ ): Promise<core.WithRawResponse<Api.PostEvaluationResultResponse>> {
904
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
905
+ const _response = await core.fetcher({
906
+ url: core.url.join(
907
+ (await core.Supplier.get(this._options.baseUrl)) ??
908
+ (await core.Supplier.get(this._options.environment)),
909
+ `env/session/${core.url.encodePathParam(sessionId)}/score`,
910
+ ),
911
+ method: "POST",
912
+ headers: _headers,
913
+ contentType: "application/json",
914
+ queryParameters: requestOptions?.queryParams,
915
+ requestType: "json",
916
+ body: request,
917
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
918
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
919
+ abortSignal: requestOptions?.abortSignal,
920
+ });
921
+ if (_response.ok) {
922
+ return { data: _response.body as Api.PostEvaluationResultResponse, rawResponse: _response.rawResponse };
923
+ }
924
+
925
+ if (_response.error.reason === "status-code") {
926
+ switch (_response.error.statusCode) {
927
+ case 400:
928
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
929
+ default:
930
+ throw new errors.ApiError({
931
+ statusCode: _response.error.statusCode,
932
+ body: _response.error.body,
933
+ rawResponse: _response.rawResponse,
934
+ });
935
+ }
936
+ }
937
+
938
+ switch (_response.error.reason) {
939
+ case "non-json":
940
+ throw new errors.ApiError({
941
+ statusCode: _response.error.statusCode,
942
+ body: _response.error.rawBody,
943
+ rawResponse: _response.rawResponse,
944
+ });
945
+ case "timeout":
946
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling POST /env/session/{session_id}/score.");
947
+ case "unknown":
948
+ throw new errors.ApiError({
949
+ message: _response.error.errorMessage,
950
+ rawResponse: _response.rawResponse,
951
+ });
952
+ }
953
+ }
954
+
955
+ /**
956
+ * @param {string} sessionId
957
+ * @param {Api.LogRequest} request
958
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
959
+ *
960
+ * @throws {@link Api.BadRequestError}
961
+ *
962
+ * @example
963
+ * await client.logMessage("session_id", {
964
+ * source: "source",
965
+ * type: "type",
966
+ * message: {
967
+ * "key": "value"
968
+ * },
969
+ * timestamp: "timestamp"
970
+ * })
971
+ */
972
+ public logMessage(
973
+ sessionId: string,
974
+ request: Api.LogRequest,
975
+ requestOptions?: ApiClient.RequestOptions,
976
+ ): core.HttpResponsePromise<Api.LogResponse> {
977
+ return core.HttpResponsePromise.fromPromise(this.__logMessage(sessionId, request, requestOptions));
978
+ }
979
+
980
+ private async __logMessage(
981
+ sessionId: string,
982
+ request: Api.LogRequest,
983
+ requestOptions?: ApiClient.RequestOptions,
984
+ ): Promise<core.WithRawResponse<Api.LogResponse>> {
985
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
986
+ const _response = await core.fetcher({
987
+ url: core.url.join(
988
+ (await core.Supplier.get(this._options.baseUrl)) ??
989
+ (await core.Supplier.get(this._options.environment)),
990
+ `env/${core.url.encodePathParam(sessionId)}/log`,
991
+ ),
992
+ method: "POST",
993
+ headers: _headers,
994
+ contentType: "application/json",
995
+ queryParameters: requestOptions?.queryParams,
996
+ requestType: "json",
997
+ body: request,
998
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
999
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
1000
+ abortSignal: requestOptions?.abortSignal,
1001
+ });
1002
+ if (_response.ok) {
1003
+ return { data: _response.body as Api.LogResponse, rawResponse: _response.rawResponse };
1004
+ }
1005
+
1006
+ if (_response.error.reason === "status-code") {
1007
+ switch (_response.error.statusCode) {
1008
+ case 400:
1009
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
1010
+ default:
1011
+ throw new errors.ApiError({
1012
+ statusCode: _response.error.statusCode,
1013
+ body: _response.error.body,
1014
+ rawResponse: _response.rawResponse,
1015
+ });
1016
+ }
1017
+ }
1018
+
1019
+ switch (_response.error.reason) {
1020
+ case "non-json":
1021
+ throw new errors.ApiError({
1022
+ statusCode: _response.error.statusCode,
1023
+ body: _response.error.rawBody,
1024
+ rawResponse: _response.rawResponse,
1025
+ });
1026
+ case "timeout":
1027
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling POST /env/{session_id}/log.");
1028
+ case "unknown":
1029
+ throw new errors.ApiError({
1030
+ message: _response.error.errorMessage,
1031
+ rawResponse: _response.rawResponse,
1032
+ });
1033
+ }
1034
+ }
1035
+
1036
+ /**
1037
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
1038
+ *
1039
+ * @throws {@link Api.BadRequestError}
1040
+ *
1041
+ * @example
1042
+ * await client.listSimulators()
1043
+ */
1044
+ public listSimulators(requestOptions?: ApiClient.RequestOptions): core.HttpResponsePromise<Api.Simulator[]> {
1045
+ return core.HttpResponsePromise.fromPromise(this.__listSimulators(requestOptions));
1046
+ }
1047
+
1048
+ private async __listSimulators(
1049
+ requestOptions?: ApiClient.RequestOptions,
1050
+ ): Promise<core.WithRawResponse<Api.Simulator[]>> {
1051
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
1052
+ const _response = await core.fetcher({
1053
+ url: core.url.join(
1054
+ (await core.Supplier.get(this._options.baseUrl)) ??
1055
+ (await core.Supplier.get(this._options.environment)),
1056
+ "env/simulators",
1057
+ ),
1058
+ method: "GET",
1059
+ headers: _headers,
1060
+ queryParameters: requestOptions?.queryParams,
1061
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
1062
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
1063
+ abortSignal: requestOptions?.abortSignal,
1064
+ });
1065
+ if (_response.ok) {
1066
+ return { data: _response.body as Api.Simulator[], rawResponse: _response.rawResponse };
1067
+ }
1068
+
1069
+ if (_response.error.reason === "status-code") {
1070
+ switch (_response.error.statusCode) {
1071
+ case 400:
1072
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
1073
+ default:
1074
+ throw new errors.ApiError({
1075
+ statusCode: _response.error.statusCode,
1076
+ body: _response.error.body,
1077
+ rawResponse: _response.rawResponse,
1078
+ });
1079
+ }
1080
+ }
1081
+
1082
+ switch (_response.error.reason) {
1083
+ case "non-json":
1084
+ throw new errors.ApiError({
1085
+ statusCode: _response.error.statusCode,
1086
+ body: _response.error.rawBody,
1087
+ rawResponse: _response.rawResponse,
1088
+ });
1089
+ case "timeout":
1090
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling GET /env/simulators.");
1091
+ case "unknown":
1092
+ throw new errors.ApiError({
1093
+ message: _response.error.errorMessage,
1094
+ rawResponse: _response.rawResponse,
1095
+ });
1096
+ }
1097
+ }
1098
+
1099
+ /**
1100
+ * @param {Api.GetTestCasesRequest} request
1101
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
1102
+ *
1103
+ * @throws {@link Api.BadRequestError}
1104
+ *
1105
+ * @example
1106
+ * await client.getTestCases({
1107
+ * simulator_name: "simulator_name",
1108
+ * simulator_id: "simulator_id",
1109
+ * page_size: 1
1110
+ * })
1111
+ */
1112
+ public getTestCases(
1113
+ request: Api.GetTestCasesRequest = {},
1114
+ requestOptions?: ApiClient.RequestOptions,
1115
+ ): core.HttpResponsePromise<Api.TestCasesResponse> {
1116
+ return core.HttpResponsePromise.fromPromise(this.__getTestCases(request, requestOptions));
1117
+ }
1118
+
1119
+ private async __getTestCases(
1120
+ request: Api.GetTestCasesRequest = {},
1121
+ requestOptions?: ApiClient.RequestOptions,
1122
+ ): Promise<core.WithRawResponse<Api.TestCasesResponse>> {
1123
+ const { simulator_name: simulatorName, simulator_id: simulatorId, page_size: pageSize } = request;
1124
+ const _queryParams: Record<string, string | string[] | object | object[] | null> = {};
1125
+ if (simulatorName != null) {
1126
+ _queryParams.simulator_name = simulatorName;
1127
+ }
1128
+
1129
+ if (simulatorId != null) {
1130
+ _queryParams.simulator_id = simulatorId;
1131
+ }
1132
+
1133
+ if (pageSize != null) {
1134
+ _queryParams.page_size = pageSize.toString();
1135
+ }
1136
+
1137
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
1138
+ const _response = await core.fetcher({
1139
+ url: core.url.join(
1140
+ (await core.Supplier.get(this._options.baseUrl)) ??
1141
+ (await core.Supplier.get(this._options.environment)),
1142
+ "testcases",
1143
+ ),
1144
+ method: "GET",
1145
+ headers: _headers,
1146
+ queryParameters: { ..._queryParams, ...requestOptions?.queryParams },
1147
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
1148
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
1149
+ abortSignal: requestOptions?.abortSignal,
1150
+ });
1151
+ if (_response.ok) {
1152
+ return { data: _response.body as Api.TestCasesResponse, rawResponse: _response.rawResponse };
1153
+ }
1154
+
1155
+ if (_response.error.reason === "status-code") {
1156
+ switch (_response.error.statusCode) {
1157
+ case 400:
1158
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
1159
+ default:
1160
+ throw new errors.ApiError({
1161
+ statusCode: _response.error.statusCode,
1162
+ body: _response.error.body,
1163
+ rawResponse: _response.rawResponse,
1164
+ });
1165
+ }
1166
+ }
1167
+
1168
+ switch (_response.error.reason) {
1169
+ case "non-json":
1170
+ throw new errors.ApiError({
1171
+ statusCode: _response.error.statusCode,
1172
+ body: _response.error.rawBody,
1173
+ rawResponse: _response.rawResponse,
1174
+ });
1175
+ case "timeout":
1176
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling GET /testcases.");
1177
+ case "unknown":
1178
+ throw new errors.ApiError({
1179
+ message: _response.error.errorMessage,
1180
+ rawResponse: _response.rawResponse,
1181
+ });
1182
+ }
1183
+ }
1184
+
1185
+ /**
1186
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
1187
+ *
1188
+ * @throws {@link Api.BadRequestError}
1189
+ *
1190
+ * @example
1191
+ * await client.getRunningSessionsCount()
1192
+ */
1193
+ public getRunningSessionsCount(
1194
+ requestOptions?: ApiClient.RequestOptions,
1195
+ ): core.HttpResponsePromise<Api.RunningSessionsCountResponse> {
1196
+ return core.HttpResponsePromise.fromPromise(this.__getRunningSessionsCount(requestOptions));
1197
+ }
1198
+
1199
+ private async __getRunningSessionsCount(
1200
+ requestOptions?: ApiClient.RequestOptions,
1201
+ ): Promise<core.WithRawResponse<Api.RunningSessionsCountResponse>> {
1202
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
1203
+ const _response = await core.fetcher({
1204
+ url: core.url.join(
1205
+ (await core.Supplier.get(this._options.baseUrl)) ??
1206
+ (await core.Supplier.get(this._options.environment)),
1207
+ "user/organization/running-sessions",
1208
+ ),
1209
+ method: "GET",
1210
+ headers: _headers,
1211
+ queryParameters: requestOptions?.queryParams,
1212
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
1213
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
1214
+ abortSignal: requestOptions?.abortSignal,
1215
+ });
1216
+ if (_response.ok) {
1217
+ return { data: _response.body as Api.RunningSessionsCountResponse, rawResponse: _response.rawResponse };
1218
+ }
1219
+
1220
+ if (_response.error.reason === "status-code") {
1221
+ switch (_response.error.statusCode) {
1222
+ case 400:
1223
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
1224
+ default:
1225
+ throw new errors.ApiError({
1226
+ statusCode: _response.error.statusCode,
1227
+ body: _response.error.body,
1228
+ rawResponse: _response.rawResponse,
1229
+ });
1230
+ }
1231
+ }
1232
+
1233
+ switch (_response.error.reason) {
1234
+ case "non-json":
1235
+ throw new errors.ApiError({
1236
+ statusCode: _response.error.statusCode,
1237
+ body: _response.error.rawBody,
1238
+ rawResponse: _response.rawResponse,
1239
+ });
1240
+ case "timeout":
1241
+ throw new errors.ApiTimeoutError(
1242
+ "Timeout exceeded when calling GET /user/organization/running-sessions.",
1243
+ );
1244
+ case "unknown":
1245
+ throw new errors.ApiError({
1246
+ message: _response.error.errorMessage,
1247
+ rawResponse: _response.rawResponse,
1248
+ });
1249
+ }
1250
+ }
1251
+
1252
+ /**
1253
+ * Monitor the progress of long-running operations (sandbox creation, setup, etc.) via SSE.
1254
+ *
1255
+ * **Event Flow:**
1256
+ * 1. First event: `type: "connected"` - Connection established, continue listening
1257
+ * 2. Progress events: `type: "progress"` with `message` field - Operation updates
1258
+ * 3. Completion: `type: "run_result"` or `"ssh_result"` - Operation finished
1259
+ * - Check `success: true` for successful completion
1260
+ * - Check `error` or `message` field if `success: false`
1261
+ * 4. Error: `type: "error"` - Operation failed, check `error` or `message` field
1262
+ *
1263
+ * **Data Format:**
1264
+ * SSE data is base64-encoded JSON. Decode it to get the OperationEvent object.
1265
+ *
1266
+ * **Client Implementation Required:**
1267
+ * - Decode base64 data from each SSE event
1268
+ * - Parse JSON to OperationEvent
1269
+ * - Check event.type and event.success to determine operation status
1270
+ * - Continue listening until receiving a terminal event (run_result, ssh_result, or error)
1271
+ * - Return success/error based on the terminal event
1272
+ *
1273
+ * **Example (pseudo-code):**
1274
+ * ```
1275
+ * for event in stream:
1276
+ * decoded = base64_decode(event.data)
1277
+ * operation_event = json_parse(decoded)
1278
+ *
1279
+ * if operation_event.type == "connected":
1280
+ * continue # Keep listening
1281
+ * elif operation_event.type in ["run_result", "ssh_result"]:
1282
+ * if operation_event.success:
1283
+ * return SUCCESS
1284
+ * else:
1285
+ * return ERROR(operation_event.error || operation_event.message)
1286
+ * elif operation_event.type == "error":
1287
+ * return ERROR(operation_event.error || operation_event.message)
1288
+ * ```
1289
+ */
1290
+ public monitorOperation(
1291
+ correlationId: string,
1292
+ requestOptions?: ApiClient.RequestOptions,
1293
+ ): core.HttpResponsePromise<core.Stream<Api.OperationEvent>> {
1294
+ return core.HttpResponsePromise.fromPromise(this.__monitorOperation(correlationId, requestOptions));
1295
+ }
1296
+
1297
+ private async __monitorOperation(
1298
+ correlationId: string,
1299
+ requestOptions?: ApiClient.RequestOptions,
1300
+ ): Promise<core.WithRawResponse<core.Stream<Api.OperationEvent>>> {
1301
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
1302
+ const _response = await core.fetcher<ReadableStream>({
1303
+ url: core.url.join(
1304
+ (await core.Supplier.get(this._options.baseUrl)) ??
1305
+ (await core.Supplier.get(this._options.environment)),
1306
+ `public-build/events/${core.url.encodePathParam(correlationId)}`,
1307
+ ),
1308
+ method: "GET",
1309
+ headers: _headers,
1310
+ queryParameters: requestOptions?.queryParams,
1311
+ responseType: "sse",
1312
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
1313
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
1314
+ abortSignal: requestOptions?.abortSignal,
1315
+ });
1316
+ if (_response.ok) {
1317
+ return {
1318
+ data: new core.Stream({
1319
+ stream: _response.body,
1320
+ parse: (data) => data as any,
1321
+ signal: requestOptions?.abortSignal,
1322
+ eventShape: {
1323
+ type: "sse",
1324
+ streamTerminator: "[DONE]",
1325
+ },
1326
+ }),
1327
+ rawResponse: _response.rawResponse,
1328
+ };
1329
+ }
1330
+
1331
+ if (_response.error.reason === "status-code") {
1332
+ switch (_response.error.statusCode) {
1333
+ case 400:
1334
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
1335
+ default:
1336
+ throw new errors.ApiError({
1337
+ statusCode: _response.error.statusCode,
1338
+ body: _response.error.body,
1339
+ rawResponse: _response.rawResponse,
1340
+ });
1341
+ }
1342
+ }
1343
+
1344
+ switch (_response.error.reason) {
1345
+ case "non-json":
1346
+ throw new errors.ApiError({
1347
+ statusCode: _response.error.statusCode,
1348
+ body: _response.error.rawBody,
1349
+ rawResponse: _response.rawResponse,
1350
+ });
1351
+ case "timeout":
1352
+ throw new errors.ApiTimeoutError(
1353
+ "Timeout exceeded when calling GET /public-build/events/{correlation_id}.",
1354
+ );
1355
+ case "unknown":
1356
+ throw new errors.ApiError({
1357
+ message: _response.error.errorMessage,
1358
+ rawResponse: _response.rawResponse,
1359
+ });
1360
+ }
1361
+ }
1362
+
1363
+ /**
1364
+ * @param {Api.CreateSandboxRequest} request
1365
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
1366
+ *
1367
+ * @throws {@link Api.BadRequestError}
1368
+ *
1369
+ * @example
1370
+ * await client.createSandbox({
1371
+ * dataset: "dataset",
1372
+ * plato_dataset_config: {
1373
+ * compute: {
1374
+ * cpus: 1,
1375
+ * memory: 1,
1376
+ * disk: 1,
1377
+ * app_port: 1,
1378
+ * plato_messaging_port: 1
1379
+ * },
1380
+ * metadata: {
1381
+ * name: "name"
1382
+ * }
1383
+ * }
1384
+ * })
1385
+ */
1386
+ public createSandbox(
1387
+ request: Api.CreateSandboxRequest,
1388
+ requestOptions?: ApiClient.RequestOptions,
1389
+ ): core.HttpResponsePromise<Api.CreateSandboxResponse> {
1390
+ return core.HttpResponsePromise.fromPromise(this.__createSandbox(request, requestOptions));
1391
+ }
1392
+
1393
+ private async __createSandbox(
1394
+ request: Api.CreateSandboxRequest,
1395
+ requestOptions?: ApiClient.RequestOptions,
1396
+ ): Promise<core.WithRawResponse<Api.CreateSandboxResponse>> {
1397
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
1398
+ const _response = await core.fetcher({
1399
+ url: core.url.join(
1400
+ (await core.Supplier.get(this._options.baseUrl)) ??
1401
+ (await core.Supplier.get(this._options.environment)),
1402
+ "public-build/vm/create",
1403
+ ),
1404
+ method: "POST",
1405
+ headers: _headers,
1406
+ contentType: "application/json",
1407
+ queryParameters: requestOptions?.queryParams,
1408
+ requestType: "json",
1409
+ body: request,
1410
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
1411
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
1412
+ abortSignal: requestOptions?.abortSignal,
1413
+ });
1414
+ if (_response.ok) {
1415
+ return { data: _response.body as Api.CreateSandboxResponse, rawResponse: _response.rawResponse };
1416
+ }
1417
+
1418
+ if (_response.error.reason === "status-code") {
1419
+ switch (_response.error.statusCode) {
1420
+ case 400:
1421
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
1422
+ default:
1423
+ throw new errors.ApiError({
1424
+ statusCode: _response.error.statusCode,
1425
+ body: _response.error.body,
1426
+ rawResponse: _response.rawResponse,
1427
+ });
1428
+ }
1429
+ }
1430
+
1431
+ switch (_response.error.reason) {
1432
+ case "non-json":
1433
+ throw new errors.ApiError({
1434
+ statusCode: _response.error.statusCode,
1435
+ body: _response.error.rawBody,
1436
+ rawResponse: _response.rawResponse,
1437
+ });
1438
+ case "timeout":
1439
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling POST /public-build/vm/create.");
1440
+ case "unknown":
1441
+ throw new errors.ApiError({
1442
+ message: _response.error.errorMessage,
1443
+ rawResponse: _response.rawResponse,
1444
+ });
1445
+ }
1446
+ }
1447
+
1448
+ /**
1449
+ * @param {string} jobId
1450
+ * @param {Api.SetupSandboxRequest} request
1451
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
1452
+ *
1453
+ * @throws {@link Api.BadRequestError}
1454
+ *
1455
+ * @example
1456
+ * await client.setupSandbox("job_id", {
1457
+ * dataset: "dataset",
1458
+ * plato_dataset_config: {
1459
+ * compute: {
1460
+ * cpus: 1,
1461
+ * memory: 1,
1462
+ * disk: 1,
1463
+ * app_port: 1,
1464
+ * plato_messaging_port: 1
1465
+ * },
1466
+ * metadata: {
1467
+ * name: "name"
1468
+ * }
1469
+ * }
1470
+ * })
1471
+ */
1472
+ public setupSandbox(
1473
+ jobId: string,
1474
+ request: Api.SetupSandboxRequest,
1475
+ requestOptions?: ApiClient.RequestOptions,
1476
+ ): core.HttpResponsePromise<Api.SetupSandboxResponse> {
1477
+ return core.HttpResponsePromise.fromPromise(this.__setupSandbox(jobId, request, requestOptions));
1478
+ }
1479
+
1480
+ private async __setupSandbox(
1481
+ jobId: string,
1482
+ request: Api.SetupSandboxRequest,
1483
+ requestOptions?: ApiClient.RequestOptions,
1484
+ ): Promise<core.WithRawResponse<Api.SetupSandboxResponse>> {
1485
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
1486
+ const _response = await core.fetcher({
1487
+ url: core.url.join(
1488
+ (await core.Supplier.get(this._options.baseUrl)) ??
1489
+ (await core.Supplier.get(this._options.environment)),
1490
+ `public-build/vm/${core.url.encodePathParam(jobId)}/setup-sandbox`,
1491
+ ),
1492
+ method: "POST",
1493
+ headers: _headers,
1494
+ contentType: "application/json",
1495
+ queryParameters: requestOptions?.queryParams,
1496
+ requestType: "json",
1497
+ body: request,
1498
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
1499
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
1500
+ abortSignal: requestOptions?.abortSignal,
1501
+ });
1502
+ if (_response.ok) {
1503
+ return { data: _response.body as Api.SetupSandboxResponse, rawResponse: _response.rawResponse };
1504
+ }
1505
+
1506
+ if (_response.error.reason === "status-code") {
1507
+ switch (_response.error.statusCode) {
1508
+ case 400:
1509
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
1510
+ default:
1511
+ throw new errors.ApiError({
1512
+ statusCode: _response.error.statusCode,
1513
+ body: _response.error.body,
1514
+ rawResponse: _response.rawResponse,
1515
+ });
1516
+ }
1517
+ }
1518
+
1519
+ switch (_response.error.reason) {
1520
+ case "non-json":
1521
+ throw new errors.ApiError({
1522
+ statusCode: _response.error.statusCode,
1523
+ body: _response.error.rawBody,
1524
+ rawResponse: _response.rawResponse,
1525
+ });
1526
+ case "timeout":
1527
+ throw new errors.ApiTimeoutError(
1528
+ "Timeout exceeded when calling POST /public-build/vm/{job_id}/setup-sandbox.",
1529
+ );
1530
+ case "unknown":
1531
+ throw new errors.ApiError({
1532
+ message: _response.error.errorMessage,
1533
+ rawResponse: _response.rawResponse,
1534
+ });
1535
+ }
1536
+ }
1537
+
1538
+ /**
1539
+ * @param {string} publicId
1540
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
1541
+ *
1542
+ * @throws {@link Api.BadRequestError}
1543
+ *
1544
+ * @example
1545
+ * await client.deleteSandbox("public_id")
1546
+ */
1547
+ public deleteSandbox(
1548
+ publicId: string,
1549
+ requestOptions?: ApiClient.RequestOptions,
1550
+ ): core.HttpResponsePromise<Api.DeleteSandboxResponse> {
1551
+ return core.HttpResponsePromise.fromPromise(this.__deleteSandbox(publicId, requestOptions));
1552
+ }
1553
+
1554
+ private async __deleteSandbox(
1555
+ publicId: string,
1556
+ requestOptions?: ApiClient.RequestOptions,
1557
+ ): Promise<core.WithRawResponse<Api.DeleteSandboxResponse>> {
1558
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
1559
+ const _response = await core.fetcher({
1560
+ url: core.url.join(
1561
+ (await core.Supplier.get(this._options.baseUrl)) ??
1562
+ (await core.Supplier.get(this._options.environment)),
1563
+ `public-build/vm/${core.url.encodePathParam(publicId)}`,
1564
+ ),
1565
+ method: "DELETE",
1566
+ headers: _headers,
1567
+ queryParameters: requestOptions?.queryParams,
1568
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
1569
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
1570
+ abortSignal: requestOptions?.abortSignal,
1571
+ });
1572
+ if (_response.ok) {
1573
+ return { data: _response.body as Api.DeleteSandboxResponse, rawResponse: _response.rawResponse };
1574
+ }
1575
+
1576
+ if (_response.error.reason === "status-code") {
1577
+ switch (_response.error.statusCode) {
1578
+ case 400:
1579
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
1580
+ default:
1581
+ throw new errors.ApiError({
1582
+ statusCode: _response.error.statusCode,
1583
+ body: _response.error.body,
1584
+ rawResponse: _response.rawResponse,
1585
+ });
1586
+ }
1587
+ }
1588
+
1589
+ switch (_response.error.reason) {
1590
+ case "non-json":
1591
+ throw new errors.ApiError({
1592
+ statusCode: _response.error.statusCode,
1593
+ body: _response.error.rawBody,
1594
+ rawResponse: _response.rawResponse,
1595
+ });
1596
+ case "timeout":
1597
+ throw new errors.ApiTimeoutError("Timeout exceeded when calling DELETE /public-build/vm/{public_id}.");
1598
+ case "unknown":
1599
+ throw new errors.ApiError({
1600
+ message: _response.error.errorMessage,
1601
+ rawResponse: _response.rawResponse,
1602
+ });
1603
+ }
1604
+ }
1605
+
1606
+ /**
1607
+ * @param {string} publicId
1608
+ * @param {Api.CreateSnapshotRequest} request
1609
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
1610
+ *
1611
+ * @throws {@link Api.BadRequestError}
1612
+ *
1613
+ * @example
1614
+ * await client.createSnapshot("public_id")
1615
+ */
1616
+ public createSnapshot(
1617
+ publicId: string,
1618
+ request: Api.CreateSnapshotRequest = {},
1619
+ requestOptions?: ApiClient.RequestOptions,
1620
+ ): core.HttpResponsePromise<Api.CreateSnapshotResponse> {
1621
+ return core.HttpResponsePromise.fromPromise(this.__createSnapshot(publicId, request, requestOptions));
1622
+ }
1623
+
1624
+ private async __createSnapshot(
1625
+ publicId: string,
1626
+ request: Api.CreateSnapshotRequest = {},
1627
+ requestOptions?: ApiClient.RequestOptions,
1628
+ ): Promise<core.WithRawResponse<Api.CreateSnapshotResponse>> {
1629
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
1630
+ const _response = await core.fetcher({
1631
+ url: core.url.join(
1632
+ (await core.Supplier.get(this._options.baseUrl)) ??
1633
+ (await core.Supplier.get(this._options.environment)),
1634
+ `public-build/vm/${core.url.encodePathParam(publicId)}/snapshot`,
1635
+ ),
1636
+ method: "POST",
1637
+ headers: _headers,
1638
+ contentType: "application/json",
1639
+ queryParameters: requestOptions?.queryParams,
1640
+ requestType: "json",
1641
+ body: request,
1642
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
1643
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
1644
+ abortSignal: requestOptions?.abortSignal,
1645
+ });
1646
+ if (_response.ok) {
1647
+ return { data: _response.body as Api.CreateSnapshotResponse, rawResponse: _response.rawResponse };
1648
+ }
1649
+
1650
+ if (_response.error.reason === "status-code") {
1651
+ switch (_response.error.statusCode) {
1652
+ case 400:
1653
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
1654
+ default:
1655
+ throw new errors.ApiError({
1656
+ statusCode: _response.error.statusCode,
1657
+ body: _response.error.body,
1658
+ rawResponse: _response.rawResponse,
1659
+ });
1660
+ }
1661
+ }
1662
+
1663
+ switch (_response.error.reason) {
1664
+ case "non-json":
1665
+ throw new errors.ApiError({
1666
+ statusCode: _response.error.statusCode,
1667
+ body: _response.error.rawBody,
1668
+ rawResponse: _response.rawResponse,
1669
+ });
1670
+ case "timeout":
1671
+ throw new errors.ApiTimeoutError(
1672
+ "Timeout exceeded when calling POST /public-build/vm/{public_id}/snapshot.",
1673
+ );
1674
+ case "unknown":
1675
+ throw new errors.ApiError({
1676
+ message: _response.error.errorMessage,
1677
+ rawResponse: _response.rawResponse,
1678
+ });
1679
+ }
1680
+ }
1681
+
1682
+ /**
1683
+ * @param {string} publicId
1684
+ * @param {Api.StartWorkerRequest} request
1685
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
1686
+ *
1687
+ * @throws {@link Api.BadRequestError}
1688
+ *
1689
+ * @example
1690
+ * await client.startWorker("public_id", {
1691
+ * dataset: "dataset",
1692
+ * plato_dataset_config: {
1693
+ * compute: {
1694
+ * cpus: 1,
1695
+ * memory: 1,
1696
+ * disk: 1,
1697
+ * app_port: 1,
1698
+ * plato_messaging_port: 1
1699
+ * },
1700
+ * metadata: {
1701
+ * name: "name"
1702
+ * }
1703
+ * }
1704
+ * })
1705
+ */
1706
+ public startWorker(
1707
+ publicId: string,
1708
+ request: Api.StartWorkerRequest,
1709
+ requestOptions?: ApiClient.RequestOptions,
1710
+ ): core.HttpResponsePromise<Api.StartWorkerResponse> {
1711
+ return core.HttpResponsePromise.fromPromise(this.__startWorker(publicId, request, requestOptions));
1712
+ }
1713
+
1714
+ private async __startWorker(
1715
+ publicId: string,
1716
+ request: Api.StartWorkerRequest,
1717
+ requestOptions?: ApiClient.RequestOptions,
1718
+ ): Promise<core.WithRawResponse<Api.StartWorkerResponse>> {
1719
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
1720
+ const _response = await core.fetcher({
1721
+ url: core.url.join(
1722
+ (await core.Supplier.get(this._options.baseUrl)) ??
1723
+ (await core.Supplier.get(this._options.environment)),
1724
+ `public-build/vm/${core.url.encodePathParam(publicId)}/start-worker`,
1725
+ ),
1726
+ method: "POST",
1727
+ headers: _headers,
1728
+ contentType: "application/json",
1729
+ queryParameters: requestOptions?.queryParams,
1730
+ requestType: "json",
1731
+ body: request,
1732
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
1733
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
1734
+ abortSignal: requestOptions?.abortSignal,
1735
+ });
1736
+ if (_response.ok) {
1737
+ return { data: _response.body as Api.StartWorkerResponse, rawResponse: _response.rawResponse };
1738
+ }
1739
+
1740
+ if (_response.error.reason === "status-code") {
1741
+ switch (_response.error.statusCode) {
1742
+ case 400:
1743
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
1744
+ default:
1745
+ throw new errors.ApiError({
1746
+ statusCode: _response.error.statusCode,
1747
+ body: _response.error.body,
1748
+ rawResponse: _response.rawResponse,
1749
+ });
1750
+ }
1751
+ }
1752
+
1753
+ switch (_response.error.reason) {
1754
+ case "non-json":
1755
+ throw new errors.ApiError({
1756
+ statusCode: _response.error.statusCode,
1757
+ body: _response.error.rawBody,
1758
+ rawResponse: _response.rawResponse,
1759
+ });
1760
+ case "timeout":
1761
+ throw new errors.ApiTimeoutError(
1762
+ "Timeout exceeded when calling POST /public-build/vm/{public_id}/start-worker.",
1763
+ );
1764
+ case "unknown":
1765
+ throw new errors.ApiError({
1766
+ message: _response.error.errorMessage,
1767
+ rawResponse: _response.rawResponse,
1768
+ });
1769
+ }
1770
+ }
1771
+
1772
+ /**
1773
+ * @param {string} publicId
1774
+ * @param {Api.SetupRootAccessRequest} request
1775
+ * @param {ApiClient.RequestOptions} requestOptions - Request-specific configuration.
1776
+ *
1777
+ * @throws {@link Api.BadRequestError}
1778
+ *
1779
+ * @example
1780
+ * await client.setupRootAccess("public_id", {
1781
+ * ssh_public_key: "ssh_public_key"
1782
+ * })
1783
+ */
1784
+ public setupRootAccess(
1785
+ publicId: string,
1786
+ request: Api.SetupRootAccessRequest,
1787
+ requestOptions?: ApiClient.RequestOptions,
1788
+ ): core.HttpResponsePromise<Api.SetupRootAccessResponse> {
1789
+ return core.HttpResponsePromise.fromPromise(this.__setupRootAccess(publicId, request, requestOptions));
1790
+ }
1791
+
1792
+ private async __setupRootAccess(
1793
+ publicId: string,
1794
+ request: Api.SetupRootAccessRequest,
1795
+ requestOptions?: ApiClient.RequestOptions,
1796
+ ): Promise<core.WithRawResponse<Api.SetupRootAccessResponse>> {
1797
+ const _headers: core.Fetcher.Args["headers"] = mergeHeaders(this._options?.headers, requestOptions?.headers);
1798
+ const _response = await core.fetcher({
1799
+ url: core.url.join(
1800
+ (await core.Supplier.get(this._options.baseUrl)) ??
1801
+ (await core.Supplier.get(this._options.environment)),
1802
+ `public-build/vm/${core.url.encodePathParam(publicId)}/setup-root-access`,
1803
+ ),
1804
+ method: "POST",
1805
+ headers: _headers,
1806
+ contentType: "application/json",
1807
+ queryParameters: requestOptions?.queryParams,
1808
+ requestType: "json",
1809
+ body: request,
1810
+ timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
1811
+ maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
1812
+ abortSignal: requestOptions?.abortSignal,
1813
+ });
1814
+ if (_response.ok) {
1815
+ return { data: _response.body as Api.SetupRootAccessResponse, rawResponse: _response.rawResponse };
1816
+ }
1817
+
1818
+ if (_response.error.reason === "status-code") {
1819
+ switch (_response.error.statusCode) {
1820
+ case 400:
1821
+ throw new Api.BadRequestError(_response.error.body as Api.ErrorResponse, _response.rawResponse);
1822
+ default:
1823
+ throw new errors.ApiError({
1824
+ statusCode: _response.error.statusCode,
1825
+ body: _response.error.body,
1826
+ rawResponse: _response.rawResponse,
1827
+ });
1828
+ }
1829
+ }
1830
+
1831
+ switch (_response.error.reason) {
1832
+ case "non-json":
1833
+ throw new errors.ApiError({
1834
+ statusCode: _response.error.statusCode,
1835
+ body: _response.error.rawBody,
1836
+ rawResponse: _response.rawResponse,
1837
+ });
1838
+ case "timeout":
1839
+ throw new errors.ApiTimeoutError(
1840
+ "Timeout exceeded when calling POST /public-build/vm/{public_id}/setup-root-access.",
1841
+ );
1842
+ case "unknown":
1843
+ throw new errors.ApiError({
1844
+ message: _response.error.errorMessage,
1845
+ rawResponse: _response.rawResponse,
1846
+ });
1847
+ }
1848
+ }
1849
+ }