tensorlake 0.5.127 → 0.5.128

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.
@@ -399,7 +399,7 @@ var NativeWorkerClient = class {
399
399
  }
400
400
  };
401
401
  var runtimeKey = /* @__PURE__ */ Symbol.for(
402
- `tensorlake.native.worker.${false ? "source" : "0.5.127"}.v1`
402
+ `tensorlake.native.worker.${false ? "source" : "0.5.128"}.v1`
403
403
  );
404
404
  var runtimes = globalThis;
405
405
  function configureNativeWorker(workerPath) {
@@ -387,7 +387,7 @@ var NativeWorkerClient = class {
387
387
  }
388
388
  };
389
389
  var runtimeKey = /* @__PURE__ */ Symbol.for(
390
- `tensorlake.native.worker.${false ? "source" : "0.5.127"}.v1`
390
+ `tensorlake.native.worker.${false ? "source" : "0.5.128"}.v1`
391
391
  );
392
392
  var runtimes = globalThis;
393
393
  function configureNativeWorker(workerPath) {
@@ -51,7 +51,7 @@ var cancelNativeCall = /* @__PURE__ */ Symbol.for("tensorlake.native.cancel.v1")
51
51
  var closeNativeHandle = /* @__PURE__ */ Symbol.for("tensorlake.native.close.v1");
52
52
 
53
53
  // src/defaults.ts
54
- var SDK_VERSION = "0.5.127";
54
+ var SDK_VERSION = "0.5.128";
55
55
  var API_URL = process.env.TENSORLAKE_API_URL ?? "https://api.tensorlake.ai";
56
56
  var API_KEY = process.env.TENSORLAKE_API_KEY ?? void 0;
57
57
  var NAMESPACE = process.env.INDEXIFY_NAMESPACE ?? "default";
@@ -244,7 +244,7 @@ var NativeWorkerClient = class {
244
244
  }
245
245
  };
246
246
  var runtimeKey = /* @__PURE__ */ Symbol.for(
247
- `tensorlake.native.worker.${false ? "source" : "0.5.127"}.v1`
247
+ `tensorlake.native.worker.${false ? "source" : "0.5.128"}.v1`
248
248
  );
249
249
  var runtimes = globalThis;
250
250
  function configureNativeWorker(workerPath) {
@@ -10,7 +10,7 @@ var cancelNativeCall = /* @__PURE__ */ Symbol.for("tensorlake.native.cancel.v1")
10
10
  var closeNativeHandle = /* @__PURE__ */ Symbol.for("tensorlake.native.close.v1");
11
11
 
12
12
  // src/defaults.ts
13
- var SDK_VERSION = "0.5.127";
13
+ var SDK_VERSION = "0.5.128";
14
14
  var API_URL = process.env.TENSORLAKE_API_URL ?? "https://api.tensorlake.ai";
15
15
  var API_KEY = process.env.TENSORLAKE_API_KEY ?? void 0;
16
16
  var NAMESPACE = process.env.INDEXIFY_NAMESPACE ?? "default";
@@ -203,7 +203,7 @@ var NativeWorkerClient = class {
203
203
  }
204
204
  };
205
205
  var runtimeKey = /* @__PURE__ */ Symbol.for(
206
- `tensorlake.native.worker.${false ? "source" : "0.5.127"}.v1`
206
+ `tensorlake.native.worker.${false ? "source" : "0.5.128"}.v1`
207
207
  );
208
208
  var runtimes = globalThis;
209
209
  function configureNativeWorker(workerPath) {
package/dist/index.cjs CHANGED
@@ -49,7 +49,7 @@ var init_defaults = __esm({
49
49
  "src/defaults.ts"() {
50
50
  "use strict";
51
51
  init_cjs_shims();
52
- SDK_VERSION = "0.5.127";
52
+ SDK_VERSION = "0.5.128";
53
53
  API_URL = process.env.TENSORLAKE_API_URL ?? "https://api.tensorlake.ai";
54
54
  API_KEY = process.env.TENSORLAKE_API_KEY ?? void 0;
55
55
  NAMESPACE = process.env.INDEXIFY_NAMESPACE ?? "default";
@@ -84,6 +84,27 @@ function describeError(err) {
84
84
  if (parts.length > 0) return parts.join(": ");
85
85
  return err instanceof Error ? err.message : String(err);
86
86
  }
87
+ function formatErrorDetails(errorDetails) {
88
+ if (errorDetails == null) return void 0;
89
+ if (typeof errorDetails === "string") {
90
+ const detail = errorDetails.trim();
91
+ return detail || void 0;
92
+ }
93
+ if (Array.isArray(errorDetails)) {
94
+ const parts = errorDetails.map((item) => formatErrorDetails(item)).filter((item) => Boolean(item));
95
+ return parts.length > 0 ? parts.join("; ") : JSON.stringify(errorDetails);
96
+ }
97
+ if (typeof errorDetails === "object") {
98
+ for (const key of ["message", "detail", "error", "reason"]) {
99
+ const value = errorDetails[key];
100
+ if (typeof value === "string" && value.trim()) {
101
+ return value.trim();
102
+ }
103
+ }
104
+ return JSON.stringify(errorDetails);
105
+ }
106
+ return String(errorDetails);
107
+ }
87
108
  var SandboxException, SandboxError, SandboxConnectionError, SandboxNotFoundError, PoolNotFoundError, PoolInUseError, RemoteAPIError, RequestNotFinishedError, RequestFailedError, RequestExecutionError;
88
109
  var init_errors = __esm({
89
110
  "src/errors.ts"() {
@@ -135,9 +156,39 @@ var init_errors = __esm({
135
156
  };
136
157
  RemoteAPIError = class extends SandboxError {
137
158
  statusCode;
159
+ /** Original response body, retained for compatibility and diagnostics. */
138
160
  responseMessage;
161
+ sandboxId;
162
+ /** Server reason, including unknown future reasons. */
163
+ reason;
164
+ errorDetails;
139
165
  constructor(statusCode, message) {
140
- super(`API error (status ${statusCode}): ${message}`);
166
+ let failure;
167
+ try {
168
+ const payload = JSON.parse(message);
169
+ if (payload && typeof payload === "object" && !Array.isArray(payload)) {
170
+ const record = payload;
171
+ if (typeof record.sandbox_id === "string" && record.sandbox_id.trim() && (record.status === "failed" || record.status === "terminated"))
172
+ failure = record;
173
+ }
174
+ } catch {
175
+ }
176
+ const sandboxId = failure?.sandbox_id;
177
+ const rawReason = failure?.reason ?? failure?.termination_reason;
178
+ const reason = typeof rawReason === "string" ? rawReason : void 0;
179
+ const errorDetails = failure?.error_details;
180
+ let displayMessage = message;
181
+ if (failure) {
182
+ displayMessage = `Sandbox ${sandboxId} ${failure.status}`;
183
+ if (reason) displayMessage += ` (${reason})`;
184
+ const detail = formatErrorDetails(errorDetails);
185
+ if (detail) displayMessage += `: ${detail}`;
186
+ if (!reason && !detail) displayMessage = message;
187
+ }
188
+ super(`API error (status ${statusCode}): ${displayMessage}`);
189
+ this.sandboxId = sandboxId;
190
+ this.reason = reason;
191
+ this.errorDetails = errorDetails;
141
192
  this.name = "RemoteAPIError";
142
193
  this.statusCode = statusCode;
143
194
  this.responseMessage = message;
@@ -424,7 +475,7 @@ var init_native_worker_client = __esm({
424
475
  }
425
476
  };
426
477
  runtimeKey = /* @__PURE__ */ Symbol.for(
427
- `tensorlake.native.worker.${false ? "source" : "0.5.127"}.v1`
478
+ `tensorlake.native.worker.${false ? "source" : "0.5.128"}.v1`
428
479
  );
429
480
  runtimes = globalThis;
430
481
  }
@@ -645,6 +696,7 @@ var init_models = __esm({
645
696
  SandboxStatus2["SUSPENDED"] = "suspended";
646
697
  SandboxStatus2["TERMINATED"] = "terminated";
647
698
  SandboxStatus2["TIMEOUT"] = "timeout";
699
+ SandboxStatus2["FAILED"] = "failed";
648
700
  return SandboxStatus2;
649
701
  })(SandboxStatus || {});
650
702
  SnapshotStatus = /* @__PURE__ */ ((SnapshotStatus2) => {
@@ -4491,37 +4543,16 @@ function snapshotStatusSatisfiesWaitCondition(status, waitUntil) {
4491
4543
  return status === "completed" /* COMPLETED */;
4492
4544
  }
4493
4545
  function formatStartupFailureMessage(sandboxId, status, options) {
4494
- const prefix = status === "terminated" /* TERMINATED */ ? `Sandbox ${sandboxId} terminated during startup` : `Sandbox ${sandboxId} became ${status} during startup`;
4546
+ let prefix = status === "terminated" /* TERMINATED */ ? `Sandbox ${sandboxId} terminated during startup` : `Sandbox ${sandboxId} became ${status} during startup`;
4547
+ if (options.terminationReason) {
4548
+ prefix += ` (${options.terminationReason})`;
4549
+ }
4495
4550
  const detail = formatErrorDetails(options.errorDetails);
4496
4551
  if (detail) {
4497
4552
  return `${prefix}: ${detail}`;
4498
4553
  }
4499
- if (options.terminationReason) {
4500
- return `${prefix}: termination reason: ${options.terminationReason}`;
4501
- }
4502
4554
  return prefix;
4503
4555
  }
4504
- function formatErrorDetails(errorDetails) {
4505
- if (errorDetails == null) return void 0;
4506
- if (typeof errorDetails === "string") {
4507
- const detail = errorDetails.trim();
4508
- return detail || void 0;
4509
- }
4510
- if (Array.isArray(errorDetails)) {
4511
- const parts = errorDetails.map((item) => formatErrorDetails(item)).filter((item) => Boolean(item));
4512
- return parts.length > 0 ? parts.join("; ") : JSON.stringify(errorDetails);
4513
- }
4514
- if (typeof errorDetails === "object") {
4515
- for (const key of ["message", "detail", "error", "reason"]) {
4516
- const value = errorDetails[key];
4517
- if (typeof value === "string" && value.trim()) {
4518
- return value.trim();
4519
- }
4520
- }
4521
- return JSON.stringify(errorDetails);
4522
- }
4523
- return String(errorDetails);
4524
- }
4525
4556
  function normalizeUserPorts(ports) {
4526
4557
  return dedupeAndSortPorts(ports.map(validateUserPort));
4527
4558
  }
@@ -5203,11 +5234,11 @@ var init_client = __esm({
5203
5234
  result.sandboxUrl
5204
5235
  );
5205
5236
  }
5206
- if (result.status === "suspended" /* SUSPENDED */ || result.status === "terminated" /* TERMINATED */) {
5237
+ if (result.status === "suspended" /* SUSPENDED */ || result.status === "terminated" /* TERMINATED */ || result.status === "failed" /* FAILED */) {
5207
5238
  throw new SandboxError(
5208
5239
  formatStartupFailureMessage(result.sandboxId, result.status, {
5209
5240
  errorDetails: result.errorDetails,
5210
- terminationReason: result.terminationReason
5241
+ terminationReason: result.terminationReason ?? result.reason
5211
5242
  })
5212
5243
  );
5213
5244
  }